@bnsights/bbsf-controls 1.0.123 → 1.0.124
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 +8 -0
- package/bnsights-bbsf-controls-1.0.124.tgz +0 -0
- package/esm2022/lib/Shared/Enums/FileType.mjs +2 -2
- package/esm2022/lib/Shared/Models/FileDTO.mjs +2 -1
- package/esm2022/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +11 -3
- package/esm2022/lib/controls/DateTimePicker/DateTimePicker.component.mjs +3 -3
- package/esm2022/lib/controls/FileUplaod/FileUplaod.component.mjs +24 -17
- package/esm2022/lib/controls/ImageUpload/ImageUpload.component.mjs +3 -1
- package/esm2022/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +11 -7
- package/esm2022/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +7 -1
- package/esm2022/lib/controls/TagsInput/TagsInput.component.mjs +11 -2
- package/esm2022/lib/controls/TextArea/TextArea.component.mjs +6 -4
- package/esm2022/lib/controls/TextBox/TextBox.component.mjs +6 -4
- package/esm2022/lib/controls/page-header-component/page-header-component.component.mjs +1 -1
- package/fesm2022/bnsights-bbsf-controls.mjs +89 -47
- package/fesm2022/bnsights-bbsf-controls.mjs.map +1 -1
- package/lib/Shared/Enums/FileType.d.ts +1 -1
- package/lib/Shared/Models/FileDTO.d.ts +1 -0
- package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +3 -1
- package/lib/controls/TagsInput/TagsInput.component.d.ts +3 -1
- package/package.json +1 -1
- package/src/lib/assets/Style-rtl.scss +62 -0
- package/src/lib/assets/sass/autocomplete-textbox.scss +56 -9
- package/src/lib/assets/sass/checkbox.scss +2 -2
- package/src/lib/assets/sass/datetime-picker.scss +61 -12
- package/src/lib/assets/sass/dropdown.scss +25 -5
- package/src/lib/assets/sass/file-upload.scss +13 -3
- package/src/lib/assets/sass/html-editor.scss +10 -5
- package/src/lib/assets/sass/image-upload.scss +107 -6
- package/src/lib/assets/sass/phone.scss +12 -3
- package/src/lib/assets/sass/radio-button.scss +3 -4
- package/bnsights-bbsf-controls-1.0.123.tgz +0 -0
|
@@ -242,6 +242,7 @@ export class ImageUploaderComponent {
|
|
|
242
242
|
fileBase64: reader.result.toString().split(',')[1],
|
|
243
243
|
fileSizeInMB: file.size / 1000 / 1000,
|
|
244
244
|
nameWithExtension: file.name,
|
|
245
|
+
isNew: true
|
|
245
246
|
};
|
|
246
247
|
this.options.value = FileObject;
|
|
247
248
|
FilesArray.push(FileObject);
|
|
@@ -304,6 +305,7 @@ export class ImageUploaderComponent {
|
|
|
304
305
|
fileBase64: reader.result.toString().split(',')[1],
|
|
305
306
|
fileSizeInMB: BlobFile.size / 1000 / 1000,
|
|
306
307
|
nameWithExtension: this.EventFile.name,
|
|
308
|
+
isNew: true
|
|
307
309
|
};
|
|
308
310
|
BlobFile.name = this.EventFile.name;
|
|
309
311
|
FilesArray.push(FileObject);
|
|
@@ -347,4 +349,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
|
347
349
|
type: ViewChild,
|
|
348
350
|
args: ['angularCropper', { static: false }]
|
|
349
351
|
}] } });
|
|
350
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW1hZ2VVcGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL0ltYWdlVXBsb2FkL0ltYWdlVXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9JbWFnZVVwbG9hZC9JbWFnZVVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxRQUFRLEVBQ1IsU0FBUyxFQUdULE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLFdBQVcsRUFDWCxVQUFVLEdBS1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsWUFBWSxFQUF1QyxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7OztBQWdCcEYsTUFBTSxPQUFPLHNCQUFzQjthQUMxQiwyQkFBc0IsR0FBRyxJQUFJLEFBQVAsQ0FBUTtJQStCckMsWUFDVSxJQUFZLEVBQ1osY0FBOEIsRUFDbEIsZ0JBQWtDLEVBQy9DLHdCQUE0QyxFQUM1QyxjQUE4QixFQUM3Qix3QkFBa0QsRUFDbEQsY0FBOEIsRUFDOUIsWUFBc0I7UUFQdEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUNsQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQy9DLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBb0I7UUFDNUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzdCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBcENoQyxVQUFLLEdBQVcs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LE9BQWUsRUFBRSxPQUFlO1FBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQWE7UUFDckIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQzs4R0EvV1Usc0JBQXNCO2tHQUF0QixzQkFBc0Isc1ZDcENuQyx1Z1NBa0tNOzsyRkQ5SE8sc0JBQXNCO2tCQUpsQyxTQUFTOytCQUNFLGtCQUFrQjs7MEJBc0N6QixRQUFRO2tNQWhDZ0MsU0FBUztzQkFBbkQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUloQyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU07Z0JBWUEsY0FBYztzQkFEcEIsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgSW5wdXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgTmdab25lLFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgVmFsaWRhdG9ycyxcclxuICBGb3JtR3JvdXAsXHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIENvbnRyb2xDb250YWluZXIsXHJcbiAgRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29udHJvbFV0aWxpdHkgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvQ29udHJvbFV0aWxpdHknO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkZXIsIEZpbGVMaWtlT2JqZWN0LCBGaWxlVXBsb2FkZXJPcHRpb25zIH0gZnJvbSAnbmcyLWZpbGUtdXBsb2FkJztcclxuaW1wb3J0IHsgRmlsZURUTyB9IGZyb20gJy4uLy4uL1NoYXJlZC9Nb2RlbHMvRmlsZURUTyc7XHJcbmltcG9ydCB7IEltYWdlVXBsb2FkT3B0aW9ucyB9IGZyb20gJy4uLy4uL1NoYXJlZC9Nb2RlbHMvSW1hZ2VVcGxvYWRPcHRpb25zJztcclxuaW1wb3J0IHsgQ3JvcHBlckNvbXBvbmVudCB9IGZyb20gJ2FuZ3VsYXItY3JvcHBlcmpzJztcclxuaW1wb3J0IHtcclxuICBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgVXRpbGl0eVNlcnZpY2UsXHJcbn0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgR2xvYmFsU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvR2xvYmFsU2V0dGluZ3Muc2VydmljZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ0JCU0YtSW1hZ2VVcGxvYWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9JbWFnZVVwbG9hZC5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbWFnZVVwbG9hZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IG51bGw7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcsIHsgc3RhdGljOiBmYWxzZSB9KSBmaWxlSW5wdXQ6IEVsZW1lbnRSZWY7XHJcbiAgZmlsZXM6IEZpbGVbXSA9IFtdO1xyXG4gIGltYWdlU291cmNlOiBzdHJpbmc7XHJcbiAgaXNTdWJtaXR0ZWQ6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBvcHRpb25zOiBJbWFnZVVwbG9hZE9wdGlvbnM7XHJcbiAgQE91dHB1dCgpIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBpbWFnZVVwbG9hZEZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgdmFsaWRhdGlvbk1lc3NhZ2UgPSAnJztcclxuICB1cGxvYWRlcjogRmlsZVVwbG9hZGVyO1xyXG4gIGhhc0Fub3RoZXJEcm9wWm9uZU92ZXI6IGJvb2xlYW47XHJcbiAgYWNjZXB0ZWRUeXBlOiBzdHJpbmcgPSAnJztcclxuICBhY2NlcHRlZFR5cGVBcnJheTogc3RyaW5nW10gPSBbXTtcclxuICB0b29sVGlwVHlwZUFycmF5OiBzdHJpbmdbXSA9IFtdO1xyXG4gIGZpbGVMaWtlT2JqZWN0OiBGaWxlTGlrZU9iamVjdDtcclxuICBjb250cm9sOiBGb3JtQ29udHJvbDtcclxuICBAVmlld0NoaWxkKCdhbmd1bGFyQ3JvcHBlcicsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyBhbmd1bGFyQ3JvcHBlcjogQ3JvcHBlckNvbXBvbmVudDtcclxuICBpbWdVcmwgPSBudWxsO1xyXG4gIGNvbmZpZyA9IG51bGw7XHJcbiAgaW1hZ2VVcmwgPSAnJztcclxuICBpbWd3VXJsID0gJyc7XHJcbiAgRXZlbnRGaWxlOiBhbnk7XHJcbiAgbWRsU2FtcGxlSXNPcGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbWFya0FsbEFzVG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZhbGlkYXRpb25SdWxlcyA9IFtdO1xyXG4gIHZhbGlkYXRpb25SdWxlc2FzeW5jID0gW107XHJcbiAgbWF4RmlsZVNpemU6IG51bWJlciA9IDA7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgY29udHJvbFV0aWxpdHk6IENvbnRyb2xVdGlsaXR5LFxyXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxyXG4gICAgcHVibGljIEltYWdlVXBsYW9kZXJDb250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOiBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdsb2JhbFNldHRpbmdzOiBHbG9iYWxTZXR0aW5ncyxcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbFxyXG4gICkge1xyXG4gICAgSW1hZ2VVcGxvYWRlckNvbXBvbmVudC5jb250cm9sQ29udGFpbmVyc3RhdGljID0gdGhpcy5jb250cm9sQ29udGFpbmVyO1xyXG4gICAgdGhpcy51cGxvYWRlciA9IG5ldyBGaWxlVXBsb2FkZXIoPEZpbGVVcGxvYWRlck9wdGlvbnM+e1xyXG4gICAgICBkaXNhYmxlTXVsdGlwYXJ0OiBmYWxzZSwgLy8gJ0Rpc2FibGVNdWx0aXBhcnQnIG11c3QgYmUgJ3RydWUnIGZvciBmb3JtYXREYXRhRnVuY3Rpb24gdG8gYmUgY2FsbGVkLlxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmhhc0Fub3RoZXJEcm9wWm9uZU92ZXIgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jb250cm9sVmFsaWRhdGlvblNlcnZpY2UuaXNDcmVhdGVkQmVmb3IgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy52aWV3VHlwZSlcclxuICAgICAgdGhpcy5vcHRpb25zLnZpZXdUeXBlID0gdGhpcy5nbG9iYWxTZXR0aW5ncy52aWV3VHlwZTtcclxuXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5kZWZhdWx0SW1hZ2VTcmMpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5kZWZhdWx0SW1hZ2VTcmMgPSB0aGlzLmdsb2JhbFNldHRpbmdzLmRlZmF1bHRJbWFnZVNyYztcclxuXHJcbiAgICAvL1NldCBpbWcgc3JjIGJ5IGRlZmF1bHQgdmFsdWVcclxuICAgIC8vIHRoaXMuSW1hZ2VTb3VyY2UgPSB0aGlzLm9wdGlvbnMuRGVmYXVsdEltYWdlU3JjO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuYWxsb3dJbWFnZUNyb3BwZXIpIHtcclxuICAgICAgdGhpcy5jb25maWcgPSB7XHJcbiAgICAgICAgYXNwZWN0UmF0aW86XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuaW1hZ2VDcm9wcGVyV2lkdGggLyB0aGlzLm9wdGlvbnMuaW1hZ2VDcm9wcGVySGVpZ2h0LFxyXG4gICAgICAgIGRyYWdNb2RlOiAnbW92ZScsXHJcbiAgICAgICAgYmFja2dyb3VuZDogdHJ1ZSxcclxuICAgICAgICBtb3ZhYmxlOiB0cnVlLFxyXG4gICAgICAgIHJvdGF0YWJsZTogdHJ1ZSxcclxuICAgICAgICBzY2FsYWJsZTogdHJ1ZSxcclxuICAgICAgICB6b29tYWJsZTogdHJ1ZSxcclxuICAgICAgICB2aWV3TW9kZTogMSxcclxuICAgICAgICBjaGVja0ltYWdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgIG1vZGFsOiB0cnVlLFxyXG4gICAgICAgIGNoZWNrQ3Jvc3NPcmlnaW46IGZhbHNlLFxyXG4gICAgICAgIHdpZHRoOiB0aGlzLm9wdGlvbnMuaW1hZ2VDcm9wcGVyV2lkdGgsXHJcbiAgICAgICAgaGVpZ2h0OiB0aGlzLm9wdGlvbnMuaW1hZ2VDcm9wcGVySGVpZ2h0LFxyXG4gICAgICAgIGNyb3BCb3hSZXNpemFibGU6IGZhbHNlLFxyXG4gICAgICAgIGF1dG9Dcm9wOiB0cnVlLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZmlsZVVwbG9hZEFjY2VwdHNUeXBlcyAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5maWxlVXBsb2FkQWNjZXB0c1R5cGVzO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy52YWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgIGxldCBpbWdVUkwgPSB0aGlzLm9wdGlvbnMudmFsdWVbJ2ZpbGVVUkwnXTtcclxuICAgICAgaWYgKGltZ1VSTCAhPSAnJyAmJiBpbWdVUkwgIT0gdW5kZWZpbmVkICYmIGltZ1VSTCAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5pbWFnZVNvdXJjZSA9IGltZ1VSTDtcclxuICAgICAgICB0aGlzLmltYWdlVXJsID0gaW1nVVJMO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgZWxlbWVudCA9IHRoaXMub3B0aW9ucy52YWx1ZTtcclxuICAgICAgdGhpcy5maWxlTGlrZU9iamVjdCA9IDxGaWxlTGlrZU9iamVjdD57XHJcbiAgICAgICAgbmFtZTogZWxlbWVudC5maWxlTmFtZSxcclxuICAgICAgICBzaXplOiBlbGVtZW50LmZpbGVTaXplSW5NQiAqIDEwMDAgKiAxMDAwLFxyXG4gICAgICAgIHR5cGU6IGVsZW1lbnQuZmlsZVR5cGUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMudXBsb2FkZXIuYWRkVG9RdWV1ZShbdGhpcy5maWxlTGlrZU9iamVjdCBhcyBhbnldKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmZpbGVNYXhTaXplSW5NQilcclxuICAgICAgdGhpcy5tYXhGaWxlU2l6ZSA9IHRoaXMub3B0aW9ucy5maWxlTWF4U2l6ZUluTUIgKiAxMDAwICogMTAwMDtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMub3B0aW9ucy5maWxlVXBsb2FkQWNjZXB0c1R5cGVzICE9IG51bGwgJiZcclxuICAgICAgdGhpcy5vcHRpb25zLmZpbGVVcGxvYWRBY2NlcHRzVHlwZXMubGVuZ3RoID4gMFxyXG4gICAgKSB7XHJcbiAgICAgIGZvciAoXHJcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcclxuICAgICAgICBpbmRleCA8IHRoaXMub3B0aW9ucy5maWxlVXBsb2FkQWNjZXB0c1R5cGVzLmxlbmd0aDtcclxuICAgICAgICBpbmRleCsrXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IFR5cGUgPSB0aGlzLm9wdGlvbnMuZmlsZVVwbG9hZEFjY2VwdHNUeXBlc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy5hY2NlcHRlZFR5cGUgPSB0aGlzLmFjY2VwdGVkVHlwZS50b1VwcGVyQ2FzZSgpICsgVHlwZS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYWNjZXB0ZWRUeXBlQXJyYXkgPSB0aGlzLmFjY2VwdGVkVHlwZS5zcGxpdCgnLCcpO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5hY2NlcHRlZFR5cGVBcnJheS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5hY2NlcHRlZFR5cGVBcnJheVtpbmRleF07XHJcbiAgICAgICAgY29uc3QgVHlwZVRvb2xUaXBlID0gZWxlbWVudC5zcGxpdCgnLycpWzFdO1xyXG4gICAgICAgIHRoaXMudG9vbFRpcFR5cGVBcnJheS5wdXNoKFR5cGVUb29sVGlwZS50b1VwcGVyQ2FzZSgpKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID1cclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlICtcclxuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0FsbG93ZWRUeXBlcycpICtcclxuICAgICAgICBgICgke3RoaXMudG9vbFRpcFR5cGVBcnJheX0pIGA7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmZpbGVNYXhTaXplSW5NQiA+IDApIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSArXHJcbiAgICAgICAgYCA8YnIgLz4gJHt0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0ZpbGVNYXhTaXplSW5NQicpfSAke3RoaXMub3B0aW9ucy5maWxlTWF4U2l6ZUluTUJcclxuICAgICAgICB9YDtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5vcHRpb25zLmZpbGVVcGxvYWRBY2NlcHRzVHlwZXMgIT0gbnVsbCAmJlxyXG4gICAgICB0aGlzLm9wdGlvbnMuZmlsZVVwbG9hZEFjY2VwdHNUeXBlcy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgIH1cclxuICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm9wdGlvbnMubmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLmltYWdlVXBsb2FkRm9ybUNvbnRyb2wgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMub3B0aW9ucy5uYW1lXTsgLy8gIG5ldyBGb3JtQ29udHJvbCgnJyx2YWxpZGF0aW9uUnVsZXMpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMudmFsdWUgIT0gbnVsbClcclxuICAgICAgdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLm5hbWUpLnNldFZhbHVlKHRoaXMub3B0aW9ucy52YWx1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5sYWJlbEtleSAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5sYWJlbEtleSAhPSAnJylcclxuICAgICAgdGhpcy5vcHRpb25zLmxhYmVsVmFsdWUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmxhYmVsS2V5XHJcbiAgICAgICk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jdXN0b21WYWxpZGF0aW9uLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IFZhbGlkYXRpb25zID0gdGhpcy5vcHRpb25zLmN1c3RvbVZhbGlkYXRpb247XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBWYWxpZGF0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBWYWxpZGF0aW9uID0gVmFsaWRhdGlvbnNbaW5kZXhdO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5pc1JlcXVpcmVkKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbWFnZVVwbG9hZEZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5pbWFnZVVwbG9hZEZvcm1Db250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlc2FzeW5jKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmltYWdlVXBsb2FkRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5JbWFnZVVwbGFvZGVyQ29udHJvbEhvc3QubmdTdWJtaXQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVMaXN0ICE9IG51bGwpIHtcclxuICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLm9wdGlvbnMubmFtZSk7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuYXR0cmlidXRlTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVMaXN0W2luZGV4XS5rZXksXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlTGlzdFtpbmRleF0udmFsdWVcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNob3dJbWFnZVVwbG9hZGVyKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XHJcbiAgICBsZXQgaW5wdXQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAnaW5wdXRbdHlwZT1maWxlXSdcclxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpbnB1dC5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRFcnJvciA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLnJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfTtcclxuXHJcbiAgc2hvd0dsb2JhbEVycm9yKCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5zaG93R2xvYmFsRXJyb3IoKTtcclxuICB9XHJcblxyXG4gIGdldEVycm9yVmFsaWRhdGlvbihFcnJvckxpc3QpIHtcclxuICAgIGlmICh0aGlzLm1hcmtBbGxBc1RvdWNoZWQgJiYgdGhpcy5ncm91cC5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKCk7XHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2xVdGlsaXR5LmdldEVycm9yVmFsaWRhdGlvbk1hc3NhZ2UoXHJcbiAgICAgIEVycm9yTGlzdCxcclxuICAgICAgdGhpcy5ncm91cCxcclxuICAgICAgdGhpcy5vcHRpb25zXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25GaWxlQ2hhbmdlKGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQucmVqZWN0ZWRGaWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBldmVudC5yZWplY3RlZEZpbGVzWzBdO1xyXG4gICAgICBjb25zdCBtYXhGaWxlU2l6ZSA9IHRoaXMub3B0aW9ucy5maWxlTWF4U2l6ZUluTUIgKiAxMDAwICogMTAwMDtcclxuICAgICAgY29uc3QgZmlsZVR5cGUgPSBmaWxlLnR5cGU7XHJcbiAgICAgIGlmIChmaWxlLnNpemUgPiBtYXhGaWxlU2l6ZSkge1xyXG4gICAgICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5pbWFnZVVwbG9hZEZvcm1Db250cm9sO1xyXG4gICAgICAgIGZvcm1Db250cm9sLnNldEVycm9ycyh7XHJcbiAgICAgICAgICBGaWxlTWF4U2l6ZUluTUI6IHRoaXMub3B0aW9ucy5maWxlTWF4U2l6ZUluTUIgKyAnTScsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgIHRoaXMudXBsb2FkZXIucXVldWUgPSBbXTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5maWxlVXBsb2FkQWNjZXB0c1R5cGVzICE9IG51bGwgJiZcclxuICAgICAgICB0aGlzLm9wdGlvbnMuZmlsZVVwbG9hZEFjY2VwdHNUeXBlcy5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgIShcclxuICAgICAgICAgIHRoaXMuYWNjZXB0ZWRUeXBlQXJyYXkuaW5jbHVkZXMoZmlsZVR5cGUudG9VcHBlckNhc2UoKSkgfHxcclxuICAgICAgICAgIHRoaXMuYWNjZXB0ZWRUeXBlQXJyYXkuaW5jbHVkZXMoZmlsZVR5cGUudG9Mb3dlckNhc2UoKSlcclxuICAgICAgICApXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5pbWFnZVVwbG9hZEZvcm1Db250cm9sO1xyXG4gICAgICAgIGZvcm1Db250cm9sLnNldEVycm9ycyh7IFRvb2xUaXBUeXBlRXJyb3I6IHRoaXMudG9vbFRpcFR5cGVBcnJheSB9KTtcclxuICAgICAgICBmb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgdGhpcy51cGxvYWRlci5xdWV1ZSA9IFtdO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IEZpbGVzQXJyYXkgPSBbXTtcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBldmVudC5hZGRlZEZpbGVzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICBjb25zdCBmaWxlID0gZXZlbnQuYWRkZWRGaWxlc1swXTtcclxuICAgICAgdGhpcy5FdmVudEZpbGUgPSBmaWxlO1xyXG4gICAgICBjb25zdCBtYXhGaWxlU2l6ZSA9IHRoaXMub3B0aW9ucy5maWxlTWF4U2l6ZUluTUIgKiAxMDAwICogMTAwMDtcclxuICAgICAgaWYgKGZpbGUpIHtcclxuICAgICAgICBjb25zdCBtYXhGaWxlU2l6ZSA9IHRoaXMub3B0aW9ucy5maWxlTWF4U2l6ZUluTUIgKiAxMDAwICogMTAwMDtcclxuICAgICAgICBjb25zdCBmaWxlVHlwZSA9IGZpbGUudHlwZTtcclxuICAgICAgICBpZiAoZmlsZS5zaXplID4gbWF4RmlsZVNpemUpIHtcclxuICAgICAgICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5pbWFnZVVwbG9hZEZvcm1Db250cm9sO1xyXG4gICAgICAgICAgZm9ybUNvbnRyb2wuc2V0RXJyb3JzKHtcclxuICAgICAgICAgICAgRmlsZU1heFNpemVJbk1COiB0aGlzLm9wdGlvbnMuZmlsZU1heFNpemVJbk1CICsgJ00nLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBmb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZGVyLnF1ZXVlID0gW107XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgIGxldCBGaWxlT2JqZWN0ID0gZmlsZTtcclxuICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChGaWxlT2JqZWN0KTtcclxuICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5hbGxvd0ltYWdlQ3JvcHBlcikge1xyXG4gICAgICAgICAgICB0aGlzLmltYWdlVXJsID0gcmVhZGVyLnJlc3VsdC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5Nb2RhbCh0cnVlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBGaWxlT2JqZWN0OiBGaWxlRFRPID0ge1xyXG4gICAgICAgICAgICAgIGZpbGVOYW1lOiBmaWxlLm5hbWUsXHJcbiAgICAgICAgICAgICAgZmlsZVR5cGU6IGZpbGUudHlwZSxcclxuICAgICAgICAgICAgICBmaWxlQmFzZTY0OiByZWFkZXIucmVzdWx0LnRvU3RyaW5nKCkuc3BsaXQoJywnKVsxXSxcclxuICAgICAgICAgICAgICBmaWxlU2l6ZUluTUI6IGZpbGUuc2l6ZSAvIDEwMDAgLyAxMDAwLFxyXG4gICAgICAgICAgICAgIG5hbWVXaXRoRXh0ZW5zaW9uOiBmaWxlLm5hbWUsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy52YWx1ZSA9IEZpbGVPYmplY3Q7XHJcbiAgICAgICAgICAgIEZpbGVzQXJyYXkucHVzaChGaWxlT2JqZWN0KTtcclxuICAgICAgICAgICAgdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLm5hbWUpLnNldFZhbHVlKEZpbGVPYmplY3QpO1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVzID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuZmlsZXMucHVzaCguLi5ldmVudC5hZGRlZEZpbGVzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBvcmlnaW5hbFZhbHVlID0gdGhpcy5pbWFnZVVwbG9hZEZvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucGF0Y2hGdW5jdGlvbiAmJlxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucGF0Y2hQYXRoICYmXHJcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VVcGxvYWRGb3JtQ29udHJvbC52YWxpZFxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0Y2hDb250cm9sVmFsdWUoXHJcbiAgICAgICAgICAgICAgb3JpZ2luYWxWYWx1ZSxcclxuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucGF0Y2hGdW5jdGlvbixcclxuICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMucGF0Y2hQYXRoXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvL1VzZSB0aGlzIGxpbmUgdG8gZW5hYmxlIHR3byB3YXkgYmluZGluZy5cclxuICAgICAgICAgIHRoaXMub3B0aW9ucy52YWx1ZSA9IG9yaWdpbmFsVmFsdWU7XHJcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQob3JpZ2luYWxWYWx1ZSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRnJvbUNvbnRyb2xWYWx1ZShldmVudCkge1xyXG4gICAgbGV0IEl0ZW1MaXN0ID0gdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLm5hbWUpLnZhbHVlO1xyXG4gICAgdGhpcy5maWxlcyA9IFtdO1xyXG4gICAgSXRlbUxpc3QgPSBudWxsO1xyXG4gICAgLy9TZXQgSW1nIHNyYyBieSBkZWZhdWx0IGltYWdlICh1cGxvYWQpXHJcbiAgICB0aGlzLmltYWdlU291cmNlID0gdGhpcy5vcHRpb25zLmRlZmF1bHRJbWFnZVNyYztcclxuXHJcbiAgICBpZiAodGhpcy5maWxlcy5sZW5ndGggPT0gMCAmJiB0aGlzLm9wdGlvbnMuaXNSZXF1aXJlZCkge1xyXG4gICAgICB0aGlzLmltYWdlVXBsb2FkRm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLmltYWdlVXBsb2FkRm9ybUNvbnRyb2wuc2V0RXJyb3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICB0aGlzLmltYWdlVXBsb2FkRm9ybUNvbnRyb2wuaW52YWxpZDtcclxuICAgIH1cclxuICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5uYW1lKS5zZXRWYWx1ZShJdGVtTGlzdCk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLm5hbWUpLnZhbHVlKTtcclxuICAgIC8vVXNlIHRoaXMgbGluZSB0byBlbmFibGUgdHdvIHdheSBiaW5kaW5nLlxyXG4gICAgdGhpcy5vcHRpb25zLnZhbHVlID0gdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLm5hbWUpLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgY3JvcEltYWdlKCkge1xyXG4gICAgbGV0IEltYWdlQ3JvcHBlck9iamVjdCA9IHRoaXMuYW5ndWxhckNyb3BwZXIuY3JvcHBlci5nZXRDcm9wcGVkQ2FudmFzKHtcclxuICAgICAgd2lkdGg6IHRoaXMub3B0aW9ucy5pbWFnZUNyb3BwZXJXaWR0aCxcclxuICAgICAgaGVpZ2h0OiB0aGlzLm9wdGlvbnMuaW1hZ2VDcm9wcGVySGVpZ2h0LFxyXG4gICAgICBpbWFnZVNtb290aGluZ0VuYWJsZWQ6IGZhbHNlLFxyXG4gICAgICBpbWFnZVNtb290aGluZ1F1YWxpdHk6ICdoaWdoJyxcclxuICAgIH0pO1xyXG4gICAgSW1hZ2VDcm9wcGVyT2JqZWN0LnRvQmxvYigoYmxvYikgPT4ge1xyXG4gICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLmdldEJsb2JGaWxlKGJsb2IpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QmxvYkZpbGUoYmxvYikge1xyXG4gICAgbGV0IEZpbGVzQXJyYXkgPSBbXTtcclxuICAgIGxldCBCbG9iRmlsZTtcclxuICAgIGxldCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgQmxvYkZpbGUgPSBibG9iO1xyXG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoQmxvYkZpbGUpO1xyXG4gICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgbGV0IEZpbGVPYmplY3Q6IEZpbGVEVE8gPSB7XHJcbiAgICAgICAgZmlsZU5hbWU6IHRoaXMuRXZlbnRGaWxlLm5hbWUsXHJcbiAgICAgICAgZmlsZVR5cGU6IHRoaXMuRXZlbnRGaWxlLnR5cGUsXHJcbiAgICAgICAgZmlsZUJhc2U2NDogcmVhZGVyLnJlc3VsdC50b1N0cmluZygpLnNwbGl0KCcsJylbMV0sXHJcbiAgICAgICAgZmlsZVNpemVJbk1COiBCbG9iRmlsZS5zaXplIC8gMTAwMCAvIDEwMDAsXHJcbiAgICAgICAgbmFtZVdpdGhFeHRlbnNpb246IHRoaXMuRXZlbnRGaWxlLm5hbWUsXHJcbiAgICAgIH07XHJcbiAgICAgIEJsb2JGaWxlLm5hbWUgPSB0aGlzLkV2ZW50RmlsZS5uYW1lO1xyXG5cclxuICAgICAgRmlsZXNBcnJheS5wdXNoKEZpbGVPYmplY3QpO1xyXG4gICAgICB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMubmFtZSkuc2V0VmFsdWUoRmlsZU9iamVjdCk7XHJcbiAgICAgIHRoaXMub3B0aW9ucy52YWx1ZSA9IEZpbGVPYmplY3Q7XHJcbiAgICAgIHRoaXMuZmlsZXMgPSBbXTtcclxuICAgICAgdGhpcy5maWxlcy5wdXNoKEJsb2JGaWxlKTtcclxuICAgICAgdGhpcy5vcGVuTW9kYWwoZmFsc2UpO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHJvdGF0ZUltYWdlKGRlZ3JlZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmFuZ3VsYXJDcm9wcGVyLmNyb3BwZXIucm90YXRlKGRlZ3JlZSk7XHJcbiAgfVxyXG4gIG1vdmVJbWFnZShvZmZzZXRYOiBudW1iZXIsIG9mZnNldFk6IG51bWJlcikge1xyXG4gICAgdGhpcy5hbmd1bGFyQ3JvcHBlci5jcm9wcGVyLm1vdmUob2Zmc2V0WCwgb2Zmc2V0WSk7XHJcbiAgfVxyXG4gIHpvb21JbWFnZShyYXRpbzogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmFuZ3VsYXJDcm9wcGVyLmNyb3BwZXIuem9vbShyYXRpbyk7XHJcbiAgfVxyXG5cclxuICBvcGVuTW9kYWwob3BlbjogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5tZGxTYW1wbGVJc09wZW4gPSBvcGVuO1xyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuXHJcbiAgcmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5yZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24oXHJcbiAgICAgIHRoaXMuaW1hZ2VVcGxvYWRGb3JtQ29udHJvbCxcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMsXHJcbiAgICAgIHRoaXMub3B0aW9uc1xyXG4gICAgKTtcclxuICB9O1xyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcblxyXG4gIGFkZFJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuYWRkUmVxdWlyZWRWYWxpZGF0aW9uKFxyXG4gICAgICB0aGlzLmltYWdlVXBsb2FkRm9ybUNvbnRyb2wsXHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLFxyXG4gICAgICB0aGlzLm9wdGlvbnNcclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICByZW1vdmVDdXN0b21WYWxpZGF0aW9uID0gKGN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkucmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbihcclxuICAgICAgdGhpcy5pbWFnZVVwbG9hZEZvcm1Db250cm9sLFxyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcyxcclxuICAgICAgY3VzdG9tVmFsaWRhdGlvblxyXG4gICAgKTtcclxuICB9O1xyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgYWRkQ3VzdG9tVmFsaWRhdGlvbiA9IChjdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LmFkZEN1c3RvbVZhbGlkYXRpb24oXHJcbiAgICAgIHRoaXMuaW1hZ2VVcGxvYWRGb3JtQ29udHJvbCxcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMsXHJcbiAgICAgIGN1c3RvbVZhbGlkYXRpb25cclxuICAgICk7XHJcbiAgfTtcclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIGlzVmFsaWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LmlzVmFsaWQodGhpcy5pbWFnZVVwbG9hZEZvcm1Db250cm9sKTtcclxuICB9O1xyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGJic2YtY29udHJvbCBiYnNmLWltYWdlLXVwbG9hZFwiIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cclxuICA8ZGl2IFtuZ0NsYXNzXT1cIihvcHRpb25zLnZpZXdUeXBlPT0xKT8nYmJzZi12ZXJ0aWNhbCc6J2Jic2YtaG9yaXpvbnRhbCdcIj5cclxuICAgIDwhLS1sYWJlbC0tPlxyXG4gICAgPGxhYmVsIFtoaWRkZW5dPVwib3B0aW9ucy5oaWRlTGFiZWxcIiBjbGFzcz1cImJic2YtbGFiZWwge3tvcHRpb25zLmxhYmVsRXh0cmFDbGFzc2VzfX1cIj5cclxuICAgICAge3tvcHRpb25zLmxhYmVsVmFsdWV9fVxyXG4gICAgICA8IS0tQXN0ZXJpc2stLT5cclxuICAgICAgPHNwYW4gKm5nSWY9XCIoKG9wdGlvbnMuc2hvd0FzdGVyaXNrJiZvcHRpb25zLmlzUmVxdWlyZWQpfHwob3B0aW9ucy5pc1JlcXVpcmVkKSkmJiFvcHRpb25zLmlzUmVhZG9ubHlcIlxyXG4gICAgICAgIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPlxyXG4gICAgPC9sYWJlbD5cclxuICAgIDwhLS1BbGxvdyBkcm9wWm9uZS0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIm9wdGlvbnMuYWxsb3dEcm9wWm9uZSYmIW9wdGlvbnMuaXNSZWFkb25seVwiIGNsYXNzPVwiYmJzZi1pbnB1dC1jb250YWluZXIge3tvcHRpb25zLmV4dHJhQ2xhc3Nlc319XCJcclxuICAgICAgbmd4LWRyb3B6b25lIFtkaXNhYmxlZF09XCJvcHRpb25zLmlzRGlzYWJsZWRcIiBbYWNjZXB0XT1cImFjY2VwdGVkVHlwZVwiIFttdWx0aXBsZV09XCJvcHRpb25zLmlzTXVsdGlwbGVcIlxyXG4gICAgICAoY2hhbmdlKT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQpXCIgbmdEZWZhdWx0Q29udHJvbCBmb3JtQ29udHJvbE5hbWU9XCJ7e29wdGlvbnMubmFtZX19XCIgW21heEZpbGVTaXplXT1cIm1heEZpbGVTaXplXCJcclxuICAgICAgaWQ9XCJ7e29wdGlvbnMubmFtZX19XCIgW2NsYXNzLmlzLWludmFsaWRdPVwiaW1hZ2VVcGxvYWRGb3JtQ29udHJvbC5pbnZhbGlkICYmIGltYWdlVXBsb2FkRm9ybUNvbnRyb2wudG91Y2hlZFwiPlxyXG4gICAgICA8bmd4LWRyb3B6b25lLWxhYmVsIGNsYXNzPVwiZHJvcHpvbmUtbGFiZWxcIj5cclxuICAgICAgICA8aW1nICpuZ0lmPVwiaW1hZ2VTb3VyY2VcIiBbc3JjXT1cImltYWdlU291cmNlXCJcclxuICAgICAgICAgIHN0eWxlPVwiYWxpZ24taXRlbXM6IGNlbnRlcjtib3JkZXItcmFkaXVzOiA1cHg7ZGlzcGxheTogZmxleDtoZWlnaHQ6IDEwMHB4O2p1c3RpZnktY29udGVudDogY2VudGVyO21hcmdpbjogMTBweDttYXgtd2lkdGg6IDE4MHB4O21pbi1oZWlnaHQ6IDEwMHB4O21pbi13aWR0aDogMTgwcHg7cGFkZGluZzogMHB4IDIwcHg7cG9zaXRpb246IHJlbGF0aXZlO1wiIC8+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN2Zy1hbmQtdmFsaWRhdGlvblwiICpuZ0lmPVwiIWltYWdlU291cmNlXCI+XHJcbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7XCI+XHJcbiAgICAgICAgICAgIDxwYXRoIG9wYWNpdHk9XCIwLjNcIlxyXG4gICAgICAgICAgICAgIGQ9XCJNNSAxNkMzLjMgMTYgMiAxNC43IDIgMTNDMiAxMS4zIDMuMyAxMCA1IDEwSDUuMUM1IDkuNyA1IDkuMyA1IDlDNSA2LjIgNy4yIDQgMTAgNEMxMS45IDQgMTMuNSA1IDE0LjMgNi41QzE0LjggNi4yIDE1LjQgNiAxNiA2QzE3LjcgNiAxOSA3LjMgMTkgOUMxOSA5LjQgMTguOSA5LjcgMTguOCAxMEMxOC45IDEwIDE4LjkgMTAgMTkgMTBDMjAuNyAxMCAyMiAxMS4zIDIyIDEzQzIyIDE0LjcgMjAuNyAxNiAxOSAxNkg1Wk04IDEzLjZIMTZMMTIuNyAxMC4zQzEyLjMgOS44OTk5OSAxMS43IDkuODk5OTkgMTEuMyAxMC4zTDggMTMuNlpcIlxyXG4gICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBzdHlsZT1cImZpbGw6ICNhMWExYTE7XCI+PC9wYXRoPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTExIDEzLjZWMTlDMTEgMTkuNiAxMS40IDIwIDEyIDIwQzEyLjYgMjAgMTMgMTkuNiAxMyAxOVYxMy42SDExWlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwiZmlsbDogIzk4OTg5ODtcIj48L3BhdGg+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwhLS1WYWxpZGF0aW9uIHRleHQtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLXZhbGlkYXRpb24tbXNnXCIgKm5nSWY9XCJ2YWxpZGF0aW9uTWVzc2FnZVwiIFtpbm5lckhUTUxdPVwidmFsaWRhdGlvbk1lc3NhZ2VcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZ3gtZHJvcHpvbmUtbGFiZWw+XHJcbiAgICAgIDxuZ3gtZHJvcHpvbmUtaW1hZ2UtcHJldmlldyBjbGFzcz1cImRyb3B6b25lLXByZXZpZXdcIiAqbmdGb3I9XCJsZXQgZiBvZiBmaWxlc1wiIFtmaWxlXT1cImZcIiBbcmVtb3ZhYmxlXT1cInRydWVcIlxyXG4gICAgICAgIChyZW1vdmVkKT1cInJlbW92ZUZyb21Db250cm9sVmFsdWUoZilcIiBuZ1Byb2plY3RBcz1cIm5neC1kcm9wem9uZS1wcmV2aWV3XCI+XHJcbiAgICAgIDwvbmd4LWRyb3B6b25lLWltYWdlLXByZXZpZXc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS1Ob3QgYWxsb3dlZCBkcm9wWm9uZS0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFvcHRpb25zLmFsbG93RHJvcFpvbmUmJiFvcHRpb25zLmlzUmVhZG9ubHlcIj5cclxuICAgICAgPG5neC1kcm9wem9uZS1sYWJlbCAqbmdJZj1cImZpbGVzLmxlbmd0aD09MFwiPlxyXG4gICAgICAgIDxkaXYgI2VsZW1lbnQgKGNsaWNrKT1cInNob3dJbWFnZVVwbG9hZGVyKGVsZW1lbnQpXCI+XHJcbiAgICAgICAgICA8aW1nIFtzcmNdPVwiaW1hZ2VTb3VyY2VcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25neC1kcm9wem9uZS1sYWJlbD5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtbm9uZSB7e29wdGlvbnMuZXh0cmFDbGFzc2VzfX1cIiBuZ3gtZHJvcHpvbmUgW2Rpc2FibGVkXT1cIm9wdGlvbnMuaXNEaXNhYmxlZFwiIFthY2NlcHRdPVwiYWNjZXB0ZWRUeXBlXCJcclxuICAgICAgICBbbXVsdGlwbGVdPVwib3B0aW9ucy5pc011bHRpcGxlXCIgKGNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50KVwiIG5nRGVmYXVsdENvbnRyb2xcclxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7e29wdGlvbnMubmFtZX19XCIgW21heEZpbGVTaXplXT1cIm1heEZpbGVTaXplXCIgaWQ9XCJ7e29wdGlvbnMubmFtZX19XCJcclxuICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJpbWFnZVVwbG9hZEZvcm1Db250cm9sLmludmFsaWQgJiYgaW1hZ2VVcGxvYWRGb3JtQ29udHJvbC50b3VjaGVkXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bmd4LWRyb3B6b25lLWltYWdlLXByZXZpZXcgKm5nRm9yPVwibGV0IGYgb2YgZmlsZXNcIiBbZmlsZV09XCJmXCIgW3JlbW92YWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAocmVtb3ZlZCk9XCJyZW1vdmVGcm9tQ29udHJvbFZhbHVlKGYpXCIgbmdQcm9qZWN0QXM9XCJuZ3gtZHJvcHpvbmUtcHJldmlld1wiPlxyXG4gICAgICA8L25neC1kcm9wem9uZS1pbWFnZS1wcmV2aWV3PlxyXG4gICAgICA8IS0tVmFsaWRhdGlvbiB0ZXh0LS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLXZhbGlkYXRpb24tbXNnXCIgKm5nSWY9XCJ2YWxpZGF0aW9uTWVzc2FnZVwiIFtpbm5lckhUTUxdPVwidmFsaWRhdGlvbk1lc3NhZ2VcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxuZ3gtZHJvcHpvbmUtbGFiZWwgKm5nSWY9XCJmaWxlcy5sZW5ndGg9PTAmJm9wdGlvbnMuaXNSZWFkb25seVwiPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiaW1hZ2VTb3VyY2VcIiAjZWxlbWVudD5cclxuICAgICAgICA8aW1nIFtzcmNdPVwiaW1hZ2VTb3VyY2VcIiAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cIiFpbWFnZVNvdXJjZVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmlld1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnTkEnKX19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmd4LWRyb3B6b25lLWxhYmVsPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJzdWJ0ZXh0LWNvbnRhaW5lclwiICpuZ0lmPVwiIW9wdGlvbnMuaXNSZWFkb25seVwiPlxyXG4gICAgPCEtLSByZXF1aXJlZCB0ZXh0LS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYmJzZi12YWxpZGF0aW9uXCIgKm5nSWY9XCIoaW1hZ2VVcGxvYWRGb3JtQ29udHJvbC5pbnZhbGlkICYmIGltYWdlVXBsb2FkRm9ybUNvbnRyb2wudG91Y2hlZClcIj5cclxuICAgICAge3tnZXRFcnJvclZhbGlkYXRpb24oaW1hZ2VVcGxvYWRGb3JtQ29udHJvbC5lcnJvcnN8a2V5dmFsdWUpfX1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gTGFiZWxEZXNjcmlwdGlvbi0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImJic2YtY29udHJvbC1kZXNjXCIgKm5nSWY9XCJvcHRpb25zLmxhYmVsRGVzY3JpcHRpb24hPW51bGxcIj57e29wdGlvbnMubGFiZWxEZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiKGdyb3VwLnZhbGlkJiZncm91cC5kaXJ0eSYmZ3JvdXAudG91Y2hlZCApfHwoZ3JvdXAudW50b3VjaGVkJiZncm91cC5pbnZhbGlkJiZncm91cC5kaXJ0eSkgXCI+XHJcbiAgICAgIHt7cmVzZXRFcnJvcigpfX08L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8IS0tIGltYWdlIGNyb3BwZXIgbW9kYWwtLT5cclxuICA8ZGl2IGlkPVwibWRsU2FtcGxlXCIgY2xhc3M9XCJtb2RhbCBiYnNmLWNyb3BwZXItbW9kYWxcIiByb2xlPVwiZGlhbG9nXCJcclxuICAgIFtuZ1N0eWxlXT1cInsnZGlzcGxheSc6IG1kbFNhbXBsZUlzT3BlbiA/ICdibG9jaycgOiAnbm9uZScsICdvcGFjaXR5JzogMX1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtbGdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiPlxyXG4gICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDcm9wSW1hZ2VcIil9fVxyXG4gICAgICAgICAgPC9oND5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwib3Blbk1vZGFsKGZhbHNlKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaW1hZ2VVcmxcIj5cclxuICAgICAgICAgICAgPGFuZ3VsYXItY3JvcHBlciAjYW5ndWxhckNyb3BwZXIgW2Nyb3BwZXJPcHRpb25zXT1cImNvbmZpZ1wiIFtpbWFnZVVybF09XCJpbWFnZVVybFwiPlxyXG4gICAgICAgICAgICA8L2FuZ3VsYXItY3JvcHBlcj5cclxuICAgICAgICAgICAgPGltZyBbc3JjXT1cImltZ3dVcmxcIiAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JvcHBlci1idG5zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiem9vbUltYWdlKDAuMSlcIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPSd7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJab29tSW5cIil9fSc+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvY3MtdG9vbHRpcFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhIGZhLXNlYXJjaC1wbHVzXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJ6b29tSW1hZ2UoLTAuMSlcIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPSd7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJab29tT3V0XCIpfX0nPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb2NzLXRvb2x0aXBcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYSBmYS1zZWFyY2gtbWludXNcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm1vdmVJbWFnZSgtMTAsMClcIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPSd7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJNb3ZlTGVmdFwiKX19Jz5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG9jcy10b29sdGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtYXJyb3ctbGVmdFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwibW92ZUltYWdlKDEwLDApXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcD0ne3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTW92ZVJpZ2h0XCIpfX0nPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb2NzLXRvb2x0aXBcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYSBmYS1hcnJvdy1yaWdodFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwibW92ZUltYWdlKDAsLTEwKVwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9J3t7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk1vdmVVcFwiKX19Jz5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG9jcy10b29sdGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtYXJyb3ctdXBcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm1vdmVJbWFnZSgwLDEwKVwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9J3t7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk1vdmVEb3duXCIpfX0nPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb2NzLXRvb2x0aXBcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYSBmYS1hcnJvdy1kb3duXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyb3RhdGVJbWFnZSgtNDUpXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcD0ne3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUm90YXRlTGVmdFwiKX19Jz5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG9jcy10b29sdGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtdW5kby1hbHRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJvdGF0ZUltYWdlKDQ1KVwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9J3t7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlJvdGF0ZVJpZ2h0XCIpfX0nPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb2NzLXRvb2x0aXBcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYSBmYS1yZWRvLWFsdFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCIgYWxpZ249XCJyaWdodFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJidG5DbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHRcIiAoY2xpY2spPVwib3Blbk1vZGFsKGZhbHNlKVwiPlxyXG4gICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjcm9wSW1hZ2UoKVwiIGlkPVwiYnRuT0tcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWJyYW5kXCI+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNyb3BcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gcmVhZG9ubHkgLS0+XHJcblxyXG5cclxuPC9kaXY+Il19
|
|
352
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW1hZ2VVcGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL0ltYWdlVXBsb2FkL0ltYWdlVXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9JbWFnZVVwbG9hZC9JbWFnZVVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxRQUFRLEVBQ1IsU0FBUyxFQUdULE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLFdBQVcsRUFDWCxVQUFVLEdBS1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsWUFBWSxFQUF1QyxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7OztBQWdCcEYsTUFBTSxPQUFPLHNCQUFzQjthQUMxQiwyQkFBc0IsR0FBRyxJQUFJLEFBQVAsQ0FBUTtJQStCckMsWUFDVSxJQUFZLEVBQ1osY0FBOEIsRUFDbEIsZ0JBQWtDLEVBQy9DLHdCQUE0QyxFQUM1QyxjQUE4QixFQUM3Qix3QkFBa0QsRUFDbEQsY0FBOEIsRUFDOUIsWUFBc0I7UUFQdEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUNsQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQy9DLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBb0I7UUFDNUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzdCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBcENoQyxVQUFLLEdBQVcs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QyxNQUFNLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsU0FBUyxDQUFDLE9BQWUsRUFBRSxPQUFlO1FBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQWE7UUFDckIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQzs4R0FqWFUsc0JBQXNCO2tHQUF0QixzQkFBc0Isc1ZDcENuQyx1Z1NBa0tNOzsyRkQ5SE8sc0JBQXNCO2tCQUpsQyxTQUFTOytCQUNFLGtCQUFrQjs7MEJBc0N6QixRQUFRO2tNQWhDZ0MsU0FBUztzQkFBbkQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUloQyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU07Z0JBWUEsY0FBYztzQkFEcEIsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgSW5wdXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgTmdab25lLFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgVmFsaWRhdG9ycyxcclxuICBGb3JtR3JvdXAsXHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIENvbnRyb2xDb250YWluZXIsXHJcbiAgRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29udHJvbFV0aWxpdHkgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvQ29udHJvbFV0aWxpdHknO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkZXIsIEZpbGVMaWtlT2JqZWN0LCBGaWxlVXBsb2FkZXJPcHRpb25zIH0gZnJvbSAnbmcyLWZpbGUtdXBsb2FkJztcclxuaW1wb3J0IHsgRmlsZURUTyB9IGZyb20gJy4uLy4uL1NoYXJlZC9Nb2RlbHMvRmlsZURUTyc7XHJcbmltcG9ydCB7IEltYWdlVXBsb2FkT3B0aW9ucyB9IGZyb20gJy4uLy4uL1NoYXJlZC9Nb2RlbHMvSW1hZ2VVcGxvYWRPcHRpb25zJztcclxuaW1wb3J0IHsgQ3JvcHBlckNvbXBvbmVudCB9IGZyb20gJ2FuZ3VsYXItY3JvcHBlcmpzJztcclxuaW1wb3J0IHtcclxuICBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgVXRpbGl0eVNlcnZpY2UsXHJcbn0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgR2xvYmFsU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvR2xvYmFsU2V0dGluZ3Muc2VydmljZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ0JCU0YtSW1hZ2VVcGxvYWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9JbWFnZVVwbG9hZC5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbWFnZVVwbG9hZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IG51bGw7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcsIHsgc3RhdGljOiBmYWxzZSB9KSBmaWxlSW5wdXQ6IEVsZW1lbnRSZWY7XHJcbiAgZmlsZXM6IEZpbGVbXSA9IFtdO1xyXG4gIGltYWdlU291cmNlOiBzdHJpbmc7XHJcbiAgaXNTdWJtaXR0ZWQ6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBvcHRpb25zOiBJbWFnZVVwbG9hZE9wdGlvbnM7XHJcbiAgQE91dHB1dCgpIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBpbWFnZVVwbG9hZEZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgdmFsaWRhdGlvbk1lc3NhZ2UgPSAnJztcclxuICB1cGxvYWRlcjogRmlsZVVwbG9hZGVyO1xyXG4gIGhhc0Fub3RoZXJEcm9wWm9uZU92ZXI6IGJvb2xlYW47XHJcbiAgYWNjZXB0ZWRUeXBlOiBzdHJpbmcgPSAnJztcclxuICBhY2NlcHRlZFR5cGVBcnJheTogc3RyaW5nW10gPSBbXTtcclxuICB0b29sVGlwVHlwZUFycmF5OiBzdHJpbmdbXSA9IFtdO1xyXG4gIGZpbGVMaWtlT2JqZWN0OiBGaWxlTGlrZU9iamVjdDtcclxuICBjb250cm9sOiBGb3JtQ29udHJvbDtcclxuICBAVmlld0NoaWxkKCdhbmd1bGFyQ3JvcHBlcicsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyBhbmd1bGFyQ3JvcHBlcjogQ3JvcHBlckNvbXBvbmVudDtcclxuICBpbWdVcmwgPSBudWxsO1xyXG4gIGNvbmZpZyA9IG51bGw7XHJcbiAgaW1hZ2VVcmwgPSAnJztcclxuICBpbWd3VXJsID0gJyc7XHJcbiAgRXZlbnRGaWxlOiBhbnk7XHJcbiAgbWRsU2FtcGxlSXNPcGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbWFya0FsbEFzVG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZhbGlkYXRpb25SdWxlcyA9IFtdO1xyXG4gIHZhbGlkYXRpb25SdWxlc2FzeW5jID0gW107XHJcbiAgbWF4RmlsZVNpemU6IG51bWJlciA9IDA7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgY29udHJvbFV0aWxpdHk6IENvbnRyb2xVdGlsaXR5LFxyXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxyXG4gICAgcHVibGljIEltYWdlVXBsYW9kZXJDb250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOiBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdsb2JhbFNldHRpbmdzOiBHbG9iYWxTZXR0aW5ncyxcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbFxyXG4gICkge1xyXG4gICAgSW1hZ2VVcGxvYWRlckNvbXBvbmVudC5jb250cm9sQ29udGFpbmVyc3RhdGljID0gdGhpcy5jb250cm9sQ29udGFpbmVyO1xyXG4gICAgdGhpcy51cGxvYWRlciA9IG5ldyBGaWxlVXBsb2FkZXIoPEZpbGVVcGxvYWRlck9wdGlvbnM+e1xyXG4gICAgICBkaXNhYmxlTXVsdGlwYXJ0OiBmYWxzZSwgLy8gJ0Rpc2FibGVNdWx0aXBhcnQnIG11c3QgYmUgJ3RydWUnIGZvciBmb3JtYXREYXRhRnVuY3Rpb24gdG8gYmUgY2FsbGVkLlxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmhhc0Fub3RoZXJEcm9wWm9uZU92ZXIgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jb250cm9sVmFsaWRhdGlvblNlcnZpY2UuaXNDcmVhdGVkQmVmb3IgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy52aWV3VHlwZSlcclxuICAgICAgdGhpcy5vcHRpb25zLnZpZXdUeXBlID0gdGhpcy5nbG9iYWxTZXR0aW5ncy52aWV3VHlwZTtcclxuXHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5kZWZhdWx0SW1hZ2VTcmMpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5kZWZhdWx0SW1hZ2VTcmMgPSB0aGlzLmdsb2JhbFNldHRpbmdzLmRlZmF1bHRJbWFnZVNyYztcclxuXHJcbiAgICAvL1NldCBpbWcgc3JjIGJ5IGRlZmF1bHQgdmFsdWVcclxuICAgIC8vIHRoaXMuSW1hZ2VTb3VyY2UgPSB0aGlzLm9wdGlvbnMuRGVmYXVsdEltYWdlU3JjO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuYWxsb3dJbWFnZUNyb3BwZXIpIHtcclxuICAgICAgdGhpcy5jb25maWcgPSB7XHJcbiAgICAgICAgYXNwZWN0UmF0aW86XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuaW1hZ2VDcm9wcGVyV2lkdGggLyB0aGlzLm9wdGlvbnMuaW1hZ2VDcm9wcGVySGVpZ2h0LFxyXG4gICAgICAgIGRyYWdNb2RlOiAnbW92ZScsXHJcbiAgICAgICAgYmFja2dyb3VuZDogdHJ1ZSxcclxuICAgICAgICBtb3ZhYmxlOiB0cnVlLFxyXG4gICAgICAgIHJvdGF0YWJsZTogdHJ1ZSxcclxuICAgICAgICBzY2FsYWJsZTogdHJ1ZSxcclxuICAgICAgICB6b29tYWJsZTogdHJ1ZSxcclxuICAgICAgICB2aWV3TW9kZTogMSxcclxuICAgICAgICBjaGVja0ltYWdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgIG1vZGFsOiB0cnVlLFxyXG4gICAgICAgIGNoZWNrQ3Jvc3NPcmlnaW46IGZhbHNlLFxyXG4gICAgICAgIHdpZHRoOiB0aGlzLm9wdGlvbnMuaW1hZ2VDcm9wcGVyV2lkdGgsXHJcbiAgICAgICAgaGVpZ2h0OiB0aGlzLm9wdGlvbnMuaW1hZ2VDcm9wcGVySGVpZ2h0LFxyXG4gICAgICAgIGNyb3BCb3hSZXNpemFibGU6IGZhbHNlLFxyXG4gICAgICAgIGF1dG9Dcm9wOiB0cnVlLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZmlsZVVwbG9hZEFjY2VwdHNUeXBlcyAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5maWxlVXBsb2FkQWNjZXB0c1R5cGVzO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy52YWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgIGxldCBpbWdVUkwgPSB0aGlzLm9wdGlvbnMudmFsdWVbJ2ZpbGVVUkwnXTtcclxuICAgICAgaWYgKGltZ1VSTCAhPSAnJyAmJiBpbWdVUkwgIT0gdW5kZWZpbmVkICYmIGltZ1VSTCAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5pbWFnZVNvdXJjZSA9IGltZ1VSTDtcclxuICAgICAgICB0aGlzLmltYWdlVXJsID0gaW1nVVJMO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgZWxlbWVudCA9IHRoaXMub3B0aW9ucy52YWx1ZTtcclxuICAgICAgdGhpcy5maWxlTGlrZU9iamVjdCA9IDxGaWxlTGlrZU9iamVjdD57XHJcbiAgICAgICAgbmFtZTogZWxlbWVudC5maWxlTmFtZSxcclxuICAgICAgICBzaXplOiBlbGVtZW50LmZpbGVTaXplSW5NQiAqIDEwMDAgKiAxMDAwLFxyXG4gICAgICAgIHR5cGU6IGVsZW1lbnQuZmlsZVR5cGUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMudXBsb2FkZXIuYWRkVG9RdWV1ZShbdGhpcy5maWxlTGlrZU9iamVjdCBhcyBhbnldKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmZpbGVNYXhTaXplSW5NQilcclxuICAgICAgdGhpcy5tYXhGaWxlU2l6ZSA9IHRoaXMub3B0aW9ucy5maWxlTWF4U2l6ZUluTUIgKiAxMDAwICogMTAwMDtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMub3B0aW9ucy5maWxlVXBsb2FkQWNjZXB0c1R5cGVzICE9IG51bGwgJiZcclxuICAgICAgdGhpcy5vcHRpb25zLmZpbGVVcGxvYWRBY2NlcHRzVHlwZXMubGVuZ3RoID4gMFxyXG4gICAgKSB7XHJcbiAgICAgIGZvciAoXHJcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcclxuICAgICAgICBpbmRleCA8IHRoaXMub3B0aW9ucy5maWxlVXBsb2FkQWNjZXB0c1R5cGVzLmxlbmd0aDtcclxuICAgICAgICBpbmRleCsrXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IFR5cGUgPSB0aGlzLm9wdGlvbnMuZmlsZVVwbG9hZEFjY2VwdHNUeXBlc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy5hY2NlcHRlZFR5cGUgPSB0aGlzLmFjY2VwdGVkVHlwZS50b1VwcGVyQ2FzZSgpICsgVHlwZS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYWNjZXB0ZWRUeXBlQXJyYXkgPSB0aGlzLmFjY2VwdGVkVHlwZS5zcGxpdCgnLCcpO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5hY2NlcHRlZFR5cGVBcnJheS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5hY2NlcHRlZFR5cGVBcnJheVtpbmRleF07XHJcbiAgICAgICAgY29uc3QgVHlwZVRvb2xUaXBlID0gZWxlbWVudC5zcGxpdCgnLycpWzFdO1xyXG4gICAgICAgIHRoaXMudG9vbFRpcFR5cGVBcnJheS5wdXNoKFR5cGVUb29sVGlwZS50b1VwcGVyQ2FzZSgpKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID1cclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlICtcclxuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0FsbG93ZWRUeXBlcycpICtcclxuICAgICAgICBgICgke3RoaXMudG9vbFRpcFR5cGVBcnJheX0pIGA7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmZpbGVNYXhTaXplSW5NQiA+IDApIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSArXHJcbiAgICAgICAgYCA8YnIgLz4gJHt0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0ZpbGVNYXhTaXplSW5NQicpfSAke3RoaXMub3B0aW9ucy5maWxlTWF4U2l6ZUluTUJcclxuICAgICAgICB9YDtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5vcHRpb25zLmZpbGVVcGxvYWRBY2NlcHRzVHlwZXMgIT0gbnVsbCAmJlxyXG4gICAgICB0aGlzLm9wdGlvbnMuZmlsZVVwbG9hZEFjY2VwdHNUeXBlcy5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgIH1cclxuICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm9wdGlvbnMubmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLmltYWdlVXBsb2FkRm9ybUNvbnRyb2wgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMub3B0aW9ucy5uYW1lXTsgLy8gIG5ldyBGb3JtQ29udHJvbCgnJyx2YWxpZGF0aW9uUnVsZXMpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMudmFsdWUgIT0gbnVsbClcclxuICAgICAgdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLm5hbWUpLnNldFZhbHVlKHRoaXMub3B0aW9ucy52YWx1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5sYWJlbEtleSAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5sYWJlbEtleSAhPSAnJylcclxuICAgICAgdGhpcy5vcHRpb25zLmxhYmVsVmFsdWUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmxhYmVsS2V5XHJcbiAgICAgICk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jdXN0b21WYWxpZGF0aW9uLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IFZhbGlkYXRpb25zID0gdGhpcy5vcHRpb25zLmN1c3RvbVZhbGlkYXRpb247XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBWYWxpZGF0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBWYWxpZGF0aW9uID0gVmFsaWRhdGlvbnNbaW5kZXhdO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5pc1JlcXVpcmVkKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbWFnZVVwbG9hZEZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5pbWFnZVVwbG9hZEZvcm1Db250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlc2FzeW5jKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmltYWdlVXBsb2FkRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5JbWFnZVVwbGFvZGVyQ29udHJvbEhvc3QubmdTdWJtaXQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVMaXN0ICE9IG51bGwpIHtcclxuICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLm9wdGlvbnMubmFtZSk7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuYXR0cmlidXRlTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVMaXN0W2luZGV4XS5rZXksXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuYXR0cmlidXRlTGlzdFtpbmRleF0udmFsdWVcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNob3dJbWFnZVVwbG9hZGVyKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XHJcbiAgICBsZXQgaW5wdXQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAnaW5wdXRbdHlwZT1maWxlXSdcclxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpbnB1dC5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRFcnJvciA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLnJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfTtcclxuXHJcbiAgc2hvd0dsb2JhbEVycm9yKCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5zaG93R2xvYmFsRXJyb3IoKTtcclxuICB9XHJcblxyXG4gIGdldEVycm9yVmFsaWRhdGlvbihFcnJvckxpc3QpIHtcclxuICAgIGlmICh0aGlzLm1hcmtBbGxBc1RvdWNoZWQgJiYgdGhpcy5ncm91cC5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKCk7XHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2xVdGlsaXR5LmdldEVycm9yVmFsaWRhdGlvbk1hc3NhZ2UoXHJcbiAgICAgIEVycm9yTGlzdCxcclxuICAgICAgdGhpcy5ncm91cCxcclxuICAgICAgdGhpcy5vcHRpb25zXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25GaWxlQ2hhbmdlKGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQucmVqZWN0ZWRGaWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBldmVudC5yZWplY3RlZEZpbGVzWzBdO1xyXG4gICAgICBjb25zdCBtYXhGaWxlU2l6ZSA9IHRoaXMub3B0aW9ucy5maWxlTWF4U2l6ZUluTUIgKiAxMDAwICogMTAwMDtcclxuICAgICAgY29uc3QgZmlsZVR5cGUgPSBmaWxlLnR5cGU7XHJcbiAgICAgIGlmIChmaWxlLnNpemUgPiBtYXhGaWxlU2l6ZSkge1xyXG4gICAgICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5pbWFnZVVwbG9hZEZvcm1Db250cm9sO1xyXG4gICAgICAgIGZvcm1Db250cm9sLnNldEVycm9ycyh7XHJcbiAgICAgICAgICBGaWxlTWF4U2l6ZUluTUI6IHRoaXMub3B0aW9ucy5maWxlTWF4U2l6ZUluTUIgKyAnTScsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgIHRoaXMudXBsb2FkZXIucXVldWUgPSBbXTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5maWxlVXBsb2FkQWNjZXB0c1R5cGVzICE9IG51bGwgJiZcclxuICAgICAgICB0aGlzLm9wdGlvbnMuZmlsZVVwbG9hZEFjY2VwdHNUeXBlcy5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgIShcclxuICAgICAgICAgIHRoaXMuYWNjZXB0ZWRUeXBlQXJyYXkuaW5jbHVkZXMoZmlsZVR5cGUudG9VcHBlckNhc2UoKSkgfHxcclxuICAgICAgICAgIHRoaXMuYWNjZXB0ZWRUeXBlQXJyYXkuaW5jbHVkZXMoZmlsZVR5cGUudG9Mb3dlckNhc2UoKSlcclxuICAgICAgICApXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5pbWFnZVVwbG9hZEZvcm1Db250cm9sO1xyXG4gICAgICAgIGZvcm1Db250cm9sLnNldEVycm9ycyh7IFRvb2xUaXBUeXBlRXJyb3I6IHRoaXMudG9vbFRpcFR5cGVBcnJheSB9KTtcclxuICAgICAgICBmb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgdGhpcy51cGxvYWRlci5xdWV1ZSA9IFtdO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IEZpbGVzQXJyYXkgPSBbXTtcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBldmVudC5hZGRlZEZpbGVzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICBjb25zdCBmaWxlID0gZXZlbnQuYWRkZWRGaWxlc1swXTtcclxuICAgICAgdGhpcy5FdmVudEZpbGUgPSBmaWxlO1xyXG4gICAgICBjb25zdCBtYXhGaWxlU2l6ZSA9IHRoaXMub3B0aW9ucy5maWxlTWF4U2l6ZUluTUIgKiAxMDAwICogMTAwMDtcclxuICAgICAgaWYgKGZpbGUpIHtcclxuICAgICAgICBjb25zdCBtYXhGaWxlU2l6ZSA9IHRoaXMub3B0aW9ucy5maWxlTWF4U2l6ZUluTUIgKiAxMDAwICogMTAwMDtcclxuICAgICAgICBjb25zdCBmaWxlVHlwZSA9IGZpbGUudHlwZTtcclxuICAgICAgICBpZiAoZmlsZS5zaXplID4gbWF4RmlsZVNpemUpIHtcclxuICAgICAgICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5pbWFnZVVwbG9hZEZvcm1Db250cm9sO1xyXG4gICAgICAgICAgZm9ybUNvbnRyb2wuc2V0RXJyb3JzKHtcclxuICAgICAgICAgICAgRmlsZU1heFNpemVJbk1COiB0aGlzLm9wdGlvbnMuZmlsZU1heFNpemVJbk1CICsgJ00nLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBmb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZGVyLnF1ZXVlID0gW107XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgIGxldCBGaWxlT2JqZWN0ID0gZmlsZTtcclxuICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChGaWxlT2JqZWN0KTtcclxuICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5hbGxvd0ltYWdlQ3JvcHBlcikge1xyXG4gICAgICAgICAgICB0aGlzLmltYWdlVXJsID0gcmVhZGVyLnJlc3VsdC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5Nb2RhbCh0cnVlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBGaWxlT2JqZWN0OiBGaWxlRFRPID0ge1xyXG4gICAgICAgICAgICAgIGZpbGVOYW1lOiBmaWxlLm5hbWUsXHJcbiAgICAgICAgICAgICAgZmlsZVR5cGU6IGZpbGUudHlwZSxcclxuICAgICAgICAgICAgICBmaWxlQmFzZTY0OiByZWFkZXIucmVzdWx0LnRvU3RyaW5nKCkuc3BsaXQoJywnKVsxXSxcclxuICAgICAgICAgICAgICBmaWxlU2l6ZUluTUI6IGZpbGUuc2l6ZSAvIDEwMDAgLyAxMDAwLFxyXG4gICAgICAgICAgICAgIG5hbWVXaXRoRXh0ZW5zaW9uOiBmaWxlLm5hbWUsXHJcbiAgICAgICAgICAgICAgaXNOZXc6dHJ1ZVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMudmFsdWUgPSBGaWxlT2JqZWN0O1xyXG4gICAgICAgICAgICBGaWxlc0FycmF5LnB1c2goRmlsZU9iamVjdCk7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5uYW1lKS5zZXRWYWx1ZShGaWxlT2JqZWN0KTtcclxuICAgICAgICAgICAgdGhpcy5maWxlcyA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVzLnB1c2goLi4uZXZlbnQuYWRkZWRGaWxlcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuaW1hZ2VVcGxvYWRGb3JtQ29udHJvbC52YWx1ZTtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBhdGNoRnVuY3Rpb24gJiZcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBhdGNoUGF0aCAmJlxyXG4gICAgICAgICAgICB0aGlzLmltYWdlVXBsb2FkRm9ybUNvbnRyb2wudmFsaWRcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdGNoQ29udHJvbFZhbHVlKFxyXG4gICAgICAgICAgICAgIG9yaWdpbmFsVmFsdWUsXHJcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBhdGNoRnVuY3Rpb24sXHJcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBhdGNoUGF0aFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy9Vc2UgdGhpcyBsaW5lIHRvIGVuYWJsZSB0d28gd2F5IGJpbmRpbmcuXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMudmFsdWUgPSBvcmlnaW5hbFZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KG9yaWdpbmFsVmFsdWUpO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUZyb21Db250cm9sVmFsdWUoZXZlbnQpIHtcclxuICAgIGxldCBJdGVtTGlzdCA9IHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5uYW1lKS52YWx1ZTtcclxuICAgIHRoaXMuZmlsZXMgPSBbXTtcclxuICAgIEl0ZW1MaXN0ID0gbnVsbDtcclxuICAgIC8vU2V0IEltZyBzcmMgYnkgZGVmYXVsdCBpbWFnZSAodXBsb2FkKVxyXG4gICAgdGhpcy5pbWFnZVNvdXJjZSA9IHRoaXMub3B0aW9ucy5kZWZhdWx0SW1hZ2VTcmM7XHJcblxyXG4gICAgaWYgKHRoaXMuZmlsZXMubGVuZ3RoID09IDAgJiYgdGhpcy5vcHRpb25zLmlzUmVxdWlyZWQpIHtcclxuICAgICAgdGhpcy5pbWFnZVVwbG9hZEZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgdGhpcy5pbWFnZVVwbG9hZEZvcm1Db250cm9sLnNldEVycm9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgdGhpcy5pbWFnZVVwbG9hZEZvcm1Db250cm9sLmludmFsaWQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMubmFtZSkuc2V0VmFsdWUoSXRlbUxpc3QpO1xyXG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5uYW1lKS52YWx1ZSk7XHJcbiAgICAvL1VzZSB0aGlzIGxpbmUgdG8gZW5hYmxlIHR3byB3YXkgYmluZGluZy5cclxuICAgIHRoaXMub3B0aW9ucy52YWx1ZSA9IHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5uYW1lKS52YWx1ZTtcclxuICB9XHJcblxyXG4gIGNyb3BJbWFnZSgpIHtcclxuICAgIGxldCBJbWFnZUNyb3BwZXJPYmplY3QgPSB0aGlzLmFuZ3VsYXJDcm9wcGVyLmNyb3BwZXIuZ2V0Q3JvcHBlZENhbnZhcyh7XHJcbiAgICAgIHdpZHRoOiB0aGlzLm9wdGlvbnMuaW1hZ2VDcm9wcGVyV2lkdGgsXHJcbiAgICAgIGhlaWdodDogdGhpcy5vcHRpb25zLmltYWdlQ3JvcHBlckhlaWdodCxcclxuICAgICAgaW1hZ2VTbW9vdGhpbmdFbmFibGVkOiBmYWxzZSxcclxuICAgICAgaW1hZ2VTbW9vdGhpbmdRdWFsaXR5OiAnaGlnaCcsXHJcbiAgICB9KTtcclxuICAgIEltYWdlQ3JvcHBlck9iamVjdC50b0Jsb2IoKGJsb2IpID0+IHtcclxuICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5nZXRCbG9iRmlsZShibG9iKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEJsb2JGaWxlKGJsb2IpIHtcclxuICAgIGxldCBGaWxlc0FycmF5ID0gW107XHJcbiAgICBsZXQgQmxvYkZpbGU7XHJcbiAgICBsZXQgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgIEJsb2JGaWxlID0gYmxvYjtcclxuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKEJsb2JGaWxlKTtcclxuICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgIGxldCBGaWxlT2JqZWN0OiBGaWxlRFRPID0ge1xyXG4gICAgICAgIGZpbGVOYW1lOiB0aGlzLkV2ZW50RmlsZS5uYW1lLFxyXG4gICAgICAgIGZpbGVUeXBlOiB0aGlzLkV2ZW50RmlsZS50eXBlLFxyXG4gICAgICAgIGZpbGVCYXNlNjQ6IHJlYWRlci5yZXN1bHQudG9TdHJpbmcoKS5zcGxpdCgnLCcpWzFdLFxyXG4gICAgICAgIGZpbGVTaXplSW5NQjogQmxvYkZpbGUuc2l6ZSAvIDEwMDAgLyAxMDAwLFxyXG4gICAgICAgIG5hbWVXaXRoRXh0ZW5zaW9uOiB0aGlzLkV2ZW50RmlsZS5uYW1lLFxyXG4gICAgICAgIGlzTmV3OnRydWVcclxuICAgICAgfTtcclxuICAgICAgQmxvYkZpbGUubmFtZSA9IHRoaXMuRXZlbnRGaWxlLm5hbWU7XHJcblxyXG4gICAgICBGaWxlc0FycmF5LnB1c2goRmlsZU9iamVjdCk7XHJcbiAgICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5uYW1lKS5zZXRWYWx1ZShGaWxlT2JqZWN0KTtcclxuICAgICAgdGhpcy5vcHRpb25zLnZhbHVlID0gRmlsZU9iamVjdDtcclxuICAgICAgdGhpcy5maWxlcyA9IFtdO1xyXG4gICAgICB0aGlzLmZpbGVzLnB1c2goQmxvYkZpbGUpO1xyXG4gICAgICB0aGlzLm9wZW5Nb2RhbChmYWxzZSk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcm90YXRlSW1hZ2UoZGVncmVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuYW5ndWxhckNyb3BwZXIuY3JvcHBlci5yb3RhdGUoZGVncmVlKTtcclxuICB9XHJcbiAgbW92ZUltYWdlKG9mZnNldFg6IG51bWJlciwgb2Zmc2V0WTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmFuZ3VsYXJDcm9wcGVyLmNyb3BwZXIubW92ZShvZmZzZXRYLCBvZmZzZXRZKTtcclxuICB9XHJcbiAgem9vbUltYWdlKHJhdGlvOiBudW1iZXIpIHtcclxuICAgIHRoaXMuYW5ndWxhckNyb3BwZXIuY3JvcHBlci56b29tKHJhdGlvKTtcclxuICB9XHJcblxyXG4gIG9wZW5Nb2RhbChvcGVuOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLm1kbFNhbXBsZUlzT3BlbiA9IG9wZW47XHJcbiAgfVxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG5cclxuICByZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbihcclxuICAgICAgdGhpcy5pbWFnZVVwbG9hZEZvcm1Db250cm9sLFxyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcyxcclxuICAgICAgdGhpcy5vcHRpb25zXHJcbiAgICApO1xyXG4gIH07XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuXHJcbiAgYWRkUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5hZGRSZXF1aXJlZFZhbGlkYXRpb24oXHJcbiAgICAgIHRoaXMuaW1hZ2VVcGxvYWRGb3JtQ29udHJvbCxcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMsXHJcbiAgICAgIHRoaXMub3B0aW9uc1xyXG4gICAgKTtcclxuICB9O1xyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIHJlbW92ZUN1c3RvbVZhbGlkYXRpb24gPSAoY3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5yZW1vdmVDdXN0b21WYWxpZGF0aW9uKFxyXG4gICAgICB0aGlzLmltYWdlVXBsb2FkRm9ybUNvbnRyb2wsXHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLFxyXG4gICAgICBjdXN0b21WYWxpZGF0aW9uXHJcbiAgICApO1xyXG4gIH07XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBhZGRDdXN0b21WYWxpZGF0aW9uID0gKGN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuYWRkQ3VzdG9tVmFsaWRhdGlvbihcclxuICAgICAgdGhpcy5pbWFnZVVwbG9hZEZvcm1Db250cm9sLFxyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcyxcclxuICAgICAgY3VzdG9tVmFsaWRhdGlvblxyXG4gICAgKTtcclxuICB9O1xyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgaXNWYWxpZCA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuaXNWYWxpZCh0aGlzLmltYWdlVXBsb2FkRm9ybUNvbnRyb2wpO1xyXG4gIH07XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgYmJzZi1jb250cm9sIGJic2YtaW1hZ2UtdXBsb2FkXCIgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxyXG4gIDxkaXYgW25nQ2xhc3NdPVwiKG9wdGlvbnMudmlld1R5cGU9PTEpPydiYnNmLXZlcnRpY2FsJzonYmJzZi1ob3Jpem9udGFsJ1wiPlxyXG4gICAgPCEtLWxhYmVsLS0+XHJcbiAgICA8bGFiZWwgW2hpZGRlbl09XCJvcHRpb25zLmhpZGVMYWJlbFwiIGNsYXNzPVwiYmJzZi1sYWJlbCB7e29wdGlvbnMubGFiZWxFeHRyYUNsYXNzZXN9fVwiPlxyXG4gICAgICB7e29wdGlvbnMubGFiZWxWYWx1ZX19XHJcbiAgICAgIDwhLS1Bc3Rlcmlzay0tPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cIigob3B0aW9ucy5zaG93QXN0ZXJpc2smJm9wdGlvbnMuaXNSZXF1aXJlZCl8fChvcHRpb25zLmlzUmVxdWlyZWQpKSYmIW9wdGlvbnMuaXNSZWFkb25seVwiXHJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+XHJcbiAgICA8L2xhYmVsPlxyXG4gICAgPCEtLUFsbG93IGRyb3Bab25lLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwib3B0aW9ucy5hbGxvd0Ryb3Bab25lJiYhb3B0aW9ucy5pc1JlYWRvbmx5XCIgY2xhc3M9XCJiYnNmLWlucHV0LWNvbnRhaW5lciB7e29wdGlvbnMuZXh0cmFDbGFzc2VzfX1cIlxyXG4gICAgICBuZ3gtZHJvcHpvbmUgW2Rpc2FibGVkXT1cIm9wdGlvbnMuaXNEaXNhYmxlZFwiIFthY2NlcHRdPVwiYWNjZXB0ZWRUeXBlXCIgW211bHRpcGxlXT1cIm9wdGlvbnMuaXNNdWx0aXBsZVwiXHJcbiAgICAgIChjaGFuZ2UpPVwib25GaWxlQ2hhbmdlKCRldmVudClcIiBuZ0RlZmF1bHRDb250cm9sIGZvcm1Db250cm9sTmFtZT1cInt7b3B0aW9ucy5uYW1lfX1cIiBbbWF4RmlsZVNpemVdPVwibWF4RmlsZVNpemVcIlxyXG4gICAgICBpZD1cInt7b3B0aW9ucy5uYW1lfX1cIiBbY2xhc3MuaXMtaW52YWxpZF09XCJpbWFnZVVwbG9hZEZvcm1Db250cm9sLmludmFsaWQgJiYgaW1hZ2VVcGxvYWRGb3JtQ29udHJvbC50b3VjaGVkXCI+XHJcbiAgICAgIDxuZ3gtZHJvcHpvbmUtbGFiZWwgY2xhc3M9XCJkcm9wem9uZS1sYWJlbFwiPlxyXG4gICAgICAgIDxpbWcgKm5nSWY9XCJpbWFnZVNvdXJjZVwiIFtzcmNdPVwiaW1hZ2VTb3VyY2VcIlxyXG4gICAgICAgICAgc3R5bGU9XCJhbGlnbi1pdGVtczogY2VudGVyO2JvcmRlci1yYWRpdXM6IDVweDtkaXNwbGF5OiBmbGV4O2hlaWdodDogMTAwcHg7anVzdGlmeS1jb250ZW50OiBjZW50ZXI7bWFyZ2luOiAxMHB4O21heC13aWR0aDogMTgwcHg7bWluLWhlaWdodDogMTAwcHg7bWluLXdpZHRoOiAxODBweDtwYWRkaW5nOiAwcHggMjBweDtwb3NpdGlvbjogcmVsYXRpdmU7XCIgLz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3ZnLWFuZC12YWxpZGF0aW9uXCIgKm5nSWY9XCIhaW1hZ2VTb3VyY2VcIj5cclxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDUwcHg7IGhlaWdodDogNTBweDtcIj5cclxuICAgICAgICAgICAgPHBhdGggb3BhY2l0eT1cIjAuM1wiXHJcbiAgICAgICAgICAgICAgZD1cIk01IDE2QzMuMyAxNiAyIDE0LjcgMiAxM0MyIDExLjMgMy4zIDEwIDUgMTBINS4xQzUgOS43IDUgOS4zIDUgOUM1IDYuMiA3LjIgNCAxMCA0QzExLjkgNCAxMy41IDUgMTQuMyA2LjVDMTQuOCA2LjIgMTUuNCA2IDE2IDZDMTcuNyA2IDE5IDcuMyAxOSA5QzE5IDkuNCAxOC45IDkuNyAxOC44IDEwQzE4LjkgMTAgMTguOSAxMCAxOSAxMEMyMC43IDEwIDIyIDExLjMgMjIgMTNDMjIgMTQuNyAyMC43IDE2IDE5IDE2SDVaTTggMTMuNkgxNkwxMi43IDEwLjNDMTIuMyA5Ljg5OTk5IDExLjcgOS44OTk5OSAxMS4zIDEwLjNMOCAxMy42WlwiXHJcbiAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiIHN0eWxlPVwiZmlsbDogI2ExYTFhMTtcIj48L3BhdGg+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEgMTMuNlYxOUMxMSAxOS42IDExLjQgMjAgMTIgMjBDMTIuNiAyMCAxMyAxOS42IDEzIDE5VjEzLjZIMTFaXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJmaWxsOiAjOTg5ODk4O1wiPjwvcGF0aD5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPCEtLVZhbGlkYXRpb24gdGV4dC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJic2YtdmFsaWRhdGlvbi1tc2dcIiAqbmdJZj1cInZhbGlkYXRpb25NZXNzYWdlXCIgW2lubmVySFRNTF09XCJ2YWxpZGF0aW9uTWVzc2FnZVwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25neC1kcm9wem9uZS1sYWJlbD5cclxuICAgICAgPG5neC1kcm9wem9uZS1pbWFnZS1wcmV2aWV3IGNsYXNzPVwiZHJvcHpvbmUtcHJldmlld1wiICpuZ0Zvcj1cImxldCBmIG9mIGZpbGVzXCIgW2ZpbGVdPVwiZlwiIFtyZW1vdmFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgKHJlbW92ZWQpPVwicmVtb3ZlRnJvbUNvbnRyb2xWYWx1ZShmKVwiIG5nUHJvamVjdEFzPVwibmd4LWRyb3B6b25lLXByZXZpZXdcIj5cclxuICAgICAgPC9uZ3gtZHJvcHpvbmUtaW1hZ2UtcHJldmlldz5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLU5vdCBhbGxvd2VkIGRyb3Bab25lLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIW9wdGlvbnMuYWxsb3dEcm9wWm9uZSYmIW9wdGlvbnMuaXNSZWFkb25seVwiPlxyXG4gICAgICA8bmd4LWRyb3B6b25lLWxhYmVsICpuZ0lmPVwiZmlsZXMubGVuZ3RoPT0wXCI+XHJcbiAgICAgICAgPGRpdiAjZWxlbWVudCAoY2xpY2spPVwic2hvd0ltYWdlVXBsb2FkZXIoZWxlbWVudClcIj5cclxuICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZVNvdXJjZVwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmd4LWRyb3B6b25lLWxhYmVsPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1ub25lIHt7b3B0aW9ucy5leHRyYUNsYXNzZXN9fVwiIG5neC1kcm9wem9uZSBbZGlzYWJsZWRdPVwib3B0aW9ucy5pc0Rpc2FibGVkXCIgW2FjY2VwdF09XCJhY2NlcHRlZFR5cGVcIlxyXG4gICAgICAgIFttdWx0aXBsZV09XCJvcHRpb25zLmlzTXVsdGlwbGVcIiAoY2hhbmdlKT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQpXCIgbmdEZWZhdWx0Q29udHJvbFxyXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7b3B0aW9ucy5uYW1lfX1cIiBbbWF4RmlsZVNpemVdPVwibWF4RmlsZVNpemVcIiBpZD1cInt7b3B0aW9ucy5uYW1lfX1cIlxyXG4gICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImltYWdlVXBsb2FkRm9ybUNvbnRyb2wuaW52YWxpZCAmJiBpbWFnZVVwbG9hZEZvcm1Db250cm9sLnRvdWNoZWRcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxuZ3gtZHJvcHpvbmUtaW1hZ2UtcHJldmlldyAqbmdGb3I9XCJsZXQgZiBvZiBmaWxlc1wiIFtmaWxlXT1cImZcIiBbcmVtb3ZhYmxlXT1cInRydWVcIlxyXG4gICAgICAgIChyZW1vdmVkKT1cInJlbW92ZUZyb21Db250cm9sVmFsdWUoZilcIiBuZ1Byb2plY3RBcz1cIm5neC1kcm9wem9uZS1wcmV2aWV3XCI+XHJcbiAgICAgIDwvbmd4LWRyb3B6b25lLWltYWdlLXByZXZpZXc+XHJcbiAgICAgIDwhLS1WYWxpZGF0aW9uIHRleHQtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImJic2YtdmFsaWRhdGlvbi1tc2dcIiAqbmdJZj1cInZhbGlkYXRpb25NZXNzYWdlXCIgW2lubmVySFRNTF09XCJ2YWxpZGF0aW9uTWVzc2FnZVwiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG5neC1kcm9wem9uZS1sYWJlbCAqbmdJZj1cImZpbGVzLmxlbmd0aD09MCYmb3B0aW9ucy5pc1JlYWRvbmx5XCI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJpbWFnZVNvdXJjZVwiICNlbGVtZW50PlxyXG4gICAgICAgIDxpbWcgW3NyY109XCJpbWFnZVNvdXJjZVwiIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiIWltYWdlU291cmNlXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12aWV3XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdOQScpfX08L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZ3gtZHJvcHpvbmUtbGFiZWw+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInN1YnRleHQtY29udGFpbmVyXCIgKm5nSWY9XCIhb3B0aW9ucy5pc1JlYWRvbmx5XCI+XHJcbiAgICA8IS0tIHJlcXVpcmVkIHRleHQtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJiYnNmLXZhbGlkYXRpb25cIiAqbmdJZj1cIihpbWFnZVVwbG9hZEZvcm1Db250cm9sLmludmFsaWQgJiYgaW1hZ2VVcGxvYWRGb3JtQ29udHJvbC50b3VjaGVkKVwiPlxyXG4gICAgICB7e2dldEVycm9yVmFsaWRhdGlvbihpbWFnZVVwbG9hZEZvcm1Db250cm9sLmVycm9yc3xrZXl2YWx1ZSl9fVxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBMYWJlbERlc2NyaXB0aW9uLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYmJzZi1jb250cm9sLWRlc2NcIiAqbmdJZj1cIm9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiE9bnVsbFwiPnt7b3B0aW9ucy5sYWJlbERlc2NyaXB0aW9ufX08L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIoZ3JvdXAudmFsaWQmJmdyb3VwLmRpcnR5JiZncm91cC50b3VjaGVkICl8fChncm91cC51bnRvdWNoZWQmJmdyb3VwLmludmFsaWQmJmdyb3VwLmRpcnR5KSBcIj5cclxuICAgICAge3tyZXNldEVycm9yKCl9fTwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDwhLS0gaW1hZ2UgY3JvcHBlciBtb2RhbC0tPlxyXG4gIDxkaXYgaWQ9XCJtZGxTYW1wbGVcIiBjbGFzcz1cIm1vZGFsIGJic2YtY3JvcHBlci1tb2RhbFwiIHJvbGU9XCJkaWFsb2dcIlxyXG4gICAgW25nU3R5bGVdPVwieydkaXNwbGF5JzogbWRsU2FtcGxlSXNPcGVuID8gJ2Jsb2NrJyA6ICdub25lJywgJ29wYWNpdHknOiAxfVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1sZ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNyb3BJbWFnZVwiKX19XHJcbiAgICAgICAgICA8L2g0PlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJvcGVuTW9kYWwoZmFsc2UpXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJpbWFnZVVybFwiPlxyXG4gICAgICAgICAgICA8YW5ndWxhci1jcm9wcGVyICNhbmd1bGFyQ3JvcHBlciBbY3JvcHBlck9wdGlvbnNdPVwiY29uZmlnXCIgW2ltYWdlVXJsXT1cImltYWdlVXJsXCI+XHJcbiAgICAgICAgICAgIDwvYW5ndWxhci1jcm9wcGVyPlxyXG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwiaW1nd1VybFwiIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcm9wcGVyLWJ0bnNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJ6b29tSW1hZ2UoMC4xKVwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9J3t7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlpvb21JblwiKX19Jz5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG9jcy10b29sdGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtc2VhcmNoLXBsdXNcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInpvb21JbWFnZSgtMC4xKVwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9J3t7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlpvb21PdXRcIil9fSc+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvY3MtdG9vbHRpcFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhIGZhLXNlYXJjaC1taW51c1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwibW92ZUltYWdlKC0xMCwwKVwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9J3t7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk1vdmVMZWZ0XCIpfX0nPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb2NzLXRvb2x0aXBcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYSBmYS1hcnJvdy1sZWZ0XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJtb3ZlSW1hZ2UoMTAsMClcIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPSd7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJNb3ZlUmlnaHRcIil9fSc+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvY3MtdG9vbHRpcFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhIGZhLWFycm93LXJpZ2h0XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJtb3ZlSW1hZ2UoMCwtMTApXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcD0ne3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTW92ZVVwXCIpfX0nPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb2NzLXRvb2x0aXBcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYSBmYS1hcnJvdy11cFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwibW92ZUltYWdlKDAsMTApXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcD0ne3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTW92ZURvd25cIil9fSc+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvY3MtdG9vbHRpcFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhIGZhLWFycm93LWRvd25cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJvdGF0ZUltYWdlKC00NSlcIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPSd7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJSb3RhdGVMZWZ0XCIpfX0nPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb2NzLXRvb2x0aXBcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYSBmYS11bmRvLWFsdFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicm90YXRlSW1hZ2UoNDUpXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcD0ne3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUm90YXRlUmlnaHRcIil9fSc+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvY3MtdG9vbHRpcFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhIGZhLXJlZG8tYWx0XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIiBhbGlnbj1cInJpZ2h0XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cImJ0bkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodFwiIChjbGljayk9XCJvcGVuTW9kYWwoZmFsc2UpXCI+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNyb3BJbWFnZSgpXCIgaWQ9XCJidG5PS1wiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tYnJhbmRcIj5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ3JvcFwiKX19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSByZWFkb25seSAtLT5cclxuXHJcblxyXG48L2Rpdj4iXX0=
|
|
@@ -213,9 +213,11 @@ export class MultiLingualTextAreaComponent {
|
|
|
213
213
|
this.showEnglishCharsLimitMsg = false;
|
|
214
214
|
this.hasEnglishCharsLimitValidationError = false;
|
|
215
215
|
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
216
|
+
let max = this.options.maxLength;
|
|
217
|
+
let current = this.englishCurrentCharsCount;
|
|
218
|
+
let msg = this.utilityService.getResourceValue("MaxLengthLimitWarning");
|
|
219
|
+
// Replace placeholders with actual values
|
|
220
|
+
this.englishMaxLimitWarningMsg = msg.replace("${max}", max.toString()).replace("${current}", current.toString());
|
|
219
221
|
}
|
|
220
222
|
}
|
|
221
223
|
if (this.arabicTextAreaFormControl.value == "") {
|
|
@@ -254,9 +256,11 @@ export class MultiLingualTextAreaComponent {
|
|
|
254
256
|
this.showArabicCharsLimitMsg = false;
|
|
255
257
|
this.hasArabicCharsLimitValidationError = false;
|
|
256
258
|
}
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
259
|
+
let max = this.options.maxLength;
|
|
260
|
+
let current = this.arabicCurrentCharsCount;
|
|
261
|
+
let msg = this.utilityService.getResourceValue("MaxLengthLimitWarning");
|
|
262
|
+
// Replace placeholders with actual values
|
|
263
|
+
this.arabicMaxLimitWarningMsg = msg.replace("${max}", max.toString()).replace("${current}", current.toString());
|
|
260
264
|
}
|
|
261
265
|
}
|
|
262
266
|
let multiLangModel = new EnglishArabicDTO();
|
|
@@ -429,4 +433,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
|
429
433
|
}], onChange: [{
|
|
430
434
|
type: Output
|
|
431
435
|
}] } });
|
|
432
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXVsdGlMaW5ndWFsVGV4dEFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL011bHRpTGluZ3VhbFRleHRBcmVhL011bHRpTGluZ3VhbFRleHRBcmVhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9NdWx0aUxpbmd1YWxUZXh0QXJlYS9NdWx0aUxpbmd1YWxUZXh0QXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBVyxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQXlELE1BQU0sZ0JBQWdCLENBQUM7QUFDM0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBR3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUkvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7OztBQU9qRSxNQUFNLE9BQU8sNkJBQTZCO2FBRWpDLDJCQUFzQixHQUFHLElBQUksQUFBUCxDQUFRO0lBR3JDLFlBQW1CLG1DQUF1RCxFQUFzQixnQkFBa0MsRUFDeEgsY0FBOEIsRUFBVSxjQUE4QixFQUFVLHdCQUFrRCxFQUNsSSxjQUE4QjtRQUZyQix3Q0FBbUMsR0FBbkMsbUNBQW1DLENBQW9CO1FBQXNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDeEgsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsbUJB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SSxDQUFDO1NBQ3ZDO2FBQ0ksWUFBWTtZQUNmLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7SUFDekMsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFnQjtRQUM3QixJQUFJLENBQUMsc0JBQXNCLEdBQUcsT0FBTyxDQUFBO1FBRXJDLFNBQVM7UUFDVCxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksSUFBSSxDQUFDLG1DQUFtQyxFQUFFLDhDQUE4QztnQkFDMUYsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztTQUN4QzthQUNJLFlBQVk7WUFDZixJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO0lBQzFDLENBQUM7OEdBNWNVLDZCQUE2QjtrR0FBN0IsNkJBQTZCLG9KQ2pCMUMsczRQQWtIQTs7MkZEakdhLDZCQUE2QjtrQkFKekMsU0FBUzsrQkFDRSwyQkFBMkI7OzBCQVF3QyxRQUFRO3VLQU01RSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIERvQ2hlY2ssIE9wdGlvbmFsLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycywgRm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vU2hhcmVkL0VudW1zL0lucHV0VHlwZSc7XHJcbmltcG9ydCB7IEVuZ2xpc2hBcmFiaWNEVE8gfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL0VuZ2xpc2hBcmFiaWNEVE8nO1xyXG5pbXBvcnQgeyBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL011bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucyc7XHJcbmltcG9ydCB7IENvbnRyb2xVdGlsaXR5IH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0NvbnRyb2xVdGlsaXR5JztcclxuaW1wb3J0IHsgTGFuZ3VhZ2VNb2RlIH0gZnJvbSAnLi4vLi4vU2hhcmVkL0VudW1zL0xhbmd1YWdlTW9kZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTZXR0aW5ncyB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9HbG9iYWxTZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb250cm9sTGF5b3V0IH0gZnJvbSAnLi4vLi4vU2hhcmVkL0VudW1zL0NvbnRyb2xMYXlvdXQnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnQkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL011bHRpTGluZ3VhbFRleHRBcmVhLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTXVsdGlMaW5ndWFsVGV4dEFyZWFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IG51bGw7XHJcbiAgSXNTaG93QXN0ZXJpc2tJbkFyYWJpYzogYm9vbGVhbjtcclxuICBJc1Nob3dBc3Rlcmlza0luRW5nbGlzaDogYm9vbGVhbjtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbXVsdGlMaW5ndWFsVGV4dEFyZWFGb3JtQ29udHJvbEhvc3Q6IEZvcm1Hcm91cERpcmVjdGl2ZSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxyXG4gICAgcHJpdmF0ZSBjb250cm9sVXRpbGl0eTogQ29udHJvbFV0aWxpdHksIHByaXZhdGUgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTogQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnbG9iYWxTZXR0aW5nczogR2xvYmFsU2V0dGluZ3NcclxuICApIHtcclxuICAgIE11bHRpTGluZ3VhbFRleHRBcmVhQ29tcG9uZW50LmNvbnRyb2xDb250YWluZXJzdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgb3B0aW9uczogTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zO1xyXG4gIEBPdXRwdXQoKSBvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIGVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgbXVsdGlUZXh0QXJlYUZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgbXVsdGlMYW5ndWFnZVRleHRBcmVhZ3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGFyYWJpY1dvcmRDb3VudDogbnVtYmVyID0gMDtcclxuICBhcmFiaWNXb3JkQ291bnRBcnJheTogbnVtYmVyID0gMDtcclxuICBlbmdsaXNoV29yZENvdW50OiBudW1iZXIgPSAwO1xyXG4gIGVuZ2xpc2hXb3JkQ291bnRBcnJheTogbnVtYmVyID0gMDtcclxuICBjdXJyZW50TGFuZ3VhZ2U6IHN0cmluZyA9IFwiXCI7XHJcbiAgc2hvd0FyYWJpY1RleHRBcmVhOiBib29sZWFuXHJcbiAgc2hvd0VuZ2lzaFRleHRBcmVhOiBib29sZWFuXHJcbiAgYXJhYmljVmFsaWRhdGlvblJ1bGVzID0gW107XHJcbiAgYXJhYmljVmFsaWRhdGlvblJ1bGVzYXN5bmMgPSBbXTtcclxuICBlbmdsaXNoVmFsaWRhdGlvblJ1bGVzID0gW107XHJcbiAgZW5nbGlzaFZhbGlkYXRpb25SdWxlc2FzeW5jID0gW107XHJcbiAgdmFsaWRhdGlvblJ1bGVzID0gW107XHJcbiAgdmFsaWRhdGlvblJ1bGVzYXN5bmMgPSBbXTtcclxuICBpc1Nob3dBcmFiaWNXb3JkQ291bnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1Nob3dFbmdsaXNoV29yZENvdW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgbWFya0FsbEFzVG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHJcbiAgYXJhYmljTGV0dGVyT25seTogc3RyaW5nID0gXCJcIlxyXG4gIGVuZ2xpc2hMZXR0ZXJPbmx5OiBzdHJpbmcgPSBcIlwiXHJcblxyXG4gIC8vRm9yIFNob3cgd2FybmluZyBtZXNzYWdlIG9mIG1heCBsZW5ndGggbGltaXRcclxuICBtaW5DaGFyc0xpbWl0OiBudW1iZXIgPSAtMTsgLy9UbyBkaXNhYmxlIGNoYXJzIGxpbWl0IGZlYXR1cmUgYnkgZGVmYXVsdFxyXG4gIGVuZ2xpc2hDdXJyZW50Q2hhcnNDb3VudDogbnVtYmVyID0gMDtcclxuICBhcmFiaWNDdXJyZW50Q2hhcnNDb3VudDogbnVtYmVyID0gMDtcclxuICBzaG93RW5nbGlzaENoYXJzTGltaXRNc2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93QXJhYmljQ2hhcnNMaW1pdE1zZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGhhc0VuZ2xpc2hDaGFyc0xpbWl0VmFsaWRhdGlvbkVycm9yOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaGFzQXJhYmljQ2hhcnNMaW1pdFZhbGlkYXRpb25FcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGVuZ2xpc2hDaGFyc0xpbWl0TXNnQ2xhc3M6IHN0cmluZztcclxuICBhcmFiaWNDaGFyc0xpbWl0TXNnQ2xhc3M6IHN0cmluZztcclxuICBlbmdsaXNoTWF4TGltaXRXYXJuaW5nTXNnOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGFyYWJpY01heExpbWl0V2FybmluZ01zZzogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgZ2V0Q3VzdG9tRXJyb3JzTWFzc2FnZXMoKSB7XHJcbiAgICB0aGlzLmFyYWJpY0xldHRlck9ubHkgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJWQUxfQXJhYmljSXNSZXF1aXJlZEFuZE9ubHk1MENoYXJhY3RlcnNFbmdsaXNoXCIpO1xyXG4gICAgdGhpcy5lbmdsaXNoTGV0dGVyT25seSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVuZ2xpc2hMZXR0ZXJPbmx5XCIpO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLmlzQ3JlYXRlZEJlZm9yID0gZmFsc2VcclxuICAgIHRoaXMuY3VycmVudExhbmd1YWdlID0gYXdhaXQgdGhpcy51dGlsaXR5U2VydmljZS5nZXRDdXJyZW50TGFuZ3VhZ2UoKTtcclxuICAgIC8vIFV0aWxpdHlTZXJ2aWNlLlRyYW5zbGF0b3Iub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQ6IExhbmdDaGFuZ2VFdmVudCkgPT4ge1xyXG4gICAgLy8gICB0aGlzLkN1cnJlbnRMYW5ndWFnZSA9IGV2ZW50LmxhbmdcclxuICAgIC8vICAgdGhpcy5zaG93SW5wdXRVc2luZ0xhbmd1YWdlTW9kZSgpO1xyXG5cclxuICAgIC8vIH0pO1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMudmlld1R5cGUpXHJcbiAgICAgIHRoaXMub3B0aW9ucy52aWV3VHlwZSA9IHRoaXMuZ2xvYmFsU2V0dGluZ3Mudmlld1R5cGU7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5sYW5ndWFnZU1vZGUpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5sYW5ndWFnZU1vZGUgPSB0aGlzLmdsb2JhbFNldHRpbmdzLmxhbmd1YWdlTW9kZTtcclxuICAgIGlmICghdGhpcy5vcHRpb25zLm11bHRpQ29udHJvbFBsYWNlbWVudFR5cGUpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5tdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlID0gdGhpcy5nbG9iYWxTZXR0aW5ncy5tdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlO1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMubWF4TGVuZ3RoKVxyXG4gICAgICB0aGlzLm9wdGlvbnMubWF4TGVuZ3RoID0gdGhpcy5nbG9iYWxTZXR0aW5ncy5tYXhMZW5ndGhUZXh0QXJlYTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmxhYmVsS2V5ICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLmxhYmVsS2V5ICE9IFwiXCIpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLmFyYWJpY0xhYmVsVmFsdWUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUodGhpcy5vcHRpb25zLmxhYmVsS2V5KSArIFwiIFwiICsgdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSW5BcmFiaWNcIik7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5lbmdsaXNoTGFiZWxWYWx1ZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSh0aGlzLm9wdGlvbnMubGFiZWxLZXkpICsgXCIgXCIgKyB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJJbkVuZ2xpc2hcIik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5hcmFiaWNMYWJlbEtleSAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5hcmFiaWNMYWJlbEtleSAhPSBcIlwiKVxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5hcmFiaWNMYWJlbFZhbHVlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5hcmFiaWNMYWJlbEtleSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmVuZ2xpc2hMYWJlbEtleSAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5lbmdsaXNoTGFiZWxLZXkgIT0gXCJcIilcclxuICAgICAgICB0aGlzLm9wdGlvbnMuZW5nbGlzaExhYmVsVmFsdWUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUodGhpcy5vcHRpb25zLmVuZ2xpc2hMYWJlbEtleSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5tdWx0aUxhbmd1YWdlVGV4dEFyZWFncm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgdGhpcy5tdWx0aUxhbmd1YWdlVGV4dEFyZWFncm91cC5hZGRDb250cm9sKFwiQXJhYmljXCIsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xyXG4gICAgdGhpcy5tdWx0aUxhbmd1YWdlVGV4dEFyZWFncm91cC5hZGRDb250cm9sKFwiRW5nbGlzaFwiLCBuZXcgRm9ybUNvbnRyb2woJycpKTtcclxuICAgIHRoaXMuYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbCA9IHRoaXMubXVsdGlMYW5ndWFnZVRleHRBcmVhZ3JvdXAuY29udHJvbHNbXCJBcmFiaWNcIl07IC8vICBuZXcgRm9ybUNvbnRyb2woJycsdmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuZW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wgPSB0aGlzLm11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwLmNvbnRyb2xzW1wiRW5nbGlzaFwiXTsgLy8gIG5ldyBGb3JtQ29udHJvbCgnJyx2YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5ncm91cC5hZGRDb250cm9sKHRoaXMub3B0aW9ucy5uYW1lLCBuZXcgRm9ybUdyb3VwKHRoaXMubXVsdGlMYW5ndWFnZVRleHRBcmVhZ3JvdXAuY29udHJvbHMpKTtcclxuICAgIHRoaXMuZ2V0Q3VzdG9tRXJyb3JzTWFzc2FnZXMoKVxyXG5cclxuICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLnR5cGUpIHtcclxuICAgICAgY2FzZSBJbnB1dFR5cGUuRW1haWw6XHJcbiAgICAgICAgdGhpcy5lbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0dGVyblZhbGlkYXRvcigvXlthLXowLTkuXyUrLV0rQFthLXowLTkuLV0rXFwuW2Etel17Miw0fSQvLCB7IEVtYWlsVmFsaWRhdGlvbktleTogXCJcIiB9KSxcclxuXHJcbiAgICAgICAgXSkpO1xyXG4gICAgICAgIHRoaXMuYXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0dGVyblZhbGlkYXRvcigvXlthLXowLTkuXyUrLV0rQFthLXowLTkuLV0rXFwuW2Etel17Miw0fSQvLCB7IEVtYWlsVmFsaWRhdGlvbktleTogXCJcIiB9KSxcclxuXHJcbiAgICAgICAgXSkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnB1dFR5cGUuTnVtYmVyOlxyXG4gICAgICAgIHRoaXMuZW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucGF0dGVybignXlswLTldKyhcXC4/WzAtOV0rKT8kJykpO1xyXG4gICAgICAgIHRoaXMuYXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKCdeWzAtOV0rKFxcLj9bMC05XSspPyQnKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmN1c3RvbVZhbGlkYXRpb24ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgVmFsaWRhdGlvbnMgPSB0aGlzLm9wdGlvbnMuY3VzdG9tVmFsaWRhdGlvblxyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgVmFsaWRhdGlvbnMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgVmFsaWRhdGlvbiA9IFZhbGlkYXRpb25zW2luZGV4XTtcclxuICAgICAgICB0aGlzLmVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgICAgdGhpcy5hcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5taW5MZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuYXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgodGhpcy5vcHRpb25zLm1pbkxlbmd0aCkpO1xyXG4gICAgICB0aGlzLmVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh0aGlzLm9wdGlvbnMubWluTGVuZ3RoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLm1heExlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5lbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5vcHRpb25zLm1heExlbmd0aCkpO1xyXG4gICAgICB0aGlzLmFyYWJpY1ZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMub3B0aW9ucy5tYXhMZW5ndGgpKTtcclxuXHJcbiAgICAgIGlmICghdGhpcy5vcHRpb25zLm1heExlbmd0aFdhcm5pbmdMaW1pdClcclxuICAgICAgICB0aGlzLm9wdGlvbnMubWF4TGVuZ3RoV2FybmluZ0xpbWl0ID0gdGhpcy5nbG9iYWxTZXR0aW5ncy5tYXhMZW5ndGhXYXJuaW5nTGltaXQ7XHJcblxyXG4gICAgICB0aGlzLm1pbkNoYXJzTGltaXQgPSB0aGlzLm9wdGlvbnMubWF4TGVuZ3RoIC0gdGhpcy5vcHRpb25zLm1heExlbmd0aFdhcm5pbmdMaW1pdDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNob3dJbnB1dFVzaW5nTGFuZ3VhZ2VNb2RlKCk7XHJcblxyXG4gICAgdGhpcy5hcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLmNvbXBvc2UoW1xyXG4gICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LmFyYWJpY1ZhbGlkYXRvcih7IEFyYWJpY0lzUmVxdWlyZWRBbmRPbmx5NTBDaGFyYWN0ZXJzRW5nbGlzaDogdGhpcy5hcmFiaWNMZXR0ZXJPbmx5IH0pLFxyXG5cclxuICAgIF0pKTtcclxuICAgIHRoaXMuZW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0dGVyblZhbGlkYXRvcigvXlt+YCFAIyQlXiYqKCnigJjigJnigJzigJ1fKz1bXFxdXFxcXHt9fDsnOlwiLC5cXC88Pj9hLXpBLVowLTktIFxcbl0qJC8sIHsgRW5nbGlzaExldHRlck9ubHk6IHRoaXMuZW5nbGlzaExldHRlck9ubHkgfSksXHJcblxyXG4gICAgXSkpO1xyXG5cclxuICAgIHRoaXMuYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMuYXJhYmljVmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy5hcmFiaWNWYWxpZGF0aW9uUnVsZXNhc3luYyk7XHJcbiAgICB0aGlzLmVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy5lbmdsaXNoVmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuZW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuZW5nbGlzaFZhbGlkYXRpb25SdWxlc2FzeW5jKTtcclxuXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuZW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLmFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy52YWx1ZS5hcmFiaWMpXHJcbiAgICB0aGlzLmVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy52YWx1ZS5lbmdsaXNoKVxyXG5cclxuICAgIHRoaXMubXVsdGlMaW5ndWFsVGV4dEFyZWFGb3JtQ29udHJvbEhvc3QubmdTdWJtaXQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSB0cnVlXHJcbiAgICB9KVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaXNSZWFkb25seSAmJiAhdGhpcy5vcHRpb25zLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy52YWx1ZS5hcmFiaWMgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ05BJyk7XHJcbiAgICAgIHRoaXMub3B0aW9ucy52YWx1ZS5lbmdsaXNoID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdOQScpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG5cclxuICBvblRleHRDaGFuZ2UoKSB7XHJcbiAgICBsZXQgYXJhYmljVmFsdWUgPSBcIlwiO1xyXG4gICAgbGV0IGVuZ2xpc2hWYWx1ZSA9IFwiXCI7XHJcbiAgICBpZiAodGhpcy5lbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZSA9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMuZW5nbGlzaFdvcmRDb3VudEFycmF5ID0gMDtcclxuICAgICAgdGhpcy5lbmdsaXNoV29yZENvdW50ID0gMDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5lbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZSAhPSBudWxsIHx8IHRoaXMuZW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wudmFsdWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5lbmdsaXNoV29yZENvdW50QXJyYXkgPSB0aGlzLmVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlLnNwbGl0KFwiIFwiKS5sZW5ndGg7XHJcbiAgICAgICAgaWYgKHRoaXMuZW5nbGlzaFdvcmRDb3VudEFycmF5ID4gMCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZW5nbGlzaFdvcmRDb3VudEFycmF5ID4gdGhpcy5vcHRpb25zLm1heFdvcmRDb3VudCkge1xyXG4gICAgICAgICAgICB0aGlzLmVuZ2xpc2hXb3JkQ291bnQgPSB0aGlzLm9wdGlvbnMubWF4V29yZENvdW50O1xyXG4gICAgICAgICAgICB0aGlzLm11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwLmNvbnRyb2xzW1wiRW5nbGlzaFwiXS5zZXRFcnJvcnMoeyBNYXhXb3JkQ291bnRWYWxpZGF0aW9uS2V5OiB0aGlzLm9wdGlvbnMubWF4V29yZENvdW50IH0pO1xyXG4gICAgICAgICAgICB0aGlzLm11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwLmNvbnRyb2xzW1wiRW5nbGlzaFwiXS5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICAgIHRoaXMubXVsdGlMYW5ndWFnZVRleHRBcmVhZ3JvdXAuY29udHJvbHNbXCJFbmdsaXNoXCJdLmludmFsaWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5lbmdsaXNoV29yZENvdW50ID0gdGhpcy5lbmdsaXNoV29yZENvdW50QXJyYXk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbmdsaXNoVmFsdWUgPSB0aGlzLmVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vQ2hlY2sgZm9yIG1heGxlbmd0aCBsaW1pdCBjb3VudFxyXG4gICAgICAvL01heExlbmd0aCBzaG91bGQgYmUgZ3JldGFlciB0aGFuIG9yIGVxdWFscyBjaGFycyBsaW1pdCBzbyB0aGF0IG1pbkNoYXJzTGltaXQgd291bGQgYmUgPj0gMFxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLm1heExlbmd0aCAmJiB0aGlzLm1pbkNoYXJzTGltaXQgPj0gMCkge1xyXG4gICAgICAgIHRoaXMuZW5nbGlzaEN1cnJlbnRDaGFyc0NvdW50ID0gdGhpcy5lbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZS5sZW5ndGg7XHJcbiAgICAgICAgaWYgKHRoaXMuZW5nbGlzaEN1cnJlbnRDaGFyc0NvdW50ID4gdGhpcy5taW5DaGFyc0xpbWl0KSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dFbmdsaXNoQ2hhcnNMaW1pdE1zZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmhhc0VuZ2xpc2hDaGFyc0xpbWl0VmFsaWRhdGlvbkVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgIGlmICh0aGlzLmVuZ2xpc2hDdXJyZW50Q2hhcnNDb3VudCA9PSB0aGlzLm9wdGlvbnMubWF4TGVuZ3RoKVxyXG4gICAgICAgICAgICB0aGlzLmVuZ2xpc2hDaGFyc0xpbWl0TXNnQ2xhc3MgPSBcImRhbmdlclwiO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmVuZ2xpc2hDaGFyc0xpbWl0TXNnQ2xhc3MgPSBcIndhcm5pbmdcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dFbmdsaXNoQ2hhcnNMaW1pdE1zZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5oYXNFbmdsaXNoQ2hhcnNMaW1pdFZhbGlkYXRpb25FcnJvciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgbWF4OiBudW1iZXIgPSB0aGlzLm9wdGlvbnMubWF4TGVuZ3RoO1xyXG4gICAgICAgIHZhciBjdXJyZW50OiBudW1iZXIgPSB0aGlzLmVuZ2xpc2hDdXJyZW50Q2hhcnNDb3VudDtcclxuXHJcbiAgICAgICAgdGhpcy5lbmdsaXNoTWF4TGltaXRXYXJuaW5nTXNnID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTWF4TGVuZ3RoTGltaXRXYXJuaW5nXCIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlID09IFwiXCIpIHtcclxuICAgICAgdGhpcy5hcmFiaWNXb3JkQ291bnRBcnJheSA9IDA7XHJcbiAgICAgIHRoaXMuYXJhYmljV29yZENvdW50ID0gMDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5hcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlICE9IG51bGwgfHwgdGhpcy5hcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuYXJhYmljV29yZENvdW50QXJyYXkgPSB0aGlzLmFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wudmFsdWUuc3BsaXQoXCIgXCIpLmxlbmd0aDtcclxuICAgICAgICBpZiAodGhpcy5hcmFiaWNXb3JkQ291bnRBcnJheSA+IDApIHtcclxuICAgICAgICAgIGlmICh0aGlzLmFyYWJpY1dvcmRDb3VudEFycmF5ID4gdGhpcy5vcHRpb25zLm1heFdvcmRDb3VudCkge1xyXG4gICAgICAgICAgICB0aGlzLmFyYWJpY1dvcmRDb3VudCA9IHRoaXMub3B0aW9ucy5tYXhXb3JkQ291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMubXVsdGlMYW5ndWFnZVRleHRBcmVhZ3JvdXAuY29udHJvbHNbXCJBcmFiaWNcIl0uc2V0RXJyb3JzKHsgTWF4V29yZENvdW50VmFsaWRhdGlvbktleTogdGhpcy5vcHRpb25zLm1heFdvcmRDb3VudCB9KTtcclxuICAgICAgICAgICAgdGhpcy5tdWx0aUxhbmd1YWdlVGV4dEFyZWFncm91cC5jb250cm9sc1tcIkFyYWJpY1wiXS5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICAgIHRoaXMubXVsdGlMYW5ndWFnZVRleHRBcmVhZ3JvdXAuY29udHJvbHNbXCJBcmFiaWNcIl0uaW52YWxpZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmFyYWJpY1dvcmRDb3VudCA9IHRoaXMuYXJhYmljV29yZENvdW50QXJyYXk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBhcmFiaWNWYWx1ZSA9IHRoaXMuYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vQ2hlY2sgZm9yIG1heGxlbmd0aCBsaW1pdCBjb3VudFxyXG4gICAgICAvL01heExlbmd0aCBzaG91bGQgYmUgZ3JldGFlciB0aGFuIG9yIGVxdWFscyBjaGFycyBsaW1pdCBzbyB0aGF0IG1pbkNoYXJzTGltaXQgd291bGQgYmUgPj0gMFxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLm1heExlbmd0aCAmJiB0aGlzLm1pbkNoYXJzTGltaXQgPj0gMCkge1xyXG4gICAgICAgIHRoaXMuYXJhYmljQ3VycmVudENoYXJzQ291bnQgPSB0aGlzLmFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wudmFsdWUubGVuZ3RoO1xyXG4gICAgICAgIGlmICh0aGlzLmFyYWJpY0N1cnJlbnRDaGFyc0NvdW50ID4gdGhpcy5taW5DaGFyc0xpbWl0KSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dBcmFiaWNDaGFyc0xpbWl0TXNnID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuaGFzQXJhYmljQ2hhcnNMaW1pdFZhbGlkYXRpb25FcnJvciA9IHRydWU7XHJcbiAgICAgICAgICBpZiAodGhpcy5hcmFiaWNDdXJyZW50Q2hhcnNDb3VudCA9PSB0aGlzLm9wdGlvbnMubWF4TGVuZ3RoKVxyXG4gICAgICAgICAgICB0aGlzLmFyYWJpY0NoYXJzTGltaXRNc2dDbGFzcyA9IFwiZGFuZ2VyXCI7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuYXJhYmljQ2hhcnNMaW1pdE1zZ0NsYXNzID0gXCJ3YXJuaW5nXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zaG93QXJhYmljQ2hhcnNMaW1pdE1zZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5oYXNBcmFiaWNDaGFyc0xpbWl0VmFsaWRhdGlvbkVycm9yID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBtYXg6IG51bWJlciA9IHRoaXMub3B0aW9ucy5tYXhMZW5ndGg7XHJcbiAgICAgICAgdmFyIGN1cnJlbnQ6IG51bWJlciA9IHRoaXMuYXJhYmljQ3VycmVudENoYXJzQ291bnQ7XHJcblxyXG4gICAgICAgIHRoaXMuYXJhYmljTWF4TGltaXRXYXJuaW5nTXNnID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTWF4TGVuZ3RoTGltaXRXYXJuaW5nXCIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgbXVsdGlMYW5nTW9kZWwgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgbXVsdGlMYW5nTW9kZWwuYXJhYmljID0gYXJhYmljVmFsdWU7XHJcbiAgICBtdWx0aUxhbmdNb2RlbC5lbmdsaXNoID0gZW5nbGlzaFZhbHVlO1xyXG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KG11bHRpTGFuZ01vZGVsKVxyXG5cclxuICAgIHRoaXMuYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC5zZXRWYWx1ZShtdWx0aUxhbmdNb2RlbC5hcmFiaWMpO1xyXG4gICAgdGhpcy5lbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC5zZXRWYWx1ZShtdWx0aUxhbmdNb2RlbC5lbmdsaXNoKTtcclxuXHJcbiAgICAvLyB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMubmFtZSkuc2V0VmFsdWUobXVsaXRMYW5nTW9kZWwpO1xyXG4gICAgLy9Vc2UgdGhpcyBsaW5lIHRvIGVuYWJsZSB0d28gd2F5IGJpbmRpbmcuXHJcbiAgICB0aGlzLm9wdGlvbnMudmFsdWUgPSBtdWx0aUxhbmdNb2RlbDtcclxuXHJcbiAgfVxyXG5cclxuICByZXNldEVycm9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVmFsaWRhdGlvblNlcnZpY2UucmVtb3ZlR2xvYmFsRXJyb3IoKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgc2hvd0dsb2JhbEVycm9yKCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5zaG93R2xvYmFsRXJyb3IoKVxyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JWYWxpZGF0aW9uKEVycm9yTGlzdCkge1xyXG4gICAgaWYgKHRoaXMubWFya0FsbEFzVG91Y2hlZCAmJiB0aGlzLmdyb3VwLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5zaG93R2xvYmFsRXJyb3IoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFV0aWxpdHkuZ2V0RXJyb3JWYWxpZGF0aW9uTWFzc2FnZShFcnJvckxpc3QsIHRoaXMuZ3JvdXAsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBnZXRJbnB1dFR5cGUodHlwZTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gSW5wdXRUeXBlW3R5cGVdXHJcbiAgfVxyXG5cclxuICB0cmltQ29udHJvbFZhbHVlKHR5cGU6IHN0cmluZykge1xyXG4gICAgY29uc3Qgd2hpdGVzcGFjZTogc3RyaW5nID0gJyAnO1xyXG4gICAgaWYgKHR5cGUgPT0gXCJFblwiKSB7XHJcbiAgICAgIGxldCBvcmlnaW5hbFZhbHVlID0gdGhpcy5lbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZTtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5wYXRjaEZ1bmN0aW9uICYmIHRoaXMub3B0aW9ucy5wYXRjaFBhdGggJiYgdGhpcy5lbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC52YWxpZCkge1xyXG4gICAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0Y2hDb250cm9sVmFsdWUob3JpZ2luYWxWYWx1ZSwgdGhpcy5vcHRpb25zLnBhdGNoRnVuY3Rpb24sIHRoaXMub3B0aW9ucy5wYXRjaFBhdGgpXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wudmFsdWUuc3RhcnRzV2l0aCh3aGl0ZXNwYWNlKSB8fCB0aGlzLmVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlLmVuZHNXaXRoKHdoaXRlc3BhY2UpKSB7XHJcbiAgICAgICAgdGhpcy5lbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC5wYXRjaFZhbHVlKG9yaWdpbmFsVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZSA9PSBcIkFyXCIpIHtcclxuICAgICAgbGV0IG9yaWdpbmFsVmFsdWUgPSB0aGlzLmFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucGF0Y2hGdW5jdGlvbiAmJiB0aGlzLm9wdGlvbnMucGF0Y2hQYXRoICYmIHRoaXMuYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC52YWxpZCkge1xyXG4gICAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0Y2hDb250cm9sVmFsdWUob3JpZ2luYWxWYWx1ZSwgdGhpcy5vcHRpb25zLnBhdGNoRnVuY3Rpb24sIHRoaXMub3B0aW9ucy5wYXRjaFBhdGgpXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZS5zdGFydHNXaXRoKHdoaXRlc3BhY2UpIHx8IHRoaXMuYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZS5lbmRzV2l0aCh3aGl0ZXNwYWNlKSkge1xyXG4gICAgICAgIHRoaXMuYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC5wYXRjaFZhbHVlKG9yaWdpbmFsVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgY29weUlucHV0TWVzc2FnZShpbnB1dEVsZW1lbnQpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQ29weUlucHV0TWVzc2FnZShpbnB1dEVsZW1lbnQpXHJcbiAgfVxyXG5cclxuXHJcbiAgc2hvd0lucHV0VXNpbmdMYW5ndWFnZU1vZGUoKSB7XHJcblxyXG4gICAgdGhpcy5hcmFiaWNWYWxpZGF0aW9uUnVsZXMgPSB0aGlzLmFyYWJpY1ZhbGlkYXRpb25SdWxlcy5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIHRoaXMuZW5nbGlzaFZhbGlkYXRpb25SdWxlcyA9IHRoaXMuZW5nbGlzaFZhbGlkYXRpb25SdWxlcy5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgICB0aGlzLmFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICB0aGlzLmVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG5cclxuICAgIHRoaXMuYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLmVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5sYW5ndWFnZU1vZGUpIHtcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuQm90aF9MYW5ndWFnZXNfYXJlX3Zpc2libGU6XHJcbiAgICAgICAgdGhpcy5zaG93QXJhYmljVGV4dEFyZWEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd0VuZ2lzaFRleHRBcmVhID0gdHJ1ZTtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmlzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgdGhpcy5lbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICB0aGlzLmFyYWJpY1ZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luQXJhYmljID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuSXNTaG93QXN0ZXJpc2tJbkVuZ2xpc2ggPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuQXJhYmljX0xhbmd1YWdlX29ubHlfaXNfdmlzaWJsZTpcclxuICAgICAgICB0aGlzLnNob3dBcmFiaWNUZXh0QXJlYSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLm11bHRpQ29udHJvbFBsYWNlbWVudFR5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuRW5nbGlzaF9MYW5ndWFnZV9vbmx5X2lzX3Zpc2libGU6XHJcbiAgICAgICAgdGhpcy5zaG93RW5naXNoVGV4dEFyZWEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5tdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGFuZ3VhZ2VNb2RlLkJvdGhfTGFuZ3VhZ2VzX2FyZV92aXNpYmxlX2J1dF9vbmx5X2N1cnJlbnRfbGFuZ3VhZ2VfaXNfcmVxdWlyZWQ6XHJcbiAgICAgICAgdGhpcy5zaG93QXJhYmljVGV4dEFyZWEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd0VuZ2lzaFRleHRBcmVhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9wdGlvbnMubXVsdGlDb250cm9sUGxhY2VtZW50VHlwZSA9IHRoaXMuZ2xvYmFsU2V0dGluZ3MubXVsdGlDb250cm9sUGxhY2VtZW50VHlwZVxyXG5cclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50TGFuZ3VhZ2UgPT0gJ2FyJykge1xyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5pc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5hcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luQXJhYmljID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRMYW5ndWFnZSA9PSAnZW4nKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmlzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luRW5nbGlzaCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuQm90aF9MYW5ndWFnZXNfYnV0X29ubHlfQXJhYmljX2lzX3JlcXVpcmVkOlxyXG4gICAgICAgIHRoaXMuc2hvd0FyYWJpY1RleHRBcmVhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNob3dFbmdpc2hUZXh0QXJlYSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLm11bHRpQ29udHJvbFBsYWNlbWVudFR5cGUgPSB0aGlzLmdsb2JhbFNldHRpbmdzLm11bHRpQ29udHJvbFBsYWNlbWVudFR5cGVcclxuXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5pc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgIHRoaXMuYXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICB0aGlzLklzU2hvd0FzdGVyaXNrSW5BcmFiaWMgPSB0cnVlO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGFuZ3VhZ2VNb2RlLkJvdGhfTGFuZ3VhZ2VzX2J1dF9vbmx5X0VuZ2xpc2hfaXNfcmVxdWlyZWQ6XHJcbiAgICAgICAgdGhpcy5zaG93QXJhYmljVGV4dEFyZWEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd0VuZ2lzaFRleHRBcmVhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9wdGlvbnMubXVsdGlDb250cm9sUGxhY2VtZW50VHlwZSA9IHRoaXMuZ2xvYmFsU2V0dGluZ3MubXVsdGlDb250cm9sUGxhY2VtZW50VHlwZVxyXG5cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmlzUmVxdWlyZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgdGhpcy5lbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICB0aGlzLklzU2hvd0FzdGVyaXNrSW5FbmdsaXNoID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExhbmd1YWdlTW9kZS5DdXJyZW50X0xhbmd1YWdlX29ubHlfaXNfdmlzaWJsZV9hbmRfcmVxdWlyZWQ6XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLm11bHRpQ29udHJvbFBsYWNlbWVudFR5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRMYW5ndWFnZSA9PSAnYXInKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dBcmFiaWNUZXh0QXJlYSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dFbmdpc2hUZXh0QXJlYSA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5pc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5hcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luQXJhYmljID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRMYW5ndWFnZSA9PSAnZW4nKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dBcmFiaWNUZXh0QXJlYSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zaG93RW5naXNoVGV4dEFyZWEgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5pc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5lbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICAgIHRoaXMuSXNTaG93QXN0ZXJpc2tJbkVuZ2xpc2ggPSB0cnVlO1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLnNldFZhbGlkYXRvcnModGhpcy5hcmFiaWNWYWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5lbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMuZW5nbGlzaFZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLmFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5lbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25BcmFiaWNGb2N1cyhpc0ZvY3VzOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmlzU2hvd0FyYWJpY1dvcmRDb3VudCA9IGlzRm9jdXNcclxuXHJcbiAgICAvL29uRm9jdXNcclxuICAgIGlmIChpc0ZvY3VzKSB7XHJcbiAgICAgIGlmICh0aGlzLmhhc0FyYWJpY0NoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3IpIC8vY2hlY2sgaWYgdGhlcmUgd2FzIHByZXZpb3VzIHZhbGlkYXRpb24gZXJyb3JcclxuICAgICAgICB0aGlzLnNob3dBcmFiaWNDaGFyc0xpbWl0TXNnID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgLy9vbkZvY3VzT3V0XHJcbiAgICAgIHRoaXMuc2hvd0FyYWJpY0NoYXJzTGltaXRNc2cgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uRW5nbGlzaEZvY3VzKGlzRm9jdXM6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuaXNTaG93RW5nbGlzaFdvcmRDb3VudCA9IGlzRm9jdXNcclxuXHJcbiAgICAvL29uRm9jdXNcclxuICAgIGlmIChpc0ZvY3VzKSB7XHJcbiAgICAgIGlmICh0aGlzLmhhc0VuZ2xpc2hDaGFyc0xpbWl0VmFsaWRhdGlvbkVycm9yKSAvL2NoZWNrIGlmIHRoZXJlIHdhcyBwcmV2aW91cyB2YWxpZGF0aW9uIGVycm9yXHJcbiAgICAgICAgdGhpcy5zaG93RW5nbGlzaENoYXJzTGltaXRNc2cgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSAvL29uRm9jdXNPdXRcclxuICAgICAgdGhpcy5zaG93RW5nbGlzaENoYXJzTGltaXRNc2cgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgUmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5yZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5lbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbCwgdGhpcy5lbmdsaXNoVmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLmFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wsIHRoaXMuYXJhYmljVmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgQWRkUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5hZGRSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5lbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbCwgdGhpcy5lbmdsaXNoVmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LmFkZFJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLmFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wsIHRoaXMuYXJhYmljVmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG5cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBSZW1vdmVDdXN0b21WYWxpZGF0aW9uID0gKEN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkucmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbih0aGlzLmVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLCB0aGlzLmVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnJlbW92ZUN1c3RvbVZhbGlkYXRpb24odGhpcy5hcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLCB0aGlzLmFyYWJpY1ZhbGlkYXRpb25SdWxlcywgQ3VzdG9tVmFsaWRhdGlvbilcclxuICB9XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBBZGRDdXN0b21WYWxpZGF0aW9uID0gKEN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuYWRkQ3VzdG9tVmFsaWRhdGlvbih0aGlzLmVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLCB0aGlzLmVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LmFkZEN1c3RvbVZhbGlkYXRpb24odGhpcy5hcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLCB0aGlzLmFyYWJpY1ZhbGlkYXRpb25SdWxlcywgQ3VzdG9tVmFsaWRhdGlvbilcclxuICB9XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBJc1ZhbGlkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5pc1ZhbGlkKHRoaXMuZW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wpXHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LmlzVmFsaWQodGhpcy5hcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sKVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJiYnNmLWNvbnRyb2wgYmJzZi1tdWx0aWxhbmctdGV4dGFyZWEgZm9ybS1ncm91cCBtYi0wXCIgW2Zvcm1Hcm91cF09XCJtdWx0aUxhbmd1YWdlVGV4dEFyZWFncm91cFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8IS0tI3JlZ2lvbiBFbmdsaXNoIHRleHRhcmVhLS0+XHJcbiAgICAgIDxkaXYgW25nQ2xhc3NdPVwiKG9wdGlvbnMubXVsdGlDb250cm9sUGxhY2VtZW50VHlwZT09MSk/J2NvbC1tZC0xMic6J2NvbC1tZC02J1wiICpuZ0lmPVwic2hvd0VuZ2lzaFRleHRBcmVhXCIgY2xhc3M9XCJiYnNmLW11bHRpbGFuZy1mb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCIob3B0aW9ucy52aWV3VHlwZT09MSk/J2Jic2YtdmVydGljYWwnOidiYnNmLWhvcml6b250YWwnXCI+XHJcbiAgICAgICAgICA8IS0tbGFiZWwtLT5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImJic2YtbGFiZWwge3tvcHRpb25zLmxhYmVsRXh0cmFDbGFzc2VzfX1cIiBbaGlkZGVuXT1cIm9wdGlvbnMuaXNIaWRlRW5nbGlzaExhYmVsXCI+XHJcbiAgICAgICAgICAgIHt7KG9wdGlvbnMuZW5nbGlzaExhYmVsVmFsdWUhPW51bGwmJm9wdGlvbnMuZW5nbGlzaExhYmVsVmFsdWUhPVwiXCIpP29wdGlvbnMuZW5nbGlzaExhYmVsVmFsdWU6b3B0aW9ucy5sYWJlbFZhbHVlK1wiSW5FbmdsaXNoXCJ9fVxyXG4gICAgICAgICAgICA8IS0tQXN0ZXJpc2stLT5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIoKChvcHRpb25zLnNob3dBc3RlcmlzayYmb3B0aW9ucy5pc1JlcXVpcmVkKXx8KG9wdGlvbnMuaXNSZXF1aXJlZCkpJiZJc1Nob3dBc3Rlcmlza0luRW5nbGlzaCkmJiFvcHRpb25zLmlzUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLWlucHV0LWNvbnRhaW5lclwiICpuZ0lmPVwiIW9wdGlvbnMuaXNSZWFkb25seVwiIFtuZ0NsYXNzXT1cIm9wdGlvbnMuZW5hYmxlQ29weVRvQ2xpcGJvYXJkPyAncC00MHB4JyA6ICcnIFwiPlxyXG4gICAgICAgICAgICA8IS0taW5wdXQtLT5cclxuICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZGlyPVwibHRyXCIgcm93cz1cInt7b3B0aW9ucy5yb3dzfX1cIiBjb2xzPVwie3tvcHRpb25zLmNvbHN9fVwiIChmb2N1cyk9XCJvbkVuZ2xpc2hGb2N1cyh0cnVlKVwiXHJcbiAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cIm9uRW5nbGlzaEZvY3VzKGZhbHNlKVwiIG1heGxlbmd0aD1cInt7b3B0aW9ucy5tYXhMZW5ndGh9fVwiIG1pbmxlbmd0aD1cInt7b3B0aW9ucy5taW5MZW5ndGh9fVwiIGFyaWEtZGVzY3JpYmVkYnk9XCJlbWFpbC1lcnJvclwiXHJcbiAgICAgICAgICAgICAgYXJpYS1pbnZhbGlkPVwidHJ1ZVwiIGZvcm1Db250cm9sTmFtZT1cIkVuZ2xpc2hcIiBbaGlkZGVuXT1cIm9wdGlvbnMuaXNIaWRlRW5nbGlzaEZpZWxkc1wiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiZW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wuaW52YWxpZCAmJiBlbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC50b3VjaGVkXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7b3B0aW9ucy5lbmdsaXNoUGxhY2Vob2xkZXJ9fVwiIChjaGFuZ2UpPVwidHJpbUNvbnRyb2xWYWx1ZSgnRW4nKVwiIChrZXl1cCk9XCJvblRleHRDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJvcHRpb25zLnZhbHVlLmVuZ2xpc2hcIlxyXG4gICAgICAgICAgICAgIChrZXlkb3duKT1cImVuZ2xpc2hXb3JkQ291bnRBcnJheT5vcHRpb25zLm1heFdvcmRDb3VudCYmJGV2ZW50LmtleUNvZGUgIT04PyRldmVudC5wcmV2ZW50RGVmYXVsdCgpOm51bGxcIiAjdXNlcmlucHV0VGV4dEFyZWFFbmdsaXNoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgPCEtLUNvcHlUb0NsaXBib2FyZC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29weS1jbGlwYm9hcmRcIiBbaGlkZGVuXT1cIm9wdGlvbnMuaXNIaWRlRW5nbGlzaEZpZWxkc1wiICpuZ0lmPVwib3B0aW9ucy5lbmFibGVDb3B5VG9DbGlwYm9hcmRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjb3B5SW5wdXRNZXNzYWdlKHVzZXJpbnB1dFRleHRBcmVhRW5nbGlzaClcIj5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jb3B5XCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJvcHRpb25zLmlzUmVhZG9ubHlcIj48c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZpZXdcIiBbaW5uZXJIVE1MXT1cIm9wdGlvbnMudmFsdWUuZW5nbGlzaFwiPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJ0ZXh0LWNvbnRhaW5lclwiICpuZ0lmPVwiIW9wdGlvbnMuaXNSZWFkb25seVwiPlxyXG4gICAgICAgICAgICA8IS0td29yZENvdW50LS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLXdvcmQtY291bnRcIiAqbmdJZj1cIm9wdGlvbnMubWF4V29yZENvdW50PjAmJmlzU2hvd0VuZ2xpc2hXb3JkQ291bnRcIj5cclxuICAgICAgICAgICAgICB7e2VuZ2xpc2hXb3JkQ291bnR9fS97e29wdGlvbnMubWF4V29yZENvdW50fX0gV29yZHM8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBDaGFyc0xpbWl0TXNnLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLWNoYXJhY3Rlci1jb3VudFwiICpuZ0lmPVwic2hvd0VuZ2xpc2hDaGFyc0xpbWl0TXNnXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2JhZGdlLWxpZ2h0LXdhcm5pbmcnOiBlbmdsaXNoQ2hhcnNMaW1pdE1zZ0NsYXNzID09PSAnd2FybmluZycsICdiYWRnZS1saWdodC1kYW5nZXInIDogZW5nbGlzaENoYXJzTGltaXRNc2dDbGFzcyA9PT0gJ2RhbmdlcicgfVwiPlxyXG4gICAgICAgICAgICAgIHt7ZW5nbGlzaE1heExpbWl0V2FybmluZ01zZ319XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIExhYmVsRGVzY3JpcHRpb24tLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJic2YtY29udHJvbC1kZXNjXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIihvcHRpb25zLmxhYmVsRGVzY3JpcHRpb24hPW51bGwmJm9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiE9JycpIHx8KG9wdGlvbnMuZW5nbGlzaExhYmVsRGVzY3JpcHRpb24hPW51bGwmJm9wdGlvbnMuZW5nbGlzaExhYmVsRGVzY3JpcHRpb24hPScnKVwiPlxyXG4gICAgICAgICAgICAgIHt7KG9wdGlvbnMuZW5nbGlzaExhYmVsRGVzY3JpcHRpb24hPW51bGwmJm9wdGlvbnMuZW5nbGlzaExhYmVsRGVzY3JpcHRpb24hPVwiXCIpP29wdGlvbnMuZW5nbGlzaExhYmVsRGVzY3JpcHRpb246b3B0aW9ucy5sYWJlbERlc2NyaXB0aW9ufX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gcmVxdWlyZWRUZXh0LS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLXZhbGlkYXRpb25cIiAqbmdJZj1cIihlbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC5pbnZhbGlkICYmIGVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnRvdWNoZWQpXCI+XHJcbiAgICAgICAgICAgICAge3tnZXRFcnJvclZhbGlkYXRpb24oZW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wuZXJyb3JzfGtleXZhbHVlKX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGdyb3VwLnZhbGlkJiZncm91cC5kaXJ0eSYmZ3JvdXAudG91Y2hlZCApfHwoZ3JvdXAudW50b3VjaGVkJiZncm91cC5pbnZhbGlkJiZncm91cC5kaXJ0eSkgXCI+XHJcbiAgICAgICAgICAgICAge3tyZXNldEVycm9yKCl9fTwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICA8IS0tI3JlZ2lvbiBBcmFiaWMgdGV4dGJveC0tPlxyXG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cIihvcHRpb25zLm11bHRpQ29udHJvbFBsYWNlbWVudFR5cGU9PTEpPydjb2wtbWQtMTInOidjb2wtbWQtNidcIiAqbmdJZj1cInNob3dBcmFiaWNUZXh0QXJlYVwiIGNsYXNzPVwiYmJzZi1tdWx0aWxhbmctZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiKG9wdGlvbnMudmlld1R5cGU9PTEpPydiYnNmLXZlcnRpY2FsJzonYmJzZi1ob3Jpem9udGFsJ1wiPlxyXG4gICAgICAgICAgPCEtLWxhYmVsLS0+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJiYnNmLWxhYmVsIHt7b3B0aW9ucy5sYWJlbEV4dHJhQ2xhc3Nlc319XCIgW2hpZGRlbl09XCJvcHRpb25zLmlzSGlkZUFyYWJpY0xhYmVsXCI+XHJcbiAgICAgICAgICAgIHt7KG9wdGlvbnMuYXJhYmljTGFiZWxWYWx1ZSE9bnVsbCYmb3B0aW9ucy5hcmFiaWNMYWJlbFZhbHVlIT1cIlwiKT9vcHRpb25zLmFyYWJpY0xhYmVsVmFsdWU6b3B0aW9ucy5sYWJlbFZhbHVlK1wiaW5BcmFiaWNcIn19XHJcbiAgICAgICAgICAgIDwhLS1Bc3Rlcmlzay0tPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIigoKG9wdGlvbnMuc2hvd0FzdGVyaXNrJiZvcHRpb25zLmlzUmVxdWlyZWQpfHwob3B0aW9ucy5pc1JlcXVpcmVkKSkmJklzU2hvd0FzdGVyaXNrSW5BcmFiaWMpJiYhb3B0aW9ucy5pc1JlYWRvbmx5XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW9wdGlvbnMuaXNSZWFkb25seVwiIGNsYXNzPVwiYmJzZi1pbnB1dC1jb250YWluZXJcIiBbbmdDbGFzc109XCJvcHRpb25zLmVuYWJsZUNvcHlUb0NsaXBib2FyZD8gJ3AtNDBweCcgOiAnJyBcIj5cclxuICAgICAgICAgICAgPCEtLWlucHV0LS0+XHJcbiAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImZvcm0tY29udHJvbCBibnNpZ2h0cy1jb250cm9sXCIgZGlyPVwicnRsXCIgW3Jvd3NdPVwib3B0aW9ucy5yb3dzXCIgW2NvbHNdPVwib3B0aW9ucy5jb2xzXCIgKGZvY3VzKT1cIm9uQXJhYmljRm9jdXModHJ1ZSlcIlxyXG4gICAgICAgICAgICAgIChmb2N1c291dCk9XCJvbkFyYWJpY0ZvY3VzKGZhbHNlKVwiIFtoaWRkZW5dPVwib3B0aW9ucy5pc0hpZGVBcmFiaWNGaWVsZHNcIiBhcmlhLWRlc2NyaWJlZGJ5PVwiZW1haWwtZXJyb3JcIiBhcmlhLWludmFsaWQ9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJBcmFiaWNcIiBbbWF4bGVuZ3RoXT1cIm9wdGlvbnMubWF4TGVuZ3RoXCIgW21pbmxlbmd0aF09XCJvcHRpb25zLm1pbkxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC5pbnZhbGlkICYmIGFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wudG91Y2hlZFwiIHBsYWNlaG9sZGVyPVwie3tvcHRpb25zLmFyYWJpY1BsYWNlaG9sZGVyfX1cIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwidHJpbUNvbnRyb2xWYWx1ZSgnQXInKVwiIChrZXl1cCk9XCJvblRleHRDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwib3B0aW9ucy52YWx1ZS5hcmFiaWNcIlxyXG4gICAgICAgICAgICAgIChrZXlkb3duKT1cImFyYWJpY1dvcmRDb3VudEFycmF5Pm9wdGlvbnMubWF4V29yZENvdW50JiYkZXZlbnQua2V5Q29kZSAhPTg/JGV2ZW50LnByZXZlbnREZWZhdWx0KCk6bnVsbFwiXHJcbiAgICAgICAgICAgICAgI3VzZXJJbnB1dFRleHRBcmVhQXJhYmljPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgIDwhLS1Db3B5VG9DbGlwYm9hcmQtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvcHktY2xpcGJvYXJkXCIgW2hpZGRlbl09XCJvcHRpb25zLmlzSGlkZUFyYWJpY0ZpZWxkc1wiICpuZ0lmPVwib3B0aW9ucy5lbmFibGVDb3B5VG9DbGlwYm9hcmRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjb3B5SW5wdXRNZXNzYWdlKHVzZXJJbnB1dFRleHRBcmVhQXJhYmljKVwiPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNvcHlcIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwib3B0aW9ucy5pc1JlYWRvbmx5XCI+PHNwYW4gY2xhc3M9XCJyZWFkb25seS12aWV3XCIgW2lubmVySFRNTF09XCJvcHRpb25zLnZhbHVlLmFyYWJpY1wiPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJ0ZXh0LWNvbnRhaW5lclwiICpuZ0lmPVwiIW9wdGlvbnMuaXNSZWFkb25seVwiPlxyXG4gICAgICAgICAgICA8IS0td29yZENvdW50LS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLXdvcmQtY291bnRcIiAqbmdJZj1cIm9wdGlvbnMubWF4V29yZENvdW50PjAmJmlzU2hvd0FyYWJpY1dvcmRDb3VudFwiPlxyXG4gICAgICAgICAgICAgIHt7YXJhYmljV29yZENvdW50fX0ve3tvcHRpb25zLm1heFdvcmRDb3VudH19IFdvcmRzPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gQ2hhcnNMaW1pdE1zZy0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmJzZi1jaGFyYWN0ZXItY291bnRcIiAqbmdJZj1cInNob3dBcmFiaWNDaGFyc0xpbWl0TXNnXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2JhZGdlLWxpZ2h0LXdhcm5pbmcnOiBhcmFiaWNDaGFyc0xpbWl0TXNnQ2xhc3MgPT09ICd3YXJuaW5nJywgJ2JhZGdlLWxpZ2h0LWRhbmdlcicgOiBhcmFiaWNDaGFyc0xpbWl0TXNnQ2xhc3MgPT09ICdkYW5nZXInIH1cIj5cclxuICAgICAgICAgICAgICB7e2FyYWJpY01heExpbWl0V2FybmluZ01zZ319XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIExhYmVsRGVzY3JpcHRpb24tLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJic2YtY29udHJvbC1kZXNjXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIihvcHRpb25zLmxhYmVsRGVzY3JpcHRpb24hPW51bGwmJm9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbiE9JycpfHwob3B0aW9ucy5hcmFiaWNMYWJlbERlc2NyaXB0aW9uIT1udWxsJiZvcHRpb25zLmFyYWJpY0xhYmVsRGVzY3JpcHRpb24hPScnKVwiPlxyXG4gICAgICAgICAgICAgIHt7KG9wdGlvbnMuYXJhYmljTGFiZWxEZXNjcmlwdGlvbiE9bnVsbCYmb3B0aW9ucy5hcmFiaWNMYWJlbERlc2NyaXB0aW9uIT1cIlwiKT9vcHRpb25zLmFyYWJpY0xhYmVsRGVzY3JpcHRpb246b3B0aW9ucy5sYWJlbERlc2NyaXB0aW9ufX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gcmVxdWlyZWRUZXh0LS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLXZhbGlkYXRpb25cIiAqbmdJZj1cIihhcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLmludmFsaWQgJiYgYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC50b3VjaGVkKVwiPlxyXG4gICAgICAgICAgICAgIHt7Z2V0RXJyb3JWYWxpZGF0aW9uKGFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wuZXJyb3JzfGtleXZhbHVlKX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGdyb3VwLnZhbGlkJiZncm91cC5kaXJ0eSYmZ3JvdXAudG91Y2hlZCApfHwoZ3JvdXAudW50b3VjaGVkJiZncm91cC5pbnZhbGlkJiZncm91cC5kaXJ0eSkgXCI+XHJcbiAgICAgICAgICAgICAge3tyZXNldEVycm9yKCl9fTwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
436
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXVsdGlMaW5ndWFsVGV4dEFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL011bHRpTGluZ3VhbFRleHRBcmVhL011bHRpTGluZ3VhbFRleHRBcmVhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9NdWx0aUxpbmd1YWxUZXh0QXJlYS9NdWx0aUxpbmd1YWxUZXh0QXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBVyxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQXlELE1BQU0sZ0JBQWdCLENBQUM7QUFDM0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBR3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUkvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7OztBQU9qRSxNQUFNLE9BQU8sNkJBQTZCO2FBRWpDLDJCQUFzQixHQUFHLElBQUksQUFBUCxDQUFRO0lBR3JDLFlBQW1CLG1DQUF1RCxFQUFzQixnQkFBa0MsRUFDeEgsY0FBOEIsRUFBVSxjQUE4QixFQUFVLHdCQUFrRCxFQUNsSSxjQUE4QjtRQUZyQix3Q0FBbUMsR0FBbkMsbUNBQW1DLENBQW9CO1FBQXNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDeEgsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsbUJB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QUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLHlCQUF5QixDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUdELGFBQWEsQ0FBQyxPQUFnQjtRQUM1QixJQUFJLENBQUMscUJBQXFCLEdBQUcsT0FBTyxDQUFBO1FBRXBDLFNBQVM7UUFDVCxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksSUFBSSxDQUFDLGtDQUFrQyxFQUFFLDhDQUE4QztnQkFDekYsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztTQUN2QzthQUNJLFlBQVk7WUFDZixJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxjQUFjLENBQUMsT0FBZ0I7UUFDN0IsSUFBSSxDQUFDLHNCQUFzQixHQUFHLE9BQU8sQ0FBQTtRQUVyQyxTQUFTO1FBQ1QsSUFBSSxPQUFPLEVBQUU7WUFDWCxJQUFJLElBQUksQ0FBQyxtQ0FBbUMsRUFBRSw4Q0FBOEM7Z0JBQzFGLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7U0FDeEM7YUFDSSxZQUFZO1lBQ2YsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQztJQUMxQyxDQUFDOzhHQWhkVSw2QkFBNkI7a0dBQTdCLDZCQUE2QixvSkNqQjFDLHM0UEFrSEE7OzJGRGpHYSw2QkFBNkI7a0JBSnpDLFNBQVM7K0JBQ0UsMkJBQTJCOzswQkFRd0MsUUFBUTt1S0FNNUUsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBEb0NoZWNrLCBPcHRpb25hbCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9JbnB1dFR5cGUnO1xyXG5pbXBvcnQgeyBFbmdsaXNoQXJhYmljRFRPIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9FbmdsaXNoQXJhYmljRFRPJztcclxuaW1wb3J0IHsgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9NdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IExhbmd1YWdlTW9kZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9MYW5ndWFnZU1vZGUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgR2xvYmFsU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvR2xvYmFsU2V0dGluZ3Muc2VydmljZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29udHJvbExheW91dCB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9Db250cm9sTGF5b3V0JztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ0JCU0YtTXVsdGlMaW5ndWFsVGV4dEFyZWEnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9NdWx0aUxpbmd1YWxUZXh0QXJlYS5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE11bHRpTGluZ3VhbFRleHRBcmVhQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgc3RhdGljIGNvbnRyb2xDb250YWluZXJzdGF0aWMgPSBudWxsO1xyXG4gIElzU2hvd0FzdGVyaXNrSW5BcmFiaWM6IGJvb2xlYW47XHJcbiAgSXNTaG93QXN0ZXJpc2tJbkVuZ2xpc2g6IGJvb2xlYW47XHJcbiAgY29uc3RydWN0b3IocHVibGljIG11bHRpTGluZ3VhbFRleHRBcmVhRm9ybUNvbnRyb2xIb3N0OiBGb3JtR3JvdXBEaXJlY3RpdmUsIEBPcHRpb25hbCgpIHByaXZhdGUgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcclxuICAgIHByaXZhdGUgY29udHJvbFV0aWxpdHk6IENvbnRyb2xVdGlsaXR5LCBwcml2YXRlIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSBjb250cm9sVmFsaWRhdGlvblNlcnZpY2U6IENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZ2xvYmFsU2V0dGluZ3M6IEdsb2JhbFNldHRpbmdzXHJcbiAgKSB7XHJcbiAgICBNdWx0aUxpbmd1YWxUZXh0QXJlYUNvbXBvbmVudC5jb250cm9sQ29udGFpbmVyc3RhdGljID0gdGhpcy5jb250cm9sQ29udGFpbmVyO1xyXG4gIH1cclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucztcclxuICBAT3V0cHV0KCkgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcclxuICBlbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIG11bHRpVGV4dEFyZWFGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIG11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBhcmFiaWNXb3JkQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgYXJhYmljV29yZENvdW50QXJyYXk6IG51bWJlciA9IDA7XHJcbiAgZW5nbGlzaFdvcmRDb3VudDogbnVtYmVyID0gMDtcclxuICBlbmdsaXNoV29yZENvdW50QXJyYXk6IG51bWJlciA9IDA7XHJcbiAgY3VycmVudExhbmd1YWdlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHNob3dBcmFiaWNUZXh0QXJlYTogYm9vbGVhblxyXG4gIHNob3dFbmdpc2hUZXh0QXJlYTogYm9vbGVhblxyXG4gIGFyYWJpY1ZhbGlkYXRpb25SdWxlcyA9IFtdO1xyXG4gIGFyYWJpY1ZhbGlkYXRpb25SdWxlc2FzeW5jID0gW107XHJcbiAgZW5nbGlzaFZhbGlkYXRpb25SdWxlcyA9IFtdO1xyXG4gIGVuZ2xpc2hWYWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gIHZhbGlkYXRpb25SdWxlcyA9IFtdO1xyXG4gIHZhbGlkYXRpb25SdWxlc2FzeW5jID0gW107XHJcbiAgaXNTaG93QXJhYmljV29yZENvdW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNTaG93RW5nbGlzaFdvcmRDb3VudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG1hcmtBbGxBc1RvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblxyXG4gIGFyYWJpY0xldHRlck9ubHk6IHN0cmluZyA9IFwiXCJcclxuICBlbmdsaXNoTGV0dGVyT25seTogc3RyaW5nID0gXCJcIlxyXG5cclxuICAvL0ZvciBTaG93IHdhcm5pbmcgbWVzc2FnZSBvZiBtYXggbGVuZ3RoIGxpbWl0XHJcbiAgbWluQ2hhcnNMaW1pdDogbnVtYmVyID0gLTE7IC8vVG8gZGlzYWJsZSBjaGFycyBsaW1pdCBmZWF0dXJlIGJ5IGRlZmF1bHRcclxuICBlbmdsaXNoQ3VycmVudENoYXJzQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgYXJhYmljQ3VycmVudENoYXJzQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgc2hvd0VuZ2xpc2hDaGFyc0xpbWl0TXNnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd0FyYWJpY0NoYXJzTGltaXRNc2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBoYXNFbmdsaXNoQ2hhcnNMaW1pdFZhbGlkYXRpb25FcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGhhc0FyYWJpY0NoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBlbmdsaXNoQ2hhcnNMaW1pdE1zZ0NsYXNzOiBzdHJpbmc7XHJcbiAgYXJhYmljQ2hhcnNMaW1pdE1zZ0NsYXNzOiBzdHJpbmc7XHJcbiAgZW5nbGlzaE1heExpbWl0V2FybmluZ01zZzogc3RyaW5nID0gXCJcIjtcclxuICBhcmFiaWNNYXhMaW1pdFdhcm5pbmdNc2c6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIGdldEN1c3RvbUVycm9yc01hc3NhZ2VzKCkge1xyXG4gICAgdGhpcy5hcmFiaWNMZXR0ZXJPbmx5ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVkFMX0FyYWJpY0lzUmVxdWlyZWRBbmRPbmx5NTBDaGFyYWN0ZXJzRW5nbGlzaFwiKTtcclxuICAgIHRoaXMuZW5nbGlzaExldHRlck9ubHkgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFbmdsaXNoTGV0dGVyT25seVwiKTtcclxuXHJcblxyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5pc0NyZWF0ZWRCZWZvciA9IGZhbHNlXHJcbiAgICB0aGlzLmN1cnJlbnRMYW5ndWFnZSA9IGF3YWl0IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0Q3VycmVudExhbmd1YWdlKCk7XHJcbiAgICAvLyBVdGlsaXR5U2VydmljZS5UcmFuc2xhdG9yLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50OiBMYW5nQ2hhbmdlRXZlbnQpID0+IHtcclxuICAgIC8vICAgdGhpcy5DdXJyZW50TGFuZ3VhZ2UgPSBldmVudC5sYW5nXHJcbiAgICAvLyAgIHRoaXMuc2hvd0lucHV0VXNpbmdMYW5ndWFnZU1vZGUoKTtcclxuXHJcbiAgICAvLyB9KTtcclxuICAgIGlmICghdGhpcy5vcHRpb25zLnZpZXdUeXBlKVxyXG4gICAgICB0aGlzLm9wdGlvbnMudmlld1R5cGUgPSB0aGlzLmdsb2JhbFNldHRpbmdzLnZpZXdUeXBlO1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMubGFuZ3VhZ2VNb2RlKVxyXG4gICAgICB0aGlzLm9wdGlvbnMubGFuZ3VhZ2VNb2RlID0gdGhpcy5nbG9iYWxTZXR0aW5ncy5sYW5ndWFnZU1vZGU7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5tdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlKVxyXG4gICAgICB0aGlzLm9wdGlvbnMubXVsdGlDb250cm9sUGxhY2VtZW50VHlwZSA9IHRoaXMuZ2xvYmFsU2V0dGluZ3MubXVsdGlDb250cm9sUGxhY2VtZW50VHlwZTtcclxuICAgIGlmICghdGhpcy5vcHRpb25zLm1heExlbmd0aClcclxuICAgICAgdGhpcy5vcHRpb25zLm1heExlbmd0aCA9IHRoaXMuZ2xvYmFsU2V0dGluZ3MubWF4TGVuZ3RoVGV4dEFyZWE7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5sYWJlbEtleSAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5sYWJlbEtleSAhPSBcIlwiKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5hcmFiaWNMYWJlbFZhbHVlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5sYWJlbEtleSkgKyBcIiBcIiArIHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkluQXJhYmljXCIpO1xyXG4gICAgICB0aGlzLm9wdGlvbnMuZW5nbGlzaExhYmVsVmFsdWUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUodGhpcy5vcHRpb25zLmxhYmVsS2V5KSArIFwiIFwiICsgdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSW5FbmdsaXNoXCIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXJhYmljTGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuYXJhYmljTGFiZWxLZXkgIT0gXCJcIilcclxuICAgICAgICB0aGlzLm9wdGlvbnMuYXJhYmljTGFiZWxWYWx1ZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSh0aGlzLm9wdGlvbnMuYXJhYmljTGFiZWxLZXkpO1xyXG5cclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5lbmdsaXNoTGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuZW5nbGlzaExhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmVuZ2xpc2hMYWJlbFZhbHVlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5lbmdsaXNoTGFiZWxLZXkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubXVsdGlMYW5ndWFnZVRleHRBcmVhZ3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgIHRoaXMubXVsdGlMYW5ndWFnZVRleHRBcmVhZ3JvdXAuYWRkQ29udHJvbChcIkFyYWJpY1wiLCBuZXcgRm9ybUNvbnRyb2woJycpKTtcclxuICAgIHRoaXMubXVsdGlMYW5ndWFnZVRleHRBcmVhZ3JvdXAuYWRkQ29udHJvbChcIkVuZ2xpc2hcIiwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLmFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wgPSB0aGlzLm11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwLmNvbnRyb2xzW1wiQXJhYmljXCJdOyAvLyAgbmV3IEZvcm1Db250cm9sKCcnLHZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLmVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sID0gdGhpcy5tdWx0aUxhbmd1YWdlVGV4dEFyZWFncm91cC5jb250cm9sc1tcIkVuZ2xpc2hcIl07IC8vICBuZXcgRm9ybUNvbnRyb2woJycsdmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm9wdGlvbnMubmFtZSwgbmV3IEZvcm1Hcm91cCh0aGlzLm11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwLmNvbnRyb2xzKSk7XHJcbiAgICB0aGlzLmdldEN1c3RvbUVycm9yc01hc3NhZ2VzKClcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy50eXBlKSB7XHJcbiAgICAgIGNhc2UgSW5wdXRUeXBlLkVtYWlsOlxyXG4gICAgICAgIHRoaXMuZW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdHRlcm5WYWxpZGF0b3IoL15bYS16MC05Ll8lKy1dK0BbYS16MC05Li1dK1xcLlthLXpdezIsNH0kLywgeyBFbWFpbFZhbGlkYXRpb25LZXk6IFwiXCIgfSksXHJcblxyXG4gICAgICAgIF0pKTtcclxuICAgICAgICB0aGlzLmFyYWJpY1ZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdHRlcm5WYWxpZGF0b3IoL15bYS16MC05Ll8lKy1dK0BbYS16MC05Li1dK1xcLlthLXpdezIsNH0kLywgeyBFbWFpbFZhbGlkYXRpb25LZXk6IFwiXCIgfSksXHJcblxyXG4gICAgICAgIF0pKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW5wdXRUeXBlLk51bWJlcjpcclxuICAgICAgICB0aGlzLmVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oJ15bMC05XSsoXFwuP1swLTldKyk/JCcpKTtcclxuICAgICAgICB0aGlzLmFyYWJpY1ZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucGF0dGVybignXlswLTldKyhcXC4/WzAtOV0rKT8kJykpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jdXN0b21WYWxpZGF0aW9uLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IFZhbGlkYXRpb25zID0gdGhpcy5vcHRpb25zLmN1c3RvbVZhbGlkYXRpb25cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFZhbGlkYXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IFZhbGlkYXRpb24gPSBWYWxpZGF0aW9uc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy5lbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG4gICAgICAgIHRoaXMuYXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMubWluTGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmFyYWJpY1ZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHRoaXMub3B0aW9ucy5taW5MZW5ndGgpKTtcclxuICAgICAgdGhpcy5lbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgodGhpcy5vcHRpb25zLm1pbkxlbmd0aCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tYXhMZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMub3B0aW9ucy5tYXhMZW5ndGgpKTtcclxuICAgICAgdGhpcy5hcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLm9wdGlvbnMubWF4TGVuZ3RoKSk7XHJcblxyXG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5tYXhMZW5ndGhXYXJuaW5nTGltaXQpXHJcbiAgICAgICAgdGhpcy5vcHRpb25zLm1heExlbmd0aFdhcm5pbmdMaW1pdCA9IHRoaXMuZ2xvYmFsU2V0dGluZ3MubWF4TGVuZ3RoV2FybmluZ0xpbWl0O1xyXG5cclxuICAgICAgdGhpcy5taW5DaGFyc0xpbWl0ID0gdGhpcy5vcHRpb25zLm1heExlbmd0aCAtIHRoaXMub3B0aW9ucy5tYXhMZW5ndGhXYXJuaW5nTGltaXQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zaG93SW5wdXRVc2luZ0xhbmd1YWdlTW9kZSgpO1xyXG5cclxuICAgIHRoaXMuYXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5hcmFiaWNWYWxpZGF0b3IoeyBBcmFiaWNJc1JlcXVpcmVkQW5kT25seTUwQ2hhcmFjdGVyc0VuZ2xpc2g6IHRoaXMuYXJhYmljTGV0dGVyT25seSB9KSxcclxuXHJcbiAgICBdKSk7XHJcbiAgICB0aGlzLmVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLmNvbXBvc2UoW1xyXG4gICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdHRlcm5WYWxpZGF0b3IoL15bfmAhQCMkJV4mKigp4oCY4oCZ4oCc4oCdXys9W1xcXVxcXFx7fXw7JzpcIiwuXFwvPD4/YS16QS1aMC05LSBcXG5dKiQvLCB7IEVuZ2xpc2hMZXR0ZXJPbmx5OiB0aGlzLmVuZ2xpc2hMZXR0ZXJPbmx5IH0pLFxyXG5cclxuICAgIF0pKTtcclxuXHJcbiAgICB0aGlzLmFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLmFyYWJpY1ZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLmFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuYXJhYmljVmFsaWRhdGlvblJ1bGVzYXN5bmMpO1xyXG4gICAgdGhpcy5lbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMuZW5nbGlzaFZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLmVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLmVuZ2xpc2hWYWxpZGF0aW9uUnVsZXNhc3luYyk7XHJcblxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5hcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnMudmFsdWUuYXJhYmljKVxyXG4gICAgdGhpcy5lbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnMudmFsdWUuZW5nbGlzaClcclxuXHJcbiAgICB0aGlzLm11bHRpTGluZ3VhbFRleHRBcmVhRm9ybUNvbnRyb2xIb3N0Lm5nU3VibWl0LnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgdGhpcy5ncm91cC5tYXJrQWxsQXNUb3VjaGVkKClcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gdHJ1ZVxyXG4gICAgfSlcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmlzUmVhZG9ubHkgJiYgIXRoaXMub3B0aW9ucy52YWx1ZSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMudmFsdWUuYXJhYmljID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdOQScpO1xyXG4gICAgICB0aGlzLm9wdGlvbnMudmFsdWUuZW5nbGlzaCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnTkEnKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgb25UZXh0Q2hhbmdlKCkge1xyXG4gICAgbGV0IGFyYWJpY1ZhbHVlID0gXCJcIjtcclxuICAgIGxldCBlbmdsaXNoVmFsdWUgPSBcIlwiO1xyXG4gICAgaWYgKHRoaXMuZW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wudmFsdWUgPT0gXCJcIikge1xyXG4gICAgICB0aGlzLmVuZ2xpc2hXb3JkQ291bnRBcnJheSA9IDA7XHJcbiAgICAgIHRoaXMuZW5nbGlzaFdvcmRDb3VudCA9IDA7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wudmFsdWUgIT0gbnVsbCB8fCB0aGlzLmVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuZW5nbGlzaFdvcmRDb3VudEFycmF5ID0gdGhpcy5lbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZS5zcGxpdChcIiBcIikubGVuZ3RoO1xyXG4gICAgICAgIGlmICh0aGlzLmVuZ2xpc2hXb3JkQ291bnRBcnJheSA+IDApIHtcclxuICAgICAgICAgIGlmICh0aGlzLmVuZ2xpc2hXb3JkQ291bnRBcnJheSA+IHRoaXMub3B0aW9ucy5tYXhXb3JkQ291bnQpIHtcclxuICAgICAgICAgICAgdGhpcy5lbmdsaXNoV29yZENvdW50ID0gdGhpcy5vcHRpb25zLm1heFdvcmRDb3VudDtcclxuICAgICAgICAgICAgdGhpcy5tdWx0aUxhbmd1YWdlVGV4dEFyZWFncm91cC5jb250cm9sc1tcIkVuZ2xpc2hcIl0uc2V0RXJyb3JzKHsgTWF4V29yZENvdW50VmFsaWRhdGlvbktleTogdGhpcy5vcHRpb25zLm1heFdvcmRDb3VudCB9KTtcclxuICAgICAgICAgICAgdGhpcy5tdWx0aUxhbmd1YWdlVGV4dEFyZWFncm91cC5jb250cm9sc1tcIkVuZ2xpc2hcIl0ubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgICB0aGlzLm11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwLmNvbnRyb2xzW1wiRW5nbGlzaFwiXS5pbnZhbGlkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW5nbGlzaFdvcmRDb3VudCA9IHRoaXMuZW5nbGlzaFdvcmRDb3VudEFycmF5O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZW5nbGlzaFZhbHVlID0gdGhpcy5lbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvL0NoZWNrIGZvciBtYXhsZW5ndGggbGltaXQgY291bnRcclxuICAgICAgLy9NYXhMZW5ndGggc2hvdWxkIGJlIGdyZXRhZXIgdGhhbiBvciBlcXVhbHMgY2hhcnMgbGltaXQgc28gdGhhdCBtaW5DaGFyc0xpbWl0IHdvdWxkIGJlID49IDBcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5tYXhMZW5ndGggJiYgdGhpcy5taW5DaGFyc0xpbWl0ID49IDApIHtcclxuICAgICAgICB0aGlzLmVuZ2xpc2hDdXJyZW50Q2hhcnNDb3VudCA9IHRoaXMuZW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wudmFsdWUubGVuZ3RoO1xyXG4gICAgICAgIGlmICh0aGlzLmVuZ2xpc2hDdXJyZW50Q2hhcnNDb3VudCA+IHRoaXMubWluQ2hhcnNMaW1pdCkge1xyXG4gICAgICAgICAgdGhpcy5zaG93RW5nbGlzaENoYXJzTGltaXRNc2cgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5oYXNFbmdsaXNoQ2hhcnNMaW1pdFZhbGlkYXRpb25FcnJvciA9IHRydWU7XHJcbiAgICAgICAgICBpZiAodGhpcy5lbmdsaXNoQ3VycmVudENoYXJzQ291bnQgPT0gdGhpcy5vcHRpb25zLm1heExlbmd0aClcclxuICAgICAgICAgICAgdGhpcy5lbmdsaXNoQ2hhcnNMaW1pdE1zZ0NsYXNzID0gXCJkYW5nZXJcIjtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5lbmdsaXNoQ2hhcnNMaW1pdE1zZ0NsYXNzID0gXCJ3YXJuaW5nXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zaG93RW5nbGlzaENoYXJzTGltaXRNc2cgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaGFzRW5nbGlzaENoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG1heDogbnVtYmVyID0gdGhpcy5vcHRpb25zLm1heExlbmd0aDtcclxuICAgICAgICBsZXQgY3VycmVudDogbnVtYmVyID0gdGhpcy5lbmdsaXNoQ3VycmVudENoYXJzQ291bnQ7XHJcbiAgICAgICAgbGV0IG1zZzogc3RyaW5nID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTWF4TGVuZ3RoTGltaXRXYXJuaW5nXCIpO1xyXG5cclxuICAgICAgICAvLyBSZXBsYWNlIHBsYWNlaG9sZGVycyB3aXRoIGFjdHVhbCB2YWx1ZXNcclxuICAgICAgICB0aGlzLmVuZ2xpc2hNYXhMaW1pdFdhcm5pbmdNc2cgPSBtc2cucmVwbGFjZShcIiR7bWF4fVwiLCBtYXgudG9TdHJpbmcoKSkucmVwbGFjZShcIiR7Y3VycmVudH1cIiwgY3VycmVudC50b1N0cmluZygpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZSA9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMuYXJhYmljV29yZENvdW50QXJyYXkgPSAwO1xyXG4gICAgICB0aGlzLmFyYWJpY1dvcmRDb3VudCA9IDA7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZSAhPSBudWxsIHx8IHRoaXMuYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLmFyYWJpY1dvcmRDb3VudEFycmF5ID0gdGhpcy5hcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlLnNwbGl0KFwiIFwiKS5sZW5ndGg7XHJcbiAgICAgICAgaWYgKHRoaXMuYXJhYmljV29yZENvdW50QXJyYXkgPiAwKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5hcmFiaWNXb3JkQ291bnRBcnJheSA+IHRoaXMub3B0aW9ucy5tYXhXb3JkQ291bnQpIHtcclxuICAgICAgICAgICAgdGhpcy5hcmFiaWNXb3JkQ291bnQgPSB0aGlzLm9wdGlvbnMubWF4V29yZENvdW50O1xyXG4gICAgICAgICAgICB0aGlzLm11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwLmNvbnRyb2xzW1wiQXJhYmljXCJdLnNldEVycm9ycyh7IE1heFdvcmRDb3VudFZhbGlkYXRpb25LZXk6IHRoaXMub3B0aW9ucy5tYXhXb3JkQ291bnQgfSk7XHJcbiAgICAgICAgICAgIHRoaXMubXVsdGlMYW5ndWFnZVRleHRBcmVhZ3JvdXAuY29udHJvbHNbXCJBcmFiaWNcIl0ubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgICB0aGlzLm11bHRpTGFuZ3VhZ2VUZXh0QXJlYWdyb3VwLmNvbnRyb2xzW1wiQXJhYmljXCJdLmludmFsaWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5hcmFiaWNXb3JkQ291bnQgPSB0aGlzLmFyYWJpY1dvcmRDb3VudEFycmF5O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYXJhYmljVmFsdWUgPSB0aGlzLmFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvL0NoZWNrIGZvciBtYXhsZW5ndGggbGltaXQgY291bnRcclxuICAgICAgLy9NYXhMZW5ndGggc2hvdWxkIGJlIGdyZXRhZXIgdGhhbiBvciBlcXVhbHMgY2hhcnMgbGltaXQgc28gdGhhdCBtaW5DaGFyc0xpbWl0IHdvdWxkIGJlID49IDBcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5tYXhMZW5ndGggJiYgdGhpcy5taW5DaGFyc0xpbWl0ID49IDApIHtcclxuICAgICAgICB0aGlzLmFyYWJpY0N1cnJlbnRDaGFyc0NvdW50ID0gdGhpcy5hcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlLmxlbmd0aDtcclxuICAgICAgICBpZiAodGhpcy5hcmFiaWNDdXJyZW50Q2hhcnNDb3VudCA+IHRoaXMubWluQ2hhcnNMaW1pdCkge1xyXG4gICAgICAgICAgdGhpcy5zaG93QXJhYmljQ2hhcnNMaW1pdE1zZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmhhc0FyYWJpY0NoYXJzTGltaXRWYWxpZGF0aW9uRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKHRoaXMuYXJhYmljQ3VycmVudENoYXJzQ291bnQgPT0gdGhpcy5vcHRpb25zLm1heExlbmd0aClcclxuICAgICAgICAgICAgdGhpcy5hcmFiaWNDaGFyc0xpbWl0TXNnQ2xhc3MgPSBcImRhbmdlclwiO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmFyYWJpY0NoYXJzTGltaXRNc2dDbGFzcyA9IFwid2FybmluZ1wiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2hvd0FyYWJpY0NoYXJzTGltaXRNc2cgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaGFzQXJhYmljQ2hhcnNMaW1pdFZhbGlkYXRpb25FcnJvciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbWF4OiBudW1iZXIgPSB0aGlzLm9wdGlvbnMubWF4TGVuZ3RoO1xyXG4gICAgICAgIGxldCBjdXJyZW50OiBudW1iZXIgPSB0aGlzLmFyYWJpY0N1cnJlbnRDaGFyc0NvdW50O1xyXG4gICAgICAgIGxldCBtc2c6IHN0cmluZyA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk1heExlbmd0aExpbWl0V2FybmluZ1wiKTtcclxuXHJcbiAgICAgICAgLy8gUmVwbGFjZSBwbGFjZWhvbGRlcnMgd2l0aCBhY3R1YWwgdmFsdWVzXHJcbiAgICAgICAgdGhpcy5hcmFiaWNNYXhMaW1pdFdhcm5pbmdNc2cgPSBtc2cucmVwbGFjZShcIiR7bWF4fVwiLCBtYXgudG9TdHJpbmcoKSkucmVwbGFjZShcIiR7Y3VycmVudH1cIiwgY3VycmVudC50b1N0cmluZygpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IG11bHRpTGFuZ01vZGVsID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgIG11bHRpTGFuZ01vZGVsLmFyYWJpYyA9IGFyYWJpY1ZhbHVlO1xyXG4gICAgbXVsdGlMYW5nTW9kZWwuZW5nbGlzaCA9IGVuZ2xpc2hWYWx1ZTtcclxuICAgIHRoaXMub25DaGFuZ2UuZW1pdChtdWx0aUxhbmdNb2RlbClcclxuXHJcbiAgICB0aGlzLmFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wuc2V0VmFsdWUobXVsdGlMYW5nTW9kZWwuYXJhYmljKTtcclxuICAgIHRoaXMuZW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wuc2V0VmFsdWUobXVsdGlMYW5nTW9kZWwuZW5nbGlzaCk7XHJcblxyXG4gICAgLy8gdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLm5hbWUpLnNldFZhbHVlKG11bGl0TGFuZ01vZGVsKTtcclxuICAgIC8vVXNlIHRoaXMgbGluZSB0byBlbmFibGUgdHdvIHdheSBiaW5kaW5nLlxyXG4gICAgdGhpcy5vcHRpb25zLnZhbHVlID0gbXVsdGlMYW5nTW9kZWw7XHJcblxyXG4gIH1cclxuXHJcbiAgcmVzZXRFcnJvciA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLnJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHNob3dHbG9iYWxFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2hvd0dsb2JhbEVycm9yKClcclxuICB9XHJcblxyXG4gIGdldEVycm9yVmFsaWRhdGlvbihFcnJvckxpc3QpIHtcclxuICAgIGlmICh0aGlzLm1hcmtBbGxBc1RvdWNoZWQgJiYgdGhpcy5ncm91cC5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKClcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gZmFsc2VcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2xVdGlsaXR5LmdldEVycm9yVmFsaWRhdGlvbk1hc3NhZ2UoRXJyb3JMaXN0LCB0aGlzLmdyb3VwLCB0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5wdXRUeXBlKHR5cGU6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIElucHV0VHlwZVt0eXBlXVxyXG4gIH1cclxuXHJcbiAgdHJpbUNvbnRyb2xWYWx1ZSh0eXBlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHdoaXRlc3BhY2U6IHN0cmluZyA9ICcgJztcclxuICAgIGlmICh0eXBlID09IFwiRW5cIikge1xyXG4gICAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuZW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucGF0Y2hGdW5jdGlvbiAmJiB0aGlzLm9wdGlvbnMucGF0Y2hQYXRoICYmIHRoaXMuZW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wudmFsaWQpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdGNoQ29udHJvbFZhbHVlKG9yaWdpbmFsVmFsdWUsIHRoaXMub3B0aW9ucy5wYXRjaEZ1bmN0aW9uLCB0aGlzLm9wdGlvbnMucGF0Y2hQYXRoKVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlLnN0YXJ0c1dpdGgod2hpdGVzcGFjZSkgfHwgdGhpcy5lbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC52YWx1ZS5lbmRzV2l0aCh3aGl0ZXNwYWNlKSkge1xyXG4gICAgICAgIHRoaXMuZW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShvcmlnaW5hbFZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHR5cGUgPT0gXCJBclwiKSB7XHJcbiAgICAgIGxldCBvcmlnaW5hbFZhbHVlID0gdGhpcy5hcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnBhdGNoRnVuY3Rpb24gJiYgdGhpcy5vcHRpb25zLnBhdGNoUGF0aCAmJiB0aGlzLmFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wudmFsaWQpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdGNoQ29udHJvbFZhbHVlKG9yaWdpbmFsVmFsdWUsIHRoaXMub3B0aW9ucy5wYXRjaEZ1bmN0aW9uLCB0aGlzLm9wdGlvbnMucGF0Y2hQYXRoKVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wudmFsdWUuc3RhcnRzV2l0aCh3aGl0ZXNwYWNlKSB8fCB0aGlzLmFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wudmFsdWUuZW5kc1dpdGgod2hpdGVzcGFjZSkpIHtcclxuICAgICAgICB0aGlzLmFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShvcmlnaW5hbFZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGNvcHlJbnB1dE1lc3NhZ2UoaW5wdXRFbGVtZW50KSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkNvcHlJbnB1dE1lc3NhZ2UoaW5wdXRFbGVtZW50KVxyXG4gIH1cclxuXHJcblxyXG4gIHNob3dJbnB1dFVzaW5nTGFuZ3VhZ2VNb2RlKCkge1xyXG5cclxuICAgIHRoaXMuYXJhYmljVmFsaWRhdGlvblJ1bGVzID0gdGhpcy5hcmFiaWNWYWxpZGF0aW9uUnVsZXMuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB0aGlzLmVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMgPSB0aGlzLmVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcblxyXG4gICAgdGhpcy5hcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgdGhpcy5lbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuXHJcbiAgICB0aGlzLmFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5lbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMubGFuZ3VhZ2VNb2RlKSB7XHJcbiAgICAgIGNhc2UgTGFuZ3VhZ2VNb2RlLkJvdGhfTGFuZ3VhZ2VzX2FyZV92aXNpYmxlOlxyXG4gICAgICAgIHRoaXMuc2hvd0FyYWJpY1RleHRBcmVhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNob3dFbmdpc2hUZXh0QXJlYSA9IHRydWU7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5pc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgIHRoaXMuZW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgdGhpcy5hcmFiaWNWYWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgIHRoaXMuSXNTaG93QXN0ZXJpc2tJbkFyYWJpYyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLklzU2hvd0FzdGVyaXNrSW5FbmdsaXNoID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGFuZ3VhZ2VNb2RlLkFyYWJpY19MYW5ndWFnZV9vbmx5X2lzX3Zpc2libGU6XHJcbiAgICAgICAgdGhpcy5zaG93QXJhYmljVGV4dEFyZWEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5tdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGFuZ3VhZ2VNb2RlLkVuZ2xpc2hfTGFuZ3VhZ2Vfb25seV9pc192aXNpYmxlOlxyXG4gICAgICAgIHRoaXMuc2hvd0VuZ2lzaFRleHRBcmVhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9wdGlvbnMubXVsdGlDb250cm9sUGxhY2VtZW50VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExhbmd1YWdlTW9kZS5Cb3RoX0xhbmd1YWdlc19hcmVfdmlzaWJsZV9idXRfb25seV9jdXJyZW50X2xhbmd1YWdlX2lzX3JlcXVpcmVkOlxyXG4gICAgICAgIHRoaXMuc2hvd0FyYWJpY1RleHRBcmVhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNob3dFbmdpc2hUZXh0QXJlYSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLm11bHRpQ29udHJvbFBsYWNlbWVudFR5cGUgPSB0aGlzLmdsb2JhbFNldHRpbmdzLm11bHRpQ29udHJvbFBsYWNlbWVudFR5cGVcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudExhbmd1YWdlID09ICdhcicpIHtcclxuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICAgIHRoaXMuSXNTaG93QXN0ZXJpc2tJbkFyYWJpYyA9IHRydWU7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50TGFuZ3VhZ2UgPT0gJ2VuJykge1xyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5pc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5lbmdsaXNoVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICAgIHRoaXMuSXNTaG93QXN0ZXJpc2tJbkVuZ2xpc2ggPSB0cnVlO1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGFuZ3VhZ2VNb2RlLkJvdGhfTGFuZ3VhZ2VzX2J1dF9vbmx5X0FyYWJpY19pc19yZXF1aXJlZDpcclxuICAgICAgICB0aGlzLnNob3dBcmFiaWNUZXh0QXJlYSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zaG93RW5naXNoVGV4dEFyZWEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5tdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlID0gdGhpcy5nbG9iYWxTZXR0aW5ncy5tdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlXHJcblxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICB0aGlzLmFyYWJpY1ZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luQXJhYmljID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExhbmd1YWdlTW9kZS5Cb3RoX0xhbmd1YWdlc19idXRfb25seV9FbmdsaXNoX2lzX3JlcXVpcmVkOlxyXG4gICAgICAgIHRoaXMuc2hvd0FyYWJpY1RleHRBcmVhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNob3dFbmdpc2hUZXh0QXJlYSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLm11bHRpQ29udHJvbFBsYWNlbWVudFR5cGUgPSB0aGlzLmdsb2JhbFNldHRpbmdzLm11bHRpQ29udHJvbFBsYWNlbWVudFR5cGVcclxuXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5pc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgICAgIHRoaXMuZW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgdGhpcy5Jc1Nob3dBc3Rlcmlza0luRW5nbGlzaCA9IHRydWU7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMYW5ndWFnZU1vZGUuQ3VycmVudF9MYW5ndWFnZV9vbmx5X2lzX3Zpc2libGVfYW5kX3JlcXVpcmVkOlxyXG4gICAgICAgIHRoaXMub3B0aW9ucy5tdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50TGFuZ3VhZ2UgPT0gJ2FyJykge1xyXG4gICAgICAgICAgdGhpcy5zaG93QXJhYmljVGV4dEFyZWEgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zaG93RW5naXNoVGV4dEFyZWEgPSBmYWxzZTtcclxuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXJhYmljVmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICAgIHRoaXMuSXNTaG93QXN0ZXJpc2tJbkFyYWJpYyA9IHRydWU7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50TGFuZ3VhZ2UgPT0gJ2VuJykge1xyXG4gICAgICAgICAgdGhpcy5zaG93QXJhYmljVGV4dEFyZWEgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd0VuZ2lzaFRleHRBcmVhID0gdHJ1ZTtcclxuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW5nbGlzaFZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICB0aGlzLklzU2hvd0FzdGVyaXNrSW5FbmdsaXNoID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMuYXJhYmljVmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuZW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLmVuZ2xpc2hWYWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5hcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuZW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uQXJhYmljRm9jdXMoaXNGb2N1czogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pc1Nob3dBcmFiaWNXb3JkQ291bnQgPSBpc0ZvY3VzXHJcblxyXG4gICAgLy9vbkZvY3VzXHJcbiAgICBpZiAoaXNGb2N1cykge1xyXG4gICAgICBpZiAodGhpcy5oYXNBcmFiaWNDaGFyc0xpbWl0VmFsaWRhdGlvbkVycm9yKSAvL2NoZWNrIGlmIHRoZXJlIHdhcyBwcmV2aW91cyB2YWxpZGF0aW9uIGVycm9yXHJcbiAgICAgICAgdGhpcy5zaG93QXJhYmljQ2hhcnNMaW1pdE1zZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIC8vb25Gb2N1c091dFxyXG4gICAgICB0aGlzLnNob3dBcmFiaWNDaGFyc0xpbWl0TXNnID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvbkVuZ2xpc2hGb2N1cyhpc0ZvY3VzOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmlzU2hvd0VuZ2xpc2hXb3JkQ291bnQgPSBpc0ZvY3VzXHJcblxyXG4gICAgLy9vbkZvY3VzXHJcbiAgICBpZiAoaXNGb2N1cykge1xyXG4gICAgICBpZiAodGhpcy5oYXNFbmdsaXNoQ2hhcnNMaW1pdFZhbGlkYXRpb25FcnJvcikgLy9jaGVjayBpZiB0aGVyZSB3YXMgcHJldmlvdXMgdmFsaWRhdGlvbiBlcnJvclxyXG4gICAgICAgIHRoaXMuc2hvd0VuZ2xpc2hDaGFyc0xpbWl0TXNnID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2UgLy9vbkZvY3VzT3V0XHJcbiAgICAgIHRoaXMuc2hvd0VuZ2xpc2hDaGFyc0xpbWl0TXNnID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIFJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkucmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuZW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wsIHRoaXMuZW5nbGlzaFZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKVxyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5yZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5hcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLCB0aGlzLmFyYWJpY1ZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKVxyXG4gIH1cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIEFkZFJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuYWRkUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuZW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wsIHRoaXMuZW5nbGlzaFZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKVxyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5hZGRSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5hcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLCB0aGlzLmFyYWJpY1ZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKVxyXG4gIH1cclxuXHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbiA9IChDdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnJlbW92ZUN1c3RvbVZhbGlkYXRpb24odGhpcy5lbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbCwgdGhpcy5lbmdsaXNoVmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5yZW1vdmVDdXN0b21WYWxpZGF0aW9uKHRoaXMuYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbCwgdGhpcy5hcmFiaWNWYWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgQWRkQ3VzdG9tVmFsaWRhdGlvbiA9IChDdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LmFkZEN1c3RvbVZhbGlkYXRpb24odGhpcy5lbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbCwgdGhpcy5lbmdsaXNoVmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5hZGRDdXN0b21WYWxpZGF0aW9uKHRoaXMuYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbCwgdGhpcy5hcmFiaWNWYWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgSXNWYWxpZCA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuaXNWYWxpZCh0aGlzLmVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sKVxyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5pc1ZhbGlkKHRoaXMuYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbClcclxuICB9XHJcblxyXG59XHJcblxyXG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cclxuICA8ZGl2IGNsYXNzPVwiYmJzZi1jb250cm9sIGJic2YtbXVsdGlsYW5nLXRleHRhcmVhIGZvcm0tZ3JvdXAgbWItMFwiIFtmb3JtR3JvdXBdPVwibXVsdGlMYW5ndWFnZVRleHRBcmVhZ3JvdXBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPCEtLSNyZWdpb24gRW5nbGlzaCB0ZXh0YXJlYS0tPlxyXG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cIihvcHRpb25zLm11bHRpQ29udHJvbFBsYWNlbWVudFR5cGU9PTEpPydjb2wtbWQtMTInOidjb2wtbWQtNidcIiAqbmdJZj1cInNob3dFbmdpc2hUZXh0QXJlYVwiIGNsYXNzPVwiYmJzZi1tdWx0aWxhbmctZm9ybS1ncm91cFwiPlxyXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiKG9wdGlvbnMudmlld1R5cGU9PTEpPydiYnNmLXZlcnRpY2FsJzonYmJzZi1ob3Jpem9udGFsJ1wiPlxyXG4gICAgICAgICAgPCEtLWxhYmVsLS0+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJiYnNmLWxhYmVsIHt7b3B0aW9ucy5sYWJlbEV4dHJhQ2xhc3Nlc319XCIgW2hpZGRlbl09XCJvcHRpb25zLmlzSGlkZUVuZ2xpc2hMYWJlbFwiPlxyXG4gICAgICAgICAgICB7eyhvcHRpb25zLmVuZ2xpc2hMYWJlbFZhbHVlIT1udWxsJiZvcHRpb25zLmVuZ2xpc2hMYWJlbFZhbHVlIT1cIlwiKT9vcHRpb25zLmVuZ2xpc2hMYWJlbFZhbHVlOm9wdGlvbnMubGFiZWxWYWx1ZStcIkluRW5nbGlzaFwifX1cclxuICAgICAgICAgICAgPCEtLUFzdGVyaXNrLS0+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKCgob3B0aW9ucy5zaG93QXN0ZXJpc2smJm9wdGlvbnMuaXNSZXF1aXJlZCl8fChvcHRpb25zLmlzUmVxdWlyZWQpKSYmSXNTaG93QXN0ZXJpc2tJbkVuZ2xpc2gpJiYhb3B0aW9ucy5pc1JlYWRvbmx5XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmJzZi1pbnB1dC1jb250YWluZXJcIiAqbmdJZj1cIiFvcHRpb25zLmlzUmVhZG9ubHlcIiBbbmdDbGFzc109XCJvcHRpb25zLmVuYWJsZUNvcHlUb0NsaXBib2FyZD8gJ3AtNDBweCcgOiAnJyBcIj5cclxuICAgICAgICAgICAgPCEtLWlucHV0LS0+XHJcbiAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImZvcm0tY29udHJvbFwiIGRpcj1cImx0clwiIHJvd3M9XCJ7e29wdGlvbnMucm93c319XCIgY29scz1cInt7b3B0aW9ucy5jb2xzfX1cIiAoZm9jdXMpPVwib25FbmdsaXNoRm9jdXModHJ1ZSlcIlxyXG4gICAgICAgICAgICAgIChmb2N1c291dCk9XCJvbkVuZ2xpc2hGb2N1cyhmYWxzZSlcIiBtYXhsZW5ndGg9XCJ7e29wdGlvbnMubWF4TGVuZ3RofX1cIiBtaW5sZW5ndGg9XCJ7e29wdGlvbnMubWluTGVuZ3RofX1cIiBhcmlhLWRlc2NyaWJlZGJ5PVwiZW1haWwtZXJyb3JcIlxyXG4gICAgICAgICAgICAgIGFyaWEtaW52YWxpZD1cInRydWVcIiBmb3JtQ29udHJvbE5hbWU9XCJFbmdsaXNoXCIgW2hpZGRlbl09XCJvcHRpb25zLmlzSGlkZUVuZ2xpc2hGaWVsZHNcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLmludmFsaWQgJiYgZW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wudG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e29wdGlvbnMuZW5nbGlzaFBsYWNlaG9sZGVyfX1cIiAoY2hhbmdlKT1cInRyaW1Db250cm9sVmFsdWUoJ0VuJylcIiAoa2V5dXApPVwib25UZXh0Q2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwib3B0aW9ucy52YWx1ZS5lbmdsaXNoXCJcclxuICAgICAgICAgICAgICAoa2V5ZG93bik9XCJlbmdsaXNoV29yZENvdW50QXJyYXk+b3B0aW9ucy5tYXhXb3JkQ291bnQmJiRldmVudC5rZXlDb2RlICE9OD8kZXZlbnQucHJldmVudERlZmF1bHQoKTpudWxsXCIgI3VzZXJpbnB1dFRleHRBcmVhRW5nbGlzaD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgIDwhLS1Db3B5VG9DbGlwYm9hcmQtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvcHktY2xpcGJvYXJkXCIgW2hpZGRlbl09XCJvcHRpb25zLmlzSGlkZUVuZ2xpc2hGaWVsZHNcIiAqbmdJZj1cIm9wdGlvbnMuZW5hYmxlQ29weVRvQ2xpcGJvYXJkXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY29weUlucHV0TWVzc2FnZSh1c2VyaW5wdXRUZXh0QXJlYUVuZ2xpc2gpXCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY29weVwiPjwvaT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwib3B0aW9ucy5pc1JlYWRvbmx5XCI+PHNwYW4gY2xhc3M9XCJyZWFkb25seS12aWV3XCIgW2lubmVySFRNTF09XCJvcHRpb25zLnZhbHVlLmVuZ2xpc2hcIj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VidGV4dC1jb250YWluZXJcIiAqbmdJZj1cIiFvcHRpb25zLmlzUmVhZG9ubHlcIj5cclxuICAgICAgICAgICAgPCEtLXdvcmRDb3VudC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmJzZi13b3JkLWNvdW50XCIgKm5nSWY9XCJvcHRpb25zLm1heFdvcmRDb3VudD4wJiZpc1Nob3dFbmdsaXNoV29yZENvdW50XCI+XHJcbiAgICAgICAgICAgICAge3tlbmdsaXNoV29yZENvdW50fX0ve3tvcHRpb25zLm1heFdvcmRDb3VudH19IFdvcmRzPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gQ2hhcnNMaW1pdE1zZy0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmJzZi1jaGFyYWN0ZXItY291bnRcIiAqbmdJZj1cInNob3dFbmdsaXNoQ2hhcnNMaW1pdE1zZ1wiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydiYWRnZS1saWdodC13YXJuaW5nJzogZW5nbGlzaENoYXJzTGltaXRNc2dDbGFzcyA9PT0gJ3dhcm5pbmcnLCAnYmFkZ2UtbGlnaHQtZGFuZ2VyJyA6IGVuZ2xpc2hDaGFyc0xpbWl0TXNnQ2xhc3MgPT09ICdkYW5nZXInIH1cIj5cclxuICAgICAgICAgICAgICB7e2VuZ2xpc2hNYXhMaW1pdFdhcm5pbmdNc2d9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBMYWJlbERlc2NyaXB0aW9uLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLWNvbnRyb2wtZGVzY1wiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIob3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIT1udWxsJiZvcHRpb25zLmxhYmVsRGVzY3JpcHRpb24hPScnKSB8fChvcHRpb25zLmVuZ2xpc2hMYWJlbERlc2NyaXB0aW9uIT1udWxsJiZvcHRpb25zLmVuZ2xpc2hMYWJlbERlc2NyaXB0aW9uIT0nJylcIj5cclxuICAgICAgICAgICAgICB7eyhvcHRpb25zLmVuZ2xpc2hMYWJlbERlc2NyaXB0aW9uIT1udWxsJiZvcHRpb25zLmVuZ2xpc2hMYWJlbERlc2NyaXB0aW9uIT1cIlwiKT9vcHRpb25zLmVuZ2xpc2hMYWJlbERlc2NyaXB0aW9uOm9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbn19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIHJlcXVpcmVkVGV4dC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmJzZi12YWxpZGF0aW9uXCIgKm5nSWY9XCIoZW5nbGlzaFRleHRBcmVhRm9ybUNvbnRyb2wuaW52YWxpZCAmJiBlbmdsaXNoVGV4dEFyZWFGb3JtQ29udHJvbC50b3VjaGVkKVwiPlxyXG4gICAgICAgICAgICAgIHt7Z2V0RXJyb3JWYWxpZGF0aW9uKGVuZ2xpc2hUZXh0QXJlYUZvcm1Db250cm9sLmVycm9yc3xrZXl2YWx1ZSl9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIihncm91cC52YWxpZCYmZ3JvdXAuZGlydHkmJmdyb3VwLnRvdWNoZWQgKXx8KGdyb3VwLnVudG91Y2hlZCYmZ3JvdXAuaW52YWxpZCYmZ3JvdXAuZGlydHkpIFwiPlxyXG4gICAgICAgICAgICAgIHt7cmVzZXRFcnJvcigpfX08L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgPCEtLSNyZWdpb24gQXJhYmljIHRleHRib3gtLT5cclxuICAgICAgPGRpdiBbbmdDbGFzc109XCIob3B0aW9ucy5tdWx0aUNvbnRyb2xQbGFjZW1lbnRUeXBlPT0xKT8nY29sLW1kLTEyJzonY29sLW1kLTYnXCIgKm5nSWY9XCJzaG93QXJhYmljVGV4dEFyZWFcIiBjbGFzcz1cImJic2YtbXVsdGlsYW5nLWZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIihvcHRpb25zLnZpZXdUeXBlPT0xKT8nYmJzZi12ZXJ0aWNhbCc6J2Jic2YtaG9yaXpvbnRhbCdcIj5cclxuICAgICAgICAgIDwhLS1sYWJlbC0tPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYmJzZi1sYWJlbCB7e29wdGlvbnMubGFiZWxFeHRyYUNsYXNzZXN9fVwiIFtoaWRkZW5dPVwib3B0aW9ucy5pc0hpZGVBcmFiaWNMYWJlbFwiPlxyXG4gICAgICAgICAgICB7eyhvcHRpb25zLmFyYWJpY0xhYmVsVmFsdWUhPW51bGwmJm9wdGlvbnMuYXJhYmljTGFiZWxWYWx1ZSE9XCJcIik/b3B0aW9ucy5hcmFiaWNMYWJlbFZhbHVlOm9wdGlvbnMubGFiZWxWYWx1ZStcImluQXJhYmljXCJ9fVxyXG4gICAgICAgICAgICA8IS0tQXN0ZXJpc2stLT5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIoKChvcHRpb25zLnNob3dBc3RlcmlzayYmb3B0aW9ucy5pc1JlcXVpcmVkKXx8KG9wdGlvbnMuaXNSZXF1aXJlZCkpJiZJc1Nob3dBc3Rlcmlza0luQXJhYmljKSYmIW9wdGlvbnMuaXNSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFvcHRpb25zLmlzUmVhZG9ubHlcIiBjbGFzcz1cImJic2YtaW5wdXQtY29udGFpbmVyXCIgW25nQ2xhc3NdPVwib3B0aW9ucy5lbmFibGVDb3B5VG9DbGlwYm9hcmQ/ICdwLTQwcHgnIDogJycgXCI+XHJcbiAgICAgICAgICAgIDwhLS1pbnB1dC0tPlxyXG4gICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYm5zaWdodHMtY29udHJvbFwiIGRpcj1cInJ0bFwiIFtyb3dzXT1cIm9wdGlvbnMucm93c1wiIFtjb2xzXT1cIm9wdGlvbnMuY29sc1wiIChmb2N1cyk9XCJvbkFyYWJpY0ZvY3VzKHRydWUpXCJcclxuICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwib25BcmFiaWNGb2N1cyhmYWxzZSlcIiBbaGlkZGVuXT1cIm9wdGlvbnMuaXNIaWRlQXJhYmljRmllbGRzXCIgYXJpYS1kZXNjcmliZWRieT1cImVtYWlsLWVycm9yXCIgYXJpYS1pbnZhbGlkPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiQXJhYmljXCIgW21heGxlbmd0aF09XCJvcHRpb25zLm1heExlbmd0aFwiIFttaW5sZW5ndGhdPVwib3B0aW9ucy5taW5MZW5ndGhcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wuaW52YWxpZCAmJiBhcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLnRvdWNoZWRcIiBwbGFjZWhvbGRlcj1cInt7b3B0aW9ucy5hcmFiaWNQbGFjZWhvbGRlcn19XCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRyaW1Db250cm9sVmFsdWUoJ0FyJylcIiAoa2V5dXApPVwib25UZXh0Q2hhbmdlKClcIiBbKG5nTW9kZWwpXT1cIm9wdGlvbnMudmFsdWUuYXJhYmljXCJcclxuICAgICAgICAgICAgICAoa2V5ZG93bik9XCJhcmFiaWNXb3JkQ291bnRBcnJheT5vcHRpb25zLm1heFdvcmRDb3VudCYmJGV2ZW50LmtleUNvZGUgIT04PyRldmVudC5wcmV2ZW50RGVmYXVsdCgpOm51bGxcIlxyXG4gICAgICAgICAgICAgICN1c2VySW5wdXRUZXh0QXJlYUFyYWJpYz48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICA8IS0tQ29weVRvQ2xpcGJvYXJkLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3B5LWNsaXBib2FyZFwiIFtoaWRkZW5dPVwib3B0aW9ucy5pc0hpZGVBcmFiaWNGaWVsZHNcIiAqbmdJZj1cIm9wdGlvbnMuZW5hYmxlQ29weVRvQ2xpcGJvYXJkXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY29weUlucHV0TWVzc2FnZSh1c2VySW5wdXRUZXh0QXJlYUFyYWJpYylcIj5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jb3B5XCI+PC9pPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm9wdGlvbnMuaXNSZWFkb25seVwiPjxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmlld1wiIFtpbm5lckhUTUxdPVwib3B0aW9ucy52YWx1ZS5hcmFiaWNcIj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VidGV4dC1jb250YWluZXJcIiAqbmdJZj1cIiFvcHRpb25zLmlzUmVhZG9ubHlcIj5cclxuICAgICAgICAgICAgPCEtLXdvcmRDb3VudC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmJzZi13b3JkLWNvdW50XCIgKm5nSWY9XCJvcHRpb25zLm1heFdvcmRDb3VudD4wJiZpc1Nob3dBcmFiaWNXb3JkQ291bnRcIj5cclxuICAgICAgICAgICAgICB7e2FyYWJpY1dvcmRDb3VudH19L3t7b3B0aW9ucy5tYXhXb3JkQ291bnR9fSBXb3JkczwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIENoYXJzTGltaXRNc2ctLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJic2YtY2hhcmFjdGVyLWNvdW50XCIgKm5nSWY9XCJzaG93QXJhYmljQ2hhcnNMaW1pdE1zZ1wiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydiYWRnZS1saWdodC13YXJuaW5nJzogYXJhYmljQ2hhcnNMaW1pdE1zZ0NsYXNzID09PSAnd2FybmluZycsICdiYWRnZS1saWdodC1kYW5nZXInIDogYXJhYmljQ2hhcnNMaW1pdE1zZ0NsYXNzID09PSAnZGFuZ2VyJyB9XCI+XHJcbiAgICAgICAgICAgICAge3thcmFiaWNNYXhMaW1pdFdhcm5pbmdNc2d9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSBMYWJlbERlc2NyaXB0aW9uLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLWNvbnRyb2wtZGVzY1wiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIob3B0aW9ucy5sYWJlbERlc2NyaXB0aW9uIT1udWxsJiZvcHRpb25zLmxhYmVsRGVzY3JpcHRpb24hPScnKXx8KG9wdGlvbnMuYXJhYmljTGFiZWxEZXNjcmlwdGlvbiE9bnVsbCYmb3B0aW9ucy5hcmFiaWNMYWJlbERlc2NyaXB0aW9uIT0nJylcIj5cclxuICAgICAgICAgICAgICB7eyhvcHRpb25zLmFyYWJpY0xhYmVsRGVzY3JpcHRpb24hPW51bGwmJm9wdGlvbnMuYXJhYmljTGFiZWxEZXNjcmlwdGlvbiE9XCJcIik/b3B0aW9ucy5hcmFiaWNMYWJlbERlc2NyaXB0aW9uOm9wdGlvbnMubGFiZWxEZXNjcmlwdGlvbn19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIHJlcXVpcmVkVGV4dC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmJzZi12YWxpZGF0aW9uXCIgKm5nSWY9XCIoYXJhYmljVGV4dEFyZWFGb3JtQ29udHJvbC5pbnZhbGlkICYmIGFyYWJpY1RleHRBcmVhRm9ybUNvbnRyb2wudG91Y2hlZClcIj5cclxuICAgICAgICAgICAgICB7e2dldEVycm9yVmFsaWRhdGlvbihhcmFiaWNUZXh0QXJlYUZvcm1Db250cm9sLmVycm9yc3xrZXl2YWx1ZSl9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIihncm91cC52YWxpZCYmZ3JvdXAuZGlydHkmJmdyb3VwLnRvdWNoZWQgKXx8KGdyb3VwLnVudG91Y2hlZCYmZ3JvdXAuaW52YWxpZCYmZ3JvdXAuZGlydHkpIFwiPlxyXG4gICAgICAgICAgICAgIHt7cmVzZXRFcnJvcigpfX08L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|