New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

console-gui-tools

Package Overview
Dependencies
Maintainers
1
Versions
56
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

console-gui-tools - npm Package Compare versions

Comparing version 1.1.40 to 1.1.41

6

dist/components/widgets/InputPopup.js

@@ -43,3 +43,3 @@ import { EventEmitter } from "events";

if (this.numeric) {
this.value = Number(this.value) + 1;
this.value = Number(this.value) - 1;
this.CM.refresh();

@@ -51,3 +51,3 @@ }

if (this.numeric) {
this.value = Number(this.value) - 1;
this.value = Number(this.value) + 1;
this.CM.refresh();

@@ -386,2 +386,2 @@ }

export default InputPopup;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5wdXRQb3B1cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3dpZGdldHMvSW5wdXRQb3B1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQW1CLE1BQU0scUJBQXFCLENBQUE7QUFHckU7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQU0sT0FBTyxVQUFXLFNBQVEsWUFBWTtJQXVCeEMsWUFBbUIsRUFBVSxFQUFFLEtBQWEsRUFBRSxLQUFzQixFQUFFLE9BQWdCLEVBQUUsT0FBTyxHQUFHLEtBQUs7UUFDbkcsS0FBSyxFQUFFLENBQUE7UUFoQlgsc0JBQWlCLEdBQUcsS0FBSyxDQUFBO1FBV3pCLGFBQVEsR0FBRyxLQUFLLENBQUE7UUFDaEIsY0FBUyxHQUE2QixFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFBO1FBQ3BELFlBQU8sR0FBRyxLQUFLLENBQUE7UUFrUWY7Ozs7V0FJRztRQUNLLGtCQUFhLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7WUFDMUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7WUFDdEIsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7WUFFdEIseUJBQXlCO1lBQ3pCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENB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QVMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQzNGLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNuRSxDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxjQUFjLEdBQUc7WUFDbEIsQ0FBQyxFQUFFLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTztZQUM5QixDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTztZQUNoQyxLQUFLLEVBQUUsV0FBVztZQUNsQixNQUFNLEVBQUUsaUJBQWlCLENBQUMsTUFBTTtTQUNuQyxDQUFBO1FBQ0QsT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDO0NBQ0o7QUFFRCxlQUFlLFVBQVUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gXCJldmVudHNcIlxuaW1wb3J0IHsgQ29uc29sZU1hbmFnZXIsIEtleUxpc3RlbmVyQXJncyB9IGZyb20gXCIuLi8uLi9Db25zb2xlR3VpLmpzXCJcbmltcG9ydCB7IE1vdXNlRXZlbnQgfSBmcm9tIFwiLi4vTW91c2VNYW5hZ2VyLmpzXCJcblxuLyoqXG4gKiBAY2xhc3MgSW5wdXRQb3B1cFxuICogQGV4dGVuZHMgRXZlbnRFbWl0dGVyXG4gKiBAZGVzY3JpcHRpb24gVGhpcyBjbGFzcyBpcyB1c2VkIHRvIGNyZWF0ZSBhIHBvcHVwIHdpdGggYSB0ZXh0IG9yIG51bWVyaWMgaW5wdXQuIFxuICogXG4gKiAhW0lucHV0UG9wdXBdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzE0OTA3OTg3LzE2NTc1MjI4MS1lODM2Yjg2Mi1hNTRhLTQ4ZDUtYjRlNy05NTQzNzRkNjUwOWYuZ2lmKVxuICogXG4gKiBFbWl0cyB0aGUgZm9sbG93aW5nIGV2ZW50czogXG4gKiAtIFwiY29uZmlybVwiIHdoZW4gdGhlIHVzZXIgY29uZmlybSB0aGUgaW5wdXRcbiAqIC0gXCJjYW5jZWxcIiB3aGVuIHRoZSB1c2VyIGNhbmNlbCB0aGUgaW5wdXRcbiAqIC0gXCJleGl0XCIgd2hlbiB0aGUgdXNlciBleGl0IHRoZSBpbnB1dFxuICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gVGhlIGlkIG9mIHRoZSBwb3B1cC5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSAtIFRoZSB0aXRsZSBvZiB0aGUgcG9wdXAuXG4gKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlcn0gdmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIGlucHV0LlxuICogQHBhcmFtIHtib29sZWFufSBudW1lcmljIC0gSWYgdGhlIGlucHV0IGlzIG51bWVyaWMuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHZpc2libGUgLSBJZiB0aGUgcG9wdXAgaXMgdmlzaWJsZS4gRGVmYXVsdCBpcyBmYWxzZSAobWFrZSBpdCBhcHBlYXJzIHVzaW5nIHNob3coKSkuXG4gKiBcbiAqIEBleGFtcGxlIGNvbnN0IHBvcHVwID0gbmV3IElucHV0UG9wdXAoXCJwb3B1cDFcIiwgXCJDaG9vc2UgdGhlIG51bWJlclwiLCBzZWxlY3RlZE51bWJlciwgdHJ1ZSkuc2hvdygpLm9uKFwiY29uZmlybVwiLCAodmFsdWUpID0+IHsgY29uc29sZS5sb2codmFsdWUpIH0pIC8vIHNob3cgdGhlIHBvcHVwIGFuZCB3YWl0IGZvciB0aGUgdXNlciB0byBjb25maXJtXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnB1dFBvcHVwIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgICBDTTogQ29uc29sZU1hbmFnZXJcbiAgICBpZDogc3RyaW5nXG4gICAgdGl0bGU6IHN0cmluZ1xuICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXJcbiAgICBudW1lcmljOiBib29sZWFuXG4gICAgdmlzaWJsZTogYm9vbGVhblxuICAgIG1hcmdpblRvcDogbnVtYmVyXG4gICAgcGFyc2luZ01vdXNlRnJhbWUgPSBmYWxzZVxuICAgIC8qKiBAdmFyIHtudW1iZXJ9IHggLSBUaGUgeCBvZmZzZXQgb2YgdGhlIHBvcHVwIHRvIGJlIGRyb3duLiBJZiAwIGl0IHdpbGwgYmUgcGxhY2VkIG9uIHRoZSBjZW50ZXIgKi9cbiAgICBvZmZzZXRYOiBudW1iZXJcbiAgICAvKiogQHZhciB7bnVtYmVyfSB5IC0gVGhlIHkgb2Zmc2V0IG9mIHRoZSBwb3B1cCB0byBiZSBkcm93bi4gSWYgMCBpdCB3aWxsIGJlIHBsYWNlZCBvbiB0aGUgY2VudGVyICovXG4gICAgb2Zmc2V0WTogbnVtYmVyXG4gICAgcHJpdmF0ZSBhYnNvbHV0ZVZhbHVlczoge1xuICAgICAgICB4OiBudW1iZXJcbiAgICAgICAgeTogbnVtYmVyXG4gICAgICAgIHdpZHRoOiBudW1iZXJcbiAgICAgICAgaGVpZ2h0OiBudW1iZXJcbiAgICB9XG4gICAgZHJhZ2dpbmcgPSBmYWxzZVxuICAgIGRyYWdTdGFydDogeyB4OiBudW1iZXIsIHk6IG51bWJlciB9ID0geyB4OiAwLCB5OiAwIH1cbiAgICBmb2N1c2VkID0gZmFsc2VcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihpZDogc3RyaW5nLCB0aXRsZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyLCBudW1lcmljOiBib29sZWFuLCB2aXNpYmxlID0gZmFsc2UpIHtcbiAgICAgICAgc3VwZXIoKVxuICAgICAgICAvKiogQGNvbnN0IHtDb25zb2xlTWFuYWdlcn0gQ00gdGhlIGluc3RhbmNlIG9mIENvbnNvbGVNYW5hZ2VyIChzaW5nbGV0b24pICovXG4gICAgICAgIHRoaXMuQ00gPSBuZXcgQ29uc29sZU1hbmFnZXIoKVxuICAgICAgICB0aGlzLmlkID0gaWRcbiAgICAgICAgdGhpcy50aXRsZSA9IHRpdGxlXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZVxuICAgICAgICB0aGlzLm51bWVyaWMgPSBudW1lcmljXG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHZpc2libGVcbiAgICAgICAgdGhpcy5tYXJnaW5Ub3AgPSA0XG4gICAgICAgIHRoaXMub2Zmc2V0WCA9IDBcbiAgICAgICAgdGhpcy5vZmZzZXRZID0gMFxuICAgICAgICB0aGlzLmFic29sdXRlVmFsdWVzID0ge1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5DTS53aWRnZXRzQ29sbGVjdGlvblt0aGlzLmlkXSkge1xuICAgICAgICAgICAgdGhpcy5DTS51blJlZ2lzdGVyV2lkZ2V0KHRoaXMpXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYElucHV0UG9wdXAgJHt0aGlzLmlkfSBhbHJlYWR5IGV4aXN0cy5gXG4gICAgICAgICAgICB0aGlzLkNNLmVycm9yKG1lc3NhZ2UpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSlcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkNNLnJlZ2lzdGVyV2lnZXQodGhpcylcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIG1ha2UgdGhlIENvbnNvbGVNYW5hZ2VyIGhhbmRsZSB0aGUga2V5IGV2ZW50cyB3aGVuIHRoZSBpbnB1dCBpcyBudW1lcmljIGFuZCBpdCBpcyBzaG93ZWQuXG4gICAgICogSW5zaWRlIHRoaXMgZnVuY3Rpb24gYXJlIGRlZmluZWQgYWxsIHRoZSBrZXlzIHRoYXQgY2FuIGJlIHByZXNzZWQgYW5kIHRoZSBhY3Rpb25zIHRvIGRvIHdoZW4gdGhleSBhcmUgcHJlc3NlZC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gX3N0ciAtIFRoZSBzdHJpbmcgb2YgdGhlIGlucHV0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBrZXkgLSBUaGUga2V5IG9iamVjdC5cbiAgICAgKiBAbWVtYmVyb2YgSW5wdXRQb3B1cFxuICAgICAqL1xuICAgIHB1YmxpYyBrZXlMaXN0bmVyTnVtZXJpYyhfc3RyOiBzdHJpbmcsIGtleTogS2V5TGlzdGVuZXJBcmdzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNoZWNrUmVzdWx0ID0gdGhpcy5DTS5tb3VzZS5pc01vdXNlRnJhbWUoa2V5LCB0aGlzLnBhcnNpbmdNb3VzZUZyYW1lKVxuICAgICAgICBpZiAoY2hlY2tSZXN1bHQgPT09IDEpIHtcbiAgICAgICAgICAgIHRoaXMucGFyc2luZ01vdXNlRnJhbWUgPSB0cnVlXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfSBlbHNlIGlmIChjaGVja1Jlc3VsdCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMucGFyc2luZ01vdXNlRnJhbWUgPSBmYWxzZVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH0gLy8gQ29udGludWUgb25seSBpZiB0aGUgcmVzdWx0IGlzIDBcbiAgICAgICAgbGV0IHYgPSBOdW1iZXIodGhpcy52YWx1ZSlcbiAgICAgICAgaWYgKE51bWJlci5pc05hTih2KSkge1xuICAgICAgICAgICAgdiA9IDBcbiAgICAgICAgfVxuICAgICAgICBpZiAoIU51bWJlci5pc05hTihOdW1iZXIoa2V5Lm5hbWUpKSkge1xuICAgICAgICAgICAgaWYgKHYudG9TdHJpbmcoKS5sZW5ndGggPCAyMCkge1xuICAgICAgICAgICAgICAgIGxldCB0bXAgPSB0aGlzLnZhbHVlLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICB0bXAgKz0ga2V5Lm5hbWVcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gTnVtYmVyKHRtcClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRvIGNoYW5nZSB0aGUgc2lnbiBJIGNoZWNrIGZvciB0aGUga2V5cyBcIitcIiBhbmQgXCItXCJcbiAgICAgICAgfSBlbHNlIGlmIChrZXkuc2VxdWVuY2UgPT09IFwiLVwiKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdiAqIC0xXG4gICAgICAgIH0gZWxzZSBpZiAoa2V5LnNlcXVlbmNlID09PSBcIitcIikge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IE1hdGguYWJzKHYpXG4gICAgICAgIH0gZWxzZSBpZiAoa2V5LnNlcXVlbmNlID09PSBcIi5cIiB8fCBrZXkuc2VxdWVuY2UgPT09IFwiLFwiKSB7XG4gICAgICAgICAgICBpZiAodGhpcy52YWx1ZS50b1N0cmluZygpLmluZGV4T2YoXCIuXCIpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2ICsgXCIuXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN3aXRjaCAoa2V5Lm5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJiYWNrc3BhY2VcIjpcbiAgICAgICAgICAgICAgICAvLyBJZiBiYWNrc3BhY2UgaXMgcHJlc3NlZCBJIHJlbW92ZSB0aGUgbGFzdCBjaGFyYWN0ZXIgZnJvbSB0aGUgdHlwZWQgdmFsdWVcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZS50b1N0cmluZygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUudG9TdHJpbmcoKS5pbmRleE9mKFwiLlwiKSA9PT0gdGhpcy52YWx1ZS50b1N0cmluZygpLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2LnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlLnRvU3RyaW5nKCkuaW5kZXhPZihcIi5cIikgPT09IHRoaXMudmFsdWUudG9TdHJpbmcoKS5sZW5ndGggLSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS50b1N0cmluZygpLnNsaWNlKDAsIHRoaXMudmFsdWUudG9TdHJpbmcoKS5sZW5ndGggLSAxKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IE51bWJlcih2LnRvU3RyaW5nKCkuc2xpY2UoMCwgdi50b1N0cmluZygpLmxlbmd0aCAtIDEpKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlIFwicmV0dXJuXCI6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoXCJjb25maXJtXCIsIE51bWJlcih0aGlzLnZhbHVlKSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DTS51blJlZ2lzdGVyV2lkZ2V0KHRoaXMpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpXG4gICAgICAgICAgICAgICAgICAgIC8vZGVsZXRlIHRoaXNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgXCJlc2NhcGVcIjpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdChcImNhbmNlbFwiKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLkNNLnVuUmVnaXN0ZXJXaWRnZXQodGhpcylcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLy9kZWxldGUgdGhpc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSBcInFcIjpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQ00uZW1pdChcImV4aXRcIilcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DTS51blJlZ2lzdGVyV2lkZ2V0KHRoaXMpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpXG4gICAgICAgICAgICAgICAgICAgIC8vZGVsZXRlIHRoaXNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLkNNLnJlZnJlc2goKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbWFrZSB0aGUgQ29uc29sZU1hbmFnZXIgaGFuZGxlIHRoZSBrZXkgZXZlbnRzIHdoZW4gdGhlIGlucHV0IGlzIHRleHQgYW5kIGl0IGlzIHNob3dlZC5cbiAgICAgKiBJbnNpZGUgdGhpcyBmdW5jdGlvbiBhcmUgZGVmaW5lZCBhbGwgdGhlIGtleXMgdGhhdCBjYW4gYmUgcHJlc3NlZCBhbmQgdGhlIGFjdGlvbnMgdG8gZG8gd2hlbiB0aGV5IGFyZSBwcmVzc2VkLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBfc3RyIC0gVGhlIHN0cmluZyBvZiB0aGUgaW5wdXQuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGtleSAtIFRoZSBrZXkgb2JqZWN0LlxuICAgICAqIEBtZW1iZXJvZiBJbnB1dFBvcHVwXG4gICAgICovXG4gICAgcHVibGljIGtleUxpc3RuZXJUZXh0KF9zdHI6IHN0cmluZywga2V5OiBLZXlMaXN0ZW5lckFyZ3MpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2hlY2tSZXN1bHQgPSB0aGlzLkNNLm1vdXNlLmlzTW91c2VGcmFtZShrZXksIHRoaXMucGFyc2luZ01vdXNlRnJhbWUpXG4gICAgICAgIGlmIChjaGVja1Jlc3VsdCA9PT0gMSkge1xuICAgICAgICAgICAgdGhpcy5wYXJzaW5nTW91c2VGcmFtZSA9IHRydWVcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9IGVsc2UgaWYgKGNoZWNrUmVzdWx0ID09PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5wYXJzaW5nTW91c2VGcmFtZSA9IGZhbHNlXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfSAvLyBDb250aW51ZSBvbmx5IGlmIHRoZSByZXN1bHQgaXMgMFxuICAgICAgICBjb25zdCB2ID0gdGhpcy52YWx1ZVxuICAgICAgICBpZiAodi50b1N0cmluZygpLmxlbmd0aCA8IDIwKSB7XG4gICAgICAgICAgICBsZXQgdG1wID0gdi50b1N0cmluZygpXG4gICAgICAgICAgICB0bXAgKz0ga2V5Lm5hbWVcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0bXBcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGtleS5uYW1lKSB7XG4gICAgICAgIGNhc2UgXCJiYWNrc3BhY2VcIjpcbiAgICAgICAgICAgIC8vIElmIGJhY2tzcGFjZSBpcyBwcmVzc2VkIEkgcmVtb3ZlIHRoZSBsYXN0IGNoYXJhY3RlciBmcm9tIHRoZSB0eXBlZCB2YWx1ZVxuICAgICAgICAgICAgaWYgKHYudG9TdHJpbmcoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHYudG9TdHJpbmcoKS5zbGljZSgwLCB2LnRvU3RyaW5nKCkubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgXCJyZXR1cm5cIjpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXQoXCJjb25maXJtXCIsIHRoaXMudmFsdWUpXG4gICAgICAgICAgICAgICAgdGhpcy5DTS51blJlZ2lzdGVyV2lkZ2V0KHRoaXMpXG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKClcbiAgICAgICAgICAgICAgICAvL2RlbGV0ZSB0aGlzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIFwiZXNjYXBlXCI6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0KFwiY2FuY2VsXCIpXG4gICAgICAgICAgICAgICAgdGhpcy5DTS51blJlZ2lzdGVyV2lkZ2V0KHRoaXMpXG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKClcbiAgICAgICAgICAgICAgICAvL2RlbGV0ZSB0aGlzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIFwicVwiOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRoaXMuQ00uZW1pdChcImV4aXRcIilcbiAgICAgICAgICAgICAgICB0aGlzLkNNLnVuUmVnaXN0ZXJXaWRnZXQodGhpcylcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKVxuICAgICAgICAgICAgICAgIC8vZGVsZXRlIHRoaXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuQ00ucmVmcmVzaCgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBnZXQgdGhlIHZhbHVlIG9mIHRoZSBpbnB1dC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nIHwgbnVtYmVyfSBUaGUgdmFsdWUgb2YgdGhlIGlucHV0LlxuICAgICAqIEBtZW1iZXJvZiBJbnB1dFBvcHVwXG4gICAgICovXG4gICAgcHVibGljIGdldFZhbHVlKCk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjaGFuZ2UgdGhlIHZhbHVlIG9mIHRoZSBpbnB1dC4gSXQgYWxzbyByZWZyZXNoIHRoZSBDb25zb2xlTWFuYWdlci5cbiAgICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlcn0gbmV3VmFsdWUgLSBUaGUgbmV3IHZhbHVlIG9mIHRoZSBpbnB1dC5cbiAgICAgKiBAbWVtYmVyb2YgSW5wdXRQb3B1cFxuICAgICAqIEByZXR1cm5zIHtJbnB1dFBvcHVwfSBUaGUgaW5zdGFuY2Ugb2YgdGhlIElucHV0UG9wdXAuXG4gICAgICovXG4gICAgcHVibGljIHNldFZhbHVlKG5ld1ZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB0aGlzIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlXG4gICAgICAgIHRoaXMuQ00ucmVmcmVzaCgpXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBzaG93IHRoZSBwb3B1cC4gSXQgYWxzbyByZWdpc3RlciB0aGUga2V5IGV2ZW50cyBhbmQgcmVmcmVzaCB0aGUgQ29uc29sZU1hbmFnZXIuXG4gICAgICogQHJldHVybnMge0lucHV0UG9wdXB9IFRoZSBpbnN0YW5jZSBvZiB0aGUgSW5wdXRQb3B1cC5cbiAgICAgKiBAbWVtYmVyb2YgSW5wdXRQb3B1cFxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93KCk6IElucHV0UG9wdXAge1xuICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5tYW5hZ2VJbnB1dCgpXG4gICAgICAgICAgICB0aGlzLnZpc2libGUgPSB0cnVlXG4gICAgICAgICAgICB0aGlzLkNNLnJlZnJlc2goKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBoaWRlIHRoZSBwb3B1cC4gSXQgYWxzbyB1bnJlZ2lzdGVyIHRoZSBrZXkgZXZlbnRzIGFuZCByZWZyZXNoIHRoZSBDb25zb2xlTWFuYWdlci5cbiAgICAgKiBAcmV0dXJucyB7SW5wdXRQb3B1cH0gVGhlIGluc3RhbmNlIG9mIHRoZSBJbnB1dFBvcHVwLlxuICAgICAqIEBtZW1iZXJvZiBJbnB1dFBvcHVwXG4gICAgICovXG4gICAgcHVibGljIGhpZGUoKTogSW5wdXRQb3B1cCB7XG4gICAgICAgIGlmICh0aGlzLnZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMudW5NYW5hZ2VJbnB1dCgpXG4gICAgICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZVxuICAgICAgICAgICAgdGhpcy5DTS5yZWZyZXNoKClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZ2V0IHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBwb3B1cC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVGhlIHZpc2liaWxpdHkgb2YgdGhlIHBvcHVwLlxuICAgICAqIEBtZW1iZXJvZiBJbnB1dFBvcHVwXG4gICAgICovXG4gICAgcHVibGljIGlzVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gYWRkIHRoZSBJbnB1dFBvcHVwIGtleSBsaXN0ZW5lciBjYWxsYmFjayB0byB0ZSBDb25zb2xlTWFuYWdlci5cbiAgICAgKiBAcmV0dXJucyB7SW5wdXRQb3B1cH0gVGhlIGluc3RhbmNlIG9mIHRoZSBJbnB1dFBvcHVwLlxuICAgICAqIEBtZW1iZXJvZiBJbnB1dFBvcHVwXG4gICAgICovXG4gICAgcHJpdmF0ZSBtYW5hZ2VJbnB1dCgpOiBJbnB1dFBvcHVwIHtcbiAgICAgICAgLy8gQWRkIGEgY29tbWFuZCBpbnB1dCBsaXN0ZW5lciB0byBjaGFuZ2UgbW9kZVxuICAgICAgICBpZiAodGhpcy5udW1lcmljKSB7XG4gICAgICAgICAgICB0aGlzLkNNLnNldEtleUxpc3RlbmVyKHRoaXMuaWQsIHRoaXMua2V5TGlzdG5lck51bWVyaWMuYmluZCh0aGlzKSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuQ00uc2V0S2V5TGlzdGVuZXIodGhpcy5pZCwgdGhpcy5rZXlMaXN0bmVyVGV4dC5iaW5kKHRoaXMpKVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLkNNLm1vdXNlKSB0aGlzLkNNLnNldE1vdXNlTGlzdGVuZXIoYCR7dGhpcy5pZH1fbW91c2VgLCB0aGlzLm1vdXNlTGlzdGVuZXIuYmluZCh0aGlzKSlcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJlbW92ZSB0aGUgSW5wdXRQb3B1cCBrZXkgbGlzdGVuZXIgY2FsbGJhY2sgdG8gdGUgQ29uc29sZU1hbmFnZXIuXG4gICAgICogQHJldHVybnMge0lucHV0UG9wdXB9IFRoZSBpbnN0YW5jZSBvZiB0aGUgSW5wdXRQb3B1cC5cbiAgICAgKiBAbWVtYmVyb2YgSW5wdXRQb3B1cFxuICAgICAqL1xuICAgIHByaXZhdGUgdW5NYW5hZ2VJbnB1dCgpOiBJbnB1dFBvcHVwIHtcbiAgICAgICAgLy8gQWRkIGEgY29tbWFuZCBpbnB1dCBsaXN0ZW5lciB0byBjaGFuZ2UgbW9kZVxuICAgICAgICBpZiAodGhpcy5udW1lcmljKSB7XG4gICAgICAgICAgICB0aGlzLkNNLnJlbW92ZUtleUxpc3RlbmVyKHRoaXMuaWQvKiwgdGhpcy5rZXlMaXN0bmVyTnVtZXJpYy5iaW5kKHRoaXMpKi8pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLkNNLnJlbW92ZUtleUxpc3RlbmVyKHRoaXMuaWQvKiwgdGhpcy5rZXlMaXN0bmVyVGV4dC5iaW5kKHRoaXMpKi8pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuQ00ubW91c2UpIHRoaXMuQ00ucmVtb3ZlTW91c2VMaXN0ZW5lcihgJHt0aGlzLmlkfV9tb3VzZWApXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBtYW5hZ2UgdGhlIG1vdXNlIGV2ZW50cyBvbiB0aGUgT3B0aW9uUG9wdXAuXG4gICAgICogQHBhcmFtIHtNb3VzZUV2ZW50fSBldmVudCAtIFRoZSBzdHJpbmcgb2YgdGhlIGlucHV0LlxuICAgICAqIEBtZW1iZXJvZiBPcHRpb25Qb3B1cFxuICAgICAqL1xuICAgIHByaXZhdGUgbW91c2VMaXN0ZW5lciA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCB4ID0gZXZlbnQuZGF0YS54XG4gICAgICAgIGNvbnN0IHkgPSBldmVudC5kYXRhLnlcblxuICAgICAgICAvL3RoaXMuQ00ubG9nKGV2ZW50Lm5hbWUpXG4gICAgICAgIGlmICh4ID4gdGhpcy5hYnNvbHV0ZVZhbHVlcy54ICYmIHggPCB0aGlzLmFic29sdXRlVmFsdWVzLnggKyB0aGlzLmFic29sdXRlVmFsdWVzLndpZHRoICYmIHkgPiB0aGlzLmFic29sdXRlVmFsdWVzLnkgJiYgeSA8IHRoaXMuYWJzb2x1dGVWYWx1ZXMueSArIHRoaXMuYWJzb2x1dGVWYWx1ZXMuaGVpZ2h0KSB7XG4gICAgICAgICAgICAvLyBUaGUgbW91c2UgaXMgaW5zaWRlIHRoZSBwb3B1cFxuICAgICAgICAgICAgLy90aGlzLkNNLmxvZyhcIk1vdXNlIGluc2lkZSBwb3B1cFwiKVxuICAgICAgICAgICAgaWYgKGV2ZW50Lm5hbWUgPT09IFwiTU9VU0VfV0hFRUxfRE9XTlwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubnVtZXJpYykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gTnVtYmVyKHRoaXMudmFsdWUpICsgMVxuICAgICAgICAgICAgICAgICAgICB0aGlzLkNNLnJlZnJlc2goKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50Lm5hbWUgPT09IFwiTU9VU0VfV0hFRUxfVVBcIikge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm51bWVyaWMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IE51bWJlcih0aGlzLnZhbHVlKSAtIDFcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DTS5yZWZyZXNoKClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZVxuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5uYW1lID09PSBcIk1PVVNFX0xFRlRfQlVUVE9OX1BSRVNTRURcIikge1xuICAgICAgICAgICAgICAgIC8vIGZpbmQgdGhlIHNlbGVjdGVkIGluZGV4IG9mIHRoZSBjbGljayBhbmQgc2V0IGl0IGFzIHNlbGVjdGVkXG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQubmFtZSA9PT0gXCJNT1VTRV9EUkFHXCIgJiYgZXZlbnQuZGF0YS5sZWZ0ID09PSB0cnVlICYmIHRoaXMuZHJhZ2dpbmcgPT09IGZhbHNlICYmIHRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgICAgLy8gY2hlY2sgaWYgdGhlIG1vdXNlIGlzIG9uIHRoZSBoZWFkZXIgb2YgdGhlIHBvcHVwIChmaXJzdCB0aHJlZSBsaW5lcylcbiAgICAgICAgICAgIGlmICh4ID4gdGhpcy5hYnNvbHV0ZVZhbHVlcy54ICYmIHggPCB0aGlzLmFic29sdXRlVmFsdWVzLnggKyB0aGlzLmFic29sdXRlVmFsdWVzLndpZHRoICYmIHkgPiB0aGlzLmFic29sdXRlVmFsdWVzLnkgJiYgeSA8IHRoaXMuYWJzb2x1dGVWYWx1ZXMueSArIDMvKiAzID0gaGVhZGVyIGhlaWdodCAqLykge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnU3RhcnQgPSB7IHg6IHgsIHk6IHkgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50Lm5hbWUgPT09IFwiTU9VU0VfRFJBR1wiICYmIGV2ZW50LmRhdGEubGVmdCA9PT0gdHJ1ZSAmJiB0aGlzLmRyYWdnaW5nID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoKHkgLSB0aGlzLmRyYWdTdGFydC55KSArIHRoaXMuYWJzb2x1dGVWYWx1ZXMueSA8IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gLy8gcHJldmVudCB0aGUgcG9wdXAgdG8gZ28gb3V0IG9mIHRoZSB0b3Agb2YgdGhlIHNjcmVlblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCh4IC0gdGhpcy5kcmFnU3RhcnQueCkgKyB0aGlzLmFic29sdXRlVmFsdWVzLnggPCAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC8vIHByZXZlbnQgdGhlIHBvcHVwIHRvIGdvIG91dCBvZiB0aGUgbGVmdCBvZiB0aGUgc2NyZWVuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9mZnNldFggKz0geCAtIHRoaXMuZHJhZ1N0YXJ0LnhcbiAgICAgICAgICAgIHRoaXMub2Zmc2V0WSArPSB5IC0gdGhpcy5kcmFnU3RhcnQueVxuICAgICAgICAgICAgdGhpcy5kcmFnU3RhcnQgPSB7IHg6IHgsIHk6IHkgfVxuICAgICAgICAgICAgdGhpcy5DTS5yZWZyZXNoKClcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5uYW1lID09PSBcIk1PVVNFX0xFRlRfQlVUVE9OX1JFTEVBU0VEXCIgJiYgdGhpcy5kcmFnZ2luZyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlXG4gICAgICAgICAgICB0aGlzLkNNLnJlZnJlc2goKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBkcmF3IHRoZSBJbnB1dFBvcHVwIHRvIHRoZSBzY3JlZW4gaW4gdGhlIG1pZGRsZS5cbiAgICAgKiBAcmV0dXJucyB7SW5wdXRQb3B1cH0gVGhlIGluc3RhbmNlIG9mIHRoZSBJbnB1dFBvcHVwLlxuICAgICAqIEBtZW1iZXJvZiBJbnB1dFBvcHVwXG4gICAgICovXG4gICAgcHVibGljIGRyYXcoKTogSW5wdXRQb3B1cCB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IDJcbiAgICAgICAgY29uc3Qgd2luZG93V2lkdGggPSB0aGlzLnRpdGxlLmxlbmd0aCA+IHRoaXMudmFsdWUudG9TdHJpbmcoKS5sZW5ndGggPyB0aGlzLnRpdGxlLmxlbmd0aCArICgyICogb2Zmc2V0KSA6IHRoaXMudmFsdWUudG9TdHJpbmcoKS5sZW5ndGggKyAoMiAqIG9mZnNldCkgKyAxXG4gICAgICAgIGNvbnN0IGhhbGZXaWR0aCA9IE1hdGgucm91bmQoKHdpbmRvd1dpZHRoIC0gdGhpcy50aXRsZS5sZW5ndGgpIC8gMilcbiAgICAgICAgbGV0IGhlYWRlciA9IFwi4pSMXCJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aW5kb3dXaWR0aDsgaSsrKSB7XG4gICAgICAgICAgICBoZWFkZXIgKz0gXCLilIBcIlxuICAgICAgICB9XG4gICAgICAgIGhlYWRlciArPSBcIuKUkFxcblwiXG4gICAgICAgIGhlYWRlciArPSBg4pSCJHtcIiBcIi5yZXBlYXQoaGFsZldpZHRoKX0ke3RoaXMudGl0bGV9JHtcIiBcIi5yZXBlYXQod2luZG93V2lkdGggLSBoYWxmV2lkdGggLSB0aGlzLnRpdGxlLmxlbmd0aCl94pSCXFxuYFxuICAgICAgICBoZWFkZXIgKz0gXCLilJxcIiArIFwi4pSAXCIucmVwZWF0KHdpbmRvd1dpZHRoKSArIFwi4pSkXFxuXCJcblxuICAgICAgICBsZXQgZm9vdGVyID0gXCLilJRcIlxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdpbmRvd1dpZHRoOyBpKyspIHtcbiAgICAgICAgICAgIGZvb3RlciArPSBcIuKUgFwiXG4gICAgICAgIH1cbiAgICAgICAgZm9vdGVyICs9IFwi4pSYXFxuXCJcblxuICAgICAgICBsZXQgY29udGVudCA9IFwiXCJcbiAgICAgICAgLy8gRHJhdyBhbiBpbnB1dCBmaWVsZFxuICAgICAgICBjb250ZW50ICs9IGDilIIke1wiPiBcIn0ke3RoaXMudmFsdWV94paIJHtcIiBcIi5yZXBlYXQod2luZG93V2lkdGggLSB0aGlzLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoIC0gMyl94pSCXFxuYFxuXG4gICAgICAgIGNvbnN0IHdpbmRvd0Rlc2lnbiA9IGAke2hlYWRlcn0ke2NvbnRlbnR9JHtmb290ZXJ9YFxuICAgICAgICBjb25zdCB3aW5kb3dEZXNpZ25MaW5lcyA9IHdpbmRvd0Rlc2lnbi5zcGxpdChcIlxcblwiKVxuICAgICAgICBjb25zdCBjZW50ZXJTY3JlZW4gPSBNYXRoLnJvdW5kKCh0aGlzLkNNLlNjcmVlbi53aWR0aCAvIDIpIC0gKHdpbmRvd1dpZHRoIC8gMikpXG4gICAgICAgIHdpbmRvd0Rlc2lnbi5zcGxpdChcIlxcblwiKS5mb3JFYWNoKChsaW5lLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4uY3Vyc29yVG8oY2VudGVyU2NyZWVuICsgdGhpcy5vZmZzZXRYLCB0aGlzLm1hcmdpblRvcCArIGluZGV4ICsgdGhpcy5vZmZzZXRZKVxuICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBsaW5lLCBzdHlsZTogeyBjb2xvcjogXCJ3aGl0ZVwiIH0gfSlcbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5hYnNvbHV0ZVZhbHVlcyA9IHtcbiAgICAgICAgICAgIHg6IGNlbnRlclNjcmVlbiArIHRoaXMub2Zmc2V0WCxcbiAgICAgICAgICAgIHk6IHRoaXMubWFyZ2luVG9wICsgdGhpcy5vZmZzZXRZLFxuICAgICAgICAgICAgd2lkdGg6IHdpbmRvd1dpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiB3aW5kb3dEZXNpZ25MaW5lcy5sZW5ndGgsXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IElucHV0UG9wdXAiXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5wdXRQb3B1cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3dpZGdldHMvSW5wdXRQb3B1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQW1CLE1BQU0scUJBQXFCLENBQUE7QUFHckU7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQU0sT0FBTyxVQUFXLFNBQVEsWUFBWTtJQXVCeEMsWUFBbUIsRUFBVSxFQUFFLEtBQWEsRUFBRSxLQUFzQixFQUFFLE9BQWdCLEVBQUUsT0FBTyxHQUFHLEtBQUs7UUFDbkcsS0FBSyxFQUFFLENBQUE7UUFoQlgsc0JBQWlCLEdBQUcsS0FBSyxDQUFBO1FBV3pCLGFBQVEsR0FBRyxLQUFLLENBQUE7UUFDaEIsY0FBUyxHQUE2QixFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFBO1FBQ3BELFlBQU8sR0FBRyxLQUFLLENBQUE7UUFrUWY7Ozs7V0FJRztRQUNLLGtCQUFhLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7WUFDMUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7WUFDdEIsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7WUFFdEIseUJBQXlCO1lBQ3pCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENB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QVMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQzNGLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNuRSxDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxjQUFjLEdBQUc7WUFDbEIsQ0FBQyxFQUFFLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTztZQUM5QixDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTztZQUNoQyxLQUFLLEVBQUUsV0FBVztZQUNsQixNQUFNLEVBQUUsaUJBQWlCLENBQUMsTUFBTTtTQUNuQyxDQUFBO1FBQ0QsT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDO0NBQ0o7QUFFRCxlQUFlLFVBQVUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gXCJldmVudHNcIlxuaW1wb3J0IHsgQ29uc29sZU1hbmFnZXIsIEtleUxpc3RlbmVyQXJncyB9IGZyb20gXCIuLi8uLi9Db25zb2xlR3VpLmpzXCJcbmltcG9ydCB7IE1vdXNlRXZlbnQgfSBmcm9tIFwiLi4vTW91c2VNYW5hZ2VyLmpzXCJcblxuLyoqXG4gKiBAY2xhc3MgSW5wdXRQb3B1cFxuICogQGV4dGVuZHMgRXZlbnRFbWl0dGVyXG4gKiBAZGVzY3JpcHRpb24gVGhpcyBjbGFzcyBpcyB1c2VkIHRvIGNyZWF0ZSBhIHBvcHVwIHdpdGggYSB0ZXh0IG9yIG51bWVyaWMgaW5wdXQuIFxuICogXG4gKiAhW0lucHV0UG9wdXBdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzE0OTA3OTg3LzE2NTc1MjI4MS1lODM2Yjg2Mi1hNTRhLTQ4ZDUtYjRlNy05NTQzNzRkNjUwOWYuZ2lmKVxuICogXG4gKiBFbWl0cyB0aGUgZm9sbG93aW5nIGV2ZW50czogXG4gKiAtIFwiY29uZmlybVwiIHdoZW4gdGhlIHVzZXIgY29uZmlybSB0aGUgaW5wdXRcbiAqIC0gXCJjYW5jZWxcIiB3aGVuIHRoZSB1c2VyIGNhbmNlbCB0aGUgaW5wdXRcbiAqIC0gXCJleGl0XCIgd2hlbiB0aGUgdXNlciBleGl0IHRoZSBpbnB1dFxuICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gVGhlIGlkIG9mIHRoZSBwb3B1cC5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSAtIFRoZSB0aXRsZSBvZiB0aGUgcG9wdXAuXG4gKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlcn0gdmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIGlucHV0LlxuICogQHBhcmFtIHtib29sZWFufSBudW1lcmljIC0gSWYgdGhlIGlucHV0IGlzIG51bWVyaWMuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHZpc2libGUgLSBJZiB0aGUgcG9wdXAgaXMgdmlzaWJsZS4gRGVmYXVsdCBpcyBmYWxzZSAobWFrZSBpdCBhcHBlYXJzIHVzaW5nIHNob3coKSkuXG4gKiBcbiAqIEBleGFtcGxlIGNvbnN0IHBvcHVwID0gbmV3IElucHV0UG9wdXAoXCJwb3B1cDFcIiwgXCJDaG9vc2UgdGhlIG51bWJlclwiLCBzZWxlY3RlZE51bWJlciwgdHJ1ZSkuc2hvdygpLm9uKFwiY29uZmlybVwiLCAodmFsdWUpID0+IHsgY29uc29sZS5sb2codmFsdWUpIH0pIC8vIHNob3cgdGhlIHBvcHVwIGFuZCB3YWl0IGZvciB0aGUgdXNlciB0byBjb25maXJtXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnB1dFBvcHVwIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgICBDTTogQ29uc29sZU1hbmFnZXJcbiAgICBpZDogc3RyaW5nXG4gICAgdGl0bGU6IHN0cmluZ1xuICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXJcbiAgICBudW1lcmljOiBib29sZWFuXG4gICAgdmlzaWJsZTogYm9vbGVhblxuICAgIG1hcmdpblRvcDogbnVtYmVyXG4gICAgcGFyc2luZ01vdXNlRnJhbWUgPSBmYWxzZVxuICAgIC8qKiBAdmFyIHtudW1iZXJ9IHggLSBUaGUgeCBvZmZzZXQgb2YgdGhlIHBvcHVwIHRvIGJlIGRyb3duLiBJZiAwIGl0IHdpbGwgYmUgcGxhY2VkIG9uIHRoZSBjZW50ZXIgKi9cbiAgICBvZmZzZXRYOiBudW1iZXJcbiAgICAvKiogQHZhciB7bnVtYmVyfSB5IC0gVGhlIHkgb2Zmc2V0IG9mIHRoZSBwb3B1cCB0byBiZSBkcm93bi4gSWYgMCBpdCB3aWxsIGJlIHBsYWNlZCBvbiB0aGUgY2VudGVyICovXG4gICAgb2Zmc2V0WTogbnVtYmVyXG4gICAgcHJpdmF0ZSBhYnNvbHV0ZVZhbHVlczoge1xuICAgICAgICB4OiBudW1iZXJcbiAgICAgICAgeTogbnVtYmVyXG4gICAgICAgIHdpZHRoOiBudW1iZXJcbiAgICAgICAgaGVpZ2h0OiBudW1iZXJcbiAgICB9XG4gICAgZHJhZ2dpbmcgPSBmYWxzZVxuICAgIGRyYWdTdGFydDogeyB4OiBudW1iZXIsIHk6IG51bWJlciB9ID0geyB4OiAwLCB5OiAwIH1cbiAgICBmb2N1c2VkID0gZmFsc2VcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihpZDogc3RyaW5nLCB0aXRsZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyLCBudW1lcmljOiBib29sZWFuLCB2aXNpYmxlID0gZmFsc2UpIHtcbiAgICAgICAgc3VwZXIoKVxuICAgICAgICAvKiogQGNvbnN0IHtDb25zb2xlTWFuYWdlcn0gQ00gdGhlIGluc3RhbmNlIG9mIENvbnNvbGVNYW5hZ2VyIChzaW5nbGV0b24pICovXG4gICAgICAgIHRoaXMuQ00gPSBuZXcgQ29uc29sZU1hbmFnZXIoKVxuICAgICAgICB0aGlzLmlkID0gaWRcbiAgICAgICAgdGhpcy50aXRsZSA9IHRpdGxlXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZVxuICAgICAgICB0aGlzLm51bWVyaWMgPSBudW1lcmljXG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHZpc2libGVcbiAgICAgICAgdGhpcy5tYXJnaW5Ub3AgPSA0XG4gICAgICAgIHRoaXMub2Zmc2V0WCA9IDBcbiAgICAgICAgdGhpcy5vZmZzZXRZID0gMFxuICAgICAgICB0aGlzLmFic29sdXRlVmFsdWVzID0ge1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5DTS53aWRnZXRzQ29sbGVjdGlvblt0aGlzLmlkXSkge1xuICAgICAgICAgICAgdGhpcy5DTS51blJlZ2lzdGVyV2lkZ2V0KHRoaXMpXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYElucHV0UG9wdXAgJHt0aGlzLmlkfSBhbHJlYWR5IGV4aXN0cy5gXG4gICAgICAgICAgICB0aGlzLkNNLmVycm9yKG1lc3NhZ2UpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSlcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkNNLnJlZ2lzdGVyV2lnZXQodGhpcylcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIG1ha2UgdGhlIENvbnNvbGVNYW5hZ2VyIGhhbmRsZSB0aGUga2V5IGV2ZW50cyB3aGVuIHRoZSBpbnB1dCBpcyBudW1lcmljIGFuZCBpdCBpcyBzaG93ZWQuXG4gICAgICogSW5zaWRlIHRoaXMgZnVuY3Rpb24gYXJlIGRlZmluZWQgYWxsIHRoZSBrZXlzIHRoYXQgY2FuIGJlIHByZXNzZWQgYW5kIHRoZSBhY3Rpb25zIHRvIGRvIHdoZW4gdGhleSBhcmUgcHJlc3NlZC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gX3N0ciAtIFRoZSBzdHJpbmcgb2YgdGhlIGlucHV0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBrZXkgLSBUaGUga2V5IG9iamVjdC5cbiAgICAgKiBAbWVtYmVyb2YgSW5wdXRQb3B1cFxuICAgICAqL1xuICAgIHB1YmxpYyBrZXlMaXN0bmVyTnVtZXJpYyhfc3RyOiBzdHJpbmcsIGtleTogS2V5TGlzdGVuZXJBcmdzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNoZWNrUmVzdWx0ID0gdGhpcy5DTS5tb3VzZS5pc01vdXNlRnJhbWUoa2V5LCB0aGlzLnBhcnNpbmdNb3VzZUZyYW1lKVxuICAgICAgICBpZiAoY2hlY2tSZXN1bHQgPT09IDEpIHtcbiAgICAgICAgICAgIHRoaXMucGFyc2luZ01vdXNlRnJhbWUgPSB0cnVlXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfSBlbHNlIGlmIChjaGVja1Jlc3VsdCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMucGFyc2luZ01vdXNlRnJhbWUgPSBmYWxzZVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH0gLy8gQ29udGludWUgb25seSBpZiB0aGUgcmVzdWx0IGlzIDBcbiAgICAgICAgbGV0IHYgPSBOdW1iZXIodGhpcy52YWx1ZSlcbiAgICAgICAgaWYgKE51bWJlci5pc05hTih2KSkge1xuICAgICAgICAgICAgdiA9IDBcbiAgICAgICAgfVxuICAgICAgICBpZiAoIU51bWJlci5pc05hTihOdW1iZXIoa2V5Lm5hbWUpKSkge1xuICAgICAgICAgICAgaWYgKHYudG9TdHJpbmcoKS5sZW5ndGggPCAyMCkge1xuICAgICAgICAgICAgICAgIGxldCB0bXAgPSB0aGlzLnZhbHVlLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICB0bXAgKz0ga2V5Lm5hbWVcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gTnVtYmVyKHRtcClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRvIGNoYW5nZSB0aGUgc2lnbiBJIGNoZWNrIGZvciB0aGUga2V5cyBcIitcIiBhbmQgXCItXCJcbiAgICAgICAgfSBlbHNlIGlmIChrZXkuc2VxdWVuY2UgPT09IFwiLVwiKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdiAqIC0xXG4gICAgICAgIH0gZWxzZSBpZiAoa2V5LnNlcXVlbmNlID09PSBcIitcIikge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IE1hdGguYWJzKHYpXG4gICAgICAgIH0gZWxzZSBpZiAoa2V5LnNlcXVlbmNlID09PSBcIi5cIiB8fCBrZXkuc2VxdWVuY2UgPT09IFwiLFwiKSB7XG4gICAgICAgICAgICBpZiAodGhpcy52YWx1ZS50b1N0cmluZygpLmluZGV4T2YoXCIuXCIpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2ICsgXCIuXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN3aXRjaCAoa2V5Lm5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJiYWNrc3BhY2VcIjpcbiAgICAgICAgICAgICAgICAvLyBJZiBiYWNrc3BhY2UgaXMgcHJlc3NlZCBJIHJlbW92ZSB0aGUgbGFzdCBjaGFyYWN0ZXIgZnJvbSB0aGUgdHlwZWQgdmFsdWVcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZS50b1N0cmluZygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUudG9TdHJpbmcoKS5pbmRleE9mKFwiLlwiKSA9PT0gdGhpcy52YWx1ZS50b1N0cmluZygpLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2LnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlLnRvU3RyaW5nKCkuaW5kZXhPZihcIi5cIikgPT09IHRoaXMudmFsdWUudG9TdHJpbmcoKS5sZW5ndGggLSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS50b1N0cmluZygpLnNsaWNlKDAsIHRoaXMudmFsdWUudG9TdHJpbmcoKS5sZW5ndGggLSAxKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IE51bWJlcih2LnRvU3RyaW5nKCkuc2xpY2UoMCwgdi50b1N0cmluZygpLmxlbmd0aCAtIDEpKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlIFwicmV0dXJuXCI6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoXCJjb25maXJtXCIsIE51bWJlcih0aGlzLnZhbHVlKSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DTS51blJlZ2lzdGVyV2lkZ2V0KHRoaXMpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpXG4gICAgICAgICAgICAgICAgICAgIC8vZGVsZXRlIHRoaXNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgXCJlc2NhcGVcIjpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdChcImNhbmNlbFwiKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLkNNLnVuUmVnaXN0ZXJXaWRnZXQodGhpcylcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgLy9kZWxldGUgdGhpc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSBcInFcIjpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQ00uZW1pdChcImV4aXRcIilcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DTS51blJlZ2lzdGVyV2lkZ2V0KHRoaXMpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpXG4gICAgICAgICAgICAgICAgICAgIC8vZGVsZXRlIHRoaXNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLkNNLnJlZnJlc2goKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbWFrZSB0aGUgQ29uc29sZU1hbmFnZXIgaGFuZGxlIHRoZSBrZXkgZXZlbnRzIHdoZW4gdGhlIGlucHV0IGlzIHRleHQgYW5kIGl0IGlzIHNob3dlZC5cbiAgICAgKiBJbnNpZGUgdGhpcyBmdW5jdGlvbiBhcmUgZGVmaW5lZCBhbGwgdGhlIGtleXMgdGhhdCBjYW4gYmUgcHJlc3NlZCBhbmQgdGhlIGFjdGlvbnMgdG8gZG8gd2hlbiB0aGV5IGFyZSBwcmVzc2VkLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBfc3RyIC0gVGhlIHN0cmluZyBvZiB0aGUgaW5wdXQuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGtleSAtIFRoZSBrZXkgb2JqZWN0LlxuICAgICAqIEBtZW1iZXJvZiBJbnB1dFBvcHVwXG4gICAgICovXG4gICAgcHVibGljIGtleUxpc3RuZXJUZXh0KF9zdHI6IHN0cmluZywga2V5OiBLZXlMaXN0ZW5lckFyZ3MpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2hlY2tSZXN1bHQgPSB0aGlzLkNNLm1vdXNlLmlzTW91c2VGcmFtZShrZXksIHRoaXMucGFyc2luZ01vdXNlRnJhbWUpXG4gICAgICAgIGlmIChjaGVja1Jlc3VsdCA9PT0gMSkge1xuICAgICAgICAgICAgdGhpcy5wYXJzaW5nTW91c2VGcmFtZSA9IHRydWVcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9IGVsc2UgaWYgKGNoZWNrUmVzdWx0ID09PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5wYXJzaW5nTW91c2VGcmFtZSA9IGZhbHNlXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfSAvLyBDb250aW51ZSBvbmx5IGlmIHRoZSByZXN1bHQgaXMgMFxuICAgICAgICBjb25zdCB2ID0gdGhpcy52YWx1ZVxuICAgICAgICBpZiAodi50b1N0cmluZygpLmxlbmd0aCA8IDIwKSB7XG4gICAgICAgICAgICBsZXQgdG1wID0gdi50b1N0cmluZygpXG4gICAgICAgICAgICB0bXAgKz0ga2V5Lm5hbWVcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0bXBcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGtleS5uYW1lKSB7XG4gICAgICAgIGNhc2UgXCJiYWNrc3BhY2VcIjpcbiAgICAgICAgICAgIC8vIElmIGJhY2tzcGFjZSBpcyBwcmVzc2VkIEkgcmVtb3ZlIHRoZSBsYXN0IGNoYXJhY3RlciBmcm9tIHRoZSB0eXBlZCB2YWx1ZVxuICAgICAgICAgICAgaWYgKHYudG9TdHJpbmcoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHYudG9TdHJpbmcoKS5zbGljZSgwLCB2LnRvU3RyaW5nKCkubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgXCJyZXR1cm5cIjpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXQoXCJjb25maXJtXCIsIHRoaXMudmFsdWUpXG4gICAgICAgICAgICAgICAgdGhpcy5DTS51blJlZ2lzdGVyV2lkZ2V0KHRoaXMpXG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKClcbiAgICAgICAgICAgICAgICAvL2RlbGV0ZSB0aGlzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIFwiZXNjYXBlXCI6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0KFwiY2FuY2VsXCIpXG4gICAgICAgICAgICAgICAgdGhpcy5DTS51blJlZ2lzdGVyV2lkZ2V0KHRoaXMpXG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKClcbiAgICAgICAgICAgICAgICAvL2RlbGV0ZSB0aGlzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIFwicVwiOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRoaXMuQ00uZW1pdChcImV4aXRcIilcbiAgICAgICAgICAgICAgICB0aGlzLkNNLnVuUmVnaXN0ZXJXaWRnZXQodGhpcylcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKVxuICAgICAgICAgICAgICAgIC8vZGVsZXRlIHRoaXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuQ00ucmVmcmVzaCgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBnZXQgdGhlIHZhbHVlIG9mIHRoZSBpbnB1dC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nIHwgbnVtYmVyfSBUaGUgdmFsdWUgb2YgdGhlIGlucHV0LlxuICAgICAqIEBtZW1iZXJvZiBJbnB1dFBvcHVwXG4gICAgICovXG4gICAgcHVibGljIGdldFZhbHVlKCk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjaGFuZ2UgdGhlIHZhbHVlIG9mIHRoZSBpbnB1dC4gSXQgYWxzbyByZWZyZXNoIHRoZSBDb25zb2xlTWFuYWdlci5cbiAgICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlcn0gbmV3VmFsdWUgLSBUaGUgbmV3IHZhbHVlIG9mIHRoZSBpbnB1dC5cbiAgICAgKiBAbWVtYmVyb2YgSW5wdXRQb3B1cFxuICAgICAqIEByZXR1cm5zIHtJbnB1dFBvcHVwfSBUaGUgaW5zdGFuY2Ugb2YgdGhlIElucHV0UG9wdXAuXG4gICAgICovXG4gICAgcHVibGljIHNldFZhbHVlKG5ld1ZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB0aGlzIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlXG4gICAgICAgIHRoaXMuQ00ucmVmcmVzaCgpXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBzaG93IHRoZSBwb3B1cC4gSXQgYWxzbyByZWdpc3RlciB0aGUga2V5IGV2ZW50cyBhbmQgcmVmcmVzaCB0aGUgQ29uc29sZU1hbmFnZXIuXG4gICAgICogQHJldHVybnMge0lucHV0UG9wdXB9IFRoZSBpbnN0YW5jZSBvZiB0aGUgSW5wdXRQb3B1cC5cbiAgICAgKiBAbWVtYmVyb2YgSW5wdXRQb3B1cFxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93KCk6IElucHV0UG9wdXAge1xuICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5tYW5hZ2VJbnB1dCgpXG4gICAgICAgICAgICB0aGlzLnZpc2libGUgPSB0cnVlXG4gICAgICAgICAgICB0aGlzLkNNLnJlZnJlc2goKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBoaWRlIHRoZSBwb3B1cC4gSXQgYWxzbyB1bnJlZ2lzdGVyIHRoZSBrZXkgZXZlbnRzIGFuZCByZWZyZXNoIHRoZSBDb25zb2xlTWFuYWdlci5cbiAgICAgKiBAcmV0dXJucyB7SW5wdXRQb3B1cH0gVGhlIGluc3RhbmNlIG9mIHRoZSBJbnB1dFBvcHVwLlxuICAgICAqIEBtZW1iZXJvZiBJbnB1dFBvcHVwXG4gICAgICovXG4gICAgcHVibGljIGhpZGUoKTogSW5wdXRQb3B1cCB7XG4gICAgICAgIGlmICh0aGlzLnZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMudW5NYW5hZ2VJbnB1dCgpXG4gICAgICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZVxuICAgICAgICAgICAgdGhpcy5DTS5yZWZyZXNoKClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZ2V0IHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBwb3B1cC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVGhlIHZpc2liaWxpdHkgb2YgdGhlIHBvcHVwLlxuICAgICAqIEBtZW1iZXJvZiBJbnB1dFBvcHVwXG4gICAgICovXG4gICAgcHVibGljIGlzVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gYWRkIHRoZSBJbnB1dFBvcHVwIGtleSBsaXN0ZW5lciBjYWxsYmFjayB0byB0ZSBDb25zb2xlTWFuYWdlci5cbiAgICAgKiBAcmV0dXJucyB7SW5wdXRQb3B1cH0gVGhlIGluc3RhbmNlIG9mIHRoZSBJbnB1dFBvcHVwLlxuICAgICAqIEBtZW1iZXJvZiBJbnB1dFBvcHVwXG4gICAgICovXG4gICAgcHJpdmF0ZSBtYW5hZ2VJbnB1dCgpOiBJbnB1dFBvcHVwIHtcbiAgICAgICAgLy8gQWRkIGEgY29tbWFuZCBpbnB1dCBsaXN0ZW5lciB0byBjaGFuZ2UgbW9kZVxuICAgICAgICBpZiAodGhpcy5udW1lcmljKSB7XG4gICAgICAgICAgICB0aGlzLkNNLnNldEtleUxpc3RlbmVyKHRoaXMuaWQsIHRoaXMua2V5TGlzdG5lck51bWVyaWMuYmluZCh0aGlzKSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuQ00uc2V0S2V5TGlzdGVuZXIodGhpcy5pZCwgdGhpcy5rZXlMaXN0bmVyVGV4dC5iaW5kKHRoaXMpKVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLkNNLm1vdXNlKSB0aGlzLkNNLnNldE1vdXNlTGlzdGVuZXIoYCR7dGhpcy5pZH1fbW91c2VgLCB0aGlzLm1vdXNlTGlzdGVuZXIuYmluZCh0aGlzKSlcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJlbW92ZSB0aGUgSW5wdXRQb3B1cCBrZXkgbGlzdGVuZXIgY2FsbGJhY2sgdG8gdGUgQ29uc29sZU1hbmFnZXIuXG4gICAgICogQHJldHVybnMge0lucHV0UG9wdXB9IFRoZSBpbnN0YW5jZSBvZiB0aGUgSW5wdXRQb3B1cC5cbiAgICAgKiBAbWVtYmVyb2YgSW5wdXRQb3B1cFxuICAgICAqL1xuICAgIHByaXZhdGUgdW5NYW5hZ2VJbnB1dCgpOiBJbnB1dFBvcHVwIHtcbiAgICAgICAgLy8gQWRkIGEgY29tbWFuZCBpbnB1dCBsaXN0ZW5lciB0byBjaGFuZ2UgbW9kZVxuICAgICAgICBpZiAodGhpcy5udW1lcmljKSB7XG4gICAgICAgICAgICB0aGlzLkNNLnJlbW92ZUtleUxpc3RlbmVyKHRoaXMuaWQvKiwgdGhpcy5rZXlMaXN0bmVyTnVtZXJpYy5iaW5kKHRoaXMpKi8pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLkNNLnJlbW92ZUtleUxpc3RlbmVyKHRoaXMuaWQvKiwgdGhpcy5rZXlMaXN0bmVyVGV4dC5iaW5kKHRoaXMpKi8pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuQ00ubW91c2UpIHRoaXMuQ00ucmVtb3ZlTW91c2VMaXN0ZW5lcihgJHt0aGlzLmlkfV9tb3VzZWApXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBtYW5hZ2UgdGhlIG1vdXNlIGV2ZW50cyBvbiB0aGUgT3B0aW9uUG9wdXAuXG4gICAgICogQHBhcmFtIHtNb3VzZUV2ZW50fSBldmVudCAtIFRoZSBzdHJpbmcgb2YgdGhlIGlucHV0LlxuICAgICAqIEBtZW1iZXJvZiBPcHRpb25Qb3B1cFxuICAgICAqL1xuICAgIHByaXZhdGUgbW91c2VMaXN0ZW5lciA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCB4ID0gZXZlbnQuZGF0YS54XG4gICAgICAgIGNvbnN0IHkgPSBldmVudC5kYXRhLnlcblxuICAgICAgICAvL3RoaXMuQ00ubG9nKGV2ZW50Lm5hbWUpXG4gICAgICAgIGlmICh4ID4gdGhpcy5hYnNvbHV0ZVZhbHVlcy54ICYmIHggPCB0aGlzLmFic29sdXRlVmFsdWVzLnggKyB0aGlzLmFic29sdXRlVmFsdWVzLndpZHRoICYmIHkgPiB0aGlzLmFic29sdXRlVmFsdWVzLnkgJiYgeSA8IHRoaXMuYWJzb2x1dGVWYWx1ZXMueSArIHRoaXMuYWJzb2x1dGVWYWx1ZXMuaGVpZ2h0KSB7XG4gICAgICAgICAgICAvLyBUaGUgbW91c2UgaXMgaW5zaWRlIHRoZSBwb3B1cFxuICAgICAgICAgICAgLy90aGlzLkNNLmxvZyhcIk1vdXNlIGluc2lkZSBwb3B1cFwiKVxuICAgICAgICAgICAgaWYgKGV2ZW50Lm5hbWUgPT09IFwiTU9VU0VfV0hFRUxfRE9XTlwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubnVtZXJpYykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gTnVtYmVyKHRoaXMudmFsdWUpIC0gMVxuICAgICAgICAgICAgICAgICAgICB0aGlzLkNNLnJlZnJlc2goKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50Lm5hbWUgPT09IFwiTU9VU0VfV0hFRUxfVVBcIikge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm51bWVyaWMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IE51bWJlcih0aGlzLnZhbHVlKSArIDFcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DTS5yZWZyZXNoKClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZVxuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5uYW1lID09PSBcIk1PVVNFX0xFRlRfQlVUVE9OX1BSRVNTRURcIikge1xuICAgICAgICAgICAgICAgIC8vIGZpbmQgdGhlIHNlbGVjdGVkIGluZGV4IG9mIHRoZSBjbGljayBhbmQgc2V0IGl0IGFzIHNlbGVjdGVkXG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQubmFtZSA9PT0gXCJNT1VTRV9EUkFHXCIgJiYgZXZlbnQuZGF0YS5sZWZ0ID09PSB0cnVlICYmIHRoaXMuZHJhZ2dpbmcgPT09IGZhbHNlICYmIHRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgICAgLy8gY2hlY2sgaWYgdGhlIG1vdXNlIGlzIG9uIHRoZSBoZWFkZXIgb2YgdGhlIHBvcHVwIChmaXJzdCB0aHJlZSBsaW5lcylcbiAgICAgICAgICAgIGlmICh4ID4gdGhpcy5hYnNvbHV0ZVZhbHVlcy54ICYmIHggPCB0aGlzLmFic29sdXRlVmFsdWVzLnggKyB0aGlzLmFic29sdXRlVmFsdWVzLndpZHRoICYmIHkgPiB0aGlzLmFic29sdXRlVmFsdWVzLnkgJiYgeSA8IHRoaXMuYWJzb2x1dGVWYWx1ZXMueSArIDMvKiAzID0gaGVhZGVyIGhlaWdodCAqLykge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnU3RhcnQgPSB7IHg6IHgsIHk6IHkgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50Lm5hbWUgPT09IFwiTU9VU0VfRFJBR1wiICYmIGV2ZW50LmRhdGEubGVmdCA9PT0gdHJ1ZSAmJiB0aGlzLmRyYWdnaW5nID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoKHkgLSB0aGlzLmRyYWdTdGFydC55KSArIHRoaXMuYWJzb2x1dGVWYWx1ZXMueSA8IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gLy8gcHJldmVudCB0aGUgcG9wdXAgdG8gZ28gb3V0IG9mIHRoZSB0b3Agb2YgdGhlIHNjcmVlblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCh4IC0gdGhpcy5kcmFnU3RhcnQueCkgKyB0aGlzLmFic29sdXRlVmFsdWVzLnggPCAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC8vIHByZXZlbnQgdGhlIHBvcHVwIHRvIGdvIG91dCBvZiB0aGUgbGVmdCBvZiB0aGUgc2NyZWVuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9mZnNldFggKz0geCAtIHRoaXMuZHJhZ1N0YXJ0LnhcbiAgICAgICAgICAgIHRoaXMub2Zmc2V0WSArPSB5IC0gdGhpcy5kcmFnU3RhcnQueVxuICAgICAgICAgICAgdGhpcy5kcmFnU3RhcnQgPSB7IHg6IHgsIHk6IHkgfVxuICAgICAgICAgICAgdGhpcy5DTS5yZWZyZXNoKClcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5uYW1lID09PSBcIk1PVVNFX0xFRlRfQlVUVE9OX1JFTEVBU0VEXCIgJiYgdGhpcy5kcmFnZ2luZyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlXG4gICAgICAgICAgICB0aGlzLkNNLnJlZnJlc2goKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBkcmF3IHRoZSBJbnB1dFBvcHVwIHRvIHRoZSBzY3JlZW4gaW4gdGhlIG1pZGRsZS5cbiAgICAgKiBAcmV0dXJucyB7SW5wdXRQb3B1cH0gVGhlIGluc3RhbmNlIG9mIHRoZSBJbnB1dFBvcHVwLlxuICAgICAqIEBtZW1iZXJvZiBJbnB1dFBvcHVwXG4gICAgICovXG4gICAgcHVibGljIGRyYXcoKTogSW5wdXRQb3B1cCB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IDJcbiAgICAgICAgY29uc3Qgd2luZG93V2lkdGggPSB0aGlzLnRpdGxlLmxlbmd0aCA+IHRoaXMudmFsdWUudG9TdHJpbmcoKS5sZW5ndGggPyB0aGlzLnRpdGxlLmxlbmd0aCArICgyICogb2Zmc2V0KSA6IHRoaXMudmFsdWUudG9TdHJpbmcoKS5sZW5ndGggKyAoMiAqIG9mZnNldCkgKyAxXG4gICAgICAgIGNvbnN0IGhhbGZXaWR0aCA9IE1hdGgucm91bmQoKHdpbmRvd1dpZHRoIC0gdGhpcy50aXRsZS5sZW5ndGgpIC8gMilcbiAgICAgICAgbGV0IGhlYWRlciA9IFwi4pSMXCJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aW5kb3dXaWR0aDsgaSsrKSB7XG4gICAgICAgICAgICBoZWFkZXIgKz0gXCLilIBcIlxuICAgICAgICB9XG4gICAgICAgIGhlYWRlciArPSBcIuKUkFxcblwiXG4gICAgICAgIGhlYWRlciArPSBg4pSCJHtcIiBcIi5yZXBlYXQoaGFsZldpZHRoKX0ke3RoaXMudGl0bGV9JHtcIiBcIi5yZXBlYXQod2luZG93V2lkdGggLSBoYWxmV2lkdGggLSB0aGlzLnRpdGxlLmxlbmd0aCl94pSCXFxuYFxuICAgICAgICBoZWFkZXIgKz0gXCLilJxcIiArIFwi4pSAXCIucmVwZWF0KHdpbmRvd1dpZHRoKSArIFwi4pSkXFxuXCJcblxuICAgICAgICBsZXQgZm9vdGVyID0gXCLilJRcIlxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdpbmRvd1dpZHRoOyBpKyspIHtcbiAgICAgICAgICAgIGZvb3RlciArPSBcIuKUgFwiXG4gICAgICAgIH1cbiAgICAgICAgZm9vdGVyICs9IFwi4pSYXFxuXCJcblxuICAgICAgICBsZXQgY29udGVudCA9IFwiXCJcbiAgICAgICAgLy8gRHJhdyBhbiBpbnB1dCBmaWVsZFxuICAgICAgICBjb250ZW50ICs9IGDilIIke1wiPiBcIn0ke3RoaXMudmFsdWV94paIJHtcIiBcIi5yZXBlYXQod2luZG93V2lkdGggLSB0aGlzLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoIC0gMyl94pSCXFxuYFxuXG4gICAgICAgIGNvbnN0IHdpbmRvd0Rlc2lnbiA9IGAke2hlYWRlcn0ke2NvbnRlbnR9JHtmb290ZXJ9YFxuICAgICAgICBjb25zdCB3aW5kb3dEZXNpZ25MaW5lcyA9IHdpbmRvd0Rlc2lnbi5zcGxpdChcIlxcblwiKVxuICAgICAgICBjb25zdCBjZW50ZXJTY3JlZW4gPSBNYXRoLnJvdW5kKCh0aGlzLkNNLlNjcmVlbi53aWR0aCAvIDIpIC0gKHdpbmRvd1dpZHRoIC8gMikpXG4gICAgICAgIHdpbmRvd0Rlc2lnbi5zcGxpdChcIlxcblwiKS5mb3JFYWNoKChsaW5lLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4uY3Vyc29yVG8oY2VudGVyU2NyZWVuICsgdGhpcy5vZmZzZXRYLCB0aGlzLm1hcmdpblRvcCArIGluZGV4ICsgdGhpcy5vZmZzZXRZKVxuICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBsaW5lLCBzdHlsZTogeyBjb2xvcjogXCJ3aGl0ZVwiIH0gfSlcbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5hYnNvbHV0ZVZhbHVlcyA9IHtcbiAgICAgICAgICAgIHg6IGNlbnRlclNjcmVlbiArIHRoaXMub2Zmc2V0WCxcbiAgICAgICAgICAgIHk6IHRoaXMubWFyZ2luVG9wICsgdGhpcy5vZmZzZXRZLFxuICAgICAgICAgICAgd2lkdGg6IHdpbmRvd1dpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiB3aW5kb3dEZXNpZ25MaW5lcy5sZW5ndGgsXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IElucHV0UG9wdXAiXX0=
{
"name": "console-gui-tools",
"version": "1.1.40",
"version": "1.1.41",
"description": "A simple library to draw option menu, text popup or other widgets and layout on a Node.js console.",

@@ -5,0 +5,0 @@ "main": "dist/ConsoleGui.js",

@@ -21,3 +21,3 @@ # console-gui-tools

It works well in all os with a terminal that supports styling, colors and other nice features. I've tested it on Linux: Ubuntu LTS, Arch, and Windows 10 and 11.
Since 1.1.4 mouse SGW and X11 protocols are supported. It works well on most linux terminals, but it doesn't work on Windows 10 and 11. You can use it on Windows 10 and 11 with [Windows Terminal](https://www.microsoft.com/it-it/p/windows-terminal/9n0dx20hk701?activetab=pivot:overviewtab) or [Cmder](https://cmder.net/) and using WSL (Windows Subsystem for Linux) with Ubuntu LTS or others.
Since 1.1.4 mouse SGR and X11 protocols are supported. It works well on most linux terminals, but it doesn't work on Windows 10 and 11. You can use it on Windows 10 and 11 with [Windows Terminal](https://www.microsoft.com/it-it/p/windows-terminal/9n0dx20hk701?activetab=pivot:overviewtab) or [Cmder](https://cmder.net/) and using WSL (Windows Subsystem for Linux) with Ubuntu LTS or others.
In this way you can use mouse also on Windows 10 and 11.

@@ -24,0 +24,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc