@netgrif/components-core 6.4.2-rc.5 → 6.4.2
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/esm2020/assets/i18n/sk.json +1 -1
- package/esm2020/lib/data-fields/file-list-field/file-list-default-field/abstract-file-list-default-field.component.mjs +2 -2
- package/esm2020/lib/panel/task-panel/abstract-task-panel.component.mjs +13 -7
- package/esm2020/lib/resources/interface/case.mjs +1 -1
- package/esm2020/lib/task/services/task-data.service.mjs +8 -1
- package/esm2020/lib/task-content/services/task-content.service.mjs +3 -3
- package/esm2020/lib/utility/tests/utility/create-mock-case.mjs +2 -1
- package/fesm2015/netgrif-components-core.mjs +21 -7
- package/fesm2015/netgrif-components-core.mjs.map +1 -1
- package/fesm2020/netgrif-components-core.mjs +20 -7
- package/fesm2020/netgrif-components-core.mjs.map +1 -1
- package/lib/panel/task-panel/abstract-task-panel.component.d.ts +4 -2
- package/lib/resources/interface/case.d.ts +1 -0
- package/lib/task/services/task-data.service.d.ts +1 -0
- package/package.json +2 -2
- package/src/assets/i18n/sk.json +1 -1
- package/esm2020/lib/data-fields/models/file-field-id-body.mjs +0 -2
- package/lib/data-fields/models/file-field-id-body.d.ts +0 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Inject, Optional } from "@angular/core";
|
|
1
|
+
import { Component, Inject, Optional, } from "@angular/core";
|
|
2
2
|
import { DATA_FIELD_PORTAL_DATA } from "../../models/data-field-portal-data-injection-token";
|
|
3
3
|
import { FileListFieldValidation } from "../models/file-list-field";
|
|
4
4
|
import { ProgressType } from "../../../resources/resource-provider.service";
|
|
@@ -293,4 +293,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
293
293
|
type: Inject,
|
|
294
294
|
args: [DATA_FIELD_PORTAL_DATA]
|
|
295
295
|
}] }]; } });
|
|
296
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZmlsZS1saXN0LWRlZmF1bHQtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9kYXRhLWZpZWxkcy9maWxlLWxpc3QtZmllbGQvZmlsZS1saXN0LWRlZmF1bHQtZmllbGQvYWJzdHJhY3QtZmlsZS1saXN0LWRlZmF1bHQtZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsTUFBTSxFQUlOLFFBQVEsRUFFWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsc0JBQXNCLEVBQXNCLE1BQU0scURBQXFELENBQUM7QUFDaEgsT0FBTyxFQUFnQix1QkFBdUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBU2pGLE9BQU8sRUFBQyxZQUFZLEVBQW1CLE1BQU0sOENBQThDLENBQUM7QUFFNUYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUlwQyxPQUFPLEVBQUMsaUNBQWlDLEVBQUMsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7OztBQWVyRyxNQUFNLE9BQWdCLHFDQUFzQyxTQUFRLGlDQUFnRDtJQWNoSCxZQUFnQyxvQkFBeUMsRUFDekMsSUFBbUIsRUFDbkIsU0FBMEIsRUFDMUIsVUFBNEIsRUFDNUIsYUFBMkIsRUFDTyxtQkFBdUQ7UUFDckgsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFONUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUN6QyxTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25CLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzFCLGVBQVUsR0FBVixVQUFVLENB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YUFDTjtpQkFBTTtnQkFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsSUFBSSxLQUFLLEVBQWtCLENBQUM7YUFDakU7WUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkY7SUFDTCxDQUFDOzttSUE1U2lCLHFDQUFxQyw2S0FtQmIsc0JBQXNCO3VIQW5COUMscUNBQXFDLG1HQUY3QyxFQUFFOzRGQUVNLHFDQUFxQztrQkFKMUQsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsc0NBQXNDO29CQUNoRCxRQUFRLEVBQUUsRUFBRTtpQkFDZjs7MEJBb0IwQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7REFUQV9GSUVMRF9QT1JUQUxfREFUQSwgRGF0YUZpZWxkUG9ydGFsRGF0YX0gZnJvbSBcIi4uLy4uL21vZGVscy9kYXRhLWZpZWxkLXBvcnRhbC1kYXRhLWluamVjdGlvbi10b2tlblwiO1xuaW1wb3J0IHtGaWxlTGlzdEZpZWxkLCBGaWxlTGlzdEZpZWxkVmFsaWRhdGlvbn0gZnJvbSBcIi4uL21vZGVscy9maWxlLWxpc3QtZmllbGRcIjtcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtUYXNrUmVzb3VyY2VTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vcmVzb3VyY2VzL2VuZ2luZS1lbmRwb2ludC90YXNrLXJlc291cmNlLnNlcnZpY2VcIjtcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZVwiO1xuaW1wb3J0IHtTbmFja0JhclNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zbmFjay1iYXIvc2VydmljZXMvc25hY2stYmFyLnNlcnZpY2VcIjtcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7RXZlbnRTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vZXZlbnQvc2VydmljZXMvZXZlbnQuc2VydmljZVwiO1xuaW1wb3J0IHtGaWxlRmllbGRJZEJvZHl9IGZyb20gXCIuLi8uLi9tb2RlbHMvZmlsZS1maWVsZC1pZC1ib2R5XCI7XG5pbXBvcnQge0V2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZX0gZnJvbSBcIi4uLy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvbWVzc2FnZS1yZXNvdXJjZVwiO1xuaW1wb3J0IHtQcm9ncmVzc1R5cGUsIFByb3ZpZGVyUHJvZ3Jlc3N9IGZyb20gXCIuLi8uLi8uLi9yZXNvdXJjZXMvcmVzb3VyY2UtcHJvdmlkZXIuc2VydmljZVwiO1xuaW1wb3J0IHtDaGFuZ2VkRmllbGRzTWFwfSBmcm9tIFwiLi4vLi4vLi4vZXZlbnQvc2VydmljZXMvaW50ZXJmYWNlcy9jaGFuZ2VkLWZpZWxkcy1tYXBcIjtcbmltcG9ydCB7SHR0cFBhcmFtc30gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQge3Rha2V9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHtGaWxlRmllbGRWYWx1ZX0gZnJvbSBcIi4uLy4uL2ZpbGUtZmllbGQvbW9kZWxzL2ZpbGUtZmllbGQtdmFsdWVcIjtcbmltcG9ydCB7QWJzdHJhY3RCYXNlRGF0YUZpZWxkQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vYmFzZS1jb21wb25lbnQvYWJzdHJhY3QtYmFzZS1kYXRhLWZpZWxkLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtGaWxlRmllbGRSZXF1ZXN0fSBmcm9tIFwiLi4vLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9maWxlLWZpZWxkLXJlcXVlc3QtYm9keVwiO1xuaW1wb3J0IHtBYnN0cmFjdEZpbGVGaWVsZERlZmF1bHRDb21wb25lbnR9IGZyb20gJy4uLy4uL21vZGVscy9hYnN0cmFjdC1maWxlLWZpZWxkLWRlZmF1bHQtY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBGaWxlc1N0YXRlIHtcbiAgICBwcm9ncmVzczogbnVtYmVyO1xuICAgIHVwbG9hZGluZzogYm9vbGVhbjtcbiAgICBkb3dubG9hZGluZzogYm9vbGVhbjtcbiAgICBjb21wbGV0ZWQ6IGJvb2xlYW47XG4gICAgZXJyb3I6IGJvb2xlYW47XG59XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduY2MtYWJzdHJhY3QtZmlsZS1saXN0LWRlZmF1bHQtZmllbGQnLFxuICAgIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEZpbGVMaXN0RGVmYXVsdEZpZWxkQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RGaWxlRmllbGREZWZhdWx0Q29tcG9uZW50PEZpbGVMaXN0RmllbGQ+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgcHVibGljIHVwbG9hZGVkRmlsZXM6IEFycmF5PHN0cmluZz47XG4gICAgcHVibGljIHN0YXRlOiBGaWxlc1N0YXRlO1xuICAgIHByaXZhdGUgdmFsdWVDaGFuZ2UkOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKipcbiAgICAgKiBWYWx1ZXMgZnJvbSBmaWxlIGxpc3QgZmllbGQgdmFsaWRhdGlvbiAoZWcuIG1heEZpbGVzIDUpXG4gICAgICogbWF4RmlsZXNOdW1iZXIgLSBtYXhpbXVtIHVwbG9hZGFibGUgZmlsZXNcbiAgICAgKiBtYXhGaWxlc01lc3NhZ2UgLSBlcnJvciBtZXNzYWdlIGlmIG51bWJlciBvZiBmaWxlcyBpcyBleGNlZWRlZFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBtYXhGaWxlc051bWJlcjogbnVtYmVyO1xuICAgIHByb3RlY3RlZCBtYXhGaWxlc01lc3NhZ2U6IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX3Rhc2tSZXNvdXJjZVNlcnZpY2U6IFRhc2tSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfbG9nOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3NuYWNrYmFyOiBTbmFja0JhclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2V2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERBVEFfRklFTERfUE9SVEFMX0RBVEEpIGRhdGFGaWVsZFBvcnRhbERhdGE6IERhdGFGaWVsZFBvcnRhbERhdGE8RmlsZUxpc3RGaWVsZD4pIHtcbiAgICAgICAgc3VwZXIoX2xvZywgX3NuYWNrYmFyLCBfdHJhbnNsYXRlLCBkYXRhRmllbGRQb3J0YWxEYXRhKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuZGVmYXVsdFN0YXRlO1xuICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgICAgICB0aGlzLm1heEZpbGVzTnVtYmVyID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICAgICAgICB0aGlzLnRhc2tJZCA9IGRhdGFGaWVsZFBvcnRhbERhdGEuYWRkaXRpb25hbEZpZWxkUHJvcGVydGllcy50YXNrSWQgYXMgc3RyaW5nO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlJCA9IHRoaXMuZGF0YUZpZWxkLnZhbHVlQ2hhbmdlcygpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBhcnNlUmVzcG9uc2UoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLmRhdGFGaWVsZC52YWxpZGF0aW9ucyAmJiB0aGlzLmRhdGFGaWVsZC52YWxpZGF0aW9ucy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IHRoaXMuZGF0YUZpZWxkLnZhbGlkYXRpb25zLmZpbmQodmFsaWRhdGlvbiA9PlxuICAgICAgICAgICAgICAgIHZhbGlkYXRpb24udmFsaWRhdGlvblJ1bGUuaW5jbHVkZXMoRmlsZUxpc3RGaWVsZFZhbGlkYXRpb24uTUFYX0ZJTEVTKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICh2YWwgJiYgdmFsLnZhbGlkYXRpb25SdWxlLnNwbGl0KCcgJykubGVuZ3RoID09PSAyICYmICFpc05hTihwYXJzZUludCh2YWwudmFsaWRhdGlvblJ1bGUuc3BsaXQoJyAnKVsxXSwgMTApKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubWF4RmlsZXNOdW1iZXIgPSBwYXJzZUludCh2YWwudmFsaWRhdGlvblJ1bGUuc3BsaXQoJyAnKVsxXSwgMTApO1xuICAgICAgICAgICAgICAgIHRoaXMubWF4RmlsZXNNZXNzYWdlID0gdmFsLnZhbGlkYXRpb25NZXNzYWdlICYmIHZhbC52YWxpZGF0aW9uTWVzc2FnZSAhPT0gJycgPyB2YWwudmFsaWRhdGlvbk1lc3NhZ2UgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGZpbGUgcGlja2VyIGFuZCBpbWFnZSBlbGVtZW50cyB0byBbRmlsZUZpZWxkU2VydmljZV17QGxpbmsgRmlsZUZpZWxkU2VydmljZX0uXG4gICAgICpcbiAgICAgKiBJbml0aWFsaXplIGZpbGUgaW1hZ2UuXG4gICAgICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5maWxlVXBsb2FkRWwpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQub25jaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWQoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hvb3NlRmlsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUudXBsb2FkaW5nIHx8IHRoaXMuZm9ybUNvbnRyb2xSZWYuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbCBhZnRlciBjbGljayBvbiBmaWxlIGZpZWxkLlxuICAgICAqXG4gICAgICogSWYgZmlsZSBmaWVsZCBoYXMgbm8gZmlsZSB1cGxvYWRlZFxuICAgICAqIFtGaWxlc1VwbG9hZENvbXBvbmVudF17QGxpbmsgQWJzdHJhY3RGaWxlc1VwbG9hZENvbXBvbmVudH0gdmlhIFtTaWRlTWVudV17QGxpbmsgU2lkZU1lbnVTZXJ2aWNlfSBvcGVucy5cbiAgICAgKlxuICAgICAqIE90aGVyd2lzZSBvcGVucyBhIGZpbGUgcGlja2VyIGZyb20gd2hpY2ggdGhlIHVzZXIgY2FuIHNlbGVjdCBmaWxlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkKCkge1xuICAgICAgICBpZiAoIXRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQuZmlsZXMgfHwgdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC5maWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMudGFza0lkKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0ZpbGUgY2Fubm90IGJlIHVwbG9hZGVkLiBObyB0YXNrIGlzIHNldCB0byB0aGUgZmllbGQuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQuZmlsZXMubGVuZ3RoICsgdGhpcy51cGxvYWRlZEZpbGVzLmxlbmd0aCA+IHRoaXMubWF4RmlsZXNOdW1iZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMubWF4RmlsZXNNZXNzYWdlID8gdGhpcy5tYXhGaWxlc01lc3NhZ2UgOlxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIubWF4RmlsZXNFeGNlZWRlZCcpICsgdGhpcy5tYXhGaWxlc051bWJlclxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmaWxlc1RvVXBsb2FkID0gQXJyYXkuZnJvbSh0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LmZpbGVzKTtcbiAgICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICAgIGZpbGVzVG9VcGxvYWQuZm9yRWFjaChpdGVtID0+IHN1bSArPSBpdGVtLnNpemUpO1xuICAgICAgICBpZiAodGhpcy5kYXRhRmllbGQubWF4VXBsb2FkU2l6ZUluQnl0ZXMgJiZcbiAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLm1heFVwbG9hZFNpemVJbkJ5dGVzIDwgc3VtKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0ZpbGVzIGNhbm5vdCBiZSB1cGxvYWRlZC4gTWF4aW11bSBzaXplIG9mIGZpbGVzIGV4Y2VlZGVkLicpO1xuICAgICAgICAgICAgdGhpcy5yZXNvbHZlTWF4U2l6ZU1lc3NhZ2UoKTtcbiAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRhdGFGaWVsZC52YWx1ZT8ubmFtZXNQYXRocyAmJiB0aGlzLmRhdGFGaWVsZC52YWx1ZT8ubmFtZXNQYXRocy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMuZm9yRWFjaChuYW1lUGF0aCA9PiB7XG4gICAgICAgICAgICAgICAgZmlsZXNUb1VwbG9hZCA9IGZpbGVzVG9VcGxvYWQuZmlsdGVyKGZpbGVUb1VwbG9hZCA9PiBmaWxlVG9VcGxvYWQubmFtZSAhPT0gbmFtZVBhdGgubmFtZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChmaWxlc1RvVXBsb2FkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignVXNlciBjaG9zZSB0aGUgc2FtZSBmaWxlcyB0aGF0IGFyZSBhbHJlYWR5IHVwbG9hZGVkLiBVcGxvYWRpbmcgc2tpcHBlZCcpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIud29udFVwbG9hZFNhbWVGaWxlcycpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmNoZWNrQWxsb3dlZFR5cGVzKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLmRlZmF1bHRTdGF0ZTtcbiAgICAgICAgdGhpcy5zdGF0ZS51cGxvYWRpbmcgPSB0cnVlO1xuICAgICAgICBjb25zdCBmaWxlRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcblxuICAgICAgICBmaWxlc1RvVXBsb2FkLmZvckVhY2goZmlsZVRvVXBsb2FkID0+IHtcbiAgICAgICAgICAgIGZpbGVGb3JtRGF0YS5hcHBlbmQoJ2ZpbGVzJywgZmlsZVRvVXBsb2FkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RCb2R5OiBGaWxlRmllbGRSZXF1ZXN0ID0ge1xuICAgICAgICAgICAgcGFyZW50VGFza0lkOiB0aGlzLnJlc29sdmVQYXJlbnRUYXNrSWQoKSxcbiAgICAgICAgICAgIGZpZWxkSWQ6IHRoaXMuZGF0YUZpZWxkLnN0cmluZ0lkLFxuICAgICAgICB9XG4gICAgICAgIGZpbGVGb3JtRGF0YS5hcHBlbmQoJ2RhdGEnLCBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkocmVxdWVzdEJvZHkpXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9qc29uJ30pKTtcbiAgICAgICAgdGhpcy5fdGFza1Jlc291cmNlU2VydmljZS51cGxvYWRGaWxlKHRoaXMudGFza0lkLCBmaWxlRm9ybURhdGEsIHRydWUpLnN1YnNjcmliZSgocmVzcG9uc2U6IEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICgocmVzcG9uc2UgYXMgUHJvdmlkZXJQcm9ncmVzcykudHlwZSAmJiAocmVzcG9uc2UgYXMgUHJvdmlkZXJQcm9ncmVzcykudHlwZSA9PT0gUHJvZ3Jlc3NUeXBlLlVQTE9BRCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnByb2dyZXNzID0gKHJlc3BvbnNlIGFzIFByb3ZpZGVyUHJvZ3Jlc3MpLnByb2dyZXNzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuY29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS51cGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5wcm9ncmVzcyA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5kZWJ1ZyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGBGaWxlcyBbJHt0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZH1dIHdlcmUgc3VjY2Vzc2Z1bGx5IHVwbG9hZGVkYFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBGaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHt0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LmZpbGVzLml0ZW0oMCl9IHVwbG9hZGluZyBoYXMgZmFpbGVkIWAsIHJlc3BvbnNlLmVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQocmVzcG9uc2UuZXJyb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5zbmFja0Jhci5maWxlVXBsb2FkRmFpbGVkJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhbmdlZEZpZWxkc01hcDogQ2hhbmdlZEZpZWxkc01hcCA9IHRoaXMuX2V2ZW50U2VydmljZS5wYXJzZUNoYW5nZWRGaWVsZHNGcm9tT3V0Y29tZVRyZWUocmVzcG9uc2Uub3V0Y29tZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5lbWl0Q2hhbmdlZEZpZWxkcyhjaGFuZ2VkRmllbGRzTWFwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzVG9VcGxvYWQuZm9yRWFjaChmaWxlVG9VcGxvYWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKGZpbGVUb1VwbG9hZC5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lc1BhdGhzLnB1c2goe25hbWU6IGZpbGVUb1VwbG9hZC5uYW1lfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbFJlZi5zZXRWYWx1ZSh0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lc1BhdGhzLm1hcChuYW1lUGF0aCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lUGF0aFsnbmFtZSddO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmpvaW4oJy8nKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC50b3VjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuY29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnVwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUucHJvZ3Jlc3MgPSAwO1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcj8uZXJyb3I/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoZXJyb3IuZXJyb3IubWVzc2FnZSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIuZmlsZVVwbG9hZEZhaWxlZCcpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgRmlsZSBbJHt0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZH1dICR7dGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC5maWxlcy5pdGVtKDApfSB1cGxvYWRpbmcgaGFzIGZhaWxlZCFgLCBlcnJvclxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudG91Y2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBkb3dubG9hZChmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhRmllbGQudmFsdWU/Lm5hbWVzUGF0aHM/LmZpbmQobmFtZVBhdGggPT4gbmFtZVBhdGgubmFtZSA9PT0gZmlsZU5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdGaWxlIGNhbm5vdCBiZSBkb3dubG9hZGVkLiBObyB0YXNrIGlzIHNldCB0byB0aGUgZmllbGQuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0YXRlID0gdGhpcy5kZWZhdWx0U3RhdGU7XG4gICAgICAgIHRoaXMuc3RhdGUuZG93bmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldChcImZpZWxkSWRcIiwgdGhpcy5kYXRhRmllbGQuc3RyaW5nSWQpO1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KFwiZmlsZU5hbWVcIiwgZmlsZU5hbWUpO1xuICAgICAgICB0aGlzLl90YXNrUmVzb3VyY2VTZXJ2aWNlLmRvd25sb2FkRmlsZSh0aGlzLnJlc29sdmVQYXJlbnRUYXNrSWQoKSwgcGFyYW1zKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgaWYgKChyZXNwb25zZSBhcyBQcm92aWRlclByb2dyZXNzKS50eXBlICYmIChyZXNwb25zZSBhcyBQcm92aWRlclByb2dyZXNzKS50eXBlID09PSBQcm9ncmVzc1R5cGUuRE9XTkxPQUQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnByb2dyZXNzID0gKHJlc3BvbnNlIGFzIFByb3ZpZGVyUHJvZ3Jlc3MpLnByb2dyZXNzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZGVidWcoYEZpbGUgWyR7dGhpcy5kYXRhRmllbGQuc3RyaW5nSWR9XSAke2ZpbGVOYW1lfSB3YXMgc3VjY2Vzc2Z1bGx5IGRvd25sb2FkZWRgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRvd25sb2FkVmlhQW5jaG9yKHJlc3BvbnNlIGFzIEJsb2IsIGZpbGVOYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmRvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5wcm9ncmVzcyA9IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQuZG93bmxvYWRlZC5wdXNoKGZpbGVOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBEb3dubG9hZGluZyBmaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHtmaWxlTmFtZX0gaGFzIGZhaWxlZCFgLCBlcnJvcik7XG4gICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0JhcihmaWxlTmFtZSArICcgJyArIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIuZG93bmxvYWRGYWlsJykpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5kb3dubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5wcm9ncmVzcyA9IDA7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBkb3dubG9hZFZpYUFuY2hvcihibG9iOiBCbG9iLCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XG4gICAgICAgIGEuc2V0QXR0cmlidXRlKCdzdHlsZScsICdkaXNwbGF5OiBub25lJyk7XG4gICAgICAgIGJsb2IgPSBuZXcgQmxvYihbYmxvYl0sIHt0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ30pO1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgYS5ocmVmID0gdXJsO1xuICAgICAgICBhLmRvd25sb2FkID0gZmlsZU5hbWU7XG4gICAgICAgIGEuY2xpY2soKTtcbiAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlRmlsZShmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhRmllbGQudmFsdWU/Lm5hbWVzUGF0aHM/LmZpbmQobmFtZVBhdGggPT4gbmFtZVBhdGgubmFtZSA9PT0gZmlsZU5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdGaWxlIGNhbm5vdCBiZSBkZWxldGVkLiBObyB0YXNrIGlzIHNldCB0byB0aGUgZmllbGQuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVxdWVzdEJvZHk6IEZpbGVGaWVsZFJlcXVlc3QgPSB7XG4gICAgICAgICAgICBwYXJlbnRUYXNrSWQ6IHRoaXMucmVzb2x2ZVBhcmVudFRhc2tJZCgpLFxuICAgICAgICAgICAgZmllbGRJZDogdGhpcy5kYXRhRmllbGQuc3RyaW5nSWQsXG4gICAgICAgICAgICBmaWxlTmFtZVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3Rhc2tSZXNvdXJjZVNlcnZpY2UuZGVsZXRlRmlsZSh0aGlzLnRhc2tJZCwgcmVxdWVzdEJvZHkpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChyZXNwb25zZTogRXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoYW5nZWRGaWVsZHNNYXA6IENoYW5nZWRGaWVsZHNNYXAgPSB0aGlzLl9ldmVudFNlcnZpY2UucGFyc2VDaGFuZ2VkRmllbGRzRnJvbU91dGNvbWVUcmVlKHJlc3BvbnNlLm91dGNvbWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLmVtaXRDaGFuZ2VkRmllbGRzKGNoYW5nZWRGaWVsZHNNYXApO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXMuZmlsdGVyKHVwbG9hZGVkRmlsZSA9PiB1cGxvYWRlZEZpbGUgIT09IGZpbGVOYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhRmllbGQudmFsdWUubmFtZXNQYXRocykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lc1BhdGhzID0gdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZXNQYXRocy5maWx0ZXIobmFtZVBhdGggPT4gbmFtZVBhdGgubmFtZSAhPT0gZmlsZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sUmVmLnNldFZhbHVlKHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMubWFwKG5hbWVQYXRoID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lUGF0aFsnbmFtZSddO1xuICAgICAgICAgICAgICAgICAgICB9KS5qb2luKCcvJykpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC51cGRhdGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQuZG93bmxvYWRlZCA9IHRoaXMuZGF0YUZpZWxkLmRvd25sb2FkZWQuZmlsdGVyKG9uZSA9PiBvbmUgIT09IGZpbGVOYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZGVidWcoYEZpbGUgWyR7dGhpcy5kYXRhRmllbGQuc3RyaW5nSWR9XSAke2ZpbGVOYW1lfSB3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWRgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sUmVmLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBEZWxldGluZyBmaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHtmaWxlTmFtZX0gaGFzIGZhaWxlZCFgLCByZXNwb25zZS5lcnJvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIoXG4gICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lICsgJyAnICsgdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5zbmFja0Jhci5maWxlRGVsZXRlRmFpbGVkJylcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGRlZmF1bHRTdGF0ZSgpOiBGaWxlc1N0YXRlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb2dyZXNzOiAwLFxuICAgICAgICAgICAgY29tcGxldGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGVycm9yOiBmYWxzZSxcbiAgICAgICAgICAgIHVwbG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICBkb3dubG9hZGluZzogZmFsc2VcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3QgZGlzcGxheSBuYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3REaXNwbGF5TmFtZSgpOiBzdHJpbmcge1xuICAgICAgICBpZiAoISF0aGlzLmRhdGFGaWVsZCAmJiAhIXRoaXMuZGF0YUZpZWxkLnBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhRmllbGQucGxhY2Vob2xkZXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuZmlsZS5ub0ZpbGUnKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcGFyc2VSZXNwb25zZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YUZpZWxkLnZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoISF0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lc1BhdGhzICYmIHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lc1BhdGhzLmZvckVhY2gobmFtZVBhdGggPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMucHVzaChuYW1lUGF0aC5uYW1lKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZXNQYXRocyA9IG5ldyBBcnJheTxGaWxlRmllbGRWYWx1ZT4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMubWFwKG5hbWVQYXRoID0+IG5hbWVQYXRoLm5hbWUpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
296
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZmlsZS1saXN0LWRlZmF1bHQtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9kYXRhLWZpZWxkcy9maWxlLWxpc3QtZmllbGQvZmlsZS1saXN0LWRlZmF1bHQtZmllbGQvYWJzdHJhY3QtZmlsZS1saXN0LWRlZmF1bHQtZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBQ1QsTUFBTSxFQUdOLFFBQVEsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsc0JBQXNCLEVBQXNCLE1BQU0scURBQXFELENBQUM7QUFDaEgsT0FBTyxFQUFnQix1QkFBdUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBUWpGLE9BQU8sRUFBQyxZQUFZLEVBQW1CLE1BQU0sOENBQThDLENBQUM7QUFFNUYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUdwQyxPQUFPLEVBQUMsaUNBQWlDLEVBQUMsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7OztBQWVyRyxNQUFNLE9BQWdCLHFDQUFzQyxTQUFRLGlDQUFnRDtJQWNoSCxZQUFnQyxvQkFBeUMsRUFDekMsSUFBbUIsRUFDbkIsU0FBMEIsRUFDMUIsVUFBNEIsRUFDNUIsYUFBMkIsRUFDTyxtQkFBdUQ7UUFDckgsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFONUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUN6QyxTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25CLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzFCLGVBQVUsR0FBVixVQUFVLENB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YUFDTjtpQkFBTTtnQkFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsSUFBSSxLQUFLLEVBQWtCLENBQUM7YUFDakU7WUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkY7SUFDTCxDQUFDOzttSUE1U2lCLHFDQUFxQyw2S0FtQmIsc0JBQXNCO3VIQW5COUMscUNBQXFDLG1HQUY3QyxFQUFFOzRGQUVNLHFDQUFxQztrQkFKMUQsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsc0NBQXNDO29CQUNoRCxRQUFRLEVBQUUsRUFBRTtpQkFDZjs7MEJBb0IwQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgSW5qZWN0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge0RBVEFfRklFTERfUE9SVEFMX0RBVEEsIERhdGFGaWVsZFBvcnRhbERhdGF9IGZyb20gXCIuLi8uLi9tb2RlbHMvZGF0YS1maWVsZC1wb3J0YWwtZGF0YS1pbmplY3Rpb24tdG9rZW5cIjtcbmltcG9ydCB7RmlsZUxpc3RGaWVsZCwgRmlsZUxpc3RGaWVsZFZhbGlkYXRpb259IGZyb20gXCIuLi9tb2RlbHMvZmlsZS1saXN0LWZpZWxkXCI7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7VGFza1Jlc291cmNlU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3Jlc291cmNlcy9lbmdpbmUtZW5kcG9pbnQvdGFzay1yZXNvdXJjZS5zZXJ2aWNlXCI7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9sb2dnZXIvc2VydmljZXMvbG9nZ2VyLnNlcnZpY2VcIjtcbmltcG9ydCB7U25hY2tCYXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc25hY2stYmFyL3NlcnZpY2VzL3NuYWNrLWJhci5zZXJ2aWNlXCI7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL2V2ZW50L3NlcnZpY2VzL2V2ZW50LnNlcnZpY2VcIjtcbmltcG9ydCB7RXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlfSBmcm9tIFwiLi4vLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9tZXNzYWdlLXJlc291cmNlXCI7XG5pbXBvcnQge1Byb2dyZXNzVHlwZSwgUHJvdmlkZXJQcm9ncmVzc30gZnJvbSBcIi4uLy4uLy4uL3Jlc291cmNlcy9yZXNvdXJjZS1wcm92aWRlci5zZXJ2aWNlXCI7XG5pbXBvcnQge0NoYW5nZWRGaWVsZHNNYXB9IGZyb20gXCIuLi8uLi8uLi9ldmVudC9zZXJ2aWNlcy9pbnRlcmZhY2VzL2NoYW5nZWQtZmllbGRzLW1hcFwiO1xuaW1wb3J0IHtIdHRwUGFyYW1zfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7dGFrZX0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQge0ZpbGVGaWVsZFZhbHVlfSBmcm9tIFwiLi4vLi4vZmlsZS1maWVsZC9tb2RlbHMvZmlsZS1maWVsZC12YWx1ZVwiO1xuaW1wb3J0IHtGaWxlRmllbGRSZXF1ZXN0fSBmcm9tIFwiLi4vLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9maWxlLWZpZWxkLXJlcXVlc3QtYm9keVwiO1xuaW1wb3J0IHtBYnN0cmFjdEZpbGVGaWVsZERlZmF1bHRDb21wb25lbnR9IGZyb20gJy4uLy4uL21vZGVscy9hYnN0cmFjdC1maWxlLWZpZWxkLWRlZmF1bHQtY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBGaWxlc1N0YXRlIHtcbiAgICBwcm9ncmVzczogbnVtYmVyO1xuICAgIHVwbG9hZGluZzogYm9vbGVhbjtcbiAgICBkb3dubG9hZGluZzogYm9vbGVhbjtcbiAgICBjb21wbGV0ZWQ6IGJvb2xlYW47XG4gICAgZXJyb3I6IGJvb2xlYW47XG59XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduY2MtYWJzdHJhY3QtZmlsZS1saXN0LWRlZmF1bHQtZmllbGQnLFxuICAgIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEZpbGVMaXN0RGVmYXVsdEZpZWxkQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RGaWxlRmllbGREZWZhdWx0Q29tcG9uZW50PEZpbGVMaXN0RmllbGQ+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgcHVibGljIHVwbG9hZGVkRmlsZXM6IEFycmF5PHN0cmluZz47XG4gICAgcHVibGljIHN0YXRlOiBGaWxlc1N0YXRlO1xuICAgIHByaXZhdGUgdmFsdWVDaGFuZ2UkOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKipcbiAgICAgKiBWYWx1ZXMgZnJvbSBmaWxlIGxpc3QgZmllbGQgdmFsaWRhdGlvbiAoZWcuIG1heEZpbGVzIDUpXG4gICAgICogbWF4RmlsZXNOdW1iZXIgLSBtYXhpbXVtIHVwbG9hZGFibGUgZmlsZXNcbiAgICAgKiBtYXhGaWxlc01lc3NhZ2UgLSBlcnJvciBtZXNzYWdlIGlmIG51bWJlciBvZiBmaWxlcyBpcyBleGNlZWRlZFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBtYXhGaWxlc051bWJlcjogbnVtYmVyO1xuICAgIHByb3RlY3RlZCBtYXhGaWxlc01lc3NhZ2U6IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX3Rhc2tSZXNvdXJjZVNlcnZpY2U6IFRhc2tSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfbG9nOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3NuYWNrYmFyOiBTbmFja0JhclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2V2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERBVEFfRklFTERfUE9SVEFMX0RBVEEpIGRhdGFGaWVsZFBvcnRhbERhdGE6IERhdGFGaWVsZFBvcnRhbERhdGE8RmlsZUxpc3RGaWVsZD4pIHtcbiAgICAgICAgc3VwZXIoX2xvZywgX3NuYWNrYmFyLCBfdHJhbnNsYXRlLCBkYXRhRmllbGRQb3J0YWxEYXRhKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuZGVmYXVsdFN0YXRlO1xuICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgICAgICB0aGlzLm1heEZpbGVzTnVtYmVyID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICAgICAgICB0aGlzLnRhc2tJZCA9IGRhdGFGaWVsZFBvcnRhbERhdGEuYWRkaXRpb25hbEZpZWxkUHJvcGVydGllcy50YXNrSWQgYXMgc3RyaW5nO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlJCA9IHRoaXMuZGF0YUZpZWxkLnZhbHVlQ2hhbmdlcygpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBhcnNlUmVzcG9uc2UoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLmRhdGFGaWVsZC52YWxpZGF0aW9ucyAmJiB0aGlzLmRhdGFGaWVsZC52YWxpZGF0aW9ucy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IHRoaXMuZGF0YUZpZWxkLnZhbGlkYXRpb25zLmZpbmQodmFsaWRhdGlvbiA9PlxuICAgICAgICAgICAgICAgIHZhbGlkYXRpb24udmFsaWRhdGlvblJ1bGUuaW5jbHVkZXMoRmlsZUxpc3RGaWVsZFZhbGlkYXRpb24uTUFYX0ZJTEVTKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICh2YWwgJiYgdmFsLnZhbGlkYXRpb25SdWxlLnNwbGl0KCcgJykubGVuZ3RoID09PSAyICYmICFpc05hTihwYXJzZUludCh2YWwudmFsaWRhdGlvblJ1bGUuc3BsaXQoJyAnKVsxXSwgMTApKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubWF4RmlsZXNOdW1iZXIgPSBwYXJzZUludCh2YWwudmFsaWRhdGlvblJ1bGUuc3BsaXQoJyAnKVsxXSwgMTApO1xuICAgICAgICAgICAgICAgIHRoaXMubWF4RmlsZXNNZXNzYWdlID0gdmFsLnZhbGlkYXRpb25NZXNzYWdlICYmIHZhbC52YWxpZGF0aW9uTWVzc2FnZSAhPT0gJycgPyB2YWwudmFsaWRhdGlvbk1lc3NhZ2UgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGZpbGUgcGlja2VyIGFuZCBpbWFnZSBlbGVtZW50cyB0byBbRmlsZUZpZWxkU2VydmljZV17QGxpbmsgRmlsZUZpZWxkU2VydmljZX0uXG4gICAgICpcbiAgICAgKiBJbml0aWFsaXplIGZpbGUgaW1hZ2UuXG4gICAgICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5maWxlVXBsb2FkRWwpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQub25jaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWQoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hvb3NlRmlsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUudXBsb2FkaW5nIHx8IHRoaXMuZm9ybUNvbnRyb2xSZWYuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbCBhZnRlciBjbGljayBvbiBmaWxlIGZpZWxkLlxuICAgICAqXG4gICAgICogSWYgZmlsZSBmaWVsZCBoYXMgbm8gZmlsZSB1cGxvYWRlZFxuICAgICAqIFtGaWxlc1VwbG9hZENvbXBvbmVudF17QGxpbmsgQWJzdHJhY3RGaWxlc1VwbG9hZENvbXBvbmVudH0gdmlhIFtTaWRlTWVudV17QGxpbmsgU2lkZU1lbnVTZXJ2aWNlfSBvcGVucy5cbiAgICAgKlxuICAgICAqIE90aGVyd2lzZSBvcGVucyBhIGZpbGUgcGlja2VyIGZyb20gd2hpY2ggdGhlIHVzZXIgY2FuIHNlbGVjdCBmaWxlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkKCkge1xuICAgICAgICBpZiAoIXRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQuZmlsZXMgfHwgdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC5maWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMudGFza0lkKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0ZpbGUgY2Fubm90IGJlIHVwbG9hZGVkLiBObyB0YXNrIGlzIHNldCB0byB0aGUgZmllbGQuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQuZmlsZXMubGVuZ3RoICsgdGhpcy51cGxvYWRlZEZpbGVzLmxlbmd0aCA+IHRoaXMubWF4RmlsZXNOdW1iZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMubWF4RmlsZXNNZXNzYWdlID8gdGhpcy5tYXhGaWxlc01lc3NhZ2UgOlxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIubWF4RmlsZXNFeGNlZWRlZCcpICsgdGhpcy5tYXhGaWxlc051bWJlclxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmaWxlc1RvVXBsb2FkID0gQXJyYXkuZnJvbSh0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LmZpbGVzKTtcbiAgICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICAgIGZpbGVzVG9VcGxvYWQuZm9yRWFjaChpdGVtID0+IHN1bSArPSBpdGVtLnNpemUpO1xuICAgICAgICBpZiAodGhpcy5kYXRhRmllbGQubWF4VXBsb2FkU2l6ZUluQnl0ZXMgJiZcbiAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLm1heFVwbG9hZFNpemVJbkJ5dGVzIDwgc3VtKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0ZpbGVzIGNhbm5vdCBiZSB1cGxvYWRlZC4gTWF4aW11bSBzaXplIG9mIGZpbGVzIGV4Y2VlZGVkLicpO1xuICAgICAgICAgICAgdGhpcy5yZXNvbHZlTWF4U2l6ZU1lc3NhZ2UoKTtcbiAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRhdGFGaWVsZC52YWx1ZT8ubmFtZXNQYXRocyAmJiB0aGlzLmRhdGFGaWVsZC52YWx1ZT8ubmFtZXNQYXRocy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMuZm9yRWFjaChuYW1lUGF0aCA9PiB7XG4gICAgICAgICAgICAgICAgZmlsZXNUb1VwbG9hZCA9IGZpbGVzVG9VcGxvYWQuZmlsdGVyKGZpbGVUb1VwbG9hZCA9PiBmaWxlVG9VcGxvYWQubmFtZSAhPT0gbmFtZVBhdGgubmFtZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChmaWxlc1RvVXBsb2FkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignVXNlciBjaG9zZSB0aGUgc2FtZSBmaWxlcyB0aGF0IGFyZSBhbHJlYWR5IHVwbG9hZGVkLiBVcGxvYWRpbmcgc2tpcHBlZCcpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIud29udFVwbG9hZFNhbWVGaWxlcycpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmNoZWNrQWxsb3dlZFR5cGVzKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLmRlZmF1bHRTdGF0ZTtcbiAgICAgICAgdGhpcy5zdGF0ZS51cGxvYWRpbmcgPSB0cnVlO1xuICAgICAgICBjb25zdCBmaWxlRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcblxuICAgICAgICBmaWxlc1RvVXBsb2FkLmZvckVhY2goZmlsZVRvVXBsb2FkID0+IHtcbiAgICAgICAgICAgIGZpbGVGb3JtRGF0YS5hcHBlbmQoJ2ZpbGVzJywgZmlsZVRvVXBsb2FkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RCb2R5OiBGaWxlRmllbGRSZXF1ZXN0ID0ge1xuICAgICAgICAgICAgcGFyZW50VGFza0lkOiB0aGlzLnJlc29sdmVQYXJlbnRUYXNrSWQoKSxcbiAgICAgICAgICAgIGZpZWxkSWQ6IHRoaXMuZGF0YUZpZWxkLnN0cmluZ0lkLFxuICAgICAgICB9XG4gICAgICAgIGZpbGVGb3JtRGF0YS5hcHBlbmQoJ2RhdGEnLCBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkocmVxdWVzdEJvZHkpXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9qc29uJ30pKTtcbiAgICAgICAgdGhpcy5fdGFza1Jlc291cmNlU2VydmljZS51cGxvYWRGaWxlKHRoaXMudGFza0lkLCBmaWxlRm9ybURhdGEsIHRydWUpLnN1YnNjcmliZSgocmVzcG9uc2U6IEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICgocmVzcG9uc2UgYXMgUHJvdmlkZXJQcm9ncmVzcykudHlwZSAmJiAocmVzcG9uc2UgYXMgUHJvdmlkZXJQcm9ncmVzcykudHlwZSA9PT0gUHJvZ3Jlc3NUeXBlLlVQTE9BRCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnByb2dyZXNzID0gKHJlc3BvbnNlIGFzIFByb3ZpZGVyUHJvZ3Jlc3MpLnByb2dyZXNzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuY29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS51cGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5wcm9ncmVzcyA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5kZWJ1ZyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGBGaWxlcyBbJHt0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZH1dIHdlcmUgc3VjY2Vzc2Z1bGx5IHVwbG9hZGVkYFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBGaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHt0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LmZpbGVzLml0ZW0oMCl9IHVwbG9hZGluZyBoYXMgZmFpbGVkIWAsIHJlc3BvbnNlLmVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQocmVzcG9uc2UuZXJyb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5zbmFja0Jhci5maWxlVXBsb2FkRmFpbGVkJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhbmdlZEZpZWxkc01hcDogQ2hhbmdlZEZpZWxkc01hcCA9IHRoaXMuX2V2ZW50U2VydmljZS5wYXJzZUNoYW5nZWRGaWVsZHNGcm9tT3V0Y29tZVRyZWUocmVzcG9uc2Uub3V0Y29tZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5lbWl0Q2hhbmdlZEZpZWxkcyhjaGFuZ2VkRmllbGRzTWFwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzVG9VcGxvYWQuZm9yRWFjaChmaWxlVG9VcGxvYWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKGZpbGVUb1VwbG9hZC5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lc1BhdGhzLnB1c2goe25hbWU6IGZpbGVUb1VwbG9hZC5uYW1lfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbFJlZi5zZXRWYWx1ZSh0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lc1BhdGhzLm1hcChuYW1lUGF0aCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lUGF0aFsnbmFtZSddO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmpvaW4oJy8nKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC50b3VjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuY29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnVwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUucHJvZ3Jlc3MgPSAwO1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcj8uZXJyb3I/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoZXJyb3IuZXJyb3IubWVzc2FnZSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIuZmlsZVVwbG9hZEZhaWxlZCcpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgRmlsZSBbJHt0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZH1dICR7dGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC5maWxlcy5pdGVtKDApfSB1cGxvYWRpbmcgaGFzIGZhaWxlZCFgLCBlcnJvclxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudG91Y2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBkb3dubG9hZChmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhRmllbGQudmFsdWU/Lm5hbWVzUGF0aHM/LmZpbmQobmFtZVBhdGggPT4gbmFtZVBhdGgubmFtZSA9PT0gZmlsZU5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdGaWxlIGNhbm5vdCBiZSBkb3dubG9hZGVkLiBObyB0YXNrIGlzIHNldCB0byB0aGUgZmllbGQuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0YXRlID0gdGhpcy5kZWZhdWx0U3RhdGU7XG4gICAgICAgIHRoaXMuc3RhdGUuZG93bmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldChcImZpZWxkSWRcIiwgdGhpcy5kYXRhRmllbGQuc3RyaW5nSWQpO1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KFwiZmlsZU5hbWVcIiwgZmlsZU5hbWUpO1xuICAgICAgICB0aGlzLl90YXNrUmVzb3VyY2VTZXJ2aWNlLmRvd25sb2FkRmlsZSh0aGlzLnJlc29sdmVQYXJlbnRUYXNrSWQoKSwgcGFyYW1zKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgaWYgKChyZXNwb25zZSBhcyBQcm92aWRlclByb2dyZXNzKS50eXBlICYmIChyZXNwb25zZSBhcyBQcm92aWRlclByb2dyZXNzKS50eXBlID09PSBQcm9ncmVzc1R5cGUuRE9XTkxPQUQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnByb2dyZXNzID0gKHJlc3BvbnNlIGFzIFByb3ZpZGVyUHJvZ3Jlc3MpLnByb2dyZXNzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZGVidWcoYEZpbGUgWyR7dGhpcy5kYXRhRmllbGQuc3RyaW5nSWR9XSAke2ZpbGVOYW1lfSB3YXMgc3VjY2Vzc2Z1bGx5IGRvd25sb2FkZWRgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRvd25sb2FkVmlhQW5jaG9yKHJlc3BvbnNlIGFzIEJsb2IsIGZpbGVOYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmRvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5wcm9ncmVzcyA9IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQuZG93bmxvYWRlZC5wdXNoKGZpbGVOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBEb3dubG9hZGluZyBmaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHtmaWxlTmFtZX0gaGFzIGZhaWxlZCFgLCBlcnJvcik7XG4gICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0JhcihmaWxlTmFtZSArICcgJyArIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIuZG93bmxvYWRGYWlsJykpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5kb3dubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5wcm9ncmVzcyA9IDA7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBkb3dubG9hZFZpYUFuY2hvcihibG9iOiBCbG9iLCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XG4gICAgICAgIGEuc2V0QXR0cmlidXRlKCdzdHlsZScsICdkaXNwbGF5OiBub25lJyk7XG4gICAgICAgIGJsb2IgPSBuZXcgQmxvYihbYmxvYl0sIHt0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ30pO1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgYS5ocmVmID0gdXJsO1xuICAgICAgICBhLmRvd25sb2FkID0gZmlsZU5hbWU7XG4gICAgICAgIGEuY2xpY2soKTtcbiAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlRmlsZShmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhRmllbGQudmFsdWU/Lm5hbWVzUGF0aHM/LmZpbmQobmFtZVBhdGggPT4gbmFtZVBhdGgubmFtZSA9PT0gZmlsZU5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdGaWxlIGNhbm5vdCBiZSBkZWxldGVkLiBObyB0YXNrIGlzIHNldCB0byB0aGUgZmllbGQuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVxdWVzdEJvZHk6IEZpbGVGaWVsZFJlcXVlc3QgPSB7XG4gICAgICAgICAgICBwYXJlbnRUYXNrSWQ6IHRoaXMucmVzb2x2ZVBhcmVudFRhc2tJZCgpLFxuICAgICAgICAgICAgZmllbGRJZDogdGhpcy5kYXRhRmllbGQuc3RyaW5nSWQsXG4gICAgICAgICAgICBmaWxlTmFtZVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3Rhc2tSZXNvdXJjZVNlcnZpY2UuZGVsZXRlRmlsZSh0aGlzLnRhc2tJZCwgcmVxdWVzdEJvZHkpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChyZXNwb25zZTogRXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoYW5nZWRGaWVsZHNNYXA6IENoYW5nZWRGaWVsZHNNYXAgPSB0aGlzLl9ldmVudFNlcnZpY2UucGFyc2VDaGFuZ2VkRmllbGRzRnJvbU91dGNvbWVUcmVlKHJlc3BvbnNlLm91dGNvbWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLmVtaXRDaGFuZ2VkRmllbGRzKGNoYW5nZWRGaWVsZHNNYXApO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSB0aGlzLnVwbG9hZGVkRmlsZXMuZmlsdGVyKHVwbG9hZGVkRmlsZSA9PiB1cGxvYWRlZEZpbGUgIT09IGZpbGVOYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhRmllbGQudmFsdWUubmFtZXNQYXRocykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lc1BhdGhzID0gdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZXNQYXRocy5maWx0ZXIobmFtZVBhdGggPT4gbmFtZVBhdGgubmFtZSAhPT0gZmlsZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sUmVmLnNldFZhbHVlKHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMubWFwKG5hbWVQYXRoID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lUGF0aFsnbmFtZSddO1xuICAgICAgICAgICAgICAgICAgICB9KS5qb2luKCcvJykpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC51cGRhdGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQuZG93bmxvYWRlZCA9IHRoaXMuZGF0YUZpZWxkLmRvd25sb2FkZWQuZmlsdGVyKG9uZSA9PiBvbmUgIT09IGZpbGVOYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZGVidWcoYEZpbGUgWyR7dGhpcy5kYXRhRmllbGQuc3RyaW5nSWR9XSAke2ZpbGVOYW1lfSB3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWRgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sUmVmLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBEZWxldGluZyBmaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHtmaWxlTmFtZX0gaGFzIGZhaWxlZCFgLCByZXNwb25zZS5lcnJvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIoXG4gICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lICsgJyAnICsgdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5zbmFja0Jhci5maWxlRGVsZXRlRmFpbGVkJylcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGRlZmF1bHRTdGF0ZSgpOiBGaWxlc1N0YXRlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb2dyZXNzOiAwLFxuICAgICAgICAgICAgY29tcGxldGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGVycm9yOiBmYWxzZSxcbiAgICAgICAgICAgIHVwbG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICBkb3dubG9hZGluZzogZmFsc2VcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3QgZGlzcGxheSBuYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3REaXNwbGF5TmFtZSgpOiBzdHJpbmcge1xuICAgICAgICBpZiAoISF0aGlzLmRhdGFGaWVsZCAmJiAhIXRoaXMuZGF0YUZpZWxkLnBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhRmllbGQucGxhY2Vob2xkZXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuZmlsZS5ub0ZpbGUnKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcGFyc2VSZXNwb25zZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YUZpZWxkLnZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoISF0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lc1BhdGhzICYmIHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lc1BhdGhzLmZvckVhY2gobmFtZVBhdGggPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMucHVzaChuYW1lUGF0aC5uYW1lKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZXNQYXRocyA9IG5ldyBBcnJheTxGaWxlRmllbGRWYWx1ZT4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMubWFwKG5hbWVQYXRoID0+IG5hbWVQYXRoLm5hbWUpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -7,7 +7,6 @@ import { NAE_TASK_PANEL_DISABLE_BUTTON_FUNCTIONS } from './models/disable-functi
|
|
|
7
7
|
import { AbstractPanelWithImmediateDataComponent } from '../abstract/panel-with-immediate-data';
|
|
8
8
|
import { NAE_TASK_FORCE_OPEN } from '../../view/task-view/models/injection-token-task-force-open';
|
|
9
9
|
import { NAE_TAB_DATA } from '../../tabs/tab-data-injection-token/tab-data-injection-token';
|
|
10
|
-
import { AfterAction } from '../../utility/call-chain/after-action';
|
|
11
10
|
import * as i0 from "@angular/core";
|
|
12
11
|
import * as i1 from "../../task-content/services/task-content.service";
|
|
13
12
|
import * as i2 from "../../logger/services/logger.service";
|
|
@@ -28,9 +27,10 @@ import * as i16 from "@ngx-translate/core";
|
|
|
28
27
|
import * as i17 from "@angular/common";
|
|
29
28
|
import * as i18 from "../../changed-fields/services/changed-fields.service";
|
|
30
29
|
import * as i19 from "../../authorization/permission/permission.service";
|
|
31
|
-
import * as i20 from "../../
|
|
30
|
+
import * as i20 from "../../user/services/user-comparator.service";
|
|
31
|
+
import * as i21 from "../../header/services/overflow.service";
|
|
32
32
|
export class AbstractTaskPanelComponent extends AbstractPanelWithImmediateDataComponent {
|
|
33
|
-
constructor(_taskContentService, _log, _taskViewService, _paperView, _taskEventService, _assignTaskService, _delegateTaskService, _cancelTaskService, _finishTaskService, _taskState, _taskDataService, _assignPolicyService, _finishPolicyService, _callChain, _taskOperations, _disableFunctions, _translate, _currencyPipe, _changedFieldsService, _permissionService, overflowService, _taskForceOpen, injectedTabData) {
|
|
33
|
+
constructor(_taskContentService, _log, _taskViewService, _paperView, _taskEventService, _assignTaskService, _delegateTaskService, _cancelTaskService, _finishTaskService, _taskState, _taskDataService, _assignPolicyService, _finishPolicyService, _callChain, _taskOperations, _disableFunctions, _translate, _currencyPipe, _changedFieldsService, _permissionService, _userComparator, overflowService, _taskForceOpen, injectedTabData) {
|
|
34
34
|
super(_translate, _currencyPipe, overflowService);
|
|
35
35
|
this._taskContentService = _taskContentService;
|
|
36
36
|
this._log = _log;
|
|
@@ -52,6 +52,7 @@ export class AbstractTaskPanelComponent extends AbstractPanelWithImmediateDataCo
|
|
|
52
52
|
this._currencyPipe = _currencyPipe;
|
|
53
53
|
this._changedFieldsService = _changedFieldsService;
|
|
54
54
|
this._permissionService = _permissionService;
|
|
55
|
+
this._userComparator = _userComparator;
|
|
55
56
|
this._taskForceOpen = _taskForceOpen;
|
|
56
57
|
this._forceLoadDataOnOpen = false;
|
|
57
58
|
this.responsiveBody = true;
|
|
@@ -122,7 +123,12 @@ export class AbstractTaskPanelComponent extends AbstractPanelWithImmediateDataCo
|
|
|
122
123
|
if (injectedTabData !== null) {
|
|
123
124
|
this._unsub = injectedTabData.tabSelected$.pipe(filter(bool => bool && this.isExpanded())).subscribe(() => {
|
|
124
125
|
if (this._canReload) {
|
|
125
|
-
this._taskDataService.initializeTaskDataFields(
|
|
126
|
+
this._taskDataService.initializeTaskDataFields(this._callChain.create(() => {
|
|
127
|
+
const taskShouldBeBlocked = !this._taskContentService.task
|
|
128
|
+
|| this._taskContentService.task.user === undefined
|
|
129
|
+
|| !this._userComparator.compareUsers(this._taskContentService.task.user);
|
|
130
|
+
this._taskContentService.blockFields(taskShouldBeBlocked);
|
|
131
|
+
}), true);
|
|
126
132
|
}
|
|
127
133
|
else {
|
|
128
134
|
this._canReload = true;
|
|
@@ -341,7 +347,7 @@ export class AbstractTaskPanelComponent extends AbstractPanelWithImmediateDataCo
|
|
|
341
347
|
return this.panelRef?.expanded && !this._taskContentService?.isExpanding;
|
|
342
348
|
}
|
|
343
349
|
}
|
|
344
|
-
AbstractTaskPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTaskPanelComponent, deps: [{ token: i1.TaskContentService }, { token: i2.LoggerService }, { token: i3.TaskViewService }, { token: i4.PaperViewService }, { token: i5.TaskEventService }, { token: i6.AssignTaskService }, { token: i7.DelegateTaskService }, { token: i8.CancelTaskService }, { token: i9.FinishTaskService }, { token: i10.TaskRequestStateService }, { token: i11.TaskDataService }, { token: i12.AssignPolicyService }, { token: i13.FinishPolicyService }, { token: i14.CallChainService }, { token: i15.SubjectTaskOperations }, { token: NAE_TASK_PANEL_DISABLE_BUTTON_FUNCTIONS, optional: true }, { token: i16.TranslateService }, { token: i17.CurrencyPipe }, { token: i18.ChangedFieldsService }, { token: i19.PermissionService }, { token: i20.OverflowService, optional: true }, { token: NAE_TASK_FORCE_OPEN, optional: true }, { token: NAE_TAB_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
350
|
+
AbstractTaskPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTaskPanelComponent, deps: [{ token: i1.TaskContentService }, { token: i2.LoggerService }, { token: i3.TaskViewService }, { token: i4.PaperViewService }, { token: i5.TaskEventService }, { token: i6.AssignTaskService }, { token: i7.DelegateTaskService }, { token: i8.CancelTaskService }, { token: i9.FinishTaskService }, { token: i10.TaskRequestStateService }, { token: i11.TaskDataService }, { token: i12.AssignPolicyService }, { token: i13.FinishPolicyService }, { token: i14.CallChainService }, { token: i15.SubjectTaskOperations }, { token: NAE_TASK_PANEL_DISABLE_BUTTON_FUNCTIONS, optional: true }, { token: i16.TranslateService }, { token: i17.CurrencyPipe }, { token: i18.ChangedFieldsService }, { token: i19.PermissionService }, { token: i20.UserComparatorService }, { token: i21.OverflowService, optional: true }, { token: NAE_TASK_FORCE_OPEN, optional: true }, { token: NAE_TAB_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
345
351
|
AbstractTaskPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AbstractTaskPanelComponent, selector: "ncc-abstract-legal-notice", inputs: { taskListVirtualScroll: "taskListVirtualScroll", panelContentComponent: "panelContentComponent", selectedHeaders$: "selectedHeaders$", first: "first", last: "last", responsiveBody: "responsiveBody", preventCollapse: "preventCollapse", hidePanelHeader: "hidePanelHeader", hideActionRow: "hideActionRow", actionButtonTemplates: "actionButtonTemplates", actionRowJustifyContent: "actionRowJustifyContent", showMoreMenu: "showMoreMenu", forceLoadDataOnOpen: "forceLoadDataOnOpen", textEllipsis: "textEllipsis", taskPanelData: "taskPanelData" }, outputs: { taskEvent: "taskEvent", panelRefOutput: "panelRefOutput" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
346
352
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AbstractTaskPanelComponent, decorators: [{
|
|
347
353
|
type: Component,
|
|
@@ -354,7 +360,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
354
360
|
}, {
|
|
355
361
|
type: Inject,
|
|
356
362
|
args: [NAE_TASK_PANEL_DISABLE_BUTTON_FUNCTIONS]
|
|
357
|
-
}] }, { type: i16.TranslateService }, { type: i17.CurrencyPipe }, { type: i18.ChangedFieldsService }, { type: i19.PermissionService }, { type: i20.OverflowService, decorators: [{
|
|
363
|
+
}] }, { type: i16.TranslateService }, { type: i17.CurrencyPipe }, { type: i18.ChangedFieldsService }, { type: i19.PermissionService }, { type: i20.UserComparatorService }, { type: i21.OverflowService, decorators: [{
|
|
358
364
|
type: Optional
|
|
359
365
|
}] }, { type: undefined, decorators: [{
|
|
360
366
|
type: Optional
|
|
@@ -401,4 +407,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
401
407
|
}], taskPanelData: [{
|
|
402
408
|
type: Input
|
|
403
409
|
}] } });
|
|
404
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtdGFzay1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3BhbmVsL3Rhc2stcGFuZWwvYWJzdHJhY3QtdGFzay1wYW5lbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUdULE1BQU0sZUFBZSxDQUFDO0FBUXZCLE9BQU8sRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQU9sRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFPdEUsT0FBTyxFQUF3Qix1Q0FBdUMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRzFHLE9BQU8sRUFBQyx1Q0FBdUMsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBUzlGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDZEQUE2RCxDQUFDO0FBR2hHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw4REFBOEQsQ0FBQztBQUUxRixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUNBQXVDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNbEUsTUFBTSxPQUFnQiwwQkFBMkIsU0FBUSx1Q0FBdUM7SUFrRTVGLFlBQWdDLG1CQUF1QyxFQUN2QyxJQUFtQixFQUNuQixnQkFBaUMsRUFDakMsVUFBNEIsRUFDNUIsaUJBQW1DLEVBQ25DLGtCQUFxQyxFQUNyQyxvQkFBeUMsRUFDekMsa0JBQXFDLEVBQ3JDLGtCQUFx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O29CQUNyQyxRQUFRLEVBQUUsRUFBRTtpQkFDZjs7MEJBa0YwQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLHVDQUF1Qzs7MEJBSzFELFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsbUJBQW1COzswQkFDdEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxZQUFZOzRDQWhGN0MscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBQ1UsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQXdCRixtQkFBbUI7c0JBRHRCLEtBQUs7Z0JBTUcsWUFBWTtzQkFBcEIsS0FBSztnQkFJSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBMklJLGFBQWE7c0JBRHZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVHlwZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0RXhwYW5zaW9uUGFuZWx9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XG5pbXBvcnQge0NvbXBvbmVudFBvcnRhbH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1Rhc2tDb250ZW50U2VydmljZX0gZnJvbSAnLi4vLi4vdGFzay1jb250ZW50L3NlcnZpY2VzL3Rhc2stY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7VGFza1BhbmVsRGF0YX0gZnJvbSAnLi4vdGFzay1wYW5lbC1saXN0L3Rhc2stcGFuZWwtZGF0YS90YXNrLXBhbmVsLWRhdGEnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtUYXNrVmlld1NlcnZpY2V9IGZyb20gJy4uLy4uL3ZpZXcvdGFzay12aWV3L3NlcnZpY2UvdGFzay12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcCwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtIZWFkZXJDb2x1bW59IGZyb20gJy4uLy4uL2hlYWRlci9tb2RlbHMvaGVhZGVyLWNvbHVtbic7XG5pbXBvcnQge3RvTW9tZW50fSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvdHlwZXMvbmFlLWRhdGUtdHlwZSc7XG5pbXBvcnQge0RBVEVfVElNRV9GT1JNQVRfU1RSSU5HfSBmcm9tICcuLi8uLi9tb21lbnQvdGltZS1mb3JtYXRzJztcbmltcG9ydCB7UGFwZXJWaWV3U2VydmljZX0gZnJvbSAnLi4vLi4vbmF2aWdhdGlvbi9xdWljay1wYW5lbC9jb21wb25lbnRzL3BhcGVyLXZpZXcuc2VydmljZSc7XG5pbXBvcnQge1Rhc2tFdmVudFNlcnZpY2V9IGZyb20gJy4uLy4uL3Rhc2stY29udGVudC9zZXJ2aWNlcy90YXNrLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtBc3NpZ25UYXNrU2VydmljZX0gZnJvbSAnLi4vLi4vdGFzay9zZXJ2aWNlcy9hc3NpZ24tdGFzay5zZXJ2aWNlJztcbmltcG9ydCB7RGVsZWdhdGVUYXNrU2VydmljZX0gZnJvbSAnLi4vLi4vdGFzay9zZXJ2aWNlcy9kZWxlZ2F0ZS10YXNrLnNlcnZpY2UnO1xuaW1wb3J0IHtDYW5jZWxUYXNrU2VydmljZX0gZnJvbSAnLi4vLi4vdGFzay9zZXJ2aWNlcy9jYW5jZWwtdGFzay5zZXJ2aWNlJztcbmltcG9ydCB7RmluaXNoVGFza1NlcnZpY2V9IGZyb20gJy4uLy4uL3Rhc2svc2VydmljZXMvZmluaXNoLXRhc2suc2VydmljZSc7XG5pbXBvcnQge1Rhc2tNZXRhRmllbGR9IGZyb20gJy4uLy4uL2hlYWRlci90YXNrLWhlYWRlci90YXNrLW1ldGEtZW51bSc7XG5pbXBvcnQge1Rhc2tSZXF1ZXN0U3RhdGVTZXJ2aWNlfSBmcm9tICcuLi8uLi90YXNrL3NlcnZpY2VzL3Rhc2stcmVxdWVzdC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7VGFza0RhdGFTZXJ2aWNlfSBmcm9tICcuLi8uLi90YXNrL3NlcnZpY2VzL3Rhc2stZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7QXNzaWduUG9saWN5U2VydmljZX0gZnJvbSAnLi4vLi4vdGFzay9zZXJ2aWNlcy9hc3NpZ24tcG9saWN5LnNlcnZpY2UnO1xuaW1wb3J0IHtTdWJqZWN0VGFza09wZXJhdGlvbnN9IGZyb20gJy4uLy4uL3Rhc2svbW9kZWxzL3N1YmplY3QtdGFzay1vcGVyYXRpb25zJztcbmltcG9ydCB7Q2FsbENoYWluU2VydmljZX0gZnJvbSAnLi4vLi4vdXRpbGl0eS9jYWxsLWNoYWluL2NhbGwtY2hhaW4uc2VydmljZSc7XG5pbXBvcnQge1Rhc2tFdmVudE5vdGlmaWNhdGlvbn0gZnJvbSAnLi4vLi4vdGFzay1jb250ZW50L21vZGVsL3Rhc2stZXZlbnQtbm90aWZpY2F0aW9uJztcbmltcG9ydCB7RGlzYWJsZUJ1dHRvbkZ1bnRpb25zLCBOQUVfVEFTS19QQU5FTF9ESVNBQkxFX0JVVFRPTl9GVU5DVElPTlN9IGZyb20gJy4vbW9kZWxzL2Rpc2FibGUtZnVuY3Rpb25zJztcbmltcG9ydCB7VGFza30gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS90YXNrJztcbmltcG9ydCB7Q2hhbmdlZEZpZWxkc30gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvbW9kZWxzL2NoYW5nZWQtZmllbGRzJztcbmltcG9ydCB7QWJzdHJhY3RQYW5lbFdpdGhJbW1lZGlhdGVEYXRhQ29tcG9uZW50fSBmcm9tICcuLi9hYnN0cmFjdC9wYW5lbC13aXRoLWltbWVkaWF0ZS1kYXRhJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0ZlYXR1cmVkVmFsdWV9IGZyb20gJy4uL2Fic3RyYWN0L2ZlYXR1cmVkLXZhbHVlJztcbmltcG9ydCB7Q3VycmVuY3lQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtQZXJtaXNzaW9uU2VydmljZX0gZnJvbSAnLi4vLi4vYXV0aG9yaXphdGlvbi9wZXJtaXNzaW9uL3Blcm1pc3Npb24uc2VydmljZSc7XG5pbXBvcnQge0NoYW5nZWRGaWVsZHNTZXJ2aWNlfSBmcm9tICcuLi8uLi9jaGFuZ2VkLWZpZWxkcy9zZXJ2aWNlcy9jaGFuZ2VkLWZpZWxkcy5zZXJ2aWNlJztcbmltcG9ydCB7Q2hhbmdlZEZpZWxkc01hcH0gZnJvbSAnLi4vLi4vZXZlbnQvc2VydmljZXMvaW50ZXJmYWNlcy9jaGFuZ2VkLWZpZWxkcy1tYXAnO1xuaW1wb3J0IHtUYXNrUGFuZWxDb250ZXh0fSBmcm9tICcuL21vZGVscy90YXNrLXBhbmVsLWNvbnRleHQnO1xuaW1wb3J0IHtPdmVyZmxvd1NlcnZpY2V9IGZyb20gJy4uLy4uL2hlYWRlci9zZXJ2aWNlcy9vdmVyZmxvdy5zZXJ2aWNlJztcbmltcG9ydCB7TkFFX1RBU0tfRk9SQ0VfT1BFTn0gZnJvbSAnLi4vLi4vdmlldy90YXNrLXZpZXcvbW9kZWxzL2luamVjdGlvbi10b2tlbi10YXNrLWZvcmNlLW9wZW4nO1xuaW1wb3J0IHtDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnR9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgRmluaXNoUG9saWN5U2VydmljZSB9IGZyb20gJy4uLy4uL3Rhc2svc2VydmljZXMvZmluaXNoLXBvbGljeS5zZXJ2aWNlJztcbmltcG9ydCB7TkFFX1RBQl9EQVRBfSBmcm9tICcuLi8uLi90YWJzL3RhYi1kYXRhLWluamVjdGlvbi10b2tlbi90YWItZGF0YS1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IHtJbmplY3RlZFRhYkRhdGF9IGZyb20gJy4uLy4uL3RhYnMvaW50ZXJmYWNlcyc7XG5pbXBvcnQge0FmdGVyQWN0aW9ufSBmcm9tICcuLi8uLi91dGlsaXR5L2NhbGwtY2hhaW4vYWZ0ZXItYWN0aW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduY2MtYWJzdHJhY3QtbGVnYWwtbm90aWNlJyxcbiAgICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RUYXNrUGFuZWxDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdFBhbmVsV2l0aEltbWVkaWF0ZURhdGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgICAvKipcbiAgICAgKiBAaWdub3JlXG4gICAgICogU2V0IGJ5IGFuIEBJbnB1dCgpIG9uIGEgc2V0dGVyIGZ1bmN0aW9uLCB0aGF0IGFsc28gcmVzb2x2ZXMgZmVhdHVyZWQgZmllbGRzLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfdGFza1BhbmVsRGF0YTogVGFza1BhbmVsRGF0YTtcbiAgICBwcm90ZWN0ZWQgX2ZvcmNlTG9hZERhdGFPbk9wZW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSB0YXNrTGlzdFZpcnR1YWxTY3JvbGw6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcbiAgICBASW5wdXQoKSBwYW5lbENvbnRlbnRDb21wb25lbnQ6IFR5cGU8YW55PjtcbiAgICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0ZWRIZWFkZXJzJDogT2JzZXJ2YWJsZTxBcnJheTxIZWFkZXJDb2x1bW4+PjtcbiAgICBASW5wdXQoKSBwdWJsaWMgZmlyc3Q6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcHVibGljIGxhc3Q6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcmVzcG9uc2l2ZUJvZHkgPSB0cnVlO1xuICAgIEBJbnB1dCgpIHByZXZlbnRDb2xsYXBzZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGhpZGVQYW5lbEhlYWRlciA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGhpZGVBY3Rpb25Sb3cgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBhY3Rpb25CdXR0b25UZW1wbGF0ZXM6IEFycmF5PFRlbXBsYXRlUmVmPGFueT4+O1xuICAgIEBJbnB1dCgpIGFjdGlvblJvd0p1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicgfCAnZmxleC1zdGFydCcgfCAnZmxleC1lbmQnIHwgJ2NlbnRlcicgfCAnc3BhY2UtYXJvdW5kJyB8XG4gICAgICAgICdpbml0aWFsJyB8ICdzdGFydCcgfCAnZW5kJyB8ICdsZWZ0JyB8ICdyaWdodCcgfCAncmV2ZXJ0JyB8ICdpbmhlcml0JyB8ICd1bnNldCdcbiAgICBASW5wdXQoKSBzaG93TW9yZU1lbnU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgdGhpc0NvbnRleHQ6IFRhc2tQYW5lbENvbnRleHQgPSB7XG4gICAgICAgIGNhbkFzc2lnbjogKCkgPT4gdGhpcy5jYW5Bc3NpZ24oKSxcbiAgICAgICAgYXNzaWduOiAoKSA9PiB0aGlzLmFzc2lnbigpLFxuICAgICAgICBnZXRBc3NpZ25UaXRsZTogKCkgPT4gdGhpcy5nZXRBc3NpZ25UaXRsZSgpLFxuICAgICAgICBkZWxlZ2F0ZTogKCkgPT4gdGhpcy5kZWxlZ2F0ZSgpLFxuICAgICAgICBnZXREZWxlZ2F0ZVRpdGxlOiAoKSA9PiB0aGlzLmdldERlbGVnYXRlVGl0bGUoKSxcbiAgICAgICAgY2FuUmVhc3NpZ246ICgpID0+IHRoaXMuY2FuUmVhc3NpZ24oKSxcbiAgICAgICAgY2FuQ2FuY2VsOiAoKSA9PiB0aGlzLmNhbkNhbmNlbCgpLFxuICAgICAgICBjYW5jZWw6ICgpID0+IHRoaXMuY2FuY2VsKCksXG4gICAgICAgIGdldENhbmNlbFRpdGxlOiAoKSA9PiB0aGlzLmdldENhbmNlbFRpdGxlKCksXG4gICAgICAgIGNhbkZpbmlzaDogKCkgPT4gdGhpcy5jYW5GaW5pc2goKSxcbiAgICAgICAgZmluaXNoOiAoKSA9PiB0aGlzLmZpbmlzaCgpLFxuICAgICAgICBnZXRGaW5pc2hUaXRsZTogKCkgPT4gdGhpcy5nZXRGaW5pc2hUaXRsZSgpLFxuICAgICAgICBjYW5Db2xsYXBzZTogKCkgPT4gdGhpcy5jYW5Db2xsYXBzZSgpLFxuICAgICAgICBjb2xsYXBzZTogKCkgPT4gdGhpcy5jb2xsYXBzZSgpLFxuICAgICAgICBjYW5EaXNhYmxlOiAoYXJnOiBzdHJpbmcpID0+IHRoaXMuY2FuRGlzYWJsZShhcmcpLFxuICAgICAgICBjYW5EbzogKGFyZzogc3RyaW5nKSA9PiB0aGlzLmNhbkRvKGFyZyksXG4gICAgICAgIGlzTG9hZGluZzogKCkgPT4gdGhpcy5pc0xvYWRpbmdcbiAgICB9O1xuXG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBmb3JjZUxvYWREYXRhT25PcGVuKGZvcmNlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2ZvcmNlTG9hZERhdGFPbk9wZW4gPSBmb3JjZTtcbiAgICAgICAgdGhpcy5fYXNzaWduUG9saWN5U2VydmljZS5mb3JjZWQgPSBmb3JjZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSB0ZXh0RWxsaXBzaXMgPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBFbWl0cyBub3RpZmljYXRpb25zIGFib3V0IHRhc2sgZXZlbnRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIHRhc2tFdmVudDogRXZlbnRFbWl0dGVyPFRhc2tFdmVudE5vdGlmaWNhdGlvbj47XG4gICAgQE91dHB1dCgpIHBhbmVsUmVmT3V0cHV0OiBFdmVudEVtaXR0ZXI8TWF0RXhwYW5zaW9uUGFuZWw+O1xuXG4gICAgcHVibGljIHBvcnRhbDogQ29tcG9uZW50UG9ydGFsPGFueT47XG4gICAgcHVibGljIHBhbmVsUmVmOiBNYXRFeHBhbnNpb25QYW5lbDtcbiAgICBwcm90ZWN0ZWQgX3N1YjogU3Vic2NyaXB0aW9uO1xuICAgIHByb3RlY3RlZCBfc3ViVGFza0V2ZW50OiBTdWJzY3JpcHRpb247XG4gICAgcHJvdGVjdGVkIF9zdWJUYXNrRGF0YTogU3Vic2NyaXB0aW9uO1xuICAgIHByb3RlY3RlZCBfc3ViUGFuZWxVcGRhdGU6IFN1YnNjcmlwdGlvbjtcbiAgICBwcm90ZWN0ZWQgX3Rhc2tEaXNhYmxlQnV0dG9uRnVuY3Rpb25zOiBEaXNhYmxlQnV0dG9uRnVudGlvbnM7XG4gICAgcHJvdGVjdGVkIF91bnN1YjogU3Vic2NyaXB0aW9uO1xuICAgIHByb3RlY3RlZCBfY2FuUmVsb2FkOiBib29sZWFuO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfdGFza0NvbnRlbnRTZXJ2aWNlOiBUYXNrQ29udGVudFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfbG9nOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3Rhc2tWaWV3U2VydmljZTogVGFza1ZpZXdTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3BhcGVyVmlldzogUGFwZXJWaWV3U2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF90YXNrRXZlbnRTZXJ2aWNlOiBUYXNrRXZlbnRTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2Fzc2lnblRhc2tTZXJ2aWNlOiBBc3NpZ25UYXNrU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9kZWxlZ2F0ZVRhc2tTZXJ2aWNlOiBEZWxlZ2F0ZVRhc2tTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NhbmNlbFRhc2tTZXJ2aWNlOiBDYW5jZWxUYXNrU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9maW5pc2hUYXNrU2VydmljZTogRmluaXNoVGFza1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdGFza1N0YXRlOiBUYXNrUmVxdWVzdFN0YXRlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF90YXNrRGF0YVNlcnZpY2U6IFRhc2tEYXRhU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9hc3NpZ25Qb2xpY3lTZXJ2aWNlOiBBc3NpZ25Qb2xpY3lTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2ZpbmlzaFBvbGljeVNlcnZpY2U6IEZpbmlzaFBvbGljeVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfY2FsbENoYWluOiBDYWxsQ2hhaW5TZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3Rhc2tPcGVyYXRpb25zOiBTdWJqZWN0VGFza09wZXJhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkFFX1RBU0tfUEFORUxfRElTQUJMRV9CVVRUT05fRlVOQ1RJT05TKSBwcm90ZWN0ZWQgX2Rpc2FibGVGdW5jdGlvbnM6IERpc2FibGVCdXR0b25GdW50aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfY3VycmVuY3lQaXBlOiBDdXJyZW5jeVBpcGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfY2hhbmdlZEZpZWxkc1NlcnZpY2U6IENoYW5nZWRGaWVsZHNTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3Blcm1pc3Npb25TZXJ2aWNlOiBQZXJtaXNzaW9uU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgb3ZlcmZsb3dTZXJ2aWNlOiBPdmVyZmxvd1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkFFX1RBU0tfRk9SQ0VfT1BFTikgcHJvdGVjdGVkIF90YXNrRm9yY2VPcGVuOiBib29sZWFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5BRV9UQUJfREFUQSkgaW5qZWN0ZWRUYWJEYXRhOiBJbmplY3RlZFRhYkRhdGEpIHtcbiAgICAgICAgc3VwZXIoX3RyYW5zbGF0ZSwgX2N1cnJlbmN5UGlwZSwgb3ZlcmZsb3dTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy50YXNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFRhc2tFdmVudE5vdGlmaWNhdGlvbj4oKTtcbiAgICAgICAgdGhpcy5wYW5lbFJlZk91dHB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8TWF0RXhwYW5zaW9uUGFuZWw+KCk7XG4gICAgICAgIHRoaXMuX3N1YlRhc2tFdmVudCA9IF90YXNrRXZlbnRTZXJ2aWNlLnRhc2tFdmVudE5vdGlmaWNhdGlvbnMkLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhc2tFdmVudC5lbWl0KGV2ZW50KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3N1YlRhc2tEYXRhID0gX2NoYW5nZWRGaWVsZHNTZXJ2aWNlLmNoYW5nZWRGaWVsZHMkLnN1YnNjcmliZSgoY2hhbmdlZEZpZWxkc01hcDogQ2hhbmdlZEZpZWxkc01hcCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRDYXNlSWRzOiBBcnJheTxzdHJpbmc+ID0gT2JqZWN0LmtleXMoY2hhbmdlZEZpZWxkc01hcCkuZmlsdGVyKFxuICAgICAgICAgICAgICAgIGNhc2VJZCA9PiBPYmplY3Qua2V5cyh0aGlzLl90YXNrQ29udGVudFNlcnZpY2UucmVmZXJlbmNlZFRhc2tBbmRDYXNlSWRzKS5pbmNsdWRlcyhjYXNlSWQpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlZEZpZWxkczogQXJyYXk8Q2hhbmdlZEZpZWxkcz4gPSBbXTtcbiAgICAgICAgICAgIGZpbHRlcmVkQ2FzZUlkcy5mb3JFYWNoKGNhc2VJZCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFza0lkczogQXJyYXk8c3RyaW5nPiA9IHRoaXMuX3Rhc2tDb250ZW50U2VydmljZS5yZWZlcmVuY2VkVGFza0FuZENhc2VJZHNbY2FzZUlkXTtcbiAgICAgICAgICAgICAgICBjaGFuZ2VkRmllbGRzLnB1c2goLi4udGhpcy5fY2hhbmdlZEZpZWxkc1NlcnZpY2UucGFyc2VDaGFuZ2VkRmllbGRzQnlDYXNlQW5kVGFza0lkcyhjYXNlSWQsIHRhc2tJZHMsIGNoYW5nZWRGaWVsZHNNYXApKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2hhbmdlZEZpZWxkcy5maWx0ZXIoZmllbGRzID0+IGZpZWxkcyAhPT0gdW5kZWZpbmVkKS5mb3JFYWNoKGZpZWxkcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50YXNrUGFuZWxEYXRhLmNoYW5nZWRGaWVsZHMubmV4dChmaWVsZHMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBfdGFza09wZXJhdGlvbnMub3BlbiQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBfdGFza09wZXJhdGlvbnMuY2xvc2UkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3Rhc2tGb3JjZU9wZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbGxhcHNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBfdGFza09wZXJhdGlvbnMucmVsb2FkJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdGFza1ZpZXdTZXJ2aWNlLnJlbG9hZEN1cnJlbnRQYWdlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBfdGFza09wZXJhdGlvbnMuZm9yY2VSZWxvYWQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl90YXNrVmlld1NlcnZpY2UucmVsb2FkQ3VycmVudFBhZ2UodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl90YXNrRGlzYWJsZUJ1dHRvbkZ1bmN0aW9ucyA9IHtcbiAgICAgICAgICAgIGZpbmlzaDogKHQ6IFRhc2spID0+IGZhbHNlLFxuICAgICAgICAgICAgYXNzaWduOiAodDogVGFzaykgPT4gZmFsc2UsXG4gICAgICAgICAgICBkZWxlZ2F0ZTogKHQ6IFRhc2spID0+IGZhbHNlLFxuICAgICAgICAgICAgcmVhc3NpZ246ICh0OiBUYXNrKSA9PiBmYWxzZSxcbiAgICAgICAgICAgIGNhbmNlbDogKHQ6IFRhc2spID0+IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBpZiAoX2Rpc2FibGVGdW5jdGlvbnMpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fdGFza0Rpc2FibGVCdXR0b25GdW5jdGlvbnMsIF9kaXNhYmxlRnVuY3Rpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5qZWN0ZWRUYWJEYXRhICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl91bnN1YiA9IGluamVjdGVkVGFiRGF0YS50YWJTZWxlY3RlZCQucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoYm9vbCA9PiBib29sICYmIHRoaXMuaXNFeHBhbmRlZCgpKVxuICAgICAgICAgICAgKS5zdWJzY3JpYmUoICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2FuUmVsb2FkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Rhc2tEYXRhU2VydmljZS5pbml0aWFsaXplVGFza0RhdGFGaWVsZHMobmV3IEFmdGVyQWN0aW9uKCksIHRydWUpXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FuUmVsb2FkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLl90YXNrQ29udGVudFNlcnZpY2UudGFzayA9IHRoaXMuX3Rhc2tQYW5lbERhdGEudGFzaztcblxuICAgICAgICB0aGlzLmNyZWF0ZUNvbnRlbnRQb3J0YWwoKTtcbiAgICAgICAgdGhpcy5fc3ViID0gdGhpcy5fdGFza1BhbmVsRGF0YS5jaGFuZ2VkRmllbGRzLnN1YnNjcmliZShjaEZpZWxkcyA9PiB7XG4gICAgICAgICAgICB0aGlzLl90YXNrQ29udGVudFNlcnZpY2UudXBkYXRlRnJvbUNoYW5nZWRGaWVsZHMoY2hGaWVsZHMpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9zdWJQYW5lbFVwZGF0ZSA9IHRoaXMuX3Rhc2tWaWV3U2VydmljZS5wYW5lbFVwZGF0ZS5waXBlKFxuICAgICAgICAgICAgbWFwKGEgPT4gYS5maW5kKHAgPT4gcC50YXNrLnN0cmluZ0lkID09PSB0aGlzLnRhc2tQYW5lbERhdGEudGFzay5zdHJpbmdJZCkpLFxuICAgICAgICAgICAgZmlsdGVyKHAgPT4gISFwKVxuICAgICAgICApLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlc29sdmVGZWF0dXJlZEZpZWxkc1ZhbHVlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMucGFuZWxSZWYub3BlbmVkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl90YXNrQ29udGVudFNlcnZpY2UuZXhwYW5zaW9uU3RhcnRlZCgpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl90YXNrU3RhdGUuaXNMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9hc3NpZ25Qb2xpY3lTZXJ2aWNlLnBlcmZvcm1Bc3NpZ25Qb2xpY3kodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnBhbmVsUmVmLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl90YXNrU3RhdGUuaXNMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9hc3NpZ25Qb2xpY3lTZXJ2aWNlLnBlcmZvcm1Bc3NpZ25Qb2xpY3koZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wYW5lbFJlZi5hZnRlckV4cGFuZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdGFza0NvbnRlbnRTZXJ2aWNlLiRzaG91bGRDcmVhdGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Rhc2tDb250ZW50U2VydmljZS5ibG9ja0ZpZWxkcyh0aGlzLmhhc05vRmluaXNoUGVybWlzc2lvbigpKTtcbiAgICAgICAgICAgICAgICB0aGlzLl90YXNrUGFuZWxEYXRhLmluaXRpYWxseUV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fdGFza0NvbnRlbnRTZXJ2aWNlLmV4cGFuc2lvbkZpbmlzaGVkKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnBhbmVsUmVmLmFmdGVyQ29sbGFwc2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3Rhc2tQYW5lbERhdGEuaW5pdGlhbGx5RXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3Rhc2tQYW5lbERhdGEuaW5pdGlhbGx5RXhwYW5kZWQgfHwgdGhpcy5fdGFza0ZvcmNlT3Blbikge1xuICAgICAgICAgICAgdGhpcy5wYW5lbFJlZi5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlQ29udGVudFBvcnRhbCgpOiB2b2lkO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHRhc2tQYW5lbERhdGEoZGF0YTogVGFza1BhbmVsRGF0YSkge1xuICAgICAgICB0aGlzLl90YXNrUGFuZWxEYXRhID0gZGF0YTtcbiAgICAgICAgdGhpcy5yZXNvbHZlRmVhdHVyZWRGaWVsZHNWYWx1ZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRhc2tQYW5lbERhdGEoKTogVGFza1BhbmVsRGF0YSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YXNrUGFuZWxEYXRhO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNMb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFza1N0YXRlLmlzTG9hZGluZygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdG9wTG9hZGluZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFza1N0YXRlLnN0b3BMb2FkaW5nKHRoaXMuX3Rhc2tQYW5lbERhdGEudGFzay5zdHJpbmdJZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHByZXZlbnRQYW5lbE9wZW4oJGV2ZW50OiBNb3VzZUV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1BhcGVyVmlldygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcGVyVmlldy5wYXBlclZpZXc7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFBhbmVsUmVmKHBhbmVsUmVmOiBNYXRFeHBhbnNpb25QYW5lbCkge1xuICAgICAgICB0aGlzLnBhbmVsUmVmID0gcGFuZWxSZWY7XG4gICAgICAgIHRoaXMucGFuZWxSZWZPdXRwdXQuZW1pdChwYW5lbFJlZik7XG4gICAgfVxuXG4gICAgYXNzaWduKCkge1xuICAgICAgICB0aGlzLl9hc3NpZ25UYXNrU2VydmljZS5hc3NpZ24odGhpcy5fY2FsbENoYWluLmNyZWF0ZSgoYWZ0ZXJBY3Rpb24gPT4ge1xuICAgICAgICAgICAgaWYgKGFmdGVyQWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFza0RhdGFTZXJ2aWNlLmluaXRpYWxpemVUYXNrRGF0YUZpZWxkcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbmlzaFBvbGljeVNlcnZpY2UucGVyZm9ybUZpbmlzaFBvbGljeSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSkpO1xuICAgIH1cblxuICAgIGRlbGVnYXRlKCkge1xuICAgICAgICB0aGlzLl9kZWxlZ2F0ZVRhc2tTZXJ2aWNlLmRlbGVnYXRlKCk7XG4gICAgfVxuXG4gICAgY2FuY2VsKCkge1xuICAgICAgICB0aGlzLl9jYW5jZWxUYXNrU2VydmljZS5jYW5jZWwodGhpcy5fY2FsbENoYWluLmNyZWF0ZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl90YXNrT3BlcmF0aW9ucy5yZWxvYWQoKTtcbiAgICAgICAgICAgIHRoaXMuX3Rhc2tPcGVyYXRpb25zLmNsb3NlKCk7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBmaW5pc2goKSB7XG4gICAgICAgIGlmICghdGhpcy5fdGFza0NvbnRlbnRTZXJ2aWNlLnZhbGlkYXRlVGFza0RhdGEoKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3Rhc2tDb250ZW50U2VydmljZS50YXNrLmRhdGFTaXplIDw9IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90YXNrRGF0YVNlcnZpY2UuaW5pdGlhbGl6ZVRhc2tEYXRhRmllbGRzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpbnZhbGlkRmllbGRzID0gdGhpcy5fdGFza0NvbnRlbnRTZXJ2aWNlLmdldEludmFsaWRUYXNrRGF0YSgpO1xuICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaW52YWxpZEZpZWxkc1swXS5zdHJpbmdJZCkuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgICAgICAgICAgICBibG9jazogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICBpbmxpbmU6ICduZWFyZXN0J1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9maW5pc2hUYXNrU2VydmljZS52YWxpZGF0ZURhdGFBbmRGaW5pc2goKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbGxhcHNlKCkge1xuICAgICAgICB0aGlzLnBhbmVsUmVmLmNsb3NlKCk7XG4gICAgICAgIHRoaXMucGFuZWxSZWYuZXhwYW5kZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBleHBhbmQoKSB7XG4gICAgICAgIHRoaXMucGFuZWxSZWYub3BlbigpO1xuICAgICAgICB0aGlzLnBhbmVsUmVmLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FuQXNzaWduKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGVybWlzc2lvblNlcnZpY2UuY2FuQXNzaWduKHRoaXMudGFza1BhbmVsRGF0YS50YXNrKSAmJiB0aGlzLmdldEFzc2lnblRpdGxlKCkgIT09ICcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYW5SZWFzc2lnbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Blcm1pc3Npb25TZXJ2aWNlLmNhblJlYXNzaWduKHRoaXMudGFza1BhbmVsRGF0YS50YXNrKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FuQ2FuY2VsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGVybWlzc2lvblNlcnZpY2UuY2FuQ2FuY2VsKHRoaXMudGFza1BhbmVsRGF0YS50YXNrKSAmJiB0aGlzLmdldENhbmNlbFRpdGxlKCkgIT09ICcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYW5GaW5pc2goKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wZXJtaXNzaW9uU2VydmljZS5jYW5GaW5pc2godGhpcy50YXNrUGFuZWxEYXRhLnRhc2spICYmIHRoaXMuZ2V0RmluaXNoVGl0bGUoKSAhPT0gJyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNOb0ZpbmlzaFBlcm1pc3Npb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5fcGVybWlzc2lvblNlcnZpY2UuY2FuRmluaXNoKHRoaXMudGFza1BhbmVsRGF0YS50YXNrKVxuICAgIH1cblxuICAgIHB1YmxpYyBjYW5Db2xsYXBzZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rhc2tGb3JjZU9wZW4gPyBmYWxzZSA6IHRoaXMuX3Blcm1pc3Npb25TZXJ2aWNlLmNhbkNvbGxhcHNlKHRoaXMudGFza1BhbmVsRGF0YS50YXNrKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FuRG8oYWN0aW9uKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wZXJtaXNzaW9uU2VydmljZS5oYXNUYXNrUGVybWlzc2lvbih0aGlzLnRhc2tQYW5lbERhdGEudGFzaywgYWN0aW9uKSAmJiB0aGlzLmdldERlbGVnYXRlVGl0bGUoKSAhPT0gJyc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFzc2lnblRpdGxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAodGhpcy50YXNrUGFuZWxEYXRhLnRhc2suYXNzaWduVGl0bGUgPT09ICcnIHx8IHRoaXMudGFza1BhbmVsRGF0YS50YXNrLmFzc2lnblRpdGxlKVxuICAgICAgICAgICAgPyB0aGlzLnRhc2tQYW5lbERhdGEudGFzay5hc3NpZ25UaXRsZSA6ICd0YXNrcy52aWV3LmFzc2lnbic7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENhbmNlbFRpdGxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAodGhpcy50YXNrUGFuZWxEYXRhLnRhc2suY2FuY2VsVGl0bGUgPT09ICcnIHx8IHRoaXMudGFza1BhbmVsRGF0YS50YXNrLmNhbmNlbFRpdGxlKVxuICAgICAgICAgICAgPyB0aGlzLnRhc2tQYW5lbERhdGEudGFzay5jYW5jZWxUaXRsZSA6ICd0YXNrcy52aWV3LmNhbmNlbCc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERlbGVnYXRlVGl0bGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnRhc2tQYW5lbERhdGEudGFzay5kZWxlZ2F0ZVRpdGxlID09PSAnJyB8fCB0aGlzLnRhc2tQYW5lbERhdGEudGFzay5kZWxlZ2F0ZVRpdGxlKVxuICAgICAgICAgICAgPyB0aGlzLnRhc2tQYW5lbERhdGEudGFzay5kZWxlZ2F0ZVRpdGxlIDogJ3Rhc2tzLnZpZXcuZGVsZWdhdGUnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaW5pc2hUaXRsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKHRoaXMudGFza1BhbmVsRGF0YS50YXNrLmZpbmlzaFRpdGxlID09PSAnJyB8fCB0aGlzLnRhc2tQYW5lbERhdGEudGFzay5maW5pc2hUaXRsZSlcbiAgICAgICAgICAgID8gdGhpcy50YXNrUGFuZWxEYXRhLnRhc2suZmluaXNoVGl0bGUgOiAndGFza3Mudmlldy5maW5pc2gnO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYW5EaXNhYmxlKHR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgZGlzYWJsZSA9IGZhbHNlO1xuICAgICAgICBpZiAoISF0aGlzLnRhc2tQYW5lbERhdGEgJiYgISF0aGlzLnRhc2tQYW5lbERhdGEudGFzaykge1xuICAgICAgICAgICAgZGlzYWJsZSA9IGRpc2FibGVcbiAgICAgICAgICAgICAgICB8fCAhIXRoaXMuX3Rhc2tTdGF0ZS5pc0xvYWRpbmcodGhpcy50YXNrUGFuZWxEYXRhLnRhc2suc3RyaW5nSWQpXG4gICAgICAgICAgICAgICAgfHwgISF0aGlzLl90YXNrU3RhdGUuaXNVcGRhdGluZyh0aGlzLnRhc2tQYW5lbERhdGEudGFzay5zdHJpbmdJZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRpc2FibGUgfHwgdGhpcy5fdGFza0Rpc2FibGVCdXR0b25GdW5jdGlvbnNbdHlwZV0oey4uLnRoaXMuX3Rhc2tDb250ZW50U2VydmljZS50YXNrfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZlYXR1cmVkTWV0YVZhbHVlKHNlbGVjdGVkSGVhZGVyOiBIZWFkZXJDb2x1bW4pOiBGZWF0dXJlZFZhbHVlIHtcbiAgICAgICAgY29uc3QgdGFzayA9IHRoaXMuX3Rhc2tQYW5lbERhdGEudGFzaztcbiAgICAgICAgc3dpdGNoIChzZWxlY3RlZEhlYWRlci5maWVsZElkZW50aWZpZXIpIHtcbiAgICAgICAgICAgIGNhc2UgVGFza01ldGFGaWVsZC5DQVNFOlxuICAgICAgICAgICAgICAgIHJldHVybiB7dmFsdWU6IHRhc2suY2FzZVRpdGxlLCBpY29uOiAnJywgdHlwZTogJ21ldGEnfTtcbiAgICAgICAgICAgIGNhc2UgVGFza01ldGFGaWVsZC5DQVNFX0lEOlxuICAgICAgICAgICAgICAgIHJldHVybiB7dmFsdWU6IHRhc2suY2FzZUlkLCBpY29uOiAnJywgdHlwZTogJ21ldGEnfTtcbiAgICAgICAgICAgIGNhc2UgVGFza01ldGFGaWVsZC5UQVNLX0lEOlxuICAgICAgICAgICAgICAgIHJldHVybiB7dmFsdWU6IHRhc2suc3RyaW5nSWQsIGljb246ICcnLCB0eXBlOiAnbWV0YSd9O1xuICAgICAgICAgICAgY2FzZSBUYXNrTWV0YUZpZWxkLlRJVExFOlxuICAgICAgICAgICAgICAgIHJldHVybiB7dmFsdWU6IHRhc2sudGl0bGUsIGljb246ICcnLCB0eXBlOiAnbWV0YSd9O1xuICAgICAgICAgICAgY2FzZSBUYXNrTWV0YUZpZWxkLlBSSU9SSVRZOlxuICAgICAgICAgICAgICAgIC8vIFRPRE8gcHJpb3JpdHlcbiAgICAgICAgICAgICAgICBpZiAoIXRhc2sucHJpb3JpdHkgfHwgdGFzay5wcmlvcml0eSA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZTogJ2hpZ2gnLCBpY29uOiAnZXJyb3InLCB0eXBlOiAnbWV0YSd9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGFzay5wcmlvcml0eSA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3ZhbHVlOiAnbWVkaXVtJywgaWNvbjogJ25vcnRoJywgdHlwZTogJ21ldGEnfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZTogJ2xvdycsIGljb246ICdzb3V0aCcsIHR5cGU6ICdtZXRhJ307XG4gICAgICAgICAgICBjYXNlIFRhc2tNZXRhRmllbGQuVVNFUjpcbiAgICAgICAgICAgICAgICByZXR1cm4ge3ZhbHVlOiB0YXNrLnVzZXIgPyB0YXNrLnVzZXIuZnVsbE5hbWUgOiAnJywgaWNvbjogJ2FjY291bnRfY2lyY2xlJywgdHlwZTogJ21ldGEnfTtcbiAgICAgICAgICAgIGNhc2UgVGFza01ldGFGaWVsZC5BU1NJR05fREFURTpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGFzay5zdGFydERhdGUgPyB0b01vbWVudCh0YXNrLnN0YXJ0RGF0ZSkuZm9ybWF0KERBVEVfVElNRV9GT1JNQVRfU1RSSU5HKSA6ICcnLFxuICAgICAgICAgICAgICAgICAgICBpY29uOiAnZXZlbnQnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnbWV0YSdcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZlYXR1cmVkSW1tZWRpYXRlVmFsdWUoc2VsZWN0ZWRIZWFkZXI6IEhlYWRlckNvbHVtbik6IEZlYXR1cmVkVmFsdWUge1xuICAgICAgICBpZiAodGhpcy5fdGFza0NvbnRlbnRTZXJ2aWNlLnRhc2sgJiYgdGhpcy5fdGFza0NvbnRlbnRTZXJ2aWNlLnRhc2suaW1tZWRpYXRlRGF0YSkge1xuICAgICAgICAgICAgY29uc3QgaW1tZWRpYXRlID0gdGhpcy5fdGFza0NvbnRlbnRTZXJ2aWNlLnRhc2suaW1tZWRpYXRlRGF0YS5maW5kKGl0ID0+IGl0LnN0cmluZ0lkID09PSBzZWxlY3RlZEhlYWRlci5maWVsZElkZW50aWZpZXIpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VJbW1lZGlhdGVWYWx1ZShpbW1lZGlhdGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7dmFsdWU6ICcnLCBpY29uOiAnJywgdHlwZTogJyd9O1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICB0aGlzLl9zdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fc3ViVGFza0V2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3N1YlRhc2tEYXRhLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3Rhc2tPcGVyYXRpb25zLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5fc3ViUGFuZWxVcGRhdGUudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy50YXNrRXZlbnQuY29tcGxldGUoKTtcbiAgICAgICAgaWYgKHRoaXMuX3Vuc3ViKSB7XG4gICAgICAgICAgICB0aGlzLl91bnN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGlzRm9yY2VPcGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFza0ZvcmNlT3BlbiAmJiAhIXRoaXMudGFza0xpc3RWaXJ0dWFsU2Nyb2xsPy5nZXRFbGVtZW50UmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbnRlbnRNaW5IZWlnaHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFza0xpc3RWaXJ0dWFsU2Nyb2xsLmdldEVsZW1lbnRSZWYoKS5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAtIDMyICsgJ3B4JztcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNFeHBhbmRlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFuZWxSZWY/LmV4cGFuZGVkICYmICF0aGlzLl90YXNrQ29udGVudFNlcnZpY2U/LmlzRXhwYW5kaW5nO1xuICAgIH1cbn1cbiJdfQ==
|
|
410
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtdGFzay1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3BhbmVsL3Rhc2stcGFuZWwvYWJzdHJhY3QtdGFzay1wYW5lbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUdULE1BQU0sZUFBZSxDQUFDO0FBUXZCLE9BQU8sRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQU9sRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFPdEUsT0FBTyxFQUF3Qix1Q0FBdUMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRzFHLE9BQU8sRUFBQyx1Q0FBdUMsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBUzlGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDZEQUE2RCxDQUFDO0FBR2hHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw4REFBOEQsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTMUYsTUFBTSxPQUFnQiwwQkFBMkIsU0FBUSx1Q0FBdUM7SUFrRTVGLFlBQWdDLG1CQUF1QyxFQUN2QyxJQUFtQixFQUNuQixnQkFBaUMsRUFDakMsVUFBNEIsRUFDNUIsaUJBQW1DLEVBQ25DLGtCQUFxQyxFQUNyQyxvQkFBeUMsRUFDekMsa0JBQXFDLEVBQ3JDLGtCQUFxQyxFQUNyQyxVQUFtQyxFQUNuQyxnQkFBaUMsRUFDakMsb0JBQXlDLEVB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aXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVHlwZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0RXhwYW5zaW9uUGFuZWx9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XG5pbXBvcnQge0NvbXBvbmVudFBvcnRhbH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1Rhc2tDb250ZW50U2VydmljZX0gZnJvbSAnLi4vLi4vdGFzay1jb250ZW50L3NlcnZpY2VzL3Rhc2stY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7VGFza1BhbmVsRGF0YX0gZnJvbSAnLi4vdGFzay1wYW5lbC1saXN0L3Rhc2stcGFuZWwtZGF0YS90YXNrLXBhbmVsLWRhdGEnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtUYXNrVmlld1NlcnZpY2V9IGZyb20gJy4uLy4uL3ZpZXcvdGFzay12aWV3L3NlcnZpY2UvdGFzay12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcCwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtIZWFkZXJDb2x1bW59IGZyb20gJy4uLy4uL2hlYWRlci9tb2RlbHMvaGVhZGVyLWNvbHVtbic7XG5pbXBvcnQge3RvTW9tZW50fSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvdHlwZXMvbmFlLWRhdGUtdHlwZSc7XG5pbXBvcnQge0RBVEVfVElNRV9GT1JNQVRfU1RSSU5HfSBmcm9tICcuLi8uLi9tb21lbnQvdGltZS1mb3JtYXRzJztcbmltcG9ydCB7UGFwZXJWaWV3U2VydmljZX0gZnJvbSAnLi4vLi4vbmF2aWdhdGlvbi9xdWljay1wYW5lbC9jb21wb25lbnRzL3BhcGVyLXZpZXcuc2VydmljZSc7XG5pbXBvcnQge1Rhc2tFdmVudFNlcnZpY2V9IGZyb20gJy4uLy4uL3Rhc2stY29udGVudC9zZXJ2aWNlcy90YXNrLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtBc3NpZ25UYXNrU2VydmljZX0gZnJvbSAnLi4vLi4vdGFzay9zZXJ2aWNlcy9hc3NpZ24tdGFzay5zZXJ2aWNlJztcbmltcG9ydCB7RGVsZWdhdGVUYXNrU2VydmljZX0gZnJvbSAnLi4vLi4vdGFzay9zZXJ2aWNlcy9kZWxlZ2F0ZS10YXNrLnNlcnZpY2UnO1xuaW1wb3J0IHtDYW5jZWxUYXNrU2VydmljZX0gZnJvbSAnLi4vLi4vdGFzay9zZXJ2aWNlcy9jYW5jZWwtdGFzay5zZXJ2aWNlJztcbmltcG9ydCB7RmluaXNoVGFza1NlcnZpY2V9IGZyb20gJy4uLy4uL3Rhc2svc2VydmljZXMvZmluaXNoLXRhc2suc2VydmljZSc7XG5pbXBvcnQge1Rhc2tNZXRhRmllbGR9IGZyb20gJy4uLy4uL2hlYWRlci90YXNrLWhlYWRlci90YXNrLW1ldGEtZW51bSc7XG5pbXBvcnQge1Rhc2tSZXF1ZXN0U3RhdGVTZXJ2aWNlfSBmcm9tICcuLi8uLi90YXNrL3NlcnZpY2VzL3Rhc2stcmVxdWVzdC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7VGFza0RhdGFTZXJ2aWNlfSBmcm9tICcuLi8uLi90YXNrL3NlcnZpY2VzL3Rhc2stZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7QXNzaWduUG9saWN5U2VydmljZX0gZnJvbSAnLi4vLi4vdGFzay9zZXJ2aWNlcy9hc3NpZ24tcG9saWN5LnNlcnZpY2UnO1xuaW1wb3J0IHtTdWJqZWN0VGFza09wZXJhdGlvbnN9IGZyb20gJy4uLy4uL3Rhc2svbW9kZWxzL3N1YmplY3QtdGFzay1vcGVyYXRpb25zJztcbmltcG9ydCB7Q2FsbENoYWluU2VydmljZX0gZnJvbSAnLi4vLi4vdXRpbGl0eS9jYWxsLWNoYWluL2NhbGwtY2hhaW4uc2VydmljZSc7XG5pbXBvcnQge1Rhc2tFdmVudE5vdGlmaWNhdGlvbn0gZnJvbSAnLi4vLi4vdGFzay1jb250ZW50L21vZGVsL3Rhc2stZXZlbnQtbm90aWZpY2F0aW9uJztcbmltcG9ydCB7RGlzYWJsZUJ1dHRvbkZ1bnRpb25zLCBOQUVfVEFTS19QQU5FTF9ESVNBQkxFX0JVVFRPTl9GVU5DVElPTlN9IGZyb20gJy4vbW9kZWxzL2Rpc2FibGUtZnVuY3Rpb25zJztcbmltcG9ydCB7VGFza30gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS90YXNrJztcbmltcG9ydCB7Q2hhbmdlZEZpZWxkc30gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvbW9kZWxzL2NoYW5nZWQtZmllbGRzJztcbmltcG9ydCB7QWJzdHJhY3RQYW5lbFdpdGhJbW1lZGlhdGVEYXRhQ29tcG9uZW50fSBmcm9tICcuLi9hYnN0cmFjdC9wYW5lbC13aXRoLWltbWVkaWF0ZS1kYXRhJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0ZlYXR1cmVkVmFsdWV9IGZyb20gJy4uL2Fic3RyYWN0L2ZlYXR1cmVkLXZhbHVlJztcbmltcG9ydCB7Q3VycmVuY3lQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtQZXJtaXNzaW9uU2VydmljZX0gZnJvbSAnLi4vLi4vYXV0aG9yaXphdGlvbi9wZXJtaXNzaW9uL3Blcm1pc3Npb24uc2VydmljZSc7XG5pbXBvcnQge0NoYW5nZWRGaWVsZHNTZXJ2aWNlfSBmcm9tICcuLi8uLi9jaGFuZ2VkLWZpZWxkcy9zZXJ2aWNlcy9jaGFuZ2VkLWZpZWxkcy5zZXJ2aWNlJztcbmltcG9ydCB7Q2hhbmdlZEZpZWxkc01hcH0gZnJvbSAnLi4vLi4vZXZlbnQvc2VydmljZXMvaW50ZXJmYWNlcy9jaGFuZ2VkLWZpZWxkcy1tYXAnO1xuaW1wb3J0IHtUYXNrUGFuZWxDb250ZXh0fSBmcm9tICcuL21vZGVscy90YXNrLXBhbmVsLWNvbnRleHQnO1xuaW1wb3J0IHtPdmVyZmxvd1NlcnZpY2V9IGZyb20gJy4uLy4uL2hlYWRlci9zZXJ2aWNlcy9vdmVyZmxvdy5zZXJ2aWNlJztcbmltcG9ydCB7TkFFX1RBU0tfRk9SQ0VfT1BFTn0gZnJvbSAnLi4vLi4vdmlldy90YXNrLXZpZXcvbW9kZWxzL2luamVjdGlvbi10b2tlbi10YXNrLWZvcmNlLW9wZW4nO1xuaW1wb3J0IHtDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnR9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgRmluaXNoUG9saWN5U2VydmljZSB9IGZyb20gJy4uLy4uL3Rhc2svc2VydmljZXMvZmluaXNoLXBvbGljeS5zZXJ2aWNlJztcbmltcG9ydCB7TkFFX1RBQl9EQVRBfSBmcm9tICcuLi8uLi90YWJzL3RhYi1kYXRhLWluamVjdGlvbi10b2tlbi90YWItZGF0YS1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IHtJbmplY3RlZFRhYkRhdGF9IGZyb20gJy4uLy4uL3RhYnMvaW50ZXJmYWNlcyc7XG5pbXBvcnQge0FmdGVyQWN0aW9ufSBmcm9tICcuLi8uLi91dGlsaXR5L2NhbGwtY2hhaW4vYWZ0ZXItYWN0aW9uJztcbmltcG9ydCB7VXNlckNvbXBhcmF0b3JTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vdXNlci9zZXJ2aWNlcy91c2VyLWNvbXBhcmF0b3Iuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25jYy1hYnN0cmFjdC1sZWdhbC1ub3RpY2UnLFxuICAgIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFRhc2tQYW5lbENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0UGFuZWxXaXRoSW1tZWRpYXRlRGF0YUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAgIC8qKlxuICAgICAqIEBpZ25vcmVcbiAgICAgKiBTZXQgYnkgYW4gQElucHV0KCkgb24gYSBzZXR0ZXIgZnVuY3Rpb24sIHRoYXQgYWxzbyByZXNvbHZlcyBmZWF0dXJlZCBmaWVsZHMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF90YXNrUGFuZWxEYXRhOiBUYXNrUGFuZWxEYXRhO1xuICAgIHByb3RlY3RlZCBfZm9yY2VMb2FkRGF0YU9uT3BlbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHRhc2tMaXN0VmlydHVhbFNjcm9sbDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuICAgIEBJbnB1dCgpIHBhbmVsQ29udGVudENvbXBvbmVudDogVHlwZTxhbnk+O1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RlZEhlYWRlcnMkOiBPYnNlcnZhYmxlPEFycmF5PEhlYWRlckNvbHVtbj4+O1xuICAgIEBJbnB1dCgpIHB1YmxpYyBmaXJzdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBwdWJsaWMgbGFzdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSByZXNwb25zaXZlQm9keSA9IHRydWU7XG4gICAgQElucHV0KCkgcHJldmVudENvbGxhcHNlID0gZmFsc2U7XG4gICAgQElucHV0KCkgaGlkZVBhbmVsSGVhZGVyID0gZmFsc2U7XG4gICAgQElucHV0KCkgaGlkZUFjdGlvblJvdyA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGFjdGlvbkJ1dHRvblRlbXBsYXRlczogQXJyYXk8VGVtcGxhdGVSZWY8YW55Pj47XG4gICAgQElucHV0KCkgYWN0aW9uUm93SnVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyB8ICdmbGV4LXN0YXJ0JyB8ICdmbGV4LWVuZCcgfCAnY2VudGVyJyB8ICdzcGFjZS1hcm91bmQnIHxcbiAgICAgICAgJ2luaXRpYWwnIHwgJ3N0YXJ0JyB8ICdlbmQnIHwgJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdyZXZlcnQnIHwgJ2luaGVyaXQnIHwgJ3Vuc2V0J1xuICAgIEBJbnB1dCgpIHNob3dNb3JlTWVudTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICB0aGlzQ29udGV4dDogVGFza1BhbmVsQ29udGV4dCA9IHtcbiAgICAgICAgY2FuQXNzaWduOiAoKSA9PiB0aGlzLmNhbkFzc2lnbigpLFxuICAgICAgICBhc3NpZ246ICgpID0+IHRoaXMuYXNzaWduKCksXG4gICAgICAgIGdldEFzc2lnblRpdGxlOiAoKSA9PiB0aGlzLmdldEFzc2lnblRpdGxlKCksXG4gICAgICAgIGRlbGVnYXRlOiAoKSA9PiB0aGlzLmRlbGVnYXRlKCksXG4gICAgICAgIGdldERlbGVnYXRlVGl0bGU6ICgpID0+IHRoaXMuZ2V0RGVsZWdhdGVUaXRsZSgpLFxuICAgICAgICBjYW5SZWFzc2lnbjogKCkgPT4gdGhpcy5jYW5SZWFzc2lnbigpLFxuICAgICAgICBjYW5DYW5jZWw6ICgpID0+IHRoaXMuY2FuQ2FuY2VsKCksXG4gICAgICAgIGNhbmNlbDogKCkgPT4gdGhpcy5jYW5jZWwoKSxcbiAgICAgICAgZ2V0Q2FuY2VsVGl0bGU6ICgpID0+IHRoaXMuZ2V0Q2FuY2VsVGl0bGUoKSxcbiAgICAgICAgY2FuRmluaXNoOiAoKSA9PiB0aGlzLmNhbkZpbmlzaCgpLFxuICAgICAgICBmaW5pc2g6ICgpID0+IHRoaXMuZmluaXNoKCksXG4gICAgICAgIGdldEZpbmlzaFRpdGxlOiAoKSA9PiB0aGlzLmdldEZpbmlzaFRpdGxlKCksXG4gICAgICAgIGNhbkNvbGxhcHNlOiAoKSA9PiB0aGlzLmNhbkNvbGxhcHNlKCksXG4gICAgICAgIGNvbGxhcHNlOiAoKSA9PiB0aGlzLmNvbGxhcHNlKCksXG4gICAgICAgIGNhbkRpc2FibGU6IChhcmc6IHN0cmluZykgPT4gdGhpcy5jYW5EaXNhYmxlKGFyZyksXG4gICAgICAgIGNhbkRvOiAoYXJnOiBzdHJpbmcpID0+IHRoaXMuY2FuRG8oYXJnKSxcbiAgICAgICAgaXNMb2FkaW5nOiAoKSA9PiB0aGlzLmlzTG9hZGluZ1xuICAgIH07XG5cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZvcmNlTG9hZERhdGFPbk9wZW4oZm9yY2U6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZm9yY2VMb2FkRGF0YU9uT3BlbiA9IGZvcmNlO1xuICAgICAgICB0aGlzLl9hc3NpZ25Qb2xpY3lTZXJ2aWNlLmZvcmNlZCA9IGZvcmNlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHRleHRFbGxpcHNpcyA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIEVtaXRzIG5vdGlmaWNhdGlvbnMgYWJvdXQgdGFzayBldmVudHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGFza0V2ZW50OiBFdmVudEVtaXR0ZXI8VGFza0V2ZW50Tm90aWZpY2F0aW9uPjtcbiAgICBAT3V0cHV0KCkgcGFuZWxSZWZPdXRwdXQ6IEV2ZW50RW1pdHRlcjxNYXRFeHBhbnNpb25QYW5lbD47XG5cbiAgICBwdWJsaWMgcG9ydGFsOiBDb21wb25lbnRQb3J0YWw8YW55PjtcbiAgICBwdWJsaWMgcGFuZWxSZWY6IE1hdEV4cGFuc2lvblBhbmVsO1xuICAgIHByb3RlY3RlZCBfc3ViOiBTdWJzY3JpcHRpb247XG4gICAgcHJvdGVjdGVkIF9zdWJUYXNrRXZlbnQ6IFN1YnNjcmlwdGlvbjtcbiAgICBwcm90ZWN0ZWQgX3N1YlRhc2tEYXRhOiBTdWJzY3JpcHRpb247XG4gICAgcHJvdGVjdGVkIF9zdWJQYW5lbFVwZGF0ZTogU3Vic2NyaXB0aW9uO1xuICAgIHByb3RlY3RlZCBfdGFza0Rpc2FibGVCdXR0b25GdW5jdGlvbnM6IERpc2FibGVCdXR0b25GdW50aW9ucztcbiAgICBwcm90ZWN0ZWQgX3Vuc3ViOiBTdWJzY3JpcHRpb247XG4gICAgcHJvdGVjdGVkIF9jYW5SZWxvYWQ6IGJvb2xlYW47XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvdGVjdGVkIF90YXNrQ29udGVudFNlcnZpY2U6IFRhc2tDb250ZW50U2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2c6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdGFza1ZpZXdTZXJ2aWNlOiBUYXNrVmlld1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfcGFwZXJWaWV3OiBQYXBlclZpZXdTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3Rhc2tFdmVudFNlcnZpY2U6IFRhc2tFdmVudFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfYXNzaWduVGFza1NlcnZpY2U6IEFzc2lnblRhc2tTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2RlbGVnYXRlVGFza1NlcnZpY2U6IERlbGVnYXRlVGFza1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfY2FuY2VsVGFza1NlcnZpY2U6IENhbmNlbFRhc2tTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2ZpbmlzaFRhc2tTZXJ2aWNlOiBGaW5pc2hUYXNrU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF90YXNrU3RhdGU6IFRhc2tSZXF1ZXN0U3RhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3Rhc2tEYXRhU2VydmljZTogVGFza0RhdGFTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2Fzc2lnblBvbGljeVNlcnZpY2U6IEFzc2lnblBvbGljeVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfZmluaXNoUG9saWN5U2VydmljZTogRmluaXNoUG9saWN5U2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9jYWxsQ2hhaW46IENhbGxDaGFpblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdGFza09wZXJhdGlvbnM6IFN1YmplY3RUYXNrT3BlcmF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChOQUVfVEFTS19QQU5FTF9ESVNBQkxFX0JVVFRPTl9GVU5DVElPTlMpIHByb3RlY3RlZCBfZGlzYWJsZUZ1bmN0aW9uczogRGlzYWJsZUJ1dHRvbkZ1bnRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9jdXJyZW5jeVBpcGU6IEN1cnJlbmN5UGlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9jaGFuZ2VkRmllbGRzU2VydmljZTogQ2hhbmdlZEZpZWxkc1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfcGVybWlzc2lvblNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3VzZXJDb21wYXJhdG9yOiBVc2VyQ29tcGFyYXRvclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIG92ZXJmbG93U2VydmljZTogT3ZlcmZsb3dTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5BRV9UQVNLX0ZPUkNFX09QRU4pIHByb3RlY3RlZCBfdGFza0ZvcmNlT3BlbjogYm9vbGVhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChOQUVfVEFCX0RBVEEpIGluamVjdGVkVGFiRGF0YTogSW5qZWN0ZWRUYWJEYXRhKSB7XG4gICAgICAgIHN1cGVyKF90cmFuc2xhdGUsIF9jdXJyZW5jeVBpcGUsIG92ZXJmbG93U2VydmljZSk7XG4gICAgICAgIHRoaXMudGFza0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxUYXNrRXZlbnROb3RpZmljYXRpb24+KCk7XG4gICAgICAgIHRoaXMucGFuZWxSZWZPdXRwdXQgPSBuZXcgRXZlbnRFbWl0dGVyPE1hdEV4cGFuc2lvblBhbmVsPigpO1xuICAgICAgICB0aGlzLl9zdWJUYXNrRXZlbnQgPSBfdGFza0V2ZW50U2VydmljZS50YXNrRXZlbnROb3RpZmljYXRpb25zJC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgdGhpcy50YXNrRXZlbnQuZW1pdChldmVudCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9zdWJUYXNrRGF0YSA9IF9jaGFuZ2VkRmllbGRzU2VydmljZS5jaGFuZ2VkRmllbGRzJC5zdWJzY3JpYmUoKGNoYW5nZWRGaWVsZHNNYXA6IENoYW5nZWRGaWVsZHNNYXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkQ2FzZUlkczogQXJyYXk8c3RyaW5nPiA9IE9iamVjdC5rZXlzKGNoYW5nZWRGaWVsZHNNYXApLmZpbHRlcihcbiAgICAgICAgICAgICAgICBjYXNlSWQgPT4gT2JqZWN0LmtleXModGhpcy5fdGFza0NvbnRlbnRTZXJ2aWNlLnJlZmVyZW5jZWRUYXNrQW5kQ2FzZUlkcykuaW5jbHVkZXMoY2FzZUlkKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZWRGaWVsZHM6IEFycmF5PENoYW5nZWRGaWVsZHM+ID0gW107XG4gICAgICAgICAgICBmaWx0ZXJlZENhc2VJZHMuZm9yRWFjaChjYXNlSWQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhc2tJZHM6IEFycmF5PHN0cmluZz4gPSB0aGlzLl90YXNrQ29udGVudFNlcnZpY2UucmVmZXJlbmNlZFRhc2tBbmRDYXNlSWRzW2Nhc2VJZF07XG4gICAgICAgICAgICAgICAgY2hhbmdlZEZpZWxkcy5wdXNoKC4uLnRoaXMuX2NoYW5nZWRGaWVsZHNTZXJ2aWNlLnBhcnNlQ2hhbmdlZEZpZWxkc0J5Q2FzZUFuZFRhc2tJZHMoY2FzZUlkLCB0YXNrSWRzLCBjaGFuZ2VkRmllbGRzTWFwKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNoYW5nZWRGaWVsZHMuZmlsdGVyKGZpZWxkcyA9PiBmaWVsZHMgIT09IHVuZGVmaW5lZCkuZm9yRWFjaChmaWVsZHMgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGFza1BhbmVsRGF0YS5jaGFuZ2VkRmllbGRzLm5leHQoZmllbGRzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgX3Rhc2tPcGVyYXRpb25zLm9wZW4kLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmV4cGFuZCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgX3Rhc2tPcGVyYXRpb25zLmNsb3NlJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl90YXNrRm9yY2VPcGVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb2xsYXBzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgX3Rhc2tPcGVyYXRpb25zLnJlbG9hZCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3Rhc2tWaWV3U2VydmljZS5yZWxvYWRDdXJyZW50UGFnZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgX3Rhc2tPcGVyYXRpb25zLmZvcmNlUmVsb2FkJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdGFza1ZpZXdTZXJ2aWNlLnJlbG9hZEN1cnJlbnRQYWdlKHRydWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fdGFza0Rpc2FibGVCdXR0b25GdW5jdGlvbnMgPSB7XG4gICAgICAgICAgICBmaW5pc2g6ICh0OiBUYXNrKSA9PiBmYWxzZSxcbiAgICAgICAgICAgIGFzc2lnbjogKHQ6IFRhc2spID0+IGZhbHNlLFxuICAgICAgICAgICAgZGVsZWdhdGU6ICh0OiBUYXNrKSA9PiBmYWxzZSxcbiAgICAgICAgICAgIHJlYXNzaWduOiAodDogVGFzaykgPT4gZmFsc2UsXG4gICAgICAgICAgICBjYW5jZWw6ICh0OiBUYXNrKSA9PiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKF9kaXNhYmxlRnVuY3Rpb25zKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuX3Rhc2tEaXNhYmxlQnV0dG9uRnVuY3Rpb25zLCBfZGlzYWJsZUZ1bmN0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluamVjdGVkVGFiRGF0YSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5fdW5zdWIgPSBpbmplY3RlZFRhYkRhdGEudGFiU2VsZWN0ZWQkLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKGJvb2wgPT4gYm9vbCAmJiB0aGlzLmlzRXhwYW5kZWQoKSlcbiAgICAgICAgICAgICkuc3Vic2NyaWJlKCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NhblJlbG9hZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90YXNrRGF0YVNlcnZpY2UuaW5pdGlhbGl6ZVRhc2tEYXRhRmllbGRzKHRoaXMuX2NhbGxDaGFpbi5jcmVhdGUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFza1Nob3VsZEJlQmxvY2tlZCA9ICF0aGlzLl90YXNrQ29udGVudFNlcnZpY2UudGFza1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRoaXMuX3Rhc2tDb250ZW50U2VydmljZS50YXNrLnVzZXIgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICF0aGlzLl91c2VyQ29tcGFyYXRvci5jb21wYXJlVXNlcnModGhpcy5fdGFza0NvbnRlbnRTZXJ2aWNlLnRhc2sudXNlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90YXNrQ29udGVudFNlcnZpY2UuYmxvY2tGaWVsZHModGFza1Nob3VsZEJlQmxvY2tlZCk7XG4gICAgICAgICAgICAgICAgICAgIH0pLCB0cnVlKVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhblJlbG9hZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5fdGFza0NvbnRlbnRTZXJ2aWNlLnRhc2sgPSB0aGlzLl90YXNrUGFuZWxEYXRhLnRhc2s7XG5cbiAgICAgICAgdGhpcy5jcmVhdGVDb250ZW50UG9ydGFsKCk7XG4gICAgICAgIHRoaXMuX3N1YiA9IHRoaXMuX3Rhc2tQYW5lbERhdGEuY2hhbmdlZEZpZWxkcy5zdWJzY3JpYmUoY2hGaWVsZHMgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdGFza0NvbnRlbnRTZXJ2aWNlLnVwZGF0ZUZyb21DaGFuZ2VkRmllbGRzKGNoRmllbGRzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fc3ViUGFuZWxVcGRhdGUgPSB0aGlzLl90YXNrVmlld1NlcnZpY2UucGFuZWxVcGRhdGUucGlwZShcbiAgICAgICAgICAgIG1hcChhID0+IGEuZmluZChwID0+IHAudGFzay5zdHJpbmdJZCA9PT0gdGhpcy50YXNrUGFuZWxEYXRhLnRhc2suc3RyaW5nSWQpKSxcbiAgICAgICAgICAgIGZpbHRlcihwID0+ICEhcClcbiAgICAgICAgKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZXNvbHZlRmVhdHVyZWRGaWVsZHNWYWx1ZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLnBhbmVsUmVmLm9wZW5lZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdGFza0NvbnRlbnRTZXJ2aWNlLmV4cGFuc2lvblN0YXJ0ZWQoKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5fdGFza1N0YXRlLmlzTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYXNzaWduUG9saWN5U2VydmljZS5wZXJmb3JtQXNzaWduUG9saWN5KHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wYW5lbFJlZi5jbG9zZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5fdGFza1N0YXRlLmlzTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYXNzaWduUG9saWN5U2VydmljZS5wZXJmb3JtQXNzaWduUG9saWN5KGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucGFuZWxSZWYuYWZ0ZXJFeHBhbmQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3Rhc2tDb250ZW50U2VydmljZS4kc2hvdWxkQ3JlYXRlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl90YXNrQ29udGVudFNlcnZpY2UuYmxvY2tGaWVsZHModGhpcy5oYXNOb0ZpbmlzaFBlcm1pc3Npb24oKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFza1BhbmVsRGF0YS5pbml0aWFsbHlFeHBhbmRlZCA9IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX3Rhc2tDb250ZW50U2VydmljZS5leHBhbnNpb25GaW5pc2hlZCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wYW5lbFJlZi5hZnRlckNvbGxhcHNlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl90YXNrUGFuZWxEYXRhLmluaXRpYWxseUV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLl90YXNrUGFuZWxEYXRhLmluaXRpYWxseUV4cGFuZGVkIHx8IHRoaXMuX3Rhc2tGb3JjZU9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMucGFuZWxSZWYuZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGNyZWF0ZUNvbnRlbnRQb3J0YWwoKTogdm9pZDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCB0YXNrUGFuZWxEYXRhKGRhdGE6IFRhc2tQYW5lbERhdGEpIHtcbiAgICAgICAgdGhpcy5fdGFza1BhbmVsRGF0YSA9IGRhdGE7XG4gICAgICAgIHRoaXMucmVzb2x2ZUZlYXR1cmVkRmllbGRzVmFsdWVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0YXNrUGFuZWxEYXRhKCk6IFRhc2tQYW5lbERhdGEge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFza1BhbmVsRGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzTG9hZGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rhc2tTdGF0ZS5pc0xvYWRpbmcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RvcExvYWRpbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Rhc2tTdGF0ZS5zdG9wTG9hZGluZyh0aGlzLl90YXNrUGFuZWxEYXRhLnRhc2suc3RyaW5nSWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmV2ZW50UGFuZWxPcGVuKCRldmVudDogTW91c2VFdmVudCk6IGJvb2xlYW4ge1xuICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNQYXBlclZpZXcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXBlclZpZXcucGFwZXJWaWV3O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRQYW5lbFJlZihwYW5lbFJlZjogTWF0RXhwYW5zaW9uUGFuZWwpIHtcbiAgICAgICAgdGhpcy5wYW5lbFJlZiA9IHBhbmVsUmVmO1xuICAgICAgICB0aGlzLnBhbmVsUmVmT3V0cHV0LmVtaXQocGFuZWxSZWYpO1xuICAgIH1cblxuICAgIGFzc2lnbigpIHtcbiAgICAgICAgdGhpcy5fYXNzaWduVGFza1NlcnZpY2UuYXNzaWduKHRoaXMuX2NhbGxDaGFpbi5jcmVhdGUoKGFmdGVyQWN0aW9uID0+IHtcbiAgICAgICAgICAgIGlmIChhZnRlckFjdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Rhc2tEYXRhU2VydmljZS5pbml0aWFsaXplVGFza0RhdGFGaWVsZHMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9maW5pc2hQb2xpY3lTZXJ2aWNlLnBlcmZvcm1GaW5pc2hQb2xpY3koKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpKTtcbiAgICB9XG5cbiAgICBkZWxlZ2F0ZSgpIHtcbiAgICAgICAgdGhpcy5fZGVsZWdhdGVUYXNrU2VydmljZS5kZWxlZ2F0ZSgpO1xuICAgIH1cblxuICAgIGNhbmNlbCgpIHtcbiAgICAgICAgdGhpcy5fY2FuY2VsVGFza1NlcnZpY2UuY2FuY2VsKHRoaXMuX2NhbGxDaGFpbi5jcmVhdGUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdGFza09wZXJhdGlvbnMucmVsb2FkKCk7XG4gICAgICAgICAgICB0aGlzLl90YXNrT3BlcmF0aW9ucy5jbG9zZSgpO1xuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgZmluaXNoKCkge1xuICAgICAgICBpZiAoIXRoaXMuX3Rhc2tDb250ZW50U2VydmljZS52YWxpZGF0ZVRhc2tEYXRhKCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl90YXNrQ29udGVudFNlcnZpY2UudGFzay5kYXRhU2l6ZSA8PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFza0RhdGFTZXJ2aWNlLmluaXRpYWxpemVUYXNrRGF0YUZpZWxkcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaW52YWxpZEZpZWxkcyA9IHRoaXMuX3Rhc2tDb250ZW50U2VydmljZS5nZXRJbnZhbGlkVGFza0RhdGEoKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGludmFsaWRGaWVsZHNbMF0uc3RyaW5nSWQpLnNjcm9sbEludG9WaWV3KHtcbiAgICAgICAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgICAgICAgICAgYmxvY2s6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgaW5saW5lOiAnbmVhcmVzdCdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZmluaXNoVGFza1NlcnZpY2UudmFsaWRhdGVEYXRhQW5kRmluaXNoKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb2xsYXBzZSgpIHtcbiAgICAgICAgdGhpcy5wYW5lbFJlZi5jbG9zZSgpO1xuICAgICAgICB0aGlzLnBhbmVsUmVmLmV4cGFuZGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgZXhwYW5kKCkge1xuICAgICAgICB0aGlzLnBhbmVsUmVmLm9wZW4oKTtcbiAgICAgICAgdGhpcy5wYW5lbFJlZi5leHBhbmRlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbkFzc2lnbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Blcm1pc3Npb25TZXJ2aWNlLmNhbkFzc2lnbih0aGlzLnRhc2tQYW5lbERhdGEudGFzaykgJiYgdGhpcy5nZXRBc3NpZ25UaXRsZSgpICE9PSAnJztcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FuUmVhc3NpZ24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wZXJtaXNzaW9uU2VydmljZS5jYW5SZWFzc2lnbih0aGlzLnRhc2tQYW5lbERhdGEudGFzayk7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbkNhbmNlbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Blcm1pc3Npb25TZXJ2aWNlLmNhbkNhbmNlbCh0aGlzLnRhc2tQYW5lbERhdGEudGFzaykgJiYgdGhpcy5nZXRDYW5jZWxUaXRsZSgpICE9PSAnJztcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FuRmluaXNoKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGVybWlzc2lvblNlcnZpY2UuY2FuRmluaXNoKHRoaXMudGFza1BhbmVsRGF0YS50YXNrKSAmJiB0aGlzLmdldEZpbmlzaFRpdGxlKCkgIT09ICcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzTm9GaW5pc2hQZXJtaXNzaW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuX3Blcm1pc3Npb25TZXJ2aWNlLmNhbkZpbmlzaCh0aGlzLnRhc2tQYW5lbERhdGEudGFzaylcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FuQ29sbGFwc2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YXNrRm9yY2VPcGVuID8gZmFsc2UgOiB0aGlzLl9wZXJtaXNzaW9uU2VydmljZS5jYW5Db2xsYXBzZSh0aGlzLnRhc2tQYW5lbERhdGEudGFzayk7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbkRvKGFjdGlvbik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGVybWlzc2lvblNlcnZpY2UuaGFzVGFza1Blcm1pc3Npb24odGhpcy50YXNrUGFuZWxEYXRhLnRhc2ssIGFjdGlvbikgJiYgdGhpcy5nZXREZWxlZ2F0ZVRpdGxlKCkgIT09ICcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBc3NpZ25UaXRsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKHRoaXMudGFza1BhbmVsRGF0YS50YXNrLmFzc2lnblRpdGxlID09PSAnJyB8fCB0aGlzLnRhc2tQYW5lbERhdGEudGFzay5hc3NpZ25UaXRsZSlcbiAgICAgICAgICAgID8gdGhpcy50YXNrUGFuZWxEYXRhLnRhc2suYXNzaWduVGl0bGUgOiAndGFza3Mudmlldy5hc3NpZ24nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDYW5jZWxUaXRsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKHRoaXMudGFza1BhbmVsRGF0YS50YXNrLmNhbmNlbFRpdGxlID09PSAnJyB8fCB0aGlzLnRhc2tQYW5lbERhdGEudGFzay5jYW5jZWxUaXRsZSlcbiAgICAgICAgICAgID8gdGhpcy50YXNrUGFuZWxEYXRhLnRhc2suY2FuY2VsVGl0bGUgOiAndGFza3Mudmlldy5jYW5jZWwnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREZWxlZ2F0ZVRpdGxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAodGhpcy50YXNrUGFuZWxEYXRhLnRhc2suZGVsZWdhdGVUaXRsZSA9PT0gJycgfHwgdGhpcy50YXNrUGFuZWxEYXRhLnRhc2suZGVsZWdhdGVUaXRsZSlcbiAgICAgICAgICAgID8gdGhpcy50YXNrUGFuZWxEYXRhLnRhc2suZGVsZWdhdGVUaXRsZSA6ICd0YXNrcy52aWV3LmRlbGVnYXRlJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmluaXNoVGl0bGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnRhc2tQYW5lbERhdGEudGFzay5maW5pc2hUaXRsZSA9PT0gJycgfHwgdGhpcy50YXNrUGFuZWxEYXRhLnRhc2suZmluaXNoVGl0bGUpXG4gICAgICAgICAgICA/IHRoaXMudGFza1BhbmVsRGF0YS50YXNrLmZpbmlzaFRpdGxlIDogJ3Rhc2tzLnZpZXcuZmluaXNoJztcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FuRGlzYWJsZSh0eXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGRpc2FibGUgPSBmYWxzZTtcbiAgICAgICAgaWYgKCEhdGhpcy50YXNrUGFuZWxEYXRhICYmICEhdGhpcy50YXNrUGFuZWxEYXRhLnRhc2spIHtcbiAgICAgICAgICAgIGRpc2FibGUgPSBkaXNhYmxlXG4gICAgICAgICAgICAgICAgfHwgISF0aGlzLl90YXNrU3RhdGUuaXNMb2FkaW5nKHRoaXMudGFza1BhbmVsRGF0YS50YXNrLnN0cmluZ0lkKVxuICAgICAgICAgICAgICAgIHx8ICEhdGhpcy5fdGFza1N0YXRlLmlzVXBkYXRpbmcodGhpcy50YXNrUGFuZWxEYXRhLnRhc2suc3RyaW5nSWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkaXNhYmxlIHx8IHRoaXMuX3Rhc2tEaXNhYmxlQnV0dG9uRnVuY3Rpb25zW3R5cGVdKHsuLi50aGlzLl90YXNrQ29udGVudFNlcnZpY2UudGFza30pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGZWF0dXJlZE1ldGFWYWx1ZShzZWxlY3RlZEhlYWRlcjogSGVhZGVyQ29sdW1uKTogRmVhdHVyZWRWYWx1ZSB7XG4gICAgICAgIGNvbnN0IHRhc2sgPSB0aGlzLl90YXNrUGFuZWxEYXRhLnRhc2s7XG4gICAgICAgIHN3aXRjaCAoc2VsZWN0ZWRIZWFkZXIuZmllbGRJZGVudGlmaWVyKSB7XG4gICAgICAgICAgICBjYXNlIFRhc2tNZXRhRmllbGQuQ0FTRTpcbiAgICAgICAgICAgICAgICByZXR1cm4ge3ZhbHVlOiB0YXNrLmNhc2VUaXRsZSwgaWNvbjogJycsIHR5cGU6ICdtZXRhJ307XG4gICAgICAgICAgICBjYXNlIFRhc2tNZXRhRmllbGQuQ0FTRV9JRDpcbiAgICAgICAgICAgICAgICByZXR1cm4ge3ZhbHVlOiB0YXNrLmNhc2VJZCwgaWNvbjogJycsIHR5cGU6ICdtZXRhJ307XG4gICAgICAgICAgICBjYXNlIFRhc2tNZXRhRmllbGQuVEFTS19JRDpcbiAgICAgICAgICAgICAgICByZXR1cm4ge3ZhbHVlOiB0YXNrLnN0cmluZ0lkLCBpY29uOiAnJywgdHlwZTogJ21ldGEnfTtcbiAgICAgICAgICAgIGNhc2UgVGFza01ldGFGaWVsZC5USVRMRTpcbiAgICAgICAgICAgICAgICByZXR1cm4ge3ZhbHVlOiB0YXNrLnRpdGxlLCBpY29uOiAnJywgdHlwZTogJ21ldGEnfTtcbiAgICAgICAgICAgIGNhc2UgVGFza01ldGFGaWVsZC5QUklPUklUWTpcbiAgICAgICAgICAgICAgICAvLyBUT0RPIHByaW9yaXR5XG4gICAgICAgICAgICAgICAgaWYgKCF0YXNrLnByaW9yaXR5IHx8IHRhc2sucHJpb3JpdHkgPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7dmFsdWU6ICdoaWdoJywgaWNvbjogJ2Vycm9yJywgdHlwZTogJ21ldGEnfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRhc2sucHJpb3JpdHkgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZTogJ21lZGl1bScsIGljb246ICdub3J0aCcsIHR5cGU6ICdtZXRhJ307XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB7dmFsdWU6ICdsb3cnLCBpY29uOiAnc291dGgnLCB0eXBlOiAnbWV0YSd9O1xuICAgICAgICAgICAgY2FzZSBUYXNrTWV0YUZpZWxkLlVTRVI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZTogdGFzay51c2VyID8gdGFzay51c2VyLmZ1bGxOYW1lIDogJycsIGljb246ICdhY2NvdW50X2NpcmNsZScsIHR5cGU6ICdtZXRhJ307XG4gICAgICAgICAgICBjYXNlIFRhc2tNZXRhRmllbGQuQVNTSUdOX0RBVEU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRhc2suc3RhcnREYXRlID8gdG9Nb21lbnQodGFzay5zdGFydERhdGUpLmZvcm1hdChEQVRFX1RJTUVfRk9STUFUX1NUUklORykgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2V2ZW50JyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ21ldGEnXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGZWF0dXJlZEltbWVkaWF0ZVZhbHVlKHNlbGVjdGVkSGVhZGVyOiBIZWFkZXJDb2x1bW4pOiBGZWF0dXJlZFZhbHVlIHtcbiAgICAgICAgaWYgKHRoaXMuX3Rhc2tDb250ZW50U2VydmljZS50YXNrICYmIHRoaXMuX3Rhc2tDb250ZW50U2VydmljZS50YXNrLmltbWVkaWF0ZURhdGEpIHtcbiAgICAgICAgICAgIGNvbnN0IGltbWVkaWF0ZSA9IHRoaXMuX3Rhc2tDb250ZW50U2VydmljZS50YXNrLmltbWVkaWF0ZURhdGEuZmluZChpdCA9PiBpdC5zdHJpbmdJZCA9PT0gc2VsZWN0ZWRIZWFkZXIuZmllbGRJZGVudGlmaWVyKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlSW1tZWRpYXRlVmFsdWUoaW1tZWRpYXRlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge3ZhbHVlOiAnJywgaWNvbjogJycsIHR5cGU6ICcnfTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5fc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3N1YlRhc2tFdmVudC51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9zdWJUYXNrRGF0YS51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl90YXNrT3BlcmF0aW9ucy5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX3N1YlBhbmVsVXBkYXRlLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMudGFza0V2ZW50LmNvbXBsZXRlKCk7XG4gICAgICAgIGlmICh0aGlzLl91bnN1Yikge1xuICAgICAgICAgICAgdGhpcy5fdW5zdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpc0ZvcmNlT3BlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rhc2tGb3JjZU9wZW4gJiYgISF0aGlzLnRhc2tMaXN0VmlydHVhbFNjcm9sbD8uZ2V0RWxlbWVudFJlZigpPy5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDb250ZW50TWluSGVpZ2h0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhc2tMaXN0VmlydHVhbFNjcm9sbC5nZXRFbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgLSAzMiArICdweCc7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRXhwYW5kZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhbmVsUmVmPy5leHBhbmRlZCAmJiAhdGhpcy5fdGFza0NvbnRlbnRTZXJ2aWNlPy5pc0V4cGFuZGluZztcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvcmVzb3VyY2VzL2ludGVyZmFjZS9jYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0F1dGhvcn0gZnJvbSAnLi9hdXRob3InO1xuaW1wb3J0IHtQZXRyaU5ldE9iamVjdElkfSBmcm9tICcuL3BldHJpLW5ldC1vYmplY3QtaWQnO1xuaW1wb3J0IHtJbW1lZGlhdGVEYXRhfSBmcm9tICcuL2ltbWVkaWF0ZS1kYXRhJztcbmltcG9ydCB7TmFlRGF0ZX0gZnJvbSAnLi4vdHlwZXMvbmFlLWRhdGUtdHlwZSc7XG5pbXBvcnQge1Blcm1pc3Npb25zLCBVc2VyUGVybWlzc2lvbnMsIFVzZXJSZWZzfSBmcm9tICcuLi8uLi9wcm9jZXNzL3Blcm1pc3Npb25zJztcbmltcG9ydCB7IFRhc2tQYWlyIH0gZnJvbSAnLi90YXNrLXBhaXInO1xuXG4vKipcbiAqIE9iamVjdCBmcm9tIEJhY2tlbmRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXNlIHtcbiAgICAvKipcbiAgICAgKiAqKkV4YW1wbGU6KiogW1xuICAgICAqIDIwMjAsXG4gICAgICogMyxcbiAgICAgKiAxNyxcbiAgICAgKiA3LFxuICAgICAqIDUwLFxuICAgICAqIDMyLFxuICAgICAqIDI0MDAwMDAwMFxuICAgICAqICBdXG4gICAgICovXG4gICAgbGFzdE1vZGlmaWVkOiBOYWVEYXRlO1xuICAgIGxhc3RNb2RpZmllZERhdGFTZXQ/OiBOYWVEYXRlIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqICoqRXhhbXBsZToqKiBQRVItMTY2OTk2NTk4MFxuICAgICAqL1xuICAgIHZpc3VhbElkOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogKipFeGFtcGxlOioqXG4gICAgICpcbiAgICAgKiAgICB7XG4gICAgICogICAgIFwidGltZXN0YW1wXCI6IDE1ODIwOTMxOTQsXG4gICAgICogICAgIFwibWFjaGluZUlkZW50aWZpZXJcIjogNjk0MTA2LFxuICAgICAqICAgICBcInByb2Nlc3NJZGVudGlmaWVyXCI6IDY1MzMsXG4gICAgICogICAgIFwiY291bnRlclwiOiA4ODY2MTg2LFxuICAgICAqICAgICBcInRpbWVcIjogMTU4MjA5MzE5NDAwMCxcbiAgICAgKiAgICAgXCJkYXRlXCI6IDE1ODIwOTMxOTQwMDAsXG4gICAgICogICAgIFwidGltZVNlY29uZFwiOiAxNTgyMDkzMTk0XG4gICAgICogICAgfVxuICAgICAqL1xuICAgIHBldHJpTmV0T2JqZWN0SWQ6IFBldHJpTmV0T2JqZWN0SWQ7XG4gICAgLyoqXG4gICAgICogKipFeGFtcGxlOioqIHBlcnNvbmFsX2luZm9ybWF0aW9uXG4gICAgICovXG4gICAgcHJvY2Vzc0lkZW50aWZpZXI6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFVyaSBub2RlIElEXG4gICAgICogKi9cblxuICAgIC8qKlxuICAgICAqICoqRXhhbXBsZToqKiBOZXcgaW5zdGFuY2UgLSBQZXJzb25hbCBpbmZvcm1hdGlvblxuICAgICAqL1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogKipFeGFtcGxlOioqIGNvbG9yLWZnLWFtYmVyLTUwMFxuICAgICAqL1xuICAgIGNvbG9yOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogKipFeGFtcGxlOioqICBbXG4gICAgICogMjAyMCxcbiAgICAgKiAzLFxuICAgICAqIDUsXG4gICAgICogMTEsXG4gICAgICogMzUsXG4gICAgICogMzQsXG4gICAgICogODgwMDAwMDAwXG4gICAgICogXVxuICAgICAqL1xuICAgIGNyZWF0aW9uRGF0ZTogTmFlRGF0ZTtcbiAgICAvKipcbiAgICAgKiAqKkV4YW1wbGU6KipcbiAgICAgKlxuICAgICAqICAgIFt7XG4gICAgICogICAgICBcImltcG9ydElkXCI6IFwiem96bmFtXCIsXG4gICAgICogICAgICBcIm5hbWVcIjoge1xuICAgICAqICAgICAgICAgICAgICAgXCJkZWZhdWx0VmFsdWVcIjogXCJab3puYW0gdm96aWRpZWxcIixcbiAgICAgKiAgICAgICAgICAgICAgIFwidHJhbnNsYXRpb25zXCI6IHt9XG4gICAgICogICAgICB9LFxuICAgICAqICAgICAgXCJkZXNjcmlwdGlvblwiOiB7XG4gICAgICogICAgICAgICAgICAgICBcImRlZmF1bHRWYWx1ZVwiOiBcIlPDumJvciBvYnNhaHVqw7pjaXrDoXpuYW15IG8gdm96aWRsw6FjaC5cIixcbiAgICAgKiAgICAgICAgICAgICAgIFwidHJhbnNsYXRpb25zXCI6IHt9XG4gICAgICogICAgICAgfSxcbiAgICAgKiAgICAgICBcIm9yZGVyXCI6IDAsXG4gICAgICogICAgICAgXCJyZW1vdGVcIjogZmFsc2UsXG4gICAgICogICAgICAgXCJ0eXBlXCI6IFwiZmlsZVwiLFxuICAgICAqICAgICAgIFwic3RyaW5nSWRcIjogXCJ6b3puYW1cIlxuICAgICAqICAgIH1dXG4gICAgICpcbiAgICAgKi9cbiAgICBpbW1lZGlhdGVEYXRhOiBBcnJheTxJbW1lZGlhdGVEYXRhPjtcbiAgICAvKipcbiAgICAgKiAqKkV4YW1wbGU6Kioge1xuICAgICAqXG4gICAgICogXCJlbWFpbFwiOiBcImV4YW1wbGVAbmV0Z3JpZi5jb21cIixcbiAgICAgKlxuICAgICAqIFwiZnVsbE5hbWVcIjogXCJFeGFtcGxlIE5ldGdyaWZcIlxuICAgICAqXG4gICAgICogfVxuICAgICAqL1xuICAgIGF1dGhvcjogQXV0aG9yO1xuICAgIC8qKlxuICAgICAqICoqRXhhbXBsZToqKiB7fVxuICAgICAqL1xuICAgIHJlc2V0QXJjVG9rZW5zOiBvYmplY3Q7XG4gICAgLyoqXG4gICAgICogKipFeGFtcGxlOioqIDVlNGNkNTNjMGE5NzVhMTk4NTg3N2I2M1xuICAgICAqL1xuICAgIHN0cmluZ0lkOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogKipFeGFtcGxlOioqIDVlNGNkNTA3MGE5NzVhMTk4NTg3NzJhYVxuICAgICAqL1xuICAgIHBldHJpTmV0SWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiAqKkV4YW1wbGU6KiogaG9tZVxuICAgICAqL1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogKipFeGFtcGxlOioqIHt9XG4gICAgICovXG4gICAgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25zO1xuICAgIC8qKlxuICAgICAqICoqRXhhbXBsZToqKiB7fVxuICAgICAqL1xuICAgIHVzZXJzPzogVXNlclBlcm1pc3Npb25zO1xuICAgIHVzZXJSZWZzPzogVXNlclJlZnM7XG4gICAgLyoqXG4gICAgICogKipFeGFtcGxlOioqIFtdXG4gICAgICovXG4gICAgdmlld1JvbGVzPzogQXJyYXk8c3RyaW5nPjtcbiAgICAvKipcbiAgICAgKiBTZXQgb2YgVGFza1BhaXJcbiAgICAgKiAqL1xuICAgIHRhc2tzPzogQXJyYXk8VGFza1BhaXI+O1xufVxuXG5cbiJdfQ==
|