tiny-markdown-editor 0.1.17 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/tiny-mde.js +7 -5
- package/dist/tiny-mde.min.js +1 -1
- package/dist/tiny-mde.tiny.js +1 -1
- package/lib/TinyMDE.js +6 -4
- package/package.json +1 -1
package/dist/tiny-mde.js
CHANGED
|
@@ -1564,7 +1564,7 @@
|
|
|
1564
1564
|
codeBlockType = false;
|
|
1565
1565
|
} else {
|
|
1566
1566
|
lineType = "TMFencedCodeBacktick";
|
|
1567
|
-
lineReplacement = "
|
|
1567
|
+
lineReplacement = '<span class="TMFencedCode">$0<br /></span>';
|
|
1568
1568
|
lineCapture = [this.lines[lineNum]];
|
|
1569
1569
|
}
|
|
1570
1570
|
}
|
|
@@ -1579,7 +1579,7 @@
|
|
|
1579
1579
|
codeBlockType = false;
|
|
1580
1580
|
} else {
|
|
1581
1581
|
lineType = "TMFencedCodeTilde";
|
|
1582
|
-
lineReplacement = "
|
|
1582
|
+
lineReplacement = '<span class="TMFencedCode">$0<br /></span>';
|
|
1583
1583
|
lineCapture = [this.lines[lineNum]];
|
|
1584
1584
|
}
|
|
1585
1585
|
}
|
|
@@ -1598,7 +1598,7 @@
|
|
|
1598
1598
|
}
|
|
1599
1599
|
if (htmlBlock !== false) {
|
|
1600
1600
|
lineType = "TMHTMLBlock";
|
|
1601
|
-
lineReplacement = "
|
|
1601
|
+
lineReplacement = '<span class="TMHTMLContent">$0<br /></span>'; // No formatting in TMHTMLBlock
|
|
1602
1602
|
lineCapture = [this.lines[lineNum]]; // This should already be set but better safe than sorry
|
|
1603
1603
|
|
|
1604
1604
|
// Check if HTML block should be closed
|
|
@@ -2635,12 +2635,14 @@
|
|
|
2635
2635
|
newChildren.forEach(newChild => nextSibling ? parent.insertBefore(nextSibling, newChild) : parent.appendChild(newChild));
|
|
2636
2636
|
};
|
|
2637
2637
|
originalChildren.forEach(child => {
|
|
2638
|
-
// child.parentElement.removeChild(child);
|
|
2639
2638
|
if (child.nodeType !== Node.ELEMENT_NODE || child.tagName !== "DIV") {
|
|
2640
2639
|
// Found a child node that's either not an element or not a div. Wrap it in a div.
|
|
2641
2640
|
const divWrapper = document.createElement("div");
|
|
2642
2641
|
replaceChild(child, divWrapper);
|
|
2643
2642
|
divWrapper.appendChild(child);
|
|
2643
|
+
} else if (child.childNodes.length == 0) {
|
|
2644
|
+
// Empty div child node, include at least a <br />
|
|
2645
|
+
child.appendChild(document.createElement("br"));
|
|
2644
2646
|
} else {
|
|
2645
2647
|
const grandChildren = Array.from(child.childNodes);
|
|
2646
2648
|
if (grandChildren.some(grandChild => grandChild.nodeType === Node.ELEMENT_NODE && grandChild.tagName === "DIV")) {
|
|
@@ -3081,4 +3083,4 @@
|
|
|
3081
3083
|
|
|
3082
3084
|
}));
|
|
3083
3085
|
|
|
3084
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbInNyYy9zdmcvc3ZnLmpzIiwic3JjL1RpbnlNREVDb21tYW5kQmFyLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtYWxsLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vYmplY3QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlYWstbWFwLWJhc2ljLWRldGVjdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1zeW1ib2wuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1tZXRob2QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91aWQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1mbGFncy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmZsYWdzLmpzIiwic3JjL2dyYW1tYXIuanMiLCJzcmMvVGlueU1ERS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzdmcgPSB7XG4gIGJsb2NrcXVvdGU6IGA8c3ZnIGhlaWdodD1cIjE4XCIgd2lkdGg9XCIxOFwiPjxyZWN0IHdpZHRoPVwiNVwiIGhlaWdodD1cIjVcIiB4PVwiM1wiIHk9XCI0XCIgcnk9XCIxXCIvPjxyZWN0IHJ5PVwiMVwiIHk9XCI0XCIgeD1cIjEwXCIgaGVpZ2h0PVwiNVwiIHdpZHRoPVwiNVwiLz48cGF0aCBkPVwiTTggNi45OTl2M2MwIDEtMSAzLTEgM3MtLjMzMSAxLTEuMzMxIDFoLTFjLTEgMC0uNjY5LTEtLjY2OS0xczEtMiAxLTN2LTN6bTcgMHYzYzAgMS0xIDMtMSAzcy0uMzMxIDEtMS4zMzEgMWgtMWMtMSAwLS42NjktMS0uNjY5LTFzMS0yIDEtM3YtM3pcIi8+PC9zdmc+YCxcbiAgYm9sZDogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk00IDJhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDZjNCAwIDUtMiA1LTQgMC0xLjMyMi0uNDM0LTIuNjM2LTEuODg1LTMuMzgxQzEzLjc3MiA3Ljg4NSAxNCA2Ljk0NSAxNCA2YzAtMi0xLTQtNS00em0xIDJoNGMxLjY2OCAwIDIuMzIuMzkzIDIuNi42NzIuMjguMjc5LjQuNjYyLjQgMS4zMjhzLS4xMiAxLjA1Ny0uNCAxLjMzOGMtLjI3NS4yNzQtMS4wMTQuNjQ2LTIuNi42NjJINXptNSA2YzEuNjY2LjAwNSAyLjMxOC4zODggMi41OTYuNjY2LjI3Ny4yNzguNDA0LjY2Ny40MDQgMS4zMzRzLS4xMjcgMS4wNi0uNDA0IDEuMzM4Yy0uMjc4LjI3OC0uOTMuNjYtMi41OTYuNjYybC00Ljk5Mi4wMDRMNSAxMHpcIi8+PC9zdmc+YCxcbiAgY2xlYXJfZm9ybWF0dGluZzogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk0xMS4wMyAxYTEgMSAwIDAwLS43NC4zbC05IDlhMSAxIDAgMDAwIDEuNGw0IDRBMSAxIDAgMDA2IDE2aDJhMSAxIDAgMDAuNy0uM2w4LThhMSAxIDAgMDAwLTEuNGwtNS01YTEgMSAwIDAwLS42Ny0uM3pNOC43IDUuN2wzLjU4IDMuNkw3LjYgMTRINi40bC0zLTMgNS4zLTUuM3pcIi8+PHJlY3Qgcnk9XCIuOFwiIHJ4PVwiLjhcIiB5PVwiMTRcIiB4PVwiMTZcIiBoZWlnaHQ9XCIyXCIgd2lkdGg9XCIyXCIvPjxyZWN0IHdpZHRoPVwiMlwiIGhlaWdodD1cIjJcIiB4PVwiMTNcIiB5PVwiMTRcIiByeD1cIi44XCIgcnk9XCIuOFwiLz48cmVjdCByeT1cIi44XCIgcng9XCIuOFwiIHk9XCIxNFwiIHg9XCIxMFwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjJcIi8+PC9zdmc+YCxcbiAgY29kZTogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk0xMy41IDIuOTk0YS41LjUgMCAwMC0uNS41LjUuNSAwIDAwMCAuMDM0VjQuNTNhNS45OTMgNS45OTMgMCAwMC03LjQ1MS0uNDQ1QTYgNiAwIDEwMTIuNDUgMTMuOWE1Ljk5IDUuOTkgMCAwMDEuMzQ2LTEuMzM0LjUuNSAwIDAwLjA5Ni0uMTAxLjUuNSAwIDAwLS4xMi0uNjk4LjUuNSAwIDAwLS42OTcuMTJsLS4wMDQtLjAwNWE1IDUgMCAwMS0xLjE5NyAxLjIgNSA1IDAgMTExLjIxNS02Ljk2NS41LjUgMCAwMC42OTcuMTIuNS41IDAgMDAuMjExLS40NFY0Ljc0NUgxNFYzLjQ5M2EuNS41IDAgMDAtLjUtLjV6XCIvPjwvc3ZnPmAsXG4gIGgxOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48cGF0aCBkPVwiTTMgMnMwLTEgMS0xaDFjMSAwIDEgMSAxIDF2Nmg2VjJzMC0xIDEtMWgxYzEgMCAxIDEgMSAxdjE0czAgMS0xIDFoLTFjLTEgMC0xLTEtMS0xdi02SDZ2NnMwIDEtMSAxSDRjLTEgMC0xLTEtMS0xelwiLz48L3N2Zz5gLFxuICBoMjogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk00IDJzMC0xIDEtMSAxIDEgMSAxdjZjMS0xIDItMSA0LTEgMyAwIDQgMiA0IDR2NXMwIDEtMSAxLTEtMS0xLTF2LTVjMC0xLjA5NC0xLTItMi0yLTIgMC0zIDAtNCAydjVzMCAxLTEgMS0xLTEtMS0xelwiLz48L3N2Zz5gLFxuICBocjogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHJlY3Qgcnk9XCIxXCIgeT1cIjhcIiBoZWlnaHQ9XCIyXCIgd2lkdGg9XCIxOFwiIHN0eWxlPVwiZm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO21hcmtlcjpub25lXCIvPjwvc3ZnPmAsXG4gIGltYWdlOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48cGF0aCBkPVwiTTEgMnYxNGgxNlYySDF6bTIgMmgxMnY3bC0zLTMtNCA0LTItMi0zIDNWNHpcIi8+PGNpcmNsZSByPVwiMS41XCIgY3k9XCI2LjVcIiBjeD1cIjUuNVwiLz48L3N2Zz5gLFxuICBpdGFsaWM6IGA8c3ZnIGhlaWdodD1cIjE4XCIgd2lkdGg9XCIxOFwiPjxwYXRoIGQ9XCJNOSAyYTEgMSAwIDAwMCAyTDcgMTRhMSAxIDAgMTAwIDJoMmExIDEgMCAwMDAtMmwyLTEwYTEgMSAwIDEwMC0yelwiLz48L3N2Zz5gLFxuICBsaW5rOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48cGF0aCBkPVwiTTkuMDcgNS4xOGEzLjkgMy45IDAgMDAtMS41Mi40M0M2LjMxIDYuMjIgNS4zIDcuMjkgNC4zIDguMjljLTEgMS0yLjA3IDIuMDItMi42OCAzLjI2LS4zMS42Mi0uNSAxLjMzLS40MSAyLjA3LjA5Ljc1LjQ4IDEuNDcgMS4xIDIuMDkuNjEuNjEgMS4zMyAxIDIuMDggMS4xLjc0LjA5IDEuNDUtLjEgMi4wNy0uNDIgMS4yNC0uNjEgMi4yNi0xLjY4IDMuMjYtMi42OC40Ni0uNDcuOTQtLjk0IDEuMzktMS40NGwtLjQzLjI2Yy0uNjguMzQtMS40OS41Ni0yLjM2LjQ2LS4yLS4wMy0uNC0uMDgtLjYtLjE0LS43OS43Ni0xLjU1IDEuNDUtMi4xNiAxLjc2LS4zOC4xOS0uNjcuMjQtLjkyLjIxLS4yNi0uMDMtLjU0LS4xNC0uOTItLjUzLS4zOS0uMzgtLjUtLjY2LS41My0uOTEtLjAzLS4yNi4wMi0uNTUuMjEtLjkzLjM5LS43NiAxLjMyLTEuNzQgMi4zMi0yLjc0IDEtMSAxLjk4LTEuOTMgMi43NC0yLjMyLjM4LS4xOS42Ny0uMjQuOTMtLjIxLjI1LjAzLjUzLjE0LjkxLjUzLjM5LjM4LjUuNjYuNTMuOTJ2LjA2bDEuMTItMS4wNi40NC0uNDdjLS4xOC0uMy0uNC0uNi0uNjctLjg3LS42Mi0uNjEtMS4zNC0xLTIuMDktMS4xYTMuMDggMy4wOCAwIDAwLS41NS0uMDF6XCIvPjxwYXRoIGQ9XCJNMTMuMDcuODZhMy45IDMuOSAwIDAwLTEuNTIuNDNjLTEuMjQuNjItMi4yNiAxLjY5LTMuMjYgMi42OS0uNDYuNDctLjk0Ljk0LTEuMzkgMS40My4xNS0uMDguMjgtLjE4LjQzLS4yNWE0LjQgNC40IDAgMDEyLjM2LS40NmMuMi4wMi40LjA3LjYuMTQuNzktLjc3IDEuNTUtMS40NiAyLjE2LTEuNzYuMzgtLjE5LjY3LS4yNS45My0uMjEuMjUuMDMuNTMuMTQuOTEuNTIuMzkuMzguNS42Ni41My45Mi4wMy4yNi0uMDIuNTUtLjIxLjkzLS4zOS43Ni0xLjMyIDEuNzQtMi4zMiAyLjc0LTEgMS0xLjk4IDEuOTMtMi43NCAyLjMxLS4zOC4yLS42Ny4yNS0uOTMuMjItLjI1LS4wNC0uNTMtLjE1LS45MS0uNTMtLjM5LS4zOC0uNS0uNjYtLjUzLS45MlY5Yy0uMzYuMzMtLjczLjY3LTEuMTIgMS4wNmwtLjQzLjQ2Yy4xNy4zLjQuNi42Ni44Ny42Mi42MiAxLjM0IDEgMi4wOCAxLjEuNzUuMSAxLjQ2LS4xIDIuMDgtLjQxIDEuMjQtLjYyIDIuMjYtMS42OSAzLjI2LTIuNjlzMi4wNy0yLjAyIDIuNjgtMy4yNmMuMzEtLjYyLjUtMS4zMi40MS0yLjA3YTMuNjMgMy42MyAwIDAwLTEuMS0yLjA4Yy0uNjEtLjYyLTEuMzMtMS0yLjA3LTEuMWEzLjA4IDMuMDggMCAwMC0uNTYtLjAyelwiLz48L3N2Zz5gLFxuICBvbDogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk0xLjUgN2EuNS41IDAgMTAwIDFoMWEuNS41IDAgMDEuNS41YzAgLjE2NC0uMDguMzEtLjE0LjM1NWwtMS42NTUgMS4yNUEuNDkyLjQ5MiAwIDAwMSAxMC41YS41LjUgMCAwMC41LjVoMmEuNS41IDAgMDAwLTFIM2wuMzk4LS4yOTlBMS41IDEuNSAwIDAwMi41IDd6XCIvPjxwYXRoIGQ9XCJNMS41IDEyYy0uNjY3IDAtLjY2NyAxIDAgMWgxLjI1Yy4zMzMgMCAuMzMzLjUgMCAuNUgyLjVjLS42NjcgMC0uNjY3IDEgMCAxaC4yNWMuMzMzIDAgLjMzMy41IDAgLjVIMS41Yy0uNjY3IDAtLjY2NyAxIDAgMWgxYy4zOTggMCAuNzgtLjEzMSAxLjA2LS4zNjUuMjgyLS4yMzUuNDQtLjU1NC40NC0uODg1YTEuMTIxIDEuMTIxIDAgMDAtLjMwMy0uNzVjLjE5MS0uMjA0LjMtLjQ3LjMwMy0uNzUgMC0uMzMyLS4xNTgtLjY1MS0uNDQtLjg4NS0uMy0uMjQxLS42NzUtLjM3LTEuMDYtLjM2NXpcIi8+PHJlY3QgeT1cIjEzXCIgeD1cIjZcIiBoZWlnaHQ9XCIyXCIgd2lkdGg9XCIxMlwiIHJ5PVwiMVwiLz48cmVjdCByeT1cIjFcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMlwiIHg9XCI2XCIgeT1cIjhcIi8+PHJlY3QgeT1cIjNcIiB4PVwiNlwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjEyXCIgcnk9XCIxXCIvPjxwYXRoIGQ9XCJNMS41IDJhLjUuNSAwIDEwMCAxSDJ2MmgtLjVhLjUuNSAwIDEwMCAxaDJhLjUuNSAwIDEwMC0xSDNWMi41YzAtLjI3Ny0uMjIzLS41LS41LS41elwiLz48L3N2Zz5gLFxuICBzdHJpa2V0aHJvdWdoOiBgPHN2ZyB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIj48cGF0aCBkPVwiTTEwIDJDNiAyIDQgNCA0IDZjMCAuMzM4LjA4LjY3Mi4xOTMgMWgyLjM0QzYuMTEzIDYuNjI5IDYgNi4yOTUgNiA2YzAtLjMzNC4xMTctLjcyNS42OTEtMS4xNTRDNy4yNjUgNC40MTYgOC4zMzEgNCAxMCA0aDNhMSAxIDAgMDAwLTJ6bTEuNDc3IDljLjQxMy4zNjguNTIzLjcwNi41MjMgMSAwIC4zMzQtLjEyNy43MTItLjcwMSAxLjE0My0uNTc1LjQzLTEuNjMyLjg1LTMuMjk5Ljg1N2wtMS4wMDYuMDA3VjE0SDVhMSAxIDAgMDAwIDJoM2M0IDAgNi0yIDYtNCAwLS4zMzgtLjA4MS0uNjcyLS4xOTUtMXpcIi8+PHJlY3Qgcnk9XCIxXCIgeT1cIjhcIiB4PVwiMVwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjE2XCIvPjwvc3ZnPmAsXG4gIHVsOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48Y2lyY2xlIGN4PVwiMlwiIGN5PVwiOVwiIHI9XCIyXCIvPjxjaXJjbGUgY3k9XCI0XCIgY3g9XCIyXCIgcj1cIjJcIi8+PHJlY3QgeT1cIjNcIiB4PVwiNlwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjEyXCIgcnk9XCIxXCIvPjxjaXJjbGUgY3g9XCIyXCIgY3k9XCIxNFwiIHI9XCIyXCIvPjxyZWN0IHJ5PVwiMVwiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIyXCIgeD1cIjZcIiB5PVwiOFwiLz48cmVjdCB5PVwiMTNcIiB4PVwiNlwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjEyXCIgcnk9XCIxXCIvPjwvc3ZnPmBcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHN2ZzsiLCJpbXBvcnQgc3ZnIGZyb20gJy4vc3ZnL3N2Zyc7XG5cbmNvbnN0IGlzTWFjTGlrZSA9IC8oTWFjfGlQaG9uZXxpUG9kfGlQYWQpL2kudGVzdCh0eXBlb2YgbmF2aWdhdG9yICE9PSBcInVuZGVmaW5lZFwiID8gbmF2aWdhdG9yLnBsYXRmb3JtIDogXCJcIik7XG5cbmNvbnN0IERlZmF1bHRDb21tYW5kcyA9IHtcbiAgJ2JvbGQnOiB7XG4gICAgbmFtZTogJ2JvbGQnLFxuICAgIGFjdGlvbjogJ2JvbGQnLFxuICAgIGlubmVySFRNTDogc3ZnLmJvbGQsXG4gICAgdGl0bGU6ICdCb2xkJyxcbiAgICBob3RrZXk6ICdNb2QtQicsXG4gIH0sXG4gICdpdGFsaWMnOiB7XG4gICAgbmFtZTogJ2l0YWxpYycsXG4gICAgYWN0aW9uOiAnaXRhbGljJyxcbiAgICBpbm5lckhUTUw6IHN2Zy5pdGFsaWMsXG4gICAgdGl0bGU6ICdJdGFsaWMnLFxuICAgIGhvdGtleTogJ01vZC1JJyxcbiAgfSxcbiAgJ3N0cmlrZXRocm91Z2gnOiB7XG4gICAgbmFtZTogJ3N0cmlrZXRocm91Z2gnLFxuICAgIGFjdGlvbjogJ3N0cmlrZXRocm91Z2gnLFxuICAgIGlubmVySFRNTDogc3ZnLnN0cmlrZXRocm91Z2gsXG4gICAgdGl0bGU6ICdTdHJpa2V0aHJvdWdoJyxcbiAgICBob3RrZXk6ICdNb2QyLVNoaWZ0LTUnLFxuICB9LFxuICAnY29kZSc6IHtcbiAgICBuYW1lOiAnY29kZScsXG4gICAgYWN0aW9uOiAnY29kZScsXG4gICAgaW5uZXJIVE1MOiBzdmcuY29kZSxcbiAgICB0aXRsZTogJ0Zvcm1hdCBhcyBjb2RlJyxcbiAgfSxcbiAgJ2gxJzoge1xuICAgIG5hbWU6ICdoMScsXG4gICAgYWN0aW9uOiAnaDEnLFxuICAgIGlubmVySFRNTDogc3ZnLmgxLFxuICAgIHRpdGxlOiAnTGV2ZWwgMSBoZWFkaW5nJyxcbiAgICBob3RrZXk6ICdNb2QtU2hpZnQtMScsXG4gIH0sXG4gICdoMic6IHtcbiAgICBuYW1lOiAnaDInLFxuICAgIGFjdGlvbjogJ2gyJyxcbiAgICBpbm5lckhUTUw6IHN2Zy5oMixcbiAgICB0aXRsZTogJ0xldmVsIDIgaGVhZGluZycsXG4gICAgaG90a2V5OiAnTW9kLVNoaWZ0LTInLFxuICB9LFxuICAndWwnOiB7XG4gICAgbmFtZTogJ3VsJyxcbiAgICBhY3Rpb246ICd1bCcsXG4gICAgaW5uZXJIVE1MOiBzdmcudWwsXG4gICAgdGl0bGU6ICdCdWxsZXRlZCBsaXN0JyxcbiAgfSxcbiAgJ29sJzoge1xuICAgIG5hbWU6ICdvbCcsXG4gICAgYWN0aW9uOiAnb2wnLFxuICAgIGlubmVySFRNTDogc3ZnLm9sLFxuICAgIHRpdGxlOiAnTnVtYmVyZWQgbGlzdCcsXG4gIH0sXG4gICdibG9ja3F1b3RlJzoge1xuICAgIG5hbWU6ICdibG9ja3F1b3RlJyxcbiAgICBhY3Rpb246ICdibG9ja3F1b3RlJyxcbiAgICBpbm5lckhUTUw6IHN2Zy5ibG9ja3F1b3RlLFxuICAgIHRpdGxlOiAnUXVvdGUnLFxuICAgIGhvdGtleTogJ01vZDItU2hpZnQtUScsXG4gIH0sXG4gICdpbnNlcnRMaW5rJzoge1xuICAgIG5hbWU6ICdpbnNlcnRMaW5rJyxcbiAgICBhY3Rpb246IChlZGl0b3IpID0+IHtpZiAoZWRpdG9yLmlzSW5saW5lRm9ybWF0dGluZ0FsbG93ZWQoKSkgZWRpdG9yLndyYXBTZWxlY3Rpb24oJ1snLCAnXSgpJyl9LFxuICAgIGVuYWJsZWQ6IChlZGl0b3IsIGZvY3VzLCBhbmNob3IpID0+IGVkaXRvci5pc0lubGluZUZvcm1hdHRpbmdBbGxvd2VkKGZvY3VzLCBhbmNob3IpID8gZmFsc2UgOiBudWxsLFxuICAgIGlubmVySFRNTDogc3ZnLmxpbmssXG4gICAgdGl0bGU6ICdJbnNlcnQgbGluaycsXG4gICAgaG90a2V5OiAnTW9kLUsnLFxuICB9LFxuICAnaW5zZXJ0SW1hZ2UnOiB7XG4gICAgbmFtZTogJ2luc2VydEltYWdlJyxcbiAgICBhY3Rpb246IChlZGl0b3IpID0+IHtpZiAoZWRpdG9yLmlzSW5saW5lRm9ybWF0dGluZ0FsbG93ZWQoKSkgZWRpdG9yLndyYXBTZWxlY3Rpb24oJyFbJywgJ10oKScpfSxcbiAgICBlbmFibGVkOiAoZWRpdG9yLCBmb2N1cywgYW5jaG9yKSA9PiBlZGl0b3IuaXNJbmxpbmVGb3JtYXR0aW5nQWxsb3dlZChmb2N1cywgYW5jaG9yKSA/IGZhbHNlIDogbnVsbCxcbiAgICBpbm5lckhUTUw6IHN2Zy5pbWFnZSxcbiAgICB0aXRsZTogJ0luc2VydCBpbWFnZScsXG4gICAgaG90a2V5OiAnTW9kMi1TaGlmdC1JJyxcbiAgfSxcbiAgJ2hyJzoge1xuICAgIG5hbWU6ICdocicsXG4gICAgYWN0aW9uOiAoZWRpdG9yKSA9PiBlZGl0b3IucGFzdGUoJ1xcbioqKlxcbicpLFxuICAgIGVuYWJsZWQ6ICgpID0+IGZhbHNlLFxuICAgIGlubmVySFRNTDogc3ZnLmhyLFxuICAgIHRpdGxlOiAnSW5zZXJ0IGhvcml6b250YWwgbGluZScsXG4gICAgaG90a2V5OiAnTW9kMi1TaGlmdC1MJ1xuICB9XG59XG5cblxuY2xhc3MgQ29tbWFuZEJhciB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgdGhpcy5lID0gbnVsbDtcbiAgICB0aGlzLmVkaXRvciA9IG51bGw7XG4gICAgdGhpcy5jb21tYW5kcyA9IFtdO1xuICAgIHRoaXMuYnV0dG9ucyA9IHt9O1xuICAgIHRoaXMuc3RhdGUgPSB7fTtcbiAgICB0aGlzLmhvdGtleXMgPSBbXTtcblxuICAgIGxldCBlbGVtZW50ID0gcHJvcHMuZWxlbWVudDtcbiAgICBpZiAoZWxlbWVudCAmJiAhZWxlbWVudC50YWdOYW1lKSB7XG4gICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJvcHMuZWxlbWVudCk7XG4gICAgfVxuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmJvZHk7IFxuICAgIH1cbiAgICB0aGlzLmNyZWF0ZUNvbW1hbmRCYXJFbGVtZW50KGVsZW1lbnQsIHByb3BzLmNvbW1hbmRzIHx8IFsnYm9sZCcsICdpdGFsaWMnLCAnc3RyaWtldGhyb3VnaCcsICd8JywgJ2NvZGUnLCAnfCcsICdoMScsICdoMicsICd8JywgJ3VsJywgJ29sJywgJ3wnLCAnYmxvY2txdW90ZScsICdocicsICd8JywgJ2luc2VydExpbmsnLCAnaW5zZXJ0SW1hZ2UnXSk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChlKSA9PiB0aGlzLmhhbmRsZUtleWRvd24oZSkpO1xuICAgIGlmIChwcm9wcy5lZGl0b3IpIHRoaXMuc2V0RWRpdG9yKHByb3BzLmVkaXRvcik7XG4gIH1cblxuICBjcmVhdGVDb21tYW5kQmFyRWxlbWVudChwYXJlbnRFbGVtZW50LCBjb21tYW5kcykge1xuICAgIHRoaXMuZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMuZS5jbGFzc05hbWUgPSAnVE1Db21tYW5kQmFyJztcblxuICAgIGZvciAobGV0IGNvbW1hbmQgb2YgY29tbWFuZHMpIHtcbiAgICAgIGlmIChjb21tYW5kID09ICd8Jykge1xuICAgICAgICBsZXQgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgZWwuY2xhc3NOYW1lID0gJ1RNQ29tbWFuZERpdmlkZXInO1xuICAgICAgICB0aGlzLmUuYXBwZW5kQ2hpbGQoZWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGNvbW1hbmROYW1lO1xuICAgICAgICBpZiAodHlwZW9mIGNvbW1hbmQgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIC8vIFJlZmVyZW5jZSB0byBkZWZhdWx0IGNvbW1hbmRcblxuICAgICAgICAgIGlmIChEZWZhdWx0Q29tbWFuZHNbY29tbWFuZF0pIHtcbiAgICAgICAgICAgIGNvbW1hbmROYW1lID0gY29tbWFuZDtcbiAgICAgICAgICAgIHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdID0gRGVmYXVsdENvbW1hbmRzW2NvbW1hbmROYW1lXTtcblxuICAgICAgICAgICAgXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgY29tbWFuZCA9PSBcIm9iamVjdFwiICYmIGNvbW1hbmQubmFtZSkge1xuICAgICAgICAgIGNvbW1hbmROYW1lID0gY29tbWFuZC5uYW1lO1xuICAgICAgICAgIHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdID0ge307IFxuICAgICAgICAgIGlmIChEZWZhdWx0Q29tbWFuZHNbY29tbWFuZE5hbWVdKSBPYmplY3QuYXNzaWduKHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdLCBEZWZhdWx0Q29tbWFuZHNbY29tbWFuZE5hbWVdKTtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdLCBjb21tYW5kKTtcbiAgICAgICAgXG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0aXRsZSA9IHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdLnRpdGxlIHx8IGNvbW1hbmROYW1lO1xuXG4gICAgICAgIGlmICh0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXS5ob3RrZXkpIHtcbiAgICAgICAgICBjb25zdCBrZXlzID0gdGhpcy5jb21tYW5kc1tjb21tYW5kTmFtZV0uaG90a2V5LnNwbGl0KCctJyk7XG4gICAgICAgICAgLy8gY29uc3RydWN0IG1vZGlmaWVyc1xuICAgICAgICAgIGxldCBtb2RpZmllcnMgPSBbXTtcbiAgICAgICAgICBsZXQgbW9kaWZpZXJleHBsYW5hdGlvbiA9IFtdO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgIHN3aXRjaCAoa2V5c1tpXSkge1xuICAgICAgICAgICAgICBjYXNlICdDdHJsJzogbW9kaWZpZXJzLnB1c2goJ2N0cmxLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCdDdHJsJyk7IGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlICdDbWQnOiBtb2RpZmllcnMucHVzaCgnbWV0YUtleScpOyBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ+KMmCcpOyBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnQWx0JzogbW9kaWZpZXJzLnB1c2goJ2FsdEtleScpOyBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ0FsdCcpOyBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnT3B0aW9uJzogbW9kaWZpZXJzLnB1c2goJ2FsdEtleScpOyBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ+KMpScpOyBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnV2luJzogbW9kaWZpZXJzLnB1c2goJ21ldGFLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCfiip4gV2luJyk7IGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgJ1NoaWZ0JzogIG1vZGlmaWVycy5wdXNoKCdzaGlmdEtleScpOyBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ+KHpycpOyBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlICdNb2QnOiAvLyBNb2QgaXMgYSBjb252ZW5pZW5jZSBtZWNoYW5pc206IEN0cmwgb24gV2luZG93cywgQ21kIG9uIE1hY1xuICAgICAgICAgICAgICAgIGlmIChpc01hY0xpa2UpIHttb2RpZmllcnMucHVzaCgnbWV0YUtleScpOyBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ+KMmCcpO30gXG4gICAgICAgICAgICAgICAgZWxzZSB7bW9kaWZpZXJzLnB1c2goJ2N0cmxLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCdDdHJsJyk7fSBcbiAgICAgICAgICAgICAgICBicmVhazsgXG4gICAgICAgICAgICAgIGNhc2UgJ01vZDInOiBcbiAgICAgICAgICAgICAgICBtb2RpZmllcnMucHVzaCgnYWx0S2V5Jyk7IFxuICAgICAgICAgICAgICAgIGlmIChpc01hY0xpa2UpIG1vZGlmaWVyZXhwbGFuYXRpb24ucHVzaCgn4oylJyk7XG4gICAgICAgICAgICAgICAgZWxzZSBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ0FsdCcpO1xuICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBNb2QyIGlzIGEgY29udmVuaWVuY2UgbWVjaGFuaXNtOiBBbHQgb24gV2luZG93cywgT3B0aW9uIG9uIE1hY1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goa2V5c1trZXlzLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgICBsZXQgaG90a2V5ID0ge1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBtb2RpZmllcnM6IG1vZGlmaWVycyxcbiAgICAgICAgICAgIGNvbW1hbmQ6IGNvbW1hbmROYW1lLFxuICAgICAgICAgIH07XG4gICAgICAgICAgLy8gVE9ETyBSaWdodCBub3cgdGhpcyBpcyB3b3JraW5nIG9ubHkgZm9yIGxldHRlcnMgYW5kIG51bWJlcnNcbiAgICAgICAgICBpZiAoa2V5c1trZXlzLmxlbmd0aCAtIDFdLm1hdGNoKC9eWzAtOV0kLykpIHtcbiAgICAgICAgICAgIGhvdGtleS5jb2RlID0gYERpZ2l0JHtrZXlzW2tleXMubGVuZ3RoIC0gMV19YDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaG90a2V5LmtleSA9IGtleXNba2V5cy5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmhvdGtleXMucHVzaChob3RrZXkpO1xuICAgICAgICAgIHRpdGxlID0gdGl0bGUuY29uY2F0KGAgKCR7bW9kaWZpZXJleHBsYW5hdGlvbi5qb2luKCcrJyl9KWApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5idXR0b25zW2NvbW1hbmROYW1lXSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLmJ1dHRvbnNbY29tbWFuZE5hbWVdLmNsYXNzTmFtZSA9ICdUTUNvbW1hbmRCdXR0b24gVE1Db21tYW5kQnV0dG9uX0Rpc2FibGVkJztcbiAgICAgICAgdGhpcy5idXR0b25zW2NvbW1hbmROYW1lXS50aXRsZSA9IHRpdGxlO1xuICAgICAgICB0aGlzLmJ1dHRvbnNbY29tbWFuZE5hbWVdLmlubmVySFRNTCA9IHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdLmlubmVySFRNTDtcblxuICAgICAgICB0aGlzLmJ1dHRvbnNbY29tbWFuZE5hbWVdLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIChlKSA9PiB0aGlzLmhhbmRsZUNsaWNrKGNvbW1hbmROYW1lLCBlKSk7XG4gICAgICAgIHRoaXMuZS5hcHBlbmRDaGlsZCh0aGlzLmJ1dHRvbnNbY29tbWFuZE5hbWVdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmUpO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soY29tbWFuZE5hbWUsIGV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmVkaXRvcikgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXS5hY3Rpb24gPT0gXCJzdHJpbmdcIikge1xuICAgICAgaWYgKHRoaXMuc3RhdGVbY29tbWFuZE5hbWVdID09PSBmYWxzZSkgdGhpcy5lZGl0b3Iuc2V0Q29tbWFuZFN0YXRlKGNvbW1hbmROYW1lLCB0cnVlKTtcbiAgICAgIGVsc2UgdGhpcy5lZGl0b3Iuc2V0Q29tbWFuZFN0YXRlKGNvbW1hbmROYW1lLCBmYWxzZSk7ICBcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXS5hY3Rpb24gPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXS5hY3Rpb24odGhpcy5lZGl0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHNldEVkaXRvcihlZGl0b3IpIHtcbiAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICBlZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2VsZWN0aW9uJywgKGUpID0+IHRoaXMuaGFuZGxlU2VsZWN0aW9uKGUpKTtcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdGlvbihldmVudCkge1xuICAgIGlmIChldmVudC5jb21tYW5kU3RhdGUpIHtcbiAgICAgIGZvciAobGV0IGNvbW1hbmQgaW4gdGhpcy5jb21tYW5kcykge1xuICAgICAgICBpZiAoZXZlbnQuY29tbWFuZFN0YXRlW2NvbW1hbmRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAodGhpcy5jb21tYW5kc1tjb21tYW5kXS5lbmFibGVkKSB0aGlzLnN0YXRlW2NvbW1hbmRdID0gdGhpcy5jb21tYW5kc1tjb21tYW5kXS5lbmFibGVkKHRoaXMuZWRpdG9yLCBldmVudC5mb2N1cywgZXZlbnQuYW5jaG9yKTtcbiAgICAgICAgICBlbHNlIHRoaXMuc3RhdGVbY29tbWFuZF0gPSBldmVudC5mb2N1cyA/IGZhbHNlIDogbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnN0YXRlW2NvbW1hbmRdID0gZXZlbnQuY29tbWFuZFN0YXRlW2NvbW1hbmRdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbY29tbWFuZF0gPT09IHRydWUpIHtcbiAgICAgICAgICB0aGlzLmJ1dHRvbnNbY29tbWFuZF0uY2xhc3NOYW1lID0gJ1RNQ29tbWFuZEJ1dHRvbiBUTUNvbW1hbmRCdXR0b25fQWN0aXZlJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlW2NvbW1hbmRdID09PSBmYWxzZSkge1xuICAgICAgICAgIHRoaXMuYnV0dG9uc1tjb21tYW5kXS5jbGFzc05hbWUgPSAnVE1Db21tYW5kQnV0dG9uIFRNQ29tbWFuZEJ1dHRvbl9JbmFjdGl2ZSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5idXR0b25zW2NvbW1hbmRdLmNsYXNzTmFtZSA9ICAnVE1Db21tYW5kQnV0dG9uIFRNQ29tbWFuZEJ1dHRvbl9EaXNhYmxlZCc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVLZXlkb3duKGV2ZW50KSB7XG4gICAgb3V0ZXI6IGZvciAobGV0IGhvdGtleSBvZiB0aGlzLmhvdGtleXMpIHtcbiAgICAgIGlmICgoaG90a2V5LmtleSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PSBob3RrZXkua2V5KSB8fCAoaG90a2V5LmNvZGUgJiYgZXZlbnQuY29kZSA9PSBob3RrZXkuY29kZSkpIHtcbiAgICAgICAgLy8gS2V5IG1hdGNoZXMgaG90a2V5LiBMb29rIGZvciBhbnkgcmVxdWlyZWQgbW9kaWZpZXIgdGhhdCB3YXNuJ3QgcHJlc3NlZFxuICAgICAgICBmb3IgKGxldCBtb2RpZmllciBvZiBob3RrZXkubW9kaWZpZXJzKSB7XG4gICAgICAgICAgaWYgKCFldmVudFttb2RpZmllcl0pIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5dGhpbmcgbWF0Y2hlcy5cbiAgICAgICAgdGhpcy5oYW5kbGVDbGljayhob3RrZXkuY29tbWFuZCwgZXZlbnQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbW1hbmRCYXI7IiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAmJiBpdC5NYXRoID09PSBNYXRoICYmIGl0O1xufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbm1vZHVsZS5leHBvcnRzID1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWdsb2JhbC10aGlzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIGdsb2JhbFRoaXMgPT0gJ29iamVjdCcgJiYgZ2xvYmFsVGhpcykgfHxcbiAgY2hlY2sodHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgLS0gc2FmZVxuICBjaGVjayh0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmKSB8fFxuICBjaGVjayh0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCkgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jIC0tIGZhbGxiYWNrXG4gIChmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KSgpIHx8IHRoaXMgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gRGV0ZWN0IElFOCdzIGluY29tcGxldGUgZGVmaW5lUHJvcGVydHkgaW1wbGVtZW50YXRpb25cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAxLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KVsxXSAhPT0gNztcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWZ1bmN0aW9uLXByb3RvdHlwZS1iaW5kIC0tIHNhZmVcbiAgdmFyIHRlc3QgPSAoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KS5iaW5kKCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgLS0gc2FmZVxuICByZXR1cm4gdHlwZW9mIHRlc3QgIT0gJ2Z1bmN0aW9uJyB8fCB0ZXN0Lmhhc093blByb3BlcnR5KCdwcm90b3R5cGUnKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBGdW5jdGlvblByb3RvdHlwZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbnZhciBjYWxsID0gRnVuY3Rpb25Qcm90b3R5cGUuY2FsbDtcbnZhciB1bmN1cnJ5VGhpc1dpdGhCaW5kID0gTkFUSVZFX0JJTkQgJiYgRnVuY3Rpb25Qcm90b3R5cGUuYmluZC5iaW5kKGNhbGwsIGNhbGwpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9CSU5EID8gdW5jdXJyeVRoaXNXaXRoQmluZCA6IGZ1bmN0aW9uIChmbikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBjYWxsLmFwcGx5KGZuLCBhcmd1bWVudHMpO1xuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBkb2N1bWVudEFsbCA9IHR5cGVvZiBkb2N1bWVudCA9PSAnb2JqZWN0JyAmJiBkb2N1bWVudC5hbGw7XG5cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtSXNIVE1MRERBLWludGVybmFsLXNsb3Rcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLXR5cGVvZi11bmRlZmluZWQgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbnZhciBJU19IVE1MRERBID0gdHlwZW9mIGRvY3VtZW50QWxsID09ICd1bmRlZmluZWQnICYmIGRvY3VtZW50QWxsICE9PSB1bmRlZmluZWQ7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBhbGw6IGRvY3VtZW50QWxsLFxuICBJU19IVE1MRERBOiBJU19IVE1MRERBXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRkb2N1bWVudEFsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1hbGwnKTtcblxudmFyIGRvY3VtZW50QWxsID0gJGRvY3VtZW50QWxsLmFsbDtcblxuLy8gYElzQ2FsbGFibGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pc2NhbGxhYmxlXG5tb2R1bGUuZXhwb3J0cyA9ICRkb2N1bWVudEFsbC5JU19IVE1MRERBID8gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJyB8fCBhcmd1bWVudCA9PT0gZG9jdW1lbnRBbGw7XG59IDogZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJztcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyB3ZSBjYW4ndCB1c2UganVzdCBgaXQgPT0gbnVsbGAgc2luY2Ugb2YgYGRvY3VtZW50LmFsbGAgc3BlY2lhbCBjYXNlXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLUlzSFRNTEREQS1pbnRlcm5hbC1zbG90LWFlY1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID09PSBudWxsIHx8IGl0ID09PSB1bmRlZmluZWQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlcXVpcmVvYmplY3Rjb2VyY2libGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpc051bGxPclVuZGVmaW5lZChpdCkpIHRocm93IG5ldyAkVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbi8vIGBUb09iamVjdGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gJE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSB1bmN1cnJ5VGhpcyh7fS5oYXNPd25Qcm9wZXJ0eSk7XG5cbi8vIGBIYXNPd25Qcm9wZXJ0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWhhc293bnByb3BlcnR5XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWhhc293biAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5oYXNPd24gfHwgZnVuY3Rpb24gaGFzT3duKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5KHRvT2JqZWN0KGl0KSwga2V5KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgZ2V0RGVzY3JpcHRvciA9IERFU0NSSVBUT1JTICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbnZhciBFWElTVFMgPSBoYXNPd24oRnVuY3Rpb25Qcm90b3R5cGUsICduYW1lJyk7XG4vLyBhZGRpdGlvbmFsIHByb3RlY3Rpb24gZnJvbSBtaW5pZmllZCAvIG1hbmdsZWQgLyBkcm9wcGVkIGZ1bmN0aW9uIG5hbWVzXG52YXIgUFJPUEVSID0gRVhJU1RTICYmIChmdW5jdGlvbiBzb21ldGhpbmcoKSB7IC8qIGVtcHR5ICovIH0pLm5hbWUgPT09ICdzb21ldGhpbmcnO1xudmFyIENPTkZJR1VSQUJMRSA9IEVYSVNUUyAmJiAoIURFU0NSSVBUT1JTIHx8IChERVNDUklQVE9SUyAmJiBnZXREZXNjcmlwdG9yKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpLmNvbmZpZ3VyYWJsZSkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgRVhJU1RTOiBFWElTVFMsXG4gIFBST1BFUjogUFJPUEVSLFxuICBDT05GSUdVUkFCTEU6IENPTkZJR1VSQUJMRVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgZGVmaW5lUHJvcGVydHkoZ2xvYmFsLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGdsb2JhbFtrZXldID0gdmFsdWU7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZGVmaW5lR2xvYmFsUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eScpO1xuXG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCBkZWZpbmVHbG9iYWxQcm9wZXJ0eShTSEFSRUQsIHt9KTtcblxubW9kdWxlLmV4cG9ydHMgPSBzdG9yZTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbnZhciBmdW5jdGlvblRvU3RyaW5nID0gdW5jdXJyeVRoaXMoRnVuY3Rpb24udG9TdHJpbmcpO1xuXG4vLyB0aGlzIGhlbHBlciBicm9rZW4gaW4gYGNvcmUtanNAMy40LjEtMy40LjRgLCBzbyB3ZSBjYW4ndCB1c2UgYHNoYXJlZGAgaGVscGVyXG5pZiAoIWlzQ2FsbGFibGUoc3RvcmUuaW5zcGVjdFNvdXJjZSkpIHtcbiAgc3RvcmUuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBmdW5jdGlvblRvU3RyaW5nKGl0KTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdG9yZS5pbnNwZWN0U291cmNlO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNDYWxsYWJsZShXZWFrTWFwKSAmJiAvbmF0aXZlIGNvZGUvLnRlc3QoU3RyaW5nKFdlYWtNYXApKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgJGRvY3VtZW50QWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWFsbCcpO1xuXG52YXIgZG9jdW1lbnRBbGwgPSAkZG9jdW1lbnRBbGwuYWxsO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICRkb2N1bWVudEFsbC5JU19IVE1MRERBID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IGlzQ2FsbGFibGUoaXQpIHx8IGl0ID09PSBkb2N1bWVudEFsbDtcbn0gOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogaXNDYWxsYWJsZShpdCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyIGRvY3VtZW50ID0gZ2xvYmFsLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgRVhJU1RTID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gRVhJU1RTID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcblxuLy8gVGhhbmtzIHRvIElFOCBmb3IgaXRzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRlRWxlbWVudCgnZGl2JyksICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfVxuICB9KS5hICE9PSA3O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBWOCB+IENocm9tZSAzNi1cbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMzMzRcbm1vZHVsZS5leHBvcnRzID0gREVTQ1JJUFRPUlMgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCAncHJvdG90eXBlJywge1xuICAgIHZhbHVlOiA0MixcbiAgICB3cml0YWJsZTogZmFsc2VcbiAgfSkucHJvdG90eXBlICE9PSA0Mjtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgJFN0cmluZyA9IFN0cmluZztcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBUeXBlKGFyZ3VtZW50KSBpcyBPYmplY3RgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNPYmplY3QoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKCRTdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYW4gb2JqZWN0Jyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBjYWxsID0gRnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX0JJTkQgPyBjYWxsLmJpbmQoY2FsbCkgOiBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYWxsLmFwcGx5KGNhbGwsIGFyZ3VtZW50cyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciBhRnVuY3Rpb24gPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUoYXJndW1lbnQpID8gYXJndW1lbnQgOiB1bmRlZmluZWQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lc3BhY2UsIG1ldGhvZCkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBhRnVuY3Rpb24oZ2xvYmFsW25hbWVzcGFjZV0pIDogZ2xvYmFsW25hbWVzcGFjZV0gJiYgZ2xvYmFsW25hbWVzcGFjZV1bbWV0aG9kXTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gdW5jdXJyeVRoaXMoe30uaXNQcm90b3R5cGVPZik7XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBuYXZpZ2F0b3IgIT0gJ3VuZGVmaW5lZCcgJiYgU3RyaW5nKG5hdmlnYXRvci51c2VyQWdlbnQpIHx8ICcnO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcblxudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBEZW5vID0gZ2xvYmFsLkRlbm87XG52YXIgdmVyc2lvbnMgPSBwcm9jZXNzICYmIHByb2Nlc3MudmVyc2lvbnMgfHwgRGVubyAmJiBEZW5vLnZlcnNpb247XG52YXIgdjggPSB2ZXJzaW9ucyAmJiB2ZXJzaW9ucy52ODtcbnZhciBtYXRjaCwgdmVyc2lvbjtcblxuaWYgKHY4KSB7XG4gIG1hdGNoID0gdjguc3BsaXQoJy4nKTtcbiAgLy8gaW4gb2xkIENocm9tZSwgdmVyc2lvbnMgb2YgVjggaXNuJ3QgVjggPSBDaHJvbWUgLyAxMFxuICAvLyBidXQgdGhlaXIgY29ycmVjdCB2ZXJzaW9ucyBhcmUgbm90IGludGVyZXN0aW5nIGZvciB1c1xuICB2ZXJzaW9uID0gbWF0Y2hbMF0gPiAwICYmIG1hdGNoWzBdIDwgNCA/IDEgOiArKG1hdGNoWzBdICsgbWF0Y2hbMV0pO1xufVxuXG4vLyBCcm93c2VyRlMgTm9kZUpTIGBwcm9jZXNzYCBwb2x5ZmlsbCBpbmNvcnJlY3RseSBzZXQgYC52OGAgdG8gYDAuMGBcbi8vIHNvIGNoZWNrIGB1c2VyQWdlbnRgIGV2ZW4gaWYgYC52OGAgZXhpc3RzLCBidXQgMFxuaWYgKCF2ZXJzaW9uICYmIHVzZXJBZ2VudCkge1xuICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvRWRnZVxcLyhcXGQrKS8pO1xuICBpZiAoIW1hdGNoIHx8IG1hdGNoWzFdID49IDc0KSB7XG4gICAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0Nocm9tZVxcLyhcXGQrKS8pO1xuICAgIGlmIChtYXRjaCkgdmVyc2lvbiA9ICttYXRjaFsxXTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZlcnNpb247XG4iLCIndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1zeW1ib2wgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbnZhciAkU3RyaW5nID0gZ2xvYmFsLlN0cmluZztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gcmVxdWlyZWQgZm9yIHRlc3Rpbmdcbm1vZHVsZS5leHBvcnRzID0gISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBzeW1ib2wgPSBTeW1ib2woJ3N5bWJvbCBkZXRlY3Rpb24nKTtcbiAgLy8gQ2hyb21lIDM4IFN5bWJvbCBoYXMgaW5jb3JyZWN0IHRvU3RyaW5nIGNvbnZlcnNpb25cbiAgLy8gYGdldC1vd24tcHJvcGVydHktc3ltYm9sc2AgcG9seWZpbGwgc3ltYm9scyBjb252ZXJ0ZWQgdG8gb2JqZWN0IGFyZSBub3QgU3ltYm9sIGluc3RhbmNlc1xuICAvLyBuYjogRG8gbm90IGNhbGwgYFN0cmluZ2AgZGlyZWN0bHkgdG8gYXZvaWQgdGhpcyBiZWluZyBvcHRpbWl6ZWQgb3V0IHRvIGBzeW1ib2wrJydgIHdoaWNoIHdpbGwsXG4gIC8vIG9mIGNvdXJzZSwgZmFpbC5cbiAgcmV0dXJuICEkU3RyaW5nKHN5bWJvbCkgfHwgIShPYmplY3Qoc3ltYm9sKSBpbnN0YW5jZW9mIFN5bWJvbCkgfHxcbiAgICAvLyBDaHJvbWUgMzgtNDAgc3ltYm9scyBhcmUgbm90IGluaGVyaXRlZCBmcm9tIERPTSBjb2xsZWN0aW9ucyBwcm90b3R5cGVzIHRvIGluc3RhbmNlc1xuICAgICFTeW1ib2wuc2hhbSAmJiBWOF9WRVJTSU9OICYmIFY4X1ZFUlNJT04gPCA0MTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX1NZTUJPTFxuICAmJiAhU3ltYm9sLnNoYW1cbiAgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc1Byb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YnKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcblxubW9kdWxlLmV4cG9ydHMgPSBVU0VfU1lNQk9MX0FTX1VJRCA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgJFN5bWJvbCA9IGdldEJ1aWx0SW4oJ1N5bWJvbCcpO1xuICByZXR1cm4gaXNDYWxsYWJsZSgkU3ltYm9sKSAmJiBpc1Byb3RvdHlwZU9mKCRTeW1ib2wucHJvdG90eXBlLCAkT2JqZWN0KGl0KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRTdHJpbmcgPSBTdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICRTdHJpbmcoYXJndW1lbnQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiAnT2JqZWN0JztcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZycpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogSXNDYWxsYWJsZShhcmd1bWVudCkgaXMgdHJ1ZWBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcih0cnlUb1N0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQnKTtcblxuLy8gYEdldE1ldGhvZGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldG1ldGhvZFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoViwgUCkge1xuICB2YXIgZnVuYyA9IFZbUF07XG4gIHJldHVybiBpc051bGxPclVuZGVmaW5lZChmdW5jKSA/IHVuZGVmaW5lZCA6IGFDYWxsYWJsZShmdW5jKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYE9yZGluYXJ5VG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vcmRpbmFyeXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKHByZWYgPT09ICdzdHJpbmcnICYmIGlzQ2FsbGFibGUoZm4gPSBpbnB1dC50b1N0cmluZykgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChpc0NhbGxhYmxlKGZuID0gaW5wdXQudmFsdWVPZikgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChwcmVmICE9PSAnc3RyaW5nJyAmJiBpc0NhbGxhYmxlKGZuID0gaW5wdXQudG9TdHJpbmcpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiAnMy4zMy4wJyxcbiAgbW9kZTogSVNfUFVSRSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE0LTIwMjMgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknLFxuICBsaWNlbnNlOiAnaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4zMy4wL0xJQ0VOU0UnLFxuICBzb3VyY2U6ICdodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcydcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG52YXIgaWQgPSAwO1xudmFyIHBvc3RmaXggPSBNYXRoLnJhbmRvbSgpO1xudmFyIHRvU3RyaW5nID0gdW5jdXJyeVRoaXMoMS4wLnRvU3RyaW5nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcgKyAoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSkgKyAnKV8nICsgdG9TdHJpbmcoKytpZCArIHBvc3RmaXgsIDM2KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xuXG52YXIgU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciBXZWxsS25vd25TeW1ib2xzU3RvcmUgPSBzaGFyZWQoJ3drcycpO1xudmFyIGNyZWF0ZVdlbGxLbm93blN5bWJvbCA9IFVTRV9TWU1CT0xfQVNfVUlEID8gU3ltYm9sWydmb3InXSB8fCBTeW1ib2wgOiBTeW1ib2wgJiYgU3ltYm9sLndpdGhvdXRTZXR0ZXIgfHwgdWlkO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGlmICghaGFzT3duKFdlbGxLbm93blN5bWJvbHNTdG9yZSwgbmFtZSkpIHtcbiAgICBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBOQVRJVkVfU1lNQk9MICYmIGhhc093bihTeW1ib2wsIG5hbWUpXG4gICAgICA/IFN5bWJvbFtuYW1lXVxuICAgICAgOiBjcmVhdGVXZWxsS25vd25TeW1ib2woJ1N5bWJvbC4nICsgbmFtZSk7XG4gIH0gcmV0dXJuIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBvcmRpbmFyeVRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbnZhciBUT19QUklNSVRJVkUgPSB3ZWxsS25vd25TeW1ib2woJ3RvUHJpbWl0aXZlJyk7XG5cbi8vIGBUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSB8fCBpc1N5bWJvbChpbnB1dCkpIHJldHVybiBpbnB1dDtcbiAgdmFyIGV4b3RpY1RvUHJpbSA9IGdldE1ldGhvZChpbnB1dCwgVE9fUFJJTUlUSVZFKTtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKGV4b3RpY1RvUHJpbSkge1xuICAgIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnZGVmYXVsdCc7XG4gICAgcmVzdWx0ID0gY2FsbChleG90aWNUb1ByaW0sIGlucHV0LCBwcmVmKTtcbiAgICBpZiAoIWlzT2JqZWN0KHJlc3VsdCkgfHwgaXNTeW1ib2wocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbiAgfVxuICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ251bWJlcic7XG4gIHJldHVybiBvcmRpbmFyeVRvUHJpbWl0aXZlKGlucHV0LCBwcmVmKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG5cbi8vIGBUb1Byb3BlcnR5S2V5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9wcm9wZXJ0eWtleVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIGtleSA9IHRvUHJpbWl0aXZlKGFyZ3VtZW50LCAnc3RyaW5nJyk7XG4gIHJldHVybiBpc1N5bWJvbChrZXkpID8ga2V5IDoga2V5ICsgJyc7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcbnZhciBWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1ZycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgJGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIEVOVU1FUkFCTEUgPSAnZW51bWVyYWJsZSc7XG52YXIgQ09ORklHVVJBQkxFID0gJ2NvbmZpZ3VyYWJsZSc7XG52YXIgV1JJVEFCTEUgPSAnd3JpdGFibGUnO1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnR5XG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/IFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID8gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAodHlwZW9mIE8gPT09ICdmdW5jdGlvbicgJiYgUCA9PT0gJ3Byb3RvdHlwZScgJiYgJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzICYmIFdSSVRBQkxFIGluIEF0dHJpYnV0ZXMgJiYgIUF0dHJpYnV0ZXNbV1JJVEFCTEVdKSB7XG4gICAgdmFyIGN1cnJlbnQgPSAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnRbV1JJVEFCTEVdKSB7XG4gICAgICBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgICAgIEF0dHJpYnV0ZXMgPSB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogQ09ORklHVVJBQkxFIGluIEF0dHJpYnV0ZXMgPyBBdHRyaWJ1dGVzW0NPTkZJR1VSQUJMRV0gOiBjdXJyZW50W0NPTkZJR1VSQUJMRV0sXG4gICAgICAgIGVudW1lcmFibGU6IEVOVU1FUkFCTEUgaW4gQXR0cmlidXRlcyA/IEF0dHJpYnV0ZXNbRU5VTUVSQUJMRV0gOiBjdXJyZW50W0VOVU1FUkFCTEVdLFxuICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICB9IHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG59IDogJGRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuICRkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBuZXcgJFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gREVTQ1JJUFRPUlMgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKG9iamVjdCwga2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG5cbnZhciBrZXlzID0gc2hhcmVkKCdrZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4ga2V5c1trZXldIHx8IChrZXlzW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9XRUFLX01BUCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24nKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG52YXIgT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQgPSAnT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQnO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xudmFyIHNldCwgZ2V0LCBoYXM7XG5cbnZhciBlbmZvcmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBoYXMoaXQpID8gZ2V0KGl0KSA6IHNldChpdCwge30pO1xufTtcblxudmFyIGdldHRlckZvciA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICB2YXIgc3RhdGU7XG4gICAgaWYgKCFpc09iamVjdChpdCkgfHwgKHN0YXRlID0gZ2V0KGl0KSkudHlwZSAhPT0gVFlQRSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAnICsgVFlQRSArICcgcmVxdWlyZWQnKTtcbiAgICB9IHJldHVybiBzdGF0ZTtcbiAgfTtcbn07XG5cbmlmIChOQVRJVkVfV0VBS19NQVAgfHwgc2hhcmVkLnN0YXRlKSB7XG4gIHZhciBzdG9yZSA9IHNoYXJlZC5zdGF0ZSB8fCAoc2hhcmVkLnN0YXRlID0gbmV3IFdlYWtNYXAoKSk7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXNlbGYtYXNzaWduIC0tIHByb3RvdHlwZSBtZXRob2RzIHByb3RlY3Rpb24gKi9cbiAgc3RvcmUuZ2V0ID0gc3RvcmUuZ2V0O1xuICBzdG9yZS5oYXMgPSBzdG9yZS5oYXM7XG4gIHN0b3JlLnNldCA9IHN0b3JlLnNldDtcbiAgLyogZXNsaW50LWVuYWJsZSBuby1zZWxmLWFzc2lnbiAtLSBwcm90b3R5cGUgbWV0aG9kcyBwcm90ZWN0aW9uICovXG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAoc3RvcmUuaGFzKGl0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcihPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCk7XG4gICAgbWV0YWRhdGEuZmFjYWRlID0gaXQ7XG4gICAgc3RvcmUuc2V0KGl0LCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gc3RvcmUuZ2V0KGl0KSB8fCB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHN0b3JlLmhhcyhpdCk7XG4gIH07XG59IGVsc2Uge1xuICB2YXIgU1RBVEUgPSBzaGFyZWRLZXkoJ3N0YXRlJyk7XG4gIGhpZGRlbktleXNbU1RBVEVdID0gdHJ1ZTtcbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmIChoYXNPd24oaXQsIFNUQVRFKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCk7XG4gICAgbWV0YWRhdGEuZmFjYWRlID0gaXQ7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KGl0LCBTVEFURSwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGhhc093bihpdCwgU1RBVEUpID8gaXRbU1RBVEVdIDoge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBoYXNPd24oaXQsIFNUQVRFKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogc2V0LFxuICBnZXQ6IGdldCxcbiAgaGFzOiBoYXMsXG4gIGVuZm9yY2U6IGVuZm9yY2UsXG4gIGdldHRlckZvcjogZ2V0dGVyRm9yXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1uYW1lJykuQ09ORklHVVJBQkxFO1xudmFyIGluc3BlY3RTb3VyY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG5cbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZW5mb3JjZTtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG52YXIgJFN0cmluZyA9IFN0cmluZztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xudmFyIHJlcGxhY2UgPSB1bmN1cnJ5VGhpcygnJy5yZXBsYWNlKTtcbnZhciBqb2luID0gdW5jdXJyeVRoaXMoW10uam9pbik7XG5cbnZhciBDT05GSUdVUkFCTEVfTEVOR1RIID0gREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgJ2xlbmd0aCcsIHsgdmFsdWU6IDggfSkubGVuZ3RoICE9PSA4O1xufSk7XG5cbnZhciBURU1QTEFURSA9IFN0cmluZyhTdHJpbmcpLnNwbGl0KCdTdHJpbmcnKTtcblxudmFyIG1ha2VCdWlsdEluID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodmFsdWUsIG5hbWUsIG9wdGlvbnMpIHtcbiAgaWYgKHN0cmluZ1NsaWNlKCRTdHJpbmcobmFtZSksIDAsIDcpID09PSAnU3ltYm9sKCcpIHtcbiAgICBuYW1lID0gJ1snICsgcmVwbGFjZSgkU3RyaW5nKG5hbWUpLCAvXlN5bWJvbFxcKChbXildKilcXCkvLCAnJDEnKSArICddJztcbiAgfVxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmdldHRlcikgbmFtZSA9ICdnZXQgJyArIG5hbWU7XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc2V0dGVyKSBuYW1lID0gJ3NldCAnICsgbmFtZTtcbiAgaWYgKCFoYXNPd24odmFsdWUsICduYW1lJykgfHwgKENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FICYmIHZhbHVlLm5hbWUgIT09IG5hbWUpKSB7XG4gICAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ25hbWUnLCB7IHZhbHVlOiBuYW1lLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gICAgZWxzZSB2YWx1ZS5uYW1lID0gbmFtZTtcbiAgfVxuICBpZiAoQ09ORklHVVJBQkxFX0xFTkdUSCAmJiBvcHRpb25zICYmIGhhc093bihvcHRpb25zLCAnYXJpdHknKSAmJiB2YWx1ZS5sZW5ndGggIT09IG9wdGlvbnMuYXJpdHkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ2xlbmd0aCcsIHsgdmFsdWU6IG9wdGlvbnMuYXJpdHkgfSk7XG4gIH1cbiAgdHJ5IHtcbiAgICBpZiAob3B0aW9ucyAmJiBoYXNPd24ob3B0aW9ucywgJ2NvbnN0cnVjdG9yJykgJiYgb3B0aW9ucy5jb25zdHJ1Y3Rvcikge1xuICAgICAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ3Byb3RvdHlwZScsIHsgd3JpdGFibGU6IGZhbHNlIH0pO1xuICAgIC8vIGluIFY4IH4gQ2hyb21lIDUzLCBwcm90b3R5cGVzIG9mIHNvbWUgbWV0aG9kcywgbGlrZSBgQXJyYXkucHJvdG90eXBlLnZhbHVlc2AsIGFyZSBub24td3JpdGFibGVcbiAgICB9IGVsc2UgaWYgKHZhbHVlLnByb3RvdHlwZSkgdmFsdWUucHJvdG90eXBlID0gdW5kZWZpbmVkO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHZhciBzdGF0ZSA9IGVuZm9yY2VJbnRlcm5hbFN0YXRlKHZhbHVlKTtcbiAgaWYgKCFoYXNPd24oc3RhdGUsICdzb3VyY2UnKSkge1xuICAgIHN0YXRlLnNvdXJjZSA9IGpvaW4oVEVNUExBVEUsIHR5cGVvZiBuYW1lID09ICdzdHJpbmcnID8gbmFtZSA6ICcnKTtcbiAgfSByZXR1cm4gdmFsdWU7XG59O1xuXG4vLyBhZGQgZmFrZSBGdW5jdGlvbiN0b1N0cmluZyBmb3IgY29ycmVjdCB3b3JrIHdyYXBwZWQgbWV0aG9kcyAvIGNvbnN0cnVjdG9ycyB3aXRoIG1ldGhvZHMgbGlrZSBMb0Rhc2ggaXNOYXRpdmVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRlbmQtbmF0aXZlIC0tIHJlcXVpcmVkXG5GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgPSBtYWtlQnVpbHRJbihmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUodGhpcykgJiYgZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zb3VyY2UgfHwgaW5zcGVjdFNvdXJjZSh0aGlzKTtcbn0sICd0b1N0cmluZycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIG1ha2VCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgbmFtZSwgZGVzY3JpcHRvcikge1xuICBpZiAoZGVzY3JpcHRvci5nZXQpIG1ha2VCdWlsdEluKGRlc2NyaXB0b3IuZ2V0LCBuYW1lLCB7IGdldHRlcjogdHJ1ZSB9KTtcbiAgaWYgKGRlc2NyaXB0b3Iuc2V0KSBtYWtlQnVpbHRJbihkZXNjcmlwdG9yLnNldCwgbmFtZSwgeyBzZXR0ZXI6IHRydWUgfSk7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eS5mKHRhcmdldCwgbmFtZSwgZGVzY3JpcHRvcik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS5mbGFnc2AgZ2V0dGVyIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldC1yZWdleHAucHJvdG90eXBlLmZsYWdzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICBpZiAodGhhdC5oYXNJbmRpY2VzKSByZXN1bHQgKz0gJ2QnO1xuICBpZiAodGhhdC5nbG9iYWwpIHJlc3VsdCArPSAnZyc7XG4gIGlmICh0aGF0Lmlnbm9yZUNhc2UpIHJlc3VsdCArPSAnaSc7XG4gIGlmICh0aGF0Lm11bHRpbGluZSkgcmVzdWx0ICs9ICdtJztcbiAgaWYgKHRoYXQuZG90QWxsKSByZXN1bHQgKz0gJ3MnO1xuICBpZiAodGhhdC51bmljb2RlKSByZXN1bHQgKz0gJ3UnO1xuICBpZiAodGhhdC51bmljb2RlU2V0cykgcmVzdWx0ICs9ICd2JztcbiAgaWYgKHRoYXQuc3RpY2t5KSByZXN1bHQgKz0gJ3knO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVCdWlsdEluQWNjZXNzb3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yJyk7XG52YXIgcmVnRXhwRmxhZ3MgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWZsYWdzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gYmFiZWwtbWluaWZ5IGFuZCBDbG9zdXJlIENvbXBpbGVyIHRyYW5zcGlsZXMgUmVnRXhwKCcuJywgJ2QnKSAtPiAvLi9kIGFuZCBpdCBjYXVzZXMgU3ludGF4RXJyb3JcbnZhciBSZWdFeHAgPSBnbG9iYWwuUmVnRXhwO1xudmFyIFJlZ0V4cFByb3RvdHlwZSA9IFJlZ0V4cC5wcm90b3R5cGU7XG5cbnZhciBGT1JDRUQgPSBERVNDUklQVE9SUyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBJTkRJQ0VTX1NVUFBPUlQgPSB0cnVlO1xuICB0cnkge1xuICAgIFJlZ0V4cCgnLicsICdkJyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgSU5ESUNFU19TVVBQT1JUID0gZmFsc2U7XG4gIH1cblxuICB2YXIgTyA9IHt9O1xuICAvLyBtb2Rlcm4gVjggYnVnXG4gIHZhciBjYWxscyA9ICcnO1xuICB2YXIgZXhwZWN0ZWQgPSBJTkRJQ0VTX1NVUFBPUlQgPyAnZGdpbXN5JyA6ICdnaW1zeSc7XG5cbiAgdmFyIGFkZEdldHRlciA9IGZ1bmN0aW9uIChrZXksIGNocikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBrZXksIHsgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICBjYWxscyArPSBjaHI7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IH0pO1xuICB9O1xuXG4gIHZhciBwYWlycyA9IHtcbiAgICBkb3RBbGw6ICdzJyxcbiAgICBnbG9iYWw6ICdnJyxcbiAgICBpZ25vcmVDYXNlOiAnaScsXG4gICAgbXVsdGlsaW5lOiAnbScsXG4gICAgc3RpY2t5OiAneSdcbiAgfTtcblxuICBpZiAoSU5ESUNFU19TVVBQT1JUKSBwYWlycy5oYXNJbmRpY2VzID0gJ2QnO1xuXG4gIGZvciAodmFyIGtleSBpbiBwYWlycykgYWRkR2V0dGVyKGtleSwgcGFpcnNba2V5XSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxuICB2YXIgcmVzdWx0ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHBQcm90b3R5cGUsICdmbGFncycpLmdldC5jYWxsKE8pO1xuXG4gIHJldHVybiByZXN1bHQgIT09IGV4cGVjdGVkIHx8IGNhbGxzICE9PSBleHBlY3RlZDtcbn0pO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS5mbGFnc2AgZ2V0dGVyXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldC1yZWdleHAucHJvdG90eXBlLmZsYWdzXG5pZiAoRk9SQ0VEKSBkZWZpbmVCdWlsdEluQWNjZXNzb3IoUmVnRXhwUHJvdG90eXBlLCAnZmxhZ3MnLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZ2V0OiByZWdFeHBGbGFnc1xufSk7XG4iLCIvLyBjb25zdCByZXBsYWNlbWVudHMgPSB7XG4vLyAgIEFTQ0lJUHVuY3R1YXRpb246ICchXCIjJCUmXFwnKCkqKyxcXFxcLS4vOjs8PT4/QFxcXFxbXFxcXF1eX2B7fH1+Jyxcbi8vICAgVHJpZ2dlckNoYXJzOiAnYF9cXCpcXFtcXF1cXChcXCknLFxuLy8gICBTY2hlbWU6IGBbQS1aYS16XVtBLVphLXowLTlcXCtcXC5cXC1dezEsMzF9YCxcbi8vICAgRW1haWw6IGBbYS16QS1aMC05LiEjJCUmJyorLz0/Xl9cXGB7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlxcXFwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSpgLCAvLyBGcm9tIENvbW1vbk1hcmsgc3BlY1xuXG4vLyB9XG5jb25zdCByZXBsYWNlbWVudHMgPSB7XG4gIEFTQ0lJUHVuY3R1YXRpb246IC9bIVwiIyQlJicoKSorLFxcLS4vOjs8PT4/QFtcXF1eX2B7fH1+XFxcXF0vLCAgXG4gIE5vdFRyaWdnZXJDaGFyOiAvW15gXypbXFxdKCk8PiF+XS8sXG4gIFNjaGVtZTogL1tBLVphLXpdW0EtWmEtejAtOSsuLV17MSwzMX0vLFxuICBFbWFpbDogL1thLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlxcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqLywgLy8gRnJvbSBDb21tb25NYXJrIHNwZWNcbiAgSFRNTE9wZW5UYWc6IC88SFRNTFRhZ05hbWUoPzpIVE1MQXR0cmlidXRlKSpcXHMqXFwvPz4vLFxuICBIVE1MQ2xvc2VUYWc6IC88XFwvSFRNTFRhZ05hbWVcXHMqPi8sXG4gIEhUTUxUYWdOYW1lOiAvW0EtWmEtel1bQS1aYS16MC05LV0qLywgXG4gIEhUTUxDb21tZW50OiAvPCEtLSg/OltePi1dfCg/OltePi1dKD86W14tXXwtW14tXSkqW14tXSkpLS0+LyxcbiAgSFRNTFBJOiAvPFxcPyg/OnwufCg/OlteP118XFw/W14+XSkqKVxcPz4vLFxuICBIVE1MRGVjbGFyYXRpb246IC88IVtBLVpdK1xcc1tePl0qPi8sXG4gIEhUTUxDREFUQTogLzwhXFxbQ0RBVEFcXFsuKj9cXF1cXF0+LyxcbiAgSFRNTEF0dHJpYnV0ZTogL1xccytbQS1aYS16XzpdW0EtWmEtejAtOV8uOi1dKig/OkhUTUxBdHRWYWx1ZSk/LyxcbiAgSFRNTEF0dFZhbHVlOiAvXFxzKj1cXHMqKD86KD86J1teJ10qJyl8KD86XCJbXlwiXSpcIil8KD86W15cXHNcIic9PD5gXSspKS8sXG4gIEtub3duVGFnOiAvYWRkcmVzc3xhcnRpY2xlfGFzaWRlfGJhc2V8YmFzZWZvbnR8YmxvY2txdW90ZXxib2R5fGNhcHRpb258Y2VudGVyfGNvbHxjb2xncm91cHxkZHxkZXRhaWxzfGRpYWxvZ3xkaXJ8ZGl2fGRsfGR0fGZpZWxkc2V0fGZpZ2NhcHRpb258ZmlndXJlfGZvb3Rlcnxmb3JtfGZyYW1lfGZyYW1lc2V0fGgxfGgyfGgzfGg0fGg1fGg2fGhlYWR8aGVhZGVyfGhyfGh0bWx8aWZyYW1lfGxlZ2VuZHxsaXxsaW5rfG1haW58bWVudXxtZW51aXRlbXxuYXZ8bm9mcmFtZXN8b2x8b3B0Z3JvdXB8b3B0aW9ufHB8cGFyYW18c2VjdGlvbnxzb3VyY2V8c3VtbWFyeXx0YWJsZXx0Ym9keXx0ZHx0Zm9vdHx0aHx0aGVhZHx0aXRsZXx0cnx0cmFja3x1bC9cbn1cblxuLy8gRnJvbSBDb21tb25NYXJrLmpzLiBcbmNvbnN0IHB1bmN0dWF0aW9uTGVhZGluZyA9IG5ldyBSZWdFeHAoL14oPzpbIVwiIyQlJicoKSorLFxcLS4vOjs8PT4/QFtcXF1cXFxcXl9ge3x9flxceEExXFx4QTdcXHhBQlxceEI2XFx4QjdcXHhCQlxceEJGXFx1MDM3RVxcdTAzODdcXHUwNTVBLVxcdTA1NUZcXHUwNTg5XFx1MDU4QVxcdTA1QkVcXHUwNUMwXFx1MDVDM1xcdTA1QzZcXHUwNUYzXFx1MDVGNFxcdTA2MDlcXHUwNjBBXFx1MDYwQ1xcdTA2MERcXHUwNjFCXFx1MDYxRVxcdTA2MUZcXHUwNjZBLVxcdTA2NkRcXHUwNkQ0XFx1MDcwMC1cXHUwNzBEXFx1MDdGNy1cXHUwN0Y5XFx1MDgzMC1cXHUwODNFXFx1MDg1RVxcdTA5NjRcXHUwOTY1XFx1MDk3MFxcdTBBRjBcXHUwREY0XFx1MEU0RlxcdTBFNUFcXHUwRTVCXFx1MEYwNC1cXHUwRjEyXFx1MEYxNFxcdTBGM0EtXFx1MEYzRFxcdTBGODVcXHUwRkQwLVxcdTBGRDRcXHUwRkQ5XFx1MEZEQVxcdTEwNEEtXFx1MTA0RlxcdTEwRkJcXHUxMzYwLVxcdTEzNjhcXHUxNDAwXFx1MTY2RFxcdTE2NkVcXHUxNjlCXFx1MTY5Q1xcdTE2RUItXFx1MTZFRFxcdTE3MzVcXHUxNzM2XFx1MTdENC1cXHUxN0Q2XFx1MTdEOC1cXHUxN0RBXFx1MTgwMC1cXHUxODBBXFx1MTk0NFxcdTE5NDVcXHUxQTFFXFx1MUExRlxcdTFBQTAtXFx1MUFBNlxcdTFBQTgtXFx1MUFBRFxcdTFCNUEtXFx1MUI2MFxcdTFCRkMtXFx1MUJGRlxcdTFDM0ItXFx1MUMzRlxcdTFDN0VcXHUxQzdGXFx1MUNDMC1cXHUxQ0M3XFx1MUNEM1xcdTIwMTAtXFx1MjAyN1xcdTIwMzAtXFx1MjA0M1xcdTIwNDUtXFx1MjA1MVxcdTIwNTMtXFx1MjA1RVxcdTIwN0RcXHUyMDdFXFx1MjA4RFxcdTIwOEVcXHUyMzA4LVxcdTIzMEJcXHUyMzI5XFx1MjMyQVxcdTI3NjgtXFx1Mjc3NVxcdTI3QzVcXHUyN0M2XFx1MjdFNi1cXHUyN0VGXFx1Mjk4My1cXHUyOTk4XFx1MjlEOC1cXHUyOURCXFx1MjlGQ1xcdTI5RkRcXHUyQ0Y5LVxcdTJDRkNcXHUyQ0ZFXFx1MkNGRlxcdTJENzBcXHUyRTAwLVxcdTJFMkVcXHUyRTMwLVxcdTJFNDJcXHUzMDAxLVxcdTMwMDNcXHUzMDA4LVxcdTMwMTFcXHUzMDE0LVxcdTMwMUZcXHUzMDMwXFx1MzAzRFxcdTMwQTBcXHUzMEZCXFx1QTRGRVxcdUE0RkZcXHVBNjBELVxcdUE2MEZcXHVBNjczXFx1QTY3RVxcdUE2RjItXFx1QTZGN1xcdUE4NzQtXFx1QTg3N1xcdUE4Q0VcXHVBOENGXFx1QThGOC1cXHVBOEZBXFx1QThGQ1xcdUE5MkVcXHVBOTJGXFx1QTk1RlxcdUE5QzEtXFx1QTlDRFxcdUE5REVcXHVBOURGXFx1QUE1Qy1cXHVBQTVGXFx1QUFERVxcdUFBREZcXHVBQUYwXFx1QUFGMVxcdUFCRUJcXHVGRDNFXFx1RkQzRlxcdUZFMTAtXFx1RkUxOVxcdUZFMzAtXFx1RkU1MlxcdUZFNTQtXFx1RkU2MVxcdUZFNjNcXHVGRTY4XFx1RkU2QVxcdUZFNkJcXHVGRjAxLVxcdUZGMDNcXHVGRjA1LVxcdUZGMEFcXHVGRjBDLVxcdUZGMEZcXHVGRjFBXFx1RkYxQlxcdUZGMUZcXHVGRjIwXFx1RkYzQi1cXHVGRjNEXFx1RkYzRlxcdUZGNUJcXHVGRjVEXFx1RkY1Ri1cXHVGRjY1XXxcXHVEODAwW1xcdUREMDAtXFx1REQwMlxcdURGOUZcXHVERkQwXXxcXHVEODAxXFx1REQ2RnxcXHVEODAyW1xcdURDNTdcXHVERDFGXFx1REQzRlxcdURFNTAtXFx1REU1OFxcdURFN0ZcXHVERUYwLVxcdURFRjZcXHVERjM5LVxcdURGM0ZcXHVERjk5LVxcdURGOUNdfFxcdUQ4MDRbXFx1REM0Ny1cXHVEQzREXFx1RENCQlxcdURDQkNcXHVEQ0JFLVxcdURDQzFcXHVERDQwLVxcdURENDNcXHVERDc0XFx1REQ3NVxcdUREQzUtXFx1RERDOVxcdUREQ0RcXHVERERCXFx1RERERC1cXHVERERGXFx1REUzOC1cXHVERTNEXFx1REVBOV18XFx1RDgwNVtcXHVEQ0M2XFx1RERDMS1cXHVEREQ3XFx1REU0MS1cXHVERTQzXFx1REYzQy1cXHVERjNFXXxcXHVEODA5W1xcdURDNzAtXFx1REM3NF18XFx1RDgxQVtcXHVERTZFXFx1REU2RlxcdURFRjVcXHVERjM3LVxcdURGM0JcXHVERjQ0XXxcXHVEODJGXFx1REM5RnxcXHVEODM2W1xcdURFODctXFx1REU4Ql0pLyk7XG5cbmNvbnN0IHB1bmN0dWF0aW9uVHJhaWxpbmcgPSBuZXcgUmVnRXhwKC8oPzpbIVwiIyQlJicoKSorLFxcLS4vOjs8PT4/QFtcXF1cXFxcXl9ge3x9flxceEExXFx4QTdcXHhBQlxceEI2XFx4QjdcXHhCQlxceEJGXFx1MDM3RVxcdTAzODdcXHUwNTVBLVxcdTA1NUZcXHUwNTg5XFx1MDU4QVxcdTA1QkVcXHUwNUMwXFx1MDVDM1xcdTA1QzZcXHUwNUYzXFx1MDVGNFxcdTA2MDlcXHUwNjBBXFx1MDYwQ1xcdTA2MERcXHUwNjFCXFx1MDYxRVxcdTA2MUZcXHUwNjZBLVxcdTA2NkRcXHUwNkQ0XFx1MDcwMC1cXHUwNzBEXFx1MDdGNy1cXHUwN0Y5XFx1MDgzMC1cXHUwODNFXFx1MDg1RVxcdTA5NjRcXHUwOTY1XFx1MDk3MFxcdTBBRjBcXHUwREY0XFx1MEU0RlxcdTBFNUFcXHUwRTVCXFx1MEYwNC1cXHUwRjEyXFx1MEYxNFxcdTBGM0EtXFx1MEYzRFxcdTBGODVcXHUwRkQwLVxcdTBGRDRcXHUwRkQ5XFx1MEZEQVxcdTEwNEEtXFx1MTA0RlxcdTEwRkJcXHUxMzYwLVxcdTEzNjhcXHUxNDAwXFx1MTY2RFxcdTE2NkVcXHUxNjlCXFx1MTY5Q1xcdTE2RUItXFx1MTZFRFxcdTE3MzVcXHUxNzM2XFx1MTdENC1cXHUxN0Q2XFx1MTdEOC1cXHUxN0RBXFx1MTgwMC1cXHUxODBBXFx1MTk0NFxcdTE5NDVcXHUxQTFFXFx1MUExRlxcdTFBQTAtXFx1MUFBNlxcdTFBQTgtXFx1MUFBRFxcdTFCNUEtXFx1MUI2MFxcdTFCRkMtXFx1MUJGRlxcdTFDM0ItXFx1MUMzRlxcdTFDN0VcXHUxQzdGXFx1MUNDMC1cXHUxQ0M3XFx1MUNEM1xcdTIwMTAtXFx1MjAyN1xcdTIwMzAtXFx1MjA0M1xcdTIwNDUtXFx1MjA1MVxcdTIwNTMtXFx1MjA1RVxcdTIwN0RcXHUyMDdFXFx1MjA4RFxcdTIwOEVcXHUyMzA4LVxcdTIzMEJcXHUyMzI5XFx1MjMyQVxcdTI3NjgtXFx1Mjc3NVxcdTI3QzVcXHUyN0M2XFx1MjdFNi1cXHUyN0VGXFx1Mjk4My1cXHUyOTk4XFx1MjlEOC1cXHUyOURCXFx1MjlGQ1xcdTI5RkRcXHUyQ0Y5LVxcdTJDRkNcXHUyQ0ZFXFx1MkNGRlxcdTJENzBcXHUyRTAwLVxcdTJFMkVcXHUyRTMwLVxcdTJFNDJcXHUzMDAxLVxcdTMwMDNcXHUzMDA4LVxcdTMwMTFcXHUzMDE0LVxcdTMwMUZcXHUzMDMwXFx1MzAzRFxcdTMwQTBcXHUzMEZCXFx1QTRGRVxcdUE0RkZcXHVBNjBELVxcdUE2MEZcXHVBNjczXFx1QTY3RVxcdUE2RjItXFx1QTZGN1xcdUE4NzQtXFx1QTg3N1xcdUE4Q0VcXHVBOENGXFx1QThGOC1cXHVBOEZBXFx1QThGQ1xcdUE5MkVcXHVBOTJGXFx1QTk1RlxcdUE5QzEtXFx1QTlDRFxcdUE5REVcXHVBOURGXFx1QUE1Qy1cXHVBQTVGXFx1QUFERVxcdUFBREZcXHVBQUYwXFx1QUFGMVxcdUFCRUJcXHVGRDNFXFx1RkQzRlxcdUZFMTAtXFx1RkUxOVxcdUZFMzAtXFx1RkU1MlxcdUZFNTQtXFx1RkU2MVxcdUZFNjNcXHVGRTY4XFx1RkU2QVxcdUZFNkJcXHVGRjAxLVxcdUZGMDNcXHVGRjA1LVxcdUZGMEFcXHVGRjBDLVxcdUZGMEZcXHVGRjFBXFx1RkYxQlxcdUZGMUZcXHVGRjIwXFx1RkYzQi1cXHVGRjNEXFx1RkYzRlxcdUZGNUJcXHVGRjVEXFx1RkY1Ri1cXHVGRjY1XXxcXHVEODAwW1xcdUREMDAtXFx1REQwMlxcdURGOUZcXHVERkQwXXxcXHVEODAxXFx1REQ2RnxcXHVEODAyW1xcdURDNTdcXHVERDFGXFx1REQzRlxcdURFNTAtXFx1REU1OFxcdURFN0ZcXHVERUYwLVxcdURFRjZcXHVERjM5LVxcdURGM0ZcXHVERjk5LVxcdURGOUNdfFxcdUQ4MDRbXFx1REM0Ny1cXHVEQzREXFx1RENCQlxcdURDQkNcXHVEQ0JFLVxcdURDQzFcXHVERDQwLVxcdURENDNcXHVERDc0XFx1REQ3NVxcdUREQzUtXFx1RERDOVxcdUREQ0RcXHVERERCXFx1RERERC1cXHVERERGXFx1REUzOC1cXHVERTNEXFx1REVBOV18XFx1RDgwNVtcXHVEQ0M2XFx1RERDMS1cXHVEREQ3XFx1REU0MS1cXHVERTQzXFx1REYzQy1cXHVERjNFXXxcXHVEODA5W1xcdURDNzAtXFx1REM3NF18XFx1RDgxQVtcXHVERTZFXFx1REU2RlxcdURFRjVcXHVERjM3LVxcdURGM0JcXHVERjQ0XXxcXHVEODJGXFx1REM5RnxcXHVEODM2W1xcdURFODctXFx1REU4Ql0pJC8pO1xuXG4vLyBleHBvcnQgY29uc3QgaW5saW5lVHJpZ2dlckNoYXJzID0gbmV3IFJlZ0V4cChgWyR7cmVwbGFjZW1lbnRzLlRyaWdnZXJDaGFyc31dYCk7XG5cbi8qKlxuICogVGhpcyBpcyBDb21tb25NYXJrJ3MgYmxvY2sgZ3JhbW1hciwgYnV0IHdlJ3JlIGlnbm9yaW5nIG5lc3RlZCBibG9ja3MgaGVyZS4gIFxuICovIFxuY29uc3QgbGluZUdyYW1tYXIgPSB7IFxuICBUTUgxOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9I1xccykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSDFcIj4kMTwvc3Bhbj4kJDI8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1IMVwiPiQzPC9zcGFuPidcbiAgfSxcbiAgVE1IMjogeyBcbiAgICByZWdleHA6IC9eKCB7MCwzfSMjXFxzKSguKj8pKCg/OlxccysjK1xccyopPykkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1IMlwiPiQxPC9zcGFuPiQkMjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUgyXCI+JDM8L3NwYW4+J1xuICB9LFxuICBUTUgzOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9IyMjXFxzKSguKj8pKCg/OlxccysjK1xccyopPykkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1IM1wiPiQxPC9zcGFuPiQkMjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUgzXCI+JDM8L3NwYW4+J1xuICB9LFxuICBUTUg0OiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9IyMjI1xccykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSDRcIj4kMTwvc3Bhbj4kJDI8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1INFwiPiQzPC9zcGFuPidcbiAgfSxcbiAgVE1INTogeyBcbiAgICByZWdleHA6IC9eKCB7MCwzfSMjIyMjXFxzKSguKj8pKCg/OlxccysjK1xccyopPykkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1INVwiPiQxPC9zcGFuPiQkMjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUg1XCI+JDM8L3NwYW4+J1xuICB9LFxuICBUTUg2OiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9IyMjIyMjXFxzKSguKj8pKCg/OlxccysjK1xccyopPykkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1INlwiPiQxPC9zcGFuPiQkMjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUg2XCI+JDM8L3NwYW4+J1xuICB9LFxuICBUTUJsb2NrcXVvdGU6IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM30+WyBdPykoLiopJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNQmxvY2txdW90ZVwiPiQxPC9zcGFuPiQkMidcbiAgfSxcbiAgVE1Db2RlRmVuY2VCYWNrdGlja09wZW46IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM30oPzxzZXE+YGBgYCopXFxzKikoW15gXSo/KShcXHMqKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUNvZGVGZW5jZUJhY2t0aWNrXCI+JDE8L3NwYW4+PHNwYW4gY2xhc3M9XCJUTUluZm9TdHJpbmdcIj4kMzwvc3Bhbj4kNCdcbiAgfSxcbiAgVE1Db2RlRmVuY2VUaWxkZU9wZW46IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM30oPzxzZXE+fn5+fiopXFxzKikoLio/KShcXHMqKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUNvZGVGZW5jZVRpbGRlXCI+JDE8L3NwYW4+PHNwYW4gY2xhc3M9XCJUTUluZm9TdHJpbmdcIj4kMzwvc3Bhbj4kNCdcbiAgfSxcbiAgVE1Db2RlRmVuY2VCYWNrdGlja0Nsb3NlOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9KD88c2VxPmBgYGAqKSkoXFxzKikkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1Db2RlRmVuY2VCYWNrdGlja1wiPiQxPC9zcGFuPiQzJ1xuICB9LFxuICBUTUNvZGVGZW5jZVRpbGRlQ2xvc2U6IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM30oPzxzZXE+fn5+fiopKShcXHMqKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUNvZGVGZW5jZVRpbGRlXCI+JDE8L3NwYW4+JDMnXG4gIH0sXG4gIFRNQmxhbmtMaW5lOiB7IFxuICAgIHJlZ2V4cDogL14oWyBcXHRdKikkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICckMCdcbiAgfSxcbiAgVE1TZXRleHRIMU1hcmtlcjogeyBcbiAgICByZWdleHA6IC9eIHswLDN9PStcXHMqJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNU2V0ZXh0SDFNYXJrZXJcIj4kMDwvc3Bhbj4nXG4gIH0sXG4gIFRNU2V0ZXh0SDJNYXJrZXI6IHsgXG4gICAgcmVnZXhwOiAvXiB7MCwzfS0rXFxzKiQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTVNldGV4dEgxTWFya2VyXCI+JDA8L3NwYW4+J1xuICB9LFxuICBUTUhSOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9KFxcKlsgXFx0XSpcXCpbIFxcdF0qXFwqWyBcXHQqXSopfCgtWyBcXHRdKi1bIFxcdF0qLVsgXFx0LV0qKXwoX1sgXFx0XSpfWyBcXHRdKl9bIFxcdF9dKikpJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSFJcIj4kMDwvc3Bhbj4nXG4gIH0sXG4gIFRNVUw6IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM31bKyotXSB7MSw0fSkoLiopJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNVUxcIj4kMTwvc3Bhbj4kJDInXG4gIH0sXG4gIFRNT0w6IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM31cXGR7MSw5fVsuKV0gezEsNH0pKC4qKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTU9MXCI+JDE8L3NwYW4+JCQyJ1xuICB9LFxuICAvLyBUT0RPOiBUaGlzIGlzIGN1cnJlbnRseSBwcmV2ZW50aW5nIHN1Ymxpc3RzIChhbmQgYW55IGNvbnRlbnQgd2l0aGluIGxpc3QgaXRlbXMsIHJlYWxseSkgZnJvbSB3b3JraW5nXG4gIFRNSW5kZW50ZWRDb2RlOiB7IFxuICAgIHJlZ2V4cDogL14oIHs0fXxcXHQpKC4qKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUluZGVudGVkQ29kZVwiPiQxPC9zcGFuPiQyJ1xuICB9LFxuICBUTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uOiB7XG4gICAgLy8gVE9ETzogTGluayBkZXN0aW5hdGlvbiBjYW4ndCBpbmNsdWRlIHVuYmFsYW5jZWQgcGFyYW50aGVzZXMsIGJ1dCB3ZSBqdXN0IGlnbm9yZSB0aGF0IGhlcmUgXG4gICAgcmVnZXhwOiAvXiggezAsM31cXFtcXHMqKShbXlxcc1xcXV0oPzpbXlxcXV18XFxcXFxcXSkqPykoXFxzKlxcXTpcXHMqKSgoPzpbXlxcczw+XSspfCg/OjwoPzpbXjw+XFxcXF18XFxcXC4pKj4pKT8oXFxzKikoKD86XFwoKD86W14oKVxcXFxdfFxcXFwuKSpcXCkpfCg/OlwiKD86W15cIlxcXFxdfFxcXFwuKSpcIil8KD86Jyg/OlteJ1xcXFxdfFxcXFwuKSonKSk/KFxccyopJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNTGlua1JlZmVyZW5jZURlZmluaXRpb25cIj4kMTwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTGlua0xhYmVsIFRNTGlua0xhYmVsX0RlZmluaXRpb25cIj4kMjwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1MaW5rUmVmZXJlbmNlRGVmaW5pdGlvblwiPiQzPC9zcGFuPjxzcGFuIGNsYXNzPVwiVE1MaW5rRGVzdGluYXRpb25cIj4kNDwvc3Bhbj4kNTxzcGFuIGNsYXNzPVwiVE1MaW5rVGl0bGVcIj4kNjwvc3Bhbj4kNycsXG4gICAgbGFiZWxQbGFjZWhvbGRlcjogMiwgLy8gdGhpcyBkZWZpbmVzIHdoaWNoIHBsYWNlaG9sZGVyIGluIHRoZSBhYm92ZSByZWdleCBpcyB0aGUgbGluayBcImxhYmVsXCJcbiAgfSxcbn07XG5cbi8qKlxuICogSFRNTCBibG9ja3MgaGF2ZSBtdWx0aXBsZSBkaWZmZXJlbnQgY2xhc3NlcyBvZiBvcGVuZXIgYW5kIGNsb3Nlci4gVGhpcyBhcnJheSBkZWZpbmVzIGFsbCB0aGUgY2FzZXNcbiAqL1xudmFyIGh0bWxCbG9ja0dyYW1tYXIgPSBbXG4gIHsgc3RhcnQ6IC9eIHswLDN9PCg/OnNjcmlwdHxwcmV8c3R5bGUpKD86XFxzfD58JCkvaSwgZW5kOiAvKD86PFxcL3NjcmlwdD58PFxcL3ByZT58PFxcL3N0eWxlPikvaSwgcGFyYUludGVycnVwdDogdHJ1ZSB9LFxuICB7IHN0YXJ0OiAvXiB7MCwzfTwhLS0vLCBlbmQ6IC8tLT4vLCBwYXJhSW50ZXJydXB0OiB0cnVlIH0sXG4gIHsgc3RhcnQ6IC9eIHswLDN9PFxcPy8sIGVuZDogL1xcPz4vLCBwYXJhSW50ZXJydXB0OiB0cnVlIH0sXG4gIHsgc3RhcnQ6IC9eIHswLDN9PCFbQS1aXS8sIGVuZDogLz4vLCBwYXJhSW50ZXJydXB0IDogdHJ1ZX0sXG4gIHsgc3RhcnQ6IC9eIHswLDN9PCFcXFtDREFUQVxcWy8sIGVuZDogL1xcXVxcXT4vLCBwYXJhSW50ZXJydXB0IDogdHJ1ZX0sXG4gIHsgc3RhcnQ6IC9eIHswLDN9KD86PHw8XFwvKSg/Oktub3duVGFnKSg/Olxcc3w+fFxcLz58JCkvaSwgZW5kOiBmYWxzZSwgcGFyYUludGVycnVwdDogdHJ1ZX0sXG4gIHsgc3RhcnQ6IC9eIHswLDN9KD86SFRNTE9wZW5UYWd8SFRNTENsb3NlVGFnKVxccyokLywgZW5kOiBmYWxzZSwgcGFyYUludGVycnVwdDogZmFsc2V9LFxuXTtcblxuLyoqXG4gKiBTdHJ1Y3R1cmUgb2YgdGhlIG9iamVjdDpcbiAqIFRvcCBsZXZlbCBlbnRyaWVzIGFyZSBydWxlcywgZWFjaCBjb25zaXN0aW5nIG9mIGEgcmVndWxhciBleHByZXNzaW9ucyAoaW4gc3RyaW5nIGZvcm1hdCkgYXMgd2VsbCBhcyBhIHJlcGxhY2VtZW50LlxuICogSW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbnMsIHJlcGxhY2VtZW50cyBmcm9tIHRoZSBvYmplY3QgJ3JlcGxhY2VtZW50cycgd2lsbCBiZSBwcm9jZXNzZWQgYmVmb3JlIGNvbXBpbGluZyBpbnRvIHRoZSBwcm9wZXJ0eSByZWdleHAuXG4gKi9cbnZhciBpbmxpbmVHcmFtbWFyID0ge1xuICBlc2NhcGUgOiB7XG4gICAgcmVnZXhwOiAvXlxcXFwoQVNDSUlQdW5jdHVhdGlvbikvLFxuICAgIHJlcGxhY2VtZW50IDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUVzY2FwZVwiPlxcXFw8L3NwYW4+JDEnXG4gIH0sXG4gIGNvZGUgOiB7XG4gICAgcmVnZXhwOiAvXihgKykoKD86W15gXSl8KD86W15gXS4qP1teYF0pKShcXDEpLyxcbiAgICByZXBsYWNlbWVudCA6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1Db2RlXCI+JDE8L3NwYW4+PGNvZGUgY2xhc3M9XCJUTUNvZGVcIj4kMjwvY29kZT48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1Db2RlXCI+JDM8L3NwYW4+JyBcbiAgfSxcbiAgYXV0b2xpbmsgOiB7XG4gICAgcmVnZXhwOiAvXjwoKD86U2NoZW1lOlteXFxzPD5dKil8KD86RW1haWwpKT4vLFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNQXV0b2xpbmtcIj4mbHQ7PC9zcGFuPjxzcGFuIGNsYXNzPVwiVE1BdXRvbGlua1wiPiQxPC9zcGFuPjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUF1dG9saW5rXCI+Jmd0Ozwvc3Bhbj4nXG4gIH0sXG4gIGh0bWwgOiB7XG4gICAgcmVnZXhwOiAvXigoPzpIVE1MT3BlblRhZyl8KD86SFRNTENsb3NlVGFnKXwoPzpIVE1MQ29tbWVudCl8KD86SFRNTFBJKXwoPzpIVE1MRGVjbGFyYXRpb24pfCg/OkhUTUxDREFUQSkpLyxcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1IVE1MXCI+JDE8L3NwYW4+JyxcbiAgfSxcbiAgbGlua09wZW4gOiB7XG4gICAgcmVnZXhwOiAvXlxcWy8sXG4gICAgcmVwbGFjZW1lbnQ6ICcnXG4gIH0sXG4gIGltYWdlT3BlbiA6IHtcbiAgICByZWdleHA6IC9eIVxcWy8sXG4gICAgcmVwbGFjZW1lbnQgOiAnJ1xuICB9LFxuICBsaW5rTGFiZWwgOiB7XG4gICAgcmVnZXhwOiAvXihcXFtcXHMqKShbXlxcXV0qPykoXFxzKlxcXSkvLFxuICAgIHJlcGxhY2VtZW50OiAnJyxcbiAgICBsYWJlbFBsYWNlaG9sZGVyOiAyXG4gIH0sXG4gIGRlZmF1bHQgOiB7XG4gICAgcmVnZXhwOiAvXigufCg/Ok5vdFRyaWdnZXJDaGFyKykpLyxcbiAgICByZXBsYWNlbWVudDogJyQxJ1xuICB9XG59O1xuXG4vLyBQcm9jZXNzIHJlcGxhY2VtZW50cyBpbiByZWdleHBzXG5jb25zdCByZXBsYWNlbWVudFJlZ2V4cCA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMocmVwbGFjZW1lbnRzKS5qb2luKCd8JykpO1xuXG4vLyBJbmxpbmVcbmNvbnN0IGlubGluZVJ1bGVzID1bLi4uT2JqZWN0LmtleXMoaW5saW5lR3JhbW1hcildO1xuZm9yIChsZXQgcnVsZSBvZiBpbmxpbmVSdWxlcykge1xuICBsZXQgcmUgPSBpbmxpbmVHcmFtbWFyW3J1bGVdLnJlZ2V4cC5zb3VyY2U7XG4gIC8vIFJlcGxhY2Ugd2hpbGUgdGhlcmUgaXMgc29tZXRoaW5nIHRvIHJlcGxhY2UuIFRoaXMgbWVhbnMgaXQgYWxzbyB3b3JrcyBvdmVyIG11bHRpcGxlIGxldmVscyAocmVwbGFjZW1lbnRzIGNvbnRhaW5pbmcgcmVwbGFjZW1lbnRzKVxuICB3aGlsZSAocmUubWF0Y2gocmVwbGFjZW1lbnRSZWdleHApKSB7XG4gICAgcmUgPSByZS5yZXBsYWNlKHJlcGxhY2VtZW50UmVnZXhwLCAoc3RyaW5nKSA9PiB7IHJldHVybiByZXBsYWNlbWVudHNbc3RyaW5nXS5zb3VyY2U7IH0pO1xuICB9XG4gIGlubGluZUdyYW1tYXJbcnVsZV0ucmVnZXhwID0gbmV3IFJlZ0V4cChyZSwgaW5saW5lR3JhbW1hcltydWxlXS5yZWdleHAuZmxhZ3MpO1xufVxuXG4vLyBIVE1MIEJsb2NrIChvbmx5IG9wZW5pbmcgcnVsZSBpcyBwcm9jZXNzZWQgY3VycmVudGx5KVxuZm9yIChsZXQgcnVsZSBvZiBodG1sQmxvY2tHcmFtbWFyKSB7XG4gIGxldCByZSA9IHJ1bGUuc3RhcnQuc291cmNlO1xuICAvLyBSZXBsYWNlIHdoaWxlIHRoZXJlIGlzIHNvbWV0aGluZyB0byByZXBsYWNlLiBUaGlzIG1lYW5zIGl0IGFsc28gd29ya3Mgb3ZlciBtdWx0aXBsZSBsZXZlbHMgKHJlcGxhY2VtZW50cyBjb250YWluaW5nIHJlcGxhY2VtZW50cylcbiAgd2hpbGUgKHJlLm1hdGNoKHJlcGxhY2VtZW50UmVnZXhwKSkge1xuICAgIHJlID0gcmUucmVwbGFjZShyZXBsYWNlbWVudFJlZ2V4cCwgKHN0cmluZykgPT4geyByZXR1cm4gcmVwbGFjZW1lbnRzW3N0cmluZ10uc291cmNlOyB9KTtcbiAgfVxuICBydWxlLnN0YXJ0ID0gbmV3IFJlZ0V4cChyZSwgcnVsZS5zdGFydC5mbGFncyk7XG59XG5cbi8qKlxuICogRXNjYXBlcyBIVE1MIHNwZWNpYWwgY2hhcmFjdGVycyAoPCwgPiwgYW5kICYpIGluIHRoZSBzdHJpbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSByYXcgc3RyaW5nIHRvIGJlIGVzY2FwZWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBzdHJpbmcsIHJlYWR5IHRvIGJlIHVzZWQgaW4gSFRNTFxuICovXG5mdW5jdGlvbiBodG1sZXNjYXBlKHN0cmluZykge1xuICByZXR1cm4gKHN0cmluZyA/IHN0cmluZyA6ICcnKVxuICAgIC5yZXBsYWNlKC8mL2csICcmYW1wOycpXG4gICAgLnJlcGxhY2UoLzwvZywgJyZsdDsnKVxuICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7Jyk7XG59XG4vKipcbiAqIENvbnRhaW5zIHRoZSBjb21tYW5kcyB0aGF0IGNhbiBiZSBzZW50IHRvIHRoZSBlZGl0b3IuIENvbnRhaW5zIG9iamVjdHMgd2l0aCBhIG5hbWUgcmVwcmVzZW50aW5nIHRoZSBuYW1lIG9mIHRoZSBjb21tYW5kLlxuICogRWFjaCBvZiB0aGUgb2JqZWN0cyBjb250YWlucyB0aGUgZm9sbG93aW5nIGtleXM6XG4gKiBcbiAqICAgLSB0eXBlOiBDYW4gYmUgZWl0aGVyIGlubGluZSAoZm9yIGlubGluZSBmb3JtYXR0aW5nKSBvciBsaW5lIChmb3IgYmxvY2sgLyBsaW5lIGZvcm1hdHRpbmcpLlxuICogICAtIGNsYXNzTmFtZTogVXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgY29tbWFuZCBpcyBhY3RpdmUgYXQgYSBnaXZlbiBwb3NpdGlvbi4gXG4gKiAgICAgRm9yIGxpbmUgZm9ybWF0dGluZywgdGhpcyBsb29rcyBhdCB0aGUgY2xhc3Mgb2YgdGhlIGxpbmUgZWxlbWVudC4gRm9yIGlubGluZSBlbGVtZW50cywgdHJpZXMgdG8gZmluZCBhbiBlbmNsb3NpbmcgZWxlbWVudCB3aXRoIHRoYXQgY2xhc3MuXG4gKiAgIC0gc2V0IC8gdW5zZXQ6IENvbnRhaW4gaW5zdHJ1Y3Rpb25zIGhvdyB0byBzZXQgYW5kIHVuc2V0IHRoZSBjb21tYW5kLiBGb3IgbGluZSB0eXBlIGNvbW1hbmRzLCBib3RoIGNvbnNpc3Qgb2YgYSBwYXR0ZXJuIGFuZCByZXBsYWNlbWVudCB0aGF0IFxuICogICAgIHdpbGwgYmUgYXBwbGllZCB0byBlYWNoIGxpbmUgKHVzaW5nIFN0cmluZy5yZXBsYWNlKS4gRm9yIGlubGluZSB0eXBlIGNvbW1hbmRzLCB0aGUgc2V0IG9iamVjdCBjb250YWlucyBhIHByZSBhbmQgcG9zdCBzdHJpbmcgd2hpY2ggd2lsbFxuICogICAgIGJlIGluc2VydGVkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHNlbGVjdGlvbi4gVGhlIHVuc2V0IG9iamVjdCBjb250YWlucyBhIHByZVBhdHRlcm4gYW5kIGEgcG9zdFBhdHRlcm4uIEJvdGggc2hvdWxkIGJlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgYW5kIFxuICogICAgIHRoZXkgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBwb3J0aW9uIG9mIHRoZSBsaW5lIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHNlbGVjdGlvbiAodXNpbmcgU3RyaW5nLnJlcGxhY2UsIHdpdGggYW4gZW1wdHkgcmVwbGFjZW1lbnQgc3RyaW5nKS5cbiAqL1xuY29uc3QgY29tbWFuZHMgPSB7XG4gIC8vIFJlcGxhY2VtZW50cyBmb3IgdW5zZXQgZm9yIGlubGluZSBjb21tYW5kcyBhcmUgJycgYnkgZGVmYXVsdFxuICBib2xkOiB7XG4gICAgdHlwZTogJ2lubGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNU3Ryb25nJywgXG4gICAgc2V0OiB7cHJlOiAnKionLCBwb3N0OiAnKionfSwgXG4gICAgdW5zZXQ6IHtwcmVQYXR0ZXJuOiAvKD86XFwqXFwqfF9fKSQvLCBwb3N0UGF0dGVybjogL14oPzpcXCpcXCp8X18pL31cbiAgfSwgXG4gIGl0YWxpYzoge1xuICAgIHR5cGU6ICdpbmxpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUVtJywgXG4gICAgc2V0OiB7cHJlOiAnKicsIHBvc3Q6ICcqJ30sIFxuICAgIHVuc2V0OiB7cHJlUGF0dGVybjogLyg/OlxcKnxfKSQvLCBwb3N0UGF0dGVybjogL14oPzpcXCp8XykvfVxuICB9LFxuICBjb2RlOiB7XG4gICAgdHlwZTogJ2lubGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNQ29kZScsIFxuICAgIHNldDoge3ByZTogJ2AnLCBwb3N0OiAnYCd9LCBcbiAgICB1bnNldDoge3ByZVBhdHRlcm46IC9gKyQvLCBwb3N0UGF0dGVybjogL15gKy99IC8vIEZJWE1FIHRoaXMgZG9lc24ndCBlbnN1cmUgYmFsYW5jZWQgYmFja3RpY2tzIHJpZ2h0IG5vd1xuICB9LCBcbiAgc3RyaWtldGhyb3VnaDoge1xuICAgIHR5cGU6ICdpbmxpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTVN0cmlrZXRocm91Z2gnLCBcbiAgICBzZXQ6IHtwcmU6ICd+ficsIHBvc3Q6ICd+fid9LCBcbiAgICB1bnNldDoge3ByZVBhdHRlcm46L35+JC8sIHBvc3RQYXR0ZXJuOiAvXn5+LyB9XG4gIH0sXG4gIGgxOiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUgxJywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICcjICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9I1xccyspKC4qPykoKD86XFxzKyMrXFxzKik/KSQvLCByZXBsYWNlbWVudDogJyQyJ31cbiAgfSxcbiAgaDI6IHtcbiAgICB0eXBlOiAnbGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNSDInLCBcbiAgICBzZXQ6IHtwYXR0ZXJuOiAvXiggezAsM30oPzooPzojK3xbMC05XXsxLDl9WykuXXxbPlxcLSorXSlcXHMrKT8pKC4qKSQvLCByZXBsYWNlbWVudDogJyMjICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9IyNcXHMrKSguKj8pKCg/OlxccysjK1xccyopPykkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIGgzOiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUgzJywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICcjIyMgJDInfSwgXG4gICAgdW5zZXQ6IHtwYXR0ZXJuOiAvXiggezAsM30jIyNcXHMrKSguKj8pKCg/OlxccysjK1xccyopPykkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIGg0OiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUg0JywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICcjIyMjICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9IyMjI1xccyspKC4qPykoKD86XFxzKyMrXFxzKik/KSQvLCByZXBsYWNlbWVudDogJyQyJ31cbiAgfSxcbiAgaDU6IHtcbiAgICB0eXBlOiAnbGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNSDUnLCBcbiAgICBzZXQ6IHtwYXR0ZXJuOiAvXiggezAsM30oPzooPzojK3xbMC05XXsxLDl9WykuXXxbPlxcLSorXSlcXHMrKT8pKC4qKSQvLCByZXBsYWNlbWVudDogJyMjIyMjICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9IyMjIyNcXHMrKSguKj8pKCg/OlxccysjK1xccyopPykkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIGg2OiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUg2JywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICcjIyMjIyMgJDInfSwgXG4gICAgdW5zZXQ6IHtwYXR0ZXJuOiAvXiggezAsM30jIyMjIyNcXHMrKSguKj8pKCg/OlxccysjK1xccyopPykkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIHVsOiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTVVMJywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICctICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9WysqLV0gezEsNH0pKC4qKSQvLCByZXBsYWNlbWVudDogJyQyJ31cbiAgfSxcbiAgb2w6IHtcbiAgICB0eXBlOiAnbGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNT0wnLCBcbiAgICBzZXQ6IHtwYXR0ZXJuOiAvXiggezAsM30oPzooPzojK3xbMC05XXsxLDl9WykuXXxbPlxcLSorXSlcXHMrKT8pKC4qKSQvLCByZXBsYWNlbWVudDogJyQjLiAkMid9LCBcbiAgICB1bnNldDoge3BhdHRlcm46IC9eKCB7MCwzfVxcZHsxLDl9Wy4pXSB7MSw0fSkoLiopJC8sIHJlcGxhY2VtZW50OiAnJDInfVxuICB9LCBcbiAgYmxvY2txdW90ZToge1xuICAgIHR5cGU6ICdsaW5lJywgXG4gICAgY2xhc3NOYW1lOiAnVE1CbG9ja3F1b3RlJywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICc+ICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9PlsgXT8pKC4qKSQvLCByZXBsYWNlbWVudDogJyQyJ31cbiAgfSxcbn07XG5cbmV4cG9ydCB7IGxpbmVHcmFtbWFyLCBpbmxpbmVHcmFtbWFyLCBwdW5jdHVhdGlvbkxlYWRpbmcsIHB1bmN0dWF0aW9uVHJhaWxpbmcsIGh0bWxlc2NhcGUsIGh0bWxCbG9ja0dyYW1tYXIsIGNvbW1hbmRzIH07IiwiaW1wb3J0IHtcbiAgaW5saW5lR3JhbW1hcixcbiAgbGluZUdyYW1tYXIsXG4gIHB1bmN0dWF0aW9uTGVhZGluZyxcbiAgcHVuY3R1YXRpb25UcmFpbGluZyxcbiAgaHRtbGVzY2FwZSxcbiAgaHRtbEJsb2NrR3JhbW1hcixcbiAgY29tbWFuZHMsXG59IGZyb20gXCIuL2dyYW1tYXJcIjtcblxuY2xhc3MgRWRpdG9yIHtcbiAgY29uc3RydWN0b3IocHJvcHMgPSB7fSkge1xuICAgIHRoaXMuZSA9IG51bGw7XG4gICAgdGhpcy50ZXh0YXJlYSA9IG51bGw7XG4gICAgdGhpcy5saW5lcyA9IFtdO1xuICAgIHRoaXMubGluZUVsZW1lbnRzID0gW107XG4gICAgdGhpcy5saW5lVHlwZXMgPSBbXTtcbiAgICB0aGlzLmxpbmVDYXB0dXJlcyA9IFtdO1xuICAgIHRoaXMubGluZVJlcGxhY2VtZW50cyA9IFtdO1xuICAgIHRoaXMubGlua0xhYmVscyA9IFtdO1xuICAgIHRoaXMubGluZURpcnR5ID0gW107XG4gICAgdGhpcy5sYXN0Q29tbWFuZFN0YXRlID0gbnVsbDtcblxuICAgIHRoaXMubGlzdGVuZXJzID0ge1xuICAgICAgY2hhbmdlOiBbXSxcbiAgICAgIHNlbGVjdGlvbjogW10sXG4gICAgfTtcblxuICAgIGxldCBlbGVtZW50ID0gcHJvcHMuZWxlbWVudDtcbiAgICB0aGlzLnRleHRhcmVhID0gcHJvcHMudGV4dGFyZWE7XG5cbiAgICBpZiAodGhpcy50ZXh0YXJlYSkge1xuICAgICAgaWYgKCF0aGlzLnRleHRhcmVhLnRhZ05hbWUpIHtcbiAgICAgICAgdGhpcy50ZXh0YXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMudGV4dGFyZWEpO1xuICAgICAgfVxuICAgICAgaWYgKCFlbGVtZW50KSBlbGVtZW50ID0gdGhpcy50ZXh0YXJlYTtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudCAmJiAhZWxlbWVudC50YWdOYW1lKSB7XG4gICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJvcHMuZWxlbWVudCk7XG4gICAgfVxuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYm9keVwiKVswXTtcbiAgICB9XG4gICAgaWYgKGVsZW1lbnQudGFnTmFtZSA9PSBcIlRFWFRBUkVBXCIpIHtcbiAgICAgIHRoaXMudGV4dGFyZWEgPSBlbGVtZW50O1xuICAgICAgZWxlbWVudCA9IHRoaXMudGV4dGFyZWEucGFyZW50Tm9kZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50ZXh0YXJlYSkge1xuICAgICAgdGhpcy50ZXh0YXJlYS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gICAgfVxuXG4gICAgdGhpcy5jcmVhdGVFZGl0b3JFbGVtZW50KGVsZW1lbnQpO1xuICAgIC8vIFRPRE8gUGxhY2Vob2xkZXIgZm9yIGVtcHR5IGNvbnRlbnRcbiAgICB0aGlzLnNldENvbnRlbnQoXG4gICAgICBwcm9wcy5jb250ZW50IHx8XG4gICAgICAgICh0aGlzLnRleHRhcmVhXG4gICAgICAgICAgPyB0aGlzLnRleHRhcmVhLnZhbHVlXG4gICAgICAgICAgOiBcIiMgSGVsbG8gVGlueU1ERSFcXG5FZGl0ICoqaGVyZSoqXCIpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBlZGl0b3IgZWxlbWVudCBpbnNpZGUgdGhlIHRhcmdldCBlbGVtZW50IG9mIHRoZSBET00gdHJlZVxuICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgdGFyZ2V0IGVsZW1lbnQgb2YgdGhlIERPTSB0cmVlXG4gICAqL1xuICBjcmVhdGVFZGl0b3JFbGVtZW50KGVsZW1lbnQpIHtcbiAgICB0aGlzLmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIHRoaXMuZS5jbGFzc05hbWUgPSBcIlRpbnlNREVcIjtcbiAgICB0aGlzLmUuY29udGVudEVkaXRhYmxlID0gdHJ1ZTtcbiAgICAvLyBUaGUgZm9sbG93aW5nIGlzIGltcG9ydGFudCBmb3IgZm9ybWF0dGluZyBwdXJwb3NlcywgYnV0IGFsc28gc2luY2Ugb3RoZXJ3aXNlIHRoZSBicm93c2VyIHJlcGxhY2VzIHN1YnNlcXVlbnQgc3BhY2VzIHdpdGggICZuYnNwOyAmbmJzcDtcbiAgICAvLyBUaGF0IGJyZWFrcyBhIGxvdCBvZiBzdHVmZiwgc28gd2UgZG8gdGhpcyBoZXJlIGFuZCBub3QgaW4gQ1NT4oCUdGhlcmVmb3JlLCB5b3UgZG9uJ3QgaGF2ZSB0byByZW1lbWJlciB0byBwdXQgdGhpcyBpbiB0aGUgQ1NTIGZpbGVcbiAgICB0aGlzLmUuc3R5bGUud2hpdGVTcGFjZSA9IFwicHJlLXdyYXBcIjtcbiAgICAvLyBBdm9pZCBmb3JtYXR0aW5nIChCIC8gSSAvIFUpIHBvcHBpbmcgdXAgb24gaU9TXG4gICAgdGhpcy5lLnN0eWxlLndlYmtpdFVzZXJNb2RpZnkgPSBcInJlYWQtd3JpdGUtcGxhaW50ZXh0LW9ubHlcIjtcbiAgICBpZiAoXG4gICAgICB0aGlzLnRleHRhcmVhICYmXG4gICAgICB0aGlzLnRleHRhcmVhLnBhcmVudE5vZGUgPT0gZWxlbWVudCAmJlxuICAgICAgdGhpcy50ZXh0YXJlYS5uZXh0U2libGluZ1xuICAgICkge1xuICAgICAgZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5lLCB0aGlzLnRleHRhcmVhLm5leHRTaWJsaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmUpO1xuICAgIH1cblxuICAgIHRoaXMuZS5hZGRFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgKGUpID0+IHRoaXMuaGFuZGxlSW5wdXRFdmVudChlKSk7XG4gICAgdGhpcy5lLmFkZEV2ZW50TGlzdGVuZXIoXCJjb21wb3NpdGlvbmVuZFwiLCAoZSkgPT4gdGhpcy5oYW5kbGVJbnB1dEV2ZW50KGUpKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwic2VsZWN0aW9uY2hhbmdlXCIsIChlKSA9PlxuICAgICAgdGhpcy5oYW5kbGVTZWxlY3Rpb25DaGFuZ2VFdmVudChlKVxuICAgICk7XG4gICAgdGhpcy5lLmFkZEV2ZW50TGlzdGVuZXIoXCJwYXN0ZVwiLCAoZSkgPT4gdGhpcy5oYW5kbGVQYXN0ZShlKSk7XG4gICAgdGhpcy5saW5lRWxlbWVudHMgPSB0aGlzLmUuY2hpbGROb2RlczsgLy8gdGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgdXBkYXRlXG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZWRpdG9yIGNvbnRlbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IFRoZSBuZXcgTWFya2Rvd24gY29udGVudFxuICAgKi9cbiAgc2V0Q29udGVudChjb250ZW50KSB7XG4gICAgLy8gRGVsZXRlIGFueSBleGlzdGluZyBjb250ZW50XG4gICAgd2hpbGUgKHRoaXMuZS5maXJzdENoaWxkKSB7XG4gICAgICB0aGlzLmUucmVtb3ZlQ2hpbGQodGhpcy5lLmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgICB0aGlzLmxpbmVzID0gY29udGVudC5zcGxpdCgvKD86XFxyXFxufFxccnxcXG4pLyk7XG4gICAgdGhpcy5saW5lRGlydHkgPSBbXTtcbiAgICBmb3IgKGxldCBsaW5lTnVtID0gMDsgbGluZU51bSA8IHRoaXMubGluZXMubGVuZ3RoOyBsaW5lTnVtKyspIHtcbiAgICAgIGxldCBsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICB0aGlzLmUuYXBwZW5kQ2hpbGQobGUpO1xuICAgICAgdGhpcy5saW5lRGlydHkucHVzaCh0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5saW5lVHlwZXMgPSBuZXcgQXJyYXkodGhpcy5saW5lcy5sZW5ndGgpO1xuICAgIHRoaXMudXBkYXRlRm9ybWF0dGluZygpO1xuICAgIHRoaXMuZmlyZUNoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGVkaXRvciBjb250ZW50IGFzIGEgTWFya2Rvd24gc3RyaW5nLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZWRpdG9yIGNvbnRlbnQgYXMgYSBtYXJrZG93biBzdHJpbmdcbiAgICovXG4gIGdldENvbnRlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMubGluZXMuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIHRoZSBtYWluIG1ldGhvZCB0byB1cGRhdGUgdGhlIGZvcm1hdHRpbmcgKGZyb20gdGhpcy5saW5lcyB0byBIVE1MIG91dHB1dClcbiAgICovXG4gIHVwZGF0ZUZvcm1hdHRpbmcoKSB7XG4gICAgLy8gRmlyc3QsIHBhcnNlIGxpbmUgdHlwZXMuIFRoaXMgd2lsbCB1cGRhdGUgdGhpcy5saW5lVHlwZXMsIHRoaXMubGluZVJlcGxhY2VtZW50cywgYW5kIHRoaXMubGluZUNhcHR1cmVzXG4gICAgLy8gV2UgZG9uJ3QgYXBwbHkgdGhlIGZvcm1hdHRpbmcgeWV0XG4gICAgdGhpcy51cGRhdGVMaW5lVHlwZXMoKTtcbiAgICAvLyBDb2xsZWN0IGFueSB2YWxpZCBsaW5rIGxhYmVscyBmcm9tIGxpbmsgcmVmZXJlbmNlIGRlZmluaXRpb25z4oCUd2UgbmVlZCB0aGF0IGZvciBmb3JtYXR0aW5nIHRvIGRldGVybWluZSB3aGF0J3MgYSB2YWxpZCBsaW5rXG4gICAgdGhpcy51cGRhdGVMaW5rTGFiZWxzKCk7XG4gICAgLy8gTm93LCBhcHBseSB0aGUgZm9ybWF0dGluZ1xuICAgIHRoaXMuYXBwbHlMaW5lVHlwZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoaXMubGlua0xhYmVsczogRm9yIGV2ZXJ5IGxpbmsgcmVmZXJlbmNlIGRlZmluaXRpb24gKGxpbmUgdHlwZSBUTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uKSwgd2UgY29sbGVjdCB0aGUgbGFiZWxcbiAgICovXG4gIHVwZGF0ZUxpbmtMYWJlbHMoKSB7XG4gICAgdGhpcy5saW5rTGFiZWxzID0gW107XG4gICAgZm9yIChsZXQgbCA9IDA7IGwgPCB0aGlzLmxpbmVzLmxlbmd0aDsgbCsrKSB7XG4gICAgICBpZiAodGhpcy5saW5lVHlwZXNbbF0gPT0gXCJUTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uXCIpIHtcbiAgICAgICAgdGhpcy5saW5rTGFiZWxzLnB1c2goXG4gICAgICAgICAgdGhpcy5saW5lQ2FwdHVyZXNbbF1bXG4gICAgICAgICAgICBsaW5lR3JhbW1hci5UTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uLmxhYmVsUGxhY2Vob2xkZXJcbiAgICAgICAgICBdXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBmdW5jdGlvbiB0byByZXBsYWNlIHBsYWNlaG9sZGVycyBmcm9tIGEgUmVnRXhwIGNhcHR1cmUuIFRoZSByZXBsYWNlbWVudCBzdHJpbmcgY2FuIGNvbnRhaW4gcmVndWxhciBkb2xsYXIgcGxhY2Vob2xkZXJzIChlLmcuLCAkMSksXG4gICAqIHdoaWNoIGFyZSBpbnRlcnByZXRlZCBsaWtlIGluIFN0cmluZy5yZXBsYWNlKCksIGJ1dCBhbHNvIGRvdWJsZSBkb2xsYXIgcGxhY2Vob2xkZXJzICgkJDEpLiBJbiB0aGUgY2FzZSBvZiBkb3VibGUgZG9sbGFyIHBsYWNlaG9sZGVycyxcbiAgICogTWFya2Rvd24gaW5saW5lIGdyYW1tYXIgaXMgYXBwbGllZCBvbiB0aGUgY29udGVudCBvZiB0aGUgY2FwdHVyZWQgc3ViZ3JvdXAsIGkuZS4sICQkMSBwcm9jZXNzZXMgaW5saW5lIE1hcmtkb3duIGdyYW1tYXIgaW4gdGhlIGNvbnRlbnQgb2YgdGhlXG4gICAqIGZpcnN0IGNhcHR1cmVkIHN1Ymdyb3VwLCBhbmQgcmVwbGFjZXMgYCQkMWAgd2l0aCB0aGUgcmVzdWx0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVwbGFjZW1lbnQgVGhlIHJlcGxhY2VtZW50IHN0cmluZywgaW5jbHVkaW5nIHBsYWNlaG9sZGVycy5cbiAgICogQHBhcmFtICBjYXB0dXJlIFRoZSByZXN1bHQgb2YgYSBSZWdFeHAuZXhlYygpIGNhbGxcbiAgICogQHJldHVybnMgVGhlIHJlcGxhY2VtZW50IHN0cmluZywgd2l0aCBwbGFjZWhvbGRlcnMgcmVwbGFjZWQgZnJvbSB0aGUgY2FwdHVyZSByZXN1bHQuXG4gICAqL1xuICByZXBsYWNlKHJlcGxhY2VtZW50LCBjYXB0dXJlKSB7XG4gICAgcmV0dXJuIHJlcGxhY2VtZW50LnJlcGxhY2UoLyhcXCR7MSwyfSkoWzAtOV0pL2csIChzdHIsIHAxLCBwMikgPT4ge1xuICAgICAgaWYgKHAxID09IFwiJFwiKSByZXR1cm4gaHRtbGVzY2FwZShjYXB0dXJlW3AyXSk7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJUTUlubGluZUZvcm1hdHRlZFwiPiR7dGhpcy5wcm9jZXNzSW5saW5lU3R5bGVzKFxuICAgICAgICAgIGNhcHR1cmVbcDJdXG4gICAgICAgICl9PC9zcGFuPmA7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyB0aGUgbGluZSB0eXBlcyAoZnJvbSB0aGlzLmxpbmVUeXBlcyBhcyB3ZWxsIGFzIHRoZSBjYXB0dXJlIHJlc3VsdCBpbiB0aGlzLmxpbmVSZXBsYWNlbWVudHMgYW5kIHRoaXMubGluZUNhcHR1cmVzKVxuICAgKiBhbmQgcHJvY2Vzc2VzIGlubGluZSBmb3JtYXR0aW5nIGZvciBhbGwgbGluZXMuXG4gICAqL1xuICBhcHBseUxpbmVUeXBlcygpIHtcbiAgICBmb3IgKGxldCBsaW5lTnVtID0gMDsgbGluZU51bSA8IHRoaXMubGluZXMubGVuZ3RoOyBsaW5lTnVtKyspIHtcbiAgICAgIGlmICh0aGlzLmxpbmVEaXJ0eVtsaW5lTnVtXSkge1xuICAgICAgICBsZXQgY29udGVudEhUTUwgPSB0aGlzLnJlcGxhY2UoXG4gICAgICAgICAgdGhpcy5saW5lUmVwbGFjZW1lbnRzW2xpbmVOdW1dLFxuICAgICAgICAgIHRoaXMubGluZUNhcHR1cmVzW2xpbmVOdW1dXG4gICAgICAgICk7XG4gICAgICAgIC8vIHRoaXMubGluZUhUTUxbbGluZU51bV0gPSAoY29udGVudEhUTUwgPT0gJycgPyAnPGJyIC8+JyA6IGNvbnRlbnRIVE1MKTsgLy8gUHJldmVudCBlbXB0eSBlbGVtZW50cyB3aGljaCBjYW4ndCBiZSBzZWxlY3RlZCBldGMuXG4gICAgICAgIHRoaXMubGluZUVsZW1lbnRzW2xpbmVOdW1dLmNsYXNzTmFtZSA9IHRoaXMubGluZVR5cGVzW2xpbmVOdW1dO1xuICAgICAgICB0aGlzLmxpbmVFbGVtZW50c1tsaW5lTnVtXS5yZW1vdmVBdHRyaWJ1dGUoXCJzdHlsZVwiKTtcbiAgICAgICAgdGhpcy5saW5lRWxlbWVudHNbbGluZU51bV0uaW5uZXJIVE1MID1cbiAgICAgICAgICBjb250ZW50SFRNTCA9PSBcIlwiID8gXCI8YnIgLz5cIiA6IGNvbnRlbnRIVE1MOyAvLyBQcmV2ZW50IGVtcHR5IGVsZW1lbnRzIHdoaWNoIGNhbid0IGJlIHNlbGVjdGVkIGV0Yy5cbiAgICAgIH1cbiAgICAgIHRoaXMubGluZUVsZW1lbnRzW2xpbmVOdW1dLmRhdGFzZXQubGluZU51bSA9IGxpbmVOdW07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgbGluZSB0eXBlcyBmb3IgYWxsIGxpbmVzIGJhc2VkIG9uIHRoZSBsaW5lIC8gYmxvY2sgZ3JhbW1hci4gQ2FwdHVyZXMgdGhlIHJlc3VsdHMgb2YgdGhlIHJlc3BlY3RpdmUgbGluZVxuICAgKiBncmFtbWFyIHJlZ3VsYXIgZXhwcmVzc2lvbnMuXG4gICAqIFVwZGF0ZXMgdGhpcy5saW5lVHlwZXMsIHRoaXMubGluZUNhcHR1cmVzLCBhbmQgdGhpcy5saW5lUmVwbGFjZW1lbnRzLlxuICAgKi9cbiAgdXBkYXRlTGluZVR5cGVzKCkge1xuICAgIGxldCBjb2RlQmxvY2tUeXBlID0gZmFsc2U7XG4gICAgbGV0IGNvZGVCbG9ja1NlcUxlbmd0aCA9IDA7XG4gICAgbGV0IGh0bWxCbG9jayA9IGZhbHNlO1xuXG4gICAgZm9yIChsZXQgbGluZU51bSA9IDA7IGxpbmVOdW0gPCB0aGlzLmxpbmVzLmxlbmd0aDsgbGluZU51bSsrKSB7XG4gICAgICBsZXQgbGluZVR5cGUgPSBcIlRNUGFyYVwiO1xuICAgICAgbGV0IGxpbmVDYXB0dXJlID0gW3RoaXMubGluZXNbbGluZU51bV1dO1xuICAgICAgbGV0IGxpbmVSZXBsYWNlbWVudCA9IFwiJCQwXCI7IC8vIERlZmF1bHQgcmVwbGFjZW1lbnQgZm9yIHBhcmFncmFwaDogSW5saW5lIGZvcm1hdCB0aGUgZW50aXJlIGxpbmVcblxuICAgICAgLy8gQ2hlY2sgb25nb2luZyBjb2RlIGJsb2Nrc1xuICAgICAgLy8gaWYgKGxpbmVOdW0gPiAwICYmICh0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gJ1RNQ29kZUZlbmNlQmFja3RpY2tPcGVuJyB8fCB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gJ1RNRmVuY2VkQ29kZUJhY2t0aWNrJykpIHtcbiAgICAgIGlmIChjb2RlQmxvY2tUeXBlID09IFwiVE1Db2RlRmVuY2VCYWNrdGlja09wZW5cIikge1xuICAgICAgICAvLyBXZSdyZSBpbiBhIGJhY2t0aWNrLWZlbmNlZCBjb2RlIGJsb2NrLCBjaGVjayBpZiB0aGUgY3VycmVudCBsaW5lIGNsb3NlcyBpdFxuICAgICAgICBsZXQgY2FwdHVyZSA9IGxpbmVHcmFtbWFyLlRNQ29kZUZlbmNlQmFja3RpY2tDbG9zZS5yZWdleHAuZXhlYyhcbiAgICAgICAgICB0aGlzLmxpbmVzW2xpbmVOdW1dXG4gICAgICAgICk7XG4gICAgICAgIGlmIChjYXB0dXJlICYmIGNhcHR1cmUuZ3JvdXBzW1wic2VxXCJdLmxlbmd0aCA+PSBjb2RlQmxvY2tTZXFMZW5ndGgpIHtcbiAgICAgICAgICBsaW5lVHlwZSA9IFwiVE1Db2RlRmVuY2VCYWNrdGlja0Nsb3NlXCI7XG4gICAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gbGluZUdyYW1tYXIuVE1Db2RlRmVuY2VCYWNrdGlja0Nsb3NlLnJlcGxhY2VtZW50O1xuICAgICAgICAgIGxpbmVDYXB0dXJlID0gY2FwdHVyZTtcbiAgICAgICAgICBjb2RlQmxvY2tUeXBlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGluZVR5cGUgPSBcIlRNRmVuY2VkQ29kZUJhY2t0aWNrXCI7XG4gICAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gXCIkMFwiO1xuICAgICAgICAgIGxpbmVDYXB0dXJlID0gW3RoaXMubGluZXNbbGluZU51bV1dO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBpZiAobGluZU51bSA+IDAgJiYgKHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSAnVE1Db2RlRmVuY2VUaWxkZU9wZW4nIHx8IHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSAnVE1GZW5jZWRDb2RlVGlsZGUnKSkge1xuICAgICAgZWxzZSBpZiAoY29kZUJsb2NrVHlwZSA9PSBcIlRNQ29kZUZlbmNlVGlsZGVPcGVuXCIpIHtcbiAgICAgICAgLy8gV2UncmUgaW4gYSB0aWxkZS1mZW5jZWQgY29kZSBibG9ja1xuICAgICAgICBsZXQgY2FwdHVyZSA9IGxpbmVHcmFtbWFyLlRNQ29kZUZlbmNlVGlsZGVDbG9zZS5yZWdleHAuZXhlYyhcbiAgICAgICAgICB0aGlzLmxpbmVzW2xpbmVOdW1dXG4gICAgICAgICk7XG4gICAgICAgIGlmIChjYXB0dXJlICYmIGNhcHR1cmUuZ3JvdXBzW1wic2VxXCJdLmxlbmd0aCA+PSBjb2RlQmxvY2tTZXFMZW5ndGgpIHtcbiAgICAgICAgICBsaW5lVHlwZSA9IFwiVE1Db2RlRmVuY2VUaWxkZUNsb3NlXCI7XG4gICAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gbGluZUdyYW1tYXIuVE1Db2RlRmVuY2VUaWxkZUNsb3NlLnJlcGxhY2VtZW50O1xuICAgICAgICAgIGxpbmVDYXB0dXJlID0gY2FwdHVyZTtcbiAgICAgICAgICBjb2RlQmxvY2tUeXBlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGluZVR5cGUgPSBcIlRNRmVuY2VkQ29kZVRpbGRlXCI7XG4gICAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gXCIkMFwiO1xuICAgICAgICAgIGxpbmVDYXB0dXJlID0gW3RoaXMubGluZXNbbGluZU51bV1dO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIEhUTUwgYmxvY2sgdHlwZXNcbiAgICAgIGlmIChsaW5lVHlwZSA9PSBcIlRNUGFyYVwiICYmIGh0bWxCbG9jayA9PT0gZmFsc2UpIHtcbiAgICAgICAgZm9yIChsZXQgaHRtbEJsb2NrVHlwZSBvZiBodG1sQmxvY2tHcmFtbWFyKSB7XG4gICAgICAgICAgaWYgKHRoaXMubGluZXNbbGluZU51bV0ubWF0Y2goaHRtbEJsb2NrVHlwZS5zdGFydCkpIHtcbiAgICAgICAgICAgIC8vIE1hdGNoaW5nIHN0YXJ0IGNvbmRpdGlvbi4gQ2hlY2sgaWYgdGhpcyB0YWcgY2FuIHN0YXJ0IGhlcmUgKG5vdCBhbGwgc3RhcnQgY29uZGl0aW9ucyBhbGxvdyBicmVha2luZyBhIHBhcmFncmFwaCkuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGh0bWxCbG9ja1R5cGUucGFyYUludGVycnVwdCB8fFxuICAgICAgICAgICAgICBsaW5lTnVtID09IDAgfHxcbiAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gXCJUTVBhcmFcIiB8fFxuICAgICAgICAgICAgICAgIHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSBcIlRNVUxcIiB8fFxuICAgICAgICAgICAgICAgIHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSBcIlRNT0xcIiB8fFxuICAgICAgICAgICAgICAgIHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSBcIlRNQmxvY2txdW90ZVwiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBodG1sQmxvY2sgPSBodG1sQmxvY2tUeXBlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGh0bWxCbG9jayAhPT0gZmFsc2UpIHtcbiAgICAgICAgbGluZVR5cGUgPSBcIlRNSFRNTEJsb2NrXCI7XG4gICAgICAgIGxpbmVSZXBsYWNlbWVudCA9IFwiJDBcIjsgLy8gTm8gZm9ybWF0dGluZyBpbiBUTUhUTUxCbG9ja1xuICAgICAgICBsaW5lQ2FwdHVyZSA9IFt0aGlzLmxpbmVzW2xpbmVOdW1dXTsgLy8gVGhpcyBzaG91bGQgYWxyZWFkeSBiZSBzZXQgYnV0IGJldHRlciBzYWZlIHRoYW4gc29ycnlcblxuICAgICAgICAvLyBDaGVjayBpZiBIVE1MIGJsb2NrIHNob3VsZCBiZSBjbG9zZWRcbiAgICAgICAgaWYgKGh0bWxCbG9jay5lbmQpIHtcbiAgICAgICAgICAvLyBTcGVjaWZpYyBlbmQgY29uZGl0aW9uXG4gICAgICAgICAgaWYgKHRoaXMubGluZXNbbGluZU51bV0ubWF0Y2goaHRtbEJsb2NrLmVuZCkpIHtcbiAgICAgICAgICAgIGh0bWxCbG9jayA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBObyBzcGVjaWZpYyBlbmQgY29uZGl0aW9uLCBlbmRzIHdpdGggYmxhbmsgbGluZVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGxpbmVOdW0gPT0gdGhpcy5saW5lcy5sZW5ndGggLSAxIHx8XG4gICAgICAgICAgICB0aGlzLmxpbmVzW2xpbmVOdW0gKyAxXS5tYXRjaChsaW5lR3JhbW1hci5UTUJsYW5rTGluZS5yZWdleHApXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBodG1sQmxvY2sgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgYWxsIHJlZ2V4cHMgaWYgd2UgaGF2ZW4ndCBhcHBsaWVkIG9uZSBvZiB0aGUgY29kZSBibG9jayB0eXBlc1xuICAgICAgaWYgKGxpbmVUeXBlID09IFwiVE1QYXJhXCIpIHtcbiAgICAgICAgZm9yIChsZXQgdHlwZSBpbiBsaW5lR3JhbW1hcikge1xuICAgICAgICAgIGlmIChsaW5lR3JhbW1hclt0eXBlXS5yZWdleHApIHtcbiAgICAgICAgICAgIGxldCBjYXB0dXJlID0gbGluZUdyYW1tYXJbdHlwZV0ucmVnZXhwLmV4ZWModGhpcy5saW5lc1tsaW5lTnVtXSk7XG4gICAgICAgICAgICBpZiAoY2FwdHVyZSkge1xuICAgICAgICAgICAgICBsaW5lVHlwZSA9IHR5cGU7XG4gICAgICAgICAgICAgIGxpbmVSZXBsYWNlbWVudCA9IGxpbmVHcmFtbWFyW3R5cGVdLnJlcGxhY2VtZW50O1xuICAgICAgICAgICAgICBsaW5lQ2FwdHVyZSA9IGNhcHR1cmU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJZiB3ZSd2ZSBvcGVuZWQgYSBjb2RlIGJsb2NrLCByZW1lbWJlciB0aGF0XG4gICAgICBpZiAoXG4gICAgICAgIGxpbmVUeXBlID09IFwiVE1Db2RlRmVuY2VCYWNrdGlja09wZW5cIiB8fFxuICAgICAgICBsaW5lVHlwZSA9PSBcIlRNQ29kZUZlbmNlVGlsZGVPcGVuXCJcbiAgICAgICkge1xuICAgICAgICBjb2RlQmxvY2tUeXBlID0gbGluZVR5cGU7XG4gICAgICAgIGNvZGVCbG9ja1NlcUxlbmd0aCA9IGxpbmVDYXB0dXJlLmdyb3Vwc1tcInNlcVwiXS5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIC8vIExpbmsgcmVmZXJlbmNlIGRlZmluaXRpb24gYW5kIGluZGVudGVkIGNvZGUgY2FuJ3QgaW50ZXJydXB0IGEgcGFyYWdyYXBoXG4gICAgICBpZiAoXG4gICAgICAgIChsaW5lVHlwZSA9PSBcIlRNSW5kZW50ZWRDb2RlXCIgfHxcbiAgICAgICAgICBsaW5lVHlwZSA9PSBcIlRNTGlua1JlZmVyZW5jZURlZmluaXRpb25cIikgJiZcbiAgICAgICAgbGluZU51bSA+IDAgJiZcbiAgICAgICAgKHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSBcIlRNUGFyYVwiIHx8XG4gICAgICAgICAgdGhpcy5saW5lVHlwZXNbbGluZU51bSAtIDFdID09IFwiVE1VTFwiIHx8XG4gICAgICAgICAgdGhpcy5saW5lVHlwZXNbbGluZU51bSAtIDFdID09IFwiVE1PTFwiIHx8XG4gICAgICAgICAgdGhpcy5saW5lVHlwZXNbbGluZU51bSAtIDFdID09IFwiVE1CbG9ja3F1b3RlXCIpXG4gICAgICApIHtcbiAgICAgICAgLy8gRmFsbCBiYWNrIHRvIFRNUGFyYVxuICAgICAgICBsaW5lVHlwZSA9IFwiVE1QYXJhXCI7XG4gICAgICAgIGxpbmVDYXB0dXJlID0gW3RoaXMubGluZXNbbGluZU51bV1dO1xuICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSBcIiQkMFwiO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXRleHQgSDIgbWFya2VycyB0aGF0IGNhbiBhbHNvIGJlIGludGVycHJldGVkIGFzIGFuIGVtcHR5IGxpc3QgaXRlbSBzaG91bGQgYmUgcmVnYXJkZWQgYXMgc3VjaCAoYXMgcGVyIENvbW1vbk1hcmsgc3BlYylcbiAgICAgIGlmIChsaW5lVHlwZSA9PSBcIlRNU2V0ZXh0SDJNYXJrZXJcIikge1xuICAgICAgICBsZXQgY2FwdHVyZSA9IGxpbmVHcmFtbWFyLlRNVUwucmVnZXhwLmV4ZWModGhpcy5saW5lc1tsaW5lTnVtXSk7XG4gICAgICAgIGlmIChjYXB0dXJlKSB7XG4gICAgICAgICAgbGluZVR5cGUgPSBcIlRNVUxcIjtcbiAgICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSBsaW5lR3JhbW1hci5UTVVMLnJlcGxhY2VtZW50O1xuICAgICAgICAgIGxpbmVDYXB0dXJlID0gY2FwdHVyZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBTZXRleHQgaGVhZGluZ3MgYXJlIG9ubHkgdmFsaWQgaWYgcHJlY2VkZWQgYnkgYSBwYXJhZ3JhcGggKGFuZCBpZiBzbywgdGhleSBjaGFuZ2UgdGhlIHR5cGUgb2YgdGhlIHByZXZpb3VzIHBhcmFncmFwaClcbiAgICAgIGlmIChsaW5lVHlwZSA9PSBcIlRNU2V0ZXh0SDFNYXJrZXJcIiB8fCBsaW5lVHlwZSA9PSBcIlRNU2V0ZXh0SDJNYXJrZXJcIikge1xuICAgICAgICBpZiAobGluZU51bSA9PSAwIHx8IHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSAhPSBcIlRNUGFyYVwiKSB7XG4gICAgICAgICAgLy8gU2V0ZXh0IG1hcmtlciBpcyBpbnZhbGlkLiBIb3dldmVyLCBhIEgyIG1hcmtlciBtaWdodCBzdGlsbCBiZSBhIHZhbGlkIEhSLCBzbyBsZXQncyBjaGVjayB0aGF0XG4gICAgICAgICAgbGV0IGNhcHR1cmUgPSBsaW5lR3JhbW1hci5UTUhSLnJlZ2V4cC5leGVjKHRoaXMubGluZXNbbGluZU51bV0pO1xuICAgICAgICAgIGlmIChjYXB0dXJlKSB7XG4gICAgICAgICAgICAvLyBWYWxpZCBIUlxuICAgICAgICAgICAgbGluZVR5cGUgPSBcIlRNSFJcIjtcbiAgICAgICAgICAgIGxpbmVDYXB0dXJlID0gY2FwdHVyZTtcbiAgICAgICAgICAgIGxpbmVSZXBsYWNlbWVudCA9IGxpbmVHcmFtbWFyLlRNSFIucmVwbGFjZW1lbnQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE5vdCB2YWxpZCBIUiwgZm9ybWF0IGFzIFRNUGFyYVxuICAgICAgICAgICAgbGluZVR5cGUgPSBcIlRNUGFyYVwiO1xuICAgICAgICAgICAgbGluZUNhcHR1cmUgPSBbdGhpcy5saW5lc1tsaW5lTnVtXV07XG4gICAgICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSBcIiQkMFwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBWYWxpZCBzZXRleHQgbWFya2VyLiBDaGFuZ2UgdHlwZXMgb2YgcHJlY2VkaW5nIHBhcmEgbGluZXNcbiAgICAgICAgICBsZXQgaGVhZGluZ0xpbmUgPSBsaW5lTnVtIC0gMTtcbiAgICAgICAgICBjb25zdCBoZWFkaW5nTGluZVR5cGUgPVxuICAgICAgICAgICAgbGluZVR5cGUgPT0gXCJUTVNldGV4dEgxTWFya2VyXCIgPyBcIlRNU2V0ZXh0SDFcIiA6IFwiVE1TZXRleHRIMlwiO1xuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxpbmVUeXBlc1toZWFkaW5nTGluZVR5cGVdICE9IGhlYWRpbmdMaW5lVHlwZSkge1xuICAgICAgICAgICAgICB0aGlzLmxpbmVUeXBlc1toZWFkaW5nTGluZV0gPSBoZWFkaW5nTGluZVR5cGU7XG4gICAgICAgICAgICAgIHRoaXMubGluZURpcnR5W2hlYWRpbmdMaW5lVHlwZV0gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5saW5lUmVwbGFjZW1lbnRzW2hlYWRpbmdMaW5lXSA9IFwiJCQwXCI7XG4gICAgICAgICAgICB0aGlzLmxpbmVDYXB0dXJlc1toZWFkaW5nTGluZV0gPSBbdGhpcy5saW5lc1toZWFkaW5nTGluZV1dO1xuXG4gICAgICAgICAgICBoZWFkaW5nTGluZS0tO1xuICAgICAgICAgIH0gd2hpbGUgKGhlYWRpbmdMaW5lID49IDAgJiYgdGhpcy5saW5lVHlwZXNbaGVhZGluZ0xpbmVdID09IFwiVE1QYXJhXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBMYXN0bHksIHNhdmUgdGhlIGxpbmUgc3R5bGUgdG8gYmUgYXBwbGllZCBsYXRlclxuICAgICAgaWYgKHRoaXMubGluZVR5cGVzW2xpbmVOdW1dICE9IGxpbmVUeXBlKSB7XG4gICAgICAgIHRoaXMubGluZVR5cGVzW2xpbmVOdW1dID0gbGluZVR5cGU7XG4gICAgICAgIHRoaXMubGluZURpcnR5W2xpbmVOdW1dID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHRoaXMubGluZVJlcGxhY2VtZW50c1tsaW5lTnVtXSA9IGxpbmVSZXBsYWNlbWVudDtcbiAgICAgIHRoaXMubGluZUNhcHR1cmVzW2xpbmVOdW1dID0gbGluZUNhcHR1cmU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgYWxsIGxpbmUgY29udGVudHMgZnJvbSB0aGUgSFRNTCwgdGhlbiByZS1hcHBsaWVzIGZvcm1hdHRpbmcuXG4gICAqL1xuICB1cGRhdGVMaW5lQ29udGVudHNBbmRGb3JtYXR0aW5nKCkge1xuICAgIHRoaXMuY2xlYXJEaXJ0eUZsYWcoKTtcbiAgICB0aGlzLnVwZGF0ZUxpbmVDb250ZW50cygpO1xuICAgIHRoaXMudXBkYXRlRm9ybWF0dGluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGVtcHRzIHRvIHBhcnNlIGEgbGluayBvciBpbWFnZSBhdCB0aGUgY3VycmVudCBwb3NpdGlvbi4gVGhpcyBhc3N1bWVzIHRoYXQgdGhlIG9wZW5pbmcgWyBvciAhWyBoYXMgYWxyZWFkeSBiZWVuIG1hdGNoZWQuXG4gICAqIFJldHVybnMgZmFsc2UgaWYgdGhpcyBpcyBub3QgYSB2YWxpZCBsaW5rLCBpbWFnZS4gU2VlIGJlbG93IGZvciBtb3JlIGluZm9ybWF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW5hbFN0cmluZyBUaGUgb3JpZ2luYWwgc3RyaW5nLCBzdGFydGluZyBhdCB0aGUgb3BlbmluZyBtYXJrZXIgKFsgb3IgIVspXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNJbWFnZSBXaGV0aGVyIG9yIG5vdCB0aGlzIGlzIGFuIGltYWdlIChvcGVuZXIgPT0gIVspXG4gICAqIEByZXR1cm5zIGZhbHNlIGlmIG5vdCBhIHZhbGlkIGxpbmsgLyBpbWFnZS5cbiAgICogT3RoZXJ3aXNlIHJldHVybnMgYW4gb2JqZWN0IHdpdGggdHdvIHByb3BlcnRpZXM6IG91dHB1dCBpcyB0aGUgc3RyaW5nIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBwcm9jZXNzZWQgb3V0cHV0LFxuICAgKiBjaGFyQ291bnQgaXMgdGhlIG51bWJlciBvZiBpbnB1dCBjaGFyYWN0ZXJzIChmcm9tIG9yaWdpbmFsU3RyaW5nKSBjb25zdW1lZC5cbiAgICovXG4gIHBhcnNlTGlua09ySW1hZ2Uob3JpZ2luYWxTdHJpbmcsIGlzSW1hZ2UpIHtcbiAgICAvLyBTa2lwIHRoZSBvcGVuaW5nIGJyYWNrZXRcbiAgICBsZXQgdGV4dE9mZnNldCA9IGlzSW1hZ2UgPyAyIDogMTtcbiAgICBsZXQgb3BlbmVyID0gb3JpZ2luYWxTdHJpbmcuc3Vic3RyKDAsIHRleHRPZmZzZXQpO1xuICAgIGxldCB0eXBlID0gaXNJbWFnZSA/IFwiVE1JbWFnZVwiIDogXCJUTUxpbmtcIjtcbiAgICBsZXQgY3VycmVudE9mZnNldCA9IHRleHRPZmZzZXQ7XG5cbiAgICBsZXQgYnJhY2tldExldmVsID0gMTtcbiAgICBsZXQgbGlua1RleHQgPSBmYWxzZTtcbiAgICBsZXQgbGlua1JlZiA9IGZhbHNlO1xuICAgIGxldCBsaW5rTGFiZWwgPSBbXTtcbiAgICBsZXQgbGlua0RldGFpbHMgPSBbXTsgLy8gSWYgbWF0Y2hlZCwgdGhpcyB3aWxsIGJlIGFuIGFycmF5OiBbd2hpdGVzcGFjZSArIGxpbmsgZGVzdGluYXRpb24gZGVsaW1pdGVyLCBsaW5rIGRlc3RpbmF0aW9uLCBsaW5rIGRlc3RpbmF0aW9uIGRlbGltaXRlciwgd2hpdGVzcGFjZSwgbGluayB0aXRsZSBkZWxpbWl0ZXIsIGxpbmsgdGl0bGUsIGxpbmsgdGl0bGUgZGVsaW1pdGVyICsgd2hpdGVzcGFjZV0uIEFsbCBjYW4gYmUgZW1wdHkgc3RyaW5ncy5cblxuICAgIHRleHRPdXRlcjogd2hpbGUgKFxuICAgICAgY3VycmVudE9mZnNldCA8IG9yaWdpbmFsU3RyaW5nLmxlbmd0aCAmJlxuICAgICAgbGlua1RleHQgPT09IGZhbHNlIC8qIGVtcHR5IHN0cmluZyBpcyBva2F5ICovXG4gICAgKSB7XG4gICAgICBsZXQgc3RyaW5nID0gb3JpZ2luYWxTdHJpbmcuc3Vic3RyKGN1cnJlbnRPZmZzZXQpO1xuXG4gICAgICAvLyBDYXB0dXJlIGFueSBlc2NhcGVzIGFuZCBjb2RlIGJsb2NrcyBhdCBjdXJyZW50IHBvc2l0aW9uLCB0aGV5IGJpbmQgbW9yZSBzdHJvbmdseSB0aGFuIGxpbmtzXG4gICAgICAvLyBXZSBkb24ndCBoYXZlIHRvIGFjdHVhbGx5IHByb2Nlc3MgdGhlbSBoZXJlLCB0aGF0J2xsIGJlIGRvbmUgbGF0ZXIgaW4gY2FzZSB0aGUgbGluayAvIGltYWdlIGlzIHZhbGlkLCBidXQgd2UgbmVlZCB0byBza2lwIG92ZXIgdGhlbS5cbiAgICAgIGZvciAobGV0IHJ1bGUgb2YgW1wiZXNjYXBlXCIsIFwiY29kZVwiLCBcImF1dG9saW5rXCIsIFwiaHRtbFwiXSkge1xuICAgICAgICBsZXQgY2FwID0gaW5saW5lR3JhbW1hcltydWxlXS5yZWdleHAuZXhlYyhzdHJpbmcpO1xuICAgICAgICBpZiAoY2FwKSB7XG4gICAgICAgICAgY3VycmVudE9mZnNldCArPSBjYXBbMF0ubGVuZ3RoO1xuICAgICAgICAgIGNvbnRpbnVlIHRleHRPdXRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBmb3IgaW1hZ2UuIEl0J3Mgb2theSBmb3IgYW4gaW1hZ2UgdG8gYmUgaW5jbHVkZWQgaW4gYSBsaW5rIG9yIGltYWdlXG4gICAgICBpZiAoc3RyaW5nLm1hdGNoKGlubGluZUdyYW1tYXIuaW1hZ2VPcGVuLnJlZ2V4cCkpIHtcbiAgICAgICAgLy8gT3BlbmluZyBpbWFnZS4gSXQncyBva2F5IGlmIHRoaXMgaXMgYSBtYXRjaGluZyBwYWlyIG9mIGJyYWNrZXRzXG4gICAgICAgIGJyYWNrZXRMZXZlbCsrO1xuICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IDI7XG4gICAgICAgIGNvbnRpbnVlIHRleHRPdXRlcjtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgZm9yIGxpbmsgKG5vdCBhbiBpbWFnZSBiZWNhdXNlIHRoYXQgd291bGQgaGF2ZSBiZWVuIGNhcHR1cmVkIGFuZCBza2lwcGVkIG92ZXIgYWJvdmUpXG4gICAgICBpZiAoc3RyaW5nLm1hdGNoKGlubGluZUdyYW1tYXIubGlua09wZW4ucmVnZXhwKSkge1xuICAgICAgICAvLyBPcGVuaW5nIGJyYWNrZXQuIFR3byB0aGluZ3MgdG8gZG86XG4gICAgICAgIC8vIDEpIGl0J3Mgb2theSBpZiB0aGlzIHBhcnQgb2YgYSBwYWlyIG9mIGJyYWNrZXRzLlxuICAgICAgICAvLyAyKSBJZiB3ZSBhcmUgY3VycmVudGx5IHRyeWluZyB0byBwYXJzZSBhIGxpbmssIHRoaXMgbmVzdGVkIGJyYWNrZXQgbXVzbid0IHN0YXJ0IGEgdmFsaWQgbGluayAobm8gbmVzdGVkIGxpbmtzIGFsbG93ZWQpXG4gICAgICAgIGJyYWNrZXRMZXZlbCsrO1xuICAgICAgICAvLyBpZiAoYnJhY2tldExldmVsID49IDIpIHJldHVybiBmYWxzZTsgLy8gTmVzdGVkIHVuZXNjYXBlZCBicmFja2V0cywgdGhpcyBkb2Vzbid0IHF1YWxpZnkgYXMgYSBsaW5rIC8gaW1hZ2VcbiAgICAgICAgaWYgKCFpc0ltYWdlKSB7XG4gICAgICAgICAgaWYgKHRoaXMucGFyc2VMaW5rT3JJbWFnZShzdHJpbmcsIGZhbHNlKSkge1xuICAgICAgICAgICAgLy8gVmFsaWQgbGluayBpbnNpZGUgdGhpcyBwb3NzaWJsZSBsaW5rLCB3aGljaCBtYWtlcyB0aGlzIGxpbmsgaW52YWxpZCAoaW5uZXIgbGlua3MgYmVhdCBvdXRlciBvbmVzKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IDE7XG4gICAgICAgIGNvbnRpbnVlIHRleHRPdXRlcjtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgZm9yIGNsb3NpbmcgYnJhY2tldFxuICAgICAgaWYgKHN0cmluZy5tYXRjaCgvXlxcXS8pKSB7XG4gICAgICAgIGJyYWNrZXRMZXZlbC0tO1xuICAgICAgICBpZiAoYnJhY2tldExldmVsID09IDApIHtcbiAgICAgICAgICAvLyBGb3VuZCBtYXRjaGluZyBicmFja2V0IGFuZCBoYXZlbid0IGZvdW5kIGFueXRoaW5nIGRpc3F1YWxpZnlpbmcgdGhpcyBhcyBsaW5rIC8gaW1hZ2UuXG4gICAgICAgICAgbGlua1RleHQgPSBvcmlnaW5hbFN0cmluZy5zdWJzdHIoXG4gICAgICAgICAgICB0ZXh0T2Zmc2V0LFxuICAgICAgICAgICAgY3VycmVudE9mZnNldCAtIHRleHRPZmZzZXRcbiAgICAgICAgICApO1xuICAgICAgICAgIGN1cnJlbnRPZmZzZXQrKztcbiAgICAgICAgICBjb250aW51ZSB0ZXh0T3V0ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gTm90aGluZyBtYXRjaGVzLCBwcm9jZWVkIHRvIG5leHQgY2hhclxuICAgICAgY3VycmVudE9mZnNldCsrO1xuICAgIH1cblxuICAgIC8vIERpZCB3ZSBmaW5kIGEgbGluayB0ZXh0IChpLmUuLCBmaW5kIGEgbWF0Y2hpbmcgY2xvc2luZyBicmFja2V0PylcbiAgICBpZiAobGlua1RleHQgPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7IC8vIE5vcGVcblxuICAgIC8vIFNvIGZhciwgc28gZ29vZC4gV2UndmUgZ290IGEgdmFsaWQgbGluayB0ZXh0LiBMZXQncyBzZWUgd2hhdCB0eXBlIG9mIGxpbmsgdGhpcyBpc1xuICAgIGxldCBuZXh0Q2hhciA9XG4gICAgICBjdXJyZW50T2Zmc2V0IDwgb3JpZ2luYWxTdHJpbmcubGVuZ3RoXG4gICAgICAgID8gb3JpZ2luYWxTdHJpbmcuc3Vic3RyKGN1cnJlbnRPZmZzZXQsIDEpXG4gICAgICAgIDogXCJcIjtcblxuICAgIC8vIFJFRkVSRU5DRSBMSU5LU1xuICAgIGlmIChuZXh0Q2hhciA9PSBcIltcIikge1xuICAgICAgbGV0IHN0cmluZyA9IG9yaWdpbmFsU3RyaW5nLnN1YnN0cihjdXJyZW50T2Zmc2V0KTtcbiAgICAgIGxldCBjYXAgPSBpbmxpbmVHcmFtbWFyLmxpbmtMYWJlbC5yZWdleHAuZXhlYyhzdHJpbmcpO1xuICAgICAgaWYgKGNhcCkge1xuICAgICAgICAvLyBWYWxpZCBsaW5rIGxhYmVsXG4gICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gY2FwWzBdLmxlbmd0aDtcbiAgICAgICAgbGlua0xhYmVsLnB1c2goY2FwWzFdLCBjYXBbMl0sIGNhcFszXSk7XG4gICAgICAgIGlmIChjYXBbaW5saW5lR3JhbW1hci5saW5rTGFiZWwubGFiZWxQbGFjZWhvbGRlcl0pIHtcbiAgICAgICAgICAvLyBGdWxsIHJlZmVyZW5jZSBsaW5rXG4gICAgICAgICAgbGlua1JlZiA9IGNhcFtpbmxpbmVHcmFtbWFyLmxpbmtMYWJlbC5sYWJlbFBsYWNlaG9sZGVyXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBDb2xsYXBzZWQgcmVmZXJlbmNlIGxpbmtcbiAgICAgICAgICBsaW5rUmVmID0gbGlua1RleHQudHJpbSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBOb3QgYSB2YWxpZCBsaW5rIGxhYmVsXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5leHRDaGFyICE9IFwiKFwiKSB7XG4gICAgICAvLyBTaG9ydGN1dCByZWYgbGlua1xuICAgICAgbGlua1JlZiA9IGxpbmtUZXh0LnRyaW0oKTtcblxuICAgICAgLy8gSU5MSU5FIExJTktTXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG5leHRDaGFyID09ICcoJ1xuXG4gICAgICAvLyBQb3RlbnRpYWwgaW5saW5lIGxpbmtcbiAgICAgIGN1cnJlbnRPZmZzZXQrKztcblxuICAgICAgbGV0IHBhcmVudGhlc2lzTGV2ZWwgPSAxO1xuICAgICAgaW5saW5lT3V0ZXI6IHdoaWxlIChcbiAgICAgICAgY3VycmVudE9mZnNldCA8IG9yaWdpbmFsU3RyaW5nLmxlbmd0aCAmJlxuICAgICAgICBwYXJlbnRoZXNpc0xldmVsID4gMFxuICAgICAgKSB7XG4gICAgICAgIGxldCBzdHJpbmcgPSBvcmlnaW5hbFN0cmluZy5zdWJzdHIoY3VycmVudE9mZnNldCk7XG5cbiAgICAgICAgLy8gUHJvY2VzcyB3aGl0ZXNwYWNlXG4gICAgICAgIGxldCBjYXAgPSAvXlxccysvLmV4ZWMoc3RyaW5nKTtcbiAgICAgICAgaWYgKGNhcCkge1xuICAgICAgICAgIHN3aXRjaCAobGlua0RldGFpbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goY2FwWzBdKTtcbiAgICAgICAgICAgICAgYnJlYWs7IC8vIE9wZW5pbmcgd2hpdGVzcGFjZVxuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKGNhcFswXSk7XG4gICAgICAgICAgICAgIGJyZWFrOyAvLyBPcGVuIGRlc3RpbmF0aW9uLCBidXQgbm90IGEgZGVzdGluYXRpb24geWV0OyBkZXNpbmF0aW9uIG9wZW5lZCB3aXRoIDxcbiAgICAgICAgICAgIGNhc2UgMjogLy8gT3BlbiBkZXN0aW5hdGlvbiB3aXRoIGNvbnRlbnQgaW4gaXQuIFdoaXRlc3BhY2Ugb25seSBhbGxvd2VkIGlmIG9wZW5lZCBieSBhbmdsZSBicmFja2V0LCBvdGhlcndpc2UgdGhpcyBjbG9zZXMgdGhlIGRlc3RpbmF0aW9uXG4gICAgICAgICAgICAgIGlmIChsaW5rRGV0YWlsc1swXS5tYXRjaCgvPC8pKSB7XG4gICAgICAgICAgICAgICAgbGlua0RldGFpbHNbMV0gPSBsaW5rRGV0YWlsc1sxXS5jb25jYXQoY2FwWzBdKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAocGFyZW50aGVzaXNMZXZlbCAhPSAxKSByZXR1cm4gZmFsc2U7IC8vIFVuYmFsYW5jZWQgcGFyZW50aGVzaXNcbiAgICAgICAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKFwiXCIpOyAvLyBFbXB0eSBlbmQgZGVsaW1pdGVyIGZvciBkZXN0aW5hdGlvblxuICAgICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goY2FwWzBdKTsgLy8gV2hpdGVzcGFjZSBpbiBiZXR3ZWVuIGRlc3RpbmF0aW9uIGFuZCB0aXRsZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKGNhcFswXSk7XG4gICAgICAgICAgICAgIGJyZWFrOyAvLyBXaGl0ZXNwYWNlIGJldHdlZW4gZGVzdGluYXRpb24gYW5kIHRpdGxlXG4gICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIChubyBvcGVuZXIgZm9yIHRpdGxlIHlldCwgYnV0IG1vcmUgd2hpdGVzcGFjZSB0byBjYXB0dXJlKVxuICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKFwiXCIpOyAvLyBXaGl0ZXNwYWNlIGF0IGJlZ2lubmluZyBvZiB0aXRsZSwgcHVzaCBlbXB0eSB0aXRsZSBhbmQgY29udGludWVcbiAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHNbNV0gPSBsaW5rRGV0YWlsc1s1XS5jb25jYXQoY2FwWzBdKTtcbiAgICAgICAgICAgICAgYnJlYWs7IC8vIFdoaXRlc3BhY2UgaW4gdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHNbNl0gPSBsaW5rRGV0YWlsc1s2XS5jb25jYXQoY2FwWzBdKTtcbiAgICAgICAgICAgICAgYnJlYWs7IC8vIFdoaXRlc3BhY2UgYWZ0ZXIgY2xvc2luZyBkZWxpbWl0ZXJcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlXG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gY2FwWzBdLmxlbmd0aDtcbiAgICAgICAgICBjb250aW51ZSBpbmxpbmVPdXRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3MgYmFja3NsYXNoIGVzY2FwZXNcbiAgICAgICAgY2FwID0gaW5saW5lR3JhbW1hci5lc2NhcGUucmVnZXhwLmV4ZWMoc3RyaW5nKTtcbiAgICAgICAgaWYgKGNhcCkge1xuICAgICAgICAgIHN3aXRjaCAobGlua0RldGFpbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7IC8vIHRoaXMgb3BlbnMgdGhlIGxpbmsgZGVzdGluYXRpb24sIGFkZCBlbXB0eSBvcGVuaW5nIGRlbGltaXRlciBhbmQgcHJvY2VlZCB0byBuZXh0IGNhc2VcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChjYXBbMF0pO1xuICAgICAgICAgICAgICBicmVhazsgLy8gVGhpcyBvcGVucyB0aGUgbGluayBkZXN0aW5hdGlvbiwgYXBwZW5kIGl0XG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzWzFdID0gbGlua0RldGFpbHNbMV0uY29uY2F0KGNhcFswXSk7XG4gICAgICAgICAgICAgIGJyZWFrOyAvLyBQYXJ0IG9mIHRoZSBsaW5rIGRlc3RpbmF0aW9uXG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gTGFja2luZyBvcGVuaW5nIGRlbGltaXRlciBmb3IgbGluayB0aXRsZVxuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIExjYWtpbmcgb3BlbmluZyBkZWxpbWl0ZXIgZm9yIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIlwiKTsgLy8gVGhpcyBvcGVucyB0aGUgbGluayB0aXRsZVxuICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICBsaW5rRGV0YWlsc1s1XSA9IGxpbmtEZXRhaWxzWzVdLmNvbmNhdChjYXBbMF0pO1xuICAgICAgICAgICAgICBicmVhazsgLy8gUGFydCBvZiB0aGUgbGluayB0aXRsZVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBBZnRlciBsaW5rIHRpdGxlIHdhcyBjbG9zZWQsIHdpdGhvdXQgY2xvc2luZyBwYXJlbnRoZXNpc1xuICAgICAgICAgIH1cbiAgICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgICAgY29udGludWUgaW5saW5lT3V0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcm9jZXNzIG9wZW5pbmcgYW5nbGUgYnJhY2tldCBhcyBkZWlsaW1pdGVyIG9mIGRlc3RpbmF0aW9uXG4gICAgICAgIGlmIChsaW5rRGV0YWlscy5sZW5ndGggPCAyICYmIHN0cmluZy5tYXRjaCgvXjwvKSkge1xuICAgICAgICAgIGlmIChsaW5rRGV0YWlscy5sZW5ndGggPT0gMCkgbGlua0RldGFpbHMucHVzaChcIlwiKTtcbiAgICAgICAgICBsaW5rRGV0YWlsc1swXSA9IGxpbmtEZXRhaWxzWzBdLmNvbmNhdChcIjxcIik7XG4gICAgICAgICAgY3VycmVudE9mZnNldCsrO1xuICAgICAgICAgIGNvbnRpbnVlIGlubGluZU91dGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJvY2VzcyBjbG9zaW5nIGFuZ2xlIGJyYWNrZXQgYXMgZGVsaW1pdGVyIG9mIGRlc3RpbmF0aW9uXG4gICAgICAgIGlmIChcbiAgICAgICAgICAobGlua0RldGFpbHMubGVuZ3RoID09IDEgfHwgbGlua0RldGFpbHMubGVuZ3RoID09IDIpICYmXG4gICAgICAgICAgc3RyaW5nLm1hdGNoKC9ePi8pXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChsaW5rRGV0YWlscy5sZW5ndGggPT0gMSkgbGlua0RldGFpbHMucHVzaChcIlwiKTsgLy8gRW1wdHkgbGluayBkZXN0aW5hdGlvblxuICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goXCI+XCIpO1xuICAgICAgICAgIGN1cnJlbnRPZmZzZXQrKztcbiAgICAgICAgICBjb250aW51ZSBpbmxpbmVPdXRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3MgIG5vbi1wYXJlbnRoZXNpcyBkZWxpbWl0ZXIgZm9yIHRpdGxlLlxuICAgICAgICBjYXAgPSAvXltcIiddLy5leGVjKHN0cmluZyk7XG4gICAgICAgIC8vIEZvciB0aGlzIHRvIGJlIGEgdmFsaWQgb3BlbmVyLCB3ZSBoYXZlIHRvIGVpdGhlciBoYXZlIG5vIGRlc3RpbmF0aW9uLCBvbmx5IHdoaXRlc3BhY2Ugc28gZmFyLFxuICAgICAgICAvLyBvciBhIGRlc3RpbmF0aW9uIHdpdGggdHJhaWxpbmcgd2hpdGVzcGFjZS5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGNhcCAmJlxuICAgICAgICAgIChsaW5rRGV0YWlscy5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgICAgbGlua0RldGFpbHMubGVuZ3RoID09IDEgfHxcbiAgICAgICAgICAgIGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA0KVxuICAgICAgICApIHtcbiAgICAgICAgICB3aGlsZSAobGlua0RldGFpbHMubGVuZ3RoIDwgNCkgbGlua0RldGFpbHMucHVzaChcIlwiKTtcbiAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKGNhcFswXSk7XG4gICAgICAgICAgY3VycmVudE9mZnNldCsrO1xuICAgICAgICAgIGNvbnRpbnVlIGlubGluZU91dGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRm9yIHRoaXMgdG8gYmUgYSB2YWxpZCBjbG9zZXIsIHdlIGhhdmUgdG8gaGF2ZSBhbiBvcGVuZXIgYW5kIHNvbWUgb3Igbm8gdGl0bGUsIGFuZCB0aGlzIGhhcyB0byBtYXRjaCB0aGUgb3BlbmVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICBjYXAgJiZcbiAgICAgICAgICAobGlua0RldGFpbHMubGVuZ3RoID09IDUgfHwgbGlua0RldGFpbHMubGVuZ3RoID09IDYpICYmXG4gICAgICAgICAgbGlua0RldGFpbHNbNF0gPT0gY2FwWzBdXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChsaW5rRGV0YWlscy5sZW5ndGggPT0gNSkgbGlua0RldGFpbHMucHVzaChcIlwiKTsgLy8gRW1wdHkgbGluayB0aXRsZVxuICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goY2FwWzBdKTtcbiAgICAgICAgICBjdXJyZW50T2Zmc2V0Kys7XG4gICAgICAgICAgY29udGludWUgaW5saW5lT3V0ZXI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gT3RoZXIgY2FzZXMgKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSAyLCAzLCA3KSB3aWxsIGJlIGhhbmRsZWQgd2l0aCB0aGUgXCJkZWZhdWx0XCIgY2FzZSBiZWxvdy5cblxuICAgICAgICAvLyBQcm9jZXNzIG9wZW5pbmcgcGFyZW50aGVzaXNcbiAgICAgICAgaWYgKHN0cmluZy5tYXRjaCgvXlxcKC8pKSB7XG4gICAgICAgICAgc3dpdGNoIChsaW5rRGV0YWlscy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIlwiKTsgLy8gdGhpcyBvcGVucyB0aGUgbGluayBkZXN0aW5hdGlvbiwgYWRkIGVtcHR5IG9wZW5pbmcgZGVsaW1pdGVyIGFuZCBwcm9jZWVkIHRvIG5leHQgY2FzZVxuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKFwiXCIpOyAvLyBUaGlzIG9wZW5zIHRoZSBsaW5rIGRlc3RpbmF0aW9uXG4gICAgICAgICAgICBjYXNlIDI6IC8vIFBhcnQgb2YgdGhlIGxpbmsgZGVzdGluYXRpb25cbiAgICAgICAgICAgICAgbGlua0RldGFpbHNbMV0gPSBsaW5rRGV0YWlsc1sxXS5jb25jYXQoXCIoXCIpO1xuICAgICAgICAgICAgICBpZiAoIWxpbmtEZXRhaWxzWzBdLm1hdGNoKC88JC8pKSBwYXJlbnRoZXNpc0xldmVsKys7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKFwiXCIpOyAvLyAgb3BlbmluZyBkZWxpbWl0ZXIgZm9yIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIihcIik7XG4gICAgICAgICAgICAgIGJyZWFrOyAvLyBvcGVuaW5nIGRlbGltaXRlciBmb3IgbGluayB0aXRsZVxuICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKFwiXCIpOyAvLyBvcGVucyB0aGUgbGluayB0aXRsZSwgYWRkIGVtcHR5IHRpdGxlIGNvbnRlbnQgYW5kIHByb2NlZWQgdG8gbmV4dCBjYXNlXG4gICAgICAgICAgICBjYXNlIDY6IC8vIFBhcnQgb2YgdGhlIGxpbmsgdGl0bGUuIFVuLWVzY2FwZWQgcGFyZW50aGVzaXMgb25seSBhbGxvd2VkIGluIFwiIG9yICcgZGVsaW1pdGVkIHRpdGxlXG4gICAgICAgICAgICAgIGlmIChsaW5rRGV0YWlsc1s0XSA9PSBcIihcIikgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICBsaW5rRGV0YWlsc1s1XSA9IGxpbmtEZXRhaWxzWzVdLmNvbmNhdChcIihcIik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBBZnRlciBsaW5rIHRpdGxlIHdhcyBjbG9zZWQsIHdpdGhvdXQgY2xvc2luZyBwYXJlbnRoZXNpc1xuICAgICAgICAgIH1cbiAgICAgICAgICBjdXJyZW50T2Zmc2V0Kys7XG4gICAgICAgICAgY29udGludWUgaW5saW5lT3V0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcm9jZXNzIGNsb3NpbmcgcGFyZW50aGVzaXNcbiAgICAgICAgaWYgKHN0cmluZy5tYXRjaCgvXlxcKS8pKSB7XG4gICAgICAgICAgaWYgKGxpbmtEZXRhaWxzLmxlbmd0aCA8PSAyKSB7XG4gICAgICAgICAgICAvLyBXZSBhcmUgaW5zaWRlIHRoZSBsaW5rIGRlc3RpbmF0aW9uLiBQYXJlbnRoZXNlcyBoYXZlIHRvIGJlIG1hdGNoZWQgaWYgbm90IGluIGFuZ2xlIGJyYWNrZXRzXG4gICAgICAgICAgICB3aGlsZSAobGlua0RldGFpbHMubGVuZ3RoIDwgMikgbGlua0RldGFpbHMucHVzaChcIlwiKTtcblxuICAgICAgICAgICAgaWYgKCFsaW5rRGV0YWlsc1swXS5tYXRjaCgvPCQvKSkgcGFyZW50aGVzaXNMZXZlbC0tO1xuXG4gICAgICAgICAgICBpZiAocGFyZW50aGVzaXNMZXZlbCA+IDApIHtcbiAgICAgICAgICAgICAgbGlua0RldGFpbHNbMV0gPSBsaW5rRGV0YWlsc1sxXS5jb25jYXQoXCIpXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAobGlua0RldGFpbHMubGVuZ3RoID09IDUgfHwgbGlua0RldGFpbHMubGVuZ3RoID09IDYpIHtcbiAgICAgICAgICAgIC8vIFdlIGFyZSBpbnNpZGUgdGhlIGxpbmsgdGl0bGUuXG4gICAgICAgICAgICBpZiAobGlua0RldGFpbHNbNF0gPT0gXCIoXCIpIHtcbiAgICAgICAgICAgICAgLy8gVGhpcyBjbG9zZXMgdGhlIGxpbmsgdGl0bGVcbiAgICAgICAgICAgICAgaWYgKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA1KSBsaW5rRGV0YWlscy5wdXNoKFwiXCIpO1xuICAgICAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKFwiKVwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIEp1c3QgcmVndWxhciBvbCcgY29udGVudFxuICAgICAgICAgICAgICBpZiAobGlua0RldGFpbHMubGVuZ3RoID09IDUpIGxpbmtEZXRhaWxzLnB1c2goXCIpXCIpO1xuICAgICAgICAgICAgICBlbHNlIGxpbmtEZXRhaWxzWzVdID0gbGlua0RldGFpbHNbNV0uY29uY2F0KFwiKVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyZW50aGVzaXNMZXZlbC0tOyAvLyBUaGlzIHNob3VsZCBkZWNyZWFzZSBpdCBmcm9tIDEgdG8gMC4uLlxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChwYXJlbnRoZXNpc0xldmVsID09IDApIHtcbiAgICAgICAgICAgIC8vIE5vIGludmFsaWQgY29uZGl0aW9uLCBsZXQncyBtYWtlIHN1cmUgdGhlIGxpbmtEZXRhaWxzIGFycmF5IGlzIGNvbXBsZXRlXG4gICAgICAgICAgICB3aGlsZSAobGlua0RldGFpbHMubGVuZ3RoIDwgNykgbGlua0RldGFpbHMucHVzaChcIlwiKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjdXJyZW50T2Zmc2V0Kys7XG4gICAgICAgICAgY29udGludWUgaW5saW5lT3V0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBbnkgb2xkIGNoYXJhY3RlclxuICAgICAgICBjYXAgPSAvXi4vLmV4ZWMoc3RyaW5nKTtcbiAgICAgICAgaWYgKGNhcCkge1xuICAgICAgICAgIHN3aXRjaCAobGlua0RldGFpbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7IC8vIHRoaXMgb3BlbnMgdGhlIGxpbmsgZGVzdGluYXRpb24sIGFkZCBlbXB0eSBvcGVuaW5nIGRlbGltaXRlciBhbmQgcHJvY2VlZCB0byBuZXh0IGNhc2VcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChjYXBbMF0pO1xuICAgICAgICAgICAgICBicmVhazsgLy8gVGhpcyBvcGVucyB0aGUgbGluayBkZXN0aW5hdGlvbiwgYXBwZW5kIGl0XG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzWzFdID0gbGlua0RldGFpbHNbMV0uY29uY2F0KGNhcFswXSk7XG4gICAgICAgICAgICAgIGJyZWFrOyAvLyBQYXJ0IG9mIHRoZSBsaW5rIGRlc3RpbmF0aW9uXG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gTGFja2luZyBvcGVuaW5nIGRlbGltaXRlciBmb3IgbGluayB0aXRsZVxuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIExjYWtpbmcgb3BlbmluZyBkZWxpbWl0ZXIgZm9yIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIlwiKTsgLy8gVGhpcyBvcGVucyB0aGUgbGluayB0aXRsZVxuICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICBsaW5rRGV0YWlsc1s1XSA9IGxpbmtEZXRhaWxzWzVdLmNvbmNhdChjYXBbMF0pO1xuICAgICAgICAgICAgICBicmVhazsgLy8gUGFydCBvZiB0aGUgbGluayB0aXRsZVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBBZnRlciBsaW5rIHRpdGxlIHdhcyBjbG9zZWQsIHdpdGhvdXQgY2xvc2luZyBwYXJlbnRoZXNpc1xuICAgICAgICAgIH1cbiAgICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgICAgY29udGludWUgaW5saW5lT3V0ZXI7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgXCJJbmZpbml0ZSBsb29wXCI7IC8vIHdlIHNob3VsZCBuZXZlciBnZXQgaGVyZSBzaW5jZSB0aGUgbGFzdCB0ZXN0IG1hdGNoZXMgYW55IGNoYXJhY3RlclxuICAgICAgfVxuICAgICAgaWYgKHBhcmVudGhlc2lzTGV2ZWwgPiAwKSByZXR1cm4gZmFsc2U7IC8vIFBhcmVudGhlcyhlcykgbm90IGNsb3NlZFxuICAgIH1cblxuICAgIGlmIChsaW5rUmVmICE9PSBmYWxzZSkge1xuICAgICAgLy8gUmVmIGxpbms7IGNoZWNrIHRoYXQgbGlua1JlZiBpcyB2YWxpZFxuICAgICAgbGV0IHZhbGlkID0gZmFsc2U7XG4gICAgICBmb3IgKGxldCBsYWJlbCBvZiB0aGlzLmxpbmtMYWJlbHMpIHtcbiAgICAgICAgaWYgKGxhYmVsID09IGxpbmtSZWYpIHtcbiAgICAgICAgICB2YWxpZCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxldCBsYWJlbCA9IHZhbGlkXG4gICAgICAgID8gXCJUTUxpbmtMYWJlbCBUTUxpbmtMYWJlbF9WYWxpZFwiXG4gICAgICAgIDogXCJUTUxpbmtMYWJlbCBUTUxpbmtMYWJlbF9JbnZhbGlkXCI7XG4gICAgICBsZXQgb3V0cHV0ID0gYDxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya18ke3R5cGV9XCI+JHtvcGVuZXJ9PC9zcGFuPjxzcGFuIGNsYXNzPVwiJHt0eXBlfSAke1xuICAgICAgICBsaW5rTGFiZWwubGVuZ3RoIDwgMyB8fCAhbGlua0xhYmVsWzFdID8gbGFiZWwgOiBcIlwiXG4gICAgICB9XCI+JHt0aGlzLnByb2Nlc3NJbmxpbmVTdHlsZXMoXG4gICAgICAgIGxpbmtUZXh0XG4gICAgICApfTwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPl08L3NwYW4+YDtcblxuICAgICAgaWYgKGxpbmtMYWJlbC5sZW5ndGggPj0gMykge1xuICAgICAgICBvdXRwdXQgPSBvdXRwdXQuY29uY2F0KFxuICAgICAgICAgIGA8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPiR7bGlua0xhYmVsWzBdfTwvc3Bhbj5gLFxuICAgICAgICAgIGA8c3BhbiBjbGFzcz1cIiR7bGFiZWx9XCI+JHtsaW5rTGFiZWxbMV19PC9zcGFuPmAsXG4gICAgICAgICAgYDxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya18ke3R5cGV9XCI+JHtsaW5rTGFiZWxbMl19PC9zcGFuPmBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG91dHB1dDogb3V0cHV0LFxuICAgICAgICBjaGFyQ291bnQ6IGN1cnJlbnRPZmZzZXQsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAobGlua0RldGFpbHMpIHtcbiAgICAgIC8vIElubGluZSBsaW5rXG5cbiAgICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiwgYnV0IGJldHRlciBzYWZlIHRoYW4gc29ycnkuXG4gICAgICB3aGlsZSAobGlua0RldGFpbHMubGVuZ3RoIDwgNykge1xuICAgICAgICBsaW5rRGV0YWlscy5wdXNoKFwiXCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBvdXRwdXQ6IGA8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPiR7b3BlbmVyfTwvc3Bhbj48c3BhbiBjbGFzcz1cIiR7dHlwZX1cIj4ke3RoaXMucHJvY2Vzc0lubGluZVN0eWxlcyhcbiAgICAgICAgICBsaW5rVGV4dFxuICAgICAgICApfTwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPl0oJHtcbiAgICAgICAgICBsaW5rRGV0YWlsc1swXVxuICAgICAgICB9PC9zcGFuPjxzcGFuIGNsYXNzPVwiJHt0eXBlfURlc3RpbmF0aW9uXCI+JHtcbiAgICAgICAgICBsaW5rRGV0YWlsc1sxXVxuICAgICAgICB9PC9zcGFuPjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya18ke3R5cGV9XCI+JHtsaW5rRGV0YWlsc1syXX0ke1xuICAgICAgICAgIGxpbmtEZXRhaWxzWzNdXG4gICAgICAgIH0ke2xpbmtEZXRhaWxzWzRdfTwvc3Bhbj48c3BhbiBjbGFzcz1cIiR7dHlwZX1UaXRsZVwiPiR7XG4gICAgICAgICAgbGlua0RldGFpbHNbNV1cbiAgICAgICAgfTwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPiR7bGlua0RldGFpbHNbNl19KTwvc3Bhbj5gLFxuICAgICAgICBjaGFyQ291bnQ6IGN1cnJlbnRPZmZzZXQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXRzIGEgbWFya2Rvd24gc3RyaW5nIGFzIEhUTUwsIHVzaW5nIE1hcmtkb3duIGlubGluZSBmb3JtYXR0aW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luYWxTdHJpbmcgVGhlIGlucHV0IChtYXJrZG93biBpbmxpbmUgZm9ybWF0dGVkKSBzdHJpbmdcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIEhUTUwgZm9ybWF0dGVkIG91dHB1dFxuICAgKi9cbiAgcHJvY2Vzc0lubGluZVN0eWxlcyhvcmlnaW5hbFN0cmluZykge1xuICAgIGxldCBwcm9jZXNzZWQgPSBcIlwiO1xuICAgIGxldCBzdGFjayA9IFtdOyAvLyBTdGFjayBpcyBhbiBhcnJheSBvZiBvYmplY3RzIG9mIHRoZSBmb3JtYXQ6IHtkZWxpbWl0ZXIsIGRlbGltU3RyaW5nLCBjb3VudCwgb3V0cHV0fVxuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGxldCBzdHJpbmcgPSBvcmlnaW5hbFN0cmluZztcblxuICAgIG91dGVyOiB3aGlsZSAoc3RyaW5nKSB7XG4gICAgICAvLyBQcm9jZXNzIHNpbXBsZSBydWxlcyAobm9uLWRlbGltaXRlcilcbiAgICAgIGZvciAobGV0IHJ1bGUgb2YgW1wiZXNjYXBlXCIsIFwiY29kZVwiLCBcImF1dG9saW5rXCIsIFwiaHRtbFwiXSkge1xuICAgICAgICBsZXQgY2FwID0gaW5saW5lR3JhbW1hcltydWxlXS5yZWdleHAuZXhlYyhzdHJpbmcpO1xuICAgICAgICBpZiAoY2FwKSB7XG4gICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnN1YnN0cihjYXBbMF0ubGVuZ3RoKTtcbiAgICAgICAgICBvZmZzZXQgKz0gY2FwWzBdLmxlbmd0aDtcbiAgICAgICAgICBwcm9jZXNzZWQgKz0gaW5saW5lR3JhbW1hcltydWxlXS5yZXBsYWNlbWVudFxuICAgICAgICAgICAgLy8gLnJlcGxhY2UoL1xcJFxcJChbMS05XSkvZywgKHN0ciwgcDEpID0+IHByb2Nlc3NJbmxpbmVTdHlsZXMoY2FwW3AxXSkpIC8vIHRvZG8gcmVjdXJzaXZlIGNhbGxpbmdcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXCQoWzEtOV0pL2csIChzdHIsIHAxKSA9PiBodG1sZXNjYXBlKGNhcFtwMV0pKTtcbiAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBmb3IgbGlua3MgLyBpbWFnZXNcbiAgICAgIGxldCBwb3RlbnRpYWxMaW5rID0gc3RyaW5nLm1hdGNoKGlubGluZUdyYW1tYXIubGlua09wZW4ucmVnZXhwKTtcbiAgICAgIGxldCBwb3RlbnRpYWxJbWFnZSA9IHN0cmluZy5tYXRjaChpbmxpbmVHcmFtbWFyLmltYWdlT3Blbi5yZWdleHApO1xuICAgICAgaWYgKHBvdGVudGlhbEltYWdlIHx8IHBvdGVudGlhbExpbmspIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMucGFyc2VMaW5rT3JJbWFnZShzdHJpbmcsIHBvdGVudGlhbEltYWdlKTtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIHByb2Nlc3NlZCA9IGAke3Byb2Nlc3NlZH0ke3Jlc3VsdC5vdXRwdXR9YDtcbiAgICAgICAgICBzdHJpbmcgPSBzdHJpbmcuc3Vic3RyKHJlc3VsdC5jaGFyQ291bnQpO1xuICAgICAgICAgIG9mZnNldCArPSByZXN1bHQuY2hhckNvdW50O1xuICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGZvciBlbSAvIHN0cm9uZyBkZWxpbWl0ZXJzXG4gICAgICBsZXQgY2FwID0gLyheXFwqKyl8KF5fKykvLmV4ZWMoc3RyaW5nKTtcbiAgICAgIGlmIChjYXApIHtcbiAgICAgICAgbGV0IGRlbGltQ291bnQgPSBjYXBbMF0ubGVuZ3RoO1xuICAgICAgICBjb25zdCBkZWxpbVN0cmluZyA9IGNhcFswXTtcbiAgICAgICAgY29uc3QgY3VycmVudERlbGltaXRlciA9IGNhcFswXVswXTsgLy8gVGhpcyBzaG91bGQgYmUgKiBvciBfXG5cbiAgICAgICAgc3RyaW5nID0gc3RyaW5nLnN1YnN0cihjYXBbMF0ubGVuZ3RoKTtcblxuICAgICAgICAvLyBXZSBoYXZlIGEgZGVsaW1pdGVyIHJ1bi4gTGV0J3MgY2hlY2sgaWYgaXQgY2FuIG9wZW4gb3IgY2xvc2UgYW4gZW1waGFzaXMuXG5cbiAgICAgICAgY29uc3QgcHJlY2VkaW5nID0gb2Zmc2V0ID4gMCA/IG9yaWdpbmFsU3RyaW5nLnN1YnN0cigwLCBvZmZzZXQpIDogXCIgXCI7IC8vIGJlZ2lubmluZyBhbmQgZW5kIG9mIGxpbmUgY291bnQgYXMgd2hpdGVzcGFjZVxuICAgICAgICBjb25zdCBmb2xsb3dpbmcgPVxuICAgICAgICAgIG9mZnNldCArIGNhcFswXS5sZW5ndGggPCBvcmlnaW5hbFN0cmluZy5sZW5ndGggPyBzdHJpbmcgOiBcIiBcIjtcblxuICAgICAgICBjb25zdCBwdW5jdHVhdGlvbkZvbGxvd3MgPSBmb2xsb3dpbmcubWF0Y2gocHVuY3R1YXRpb25MZWFkaW5nKTtcbiAgICAgICAgY29uc3QgcHVuY3R1YXRpb25QcmVjZWRlcyA9IHByZWNlZGluZy5tYXRjaChwdW5jdHVhdGlvblRyYWlsaW5nKTtcbiAgICAgICAgY29uc3Qgd2hpdGVzcGFjZUZvbGxvd3MgPSBmb2xsb3dpbmcubWF0Y2goL15cXHMvKTtcbiAgICAgICAgY29uc3Qgd2hpdGVzcGFjZVByZWNlZGVzID0gcHJlY2VkaW5nLm1hdGNoKC9cXHMkLyk7XG5cbiAgICAgICAgLy8gVGhlc2UgYXJlIHRoZSBydWxlcyBmb3IgcmlnaHQtZmxhbmtpbmcgYW5kIGxlZnQtZmxhbmtpbmcgZGVsaW1pdGVyIHJ1bnMgYXMgcGVyIENvbW1vbk1hcmsgc3BlY1xuICAgICAgICBsZXQgY2FuT3BlbiA9XG4gICAgICAgICAgIXdoaXRlc3BhY2VGb2xsb3dzICYmXG4gICAgICAgICAgKCFwdW5jdHVhdGlvbkZvbGxvd3MgfHxcbiAgICAgICAgICAgICEhd2hpdGVzcGFjZVByZWNlZGVzIHx8XG4gICAgICAgICAgICAhIXB1bmN0dWF0aW9uUHJlY2VkZXMpO1xuICAgICAgICBsZXQgY2FuQ2xvc2UgPVxuICAgICAgICAgICF3aGl0ZXNwYWNlUHJlY2VkZXMgJiZcbiAgICAgICAgICAoIXB1bmN0dWF0aW9uUHJlY2VkZXMgfHwgISF3aGl0ZXNwYWNlRm9sbG93cyB8fCAhIXB1bmN0dWF0aW9uRm9sbG93cyk7XG5cbiAgICAgICAgLy8gVW5kZXJzY29yZXMgaGF2ZSBtb3JlIGRldGFpbGVkIHJ1bGVzIHRoYW4ganVzdCBiZWluZyBwYXJ0IG9mIGxlZnQtIG9yIHJpZ2h0LWZsYW5raW5nIHJ1bjpcbiAgICAgICAgaWYgKGN1cnJlbnREZWxpbWl0ZXIgPT0gXCJfXCIgJiYgY2FuT3BlbiAmJiBjYW5DbG9zZSkge1xuICAgICAgICAgIGNhbk9wZW4gPSBwdW5jdHVhdGlvblByZWNlZGVzO1xuICAgICAgICAgIGNhbkNsb3NlID0gcHVuY3R1YXRpb25Gb2xsb3dzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhlIGRlbGltaXRlciBjYW4gY2xvc2UsIGNoZWNrIHRoZSBzdGFjayBpZiB0aGVyZSdzIHNvbWV0aGluZyBpdCBjYW4gY2xvc2VcbiAgICAgICAgaWYgKGNhbkNsb3NlKSB7XG4gICAgICAgICAgbGV0IHN0YWNrUG9pbnRlciA9IHN0YWNrLmxlbmd0aCAtIDE7XG4gICAgICAgICAgLy8gU2VlIGlmIHdlIGNhbiBmaW5kIGEgbWF0Y2hpbmcgb3BlbmluZyBkZWxpbWl0ZXIsIG1vdmUgZG93biB0aHJvdWdoIHRoZSBzdGFja1xuICAgICAgICAgIHdoaWxlIChkZWxpbUNvdW50ICYmIHN0YWNrUG9pbnRlciA+PSAwKSB7XG4gICAgICAgICAgICBpZiAoc3RhY2tbc3RhY2tQb2ludGVyXS5kZWxpbWl0ZXIgPT0gY3VycmVudERlbGltaXRlcikge1xuICAgICAgICAgICAgICAvLyBXZSBmb3VuZCBhIG1hdGNoaW5nIGRlbGltaXRlciwgbGV0J3MgY29uc3RydWN0IHRoZSBmb3JtYXR0ZWQgc3RyaW5nXG5cbiAgICAgICAgICAgICAgLy8gRmlyc3RseSwgaWYgd2Ugc2tpcHBlZCBhbnkgc3RhY2sgbGV2ZWxzLCBwb3AgdGhlbSBpbW1lZGlhdGVseSAobm9uLW1hdGNoaW5nIGRlbGltaXRlcnMpXG4gICAgICAgICAgICAgIHdoaWxlIChzdGFja1BvaW50ZXIgPCBzdGFjay5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW50cnkgPSBzdGFjay5wb3AoKTtcbiAgICAgICAgICAgICAgICBwcm9jZXNzZWQgPSBgJHtlbnRyeS5vdXRwdXR9JHtlbnRyeS5kZWxpbVN0cmluZy5zdWJzdHIoXG4gICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgZW50cnkuY291bnRcbiAgICAgICAgICAgICAgICApfSR7cHJvY2Vzc2VkfWA7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBUaGVuLCBmb3JtYXQgdGhlIHN0cmluZ1xuICAgICAgICAgICAgICBpZiAoZGVsaW1Db3VudCA+PSAyICYmIHN0YWNrW3N0YWNrUG9pbnRlcl0uY291bnQgPj0gMikge1xuICAgICAgICAgICAgICAgIC8vIFN0cm9uZ1xuICAgICAgICAgICAgICAgIHByb2Nlc3NlZCA9IGA8c3BhbiBjbGFzcz1cIlRNTWFya1wiPiR7Y3VycmVudERlbGltaXRlcn0ke2N1cnJlbnREZWxpbWl0ZXJ9PC9zcGFuPjxzdHJvbmcgY2xhc3M9XCJUTVN0cm9uZ1wiPiR7cHJvY2Vzc2VkfTwvc3Ryb25nPjxzcGFuIGNsYXNzPVwiVE1NYXJrXCI+JHtjdXJyZW50RGVsaW1pdGVyfSR7Y3VycmVudERlbGltaXRlcn08L3NwYW4+YDtcbiAgICAgICAgICAgICAgICBkZWxpbUNvdW50IC09IDI7XG4gICAgICAgICAgICAgICAgc3RhY2tbc3RhY2tQb2ludGVyXS5jb3VudCAtPSAyO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEVtXG4gICAgICAgICAgICAgICAgcHJvY2Vzc2VkID0gYDxzcGFuIGNsYXNzPVwiVE1NYXJrXCI+JHtjdXJyZW50RGVsaW1pdGVyfTwvc3Bhbj48ZW0gY2xhc3M9XCJUTUVtXCI+JHtwcm9jZXNzZWR9PC9lbT48c3BhbiBjbGFzcz1cIlRNTWFya1wiPiR7Y3VycmVudERlbGltaXRlcn08L3NwYW4+YDtcbiAgICAgICAgICAgICAgICBkZWxpbUNvdW50IC09IDE7XG4gICAgICAgICAgICAgICAgc3RhY2tbc3RhY2tQb2ludGVyXS5jb3VudCAtPSAxO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLy8gSWYgdGhhdCBzdGFjayBsZXZlbCBpcyBlbXB0eSBub3csIHBvcCBpdFxuICAgICAgICAgICAgICBpZiAoc3RhY2tbc3RhY2tQb2ludGVyXS5jb3VudCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGVudHJ5ID0gc3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc2VkID0gYCR7ZW50cnkub3V0cHV0fSR7cHJvY2Vzc2VkfWA7XG4gICAgICAgICAgICAgICAgc3RhY2tQb2ludGVyLS07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIFRoaXMgc3RhY2sgbGV2ZWwncyBkZWxpbWl0ZXIgdHlwZSBkb2Vzbid0IG1hdGNoIHRoZSBjdXJyZW50IGRlbGltaXRlciB0eXBlXG4gICAgICAgICAgICAgIC8vIEdvIGRvd24gb25lIGxldmVsIGluIHRoZSBzdGFja1xuICAgICAgICAgICAgICBzdGFja1BvaW50ZXItLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgdGhlcmUgYXJlIHN0aWxsIGRlbGltaXRlcnMgbGVmdCwgYW5kIHRoZSBkZWxpbWl0ZXIgcnVuIGNhbiBvcGVuLCBwdXNoIGl0IG9uIHRoZSBzdGFja1xuICAgICAgICBpZiAoZGVsaW1Db3VudCAmJiBjYW5PcGVuKSB7XG4gICAgICAgICAgc3RhY2sucHVzaCh7XG4gICAgICAgICAgICBkZWxpbWl0ZXI6IGN1cnJlbnREZWxpbWl0ZXIsXG4gICAgICAgICAgICBkZWxpbVN0cmluZzogZGVsaW1TdHJpbmcsXG4gICAgICAgICAgICBjb3VudDogZGVsaW1Db3VudCxcbiAgICAgICAgICAgIG91dHB1dDogcHJvY2Vzc2VkLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHByb2Nlc3NlZCA9IFwiXCI7IC8vIEN1cnJlbnQgZm9ybWF0dGVkIG91dHB1dCBoYXMgYmVlbiBwdXNoZWQgb24gdGhlIHN0YWNrIGFuZCB3aWxsIGJlIHByZXBlbmRlZCB3aGVuIHRoZSBzdGFjayBnZXRzIHBvcHBlZFxuICAgICAgICAgIGRlbGltQ291bnQgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQW55IGRlbGltaXRlcnMgdGhhdCBhcmUgbGVmdCAoY2xvc2luZyB1bm1hdGNoZWQpIGFyZSBhcHBlbmRlZCB0byB0aGUgb3V0cHV0LlxuICAgICAgICBpZiAoZGVsaW1Db3VudCkge1xuICAgICAgICAgIHByb2Nlc3NlZCA9IGAke3Byb2Nlc3NlZH0ke2RlbGltU3RyaW5nLnN1YnN0cigwLCBkZWxpbUNvdW50KX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgb2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBmb3Igc3RyaWtldGhyb3VnaCBkZWxpbWl0ZXJcbiAgICAgIGNhcCA9IC9efn4vLmV4ZWMoc3RyaW5nKTtcbiAgICAgIGlmIChjYXApIHtcbiAgICAgICAgbGV0IGNvbnN1bWVkID0gZmFsc2U7XG4gICAgICAgIGxldCBzdGFja1BvaW50ZXIgPSBzdGFjay5sZW5ndGggLSAxO1xuICAgICAgICAvLyBTZWUgaWYgd2UgY2FuIGZpbmQgYSBtYXRjaGluZyBvcGVuaW5nIGRlbGltaXRlciwgbW92ZSBkb3duIHRocm91Z2ggdGhlIHN0YWNrXG4gICAgICAgIHdoaWxlICghY29uc3VtZWQgJiYgc3RhY2tQb2ludGVyID49IDApIHtcbiAgICAgICAgICBpZiAoc3RhY2tbc3RhY2tQb2ludGVyXS5kZWxpbWl0ZXIgPT0gXCJ+XCIpIHtcbiAgICAgICAgICAgIC8vIFdlIGZvdW5kIGEgbWF0Y2hpbmcgZGVsaW1pdGVyLCBsZXQncyBjb25zdHJ1Y3QgdGhlIGZvcm1hdHRlZCBzdHJpbmdcblxuICAgICAgICAgICAgLy8gRmlyc3RseSwgaWYgd2Ugc2tpcHBlZCBhbnkgc3RhY2sgbGV2ZWxzLCBwb3AgdGhlbSBpbW1lZGlhdGVseSAobm9uLW1hdGNoaW5nIGRlbGltaXRlcnMpXG4gICAgICAgICAgICB3aGlsZSAoc3RhY2tQb2ludGVyIDwgc3RhY2subGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICBjb25zdCBlbnRyeSA9IHN0YWNrLnBvcCgpO1xuICAgICAgICAgICAgICBwcm9jZXNzZWQgPSBgJHtlbnRyeS5vdXRwdXR9JHtlbnRyeS5kZWxpbVN0cmluZy5zdWJzdHIoXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBlbnRyeS5jb3VudFxuICAgICAgICAgICAgICApfSR7cHJvY2Vzc2VkfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFRoZW4sIGZvcm1hdCB0aGUgc3RyaW5nXG4gICAgICAgICAgICBwcm9jZXNzZWQgPSBgPHNwYW4gY2xhc3M9XCJUTU1hcmtcIj5+fjwvc3Bhbj48ZGVsIGNsYXNzPVwiVE1TdHJpa2V0aHJvdWdoXCI+JHtwcm9jZXNzZWR9PC9kZWw+PHNwYW4gY2xhc3M9XCJUTU1hcmtcIj5+fjwvc3Bhbj5gO1xuICAgICAgICAgICAgbGV0IGVudHJ5ID0gc3RhY2sucG9wKCk7XG4gICAgICAgICAgICBwcm9jZXNzZWQgPSBgJHtlbnRyeS5vdXRwdXR9JHtwcm9jZXNzZWR9YDtcbiAgICAgICAgICAgIGNvbnN1bWVkID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gVGhpcyBzdGFjayBsZXZlbCdzIGRlbGltaXRlciB0eXBlIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnQgZGVsaW1pdGVyIHR5cGVcbiAgICAgICAgICAgIC8vIEdvIGRvd24gb25lIGxldmVsIGluIHRoZSBzdGFja1xuICAgICAgICAgICAgc3RhY2tQb2ludGVyLS07XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhlcmUgYXJlIHN0aWxsIGRlbGltaXRlcnMgbGVmdCwgYW5kIHRoZSBkZWxpbWl0ZXIgcnVuIGNhbiBvcGVuLCBwdXNoIGl0IG9uIHRoZSBzdGFja1xuICAgICAgICBpZiAoIWNvbnN1bWVkKSB7XG4gICAgICAgICAgc3RhY2sucHVzaCh7XG4gICAgICAgICAgICBkZWxpbWl0ZXI6IFwiflwiLFxuICAgICAgICAgICAgZGVsaW1TdHJpbmc6IFwifn5cIixcbiAgICAgICAgICAgIGNvdW50OiAyLFxuICAgICAgICAgICAgb3V0cHV0OiBwcm9jZXNzZWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcHJvY2Vzc2VkID0gXCJcIjsgLy8gQ3VycmVudCBmb3JtYXR0ZWQgb3V0cHV0IGhhcyBiZWVuIHB1c2hlZCBvbiB0aGUgc3RhY2sgYW5kIHdpbGwgYmUgcHJlcGVuZGVkIHdoZW4gdGhlIHN0YWNrIGdldHMgcG9wcGVkXG4gICAgICAgIH1cblxuICAgICAgICBvZmZzZXQgKz0gY2FwWzBdLmxlbmd0aDtcbiAgICAgICAgc3RyaW5nID0gc3RyaW5nLnN1YnN0cihjYXBbMF0ubGVuZ3RoKTtcbiAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICB9XG5cbiAgICAgIC8vIFByb2Nlc3MgJ2RlZmF1bHQnIHJ1bGVcbiAgICAgIGNhcCA9IGlubGluZUdyYW1tYXIuZGVmYXVsdC5yZWdleHAuZXhlYyhzdHJpbmcpO1xuICAgICAgaWYgKGNhcCkge1xuICAgICAgICBzdHJpbmcgPSBzdHJpbmcuc3Vic3RyKGNhcFswXS5sZW5ndGgpO1xuICAgICAgICBvZmZzZXQgKz0gY2FwWzBdLmxlbmd0aDtcbiAgICAgICAgcHJvY2Vzc2VkICs9IGlubGluZUdyYW1tYXIuZGVmYXVsdC5yZXBsYWNlbWVudC5yZXBsYWNlKFxuICAgICAgICAgIC9cXCQoWzEtOV0pL2csXG4gICAgICAgICAgKHN0ciwgcDEpID0+IGh0bWxlc2NhcGUoY2FwW3AxXSlcbiAgICAgICAgKTtcbiAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICB9XG4gICAgICB0aHJvdyBcIkluZmluaXRlIGxvb3AhXCI7XG4gICAgfVxuXG4gICAgLy8gRW1wdHkgdGhlIHN0YWNrLCBhbnkgb3BlbmluZyBkZWxpbWl0ZXJzIGFyZSB1bnVzZWRcbiAgICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7XG4gICAgICBjb25zdCBlbnRyeSA9IHN0YWNrLnBvcCgpO1xuICAgICAgcHJvY2Vzc2VkID0gYCR7ZW50cnkub3V0cHV0fSR7ZW50cnkuZGVsaW1TdHJpbmcuc3Vic3RyKFxuICAgICAgICAwLFxuICAgICAgICBlbnRyeS5jb3VudFxuICAgICAgKX0ke3Byb2Nlc3NlZH1gO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9jZXNzZWQ7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBsaW5lIGRpcnR5IGZsYWcgKHJlc2V0cyBpdCB0byBhbiBhcnJheSBvZiBmYWxzZSlcbiAgICovXG4gIGNsZWFyRGlydHlGbGFnKCkge1xuICAgIHRoaXMubGluZURpcnR5ID0gbmV3IEFycmF5KHRoaXMubGluZXMubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGluZURpcnR5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmxpbmVEaXJ0eVtpXSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBjbGFzcyBwcm9wZXJ0aWVzIChsaW5lcywgbGluZUVsZW1lbnRzKSBmcm9tIHRoZSBET00uXG4gICAqIEByZXR1cm5zIHRydWUgaWYgY29udGVudHMgY2hhbmdlZFxuICAgKi9cbiAgdXBkYXRlTGluZUNvbnRlbnRzKCkge1xuICAgIC8vIHRoaXMubGluZURpcnR5ID0gW107XG4gICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSBjaGFuZ2VkIGFueXRoaW5nIGFib3V0IHRoZSBudW1iZXIgb2YgbGluZXMgKGluc2VydGVkIG9yIGRlbGV0ZWQgYSBwYXJhZ3JhcGgpXG4gICAgLy8gPCAwIG1lYW5zIGxpbmUocykgcmVtb3ZlZDsgPiAwIG1lYW5zIGxpbmUocykgYWRkZWRcbiAgICBsZXQgbGluZURlbHRhID0gdGhpcy5lLmNoaWxkRWxlbWVudENvdW50IC0gdGhpcy5saW5lcy5sZW5ndGg7XG4gICAgaWYgKGxpbmVEZWx0YSkge1xuICAgICAgLy8geXVwLiBMZXQncyB0cnkgaG93IG11Y2ggd2UgY2FuIHNhbHZhZ2UgKGZpbmQgb3V0IHdoaWNoIGxpbmVzIGZyb20gYmVnaW5uaW5nIGFuZCBlbmQgd2VyZSB1bmNoYW5nZWQpXG4gICAgICAvLyBGaW5kIGxpbmVzIGZyb20gdGhlIGJlZ2lubmluZyB0aGF0IGhhdmVuJ3QgY2hhbmdlZC4uLlxuICAgICAgbGV0IGZpcnN0Q2hhbmdlZExpbmUgPSAwO1xuICAgICAgd2hpbGUgKFxuICAgICAgICBmaXJzdENoYW5nZWRMaW5lIDw9IHRoaXMubGluZXMubGVuZ3RoICYmXG4gICAgICAgIGZpcnN0Q2hhbmdlZExpbmUgPD0gdGhpcy5saW5lRWxlbWVudHMubGVuZ3RoICYmXG4gICAgICAgIHRoaXMubGluZUVsZW1lbnRzW2ZpcnN0Q2hhbmdlZExpbmVdICYmIC8vIENoZWNrIHRoYXQgdGhlIGxpbmUgZWxlbWVudCBoYXNuJ3QgYmVlbiBkZWxldGVkXG4gICAgICAgIHRoaXMubGluZXNbZmlyc3RDaGFuZ2VkTGluZV0gPT1cbiAgICAgICAgICB0aGlzLmxpbmVFbGVtZW50c1tmaXJzdENoYW5nZWRMaW5lXS50ZXh0Q29udGVudFxuICAgICAgKSB7XG4gICAgICAgIGZpcnN0Q2hhbmdlZExpbmUrKztcbiAgICAgIH1cblxuICAgICAgLy8gRW5kIGFsc28gZnJvbSB0aGUgZW5kXG4gICAgICBsZXQgbGFzdENoYW5nZWRMaW5lID0gLTE7XG4gICAgICB3aGlsZSAoXG4gICAgICAgIC1sYXN0Q2hhbmdlZExpbmUgPCB0aGlzLmxpbmVzLmxlbmd0aCAmJlxuICAgICAgICAtbGFzdENoYW5nZWRMaW5lIDwgdGhpcy5saW5lRWxlbWVudHMubGVuZ3RoICYmXG4gICAgICAgIHRoaXMubGluZXNbdGhpcy5saW5lcy5sZW5ndGggKyBsYXN0Q2hhbmdlZExpbmVdID09XG4gICAgICAgICAgdGhpcy5saW5lRWxlbWVudHNbdGhpcy5saW5lRWxlbWVudHMubGVuZ3RoICsgbGFzdENoYW5nZWRMaW5lXVxuICAgICAgICAgICAgLnRleHRDb250ZW50XG4gICAgICApIHtcbiAgICAgICAgbGFzdENoYW5nZWRMaW5lLS07XG4gICAgICB9XG5cbiAgICAgIGxldCBsaW5lc1RvRGVsZXRlID1cbiAgICAgICAgdGhpcy5saW5lcy5sZW5ndGggKyBsYXN0Q2hhbmdlZExpbmUgKyAxIC0gZmlyc3RDaGFuZ2VkTGluZTtcbiAgICAgIGlmIChsaW5lc1RvRGVsZXRlIDwgLWxpbmVEZWx0YSkgbGluZXNUb0RlbGV0ZSA9IC1saW5lRGVsdGE7XG4gICAgICBpZiAobGluZXNUb0RlbGV0ZSA8IDApIGxpbmVzVG9EZWxldGUgPSAwO1xuXG4gICAgICBsZXQgbGluZXNUb0FkZCA9IFtdO1xuICAgICAgZm9yIChsZXQgbCA9IDA7IGwgPCBsaW5lc1RvRGVsZXRlICsgbGluZURlbHRhOyBsKyspIHtcbiAgICAgICAgbGluZXNUb0FkZC5wdXNoKHRoaXMubGluZUVsZW1lbnRzW2ZpcnN0Q2hhbmdlZExpbmUgKyBsXS50ZXh0Q29udGVudCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNwbGljZUxpbmVzKGZpcnN0Q2hhbmdlZExpbmUsIGxpbmVzVG9EZWxldGUsIGxpbmVzVG9BZGQsIGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm8gbGluZXMgYWRkZWQgb3IgcmVtb3ZlZFxuICAgICAgZm9yIChsZXQgbGluZSA9IDA7IGxpbmUgPCB0aGlzLmxpbmVFbGVtZW50cy5sZW5ndGg7IGxpbmUrKykge1xuICAgICAgICBsZXQgZSA9IHRoaXMubGluZUVsZW1lbnRzW2xpbmVdO1xuICAgICAgICBsZXQgY3QgPSBlLnRleHRDb250ZW50O1xuICAgICAgICBpZiAodGhpcy5saW5lc1tsaW5lXSAhPT0gY3QpIHtcbiAgICAgICAgICAvLyBMaW5lIGNoYW5nZWQsIHVwZGF0ZSBpdFxuICAgICAgICAgIHRoaXMubGluZXNbbGluZV0gPSBjdDtcbiAgICAgICAgICB0aGlzLmxpbmVEaXJ0eVtsaW5lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIGEgbmV3IHBhcmFncmFwaC5cbiAgICogQHBhcmFtIHNlbCBUaGUgY3VycmVudCBzZWxlY3Rpb25cbiAgICovXG4gIHByb2Nlc3NOZXdQYXJhZ3JhcGgoc2VsKSB7XG4gICAgaWYgKCFzZWwpIHJldHVybjtcblxuICAgIC8vIFVwZGF0ZSBsaW5lcyBmcm9tIGNvbnRlbnRcbiAgICB0aGlzLnVwZGF0ZUxpbmVDb250ZW50cygpO1xuXG4gICAgbGV0IGNvbnRpbnVhYmxlVHlwZSA9IGZhbHNlO1xuICAgIC8vIExldCdzIHNlZSBpZiB3ZSBuZWVkIHRvIGNvbnRpbnVlIGEgbGlzdFxuXG4gICAgbGV0IGNoZWNrTGluZSA9IHNlbC5jb2wgPiAwID8gc2VsLnJvdyA6IHNlbC5yb3cgLSAxO1xuICAgIHN3aXRjaCAodGhpcy5saW5lVHlwZXNbY2hlY2tMaW5lXSkge1xuICAgICAgY2FzZSBcIlRNVUxcIjpcbiAgICAgICAgY29udGludWFibGVUeXBlID0gXCJUTVVMXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIlRNT0xcIjpcbiAgICAgICAgY29udGludWFibGVUeXBlID0gXCJUTU9MXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIlRNSW5kZW50ZWRDb2RlXCI6XG4gICAgICAgIGNvbnRpbnVhYmxlVHlwZSA9IFwiVE1JbmRlbnRlZENvZGVcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgbGV0IGxpbmVzID0gdGhpcy5saW5lc1tzZWwucm93XVxuICAgICAgLnJlcGxhY2UoL1xcblxcbiQvLCBcIlxcblwiKVxuICAgICAgLnNwbGl0KC8oPzpcXHJcXG58XFxufFxccikvKTtcbiAgICBpZiAobGluZXMubGVuZ3RoID09IDEpIHtcbiAgICAgIC8vIE5vIG5ldyBsaW5lXG4gICAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zcGxpY2VMaW5lcyhzZWwucm93LCAxLCBsaW5lcywgdHJ1ZSk7XG4gICAgc2VsLnJvdysrO1xuICAgIHNlbC5jb2wgPSAwO1xuXG4gICAgaWYgKGNvbnRpbnVhYmxlVHlwZSkge1xuICAgICAgLy8gQ2hlY2sgaWYgdGhlIHByZXZpb3VzIGxpbmUgd2FzIG5vbi1lbXB0eVxuICAgICAgbGV0IGNhcHR1cmUgPSBsaW5lR3JhbW1hcltjb250aW51YWJsZVR5cGVdLnJlZ2V4cC5leGVjKFxuICAgICAgICB0aGlzLmxpbmVzW3NlbC5yb3cgLSAxXVxuICAgICAgKTtcbiAgICAgIGlmIChjYXB0dXJlKSB7XG4gICAgICAgIC8vIENvbnZlbnRpb246IGNhcHR1cmVbMV0gaXMgdGhlIGxpbmUgdHlwZSBtYXJrZXIsIGNhcHR1cmVbMl0gaXMgdGhlIGNvbnRlbnRcbiAgICAgICAgaWYgKGNhcHR1cmVbMl0pIHtcbiAgICAgICAgICAvLyBQcmV2aW91cyBsaW5lIGhhcyBjb250ZW50LCBjb250aW51ZSB0aGUgY29udGludWFibGUgdHlwZVxuXG4gICAgICAgICAgLy8gSGFjayBmb3IgT0w6IGluY3JlbWVudCBudW1iZXJcbiAgICAgICAgICBpZiAoY29udGludWFibGVUeXBlID09IFwiVE1PTFwiKSB7XG4gICAgICAgICAgICBjYXB0dXJlWzFdID0gY2FwdHVyZVsxXS5yZXBsYWNlKC9cXGR7MSw5fS8sIChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KHJlc3VsdFswXSkgKyAxO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubGluZXNbc2VsLnJvd10gPSBgJHtjYXB0dXJlWzFdfSR7dGhpcy5saW5lc1tzZWwucm93XX1gO1xuICAgICAgICAgIHRoaXMubGluZURpcnR5W3NlbC5yb3ddID0gdHJ1ZTtcbiAgICAgICAgICBzZWwuY29sID0gY2FwdHVyZVsxXS5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUHJldmlvdXMgbGluZSBoYXMgbm8gY29udGVudCwgcmVtb3ZlIHRoZSBjb250aW51YWJsZSB0eXBlIGZyb20gdGhlIHByZXZpb3VzIHJvd1xuICAgICAgICAgIHRoaXMubGluZXNbc2VsLnJvdyAtIDFdID0gXCJcIjtcbiAgICAgICAgICB0aGlzLmxpbmVEaXJ0eVtzZWwucm93IC0gMV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudXBkYXRlRm9ybWF0dGluZygpO1xuICB9XG5cbiAgLy8gLyoqXG4gIC8vICAqIFByb2Nlc3NlcyBhIFwiZGVsZXRlXCIgaW5wdXQgYWN0aW9uLlxuICAvLyAgKiBAcGFyYW0ge29iamVjdH0gZm9jdXMgVGhlIHNlbGVjdGlvblxuICAvLyAgKiBAcGFyYW0ge2Jvb2xlYW59IGZvcndhcmQgSWYgdHJ1ZSwgcGVyZm9ybXMgYSBmb3J3YXJkIGRlbGV0ZSwgb3RoZXJ3aXNlIHBlcmZvcm1zIGEgYmFja3dhcmQgZGVsZXRlXG4gIC8vICAqL1xuICAvLyBwcm9jZXNzRGVsZXRlKGZvY3VzLCBmb3J3YXJkKSB7XG4gIC8vICAgaWYgKCFmb2N1cykgcmV0dXJuO1xuICAvLyAgIGxldCBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgLy8gICAvLyBEbyB3ZSBoYXZlIGEgbm9uLWVtcHR5IHNlbGVjdGlvbj9cbiAgLy8gICBpZiAoZm9jdXMuY29sICE9IGFuY2hvci5jb2wgfHwgZm9jdXMucm93ICE9IGFuY2hvci5yb3cpIHtcbiAgLy8gICAgIC8vIG5vbi1lbXB0eS4gZGlyZWN0aW9uIGRvZXNuJ3QgbWF0dGVyLlxuICAvLyAgICAgdGhpcy5wYXN0ZSgnJywgYW5jaG9yLCBmb2N1cyk7XG4gIC8vICAgfSBlbHNlIHtcbiAgLy8gICAgIGlmIChmb3J3YXJkKSB7XG4gIC8vICAgICAgIGlmIChmb2N1cy5jb2wgPCB0aGlzLmxpbmVzW2ZvY3VzLnJvd10ubGVuZ3RoKSB0aGlzLnBhc3RlKCcnLCB7cm93OiBmb2N1cy5yb3csIGNvbDogZm9jdXMuY29sICsgMX0sIGZvY3VzKTtcbiAgLy8gICAgICAgZWxzZSBpZiAoZm9jdXMuY29sIDwgdGhpcy5saW5lcy5sZW5ndGgpIHRoaXMucGFzdGUoJycsIHtyb3c6IGZvY3VzLnJvdyArIDEsIGNvbDogMH0sIGZvY3VzKTtcbiAgLy8gICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSdyZSBhdCB0aGUgdmVyeSBlbmQgYW5kIGNhbid0IGRlbGV0ZSBmb3J3YXJkXG4gIC8vICAgICB9IGVsc2Uge1xuICAvLyAgICAgICBpZiAoZm9jdXMuY29sID4gMCkgdGhpcy5wYXN0ZSgnJywge3JvdzogZm9jdXMucm93LCBjb2w6IGZvY3VzLmNvbCAtIDF9LCBmb2N1cyk7XG4gIC8vICAgICAgIGVsc2UgaWYgKGZvY3VzLnJvdyA+IDApIHRoaXMucGFzdGUoJycsIHtyb3c6IGZvY3VzLnJvdyAtIDEsIGNvbDogdGhpcy5saW5lc1tmb2N1cy5yb3cgLSAxXS5sZW5ndGggLSAxfSwgZm9jdXMpO1xuICAvLyAgICAgICAvLyBPdGhlcndpc2UsIHdlJ3JlIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBhbmQgY2FuJ3QgZGVsZXRlIGJhY2t3YXJkc1xuICAvLyAgICAgfVxuICAvLyAgIH1cblxuICAvLyB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgdGhlIHNlbGVjdGlvbiBjb3VudGVkIGJ5IHJvdyBhbmQgY29sdW1uIG9mIHRoZSBlZGl0b3IgTWFya2Rvd24gY29udGVudCAoYXMgb3Bwb3NlZCB0byB0aGUgcG9zaXRpb24gaW4gdGhlIERPTSkuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZ2V0QW5jaG9yIGlmIHNldCB0byB0cnVlLCBnZXRzIHRoZSBzZWxlY3Rpb24gYW5jaG9yIChzdGFydCBwb2ludCBvZiB0aGUgc2VsZWN0aW9uKSwgb3RoZXJ3aXNlIGdldHMgdGhlIGZvY3VzIChlbmQgcG9pbnQpLlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IEFuIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHNlbGVjdGlvbiwgd2l0aCBwcm9wZXJ0aWVzIGNvbCBhbmQgcm93LlxuICAgKi9cbiAgZ2V0U2VsZWN0aW9uKGdldEFuY2hvciA9IGZhbHNlKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgIGxldCBzdGFydE5vZGUgPSBnZXRBbmNob3IgPyBzZWxlY3Rpb24uYW5jaG9yTm9kZSA6IHNlbGVjdGlvbi5mb2N1c05vZGU7XG4gICAgaWYgKCFzdGFydE5vZGUpIHJldHVybiBudWxsO1xuICAgIGxldCBvZmZzZXQgPSBnZXRBbmNob3IgPyBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0IDogc2VsZWN0aW9uLmZvY3VzT2Zmc2V0O1xuICAgIGlmIChzdGFydE5vZGUgPT0gdGhpcy5lKSB7XG4gICAgICBpZiAob2Zmc2V0ID09IDApIHJldHVybiB7IHJvdzogMCwgY29sOiAwIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICByb3c6IG9mZnNldCAtIDEsXG4gICAgICAgIGNvbDogdGhpcy5saW5lc1tvZmZzZXQgLSAxXS5sZW5ndGgsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGxldCBjb2wgPSB0aGlzLmNvbXB1dGVDb2x1bW4oc3RhcnROb2RlLCBvZmZzZXQpO1xuICAgIGlmIChjb2wgPT09IG51bGwpIHJldHVybiBudWxsOyAvLyBXZSBhcmUgb3V0c2lkZSBvZiB0aGUgZWRpdG9yXG5cbiAgICAvLyBGaW5kIHRoZSByb3cgbm9kZVxuICAgIGxldCBub2RlID0gc3RhcnROb2RlO1xuICAgIHdoaWxlIChub2RlLnBhcmVudEVsZW1lbnQgIT0gdGhpcy5lKSB7XG4gICAgICBub2RlID0gbm9kZS5wYXJlbnRFbGVtZW50O1xuICAgIH1cblxuICAgIGxldCByb3cgPSAwO1xuICAgIC8vIENoZWNrIGlmIHdlIGNhbiByZWFkIGEgbGluZSBudW1iZXIgZnJvbSB0aGUgZGF0YS1saW5lLW51bSBhdHRyaWJ1dGUuXG4gICAgLy8gVGhlIGxhc3QgY29uZGl0aW9uIGlzIGEgc2VjdXJpdHkgbWVhc3VyZSBzaW5jZSBpbnNlcnRpbmcgYSBuZXcgcGFyYWdyYXBoIGNvcGllcyB0aGUgcHJldmlvdXMgcm93cycgbGluZSBudW1iZXJcbiAgICBpZiAoXG4gICAgICBub2RlLmRhdGFzZXQgJiZcbiAgICAgIG5vZGUuZGF0YXNldC5saW5lTnVtICYmXG4gICAgICAoIW5vZGUucHJldmlvdXNTaWJsaW5nIHx8XG4gICAgICAgIG5vZGUucHJldmlvdXNTaWJsaW5nLmRhdGFzZXQubGluZU51bSAhPSBub2RlLmRhdGFzZXQubGluZU51bSlcbiAgICApIHtcbiAgICAgIHJvdyA9IHBhcnNlSW50KG5vZGUuZGF0YXNldC5saW5lTnVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2hpbGUgKG5vZGUucHJldmlvdXNTaWJsaW5nKSB7XG4gICAgICAgIHJvdysrO1xuICAgICAgICBub2RlID0gbm9kZS5wcmV2aW91c1NpYmxpbmc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHJvdzogcm93LCBjb2w6IGNvbCwgbm9kZTogc3RhcnROb2RlIH07XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgYSBjb2x1bW4gd2l0aGluIGFuIGVkaXRvciBsaW5lIGZyb20gYSBub2RlIGFuZCBvZmZzZXQgd2l0aGluIHRoYXQgbm9kZS5cbiAgICogQHBhcmFtIHtOb2RlfSBzdGFydE5vZGUgVGhlIG5vZGVcbiAgICogQHBhcmFtIHtpbnR9IG9mZnNldCBUSGUgc2VsZWN0aW9uXG4gICAqIEByZXR1cm5zIHtpbnR9IHRoZSBjb2x1bW4sIG9yIG51bGwgaWYgdGhlIG5vZGUgaXMgbm90IGluc2lkZSB0aGUgZWRpdG9yXG4gICAqL1xuICBjb21wdXRlQ29sdW1uKHN0YXJ0Tm9kZSwgb2Zmc2V0KSB7XG4gICAgbGV0IG5vZGUgPSBzdGFydE5vZGU7XG4gICAgbGV0IGNvbDtcbiAgICAvLyBGaXJzdCwgbWFrZSBzdXJlIHdlJ3JlIGFjdHVhbGx5IGluIHRoZSBlZGl0b3IuXG4gICAgd2hpbGUgKG5vZGUgJiYgbm9kZS5wYXJlbnROb2RlICE9IHRoaXMuZSkge1xuICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICB9XG4gICAgaWYgKG5vZGUgPT0gbnVsbCkgcmV0dXJuIG51bGw7XG5cbiAgICAvLyBUaGVyZSBhcmUgdHdvIHdheXMgdGhhdCBvZmZzZXQgY2FuIGJlIGRlZmluZWQ6XG4gICAgLy8gLSBFaXRoZXIsIHRoZSBub2RlIGlzIGEgdGV4dCBub2RlLCBpbiB3aGljaCBjYXNlIGl0IGlzIHRoZSBvZmZzZXQgd2l0aGluIHRoZSB0ZXh0XG4gICAgLy8gLSBPciwgdGhlIG5vZGUgaXMgYW4gZWxlbWVudCB3aXRoIGNoaWxkIG5vdGVzLCBpbiB3aGljaCBjYXNlIHRoZSBvZmZzZXQgcmVmZXJzIHRvIHRoZVxuICAgIC8vICAgY2hpbGQgbm9kZSBhZnRlciB3aGljaCB0aGUgc2VsZWN0aW9uIGlzIGxvY2F0ZWRcbiAgICBpZiAoc3RhcnROb2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSB8fCBvZmZzZXQgPT09IDApIHtcbiAgICAgIC8vIEluIHRoZSBjYXNlIHRoYXQgdGhlIG5vZGUgaXMgbm9uLXRleHQgbm9kZSBidXQgdGhlIG9mZnNldCBpcyAwLFxuICAgICAgLy8gVGhlIHNlbGVjdGlvbiBpcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoYXQgZWxlbWVudCBzbyB3ZVxuICAgICAgLy8gY2FuIHNpbXBseSB1c2UgdGhlIHNhbWUgYXBwcm9hY2ggYXMgaWYgaXQgd2VyZSBhdCB0aGUgYmVnaW5uaW5nXG4gICAgICAvLyBvZiBhIHRleHQgbm9kZS5cbiAgICAgIGNvbCA9IG9mZnNldDtcbiAgICAgIG5vZGUgPSBzdGFydE5vZGU7XG4gICAgfSBlbHNlIGlmIChvZmZzZXQgPiAwKSB7XG4gICAgICBub2RlID0gc3RhcnROb2RlLmNoaWxkTm9kZXNbb2Zmc2V0IC0gMV07XG4gICAgICBjb2wgPSBub2RlLnRleHRDb250ZW50Lmxlbmd0aDtcbiAgICB9XG4gICAgd2hpbGUgKG5vZGUucGFyZW50Tm9kZSAhPSB0aGlzLmUpIHtcbiAgICAgIGlmIChub2RlLnByZXZpb3VzU2libGluZykge1xuICAgICAgICBub2RlID0gbm9kZS5wcmV2aW91c1NpYmxpbmc7XG4gICAgICAgIGNvbCArPSBub2RlLnRleHRDb250ZW50Lmxlbmd0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb2w7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgRE9NIG5vZGUgYW5kIG9mZnNldCB3aXRoaW4gdGhhdCBub2RlIGZyb20gYSBwb3NpdGlvbiBleHByZXNzZWQgYXMgcm93IGFuZCBjb2x1bW4uXG4gICAqIEBwYXJhbSB7aW50fSByb3cgUm93IChsaW5lIG51bWJlcilcbiAgICogQHBhcmFtIHtpbnR9IGNvbCBDb2x1bW5cbiAgICogQHJldHVybnMgQW4gb2JqZWN0IHdpdGggdHdvIHByb3BlcnRpZXM6IG5vZGUgYW5kIG9mZnNldC4gb2Zmc2V0IG1heSBiZSBudWxsO1xuICAgKi9cbiAgY29tcHV0ZU5vZGVBbmRPZmZzZXQocm93LCBjb2wsIGJpbmRSaWdodCA9IGZhbHNlKSB7XG4gICAgaWYgKHJvdyA+PSB0aGlzLmxpbmVFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIC8vIFNlbGVjdGlvbiBwYXN0IHRoZSBlbmQgb2YgdGV4dCwgc2V0IHNlbGVjdGlvbiB0byBlbmQgb2YgdGV4dFxuICAgICAgcm93ID0gdGhpcy5saW5lRWxlbWVudHMubGVuZ3RoIC0gMTtcbiAgICAgIGNvbCA9IHRoaXMubGluZXNbcm93XS5sZW5ndGg7XG4gICAgfVxuICAgIGlmIChjb2wgPiB0aGlzLmxpbmVzW3Jvd10ubGVuZ3RoKSB7XG4gICAgICBjb2wgPSB0aGlzLmxpbmVzW3Jvd10ubGVuZ3RoO1xuICAgIH1cbiAgICBjb25zdCBwYXJlbnROb2RlID0gdGhpcy5saW5lRWxlbWVudHNbcm93XTtcbiAgICBsZXQgbm9kZSA9IHBhcmVudE5vZGUuZmlyc3RDaGlsZDtcblxuICAgIGxldCBjaGlsZHJlbkNvbXBsZXRlID0gZmFsc2U7XG4gICAgLy8gZGVmYXVsdCByZXR1cm4gdmFsdWVcbiAgICBsZXQgcnYgPSB7XG4gICAgICBub2RlOiBwYXJlbnROb2RlLmZpcnN0Q2hpbGQgPyBwYXJlbnROb2RlLmZpcnN0Q2hpbGQgOiBwYXJlbnROb2RlLFxuICAgICAgb2Zmc2V0OiAwLFxuICAgIH07XG5cbiAgICB3aGlsZSAobm9kZSAhPSBwYXJlbnROb2RlKSB7XG4gICAgICBpZiAoIWNoaWxkcmVuQ29tcGxldGUgJiYgbm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgICAgaWYgKG5vZGUubm9kZVZhbHVlLmxlbmd0aCA+PSBjb2wpIHtcbiAgICAgICAgICBpZiAoYmluZFJpZ2h0ICYmIG5vZGUubm9kZVZhbHVlLmxlbmd0aCA9PSBjb2wpIHtcbiAgICAgICAgICAgIC8vIFNlbGVjdGlvbiBpcyBhdCB0aGUgZW5kIG9mIHRoaXMgdGV4dCBub2RlLCBidXQgd2UgYXJlIGJpbmRpbmcgcmlnaHQgKHByZWZlciBhbiBvZmZzZXQgb2YgMCBpbiB0aGUgbmV4dCB0ZXh0IG5vZGUpXG4gICAgICAgICAgICAvLyBSZW1lbWJlciByZXR1cm4gdmFsdWUgaW4gY2FzZSB3ZSBkb24ndCBmaW5kIGFub3RoZXIgdGV4dCBub2RlXG4gICAgICAgICAgICBydiA9IHsgbm9kZTogbm9kZSwgb2Zmc2V0OiBjb2wgfTtcbiAgICAgICAgICAgIGNvbCA9IDA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7IG5vZGU6IG5vZGUsIG9mZnNldDogY29sIH07XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbCAtPSBub2RlLm5vZGVWYWx1ZS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghY2hpbGRyZW5Db21wbGV0ZSAmJiBub2RlLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgbm9kZSA9IG5vZGUuZmlyc3RDaGlsZDtcbiAgICAgIH0gZWxzZSBpZiAobm9kZS5uZXh0U2libGluZykge1xuICAgICAgICBjaGlsZHJlbkNvbXBsZXRlID0gZmFsc2U7XG4gICAgICAgIG5vZGUgPSBub2RlLm5leHRTaWJsaW5nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hpbGRyZW5Db21wbGV0ZSA9IHRydWU7XG4gICAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRWl0aGVyLCB0aGUgcG9zaXRpb24gd2FzIGludmFsaWQgYW5kIHdlIGp1c3QgcmV0dXJuIHRoZSBkZWZhdWx0IHJldHVybiB2YWx1ZVxuICAgIC8vIE9yIHdlIGFyZSBiaW5kaW5nIHJpZ2h0IGFuZCB0aGUgc2VsZWN0aW9uIGlzIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmVcbiAgICByZXR1cm4gcnY7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc2VsZWN0aW9uIGJhc2VkIG9uIHJvd3MgYW5kIGNvbHVtbnMgd2l0aGluIHRoZSBlZGl0b3IgTWFya2Rvd24gY29udGVudC5cbiAgICogQHBhcmFtIHtvYmplY3R9IGZvY3VzIE9iamVjdCByZXByZXNlbnRpbmcgdGhlIHNlbGVjdGlvbiwgbmVlZHMgdG8gaGF2ZSBwcm9wZXJ0aWVzIHJvdyBhbmQgY29sLlxuICAgKiBAcGFyYW0gYW5jaG9yIEFuY2hvciBvZiB0aGUgc2VsZWN0aW9uLiBJZiBub3QgZ2l2ZW4sIGFzc3VtZXMgdGhlIGN1cnJlbnQgYW5jaG9yLlxuICAgKi9cbiAgc2V0U2VsZWN0aW9uKGZvY3VzLCBhbmNob3IgPSBudWxsKSB7XG4gICAgaWYgKCFmb2N1cykgcmV0dXJuO1xuXG4gICAgbGV0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcblxuICAgIGxldCB7IG5vZGU6IGZvY3VzTm9kZSwgb2Zmc2V0OiBmb2N1c09mZnNldCB9ID0gdGhpcy5jb21wdXRlTm9kZUFuZE9mZnNldChcbiAgICAgIGZvY3VzLnJvdyxcbiAgICAgIGZvY3VzLmNvbCxcbiAgICAgIGFuY2hvciAmJiBhbmNob3Iucm93ID09IGZvY3VzLnJvdyAmJiBhbmNob3IuY29sID4gZm9jdXMuY29sXG4gICAgKTsgLy8gQmluZCBzZWxlY3Rpb24gcmlnaHQgaWYgYW5jaG9yIGlzIGluIHRoZSBzYW1lIHJvdyBhbmQgYmVoaW5kIHRoZSBmb2N1c1xuICAgIGxldCBhbmNob3JOb2RlID0gbnVsbCxcbiAgICAgIGFuY2hvck9mZnNldCA9IG51bGw7XG4gICAgaWYgKGFuY2hvciAmJiAoYW5jaG9yLnJvdyAhPSBmb2N1cy5yb3cgfHwgYW5jaG9yLmNvbCAhPSBmb2N1cy5jb2wpKSB7XG4gICAgICBsZXQgeyBub2RlLCBvZmZzZXQgfSA9IHRoaXMuY29tcHV0ZU5vZGVBbmRPZmZzZXQoXG4gICAgICAgIGFuY2hvci5yb3csXG4gICAgICAgIGFuY2hvci5jb2wsXG4gICAgICAgIGZvY3VzLnJvdyA9PSBhbmNob3Iucm93ICYmIGZvY3VzLmNvbCA+IGFuY2hvci5jb2xcbiAgICAgICk7XG4gICAgICBhbmNob3JOb2RlID0gbm9kZTtcbiAgICAgIGFuY2hvck9mZnNldCA9IG9mZnNldDtcbiAgICB9XG5cbiAgICBpZiAoYW5jaG9yTm9kZSkgcmFuZ2Uuc2V0U3RhcnQoYW5jaG9yTm9kZSwgYW5jaG9yT2Zmc2V0KTtcbiAgICBlbHNlIHJhbmdlLnNldFN0YXJ0KGZvY3VzTm9kZSwgZm9jdXNPZmZzZXQpO1xuICAgIHJhbmdlLnNldEVuZChmb2N1c05vZGUsIGZvY3VzT2Zmc2V0KTtcblxuICAgIGxldCB3aW5kb3dTZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgd2luZG93U2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIHdpbmRvd1NlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7XG4gIH1cblxuICAvKipcbiAgICogRXZlbnQgaGFuZGxlciBmb3IgaW5wdXQgZXZlbnRzXG4gICAqL1xuICBoYW5kbGVJbnB1dEV2ZW50KGV2ZW50KSB7XG4gICAgLy8gRm9yIGNvbXBvc2l0aW9uIGlucHV0LCB3ZSBhcmUgb25seSB1cGRhdGluZyB0aGUgdGV4dCBhZnRlciB3ZSBoYXZlIHJlY2VpdmVkXG4gICAgLy8gYSBjb21wb3NpdGlvbmVuZCBldmVudCwgc28gd2UgcmV0dXJuIHVwb24gaW5zZXJ0Q29tcG9zaXRpb25UZXh0LlxuICAgIC8vIE90aGVyd2lzZSwgdGhlIERPTSBjaGFuZ2VzIGJyZWFrIHRoZSB0ZXh0IGlucHV0LlxuICAgIGlmIChldmVudC5pbnB1dFR5cGUgPT0gXCJpbnNlcnRDb21wb3NpdGlvblRleHRcIikgcmV0dXJuO1xuXG4gICAgbGV0IGZvY3VzID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcblxuICAgIGlmIChcbiAgICAgIChldmVudC5pbnB1dFR5cGUgPT0gXCJpbnNlcnRQYXJhZ3JhcGhcIiB8fFxuICAgICAgICBldmVudC5pbnB1dFR5cGUgPT0gXCJpbnNlcnRMaW5lQnJlYWtcIikgJiZcbiAgICAgIGZvY3VzXG4gICAgKSB7XG4gICAgICB0aGlzLmNsZWFyRGlydHlGbGFnKCk7XG4gICAgICB0aGlzLnByb2Nlc3NOZXdQYXJhZ3JhcGgoZm9jdXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMuZS5maXJzdENoaWxkKSB7XG4gICAgICAgIHRoaXMuZS5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz1cIlRNQmxhbmtMaW5lXCI+PGJyPjwvZGl2Pic7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZpeE5vZGVIaWVyYXJjaHkoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlTGluZUNvbnRlbnRzQW5kRm9ybWF0dGluZygpO1xuICAgIH1cbiAgICBpZiAoZm9jdXMpIHtcbiAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKGZvY3VzKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpcmVDaGFuZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXhlcyB0aGUgbm9kZSBoaWVyYXJjaHkg4oCTIG1ha2VzIHN1cmUgdGhhdCBlYWNoIGxpbmUgaXMgaW4gYSBkaXYsIGFuZCB0aGVyZSBhcmUgbm8gbmVzdGVkIGRpdnNcbiAgICovXG4gIGZpeE5vZGVIaWVyYXJjaHkoKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxDaGlsZHJlbiA9IEFycmF5LmZyb20odGhpcy5lLmNoaWxkTm9kZXMpO1xuXG4gICAgY29uc3QgcmVwbGFjZUNoaWxkID0gKGNoaWxkLCAuLi5uZXdDaGlsZHJlbikgPT4ge1xuICAgICAgY29uc3QgcGFyZW50ID0gY2hpbGQucGFyZW50RWxlbWVudDtcbiAgICAgIGNvbnN0IG5leHRTaWJsaW5nID0gY2hpbGQubmV4dFNpYmxpbmc7XG4gICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQoY2hpbGQpO1xuICAgICAgbmV3Q2hpbGRyZW4uZm9yRWFjaCgobmV3Q2hpbGQpID0+XG4gICAgICAgIG5leHRTaWJsaW5nXG4gICAgICAgICAgPyBwYXJlbnQuaW5zZXJ0QmVmb3JlKG5leHRTaWJsaW5nLCBuZXdDaGlsZClcbiAgICAgICAgICA6IHBhcmVudC5hcHBlbmRDaGlsZChuZXdDaGlsZClcbiAgICAgICk7XG4gICAgfTtcblxuICAgIG9yaWdpbmFsQ2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgIC8vIGNoaWxkLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoY2hpbGQpO1xuICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlICE9PSBOb2RlLkVMRU1FTlRfTk9ERSB8fCBjaGlsZC50YWdOYW1lICE9PSBcIkRJVlwiKSB7XG4gICAgICAgIC8vIEZvdW5kIGEgY2hpbGQgbm9kZSB0aGF0J3MgZWl0aGVyIG5vdCBhbiBlbGVtZW50IG9yIG5vdCBhIGRpdi4gV3JhcCBpdCBpbiBhIGRpdi5cbiAgICAgICAgY29uc3QgZGl2V3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgIHJlcGxhY2VDaGlsZChjaGlsZCwgZGl2V3JhcHBlcik7XG4gICAgICAgIGRpdldyYXBwZXIuYXBwZW5kQ2hpbGQoY2hpbGQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZ3JhbmRDaGlsZHJlbiA9IEFycmF5LmZyb20oY2hpbGQuY2hpbGROb2Rlcyk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBncmFuZENoaWxkcmVuLnNvbWUoXG4gICAgICAgICAgICAoZ3JhbmRDaGlsZCkgPT5cbiAgICAgICAgICAgICAgZ3JhbmRDaGlsZC5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiZcbiAgICAgICAgICAgICAgZ3JhbmRDaGlsZC50YWdOYW1lID09PSBcIkRJVlwiXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gcmVwbGFjZUNoaWxkKGNoaWxkLCBncmFuZENoaWxkcmVuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2ZW50IGhhbmRsZXIgZm9yIFwic2VsZWN0aW9uY2hhbmdlXCIgZXZlbnRzLlxuICAgKi9cbiAgaGFuZGxlU2VsZWN0aW9uQ2hhbmdlRXZlbnQoKSB7XG4gICAgdGhpcy5maXJlU2VsZWN0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gXCJzcGxpY2VcIiBuZXcgbGluZXMgaW50byB0aGUgYXJyYXlzIHRoaXMubGluZXMsIHRoaXMubGluZURpcnR5LCB0aGlzLmxpbmVUeXBlcywgYW5kIHRoZSBET00gZWxlbWVudHNcbiAgICogdW5kZXJuZWF0aCB0aGUgZWRpdG9yIGVsZW1lbnQuXG4gICAqIFRoaXMgbWV0aG9kIGlzIGVzc2VudGlhbGx5IEFycmF5LnNwbGljZSwgb25seSB0aGF0IHRoZSB0aGlyZCBwYXJhbWV0ZXIgdGFrZXMgYW4gdW4tc3ByZWFkIGFycmF5IChhbmQgdGhlIGZvcnRoIHBhcmFtZXRlcilcbiAgICogZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBET00gc2hvdWxkIGFsc28gYmUgYWRqdXN0ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7aW50fSBzdGFydExpbmUgUG9zaXRpb24gYXQgd2hpY2ggdG8gc3RhcnQgY2hhbmdpbmcgdGhlIGFycmF5IG9mIGxpbmVzXG4gICAqIEBwYXJhbSB7aW50fSBsaW5lc1RvRGVsZXRlIE51bWJlciBvZiBsaW5lcyB0byBkZWxldGVcbiAgICogQHBhcmFtIHthcnJheX0gbGluZXNUb0luc2VydCBBcnJheSBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgbGluZXMgdG8gYmUgaW5zZXJ0ZWRcbiAgICogQHBhcmFtIHtib29sZWFufSBhZGp1c3RMaW5lRWxlbWVudHMgSWYgdHJ1ZSwgdGhlbiA8ZGl2PiBlbGVtZW50cyBhcmUgYWxzbyBpbnNlcnRlZCBpbiB0aGUgRE9NIGF0IHRoZSByZXNwZWN0aXZlIHBvc2l0aW9uXG4gICAqL1xuICBzcGxpY2VMaW5lcyhcbiAgICBzdGFydExpbmUsXG4gICAgbGluZXNUb0RlbGV0ZSA9IDAsXG4gICAgbGluZXNUb0luc2VydCA9IFtdLFxuICAgIGFkanVzdExpbmVFbGVtZW50cyA9IHRydWVcbiAgKSB7XG4gICAgaWYgKGFkanVzdExpbmVFbGVtZW50cykge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lc1RvRGVsZXRlOyBpKyspIHtcbiAgICAgICAgdGhpcy5lLnJlbW92ZUNoaWxkKHRoaXMuZS5jaGlsZE5vZGVzW3N0YXJ0TGluZV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBpbnNlcnRlZEJsYW5rID0gW107XG4gICAgbGV0IGluc2VydGVkRGlydHkgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXNUb0luc2VydC5sZW5ndGg7IGkrKykge1xuICAgICAgaW5zZXJ0ZWRCbGFuay5wdXNoKFwiXCIpO1xuICAgICAgaW5zZXJ0ZWREaXJ0eS5wdXNoKHRydWUpO1xuICAgICAgaWYgKGFkanVzdExpbmVFbGVtZW50cykge1xuICAgICAgICBpZiAodGhpcy5lLmNoaWxkTm9kZXNbc3RhcnRMaW5lXSlcbiAgICAgICAgICB0aGlzLmUuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxcbiAgICAgICAgICAgIHRoaXMuZS5jaGlsZE5vZGVzW3N0YXJ0TGluZV1cbiAgICAgICAgICApO1xuICAgICAgICBlbHNlIHRoaXMuZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxpbmVzLnNwbGljZShzdGFydExpbmUsIGxpbmVzVG9EZWxldGUsIC4uLmxpbmVzVG9JbnNlcnQpO1xuICAgIHRoaXMubGluZVR5cGVzLnNwbGljZShzdGFydExpbmUsIGxpbmVzVG9EZWxldGUsIC4uLmluc2VydGVkQmxhbmspO1xuICAgIHRoaXMubGluZURpcnR5LnNwbGljZShzdGFydExpbmUsIGxpbmVzVG9EZWxldGUsIC4uLmluc2VydGVkRGlydHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2ZW50IGhhbmRsZXIgZm9yIHRoZSBcInBhc3RlXCIgZXZlbnRcbiAgICovXG4gIGhhbmRsZVBhc3RlKGV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIC8vIGdldCB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIGNsaXBib2FyZFxuICAgIGxldCB0ZXh0ID0gKGV2ZW50Lm9yaWdpbmFsRXZlbnQgfHwgZXZlbnQpLmNsaXBib2FyZERhdGEuZ2V0RGF0YShcbiAgICAgIFwidGV4dC9wbGFpblwiXG4gICAgKTtcblxuICAgIC8vIGluc2VydCB0ZXh0IG1hbnVhbGx5XG4gICAgdGhpcy5wYXN0ZSh0ZXh0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXN0ZXMgdGhlIHRleHQgYXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIChvciBhdCB0aGUgZW5kLCBpZiBubyBjdXJyZW50IHNlbGVjdGlvbilcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHRcbiAgICovXG4gIHBhc3RlKHRleHQsIGFuY2hvciA9IG51bGwsIGZvY3VzID0gbnVsbCkge1xuICAgIGlmICghYW5jaG9yKSBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICBpZiAoIWZvY3VzKSBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKGZhbHNlKTtcbiAgICBsZXQgYmVnaW5uaW5nLCBlbmQ7XG4gICAgaWYgKCFmb2N1cykge1xuICAgICAgZm9jdXMgPSB7XG4gICAgICAgIHJvdzogdGhpcy5saW5lcy5sZW5ndGggLSAxLFxuICAgICAgICBjb2w6IHRoaXMubGluZXNbdGhpcy5saW5lcy5sZW5ndGggLSAxXS5sZW5ndGgsXG4gICAgICB9OyAvLyBJbnNlcnQgYXQgZW5kXG4gICAgfVxuICAgIGlmICghYW5jaG9yKSB7XG4gICAgICBhbmNob3IgPSBmb2N1cztcbiAgICB9XG4gICAgaWYgKFxuICAgICAgYW5jaG9yLnJvdyA8IGZvY3VzLnJvdyB8fFxuICAgICAgKGFuY2hvci5yb3cgPT0gZm9jdXMucm93ICYmIGFuY2hvci5jb2wgPD0gZm9jdXMuY29sKVxuICAgICkge1xuICAgICAgYmVnaW5uaW5nID0gYW5jaG9yO1xuICAgICAgZW5kID0gZm9jdXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJlZ2lubmluZyA9IGZvY3VzO1xuICAgICAgZW5kID0gYW5jaG9yO1xuICAgIH1cbiAgICBsZXQgaW5zZXJ0ZWRMaW5lcyA9IHRleHQuc3BsaXQoLyg/OlxcclxcbnxcXHJ8XFxuKS8pO1xuICAgIGxldCBsaW5lQmVmb3JlID0gdGhpcy5saW5lc1tiZWdpbm5pbmcucm93XS5zdWJzdHIoMCwgYmVnaW5uaW5nLmNvbCk7XG4gICAgbGV0IGxpbmVFbmQgPSB0aGlzLmxpbmVzW2VuZC5yb3ddLnN1YnN0cihlbmQuY29sKTtcbiAgICBpbnNlcnRlZExpbmVzWzBdID0gbGluZUJlZm9yZS5jb25jYXQoaW5zZXJ0ZWRMaW5lc1swXSk7XG4gICAgbGV0IGVuZENvbFBvcyA9IGluc2VydGVkTGluZXNbaW5zZXJ0ZWRMaW5lcy5sZW5ndGggLSAxXS5sZW5ndGg7XG4gICAgaW5zZXJ0ZWRMaW5lc1tpbnNlcnRlZExpbmVzLmxlbmd0aCAtIDFdID1cbiAgICAgIGluc2VydGVkTGluZXNbaW5zZXJ0ZWRMaW5lcy5sZW5ndGggLSAxXS5jb25jYXQobGluZUVuZCk7XG4gICAgdGhpcy5zcGxpY2VMaW5lcyhiZWdpbm5pbmcucm93LCAxICsgZW5kLnJvdyAtIGJlZ2lubmluZy5yb3csIGluc2VydGVkTGluZXMpO1xuICAgIGZvY3VzLnJvdyA9IGJlZ2lubmluZy5yb3cgKyBpbnNlcnRlZExpbmVzLmxlbmd0aCAtIDE7XG4gICAgZm9jdXMuY29sID0gZW5kQ29sUG9zO1xuICAgIHRoaXMudXBkYXRlRm9ybWF0dGluZygpO1xuICAgIHRoaXMuc2V0U2VsZWN0aW9uKGZvY3VzKTtcbiAgICB0aGlzLmZpcmVDaGFuZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgKGxvd2VzdCBpbiB0aGUgRE9NIHRyZWUpIGNvbW1vbiBhbmNlc3RvciBvZiB0d28gRE9NIG5vZGVzLlxuICAgKiBAcGFyYW0ge05vZGV9IG5vZGUxIHRoZSBmaXJzdCBub2RlXG4gICAqIEBwYXJhbSB7Tm9kZX0gbm9kZTIgdGhlIHNlY29uZCBub2RlXG4gICAqIEByZXR1cm5zIHtOb2RlfSBUaGUgY29tbWVuIGFuY2VzdG9yIG5vZGUsIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gY29tbW9uIGFuY2VzdG9yXG4gICAqL1xuICBjb21wdXRlQ29tbW9uQW5jZXN0b3Iobm9kZTEsIG5vZGUyKSB7XG4gICAgaWYgKCFub2RlMSB8fCAhbm9kZTIpIHJldHVybiBudWxsO1xuICAgIGlmIChub2RlMSA9PSBub2RlMikgcmV0dXJuIG5vZGUxO1xuICAgIGNvbnN0IGFuY2VzdHJ5ID0gKG5vZGUpID0+IHtcbiAgICAgIGxldCBhbmNlc3RyeSA9IFtdO1xuICAgICAgd2hpbGUgKG5vZGUpIHtcbiAgICAgICAgYW5jZXN0cnkudW5zaGlmdChub2RlKTtcbiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhbmNlc3RyeTtcbiAgICB9O1xuXG4gICAgY29uc3QgYW5jZXN0cnkxID0gYW5jZXN0cnkobm9kZTEpO1xuICAgIGNvbnN0IGFuY2VzdHJ5MiA9IGFuY2VzdHJ5KG5vZGUyKTtcblxuICAgIGlmIChhbmNlc3RyeTFbMF0gIT0gYW5jZXN0cnkyWzBdKSByZXR1cm4gbnVsbDtcbiAgICBsZXQgaTtcbiAgICBmb3IgKGkgPSAwOyBhbmNlc3RyeTFbaV0gPT0gYW5jZXN0cnkyW2ldOyBpKyspO1xuICAgIHJldHVybiBhbmNlc3RyeTFbaSAtIDFdO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIHRoZSAobG93ZXN0IGluIHRoZSBET00gdHJlZSkgZW5jbG9zaW5nIERPTSBub2RlIHdpdGggYSBnaXZlbiBjbGFzcy5cbiAgICogQHBhcmFtIHtvYmplY3R9IGZvY3VzIFRoZSBmb2N1cyBzZWxlY3Rpb24gb2JqZWN0XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhbmNob3IgVGhlIGFuY2hvciBzZWxlY3Rpb24gb2JqZWN0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWUgVGhlIGNsYXNzIG5hbWUgdG8gZmluZFxuICAgKiBAcmV0dXJucyB7Tm9kZX0gVGhlIGVuY2xvc2luZyBET00gbm9kZSB3aXRoIHRoZSByZXNwZWN0aXZlIGNsYXNzIChpbnNpZGUgdGhlIGVkaXRvciksIGlmIHRoZXJlIGlzIG9uZTsgbnVsbCBvdGhlcndpc2UuXG4gICAqL1xuICBjb21wdXRlRW5jbG9zaW5nTWFya3VwTm9kZShmb2N1cywgYW5jaG9yLCBjbGFzc05hbWUpIHtcbiAgICBsZXQgbm9kZSA9IG51bGw7XG4gICAgaWYgKCFmb2N1cykgcmV0dXJuIG51bGw7XG4gICAgaWYgKCFhbmNob3IpIHtcbiAgICAgIG5vZGUgPSBmb2N1cy5ub2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZm9jdXMucm93ICE9IGFuY2hvci5yb3cpIHJldHVybiBudWxsO1xuICAgICAgbm9kZSA9IHRoaXMuY29tcHV0ZUNvbW1vbkFuY2VzdG9yKGZvY3VzLm5vZGUsIGFuY2hvci5ub2RlKTtcbiAgICB9XG4gICAgaWYgKCFub2RlKSByZXR1cm4gbnVsbDtcbiAgICB3aGlsZSAobm9kZSAhPSB0aGlzLmUpIHtcbiAgICAgIGlmIChub2RlLmNsYXNzTmFtZSAmJiBub2RlLmNsYXNzTmFtZS5pbmNsdWRlcyhjbGFzc05hbWUpKSByZXR1cm4gbm9kZTtcbiAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgfVxuICAgIC8vIEFzY2VuZGVkIGFsbCB0aGUgd2F5IHRvIHRoZSBlZGl0b3IgZWxlbWVudFxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHN0YXRlICh0cnVlIC8gZmFsc2UpIG9mIGFsbCBjb21tYW5kcy5cbiAgICogQHBhcmFtIGZvY3VzIEZvY3VzIG9mIHRoZSBzZWxlY3Rpb24uIElmIG5vdCBnaXZlbiwgYXNzdW1lcyB0aGUgY3VycmVudCBmb2N1cy5cbiAgICogQHBhcmFtIGFuY2hvciBBbmNob3Igb2YgdGhlIHNlbGVjdGlvbi4gSWYgbm90IGdpdmVuLCBhc3N1bWVzIHRoZSBjdXJyZW50IGFuY2hvci5cbiAgICovXG4gIGdldENvbW1hbmRTdGF0ZShmb2N1cyA9IG51bGwsIGFuY2hvciA9IG51bGwpIHtcbiAgICBsZXQgY29tbWFuZFN0YXRlID0ge307XG4gICAgaWYgKCFmb2N1cykgZm9jdXMgPSB0aGlzLmdldFNlbGVjdGlvbihmYWxzZSk7XG4gICAgaWYgKCFhbmNob3IpIGFuY2hvciA9IHRoaXMuZ2V0U2VsZWN0aW9uKHRydWUpO1xuICAgIGlmICghZm9jdXMpIHtcbiAgICAgIGZvciAobGV0IGNtZCBpbiBjb21tYW5kcykge1xuICAgICAgICBjb21tYW5kU3RhdGVbY21kXSA9IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29tbWFuZFN0YXRlO1xuICAgIH1cbiAgICBpZiAoIWFuY2hvcikgYW5jaG9yID0gZm9jdXM7XG5cbiAgICBsZXQgc3RhcnQsIGVuZDtcbiAgICBpZiAoXG4gICAgICBhbmNob3Iucm93IDwgZm9jdXMucm93IHx8XG4gICAgICAoYW5jaG9yLnJvdyA9PSBmb2N1cy5yb3cgJiYgYW5jaG9yLmNvbCA8IGZvY3VzLmNvbClcbiAgICApIHtcbiAgICAgIHN0YXJ0ID0gYW5jaG9yO1xuICAgICAgZW5kID0gZm9jdXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXJ0ID0gZm9jdXM7XG4gICAgICBlbmQgPSBhbmNob3I7XG4gICAgfVxuICAgIGlmIChlbmQucm93ID4gc3RhcnQucm93ICYmIGVuZC5jb2wgPT0gMCkge1xuICAgICAgZW5kLnJvdy0tO1xuICAgICAgZW5kLmNvbCA9IHRoaXMubGluZXNbZW5kLnJvd10ubGVuZ3RoOyAvLyBTZWxlY3Rpb24gdG8gYmVnaW5uaW5nIG9mIG5leHQgbGluZSBpcyBzYWlkIHRvIGVuZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsYXN0IGxpbmVcbiAgICB9XG5cbiAgICBmb3IgKGxldCBjbWQgaW4gY29tbWFuZHMpIHtcbiAgICAgIGlmIChjb21tYW5kc1tjbWRdLnR5cGUgPT0gXCJpbmxpbmVcIikge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIWZvY3VzIHx8XG4gICAgICAgICAgZm9jdXMucm93ICE9IGFuY2hvci5yb3cgfHxcbiAgICAgICAgICAhdGhpcy5pc0lubGluZUZvcm1hdHRpbmdBbGxvd2VkKGZvY3VzLCBhbmNob3IpXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbW1hbmRTdGF0ZVtjbWRdID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBUaGUgY29tbWFuZCBzdGF0ZSBpcyB0cnVlIGlmIHRoZXJlIGlzIGEgcmVzcGVjdGl2ZSBlbmNsb3NpbmcgbWFya3VwIG5vZGUgKGUuZy4sIHRoZSBzZWxlY3Rpb24gaXMgZW5jbG9zZWQgaW4gYSA8Yj4uLjwvYj4pIC4uLlxuICAgICAgICAgIGNvbW1hbmRTdGF0ZVtjbWRdID1cbiAgICAgICAgICAgICEhdGhpcy5jb21wdXRlRW5jbG9zaW5nTWFya3VwTm9kZShcbiAgICAgICAgICAgICAgZm9jdXMsXG4gICAgICAgICAgICAgIGFuY2hvcixcbiAgICAgICAgICAgICAgY29tbWFuZHNbY21kXS5jbGFzc05hbWVcbiAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgIC8vIC4uLiBvciBpZiBpdCdzIGFuIGVtcHR5IHN0cmluZyBwcmVjZWRlZCBieSBhbmQgZm9sbG93ZWQgYnkgZm9ybWF0dGluZyBtYXJrZXJzLCBlLmcuICoqfCoqIHdoZXJlIHwgaXMgdGhlIGN1cnNvclxuICAgICAgICAgICAgKGZvY3VzLmNvbCA9PSBhbmNob3IuY29sICYmXG4gICAgICAgICAgICAgICEhdGhpcy5saW5lc1tmb2N1cy5yb3ddXG4gICAgICAgICAgICAgICAgLnN1YnN0cigwLCBmb2N1cy5jb2wpXG4gICAgICAgICAgICAgICAgLm1hdGNoKGNvbW1hbmRzW2NtZF0udW5zZXQucHJlUGF0dGVybikgJiZcbiAgICAgICAgICAgICAgISF0aGlzLmxpbmVzW2ZvY3VzLnJvd11cbiAgICAgICAgICAgICAgICAuc3Vic3RyKGZvY3VzLmNvbClcbiAgICAgICAgICAgICAgICAubWF0Y2goY29tbWFuZHNbY21kXS51bnNldC5wb3N0UGF0dGVybikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY29tbWFuZHNbY21kXS50eXBlID09IFwibGluZVwiKSB7XG4gICAgICAgIGlmICghZm9jdXMpIHtcbiAgICAgICAgICBjb21tYW5kU3RhdGVbY21kXSA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5saW5lVHlwZXNbc3RhcnQucm93XSA9PSBjb21tYW5kc1tjbWRdLmNsYXNzTmFtZTtcblxuICAgICAgICAgIGZvciAobGV0IGxpbmUgPSBzdGFydC5yb3c7IGxpbmUgPD0gZW5kLnJvdzsgbGluZSsrKSB7XG4gICAgICAgICAgICBpZiAoKHRoaXMubGluZVR5cGVzW2xpbmVdID09IGNvbW1hbmRzW2NtZF0uY2xhc3NOYW1lKSAhPSBzdGF0ZSkge1xuICAgICAgICAgICAgICBzdGF0ZSA9IG51bGw7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb21tYW5kU3RhdGVbY21kXSA9IHN0YXRlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb21tYW5kU3RhdGU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhIGNvbW1hbmQgc3RhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbW1hbmRcbiAgICogQHBhcmFtIHtib29sZWFufSBzdGF0ZVxuICAgKi9cbiAgc2V0Q29tbWFuZFN0YXRlKGNvbW1hbmQsIHN0YXRlKSB7XG4gICAgaWYgKGNvbW1hbmRzW2NvbW1hbmRdLnR5cGUgPT0gXCJpbmxpbmVcIikge1xuICAgICAgbGV0IGFuY2hvciA9IHRoaXMuZ2V0U2VsZWN0aW9uKHRydWUpO1xuICAgICAgbGV0IGZvY3VzID0gdGhpcy5nZXRTZWxlY3Rpb24oZmFsc2UpO1xuICAgICAgaWYgKCFhbmNob3IpIGFuY2hvciA9IGZvY3VzO1xuICAgICAgaWYgKCFhbmNob3IpIHJldHVybjtcbiAgICAgIGlmIChhbmNob3Iucm93ICE9IGZvY3VzLnJvdykgcmV0dXJuO1xuICAgICAgaWYgKCF0aGlzLmlzSW5saW5lRm9ybWF0dGluZ0FsbG93ZWQoZm9jdXMsIGFuY2hvcikpIHJldHVybjtcbiAgICAgIGxldCBtYXJrdXBOb2RlID0gdGhpcy5jb21wdXRlRW5jbG9zaW5nTWFya3VwTm9kZShcbiAgICAgICAgZm9jdXMsXG4gICAgICAgIGFuY2hvcixcbiAgICAgICAgY29tbWFuZHNbY29tbWFuZF0uY2xhc3NOYW1lXG4gICAgICApO1xuICAgICAgdGhpcy5jbGVhckRpcnR5RmxhZygpO1xuXG4gICAgICAvLyBGaXJzdCBjYXNlOiBUaGVyZSdzIGFuIGVuY2xvc2luZyBtYXJrdXAgbm9kZSwgcmVtb3ZlIHRoZSBtYXJrZXJzIGFyb3VuZCB0aGF0IG1hcmt1cCBub2RlXG4gICAgICBpZiAobWFya3VwTm9kZSkge1xuICAgICAgICB0aGlzLmxpbmVEaXJ0eVtmb2N1cy5yb3ddID0gdHJ1ZTtcbiAgICAgICAgY29uc3Qgc3RhcnRDb2wgPSB0aGlzLmNvbXB1dGVDb2x1bW4obWFya3VwTm9kZSwgMCk7XG4gICAgICAgIGNvbnN0IGxlbiA9IG1hcmt1cE5vZGUudGV4dENvbnRlbnQubGVuZ3RoO1xuICAgICAgICBjb25zdCBsZWZ0ID0gdGhpcy5saW5lc1tmb2N1cy5yb3ddXG4gICAgICAgICAgLnN1YnN0cigwLCBzdGFydENvbClcbiAgICAgICAgICAucmVwbGFjZShjb21tYW5kc1tjb21tYW5kXS51bnNldC5wcmVQYXR0ZXJuLCBcIlwiKTtcbiAgICAgICAgY29uc3QgbWlkID0gdGhpcy5saW5lc1tmb2N1cy5yb3ddLnN1YnN0cihzdGFydENvbCwgbGVuKTtcbiAgICAgICAgY29uc3QgcmlnaHQgPSB0aGlzLmxpbmVzW2ZvY3VzLnJvd11cbiAgICAgICAgICAuc3Vic3RyKHN0YXJ0Q29sICsgbGVuKVxuICAgICAgICAgIC5yZXBsYWNlKGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnBvc3RQYXR0ZXJuLCBcIlwiKTtcbiAgICAgICAgdGhpcy5saW5lc1tmb2N1cy5yb3ddID0gbGVmdC5jb25jYXQobWlkLCByaWdodCk7XG4gICAgICAgIGFuY2hvci5jb2wgPSBsZWZ0Lmxlbmd0aDtcbiAgICAgICAgZm9jdXMuY29sID0gYW5jaG9yLmNvbCArIGxlbjtcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtYXR0aW5nKCk7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKGZvY3VzLCBhbmNob3IpO1xuICAgICAgICB0aGlzLmZpcmVDaGFuZ2UoKTtcblxuICAgICAgICAvLyBTZWNvbmQgY2FzZTogRW1wdHkgc2VsZWN0aW9uIHdpdGggc3Vycm91bmRpbmcgZm9ybWF0dGluZyBtYXJrZXJzLCByZW1vdmUgdGhvc2VcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGZvY3VzLmNvbCA9PSBhbmNob3IuY29sICYmXG4gICAgICAgICEhdGhpcy5saW5lc1tmb2N1cy5yb3ddXG4gICAgICAgICAgLnN1YnN0cigwLCBmb2N1cy5jb2wpXG4gICAgICAgICAgLm1hdGNoKGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnByZVBhdHRlcm4pICYmXG4gICAgICAgICEhdGhpcy5saW5lc1tmb2N1cy5yb3ddXG4gICAgICAgICAgLnN1YnN0cihmb2N1cy5jb2wpXG4gICAgICAgICAgLm1hdGNoKGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnBvc3RQYXR0ZXJuKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubGluZURpcnR5W2ZvY3VzLnJvd10gPSB0cnVlO1xuICAgICAgICBjb25zdCBsZWZ0ID0gdGhpcy5saW5lc1tmb2N1cy5yb3ddXG4gICAgICAgICAgLnN1YnN0cigwLCBmb2N1cy5jb2wpXG4gICAgICAgICAgLnJlcGxhY2UoY29tbWFuZHNbY29tbWFuZF0udW5zZXQucHJlUGF0dGVybiwgXCJcIik7XG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gdGhpcy5saW5lc1tmb2N1cy5yb3ddXG4gICAgICAgICAgLnN1YnN0cihmb2N1cy5jb2wpXG4gICAgICAgICAgLnJlcGxhY2UoY29tbWFuZHNbY29tbWFuZF0udW5zZXQucG9zdFBhdHRlcm4sIFwiXCIpO1xuICAgICAgICB0aGlzLmxpbmVzW2ZvY3VzLnJvd10gPSBsZWZ0LmNvbmNhdChyaWdodCk7XG4gICAgICAgIGZvY3VzLmNvbCA9IGFuY2hvci5jb2wgPSBsZWZ0Lmxlbmd0aDtcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtYXR0aW5nKCk7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKGZvY3VzLCBhbmNob3IpO1xuICAgICAgICB0aGlzLmZpcmVDaGFuZ2UoKTtcblxuICAgICAgICAvLyBOb3QgY3VycmVudGx5IGZvcm1hdHRlZCwgaW5zZXJ0IGZvcm1hdHRpbmcgbWFya2Vyc1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVHJpbSBhbnkgc3BhY2VzIGZyb20gdGhlIHNlbGVjdGlvblxuICAgICAgICBsZXQgeyBzdGFydENvbCwgZW5kQ29sIH0gPVxuICAgICAgICAgIGZvY3VzLmNvbCA8IGFuY2hvci5jb2xcbiAgICAgICAgICAgID8geyBzdGFydENvbDogZm9jdXMuY29sLCBlbmRDb2w6IGFuY2hvci5jb2wgfVxuICAgICAgICAgICAgOiB7IHN0YXJ0Q29sOiBhbmNob3IuY29sLCBlbmRDb2w6IGZvY3VzLmNvbCB9O1xuXG4gICAgICAgIGxldCBtYXRjaCA9IHRoaXMubGluZXNbZm9jdXMucm93XVxuICAgICAgICAgIC5zdWJzdHIoc3RhcnRDb2wsIGVuZENvbCAtIHN0YXJ0Q29sKVxuICAgICAgICAgIC5tYXRjaCgvXig/PGxlYWRpbmc+XFxzKikuKlxcUyg/PHRyYWlsaW5nPlxccyopJC8pO1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICBzdGFydENvbCArPSBtYXRjaC5ncm91cHMubGVhZGluZy5sZW5ndGg7XG4gICAgICAgICAgZW5kQ29sIC09IG1hdGNoLmdyb3Vwcy50cmFpbGluZy5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICBmb2N1cy5jb2wgPSBzdGFydENvbDtcbiAgICAgICAgYW5jaG9yLmNvbCA9IGVuZENvbDtcblxuICAgICAgICAvLyBKdXN0IGluc2VydCBtYXJrdXAgYmVmb3JlIGFuZCBhZnRlciBhbmQgaG9wZSBmb3IgdGhlIGJlc3QuXG4gICAgICAgIHRoaXMud3JhcFNlbGVjdGlvbihcbiAgICAgICAgICBjb21tYW5kc1tjb21tYW5kXS5zZXQucHJlLFxuICAgICAgICAgIGNvbW1hbmRzW2NvbW1hbmRdLnNldC5wb3N0LFxuICAgICAgICAgIGZvY3VzLFxuICAgICAgICAgIGFuY2hvclxuICAgICAgICApO1xuICAgICAgICB0aGlzLmZpcmVDaGFuZ2UoKTtcbiAgICAgICAgLy8gVE9ETyBjbGVhbiB0aGlzIHVwIHNvIHRoYXQgbWFya3VwIHJlbWFpbnMgcHJvcGVybHkgbmVzdGVkXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjb21tYW5kc1tjb21tYW5kXS50eXBlID09IFwibGluZVwiKSB7XG4gICAgICBsZXQgYW5jaG9yID0gdGhpcy5nZXRTZWxlY3Rpb24odHJ1ZSk7XG4gICAgICBsZXQgZm9jdXMgPSB0aGlzLmdldFNlbGVjdGlvbihmYWxzZSk7XG4gICAgICBpZiAoIWFuY2hvcikgYW5jaG9yID0gZm9jdXM7XG4gICAgICBpZiAoIWZvY3VzKSByZXR1cm47XG4gICAgICB0aGlzLmNsZWFyRGlydHlGbGFnKCk7XG4gICAgICBsZXQgc3RhcnQgPSBhbmNob3Iucm93ID4gZm9jdXMucm93ID8gZm9jdXMgOiBhbmNob3I7XG4gICAgICBsZXQgZW5kID0gYW5jaG9yLnJvdyA+IGZvY3VzLnJvdyA/IGFuY2hvciA6IGZvY3VzO1xuICAgICAgaWYgKGVuZC5yb3cgPiBzdGFydC5yb3cgJiYgZW5kLmNvbCA9PSAwKSB7XG4gICAgICAgIGVuZC5yb3ctLTtcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgbGluZSA9IHN0YXJ0LnJvdzsgbGluZSA8PSBlbmQucm93OyBsaW5lKyspIHtcbiAgICAgICAgaWYgKHN0YXRlICYmIHRoaXMubGluZVR5cGVzW2xpbmVdICE9IGNvbW1hbmRzW2NvbW1hbmRdLmNsYXNzTmFtZSkge1xuICAgICAgICAgIHRoaXMubGluZXNbbGluZV0gPSB0aGlzLmxpbmVzW2xpbmVdLnJlcGxhY2UoXG4gICAgICAgICAgICBjb21tYW5kc1tjb21tYW5kXS5zZXQucGF0dGVybixcbiAgICAgICAgICAgIGNvbW1hbmRzW2NvbW1hbmRdLnNldC5yZXBsYWNlbWVudC5yZXBsYWNlKFxuICAgICAgICAgICAgICBcIiQjXCIsXG4gICAgICAgICAgICAgIGxpbmUgLSBzdGFydC5yb3cgKyAxXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmxpbmVEaXJ0eVtsaW5lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzdGF0ZSAmJiB0aGlzLmxpbmVUeXBlc1tsaW5lXSA9PSBjb21tYW5kc1tjb21tYW5kXS5jbGFzc05hbWUpIHtcbiAgICAgICAgICB0aGlzLmxpbmVzW2xpbmVdID0gdGhpcy5saW5lc1tsaW5lXS5yZXBsYWNlKFxuICAgICAgICAgICAgY29tbWFuZHNbY29tbWFuZF0udW5zZXQucGF0dGVybixcbiAgICAgICAgICAgIGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnJlcGxhY2VtZW50XG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmxpbmVEaXJ0eVtsaW5lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlRm9ybWF0dGluZygpO1xuICAgICAgdGhpcy5zZXRTZWxlY3Rpb24oXG4gICAgICAgIHsgcm93OiBlbmQucm93LCBjb2w6IHRoaXMubGluZXNbZW5kLnJvd10ubGVuZ3RoIH0sXG4gICAgICAgIHsgcm93OiBzdGFydC5yb3csIGNvbDogMCB9XG4gICAgICApO1xuICAgICAgdGhpcy5maXJlQ2hhbmdlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciBvciBub3QgaW5saW5lIGZvcm1hdHRpbmcgaXMgYWxsb3dlZCBhdCB0aGUgY3VycmVudCBmb2N1c1xuICAgKiBAcGFyYW0ge29iamVjdH0gZm9jdXMgVGhlIGN1cnJlbnQgZm9jdXNcbiAgICovXG4gIGlzSW5saW5lRm9ybWF0dGluZ0FsbG93ZWQoKSB7XG4gICAgLy8gVE9ETyBSZW1vdmUgcGFyYW1ldGVycyBmcm9tIGFsbCBjYWxsc1xuICAgIGNvbnN0IHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICBpZiAoIXNlbCB8fCAhc2VsLmZvY3VzTm9kZSB8fCAhc2VsLmFuY2hvck5vZGUpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIENoZWNrIGlmIHdlIGNhbiBmaW5kIGEgY29tbW9uIGFuY2VzdG9yIHdpdGggdGhlIGNsYXNzIGBUTUlubGluZUZvcm1hdHRlZGBcblxuICAgIC8vIFNwZWNpYWwgY2FzZTogRW1wdHkgc2VsZWN0aW9uIHJpZ2h0IGJlZm9yZSBgVE1JbmxpbmVGb3JtYXR0ZWRgXG4gICAgaWYgKFxuICAgICAgc2VsLmlzQ29sbGFwc2VkICYmXG4gICAgICBzZWwuZm9jdXNOb2RlLm5vZGVUeXBlID09IDMgJiZcbiAgICAgIHNlbC5mb2N1c09mZnNldCA9PSBzZWwuZm9jdXNOb2RlLm5vZGVWYWx1ZS5sZW5ndGhcbiAgICApIHtcbiAgICAgIGxldCBub2RlO1xuICAgICAgZm9yIChcbiAgICAgICAgbm9kZSA9IHNlbC5mb2N1c05vZGU7XG4gICAgICAgIG5vZGUgJiYgbm9kZS5uZXh0U2libGluZyA9PSBudWxsO1xuICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlXG4gICAgICApO1xuICAgICAgaWYgKFxuICAgICAgICBub2RlICYmXG4gICAgICAgIG5vZGUubmV4dFNpYmxpbmcuY2xhc3NOYW1lICYmXG4gICAgICAgIG5vZGUubmV4dFNpYmxpbmcuY2xhc3NOYW1lLmluY2x1ZGVzKFwiVE1JbmxpbmVGb3JtYXR0ZWRcIilcbiAgICAgIClcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gTG9vayBmb3IgYSBjb21tb24gYW5jZXN0b3JcbiAgICBsZXQgYW5jZXN0b3IgPSB0aGlzLmNvbXB1dGVDb21tb25BbmNlc3RvcihzZWwuZm9jdXNOb2RlLCBzZWwuYW5jaG9yTm9kZSk7XG4gICAgaWYgKCFhbmNlc3RvcikgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBhbiBhbmNlc3RvciBvZiBjbGFzcyAnVE1JbmxpbmVGb3JtYXR0ZWQnIG9yICdUTUJsYW5rTGluZSdcbiAgICB3aGlsZSAoYW5jZXN0b3IgJiYgYW5jZXN0b3IgIT0gdGhpcy5lKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGFuY2VzdG9yLmNsYXNzTmFtZSAmJlxuICAgICAgICAoYW5jZXN0b3IuY2xhc3NOYW1lLmluY2x1ZGVzKFwiVE1JbmxpbmVGb3JtYXR0ZWRcIikgfHxcbiAgICAgICAgICBhbmNlc3Rvci5jbGFzc05hbWUuaW5jbHVkZXMoXCJUTUJsYW5rTGluZVwiKSlcbiAgICAgIClcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLnBhcmVudE5vZGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyYXBzIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBpbiB0aGUgc3RyaW5ncyBwcmUgYW5kIHBvc3QuIElmIHRoZSBzZWxlY3Rpb24gaXMgbm90IG9uIG9uZSBsaW5lLCByZXR1cm5zLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJlIFRoZSBzdHJpbmcgdG8gaW5zZXJ0IGJlZm9yZSB0aGUgc2VsZWN0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcG9zdCBUaGUgc3RyaW5nIHRvIGluc2VydCBhZnRlciB0aGUgc2VsZWN0aW9uLlxuICAgKiBAcGFyYW0ge29iamVjdH0gZm9jdXMgVGhlIGN1cnJlbnQgc2VsZWN0aW9uIGZvY3VzLiBJZiBudWxsLCBzZWxlY3Rpb24gd2lsbCBiZSBjb21wdXRlZC5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFuY2hvciBUaGUgY3VycmVudCBzZWxlY3Rpb24gZm9jdXMuIElmIG51bGwsIHNlbGVjdGlvbiB3aWxsIGJlIGNvbXB1dGVkLlxuICAgKi9cbiAgd3JhcFNlbGVjdGlvbihwcmUsIHBvc3QsIGZvY3VzID0gbnVsbCwgYW5jaG9yID0gbnVsbCkge1xuICAgIGlmICghZm9jdXMpIGZvY3VzID0gdGhpcy5nZXRTZWxlY3Rpb24oZmFsc2UpO1xuICAgIGlmICghYW5jaG9yKSBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICBpZiAoIWZvY3VzIHx8ICFhbmNob3IgfHwgZm9jdXMucm93ICE9IGFuY2hvci5yb3cpIHJldHVybjtcbiAgICB0aGlzLmxpbmVEaXJ0eVtmb2N1cy5yb3ddID0gdHJ1ZTtcblxuICAgIGNvbnN0IHN0YXJ0Q29sID0gZm9jdXMuY29sIDwgYW5jaG9yLmNvbCA/IGZvY3VzLmNvbCA6IGFuY2hvci5jb2w7XG4gICAgY29uc3QgZW5kQ29sID0gZm9jdXMuY29sIDwgYW5jaG9yLmNvbCA/IGFuY2hvci5jb2wgOiBmb2N1cy5jb2w7XG4gICAgY29uc3QgbGVmdCA9IHRoaXMubGluZXNbZm9jdXMucm93XS5zdWJzdHIoMCwgc3RhcnRDb2wpLmNvbmNhdChwcmUpO1xuICAgIGNvbnN0IG1pZCA9XG4gICAgICBlbmRDb2wgPT0gc3RhcnRDb2xcbiAgICAgICAgPyBcIlwiXG4gICAgICAgIDogdGhpcy5saW5lc1tmb2N1cy5yb3ddLnN1YnN0cihzdGFydENvbCwgZW5kQ29sIC0gc3RhcnRDb2wpO1xuICAgIGNvbnN0IHJpZ2h0ID0gcG9zdC5jb25jYXQodGhpcy5saW5lc1tmb2N1cy5yb3ddLnN1YnN0cihlbmRDb2wpKTtcbiAgICB0aGlzLmxpbmVzW2ZvY3VzLnJvd10gPSBsZWZ0LmNvbmNhdChtaWQsIHJpZ2h0KTtcbiAgICBhbmNob3IuY29sID0gbGVmdC5sZW5ndGg7XG4gICAgZm9jdXMuY29sID0gYW5jaG9yLmNvbCArIG1pZC5sZW5ndGg7XG5cbiAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgICB0aGlzLnNldFNlbGVjdGlvbihmb2N1cywgYW5jaG9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBjb21tYW5kIHN0YXRlIGZvciBhIGNvbW1hbmQgKHRydWUgPC0+IGZhbHNlKVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29tbWFuZCBUaGUgZWRpdG9yIGNvbW1hbmRcbiAgICovXG4gIHRvZ2dsZUNvbW1hbmRTdGF0ZShjb21tYW5kKSB7XG4gICAgaWYgKCF0aGlzLmxhc3RDb21tYW5kU3RhdGUpIHRoaXMubGFzdENvbW1hbmRTdGF0ZSA9IHRoaXMuZ2V0Q29tbWFuZFN0YXRlKCk7XG4gICAgdGhpcy5zZXRDb21tYW5kU3RhdGUoY29tbWFuZCwgIXRoaXMubGFzdENvbW1hbmRTdGF0ZVtjb21tYW5kXSk7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgYSBjaGFuZ2UgZXZlbnQuIFVwZGF0ZXMgdGhlIGxpbmtlZCB0ZXh0YXJlYSBhbmQgbm90aWZpZXMgYW55IGV2ZW50IGxpc3RlbmVycy5cbiAgICovXG4gIGZpcmVDaGFuZ2UoKSB7XG4gICAgaWYgKCF0aGlzLnRleHRhcmVhICYmICF0aGlzLmxpc3RlbmVycy5jaGFuZ2UubGVuZ3RoKSByZXR1cm47XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpO1xuICAgIGlmICh0aGlzLnRleHRhcmVhKSB0aGlzLnRleHRhcmVhLnZhbHVlID0gY29udGVudDtcbiAgICBmb3IgKGxldCBsaXN0ZW5lciBvZiB0aGlzLmxpc3RlbmVycy5jaGFuZ2UpIHtcbiAgICAgIGxpc3RlbmVyKHtcbiAgICAgICAgY29udGVudDogY29udGVudCxcbiAgICAgICAgbGluZXNEaXJ0eTogdGhpcy5saW5lc0RpcnR5LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIGEgXCJzZWxlY3Rpb24gY2hhbmdlZFwiIGV2ZW50LlxuICAgKi9cbiAgZmlyZVNlbGVjdGlvbigpIHtcbiAgICBpZiAodGhpcy5saXN0ZW5lcnMuc2VsZWN0aW9uICYmIHRoaXMubGlzdGVuZXJzLnNlbGVjdGlvbi5sZW5ndGgpIHtcbiAgICAgIGxldCBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKGZhbHNlKTtcbiAgICAgIGxldCBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICAgIGxldCBjb21tYW5kU3RhdGUgPSB0aGlzLmdldENvbW1hbmRTdGF0ZShmb2N1cywgYW5jaG9yKTtcbiAgICAgIGlmICh0aGlzLmxhc3RDb21tYW5kU3RhdGUpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmxhc3RDb21tYW5kU3RhdGUsIGNvbW1hbmRTdGF0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxhc3RDb21tYW5kU3RhdGUgPSBPYmplY3QuYXNzaWduKHt9LCBjb21tYW5kU3RhdGUpO1xuICAgICAgfVxuICAgICAgZm9yIChsZXQgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMuc2VsZWN0aW9uKSB7XG4gICAgICAgIGxpc3RlbmVyKHtcbiAgICAgICAgICBmb2N1czogZm9jdXMsXG4gICAgICAgICAgYW5jaG9yOiBhbmNob3IsXG4gICAgICAgICAgY29tbWFuZFN0YXRlOiB0aGlzLmxhc3RDb21tYW5kU3RhdGUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGV2ZW50IGxpc3RlbmVyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSBUaGUgdHlwZSBvZiBldmVudCB0byBsaXN0ZW4gdG8uIENhbiBiZSAnY2hhbmdlJyBvciAnc2VsZWN0aW9uJ1xuICAgKiBAcGFyYW0geyp9IGxpc3RlbmVyIEZ1bmN0aW9uIG9mIHRoZSB0eXBlIChldmVudCkgPT4ge30gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGV2ZW50IG9jY3Vycy5cbiAgICovXG4gIGFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICBpZiAodHlwZS5tYXRjaCgvXig/OmNoYW5nZXxpbnB1dCkkL2kpKSB7XG4gICAgICB0aGlzLmxpc3RlbmVycy5jaGFuZ2UucHVzaChsaXN0ZW5lcik7XG4gICAgfVxuICAgIGlmICh0eXBlLm1hdGNoKC9eKD86c2VsZWN0aW9ufHNlbGVjdGlvbmNoYW5nZSkkL2kpKSB7XG4gICAgICB0aGlzLmxpc3RlbmVycy5zZWxlY3Rpb24ucHVzaChsaXN0ZW5lcik7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVkaXRvcjtcbiJdLCJuYW1lcyI6WyJzdmciLCJibG9ja3F1b3RlIiwiYm9sZCIsImNsZWFyX2Zvcm1hdHRpbmciLCJjb2RlIiwiaDEiLCJoMiIsImhyIiwiaW1hZ2UiLCJpdGFsaWMiLCJsaW5rIiwib2wiLCJzdHJpa2V0aHJvdWdoIiwidWwiLCJpc01hY0xpa2UiLCJ0ZXN0IiwibmF2aWdhdG9yIiwicGxhdGZvcm0iLCJEZWZhdWx0Q29tbWFuZHMiLCJuYW1lIiwiYWN0aW9uIiwiaW5uZXJIVE1MIiwidGl0bGUiLCJob3RrZXkiLCJlZGl0b3IiLCJpc0lubGluZUZvcm1hdHRpbmdBbGxvd2VkIiwid3JhcFNlbGVjdGlvbiIsImVuYWJsZWQiLCJmb2N1cyIsImFuY2hvciIsInBhc3RlIiwiQ29tbWFuZEJhciIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJlIiwiY29tbWFuZHMiLCJidXR0b25zIiwic3RhdGUiLCJob3RrZXlzIiwiZWxlbWVudCIsInRhZ05hbWUiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiYm9keSIsImNyZWF0ZUNvbW1hbmRCYXJFbGVtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImhhbmRsZUtleWRvd24iLCJzZXRFZGl0b3IiLCJwYXJlbnRFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImNvbW1hbmQiLCJlbCIsImFwcGVuZENoaWxkIiwiY29tbWFuZE5hbWUiLCJPYmplY3QiLCJhc3NpZ24iLCJrZXlzIiwic3BsaXQiLCJtb2RpZmllcnMiLCJtb2RpZmllcmV4cGxhbmF0aW9uIiwiaSIsImxlbmd0aCIsInB1c2giLCJtYXRjaCIsImtleSIsInRvTG93ZXJDYXNlIiwiY29uY2F0Iiwiam9pbiIsImhhbmRsZUNsaWNrIiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsInNldENvbW1hbmRTdGF0ZSIsImhhbmRsZVNlbGVjdGlvbiIsImNvbW1hbmRTdGF0ZSIsInVuZGVmaW5lZCIsIm91dGVyIiwibW9kaWZpZXIiLCJjaGVjayIsIml0IiwiTWF0aCIsIm1vZHVsZSIsImdsb2JhbFRoaXMiLCJ3aW5kb3ciLCJzZWxmIiwiZ2xvYmFsIiwidGhpcyIsIkZ1bmN0aW9uIiwiZXhlYyIsImVycm9yIiwiZmFpbHMiLCJyZXF1aXJlIiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJiaW5kIiwiaGFzT3duUHJvcGVydHkiLCJOQVRJVkVfQklORCIsIkZ1bmN0aW9uUHJvdG90eXBlIiwicHJvdG90eXBlIiwiY2FsbCIsInVuY3VycnlUaGlzV2l0aEJpbmQiLCJmbiIsImFwcGx5IiwiYXJndW1lbnRzIiwiZG9jdW1lbnRBbGwiLCJhbGwiLCJJU19IVE1MRERBIiwiJGRvY3VtZW50QWxsIiwiYXJndW1lbnQiLCJpc051bGxPclVuZGVmaW5lZCIsIiRUeXBlRXJyb3IiLCJUeXBlRXJyb3IiLCJyZXF1aXJlT2JqZWN0Q29lcmNpYmxlIiwiJE9iamVjdCIsInVuY3VycnlUaGlzIiwidG9PYmplY3QiLCJoYXNPd24iLCJERVNDUklQVE9SUyIsImdldERlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJFWElTVFMiLCJQUk9QRVIiLCJzb21ldGhpbmciLCJDT05GSUdVUkFCTEUiLCJjb25maWd1cmFibGUiLCJ2YWx1ZSIsIndyaXRhYmxlIiwiZGVmaW5lR2xvYmFsUHJvcGVydHkiLCJTSEFSRUQiLCJzdG9yZSIsImlzQ2FsbGFibGUiLCJmdW5jdGlvblRvU3RyaW5nIiwidG9TdHJpbmciLCJpbnNwZWN0U291cmNlIiwiV2Vha01hcCIsIlN0cmluZyIsImlzT2JqZWN0IiwiYSIsIiRTdHJpbmciLCJhRnVuY3Rpb24iLCJuYW1lc3BhY2UiLCJtZXRob2QiLCJpc1Byb3RvdHlwZU9mIiwidXNlckFnZW50IiwicHJvY2VzcyIsIkRlbm8iLCJ2ZXJzaW9ucyIsInZlcnNpb24iLCJ2OCIsIlY4X1ZFUlNJT04iLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzeW1ib2wiLCJTeW1ib2wiLCJzaGFtIiwiTkFUSVZFX1NZTUJPTCIsIml0ZXJhdG9yIiwiZ2V0QnVpbHRJbiIsIlVTRV9TWU1CT0xfQVNfVUlEIiwiJFN5bWJvbCIsInRyeVRvU3RyaW5nIiwiYUNhbGxhYmxlIiwiViIsIlAiLCJmdW5jIiwiaW5wdXQiLCJwcmVmIiwidmFsIiwidmFsdWVPZiIsIm1vZGUiLCJjb3B5cmlnaHQiLCJsaWNlbnNlIiwic291cmNlIiwiaWQiLCJwb3N0Zml4IiwicmFuZG9tIiwic2hhcmVkIiwidWlkIiwiV2VsbEtub3duU3ltYm9sc1N0b3JlIiwiY3JlYXRlV2VsbEtub3duU3ltYm9sIiwid2l0aG91dFNldHRlciIsImlzU3ltYm9sIiwiZ2V0TWV0aG9kIiwib3JkaW5hcnlUb1ByaW1pdGl2ZSIsIndlbGxLbm93blN5bWJvbCIsIlRPX1BSSU1JVElWRSIsImV4b3RpY1RvUHJpbSIsInJlc3VsdCIsInRvUHJpbWl0aXZlIiwiSUU4X0RPTV9ERUZJTkUiLCJWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyIsImFuT2JqZWN0IiwidG9Qcm9wZXJ0eUtleSIsIiRkZWZpbmVQcm9wZXJ0eSIsIiRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJFTlVNRVJBQkxFIiwiV1JJVEFCTEUiLCJleHBvcnRzIiwiTyIsIkF0dHJpYnV0ZXMiLCJjdXJyZW50IiwiZW51bWVyYWJsZSIsImJpdG1hcCIsImRlZmluZVByb3BlcnR5TW9kdWxlIiwiY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yIiwib2JqZWN0IiwiZiIsIk5BVElWRV9XRUFLX01BUCIsImNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSIsInNoYXJlZEtleSIsIk9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEIiwic2V0IiwiaGFzIiwiZW5mb3JjZSIsImdldHRlckZvciIsIlRZUEUiLCJ0eXBlIiwibWV0YWRhdGEiLCJmYWNhZGUiLCJTVEFURSIsIkNPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FIiwiSW50ZXJuYWxTdGF0ZU1vZHVsZSIsImVuZm9yY2VJbnRlcm5hbFN0YXRlIiwiZ2V0SW50ZXJuYWxTdGF0ZSIsInN0cmluZ1NsaWNlIiwic2xpY2UiLCJyZXBsYWNlIiwiQ09ORklHVVJBQkxFX0xFTkdUSCIsIlRFTVBMQVRFIiwibWFrZUJ1aWx0SW4iLCJvcHRpb25zIiwiZ2V0dGVyIiwic2V0dGVyIiwiYXJpdHkiLCJ0YXJnZXQiLCJkZXNjcmlwdG9yIiwidGhhdCIsImhhc0luZGljZXMiLCJpZ25vcmVDYXNlIiwibXVsdGlsaW5lIiwiZG90QWxsIiwidW5pY29kZSIsInVuaWNvZGVTZXRzIiwic3RpY2t5IiwiZGVmaW5lQnVpbHRJbkFjY2Vzc29yIiwicmVnRXhwRmxhZ3MiLCJSZWdFeHAiLCJSZWdFeHBQcm90b3R5cGUiLCJGT1JDRUQiLCJJTkRJQ0VTX1NVUFBPUlQiLCJjYWxscyIsImV4cGVjdGVkIiwiYWRkR2V0dGVyIiwiY2hyIiwicGFpcnMiLCJyZXBsYWNlbWVudHMiLCJBU0NJSVB1bmN0dWF0aW9uIiwiTm90VHJpZ2dlckNoYXIiLCJTY2hlbWUiLCJFbWFpbCIsIkhUTUxPcGVuVGFnIiwiSFRNTENsb3NlVGFnIiwiSFRNTFRhZ05hbWUiLCJIVE1MQ29tbWVudCIsIkhUTUxQSSIsIkhUTUxEZWNsYXJhdGlvbiIsIkhUTUxDREFUQSIsIkhUTUxBdHRyaWJ1dGUiLCJIVE1MQXR0VmFsdWUiLCJLbm93blRhZyIsInB1bmN0dWF0aW9uTGVhZGluZyIsInB1bmN0dWF0aW9uVHJhaWxpbmciLCJsaW5lR3JhbW1hciIsIlRNSDEiLCJyZWdleHAiLCJyZXBsYWNlbWVudCIsIlRNSDIiLCJUTUgzIiwiVE1INCIsIlRNSDUiLCJUTUg2IiwiVE1CbG9ja3F1b3RlIiwiVE1Db2RlRmVuY2VCYWNrdGlja09wZW4iLCJUTUNvZGVGZW5jZVRpbGRlT3BlbiIsIlRNQ29kZUZlbmNlQmFja3RpY2tDbG9zZSIsIlRNQ29kZUZlbmNlVGlsZGVDbG9zZSIsIlRNQmxhbmtMaW5lIiwiVE1TZXRleHRIMU1hcmtlciIsIlRNU2V0ZXh0SDJNYXJrZXIiLCJUTUhSIiwiVE1VTCIsIlRNT0wiLCJUTUluZGVudGVkQ29kZSIsIlRNTGlua1JlZmVyZW5jZURlZmluaXRpb24iLCJsYWJlbFBsYWNlaG9sZGVyIiwiaHRtbEJsb2NrR3JhbW1hciIsInN0YXJ0IiwiZW5kIiwicGFyYUludGVycnVwdCIsImlubGluZUdyYW1tYXIiLCJlc2NhcGUiLCJhdXRvbGluayIsImh0bWwiLCJsaW5rT3BlbiIsImltYWdlT3BlbiIsImxpbmtMYWJlbCIsImRlZmF1bHQiLCJyZXBsYWNlbWVudFJlZ2V4cCIsImlubGluZVJ1bGVzIiwicnVsZSIsInJlIiwic3RyaW5nIiwiZmxhZ3MiLCJodG1sZXNjYXBlIiwicHJlIiwicG9zdCIsInVuc2V0IiwicHJlUGF0dGVybiIsInBvc3RQYXR0ZXJuIiwicGF0dGVybiIsImgzIiwiaDQiLCJoNSIsImg2IiwiRWRpdG9yIiwidGV4dGFyZWEiLCJsaW5lcyIsImxpbmVFbGVtZW50cyIsImxpbmVUeXBlcyIsImxpbmVDYXB0dXJlcyIsImxpbmVSZXBsYWNlbWVudHMiLCJsaW5rTGFiZWxzIiwibGluZURpcnR5IiwibGFzdENvbW1hbmRTdGF0ZSIsImxpc3RlbmVycyIsImNoYW5nZSIsInNlbGVjdGlvbiIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwicGFyZW50Tm9kZSIsInN0eWxlIiwiZGlzcGxheSIsImNyZWF0ZUVkaXRvckVsZW1lbnQiLCJzZXRDb250ZW50IiwiY29udGVudCIsImNvbnRlbnRFZGl0YWJsZSIsIndoaXRlU3BhY2UiLCJ3ZWJraXRVc2VyTW9kaWZ5IiwibmV4dFNpYmxpbmciLCJpbnNlcnRCZWZvcmUiLCJoYW5kbGVJbnB1dEV2ZW50IiwiaGFuZGxlU2VsZWN0aW9uQ2hhbmdlRXZlbnQiLCJoYW5kbGVQYXN0ZSIsImNoaWxkTm9kZXMiLCJmaXJzdENoaWxkIiwicmVtb3ZlQ2hpbGQiLCJsaW5lTnVtIiwibGUiLCJBcnJheSIsInVwZGF0ZUZvcm1hdHRpbmciLCJmaXJlQ2hhbmdlIiwiZ2V0Q29udGVudCIsInVwZGF0ZUxpbmVUeXBlcyIsInVwZGF0ZUxpbmtMYWJlbHMiLCJhcHBseUxpbmVUeXBlcyIsImwiLCJjYXB0dXJlIiwic3RyIiwicDEiLCJwMiIsInByb2Nlc3NJbmxpbmVTdHlsZXMiLCJjb250ZW50SFRNTCIsInJlbW92ZUF0dHJpYnV0ZSIsImRhdGFzZXQiLCJjb2RlQmxvY2tUeXBlIiwiY29kZUJsb2NrU2VxTGVuZ3RoIiwiaHRtbEJsb2NrIiwibGluZVR5cGUiLCJsaW5lQ2FwdHVyZSIsImxpbmVSZXBsYWNlbWVudCIsImdyb3VwcyIsImh0bWxCbG9ja1R5cGUiLCJoZWFkaW5nTGluZSIsImhlYWRpbmdMaW5lVHlwZSIsInVwZGF0ZUxpbmVDb250ZW50c0FuZEZvcm1hdHRpbmciLCJjbGVhckRpcnR5RmxhZyIsInVwZGF0ZUxpbmVDb250ZW50cyIsInBhcnNlTGlua09ySW1hZ2UiLCJvcmlnaW5hbFN0cmluZyIsImlzSW1hZ2UiLCJ0ZXh0T2Zmc2V0Iiwib3BlbmVyIiwic3Vic3RyIiwiY3VycmVudE9mZnNldCIsImJyYWNrZXRMZXZlbCIsImxpbmtUZXh0IiwibGlua1JlZiIsImxpbmtEZXRhaWxzIiwidGV4dE91dGVyIiwiY2FwIiwibmV4dENoYXIiLCJ0cmltIiwicGFyZW50aGVzaXNMZXZlbCIsImlubGluZU91dGVyIiwidmFsaWQiLCJsYWJlbCIsIm91dHB1dCIsImNoYXJDb3VudCIsInByb2Nlc3NlZCIsInN0YWNrIiwib2Zmc2V0IiwicG90ZW50aWFsTGluayIsInBvdGVudGlhbEltYWdlIiwiZGVsaW1Db3VudCIsImRlbGltU3RyaW5nIiwiY3VycmVudERlbGltaXRlciIsInByZWNlZGluZyIsImZvbGxvd2luZyIsInB1bmN0dWF0aW9uRm9sbG93cyIsInB1bmN0dWF0aW9uUHJlY2VkZXMiLCJ3aGl0ZXNwYWNlRm9sbG93cyIsIndoaXRlc3BhY2VQcmVjZWRlcyIsImNhbk9wZW4iLCJjYW5DbG9zZSIsInN0YWNrUG9pbnRlciIsImRlbGltaXRlciIsImVudHJ5IiwicG9wIiwiY291bnQiLCJjb25zdW1lZCIsImxpbmVEZWx0YSIsImNoaWxkRWxlbWVudENvdW50IiwiZmlyc3RDaGFuZ2VkTGluZSIsInRleHRDb250ZW50IiwibGFzdENoYW5nZWRMaW5lIiwibGluZXNUb0RlbGV0ZSIsImxpbmVzVG9BZGQiLCJzcGxpY2VMaW5lcyIsImxpbmUiLCJjdCIsInByb2Nlc3NOZXdQYXJhZ3JhcGgiLCJzZWwiLCJjb250aW51YWJsZVR5cGUiLCJjaGVja0xpbmUiLCJjb2wiLCJyb3ciLCJwYXJzZUludCIsImdldFNlbGVjdGlvbiIsImdldEFuY2hvciIsInN0YXJ0Tm9kZSIsImFuY2hvck5vZGUiLCJmb2N1c05vZGUiLCJhbmNob3JPZmZzZXQiLCJmb2N1c09mZnNldCIsImNvbXB1dGVDb2x1bW4iLCJub2RlIiwicHJldmlvdXNTaWJsaW5nIiwibm9kZVR5cGUiLCJOb2RlIiwiVEVYVF9OT0RFIiwiY29tcHV0ZU5vZGVBbmRPZmZzZXQiLCJiaW5kUmlnaHQiLCJjaGlsZHJlbkNvbXBsZXRlIiwicnYiLCJub2RlVmFsdWUiLCJzZXRTZWxlY3Rpb24iLCJyYW5nZSIsImNyZWF0ZVJhbmdlIiwic2V0U3RhcnQiLCJzZXRFbmQiLCJ3aW5kb3dTZWxlY3Rpb24iLCJyZW1vdmVBbGxSYW5nZXMiLCJhZGRSYW5nZSIsImlucHV0VHlwZSIsImZpeE5vZGVIaWVyYXJjaHkiLCJvcmlnaW5hbENoaWxkcmVuIiwiZnJvbSIsInJlcGxhY2VDaGlsZCIsImNoaWxkIiwicGFyZW50IiwiX2xlbiIsIm5ld0NoaWxkcmVuIiwiX2tleSIsImZvckVhY2giLCJuZXdDaGlsZCIsIkVMRU1FTlRfTk9ERSIsImRpdldyYXBwZXIiLCJncmFuZENoaWxkcmVuIiwic29tZSIsImdyYW5kQ2hpbGQiLCJmaXJlU2VsZWN0aW9uIiwic3RhcnRMaW5lIiwibGluZXNUb0luc2VydCIsImFkanVzdExpbmVFbGVtZW50cyIsImluc2VydGVkQmxhbmsiLCJpbnNlcnRlZERpcnR5Iiwic3BsaWNlIiwidGV4dCIsIm9yaWdpbmFsRXZlbnQiLCJjbGlwYm9hcmREYXRhIiwiZ2V0RGF0YSIsImJlZ2lubmluZyIsImluc2VydGVkTGluZXMiLCJsaW5lQmVmb3JlIiwibGluZUVuZCIsImVuZENvbFBvcyIsImNvbXB1dGVDb21tb25BbmNlc3RvciIsIm5vZGUxIiwibm9kZTIiLCJhbmNlc3RyeSIsInVuc2hpZnQiLCJhbmNlc3RyeTEiLCJhbmNlc3RyeTIiLCJjb21wdXRlRW5jbG9zaW5nTWFya3VwTm9kZSIsImluY2x1ZGVzIiwiZ2V0Q29tbWFuZFN0YXRlIiwiY21kIiwibWFya3VwTm9kZSIsInN0YXJ0Q29sIiwibGVuIiwibGVmdCIsIm1pZCIsInJpZ2h0IiwiZW5kQ29sIiwibGVhZGluZyIsInRyYWlsaW5nIiwiaXNDb2xsYXBzZWQiLCJhbmNlc3RvciIsInRvZ2dsZUNvbW1hbmRTdGF0ZSIsImxpc3RlbmVyIiwibGluZXNEaXJ0eSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0VBQUEsTUFBTUEsR0FBRyxHQUFHO0VBQ1ZDLEVBQUFBLFVBQVUsRUFBRyxDQUEwUix5UkFBQSxDQUFBO0VBQ3ZTQyxFQUFBQSxJQUFJLEVBQUcsQ0FBeVksd1lBQUEsQ0FBQTtFQUNoWkMsRUFBQUEsZ0JBQWdCLEVBQUcsQ0FBMFgseVhBQUEsQ0FBQTtFQUM3WUMsRUFBQUEsSUFBSSxFQUFHLENBQThVLDZVQUFBLENBQUE7RUFDclZDLEVBQUFBLEVBQUUsRUFBRyxDQUErSiw4SkFBQSxDQUFBO0VBQ3BLQyxFQUFBQSxFQUFFLEVBQUcsQ0FBaUssZ0tBQUEsQ0FBQTtFQUN0S0MsRUFBQUEsRUFBRSxFQUFHLENBQWdJLCtIQUFBLENBQUE7RUFDcklDLEVBQUFBLEtBQUssRUFBRyxDQUE4SCw2SEFBQSxDQUFBO0VBQ3RJQyxFQUFBQSxNQUFNLEVBQUcsQ0FBZ0gsK0dBQUEsQ0FBQTtFQUN6SEMsRUFBQUEsSUFBSSxFQUFHLENBQTB1Qyx5dUNBQUEsQ0FBQTtFQUNqdkNDLEVBQUFBLEVBQUUsRUFBRyxDQUFvdEIsbXRCQUFBLENBQUE7RUFDenRCQyxFQUFBQSxhQUFhLEVBQUcsQ0FBMlgsMFhBQUEsQ0FBQTtFQUMzWUMsRUFBQUEsRUFBRSxFQUFHLENBQUEsMlFBQUEsQ0FBQTtFQUNQLENBQUM7O0VDWkQsTUFBTUMsU0FBUyxHQUFHLHlCQUF5QixDQUFDQyxJQUFJLENBQUMsT0FBT0MsU0FBUyxLQUFLLFdBQVcsR0FBR0EsU0FBUyxDQUFDQyxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUE7RUFFNUcsTUFBTUMsZUFBZSxHQUFHO0VBQ3RCLEVBQUEsTUFBTSxFQUFFO0VBQ05DLElBQUFBLElBQUks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
|
|
3086
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbInNyYy9zdmcvc3ZnLmpzIiwic3JjL1RpbnlNREVDb21tYW5kQmFyLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtYWxsLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vYmplY3QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlYWstbWFwLWJhc2ljLWRldGVjdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1zeW1ib2wuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1tZXRob2QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91aWQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1mbGFncy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmZsYWdzLmpzIiwic3JjL2dyYW1tYXIuanMiLCJzcmMvVGlueU1ERS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzdmcgPSB7XG4gIGJsb2NrcXVvdGU6IGA8c3ZnIGhlaWdodD1cIjE4XCIgd2lkdGg9XCIxOFwiPjxyZWN0IHdpZHRoPVwiNVwiIGhlaWdodD1cIjVcIiB4PVwiM1wiIHk9XCI0XCIgcnk9XCIxXCIvPjxyZWN0IHJ5PVwiMVwiIHk9XCI0XCIgeD1cIjEwXCIgaGVpZ2h0PVwiNVwiIHdpZHRoPVwiNVwiLz48cGF0aCBkPVwiTTggNi45OTl2M2MwIDEtMSAzLTEgM3MtLjMzMSAxLTEuMzMxIDFoLTFjLTEgMC0uNjY5LTEtLjY2OS0xczEtMiAxLTN2LTN6bTcgMHYzYzAgMS0xIDMtMSAzcy0uMzMxIDEtMS4zMzEgMWgtMWMtMSAwLS42NjktMS0uNjY5LTFzMS0yIDEtM3YtM3pcIi8+PC9zdmc+YCxcbiAgYm9sZDogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk00IDJhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDZjNCAwIDUtMiA1LTQgMC0xLjMyMi0uNDM0LTIuNjM2LTEuODg1LTMuMzgxQzEzLjc3MiA3Ljg4NSAxNCA2Ljk0NSAxNCA2YzAtMi0xLTQtNS00em0xIDJoNGMxLjY2OCAwIDIuMzIuMzkzIDIuNi42NzIuMjguMjc5LjQuNjYyLjQgMS4zMjhzLS4xMiAxLjA1Ny0uNCAxLjMzOGMtLjI3NS4yNzQtMS4wMTQuNjQ2LTIuNi42NjJINXptNSA2YzEuNjY2LjAwNSAyLjMxOC4zODggMi41OTYuNjY2LjI3Ny4yNzguNDA0LjY2Ny40MDQgMS4zMzRzLS4xMjcgMS4wNi0uNDA0IDEuMzM4Yy0uMjc4LjI3OC0uOTMuNjYtMi41OTYuNjYybC00Ljk5Mi4wMDRMNSAxMHpcIi8+PC9zdmc+YCxcbiAgY2xlYXJfZm9ybWF0dGluZzogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk0xMS4wMyAxYTEgMSAwIDAwLS43NC4zbC05IDlhMSAxIDAgMDAwIDEuNGw0IDRBMSAxIDAgMDA2IDE2aDJhMSAxIDAgMDAuNy0uM2w4LThhMSAxIDAgMDAwLTEuNGwtNS01YTEgMSAwIDAwLS42Ny0uM3pNOC43IDUuN2wzLjU4IDMuNkw3LjYgMTRINi40bC0zLTMgNS4zLTUuM3pcIi8+PHJlY3Qgcnk9XCIuOFwiIHJ4PVwiLjhcIiB5PVwiMTRcIiB4PVwiMTZcIiBoZWlnaHQ9XCIyXCIgd2lkdGg9XCIyXCIvPjxyZWN0IHdpZHRoPVwiMlwiIGhlaWdodD1cIjJcIiB4PVwiMTNcIiB5PVwiMTRcIiByeD1cIi44XCIgcnk9XCIuOFwiLz48cmVjdCByeT1cIi44XCIgcng9XCIuOFwiIHk9XCIxNFwiIHg9XCIxMFwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjJcIi8+PC9zdmc+YCxcbiAgY29kZTogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk0xMy41IDIuOTk0YS41LjUgMCAwMC0uNS41LjUuNSAwIDAwMCAuMDM0VjQuNTNhNS45OTMgNS45OTMgMCAwMC03LjQ1MS0uNDQ1QTYgNiAwIDEwMTIuNDUgMTMuOWE1Ljk5IDUuOTkgMCAwMDEuMzQ2LTEuMzM0LjUuNSAwIDAwLjA5Ni0uMTAxLjUuNSAwIDAwLS4xMi0uNjk4LjUuNSAwIDAwLS42OTcuMTJsLS4wMDQtLjAwNWE1IDUgMCAwMS0xLjE5NyAxLjIgNSA1IDAgMTExLjIxNS02Ljk2NS41LjUgMCAwMC42OTcuMTIuNS41IDAgMDAuMjExLS40NFY0Ljc0NUgxNFYzLjQ5M2EuNS41IDAgMDAtLjUtLjV6XCIvPjwvc3ZnPmAsXG4gIGgxOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48cGF0aCBkPVwiTTMgMnMwLTEgMS0xaDFjMSAwIDEgMSAxIDF2Nmg2VjJzMC0xIDEtMWgxYzEgMCAxIDEgMSAxdjE0czAgMS0xIDFoLTFjLTEgMC0xLTEtMS0xdi02SDZ2NnMwIDEtMSAxSDRjLTEgMC0xLTEtMS0xelwiLz48L3N2Zz5gLFxuICBoMjogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk00IDJzMC0xIDEtMSAxIDEgMSAxdjZjMS0xIDItMSA0LTEgMyAwIDQgMiA0IDR2NXMwIDEtMSAxLTEtMS0xLTF2LTVjMC0xLjA5NC0xLTItMi0yLTIgMC0zIDAtNCAydjVzMCAxLTEgMS0xLTEtMS0xelwiLz48L3N2Zz5gLFxuICBocjogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHJlY3Qgcnk9XCIxXCIgeT1cIjhcIiBoZWlnaHQ9XCIyXCIgd2lkdGg9XCIxOFwiIHN0eWxlPVwiZm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO21hcmtlcjpub25lXCIvPjwvc3ZnPmAsXG4gIGltYWdlOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48cGF0aCBkPVwiTTEgMnYxNGgxNlYySDF6bTIgMmgxMnY3bC0zLTMtNCA0LTItMi0zIDNWNHpcIi8+PGNpcmNsZSByPVwiMS41XCIgY3k9XCI2LjVcIiBjeD1cIjUuNVwiLz48L3N2Zz5gLFxuICBpdGFsaWM6IGA8c3ZnIGhlaWdodD1cIjE4XCIgd2lkdGg9XCIxOFwiPjxwYXRoIGQ9XCJNOSAyYTEgMSAwIDAwMCAyTDcgMTRhMSAxIDAgMTAwIDJoMmExIDEgMCAwMDAtMmwyLTEwYTEgMSAwIDEwMC0yelwiLz48L3N2Zz5gLFxuICBsaW5rOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48cGF0aCBkPVwiTTkuMDcgNS4xOGEzLjkgMy45IDAgMDAtMS41Mi40M0M2LjMxIDYuMjIgNS4zIDcuMjkgNC4zIDguMjljLTEgMS0yLjA3IDIuMDItMi42OCAzLjI2LS4zMS42Mi0uNSAxLjMzLS40MSAyLjA3LjA5Ljc1LjQ4IDEuNDcgMS4xIDIuMDkuNjEuNjEgMS4zMyAxIDIuMDggMS4xLjc0LjA5IDEuNDUtLjEgMi4wNy0uNDIgMS4yNC0uNjEgMi4yNi0xLjY4IDMuMjYtMi42OC40Ni0uNDcuOTQtLjk0IDEuMzktMS40NGwtLjQzLjI2Yy0uNjguMzQtMS40OS41Ni0yLjM2LjQ2LS4yLS4wMy0uNC0uMDgtLjYtLjE0LS43OS43Ni0xLjU1IDEuNDUtMi4xNiAxLjc2LS4zOC4xOS0uNjcuMjQtLjkyLjIxLS4yNi0uMDMtLjU0LS4xNC0uOTItLjUzLS4zOS0uMzgtLjUtLjY2LS41My0uOTEtLjAzLS4yNi4wMi0uNTUuMjEtLjkzLjM5LS43NiAxLjMyLTEuNzQgMi4zMi0yLjc0IDEtMSAxLjk4LTEuOTMgMi43NC0yLjMyLjM4LS4xOS42Ny0uMjQuOTMtLjIxLjI1LjAzLjUzLjE0LjkxLjUzLjM5LjM4LjUuNjYuNTMuOTJ2LjA2bDEuMTItMS4wNi40NC0uNDdjLS4xOC0uMy0uNC0uNi0uNjctLjg3LS42Mi0uNjEtMS4zNC0xLTIuMDktMS4xYTMuMDggMy4wOCAwIDAwLS41NS0uMDF6XCIvPjxwYXRoIGQ9XCJNMTMuMDcuODZhMy45IDMuOSAwIDAwLTEuNTIuNDNjLTEuMjQuNjItMi4yNiAxLjY5LTMuMjYgMi42OS0uNDYuNDctLjk0Ljk0LTEuMzkgMS40My4xNS0uMDguMjgtLjE4LjQzLS4yNWE0LjQgNC40IDAgMDEyLjM2LS40NmMuMi4wMi40LjA3LjYuMTQuNzktLjc3IDEuNTUtMS40NiAyLjE2LTEuNzYuMzgtLjE5LjY3LS4yNS45My0uMjEuMjUuMDMuNTMuMTQuOTEuNTIuMzkuMzguNS42Ni41My45Mi4wMy4yNi0uMDIuNTUtLjIxLjkzLS4zOS43Ni0xLjMyIDEuNzQtMi4zMiAyLjc0LTEgMS0xLjk4IDEuOTMtMi43NCAyLjMxLS4zOC4yLS42Ny4yNS0uOTMuMjItLjI1LS4wNC0uNTMtLjE1LS45MS0uNTMtLjM5LS4zOC0uNS0uNjYtLjUzLS45MlY5Yy0uMzYuMzMtLjczLjY3LTEuMTIgMS4wNmwtLjQzLjQ2Yy4xNy4zLjQuNi42Ni44Ny42Mi42MiAxLjM0IDEgMi4wOCAxLjEuNzUuMSAxLjQ2LS4xIDIuMDgtLjQxIDEuMjQtLjYyIDIuMjYtMS42OSAzLjI2LTIuNjlzMi4wNy0yLjAyIDIuNjgtMy4yNmMuMzEtLjYyLjUtMS4zMi40MS0yLjA3YTMuNjMgMy42MyAwIDAwLTEuMS0yLjA4Yy0uNjEtLjYyLTEuMzMtMS0yLjA3LTEuMWEzLjA4IDMuMDggMCAwMC0uNTYtLjAyelwiLz48L3N2Zz5gLFxuICBvbDogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk0xLjUgN2EuNS41IDAgMTAwIDFoMWEuNS41IDAgMDEuNS41YzAgLjE2NC0uMDguMzEtLjE0LjM1NWwtMS42NTUgMS4yNUEuNDkyLjQ5MiAwIDAwMSAxMC41YS41LjUgMCAwMC41LjVoMmEuNS41IDAgMDAwLTFIM2wuMzk4LS4yOTlBMS41IDEuNSAwIDAwMi41IDd6XCIvPjxwYXRoIGQ9XCJNMS41IDEyYy0uNjY3IDAtLjY2NyAxIDAgMWgxLjI1Yy4zMzMgMCAuMzMzLjUgMCAuNUgyLjVjLS42NjcgMC0uNjY3IDEgMCAxaC4yNWMuMzMzIDAgLjMzMy41IDAgLjVIMS41Yy0uNjY3IDAtLjY2NyAxIDAgMWgxYy4zOTggMCAuNzgtLjEzMSAxLjA2LS4zNjUuMjgyLS4yMzUuNDQtLjU1NC40NC0uODg1YTEuMTIxIDEuMTIxIDAgMDAtLjMwMy0uNzVjLjE5MS0uMjA0LjMtLjQ3LjMwMy0uNzUgMC0uMzMyLS4xNTgtLjY1MS0uNDQtLjg4NS0uMy0uMjQxLS42NzUtLjM3LTEuMDYtLjM2NXpcIi8+PHJlY3QgeT1cIjEzXCIgeD1cIjZcIiBoZWlnaHQ9XCIyXCIgd2lkdGg9XCIxMlwiIHJ5PVwiMVwiLz48cmVjdCByeT1cIjFcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMlwiIHg9XCI2XCIgeT1cIjhcIi8+PHJlY3QgeT1cIjNcIiB4PVwiNlwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjEyXCIgcnk9XCIxXCIvPjxwYXRoIGQ9XCJNMS41IDJhLjUuNSAwIDEwMCAxSDJ2MmgtLjVhLjUuNSAwIDEwMCAxaDJhLjUuNSAwIDEwMC0xSDNWMi41YzAtLjI3Ny0uMjIzLS41LS41LS41elwiLz48L3N2Zz5gLFxuICBzdHJpa2V0aHJvdWdoOiBgPHN2ZyB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIj48cGF0aCBkPVwiTTEwIDJDNiAyIDQgNCA0IDZjMCAuMzM4LjA4LjY3Mi4xOTMgMWgyLjM0QzYuMTEzIDYuNjI5IDYgNi4yOTUgNiA2YzAtLjMzNC4xMTctLjcyNS42OTEtMS4xNTRDNy4yNjUgNC40MTYgOC4zMzEgNCAxMCA0aDNhMSAxIDAgMDAwLTJ6bTEuNDc3IDljLjQxMy4zNjguNTIzLjcwNi41MjMgMSAwIC4zMzQtLjEyNy43MTItLjcwMSAxLjE0My0uNTc1LjQzLTEuNjMyLjg1LTMuMjk5Ljg1N2wtMS4wMDYuMDA3VjE0SDVhMSAxIDAgMDAwIDJoM2M0IDAgNi0yIDYtNCAwLS4zMzgtLjA4MS0uNjcyLS4xOTUtMXpcIi8+PHJlY3Qgcnk9XCIxXCIgeT1cIjhcIiB4PVwiMVwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjE2XCIvPjwvc3ZnPmAsXG4gIHVsOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48Y2lyY2xlIGN4PVwiMlwiIGN5PVwiOVwiIHI9XCIyXCIvPjxjaXJjbGUgY3k9XCI0XCIgY3g9XCIyXCIgcj1cIjJcIi8+PHJlY3QgeT1cIjNcIiB4PVwiNlwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjEyXCIgcnk9XCIxXCIvPjxjaXJjbGUgY3g9XCIyXCIgY3k9XCIxNFwiIHI9XCIyXCIvPjxyZWN0IHJ5PVwiMVwiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIyXCIgeD1cIjZcIiB5PVwiOFwiLz48cmVjdCB5PVwiMTNcIiB4PVwiNlwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjEyXCIgcnk9XCIxXCIvPjwvc3ZnPmBcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHN2ZzsiLCJpbXBvcnQgc3ZnIGZyb20gJy4vc3ZnL3N2Zyc7XG5cbmNvbnN0IGlzTWFjTGlrZSA9IC8oTWFjfGlQaG9uZXxpUG9kfGlQYWQpL2kudGVzdCh0eXBlb2YgbmF2aWdhdG9yICE9PSBcInVuZGVmaW5lZFwiID8gbmF2aWdhdG9yLnBsYXRmb3JtIDogXCJcIik7XG5cbmNvbnN0IERlZmF1bHRDb21tYW5kcyA9IHtcbiAgJ2JvbGQnOiB7XG4gICAgbmFtZTogJ2JvbGQnLFxuICAgIGFjdGlvbjogJ2JvbGQnLFxuICAgIGlubmVySFRNTDogc3ZnLmJvbGQsXG4gICAgdGl0bGU6ICdCb2xkJyxcbiAgICBob3RrZXk6ICdNb2QtQicsXG4gIH0sXG4gICdpdGFsaWMnOiB7XG4gICAgbmFtZTogJ2l0YWxpYycsXG4gICAgYWN0aW9uOiAnaXRhbGljJyxcbiAgICBpbm5lckhUTUw6IHN2Zy5pdGFsaWMsXG4gICAgdGl0bGU6ICdJdGFsaWMnLFxuICAgIGhvdGtleTogJ01vZC1JJyxcbiAgfSxcbiAgJ3N0cmlrZXRocm91Z2gnOiB7XG4gICAgbmFtZTogJ3N0cmlrZXRocm91Z2gnLFxuICAgIGFjdGlvbjogJ3N0cmlrZXRocm91Z2gnLFxuICAgIGlubmVySFRNTDogc3ZnLnN0cmlrZXRocm91Z2gsXG4gICAgdGl0bGU6ICdTdHJpa2V0aHJvdWdoJyxcbiAgICBob3RrZXk6ICdNb2QyLVNoaWZ0LTUnLFxuICB9LFxuICAnY29kZSc6IHtcbiAgICBuYW1lOiAnY29kZScsXG4gICAgYWN0aW9uOiAnY29kZScsXG4gICAgaW5uZXJIVE1MOiBzdmcuY29kZSxcbiAgICB0aXRsZTogJ0Zvcm1hdCBhcyBjb2RlJyxcbiAgfSxcbiAgJ2gxJzoge1xuICAgIG5hbWU6ICdoMScsXG4gICAgYWN0aW9uOiAnaDEnLFxuICAgIGlubmVySFRNTDogc3ZnLmgxLFxuICAgIHRpdGxlOiAnTGV2ZWwgMSBoZWFkaW5nJyxcbiAgICBob3RrZXk6ICdNb2QtU2hpZnQtMScsXG4gIH0sXG4gICdoMic6IHtcbiAgICBuYW1lOiAnaDInLFxuICAgIGFjdGlvbjogJ2gyJyxcbiAgICBpbm5lckhUTUw6IHN2Zy5oMixcbiAgICB0aXRsZTogJ0xldmVsIDIgaGVhZGluZycsXG4gICAgaG90a2V5OiAnTW9kLVNoaWZ0LTInLFxuICB9LFxuICAndWwnOiB7XG4gICAgbmFtZTogJ3VsJyxcbiAgICBhY3Rpb246ICd1bCcsXG4gICAgaW5uZXJIVE1MOiBzdmcudWwsXG4gICAgdGl0bGU6ICdCdWxsZXRlZCBsaXN0JyxcbiAgfSxcbiAgJ29sJzoge1xuICAgIG5hbWU6ICdvbCcsXG4gICAgYWN0aW9uOiAnb2wnLFxuICAgIGlubmVySFRNTDogc3ZnLm9sLFxuICAgIHRpdGxlOiAnTnVtYmVyZWQgbGlzdCcsXG4gIH0sXG4gICdibG9ja3F1b3RlJzoge1xuICAgIG5hbWU6ICdibG9ja3F1b3RlJyxcbiAgICBhY3Rpb246ICdibG9ja3F1b3RlJyxcbiAgICBpbm5lckhUTUw6IHN2Zy5ibG9ja3F1b3RlLFxuICAgIHRpdGxlOiAnUXVvdGUnLFxuICAgIGhvdGtleTogJ01vZDItU2hpZnQtUScsXG4gIH0sXG4gICdpbnNlcnRMaW5rJzoge1xuICAgIG5hbWU6ICdpbnNlcnRMaW5rJyxcbiAgICBhY3Rpb246IChlZGl0b3IpID0+IHtpZiAoZWRpdG9yLmlzSW5saW5lRm9ybWF0dGluZ0FsbG93ZWQoKSkgZWRpdG9yLndyYXBTZWxlY3Rpb24oJ1snLCAnXSgpJyl9LFxuICAgIGVuYWJsZWQ6IChlZGl0b3IsIGZvY3VzLCBhbmNob3IpID0+IGVkaXRvci5pc0lubGluZUZvcm1hdHRpbmdBbGxvd2VkKGZvY3VzLCBhbmNob3IpID8gZmFsc2UgOiBudWxsLFxuICAgIGlubmVySFRNTDogc3ZnLmxpbmssXG4gICAgdGl0bGU6ICdJbnNlcnQgbGluaycsXG4gICAgaG90a2V5OiAnTW9kLUsnLFxuICB9LFxuICAnaW5zZXJ0SW1hZ2UnOiB7XG4gICAgbmFtZTogJ2luc2VydEltYWdlJyxcbiAgICBhY3Rpb246IChlZGl0b3IpID0+IHtpZiAoZWRpdG9yLmlzSW5saW5lRm9ybWF0dGluZ0FsbG93ZWQoKSkgZWRpdG9yLndyYXBTZWxlY3Rpb24oJyFbJywgJ10oKScpfSxcbiAgICBlbmFibGVkOiAoZWRpdG9yLCBmb2N1cywgYW5jaG9yKSA9PiBlZGl0b3IuaXNJbmxpbmVGb3JtYXR0aW5nQWxsb3dlZChmb2N1cywgYW5jaG9yKSA/IGZhbHNlIDogbnVsbCxcbiAgICBpbm5lckhUTUw6IHN2Zy5pbWFnZSxcbiAgICB0aXRsZTogJ0luc2VydCBpbWFnZScsXG4gICAgaG90a2V5OiAnTW9kMi1TaGlmdC1JJyxcbiAgfSxcbiAgJ2hyJzoge1xuICAgIG5hbWU6ICdocicsXG4gICAgYWN0aW9uOiAoZWRpdG9yKSA9PiBlZGl0b3IucGFzdGUoJ1xcbioqKlxcbicpLFxuICAgIGVuYWJsZWQ6ICgpID0+IGZhbHNlLFxuICAgIGlubmVySFRNTDogc3ZnLmhyLFxuICAgIHRpdGxlOiAnSW5zZXJ0IGhvcml6b250YWwgbGluZScsXG4gICAgaG90a2V5OiAnTW9kMi1TaGlmdC1MJ1xuICB9XG59XG5cblxuY2xhc3MgQ29tbWFuZEJhciB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgdGhpcy5lID0gbnVsbDtcbiAgICB0aGlzLmVkaXRvciA9IG51bGw7XG4gICAgdGhpcy5jb21tYW5kcyA9IFtdO1xuICAgIHRoaXMuYnV0dG9ucyA9IHt9O1xuICAgIHRoaXMuc3RhdGUgPSB7fTtcbiAgICB0aGlzLmhvdGtleXMgPSBbXTtcblxuICAgIGxldCBlbGVtZW50ID0gcHJvcHMuZWxlbWVudDtcbiAgICBpZiAoZWxlbWVudCAmJiAhZWxlbWVudC50YWdOYW1lKSB7XG4gICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJvcHMuZWxlbWVudCk7XG4gICAgfVxuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmJvZHk7IFxuICAgIH1cbiAgICB0aGlzLmNyZWF0ZUNvbW1hbmRCYXJFbGVtZW50KGVsZW1lbnQsIHByb3BzLmNvbW1hbmRzIHx8IFsnYm9sZCcsICdpdGFsaWMnLCAnc3RyaWtldGhyb3VnaCcsICd8JywgJ2NvZGUnLCAnfCcsICdoMScsICdoMicsICd8JywgJ3VsJywgJ29sJywgJ3wnLCAnYmxvY2txdW90ZScsICdocicsICd8JywgJ2luc2VydExpbmsnLCAnaW5zZXJ0SW1hZ2UnXSk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChlKSA9PiB0aGlzLmhhbmRsZUtleWRvd24oZSkpO1xuICAgIGlmIChwcm9wcy5lZGl0b3IpIHRoaXMuc2V0RWRpdG9yKHByb3BzLmVkaXRvcik7XG4gIH1cblxuICBjcmVhdGVDb21tYW5kQmFyRWxlbWVudChwYXJlbnRFbGVtZW50LCBjb21tYW5kcykge1xuICAgIHRoaXMuZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMuZS5jbGFzc05hbWUgPSAnVE1Db21tYW5kQmFyJztcblxuICAgIGZvciAobGV0IGNvbW1hbmQgb2YgY29tbWFuZHMpIHtcbiAgICAgIGlmIChjb21tYW5kID09ICd8Jykge1xuICAgICAgICBsZXQgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgZWwuY2xhc3NOYW1lID0gJ1RNQ29tbWFuZERpdmlkZXInO1xuICAgICAgICB0aGlzLmUuYXBwZW5kQ2hpbGQoZWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGNvbW1hbmROYW1lO1xuICAgICAgICBpZiAodHlwZW9mIGNvbW1hbmQgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIC8vIFJlZmVyZW5jZSB0byBkZWZhdWx0IGNvbW1hbmRcblxuICAgICAgICAgIGlmIChEZWZhdWx0Q29tbWFuZHNbY29tbWFuZF0pIHtcbiAgICAgICAgICAgIGNvbW1hbmROYW1lID0gY29tbWFuZDtcbiAgICAgICAgICAgIHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdID0gRGVmYXVsdENvbW1hbmRzW2NvbW1hbmROYW1lXTtcblxuICAgICAgICAgICAgXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgY29tbWFuZCA9PSBcIm9iamVjdFwiICYmIGNvbW1hbmQubmFtZSkge1xuICAgICAgICAgIGNvbW1hbmROYW1lID0gY29tbWFuZC5uYW1lO1xuICAgICAgICAgIHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdID0ge307IFxuICAgICAgICAgIGlmIChEZWZhdWx0Q29tbWFuZHNbY29tbWFuZE5hbWVdKSBPYmplY3QuYXNzaWduKHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdLCBEZWZhdWx0Q29tbWFuZHNbY29tbWFuZE5hbWVdKTtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdLCBjb21tYW5kKTtcbiAgICAgICAgXG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0aXRsZSA9IHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdLnRpdGxlIHx8IGNvbW1hbmROYW1lO1xuXG4gICAgICAgIGlmICh0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXS5ob3RrZXkpIHtcbiAgICAgICAgICBjb25zdCBrZXlzID0gdGhpcy5jb21tYW5kc1tjb21tYW5kTmFtZV0uaG90a2V5LnNwbGl0KCctJyk7XG4gICAgICAgICAgLy8gY29uc3RydWN0IG1vZGlmaWVyc1xuICAgICAgICAgIGxldCBtb2RpZmllcnMgPSBbXTtcbiAgICAgICAgICBsZXQgbW9kaWZpZXJleHBsYW5hdGlvbiA9IFtdO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgIHN3aXRjaCAoa2V5c1tpXSkge1xuICAgICAgICAgICAgICBjYXNlICdDdHJsJzogbW9kaWZpZXJzLnB1c2goJ2N0cmxLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCdDdHJsJyk7IGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlICdDbWQnOiBtb2RpZmllcnMucHVzaCgnbWV0YUtleScpOyBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ+KMmCcpOyBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnQWx0JzogbW9kaWZpZXJzLnB1c2goJ2FsdEtleScpOyBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ0FsdCcpOyBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnT3B0aW9uJzogbW9kaWZpZXJzLnB1c2goJ2FsdEtleScpOyBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ+KMpScpOyBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnV2luJzogbW9kaWZpZXJzLnB1c2goJ21ldGFLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCfiip4gV2luJyk7IGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgJ1NoaWZ0JzogIG1vZGlmaWVycy5wdXNoKCdzaGlmdEtleScpOyBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ+KHpycpOyBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlICdNb2QnOiAvLyBNb2QgaXMgYSBjb252ZW5pZW5jZSBtZWNoYW5pc206IEN0cmwgb24gV2luZG93cywgQ21kIG9uIE1hY1xuICAgICAgICAgICAgICAgIGlmIChpc01hY0xpa2UpIHttb2RpZmllcnMucHVzaCgnbWV0YUtleScpOyBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ+KMmCcpO30gXG4gICAgICAgICAgICAgICAgZWxzZSB7bW9kaWZpZXJzLnB1c2goJ2N0cmxLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCdDdHJsJyk7fSBcbiAgICAgICAgICAgICAgICBicmVhazsgXG4gICAgICAgICAgICAgIGNhc2UgJ01vZDInOiBcbiAgICAgICAgICAgICAgICBtb2RpZmllcnMucHVzaCgnYWx0S2V5Jyk7IFxuICAgICAgICAgICAgICAgIGlmIChpc01hY0xpa2UpIG1vZGlmaWVyZXhwbGFuYXRpb24ucHVzaCgn4oylJyk7XG4gICAgICAgICAgICAgICAgZWxzZSBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ0FsdCcpO1xuICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBNb2QyIGlzIGEgY29udmVuaWVuY2UgbWVjaGFuaXNtOiBBbHQgb24gV2luZG93cywgT3B0aW9uIG9uIE1hY1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goa2V5c1trZXlzLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgICBsZXQgaG90a2V5ID0ge1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBtb2RpZmllcnM6IG1vZGlmaWVycyxcbiAgICAgICAgICAgIGNvbW1hbmQ6IGNvbW1hbmROYW1lLFxuICAgICAgICAgIH07XG4gICAgICAgICAgLy8gVE9ETyBSaWdodCBub3cgdGhpcyBpcyB3b3JraW5nIG9ubHkgZm9yIGxldHRlcnMgYW5kIG51bWJlcnNcbiAgICAgICAgICBpZiAoa2V5c1trZXlzLmxlbmd0aCAtIDFdLm1hdGNoKC9eWzAtOV0kLykpIHtcbiAgICAgICAgICAgIGhvdGtleS5jb2RlID0gYERpZ2l0JHtrZXlzW2tleXMubGVuZ3RoIC0gMV19YDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaG90a2V5LmtleSA9IGtleXNba2V5cy5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmhvdGtleXMucHVzaChob3RrZXkpO1xuICAgICAgICAgIHRpdGxlID0gdGl0bGUuY29uY2F0KGAgKCR7bW9kaWZpZXJleHBsYW5hdGlvbi5qb2luKCcrJyl9KWApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5idXR0b25zW2NvbW1hbmROYW1lXSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLmJ1dHRvbnNbY29tbWFuZE5hbWVdLmNsYXNzTmFtZSA9ICdUTUNvbW1hbmRCdXR0b24gVE1Db21tYW5kQnV0dG9uX0Rpc2FibGVkJztcbiAgICAgICAgdGhpcy5idXR0b25zW2NvbW1hbmROYW1lXS50aXRsZSA9IHRpdGxlO1xuICAgICAgICB0aGlzLmJ1dHRvbnNbY29tbWFuZE5hbWVdLmlubmVySFRNTCA9IHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdLmlubmVySFRNTDtcblxuICAgICAgICB0aGlzLmJ1dHRvbnNbY29tbWFuZE5hbWVdLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIChlKSA9PiB0aGlzLmhhbmRsZUNsaWNrKGNvbW1hbmROYW1lLCBlKSk7XG4gICAgICAgIHRoaXMuZS5hcHBlbmRDaGlsZCh0aGlzLmJ1dHRvbnNbY29tbWFuZE5hbWVdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmUpO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soY29tbWFuZE5hbWUsIGV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmVkaXRvcikgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXS5hY3Rpb24gPT0gXCJzdHJpbmdcIikge1xuICAgICAgaWYgKHRoaXMuc3RhdGVbY29tbWFuZE5hbWVdID09PSBmYWxzZSkgdGhpcy5lZGl0b3Iuc2V0Q29tbWFuZFN0YXRlKGNvbW1hbmROYW1lLCB0cnVlKTtcbiAgICAgIGVsc2UgdGhpcy5lZGl0b3Iuc2V0Q29tbWFuZFN0YXRlKGNvbW1hbmROYW1lLCBmYWxzZSk7ICBcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXS5hY3Rpb24gPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXS5hY3Rpb24odGhpcy5lZGl0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHNldEVkaXRvcihlZGl0b3IpIHtcbiAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICBlZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2VsZWN0aW9uJywgKGUpID0+IHRoaXMuaGFuZGxlU2VsZWN0aW9uKGUpKTtcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdGlvbihldmVudCkge1xuICAgIGlmIChldmVudC5jb21tYW5kU3RhdGUpIHtcbiAgICAgIGZvciAobGV0IGNvbW1hbmQgaW4gdGhpcy5jb21tYW5kcykge1xuICAgICAgICBpZiAoZXZlbnQuY29tbWFuZFN0YXRlW2NvbW1hbmRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAodGhpcy5jb21tYW5kc1tjb21tYW5kXS5lbmFibGVkKSB0aGlzLnN0YXRlW2NvbW1hbmRdID0gdGhpcy5jb21tYW5kc1tjb21tYW5kXS5lbmFibGVkKHRoaXMuZWRpdG9yLCBldmVudC5mb2N1cywgZXZlbnQuYW5jaG9yKTtcbiAgICAgICAgICBlbHNlIHRoaXMuc3RhdGVbY29tbWFuZF0gPSBldmVudC5mb2N1cyA/IGZhbHNlIDogbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnN0YXRlW2NvbW1hbmRdID0gZXZlbnQuY29tbWFuZFN0YXRlW2NvbW1hbmRdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbY29tbWFuZF0gPT09IHRydWUpIHtcbiAgICAgICAgICB0aGlzLmJ1dHRvbnNbY29tbWFuZF0uY2xhc3NOYW1lID0gJ1RNQ29tbWFuZEJ1dHRvbiBUTUNvbW1hbmRCdXR0b25fQWN0aXZlJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlW2NvbW1hbmRdID09PSBmYWxzZSkge1xuICAgICAgICAgIHRoaXMuYnV0dG9uc1tjb21tYW5kXS5jbGFzc05hbWUgPSAnVE1Db21tYW5kQnV0dG9uIFRNQ29tbWFuZEJ1dHRvbl9JbmFjdGl2ZSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5idXR0b25zW2NvbW1hbmRdLmNsYXNzTmFtZSA9ICAnVE1Db21tYW5kQnV0dG9uIFRNQ29tbWFuZEJ1dHRvbl9EaXNhYmxlZCc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVLZXlkb3duKGV2ZW50KSB7XG4gICAgb3V0ZXI6IGZvciAobGV0IGhvdGtleSBvZiB0aGlzLmhvdGtleXMpIHtcbiAgICAgIGlmICgoaG90a2V5LmtleSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PSBob3RrZXkua2V5KSB8fCAoaG90a2V5LmNvZGUgJiYgZXZlbnQuY29kZSA9PSBob3RrZXkuY29kZSkpIHtcbiAgICAgICAgLy8gS2V5IG1hdGNoZXMgaG90a2V5LiBMb29rIGZvciBhbnkgcmVxdWlyZWQgbW9kaWZpZXIgdGhhdCB3YXNuJ3QgcHJlc3NlZFxuICAgICAgICBmb3IgKGxldCBtb2RpZmllciBvZiBob3RrZXkubW9kaWZpZXJzKSB7XG4gICAgICAgICAgaWYgKCFldmVudFttb2RpZmllcl0pIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5dGhpbmcgbWF0Y2hlcy5cbiAgICAgICAgdGhpcy5oYW5kbGVDbGljayhob3RrZXkuY29tbWFuZCwgZXZlbnQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbW1hbmRCYXI7IiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAmJiBpdC5NYXRoID09PSBNYXRoICYmIGl0O1xufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbm1vZHVsZS5leHBvcnRzID1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWdsb2JhbC10aGlzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIGdsb2JhbFRoaXMgPT0gJ29iamVjdCcgJiYgZ2xvYmFsVGhpcykgfHxcbiAgY2hlY2sodHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgLS0gc2FmZVxuICBjaGVjayh0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmKSB8fFxuICBjaGVjayh0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCkgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jIC0tIGZhbGxiYWNrXG4gIChmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KSgpIHx8IHRoaXMgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gRGV0ZWN0IElFOCdzIGluY29tcGxldGUgZGVmaW5lUHJvcGVydHkgaW1wbGVtZW50YXRpb25cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAxLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KVsxXSAhPT0gNztcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWZ1bmN0aW9uLXByb3RvdHlwZS1iaW5kIC0tIHNhZmVcbiAgdmFyIHRlc3QgPSAoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KS5iaW5kKCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgLS0gc2FmZVxuICByZXR1cm4gdHlwZW9mIHRlc3QgIT0gJ2Z1bmN0aW9uJyB8fCB0ZXN0Lmhhc093blByb3BlcnR5KCdwcm90b3R5cGUnKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBGdW5jdGlvblByb3RvdHlwZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbnZhciBjYWxsID0gRnVuY3Rpb25Qcm90b3R5cGUuY2FsbDtcbnZhciB1bmN1cnJ5VGhpc1dpdGhCaW5kID0gTkFUSVZFX0JJTkQgJiYgRnVuY3Rpb25Qcm90b3R5cGUuYmluZC5iaW5kKGNhbGwsIGNhbGwpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9CSU5EID8gdW5jdXJyeVRoaXNXaXRoQmluZCA6IGZ1bmN0aW9uIChmbikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBjYWxsLmFwcGx5KGZuLCBhcmd1bWVudHMpO1xuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBkb2N1bWVudEFsbCA9IHR5cGVvZiBkb2N1bWVudCA9PSAnb2JqZWN0JyAmJiBkb2N1bWVudC5hbGw7XG5cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtSXNIVE1MRERBLWludGVybmFsLXNsb3Rcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLXR5cGVvZi11bmRlZmluZWQgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbnZhciBJU19IVE1MRERBID0gdHlwZW9mIGRvY3VtZW50QWxsID09ICd1bmRlZmluZWQnICYmIGRvY3VtZW50QWxsICE9PSB1bmRlZmluZWQ7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBhbGw6IGRvY3VtZW50QWxsLFxuICBJU19IVE1MRERBOiBJU19IVE1MRERBXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRkb2N1bWVudEFsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1hbGwnKTtcblxudmFyIGRvY3VtZW50QWxsID0gJGRvY3VtZW50QWxsLmFsbDtcblxuLy8gYElzQ2FsbGFibGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pc2NhbGxhYmxlXG5tb2R1bGUuZXhwb3J0cyA9ICRkb2N1bWVudEFsbC5JU19IVE1MRERBID8gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJyB8fCBhcmd1bWVudCA9PT0gZG9jdW1lbnRBbGw7XG59IDogZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJztcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyB3ZSBjYW4ndCB1c2UganVzdCBgaXQgPT0gbnVsbGAgc2luY2Ugb2YgYGRvY3VtZW50LmFsbGAgc3BlY2lhbCBjYXNlXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLUlzSFRNTEREQS1pbnRlcm5hbC1zbG90LWFlY1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID09PSBudWxsIHx8IGl0ID09PSB1bmRlZmluZWQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlcXVpcmVvYmplY3Rjb2VyY2libGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpc051bGxPclVuZGVmaW5lZChpdCkpIHRocm93IG5ldyAkVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbi8vIGBUb09iamVjdGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gJE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSB1bmN1cnJ5VGhpcyh7fS5oYXNPd25Qcm9wZXJ0eSk7XG5cbi8vIGBIYXNPd25Qcm9wZXJ0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWhhc293bnByb3BlcnR5XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWhhc293biAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5oYXNPd24gfHwgZnVuY3Rpb24gaGFzT3duKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5KHRvT2JqZWN0KGl0KSwga2V5KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgZ2V0RGVzY3JpcHRvciA9IERFU0NSSVBUT1JTICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbnZhciBFWElTVFMgPSBoYXNPd24oRnVuY3Rpb25Qcm90b3R5cGUsICduYW1lJyk7XG4vLyBhZGRpdGlvbmFsIHByb3RlY3Rpb24gZnJvbSBtaW5pZmllZCAvIG1hbmdsZWQgLyBkcm9wcGVkIGZ1bmN0aW9uIG5hbWVzXG52YXIgUFJPUEVSID0gRVhJU1RTICYmIChmdW5jdGlvbiBzb21ldGhpbmcoKSB7IC8qIGVtcHR5ICovIH0pLm5hbWUgPT09ICdzb21ldGhpbmcnO1xudmFyIENPTkZJR1VSQUJMRSA9IEVYSVNUUyAmJiAoIURFU0NSSVBUT1JTIHx8IChERVNDUklQVE9SUyAmJiBnZXREZXNjcmlwdG9yKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpLmNvbmZpZ3VyYWJsZSkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgRVhJU1RTOiBFWElTVFMsXG4gIFBST1BFUjogUFJPUEVSLFxuICBDT05GSUdVUkFCTEU6IENPTkZJR1VSQUJMRVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgZGVmaW5lUHJvcGVydHkoZ2xvYmFsLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGdsb2JhbFtrZXldID0gdmFsdWU7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZGVmaW5lR2xvYmFsUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eScpO1xuXG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCBkZWZpbmVHbG9iYWxQcm9wZXJ0eShTSEFSRUQsIHt9KTtcblxubW9kdWxlLmV4cG9ydHMgPSBzdG9yZTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbnZhciBmdW5jdGlvblRvU3RyaW5nID0gdW5jdXJyeVRoaXMoRnVuY3Rpb24udG9TdHJpbmcpO1xuXG4vLyB0aGlzIGhlbHBlciBicm9rZW4gaW4gYGNvcmUtanNAMy40LjEtMy40LjRgLCBzbyB3ZSBjYW4ndCB1c2UgYHNoYXJlZGAgaGVscGVyXG5pZiAoIWlzQ2FsbGFibGUoc3RvcmUuaW5zcGVjdFNvdXJjZSkpIHtcbiAgc3RvcmUuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBmdW5jdGlvblRvU3RyaW5nKGl0KTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdG9yZS5pbnNwZWN0U291cmNlO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNDYWxsYWJsZShXZWFrTWFwKSAmJiAvbmF0aXZlIGNvZGUvLnRlc3QoU3RyaW5nKFdlYWtNYXApKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgJGRvY3VtZW50QWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWFsbCcpO1xuXG52YXIgZG9jdW1lbnRBbGwgPSAkZG9jdW1lbnRBbGwuYWxsO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICRkb2N1bWVudEFsbC5JU19IVE1MRERBID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IGlzQ2FsbGFibGUoaXQpIHx8IGl0ID09PSBkb2N1bWVudEFsbDtcbn0gOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogaXNDYWxsYWJsZShpdCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyIGRvY3VtZW50ID0gZ2xvYmFsLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgRVhJU1RTID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gRVhJU1RTID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcblxuLy8gVGhhbmtzIHRvIElFOCBmb3IgaXRzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRlRWxlbWVudCgnZGl2JyksICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfVxuICB9KS5hICE9PSA3O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBWOCB+IENocm9tZSAzNi1cbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMzMzRcbm1vZHVsZS5leHBvcnRzID0gREVTQ1JJUFRPUlMgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCAncHJvdG90eXBlJywge1xuICAgIHZhbHVlOiA0MixcbiAgICB3cml0YWJsZTogZmFsc2VcbiAgfSkucHJvdG90eXBlICE9PSA0Mjtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgJFN0cmluZyA9IFN0cmluZztcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBUeXBlKGFyZ3VtZW50KSBpcyBPYmplY3RgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNPYmplY3QoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKCRTdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYW4gb2JqZWN0Jyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBjYWxsID0gRnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX0JJTkQgPyBjYWxsLmJpbmQoY2FsbCkgOiBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYWxsLmFwcGx5KGNhbGwsIGFyZ3VtZW50cyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciBhRnVuY3Rpb24gPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUoYXJndW1lbnQpID8gYXJndW1lbnQgOiB1bmRlZmluZWQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lc3BhY2UsIG1ldGhvZCkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBhRnVuY3Rpb24oZ2xvYmFsW25hbWVzcGFjZV0pIDogZ2xvYmFsW25hbWVzcGFjZV0gJiYgZ2xvYmFsW25hbWVzcGFjZV1bbWV0aG9kXTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gdW5jdXJyeVRoaXMoe30uaXNQcm90b3R5cGVPZik7XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBuYXZpZ2F0b3IgIT0gJ3VuZGVmaW5lZCcgJiYgU3RyaW5nKG5hdmlnYXRvci51c2VyQWdlbnQpIHx8ICcnO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcblxudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBEZW5vID0gZ2xvYmFsLkRlbm87XG52YXIgdmVyc2lvbnMgPSBwcm9jZXNzICYmIHByb2Nlc3MudmVyc2lvbnMgfHwgRGVubyAmJiBEZW5vLnZlcnNpb247XG52YXIgdjggPSB2ZXJzaW9ucyAmJiB2ZXJzaW9ucy52ODtcbnZhciBtYXRjaCwgdmVyc2lvbjtcblxuaWYgKHY4KSB7XG4gIG1hdGNoID0gdjguc3BsaXQoJy4nKTtcbiAgLy8gaW4gb2xkIENocm9tZSwgdmVyc2lvbnMgb2YgVjggaXNuJ3QgVjggPSBDaHJvbWUgLyAxMFxuICAvLyBidXQgdGhlaXIgY29ycmVjdCB2ZXJzaW9ucyBhcmUgbm90IGludGVyZXN0aW5nIGZvciB1c1xuICB2ZXJzaW9uID0gbWF0Y2hbMF0gPiAwICYmIG1hdGNoWzBdIDwgNCA/IDEgOiArKG1hdGNoWzBdICsgbWF0Y2hbMV0pO1xufVxuXG4vLyBCcm93c2VyRlMgTm9kZUpTIGBwcm9jZXNzYCBwb2x5ZmlsbCBpbmNvcnJlY3RseSBzZXQgYC52OGAgdG8gYDAuMGBcbi8vIHNvIGNoZWNrIGB1c2VyQWdlbnRgIGV2ZW4gaWYgYC52OGAgZXhpc3RzLCBidXQgMFxuaWYgKCF2ZXJzaW9uICYmIHVzZXJBZ2VudCkge1xuICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvRWRnZVxcLyhcXGQrKS8pO1xuICBpZiAoIW1hdGNoIHx8IG1hdGNoWzFdID49IDc0KSB7XG4gICAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0Nocm9tZVxcLyhcXGQrKS8pO1xuICAgIGlmIChtYXRjaCkgdmVyc2lvbiA9ICttYXRjaFsxXTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZlcnNpb247XG4iLCIndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1zeW1ib2wgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbnZhciAkU3RyaW5nID0gZ2xvYmFsLlN0cmluZztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gcmVxdWlyZWQgZm9yIHRlc3Rpbmdcbm1vZHVsZS5leHBvcnRzID0gISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBzeW1ib2wgPSBTeW1ib2woJ3N5bWJvbCBkZXRlY3Rpb24nKTtcbiAgLy8gQ2hyb21lIDM4IFN5bWJvbCBoYXMgaW5jb3JyZWN0IHRvU3RyaW5nIGNvbnZlcnNpb25cbiAgLy8gYGdldC1vd24tcHJvcGVydHktc3ltYm9sc2AgcG9seWZpbGwgc3ltYm9scyBjb252ZXJ0ZWQgdG8gb2JqZWN0IGFyZSBub3QgU3ltYm9sIGluc3RhbmNlc1xuICAvLyBuYjogRG8gbm90IGNhbGwgYFN0cmluZ2AgZGlyZWN0bHkgdG8gYXZvaWQgdGhpcyBiZWluZyBvcHRpbWl6ZWQgb3V0IHRvIGBzeW1ib2wrJydgIHdoaWNoIHdpbGwsXG4gIC8vIG9mIGNvdXJzZSwgZmFpbC5cbiAgcmV0dXJuICEkU3RyaW5nKHN5bWJvbCkgfHwgIShPYmplY3Qoc3ltYm9sKSBpbnN0YW5jZW9mIFN5bWJvbCkgfHxcbiAgICAvLyBDaHJvbWUgMzgtNDAgc3ltYm9scyBhcmUgbm90IGluaGVyaXRlZCBmcm9tIERPTSBjb2xsZWN0aW9ucyBwcm90b3R5cGVzIHRvIGluc3RhbmNlc1xuICAgICFTeW1ib2wuc2hhbSAmJiBWOF9WRVJTSU9OICYmIFY4X1ZFUlNJT04gPCA0MTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX1NZTUJPTFxuICAmJiAhU3ltYm9sLnNoYW1cbiAgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc1Byb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YnKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcblxubW9kdWxlLmV4cG9ydHMgPSBVU0VfU1lNQk9MX0FTX1VJRCA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgJFN5bWJvbCA9IGdldEJ1aWx0SW4oJ1N5bWJvbCcpO1xuICByZXR1cm4gaXNDYWxsYWJsZSgkU3ltYm9sKSAmJiBpc1Byb3RvdHlwZU9mKCRTeW1ib2wucHJvdG90eXBlLCAkT2JqZWN0KGl0KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRTdHJpbmcgPSBTdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICRTdHJpbmcoYXJndW1lbnQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiAnT2JqZWN0JztcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZycpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogSXNDYWxsYWJsZShhcmd1bWVudCkgaXMgdHJ1ZWBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcih0cnlUb1N0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQnKTtcblxuLy8gYEdldE1ldGhvZGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldG1ldGhvZFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoViwgUCkge1xuICB2YXIgZnVuYyA9IFZbUF07XG4gIHJldHVybiBpc051bGxPclVuZGVmaW5lZChmdW5jKSA/IHVuZGVmaW5lZCA6IGFDYWxsYWJsZShmdW5jKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYE9yZGluYXJ5VG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vcmRpbmFyeXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKHByZWYgPT09ICdzdHJpbmcnICYmIGlzQ2FsbGFibGUoZm4gPSBpbnB1dC50b1N0cmluZykgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChpc0NhbGxhYmxlKGZuID0gaW5wdXQudmFsdWVPZikgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChwcmVmICE9PSAnc3RyaW5nJyAmJiBpc0NhbGxhYmxlKGZuID0gaW5wdXQudG9TdHJpbmcpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiAnMy4zMy4wJyxcbiAgbW9kZTogSVNfUFVSRSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE0LTIwMjMgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknLFxuICBsaWNlbnNlOiAnaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4zMy4wL0xJQ0VOU0UnLFxuICBzb3VyY2U6ICdodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcydcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG52YXIgaWQgPSAwO1xudmFyIHBvc3RmaXggPSBNYXRoLnJhbmRvbSgpO1xudmFyIHRvU3RyaW5nID0gdW5jdXJyeVRoaXMoMS4wLnRvU3RyaW5nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcgKyAoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSkgKyAnKV8nICsgdG9TdHJpbmcoKytpZCArIHBvc3RmaXgsIDM2KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xuXG52YXIgU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciBXZWxsS25vd25TeW1ib2xzU3RvcmUgPSBzaGFyZWQoJ3drcycpO1xudmFyIGNyZWF0ZVdlbGxLbm93blN5bWJvbCA9IFVTRV9TWU1CT0xfQVNfVUlEID8gU3ltYm9sWydmb3InXSB8fCBTeW1ib2wgOiBTeW1ib2wgJiYgU3ltYm9sLndpdGhvdXRTZXR0ZXIgfHwgdWlkO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGlmICghaGFzT3duKFdlbGxLbm93blN5bWJvbHNTdG9yZSwgbmFtZSkpIHtcbiAgICBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBOQVRJVkVfU1lNQk9MICYmIGhhc093bihTeW1ib2wsIG5hbWUpXG4gICAgICA/IFN5bWJvbFtuYW1lXVxuICAgICAgOiBjcmVhdGVXZWxsS25vd25TeW1ib2woJ1N5bWJvbC4nICsgbmFtZSk7XG4gIH0gcmV0dXJuIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBvcmRpbmFyeVRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbnZhciBUT19QUklNSVRJVkUgPSB3ZWxsS25vd25TeW1ib2woJ3RvUHJpbWl0aXZlJyk7XG5cbi8vIGBUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSB8fCBpc1N5bWJvbChpbnB1dCkpIHJldHVybiBpbnB1dDtcbiAgdmFyIGV4b3RpY1RvUHJpbSA9IGdldE1ldGhvZChpbnB1dCwgVE9fUFJJTUlUSVZFKTtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKGV4b3RpY1RvUHJpbSkge1xuICAgIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnZGVmYXVsdCc7XG4gICAgcmVzdWx0ID0gY2FsbChleG90aWNUb1ByaW0sIGlucHV0LCBwcmVmKTtcbiAgICBpZiAoIWlzT2JqZWN0KHJlc3VsdCkgfHwgaXNTeW1ib2wocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbiAgfVxuICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ251bWJlcic7XG4gIHJldHVybiBvcmRpbmFyeVRvUHJpbWl0aXZlKGlucHV0LCBwcmVmKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG5cbi8vIGBUb1Byb3BlcnR5S2V5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9wcm9wZXJ0eWtleVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIGtleSA9IHRvUHJpbWl0aXZlKGFyZ3VtZW50LCAnc3RyaW5nJyk7XG4gIHJldHVybiBpc1N5bWJvbChrZXkpID8ga2V5IDoga2V5ICsgJyc7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcbnZhciBWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1ZycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgJGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIEVOVU1FUkFCTEUgPSAnZW51bWVyYWJsZSc7XG52YXIgQ09ORklHVVJBQkxFID0gJ2NvbmZpZ3VyYWJsZSc7XG52YXIgV1JJVEFCTEUgPSAnd3JpdGFibGUnO1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnR5XG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/IFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID8gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAodHlwZW9mIE8gPT09ICdmdW5jdGlvbicgJiYgUCA9PT0gJ3Byb3RvdHlwZScgJiYgJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzICYmIFdSSVRBQkxFIGluIEF0dHJpYnV0ZXMgJiYgIUF0dHJpYnV0ZXNbV1JJVEFCTEVdKSB7XG4gICAgdmFyIGN1cnJlbnQgPSAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnRbV1JJVEFCTEVdKSB7XG4gICAgICBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgICAgIEF0dHJpYnV0ZXMgPSB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogQ09ORklHVVJBQkxFIGluIEF0dHJpYnV0ZXMgPyBBdHRyaWJ1dGVzW0NPTkZJR1VSQUJMRV0gOiBjdXJyZW50W0NPTkZJR1VSQUJMRV0sXG4gICAgICAgIGVudW1lcmFibGU6IEVOVU1FUkFCTEUgaW4gQXR0cmlidXRlcyA/IEF0dHJpYnV0ZXNbRU5VTUVSQUJMRV0gOiBjdXJyZW50W0VOVU1FUkFCTEVdLFxuICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICB9IHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG59IDogJGRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuICRkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBuZXcgJFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gREVTQ1JJUFRPUlMgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKG9iamVjdCwga2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG5cbnZhciBrZXlzID0gc2hhcmVkKCdrZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4ga2V5c1trZXldIHx8IChrZXlzW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9XRUFLX01BUCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24nKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG52YXIgT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQgPSAnT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQnO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xudmFyIHNldCwgZ2V0LCBoYXM7XG5cbnZhciBlbmZvcmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBoYXMoaXQpID8gZ2V0KGl0KSA6IHNldChpdCwge30pO1xufTtcblxudmFyIGdldHRlckZvciA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICB2YXIgc3RhdGU7XG4gICAgaWYgKCFpc09iamVjdChpdCkgfHwgKHN0YXRlID0gZ2V0KGl0KSkudHlwZSAhPT0gVFlQRSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAnICsgVFlQRSArICcgcmVxdWlyZWQnKTtcbiAgICB9IHJldHVybiBzdGF0ZTtcbiAgfTtcbn07XG5cbmlmIChOQVRJVkVfV0VBS19NQVAgfHwgc2hhcmVkLnN0YXRlKSB7XG4gIHZhciBzdG9yZSA9IHNoYXJlZC5zdGF0ZSB8fCAoc2hhcmVkLnN0YXRlID0gbmV3IFdlYWtNYXAoKSk7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXNlbGYtYXNzaWduIC0tIHByb3RvdHlwZSBtZXRob2RzIHByb3RlY3Rpb24gKi9cbiAgc3RvcmUuZ2V0ID0gc3RvcmUuZ2V0O1xuICBzdG9yZS5oYXMgPSBzdG9yZS5oYXM7XG4gIHN0b3JlLnNldCA9IHN0b3JlLnNldDtcbiAgLyogZXNsaW50LWVuYWJsZSBuby1zZWxmLWFzc2lnbiAtLSBwcm90b3R5cGUgbWV0aG9kcyBwcm90ZWN0aW9uICovXG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAoc3RvcmUuaGFzKGl0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcihPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCk7XG4gICAgbWV0YWRhdGEuZmFjYWRlID0gaXQ7XG4gICAgc3RvcmUuc2V0KGl0LCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gc3RvcmUuZ2V0KGl0KSB8fCB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHN0b3JlLmhhcyhpdCk7XG4gIH07XG59IGVsc2Uge1xuICB2YXIgU1RBVEUgPSBzaGFyZWRLZXkoJ3N0YXRlJyk7XG4gIGhpZGRlbktleXNbU1RBVEVdID0gdHJ1ZTtcbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmIChoYXNPd24oaXQsIFNUQVRFKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCk7XG4gICAgbWV0YWRhdGEuZmFjYWRlID0gaXQ7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KGl0LCBTVEFURSwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGhhc093bihpdCwgU1RBVEUpID8gaXRbU1RBVEVdIDoge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBoYXNPd24oaXQsIFNUQVRFKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogc2V0LFxuICBnZXQ6IGdldCxcbiAgaGFzOiBoYXMsXG4gIGVuZm9yY2U6IGVuZm9yY2UsXG4gIGdldHRlckZvcjogZ2V0dGVyRm9yXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1uYW1lJykuQ09ORklHVVJBQkxFO1xudmFyIGluc3BlY3RTb3VyY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG5cbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZW5mb3JjZTtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG52YXIgJFN0cmluZyA9IFN0cmluZztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xudmFyIHJlcGxhY2UgPSB1bmN1cnJ5VGhpcygnJy5yZXBsYWNlKTtcbnZhciBqb2luID0gdW5jdXJyeVRoaXMoW10uam9pbik7XG5cbnZhciBDT05GSUdVUkFCTEVfTEVOR1RIID0gREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgJ2xlbmd0aCcsIHsgdmFsdWU6IDggfSkubGVuZ3RoICE9PSA4O1xufSk7XG5cbnZhciBURU1QTEFURSA9IFN0cmluZyhTdHJpbmcpLnNwbGl0KCdTdHJpbmcnKTtcblxudmFyIG1ha2VCdWlsdEluID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodmFsdWUsIG5hbWUsIG9wdGlvbnMpIHtcbiAgaWYgKHN0cmluZ1NsaWNlKCRTdHJpbmcobmFtZSksIDAsIDcpID09PSAnU3ltYm9sKCcpIHtcbiAgICBuYW1lID0gJ1snICsgcmVwbGFjZSgkU3RyaW5nKG5hbWUpLCAvXlN5bWJvbFxcKChbXildKilcXCkvLCAnJDEnKSArICddJztcbiAgfVxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmdldHRlcikgbmFtZSA9ICdnZXQgJyArIG5hbWU7XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc2V0dGVyKSBuYW1lID0gJ3NldCAnICsgbmFtZTtcbiAgaWYgKCFoYXNPd24odmFsdWUsICduYW1lJykgfHwgKENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FICYmIHZhbHVlLm5hbWUgIT09IG5hbWUpKSB7XG4gICAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ25hbWUnLCB7IHZhbHVlOiBuYW1lLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gICAgZWxzZSB2YWx1ZS5uYW1lID0gbmFtZTtcbiAgfVxuICBpZiAoQ09ORklHVVJBQkxFX0xFTkdUSCAmJiBvcHRpb25zICYmIGhhc093bihvcHRpb25zLCAnYXJpdHknKSAmJiB2YWx1ZS5sZW5ndGggIT09IG9wdGlvbnMuYXJpdHkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ2xlbmd0aCcsIHsgdmFsdWU6IG9wdGlvbnMuYXJpdHkgfSk7XG4gIH1cbiAgdHJ5IHtcbiAgICBpZiAob3B0aW9ucyAmJiBoYXNPd24ob3B0aW9ucywgJ2NvbnN0cnVjdG9yJykgJiYgb3B0aW9ucy5jb25zdHJ1Y3Rvcikge1xuICAgICAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ3Byb3RvdHlwZScsIHsgd3JpdGFibGU6IGZhbHNlIH0pO1xuICAgIC8vIGluIFY4IH4gQ2hyb21lIDUzLCBwcm90b3R5cGVzIG9mIHNvbWUgbWV0aG9kcywgbGlrZSBgQXJyYXkucHJvdG90eXBlLnZhbHVlc2AsIGFyZSBub24td3JpdGFibGVcbiAgICB9IGVsc2UgaWYgKHZhbHVlLnByb3RvdHlwZSkgdmFsdWUucHJvdG90eXBlID0gdW5kZWZpbmVkO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHZhciBzdGF0ZSA9IGVuZm9yY2VJbnRlcm5hbFN0YXRlKHZhbHVlKTtcbiAgaWYgKCFoYXNPd24oc3RhdGUsICdzb3VyY2UnKSkge1xuICAgIHN0YXRlLnNvdXJjZSA9IGpvaW4oVEVNUExBVEUsIHR5cGVvZiBuYW1lID09ICdzdHJpbmcnID8gbmFtZSA6ICcnKTtcbiAgfSByZXR1cm4gdmFsdWU7XG59O1xuXG4vLyBhZGQgZmFrZSBGdW5jdGlvbiN0b1N0cmluZyBmb3IgY29ycmVjdCB3b3JrIHdyYXBwZWQgbWV0aG9kcyAvIGNvbnN0cnVjdG9ycyB3aXRoIG1ldGhvZHMgbGlrZSBMb0Rhc2ggaXNOYXRpdmVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRlbmQtbmF0aXZlIC0tIHJlcXVpcmVkXG5GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgPSBtYWtlQnVpbHRJbihmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUodGhpcykgJiYgZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zb3VyY2UgfHwgaW5zcGVjdFNvdXJjZSh0aGlzKTtcbn0sICd0b1N0cmluZycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIG1ha2VCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgbmFtZSwgZGVzY3JpcHRvcikge1xuICBpZiAoZGVzY3JpcHRvci5nZXQpIG1ha2VCdWlsdEluKGRlc2NyaXB0b3IuZ2V0LCBuYW1lLCB7IGdldHRlcjogdHJ1ZSB9KTtcbiAgaWYgKGRlc2NyaXB0b3Iuc2V0KSBtYWtlQnVpbHRJbihkZXNjcmlwdG9yLnNldCwgbmFtZSwgeyBzZXR0ZXI6IHRydWUgfSk7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eS5mKHRhcmdldCwgbmFtZSwgZGVzY3JpcHRvcik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS5mbGFnc2AgZ2V0dGVyIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldC1yZWdleHAucHJvdG90eXBlLmZsYWdzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICBpZiAodGhhdC5oYXNJbmRpY2VzKSByZXN1bHQgKz0gJ2QnO1xuICBpZiAodGhhdC5nbG9iYWwpIHJlc3VsdCArPSAnZyc7XG4gIGlmICh0aGF0Lmlnbm9yZUNhc2UpIHJlc3VsdCArPSAnaSc7XG4gIGlmICh0aGF0Lm11bHRpbGluZSkgcmVzdWx0ICs9ICdtJztcbiAgaWYgKHRoYXQuZG90QWxsKSByZXN1bHQgKz0gJ3MnO1xuICBpZiAodGhhdC51bmljb2RlKSByZXN1bHQgKz0gJ3UnO1xuICBpZiAodGhhdC51bmljb2RlU2V0cykgcmVzdWx0ICs9ICd2JztcbiAgaWYgKHRoYXQuc3RpY2t5KSByZXN1bHQgKz0gJ3knO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVCdWlsdEluQWNjZXNzb3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yJyk7XG52YXIgcmVnRXhwRmxhZ3MgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWZsYWdzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gYmFiZWwtbWluaWZ5IGFuZCBDbG9zdXJlIENvbXBpbGVyIHRyYW5zcGlsZXMgUmVnRXhwKCcuJywgJ2QnKSAtPiAvLi9kIGFuZCBpdCBjYXVzZXMgU3ludGF4RXJyb3JcbnZhciBSZWdFeHAgPSBnbG9iYWwuUmVnRXhwO1xudmFyIFJlZ0V4cFByb3RvdHlwZSA9IFJlZ0V4cC5wcm90b3R5cGU7XG5cbnZhciBGT1JDRUQgPSBERVNDUklQVE9SUyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBJTkRJQ0VTX1NVUFBPUlQgPSB0cnVlO1xuICB0cnkge1xuICAgIFJlZ0V4cCgnLicsICdkJyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgSU5ESUNFU19TVVBQT1JUID0gZmFsc2U7XG4gIH1cblxuICB2YXIgTyA9IHt9O1xuICAvLyBtb2Rlcm4gVjggYnVnXG4gIHZhciBjYWxscyA9ICcnO1xuICB2YXIgZXhwZWN0ZWQgPSBJTkRJQ0VTX1NVUFBPUlQgPyAnZGdpbXN5JyA6ICdnaW1zeSc7XG5cbiAgdmFyIGFkZEdldHRlciA9IGZ1bmN0aW9uIChrZXksIGNocikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBrZXksIHsgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICBjYWxscyArPSBjaHI7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IH0pO1xuICB9O1xuXG4gIHZhciBwYWlycyA9IHtcbiAgICBkb3RBbGw6ICdzJyxcbiAgICBnbG9iYWw6ICdnJyxcbiAgICBpZ25vcmVDYXNlOiAnaScsXG4gICAgbXVsdGlsaW5lOiAnbScsXG4gICAgc3RpY2t5OiAneSdcbiAgfTtcblxuICBpZiAoSU5ESUNFU19TVVBQT1JUKSBwYWlycy5oYXNJbmRpY2VzID0gJ2QnO1xuXG4gIGZvciAodmFyIGtleSBpbiBwYWlycykgYWRkR2V0dGVyKGtleSwgcGFpcnNba2V5XSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxuICB2YXIgcmVzdWx0ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHBQcm90b3R5cGUsICdmbGFncycpLmdldC5jYWxsKE8pO1xuXG4gIHJldHVybiByZXN1bHQgIT09IGV4cGVjdGVkIHx8IGNhbGxzICE9PSBleHBlY3RlZDtcbn0pO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS5mbGFnc2AgZ2V0dGVyXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldC1yZWdleHAucHJvdG90eXBlLmZsYWdzXG5pZiAoRk9SQ0VEKSBkZWZpbmVCdWlsdEluQWNjZXNzb3IoUmVnRXhwUHJvdG90eXBlLCAnZmxhZ3MnLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZ2V0OiByZWdFeHBGbGFnc1xufSk7XG4iLCIvLyBjb25zdCByZXBsYWNlbWVudHMgPSB7XG4vLyAgIEFTQ0lJUHVuY3R1YXRpb246ICchXCIjJCUmXFwnKCkqKyxcXFxcLS4vOjs8PT4/QFxcXFxbXFxcXF1eX2B7fH1+Jyxcbi8vICAgVHJpZ2dlckNoYXJzOiAnYF9cXCpcXFtcXF1cXChcXCknLFxuLy8gICBTY2hlbWU6IGBbQS1aYS16XVtBLVphLXowLTlcXCtcXC5cXC1dezEsMzF9YCxcbi8vICAgRW1haWw6IGBbYS16QS1aMC05LiEjJCUmJyorLz0/Xl9cXGB7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlxcXFwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSpgLCAvLyBGcm9tIENvbW1vbk1hcmsgc3BlY1xuXG4vLyB9XG5jb25zdCByZXBsYWNlbWVudHMgPSB7XG4gIEFTQ0lJUHVuY3R1YXRpb246IC9bIVwiIyQlJicoKSorLFxcLS4vOjs8PT4/QFtcXF1eX2B7fH1+XFxcXF0vLCAgXG4gIE5vdFRyaWdnZXJDaGFyOiAvW15gXypbXFxdKCk8PiF+XS8sXG4gIFNjaGVtZTogL1tBLVphLXpdW0EtWmEtejAtOSsuLV17MSwzMX0vLFxuICBFbWFpbDogL1thLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlxcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqLywgLy8gRnJvbSBDb21tb25NYXJrIHNwZWNcbiAgSFRNTE9wZW5UYWc6IC88SFRNTFRhZ05hbWUoPzpIVE1MQXR0cmlidXRlKSpcXHMqXFwvPz4vLFxuICBIVE1MQ2xvc2VUYWc6IC88XFwvSFRNTFRhZ05hbWVcXHMqPi8sXG4gIEhUTUxUYWdOYW1lOiAvW0EtWmEtel1bQS1aYS16MC05LV0qLywgXG4gIEhUTUxDb21tZW50OiAvPCEtLSg/OltePi1dfCg/OltePi1dKD86W14tXXwtW14tXSkqW14tXSkpLS0+LyxcbiAgSFRNTFBJOiAvPFxcPyg/OnwufCg/OlteP118XFw/W14+XSkqKVxcPz4vLFxuICBIVE1MRGVjbGFyYXRpb246IC88IVtBLVpdK1xcc1tePl0qPi8sXG4gIEhUTUxDREFUQTogLzwhXFxbQ0RBVEFcXFsuKj9cXF1cXF0+LyxcbiAgSFRNTEF0dHJpYnV0ZTogL1xccytbQS1aYS16XzpdW0EtWmEtejAtOV8uOi1dKig/OkhUTUxBdHRWYWx1ZSk/LyxcbiAgSFRNTEF0dFZhbHVlOiAvXFxzKj1cXHMqKD86KD86J1teJ10qJyl8KD86XCJbXlwiXSpcIil8KD86W15cXHNcIic9PD5gXSspKS8sXG4gIEtub3duVGFnOiAvYWRkcmVzc3xhcnRpY2xlfGFzaWRlfGJhc2V8YmFzZWZvbnR8YmxvY2txdW90ZXxib2R5fGNhcHRpb258Y2VudGVyfGNvbHxjb2xncm91cHxkZHxkZXRhaWxzfGRpYWxvZ3xkaXJ8ZGl2fGRsfGR0fGZpZWxkc2V0fGZpZ2NhcHRpb258ZmlndXJlfGZvb3Rlcnxmb3JtfGZyYW1lfGZyYW1lc2V0fGgxfGgyfGgzfGg0fGg1fGg2fGhlYWR8aGVhZGVyfGhyfGh0bWx8aWZyYW1lfGxlZ2VuZHxsaXxsaW5rfG1haW58bWVudXxtZW51aXRlbXxuYXZ8bm9mcmFtZXN8b2x8b3B0Z3JvdXB8b3B0aW9ufHB8cGFyYW18c2VjdGlvbnxzb3VyY2V8c3VtbWFyeXx0YWJsZXx0Ym9keXx0ZHx0Zm9vdHx0aHx0aGVhZHx0aXRsZXx0cnx0cmFja3x1bC9cbn1cblxuLy8gRnJvbSBDb21tb25NYXJrLmpzLiBcbmNvbnN0IHB1bmN0dWF0aW9uTGVhZGluZyA9IG5ldyBSZWdFeHAoL14oPzpbIVwiIyQlJicoKSorLFxcLS4vOjs8PT4/QFtcXF1cXFxcXl9ge3x9flxceEExXFx4QTdcXHhBQlxceEI2XFx4QjdcXHhCQlxceEJGXFx1MDM3RVxcdTAzODdcXHUwNTVBLVxcdTA1NUZcXHUwNTg5XFx1MDU4QVxcdTA1QkVcXHUwNUMwXFx1MDVDM1xcdTA1QzZcXHUwNUYzXFx1MDVGNFxcdTA2MDlcXHUwNjBBXFx1MDYwQ1xcdTA2MERcXHUwNjFCXFx1MDYxRVxcdTA2MUZcXHUwNjZBLVxcdTA2NkRcXHUwNkQ0XFx1MDcwMC1cXHUwNzBEXFx1MDdGNy1cXHUwN0Y5XFx1MDgzMC1cXHUwODNFXFx1MDg1RVxcdTA5NjRcXHUwOTY1XFx1MDk3MFxcdTBBRjBcXHUwREY0XFx1MEU0RlxcdTBFNUFcXHUwRTVCXFx1MEYwNC1cXHUwRjEyXFx1MEYxNFxcdTBGM0EtXFx1MEYzRFxcdTBGODVcXHUwRkQwLVxcdTBGRDRcXHUwRkQ5XFx1MEZEQVxcdTEwNEEtXFx1MTA0RlxcdTEwRkJcXHUxMzYwLVxcdTEzNjhcXHUxNDAwXFx1MTY2RFxcdTE2NkVcXHUxNjlCXFx1MTY5Q1xcdTE2RUItXFx1MTZFRFxcdTE3MzVcXHUxNzM2XFx1MTdENC1cXHUxN0Q2XFx1MTdEOC1cXHUxN0RBXFx1MTgwMC1cXHUxODBBXFx1MTk0NFxcdTE5NDVcXHUxQTFFXFx1MUExRlxcdTFBQTAtXFx1MUFBNlxcdTFBQTgtXFx1MUFBRFxcdTFCNUEtXFx1MUI2MFxcdTFCRkMtXFx1MUJGRlxcdTFDM0ItXFx1MUMzRlxcdTFDN0VcXHUxQzdGXFx1MUNDMC1cXHUxQ0M3XFx1MUNEM1xcdTIwMTAtXFx1MjAyN1xcdTIwMzAtXFx1MjA0M1xcdTIwNDUtXFx1MjA1MVxcdTIwNTMtXFx1MjA1RVxcdTIwN0RcXHUyMDdFXFx1MjA4RFxcdTIwOEVcXHUyMzA4LVxcdTIzMEJcXHUyMzI5XFx1MjMyQVxcdTI3NjgtXFx1Mjc3NVxcdTI3QzVcXHUyN0M2XFx1MjdFNi1cXHUyN0VGXFx1Mjk4My1cXHUyOTk4XFx1MjlEOC1cXHUyOURCXFx1MjlGQ1xcdTI5RkRcXHUyQ0Y5LVxcdTJDRkNcXHUyQ0ZFXFx1MkNGRlxcdTJENzBcXHUyRTAwLVxcdTJFMkVcXHUyRTMwLVxcdTJFNDJcXHUzMDAxLVxcdTMwMDNcXHUzMDA4LVxcdTMwMTFcXHUzMDE0LVxcdTMwMUZcXHUzMDMwXFx1MzAzRFxcdTMwQTBcXHUzMEZCXFx1QTRGRVxcdUE0RkZcXHVBNjBELVxcdUE2MEZcXHVBNjczXFx1QTY3RVxcdUE2RjItXFx1QTZGN1xcdUE4NzQtXFx1QTg3N1xcdUE4Q0VcXHVBOENGXFx1QThGOC1cXHVBOEZBXFx1QThGQ1xcdUE5MkVcXHVBOTJGXFx1QTk1RlxcdUE5QzEtXFx1QTlDRFxcdUE5REVcXHVBOURGXFx1QUE1Qy1cXHVBQTVGXFx1QUFERVxcdUFBREZcXHVBQUYwXFx1QUFGMVxcdUFCRUJcXHVGRDNFXFx1RkQzRlxcdUZFMTAtXFx1RkUxOVxcdUZFMzAtXFx1RkU1MlxcdUZFNTQtXFx1RkU2MVxcdUZFNjNcXHVGRTY4XFx1RkU2QVxcdUZFNkJcXHVGRjAxLVxcdUZGMDNcXHVGRjA1LVxcdUZGMEFcXHVGRjBDLVxcdUZGMEZcXHVGRjFBXFx1RkYxQlxcdUZGMUZcXHVGRjIwXFx1RkYzQi1cXHVGRjNEXFx1RkYzRlxcdUZGNUJcXHVGRjVEXFx1RkY1Ri1cXHVGRjY1XXxcXHVEODAwW1xcdUREMDAtXFx1REQwMlxcdURGOUZcXHVERkQwXXxcXHVEODAxXFx1REQ2RnxcXHVEODAyW1xcdURDNTdcXHVERDFGXFx1REQzRlxcdURFNTAtXFx1REU1OFxcdURFN0ZcXHVERUYwLVxcdURFRjZcXHVERjM5LVxcdURGM0ZcXHVERjk5LVxcdURGOUNdfFxcdUQ4MDRbXFx1REM0Ny1cXHVEQzREXFx1RENCQlxcdURDQkNcXHVEQ0JFLVxcdURDQzFcXHVERDQwLVxcdURENDNcXHVERDc0XFx1REQ3NVxcdUREQzUtXFx1RERDOVxcdUREQ0RcXHVERERCXFx1RERERC1cXHVERERGXFx1REUzOC1cXHVERTNEXFx1REVBOV18XFx1RDgwNVtcXHVEQ0M2XFx1RERDMS1cXHVEREQ3XFx1REU0MS1cXHVERTQzXFx1REYzQy1cXHVERjNFXXxcXHVEODA5W1xcdURDNzAtXFx1REM3NF18XFx1RDgxQVtcXHVERTZFXFx1REU2RlxcdURFRjVcXHVERjM3LVxcdURGM0JcXHVERjQ0XXxcXHVEODJGXFx1REM5RnxcXHVEODM2W1xcdURFODctXFx1REU4Ql0pLyk7XG5cbmNvbnN0IHB1bmN0dWF0aW9uVHJhaWxpbmcgPSBuZXcgUmVnRXhwKC8oPzpbIVwiIyQlJicoKSorLFxcLS4vOjs8PT4/QFtcXF1cXFxcXl9ge3x9flxceEExXFx4QTdcXHhBQlxceEI2XFx4QjdcXHhCQlxceEJGXFx1MDM3RVxcdTAzODdcXHUwNTVBLVxcdTA1NUZcXHUwNTg5XFx1MDU4QVxcdTA1QkVcXHUwNUMwXFx1MDVDM1xcdTA1QzZcXHUwNUYzXFx1MDVGNFxcdTA2MDlcXHUwNjBBXFx1MDYwQ1xcdTA2MERcXHUwNjFCXFx1MDYxRVxcdTA2MUZcXHUwNjZBLVxcdTA2NkRcXHUwNkQ0XFx1MDcwMC1cXHUwNzBEXFx1MDdGNy1cXHUwN0Y5XFx1MDgzMC1cXHUwODNFXFx1MDg1RVxcdTA5NjRcXHUwOTY1XFx1MDk3MFxcdTBBRjBcXHUwREY0XFx1MEU0RlxcdTBFNUFcXHUwRTVCXFx1MEYwNC1cXHUwRjEyXFx1MEYxNFxcdTBGM0EtXFx1MEYzRFxcdTBGODVcXHUwRkQwLVxcdTBGRDRcXHUwRkQ5XFx1MEZEQVxcdTEwNEEtXFx1MTA0RlxcdTEwRkJcXHUxMzYwLVxcdTEzNjhcXHUxNDAwXFx1MTY2RFxcdTE2NkVcXHUxNjlCXFx1MTY5Q1xcdTE2RUItXFx1MTZFRFxcdTE3MzVcXHUxNzM2XFx1MTdENC1cXHUxN0Q2XFx1MTdEOC1cXHUxN0RBXFx1MTgwMC1cXHUxODBBXFx1MTk0NFxcdTE5NDVcXHUxQTFFXFx1MUExRlxcdTFBQTAtXFx1MUFBNlxcdTFBQTgtXFx1MUFBRFxcdTFCNUEtXFx1MUI2MFxcdTFCRkMtXFx1MUJGRlxcdTFDM0ItXFx1MUMzRlxcdTFDN0VcXHUxQzdGXFx1MUNDMC1cXHUxQ0M3XFx1MUNEM1xcdTIwMTAtXFx1MjAyN1xcdTIwMzAtXFx1MjA0M1xcdTIwNDUtXFx1MjA1MVxcdTIwNTMtXFx1MjA1RVxcdTIwN0RcXHUyMDdFXFx1MjA4RFxcdTIwOEVcXHUyMzA4LVxcdTIzMEJcXHUyMzI5XFx1MjMyQVxcdTI3NjgtXFx1Mjc3NVxcdTI3QzVcXHUyN0M2XFx1MjdFNi1cXHUyN0VGXFx1Mjk4My1cXHUyOTk4XFx1MjlEOC1cXHUyOURCXFx1MjlGQ1xcdTI5RkRcXHUyQ0Y5LVxcdTJDRkNcXHUyQ0ZFXFx1MkNGRlxcdTJENzBcXHUyRTAwLVxcdTJFMkVcXHUyRTMwLVxcdTJFNDJcXHUzMDAxLVxcdTMwMDNcXHUzMDA4LVxcdTMwMTFcXHUzMDE0LVxcdTMwMUZcXHUzMDMwXFx1MzAzRFxcdTMwQTBcXHUzMEZCXFx1QTRGRVxcdUE0RkZcXHVBNjBELVxcdUE2MEZcXHVBNjczXFx1QTY3RVxcdUE2RjItXFx1QTZGN1xcdUE4NzQtXFx1QTg3N1xcdUE4Q0VcXHVBOENGXFx1QThGOC1cXHVBOEZBXFx1QThGQ1xcdUE5MkVcXHVBOTJGXFx1QTk1RlxcdUE5QzEtXFx1QTlDRFxcdUE5REVcXHVBOURGXFx1QUE1Qy1cXHVBQTVGXFx1QUFERVxcdUFBREZcXHVBQUYwXFx1QUFGMVxcdUFCRUJcXHVGRDNFXFx1RkQzRlxcdUZFMTAtXFx1RkUxOVxcdUZFMzAtXFx1RkU1MlxcdUZFNTQtXFx1RkU2MVxcdUZFNjNcXHVGRTY4XFx1RkU2QVxcdUZFNkJcXHVGRjAxLVxcdUZGMDNcXHVGRjA1LVxcdUZGMEFcXHVGRjBDLVxcdUZGMEZcXHVGRjFBXFx1RkYxQlxcdUZGMUZcXHVGRjIwXFx1RkYzQi1cXHVGRjNEXFx1RkYzRlxcdUZGNUJcXHVGRjVEXFx1RkY1Ri1cXHVGRjY1XXxcXHVEODAwW1xcdUREMDAtXFx1REQwMlxcdURGOUZcXHVERkQwXXxcXHVEODAxXFx1REQ2RnxcXHVEODAyW1xcdURDNTdcXHVERDFGXFx1REQzRlxcdURFNTAtXFx1REU1OFxcdURFN0ZcXHVERUYwLVxcdURFRjZcXHVERjM5LVxcdURGM0ZcXHVERjk5LVxcdURGOUNdfFxcdUQ4MDRbXFx1REM0Ny1cXHVEQzREXFx1RENCQlxcdURDQkNcXHVEQ0JFLVxcdURDQzFcXHVERDQwLVxcdURENDNcXHVERDc0XFx1REQ3NVxcdUREQzUtXFx1RERDOVxcdUREQ0RcXHVERERCXFx1RERERC1cXHVERERGXFx1REUzOC1cXHVERTNEXFx1REVBOV18XFx1RDgwNVtcXHVEQ0M2XFx1RERDMS1cXHVEREQ3XFx1REU0MS1cXHVERTQzXFx1REYzQy1cXHVERjNFXXxcXHVEODA5W1xcdURDNzAtXFx1REM3NF18XFx1RDgxQVtcXHVERTZFXFx1REU2RlxcdURFRjVcXHVERjM3LVxcdURGM0JcXHVERjQ0XXxcXHVEODJGXFx1REM5RnxcXHVEODM2W1xcdURFODctXFx1REU4Ql0pJC8pO1xuXG4vLyBleHBvcnQgY29uc3QgaW5saW5lVHJpZ2dlckNoYXJzID0gbmV3IFJlZ0V4cChgWyR7cmVwbGFjZW1lbnRzLlRyaWdnZXJDaGFyc31dYCk7XG5cbi8qKlxuICogVGhpcyBpcyBDb21tb25NYXJrJ3MgYmxvY2sgZ3JhbW1hciwgYnV0IHdlJ3JlIGlnbm9yaW5nIG5lc3RlZCBibG9ja3MgaGVyZS4gIFxuICovIFxuY29uc3QgbGluZUdyYW1tYXIgPSB7IFxuICBUTUgxOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9I1xccykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSDFcIj4kMTwvc3Bhbj4kJDI8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1IMVwiPiQzPC9zcGFuPidcbiAgfSxcbiAgVE1IMjogeyBcbiAgICByZWdleHA6IC9eKCB7MCwzfSMjXFxzKSguKj8pKCg/OlxccysjK1xccyopPykkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1IMlwiPiQxPC9zcGFuPiQkMjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUgyXCI+JDM8L3NwYW4+J1xuICB9LFxuICBUTUgzOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9IyMjXFxzKSguKj8pKCg/OlxccysjK1xccyopPykkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1IM1wiPiQxPC9zcGFuPiQkMjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUgzXCI+JDM8L3NwYW4+J1xuICB9LFxuICBUTUg0OiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9IyMjI1xccykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSDRcIj4kMTwvc3Bhbj4kJDI8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1INFwiPiQzPC9zcGFuPidcbiAgfSxcbiAgVE1INTogeyBcbiAgICByZWdleHA6IC9eKCB7MCwzfSMjIyMjXFxzKSguKj8pKCg/OlxccysjK1xccyopPykkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1INVwiPiQxPC9zcGFuPiQkMjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUg1XCI+JDM8L3NwYW4+J1xuICB9LFxuICBUTUg2OiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9IyMjIyMjXFxzKSguKj8pKCg/OlxccysjK1xccyopPykkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1INlwiPiQxPC9zcGFuPiQkMjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUg2XCI+JDM8L3NwYW4+J1xuICB9LFxuICBUTUJsb2NrcXVvdGU6IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM30+WyBdPykoLiopJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNQmxvY2txdW90ZVwiPiQxPC9zcGFuPiQkMidcbiAgfSxcbiAgVE1Db2RlRmVuY2VCYWNrdGlja09wZW46IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM30oPzxzZXE+YGBgYCopXFxzKikoW15gXSo/KShcXHMqKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUNvZGVGZW5jZUJhY2t0aWNrXCI+JDE8L3NwYW4+PHNwYW4gY2xhc3M9XCJUTUluZm9TdHJpbmdcIj4kMzwvc3Bhbj4kNCdcbiAgfSxcbiAgVE1Db2RlRmVuY2VUaWxkZU9wZW46IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM30oPzxzZXE+fn5+fiopXFxzKikoLio/KShcXHMqKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUNvZGVGZW5jZVRpbGRlXCI+JDE8L3NwYW4+PHNwYW4gY2xhc3M9XCJUTUluZm9TdHJpbmdcIj4kMzwvc3Bhbj4kNCdcbiAgfSxcbiAgVE1Db2RlRmVuY2VCYWNrdGlja0Nsb3NlOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9KD88c2VxPmBgYGAqKSkoXFxzKikkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1Db2RlRmVuY2VCYWNrdGlja1wiPiQxPC9zcGFuPiQzJ1xuICB9LFxuICBUTUNvZGVGZW5jZVRpbGRlQ2xvc2U6IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM30oPzxzZXE+fn5+fiopKShcXHMqKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUNvZGVGZW5jZVRpbGRlXCI+JDE8L3NwYW4+JDMnXG4gIH0sXG4gIFRNQmxhbmtMaW5lOiB7IFxuICAgIHJlZ2V4cDogL14oWyBcXHRdKikkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICckMCdcbiAgfSxcbiAgVE1TZXRleHRIMU1hcmtlcjogeyBcbiAgICByZWdleHA6IC9eIHswLDN9PStcXHMqJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNU2V0ZXh0SDFNYXJrZXJcIj4kMDwvc3Bhbj4nXG4gIH0sXG4gIFRNU2V0ZXh0SDJNYXJrZXI6IHsgXG4gICAgcmVnZXhwOiAvXiB7MCwzfS0rXFxzKiQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTVNldGV4dEgxTWFya2VyXCI+JDA8L3NwYW4+J1xuICB9LFxuICBUTUhSOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9KFxcKlsgXFx0XSpcXCpbIFxcdF0qXFwqWyBcXHQqXSopfCgtWyBcXHRdKi1bIFxcdF0qLVsgXFx0LV0qKXwoX1sgXFx0XSpfWyBcXHRdKl9bIFxcdF9dKikpJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSFJcIj4kMDwvc3Bhbj4nXG4gIH0sXG4gIFRNVUw6IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM31bKyotXSB7MSw0fSkoLiopJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNVUxcIj4kMTwvc3Bhbj4kJDInXG4gIH0sXG4gIFRNT0w6IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM31cXGR7MSw5fVsuKV0gezEsNH0pKC4qKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTU9MXCI+JDE8L3NwYW4+JCQyJ1xuICB9LFxuICAvLyBUT0RPOiBUaGlzIGlzIGN1cnJlbnRseSBwcmV2ZW50aW5nIHN1Ymxpc3RzIChhbmQgYW55IGNvbnRlbnQgd2l0aGluIGxpc3QgaXRlbXMsIHJlYWxseSkgZnJvbSB3b3JraW5nXG4gIFRNSW5kZW50ZWRDb2RlOiB7IFxuICAgIHJlZ2V4cDogL14oIHs0fXxcXHQpKC4qKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUluZGVudGVkQ29kZVwiPiQxPC9zcGFuPiQyJ1xuICB9LFxuICBUTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uOiB7XG4gICAgLy8gVE9ETzogTGluayBkZXN0aW5hdGlvbiBjYW4ndCBpbmNsdWRlIHVuYmFsYW5jZWQgcGFyYW50aGVzZXMsIGJ1dCB3ZSBqdXN0IGlnbm9yZSB0aGF0IGhlcmUgXG4gICAgcmVnZXhwOiAvXiggezAsM31cXFtcXHMqKShbXlxcc1xcXV0oPzpbXlxcXV18XFxcXFxcXSkqPykoXFxzKlxcXTpcXHMqKSgoPzpbXlxcczw+XSspfCg/OjwoPzpbXjw+XFxcXF18XFxcXC4pKj4pKT8oXFxzKikoKD86XFwoKD86W14oKVxcXFxdfFxcXFwuKSpcXCkpfCg/OlwiKD86W15cIlxcXFxdfFxcXFwuKSpcIil8KD86Jyg/OlteJ1xcXFxdfFxcXFwuKSonKSk/KFxccyopJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNTGlua1JlZmVyZW5jZURlZmluaXRpb25cIj4kMTwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTGlua0xhYmVsIFRNTGlua0xhYmVsX0RlZmluaXRpb25cIj4kMjwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1MaW5rUmVmZXJlbmNlRGVmaW5pdGlvblwiPiQzPC9zcGFuPjxzcGFuIGNsYXNzPVwiVE1MaW5rRGVzdGluYXRpb25cIj4kNDwvc3Bhbj4kNTxzcGFuIGNsYXNzPVwiVE1MaW5rVGl0bGVcIj4kNjwvc3Bhbj4kNycsXG4gICAgbGFiZWxQbGFjZWhvbGRlcjogMiwgLy8gdGhpcyBkZWZpbmVzIHdoaWNoIHBsYWNlaG9sZGVyIGluIHRoZSBhYm92ZSByZWdleCBpcyB0aGUgbGluayBcImxhYmVsXCJcbiAgfSxcbn07XG5cbi8qKlxuICogSFRNTCBibG9ja3MgaGF2ZSBtdWx0aXBsZSBkaWZmZXJlbnQgY2xhc3NlcyBvZiBvcGVuZXIgYW5kIGNsb3Nlci4gVGhpcyBhcnJheSBkZWZpbmVzIGFsbCB0aGUgY2FzZXNcbiAqL1xudmFyIGh0bWxCbG9ja0dyYW1tYXIgPSBbXG4gIHsgc3RhcnQ6IC9eIHswLDN9PCg/OnNjcmlwdHxwcmV8c3R5bGUpKD86XFxzfD58JCkvaSwgZW5kOiAvKD86PFxcL3NjcmlwdD58PFxcL3ByZT58PFxcL3N0eWxlPikvaSwgcGFyYUludGVycnVwdDogdHJ1ZSB9LFxuICB7IHN0YXJ0OiAvXiB7MCwzfTwhLS0vLCBlbmQ6IC8tLT4vLCBwYXJhSW50ZXJydXB0OiB0cnVlIH0sXG4gIHsgc3RhcnQ6IC9eIHswLDN9PFxcPy8sIGVuZDogL1xcPz4vLCBwYXJhSW50ZXJydXB0OiB0cnVlIH0sXG4gIHsgc3RhcnQ6IC9eIHswLDN9PCFbQS1aXS8sIGVuZDogLz4vLCBwYXJhSW50ZXJydXB0IDogdHJ1ZX0sXG4gIHsgc3RhcnQ6IC9eIHswLDN9PCFcXFtDREFUQVxcWy8sIGVuZDogL1xcXVxcXT4vLCBwYXJhSW50ZXJydXB0IDogdHJ1ZX0sXG4gIHsgc3RhcnQ6IC9eIHswLDN9KD86PHw8XFwvKSg/Oktub3duVGFnKSg/Olxcc3w+fFxcLz58JCkvaSwgZW5kOiBmYWxzZSwgcGFyYUludGVycnVwdDogdHJ1ZX0sXG4gIHsgc3RhcnQ6IC9eIHswLDN9KD86SFRNTE9wZW5UYWd8SFRNTENsb3NlVGFnKVxccyokLywgZW5kOiBmYWxzZSwgcGFyYUludGVycnVwdDogZmFsc2V9LFxuXTtcblxuLyoqXG4gKiBTdHJ1Y3R1cmUgb2YgdGhlIG9iamVjdDpcbiAqIFRvcCBsZXZlbCBlbnRyaWVzIGFyZSBydWxlcywgZWFjaCBjb25zaXN0aW5nIG9mIGEgcmVndWxhciBleHByZXNzaW9ucyAoaW4gc3RyaW5nIGZvcm1hdCkgYXMgd2VsbCBhcyBhIHJlcGxhY2VtZW50LlxuICogSW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbnMsIHJlcGxhY2VtZW50cyBmcm9tIHRoZSBvYmplY3QgJ3JlcGxhY2VtZW50cycgd2lsbCBiZSBwcm9jZXNzZWQgYmVmb3JlIGNvbXBpbGluZyBpbnRvIHRoZSBwcm9wZXJ0eSByZWdleHAuXG4gKi9cbnZhciBpbmxpbmVHcmFtbWFyID0ge1xuICBlc2NhcGUgOiB7XG4gICAgcmVnZXhwOiAvXlxcXFwoQVNDSUlQdW5jdHVhdGlvbikvLFxuICAgIHJlcGxhY2VtZW50IDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUVzY2FwZVwiPlxcXFw8L3NwYW4+JDEnXG4gIH0sXG4gIGNvZGUgOiB7XG4gICAgcmVnZXhwOiAvXihgKykoKD86W15gXSl8KD86W15gXS4qP1teYF0pKShcXDEpLyxcbiAgICByZXBsYWNlbWVudCA6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1Db2RlXCI+JDE8L3NwYW4+PGNvZGUgY2xhc3M9XCJUTUNvZGVcIj4kMjwvY29kZT48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1Db2RlXCI+JDM8L3NwYW4+JyBcbiAgfSxcbiAgYXV0b2xpbmsgOiB7XG4gICAgcmVnZXhwOiAvXjwoKD86U2NoZW1lOlteXFxzPD5dKil8KD86RW1haWwpKT4vLFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNQXV0b2xpbmtcIj4mbHQ7PC9zcGFuPjxzcGFuIGNsYXNzPVwiVE1BdXRvbGlua1wiPiQxPC9zcGFuPjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUF1dG9saW5rXCI+Jmd0Ozwvc3Bhbj4nXG4gIH0sXG4gIGh0bWwgOiB7XG4gICAgcmVnZXhwOiAvXigoPzpIVE1MT3BlblRhZyl8KD86SFRNTENsb3NlVGFnKXwoPzpIVE1MQ29tbWVudCl8KD86SFRNTFBJKXwoPzpIVE1MRGVjbGFyYXRpb24pfCg/OkhUTUxDREFUQSkpLyxcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1IVE1MXCI+JDE8L3NwYW4+JyxcbiAgfSxcbiAgbGlua09wZW4gOiB7XG4gICAgcmVnZXhwOiAvXlxcWy8sXG4gICAgcmVwbGFjZW1lbnQ6ICcnXG4gIH0sXG4gIGltYWdlT3BlbiA6IHtcbiAgICByZWdleHA6IC9eIVxcWy8sXG4gICAgcmVwbGFjZW1lbnQgOiAnJ1xuICB9LFxuICBsaW5rTGFiZWwgOiB7XG4gICAgcmVnZXhwOiAvXihcXFtcXHMqKShbXlxcXV0qPykoXFxzKlxcXSkvLFxuICAgIHJlcGxhY2VtZW50OiAnJyxcbiAgICBsYWJlbFBsYWNlaG9sZGVyOiAyXG4gIH0sXG4gIGRlZmF1bHQgOiB7XG4gICAgcmVnZXhwOiAvXigufCg/Ok5vdFRyaWdnZXJDaGFyKykpLyxcbiAgICByZXBsYWNlbWVudDogJyQxJ1xuICB9XG59O1xuXG4vLyBQcm9jZXNzIHJlcGxhY2VtZW50cyBpbiByZWdleHBzXG5jb25zdCByZXBsYWNlbWVudFJlZ2V4cCA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMocmVwbGFjZW1lbnRzKS5qb2luKCd8JykpO1xuXG4vLyBJbmxpbmVcbmNvbnN0IGlubGluZVJ1bGVzID1bLi4uT2JqZWN0LmtleXMoaW5saW5lR3JhbW1hcildO1xuZm9yIChsZXQgcnVsZSBvZiBpbmxpbmVSdWxlcykge1xuICBsZXQgcmUgPSBpbmxpbmVHcmFtbWFyW3J1bGVdLnJlZ2V4cC5zb3VyY2U7XG4gIC8vIFJlcGxhY2Ugd2hpbGUgdGhlcmUgaXMgc29tZXRoaW5nIHRvIHJlcGxhY2UuIFRoaXMgbWVhbnMgaXQgYWxzbyB3b3JrcyBvdmVyIG11bHRpcGxlIGxldmVscyAocmVwbGFjZW1lbnRzIGNvbnRhaW5pbmcgcmVwbGFjZW1lbnRzKVxuICB3aGlsZSAocmUubWF0Y2gocmVwbGFjZW1lbnRSZWdleHApKSB7XG4gICAgcmUgPSByZS5yZXBsYWNlKHJlcGxhY2VtZW50UmVnZXhwLCAoc3RyaW5nKSA9PiB7IHJldHVybiByZXBsYWNlbWVudHNbc3RyaW5nXS5zb3VyY2U7IH0pO1xuICB9XG4gIGlubGluZUdyYW1tYXJbcnVsZV0ucmVnZXhwID0gbmV3IFJlZ0V4cChyZSwgaW5saW5lR3JhbW1hcltydWxlXS5yZWdleHAuZmxhZ3MpO1xufVxuXG4vLyBIVE1MIEJsb2NrIChvbmx5IG9wZW5pbmcgcnVsZSBpcyBwcm9jZXNzZWQgY3VycmVudGx5KVxuZm9yIChsZXQgcnVsZSBvZiBodG1sQmxvY2tHcmFtbWFyKSB7XG4gIGxldCByZSA9IHJ1bGUuc3RhcnQuc291cmNlO1xuICAvLyBSZXBsYWNlIHdoaWxlIHRoZXJlIGlzIHNvbWV0aGluZyB0byByZXBsYWNlLiBUaGlzIG1lYW5zIGl0IGFsc28gd29ya3Mgb3ZlciBtdWx0aXBsZSBsZXZlbHMgKHJlcGxhY2VtZW50cyBjb250YWluaW5nIHJlcGxhY2VtZW50cylcbiAgd2hpbGUgKHJlLm1hdGNoKHJlcGxhY2VtZW50UmVnZXhwKSkge1xuICAgIHJlID0gcmUucmVwbGFjZShyZXBsYWNlbWVudFJlZ2V4cCwgKHN0cmluZykgPT4geyByZXR1cm4gcmVwbGFjZW1lbnRzW3N0cmluZ10uc291cmNlOyB9KTtcbiAgfVxuICBydWxlLnN0YXJ0ID0gbmV3IFJlZ0V4cChyZSwgcnVsZS5zdGFydC5mbGFncyk7XG59XG5cbi8qKlxuICogRXNjYXBlcyBIVE1MIHNwZWNpYWwgY2hhcmFjdGVycyAoPCwgPiwgYW5kICYpIGluIHRoZSBzdHJpbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSByYXcgc3RyaW5nIHRvIGJlIGVzY2FwZWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBzdHJpbmcsIHJlYWR5IHRvIGJlIHVzZWQgaW4gSFRNTFxuICovXG5mdW5jdGlvbiBodG1sZXNjYXBlKHN0cmluZykge1xuICByZXR1cm4gKHN0cmluZyA/IHN0cmluZyA6ICcnKVxuICAgIC5yZXBsYWNlKC8mL2csICcmYW1wOycpXG4gICAgLnJlcGxhY2UoLzwvZywgJyZsdDsnKVxuICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7Jyk7XG59XG4vKipcbiAqIENvbnRhaW5zIHRoZSBjb21tYW5kcyB0aGF0IGNhbiBiZSBzZW50IHRvIHRoZSBlZGl0b3IuIENvbnRhaW5zIG9iamVjdHMgd2l0aCBhIG5hbWUgcmVwcmVzZW50aW5nIHRoZSBuYW1lIG9mIHRoZSBjb21tYW5kLlxuICogRWFjaCBvZiB0aGUgb2JqZWN0cyBjb250YWlucyB0aGUgZm9sbG93aW5nIGtleXM6XG4gKiBcbiAqICAgLSB0eXBlOiBDYW4gYmUgZWl0aGVyIGlubGluZSAoZm9yIGlubGluZSBmb3JtYXR0aW5nKSBvciBsaW5lIChmb3IgYmxvY2sgLyBsaW5lIGZvcm1hdHRpbmcpLlxuICogICAtIGNsYXNzTmFtZTogVXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgY29tbWFuZCBpcyBhY3RpdmUgYXQgYSBnaXZlbiBwb3NpdGlvbi4gXG4gKiAgICAgRm9yIGxpbmUgZm9ybWF0dGluZywgdGhpcyBsb29rcyBhdCB0aGUgY2xhc3Mgb2YgdGhlIGxpbmUgZWxlbWVudC4gRm9yIGlubGluZSBlbGVtZW50cywgdHJpZXMgdG8gZmluZCBhbiBlbmNsb3NpbmcgZWxlbWVudCB3aXRoIHRoYXQgY2xhc3MuXG4gKiAgIC0gc2V0IC8gdW5zZXQ6IENvbnRhaW4gaW5zdHJ1Y3Rpb25zIGhvdyB0byBzZXQgYW5kIHVuc2V0IHRoZSBjb21tYW5kLiBGb3IgbGluZSB0eXBlIGNvbW1hbmRzLCBib3RoIGNvbnNpc3Qgb2YgYSBwYXR0ZXJuIGFuZCByZXBsYWNlbWVudCB0aGF0IFxuICogICAgIHdpbGwgYmUgYXBwbGllZCB0byBlYWNoIGxpbmUgKHVzaW5nIFN0cmluZy5yZXBsYWNlKS4gRm9yIGlubGluZSB0eXBlIGNvbW1hbmRzLCB0aGUgc2V0IG9iamVjdCBjb250YWlucyBhIHByZSBhbmQgcG9zdCBzdHJpbmcgd2hpY2ggd2lsbFxuICogICAgIGJlIGluc2VydGVkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHNlbGVjdGlvbi4gVGhlIHVuc2V0IG9iamVjdCBjb250YWlucyBhIHByZVBhdHRlcm4gYW5kIGEgcG9zdFBhdHRlcm4uIEJvdGggc2hvdWxkIGJlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgYW5kIFxuICogICAgIHRoZXkgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBwb3J0aW9uIG9mIHRoZSBsaW5lIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHNlbGVjdGlvbiAodXNpbmcgU3RyaW5nLnJlcGxhY2UsIHdpdGggYW4gZW1wdHkgcmVwbGFjZW1lbnQgc3RyaW5nKS5cbiAqL1xuY29uc3QgY29tbWFuZHMgPSB7XG4gIC8vIFJlcGxhY2VtZW50cyBmb3IgdW5zZXQgZm9yIGlubGluZSBjb21tYW5kcyBhcmUgJycgYnkgZGVmYXVsdFxuICBib2xkOiB7XG4gICAgdHlwZTogJ2lubGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNU3Ryb25nJywgXG4gICAgc2V0OiB7cHJlOiAnKionLCBwb3N0OiAnKionfSwgXG4gICAgdW5zZXQ6IHtwcmVQYXR0ZXJuOiAvKD86XFwqXFwqfF9fKSQvLCBwb3N0UGF0dGVybjogL14oPzpcXCpcXCp8X18pL31cbiAgfSwgXG4gIGl0YWxpYzoge1xuICAgIHR5cGU6ICdpbmxpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUVtJywgXG4gICAgc2V0OiB7cHJlOiAnKicsIHBvc3Q6ICcqJ30sIFxuICAgIHVuc2V0OiB7cHJlUGF0dGVybjogLyg/OlxcKnxfKSQvLCBwb3N0UGF0dGVybjogL14oPzpcXCp8XykvfVxuICB9LFxuICBjb2RlOiB7XG4gICAgdHlwZTogJ2lubGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNQ29kZScsIFxuICAgIHNldDoge3ByZTogJ2AnLCBwb3N0OiAnYCd9LCBcbiAgICB1bnNldDoge3ByZVBhdHRlcm46IC9gKyQvLCBwb3N0UGF0dGVybjogL15gKy99IC8vIEZJWE1FIHRoaXMgZG9lc24ndCBlbnN1cmUgYmFsYW5jZWQgYmFja3RpY2tzIHJpZ2h0IG5vd1xuICB9LCBcbiAgc3RyaWtldGhyb3VnaDoge1xuICAgIHR5cGU6ICdpbmxpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTVN0cmlrZXRocm91Z2gnLCBcbiAgICBzZXQ6IHtwcmU6ICd+ficsIHBvc3Q6ICd+fid9LCBcbiAgICB1bnNldDoge3ByZVBhdHRlcm46L35+JC8sIHBvc3RQYXR0ZXJuOiAvXn5+LyB9XG4gIH0sXG4gIGgxOiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUgxJywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICcjICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9I1xccyspKC4qPykoKD86XFxzKyMrXFxzKik/KSQvLCByZXBsYWNlbWVudDogJyQyJ31cbiAgfSxcbiAgaDI6IHtcbiAgICB0eXBlOiAnbGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNSDInLCBcbiAgICBzZXQ6IHtwYXR0ZXJuOiAvXiggezAsM30oPzooPzojK3xbMC05XXsxLDl9WykuXXxbPlxcLSorXSlcXHMrKT8pKC4qKSQvLCByZXBsYWNlbWVudDogJyMjICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9IyNcXHMrKSguKj8pKCg/OlxccysjK1xccyopPykkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIGgzOiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUgzJywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICcjIyMgJDInfSwgXG4gICAgdW5zZXQ6IHtwYXR0ZXJuOiAvXiggezAsM30jIyNcXHMrKSguKj8pKCg/OlxccysjK1xccyopPykkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIGg0OiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUg0JywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICcjIyMjICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9IyMjI1xccyspKC4qPykoKD86XFxzKyMrXFxzKik/KSQvLCByZXBsYWNlbWVudDogJyQyJ31cbiAgfSxcbiAgaDU6IHtcbiAgICB0eXBlOiAnbGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNSDUnLCBcbiAgICBzZXQ6IHtwYXR0ZXJuOiAvXiggezAsM30oPzooPzojK3xbMC05XXsxLDl9WykuXXxbPlxcLSorXSlcXHMrKT8pKC4qKSQvLCByZXBsYWNlbWVudDogJyMjIyMjICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9IyMjIyNcXHMrKSguKj8pKCg/OlxccysjK1xccyopPykkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIGg2OiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUg2JywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICcjIyMjIyMgJDInfSwgXG4gICAgdW5zZXQ6IHtwYXR0ZXJuOiAvXiggezAsM30jIyMjIyNcXHMrKSguKj8pKCg/OlxccysjK1xccyopPykkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIHVsOiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTVVMJywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICctICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9WysqLV0gezEsNH0pKC4qKSQvLCByZXBsYWNlbWVudDogJyQyJ31cbiAgfSxcbiAgb2w6IHtcbiAgICB0eXBlOiAnbGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNT0wnLCBcbiAgICBzZXQ6IHtwYXR0ZXJuOiAvXiggezAsM30oPzooPzojK3xbMC05XXsxLDl9WykuXXxbPlxcLSorXSlcXHMrKT8pKC4qKSQvLCByZXBsYWNlbWVudDogJyQjLiAkMid9LCBcbiAgICB1bnNldDoge3BhdHRlcm46IC9eKCB7MCwzfVxcZHsxLDl9Wy4pXSB7MSw0fSkoLiopJC8sIHJlcGxhY2VtZW50OiAnJDInfVxuICB9LCBcbiAgYmxvY2txdW90ZToge1xuICAgIHR5cGU6ICdsaW5lJywgXG4gICAgY2xhc3NOYW1lOiAnVE1CbG9ja3F1b3RlJywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICc+ICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9PlsgXT8pKC4qKSQvLCByZXBsYWNlbWVudDogJyQyJ31cbiAgfSxcbn07XG5cbmV4cG9ydCB7IGxpbmVHcmFtbWFyLCBpbmxpbmVHcmFtbWFyLCBwdW5jdHVhdGlvbkxlYWRpbmcsIHB1bmN0dWF0aW9uVHJhaWxpbmcsIGh0bWxlc2NhcGUsIGh0bWxCbG9ja0dyYW1tYXIsIGNvbW1hbmRzIH07IiwiaW1wb3J0IHtcbiAgaW5saW5lR3JhbW1hcixcbiAgbGluZUdyYW1tYXIsXG4gIHB1bmN0dWF0aW9uTGVhZGluZyxcbiAgcHVuY3R1YXRpb25UcmFpbGluZyxcbiAgaHRtbGVzY2FwZSxcbiAgaHRtbEJsb2NrR3JhbW1hcixcbiAgY29tbWFuZHMsXG59IGZyb20gXCIuL2dyYW1tYXJcIjtcblxuY2xhc3MgRWRpdG9yIHtcbiAgY29uc3RydWN0b3IocHJvcHMgPSB7fSkge1xuICAgIHRoaXMuZSA9IG51bGw7XG4gICAgdGhpcy50ZXh0YXJlYSA9IG51bGw7XG4gICAgdGhpcy5saW5lcyA9IFtdO1xuICAgIHRoaXMubGluZUVsZW1lbnRzID0gW107XG4gICAgdGhpcy5saW5lVHlwZXMgPSBbXTtcbiAgICB0aGlzLmxpbmVDYXB0dXJlcyA9IFtdO1xuICAgIHRoaXMubGluZVJlcGxhY2VtZW50cyA9IFtdO1xuICAgIHRoaXMubGlua0xhYmVscyA9IFtdO1xuICAgIHRoaXMubGluZURpcnR5ID0gW107XG4gICAgdGhpcy5sYXN0Q29tbWFuZFN0YXRlID0gbnVsbDtcblxuICAgIHRoaXMubGlzdGVuZXJzID0ge1xuICAgICAgY2hhbmdlOiBbXSxcbiAgICAgIHNlbGVjdGlvbjogW10sXG4gICAgfTtcblxuICAgIGxldCBlbGVtZW50ID0gcHJvcHMuZWxlbWVudDtcbiAgICB0aGlzLnRleHRhcmVhID0gcHJvcHMudGV4dGFyZWE7XG5cbiAgICBpZiAodGhpcy50ZXh0YXJlYSkge1xuICAgICAgaWYgKCF0aGlzLnRleHRhcmVhLnRhZ05hbWUpIHtcbiAgICAgICAgdGhpcy50ZXh0YXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMudGV4dGFyZWEpO1xuICAgICAgfVxuICAgICAgaWYgKCFlbGVtZW50KSBlbGVtZW50ID0gdGhpcy50ZXh0YXJlYTtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudCAmJiAhZWxlbWVudC50YWdOYW1lKSB7XG4gICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJvcHMuZWxlbWVudCk7XG4gICAgfVxuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYm9keVwiKVswXTtcbiAgICB9XG4gICAgaWYgKGVsZW1lbnQudGFnTmFtZSA9PSBcIlRFWFRBUkVBXCIpIHtcbiAgICAgIHRoaXMudGV4dGFyZWEgPSBlbGVtZW50O1xuICAgICAgZWxlbWVudCA9IHRoaXMudGV4dGFyZWEucGFyZW50Tm9kZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50ZXh0YXJlYSkge1xuICAgICAgdGhpcy50ZXh0YXJlYS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gICAgfVxuXG4gICAgdGhpcy5jcmVhdGVFZGl0b3JFbGVtZW50KGVsZW1lbnQpO1xuICAgIC8vIFRPRE8gUGxhY2Vob2xkZXIgZm9yIGVtcHR5IGNvbnRlbnRcbiAgICB0aGlzLnNldENvbnRlbnQoXG4gICAgICBwcm9wcy5jb250ZW50IHx8XG4gICAgICAgICh0aGlzLnRleHRhcmVhXG4gICAgICAgICAgPyB0aGlzLnRleHRhcmVhLnZhbHVlXG4gICAgICAgICAgOiBcIiMgSGVsbG8gVGlueU1ERSFcXG5FZGl0ICoqaGVyZSoqXCIpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBlZGl0b3IgZWxlbWVudCBpbnNpZGUgdGhlIHRhcmdldCBlbGVtZW50IG9mIHRoZSBET00gdHJlZVxuICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgdGFyZ2V0IGVsZW1lbnQgb2YgdGhlIERPTSB0cmVlXG4gICAqL1xuICBjcmVhdGVFZGl0b3JFbGVtZW50KGVsZW1lbnQpIHtcbiAgICB0aGlzLmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIHRoaXMuZS5jbGFzc05hbWUgPSBcIlRpbnlNREVcIjtcbiAgICB0aGlzLmUuY29udGVudEVkaXRhYmxlID0gdHJ1ZTtcbiAgICAvLyBUaGUgZm9sbG93aW5nIGlzIGltcG9ydGFudCBmb3IgZm9ybWF0dGluZyBwdXJwb3NlcywgYnV0IGFsc28gc2luY2Ugb3RoZXJ3aXNlIHRoZSBicm93c2VyIHJlcGxhY2VzIHN1YnNlcXVlbnQgc3BhY2VzIHdpdGggICZuYnNwOyAmbmJzcDtcbiAgICAvLyBUaGF0IGJyZWFrcyBhIGxvdCBvZiBzdHVmZiwgc28gd2UgZG8gdGhpcyBoZXJlIGFuZCBub3QgaW4gQ1NT4oCUdGhlcmVmb3JlLCB5b3UgZG9uJ3QgaGF2ZSB0byByZW1lbWJlciB0byBwdXQgdGhpcyBpbiB0aGUgQ1NTIGZpbGVcbiAgICB0aGlzLmUuc3R5bGUud2hpdGVTcGFjZSA9IFwicHJlLXdyYXBcIjtcbiAgICAvLyBBdm9pZCBmb3JtYXR0aW5nIChCIC8gSSAvIFUpIHBvcHBpbmcgdXAgb24gaU9TXG4gICAgdGhpcy5lLnN0eWxlLndlYmtpdFVzZXJNb2RpZnkgPSBcInJlYWQtd3JpdGUtcGxhaW50ZXh0LW9ubHlcIjtcbiAgICBpZiAoXG4gICAgICB0aGlzLnRleHRhcmVhICYmXG4gICAgICB0aGlzLnRleHRhcmVhLnBhcmVudE5vZGUgPT0gZWxlbWVudCAmJlxuICAgICAgdGhpcy50ZXh0YXJlYS5uZXh0U2libGluZ1xuICAgICkge1xuICAgICAgZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5lLCB0aGlzLnRleHRhcmVhLm5leHRTaWJsaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmUpO1xuICAgIH1cblxuICAgIHRoaXMuZS5hZGRFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgKGUpID0+IHRoaXMuaGFuZGxlSW5wdXRFdmVudChlKSk7XG4gICAgdGhpcy5lLmFkZEV2ZW50TGlzdGVuZXIoXCJjb21wb3NpdGlvbmVuZFwiLCAoZSkgPT4gdGhpcy5oYW5kbGVJbnB1dEV2ZW50KGUpKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwic2VsZWN0aW9uY2hhbmdlXCIsIChlKSA9PlxuICAgICAgdGhpcy5oYW5kbGVTZWxlY3Rpb25DaGFuZ2VFdmVudChlKVxuICAgICk7XG4gICAgdGhpcy5lLmFkZEV2ZW50TGlzdGVuZXIoXCJwYXN0ZVwiLCAoZSkgPT4gdGhpcy5oYW5kbGVQYXN0ZShlKSk7XG4gICAgdGhpcy5saW5lRWxlbWVudHMgPSB0aGlzLmUuY2hpbGROb2RlczsgLy8gdGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgdXBkYXRlXG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZWRpdG9yIGNvbnRlbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IFRoZSBuZXcgTWFya2Rvd24gY29udGVudFxuICAgKi9cbiAgc2V0Q29udGVudChjb250ZW50KSB7XG4gICAgLy8gRGVsZXRlIGFueSBleGlzdGluZyBjb250ZW50XG4gICAgd2hpbGUgKHRoaXMuZS5maXJzdENoaWxkKSB7XG4gICAgICB0aGlzLmUucmVtb3ZlQ2hpbGQodGhpcy5lLmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgICB0aGlzLmxpbmVzID0gY29udGVudC5zcGxpdCgvKD86XFxyXFxufFxccnxcXG4pLyk7XG4gICAgdGhpcy5saW5lRGlydHkgPSBbXTtcbiAgICBmb3IgKGxldCBsaW5lTnVtID0gMDsgbGluZU51bSA8IHRoaXMubGluZXMubGVuZ3RoOyBsaW5lTnVtKyspIHtcbiAgICAgIGxldCBsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICB0aGlzLmUuYXBwZW5kQ2hpbGQobGUpO1xuICAgICAgdGhpcy5saW5lRGlydHkucHVzaCh0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5saW5lVHlwZXMgPSBuZXcgQXJyYXkodGhpcy5saW5lcy5sZW5ndGgpO1xuICAgIHRoaXMudXBkYXRlRm9ybWF0dGluZygpO1xuICAgIHRoaXMuZmlyZUNoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGVkaXRvciBjb250ZW50IGFzIGEgTWFya2Rvd24gc3RyaW5nLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZWRpdG9yIGNvbnRlbnQgYXMgYSBtYXJrZG93biBzdHJpbmdcbiAgICovXG4gIGdldENvbnRlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMubGluZXMuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIHRoZSBtYWluIG1ldGhvZCB0byB1cGRhdGUgdGhlIGZvcm1hdHRpbmcgKGZyb20gdGhpcy5saW5lcyB0byBIVE1MIG91dHB1dClcbiAgICovXG4gIHVwZGF0ZUZvcm1hdHRpbmcoKSB7XG4gICAgLy8gRmlyc3QsIHBhcnNlIGxpbmUgdHlwZXMuIFRoaXMgd2lsbCB1cGRhdGUgdGhpcy5saW5lVHlwZXMsIHRoaXMubGluZVJlcGxhY2VtZW50cywgYW5kIHRoaXMubGluZUNhcHR1cmVzXG4gICAgLy8gV2UgZG9uJ3QgYXBwbHkgdGhlIGZvcm1hdHRpbmcgeWV0XG4gICAgdGhpcy51cGRhdGVMaW5lVHlwZXMoKTtcbiAgICAvLyBDb2xsZWN0IGFueSB2YWxpZCBsaW5rIGxhYmVscyBmcm9tIGxpbmsgcmVmZXJlbmNlIGRlZmluaXRpb25z4oCUd2UgbmVlZCB0aGF0IGZvciBmb3JtYXR0aW5nIHRvIGRldGVybWluZSB3aGF0J3MgYSB2YWxpZCBsaW5rXG4gICAgdGhpcy51cGRhdGVMaW5rTGFiZWxzKCk7XG4gICAgLy8gTm93LCBhcHBseSB0aGUgZm9ybWF0dGluZ1xuICAgIHRoaXMuYXBwbHlMaW5lVHlwZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoaXMubGlua0xhYmVsczogRm9yIGV2ZXJ5IGxpbmsgcmVmZXJlbmNlIGRlZmluaXRpb24gKGxpbmUgdHlwZSBUTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uKSwgd2UgY29sbGVjdCB0aGUgbGFiZWxcbiAgICovXG4gIHVwZGF0ZUxpbmtMYWJlbHMoKSB7XG4gICAgdGhpcy5saW5rTGFiZWxzID0gW107XG4gICAgZm9yIChsZXQgbCA9IDA7IGwgPCB0aGlzLmxpbmVzLmxlbmd0aDsgbCsrKSB7XG4gICAgICBpZiAodGhpcy5saW5lVHlwZXNbbF0gPT0gXCJUTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uXCIpIHtcbiAgICAgICAgdGhpcy5saW5rTGFiZWxzLnB1c2goXG4gICAgICAgICAgdGhpcy5saW5lQ2FwdHVyZXNbbF1bXG4gICAgICAgICAgICBsaW5lR3JhbW1hci5UTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uLmxhYmVsUGxhY2Vob2xkZXJcbiAgICAgICAgICBdXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBmdW5jdGlvbiB0byByZXBsYWNlIHBsYWNlaG9sZGVycyBmcm9tIGEgUmVnRXhwIGNhcHR1cmUuIFRoZSByZXBsYWNlbWVudCBzdHJpbmcgY2FuIGNvbnRhaW4gcmVndWxhciBkb2xsYXIgcGxhY2Vob2xkZXJzIChlLmcuLCAkMSksXG4gICAqIHdoaWNoIGFyZSBpbnRlcnByZXRlZCBsaWtlIGluIFN0cmluZy5yZXBsYWNlKCksIGJ1dCBhbHNvIGRvdWJsZSBkb2xsYXIgcGxhY2Vob2xkZXJzICgkJDEpLiBJbiB0aGUgY2FzZSBvZiBkb3VibGUgZG9sbGFyIHBsYWNlaG9sZGVycyxcbiAgICogTWFya2Rvd24gaW5saW5lIGdyYW1tYXIgaXMgYXBwbGllZCBvbiB0aGUgY29udGVudCBvZiB0aGUgY2FwdHVyZWQgc3ViZ3JvdXAsIGkuZS4sICQkMSBwcm9jZXNzZXMgaW5saW5lIE1hcmtkb3duIGdyYW1tYXIgaW4gdGhlIGNvbnRlbnQgb2YgdGhlXG4gICAqIGZpcnN0IGNhcHR1cmVkIHN1Ymdyb3VwLCBhbmQgcmVwbGFjZXMgYCQkMWAgd2l0aCB0aGUgcmVzdWx0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVwbGFjZW1lbnQgVGhlIHJlcGxhY2VtZW50IHN0cmluZywgaW5jbHVkaW5nIHBsYWNlaG9sZGVycy5cbiAgICogQHBhcmFtICBjYXB0dXJlIFRoZSByZXN1bHQgb2YgYSBSZWdFeHAuZXhlYygpIGNhbGxcbiAgICogQHJldHVybnMgVGhlIHJlcGxhY2VtZW50IHN0cmluZywgd2l0aCBwbGFjZWhvbGRlcnMgcmVwbGFjZWQgZnJvbSB0aGUgY2FwdHVyZSByZXN1bHQuXG4gICAqL1xuICByZXBsYWNlKHJlcGxhY2VtZW50LCBjYXB0dXJlKSB7XG4gICAgcmV0dXJuIHJlcGxhY2VtZW50LnJlcGxhY2UoLyhcXCR7MSwyfSkoWzAtOV0pL2csIChzdHIsIHAxLCBwMikgPT4ge1xuICAgICAgaWYgKHAxID09IFwiJFwiKSByZXR1cm4gaHRtbGVzY2FwZShjYXB0dXJlW3AyXSk7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJUTUlubGluZUZvcm1hdHRlZFwiPiR7dGhpcy5wcm9jZXNzSW5saW5lU3R5bGVzKFxuICAgICAgICAgIGNhcHR1cmVbcDJdXG4gICAgICAgICl9PC9zcGFuPmA7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyB0aGUgbGluZSB0eXBlcyAoZnJvbSB0aGlzLmxpbmVUeXBlcyBhcyB3ZWxsIGFzIHRoZSBjYXB0dXJlIHJlc3VsdCBpbiB0aGlzLmxpbmVSZXBsYWNlbWVudHMgYW5kIHRoaXMubGluZUNhcHR1cmVzKVxuICAgKiBhbmQgcHJvY2Vzc2VzIGlubGluZSBmb3JtYXR0aW5nIGZvciBhbGwgbGluZXMuXG4gICAqL1xuICBhcHBseUxpbmVUeXBlcygpIHtcbiAgICBmb3IgKGxldCBsaW5lTnVtID0gMDsgbGluZU51bSA8IHRoaXMubGluZXMubGVuZ3RoOyBsaW5lTnVtKyspIHtcbiAgICAgIGlmICh0aGlzLmxpbmVEaXJ0eVtsaW5lTnVtXSkge1xuICAgICAgICBsZXQgY29udGVudEhUTUwgPSB0aGlzLnJlcGxhY2UoXG4gICAgICAgICAgdGhpcy5saW5lUmVwbGFjZW1lbnRzW2xpbmVOdW1dLFxuICAgICAgICAgIHRoaXMubGluZUNhcHR1cmVzW2xpbmVOdW1dXG4gICAgICAgICk7XG4gICAgICAgIC8vIHRoaXMubGluZUhUTUxbbGluZU51bV0gPSAoY29udGVudEhUTUwgPT0gJycgPyAnPGJyIC8+JyA6IGNvbnRlbnRIVE1MKTsgLy8gUHJldmVudCBlbXB0eSBlbGVtZW50cyB3aGljaCBjYW4ndCBiZSBzZWxlY3RlZCBldGMuXG4gICAgICAgIHRoaXMubGluZUVsZW1lbnRzW2xpbmVOdW1dLmNsYXNzTmFtZSA9IHRoaXMubGluZVR5cGVzW2xpbmVOdW1dO1xuICAgICAgICB0aGlzLmxpbmVFbGVtZW50c1tsaW5lTnVtXS5yZW1vdmVBdHRyaWJ1dGUoXCJzdHlsZVwiKTtcbiAgICAgICAgdGhpcy5saW5lRWxlbWVudHNbbGluZU51bV0uaW5uZXJIVE1MID1cbiAgICAgICAgICBjb250ZW50SFRNTCA9PSBcIlwiID8gXCI8YnIgLz5cIiA6IGNvbnRlbnRIVE1MOyAvLyBQcmV2ZW50IGVtcHR5IGVsZW1lbnRzIHdoaWNoIGNhbid0IGJlIHNlbGVjdGVkIGV0Yy5cbiAgICAgIH1cbiAgICAgIHRoaXMubGluZUVsZW1lbnRzW2xpbmVOdW1dLmRhdGFzZXQubGluZU51bSA9IGxpbmVOdW07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgbGluZSB0eXBlcyBmb3IgYWxsIGxpbmVzIGJhc2VkIG9uIHRoZSBsaW5lIC8gYmxvY2sgZ3JhbW1hci4gQ2FwdHVyZXMgdGhlIHJlc3VsdHMgb2YgdGhlIHJlc3BlY3RpdmUgbGluZVxuICAgKiBncmFtbWFyIHJlZ3VsYXIgZXhwcmVzc2lvbnMuXG4gICAqIFVwZGF0ZXMgdGhpcy5saW5lVHlwZXMsIHRoaXMubGluZUNhcHR1cmVzLCBhbmQgdGhpcy5saW5lUmVwbGFjZW1lbnRzLlxuICAgKi9cbiAgdXBkYXRlTGluZVR5cGVzKCkge1xuICAgIGxldCBjb2RlQmxvY2tUeXBlID0gZmFsc2U7XG4gICAgbGV0IGNvZGVCbG9ja1NlcUxlbmd0aCA9IDA7XG4gICAgbGV0IGh0bWxCbG9jayA9IGZhbHNlO1xuXG4gICAgZm9yIChsZXQgbGluZU51bSA9IDA7IGxpbmVOdW0gPCB0aGlzLmxpbmVzLmxlbmd0aDsgbGluZU51bSsrKSB7XG4gICAgICBsZXQgbGluZVR5cGUgPSBcIlRNUGFyYVwiO1xuICAgICAgbGV0IGxpbmVDYXB0dXJlID0gW3RoaXMubGluZXNbbGluZU51bV1dO1xuICAgICAgbGV0IGxpbmVSZXBsYWNlbWVudCA9IFwiJCQwXCI7IC8vIERlZmF1bHQgcmVwbGFjZW1lbnQgZm9yIHBhcmFncmFwaDogSW5saW5lIGZvcm1hdCB0aGUgZW50aXJlIGxpbmVcblxuICAgICAgLy8gQ2hlY2sgb25nb2luZyBjb2RlIGJsb2Nrc1xuICAgICAgLy8gaWYgKGxpbmVOdW0gPiAwICYmICh0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gJ1RNQ29kZUZlbmNlQmFja3RpY2tPcGVuJyB8fCB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gJ1RNRmVuY2VkQ29kZUJhY2t0aWNrJykpIHtcbiAgICAgIGlmIChjb2RlQmxvY2tUeXBlID09IFwiVE1Db2RlRmVuY2VCYWNrdGlja09wZW5cIikge1xuICAgICAgICAvLyBXZSdyZSBpbiBhIGJhY2t0aWNrLWZlbmNlZCBjb2RlIGJsb2NrLCBjaGVjayBpZiB0aGUgY3VycmVudCBsaW5lIGNsb3NlcyBpdFxuICAgICAgICBsZXQgY2FwdHVyZSA9IGxpbmVHcmFtbWFyLlRNQ29kZUZlbmNlQmFja3RpY2tDbG9zZS5yZWdleHAuZXhlYyhcbiAgICAgICAgICB0aGlzLmxpbmVzW2xpbmVOdW1dXG4gICAgICAgICk7XG4gICAgICAgIGlmIChjYXB0dXJlICYmIGNhcHR1cmUuZ3JvdXBzW1wic2VxXCJdLmxlbmd0aCA+PSBjb2RlQmxvY2tTZXFMZW5ndGgpIHtcbiAgICAgICAgICBsaW5lVHlwZSA9IFwiVE1Db2RlRmVuY2VCYWNrdGlja0Nsb3NlXCI7XG4gICAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gbGluZUdyYW1tYXIuVE1Db2RlRmVuY2VCYWNrdGlja0Nsb3NlLnJlcGxhY2VtZW50O1xuICAgICAgICAgIGxpbmVDYXB0dXJlID0gY2FwdHVyZTtcbiAgICAgICAgICBjb2RlQmxvY2tUeXBlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGluZVR5cGUgPSBcIlRNRmVuY2VkQ29kZUJhY2t0aWNrXCI7XG4gICAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gJzxzcGFuIGNsYXNzPVwiVE1GZW5jZWRDb2RlXCI+JDA8YnIgLz48L3NwYW4+JztcbiAgICAgICAgICBsaW5lQ2FwdHVyZSA9IFt0aGlzLmxpbmVzW2xpbmVOdW1dXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gaWYgKGxpbmVOdW0gPiAwICYmICh0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gJ1RNQ29kZUZlbmNlVGlsZGVPcGVuJyB8fCB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gJ1RNRmVuY2VkQ29kZVRpbGRlJykpIHtcbiAgICAgIGVsc2UgaWYgKGNvZGVCbG9ja1R5cGUgPT0gXCJUTUNvZGVGZW5jZVRpbGRlT3BlblwiKSB7XG4gICAgICAgIC8vIFdlJ3JlIGluIGEgdGlsZGUtZmVuY2VkIGNvZGUgYmxvY2tcbiAgICAgICAgbGV0IGNhcHR1cmUgPSBsaW5lR3JhbW1hci5UTUNvZGVGZW5jZVRpbGRlQ2xvc2UucmVnZXhwLmV4ZWMoXG4gICAgICAgICAgdGhpcy5saW5lc1tsaW5lTnVtXVxuICAgICAgICApO1xuICAgICAgICBpZiAoY2FwdHVyZSAmJiBjYXB0dXJlLmdyb3Vwc1tcInNlcVwiXS5sZW5ndGggPj0gY29kZUJsb2NrU2VxTGVuZ3RoKSB7XG4gICAgICAgICAgbGluZVR5cGUgPSBcIlRNQ29kZUZlbmNlVGlsZGVDbG9zZVwiO1xuICAgICAgICAgIGxpbmVSZXBsYWNlbWVudCA9IGxpbmVHcmFtbWFyLlRNQ29kZUZlbmNlVGlsZGVDbG9zZS5yZXBsYWNlbWVudDtcbiAgICAgICAgICBsaW5lQ2FwdHVyZSA9IGNhcHR1cmU7XG4gICAgICAgICAgY29kZUJsb2NrVHlwZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxpbmVUeXBlID0gXCJUTUZlbmNlZENvZGVUaWxkZVwiO1xuICAgICAgICAgIGxpbmVSZXBsYWNlbWVudCA9ICc8c3BhbiBjbGFzcz1cIlRNRmVuY2VkQ29kZVwiPiQwPGJyIC8+PC9zcGFuPic7XG4gICAgICAgICAgbGluZUNhcHR1cmUgPSBbdGhpcy5saW5lc1tsaW5lTnVtXV07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgSFRNTCBibG9jayB0eXBlc1xuICAgICAgaWYgKGxpbmVUeXBlID09IFwiVE1QYXJhXCIgJiYgaHRtbEJsb2NrID09PSBmYWxzZSkge1xuICAgICAgICBmb3IgKGxldCBodG1sQmxvY2tUeXBlIG9mIGh0bWxCbG9ja0dyYW1tYXIpIHtcbiAgICAgICAgICBpZiAodGhpcy5saW5lc1tsaW5lTnVtXS5tYXRjaChodG1sQmxvY2tUeXBlLnN0YXJ0KSkge1xuICAgICAgICAgICAgLy8gTWF0Y2hpbmcgc3RhcnQgY29uZGl0aW9uLiBDaGVjayBpZiB0aGlzIHRhZyBjYW4gc3RhcnQgaGVyZSAobm90IGFsbCBzdGFydCBjb25kaXRpb25zIGFsbG93IGJyZWFraW5nIGEgcGFyYWdyYXBoKS5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgaHRtbEJsb2NrVHlwZS5wYXJhSW50ZXJydXB0IHx8XG4gICAgICAgICAgICAgIGxpbmVOdW0gPT0gMCB8fFxuICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgIHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSBcIlRNUGFyYVwiIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5saW5lVHlwZXNbbGluZU51bSAtIDFdID09IFwiVE1VTFwiIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5saW5lVHlwZXNbbGluZU51bSAtIDFdID09IFwiVE1PTFwiIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5saW5lVHlwZXNbbGluZU51bSAtIDFdID09IFwiVE1CbG9ja3F1b3RlXCJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGh0bWxCbG9jayA9IGh0bWxCbG9ja1R5cGU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaHRtbEJsb2NrICE9PSBmYWxzZSkge1xuICAgICAgICBsaW5lVHlwZSA9IFwiVE1IVE1MQmxvY2tcIjtcbiAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gJzxzcGFuIGNsYXNzPVwiVE1IVE1MQ29udGVudFwiPiQwPGJyIC8+PC9zcGFuPic7IC8vIE5vIGZvcm1hdHRpbmcgaW4gVE1IVE1MQmxvY2tcbiAgICAgICAgbGluZUNhcHR1cmUgPSBbdGhpcy5saW5lc1tsaW5lTnVtXV07IC8vIFRoaXMgc2hvdWxkIGFscmVhZHkgYmUgc2V0IGJ1dCBiZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgSFRNTCBibG9jayBzaG91bGQgYmUgY2xvc2VkXG4gICAgICAgIGlmIChodG1sQmxvY2suZW5kKSB7XG4gICAgICAgICAgLy8gU3BlY2lmaWMgZW5kIGNvbmRpdGlvblxuICAgICAgICAgIGlmICh0aGlzLmxpbmVzW2xpbmVOdW1dLm1hdGNoKGh0bWxCbG9jay5lbmQpKSB7XG4gICAgICAgICAgICBodG1sQmxvY2sgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gTm8gc3BlY2lmaWMgZW5kIGNvbmRpdGlvbiwgZW5kcyB3aXRoIGJsYW5rIGxpbmVcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBsaW5lTnVtID09IHRoaXMubGluZXMubGVuZ3RoIC0gMSB8fFxuICAgICAgICAgICAgdGhpcy5saW5lc1tsaW5lTnVtICsgMV0ubWF0Y2gobGluZUdyYW1tYXIuVE1CbGFua0xpbmUucmVnZXhwKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaHRtbEJsb2NrID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGFsbCByZWdleHBzIGlmIHdlIGhhdmVuJ3QgYXBwbGllZCBvbmUgb2YgdGhlIGNvZGUgYmxvY2sgdHlwZXNcbiAgICAgIGlmIChsaW5lVHlwZSA9PSBcIlRNUGFyYVwiKSB7XG4gICAgICAgIGZvciAobGV0IHR5cGUgaW4gbGluZUdyYW1tYXIpIHtcbiAgICAgICAgICBpZiAobGluZUdyYW1tYXJbdHlwZV0ucmVnZXhwKSB7XG4gICAgICAgICAgICBsZXQgY2FwdHVyZSA9IGxpbmVHcmFtbWFyW3R5cGVdLnJlZ2V4cC5leGVjKHRoaXMubGluZXNbbGluZU51bV0pO1xuICAgICAgICAgICAgaWYgKGNhcHR1cmUpIHtcbiAgICAgICAgICAgICAgbGluZVR5cGUgPSB0eXBlO1xuICAgICAgICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSBsaW5lR3JhbW1hclt0eXBlXS5yZXBsYWNlbWVudDtcbiAgICAgICAgICAgICAgbGluZUNhcHR1cmUgPSBjYXB0dXJlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gSWYgd2UndmUgb3BlbmVkIGEgY29kZSBibG9jaywgcmVtZW1iZXIgdGhhdFxuICAgICAgaWYgKFxuICAgICAgICBsaW5lVHlwZSA9PSBcIlRNQ29kZUZlbmNlQmFja3RpY2tPcGVuXCIgfHxcbiAgICAgICAgbGluZVR5cGUgPT0gXCJUTUNvZGVGZW5jZVRpbGRlT3BlblwiXG4gICAgICApIHtcbiAgICAgICAgY29kZUJsb2NrVHlwZSA9IGxpbmVUeXBlO1xuICAgICAgICBjb2RlQmxvY2tTZXFMZW5ndGggPSBsaW5lQ2FwdHVyZS5ncm91cHNbXCJzZXFcIl0ubGVuZ3RoO1xuICAgICAgfVxuXG4gICAgICAvLyBMaW5rIHJlZmVyZW5jZSBkZWZpbml0aW9uIGFuZCBpbmRlbnRlZCBjb2RlIGNhbid0IGludGVycnVwdCBhIHBhcmFncmFwaFxuICAgICAgaWYgKFxuICAgICAgICAobGluZVR5cGUgPT0gXCJUTUluZGVudGVkQ29kZVwiIHx8XG4gICAgICAgICAgbGluZVR5cGUgPT0gXCJUTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uXCIpICYmXG4gICAgICAgIGxpbmVOdW0gPiAwICYmXG4gICAgICAgICh0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gXCJUTVBhcmFcIiB8fFxuICAgICAgICAgIHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSBcIlRNVUxcIiB8fFxuICAgICAgICAgIHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSBcIlRNT0xcIiB8fFxuICAgICAgICAgIHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSBcIlRNQmxvY2txdW90ZVwiKVxuICAgICAgKSB7XG4gICAgICAgIC8vIEZhbGwgYmFjayB0byBUTVBhcmFcbiAgICAgICAgbGluZVR5cGUgPSBcIlRNUGFyYVwiO1xuICAgICAgICBsaW5lQ2FwdHVyZSA9IFt0aGlzLmxpbmVzW2xpbmVOdW1dXTtcbiAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gXCIkJDBcIjtcbiAgICAgIH1cblxuICAgICAgLy8gU2V0ZXh0IEgyIG1hcmtlcnMgdGhhdCBjYW4gYWxzbyBiZSBpbnRlcnByZXRlZCBhcyBhbiBlbXB0eSBsaXN0IGl0ZW0gc2hvdWxkIGJlIHJlZ2FyZGVkIGFzIHN1Y2ggKGFzIHBlciBDb21tb25NYXJrIHNwZWMpXG4gICAgICBpZiAobGluZVR5cGUgPT0gXCJUTVNldGV4dEgyTWFya2VyXCIpIHtcbiAgICAgICAgbGV0IGNhcHR1cmUgPSBsaW5lR3JhbW1hci5UTVVMLnJlZ2V4cC5leGVjKHRoaXMubGluZXNbbGluZU51bV0pO1xuICAgICAgICBpZiAoY2FwdHVyZSkge1xuICAgICAgICAgIGxpbmVUeXBlID0gXCJUTVVMXCI7XG4gICAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gbGluZUdyYW1tYXIuVE1VTC5yZXBsYWNlbWVudDtcbiAgICAgICAgICBsaW5lQ2FwdHVyZSA9IGNhcHR1cmU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gU2V0ZXh0IGhlYWRpbmdzIGFyZSBvbmx5IHZhbGlkIGlmIHByZWNlZGVkIGJ5IGEgcGFyYWdyYXBoIChhbmQgaWYgc28sIHRoZXkgY2hhbmdlIHRoZSB0eXBlIG9mIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGgpXG4gICAgICBpZiAobGluZVR5cGUgPT0gXCJUTVNldGV4dEgxTWFya2VyXCIgfHwgbGluZVR5cGUgPT0gXCJUTVNldGV4dEgyTWFya2VyXCIpIHtcbiAgICAgICAgaWYgKGxpbmVOdW0gPT0gMCB8fCB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gIT0gXCJUTVBhcmFcIikge1xuICAgICAgICAgIC8vIFNldGV4dCBtYXJrZXIgaXMgaW52YWxpZC4gSG93ZXZlciwgYSBIMiBtYXJrZXIgbWlnaHQgc3RpbGwgYmUgYSB2YWxpZCBIUiwgc28gbGV0J3MgY2hlY2sgdGhhdFxuICAgICAgICAgIGxldCBjYXB0dXJlID0gbGluZUdyYW1tYXIuVE1IUi5yZWdleHAuZXhlYyh0aGlzLmxpbmVzW2xpbmVOdW1dKTtcbiAgICAgICAgICBpZiAoY2FwdHVyZSkge1xuICAgICAgICAgICAgLy8gVmFsaWQgSFJcbiAgICAgICAgICAgIGxpbmVUeXBlID0gXCJUTUhSXCI7XG4gICAgICAgICAgICBsaW5lQ2FwdHVyZSA9IGNhcHR1cmU7XG4gICAgICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSBsaW5lR3JhbW1hci5UTUhSLnJlcGxhY2VtZW50O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBOb3QgdmFsaWQgSFIsIGZvcm1hdCBhcyBUTVBhcmFcbiAgICAgICAgICAgIGxpbmVUeXBlID0gXCJUTVBhcmFcIjtcbiAgICAgICAgICAgIGxpbmVDYXB0dXJlID0gW3RoaXMubGluZXNbbGluZU51bV1dO1xuICAgICAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gXCIkJDBcIjtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVmFsaWQgc2V0ZXh0IG1hcmtlci4gQ2hhbmdlIHR5cGVzIG9mIHByZWNlZGluZyBwYXJhIGxpbmVzXG4gICAgICAgICAgbGV0IGhlYWRpbmdMaW5lID0gbGluZU51bSAtIDE7XG4gICAgICAgICAgY29uc3QgaGVhZGluZ0xpbmVUeXBlID1cbiAgICAgICAgICAgIGxpbmVUeXBlID09IFwiVE1TZXRleHRIMU1hcmtlclwiID8gXCJUTVNldGV4dEgxXCIgOiBcIlRNU2V0ZXh0SDJcIjtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBpZiAodGhpcy5saW5lVHlwZXNbaGVhZGluZ0xpbmVUeXBlXSAhPSBoZWFkaW5nTGluZVR5cGUpIHtcbiAgICAgICAgICAgICAgdGhpcy5saW5lVHlwZXNbaGVhZGluZ0xpbmVdID0gaGVhZGluZ0xpbmVUeXBlO1xuICAgICAgICAgICAgICB0aGlzLmxpbmVEaXJ0eVtoZWFkaW5nTGluZVR5cGVdID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubGluZVJlcGxhY2VtZW50c1toZWFkaW5nTGluZV0gPSBcIiQkMFwiO1xuICAgICAgICAgICAgdGhpcy5saW5lQ2FwdHVyZXNbaGVhZGluZ0xpbmVdID0gW3RoaXMubGluZXNbaGVhZGluZ0xpbmVdXTtcblxuICAgICAgICAgICAgaGVhZGluZ0xpbmUtLTtcbiAgICAgICAgICB9IHdoaWxlIChoZWFkaW5nTGluZSA+PSAwICYmIHRoaXMubGluZVR5cGVzW2hlYWRpbmdMaW5lXSA9PSBcIlRNUGFyYVwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gTGFzdGx5LCBzYXZlIHRoZSBsaW5lIHN0eWxlIHRvIGJlIGFwcGxpZWQgbGF0ZXJcbiAgICAgIGlmICh0aGlzLmxpbmVUeXBlc1tsaW5lTnVtXSAhPSBsaW5lVHlwZSkge1xuICAgICAgICB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtXSA9IGxpbmVUeXBlO1xuICAgICAgICB0aGlzLmxpbmVEaXJ0eVtsaW5lTnVtXSA9IHRydWU7XG4gICAgICB9XG4gICAgICB0aGlzLmxpbmVSZXBsYWNlbWVudHNbbGluZU51bV0gPSBsaW5lUmVwbGFjZW1lbnQ7XG4gICAgICB0aGlzLmxpbmVDYXB0dXJlc1tsaW5lTnVtXSA9IGxpbmVDYXB0dXJlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGFsbCBsaW5lIGNvbnRlbnRzIGZyb20gdGhlIEhUTUwsIHRoZW4gcmUtYXBwbGllcyBmb3JtYXR0aW5nLlxuICAgKi9cbiAgdXBkYXRlTGluZUNvbnRlbnRzQW5kRm9ybWF0dGluZygpIHtcbiAgICB0aGlzLmNsZWFyRGlydHlGbGFnKCk7XG4gICAgdGhpcy51cGRhdGVMaW5lQ29udGVudHMoKTtcbiAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0cyB0byBwYXJzZSBhIGxpbmsgb3IgaW1hZ2UgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBvcGVuaW5nIFsgb3IgIVsgaGFzIGFscmVhZHkgYmVlbiBtYXRjaGVkLlxuICAgKiBSZXR1cm5zIGZhbHNlIGlmIHRoaXMgaXMgbm90IGEgdmFsaWQgbGluaywgaW1hZ2UuIFNlZSBiZWxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luYWxTdHJpbmcgVGhlIG9yaWdpbmFsIHN0cmluZywgc3RhcnRpbmcgYXQgdGhlIG9wZW5pbmcgbWFya2VyIChbIG9yICFbKVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzSW1hZ2UgV2hldGhlciBvciBub3QgdGhpcyBpcyBhbiBpbWFnZSAob3BlbmVyID09ICFbKVxuICAgKiBAcmV0dXJucyBmYWxzZSBpZiBub3QgYSB2YWxpZCBsaW5rIC8gaW1hZ2UuXG4gICAqIE90aGVyd2lzZSByZXR1cm5zIGFuIG9iamVjdCB3aXRoIHR3byBwcm9wZXJ0aWVzOiBvdXRwdXQgaXMgdGhlIHN0cmluZyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcHJvY2Vzc2VkIG91dHB1dCxcbiAgICogY2hhckNvdW50IGlzIHRoZSBudW1iZXIgb2YgaW5wdXQgY2hhcmFjdGVycyAoZnJvbSBvcmlnaW5hbFN0cmluZykgY29uc3VtZWQuXG4gICAqL1xuICBwYXJzZUxpbmtPckltYWdlKG9yaWdpbmFsU3RyaW5nLCBpc0ltYWdlKSB7XG4gICAgLy8gU2tpcCB0aGUgb3BlbmluZyBicmFja2V0XG4gICAgbGV0IHRleHRPZmZzZXQgPSBpc0ltYWdlID8gMiA6IDE7XG4gICAgbGV0IG9wZW5lciA9IG9yaWdpbmFsU3RyaW5nLnN1YnN0cigwLCB0ZXh0T2Zmc2V0KTtcbiAgICBsZXQgdHlwZSA9IGlzSW1hZ2UgPyBcIlRNSW1hZ2VcIiA6IFwiVE1MaW5rXCI7XG4gICAgbGV0IGN1cnJlbnRPZmZzZXQgPSB0ZXh0T2Zmc2V0O1xuXG4gICAgbGV0IGJyYWNrZXRMZXZlbCA9IDE7XG4gICAgbGV0IGxpbmtUZXh0ID0gZmFsc2U7XG4gICAgbGV0IGxpbmtSZWYgPSBmYWxzZTtcbiAgICBsZXQgbGlua0xhYmVsID0gW107XG4gICAgbGV0IGxpbmtEZXRhaWxzID0gW107IC8vIElmIG1hdGNoZWQsIHRoaXMgd2lsbCBiZSBhbiBhcnJheTogW3doaXRlc3BhY2UgKyBsaW5rIGRlc3RpbmF0aW9uIGRlbGltaXRlciwgbGluayBkZXN0aW5hdGlvbiwgbGluayBkZXN0aW5hdGlvbiBkZWxpbWl0ZXIsIHdoaXRlc3BhY2UsIGxpbmsgdGl0bGUgZGVsaW1pdGVyLCBsaW5rIHRpdGxlLCBsaW5rIHRpdGxlIGRlbGltaXRlciArIHdoaXRlc3BhY2VdLiBBbGwgY2FuIGJlIGVtcHR5IHN0cmluZ3MuXG5cbiAgICB0ZXh0T3V0ZXI6IHdoaWxlIChcbiAgICAgIGN1cnJlbnRPZmZzZXQgPCBvcmlnaW5hbFN0cmluZy5sZW5ndGggJiZcbiAgICAgIGxpbmtUZXh0ID09PSBmYWxzZSAvKiBlbXB0eSBzdHJpbmcgaXMgb2theSAqL1xuICAgICkge1xuICAgICAgbGV0IHN0cmluZyA9IG9yaWdpbmFsU3RyaW5nLnN1YnN0cihjdXJyZW50T2Zmc2V0KTtcblxuICAgICAgLy8gQ2FwdHVyZSBhbnkgZXNjYXBlcyBhbmQgY29kZSBibG9ja3MgYXQgY3VycmVudCBwb3NpdGlvbiwgdGhleSBiaW5kIG1vcmUgc3Ryb25nbHkgdGhhbiBsaW5rc1xuICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSB0byBhY3R1YWxseSBwcm9jZXNzIHRoZW0gaGVyZSwgdGhhdCdsbCBiZSBkb25lIGxhdGVyIGluIGNhc2UgdGhlIGxpbmsgLyBpbWFnZSBpcyB2YWxpZCwgYnV0IHdlIG5lZWQgdG8gc2tpcCBvdmVyIHRoZW0uXG4gICAgICBmb3IgKGxldCBydWxlIG9mIFtcImVzY2FwZVwiLCBcImNvZGVcIiwgXCJhdXRvbGlua1wiLCBcImh0bWxcIl0pIHtcbiAgICAgICAgbGV0IGNhcCA9IGlubGluZUdyYW1tYXJbcnVsZV0ucmVnZXhwLmV4ZWMoc3RyaW5nKTtcbiAgICAgICAgaWYgKGNhcCkge1xuICAgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gY2FwWzBdLmxlbmd0aDtcbiAgICAgICAgICBjb250aW51ZSB0ZXh0T3V0ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgZm9yIGltYWdlLiBJdCdzIG9rYXkgZm9yIGFuIGltYWdlIHRvIGJlIGluY2x1ZGVkIGluIGEgbGluayBvciBpbWFnZVxuICAgICAgaWYgKHN0cmluZy5tYXRjaChpbmxpbmVHcmFtbWFyLmltYWdlT3Blbi5yZWdleHApKSB7XG4gICAgICAgIC8vIE9wZW5pbmcgaW1hZ2UuIEl0J3Mgb2theSBpZiB0aGlzIGlzIGEgbWF0Y2hpbmcgcGFpciBvZiBicmFja2V0c1xuICAgICAgICBicmFja2V0TGV2ZWwrKztcbiAgICAgICAgY3VycmVudE9mZnNldCArPSAyO1xuICAgICAgICBjb250aW51ZSB0ZXh0T3V0ZXI7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGZvciBsaW5rIChub3QgYW4gaW1hZ2UgYmVjYXVzZSB0aGF0IHdvdWxkIGhhdmUgYmVlbiBjYXB0dXJlZCBhbmQgc2tpcHBlZCBvdmVyIGFib3ZlKVxuICAgICAgaWYgKHN0cmluZy5tYXRjaChpbmxpbmVHcmFtbWFyLmxpbmtPcGVuLnJlZ2V4cCkpIHtcbiAgICAgICAgLy8gT3BlbmluZyBicmFja2V0LiBUd28gdGhpbmdzIHRvIGRvOlxuICAgICAgICAvLyAxKSBpdCdzIG9rYXkgaWYgdGhpcyBwYXJ0IG9mIGEgcGFpciBvZiBicmFja2V0cy5cbiAgICAgICAgLy8gMikgSWYgd2UgYXJlIGN1cnJlbnRseSB0cnlpbmcgdG8gcGFyc2UgYSBsaW5rLCB0aGlzIG5lc3RlZCBicmFja2V0IG11c24ndCBzdGFydCBhIHZhbGlkIGxpbmsgKG5vIG5lc3RlZCBsaW5rcyBhbGxvd2VkKVxuICAgICAgICBicmFja2V0TGV2ZWwrKztcbiAgICAgICAgLy8gaWYgKGJyYWNrZXRMZXZlbCA+PSAyKSByZXR1cm4gZmFsc2U7IC8vIE5lc3RlZCB1bmVzY2FwZWQgYnJhY2tldHMsIHRoaXMgZG9lc24ndCBxdWFsaWZ5IGFzIGEgbGluayAvIGltYWdlXG4gICAgICAgIGlmICghaXNJbWFnZSkge1xuICAgICAgICAgIGlmICh0aGlzLnBhcnNlTGlua09ySW1hZ2Uoc3RyaW5nLCBmYWxzZSkpIHtcbiAgICAgICAgICAgIC8vIFZhbGlkIGxpbmsgaW5zaWRlIHRoaXMgcG9zc2libGUgbGluaywgd2hpY2ggbWFrZXMgdGhpcyBsaW5rIGludmFsaWQgKGlubmVyIGxpbmtzIGJlYXQgb3V0ZXIgb25lcylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudE9mZnNldCArPSAxO1xuICAgICAgICBjb250aW51ZSB0ZXh0T3V0ZXI7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGZvciBjbG9zaW5nIGJyYWNrZXRcbiAgICAgIGlmIChzdHJpbmcubWF0Y2goL15cXF0vKSkge1xuICAgICAgICBicmFja2V0TGV2ZWwtLTtcbiAgICAgICAgaWYgKGJyYWNrZXRMZXZlbCA9PSAwKSB7XG4gICAgICAgICAgLy8gRm91bmQgbWF0Y2hpbmcgYnJhY2tldCBhbmQgaGF2ZW4ndCBmb3VuZCBhbnl0aGluZyBkaXNxdWFsaWZ5aW5nIHRoaXMgYXMgbGluayAvIGltYWdlLlxuICAgICAgICAgIGxpbmtUZXh0ID0gb3JpZ2luYWxTdHJpbmcuc3Vic3RyKFxuICAgICAgICAgICAgdGV4dE9mZnNldCxcbiAgICAgICAgICAgIGN1cnJlbnRPZmZzZXQgLSB0ZXh0T2Zmc2V0XG4gICAgICAgICAgKTtcbiAgICAgICAgICBjdXJyZW50T2Zmc2V0Kys7XG4gICAgICAgICAgY29udGludWUgdGV4dE91dGVyO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE5vdGhpbmcgbWF0Y2hlcywgcHJvY2VlZCB0byBuZXh0IGNoYXJcbiAgICAgIGN1cnJlbnRPZmZzZXQrKztcbiAgICB9XG5cbiAgICAvLyBEaWQgd2UgZmluZCBhIGxpbmsgdGV4dCAoaS5lLiwgZmluZCBhIG1hdGNoaW5nIGNsb3NpbmcgYnJhY2tldD8pXG4gICAgaWYgKGxpbmtUZXh0ID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlOyAvLyBOb3BlXG5cbiAgICAvLyBTbyBmYXIsIHNvIGdvb2QuIFdlJ3ZlIGdvdCBhIHZhbGlkIGxpbmsgdGV4dC4gTGV0J3Mgc2VlIHdoYXQgdHlwZSBvZiBsaW5rIHRoaXMgaXNcbiAgICBsZXQgbmV4dENoYXIgPVxuICAgICAgY3VycmVudE9mZnNldCA8IG9yaWdpbmFsU3RyaW5nLmxlbmd0aFxuICAgICAgICA/IG9yaWdpbmFsU3RyaW5nLnN1YnN0cihjdXJyZW50T2Zmc2V0LCAxKVxuICAgICAgICA6IFwiXCI7XG5cbiAgICAvLyBSRUZFUkVOQ0UgTElOS1NcbiAgICBpZiAobmV4dENoYXIgPT0gXCJbXCIpIHtcbiAgICAgIGxldCBzdHJpbmcgPSBvcmlnaW5hbFN0cmluZy5zdWJzdHIoY3VycmVudE9mZnNldCk7XG4gICAgICBsZXQgY2FwID0gaW5saW5lR3JhbW1hci5saW5rTGFiZWwucmVnZXhwLmV4ZWMoc3RyaW5nKTtcbiAgICAgIGlmIChjYXApIHtcbiAgICAgICAgLy8gVmFsaWQgbGluayBsYWJlbFxuICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgIGxpbmtMYWJlbC5wdXNoKGNhcFsxXSwgY2FwWzJdLCBjYXBbM10pO1xuICAgICAgICBpZiAoY2FwW2lubGluZUdyYW1tYXIubGlua0xhYmVsLmxhYmVsUGxhY2Vob2xkZXJdKSB7XG4gICAgICAgICAgLy8gRnVsbCByZWZlcmVuY2UgbGlua1xuICAgICAgICAgIGxpbmtSZWYgPSBjYXBbaW5saW5lR3JhbW1hci5saW5rTGFiZWwubGFiZWxQbGFjZWhvbGRlcl07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQ29sbGFwc2VkIHJlZmVyZW5jZSBsaW5rXG4gICAgICAgICAgbGlua1JlZiA9IGxpbmtUZXh0LnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTm90IGEgdmFsaWQgbGluayBsYWJlbFxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChuZXh0Q2hhciAhPSBcIihcIikge1xuICAgICAgLy8gU2hvcnRjdXQgcmVmIGxpbmtcbiAgICAgIGxpbmtSZWYgPSBsaW5rVGV4dC50cmltKCk7XG5cbiAgICAgIC8vIElOTElORSBMSU5LU1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBuZXh0Q2hhciA9PSAnKCdcblxuICAgICAgLy8gUG90ZW50aWFsIGlubGluZSBsaW5rXG4gICAgICBjdXJyZW50T2Zmc2V0Kys7XG5cbiAgICAgIGxldCBwYXJlbnRoZXNpc0xldmVsID0gMTtcbiAgICAgIGlubGluZU91dGVyOiB3aGlsZSAoXG4gICAgICAgIGN1cnJlbnRPZmZzZXQgPCBvcmlnaW5hbFN0cmluZy5sZW5ndGggJiZcbiAgICAgICAgcGFyZW50aGVzaXNMZXZlbCA+IDBcbiAgICAgICkge1xuICAgICAgICBsZXQgc3RyaW5nID0gb3JpZ2luYWxTdHJpbmcuc3Vic3RyKGN1cnJlbnRPZmZzZXQpO1xuXG4gICAgICAgIC8vIFByb2Nlc3Mgd2hpdGVzcGFjZVxuICAgICAgICBsZXQgY2FwID0gL15cXHMrLy5leGVjKHN0cmluZyk7XG4gICAgICAgIGlmIChjYXApIHtcbiAgICAgICAgICBzd2l0Y2ggKGxpbmtEZXRhaWxzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKGNhcFswXSk7XG4gICAgICAgICAgICAgIGJyZWFrOyAvLyBPcGVuaW5nIHdoaXRlc3BhY2VcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChjYXBbMF0pO1xuICAgICAgICAgICAgICBicmVhazsgLy8gT3BlbiBkZXN0aW5hdGlvbiwgYnV0IG5vdCBhIGRlc3RpbmF0aW9uIHlldDsgZGVzaW5hdGlvbiBvcGVuZWQgd2l0aCA8XG4gICAgICAgICAgICBjYXNlIDI6IC8vIE9wZW4gZGVzdGluYXRpb24gd2l0aCBjb250ZW50IGluIGl0LiBXaGl0ZXNwYWNlIG9ubHkgYWxsb3dlZCBpZiBvcGVuZWQgYnkgYW5nbGUgYnJhY2tldCwgb3RoZXJ3aXNlIHRoaXMgY2xvc2VzIHRoZSBkZXN0aW5hdGlvblxuICAgICAgICAgICAgICBpZiAobGlua0RldGFpbHNbMF0ubWF0Y2goLzwvKSkge1xuICAgICAgICAgICAgICAgIGxpbmtEZXRhaWxzWzFdID0gbGlua0RldGFpbHNbMV0uY29uY2F0KGNhcFswXSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudGhlc2lzTGV2ZWwgIT0gMSkgcmV0dXJuIGZhbHNlOyAvLyBVbmJhbGFuY2VkIHBhcmVudGhlc2lzXG4gICAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIlwiKTsgLy8gRW1wdHkgZW5kIGRlbGltaXRlciBmb3IgZGVzdGluYXRpb25cbiAgICAgICAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKGNhcFswXSk7IC8vIFdoaXRlc3BhY2UgaW4gYmV0d2VlbiBkZXN0aW5hdGlvbiBhbmQgdGl0bGVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChjYXBbMF0pO1xuICAgICAgICAgICAgICBicmVhazsgLy8gV2hpdGVzcGFjZSBiZXR3ZWVuIGRlc3RpbmF0aW9uIGFuZCB0aXRsZVxuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiAobm8gb3BlbmVyIGZvciB0aXRsZSB5ZXQsIGJ1dCBtb3JlIHdoaXRlc3BhY2UgdG8gY2FwdHVyZSlcbiAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIlwiKTsgLy8gV2hpdGVzcGFjZSBhdCBiZWdpbm5pbmcgb2YgdGl0bGUsIHB1c2ggZW1wdHkgdGl0bGUgYW5kIGNvbnRpbnVlXG4gICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzWzVdID0gbGlua0RldGFpbHNbNV0uY29uY2F0KGNhcFswXSk7XG4gICAgICAgICAgICAgIGJyZWFrOyAvLyBXaGl0ZXNwYWNlIGluIHRpdGxlXG4gICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzWzZdID0gbGlua0RldGFpbHNbNl0uY29uY2F0KGNhcFswXSk7XG4gICAgICAgICAgICAgIGJyZWFrOyAvLyBXaGl0ZXNwYWNlIGFmdGVyIGNsb3NpbmcgZGVsaW1pdGVyXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFdlIHNob3VsZCBuZXZlciBnZXQgaGVyZVxuICAgICAgICAgIH1cbiAgICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgICAgY29udGludWUgaW5saW5lT3V0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcm9jZXNzIGJhY2tzbGFzaCBlc2NhcGVzXG4gICAgICAgIGNhcCA9IGlubGluZUdyYW1tYXIuZXNjYXBlLnJlZ2V4cC5leGVjKHN0cmluZyk7XG4gICAgICAgIGlmIChjYXApIHtcbiAgICAgICAgICBzd2l0Y2ggKGxpbmtEZXRhaWxzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKFwiXCIpOyAvLyB0aGlzIG9wZW5zIHRoZSBsaW5rIGRlc3RpbmF0aW9uLCBhZGQgZW1wdHkgb3BlbmluZyBkZWxpbWl0ZXIgYW5kIHByb2NlZWQgdG8gbmV4dCBjYXNlXG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goY2FwWzBdKTtcbiAgICAgICAgICAgICAgYnJlYWs7IC8vIFRoaXMgb3BlbnMgdGhlIGxpbmsgZGVzdGluYXRpb24sIGFwcGVuZCBpdFxuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICBsaW5rRGV0YWlsc1sxXSA9IGxpbmtEZXRhaWxzWzFdLmNvbmNhdChjYXBbMF0pO1xuICAgICAgICAgICAgICBicmVhazsgLy8gUGFydCBvZiB0aGUgbGluayBkZXN0aW5hdGlvblxuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIExhY2tpbmcgb3BlbmluZyBkZWxpbWl0ZXIgZm9yIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBMY2FraW5nIG9wZW5pbmcgZGVsaW1pdGVyIGZvciBsaW5rIHRpdGxlXG4gICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7IC8vIFRoaXMgb3BlbnMgdGhlIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHNbNV0gPSBsaW5rRGV0YWlsc1s1XS5jb25jYXQoY2FwWzBdKTtcbiAgICAgICAgICAgICAgYnJlYWs7IC8vIFBhcnQgb2YgdGhlIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gQWZ0ZXIgbGluayB0aXRsZSB3YXMgY2xvc2VkLCB3aXRob3V0IGNsb3NpbmcgcGFyZW50aGVzaXNcbiAgICAgICAgICB9XG4gICAgICAgICAgY3VycmVudE9mZnNldCArPSBjYXBbMF0ubGVuZ3RoO1xuICAgICAgICAgIGNvbnRpbnVlIGlubGluZU91dGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJvY2VzcyBvcGVuaW5nIGFuZ2xlIGJyYWNrZXQgYXMgZGVpbGltaXRlciBvZiBkZXN0aW5hdGlvblxuICAgICAgICBpZiAobGlua0RldGFpbHMubGVuZ3RoIDwgMiAmJiBzdHJpbmcubWF0Y2goL148LykpIHtcbiAgICAgICAgICBpZiAobGlua0RldGFpbHMubGVuZ3RoID09IDApIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7XG4gICAgICAgICAgbGlua0RldGFpbHNbMF0gPSBsaW5rRGV0YWlsc1swXS5jb25jYXQoXCI8XCIpO1xuICAgICAgICAgIGN1cnJlbnRPZmZzZXQrKztcbiAgICAgICAgICBjb250aW51ZSBpbmxpbmVPdXRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3MgY2xvc2luZyBhbmdsZSBicmFja2V0IGFzIGRlbGltaXRlciBvZiBkZXN0aW5hdGlvblxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSAxIHx8IGxpbmtEZXRhaWxzLmxlbmd0aCA9PSAyKSAmJlxuICAgICAgICAgIHN0cmluZy5tYXRjaCgvXj4vKVxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAobGlua0RldGFpbHMubGVuZ3RoID09IDEpIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7IC8vIEVtcHR5IGxpbmsgZGVzdGluYXRpb25cbiAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKFwiPlwiKTtcbiAgICAgICAgICBjdXJyZW50T2Zmc2V0Kys7XG4gICAgICAgICAgY29udGludWUgaW5saW5lT3V0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcm9jZXNzICBub24tcGFyZW50aGVzaXMgZGVsaW1pdGVyIGZvciB0aXRsZS5cbiAgICAgICAgY2FwID0gL15bXCInXS8uZXhlYyhzdHJpbmcpO1xuICAgICAgICAvLyBGb3IgdGhpcyB0byBiZSBhIHZhbGlkIG9wZW5lciwgd2UgaGF2ZSB0byBlaXRoZXIgaGF2ZSBubyBkZXN0aW5hdGlvbiwgb25seSB3aGl0ZXNwYWNlIHNvIGZhcixcbiAgICAgICAgLy8gb3IgYSBkZXN0aW5hdGlvbiB3aXRoIHRyYWlsaW5nIHdoaXRlc3BhY2UuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBjYXAgJiZcbiAgICAgICAgICAobGlua0RldGFpbHMubGVuZ3RoID09IDAgfHxcbiAgICAgICAgICAgIGxpbmtEZXRhaWxzLmxlbmd0aCA9PSAxIHx8XG4gICAgICAgICAgICBsaW5rRGV0YWlscy5sZW5ndGggPT0gNClcbiAgICAgICAgKSB7XG4gICAgICAgICAgd2hpbGUgKGxpbmtEZXRhaWxzLmxlbmd0aCA8IDQpIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7XG4gICAgICAgICAgbGlua0RldGFpbHMucHVzaChjYXBbMF0pO1xuICAgICAgICAgIGN1cnJlbnRPZmZzZXQrKztcbiAgICAgICAgICBjb250aW51ZSBpbmxpbmVPdXRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZvciB0aGlzIHRvIGJlIGEgdmFsaWQgY2xvc2VyLCB3ZSBoYXZlIHRvIGhhdmUgYW4gb3BlbmVyIGFuZCBzb21lIG9yIG5vIHRpdGxlLCBhbmQgdGhpcyBoYXMgdG8gbWF0Y2ggdGhlIG9wZW5lclxuICAgICAgICBpZiAoXG4gICAgICAgICAgY2FwICYmXG4gICAgICAgICAgKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA1IHx8IGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA2KSAmJlxuICAgICAgICAgIGxpbmtEZXRhaWxzWzRdID09IGNhcFswXVxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAobGlua0RldGFpbHMubGVuZ3RoID09IDUpIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7IC8vIEVtcHR5IGxpbmsgdGl0bGVcbiAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKGNhcFswXSk7XG4gICAgICAgICAgY3VycmVudE9mZnNldCsrO1xuICAgICAgICAgIGNvbnRpbnVlIGlubGluZU91dGVyO1xuICAgICAgICB9XG4gICAgICAgIC8vIE90aGVyIGNhc2VzIChsaW5rRGV0YWlscy5sZW5ndGggPT0gMiwgMywgNykgd2lsbCBiZSBoYW5kbGVkIHdpdGggdGhlIFwiZGVmYXVsdFwiIGNhc2UgYmVsb3cuXG5cbiAgICAgICAgLy8gUHJvY2VzcyBvcGVuaW5nIHBhcmVudGhlc2lzXG4gICAgICAgIGlmIChzdHJpbmcubWF0Y2goL15cXCgvKSkge1xuICAgICAgICAgIHN3aXRjaCAobGlua0RldGFpbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7IC8vIHRoaXMgb3BlbnMgdGhlIGxpbmsgZGVzdGluYXRpb24sIGFkZCBlbXB0eSBvcGVuaW5nIGRlbGltaXRlciBhbmQgcHJvY2VlZCB0byBuZXh0IGNhc2VcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIlwiKTsgLy8gVGhpcyBvcGVucyB0aGUgbGluayBkZXN0aW5hdGlvblxuICAgICAgICAgICAgY2FzZSAyOiAvLyBQYXJ0IG9mIHRoZSBsaW5rIGRlc3RpbmF0aW9uXG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzWzFdID0gbGlua0RldGFpbHNbMV0uY29uY2F0KFwiKFwiKTtcbiAgICAgICAgICAgICAgaWYgKCFsaW5rRGV0YWlsc1swXS5tYXRjaCgvPCQvKSkgcGFyZW50aGVzaXNMZXZlbCsrO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIlwiKTsgLy8gIG9wZW5pbmcgZGVsaW1pdGVyIGZvciBsaW5rIHRpdGxlXG4gICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goXCIoXCIpO1xuICAgICAgICAgICAgICBicmVhazsgLy8gb3BlbmluZyBkZWxpbWl0ZXIgZm9yIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIlwiKTsgLy8gb3BlbnMgdGhlIGxpbmsgdGl0bGUsIGFkZCBlbXB0eSB0aXRsZSBjb250ZW50IGFuZCBwcm9jZWVkIHRvIG5leHQgY2FzZVxuICAgICAgICAgICAgY2FzZSA2OiAvLyBQYXJ0IG9mIHRoZSBsaW5rIHRpdGxlLiBVbi1lc2NhcGVkIHBhcmVudGhlc2lzIG9ubHkgYWxsb3dlZCBpbiBcIiBvciAnIGRlbGltaXRlZCB0aXRsZVxuICAgICAgICAgICAgICBpZiAobGlua0RldGFpbHNbNF0gPT0gXCIoXCIpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgbGlua0RldGFpbHNbNV0gPSBsaW5rRGV0YWlsc1s1XS5jb25jYXQoXCIoXCIpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gQWZ0ZXIgbGluayB0aXRsZSB3YXMgY2xvc2VkLCB3aXRob3V0IGNsb3NpbmcgcGFyZW50aGVzaXNcbiAgICAgICAgICB9XG4gICAgICAgICAgY3VycmVudE9mZnNldCsrO1xuICAgICAgICAgIGNvbnRpbnVlIGlubGluZU91dGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJvY2VzcyBjbG9zaW5nIHBhcmVudGhlc2lzXG4gICAgICAgIGlmIChzdHJpbmcubWF0Y2goL15cXCkvKSkge1xuICAgICAgICAgIGlmIChsaW5rRGV0YWlscy5sZW5ndGggPD0gMikge1xuICAgICAgICAgICAgLy8gV2UgYXJlIGluc2lkZSB0aGUgbGluayBkZXN0aW5hdGlvbi4gUGFyZW50aGVzZXMgaGF2ZSB0byBiZSBtYXRjaGVkIGlmIG5vdCBpbiBhbmdsZSBicmFja2V0c1xuICAgICAgICAgICAgd2hpbGUgKGxpbmtEZXRhaWxzLmxlbmd0aCA8IDIpIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7XG5cbiAgICAgICAgICAgIGlmICghbGlua0RldGFpbHNbMF0ubWF0Y2goLzwkLykpIHBhcmVudGhlc2lzTGV2ZWwtLTtcblxuICAgICAgICAgICAgaWYgKHBhcmVudGhlc2lzTGV2ZWwgPiAwKSB7XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzWzFdID0gbGlua0RldGFpbHNbMV0uY29uY2F0KFwiKVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA1IHx8IGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA2KSB7XG4gICAgICAgICAgICAvLyBXZSBhcmUgaW5zaWRlIHRoZSBsaW5rIHRpdGxlLlxuICAgICAgICAgICAgaWYgKGxpbmtEZXRhaWxzWzRdID09IFwiKFwiKSB7XG4gICAgICAgICAgICAgIC8vIFRoaXMgY2xvc2VzIHRoZSBsaW5rIHRpdGxlXG4gICAgICAgICAgICAgIGlmIChsaW5rRGV0YWlscy5sZW5ndGggPT0gNSkgbGlua0RldGFpbHMucHVzaChcIlwiKTtcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIilcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBKdXN0IHJlZ3VsYXIgb2wnIGNvbnRlbnRcbiAgICAgICAgICAgICAgaWYgKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA1KSBsaW5rRGV0YWlscy5wdXNoKFwiKVwiKTtcbiAgICAgICAgICAgICAgZWxzZSBsaW5rRGV0YWlsc1s1XSA9IGxpbmtEZXRhaWxzWzVdLmNvbmNhdChcIilcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcmVudGhlc2lzTGV2ZWwtLTsgLy8gVGhpcyBzaG91bGQgZGVjcmVhc2UgaXQgZnJvbSAxIHRvIDAuLi5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocGFyZW50aGVzaXNMZXZlbCA9PSAwKSB7XG4gICAgICAgICAgICAvLyBObyBpbnZhbGlkIGNvbmRpdGlvbiwgbGV0J3MgbWFrZSBzdXJlIHRoZSBsaW5rRGV0YWlscyBhcnJheSBpcyBjb21wbGV0ZVxuICAgICAgICAgICAgd2hpbGUgKGxpbmtEZXRhaWxzLmxlbmd0aCA8IDcpIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VycmVudE9mZnNldCsrO1xuICAgICAgICAgIGNvbnRpbnVlIGlubGluZU91dGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQW55IG9sZCBjaGFyYWN0ZXJcbiAgICAgICAgY2FwID0gL14uLy5leGVjKHN0cmluZyk7XG4gICAgICAgIGlmIChjYXApIHtcbiAgICAgICAgICBzd2l0Y2ggKGxpbmtEZXRhaWxzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKFwiXCIpOyAvLyB0aGlzIG9wZW5zIHRoZSBsaW5rIGRlc3RpbmF0aW9uLCBhZGQgZW1wdHkgb3BlbmluZyBkZWxpbWl0ZXIgYW5kIHByb2NlZWQgdG8gbmV4dCBjYXNlXG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goY2FwWzBdKTtcbiAgICAgICAgICAgICAgYnJlYWs7IC8vIFRoaXMgb3BlbnMgdGhlIGxpbmsgZGVzdGluYXRpb24sIGFwcGVuZCBpdFxuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICBsaW5rRGV0YWlsc1sxXSA9IGxpbmtEZXRhaWxzWzFdLmNvbmNhdChjYXBbMF0pO1xuICAgICAgICAgICAgICBicmVhazsgLy8gUGFydCBvZiB0aGUgbGluayBkZXN0aW5hdGlvblxuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIExhY2tpbmcgb3BlbmluZyBkZWxpbWl0ZXIgZm9yIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBMY2FraW5nIG9wZW5pbmcgZGVsaW1pdGVyIGZvciBsaW5rIHRpdGxlXG4gICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7IC8vIFRoaXMgb3BlbnMgdGhlIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHNbNV0gPSBsaW5rRGV0YWlsc1s1XS5jb25jYXQoY2FwWzBdKTtcbiAgICAgICAgICAgICAgYnJlYWs7IC8vIFBhcnQgb2YgdGhlIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gQWZ0ZXIgbGluayB0aXRsZSB3YXMgY2xvc2VkLCB3aXRob3V0IGNsb3NpbmcgcGFyZW50aGVzaXNcbiAgICAgICAgICB9XG4gICAgICAgICAgY3VycmVudE9mZnNldCArPSBjYXBbMF0ubGVuZ3RoO1xuICAgICAgICAgIGNvbnRpbnVlIGlubGluZU91dGVyO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IFwiSW5maW5pdGUgbG9vcFwiOyAvLyB3ZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUgc2luY2UgdGhlIGxhc3QgdGVzdCBtYXRjaGVzIGFueSBjaGFyYWN0ZXJcbiAgICAgIH1cbiAgICAgIGlmIChwYXJlbnRoZXNpc0xldmVsID4gMCkgcmV0dXJuIGZhbHNlOyAvLyBQYXJlbnRoZXMoZXMpIG5vdCBjbG9zZWRcbiAgICB9XG5cbiAgICBpZiAobGlua1JlZiAhPT0gZmFsc2UpIHtcbiAgICAgIC8vIFJlZiBsaW5rOyBjaGVjayB0aGF0IGxpbmtSZWYgaXMgdmFsaWRcbiAgICAgIGxldCB2YWxpZCA9IGZhbHNlO1xuICAgICAgZm9yIChsZXQgbGFiZWwgb2YgdGhpcy5saW5rTGFiZWxzKSB7XG4gICAgICAgIGlmIChsYWJlbCA9PSBsaW5rUmVmKSB7XG4gICAgICAgICAgdmFsaWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgbGFiZWwgPSB2YWxpZFxuICAgICAgICA/IFwiVE1MaW5rTGFiZWwgVE1MaW5rTGFiZWxfVmFsaWRcIlxuICAgICAgICA6IFwiVE1MaW5rTGFiZWwgVE1MaW5rTGFiZWxfSW52YWxpZFwiO1xuICAgICAgbGV0IG91dHB1dCA9IGA8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPiR7b3BlbmVyfTwvc3Bhbj48c3BhbiBjbGFzcz1cIiR7dHlwZX0gJHtcbiAgICAgICAgbGlua0xhYmVsLmxlbmd0aCA8IDMgfHwgIWxpbmtMYWJlbFsxXSA/IGxhYmVsIDogXCJcIlxuICAgICAgfVwiPiR7dGhpcy5wcm9jZXNzSW5saW5lU3R5bGVzKFxuICAgICAgICBsaW5rVGV4dFxuICAgICAgKX08L3NwYW4+PHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrXyR7dHlwZX1cIj5dPC9zcGFuPmA7XG5cbiAgICAgIGlmIChsaW5rTGFiZWwubGVuZ3RoID49IDMpIHtcbiAgICAgICAgb3V0cHV0ID0gb3V0cHV0LmNvbmNhdChcbiAgICAgICAgICBgPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrXyR7dHlwZX1cIj4ke2xpbmtMYWJlbFswXX08L3NwYW4+YCxcbiAgICAgICAgICBgPHNwYW4gY2xhc3M9XCIke2xhYmVsfVwiPiR7bGlua0xhYmVsWzFdfTwvc3Bhbj5gLFxuICAgICAgICAgIGA8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPiR7bGlua0xhYmVsWzJdfTwvc3Bhbj5gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvdXRwdXQ6IG91dHB1dCxcbiAgICAgICAgY2hhckNvdW50OiBjdXJyZW50T2Zmc2V0LFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGxpbmtEZXRhaWxzKSB7XG4gICAgICAvLyBJbmxpbmUgbGlua1xuXG4gICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4sIGJ1dCBiZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LlxuICAgICAgd2hpbGUgKGxpbmtEZXRhaWxzLmxlbmd0aCA8IDcpIHtcbiAgICAgICAgbGlua0RldGFpbHMucHVzaChcIlwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3V0cHV0OiBgPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrXyR7dHlwZX1cIj4ke29wZW5lcn08L3NwYW4+PHNwYW4gY2xhc3M9XCIke3R5cGV9XCI+JHt0aGlzLnByb2Nlc3NJbmxpbmVTdHlsZXMoXG4gICAgICAgICAgbGlua1RleHRcbiAgICAgICAgKX08L3NwYW4+PHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrXyR7dHlwZX1cIj5dKCR7XG4gICAgICAgICAgbGlua0RldGFpbHNbMF1cbiAgICAgICAgfTwvc3Bhbj48c3BhbiBjbGFzcz1cIiR7dHlwZX1EZXN0aW5hdGlvblwiPiR7XG4gICAgICAgICAgbGlua0RldGFpbHNbMV1cbiAgICAgICAgfTwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPiR7bGlua0RldGFpbHNbMl19JHtcbiAgICAgICAgICBsaW5rRGV0YWlsc1szXVxuICAgICAgICB9JHtsaW5rRGV0YWlsc1s0XX08L3NwYW4+PHNwYW4gY2xhc3M9XCIke3R5cGV9VGl0bGVcIj4ke1xuICAgICAgICAgIGxpbmtEZXRhaWxzWzVdXG4gICAgICAgIH08L3NwYW4+PHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrXyR7dHlwZX1cIj4ke2xpbmtEZXRhaWxzWzZdfSk8L3NwYW4+YCxcbiAgICAgICAgY2hhckNvdW50OiBjdXJyZW50T2Zmc2V0LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0cyBhIG1hcmtkb3duIHN0cmluZyBhcyBIVE1MLCB1c2luZyBNYXJrZG93biBpbmxpbmUgZm9ybWF0dGluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbmFsU3RyaW5nIFRoZSBpbnB1dCAobWFya2Rvd24gaW5saW5lIGZvcm1hdHRlZCkgc3RyaW5nXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBIVE1MIGZvcm1hdHRlZCBvdXRwdXRcbiAgICovXG4gIHByb2Nlc3NJbmxpbmVTdHlsZXMob3JpZ2luYWxTdHJpbmcpIHtcbiAgICBsZXQgcHJvY2Vzc2VkID0gXCJcIjtcbiAgICBsZXQgc3RhY2sgPSBbXTsgLy8gU3RhY2sgaXMgYW4gYXJyYXkgb2Ygb2JqZWN0cyBvZiB0aGUgZm9ybWF0OiB7ZGVsaW1pdGVyLCBkZWxpbVN0cmluZywgY291bnQsIG91dHB1dH1cbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBsZXQgc3RyaW5nID0gb3JpZ2luYWxTdHJpbmc7XG5cbiAgICBvdXRlcjogd2hpbGUgKHN0cmluZykge1xuICAgICAgLy8gUHJvY2VzcyBzaW1wbGUgcnVsZXMgKG5vbi1kZWxpbWl0ZXIpXG4gICAgICBmb3IgKGxldCBydWxlIG9mIFtcImVzY2FwZVwiLCBcImNvZGVcIiwgXCJhdXRvbGlua1wiLCBcImh0bWxcIl0pIHtcbiAgICAgICAgbGV0IGNhcCA9IGlubGluZUdyYW1tYXJbcnVsZV0ucmVnZXhwLmV4ZWMoc3RyaW5nKTtcbiAgICAgICAgaWYgKGNhcCkge1xuICAgICAgICAgIHN0cmluZyA9IHN0cmluZy5zdWJzdHIoY2FwWzBdLmxlbmd0aCk7XG4gICAgICAgICAgb2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgICAgcHJvY2Vzc2VkICs9IGlubGluZUdyYW1tYXJbcnVsZV0ucmVwbGFjZW1lbnRcbiAgICAgICAgICAgIC8vIC5yZXBsYWNlKC9cXCRcXCQoWzEtOV0pL2csIChzdHIsIHAxKSA9PiBwcm9jZXNzSW5saW5lU3R5bGVzKGNhcFtwMV0pKSAvLyB0b2RvIHJlY3Vyc2l2ZSBjYWxsaW5nXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwkKFsxLTldKS9nLCAoc3RyLCBwMSkgPT4gaHRtbGVzY2FwZShjYXBbcDFdKSk7XG4gICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgZm9yIGxpbmtzIC8gaW1hZ2VzXG4gICAgICBsZXQgcG90ZW50aWFsTGluayA9IHN0cmluZy5tYXRjaChpbmxpbmVHcmFtbWFyLmxpbmtPcGVuLnJlZ2V4cCk7XG4gICAgICBsZXQgcG90ZW50aWFsSW1hZ2UgPSBzdHJpbmcubWF0Y2goaW5saW5lR3JhbW1hci5pbWFnZU9wZW4ucmVnZXhwKTtcbiAgICAgIGlmIChwb3RlbnRpYWxJbWFnZSB8fCBwb3RlbnRpYWxMaW5rKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLnBhcnNlTGlua09ySW1hZ2Uoc3RyaW5nLCBwb3RlbnRpYWxJbWFnZSk7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICBwcm9jZXNzZWQgPSBgJHtwcm9jZXNzZWR9JHtyZXN1bHQub3V0cHV0fWA7XG4gICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnN1YnN0cihyZXN1bHQuY2hhckNvdW50KTtcbiAgICAgICAgICBvZmZzZXQgKz0gcmVzdWx0LmNoYXJDb3VudDtcbiAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBmb3IgZW0gLyBzdHJvbmcgZGVsaW1pdGVyc1xuICAgICAgbGV0IGNhcCA9IC8oXlxcKispfCheXyspLy5leGVjKHN0cmluZyk7XG4gICAgICBpZiAoY2FwKSB7XG4gICAgICAgIGxldCBkZWxpbUNvdW50ID0gY2FwWzBdLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZGVsaW1TdHJpbmcgPSBjYXBbMF07XG4gICAgICAgIGNvbnN0IGN1cnJlbnREZWxpbWl0ZXIgPSBjYXBbMF1bMF07IC8vIFRoaXMgc2hvdWxkIGJlICogb3IgX1xuXG4gICAgICAgIHN0cmluZyA9IHN0cmluZy5zdWJzdHIoY2FwWzBdLmxlbmd0aCk7XG5cbiAgICAgICAgLy8gV2UgaGF2ZSBhIGRlbGltaXRlciBydW4uIExldCdzIGNoZWNrIGlmIGl0IGNhbiBvcGVuIG9yIGNsb3NlIGFuIGVtcGhhc2lzLlxuXG4gICAgICAgIGNvbnN0IHByZWNlZGluZyA9IG9mZnNldCA+IDAgPyBvcmlnaW5hbFN0cmluZy5zdWJzdHIoMCwgb2Zmc2V0KSA6IFwiIFwiOyAvLyBiZWdpbm5pbmcgYW5kIGVuZCBvZiBsaW5lIGNvdW50IGFzIHdoaXRlc3BhY2VcbiAgICAgICAgY29uc3QgZm9sbG93aW5nID1cbiAgICAgICAgICBvZmZzZXQgKyBjYXBbMF0ubGVuZ3RoIDwgb3JpZ2luYWxTdHJpbmcubGVuZ3RoID8gc3RyaW5nIDogXCIgXCI7XG5cbiAgICAgICAgY29uc3QgcHVuY3R1YXRpb25Gb2xsb3dzID0gZm9sbG93aW5nLm1hdGNoKHB1bmN0dWF0aW9uTGVhZGluZyk7XG4gICAgICAgIGNvbnN0IHB1bmN0dWF0aW9uUHJlY2VkZXMgPSBwcmVjZWRpbmcubWF0Y2gocHVuY3R1YXRpb25UcmFpbGluZyk7XG4gICAgICAgIGNvbnN0IHdoaXRlc3BhY2VGb2xsb3dzID0gZm9sbG93aW5nLm1hdGNoKC9eXFxzLyk7XG4gICAgICAgIGNvbnN0IHdoaXRlc3BhY2VQcmVjZWRlcyA9IHByZWNlZGluZy5tYXRjaCgvXFxzJC8pO1xuXG4gICAgICAgIC8vIFRoZXNlIGFyZSB0aGUgcnVsZXMgZm9yIHJpZ2h0LWZsYW5raW5nIGFuZCBsZWZ0LWZsYW5raW5nIGRlbGltaXRlciBydW5zIGFzIHBlciBDb21tb25NYXJrIHNwZWNcbiAgICAgICAgbGV0IGNhbk9wZW4gPVxuICAgICAgICAgICF3aGl0ZXNwYWNlRm9sbG93cyAmJlxuICAgICAgICAgICghcHVuY3R1YXRpb25Gb2xsb3dzIHx8XG4gICAgICAgICAgICAhIXdoaXRlc3BhY2VQcmVjZWRlcyB8fFxuICAgICAgICAgICAgISFwdW5jdHVhdGlvblByZWNlZGVzKTtcbiAgICAgICAgbGV0IGNhbkNsb3NlID1cbiAgICAgICAgICAhd2hpdGVzcGFjZVByZWNlZGVzICYmXG4gICAgICAgICAgKCFwdW5jdHVhdGlvblByZWNlZGVzIHx8ICEhd2hpdGVzcGFjZUZvbGxvd3MgfHwgISFwdW5jdHVhdGlvbkZvbGxvd3MpO1xuXG4gICAgICAgIC8vIFVuZGVyc2NvcmVzIGhhdmUgbW9yZSBkZXRhaWxlZCBydWxlcyB0aGFuIGp1c3QgYmVpbmcgcGFydCBvZiBsZWZ0LSBvciByaWdodC1mbGFua2luZyBydW46XG4gICAgICAgIGlmIChjdXJyZW50RGVsaW1pdGVyID09IFwiX1wiICYmIGNhbk9wZW4gJiYgY2FuQ2xvc2UpIHtcbiAgICAgICAgICBjYW5PcGVuID0gcHVuY3R1YXRpb25QcmVjZWRlcztcbiAgICAgICAgICBjYW5DbG9zZSA9IHB1bmN0dWF0aW9uRm9sbG93cztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZSBkZWxpbWl0ZXIgY2FuIGNsb3NlLCBjaGVjayB0aGUgc3RhY2sgaWYgdGhlcmUncyBzb21ldGhpbmcgaXQgY2FuIGNsb3NlXG4gICAgICAgIGlmIChjYW5DbG9zZSkge1xuICAgICAgICAgIGxldCBzdGFja1BvaW50ZXIgPSBzdGFjay5sZW5ndGggLSAxO1xuICAgICAgICAgIC8vIFNlZSBpZiB3ZSBjYW4gZmluZCBhIG1hdGNoaW5nIG9wZW5pbmcgZGVsaW1pdGVyLCBtb3ZlIGRvd24gdGhyb3VnaCB0aGUgc3RhY2tcbiAgICAgICAgICB3aGlsZSAoZGVsaW1Db3VudCAmJiBzdGFja1BvaW50ZXIgPj0gMCkge1xuICAgICAgICAgICAgaWYgKHN0YWNrW3N0YWNrUG9pbnRlcl0uZGVsaW1pdGVyID09IGN1cnJlbnREZWxpbWl0ZXIpIHtcbiAgICAgICAgICAgICAgLy8gV2UgZm91bmQgYSBtYXRjaGluZyBkZWxpbWl0ZXIsIGxldCdzIGNvbnN0cnVjdCB0aGUgZm9ybWF0dGVkIHN0cmluZ1xuXG4gICAgICAgICAgICAgIC8vIEZpcnN0bHksIGlmIHdlIHNraXBwZWQgYW55IHN0YWNrIGxldmVscywgcG9wIHRoZW0gaW1tZWRpYXRlbHkgKG5vbi1tYXRjaGluZyBkZWxpbWl0ZXJzKVxuICAgICAgICAgICAgICB3aGlsZSAoc3RhY2tQb2ludGVyIDwgc3RhY2subGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gc3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc2VkID0gYCR7ZW50cnkub3V0cHV0fSR7ZW50cnkuZGVsaW1TdHJpbmcuc3Vic3RyKFxuICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgIGVudHJ5LmNvdW50XG4gICAgICAgICAgICAgICAgKX0ke3Byb2Nlc3NlZH1gO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLy8gVGhlbiwgZm9ybWF0IHRoZSBzdHJpbmdcbiAgICAgICAgICAgICAgaWYgKGRlbGltQ291bnQgPj0gMiAmJiBzdGFja1tzdGFja1BvaW50ZXJdLmNvdW50ID49IDIpIHtcbiAgICAgICAgICAgICAgICAvLyBTdHJvbmdcbiAgICAgICAgICAgICAgICBwcm9jZXNzZWQgPSBgPHNwYW4gY2xhc3M9XCJUTU1hcmtcIj4ke2N1cnJlbnREZWxpbWl0ZXJ9JHtjdXJyZW50RGVsaW1pdGVyfTwvc3Bhbj48c3Ryb25nIGNsYXNzPVwiVE1TdHJvbmdcIj4ke3Byb2Nlc3NlZH08L3N0cm9uZz48c3BhbiBjbGFzcz1cIlRNTWFya1wiPiR7Y3VycmVudERlbGltaXRlcn0ke2N1cnJlbnREZWxpbWl0ZXJ9PC9zcGFuPmA7XG4gICAgICAgICAgICAgICAgZGVsaW1Db3VudCAtPSAyO1xuICAgICAgICAgICAgICAgIHN0YWNrW3N0YWNrUG9pbnRlcl0uY291bnQgLT0gMjtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBFbVxuICAgICAgICAgICAgICAgIHByb2Nlc3NlZCA9IGA8c3BhbiBjbGFzcz1cIlRNTWFya1wiPiR7Y3VycmVudERlbGltaXRlcn08L3NwYW4+PGVtIGNsYXNzPVwiVE1FbVwiPiR7cHJvY2Vzc2VkfTwvZW0+PHNwYW4gY2xhc3M9XCJUTU1hcmtcIj4ke2N1cnJlbnREZWxpbWl0ZXJ9PC9zcGFuPmA7XG4gICAgICAgICAgICAgICAgZGVsaW1Db3VudCAtPSAxO1xuICAgICAgICAgICAgICAgIHN0YWNrW3N0YWNrUG9pbnRlcl0uY291bnQgLT0gMTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIElmIHRoYXQgc3RhY2sgbGV2ZWwgaXMgZW1wdHkgbm93LCBwb3AgaXRcbiAgICAgICAgICAgICAgaWYgKHN0YWNrW3N0YWNrUG9pbnRlcl0uY291bnQgPT0gMCkge1xuICAgICAgICAgICAgICAgIGxldCBlbnRyeSA9IHN0YWNrLnBvcCgpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3NlZCA9IGAke2VudHJ5Lm91dHB1dH0ke3Byb2Nlc3NlZH1gO1xuICAgICAgICAgICAgICAgIHN0YWNrUG9pbnRlci0tO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBUaGlzIHN0YWNrIGxldmVsJ3MgZGVsaW1pdGVyIHR5cGUgZG9lc24ndCBtYXRjaCB0aGUgY3VycmVudCBkZWxpbWl0ZXIgdHlwZVxuICAgICAgICAgICAgICAvLyBHbyBkb3duIG9uZSBsZXZlbCBpbiB0aGUgc3RhY2tcbiAgICAgICAgICAgICAgc3RhY2tQb2ludGVyLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBzdGlsbCBkZWxpbWl0ZXJzIGxlZnQsIGFuZCB0aGUgZGVsaW1pdGVyIHJ1biBjYW4gb3BlbiwgcHVzaCBpdCBvbiB0aGUgc3RhY2tcbiAgICAgICAgaWYgKGRlbGltQ291bnQgJiYgY2FuT3Blbikge1xuICAgICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgICAgZGVsaW1pdGVyOiBjdXJyZW50RGVsaW1pdGVyLFxuICAgICAgICAgICAgZGVsaW1TdHJpbmc6IGRlbGltU3RyaW5nLFxuICAgICAgICAgICAgY291bnQ6IGRlbGltQ291bnQsXG4gICAgICAgICAgICBvdXRwdXQ6IHByb2Nlc3NlZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwcm9jZXNzZWQgPSBcIlwiOyAvLyBDdXJyZW50IGZvcm1hdHRlZCBvdXRwdXQgaGFzIGJlZW4gcHVzaGVkIG9uIHRoZSBzdGFjayBhbmQgd2lsbCBiZSBwcmVwZW5kZWQgd2hlbiB0aGUgc3RhY2sgZ2V0cyBwb3BwZWRcbiAgICAgICAgICBkZWxpbUNvdW50ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFueSBkZWxpbWl0ZXJzIHRoYXQgYXJlIGxlZnQgKGNsb3NpbmcgdW5tYXRjaGVkKSBhcmUgYXBwZW5kZWQgdG8gdGhlIG91dHB1dC5cbiAgICAgICAgaWYgKGRlbGltQ291bnQpIHtcbiAgICAgICAgICBwcm9jZXNzZWQgPSBgJHtwcm9jZXNzZWR9JHtkZWxpbVN0cmluZy5zdWJzdHIoMCwgZGVsaW1Db3VudCl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIG9mZnNldCArPSBjYXBbMF0ubGVuZ3RoO1xuICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgZm9yIHN0cmlrZXRocm91Z2ggZGVsaW1pdGVyXG4gICAgICBjYXAgPSAvXn5+Ly5leGVjKHN0cmluZyk7XG4gICAgICBpZiAoY2FwKSB7XG4gICAgICAgIGxldCBjb25zdW1lZCA9IGZhbHNlO1xuICAgICAgICBsZXQgc3RhY2tQb2ludGVyID0gc3RhY2subGVuZ3RoIC0gMTtcbiAgICAgICAgLy8gU2VlIGlmIHdlIGNhbiBmaW5kIGEgbWF0Y2hpbmcgb3BlbmluZyBkZWxpbWl0ZXIsIG1vdmUgZG93biB0aHJvdWdoIHRoZSBzdGFja1xuICAgICAgICB3aGlsZSAoIWNvbnN1bWVkICYmIHN0YWNrUG9pbnRlciA+PSAwKSB7XG4gICAgICAgICAgaWYgKHN0YWNrW3N0YWNrUG9pbnRlcl0uZGVsaW1pdGVyID09IFwiflwiKSB7XG4gICAgICAgICAgICAvLyBXZSBmb3VuZCBhIG1hdGNoaW5nIGRlbGltaXRlciwgbGV0J3MgY29uc3RydWN0IHRoZSBmb3JtYXR0ZWQgc3RyaW5nXG5cbiAgICAgICAgICAgIC8vIEZpcnN0bHksIGlmIHdlIHNraXBwZWQgYW55IHN0YWNrIGxldmVscywgcG9wIHRoZW0gaW1tZWRpYXRlbHkgKG5vbi1tYXRjaGluZyBkZWxpbWl0ZXJzKVxuICAgICAgICAgICAgd2hpbGUgKHN0YWNrUG9pbnRlciA8IHN0YWNrLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgY29uc3QgZW50cnkgPSBzdGFjay5wb3AoKTtcbiAgICAgICAgICAgICAgcHJvY2Vzc2VkID0gYCR7ZW50cnkub3V0cHV0fSR7ZW50cnkuZGVsaW1TdHJpbmcuc3Vic3RyKFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgZW50cnkuY291bnRcbiAgICAgICAgICAgICAgKX0ke3Byb2Nlc3NlZH1gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBUaGVuLCBmb3JtYXQgdGhlIHN0cmluZ1xuICAgICAgICAgICAgcHJvY2Vzc2VkID0gYDxzcGFuIGNsYXNzPVwiVE1NYXJrXCI+fn48L3NwYW4+PGRlbCBjbGFzcz1cIlRNU3RyaWtldGhyb3VnaFwiPiR7cHJvY2Vzc2VkfTwvZGVsPjxzcGFuIGNsYXNzPVwiVE1NYXJrXCI+fn48L3NwYW4+YDtcbiAgICAgICAgICAgIGxldCBlbnRyeSA9IHN0YWNrLnBvcCgpO1xuICAgICAgICAgICAgcHJvY2Vzc2VkID0gYCR7ZW50cnkub3V0cHV0fSR7cHJvY2Vzc2VkfWA7XG4gICAgICAgICAgICBjb25zdW1lZCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFRoaXMgc3RhY2sgbGV2ZWwncyBkZWxpbWl0ZXIgdHlwZSBkb2Vzbid0IG1hdGNoIHRoZSBjdXJyZW50IGRlbGltaXRlciB0eXBlXG4gICAgICAgICAgICAvLyBHbyBkb3duIG9uZSBsZXZlbCBpbiB0aGUgc3RhY2tcbiAgICAgICAgICAgIHN0YWNrUG9pbnRlci0tO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBzdGlsbCBkZWxpbWl0ZXJzIGxlZnQsIGFuZCB0aGUgZGVsaW1pdGVyIHJ1biBjYW4gb3BlbiwgcHVzaCBpdCBvbiB0aGUgc3RhY2tcbiAgICAgICAgaWYgKCFjb25zdW1lZCkge1xuICAgICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgICAgZGVsaW1pdGVyOiBcIn5cIixcbiAgICAgICAgICAgIGRlbGltU3RyaW5nOiBcIn5+XCIsXG4gICAgICAgICAgICBjb3VudDogMixcbiAgICAgICAgICAgIG91dHB1dDogcHJvY2Vzc2VkLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHByb2Nlc3NlZCA9IFwiXCI7IC8vIEN1cnJlbnQgZm9ybWF0dGVkIG91dHB1dCBoYXMgYmVlbiBwdXNoZWQgb24gdGhlIHN0YWNrIGFuZCB3aWxsIGJlIHByZXBlbmRlZCB3aGVuIHRoZSBzdGFjayBnZXRzIHBvcHBlZFxuICAgICAgICB9XG5cbiAgICAgICAgb2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgIHN0cmluZyA9IHN0cmluZy5zdWJzdHIoY2FwWzBdLmxlbmd0aCk7XG4gICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgfVxuXG4gICAgICAvLyBQcm9jZXNzICdkZWZhdWx0JyBydWxlXG4gICAgICBjYXAgPSBpbmxpbmVHcmFtbWFyLmRlZmF1bHQucmVnZXhwLmV4ZWMoc3RyaW5nKTtcbiAgICAgIGlmIChjYXApIHtcbiAgICAgICAgc3RyaW5nID0gc3RyaW5nLnN1YnN0cihjYXBbMF0ubGVuZ3RoKTtcbiAgICAgICAgb2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgIHByb2Nlc3NlZCArPSBpbmxpbmVHcmFtbWFyLmRlZmF1bHQucmVwbGFjZW1lbnQucmVwbGFjZShcbiAgICAgICAgICAvXFwkKFsxLTldKS9nLFxuICAgICAgICAgIChzdHIsIHAxKSA9PiBodG1sZXNjYXBlKGNhcFtwMV0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgfVxuICAgICAgdGhyb3cgXCJJbmZpbml0ZSBsb29wIVwiO1xuICAgIH1cblxuICAgIC8vIEVtcHR5IHRoZSBzdGFjaywgYW55IG9wZW5pbmcgZGVsaW1pdGVycyBhcmUgdW51c2VkXG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCkge1xuICAgICAgY29uc3QgZW50cnkgPSBzdGFjay5wb3AoKTtcbiAgICAgIHByb2Nlc3NlZCA9IGAke2VudHJ5Lm91dHB1dH0ke2VudHJ5LmRlbGltU3RyaW5nLnN1YnN0cihcbiAgICAgICAgMCxcbiAgICAgICAgZW50cnkuY291bnRcbiAgICAgICl9JHtwcm9jZXNzZWR9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvY2Vzc2VkO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgbGluZSBkaXJ0eSBmbGFnIChyZXNldHMgaXQgdG8gYW4gYXJyYXkgb2YgZmFsc2UpXG4gICAqL1xuICBjbGVhckRpcnR5RmxhZygpIHtcbiAgICB0aGlzLmxpbmVEaXJ0eSA9IG5ldyBBcnJheSh0aGlzLmxpbmVzLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxpbmVEaXJ0eS5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5saW5lRGlydHlbaV0gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgY2xhc3MgcHJvcGVydGllcyAobGluZXMsIGxpbmVFbGVtZW50cykgZnJvbSB0aGUgRE9NLlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGNvbnRlbnRzIGNoYW5nZWRcbiAgICovXG4gIHVwZGF0ZUxpbmVDb250ZW50cygpIHtcbiAgICAvLyB0aGlzLmxpbmVEaXJ0eSA9IFtdO1xuICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgY2hhbmdlZCBhbnl0aGluZyBhYm91dCB0aGUgbnVtYmVyIG9mIGxpbmVzIChpbnNlcnRlZCBvciBkZWxldGVkIGEgcGFyYWdyYXBoKVxuICAgIC8vIDwgMCBtZWFucyBsaW5lKHMpIHJlbW92ZWQ7ID4gMCBtZWFucyBsaW5lKHMpIGFkZGVkXG4gICAgbGV0IGxpbmVEZWx0YSA9IHRoaXMuZS5jaGlsZEVsZW1lbnRDb3VudCAtIHRoaXMubGluZXMubGVuZ3RoO1xuICAgIGlmIChsaW5lRGVsdGEpIHtcbiAgICAgIC8vIHl1cC4gTGV0J3MgdHJ5IGhvdyBtdWNoIHdlIGNhbiBzYWx2YWdlIChmaW5kIG91dCB3aGljaCBsaW5lcyBmcm9tIGJlZ2lubmluZyBhbmQgZW5kIHdlcmUgdW5jaGFuZ2VkKVxuICAgICAgLy8gRmluZCBsaW5lcyBmcm9tIHRoZSBiZWdpbm5pbmcgdGhhdCBoYXZlbid0IGNoYW5nZWQuLi5cbiAgICAgIGxldCBmaXJzdENoYW5nZWRMaW5lID0gMDtcbiAgICAgIHdoaWxlIChcbiAgICAgICAgZmlyc3RDaGFuZ2VkTGluZSA8PSB0aGlzLmxpbmVzLmxlbmd0aCAmJlxuICAgICAgICBmaXJzdENoYW5nZWRMaW5lIDw9IHRoaXMubGluZUVsZW1lbnRzLmxlbmd0aCAmJlxuICAgICAgICB0aGlzLmxpbmVFbGVtZW50c1tmaXJzdENoYW5nZWRMaW5lXSAmJiAvLyBDaGVjayB0aGF0IHRoZSBsaW5lIGVsZW1lbnQgaGFzbid0IGJlZW4gZGVsZXRlZFxuICAgICAgICB0aGlzLmxpbmVzW2ZpcnN0Q2hhbmdlZExpbmVdID09XG4gICAgICAgICAgdGhpcy5saW5lRWxlbWVudHNbZmlyc3RDaGFuZ2VkTGluZV0udGV4dENvbnRlbnRcbiAgICAgICkge1xuICAgICAgICBmaXJzdENoYW5nZWRMaW5lKys7XG4gICAgICB9XG5cbiAgICAgIC8vIEVuZCBhbHNvIGZyb20gdGhlIGVuZFxuICAgICAgbGV0IGxhc3RDaGFuZ2VkTGluZSA9IC0xO1xuICAgICAgd2hpbGUgKFxuICAgICAgICAtbGFzdENoYW5nZWRMaW5lIDwgdGhpcy5saW5lcy5sZW5ndGggJiZcbiAgICAgICAgLWxhc3RDaGFuZ2VkTGluZSA8IHRoaXMubGluZUVsZW1lbnRzLmxlbmd0aCAmJlxuICAgICAgICB0aGlzLmxpbmVzW3RoaXMubGluZXMubGVuZ3RoICsgbGFzdENoYW5nZWRMaW5lXSA9PVxuICAgICAgICAgIHRoaXMubGluZUVsZW1lbnRzW3RoaXMubGluZUVsZW1lbnRzLmxlbmd0aCArIGxhc3RDaGFuZ2VkTGluZV1cbiAgICAgICAgICAgIC50ZXh0Q29udGVudFxuICAgICAgKSB7XG4gICAgICAgIGxhc3RDaGFuZ2VkTGluZS0tO1xuICAgICAgfVxuXG4gICAgICBsZXQgbGluZXNUb0RlbGV0ZSA9XG4gICAgICAgIHRoaXMubGluZXMubGVuZ3RoICsgbGFzdENoYW5nZWRMaW5lICsgMSAtIGZpcnN0Q2hhbmdlZExpbmU7XG4gICAgICBpZiAobGluZXNUb0RlbGV0ZSA8IC1saW5lRGVsdGEpIGxpbmVzVG9EZWxldGUgPSAtbGluZURlbHRhO1xuICAgICAgaWYgKGxpbmVzVG9EZWxldGUgPCAwKSBsaW5lc1RvRGVsZXRlID0gMDtcblxuICAgICAgbGV0IGxpbmVzVG9BZGQgPSBbXTtcbiAgICAgIGZvciAobGV0IGwgPSAwOyBsIDwgbGluZXNUb0RlbGV0ZSArIGxpbmVEZWx0YTsgbCsrKSB7XG4gICAgICAgIGxpbmVzVG9BZGQucHVzaCh0aGlzLmxpbmVFbGVtZW50c1tmaXJzdENoYW5nZWRMaW5lICsgbF0udGV4dENvbnRlbnQpO1xuICAgICAgfVxuICAgICAgdGhpcy5zcGxpY2VMaW5lcyhmaXJzdENoYW5nZWRMaW5lLCBsaW5lc1RvRGVsZXRlLCBsaW5lc1RvQWRkLCBmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vIGxpbmVzIGFkZGVkIG9yIHJlbW92ZWRcbiAgICAgIGZvciAobGV0IGxpbmUgPSAwOyBsaW5lIDwgdGhpcy5saW5lRWxlbWVudHMubGVuZ3RoOyBsaW5lKyspIHtcbiAgICAgICAgbGV0IGUgPSB0aGlzLmxpbmVFbGVtZW50c1tsaW5lXTtcbiAgICAgICAgbGV0IGN0ID0gZS50ZXh0Q29udGVudDtcbiAgICAgICAgaWYgKHRoaXMubGluZXNbbGluZV0gIT09IGN0KSB7XG4gICAgICAgICAgLy8gTGluZSBjaGFuZ2VkLCB1cGRhdGUgaXRcbiAgICAgICAgICB0aGlzLmxpbmVzW2xpbmVdID0gY3Q7XG4gICAgICAgICAgdGhpcy5saW5lRGlydHlbbGluZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBhIG5ldyBwYXJhZ3JhcGguXG4gICAqIEBwYXJhbSBzZWwgVGhlIGN1cnJlbnQgc2VsZWN0aW9uXG4gICAqL1xuICBwcm9jZXNzTmV3UGFyYWdyYXBoKHNlbCkge1xuICAgIGlmICghc2VsKSByZXR1cm47XG5cbiAgICAvLyBVcGRhdGUgbGluZXMgZnJvbSBjb250ZW50XG4gICAgdGhpcy51cGRhdGVMaW5lQ29udGVudHMoKTtcblxuICAgIGxldCBjb250aW51YWJsZVR5cGUgPSBmYWxzZTtcbiAgICAvLyBMZXQncyBzZWUgaWYgd2UgbmVlZCB0byBjb250aW51ZSBhIGxpc3RcblxuICAgIGxldCBjaGVja0xpbmUgPSBzZWwuY29sID4gMCA/IHNlbC5yb3cgOiBzZWwucm93IC0gMTtcbiAgICBzd2l0Y2ggKHRoaXMubGluZVR5cGVzW2NoZWNrTGluZV0pIHtcbiAgICAgIGNhc2UgXCJUTVVMXCI6XG4gICAgICAgIGNvbnRpbnVhYmxlVHlwZSA9IFwiVE1VTFwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJUTU9MXCI6XG4gICAgICAgIGNvbnRpbnVhYmxlVHlwZSA9IFwiVE1PTFwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJUTUluZGVudGVkQ29kZVwiOlxuICAgICAgICBjb250aW51YWJsZVR5cGUgPSBcIlRNSW5kZW50ZWRDb2RlXCI7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGxldCBsaW5lcyA9IHRoaXMubGluZXNbc2VsLnJvd11cbiAgICAgIC5yZXBsYWNlKC9cXG5cXG4kLywgXCJcXG5cIilcbiAgICAgIC5zcGxpdCgvKD86XFxyXFxufFxcbnxcXHIpLyk7XG4gICAgaWYgKGxpbmVzLmxlbmd0aCA9PSAxKSB7XG4gICAgICAvLyBObyBuZXcgbGluZVxuICAgICAgdGhpcy51cGRhdGVGb3JtYXR0aW5nKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3BsaWNlTGluZXMoc2VsLnJvdywgMSwgbGluZXMsIHRydWUpO1xuICAgIHNlbC5yb3crKztcbiAgICBzZWwuY29sID0gMDtcblxuICAgIGlmIChjb250aW51YWJsZVR5cGUpIHtcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBwcmV2aW91cyBsaW5lIHdhcyBub24tZW1wdHlcbiAgICAgIGxldCBjYXB0dXJlID0gbGluZUdyYW1tYXJbY29udGludWFibGVUeXBlXS5yZWdleHAuZXhlYyhcbiAgICAgICAgdGhpcy5saW5lc1tzZWwucm93IC0gMV1cbiAgICAgICk7XG4gICAgICBpZiAoY2FwdHVyZSkge1xuICAgICAgICAvLyBDb252ZW50aW9uOiBjYXB0dXJlWzFdIGlzIHRoZSBsaW5lIHR5cGUgbWFya2VyLCBjYXB0dXJlWzJdIGlzIHRoZSBjb250ZW50XG4gICAgICAgIGlmIChjYXB0dXJlWzJdKSB7XG4gICAgICAgICAgLy8gUHJldmlvdXMgbGluZSBoYXMgY29udGVudCwgY29udGludWUgdGhlIGNvbnRpbnVhYmxlIHR5cGVcblxuICAgICAgICAgIC8vIEhhY2sgZm9yIE9MOiBpbmNyZW1lbnQgbnVtYmVyXG4gICAgICAgICAgaWYgKGNvbnRpbnVhYmxlVHlwZSA9PSBcIlRNT0xcIikge1xuICAgICAgICAgICAgY2FwdHVyZVsxXSA9IGNhcHR1cmVbMV0ucmVwbGFjZSgvXFxkezEsOX0vLCAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChyZXN1bHRbMF0pICsgMTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmxpbmVzW3NlbC5yb3ddID0gYCR7Y2FwdHVyZVsxXX0ke3RoaXMubGluZXNbc2VsLnJvd119YDtcbiAgICAgICAgICB0aGlzLmxpbmVEaXJ0eVtzZWwucm93XSA9IHRydWU7XG4gICAgICAgICAgc2VsLmNvbCA9IGNhcHR1cmVbMV0ubGVuZ3RoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFByZXZpb3VzIGxpbmUgaGFzIG5vIGNvbnRlbnQsIHJlbW92ZSB0aGUgY29udGludWFibGUgdHlwZSBmcm9tIHRoZSBwcmV2aW91cyByb3dcbiAgICAgICAgICB0aGlzLmxpbmVzW3NlbC5yb3cgLSAxXSA9IFwiXCI7XG4gICAgICAgICAgdGhpcy5saW5lRGlydHlbc2VsLnJvdyAtIDFdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgfVxuXG4gIC8vIC8qKlxuICAvLyAgKiBQcm9jZXNzZXMgYSBcImRlbGV0ZVwiIGlucHV0IGFjdGlvbi5cbiAgLy8gICogQHBhcmFtIHtvYmplY3R9IGZvY3VzIFRoZSBzZWxlY3Rpb25cbiAgLy8gICogQHBhcmFtIHtib29sZWFufSBmb3J3YXJkIElmIHRydWUsIHBlcmZvcm1zIGEgZm9yd2FyZCBkZWxldGUsIG90aGVyd2lzZSBwZXJmb3JtcyBhIGJhY2t3YXJkIGRlbGV0ZVxuICAvLyAgKi9cbiAgLy8gcHJvY2Vzc0RlbGV0ZShmb2N1cywgZm9yd2FyZCkge1xuICAvLyAgIGlmICghZm9jdXMpIHJldHVybjtcbiAgLy8gICBsZXQgYW5jaG9yID0gdGhpcy5nZXRTZWxlY3Rpb24odHJ1ZSk7XG4gIC8vICAgLy8gRG8gd2UgaGF2ZSBhIG5vbi1lbXB0eSBzZWxlY3Rpb24/XG4gIC8vICAgaWYgKGZvY3VzLmNvbCAhPSBhbmNob3IuY29sIHx8IGZvY3VzLnJvdyAhPSBhbmNob3Iucm93KSB7XG4gIC8vICAgICAvLyBub24tZW1wdHkuIGRpcmVjdGlvbiBkb2Vzbid0IG1hdHRlci5cbiAgLy8gICAgIHRoaXMucGFzdGUoJycsIGFuY2hvciwgZm9jdXMpO1xuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICBpZiAoZm9yd2FyZCkge1xuICAvLyAgICAgICBpZiAoZm9jdXMuY29sIDwgdGhpcy5saW5lc1tmb2N1cy5yb3ddLmxlbmd0aCkgdGhpcy5wYXN0ZSgnJywge3JvdzogZm9jdXMucm93LCBjb2w6IGZvY3VzLmNvbCArIDF9LCBmb2N1cyk7XG4gIC8vICAgICAgIGVsc2UgaWYgKGZvY3VzLmNvbCA8IHRoaXMubGluZXMubGVuZ3RoKSB0aGlzLnBhc3RlKCcnLCB7cm93OiBmb2N1cy5yb3cgKyAxLCBjb2w6IDB9LCBmb2N1cyk7XG4gIC8vICAgICAgIC8vIE90aGVyd2lzZSwgd2UncmUgYXQgdGhlIHZlcnkgZW5kIGFuZCBjYW4ndCBkZWxldGUgZm9yd2FyZFxuICAvLyAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgaWYgKGZvY3VzLmNvbCA+IDApIHRoaXMucGFzdGUoJycsIHtyb3c6IGZvY3VzLnJvdywgY29sOiBmb2N1cy5jb2wgLSAxfSwgZm9jdXMpO1xuICAvLyAgICAgICBlbHNlIGlmIChmb2N1cy5yb3cgPiAwKSB0aGlzLnBhc3RlKCcnLCB7cm93OiBmb2N1cy5yb3cgLSAxLCBjb2w6IHRoaXMubGluZXNbZm9jdXMucm93IC0gMV0ubGVuZ3RoIC0gMX0sIGZvY3VzKTtcbiAgLy8gICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSdyZSBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgYW5kIGNhbid0IGRlbGV0ZSBiYWNrd2FyZHNcbiAgLy8gICAgIH1cbiAgLy8gICB9XG5cbiAgLy8gfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSBzZWxlY3Rpb24gY291bnRlZCBieSByb3cgYW5kIGNvbHVtbiBvZiB0aGUgZWRpdG9yIE1hcmtkb3duIGNvbnRlbnQgKGFzIG9wcG9zZWQgdG8gdGhlIHBvc2l0aW9uIGluIHRoZSBET00pLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGdldEFuY2hvciBpZiBzZXQgdG8gdHJ1ZSwgZ2V0cyB0aGUgc2VsZWN0aW9uIGFuY2hvciAoc3RhcnQgcG9pbnQgb2YgdGhlIHNlbGVjdGlvbiksIG90aGVyd2lzZSBnZXRzIHRoZSBmb2N1cyAoZW5kIHBvaW50KS5cbiAgICogQHJldHVybiB7b2JqZWN0fSBBbiBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBzZWxlY3Rpb24sIHdpdGggcHJvcGVydGllcyBjb2wgYW5kIHJvdy5cbiAgICovXG4gIGdldFNlbGVjdGlvbihnZXRBbmNob3IgPSBmYWxzZSkge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICBsZXQgc3RhcnROb2RlID0gZ2V0QW5jaG9yID8gc2VsZWN0aW9uLmFuY2hvck5vZGUgOiBzZWxlY3Rpb24uZm9jdXNOb2RlO1xuICAgIGlmICghc3RhcnROb2RlKSByZXR1cm4gbnVsbDtcbiAgICBsZXQgb2Zmc2V0ID0gZ2V0QW5jaG9yID8gc2VsZWN0aW9uLmFuY2hvck9mZnNldCA6IHNlbGVjdGlvbi5mb2N1c09mZnNldDtcbiAgICBpZiAoc3RhcnROb2RlID09IHRoaXMuZSkge1xuICAgICAgaWYgKG9mZnNldCA9PSAwKSByZXR1cm4geyByb3c6IDAsIGNvbDogMCB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcm93OiBvZmZzZXQgLSAxLFxuICAgICAgICBjb2w6IHRoaXMubGluZXNbb2Zmc2V0IC0gMV0ubGVuZ3RoLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBsZXQgY29sID0gdGhpcy5jb21wdXRlQ29sdW1uKHN0YXJ0Tm9kZSwgb2Zmc2V0KTtcbiAgICBpZiAoY29sID09PSBudWxsKSByZXR1cm4gbnVsbDsgLy8gV2UgYXJlIG91dHNpZGUgb2YgdGhlIGVkaXRvclxuXG4gICAgLy8gRmluZCB0aGUgcm93IG5vZGVcbiAgICBsZXQgbm9kZSA9IHN0YXJ0Tm9kZTtcbiAgICB3aGlsZSAobm9kZS5wYXJlbnRFbGVtZW50ICE9IHRoaXMuZSkge1xuICAgICAgbm9kZSA9IG5vZGUucGFyZW50RWxlbWVudDtcbiAgICB9XG5cbiAgICBsZXQgcm93ID0gMDtcbiAgICAvLyBDaGVjayBpZiB3ZSBjYW4gcmVhZCBhIGxpbmUgbnVtYmVyIGZyb20gdGhlIGRhdGEtbGluZS1udW0gYXR0cmlidXRlLlxuICAgIC8vIFRoZSBsYXN0IGNvbmRpdGlvbiBpcyBhIHNlY3VyaXR5IG1lYXN1cmUgc2luY2UgaW5zZXJ0aW5nIGEgbmV3IHBhcmFncmFwaCBjb3BpZXMgdGhlIHByZXZpb3VzIHJvd3MnIGxpbmUgbnVtYmVyXG4gICAgaWYgKFxuICAgICAgbm9kZS5kYXRhc2V0ICYmXG4gICAgICBub2RlLmRhdGFzZXQubGluZU51bSAmJlxuICAgICAgKCFub2RlLnByZXZpb3VzU2libGluZyB8fFxuICAgICAgICBub2RlLnByZXZpb3VzU2libGluZy5kYXRhc2V0LmxpbmVOdW0gIT0gbm9kZS5kYXRhc2V0LmxpbmVOdW0pXG4gICAgKSB7XG4gICAgICByb3cgPSBwYXJzZUludChub2RlLmRhdGFzZXQubGluZU51bSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdoaWxlIChub2RlLnByZXZpb3VzU2libGluZykge1xuICAgICAgICByb3crKztcbiAgICAgICAgbm9kZSA9IG5vZGUucHJldmlvdXNTaWJsaW5nO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyByb3c6IHJvdywgY29sOiBjb2wsIG5vZGU6IHN0YXJ0Tm9kZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIGEgY29sdW1uIHdpdGhpbiBhbiBlZGl0b3IgbGluZSBmcm9tIGEgbm9kZSBhbmQgb2Zmc2V0IHdpdGhpbiB0aGF0IG5vZGUuXG4gICAqIEBwYXJhbSB7Tm9kZX0gc3RhcnROb2RlIFRoZSBub2RlXG4gICAqIEBwYXJhbSB7aW50fSBvZmZzZXQgVEhlIHNlbGVjdGlvblxuICAgKiBAcmV0dXJucyB7aW50fSB0aGUgY29sdW1uLCBvciBudWxsIGlmIHRoZSBub2RlIGlzIG5vdCBpbnNpZGUgdGhlIGVkaXRvclxuICAgKi9cbiAgY29tcHV0ZUNvbHVtbihzdGFydE5vZGUsIG9mZnNldCkge1xuICAgIGxldCBub2RlID0gc3RhcnROb2RlO1xuICAgIGxldCBjb2w7XG4gICAgLy8gRmlyc3QsIG1ha2Ugc3VyZSB3ZSdyZSBhY3R1YWxseSBpbiB0aGUgZWRpdG9yLlxuICAgIHdoaWxlIChub2RlICYmIG5vZGUucGFyZW50Tm9kZSAhPSB0aGlzLmUpIHtcbiAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgfVxuICAgIGlmIChub2RlID09IG51bGwpIHJldHVybiBudWxsO1xuXG4gICAgLy8gVGhlcmUgYXJlIHR3byB3YXlzIHRoYXQgb2Zmc2V0IGNhbiBiZSBkZWZpbmVkOlxuICAgIC8vIC0gRWl0aGVyLCB0aGUgbm9kZSBpcyBhIHRleHQgbm9kZSwgaW4gd2hpY2ggY2FzZSBpdCBpcyB0aGUgb2Zmc2V0IHdpdGhpbiB0aGUgdGV4dFxuICAgIC8vIC0gT3IsIHRoZSBub2RlIGlzIGFuIGVsZW1lbnQgd2l0aCBjaGlsZCBub3RlcywgaW4gd2hpY2ggY2FzZSB0aGUgb2Zmc2V0IHJlZmVycyB0byB0aGVcbiAgICAvLyAgIGNoaWxkIG5vZGUgYWZ0ZXIgd2hpY2ggdGhlIHNlbGVjdGlvbiBpcyBsb2NhdGVkXG4gICAgaWYgKHN0YXJ0Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgfHwgb2Zmc2V0ID09PSAwKSB7XG4gICAgICAvLyBJbiB0aGUgY2FzZSB0aGF0IHRoZSBub2RlIGlzIG5vbi10ZXh0IG5vZGUgYnV0IHRoZSBvZmZzZXQgaXMgMCxcbiAgICAgIC8vIFRoZSBzZWxlY3Rpb24gaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGF0IGVsZW1lbnQgc28gd2VcbiAgICAgIC8vIGNhbiBzaW1wbHkgdXNlIHRoZSBzYW1lIGFwcHJvYWNoIGFzIGlmIGl0IHdlcmUgYXQgdGhlIGJlZ2lubmluZ1xuICAgICAgLy8gb2YgYSB0ZXh0IG5vZGUuXG4gICAgICBjb2wgPSBvZmZzZXQ7XG4gICAgICBub2RlID0gc3RhcnROb2RlO1xuICAgIH0gZWxzZSBpZiAob2Zmc2V0ID4gMCkge1xuICAgICAgbm9kZSA9IHN0YXJ0Tm9kZS5jaGlsZE5vZGVzW29mZnNldCAtIDFdO1xuICAgICAgY29sID0gbm9kZS50ZXh0Q29udGVudC5sZW5ndGg7XG4gICAgfVxuICAgIHdoaWxlIChub2RlLnBhcmVudE5vZGUgIT0gdGhpcy5lKSB7XG4gICAgICBpZiAobm9kZS5wcmV2aW91c1NpYmxpbmcpIHtcbiAgICAgICAgbm9kZSA9IG5vZGUucHJldmlvdXNTaWJsaW5nO1xuICAgICAgICBjb2wgKz0gbm9kZS50ZXh0Q29udGVudC5sZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29sO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIERPTSBub2RlIGFuZCBvZmZzZXQgd2l0aGluIHRoYXQgbm9kZSBmcm9tIGEgcG9zaXRpb24gZXhwcmVzc2VkIGFzIHJvdyBhbmQgY29sdW1uLlxuICAgKiBAcGFyYW0ge2ludH0gcm93IFJvdyAobGluZSBudW1iZXIpXG4gICAqIEBwYXJhbSB7aW50fSBjb2wgQ29sdW1uXG4gICAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIHR3byBwcm9wZXJ0aWVzOiBub2RlIGFuZCBvZmZzZXQuIG9mZnNldCBtYXkgYmUgbnVsbDtcbiAgICovXG4gIGNvbXB1dGVOb2RlQW5kT2Zmc2V0KHJvdywgY29sLCBiaW5kUmlnaHQgPSBmYWxzZSkge1xuICAgIGlmIChyb3cgPj0gdGhpcy5saW5lRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAvLyBTZWxlY3Rpb24gcGFzdCB0aGUgZW5kIG9mIHRleHQsIHNldCBzZWxlY3Rpb24gdG8gZW5kIG9mIHRleHRcbiAgICAgIHJvdyA9IHRoaXMubGluZUVsZW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgICBjb2wgPSB0aGlzLmxpbmVzW3Jvd10ubGVuZ3RoO1xuICAgIH1cbiAgICBpZiAoY29sID4gdGhpcy5saW5lc1tyb3ddLmxlbmd0aCkge1xuICAgICAgY29sID0gdGhpcy5saW5lc1tyb3ddLmxlbmd0aDtcbiAgICB9XG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IHRoaXMubGluZUVsZW1lbnRzW3Jvd107XG4gICAgbGV0IG5vZGUgPSBwYXJlbnROb2RlLmZpcnN0Q2hpbGQ7XG5cbiAgICBsZXQgY2hpbGRyZW5Db21wbGV0ZSA9IGZhbHNlO1xuICAgIC8vIGRlZmF1bHQgcmV0dXJuIHZhbHVlXG4gICAgbGV0IHJ2ID0ge1xuICAgICAgbm9kZTogcGFyZW50Tm9kZS5maXJzdENoaWxkID8gcGFyZW50Tm9kZS5maXJzdENoaWxkIDogcGFyZW50Tm9kZSxcbiAgICAgIG9mZnNldDogMCxcbiAgICB9O1xuXG4gICAgd2hpbGUgKG5vZGUgIT0gcGFyZW50Tm9kZSkge1xuICAgICAgaWYgKCFjaGlsZHJlbkNvbXBsZXRlICYmIG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICAgIGlmIChub2RlLm5vZGVWYWx1ZS5sZW5ndGggPj0gY29sKSB7XG4gICAgICAgICAgaWYgKGJpbmRSaWdodCAmJiBub2RlLm5vZGVWYWx1ZS5sZW5ndGggPT0gY29sKSB7XG4gICAgICAgICAgICAvLyBTZWxlY3Rpb24gaXMgYXQgdGhlIGVuZCBvZiB0aGlzIHRleHQgbm9kZSwgYnV0IHdlIGFyZSBiaW5kaW5nIHJpZ2h0IChwcmVmZXIgYW4gb2Zmc2V0IG9mIDAgaW4gdGhlIG5leHQgdGV4dCBub2RlKVxuICAgICAgICAgICAgLy8gUmVtZW1iZXIgcmV0dXJuIHZhbHVlIGluIGNhc2Ugd2UgZG9uJ3QgZmluZCBhbm90aGVyIHRleHQgbm9kZVxuICAgICAgICAgICAgcnYgPSB7IG5vZGU6IG5vZGUsIG9mZnNldDogY29sIH07XG4gICAgICAgICAgICBjb2wgPSAwO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4geyBub2RlOiBub2RlLCBvZmZzZXQ6IGNvbCB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2wgLT0gbm9kZS5ub2RlVmFsdWUubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWNoaWxkcmVuQ29tcGxldGUgJiYgbm9kZS5maXJzdENoaWxkKSB7XG4gICAgICAgIG5vZGUgPSBub2RlLmZpcnN0Q2hpbGQ7XG4gICAgICB9IGVsc2UgaWYgKG5vZGUubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgY2hpbGRyZW5Db21wbGV0ZSA9IGZhbHNlO1xuICAgICAgICBub2RlID0gbm9kZS5uZXh0U2libGluZztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoaWxkcmVuQ29tcGxldGUgPSB0cnVlO1xuICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEVpdGhlciwgdGhlIHBvc2l0aW9uIHdhcyBpbnZhbGlkIGFuZCB3ZSBqdXN0IHJldHVybiB0aGUgZGVmYXVsdCByZXR1cm4gdmFsdWVcbiAgICAvLyBPciB3ZSBhcmUgYmluZGluZyByaWdodCBhbmQgdGhlIHNlbGVjdGlvbiBpcyBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lXG4gICAgcmV0dXJuIHJ2O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNlbGVjdGlvbiBiYXNlZCBvbiByb3dzIGFuZCBjb2x1bW5zIHdpdGhpbiB0aGUgZWRpdG9yIE1hcmtkb3duIGNvbnRlbnQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmb2N1cyBPYmplY3QgcmVwcmVzZW50aW5nIHRoZSBzZWxlY3Rpb24sIG5lZWRzIHRvIGhhdmUgcHJvcGVydGllcyByb3cgYW5kIGNvbC5cbiAgICogQHBhcmFtIGFuY2hvciBBbmNob3Igb2YgdGhlIHNlbGVjdGlvbi4gSWYgbm90IGdpdmVuLCBhc3N1bWVzIHRoZSBjdXJyZW50IGFuY2hvci5cbiAgICovXG4gIHNldFNlbGVjdGlvbihmb2N1cywgYW5jaG9yID0gbnVsbCkge1xuICAgIGlmICghZm9jdXMpIHJldHVybjtcblxuICAgIGxldCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG5cbiAgICBsZXQgeyBub2RlOiBmb2N1c05vZGUsIG9mZnNldDogZm9jdXNPZmZzZXQgfSA9IHRoaXMuY29tcHV0ZU5vZGVBbmRPZmZzZXQoXG4gICAgICBmb2N1cy5yb3csXG4gICAgICBmb2N1cy5jb2wsXG4gICAgICBhbmNob3IgJiYgYW5jaG9yLnJvdyA9PSBmb2N1cy5yb3cgJiYgYW5jaG9yLmNvbCA+IGZvY3VzLmNvbFxuICAgICk7IC8vIEJpbmQgc2VsZWN0aW9uIHJpZ2h0IGlmIGFuY2hvciBpcyBpbiB0aGUgc2FtZSByb3cgYW5kIGJlaGluZCB0aGUgZm9jdXNcbiAgICBsZXQgYW5jaG9yTm9kZSA9IG51bGwsXG4gICAgICBhbmNob3JPZmZzZXQgPSBudWxsO1xuICAgIGlmIChhbmNob3IgJiYgKGFuY2hvci5yb3cgIT0gZm9jdXMucm93IHx8IGFuY2hvci5jb2wgIT0gZm9jdXMuY29sKSkge1xuICAgICAgbGV0IHsgbm9kZSwgb2Zmc2V0IH0gPSB0aGlzLmNvbXB1dGVOb2RlQW5kT2Zmc2V0KFxuICAgICAgICBhbmNob3Iucm93LFxuICAgICAgICBhbmNob3IuY29sLFxuICAgICAgICBmb2N1cy5yb3cgPT0gYW5jaG9yLnJvdyAmJiBmb2N1cy5jb2wgPiBhbmNob3IuY29sXG4gICAgICApO1xuICAgICAgYW5jaG9yTm9kZSA9IG5vZGU7XG4gICAgICBhbmNob3JPZmZzZXQgPSBvZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKGFuY2hvck5vZGUpIHJhbmdlLnNldFN0YXJ0KGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCk7XG4gICAgZWxzZSByYW5nZS5zZXRTdGFydChmb2N1c05vZGUsIGZvY3VzT2Zmc2V0KTtcbiAgICByYW5nZS5zZXRFbmQoZm9jdXNOb2RlLCBmb2N1c09mZnNldCk7XG5cbiAgICBsZXQgd2luZG93U2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgIHdpbmRvd1NlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICB3aW5kb3dTZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2ZW50IGhhbmRsZXIgZm9yIGlucHV0IGV2ZW50c1xuICAgKi9cbiAgaGFuZGxlSW5wdXRFdmVudChldmVudCkge1xuICAgIC8vIEZvciBjb21wb3NpdGlvbiBpbnB1dCwgd2UgYXJlIG9ubHkgdXBkYXRpbmcgdGhlIHRleHQgYWZ0ZXIgd2UgaGF2ZSByZWNlaXZlZFxuICAgIC8vIGEgY29tcG9zaXRpb25lbmQgZXZlbnQsIHNvIHdlIHJldHVybiB1cG9uIGluc2VydENvbXBvc2l0aW9uVGV4dC5cbiAgICAvLyBPdGhlcndpc2UsIHRoZSBET00gY2hhbmdlcyBicmVhayB0aGUgdGV4dCBpbnB1dC5cbiAgICBpZiAoZXZlbnQuaW5wdXRUeXBlID09IFwiaW5zZXJ0Q29tcG9zaXRpb25UZXh0XCIpIHJldHVybjtcblxuICAgIGxldCBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoXG4gICAgICAoZXZlbnQuaW5wdXRUeXBlID09IFwiaW5zZXJ0UGFyYWdyYXBoXCIgfHxcbiAgICAgICAgZXZlbnQuaW5wdXRUeXBlID09IFwiaW5zZXJ0TGluZUJyZWFrXCIpICYmXG4gICAgICBmb2N1c1xuICAgICkge1xuICAgICAgdGhpcy5jbGVhckRpcnR5RmxhZygpO1xuICAgICAgdGhpcy5wcm9jZXNzTmV3UGFyYWdyYXBoKGZvY3VzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLmUuZmlyc3RDaGlsZCkge1xuICAgICAgICB0aGlzLmUuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9XCJUTUJsYW5rTGluZVwiPjxicj48L2Rpdj4nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maXhOb2RlSGllcmFyY2h5KCk7XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZUxpbmVDb250ZW50c0FuZEZvcm1hdHRpbmcoKTtcbiAgICB9XG4gICAgaWYgKGZvY3VzKSB7XG4gICAgICB0aGlzLnNldFNlbGVjdGlvbihmb2N1cyk7XG4gICAgfVxuXG4gICAgdGhpcy5maXJlQ2hhbmdlKCk7XG4gIH1cblxuICAvKipcbiAgICogRml4ZXMgdGhlIG5vZGUgaGllcmFyY2h5IOKAkyBtYWtlcyBzdXJlIHRoYXQgZWFjaCBsaW5lIGlzIGluIGEgZGl2LCBhbmQgdGhlcmUgYXJlIG5vIG5lc3RlZCBkaXZzXG4gICAqL1xuICBmaXhOb2RlSGllcmFyY2h5KCkge1xuICAgIGNvbnN0IG9yaWdpbmFsQ2hpbGRyZW4gPSBBcnJheS5mcm9tKHRoaXMuZS5jaGlsZE5vZGVzKTtcblxuICAgIGNvbnN0IHJlcGxhY2VDaGlsZCA9IChjaGlsZCwgLi4ubmV3Q2hpbGRyZW4pID0+IHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IGNoaWxkLnBhcmVudEVsZW1lbnQ7XG4gICAgICBjb25zdCBuZXh0U2libGluZyA9IGNoaWxkLm5leHRTaWJsaW5nO1xuICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKGNoaWxkKTtcbiAgICAgIG5ld0NoaWxkcmVuLmZvckVhY2goKG5ld0NoaWxkKSA9PlxuICAgICAgICBuZXh0U2libGluZ1xuICAgICAgICAgID8gcGFyZW50Lmluc2VydEJlZm9yZShuZXh0U2libGluZywgbmV3Q2hpbGQpXG4gICAgICAgICAgOiBwYXJlbnQuYXBwZW5kQ2hpbGQobmV3Q2hpbGQpXG4gICAgICApO1xuICAgIH07XG5cbiAgICBvcmlnaW5hbENoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICBpZiAoY2hpbGQubm9kZVR5cGUgIT09IE5vZGUuRUxFTUVOVF9OT0RFIHx8IGNoaWxkLnRhZ05hbWUgIT09IFwiRElWXCIpIHtcbiAgICAgICAgLy8gRm91bmQgYSBjaGlsZCBub2RlIHRoYXQncyBlaXRoZXIgbm90IGFuIGVsZW1lbnQgb3Igbm90IGEgZGl2LiBXcmFwIGl0IGluIGEgZGl2LlxuICAgICAgICBjb25zdCBkaXZXcmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgcmVwbGFjZUNoaWxkKGNoaWxkLCBkaXZXcmFwcGVyKTtcbiAgICAgICAgZGl2V3JhcHBlci5hcHBlbmRDaGlsZChjaGlsZCk7XG4gICAgICB9IGVsc2UgaWYgKGNoaWxkLmNoaWxkTm9kZXMubGVuZ3RoID09IDApIHtcbiAgICAgICAgLy8gRW1wdHkgZGl2IGNoaWxkIG5vZGUsIGluY2x1ZGUgYXQgbGVhc3QgYSA8YnIgLz5cbiAgICAgICAgY2hpbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJyXCIpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGdyYW5kQ2hpbGRyZW4gPSBBcnJheS5mcm9tKGNoaWxkLmNoaWxkTm9kZXMpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZ3JhbmRDaGlsZHJlbi5zb21lKFxuICAgICAgICAgICAgKGdyYW5kQ2hpbGQpID0+XG4gICAgICAgICAgICAgIGdyYW5kQ2hpbGQubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmXG4gICAgICAgICAgICAgIGdyYW5kQ2hpbGQudGFnTmFtZSA9PT0gXCJESVZcIlxuICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHJlcGxhY2VDaGlsZChjaGlsZCwgZ3JhbmRDaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBoYW5kbGVyIGZvciBcInNlbGVjdGlvbmNoYW5nZVwiIGV2ZW50cy5cbiAgICovXG4gIGhhbmRsZVNlbGVjdGlvbkNoYW5nZUV2ZW50KCkge1xuICAgIHRoaXMuZmlyZVNlbGVjdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIFwic3BsaWNlXCIgbmV3IGxpbmVzIGludG8gdGhlIGFycmF5cyB0aGlzLmxpbmVzLCB0aGlzLmxpbmVEaXJ0eSwgdGhpcy5saW5lVHlwZXMsIGFuZCB0aGUgRE9NIGVsZW1lbnRzXG4gICAqIHVuZGVybmVhdGggdGhlIGVkaXRvciBlbGVtZW50LlxuICAgKiBUaGlzIG1ldGhvZCBpcyBlc3NlbnRpYWxseSBBcnJheS5zcGxpY2UsIG9ubHkgdGhhdCB0aGUgdGhpcmQgcGFyYW1ldGVyIHRha2VzIGFuIHVuLXNwcmVhZCBhcnJheSAoYW5kIHRoZSBmb3J0aCBwYXJhbWV0ZXIpXG4gICAqIGRldGVybWluZXMgd2hldGhlciB0aGUgRE9NIHNob3VsZCBhbHNvIGJlIGFkanVzdGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge2ludH0gc3RhcnRMaW5lIFBvc2l0aW9uIGF0IHdoaWNoIHRvIHN0YXJ0IGNoYW5naW5nIHRoZSBhcnJheSBvZiBsaW5lc1xuICAgKiBAcGFyYW0ge2ludH0gbGluZXNUb0RlbGV0ZSBOdW1iZXIgb2YgbGluZXMgdG8gZGVsZXRlXG4gICAqIEBwYXJhbSB7YXJyYXl9IGxpbmVzVG9JbnNlcnQgQXJyYXkgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIGxpbmVzIHRvIGJlIGluc2VydGVkXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gYWRqdXN0TGluZUVsZW1lbnRzIElmIHRydWUsIHRoZW4gPGRpdj4gZWxlbWVudHMgYXJlIGFsc28gaW5zZXJ0ZWQgaW4gdGhlIERPTSBhdCB0aGUgcmVzcGVjdGl2ZSBwb3NpdGlvblxuICAgKi9cbiAgc3BsaWNlTGluZXMoXG4gICAgc3RhcnRMaW5lLFxuICAgIGxpbmVzVG9EZWxldGUgPSAwLFxuICAgIGxpbmVzVG9JbnNlcnQgPSBbXSxcbiAgICBhZGp1c3RMaW5lRWxlbWVudHMgPSB0cnVlXG4gICkge1xuICAgIGlmIChhZGp1c3RMaW5lRWxlbWVudHMpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXNUb0RlbGV0ZTsgaSsrKSB7XG4gICAgICAgIHRoaXMuZS5yZW1vdmVDaGlsZCh0aGlzLmUuY2hpbGROb2Rlc1tzdGFydExpbmVdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgaW5zZXJ0ZWRCbGFuayA9IFtdO1xuICAgIGxldCBpbnNlcnRlZERpcnR5ID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzVG9JbnNlcnQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGluc2VydGVkQmxhbmsucHVzaChcIlwiKTtcbiAgICAgIGluc2VydGVkRGlydHkucHVzaCh0cnVlKTtcbiAgICAgIGlmIChhZGp1c3RMaW5lRWxlbWVudHMpIHtcbiAgICAgICAgaWYgKHRoaXMuZS5jaGlsZE5vZGVzW3N0YXJ0TGluZV0pXG4gICAgICAgICAgdGhpcy5lLmluc2VydEJlZm9yZShcbiAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksXG4gICAgICAgICAgICB0aGlzLmUuY2hpbGROb2Rlc1tzdGFydExpbmVdXG4gICAgICAgICAgKTtcbiAgICAgICAgZWxzZSB0aGlzLmUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5saW5lcy5zcGxpY2Uoc3RhcnRMaW5lLCBsaW5lc1RvRGVsZXRlLCAuLi5saW5lc1RvSW5zZXJ0KTtcbiAgICB0aGlzLmxpbmVUeXBlcy5zcGxpY2Uoc3RhcnRMaW5lLCBsaW5lc1RvRGVsZXRlLCAuLi5pbnNlcnRlZEJsYW5rKTtcbiAgICB0aGlzLmxpbmVEaXJ0eS5zcGxpY2Uoc3RhcnRMaW5lLCBsaW5lc1RvRGVsZXRlLCAuLi5pbnNlcnRlZERpcnR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBoYW5kbGVyIGZvciB0aGUgXCJwYXN0ZVwiIGV2ZW50XG4gICAqL1xuICBoYW5kbGVQYXN0ZShldmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyBnZXQgdGV4dCByZXByZXNlbnRhdGlvbiBvZiBjbGlwYm9hcmRcbiAgICBsZXQgdGV4dCA9IChldmVudC5vcmlnaW5hbEV2ZW50IHx8IGV2ZW50KS5jbGlwYm9hcmREYXRhLmdldERhdGEoXG4gICAgICBcInRleHQvcGxhaW5cIlxuICAgICk7XG5cbiAgICAvLyBpbnNlcnQgdGV4dCBtYW51YWxseVxuICAgIHRoaXMucGFzdGUodGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogUGFzdGVzIHRoZSB0ZXh0IGF0IHRoZSBjdXJyZW50IHNlbGVjdGlvbiAob3IgYXQgdGhlIGVuZCwgaWYgbm8gY3VycmVudCBzZWxlY3Rpb24pXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0XG4gICAqL1xuICBwYXN0ZSh0ZXh0LCBhbmNob3IgPSBudWxsLCBmb2N1cyA9IG51bGwpIHtcbiAgICBpZiAoIWFuY2hvcikgYW5jaG9yID0gdGhpcy5nZXRTZWxlY3Rpb24odHJ1ZSk7XG4gICAgaWYgKCFmb2N1cykgZm9jdXMgPSB0aGlzLmdldFNlbGVjdGlvbihmYWxzZSk7XG4gICAgbGV0IGJlZ2lubmluZywgZW5kO1xuICAgIGlmICghZm9jdXMpIHtcbiAgICAgIGZvY3VzID0ge1xuICAgICAgICByb3c6IHRoaXMubGluZXMubGVuZ3RoIC0gMSxcbiAgICAgICAgY29sOiB0aGlzLmxpbmVzW3RoaXMubGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoLFxuICAgICAgfTsgLy8gSW5zZXJ0IGF0IGVuZFxuICAgIH1cbiAgICBpZiAoIWFuY2hvcikge1xuICAgICAgYW5jaG9yID0gZm9jdXM7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGFuY2hvci5yb3cgPCBmb2N1cy5yb3cgfHxcbiAgICAgIChhbmNob3Iucm93ID09IGZvY3VzLnJvdyAmJiBhbmNob3IuY29sIDw9IGZvY3VzLmNvbClcbiAgICApIHtcbiAgICAgIGJlZ2lubmluZyA9IGFuY2hvcjtcbiAgICAgIGVuZCA9IGZvY3VzO1xuICAgIH0gZWxzZSB7XG4gICAgICBiZWdpbm5pbmcgPSBmb2N1cztcbiAgICAgIGVuZCA9IGFuY2hvcjtcbiAgICB9XG4gICAgbGV0IGluc2VydGVkTGluZXMgPSB0ZXh0LnNwbGl0KC8oPzpcXHJcXG58XFxyfFxcbikvKTtcbiAgICBsZXQgbGluZUJlZm9yZSA9IHRoaXMubGluZXNbYmVnaW5uaW5nLnJvd10uc3Vic3RyKDAsIGJlZ2lubmluZy5jb2wpO1xuICAgIGxldCBsaW5lRW5kID0gdGhpcy5saW5lc1tlbmQucm93XS5zdWJzdHIoZW5kLmNvbCk7XG4gICAgaW5zZXJ0ZWRMaW5lc1swXSA9IGxpbmVCZWZvcmUuY29uY2F0KGluc2VydGVkTGluZXNbMF0pO1xuICAgIGxldCBlbmRDb2xQb3MgPSBpbnNlcnRlZExpbmVzW2luc2VydGVkTGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoO1xuICAgIGluc2VydGVkTGluZXNbaW5zZXJ0ZWRMaW5lcy5sZW5ndGggLSAxXSA9XG4gICAgICBpbnNlcnRlZExpbmVzW2luc2VydGVkTGluZXMubGVuZ3RoIC0gMV0uY29uY2F0KGxpbmVFbmQpO1xuICAgIHRoaXMuc3BsaWNlTGluZXMoYmVnaW5uaW5nLnJvdywgMSArIGVuZC5yb3cgLSBiZWdpbm5pbmcucm93LCBpbnNlcnRlZExpbmVzKTtcbiAgICBmb2N1cy5yb3cgPSBiZWdpbm5pbmcucm93ICsgaW5zZXJ0ZWRMaW5lcy5sZW5ndGggLSAxO1xuICAgIGZvY3VzLmNvbCA9IGVuZENvbFBvcztcbiAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgICB0aGlzLnNldFNlbGVjdGlvbihmb2N1cyk7XG4gICAgdGhpcy5maXJlQ2hhbmdlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgdGhlIChsb3dlc3QgaW4gdGhlIERPTSB0cmVlKSBjb21tb24gYW5jZXN0b3Igb2YgdHdvIERPTSBub2Rlcy5cbiAgICogQHBhcmFtIHtOb2RlfSBub2RlMSB0aGUgZmlyc3Qgbm9kZVxuICAgKiBAcGFyYW0ge05vZGV9IG5vZGUyIHRoZSBzZWNvbmQgbm9kZVxuICAgKiBAcmV0dXJucyB7Tm9kZX0gVGhlIGNvbW1lbiBhbmNlc3RvciBub2RlLCBvciBudWxsIGlmIHRoZXJlIGlzIG5vIGNvbW1vbiBhbmNlc3RvclxuICAgKi9cbiAgY29tcHV0ZUNvbW1vbkFuY2VzdG9yKG5vZGUxLCBub2RlMikge1xuICAgIGlmICghbm9kZTEgfHwgIW5vZGUyKSByZXR1cm4gbnVsbDtcbiAgICBpZiAobm9kZTEgPT0gbm9kZTIpIHJldHVybiBub2RlMTtcbiAgICBjb25zdCBhbmNlc3RyeSA9IChub2RlKSA9PiB7XG4gICAgICBsZXQgYW5jZXN0cnkgPSBbXTtcbiAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgIGFuY2VzdHJ5LnVuc2hpZnQobm9kZSk7XG4gICAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICB9XG4gICAgICByZXR1cm4gYW5jZXN0cnk7XG4gICAgfTtcblxuICAgIGNvbnN0IGFuY2VzdHJ5MSA9IGFuY2VzdHJ5KG5vZGUxKTtcbiAgICBjb25zdCBhbmNlc3RyeTIgPSBhbmNlc3RyeShub2RlMik7XG5cbiAgICBpZiAoYW5jZXN0cnkxWzBdICE9IGFuY2VzdHJ5MlswXSkgcmV0dXJuIG51bGw7XG4gICAgbGV0IGk7XG4gICAgZm9yIChpID0gMDsgYW5jZXN0cnkxW2ldID09IGFuY2VzdHJ5MltpXTsgaSsrKTtcbiAgICByZXR1cm4gYW5jZXN0cnkxW2kgLSAxXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgKGxvd2VzdCBpbiB0aGUgRE9NIHRyZWUpIGVuY2xvc2luZyBET00gbm9kZSB3aXRoIGEgZ2l2ZW4gY2xhc3MuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmb2N1cyBUaGUgZm9jdXMgc2VsZWN0aW9uIG9iamVjdFxuICAgKiBAcGFyYW0ge29iamVjdH0gYW5jaG9yIFRoZSBhbmNob3Igc2VsZWN0aW9uIG9iamVjdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lIFRoZSBjbGFzcyBuYW1lIHRvIGZpbmRcbiAgICogQHJldHVybnMge05vZGV9IFRoZSBlbmNsb3NpbmcgRE9NIG5vZGUgd2l0aCB0aGUgcmVzcGVjdGl2ZSBjbGFzcyAoaW5zaWRlIHRoZSBlZGl0b3IpLCBpZiB0aGVyZSBpcyBvbmU7IG51bGwgb3RoZXJ3aXNlLlxuICAgKi9cbiAgY29tcHV0ZUVuY2xvc2luZ01hcmt1cE5vZGUoZm9jdXMsIGFuY2hvciwgY2xhc3NOYW1lKSB7XG4gICAgbGV0IG5vZGUgPSBudWxsO1xuICAgIGlmICghZm9jdXMpIHJldHVybiBudWxsO1xuICAgIGlmICghYW5jaG9yKSB7XG4gICAgICBub2RlID0gZm9jdXMubm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGZvY3VzLnJvdyAhPSBhbmNob3Iucm93KSByZXR1cm4gbnVsbDtcbiAgICAgIG5vZGUgPSB0aGlzLmNvbXB1dGVDb21tb25BbmNlc3Rvcihmb2N1cy5ub2RlLCBhbmNob3Iubm9kZSk7XG4gICAgfVxuICAgIGlmICghbm9kZSkgcmV0dXJuIG51bGw7XG4gICAgd2hpbGUgKG5vZGUgIT0gdGhpcy5lKSB7XG4gICAgICBpZiAobm9kZS5jbGFzc05hbWUgJiYgbm9kZS5jbGFzc05hbWUuaW5jbHVkZXMoY2xhc3NOYW1lKSkgcmV0dXJuIG5vZGU7XG4gICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgIH1cbiAgICAvLyBBc2NlbmRlZCBhbGwgdGhlIHdheSB0byB0aGUgZWRpdG9yIGVsZW1lbnRcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzdGF0ZSAodHJ1ZSAvIGZhbHNlKSBvZiBhbGwgY29tbWFuZHMuXG4gICAqIEBwYXJhbSBmb2N1cyBGb2N1cyBvZiB0aGUgc2VsZWN0aW9uLiBJZiBub3QgZ2l2ZW4sIGFzc3VtZXMgdGhlIGN1cnJlbnQgZm9jdXMuXG4gICAqIEBwYXJhbSBhbmNob3IgQW5jaG9yIG9mIHRoZSBzZWxlY3Rpb24uIElmIG5vdCBnaXZlbiwgYXNzdW1lcyB0aGUgY3VycmVudCBhbmNob3IuXG4gICAqL1xuICBnZXRDb21tYW5kU3RhdGUoZm9jdXMgPSBudWxsLCBhbmNob3IgPSBudWxsKSB7XG4gICAgbGV0IGNvbW1hbmRTdGF0ZSA9IHt9O1xuICAgIGlmICghZm9jdXMpIGZvY3VzID0gdGhpcy5nZXRTZWxlY3Rpb24oZmFsc2UpO1xuICAgIGlmICghYW5jaG9yKSBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICBpZiAoIWZvY3VzKSB7XG4gICAgICBmb3IgKGxldCBjbWQgaW4gY29tbWFuZHMpIHtcbiAgICAgICAgY29tbWFuZFN0YXRlW2NtZF0gPSBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbW1hbmRTdGF0ZTtcbiAgICB9XG4gICAgaWYgKCFhbmNob3IpIGFuY2hvciA9IGZvY3VzO1xuXG4gICAgbGV0IHN0YXJ0LCBlbmQ7XG4gICAgaWYgKFxuICAgICAgYW5jaG9yLnJvdyA8IGZvY3VzLnJvdyB8fFxuICAgICAgKGFuY2hvci5yb3cgPT0gZm9jdXMucm93ICYmIGFuY2hvci5jb2wgPCBmb2N1cy5jb2wpXG4gICAgKSB7XG4gICAgICBzdGFydCA9IGFuY2hvcjtcbiAgICAgIGVuZCA9IGZvY3VzO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGFydCA9IGZvY3VzO1xuICAgICAgZW5kID0gYW5jaG9yO1xuICAgIH1cbiAgICBpZiAoZW5kLnJvdyA+IHN0YXJ0LnJvdyAmJiBlbmQuY29sID09IDApIHtcbiAgICAgIGVuZC5yb3ctLTtcbiAgICAgIGVuZC5jb2wgPSB0aGlzLmxpbmVzW2VuZC5yb3ddLmxlbmd0aDsgLy8gU2VsZWN0aW9uIHRvIGJlZ2lubmluZyBvZiBuZXh0IGxpbmUgaXMgc2FpZCB0byBlbmQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGFzdCBsaW5lXG4gICAgfVxuXG4gICAgZm9yIChsZXQgY21kIGluIGNvbW1hbmRzKSB7XG4gICAgICBpZiAoY29tbWFuZHNbY21kXS50eXBlID09IFwiaW5saW5lXCIpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFmb2N1cyB8fFxuICAgICAgICAgIGZvY3VzLnJvdyAhPSBhbmNob3Iucm93IHx8XG4gICAgICAgICAgIXRoaXMuaXNJbmxpbmVGb3JtYXR0aW5nQWxsb3dlZChmb2N1cywgYW5jaG9yKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb21tYW5kU3RhdGVbY21kXSA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVGhlIGNvbW1hbmQgc3RhdGUgaXMgdHJ1ZSBpZiB0aGVyZSBpcyBhIHJlc3BlY3RpdmUgZW5jbG9zaW5nIG1hcmt1cCBub2RlIChlLmcuLCB0aGUgc2VsZWN0aW9uIGlzIGVuY2xvc2VkIGluIGEgPGI+Li48L2I+KSAuLi5cbiAgICAgICAgICBjb21tYW5kU3RhdGVbY21kXSA9XG4gICAgICAgICAgICAhIXRoaXMuY29tcHV0ZUVuY2xvc2luZ01hcmt1cE5vZGUoXG4gICAgICAgICAgICAgIGZvY3VzLFxuICAgICAgICAgICAgICBhbmNob3IsXG4gICAgICAgICAgICAgIGNvbW1hbmRzW2NtZF0uY2xhc3NOYW1lXG4gICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAvLyAuLi4gb3IgaWYgaXQncyBhbiBlbXB0eSBzdHJpbmcgcHJlY2VkZWQgYnkgYW5kIGZvbGxvd2VkIGJ5IGZvcm1hdHRpbmcgbWFya2VycywgZS5nLiAqKnwqKiB3aGVyZSB8IGlzIHRoZSBjdXJzb3JcbiAgICAgICAgICAgIChmb2N1cy5jb2wgPT0gYW5jaG9yLmNvbCAmJlxuICAgICAgICAgICAgICAhIXRoaXMubGluZXNbZm9jdXMucm93XVxuICAgICAgICAgICAgICAgIC5zdWJzdHIoMCwgZm9jdXMuY29sKVxuICAgICAgICAgICAgICAgIC5tYXRjaChjb21tYW5kc1tjbWRdLnVuc2V0LnByZVBhdHRlcm4pICYmXG4gICAgICAgICAgICAgICEhdGhpcy5saW5lc1tmb2N1cy5yb3ddXG4gICAgICAgICAgICAgICAgLnN1YnN0cihmb2N1cy5jb2wpXG4gICAgICAgICAgICAgICAgLm1hdGNoKGNvbW1hbmRzW2NtZF0udW5zZXQucG9zdFBhdHRlcm4pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNvbW1hbmRzW2NtZF0udHlwZSA9PSBcImxpbmVcIikge1xuICAgICAgICBpZiAoIWZvY3VzKSB7XG4gICAgICAgICAgY29tbWFuZFN0YXRlW2NtZF0gPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBzdGF0ZSA9IHRoaXMubGluZVR5cGVzW3N0YXJ0LnJvd10gPT0gY29tbWFuZHNbY21kXS5jbGFzc05hbWU7XG5cbiAgICAgICAgICBmb3IgKGxldCBsaW5lID0gc3RhcnQucm93OyBsaW5lIDw9IGVuZC5yb3c7IGxpbmUrKykge1xuICAgICAgICAgICAgaWYgKCh0aGlzLmxpbmVUeXBlc1tsaW5lXSA9PSBjb21tYW5kc1tjbWRdLmNsYXNzTmFtZSkgIT0gc3RhdGUpIHtcbiAgICAgICAgICAgICAgc3RhdGUgPSBudWxsO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29tbWFuZFN0YXRlW2NtZF0gPSBzdGF0ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29tbWFuZFN0YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYSBjb21tYW5kIHN0YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb21tYW5kXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhdGVcbiAgICovXG4gIHNldENvbW1hbmRTdGF0ZShjb21tYW5kLCBzdGF0ZSkge1xuICAgIGlmIChjb21tYW5kc1tjb21tYW5kXS50eXBlID09IFwiaW5saW5lXCIpIHtcbiAgICAgIGxldCBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICAgIGxldCBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKGZhbHNlKTtcbiAgICAgIGlmICghYW5jaG9yKSBhbmNob3IgPSBmb2N1cztcbiAgICAgIGlmICghYW5jaG9yKSByZXR1cm47XG4gICAgICBpZiAoYW5jaG9yLnJvdyAhPSBmb2N1cy5yb3cpIHJldHVybjtcbiAgICAgIGlmICghdGhpcy5pc0lubGluZUZvcm1hdHRpbmdBbGxvd2VkKGZvY3VzLCBhbmNob3IpKSByZXR1cm47XG4gICAgICBsZXQgbWFya3VwTm9kZSA9IHRoaXMuY29tcHV0ZUVuY2xvc2luZ01hcmt1cE5vZGUoXG4gICAgICAgIGZvY3VzLFxuICAgICAgICBhbmNob3IsXG4gICAgICAgIGNvbW1hbmRzW2NvbW1hbmRdLmNsYXNzTmFtZVxuICAgICAgKTtcbiAgICAgIHRoaXMuY2xlYXJEaXJ0eUZsYWcoKTtcblxuICAgICAgLy8gRmlyc3QgY2FzZTogVGhlcmUncyBhbiBlbmNsb3NpbmcgbWFya3VwIG5vZGUsIHJlbW92ZSB0aGUgbWFya2VycyBhcm91bmQgdGhhdCBtYXJrdXAgbm9kZVxuICAgICAgaWYgKG1hcmt1cE5vZGUpIHtcbiAgICAgICAgdGhpcy5saW5lRGlydHlbZm9jdXMucm93XSA9IHRydWU7XG4gICAgICAgIGNvbnN0IHN0YXJ0Q29sID0gdGhpcy5jb21wdXRlQ29sdW1uKG1hcmt1cE5vZGUsIDApO1xuICAgICAgICBjb25zdCBsZW4gPSBtYXJrdXBOb2RlLnRleHRDb250ZW50Lmxlbmd0aDtcbiAgICAgICAgY29uc3QgbGVmdCA9IHRoaXMubGluZXNbZm9jdXMucm93XVxuICAgICAgICAgIC5zdWJzdHIoMCwgc3RhcnRDb2wpXG4gICAgICAgICAgLnJlcGxhY2UoY29tbWFuZHNbY29tbWFuZF0udW5zZXQucHJlUGF0dGVybiwgXCJcIik7XG4gICAgICAgIGNvbnN0IG1pZCA9IHRoaXMubGluZXNbZm9jdXMucm93XS5zdWJzdHIoc3RhcnRDb2wsIGxlbik7XG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gdGhpcy5saW5lc1tmb2N1cy5yb3ddXG4gICAgICAgICAgLnN1YnN0cihzdGFydENvbCArIGxlbilcbiAgICAgICAgICAucmVwbGFjZShjb21tYW5kc1tjb21tYW5kXS51bnNldC5wb3N0UGF0dGVybiwgXCJcIik7XG4gICAgICAgIHRoaXMubGluZXNbZm9jdXMucm93XSA9IGxlZnQuY29uY2F0KG1pZCwgcmlnaHQpO1xuICAgICAgICBhbmNob3IuY29sID0gbGVmdC5sZW5ndGg7XG4gICAgICAgIGZvY3VzLmNvbCA9IGFuY2hvci5jb2wgKyBsZW47XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybWF0dGluZygpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihmb2N1cywgYW5jaG9yKTtcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlKCk7XG5cbiAgICAgICAgLy8gU2Vjb25kIGNhc2U6IEVtcHR5IHNlbGVjdGlvbiB3aXRoIHN1cnJvdW5kaW5nIGZvcm1hdHRpbmcgbWFya2VycywgcmVtb3ZlIHRob3NlXG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBmb2N1cy5jb2wgPT0gYW5jaG9yLmNvbCAmJlxuICAgICAgICAhIXRoaXMubGluZXNbZm9jdXMucm93XVxuICAgICAgICAgIC5zdWJzdHIoMCwgZm9jdXMuY29sKVxuICAgICAgICAgIC5tYXRjaChjb21tYW5kc1tjb21tYW5kXS51bnNldC5wcmVQYXR0ZXJuKSAmJlxuICAgICAgICAhIXRoaXMubGluZXNbZm9jdXMucm93XVxuICAgICAgICAgIC5zdWJzdHIoZm9jdXMuY29sKVxuICAgICAgICAgIC5tYXRjaChjb21tYW5kc1tjb21tYW5kXS51bnNldC5wb3N0UGF0dGVybilcbiAgICAgICkge1xuICAgICAgICB0aGlzLmxpbmVEaXJ0eVtmb2N1cy5yb3ddID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgbGVmdCA9IHRoaXMubGluZXNbZm9jdXMucm93XVxuICAgICAgICAgIC5zdWJzdHIoMCwgZm9jdXMuY29sKVxuICAgICAgICAgIC5yZXBsYWNlKGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnByZVBhdHRlcm4sIFwiXCIpO1xuICAgICAgICBjb25zdCByaWdodCA9IHRoaXMubGluZXNbZm9jdXMucm93XVxuICAgICAgICAgIC5zdWJzdHIoZm9jdXMuY29sKVxuICAgICAgICAgIC5yZXBsYWNlKGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnBvc3RQYXR0ZXJuLCBcIlwiKTtcbiAgICAgICAgdGhpcy5saW5lc1tmb2N1cy5yb3ddID0gbGVmdC5jb25jYXQocmlnaHQpO1xuICAgICAgICBmb2N1cy5jb2wgPSBhbmNob3IuY29sID0gbGVmdC5sZW5ndGg7XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybWF0dGluZygpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihmb2N1cywgYW5jaG9yKTtcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlKCk7XG5cbiAgICAgICAgLy8gTm90IGN1cnJlbnRseSBmb3JtYXR0ZWQsIGluc2VydCBmb3JtYXR0aW5nIG1hcmtlcnNcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFRyaW0gYW55IHNwYWNlcyBmcm9tIHRoZSBzZWxlY3Rpb25cbiAgICAgICAgbGV0IHsgc3RhcnRDb2wsIGVuZENvbCB9ID1cbiAgICAgICAgICBmb2N1cy5jb2wgPCBhbmNob3IuY29sXG4gICAgICAgICAgICA/IHsgc3RhcnRDb2w6IGZvY3VzLmNvbCwgZW5kQ29sOiBhbmNob3IuY29sIH1cbiAgICAgICAgICAgIDogeyBzdGFydENvbDogYW5jaG9yLmNvbCwgZW5kQ29sOiBmb2N1cy5jb2wgfTtcblxuICAgICAgICBsZXQgbWF0Y2ggPSB0aGlzLmxpbmVzW2ZvY3VzLnJvd11cbiAgICAgICAgICAuc3Vic3RyKHN0YXJ0Q29sLCBlbmRDb2wgLSBzdGFydENvbClcbiAgICAgICAgICAubWF0Y2goL14oPzxsZWFkaW5nPlxccyopLipcXFMoPzx0cmFpbGluZz5cXHMqKSQvKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgc3RhcnRDb2wgKz0gbWF0Y2guZ3JvdXBzLmxlYWRpbmcubGVuZ3RoO1xuICAgICAgICAgIGVuZENvbCAtPSBtYXRjaC5ncm91cHMudHJhaWxpbmcubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9jdXMuY29sID0gc3RhcnRDb2w7XG4gICAgICAgIGFuY2hvci5jb2wgPSBlbmRDb2w7XG5cbiAgICAgICAgLy8gSnVzdCBpbnNlcnQgbWFya3VwIGJlZm9yZSBhbmQgYWZ0ZXIgYW5kIGhvcGUgZm9yIHRoZSBiZXN0LlxuICAgICAgICB0aGlzLndyYXBTZWxlY3Rpb24oXG4gICAgICAgICAgY29tbWFuZHNbY29tbWFuZF0uc2V0LnByZSxcbiAgICAgICAgICBjb21tYW5kc1tjb21tYW5kXS5zZXQucG9zdCxcbiAgICAgICAgICBmb2N1cyxcbiAgICAgICAgICBhbmNob3JcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlKCk7XG4gICAgICAgIC8vIFRPRE8gY2xlYW4gdGhpcyB1cCBzbyB0aGF0IG1hcmt1cCByZW1haW5zIHByb3Blcmx5IG5lc3RlZFxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29tbWFuZHNbY29tbWFuZF0udHlwZSA9PSBcImxpbmVcIikge1xuICAgICAgbGV0IGFuY2hvciA9IHRoaXMuZ2V0U2VsZWN0aW9uKHRydWUpO1xuICAgICAgbGV0IGZvY3VzID0gdGhpcy5nZXRTZWxlY3Rpb24oZmFsc2UpO1xuICAgICAgaWYgKCFhbmNob3IpIGFuY2hvciA9IGZvY3VzO1xuICAgICAgaWYgKCFmb2N1cykgcmV0dXJuO1xuICAgICAgdGhpcy5jbGVhckRpcnR5RmxhZygpO1xuICAgICAgbGV0IHN0YXJ0ID0gYW5jaG9yLnJvdyA+IGZvY3VzLnJvdyA/IGZvY3VzIDogYW5jaG9yO1xuICAgICAgbGV0IGVuZCA9IGFuY2hvci5yb3cgPiBmb2N1cy5yb3cgPyBhbmNob3IgOiBmb2N1cztcbiAgICAgIGlmIChlbmQucm93ID4gc3RhcnQucm93ICYmIGVuZC5jb2wgPT0gMCkge1xuICAgICAgICBlbmQucm93LS07XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IGxpbmUgPSBzdGFydC5yb3c7IGxpbmUgPD0gZW5kLnJvdzsgbGluZSsrKSB7XG4gICAgICAgIGlmIChzdGF0ZSAmJiB0aGlzLmxpbmVUeXBlc1tsaW5lXSAhPSBjb21tYW5kc1tjb21tYW5kXS5jbGFzc05hbWUpIHtcbiAgICAgICAgICB0aGlzLmxpbmVzW2xpbmVdID0gdGhpcy5saW5lc1tsaW5lXS5yZXBsYWNlKFxuICAgICAgICAgICAgY29tbWFuZHNbY29tbWFuZF0uc2V0LnBhdHRlcm4sXG4gICAgICAgICAgICBjb21tYW5kc1tjb21tYW5kXS5zZXQucmVwbGFjZW1lbnQucmVwbGFjZShcbiAgICAgICAgICAgICAgXCIkI1wiLFxuICAgICAgICAgICAgICBsaW5lIC0gc3RhcnQucm93ICsgMVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5saW5lRGlydHlbbGluZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc3RhdGUgJiYgdGhpcy5saW5lVHlwZXNbbGluZV0gPT0gY29tbWFuZHNbY29tbWFuZF0uY2xhc3NOYW1lKSB7XG4gICAgICAgICAgdGhpcy5saW5lc1tsaW5lXSA9IHRoaXMubGluZXNbbGluZV0ucmVwbGFjZShcbiAgICAgICAgICAgIGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnBhdHRlcm4sXG4gICAgICAgICAgICBjb21tYW5kc1tjb21tYW5kXS51bnNldC5yZXBsYWNlbWVudFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5saW5lRGlydHlbbGluZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKFxuICAgICAgICB7IHJvdzogZW5kLnJvdywgY29sOiB0aGlzLmxpbmVzW2VuZC5yb3ddLmxlbmd0aCB9LFxuICAgICAgICB7IHJvdzogc3RhcnQucm93LCBjb2w6IDAgfVxuICAgICAgKTtcbiAgICAgIHRoaXMuZmlyZUNoYW5nZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IGlubGluZSBmb3JtYXR0aW5nIGlzIGFsbG93ZWQgYXQgdGhlIGN1cnJlbnQgZm9jdXNcbiAgICogQHBhcmFtIHtvYmplY3R9IGZvY3VzIFRoZSBjdXJyZW50IGZvY3VzXG4gICAqL1xuICBpc0lubGluZUZvcm1hdHRpbmdBbGxvd2VkKCkge1xuICAgIC8vIFRPRE8gUmVtb3ZlIHBhcmFtZXRlcnMgZnJvbSBhbGwgY2FsbHNcbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgaWYgKCFzZWwgfHwgIXNlbC5mb2N1c05vZGUgfHwgIXNlbC5hbmNob3JOb2RlKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDaGVjayBpZiB3ZSBjYW4gZmluZCBhIGNvbW1vbiBhbmNlc3RvciB3aXRoIHRoZSBjbGFzcyBgVE1JbmxpbmVGb3JtYXR0ZWRgXG5cbiAgICAvLyBTcGVjaWFsIGNhc2U6IEVtcHR5IHNlbGVjdGlvbiByaWdodCBiZWZvcmUgYFRNSW5saW5lRm9ybWF0dGVkYFxuICAgIGlmIChcbiAgICAgIHNlbC5pc0NvbGxhcHNlZCAmJlxuICAgICAgc2VsLmZvY3VzTm9kZS5ub2RlVHlwZSA9PSAzICYmXG4gICAgICBzZWwuZm9jdXNPZmZzZXQgPT0gc2VsLmZvY3VzTm9kZS5ub2RlVmFsdWUubGVuZ3RoXG4gICAgKSB7XG4gICAgICBsZXQgbm9kZTtcbiAgICAgIGZvciAoXG4gICAgICAgIG5vZGUgPSBzZWwuZm9jdXNOb2RlO1xuICAgICAgICBub2RlICYmIG5vZGUubmV4dFNpYmxpbmcgPT0gbnVsbDtcbiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZVxuICAgICAgKTtcbiAgICAgIGlmIChcbiAgICAgICAgbm9kZSAmJlxuICAgICAgICBub2RlLm5leHRTaWJsaW5nLmNsYXNzTmFtZSAmJlxuICAgICAgICBub2RlLm5leHRTaWJsaW5nLmNsYXNzTmFtZS5pbmNsdWRlcyhcIlRNSW5saW5lRm9ybWF0dGVkXCIpXG4gICAgICApXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIExvb2sgZm9yIGEgY29tbW9uIGFuY2VzdG9yXG4gICAgbGV0IGFuY2VzdG9yID0gdGhpcy5jb21wdXRlQ29tbW9uQW5jZXN0b3Ioc2VsLmZvY3VzTm9kZSwgc2VsLmFuY2hvck5vZGUpO1xuICAgIGlmICghYW5jZXN0b3IpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYW4gYW5jZXN0b3Igb2YgY2xhc3MgJ1RNSW5saW5lRm9ybWF0dGVkJyBvciAnVE1CbGFua0xpbmUnXG4gICAgd2hpbGUgKGFuY2VzdG9yICYmIGFuY2VzdG9yICE9IHRoaXMuZSkge1xuICAgICAgaWYgKFxuICAgICAgICBhbmNlc3Rvci5jbGFzc05hbWUgJiZcbiAgICAgICAgKGFuY2VzdG9yLmNsYXNzTmFtZS5pbmNsdWRlcyhcIlRNSW5saW5lRm9ybWF0dGVkXCIpIHx8XG4gICAgICAgICAgYW5jZXN0b3IuY2xhc3NOYW1lLmluY2x1ZGVzKFwiVE1CbGFua0xpbmVcIikpXG4gICAgICApXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci5wYXJlbnROb2RlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcmFwcyB0aGUgY3VycmVudCBzZWxlY3Rpb24gaW4gdGhlIHN0cmluZ3MgcHJlIGFuZCBwb3N0LiBJZiB0aGUgc2VsZWN0aW9uIGlzIG5vdCBvbiBvbmUgbGluZSwgcmV0dXJucy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHByZSBUaGUgc3RyaW5nIHRvIGluc2VydCBiZWZvcmUgdGhlIHNlbGVjdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHBvc3QgVGhlIHN0cmluZyB0byBpbnNlcnQgYWZ0ZXIgdGhlIHNlbGVjdGlvbi5cbiAgICogQHBhcmFtIHtvYmplY3R9IGZvY3VzIFRoZSBjdXJyZW50IHNlbGVjdGlvbiBmb2N1cy4gSWYgbnVsbCwgc2VsZWN0aW9uIHdpbGwgYmUgY29tcHV0ZWQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhbmNob3IgVGhlIGN1cnJlbnQgc2VsZWN0aW9uIGZvY3VzLiBJZiBudWxsLCBzZWxlY3Rpb24gd2lsbCBiZSBjb21wdXRlZC5cbiAgICovXG4gIHdyYXBTZWxlY3Rpb24ocHJlLCBwb3N0LCBmb2N1cyA9IG51bGwsIGFuY2hvciA9IG51bGwpIHtcbiAgICBpZiAoIWZvY3VzKSBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKGZhbHNlKTtcbiAgICBpZiAoIWFuY2hvcikgYW5jaG9yID0gdGhpcy5nZXRTZWxlY3Rpb24odHJ1ZSk7XG4gICAgaWYgKCFmb2N1cyB8fCAhYW5jaG9yIHx8IGZvY3VzLnJvdyAhPSBhbmNob3Iucm93KSByZXR1cm47XG4gICAgdGhpcy5saW5lRGlydHlbZm9jdXMucm93XSA9IHRydWU7XG5cbiAgICBjb25zdCBzdGFydENvbCA9IGZvY3VzLmNvbCA8IGFuY2hvci5jb2wgPyBmb2N1cy5jb2wgOiBhbmNob3IuY29sO1xuICAgIGNvbnN0IGVuZENvbCA9IGZvY3VzLmNvbCA8IGFuY2hvci5jb2wgPyBhbmNob3IuY29sIDogZm9jdXMuY29sO1xuICAgIGNvbnN0IGxlZnQgPSB0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKDAsIHN0YXJ0Q29sKS5jb25jYXQocHJlKTtcbiAgICBjb25zdCBtaWQgPVxuICAgICAgZW5kQ29sID09IHN0YXJ0Q29sXG4gICAgICAgID8gXCJcIlxuICAgICAgICA6IHRoaXMubGluZXNbZm9jdXMucm93XS5zdWJzdHIoc3RhcnRDb2wsIGVuZENvbCAtIHN0YXJ0Q29sKTtcbiAgICBjb25zdCByaWdodCA9IHBvc3QuY29uY2F0KHRoaXMubGluZXNbZm9jdXMucm93XS5zdWJzdHIoZW5kQ29sKSk7XG4gICAgdGhpcy5saW5lc1tmb2N1cy5yb3ddID0gbGVmdC5jb25jYXQobWlkLCByaWdodCk7XG4gICAgYW5jaG9yLmNvbCA9IGxlZnQubGVuZ3RoO1xuICAgIGZvY3VzLmNvbCA9IGFuY2hvci5jb2wgKyBtaWQubGVuZ3RoO1xuXG4gICAgdGhpcy51cGRhdGVGb3JtYXR0aW5nKCk7XG4gICAgdGhpcy5zZXRTZWxlY3Rpb24oZm9jdXMsIGFuY2hvcik7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgY29tbWFuZCBzdGF0ZSBmb3IgYSBjb21tYW5kICh0cnVlIDwtPiBmYWxzZSlcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbW1hbmQgVGhlIGVkaXRvciBjb21tYW5kXG4gICAqL1xuICB0b2dnbGVDb21tYW5kU3RhdGUoY29tbWFuZCkge1xuICAgIGlmICghdGhpcy5sYXN0Q29tbWFuZFN0YXRlKSB0aGlzLmxhc3RDb21tYW5kU3RhdGUgPSB0aGlzLmdldENvbW1hbmRTdGF0ZSgpO1xuICAgIHRoaXMuc2V0Q29tbWFuZFN0YXRlKGNvbW1hbmQsICF0aGlzLmxhc3RDb21tYW5kU3RhdGVbY29tbWFuZF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIGEgY2hhbmdlIGV2ZW50LiBVcGRhdGVzIHRoZSBsaW5rZWQgdGV4dGFyZWEgYW5kIG5vdGlmaWVzIGFueSBldmVudCBsaXN0ZW5lcnMuXG4gICAqL1xuICBmaXJlQ2hhbmdlKCkge1xuICAgIGlmICghdGhpcy50ZXh0YXJlYSAmJiAhdGhpcy5saXN0ZW5lcnMuY2hhbmdlLmxlbmd0aCkgcmV0dXJuO1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKTtcbiAgICBpZiAodGhpcy50ZXh0YXJlYSkgdGhpcy50ZXh0YXJlYS52YWx1ZSA9IGNvbnRlbnQ7XG4gICAgZm9yIChsZXQgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMuY2hhbmdlKSB7XG4gICAgICBsaXN0ZW5lcih7XG4gICAgICAgIGNvbnRlbnQ6IGNvbnRlbnQsXG4gICAgICAgIGxpbmVzRGlydHk6IHRoaXMubGluZXNEaXJ0eSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyBhIFwic2VsZWN0aW9uIGNoYW5nZWRcIiBldmVudC5cbiAgICovXG4gIGZpcmVTZWxlY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMubGlzdGVuZXJzLnNlbGVjdGlvbiAmJiB0aGlzLmxpc3RlbmVycy5zZWxlY3Rpb24ubGVuZ3RoKSB7XG4gICAgICBsZXQgZm9jdXMgPSB0aGlzLmdldFNlbGVjdGlvbihmYWxzZSk7XG4gICAgICBsZXQgYW5jaG9yID0gdGhpcy5nZXRTZWxlY3Rpb24odHJ1ZSk7XG4gICAgICBsZXQgY29tbWFuZFN0YXRlID0gdGhpcy5nZXRDb21tYW5kU3RhdGUoZm9jdXMsIGFuY2hvcik7XG4gICAgICBpZiAodGhpcy5sYXN0Q29tbWFuZFN0YXRlKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5sYXN0Q29tbWFuZFN0YXRlLCBjb21tYW5kU3RhdGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sYXN0Q29tbWFuZFN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgY29tbWFuZFN0YXRlKTtcbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGxpc3RlbmVyIG9mIHRoaXMubGlzdGVuZXJzLnNlbGVjdGlvbikge1xuICAgICAgICBsaXN0ZW5lcih7XG4gICAgICAgICAgZm9jdXM6IGZvY3VzLFxuICAgICAgICAgIGFuY2hvcjogYW5jaG9yLFxuICAgICAgICAgIGNvbW1hbmRTdGF0ZTogdGhpcy5sYXN0Q29tbWFuZFN0YXRlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBldmVudCBsaXN0ZW5lci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgVGhlIHR5cGUgb2YgZXZlbnQgdG8gbGlzdGVuIHRvLiBDYW4gYmUgJ2NoYW5nZScgb3IgJ3NlbGVjdGlvbidcbiAgICogQHBhcmFtIHsqfSBsaXN0ZW5lciBGdW5jdGlvbiBvZiB0aGUgdHlwZSAoZXZlbnQpID0+IHt9IHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBldmVudCBvY2N1cnMuXG4gICAqL1xuICBhZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgaWYgKHR5cGUubWF0Y2goL14oPzpjaGFuZ2V8aW5wdXQpJC9pKSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuY2hhbmdlLnB1c2gobGlzdGVuZXIpO1xuICAgIH1cbiAgICBpZiAodHlwZS5tYXRjaCgvXig/OnNlbGVjdGlvbnxzZWxlY3Rpb25jaGFuZ2UpJC9pKSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc2VsZWN0aW9uLnB1c2gobGlzdGVuZXIpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBFZGl0b3I7XG4iXSwibmFtZXMiOlsic3ZnIiwiYmxvY2txdW90ZSIsImJvbGQiLCJjbGVhcl9mb3JtYXR0aW5nIiwiY29kZSIsImgxIiwiaDIiLCJociIsImltYWdlIiwiaXRhbGljIiwibGluayIsIm9sIiwic3RyaWtldGhyb3VnaCIsInVsIiwiaXNNYWNMaWtlIiwidGVzdCIsIm5hdmlnYXRvciIsInBsYXRmb3JtIiwiRGVmYXVsdENvbW1hbmRzIiwibmFtZSIsImFjdGlvbiIsImlubmVySFRNTCIsInRpdGxlIiwiaG90a2V5IiwiZWRpdG9yIiwiaXNJbmxpbmVGb3JtYXR0aW5nQWxsb3dlZCIsIndyYXBTZWxlY3Rpb24iLCJlbmFibGVkIiwiZm9jdXMiLCJhbmNob3IiLCJwYXN0ZSIsIkNvbW1hbmRCYXIiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiZSIsImNvbW1hbmRzIiwiYnV0dG9ucyIsInN0YXRlIiwiaG90a2V5cyIsImVsZW1lbnQiLCJ0YWdOYW1lIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImJvZHkiLCJjcmVhdGVDb21tYW5kQmFyRWxlbWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJoYW5kbGVLZXlkb3duIiwic2V0RWRpdG9yIiwicGFyZW50RWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJjb21tYW5kIiwiZWwiLCJhcHBlbmRDaGlsZCIsImNvbW1hbmROYW1lIiwiT2JqZWN0IiwiYXNzaWduIiwia2V5cyIsInNwbGl0IiwibW9kaWZpZXJzIiwibW9kaWZpZXJleHBsYW5hdGlvbiIsImkiLCJsZW5ndGgiLCJwdXNoIiwibWF0Y2giLCJrZXkiLCJ0b0xvd2VyQ2FzZSIsImNvbmNhdCIsImpvaW4iLCJoYW5kbGVDbGljayIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJzZXRDb21tYW5kU3RhdGUiLCJoYW5kbGVTZWxlY3Rpb24iLCJjb21tYW5kU3RhdGUiLCJ1bmRlZmluZWQiLCJvdXRlciIsIm1vZGlmaWVyIiwiY2hlY2siLCJpdCIsIk1hdGgiLCJtb2R1bGUiLCJnbG9iYWxUaGlzIiwid2luZG93Iiwic2VsZiIsImdsb2JhbCIsInRoaXMiLCJGdW5jdGlvbiIsImV4ZWMiLCJlcnJvciIsImZhaWxzIiwicmVxdWlyZSIsImRlZmluZVByb3BlcnR5IiwiZ2V0IiwiYmluZCIsImhhc093blByb3BlcnR5IiwiTkFUSVZFX0JJTkQiLCJGdW5jdGlvblByb3RvdHlwZSIsInByb3RvdHlwZSIsImNhbGwiLCJ1bmN1cnJ5VGhpc1dpdGhCaW5kIiwiZm4iLCJhcHBseSIsImFyZ3VtZW50cyIsImRvY3VtZW50QWxsIiwiYWxsIiwiSVNfSFRNTEREQSIsIiRkb2N1bWVudEFsbCIsImFyZ3VtZW50IiwiaXNOdWxsT3JVbmRlZmluZWQiLCIkVHlwZUVycm9yIiwiVHlwZUVycm9yIiwicmVxdWlyZU9iamVjdENvZXJjaWJsZSIsIiRPYmplY3QiLCJ1bmN1cnJ5VGhpcyIsInRvT2JqZWN0IiwiaGFzT3duIiwiREVTQ1JJUFRPUlMiLCJnZXREZXNjcmlwdG9yIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiRVhJU1RTIiwiUFJPUEVSIiwic29tZXRoaW5nIiwiQ09ORklHVVJBQkxFIiwiY29uZmlndXJhYmxlIiwidmFsdWUiLCJ3cml0YWJsZSIsImRlZmluZUdsb2JhbFByb3BlcnR5IiwiU0hBUkVEIiwic3RvcmUiLCJpc0NhbGxhYmxlIiwiZnVuY3Rpb25Ub1N0cmluZyIsInRvU3RyaW5nIiwiaW5zcGVjdFNvdXJjZSIsIldlYWtNYXAiLCJTdHJpbmciLCJpc09iamVjdCIsImEiLCIkU3RyaW5nIiwiYUZ1bmN0aW9uIiwibmFtZXNwYWNlIiwibWV0aG9kIiwiaXNQcm90b3R5cGVPZiIsInVzZXJBZ2VudCIsInByb2Nlc3MiLCJEZW5vIiwidmVyc2lvbnMiLCJ2ZXJzaW9uIiwidjgiLCJWOF9WRVJTSU9OIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9sIiwiU3ltYm9sIiwic2hhbSIsIk5BVElWRV9TWU1CT0wiLCJpdGVyYXRvciIsImdldEJ1aWx0SW4iLCJVU0VfU1lNQk9MX0FTX1VJRCIsIiRTeW1ib2wiLCJ0cnlUb1N0cmluZyIsImFDYWxsYWJsZSIsIlYiLCJQIiwiZnVuYyIsImlucHV0IiwicHJlZiIsInZhbCIsInZhbHVlT2YiLCJtb2RlIiwiY29weXJpZ2h0IiwibGljZW5zZSIsInNvdXJjZSIsImlkIiwicG9zdGZpeCIsInJhbmRvbSIsInNoYXJlZCIsInVpZCIsIldlbGxLbm93blN5bWJvbHNTdG9yZSIsImNyZWF0ZVdlbGxLbm93blN5bWJvbCIsIndpdGhvdXRTZXR0ZXIiLCJpc1N5bWJvbCIsImdldE1ldGhvZCIsIm9yZGluYXJ5VG9QcmltaXRpdmUiLCJ3ZWxsS25vd25TeW1ib2wiLCJUT19QUklNSVRJVkUiLCJleG90aWNUb1ByaW0iLCJyZXN1bHQiLCJ0b1ByaW1pdGl2ZSIsIklFOF9ET01fREVGSU5FIiwiVjhfUFJPVE9UWVBFX0RFRklORV9CVUciLCJhbk9iamVjdCIsInRvUHJvcGVydHlLZXkiLCIkZGVmaW5lUHJvcGVydHkiLCIkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiRU5VTUVSQUJMRSIsIldSSVRBQkxFIiwiZXhwb3J0cyIsIk8iLCJBdHRyaWJ1dGVzIiwiY3VycmVudCIsImVudW1lcmFibGUiLCJiaXRtYXAiLCJkZWZpbmVQcm9wZXJ0eU1vZHVsZSIsImNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciIsIm9iamVjdCIsImYiLCJOQVRJVkVfV0VBS19NQVAiLCJjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkiLCJzaGFyZWRLZXkiLCJPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCIsInNldCIsImhhcyIsImVuZm9yY2UiLCJnZXR0ZXJGb3IiLCJUWVBFIiwidHlwZSIsIm1ldGFkYXRhIiwiZmFjYWRlIiwiU1RBVEUiLCJDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSIsIkludGVybmFsU3RhdGVNb2R1bGUiLCJlbmZvcmNlSW50ZXJuYWxTdGF0ZSIsImdldEludGVybmFsU3RhdGUiLCJzdHJpbmdTbGljZSIsInNsaWNlIiwicmVwbGFjZSIsIkNPTkZJR1VSQUJMRV9MRU5HVEgiLCJURU1QTEFURSIsIm1ha2VCdWlsdEluIiwib3B0aW9ucyIsImdldHRlciIsInNldHRlciIsImFyaXR5IiwidGFyZ2V0IiwiZGVzY3JpcHRvciIsInRoYXQiLCJoYXNJbmRpY2VzIiwiaWdub3JlQ2FzZSIsIm11bHRpbGluZSIsImRvdEFsbCIsInVuaWNvZGUiLCJ1bmljb2RlU2V0cyIsInN0aWNreSIsImRlZmluZUJ1aWx0SW5BY2Nlc3NvciIsInJlZ0V4cEZsYWdzIiwiUmVnRXhwIiwiUmVnRXhwUHJvdG90eXBlIiwiRk9SQ0VEIiwiSU5ESUNFU19TVVBQT1JUIiwiY2FsbHMiLCJleHBlY3RlZCIsImFkZEdldHRlciIsImNociIsInBhaXJzIiwicmVwbGFjZW1lbnRzIiwiQVNDSUlQdW5jdHVhdGlvbiIsIk5vdFRyaWdnZXJDaGFyIiwiU2NoZW1lIiwiRW1haWwiLCJIVE1MT3BlblRhZyIsIkhUTUxDbG9zZVRhZyIsIkhUTUxUYWdOYW1lIiwiSFRNTENvbW1lbnQiLCJIVE1MUEkiLCJIVE1MRGVjbGFyYXRpb24iLCJIVE1MQ0RBVEEiLCJIVE1MQXR0cmlidXRlIiwiSFRNTEF0dFZhbHVlIiwiS25vd25UYWciLCJwdW5jdHVhdGlvbkxlYWRpbmciLCJwdW5jdHVhdGlvblRyYWlsaW5nIiwibGluZUdyYW1tYXIiLCJUTUgxIiwicmVnZXhwIiwicmVwbGFjZW1lbnQiLCJUTUgyIiwiVE1IMyIsIlRNSDQiLCJUTUg1IiwiVE1INiIsIlRNQmxvY2txdW90ZSIsIlRNQ29kZUZlbmNlQmFja3RpY2tPcGVuIiwiVE1Db2RlRmVuY2VUaWxkZU9wZW4iLCJUTUNvZGVGZW5jZUJhY2t0aWNrQ2xvc2UiLCJUTUNvZGVGZW5jZVRpbGRlQ2xvc2UiLCJUTUJsYW5rTGluZSIsIlRNU2V0ZXh0SDFNYXJrZXIiLCJUTVNldGV4dEgyTWFya2VyIiwiVE1IUiIsIlRNVUwiLCJUTU9MIiwiVE1JbmRlbnRlZENvZGUiLCJUTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uIiwibGFiZWxQbGFjZWhvbGRlciIsImh0bWxCbG9ja0dyYW1tYXIiLCJzdGFydCIsImVuZCIsInBhcmFJbnRlcnJ1cHQiLCJpbmxpbmVHcmFtbWFyIiwiZXNjYXBlIiwiYXV0b2xpbmsiLCJodG1sIiwibGlua09wZW4iLCJpbWFnZU9wZW4iLCJsaW5rTGFiZWwiLCJkZWZhdWx0IiwicmVwbGFjZW1lbnRSZWdleHAiLCJpbmxpbmVSdWxlcyIsInJ1bGUiLCJyZSIsInN0cmluZyIsImZsYWdzIiwiaHRtbGVzY2FwZSIsInByZSIsInBvc3QiLCJ1bnNldCIsInByZVBhdHRlcm4iLCJwb3N0UGF0dGVybiIsInBhdHRlcm4iLCJoMyIsImg0IiwiaDUiLCJoNiIsIkVkaXRvciIsInRleHRhcmVhIiwibGluZXMiLCJsaW5lRWxlbWVudHMiLCJsaW5lVHlwZXMiLCJsaW5lQ2FwdHVyZXMiLCJsaW5lUmVwbGFjZW1lbnRzIiwibGlua0xhYmVscyIsImxpbmVEaXJ0eSIsImxhc3RDb21tYW5kU3RhdGUiLCJsaXN0ZW5lcnMiLCJjaGFuZ2UiLCJzZWxlY3Rpb24iLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInBhcmVudE5vZGUiLCJzdHlsZSIsImRpc3BsYXkiLCJjcmVhdGVFZGl0b3JFbGVtZW50Iiwic2V0Q29udGVudCIsImNvbnRlbnQiLCJjb250ZW50RWRpdGFibGUiLCJ3aGl0ZVNwYWNlIiwid2Via2l0VXNlck1vZGlmeSIsIm5leHRTaWJsaW5nIiwiaW5zZXJ0QmVmb3JlIiwiaGFuZGxlSW5wdXRFdmVudCIsImhhbmRsZVNlbGVjdGlvbkNoYW5nZUV2ZW50IiwiaGFuZGxlUGFzdGUiLCJjaGlsZE5vZGVzIiwiZmlyc3RDaGlsZCIsInJlbW92ZUNoaWxkIiwibGluZU51bSIsImxlIiwiQXJyYXkiLCJ1cGRhdGVGb3JtYXR0aW5nIiwiZmlyZUNoYW5nZSIsImdldENvbnRlbnQiLCJ1cGRhdGVMaW5lVHlwZXMiLCJ1cGRhdGVMaW5rTGFiZWxzIiwiYXBwbHlMaW5lVHlwZXMiLCJsIiwiY2FwdHVyZSIsInN0ciIsInAxIiwicDIiLCJwcm9jZXNzSW5saW5lU3R5bGVzIiwiY29udGVudEhUTUwiLCJyZW1vdmVBdHRyaWJ1dGUiLCJkYXRhc2V0IiwiY29kZUJsb2NrVHlwZSIsImNvZGVCbG9ja1NlcUxlbmd0aCIsImh0bWxCbG9jayIsImxpbmVUeXBlIiwibGluZUNhcHR1cmUiLCJsaW5lUmVwbGFjZW1lbnQiLCJncm91cHMiLCJodG1sQmxvY2tUeXBlIiwiaGVhZGluZ0xpbmUiLCJoZWFkaW5nTGluZVR5cGUiLCJ1cGRhdGVMaW5lQ29udGVudHNBbmRGb3JtYXR0aW5nIiwiY2xlYXJEaXJ0eUZsYWciLCJ1cGRhdGVMaW5lQ29udGVudHMiLCJwYXJzZUxpbmtPckltYWdlIiwib3JpZ2luYWxTdHJpbmciLCJpc0ltYWdlIiwidGV4dE9mZnNldCIsIm9wZW5lciIsInN1YnN0ciIsImN1cnJlbnRPZmZzZXQiLCJicmFja2V0TGV2ZWwiLCJsaW5rVGV4dCIsImxpbmtSZWYiLCJsaW5rRGV0YWlscyIsInRleHRPdXRlciIsImNhcCIsIm5leHRDaGFyIiwidHJpbSIsInBhcmVudGhlc2lzTGV2ZWwiLCJpbmxpbmVPdXRlciIsInZhbGlkIiwibGFiZWwiLCJvdXRwdXQiLCJjaGFyQ291bnQiLCJwcm9jZXNzZWQiLCJzdGFjayIsIm9mZnNldCIsInBvdGVudGlhbExpbmsiLCJwb3RlbnRpYWxJbWFnZSIsImRlbGltQ291bnQiLCJkZWxpbVN0cmluZyIsImN1cnJlbnREZWxpbWl0ZXIiLCJwcmVjZWRpbmciLCJmb2xsb3dpbmciLCJwdW5jdHVhdGlvbkZvbGxvd3MiLCJwdW5jdHVhdGlvblByZWNlZGVzIiwid2hpdGVzcGFjZUZvbGxvd3MiLCJ3aGl0ZXNwYWNlUHJlY2VkZXMiLCJjYW5PcGVuIiwiY2FuQ2xvc2UiLCJzdGFja1BvaW50ZXIiLCJkZWxpbWl0ZXIiLCJlbnRyeSIsInBvcCIsImNvdW50IiwiY29uc3VtZWQiLCJsaW5lRGVsdGEiLCJjaGlsZEVsZW1lbnRDb3VudCIsImZpcnN0Q2hhbmdlZExpbmUiLCJ0ZXh0Q29udGVudCIsImxhc3RDaGFuZ2VkTGluZSIsImxpbmVzVG9EZWxldGUiLCJsaW5lc1RvQWRkIiwic3BsaWNlTGluZXMiLCJsaW5lIiwiY3QiLCJwcm9jZXNzTmV3UGFyYWdyYXBoIiwic2VsIiwiY29udGludWFibGVUeXBlIiwiY2hlY2tMaW5lIiwiY29sIiwicm93IiwicGFyc2VJbnQiLCJnZXRTZWxlY3Rpb24iLCJnZXRBbmNob3IiLCJzdGFydE5vZGUiLCJhbmNob3JOb2RlIiwiZm9jdXNOb2RlIiwiYW5jaG9yT2Zmc2V0IiwiZm9jdXNPZmZzZXQiLCJjb21wdXRlQ29sdW1uIiwibm9kZSIsInByZXZpb3VzU2libGluZyIsIm5vZGVUeXBlIiwiTm9kZSIsIlRFWFRfTk9ERSIsImNvbXB1dGVOb2RlQW5kT2Zmc2V0IiwiYmluZFJpZ2h0IiwiY2hpbGRyZW5Db21wbGV0ZSIsInJ2Iiwibm9kZVZhbHVlIiwic2V0U2VsZWN0aW9uIiwicmFuZ2UiLCJjcmVhdGVSYW5nZSIsInNldFN0YXJ0Iiwic2V0RW5kIiwid2luZG93U2VsZWN0aW9uIiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJpbnB1dFR5cGUiLCJmaXhOb2RlSGllcmFyY2h5Iiwib3JpZ2luYWxDaGlsZHJlbiIsImZyb20iLCJyZXBsYWNlQ2hpbGQiLCJjaGlsZCIsInBhcmVudCIsIl9sZW4iLCJuZXdDaGlsZHJlbiIsIl9rZXkiLCJmb3JFYWNoIiwibmV3Q2hpbGQiLCJFTEVNRU5UX05PREUiLCJkaXZXcmFwcGVyIiwiZ3JhbmRDaGlsZHJlbiIsInNvbWUiLCJncmFuZENoaWxkIiwiZmlyZVNlbGVjdGlvbiIsInN0YXJ0TGluZSIsImxpbmVzVG9JbnNlcnQiLCJhZGp1c3RMaW5lRWxlbWVudHMiLCJpbnNlcnRlZEJsYW5rIiwiaW5zZXJ0ZWREaXJ0eSIsInNwbGljZSIsInRleHQiLCJvcmlnaW5hbEV2ZW50IiwiY2xpcGJvYXJkRGF0YSIsImdldERhdGEiLCJiZWdpbm5pbmciLCJpbnNlcnRlZExpbmVzIiwibGluZUJlZm9yZSIsImxpbmVFbmQiLCJlbmRDb2xQb3MiLCJjb21wdXRlQ29tbW9uQW5jZXN0b3IiLCJub2RlMSIsIm5vZGUyIiwiYW5jZXN0cnkiLCJ1bnNoaWZ0IiwiYW5jZXN0cnkxIiwiYW5jZXN0cnkyIiwiY29tcHV0ZUVuY2xvc2luZ01hcmt1cE5vZGUiLCJpbmNsdWRlcyIsImdldENvbW1hbmRTdGF0ZSIsImNtZCIsIm1hcmt1cE5vZGUiLCJzdGFydENvbCIsImxlbiIsImxlZnQiLCJtaWQiLCJyaWdodCIsImVuZENvbCIsImxlYWRpbmciLCJ0cmFpbGluZyIsImlzQ29sbGFwc2VkIiwiYW5jZXN0b3IiLCJ0b2dnbGVDb21tYW5kU3RhdGUiLCJsaXN0ZW5lciIsImxpbmVzRGlydHkiXSwibWFwcGluZ3MiOiI7Ozs7OztFQUFBLE1BQU1BLEdBQUcsR0FBRztFQUNWQyxFQUFBQSxVQUFVLEVBQUcsQ0FBMFIseVJBQUEsQ0FBQTtFQUN2U0MsRUFBQUEsSUFBSSxFQUFHLENBQXlZLHdZQUFBLENBQUE7RUFDaFpDLEVBQUFBLGdCQUFnQixFQUFHLENBQTBYLHlYQUFBLENBQUE7RUFDN1lDLEVBQUFBLElBQUksRUFBRyxDQUE4VSw2VUFBQSxDQUFBO0VBQ3JWQyxFQUFBQSxFQUFFLEVBQUcsQ0FBK0osOEpBQUEsQ0FBQTtFQUNwS0MsRUFBQUEsRUFBRSxFQUFHLENBQWlLLGdLQUFBLENBQUE7RUFDdEtDLEVBQUFBLEVBQUUsRUFBRyxDQUFnSSwrSEFBQSxDQUFBO0VBQ3JJQyxFQUFBQSxLQUFLLEVBQUcsQ0FBOEgsNkhBQUEsQ0FBQTtFQUN0SUMsRUFBQUEsTUFBTSxFQUFHLENBQWdILCtHQUFBLENBQUE7RUFDekhDLEVBQUFBLElBQUksRUFBRyxDQUEwdUMseXVDQUFBLENBQUE7RUFDanZDQyxFQUFBQSxFQUFFLEVBQUcsQ0FBb3RCLG10QkFBQSxDQUFBO0VBQ3p0QkMsRUFBQUEsYUFB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
|