myrta-ui 17.0.98 → 17.1.0
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/esm2022/lib/components/form/input-file-image/input-file-image.component.mjs +6 -1
- package/esm2022/lib/services/save-store/store/reducer.mjs +16 -33
- package/fesm2022/myrta-ui.mjs +20 -31
- package/fesm2022/myrta-ui.mjs.map +1 -1
- package/lib/components/form/input-file-image/input-file-image.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -14,6 +14,7 @@ export class InputFileImageComponent {
|
|
|
14
14
|
imageUploadService;
|
|
15
15
|
_modalService;
|
|
16
16
|
_detector;
|
|
17
|
+
isProcessing = false;
|
|
17
18
|
formatBytes = formatBytes;
|
|
18
19
|
extensions;
|
|
19
20
|
allowedExtensions = [];
|
|
@@ -147,6 +148,9 @@ export class InputFileImageComponent {
|
|
|
147
148
|
}
|
|
148
149
|
changePreview(event, file) {
|
|
149
150
|
event.stopPropagation();
|
|
151
|
+
if (this.isProcessing)
|
|
152
|
+
return;
|
|
153
|
+
this.isProcessing = true;
|
|
150
154
|
getBase64FromUrl(this.downloadUrl(file)).then((base64Url) => {
|
|
151
155
|
this._modalService.open(FileImageEditModalComponent, {
|
|
152
156
|
title: 'РЕДАКТИРОВАНИЕ ИЗОБРАЖЕНИЯ',
|
|
@@ -161,6 +165,7 @@ export class InputFileImageComponent {
|
|
|
161
165
|
if (res.result && res.fileImage) {
|
|
162
166
|
this._updateFile(file, res.fileImage);
|
|
163
167
|
}
|
|
168
|
+
this.isProcessing = false;
|
|
164
169
|
});
|
|
165
170
|
});
|
|
166
171
|
}
|
|
@@ -353,4 +358,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
353
358
|
}], filesChanged: [{
|
|
354
359
|
type: Output
|
|
355
360
|
}] } });
|
|
356
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZS1pbWFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC1maWxlLWltYWdlL2lucHV0LWZpbGUtaW1hZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtZmlsZS1pbWFnZS9pbnB1dC1maWxlLWltYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEYsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFhLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxzQkFBc0IsRUFBMkIsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUFVMUYsTUFBTSxPQUFPLHVCQUF1QjtJQTBEeEI7SUFDQTtJQUNBO0lBM0RWLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDMUIsVUFBVSxDQUFVO0lBQ3BCLGlCQUFpQixHQUFhLEVBQUUsQ0FBQztJQUNqQyxLQUFLLEdBQXFCLEVBQUUsQ0FBQztJQUViLElBQUksR0FBNEIsU0FBUyxDQUFDO0lBRTFDLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDbkIsV0FBVyxDQUFVO0lBQ3JCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixPQUFPLEdBQUcsUUFBUSxDQUFDO0lBQ25CLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDYixRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBRTdCLGdEQUFnRDtJQUNoQyxRQUFRLEdBQVEsRUFBRSxDQUFDO0lBRW5DLFVBQVU7SUFDTSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLGdCQUFnQixHQUFHLENBQUMsQ0FBQztJQUNyQixXQUFXLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQixtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFFNUIsY0FBYyxDQUFVO0lBQ3hCLGNBQWMsQ0FBVTtJQUN4QixnQkFBZ0IsQ0FBVTtJQUUxQixhQUFhLENBQW9FO0lBRWpHLElBQ0ksU0FBUyxDQUFDLElBQTZDO1FBQ3pELElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBQyxHQUFHLElBQUksRUFBQyxDQUFDLENBQUM7WUFDM0IsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUNXLHFCQUFxQixDQUFDLEdBQWE7UUFDNUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUM7WUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVnQixZQUFZLEdBQW1DLElBQUksWUFBWSxFQUFFLENBQUM7SUFFbkYsWUFDVSxrQkFBcUMsRUFDckMsYUFBMkIsRUFDM0IsU0FBNEI7UUFGNUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQixjQUFTLEdBQVQsU0FBUyxDQUFtQjtJQUV0QyxDQUFDO0lBRUQsSUFBVyxxQkFBcUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBQzdCLHNCQUFzQixDQUFDLENBQUM7WUFDeEIsOEVBQThFLENBQUM7SUFDbkYsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBVyxrQkFBa0I7UUFDM0IsT0FBTyw2QkFBNkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsc0NBQXNDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ3BHLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDZixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDL0IsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZO0lBRXBCLENBQUM7SUFFTSxPQUFPLENBQUMsS0FBeUI7UUFDdEMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdCLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsU0FBZ0MsQ0FBQztZQUUvRCxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBVSxFQUFFLEVBQUU7Z0JBQzVCLE1BQU0sSUFBSSxHQUFtQjtvQkFDM0IsRUFBRSxFQUFFLEVBQUU7b0JBQ04sUUFBUSxFQUFFLE1BQU0sRUFBRTtvQkFDbEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO29CQUNmLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSTtvQkFDakIsU0FBUyxFQUFFLElBQUk7b0JBQ2YsVUFBVSxFQUFFLENBQUM7b0JBQ2IsSUFBSSxFQUFFLElBQUk7aUJBQ08sQ0FBQztnQkFFcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxzQkFBc0IsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN4QixDQUFDO2dCQUVELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUV0QixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLHNCQUFzQixDQUFDO29CQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDekIsQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDO29CQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDekIsQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FDbkUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNoRSxJQUFJLENBQUMsS0FBSyxHQUFHLHVCQUF1QixDQUFDO29CQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDekIsQ0FBQztnQkFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRTt3QkFDbkQsS0FBSyxFQUFFLDRCQUE0Qjt3QkFDbkMsU0FBUyxFQUFFLElBQUk7d0JBQ2YsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO3dCQUNyQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO3dCQUN2QyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7d0JBQzdCLG1CQUFtQixFQUFFLElBQUksQ0FBQyxtQkFBbUI7cUJBQzlDLEVBQUUsRUFBRSxDQUFDO3lCQUNILFdBQVcsRUFBRTt5QkFDYixTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTt3QkFDakIsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQzs0QkFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFBOzRCQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO3dCQUN4QixDQUFDOzZCQUFNLENBQUM7NEJBQ04sTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTs0QkFFdkUsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQ0FDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsQ0FBQTs0QkFDN0QsQ0FBQzt3QkFDSCxDQUFDO29CQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNQLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQVUsRUFBRSxJQUFvQjtRQUNuRCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQWMsRUFBRSxFQUFFO1lBQy9ELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLDJCQUEyQixFQUFFO2dCQUNuRCxLQUFLLEVBQUUsNEJBQTRCO2dCQUNuQyxTQUFTLEVBQUUsbUJBQW1CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLFdBQVcsQ0FBQztnQkFDdkUsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO2dCQUNyQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO2dCQUN2QyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQzdCLG1CQUFtQixFQUFFLElBQUksQ0FBQyxtQkFBbUI7YUFDOUMsRUFBRSxFQUFFLENBQUM7aUJBQ0gsV0FBVyxFQUFFO2lCQUNiLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3hDLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFVLEVBQUUsSUFBb0I7UUFDNUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7Z0JBQzlCLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQW9CO1FBQy9CLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9CLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0MsSUFBSSxXQUFXLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBRU0sV0FBVyxDQUFDLElBQXVCO1FBQ3hDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6RCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztJQUNILENBQUM7SUFFTSxRQUFRLENBQUMsS0FBVTtJQUMxQixDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQVU7SUFDM0IsQ0FBQztJQUVPLGFBQWEsQ0FBQyxHQUFXLEVBQUUsSUFBdUI7UUFDeEQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDckMsQ0FBQztJQUVPLGFBQWE7UUFDbkIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sZUFBZTtRQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzVCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sV0FBVyxDQUFDLElBQW9CO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFeEQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN4QixRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFFekIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUNyRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNyQyxDQUFDLENBQUMsQ0FBQztZQUVMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxPQUF1QixFQUFFLE9BQWE7UUFDeEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFpQixFQUFFLEVBQUU7WUFDckQsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUNoQixPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxDQUFDLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQyxRQUFRLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxHQUFtQjtnQkFDM0IsRUFBRSxFQUFFLEVBQUU7Z0JBQ04sUUFBUSxFQUFFLE1BQU0sRUFBRTtnQkFDbEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO2dCQUNsQixNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUk7Z0JBQ3BCLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFVBQVUsRUFBRSxDQUFDO2dCQUNiLElBQUksRUFBRSxPQUFPO2FBQ0ksQ0FBQztZQUVwQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDeEIsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBRXpCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDckUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ25ELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUV2QixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNqQyxDQUFDLENBQUMsQ0FBQztZQUVMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNqQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsSUFBb0I7UUFDdEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRW5DLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDakYsVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUN2QixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUNIO2lCQUNFLFNBQVMsQ0FBQyxDQUFDLEtBQXFDLEVBQUUsRUFBRTtnQkFDbkQsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ25CLEtBQUssYUFBYSxDQUFDLElBQUk7d0JBQ3JCLE1BQU07b0JBQ1IsS0FBSyxhQUFhLENBQUMsY0FBYzt3QkFDL0IsTUFBTTtvQkFDUixLQUFLLGFBQWEsQ0FBQyxjQUFjO3dCQUMvQixJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQzs0QkFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQzt3QkFDakUsQ0FBQzt3QkFDRCxNQUFNO29CQUNSLEtBQUssYUFBYSxDQUFDLFFBQVE7d0JBQ3pCLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDOzRCQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDOzRCQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQzs0QkFDcEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzs0QkFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7NEJBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7NEJBRWhDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dDQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDOzRCQUMvQixDQUFDOzRCQUNELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dDQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ3JDLENBQUM7NEJBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQzt3QkFDakMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQzt3R0FyVlUsdUJBQXVCOzRGQUF2Qix1QkFBdUIscXNCQzVCcEMsNHpPQXVKQTs7NEZEM0hhLHVCQUF1QjtrQkFSbkMsU0FBUzsrQkFDRSxzQkFBc0IsaUJBR2pCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07aUpBUy9CLElBQUk7c0JBQW5CLEtBQUs7Z0JBRVUsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFHVSxRQUFRO3NCQUF2QixLQUFLO2dCQUdVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsbUJBQW1CO3NCQUFsQyxLQUFLO2dCQUVVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBRVUsYUFBYTtzQkFBNUIsS0FBSztnQkFHRixTQUFTO3NCQURaLEtBQUs7dUJBQUMsT0FBTztnQkFjSCxxQkFBcUI7c0JBRC9CLEtBQUs7dUJBQUMsbUJBQW1CO2dCQVdULFlBQVk7c0JBQTVCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElucHV0RmlsZU1vZGVsLCBVcGxvYWRlZEZpbGVNb2RlbCwgVXBsb2FkZWRSZXN1bHRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRTZXJ2aWNlLCBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEZpbGVTeXN0ZW1GaWxlRW50cnksIE5neEZpbGVEcm9wRW50cnkgfSBmcm9tICduZ3gtZmlsZS1kcm9wJztcclxuaW1wb3J0IHsgY29udmVydEJhc2U2NFRvRmlsZSwgZm9ybWF0Qnl0ZXMsIGdldEJhc2U2NEZyb21VcmwgfSBmcm9tICcuLi8uLi8uLi9oZWxwZXJzJztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEVNUFRZIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEh0dHBFdmVudCwgSHR0cEV2ZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRmlsZUltYWdlRWRpdE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2ZpbGUtaW1hZ2UtZWRpdC1tb2RhbC9maWxlLWltYWdlLWVkaXQtbW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW5wdXRGaWxlSW1hZ2VUeXBlRW51bSwgSW5wdXRGaWxlSW1hZ2VUeXBlVHlwZXMgfSBmcm9tICcuL2lucHV0LWZpbGUtaW1hZ2UuZW51bSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1pbnB1dC1maWxlLWltYWdlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtZmlsZS1pbWFnZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtZmlsZS1pbWFnZS5jb21wb25lbnQubGVzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBJbnB1dEZpbGVJbWFnZUNvbXBvbmVudCB7XHJcbiAgZm9ybWF0Qnl0ZXMgPSBmb3JtYXRCeXRlcztcclxuICBleHRlbnNpb25zPzogc3RyaW5nO1xyXG4gIGFsbG93ZWRFeHRlbnNpb25zOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGZpbGVzOiBJbnB1dEZpbGVNb2RlbFtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyB0eXBlOiBJbnB1dEZpbGVJbWFnZVR5cGVUeXBlcyA9ICdkZWZhdWx0JztcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUNsYXNzZXMgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIG1heFNpemUgPSAzMTQ1NzI4MDtcclxuICBASW5wdXQoKSBwdWJsaWMgbWF4RmlsZXMgPSA1O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtaW5GaWxlcyA9IDA7XHJcblxyXG4gIC8vINCf0LDRgNCw0LzQtdGC0YDRiywg0LrQvtGC0L7RgNGL0LUg0LHRg9C00YPRgiDQv9C10YDQtdC00LDQstCw0YLRjNGB0Y8g0LIg0YTQvtGA0LzQtVxyXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtRGF0YTogYW55ID0ge307XHJcblxyXG4gIC8vIENST1BQRVJcclxuICBASW5wdXQoKSBwdWJsaWMgY3JvcHBlck1heFdpZHRoID0gMDtcclxuICBASW5wdXQoKSBwdWJsaWMgY3JvcHBlck1heEhlaWdodCA9IDA7XHJcbiAgQElucHV0KCkgcHVibGljIGFzcGVjdFJhdGlvID0gMSAvIDE7XHJcbiAgQElucHV0KCkgcHVibGljIG1haW50YWluQXNwZWN0UmF0aW8gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHVwbG9hZEVuZFBvaW50ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkZWxldGVFbmRQb2ludD86IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgZG93bmxvYWRFbmRQb2ludD86IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGRlbGV0ZUNvbmZpcm0/OiAoZmlsZTogVXBsb2FkZWRGaWxlTW9kZWwsIHJlc3VsdDogKG9rOiBib29sZWFuKSA9PiB2b2lkKSA9PiB2b2lkO1xyXG5cclxuICBASW5wdXQoJ2ZpbGVzJylcclxuICBzZXQgaW5pdEZpbGVzKGRhdGE6IFVwbG9hZGVkRmlsZU1vZGVsW10gfCBVcGxvYWRlZEZpbGVNb2RlbCkge1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgICB0aGlzLmZpbGVzID0gZGF0YS5tYXAocyA9PiAoey4uLnN9KSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5maWxlcyA9IFt7Li4uZGF0YX1dO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbGVzID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoJ2FsbG93ZWRFeHRlbnNpb25zJylcclxuICBwdWJsaWMgc2V0IGluaXRBbGxvd2VkRXh0ZW5zaW9ucyh2YWw6IHN0cmluZ1tdKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuYWxsb3dlZEV4dGVuc2lvbnMgPSB2YWw7XHJcbiAgICAgIHRoaXMuZXh0ZW5zaW9ucyA9IHZhbC5qb2luKCcsICcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hbGxvd2VkRXh0ZW5zaW9ucyA9IFtdO1xyXG4gICAgICB0aGlzLmV4dGVuc2lvbnMgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIGZpbGVzQ2hhbmdlZDogRXZlbnRFbWl0dGVyPElucHV0RmlsZU1vZGVsW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaW1hZ2VVcGxvYWRTZXJ2aWNlOiBGaWxlVXBsb2FkU2VydmljZSxcclxuICAgIHByaXZhdGUgX21vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldERlZmF1bHRQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gJ2F2YXRhcicgP1xyXG4gICAgICAn0JfQsNCz0YDRg9C30LjRgtC1INGE0L7RgtC+0LPRgNCw0YTQuNGOJyA6XHJcbiAgICAgICfQn9C10YDQtdC90LXRgdC40YLQtSDRhNCw0LnQuyDRgSDRg9GB0YLRgNC+0LnRgdGC0LLQsCDQuNC70Lgg0L3QsNC20LzQuNGC0LUg0L3QsCDQtNCw0L3QvdC+0LUg0L/QvtC70LUg0LTQu9GPINC00L7QsdCw0LLQu9C10L3QuNGPINGE0LDQudC70LAnO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7SW5wdXRGaWxlSW1hZ2VUeXBlRW51bVt0aGlzLnR5cGVdfSAke3RoaXMuY3VzdG9tQ2xhc3Nlc31gO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXREcm9wWm9uZUNsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgbXJ4LWlucHV0LWZpbGUtaW1hZ2UtZHJvcCAke3RoaXMuZGlzYWJsZWQgPyAnbXJ4LWlucHV0LWZpbGUtcGljdHVyZS1kcm9wLWRpc2FibGVkJyA6ICcnfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNhbkFkZCgpIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdhdmF0YXInKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZpbGVzLmxlbmd0aCA8IDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5tYXhGaWxlcyA+IHRoaXMuZmlsZXMuZmlsdGVyKHMgPT4gIXMuZXJyb3IpLmxlbmd0aDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NoZWNrRXJyb3JzKCkge1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkcm9wcGVkKGZpbGVzOiBOZ3hGaWxlRHJvcEVudHJ5W10pIHtcclxuICAgIGNvbnN0IGRyb3BwZWRGaWxlID0gZmlsZXNbMF07XHJcblxyXG4gICAgaWYgKGRyb3BwZWRGaWxlLmZpbGVFbnRyeS5pc0ZpbGUpIHtcclxuICAgICAgY29uc3QgZmlsZUVudHJ5ID0gZHJvcHBlZEZpbGUuZmlsZUVudHJ5IGFzIEZpbGVTeXN0ZW1GaWxlRW50cnk7XHJcblxyXG4gICAgICBmaWxlRW50cnkuZmlsZSgoZmlsZTogRmlsZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGE6IElucHV0RmlsZU1vZGVsID0ge1xyXG4gICAgICAgICAgaWQ6ICcnLFxyXG4gICAgICAgICAgdGVtcFV1aWQ6IHV1aWR2NCgpLFxyXG4gICAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxyXG4gICAgICAgICAgbGVuZ3RoOiBmaWxlLnNpemUsXHJcbiAgICAgICAgICB1cGxvYWRpbmc6IHRydWUsXHJcbiAgICAgICAgICBwZXJjZW50YWdlOiAwLFxyXG4gICAgICAgICAgZmlsZTogZmlsZSxcclxuICAgICAgICB9IGFzIElucHV0RmlsZU1vZGVsO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuY2FuQWRkKSB7XHJcbiAgICAgICAgICBkYXRhLmVycm9yID0gJ9Ch0LvQuNGI0LrQvtC8INC80L3QvtCz0L4g0YTQsNC50LvQvtCyJztcclxuICAgICAgICAgIGRhdGEudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmZpbGVzLnB1c2goZGF0YSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmZpbGVzLnB1c2goZGF0YSk7XHJcblxyXG4gICAgICAgIGlmIChkYXRhLmZpbGUgJiYgZGF0YS5maWxlLnNpemUgPiB0aGlzLm1heFNpemUpIHtcclxuICAgICAgICAgIGRhdGEuZXJyb3IgPSAn0KHQu9C40YjQutC+0Lwg0LHQvtC70YzRiNC+0Lkg0YTQsNC50LsnO1xyXG4gICAgICAgICAgZGF0YS51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChkYXRhLmZpbGUgJiYgZGF0YS5maWxlLnNpemUgPT0gMCkge1xyXG4gICAgICAgICAgZGF0YS5lcnJvciA9ICfQn9GD0YHRgtC+0Lkg0YTQsNC50LsnO1xyXG4gICAgICAgICAgZGF0YS51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFsbG93ZWRFeHRlbnNpb25zLmxlbmd0aCA+IDAgJiYgIXRoaXMuYWxsb3dlZEV4dGVuc2lvbnMuc29tZShcclxuICAgICAgICAgIHMgPT4gZGF0YS5maWxlPy5uYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgocy50b0xvd2VyQ2FzZSgpKSkpIHtcclxuICAgICAgICAgIGRhdGEuZXJyb3IgPSAn0J3QtdCy0LXRgNC90YvQuSDRhNC+0YDQvNCw0YIg0YTQsNC50LvQsCc7XHJcbiAgICAgICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFkYXRhLmVycm9yKSB7XHJcbiAgICAgICAgICB0aGlzLl9tb2RhbFNlcnZpY2Uub3BlbihGaWxlSW1hZ2VFZGl0TW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgdGl0bGU6ICfQoNCV0JTQkNCa0KLQmNCg0J7QktCQ0J3QmNCVINCY0JfQntCR0KDQkNCW0JXQndCY0K8nLFxyXG4gICAgICAgICAgICBmaWxlSW1hZ2U6IGZpbGUsXHJcbiAgICAgICAgICAgIGNyb3BwZXJNYXhXaWR0aDogdGhpcy5jcm9wcGVyTWF4V2lkdGgsXHJcbiAgICAgICAgICAgIGNyb3BwZXJNYXhIZWlnaHQ6IHRoaXMuY3JvcHBlck1heEhlaWdodCxcclxuICAgICAgICAgICAgYXNwZWN0UmF0aW86IHRoaXMuYXNwZWN0UmF0aW8sXHJcbiAgICAgICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IHRoaXMubWFpbnRhaW5Bc3BlY3RSYXRpb1xyXG4gICAgICAgICAgfSwge30pXHJcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMucmVzdWx0ICYmIHJlcy5maWxlSW1hZ2UpIHtcclxuICAgICAgICAgICAgICAgIGRhdGEuZmlsZSA9IHJlcy5maWxlSW1hZ2VcclxuICAgICAgICAgICAgICAgIHRoaXMuX3VwbG9hZEZpbGUoZGF0YSlcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmluZElkeCA9IHRoaXMuZmlsZXMuZmluZEluZGV4KGQgPT4gZC50ZW1wVXVpZCA9PT0gZGF0YS50ZW1wVXVpZClcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZmluZElkeCAhPSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmZpbGVzID0gdGhpcy5maWxlcy5maWx0ZXIoKGYsIGlkeCkgPT4gaWR4ICE9PSBmaW5kSWR4KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VQcmV2aWV3KGV2ZW50OiBhbnksIGZpbGU6IElucHV0RmlsZU1vZGVsKSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBnZXRCYXNlNjRGcm9tVXJsKHRoaXMuZG93bmxvYWRVcmwoZmlsZSkpLnRoZW4oKGJhc2U2NFVybDogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuX21vZGFsU2VydmljZS5vcGVuKEZpbGVJbWFnZUVkaXRNb2RhbENvbXBvbmVudCwge1xyXG4gICAgICAgIHRpdGxlOiAn0KDQldCU0JDQmtCi0JjQoNCe0JLQkNCd0JjQlSDQmNCX0J7QkdCg0JDQltCV0J3QmNCvJyxcclxuICAgICAgICBmaWxlSW1hZ2U6IGNvbnZlcnRCYXNlNjRUb0ZpbGUoYmFzZTY0VXJsLCBmaWxlLm5hbWUgfHwgJycsICdpbWFnZS9wbmcnKSxcclxuICAgICAgICBjcm9wcGVyTWF4V2lkdGg6IHRoaXMuY3JvcHBlck1heFdpZHRoLFxyXG4gICAgICAgIGNyb3BwZXJNYXhIZWlnaHQ6IHRoaXMuY3JvcHBlck1heEhlaWdodCxcclxuICAgICAgICBhc3BlY3RSYXRpbzogdGhpcy5hc3BlY3RSYXRpbyxcclxuICAgICAgICBtYWludGFpbkFzcGVjdFJhdGlvOiB0aGlzLm1haW50YWluQXNwZWN0UmF0aW9cclxuICAgICAgfSwge30pXHJcbiAgICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMucmVzdWx0ICYmIHJlcy5maWxlSW1hZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fdXBkYXRlRmlsZShmaWxlLCByZXMuZmlsZUltYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbGV0ZShldmVudDogYW55LCBmaWxlOiBJbnB1dEZpbGVNb2RlbCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZGVsZXRlQ29uZmlybSkge1xyXG4gICAgICB0aGlzLmRlbGV0ZUNvbmZpcm0oZmlsZSwgKG9rKSA9PiB7XHJcbiAgICAgICAgaWYgKG9rKSB7XHJcbiAgICAgICAgICB0aGlzLl9kZWxldGVGaWxlKGZpbGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9kZWxldGVGaWxlKGZpbGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFyKGZpbGU6IElucHV0RmlsZU1vZGVsKTogdm9pZCB7XHJcbiAgICBpZiAoZmlsZS51cGxvYWRpbmcpIHtcclxuICAgICAgaWYgKGZpbGUuZXhlY3V0aW9uKSB7XHJcbiAgICAgICAgZmlsZS5leGVjdXRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbmRGaWxlSWR4ID0gdGhpcy5maWxlcy5pbmRleE9mKGZpbGUpO1xyXG5cclxuICAgIGlmIChmaW5kRmlsZUlkeCA+PSAwKSB7XHJcbiAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKGZpbmRGaWxlSWR4LCAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkb3dubG9hZFVybChmaWxlOiBVcGxvYWRlZEZpbGVNb2RlbCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5kb3dubG9hZEVuZFBvaW50KSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1VcmwodGhpcy5kb3dubG9hZEVuZFBvaW50LCBmaWxlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBmaWxlT3ZlcihldmVudDogYW55KSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZmlsZUxlYXZlKGV2ZW50OiBhbnkpIHtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3RyYW5zZm9ybVVybCh1cmw6IHN0cmluZywgZmlsZTogVXBsb2FkZWRGaWxlTW9kZWwpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHVybC5yZXBsYWNlKC97aWR9LywgZmlsZS5pZClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Zvcm1EYXRhS2V5cygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5mb3JtRGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVGb3JtRGF0YSgpOiBGb3JtRGF0YSB7XHJcbiAgICBjb25zdCBmb3JtID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBpZiAodGhpcy5tYXhGaWxlcykge1xyXG4gICAgICBmb3JtLmFwcGVuZCgnTWF4RmlsZXMnLCB0aGlzLm1heEZpbGVzLnRvU3RyaW5nKDEwKSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBrZXlzID0gdGhpcy5fZm9ybURhdGFLZXlzKCk7XHJcbiAgICBrZXlzLmZvckVhY2goa2V5ID0+IGZvcm0uYXBwZW5kKGtleSwgdGhpcy5mb3JtRGF0YVtrZXldKSk7XHJcbiAgICByZXR1cm4gZm9ybTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2RlbGV0ZUZpbGUoZmlsZTogSW5wdXRGaWxlTW9kZWwpIHtcclxuICAgIGNvbnN0IGZpbmRGaWxlID0gdGhpcy5maWxlcy5maW5kKHMgPT4gcy5pZCA9PT0gZmlsZS5pZCk7XHJcblxyXG4gICAgaWYgKGZpbmRGaWxlKSB7XHJcbiAgICAgIGlmICh0aGlzLmRlbGV0ZUVuZFBvaW50KSB7XHJcbiAgICAgICAgZmluZEZpbGUuZGVsZXRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLmltYWdlVXBsb2FkU2VydmljZS5kZWxldGUodGhpcy5kZWxldGVFbmRQb2ludCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVzLnNwbGljZSh0aGlzLmZpbGVzLmluZGV4T2YoZmluZEZpbGUpLCAxKTtcclxuICAgICAgICAgIHRoaXMuZmlsZXNDaGFuZ2VkLmVtaXQodGhpcy5maWxlcyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKHRoaXMuZmlsZXMuaW5kZXhPZihmaW5kRmlsZSksIDEpO1xyXG4gICAgICAgIHRoaXMuZmlsZXNDaGFuZ2VkLmVtaXQodGhpcy5maWxlcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VwZGF0ZUZpbGUob2xkRmlsZTogSW5wdXRGaWxlTW9kZWwsIG5ld0ZpbGU6IEZpbGUpIHtcclxuICAgIGNvbnN0IGZpbmRGaWxlID0gdGhpcy5maWxlcy5maW5kKChzOiBJbnB1dEZpbGVNb2RlbCkgPT4ge1xyXG4gICAgICBpZiAocy5pZCAhPT0gJycpIHtcclxuICAgICAgICByZXR1cm4gcy5pZCA9PT0gb2xkRmlsZS5pZDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gcy50ZW1wVXVpZCA9PT0gb2xkRmlsZS50ZW1wVXVpZDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGZpbmRGaWxlKSB7XHJcbiAgICAgIGNvbnN0IGRhdGE6IElucHV0RmlsZU1vZGVsID0ge1xyXG4gICAgICAgIGlkOiAnJyxcclxuICAgICAgICB0ZW1wVXVpZDogdXVpZHY0KCksXHJcbiAgICAgICAgbmFtZTogbmV3RmlsZS5uYW1lLFxyXG4gICAgICAgIGxlbmd0aDogbmV3RmlsZS5zaXplLFxyXG4gICAgICAgIHVwbG9hZGluZzogdHJ1ZSxcclxuICAgICAgICBwZXJjZW50YWdlOiAwLFxyXG4gICAgICAgIGZpbGU6IG5ld0ZpbGUsXHJcbiAgICAgIH0gYXMgSW5wdXRGaWxlTW9kZWw7XHJcblxyXG4gICAgICBpZiAodGhpcy5kZWxldGVFbmRQb2ludCkge1xyXG4gICAgICAgIGZpbmRGaWxlLmRlbGV0aW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2UuZGVsZXRlKHRoaXMuZGVsZXRlRW5kUG9pbnQpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgdGhpcy5maWxlcy5zcGxpY2UodGhpcy5maWxlcy5pbmRleE9mKGZpbmRGaWxlKSwgMSk7XHJcbiAgICAgICAgICB0aGlzLmZpbGVzLnB1c2goZGF0YSk7XHJcbiAgICAgICAgICB0aGlzLl91cGxvYWRGaWxlKGRhdGEpO1xyXG5cclxuICAgICAgICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5maWxlcy5wdXNoKGRhdGEpO1xyXG4gICAgICAgIHRoaXMuX3VwbG9hZEZpbGUoZGF0YSk7XHJcblxyXG4gICAgICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBsb2FkRmlsZShkYXRhOiBJbnB1dEZpbGVNb2RlbCkge1xyXG4gICAgY29uc3QgZm9ybURhdGEgPSB0aGlzLl9jcmVhdGVGb3JtRGF0YSgpO1xyXG5cclxuICAgIGlmIChkYXRhLmZpbGUpIHtcclxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdGaWxlJywgZGF0YS5maWxlKTtcclxuXHJcbiAgICAgIGRhdGEuZXhlY3V0aW9uID0gdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2UudXBsb2FkKHRoaXMudXBsb2FkRW5kUG9pbnQsIGZvcm1EYXRhKS5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG4gICAgICAgICAgZGF0YS51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEh0dHBFdmVudDxVcGxvYWRlZFJlc3VsdE1vZGVsPikgPT4ge1xyXG4gICAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5TZW50OlxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuUmVzcG9uc2VIZWFkZXI6XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzczpcclxuICAgICAgICAgICAgICBpZiAoZXZlbnQudG90YWwpIHtcclxuICAgICAgICAgICAgICAgIGRhdGEucGVyY2VudGFnZSA9IE1hdGgucm91bmQoZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWwgKiAxMDApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxyXG4gICAgICAgICAgICAgIGlmIChldmVudC5ib2R5KSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgZGF0YS5wZXJjZW50YWdlID0gMDtcclxuICAgICAgICAgICAgICAgIGRhdGEuaWQgPSBldmVudC5ib2R5LnV1aWQ7XHJcbiAgICAgICAgICAgICAgICBkYXRhLmZpbGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBkYXRhLmVycm9yID0gZXZlbnQuYm9keS5tZXNzYWdlO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmV4ZWN1dGlvbikge1xyXG4gICAgICAgICAgICAgICAgICBkYXRhLmV4ZWN1dGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsZXMuZXZlcnkocyA9PiAhcy51cGxvYWRpbmcpKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZXNDaGFuZ2VkLmVtaXQodGhpcy5maWxlcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlXCIgW2NsYXNzXT1cImdldENsYXNzZXNcIj5cclxuICBAc3dpdGNoICh0eXBlKSB7XHJcbiAgICBAY2FzZSAoJ2F2YXRhcicpIHtcclxuICAgICAgPG5neC1maWxlLWRyb3BcclxuICAgICAgICBbY2xhc3NOYW1lXT1cImdldERyb3Bab25lQ2xhc3Nlc1wiXHJcbiAgICAgICAgW2FjY2VwdF09XCJleHRlbnNpb25zIHx8ICcnXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIChvbkZpbGVEcm9wKT1cImRyb3BwZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgKG9uRmlsZU92ZXIpPVwiZmlsZU92ZXIoJGV2ZW50KVwiIChvbkZpbGVMZWF2ZSk9XCJmaWxlTGVhdmUoJGV2ZW50KVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbmd4LWZpbGUtZHJvcC1jb250ZW50LXRtcCBsZXQtb3BlbkZpbGVTZWxlY3Rvcj1cIm9wZW5GaWxlU2VsZWN0b3JcIj5cclxuICAgICAgICAgIEBpZiAoZmlsZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1hdmF0YXJcIj5cclxuXHJcbiAgICAgICAgICAgICAgQGZvciAoZmlsZSBvZiBmaWxlczsgdHJhY2sgZmlsZS5pZCkge1xyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1hdmF0YXItaXRlbVwiIFtjbGFzcy5tcngtaW5wdXQtZmlsZS1pbWFnZS1lcnJvcl09XCJmaWxlLmVycm9yXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZmlsZS5lcnJvcikge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1jbG9zZSBpY29uLWZvbnQtMjRcIiAoY2xpY2spPVwiY2xlYXIoZmlsZSlcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtYXZhdGFyLWl0ZW0tZXJyb3JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWltYWdlIGljb24tZm9udC0yNCBpY29uLWZpbGxlZC1jb2xvci1uZWdhdGl2ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZmlsZS5lcnJvciB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGZpbGUudXBsb2FkaW5nICYmICFmaWxlLmVycm9yKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWNsb3NlIGljb24tZm9udC0yNFwiIChjbGljayk9XCJkZWxldGUoJGV2ZW50LCBmaWxlKVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1hdmF0YXItaXRlbS11cGxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1hdmF0YXItaXRlbS11cGxvYWRpbmctdGV4dFwiPtCX0LDQs9GA0YPQt9C60LAuLi48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1hdmF0YXItaXRlbS11cGxvYWRpbmctcHJvZ3Jlc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbbmdTdHlsZV09XCJ7d2lkdGg6IGZpbGUucGVyY2VudGFnZSArICclJ31cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKCFmaWxlLnVwbG9hZGluZyAmJiAhZmlsZS5lcnJvcikge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJkb3dubG9hZFVybChmaWxlKVwiIFthbHRdPVwiZmlsZS5uYW1lXCIgaGVpZ2h0PVwiMTU0XCIgd2lkdGg9XCIxNTRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtY29udHJvbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWNvbnRyb2xzLWl0ZW1cIiAoY2xpY2spPVwiY2hhbmdlUHJldmlldygkZXZlbnQsIGZpbGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLXBlbiBpY29uLWZvbnQtMTZcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtY29udHJvbHMtaXRlbVwiIChjbGljayk9XCJkZWxldGUoJGV2ZW50LCBmaWxlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1kZWxldGUgaWNvbi1mb250LTE2XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLm1yeC1pbnB1dC1maWxlLWltYWdlX19kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIiFkaXNhYmxlZCA/IG9wZW5GaWxlU2VsZWN0b3IoKSA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWlucHV0LXBsYWNlaG9sZGVyXCI+e3sgcGxhY2Vob2xkZXIgfHwgZ2V0RGVmYXVsdFBsYWNlaG9sZGVyIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1pbnB1dC1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj7QoNCw0LfQvNC10YA6INC00L4ge3sgZm9ybWF0Qnl0ZXMobWF4U2l6ZSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImV4dGVuc2lvbnNcIj7QpNC+0YDQvNCw0YI6IHt7IGV4dGVuc2lvbnMgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbmd4LWZpbGUtZHJvcD5cclxuICAgIH1cclxuICAgIEBkZWZhdWx0IHtcclxuICAgICAgQGlmIChjYW5BZGQpIHtcclxuICAgICAgICA8bmd4LWZpbGUtZHJvcFxyXG4gICAgICAgICAgW2NsYXNzTmFtZV09XCJnZXREcm9wWm9uZUNsYXNzZXNcIlxyXG4gICAgICAgICAgW2FjY2VwdF09XCJleHRlbnNpb25zIHx8ICcnXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAob25GaWxlRHJvcCk9XCJkcm9wcGVkKCRldmVudClcIlxyXG4gICAgICAgICAgKG9uRmlsZU92ZXIpPVwiZmlsZU92ZXIoJGV2ZW50KVwiIChvbkZpbGVMZWF2ZSk9XCJmaWxlTGVhdmUoJGV2ZW50KVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5neC1maWxlLWRyb3AtY29udGVudC10bXAgbGV0LW9wZW5GaWxlU2VsZWN0b3I9XCJvcGVuRmlsZVNlbGVjdG9yXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWlucHV0XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiIWRpc2FibGVkID8gb3BlbkZpbGVTZWxlY3RvcigpIDogdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtaW5wdXQtcGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgICAgIHt7IHBsYWNlaG9sZGVyIHx8IGdldERlZmF1bHRQbGFjZWhvbGRlciB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtaW5wdXQtaW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+0KDQsNC30LzQtdGAOiDQtNC+IHt7IGZvcm1hdEJ5dGVzKG1heFNpemUpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJleHRlbnNpb25zXCI+0KTQvtGA0LzQsNGCOiB7eyBleHRlbnNpb25zIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZ3gtZmlsZS1kcm9wPlxyXG4gICAgICB9XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtcHJldmlld1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIEBmb3IgKGZpbGUgb2YgZmlsZXM7IHRyYWNrIGZpbGUuaWQpIHtcclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgY29sLTEyIGNvbC1zbS02IGNvbC1tZC00IGNvbC1sZy0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLXByZXZpZXctaXRlbVwiIFtjbGFzcy5tcngtaW5wdXQtZmlsZS1pbWFnZS1lcnJvcl09XCJmaWxlLmVycm9yXCI+XHJcbiAgICAgICAgICAgICAgICBAaWYgKGZpbGUuZXJyb3IpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1jbG9zZSBpY29uLWZvbnQtMjRcIiAoY2xpY2spPVwiZGVsZXRlKCRldmVudCwgZmlsZSlcIj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtcHJldmlldy1pdGVtLWVycm9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWltYWdlIGljb24tZm9udC0yNCBpY29uLWZpbGxlZC1jb2xvci1uZWdhdGl2ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBmaWxlLmVycm9yIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtcHJldmlldy1pdGVtLW5hbWVcIj57eyBmaWxlLm5hbWUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLXByZXZpZXctaXRlbS1kZXNjcmlwdGlvblwiPnt7IGZvcm1hdEJ5dGVzKGZpbGUubGVuZ3RoKSB9fTwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGZpbGUudXBsb2FkaW5nICYmICFmaWxlLmVycm9yKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtcHJldmlldy1pdGVtLXVwbG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtcHJldmlldy1pdGVtLXVwbG9hZGluZy10ZXh0XCI+0JfQsNCz0YDRg9C30LrQsC4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtcHJldmlldy1pdGVtLXVwbG9hZGluZy1wcm9ncmVzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW25nU3R5bGVdPVwie3dpZHRoOiBmaWxlLnBlcmNlbnRhZ2UgKyAnJSd9XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICB9IEBlbHNlIGlmICghZmlsZS51cGxvYWRpbmcgJiYgIWZpbGUuZXJyb3IpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1wcmV2aWV3LWl0ZW1fX2ltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImRvd25sb2FkVXJsKGZpbGUpXCIgW2FsdF09XCJmaWxlLm5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtcHJldmlldy1pdGVtLWluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtcHJldmlldy1pdGVtLW5hbWVcIj57eyBmaWxlLm5hbWUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtcHJldmlldy1pdGVtLWRlc2NyaXB0aW9uXCI+e3sgZm9ybWF0Qnl0ZXMoZmlsZS5sZW5ndGgpIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWNvbnRyb2xzLWl0ZW1cIiAoY2xpY2spPVwiY2hhbmdlUHJldmlldygkZXZlbnQsIGZpbGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tcGVuIGljb24tZm9udC0xNlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtY29udHJvbHMtaXRlbVwiIChjbGljayk9XCJkZWxldGUoJGV2ZW50LCBmaWxlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWRlbGV0ZSBpY29uLWZvbnQtMTZcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==
|
|
361
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZS1pbWFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC1maWxlLWltYWdlL2lucHV0LWZpbGUtaW1hZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtZmlsZS1pbWFnZS9pbnB1dC1maWxlLWltYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEYsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFhLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxzQkFBc0IsRUFBMkIsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUFVMUYsTUFBTSxPQUFPLHVCQUF1QjtJQTREeEI7SUFDQTtJQUNBO0lBN0RGLFlBQVksR0FBRyxLQUFLLENBQUM7SUFFN0IsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUMxQixVQUFVLENBQVU7SUFDcEIsaUJBQWlCLEdBQWEsRUFBRSxDQUFD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VSxRQUFRO3NCQUF2QixLQUFLO2dCQUdVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsbUJBQW1CO3NCQUFsQyxLQUFLO2dCQUVVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBRVUsYUFBYTtzQkFBNUIsS0FBSztnQkFHRixTQUFTO3NCQURaLEtBQUs7dUJBQUMsT0FBTztnQkFjSCxxQkFBcUI7c0JBRC9CLEtBQUs7dUJBQUMsbUJBQW1CO2dCQVdULFlBQVk7c0JBQTVCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElucHV0RmlsZU1vZGVsLCBVcGxvYWRlZEZpbGVNb2RlbCwgVXBsb2FkZWRSZXN1bHRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRTZXJ2aWNlLCBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEZpbGVTeXN0ZW1GaWxlRW50cnksIE5neEZpbGVEcm9wRW50cnkgfSBmcm9tICduZ3gtZmlsZS1kcm9wJztcclxuaW1wb3J0IHsgY29udmVydEJhc2U2NFRvRmlsZSwgZm9ybWF0Qnl0ZXMsIGdldEJhc2U2NEZyb21VcmwgfSBmcm9tICcuLi8uLi8uLi9oZWxwZXJzJztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEVNUFRZIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEh0dHBFdmVudCwgSHR0cEV2ZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRmlsZUltYWdlRWRpdE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2ZpbGUtaW1hZ2UtZWRpdC1tb2RhbC9maWxlLWltYWdlLWVkaXQtbW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW5wdXRGaWxlSW1hZ2VUeXBlRW51bSwgSW5wdXRGaWxlSW1hZ2VUeXBlVHlwZXMgfSBmcm9tICcuL2lucHV0LWZpbGUtaW1hZ2UuZW51bSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1pbnB1dC1maWxlLWltYWdlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtZmlsZS1pbWFnZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtZmlsZS1pbWFnZS5jb21wb25lbnQubGVzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBJbnB1dEZpbGVJbWFnZUNvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSBpc1Byb2Nlc3NpbmcgPSBmYWxzZTtcclxuXHJcbiAgZm9ybWF0Qnl0ZXMgPSBmb3JtYXRCeXRlcztcclxuICBleHRlbnNpb25zPzogc3RyaW5nO1xyXG4gIGFsbG93ZWRFeHRlbnNpb25zOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGZpbGVzOiBJbnB1dEZpbGVNb2RlbFtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyB0eXBlOiBJbnB1dEZpbGVJbWFnZVR5cGVUeXBlcyA9ICdkZWZhdWx0JztcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUNsYXNzZXMgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIG1heFNpemUgPSAzMTQ1NzI4MDtcclxuICBASW5wdXQoKSBwdWJsaWMgbWF4RmlsZXMgPSA1O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtaW5GaWxlcyA9IDA7XHJcblxyXG4gIC8vINCf0LDRgNCw0LzQtdGC0YDRiywg0LrQvtGC0L7RgNGL0LUg0LHRg9C00YPRgiDQv9C10YDQtdC00LDQstCw0YLRjNGB0Y8g0LIg0YTQvtGA0LzQtVxyXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtRGF0YTogYW55ID0ge307XHJcblxyXG4gIC8vIENST1BQRVJcclxuICBASW5wdXQoKSBwdWJsaWMgY3JvcHBlck1heFdpZHRoID0gMDtcclxuICBASW5wdXQoKSBwdWJsaWMgY3JvcHBlck1heEhlaWdodCA9IDA7XHJcbiAgQElucHV0KCkgcHVibGljIGFzcGVjdFJhdGlvID0gMSAvIDE7XHJcbiAgQElucHV0KCkgcHVibGljIG1haW50YWluQXNwZWN0UmF0aW8gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHVwbG9hZEVuZFBvaW50ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkZWxldGVFbmRQb2ludD86IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgZG93bmxvYWRFbmRQb2ludD86IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGRlbGV0ZUNvbmZpcm0/OiAoZmlsZTogVXBsb2FkZWRGaWxlTW9kZWwsIHJlc3VsdDogKG9rOiBib29sZWFuKSA9PiB2b2lkKSA9PiB2b2lkO1xyXG5cclxuICBASW5wdXQoJ2ZpbGVzJylcclxuICBzZXQgaW5pdEZpbGVzKGRhdGE6IFVwbG9hZGVkRmlsZU1vZGVsW10gfCBVcGxvYWRlZEZpbGVNb2RlbCkge1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgICB0aGlzLmZpbGVzID0gZGF0YS5tYXAocyA9PiAoey4uLnN9KSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5maWxlcyA9IFt7Li4uZGF0YX1dO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbGVzID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoJ2FsbG93ZWRFeHRlbnNpb25zJylcclxuICBwdWJsaWMgc2V0IGluaXRBbGxvd2VkRXh0ZW5zaW9ucyh2YWw6IHN0cmluZ1tdKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuYWxsb3dlZEV4dGVuc2lvbnMgPSB2YWw7XHJcbiAgICAgIHRoaXMuZXh0ZW5zaW9ucyA9IHZhbC5qb2luKCcsICcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hbGxvd2VkRXh0ZW5zaW9ucyA9IFtdO1xyXG4gICAgICB0aGlzLmV4dGVuc2lvbnMgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIGZpbGVzQ2hhbmdlZDogRXZlbnRFbWl0dGVyPElucHV0RmlsZU1vZGVsW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaW1hZ2VVcGxvYWRTZXJ2aWNlOiBGaWxlVXBsb2FkU2VydmljZSxcclxuICAgIHByaXZhdGUgX21vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldERlZmF1bHRQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gJ2F2YXRhcicgP1xyXG4gICAgICAn0JfQsNCz0YDRg9C30LjRgtC1INGE0L7RgtC+0LPRgNCw0YTQuNGOJyA6XHJcbiAgICAgICfQn9C10YDQtdC90LXRgdC40YLQtSDRhNCw0LnQuyDRgSDRg9GB0YLRgNC+0LnRgdGC0LLQsCDQuNC70Lgg0L3QsNC20LzQuNGC0LUg0L3QsCDQtNCw0L3QvdC+0LUg0L/QvtC70LUg0LTQu9GPINC00L7QsdCw0LLQu9C10L3QuNGPINGE0LDQudC70LAnO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7SW5wdXRGaWxlSW1hZ2VUeXBlRW51bVt0aGlzLnR5cGVdfSAke3RoaXMuY3VzdG9tQ2xhc3Nlc31gO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXREcm9wWm9uZUNsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgbXJ4LWlucHV0LWZpbGUtaW1hZ2UtZHJvcCAke3RoaXMuZGlzYWJsZWQgPyAnbXJ4LWlucHV0LWZpbGUtcGljdHVyZS1kcm9wLWRpc2FibGVkJyA6ICcnfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNhbkFkZCgpIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdhdmF0YXInKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZpbGVzLmxlbmd0aCA8IDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5tYXhGaWxlcyA+IHRoaXMuZmlsZXMuZmlsdGVyKHMgPT4gIXMuZXJyb3IpLmxlbmd0aDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NoZWNrRXJyb3JzKCkge1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkcm9wcGVkKGZpbGVzOiBOZ3hGaWxlRHJvcEVudHJ5W10pIHtcclxuICAgIGNvbnN0IGRyb3BwZWRGaWxlID0gZmlsZXNbMF07XHJcblxyXG4gICAgaWYgKGRyb3BwZWRGaWxlLmZpbGVFbnRyeS5pc0ZpbGUpIHtcclxuICAgICAgY29uc3QgZmlsZUVudHJ5ID0gZHJvcHBlZEZpbGUuZmlsZUVudHJ5IGFzIEZpbGVTeXN0ZW1GaWxlRW50cnk7XHJcblxyXG4gICAgICBmaWxlRW50cnkuZmlsZSgoZmlsZTogRmlsZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGE6IElucHV0RmlsZU1vZGVsID0ge1xyXG4gICAgICAgICAgaWQ6ICcnLFxyXG4gICAgICAgICAgdGVtcFV1aWQ6IHV1aWR2NCgpLFxyXG4gICAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxyXG4gICAgICAgICAgbGVuZ3RoOiBmaWxlLnNpemUsXHJcbiAgICAgICAgICB1cGxvYWRpbmc6IHRydWUsXHJcbiAgICAgICAgICBwZXJjZW50YWdlOiAwLFxyXG4gICAgICAgICAgZmlsZTogZmlsZSxcclxuICAgICAgICB9IGFzIElucHV0RmlsZU1vZGVsO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuY2FuQWRkKSB7XHJcbiAgICAgICAgICBkYXRhLmVycm9yID0gJ9Ch0LvQuNGI0LrQvtC8INC80L3QvtCz0L4g0YTQsNC50LvQvtCyJztcclxuICAgICAgICAgIGRhdGEudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmZpbGVzLnB1c2goZGF0YSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmZpbGVzLnB1c2goZGF0YSk7XHJcblxyXG4gICAgICAgIGlmIChkYXRhLmZpbGUgJiYgZGF0YS5maWxlLnNpemUgPiB0aGlzLm1heFNpemUpIHtcclxuICAgICAgICAgIGRhdGEuZXJyb3IgPSAn0KHQu9C40YjQutC+0Lwg0LHQvtC70YzRiNC+0Lkg0YTQsNC50LsnO1xyXG4gICAgICAgICAgZGF0YS51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChkYXRhLmZpbGUgJiYgZGF0YS5maWxlLnNpemUgPT0gMCkge1xyXG4gICAgICAgICAgZGF0YS5lcnJvciA9ICfQn9GD0YHRgtC+0Lkg0YTQsNC50LsnO1xyXG4gICAgICAgICAgZGF0YS51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFsbG93ZWRFeHRlbnNpb25zLmxlbmd0aCA+IDAgJiYgIXRoaXMuYWxsb3dlZEV4dGVuc2lvbnMuc29tZShcclxuICAgICAgICAgIHMgPT4gZGF0YS5maWxlPy5uYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgocy50b0xvd2VyQ2FzZSgpKSkpIHtcclxuICAgICAgICAgIGRhdGEuZXJyb3IgPSAn0J3QtdCy0LXRgNC90YvQuSDRhNC+0YDQvNCw0YIg0YTQsNC50LvQsCc7XHJcbiAgICAgICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFkYXRhLmVycm9yKSB7XHJcbiAgICAgICAgICB0aGlzLl9tb2RhbFNlcnZpY2Uub3BlbihGaWxlSW1hZ2VFZGl0TW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgdGl0bGU6ICfQoNCV0JTQkNCa0KLQmNCg0J7QktCQ0J3QmNCVINCY0JfQntCR0KDQkNCW0JXQndCY0K8nLFxyXG4gICAgICAgICAgICBmaWxlSW1hZ2U6IGZpbGUsXHJcbiAgICAgICAgICAgIGNyb3BwZXJNYXhXaWR0aDogdGhpcy5jcm9wcGVyTWF4V2lkdGgsXHJcbiAgICAgICAgICAgIGNyb3BwZXJNYXhIZWlnaHQ6IHRoaXMuY3JvcHBlck1heEhlaWdodCxcclxuICAgICAgICAgICAgYXNwZWN0UmF0aW86IHRoaXMuYXNwZWN0UmF0aW8sXHJcbiAgICAgICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IHRoaXMubWFpbnRhaW5Bc3BlY3RSYXRpb1xyXG4gICAgICAgICAgfSwge30pXHJcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMucmVzdWx0ICYmIHJlcy5maWxlSW1hZ2UpIHtcclxuICAgICAgICAgICAgICAgIGRhdGEuZmlsZSA9IHJlcy5maWxlSW1hZ2VcclxuICAgICAgICAgICAgICAgIHRoaXMuX3VwbG9hZEZpbGUoZGF0YSlcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmluZElkeCA9IHRoaXMuZmlsZXMuZmluZEluZGV4KGQgPT4gZC50ZW1wVXVpZCA9PT0gZGF0YS50ZW1wVXVpZClcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZmluZElkeCAhPSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmZpbGVzID0gdGhpcy5maWxlcy5maWx0ZXIoKGYsIGlkeCkgPT4gaWR4ICE9PSBmaW5kSWR4KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VQcmV2aWV3KGV2ZW50OiBhbnksIGZpbGU6IElucHV0RmlsZU1vZGVsKSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBpZiAodGhpcy5pc1Byb2Nlc3NpbmcpIHJldHVybjtcclxuICAgIFxyXG4gICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSB0cnVlO1xyXG5cclxuICAgIGdldEJhc2U2NEZyb21VcmwodGhpcy5kb3dubG9hZFVybChmaWxlKSkudGhlbigoYmFzZTY0VXJsOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5fbW9kYWxTZXJ2aWNlLm9wZW4oRmlsZUltYWdlRWRpdE1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgICAgdGl0bGU6ICfQoNCV0JTQkNCa0KLQmNCg0J7QktCQ0J3QmNCVINCY0JfQntCR0KDQkNCW0JXQndCY0K8nLFxyXG4gICAgICAgIGZpbGVJbWFnZTogY29udmVydEJhc2U2NFRvRmlsZShiYXNlNjRVcmwsIGZpbGUubmFtZSB8fCAnJywgJ2ltYWdlL3BuZycpLFxyXG4gICAgICAgIGNyb3BwZXJNYXhXaWR0aDogdGhpcy5jcm9wcGVyTWF4V2lkdGgsXHJcbiAgICAgICAgY3JvcHBlck1heEhlaWdodDogdGhpcy5jcm9wcGVyTWF4SGVpZ2h0LFxyXG4gICAgICAgIGFzcGVjdFJhdGlvOiB0aGlzLmFzcGVjdFJhdGlvLFxyXG4gICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IHRoaXMubWFpbnRhaW5Bc3BlY3RSYXRpb1xyXG4gICAgICB9LCB7fSlcclxuICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcy5yZXN1bHQgJiYgcmVzLmZpbGVJbWFnZSkge1xyXG4gICAgICAgICAgICB0aGlzLl91cGRhdGVGaWxlKGZpbGUsIHJlcy5maWxlSW1hZ2UpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWxldGUoZXZlbnQ6IGFueSwgZmlsZTogSW5wdXRGaWxlTW9kZWwpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGlmICh0aGlzLmRlbGV0ZUNvbmZpcm0pIHtcclxuICAgICAgdGhpcy5kZWxldGVDb25maXJtKGZpbGUsIChvaykgPT4ge1xyXG4gICAgICAgIGlmIChvaykge1xyXG4gICAgICAgICAgdGhpcy5fZGVsZXRlRmlsZShmaWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fZGVsZXRlRmlsZShmaWxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhcihmaWxlOiBJbnB1dEZpbGVNb2RlbCk6IHZvaWQge1xyXG4gICAgaWYgKGZpbGUudXBsb2FkaW5nKSB7XHJcbiAgICAgIGlmIChmaWxlLmV4ZWN1dGlvbikge1xyXG4gICAgICAgIGZpbGUuZXhlY3V0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaW5kRmlsZUlkeCA9IHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlKTtcclxuXHJcbiAgICBpZiAoZmluZEZpbGVJZHggPj0gMCkge1xyXG4gICAgICB0aGlzLmZpbGVzLnNwbGljZShmaW5kRmlsZUlkeCwgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZG93bmxvYWRVcmwoZmlsZTogVXBsb2FkZWRGaWxlTW9kZWwpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuZG93bmxvYWRFbmRQb2ludCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNmb3JtVXJsKHRoaXMuZG93bmxvYWRFbmRQb2ludCwgZmlsZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZmlsZU92ZXIoZXZlbnQ6IGFueSkge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbGVMZWF2ZShldmVudDogYW55KSB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90cmFuc2Zvcm1VcmwodXJsOiBzdHJpbmcsIGZpbGU6IFVwbG9hZGVkRmlsZU1vZGVsKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB1cmwucmVwbGFjZSgve2lkfS8sIGZpbGUuaWQpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9mb3JtRGF0YUtleXMoKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZm9ybURhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlRm9ybURhdGEoKTogRm9ybURhdGEge1xyXG4gICAgY29uc3QgZm9ybSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgaWYgKHRoaXMubWF4RmlsZXMpIHtcclxuICAgICAgZm9ybS5hcHBlbmQoJ01heEZpbGVzJywgdGhpcy5tYXhGaWxlcy50b1N0cmluZygxMCkpO1xyXG4gICAgfVxyXG4gICAgY29uc3Qga2V5cyA9IHRoaXMuX2Zvcm1EYXRhS2V5cygpO1xyXG4gICAga2V5cy5mb3JFYWNoKGtleSA9PiBmb3JtLmFwcGVuZChrZXksIHRoaXMuZm9ybURhdGFba2V5XSkpO1xyXG4gICAgcmV0dXJuIGZvcm07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kZWxldGVGaWxlKGZpbGU6IElucHV0RmlsZU1vZGVsKSB7XHJcbiAgICBjb25zdCBmaW5kRmlsZSA9IHRoaXMuZmlsZXMuZmluZChzID0+IHMuaWQgPT09IGZpbGUuaWQpO1xyXG5cclxuICAgIGlmIChmaW5kRmlsZSkge1xyXG4gICAgICBpZiAodGhpcy5kZWxldGVFbmRQb2ludCkge1xyXG4gICAgICAgIGZpbmRGaWxlLmRlbGV0aW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2UuZGVsZXRlKHRoaXMuZGVsZXRlRW5kUG9pbnQpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgdGhpcy5maWxlcy5zcGxpY2UodGhpcy5maWxlcy5pbmRleE9mKGZpbmRGaWxlKSwgMSk7XHJcbiAgICAgICAgICB0aGlzLmZpbGVzQ2hhbmdlZC5lbWl0KHRoaXMuZmlsZXMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZpbGVzLnNwbGljZSh0aGlzLmZpbGVzLmluZGV4T2YoZmluZEZpbGUpLCAxKTtcclxuICAgICAgICB0aGlzLmZpbGVzQ2hhbmdlZC5lbWl0KHRoaXMuZmlsZXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVGaWxlKG9sZEZpbGU6IElucHV0RmlsZU1vZGVsLCBuZXdGaWxlOiBGaWxlKSB7XHJcbiAgICBjb25zdCBmaW5kRmlsZSA9IHRoaXMuZmlsZXMuZmluZCgoczogSW5wdXRGaWxlTW9kZWwpID0+IHtcclxuICAgICAgaWYgKHMuaWQgIT09ICcnKSB7XHJcbiAgICAgICAgcmV0dXJuIHMuaWQgPT09IG9sZEZpbGUuaWQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHMudGVtcFV1aWQgPT09IG9sZEZpbGUudGVtcFV1aWQ7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChmaW5kRmlsZSkge1xyXG4gICAgICBjb25zdCBkYXRhOiBJbnB1dEZpbGVNb2RlbCA9IHtcclxuICAgICAgICBpZDogJycsXHJcbiAgICAgICAgdGVtcFV1aWQ6IHV1aWR2NCgpLFxyXG4gICAgICAgIG5hbWU6IG5ld0ZpbGUubmFtZSxcclxuICAgICAgICBsZW5ndGg6IG5ld0ZpbGUuc2l6ZSxcclxuICAgICAgICB1cGxvYWRpbmc6IHRydWUsXHJcbiAgICAgICAgcGVyY2VudGFnZTogMCxcclxuICAgICAgICBmaWxlOiBuZXdGaWxlLFxyXG4gICAgICB9IGFzIElucHV0RmlsZU1vZGVsO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZGVsZXRlRW5kUG9pbnQpIHtcclxuICAgICAgICBmaW5kRmlsZS5kZWxldGluZyA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuaW1hZ2VVcGxvYWRTZXJ2aWNlLmRlbGV0ZSh0aGlzLmRlbGV0ZUVuZFBvaW50KS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKHRoaXMuZmlsZXMuaW5kZXhPZihmaW5kRmlsZSksIDEpO1xyXG4gICAgICAgICAgdGhpcy5maWxlcy5wdXNoKGRhdGEpO1xyXG4gICAgICAgICAgdGhpcy5fdXBsb2FkRmlsZShkYXRhKTtcclxuXHJcbiAgICAgICAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZmlsZXMucHVzaChkYXRhKTtcclxuICAgICAgICB0aGlzLl91cGxvYWRGaWxlKGRhdGEpO1xyXG5cclxuICAgICAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VwbG9hZEZpbGUoZGF0YTogSW5wdXRGaWxlTW9kZWwpIHtcclxuICAgIGNvbnN0IGZvcm1EYXRhID0gdGhpcy5fY3JlYXRlRm9ybURhdGEoKTtcclxuXHJcbiAgICBpZiAoZGF0YS5maWxlKSB7XHJcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnRmlsZScsIGRhdGEuZmlsZSk7XHJcblxyXG4gICAgICBkYXRhLmV4ZWN1dGlvbiA9IHRoaXMuaW1hZ2VVcGxvYWRTZXJ2aWNlLnVwbG9hZCh0aGlzLnVwbG9hZEVuZFBvaW50LCBmb3JtRGF0YSkucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcclxuICAgICAgICAgIGRhdGEudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBIdHRwRXZlbnQ8VXBsb2FkZWRSZXN1bHRNb2RlbD4pID0+IHtcclxuICAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuU2VudDpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlSGVhZGVyOlxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3M6XHJcbiAgICAgICAgICAgICAgaWYgKGV2ZW50LnRvdGFsKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhLnBlcmNlbnRhZ2UgPSBNYXRoLnJvdW5kKGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsICogMTAwKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5SZXNwb25zZTpcclxuICAgICAgICAgICAgICBpZiAoZXZlbnQuYm9keSkge1xyXG4gICAgICAgICAgICAgICAgZGF0YS51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGRhdGEucGVyY2VudGFnZSA9IDA7XHJcbiAgICAgICAgICAgICAgICBkYXRhLmlkID0gZXZlbnQuYm9keS51dWlkO1xyXG4gICAgICAgICAgICAgICAgZGF0YS5maWxlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgZGF0YS5lcnJvciA9IGV2ZW50LmJvZHkubWVzc2FnZTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5leGVjdXRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgZGF0YS5leGVjdXRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbGVzLmV2ZXJ5KHMgPT4gIXMudXBsb2FkaW5nKSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmZpbGVzQ2hhbmdlZC5lbWl0KHRoaXMuZmlsZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZVwiIFtjbGFzc109XCJnZXRDbGFzc2VzXCI+XHJcbiAgQHN3aXRjaCAodHlwZSkge1xyXG4gICAgQGNhc2UgKCdhdmF0YXInKSB7XHJcbiAgICAgIDxuZ3gtZmlsZS1kcm9wXHJcbiAgICAgICAgW2NsYXNzTmFtZV09XCJnZXREcm9wWm9uZUNsYXNzZXNcIlxyXG4gICAgICAgIFthY2NlcHRdPVwiZXh0ZW5zaW9ucyB8fCAnJ1wiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAob25GaWxlRHJvcCk9XCJkcm9wcGVkKCRldmVudClcIlxyXG4gICAgICAgIChvbkZpbGVPdmVyKT1cImZpbGVPdmVyKCRldmVudClcIiAob25GaWxlTGVhdmUpPVwiZmlsZUxlYXZlKCRldmVudClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIG5neC1maWxlLWRyb3AtY29udGVudC10bXAgbGV0LW9wZW5GaWxlU2VsZWN0b3I9XCJvcGVuRmlsZVNlbGVjdG9yXCI+XHJcbiAgICAgICAgICBAaWYgKGZpbGVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtYXZhdGFyXCI+XHJcblxyXG4gICAgICAgICAgICAgIEBmb3IgKGZpbGUgb2YgZmlsZXM7IHRyYWNrIGZpbGUuaWQpIHtcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtYXZhdGFyLWl0ZW1cIiBbY2xhc3MubXJ4LWlucHV0LWZpbGUtaW1hZ2UtZXJyb3JdPVwiZmlsZS5lcnJvclwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAaWYgKGZpbGUuZXJyb3IpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2xvc2UgaWNvbi1mb250LTI0XCIgKGNsaWNrKT1cImNsZWFyKGZpbGUpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWF2YXRhci1pdGVtLWVycm9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1pbWFnZSBpY29uLWZvbnQtMjQgaWNvbi1maWxsZWQtY29sb3ItbmVnYXRpdmVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpbGUuZXJyb3IgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChmaWxlLnVwbG9hZGluZyAmJiAhZmlsZS5lcnJvcikge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1jbG9zZSBpY29uLWZvbnQtMjRcIiAoY2xpY2spPVwiZGVsZXRlKCRldmVudCwgZmlsZSlcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtYXZhdGFyLWl0ZW0tdXBsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtYXZhdGFyLWl0ZW0tdXBsb2FkaW5nLXRleHRcIj7Ql9Cw0LPRgNGD0LfQutCwLi4uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtYXZhdGFyLWl0ZW0tdXBsb2FkaW5nLXByb2dyZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW25nU3R5bGVdPVwie3dpZHRoOiBmaWxlLnBlcmNlbnRhZ2UgKyAnJSd9XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmICghZmlsZS51cGxvYWRpbmcgJiYgIWZpbGUuZXJyb3IpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZG93bmxvYWRVcmwoZmlsZSlcIiBbYWx0XT1cImZpbGUubmFtZVwiIGhlaWdodD1cIjE1NFwiIHdpZHRoPVwiMTU0XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1jb250cm9scy1pdGVtXCIgKGNsaWNrKT1cImNoYW5nZVByZXZpZXcoJGV2ZW50LCBmaWxlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1wZW4gaWNvbi1mb250LTE2XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWNvbnRyb2xzLWl0ZW1cIiAoY2xpY2spPVwiZGVsZXRlKCRldmVudCwgZmlsZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tZGVsZXRlIGljb24tZm9udC0xNlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtaW5wdXRcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5tcngtaW5wdXQtZmlsZS1pbWFnZV9fZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCIhZGlzYWJsZWQgPyBvcGVuRmlsZVNlbGVjdG9yKCkgOiB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1pbnB1dC1wbGFjZWhvbGRlclwiPnt7IHBsYWNlaG9sZGVyIHx8IGdldERlZmF1bHRQbGFjZWhvbGRlciB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtaW5wdXQtaW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+0KDQsNC30LzQtdGAOiDQtNC+IHt7IGZvcm1hdEJ5dGVzKG1heFNpemUpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJleHRlbnNpb25zXCI+0KTQvtGA0LzQsNGCOiB7eyBleHRlbnNpb25zIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L25neC1maWxlLWRyb3A+XHJcbiAgICB9XHJcbiAgICBAZGVmYXVsdCB7XHJcbiAgICAgIEBpZiAoY2FuQWRkKSB7XHJcbiAgICAgICAgPG5neC1maWxlLWRyb3BcclxuICAgICAgICAgIFtjbGFzc05hbWVdPVwiZ2V0RHJvcFpvbmVDbGFzc2VzXCJcclxuICAgICAgICAgIFthY2NlcHRdPVwiZXh0ZW5zaW9ucyB8fCAnJ1wiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgKG9uRmlsZURyb3ApPVwiZHJvcHBlZCgkZXZlbnQpXCJcclxuICAgICAgICAgIChvbkZpbGVPdmVyKT1cImZpbGVPdmVyKCRldmVudClcIiAob25GaWxlTGVhdmUpPVwiZmlsZUxlYXZlKCRldmVudClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ3gtZmlsZS1kcm9wLWNvbnRlbnQtdG1wIGxldC1vcGVuRmlsZVNlbGVjdG9yPVwib3BlbkZpbGVTZWxlY3RvclwiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIiFkaXNhYmxlZCA/IG9wZW5GaWxlU2VsZWN0b3IoKSA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWlucHV0LXBsYWNlaG9sZGVyXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBwbGFjZWhvbGRlciB8fCBnZXREZWZhdWx0UGxhY2Vob2xkZXIgfX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWlucHV0LWluZm9cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPtCg0LDQt9C80LXRgDog0LTQviB7eyBmb3JtYXRCeXRlcyhtYXhTaXplKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZXh0ZW5zaW9uc1wiPtCk0L7RgNC80LDRgjoge3sgZXh0ZW5zaW9ucyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmd4LWZpbGUtZHJvcD5cclxuICAgICAgfVxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLXByZXZpZXdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICBAZm9yIChmaWxlIG9mIGZpbGVzOyB0cmFjayBmaWxlLmlkKSB7XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGNvbC0xMiBjb2wtc20tNiBjb2wtbWQtNCBjb2wtbGctM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1wcmV2aWV3LWl0ZW1cIiBbY2xhc3MubXJ4LWlucHV0LWZpbGUtaW1hZ2UtZXJyb3JdPVwiZmlsZS5lcnJvclwiPlxyXG4gICAgICAgICAgICAgICAgQGlmIChmaWxlLmVycm9yKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2xvc2UgaWNvbi1mb250LTI0XCIgKGNsaWNrKT1cImRlbGV0ZSgkZXZlbnQsIGZpbGUpXCI+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLXByZXZpZXctaXRlbS1lcnJvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1pbWFnZSBpY29uLWZvbnQtMjQgaWNvbi1maWxsZWQtY29sb3ItbmVnYXRpdmVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZmlsZS5lcnJvciB9fVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLXByZXZpZXctaXRlbS1uYW1lXCI+e3sgZmlsZS5uYW1lIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1wcmV2aWV3LWl0ZW0tZGVzY3JpcHRpb25cIj57eyBmb3JtYXRCeXRlcyhmaWxlLmxlbmd0aCkgfX08L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChmaWxlLnVwbG9hZGluZyAmJiAhZmlsZS5lcnJvcikge1xyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLXByZXZpZXctaXRlbS11cGxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLXByZXZpZXctaXRlbS11cGxvYWRpbmctdGV4dFwiPtCX0LDQs9GA0YPQt9C60LAuLi48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLXByZXZpZXctaXRlbS11cGxvYWRpbmctcHJvZ3Jlc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtuZ1N0eWxlXT1cInt3aWR0aDogZmlsZS5wZXJjZW50YWdlICsgJyUnfVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoIWZpbGUudXBsb2FkaW5nICYmICFmaWxlLmVycm9yKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtcHJldmlldy1pdGVtX19pbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJkb3dubG9hZFVybChmaWxlKVwiIFthbHRdPVwiZmlsZS5uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLXByZXZpZXctaXRlbS1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLXByZXZpZXctaXRlbS1uYW1lXCI+e3sgZmlsZS5uYW1lIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLXByZXZpZXctaXRlbS1kZXNjcmlwdGlvblwiPnt7IGZvcm1hdEJ5dGVzKGZpbGUubGVuZ3RoKSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1jb250cm9sc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1jb250cm9scy1pdGVtXCIgKGNsaWNrKT1cImNoYW5nZVByZXZpZXcoJGV2ZW50LCBmaWxlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLXBlbiBpY29uLWZvbnQtMTZcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWNvbnRyb2xzLWl0ZW1cIiAoY2xpY2spPVwiZGVsZXRlKCRldmVudCwgZmlsZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1kZWxldGUgaWNvbi1mb250LTE2XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICB9XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { initialMrxAutoSaveState } from './state';
|
|
2
2
|
import { createReducer, on } from '@ngrx/store';
|
|
3
3
|
import * as MrxAutoSaveActions from './actions';
|
|
4
|
-
import { cloneDeep } from 'lodash-es';
|
|
5
4
|
const reducerCreator = createReducer(initialMrxAutoSaveState, on(MrxAutoSaveActions.autosaveAddId, (state, { id, groupId = null }) => {
|
|
6
5
|
const isFind = state.fields.some((field) => field.id === id);
|
|
7
6
|
if (!isFind) {
|
|
@@ -12,16 +11,12 @@ const reducerCreator = createReducer(initialMrxAutoSaveState, on(MrxAutoSaveActi
|
|
|
12
11
|
return { ...state };
|
|
13
12
|
}
|
|
14
13
|
}), on(MrxAutoSaveActions.autosaveStart, (state) => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
f.state = 'saving';
|
|
18
|
-
return { ...f };
|
|
19
|
-
})
|
|
20
|
-
};
|
|
14
|
+
const copied = structuredClone(state.fields);
|
|
15
|
+
return { ...state, fields: copied.map((f) => ({ ...f, state: 'saving' })) };
|
|
21
16
|
}), on(MrxAutoSaveActions.autosaveStartFor, (state, { id, groupId = null }) => {
|
|
22
|
-
const
|
|
17
|
+
const copied = structuredClone(state.fields);
|
|
23
18
|
return {
|
|
24
|
-
...state, fields:
|
|
19
|
+
...state, fields: copied.map(f => {
|
|
25
20
|
if (groupId && f.groupId === groupId) {
|
|
26
21
|
f.state = 'saving';
|
|
27
22
|
}
|
|
@@ -32,16 +27,12 @@ const reducerCreator = createReducer(initialMrxAutoSaveState, on(MrxAutoSaveActi
|
|
|
32
27
|
})
|
|
33
28
|
};
|
|
34
29
|
}), on(MrxAutoSaveActions.autosaveSuccess, (state) => {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
f.state = 'saved';
|
|
38
|
-
return { ...f };
|
|
39
|
-
})
|
|
40
|
-
};
|
|
30
|
+
const copied = structuredClone(state.fields);
|
|
31
|
+
return { ...state, fields: copied.map((f) => ({ ...f, state: 'saved' })) };
|
|
41
32
|
}), on(MrxAutoSaveActions.autosaveSuccessFor, (state, { id, groupId = null }) => {
|
|
42
|
-
const
|
|
33
|
+
const copied = structuredClone(state.fields);
|
|
43
34
|
return {
|
|
44
|
-
...state, fields:
|
|
35
|
+
...state, fields: copied.map(f => {
|
|
45
36
|
if (groupId && f.groupId === groupId) {
|
|
46
37
|
f.state = 'saved';
|
|
47
38
|
}
|
|
@@ -52,20 +43,12 @@ const reducerCreator = createReducer(initialMrxAutoSaveState, on(MrxAutoSaveActi
|
|
|
52
43
|
})
|
|
53
44
|
};
|
|
54
45
|
}), on(MrxAutoSaveActions.autosaveError, (state) => {
|
|
46
|
+
const copied = structuredClone(state.fields);
|
|
47
|
+
return { ...state, fields: copied.map((f) => ({ ...f, state: 'error' })) };
|
|
48
|
+
}), on(MrxAutoSaveActions.autosaveErrorFor, (state, { id, groupId = null }) => {
|
|
49
|
+
const copied = structuredClone(state.fields);
|
|
55
50
|
return {
|
|
56
|
-
...state, fields:
|
|
57
|
-
f.state = 'error';
|
|
58
|
-
return { ...f };
|
|
59
|
-
})
|
|
60
|
-
};
|
|
61
|
-
}),
|
|
62
|
-
// on(MrxAutoSaveActions.autosaveError, (state) => {
|
|
63
|
-
// return { ...state, fields: [...state.fields].map(f => ({ ...f, state: 'error' })) };
|
|
64
|
-
// }),
|
|
65
|
-
on(MrxAutoSaveActions.autosaveErrorFor, (state, { id, groupId = null }) => {
|
|
66
|
-
const fields = cloneDeep(state.fields);
|
|
67
|
-
return {
|
|
68
|
-
...state, fields: fields.map(f => {
|
|
51
|
+
...state, fields: copied.map(f => {
|
|
69
52
|
if (groupId && f.groupId === groupId) {
|
|
70
53
|
f.state = 'error';
|
|
71
54
|
}
|
|
@@ -78,9 +61,9 @@ on(MrxAutoSaveActions.autosaveErrorFor, (state, { id, groupId = null }) => {
|
|
|
78
61
|
}), on(MrxAutoSaveActions.autosaveStop, (state) => {
|
|
79
62
|
return { ...state, fields: [] };
|
|
80
63
|
}), on(MrxAutoSaveActions.autosaveStopFor, (state, { id, groupId = null }) => {
|
|
64
|
+
const copied = structuredClone(state.fields);
|
|
81
65
|
return {
|
|
82
|
-
...state,
|
|
83
|
-
fields: state.fields.filter((f) => {
|
|
66
|
+
...state, fields: copied.filter((f) => {
|
|
84
67
|
if (groupId) {
|
|
85
68
|
return f.groupId !== groupId;
|
|
86
69
|
}
|
|
@@ -93,4 +76,4 @@ on(MrxAutoSaveActions.autosaveErrorFor, (state, { id, groupId = null }) => {
|
|
|
93
76
|
export function mrxAutoSaveStateReducer(state, action) {
|
|
94
77
|
return reducerCreator(state, action);
|
|
95
78
|
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvc2VydmljZXMvc2F2ZS1zdG9yZS9zdG9yZS9yZWR1Y2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBUyx1QkFBdUIsRUFBb0IsTUFBTSxTQUFTLENBQUM7QUFDM0UsT0FBTyxFQUFVLGFBQWEsRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEQsT0FBTyxLQUFLLGtCQUFrQixNQUFNLFdBQVcsQ0FBQztBQUVoRCxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQ2xDLHVCQUF1QixFQUN2QixFQUFFLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUMsRUFBRSxFQUFFLE9BQU8sR0FBRyxJQUFJLEVBQUMsRUFBRSxFQUFFO0lBQ25FLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBRTdELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLE1BQU0sS0FBSyxHQUFVLEVBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUMsQ0FBQztRQUNsRSxPQUFPLEVBQUMsR0FBRyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFDLENBQUM7SUFDdEQsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLEVBQUMsR0FBRyxLQUFLLEVBQUMsQ0FBQztJQUNwQixDQUFDO0FBQ0gsQ0FBQyxDQUFDLEVBQ0YsRUFBRSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFF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QUM7Z0JBQ04sT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQyxDQUFDO0tBQ0gsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7QUFFRixNQUFNLFVBQVUsdUJBQXVCLENBQUMsS0FBbUMsRUFBRSxNQUFjO0lBQ3pGLE9BQU8sY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGQsIGluaXRpYWxNcnhBdXRvU2F2ZVN0YXRlLCBNcnhBdXRvU2F2ZVN0YXRlIH0gZnJvbSAnLi9zdGF0ZSc7XHJcbmltcG9ydCB7IEFjdGlvbiwgY3JlYXRlUmVkdWNlciwgb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCAqIGFzIE1yeEF1dG9TYXZlQWN0aW9ucyBmcm9tICcuL2FjdGlvbnMnO1xyXG5cclxuY29uc3QgcmVkdWNlckNyZWF0b3IgPSBjcmVhdGVSZWR1Y2VyKFxyXG4gIGluaXRpYWxNcnhBdXRvU2F2ZVN0YXRlLFxyXG4gIG9uKE1yeEF1dG9TYXZlQWN0aW9ucy5hdXRvc2F2ZUFkZElkLCAoc3RhdGUsIHtpZCwgZ3JvdXBJZCA9IG51bGx9KSA9PiB7XHJcbiAgICBjb25zdCBpc0ZpbmQgPSBzdGF0ZS5maWVsZHMuc29tZSgoZmllbGQpID0+IGZpZWxkLmlkID09PSBpZCk7XHJcblxyXG4gICAgaWYgKCFpc0ZpbmQpIHtcclxuICAgICAgY29uc3QgZmllbGQ6IEZpZWxkID0ge2lkOiBpZCwgc3RhdGU6ICdzdG9wcGVkJywgZ3JvdXBJZDogZ3JvdXBJZH07XHJcbiAgICAgIHJldHVybiB7Li4uc3RhdGUsIGZpZWxkczogWy4uLnN0YXRlLmZpZWxkcywgZmllbGRdfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB7Li4uc3RhdGV9O1xyXG4gICAgfVxyXG4gIH0pLFxyXG4gIG9uKE1yeEF1dG9TYXZlQWN0aW9ucy5hdXRvc2F2ZVN0YXJ0LCAoc3RhdGUpID0+IHtcclxuICAgIGNvbnN0IGNvcGllZCA9IHN0cnVjdHVyZWRDbG9uZShzdGF0ZS5maWVsZHMpO1xyXG4gICAgcmV0dXJuIHsuLi5zdGF0ZSwgZmllbGRzOiBjb3BpZWQubWFwKChmOiBGaWVsZCk6IEZpZWxkID0+ICh7Li4uZiwgc3RhdGU6ICdzYXZpbmcnfSkpfTtcclxuICB9KSxcclxuICBvbihNcnhBdXRvU2F2ZUFjdGlvbnMuYXV0b3NhdmVTdGFydEZvciwgKHN0YXRlLCB7aWQsIGdyb3VwSWQgPSBudWxsfSkgPT4ge1xyXG4gICAgY29uc3QgY29waWVkID0gc3RydWN0dXJlZENsb25lKHN0YXRlLmZpZWxkcyk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4uc3RhdGUsIGZpZWxkczogY29waWVkLm1hcChmID0+IHtcclxuICAgICAgICBpZiAoZ3JvdXBJZCAmJiBmLmdyb3VwSWQgPT09IGdyb3VwSWQpIHtcclxuICAgICAgICAgIGYuc3RhdGUgPSAnc2F2aW5nJztcclxuICAgICAgICB9IGVsc2UgaWYgKGYuaWQgPT09IGlkKSB7XHJcbiAgICAgICAgICBmLnN0YXRlID0gJ3NhdmluZyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmO1xyXG4gICAgICB9KVxyXG4gICAgfTtcclxuICB9KSxcclxuICBvbihNcnhBdXRvU2F2ZUFjdGlvbnMuYXV0b3NhdmVTdWNjZXNzLCAoc3RhdGUpID0+IHtcclxuICAgIGNvbnN0IGNvcGllZCA9IHN0cnVjdHVyZWRDbG9uZShzdGF0ZS5maWVsZHMpO1xyXG4gICAgcmV0dXJuIHsuLi5zdGF0ZSwgZmllbGRzOiBjb3BpZWQubWFwKChmOiBGaWVsZCk6IEZpZWxkID0+ICh7Li4uZiwgc3RhdGU6ICdzYXZlZCd9KSl9O1xyXG4gIH0pLFxyXG4gIG9uKE1yeEF1dG9TYXZlQWN0aW9ucy5hdXRvc2F2ZVN1Y2Nlc3NGb3IsIChzdGF0ZSwge2lkLCBncm91cElkID0gbnVsbH0pID0+IHtcclxuICAgIGNvbnN0IGNvcGllZCA9IHN0cnVjdHVyZWRDbG9uZShzdGF0ZS5maWVsZHMpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4uc3RhdGUsIGZpZWxkczogY29waWVkLm1hcChmID0+IHtcclxuICAgICAgICBpZiAoZ3JvdXBJZCAmJiBmLmdyb3VwSWQgPT09IGdyb3VwSWQpIHtcclxuICAgICAgICAgIGYuc3RhdGUgPSAnc2F2ZWQnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZi5pZCA9PT0gaWQpIHtcclxuICAgICAgICAgIGYuc3RhdGUgPSAnc2F2ZWQnO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZjtcclxuICAgICAgfSlcclxuICAgIH07XHJcbiAgfSksXHJcbiAgb24oTXJ4QXV0b1NhdmVBY3Rpb25zLmF1dG9zYXZlRXJyb3IsIChzdGF0ZSkgPT4ge1xyXG4gICAgY29uc3QgY29waWVkID0gc3RydWN0dXJlZENsb25lKHN0YXRlLmZpZWxkcyk7XHJcbiAgICByZXR1cm4gey4uLnN0YXRlLCBmaWVsZHM6IGNvcGllZC5tYXAoKGY6IEZpZWxkKTogRmllbGQgPT4gKHsuLi5mLCBzdGF0ZTogJ2Vycm9yJ30pKX07XHJcbiAgfSksXHJcbiAgb24oTXJ4QXV0b1NhdmVBY3Rpb25zLmF1dG9zYXZlRXJyb3JGb3IsIChzdGF0ZSwge2lkLCBncm91cElkID0gbnVsbH0pID0+IHtcclxuICAgIGNvbnN0IGNvcGllZCA9IHN0cnVjdHVyZWRDbG9uZShzdGF0ZS5maWVsZHMpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4uc3RhdGUsIGZpZWxkczogY29waWVkLm1hcChmID0+IHtcclxuICAgICAgICBpZiAoZ3JvdXBJZCAmJiBmLmdyb3VwSWQgPT09IGdyb3VwSWQpIHtcclxuICAgICAgICAgIGYuc3RhdGUgPSAnZXJyb3InO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZi5pZCA9PT0gaWQpIHtcclxuICAgICAgICAgIGYuc3RhdGUgPSAnZXJyb3InO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZjtcclxuICAgICAgfSlcclxuICAgIH07XHJcbiAgfSksXHJcbiAgb24oTXJ4QXV0b1NhdmVBY3Rpb25zLmF1dG9zYXZlU3RvcCwgKHN0YXRlKSA9PiB7XHJcbiAgICByZXR1cm4gey4uLnN0YXRlLCBmaWVsZHM6IFtdfTtcclxuICB9KSxcclxuICBvbihNcnhBdXRvU2F2ZUFjdGlvbnMuYXV0b3NhdmVTdG9wRm9yLCAoc3RhdGUsIHtpZCwgZ3JvdXBJZCA9IG51bGx9KSA9PiB7XHJcbiAgICBjb25zdCBjb3BpZWQgPSBzdHJ1Y3R1cmVkQ2xvbmUoc3RhdGUuZmllbGRzKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLnN0YXRlLCBmaWVsZHM6IGNvcGllZC5maWx0ZXIoKGYpID0+IHtcclxuICAgICAgICBpZiAoZ3JvdXBJZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGYuZ3JvdXBJZCAhPT0gZ3JvdXBJZDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIGYuaWQgIT09IGlkO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH07XHJcbiAgfSksXHJcbik7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbXJ4QXV0b1NhdmVTdGF0ZVJlZHVjZXIoc3RhdGU6IE1yeEF1dG9TYXZlU3RhdGUgfCB1bmRlZmluZWQsIGFjdGlvbjogQWN0aW9uKSB7XHJcbiAgcmV0dXJuIHJlZHVjZXJDcmVhdG9yKHN0YXRlLCBhY3Rpb24pO1xyXG59XHJcbiJdfQ==
|
package/fesm2022/myrta-ui.mjs
CHANGED
|
@@ -3153,16 +3153,12 @@ const reducerCreator = createReducer(initialMrxAutoSaveState, on(autosaveAddId,
|
|
|
3153
3153
|
return { ...state };
|
|
3154
3154
|
}
|
|
3155
3155
|
}), on(autosaveStart, (state) => {
|
|
3156
|
-
|
|
3157
|
-
|
|
3158
|
-
f.state = 'saving';
|
|
3159
|
-
return { ...f };
|
|
3160
|
-
})
|
|
3161
|
-
};
|
|
3156
|
+
const copied = structuredClone(state.fields);
|
|
3157
|
+
return { ...state, fields: copied.map((f) => ({ ...f, state: 'saving' })) };
|
|
3162
3158
|
}), on(autosaveStartFor, (state, { id, groupId = null }) => {
|
|
3163
|
-
const
|
|
3159
|
+
const copied = structuredClone(state.fields);
|
|
3164
3160
|
return {
|
|
3165
|
-
...state, fields:
|
|
3161
|
+
...state, fields: copied.map(f => {
|
|
3166
3162
|
if (groupId && f.groupId === groupId) {
|
|
3167
3163
|
f.state = 'saving';
|
|
3168
3164
|
}
|
|
@@ -3173,16 +3169,12 @@ const reducerCreator = createReducer(initialMrxAutoSaveState, on(autosaveAddId,
|
|
|
3173
3169
|
})
|
|
3174
3170
|
};
|
|
3175
3171
|
}), on(autosaveSuccess, (state) => {
|
|
3176
|
-
|
|
3177
|
-
|
|
3178
|
-
f.state = 'saved';
|
|
3179
|
-
return { ...f };
|
|
3180
|
-
})
|
|
3181
|
-
};
|
|
3172
|
+
const copied = structuredClone(state.fields);
|
|
3173
|
+
return { ...state, fields: copied.map((f) => ({ ...f, state: 'saved' })) };
|
|
3182
3174
|
}), on(autosaveSuccessFor, (state, { id, groupId = null }) => {
|
|
3183
|
-
const
|
|
3175
|
+
const copied = structuredClone(state.fields);
|
|
3184
3176
|
return {
|
|
3185
|
-
...state, fields:
|
|
3177
|
+
...state, fields: copied.map(f => {
|
|
3186
3178
|
if (groupId && f.groupId === groupId) {
|
|
3187
3179
|
f.state = 'saved';
|
|
3188
3180
|
}
|
|
@@ -3193,20 +3185,12 @@ const reducerCreator = createReducer(initialMrxAutoSaveState, on(autosaveAddId,
|
|
|
3193
3185
|
})
|
|
3194
3186
|
};
|
|
3195
3187
|
}), on(autosaveError, (state) => {
|
|
3188
|
+
const copied = structuredClone(state.fields);
|
|
3189
|
+
return { ...state, fields: copied.map((f) => ({ ...f, state: 'error' })) };
|
|
3190
|
+
}), on(autosaveErrorFor, (state, { id, groupId = null }) => {
|
|
3191
|
+
const copied = structuredClone(state.fields);
|
|
3196
3192
|
return {
|
|
3197
|
-
...state, fields:
|
|
3198
|
-
f.state = 'error';
|
|
3199
|
-
return { ...f };
|
|
3200
|
-
})
|
|
3201
|
-
};
|
|
3202
|
-
}),
|
|
3203
|
-
// on(MrxAutoSaveActions.autosaveError, (state) => {
|
|
3204
|
-
// return { ...state, fields: [...state.fields].map(f => ({ ...f, state: 'error' })) };
|
|
3205
|
-
// }),
|
|
3206
|
-
on(autosaveErrorFor, (state, { id, groupId = null }) => {
|
|
3207
|
-
const fields = cloneDeep(state.fields);
|
|
3208
|
-
return {
|
|
3209
|
-
...state, fields: fields.map(f => {
|
|
3193
|
+
...state, fields: copied.map(f => {
|
|
3210
3194
|
if (groupId && f.groupId === groupId) {
|
|
3211
3195
|
f.state = 'error';
|
|
3212
3196
|
}
|
|
@@ -3219,9 +3203,9 @@ on(autosaveErrorFor, (state, { id, groupId = null }) => {
|
|
|
3219
3203
|
}), on(autosaveStop, (state) => {
|
|
3220
3204
|
return { ...state, fields: [] };
|
|
3221
3205
|
}), on(autosaveStopFor, (state, { id, groupId = null }) => {
|
|
3206
|
+
const copied = structuredClone(state.fields);
|
|
3222
3207
|
return {
|
|
3223
|
-
...state,
|
|
3224
|
-
fields: state.fields.filter((f) => {
|
|
3208
|
+
...state, fields: copied.filter((f) => {
|
|
3225
3209
|
if (groupId) {
|
|
3226
3210
|
return f.groupId !== groupId;
|
|
3227
3211
|
}
|
|
@@ -10976,6 +10960,7 @@ class InputFileImageComponent {
|
|
|
10976
10960
|
imageUploadService;
|
|
10977
10961
|
_modalService;
|
|
10978
10962
|
_detector;
|
|
10963
|
+
isProcessing = false;
|
|
10979
10964
|
formatBytes = formatBytes;
|
|
10980
10965
|
extensions;
|
|
10981
10966
|
allowedExtensions = [];
|
|
@@ -11109,6 +11094,9 @@ class InputFileImageComponent {
|
|
|
11109
11094
|
}
|
|
11110
11095
|
changePreview(event, file) {
|
|
11111
11096
|
event.stopPropagation();
|
|
11097
|
+
if (this.isProcessing)
|
|
11098
|
+
return;
|
|
11099
|
+
this.isProcessing = true;
|
|
11112
11100
|
getBase64FromUrl(this.downloadUrl(file)).then((base64Url) => {
|
|
11113
11101
|
this._modalService.open(FileImageEditModalComponent, {
|
|
11114
11102
|
title: 'РЕДАКТИРОВАНИЕ ИЗОБРАЖЕНИЯ',
|
|
@@ -11123,6 +11111,7 @@ class InputFileImageComponent {
|
|
|
11123
11111
|
if (res.result && res.fileImage) {
|
|
11124
11112
|
this._updateFile(file, res.fileImage);
|
|
11125
11113
|
}
|
|
11114
|
+
this.isProcessing = false;
|
|
11126
11115
|
});
|
|
11127
11116
|
});
|
|
11128
11117
|
}
|