myrta-ui 17.1.20 → 17.1.21
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.
|
@@ -2,6 +2,7 @@ import { ChangeDetectionStrategy, Component, HostListener, Input, ViewChild } fr
|
|
|
2
2
|
import { animate, state, style, transition, trigger } from '@angular/animations';
|
|
3
3
|
import { TooltipService } from '../tooltip/services/tooltip.service';
|
|
4
4
|
import { FindState, NgxExtendedPdfViewerComponent } from 'ngx-extended-pdf-viewer';
|
|
5
|
+
import { HttpHeaders } from '@angular/common/http';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
import * as i1 from "ngx-extended-pdf-viewer";
|
|
7
8
|
import * as i2 from "@angular/common/http";
|
|
@@ -229,24 +230,36 @@ export class PdfViewerComponent {
|
|
|
229
230
|
}
|
|
230
231
|
onDownloadClick() {
|
|
231
232
|
if (this.downloadFileName) {
|
|
232
|
-
this._downloadFile(this.downloadFileName);
|
|
233
|
+
this._downloadFile(this.downloadFileName).then();
|
|
233
234
|
}
|
|
234
235
|
else {
|
|
236
|
+
const headers = new HttpHeaders();
|
|
237
|
+
headers.set('Content-Disposition', 'Печатная форма заявки со штампом.pdf');
|
|
235
238
|
this._http.get(this.src, { responseType: 'blob', observe: 'response', })
|
|
236
239
|
.subscribe((response) => {
|
|
237
240
|
const contentDisposition = response.headers.get('Content-Disposition');
|
|
238
|
-
if (contentDisposition) {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
241
|
+
if (!contentDisposition) {
|
|
242
|
+
this._downloadFile('document.pdf').then();
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
const encodingFileName = contentDisposition.match(/filename\*\s*=\s*([^;]+)/i);
|
|
246
|
+
if (encodingFileName) {
|
|
247
|
+
const parts = encodingFileName[1].split('\'\'');
|
|
248
|
+
if (parts.length === 2) {
|
|
249
|
+
const encoding = parts[0].toLowerCase();
|
|
250
|
+
const fileName = parts[1];
|
|
251
|
+
if (encoding === 'utf-8') {
|
|
252
|
+
this._downloadFile(decodeURIComponent(fileName)).then();
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
245
255
|
}
|
|
246
256
|
}
|
|
247
|
-
|
|
248
|
-
|
|
257
|
+
const simpleFileName = contentDisposition.match(/filename\s*=\s*["']?([^;"']+)/i);
|
|
258
|
+
if (simpleFileName) {
|
|
259
|
+
this._downloadFile(simpleFileName[1]).then();
|
|
260
|
+
return;
|
|
249
261
|
}
|
|
262
|
+
this._downloadFile('document.pdf').then();
|
|
250
263
|
});
|
|
251
264
|
}
|
|
252
265
|
}
|
|
@@ -313,4 +326,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
313
326
|
type: HostListener,
|
|
314
327
|
args: ['document:keydown', ['$event']]
|
|
315
328
|
}] } });
|
|
316
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvcGRmLXZpZXdlci9wZGYtdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9wZGYtdmlld2VyL3BkZi12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFLTCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUVMLFNBQVMsRUFDVCw2QkFBNkIsRUFHOUIsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7OztBQXVCakMsTUFBTSxPQUFPLGtCQUFrQjtJQWlFbkI7SUFDQTtJQUNBO0lBQ0E7SUFuRUgsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUNqQixTQUFTLEdBQWMsU0FBUyxDQUFDLE9BQU8sQ0FBQztJQUN6QyxVQUFVLEdBQVcsQ0FBQyxDQUFDO0lBQ3ZCLFdBQVcsR0FBVyxDQUFDLENBQUM7SUFDeEIsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNULG9CQUFvQixHQUFHLEtBQUssQ0FBQztJQUM3QixjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDZCxZQUFZLEdBQThDLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFDLENBQUM7SUFDbEcsV0FBVyxHQUFHO1FBQ25CLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFDO1FBQ3ZDLEVBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUM7UUFDaEQsRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxxQkFBcUIsRUFBQztRQUNoRCxFQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFDO1FBQ2xELEVBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFDO1FBQ3pCLEVBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDO1FBQzNCLEVBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDO1FBQzNCLEVBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDO1FBQzNCLEVBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDO1FBQzNCLEVBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDO1FBQzNCLEVBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDO0tBQzVCLENBQUM7SUFFSyxRQUFRLEdBQWlCLENBQUMsQ0FBQztJQUV6QixpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFDekIsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBQzNCLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDaEIsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUN4QixlQUFlLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLGtCQUFrQixHQUFHLElBQUksQ0FBQztJQUMxQixnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDeEIsV0FBVyxHQUErRCxNQUFNLENBQUM7SUFDakYsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFFd0IsU0FBUyxDQUFpQztJQUM3RCxRQUFRLEdBQXNCLElBQUksQ0FBQztJQUcxRCxtQkFBbUIsQ0FBQyxLQUFvQjtRQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDakcsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBRXZCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMzQixXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzdCLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM1QixXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsWUFDVSxpQkFBOEMsRUFDOUMsU0FBb0IsRUFDcEIsSUFBdUIsRUFDdkIsS0FBaUI7UUFIakIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUE2QjtRQUM5QyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBQ3ZCLFVBQUssR0FBTCxLQUFLLENBQVk7SUFFM0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMxRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUvRSxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBQyxHQUFHLGFBQWEsRUFBQyxDQUFDO1lBQ3ZDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBb0IsRUFBRSxFQUFFO2dCQUM1RCxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDckQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztnQkFDbkMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVoQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDeEQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7dUJBQzlELEtBQUssQ0FBQyxNQUFjLENBQUMsRUFBRSxLQUFLLFVBQVU7dUJBQ3RDLEtBQUssQ0FBQyxNQUFjLENBQUMsRUFBRSxLQUFLLGNBQWMsQ0FBQztnQkFFakQsTUFBTSxZQUFZLEdBQUksS0FBSyxDQUFDLE1BQWMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLDZCQUE2QixDQUFDLENBQUM7Z0JBRTdGLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDL0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztvQkFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDM0IsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBVztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBd0I7UUFDcEMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMzRCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFL0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBRW5DLElBQUksV0FBVyxFQUFFLENBQUM7WUFDZixXQUFtQixDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDbEMsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUQsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUVqQixhQUFxQixDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsUUFBaUI7UUFDekIsSUFBSSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsQ0FBQztZQUNoRCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFFMUYsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsUUFBUSxHQUFHLEVBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBUztRQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQXVCO1FBQ2xDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUMsQ0FBQztRQUV0RSxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBQyxHQUFHLGNBQWMsRUFBQyxDQUFDO1lBQ3hDLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUU5QyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBRyxVQUFVLEdBQUcsRUFBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxRQUFRLENBQUMsU0FBaUI7UUFDeEIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUV6QixJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsQixJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2IsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2IsQ0FBQztRQUVELElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxHQUFHLEdBQW1CLENBQUM7WUFDM0MsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQW9CLENBQUM7WUFDM0MsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQW9CLENBQUM7SUFDdkMsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFL0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUN4RSxNQUFNLFlBQVksR0FBRyxXQUFXLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzdELE1BQU0sWUFBWSxHQUFHLFdBQVcsRUFBRSxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUVyRSxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNqQixZQUFZLENBQUMsV0FBVyxHQUFHLGtDQUFrQyxDQUFDO1lBQ2hFLENBQUM7WUFFRCxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNqQixZQUFZLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQztZQUN0QyxDQUFDO1FBQ0gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxvQkFBb0IsR0FBSSxNQUFjLENBQUMsb0JBQW9CLENBQUM7UUFFbEUsSUFBSSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUNwQyxvQkFBb0IsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUN6RCxDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQWM7UUFDckIsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUMsWUFBWSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7WUFDMUQsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBOEI7UUFDOUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUNwQyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsTUFBaUI7UUFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7SUFDMUIsQ0FBQztJQUVELHNCQUFzQixDQUFDLE1BQWU7UUFDcEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7SUFDL0IsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEdBQUUsQ0FBQztpQkFDbkUsU0FBUyxDQUFDLENBQUMsUUFBNEIsRUFBRSxFQUFFO2dCQUMxQyxNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7Z0JBRXZFLElBQUksa0JBQWtCLEVBQUUsQ0FBQztvQkFDdkIsTUFBTSxPQUFPLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBRTlELElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNqQyxDQUFDO3lCQUFNLENBQUM7d0JBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDckMsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDckMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQWdCO1FBQzFDLE1BQU0sSUFBSSxHQUFTLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDM0UsTUFBTSxTQUFTLEdBQVcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRCxNQUFNLENBQUMsR0FBc0IsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQXNCLENBQUM7UUFFOUUsQ0FBQyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7UUFDbkIsQ0FBQyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFdEIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFN0IsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRVYsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFN0IsR0FBRyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqQyxDQUFDO3dHQWpUVSxrQkFBa0I7NEZBQWxCLGtCQUFrQix5ZkFIbEIsQ0FBQyxjQUFjLENBQUMscUVBeUNoQiw2QkFBNkIsNEpDbEYxQyxzL1RBNk9BLDQ2bUJEL01jO1lBQ1YsT0FBTyxDQUFDLFdBQVcsRUFBRTtnQkFDbkIsS0FBSyxDQUNILE1BQU0sRUFDTixLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBQyxDQUFDLENBQzNEO2dCQUNELEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO2dCQUNuRSxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDcEQsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7YUFDckQsQ0FBQztTQUNIOzs0RkFJVSxrQkFBa0I7a0JBbEI5QixTQUFTOytCQUNFLGdCQUFnQixjQUdkO3dCQUNWLE9BQU8sQ0FBQyxXQUFXLEVBQUU7NEJBQ25CLEtBQUssQ0FDSCxNQUFNLEVBQ04sS0FBSyxDQUFDLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUMzRDs0QkFDRCxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQzs0QkFDbkUsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7NEJBQ3BELFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO3lCQUNyRCxDQUFDO3FCQUNILGFBQ1UsQ0FBQyxjQUFjLENBQUMsbUJBQ1YsdUJBQXVCLENBQUMsTUFBTTtpTEE0QnRDLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBRW9DLFNBQVM7c0JBQWxELFNBQVM7dUJBQUMsNkJBQTZCO2dCQUNqQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBR3JCLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBUb29sdGlwU2VydmljZSB9IGZyb20gJy4uL3Rvb2x0aXAvc2VydmljZXMvdG9vbHRpcC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBGaW5kUmVzdWx0TWF0Y2hlc0NvdW50LFxyXG4gIEZpbmRTdGF0ZSxcclxuICBOZ3hFeHRlbmRlZFBkZlZpZXdlckNvbXBvbmVudCxcclxuICBOZ3hFeHRlbmRlZFBkZlZpZXdlclNlcnZpY2UsXHJcbiAgUGFnZXNMb2FkZWRFdmVudFxyXG59IGZyb20gJ25neC1leHRlbmRlZC1wZGYtdmlld2VyJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxudHlwZSBSb3RhdGlvblR5cGUgPSAwIHwgOTAgfCAxODAgfCAyNzA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1wZGYtdmlld2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGRmLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcGRmLXZpZXdlci5jb21wb25lbnQubGVzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ29wZW5DbG9zZScsIFtcclxuICAgICAgc3RhdGUoXHJcbiAgICAgICAgJ29wZW4nLFxyXG4gICAgICAgIHN0eWxlKHtoZWlnaHQ6ICcqJywgcGFkZGluZzogJyonLCAnbWFyZ2luLWJvdHRvbSc6ICc4cHgnfSlcclxuICAgICAgKSxcclxuICAgICAgc3RhdGUoJ2Nsb3NlZCcsIHN0eWxlKHtoZWlnaHQ6IDAsIHBhZGRpbmc6IDAsICdtYXJnaW4tYm90dG9tJzogMH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignb3BlbiA9PiBjbG9zZWQnLCBbYW5pbWF0ZSgnMC41cyBlYXNlJyldKSxcclxuICAgICAgdHJhbnNpdGlvbignY2xvc2VkID0+IG9wZW4nLCBbYW5pbWF0ZSgnMC41cyBlYXNlJyldKSxcclxuICAgIF0pLFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbVG9vbHRpcFNlcnZpY2VdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGRmVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIHB1YmxpYyBzZWFyY2hRdWVyeSA9ICcnO1xyXG4gIHB1YmxpYyBmaW5kU3RhdGU6IEZpbmRTdGF0ZSA9IEZpbmRTdGF0ZS5QRU5ESU5HO1xyXG4gIHB1YmxpYyB0b3RhbEZvdW5kOiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBjdXJyZW50RmluZDogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgcGFnZSA9IDE7XHJcbiAgcHVibGljIGlzU2VhcmNoUGFuZWxWaXNpYmxlID0gZmFsc2U7XHJcbiAgcHVibGljIHNpZGViYXJWaXNpYmxlID0gdHJ1ZTtcclxuICBwdWJsaWMgcGFnZUNvdW50ID0gMTtcclxuICBwdWJsaWMgc2VsZWN0ZWRab29tOiB7IHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsIGxhYmVsOiBzdHJpbmcgfSA9IHt2YWx1ZTogJ2F1dG8nLCBsYWJlbDogJ9CQ0LLRgtC+0LzQsNGC0LjRh9C10YHQutC4J307XHJcbiAgcHVibGljIHpvb21PcHRpb25zID0gW1xyXG4gICAge3ZhbHVlOiAnYXV0bycsIGxhYmVsOiAn0JDQstGC0L7QvNCw0YLQuNGH0LXRgdC60LgnfSxcclxuICAgIHt2YWx1ZTogJ3BhZ2UtYWN0dWFsJywgbGFiZWw6ICfQoNC10LDQu9GM0L3Ri9C5INGA0LDQt9C80LXRgCd9LFxyXG4gICAge3ZhbHVlOiAncGdlLWZpdCcsIGxhYmVsOiAn0J/QviDRgNCw0LfQvNC10YDRgyDRgdGC0YDQsNC90LjRhtGLJ30sXHJcbiAgICB7dmFsdWU6ICdwYWdlLXdpZHRoJywgbGFiZWw6ICfQn9C+INGI0LjRgNC40L3QtSDRgdGC0YDQsNC90LjRhtGLJ30sXHJcbiAgICB7dmFsdWU6IDUwLCBsYWJlbDogJzUwJSd9LFxyXG4gICAge3ZhbHVlOiAxMDAsIGxhYmVsOiAnMTAwJSd9LFxyXG4gICAge3ZhbHVlOiAxMjUsIGxhYmVsOiAnMTI1JSd9LFxyXG4gICAge3ZhbHVlOiAxNTAsIGxhYmVsOiAnMTUwJSd9LFxyXG4gICAge3ZhbHVlOiAyMDAsIGxhYmVsOiAnMjAwJSd9LFxyXG4gICAge3ZhbHVlOiAzMDAsIGxhYmVsOiAnMzAwJSd9LFxyXG4gICAge3ZhbHVlOiA0MDAsIGxhYmVsOiAnNDAwJSd9LFxyXG4gIF07XHJcblxyXG4gIHB1YmxpYyByb3RhdGlvbjogUm90YXRpb25UeXBlID0gMDtcclxuXHJcbiAgQElucHV0KCkgc2hvd1NpZGViYXJCdXR0b24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dIYW5kVG9vbEJ1dHRvbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhhbmRUb29sID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93RmluZGJhckJ1dHRvbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd1JvdGF0ZUJ1dHRvbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd1ByaW50QnV0dG9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93RG93bmxvYWRCdXR0b24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dFeHBhbmRCdXR0b24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRab29tOiBudW1iZXIgfCAnYXV0bycgfCAncGFnZS1hY3R1YWwnIHwgJ3BnZS1maXQnIHwgJ3BhZ2Utd2lkdGgnID0gJ2F1dG8nO1xyXG4gIEBJbnB1dCgpIGRvd25sb2FkRmlsZU5hbWUgPSAnJztcclxuICBASW5wdXQoKSBzcmMgPSAnJztcclxuXHJcbiAgQFZpZXdDaGlsZChOZ3hFeHRlbmRlZFBkZlZpZXdlckNvbXBvbmVudCkgcGRmVmlld2VyITogTmd4RXh0ZW5kZWRQZGZWaWV3ZXJDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZmluZE1lbnUnKSBmaW5kTWVudTogRWxlbWVudFJlZiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdwJyAmJiAhdGhpcy5zaG93UHJpbnRCdXR0b24pIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBpZ25vcmVLZXlzKCk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IGlnbm9yZWRLZXlzID0gW107XHJcblxyXG4gICAgaWYgKCF0aGlzLnNob3dSb3RhdGVCdXR0b24pIHtcclxuICAgICAgaWdub3JlZEtleXMucHVzaCgnUicsICdTaGlmdCtSJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuc2hvd0Rvd25sb2FkQnV0dG9uKSB7XHJcbiAgICAgIGlnbm9yZWRLZXlzLnB1c2goJ0NUUkwrUycpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnNob3dTaWRlYmFyQnV0dG9uKSB7XHJcbiAgICAgIGlnbm9yZWRLZXlzLnB1c2goJ0Y0Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGlnbm9yZWRLZXlzO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9wZGZWaWV3ZXJTZXJ2aWNlOiBOZ3hFeHRlbmRlZFBkZlZpZXdlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBfcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnRcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydkZWZhdWx0Wm9vbSddICYmIGNoYW5nZXNbJ2RlZmF1bHRab29tJ10uY3VycmVudFZhbHVlICE9IGNoYW5nZXNbJ2RlZmF1bHRab29tJ10ucHJldmlvdXNWYWx1ZSkge1xyXG4gICAgICB0aGlzLmluaXRab29tKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0Wm9vbSgpIHtcclxuICAgIGNvbnN0IGV4aXN0aW5nVmFsdWUgPSB0aGlzLnpvb21PcHRpb25zLmZpbmQoeCA9PiB4LnZhbHVlID09PSB0aGlzLmRlZmF1bHRab29tKTtcclxuXHJcbiAgICBpZiAoZXhpc3RpbmdWYWx1ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkWm9vbSA9IHsuLi5leGlzdGluZ1ZhbHVlfTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRab29tID0ge3ZhbHVlOiB0aGlzLmRlZmF1bHRab29tLCBsYWJlbDogYCR7dGhpcy5kZWZhdWx0Wm9vbX0lYH07XHJcbiAgfVxyXG5cclxuICBpbml0U2VhcmNoKCkge1xyXG4gICAgaWYgKHRoaXMuc2hvd0ZpbmRiYXJCdXR0b24pIHtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2YnICYmIGV2ZW50LmN0cmxLZXkpIHtcclxuICAgICAgICAgIHRoaXMuaXNTZWFyY2hQYW5lbFZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFNlYXJjaCgpO1xyXG4gICAgdGhpcy5pbml0Wm9vbSgpO1xyXG5cclxuICAgIHRoaXMuX3JlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ2NsaWNrJywgKGV2ZW50OiBFdmVudCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc1NlYXJjaFBhbmVsVmlzaWJsZSkge1xyXG4gICAgICAgIGNvbnN0IGlzSW5NZW51ID0gdGhpcy5maW5kTWVudT8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICAgICB8fCAoZXZlbnQudGFyZ2V0IGFzIGFueSkuaWQgPT09ICdmaW5kTmV4dCdcclxuICAgICAgICAgIHx8IChldmVudC50YXJnZXQgYXMgYW55KS5pZCA9PT0gJ2ZpbmRQcmV2aW91cyc7XHJcblxyXG4gICAgICAgIGNvbnN0IGlzRmluZEJ1dHRvbiA9IChldmVudC50YXJnZXQgYXMgYW55KS5jbGFzc0xpc3QuY29udGFpbnMoJ21yeC1wZGYtdmlld2VyX19maW5kLWJ1dHRvbicpO1xyXG5cclxuICAgICAgICBpZiAoIWlzSW5NZW51ICYmICFpc0ZpbmRCdXR0b24pIHtcclxuICAgICAgICAgIHRoaXMuaXNTZWFyY2hQYW5lbFZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuX3JlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlQ2hhbmdlKCRldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnBhZ2UgPSAkZXZlbnQgfHwgMTtcclxuICB9XHJcblxyXG4gIG9uTmV4dFBhZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5wYWdlIDwgdGhpcy5wYWdlQ291bnQpIHtcclxuICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlICsgMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uTGFzdFBhZ2UoKSB7XHJcbiAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2VDb3VudDtcclxuICB9XHJcblxyXG4gIG9uUGFnZXNMb2FkZWQoJGV2ZW50OiBQYWdlc0xvYWRlZEV2ZW50KSB7XHJcbiAgICBjb25zdCB2aWV3T3V0bGluZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN2aWV3T3V0bGluZScpO1xyXG4gICAgY29uc3Qgdmlld1RodW1ibmFpbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN2aWV3VGh1bWJuYWlsJyk7XHJcblxyXG4gICAgdGhpcy5wYWdlQ291bnQgPSAkZXZlbnQucGFnZXNDb3VudDtcclxuXHJcbiAgICBpZiAodmlld091dGxpbmUpIHtcclxuICAgICAgKHZpZXdPdXRsaW5lIGFzIGFueSkudGl0bGUgPSAnJztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh2aWV3VGh1bWJuYWlsLCAnZGlzcGxheScsICdub25lJyk7XHJcbiAgICBpZiAodmlld1RodW1ibmFpbCkge1xyXG5cclxuICAgICAgKHZpZXdUaHVtYm5haWwgYXMgYW55KS50aXRsZSA9ICd0ZXN0JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHpvb21DbGljayhpbmNyZWFzZTogYm9vbGVhbikge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLnNlbGVjdGVkWm9vbS52YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFpvb20gPSB7dmFsdWU6IDEwMCwgbGFiZWw6ICcxMDAlJ307XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9IGluY3JlYXNlID8gdGhpcy5zZWxlY3RlZFpvb20udmFsdWUgKz0gMjAgOiB0aGlzLnNlbGVjdGVkWm9vbS52YWx1ZSAtPSAyMDtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkWm9vbSA9IHt2YWx1ZTogbmV3VmFsdWUsIGxhYmVsOiBgJHtuZXdWYWx1ZX0lYH07XHJcbiAgfVxyXG5cclxuICBvblpvb21MZXZlbFNlbGVjdChpdGVtOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRab29tID0gaXRlbTtcclxuICB9XHJcblxyXG4gIG9uWm9vbUNoYW5nZSgkZXZlbnQ6IHN0cmluZyB8IG51bWJlcikge1xyXG4gICAgY29uc3QgZXhpc3RpbmdPcHRpb24gPSB0aGlzLnpvb21PcHRpb25zLmZpbmQoeCA9PiB4LnZhbHVlID09PSAkZXZlbnQpO1xyXG5cclxuICAgIGlmIChleGlzdGluZ09wdGlvbikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkWm9vbSA9IHsuLi5leGlzdGluZ09wdGlvbn07XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaXhlZFZhbHVlID0gTWF0aC5yb3VuZChOdW1iZXIoJGV2ZW50KSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZFpvb20gPSB7dmFsdWU6IGZpeGVkVmFsdWUsIGxhYmVsOiBgJHtmaXhlZFZhbHVlfSVgfTtcclxuICB9XHJcblxyXG4gIG9uUm90YXRlKGRpcmVjdGlvbjogbnVtYmVyKSB7XHJcbiAgICBsZXQgZGF0YSA9IHRoaXMucm90YXRpb247XHJcblxyXG4gICAgaWYgKGRpcmVjdGlvbiA8IDApIHtcclxuICAgICAgZGF0YSAtPSA5MDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRhdGEgKz0gOTA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRhdGEgPj0gMzYwKSB7XHJcbiAgICAgIHRoaXMucm90YXRpb24gPSBkYXRhIC0gMzYwIGFzIFJvdGF0aW9uVHlwZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkYXRhIDwgMCkge1xyXG4gICAgICB0aGlzLnJvdGF0aW9uID0gMzYwICsgZGF0YSBhcyBSb3RhdGlvblR5cGU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJvdGF0aW9uID0gZGF0YSBhcyBSb3RhdGlvblR5cGU7XHJcbiAgfVxyXG5cclxuICBvblByaW50Q2xpY2soKSB7XHJcbiAgICB0aGlzLl9wZGZWaWV3ZXJTZXJ2aWNlLnByaW50KCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHByaW50RGlhbG9nID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGlhbG9nI3ByaW50U2VydmljZURpYWxvZycpO1xyXG4gICAgICBjb25zdCBwcm9ncmVzc1RleHQgPSBwcmludERpYWxvZz8ucXVlcnlTZWxlY3RvcignLnJvdyBzcGFuJyk7XHJcbiAgICAgIGNvbnN0IGNhbmNlbEJ1dHRvbiA9IHByaW50RGlhbG9nPy5xdWVyeVNlbGVjdG9yKCcjcHJpbnRDYW5jZWwgc3BhbicpO1xyXG5cclxuICAgICAgaWYgKHByb2dyZXNzVGV4dCkge1xyXG4gICAgICAgIHByb2dyZXNzVGV4dC50ZXh0Q29udGVudCA9ICfQn9C+0LTQs9C+0YLQvtCy0LrQsCDQtNC+0LrRg9C80LXQvdGC0LAg0Log0L/QtdGH0LDRgtC4Li4uJztcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGNhbmNlbEJ1dHRvbikge1xyXG4gICAgICAgIGNhbmNlbEJ1dHRvbi50ZXh0Q29udGVudCA9ICfQntGC0LzQtdC90LAnO1xyXG4gICAgICB9XHJcbiAgICB9LCAxKTtcclxuICB9XHJcblxyXG4gIG9uU2lkZWJhclZpZXdDbGljaygpIHtcclxuICAgIHRoaXMuc2lkZWJhclZpc2libGUgPSAhdGhpcy5zaWRlYmFyVmlzaWJsZTtcclxuICB9XHJcblxyXG4gIG9uRXhwYW5kTW9kZUNsaWNrKCkge1xyXG4gICAgY29uc3QgcGRmVmlld2VyQXBwbGljYXRpb24gPSAod2luZG93IGFzIGFueSkuUERGVmlld2VyQXBwbGljYXRpb247XHJcblxyXG4gICAgaWYgKHBkZlZpZXdlckFwcGxpY2F0aW9uPy5wZGZWaWV3ZXIpIHtcclxuICAgICAgcGRmVmlld2VyQXBwbGljYXRpb24ucmVxdWVzdFByZXNlbnRhdGlvbk1vZGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VhcmNoQ2xpY2soKSB7XHJcbiAgICB0aGlzLmlzU2VhcmNoUGFuZWxWaXNpYmxlID0gIXRoaXMuaXNTZWFyY2hQYW5lbFZpc2libGU7XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaCgkZXZlbnQ6IHN0cmluZykge1xyXG4gICAgaWYgKCRldmVudCkge1xyXG4gICAgICB0aGlzLl9wZGZWaWV3ZXJTZXJ2aWNlLmZpbmQoJGV2ZW50LCB7aGlnaGxpZ2h0QWxsOiB0cnVlfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3BkZlZpZXdlclNlcnZpY2UuZmluZCgnJywge30pO1xyXG4gIH1cclxuXHJcbiAgZmluZE5leHQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wZGZWaWV3ZXJTZXJ2aWNlLmZpbmROZXh0KCk7XHJcbiAgfVxyXG5cclxuICBmaW5kUHJldmlvdXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wZGZWaWV3ZXJTZXJ2aWNlLmZpbmRQcmV2aW91cygpO1xyXG4gIH1cclxuXHJcbiAgb25VcGRhdGVNYXRjaENhc2UoJGV2ZW50OiBGaW5kUmVzdWx0TWF0Y2hlc0NvdW50KSB7XHJcbiAgICB0aGlzLnRvdGFsRm91bmQgPSAkZXZlbnQudG90YWw7XHJcbiAgICB0aGlzLmN1cnJlbnRGaW5kID0gJGV2ZW50LmN1cnJlbnQ7XHJcbiAgfVxyXG5cclxuICBvbkZpbmRTdGF0ZUNoYW5nZWQoJGV2ZW50OiBGaW5kU3RhdGUpIHtcclxuICAgIHRoaXMuZmluZFN0YXRlID0gJGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgb25TaWRlYmFyVmlzaWJsZUNoYW5nZSgkZXZlbnQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc2lkZWJhclZpc2libGUgPSAkZXZlbnQ7XHJcbiAgfVxyXG5cclxuICBvbkhhbmRUb29sQ2xpY2soKSB7XHJcbiAgICB0aGlzLmhhbmRUb29sID0gIXRoaXMuaGFuZFRvb2w7XHJcbiAgfVxyXG5cclxuICBvbkRvd25sb2FkQ2xpY2soKSB7XHJcbiAgICBpZiAodGhpcy5kb3dubG9hZEZpbGVOYW1lKSB7XHJcbiAgICAgIHRoaXMuX2Rvd25sb2FkRmlsZSh0aGlzLmRvd25sb2FkRmlsZU5hbWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5faHR0cC5nZXQodGhpcy5zcmMsIHtyZXNwb25zZVR5cGU6ICdibG9iJywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyx9KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBIdHRwUmVzcG9uc2U8QmxvYj4pID0+IHtcclxuICAgICAgICAgIGNvbnN0IGNvbnRlbnREaXNwb3NpdGlvbiA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdDb250ZW50LURpc3Bvc2l0aW9uJyk7XHJcblxyXG4gICAgICAgICAgaWYgKGNvbnRlbnREaXNwb3NpdGlvbikge1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaGVzID0gL2ZpbGVuYW1lPVwiKFteXCJdKylcIi8uZXhlYyhjb250ZW50RGlzcG9zaXRpb24pO1xyXG5cclxuICAgICAgICAgICAgaWYgKG1hdGNoZXMgJiYgbWF0Y2hlc1sxXSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuX2Rvd25sb2FkRmlsZShtYXRjaGVzWzFdKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLl9kb3dubG9hZEZpbGUoJ2RvY3VtZW50LnBkZicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9kb3dubG9hZEZpbGUoJ2RvY3VtZW50LnBkZicpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZG93bmxvYWRGaWxlKGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGJsb2I6IEJsb2IgPSBhd2FpdCB0aGlzLl9wZGZWaWV3ZXJTZXJ2aWNlLmdldEN1cnJlbnREb2N1bWVudEFzQmxvYigpO1xyXG4gICAgY29uc3Qgb2JqZWN0VXJsOiBzdHJpbmcgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgY29uc3QgYTogSFRNTEFuY2hvckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJykgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XHJcblxyXG4gICAgYS5ocmVmID0gb2JqZWN0VXJsO1xyXG4gICAgYS5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG5cclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XHJcblxyXG4gICAgYS5jbGljaygpO1xyXG5cclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XHJcblxyXG4gICAgVVJMLnJldm9rZU9iamVjdFVSTChvYmplY3RVcmwpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctdGVtcGxhdGUgI2N1c3RvbVRvb2xiYXI+XHJcbiAgPGRpdiBjbGFzcz1cIm1yeC1wZGYtdmlld2VyX190b29sYmFyXCIgaWQ9XCJ0b29sYmFyVmlld2VyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGctMlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGctMVwiPlxyXG4gICAgICAgIEBpZiAoc2hvd1NpZGViYXJCdXR0b24pIHtcclxuICAgICAgICAgIDxtcngtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1idXJnZXInXCJcclxuICAgICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgICAgKG1yeENsaWNrKT1cIm9uU2lkZWJhclZpZXdDbGljaygpXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydtcngtaWNvbi1idXR0b24tLXRvZ2dsZWQnOiBzaWRlYmFyVmlzaWJsZX1cIlxyXG4gICAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCIncHktMSBweC0yJ1wiXHJcbiAgICAgICAgICAgIFt0b29sdGlwXT1cIifQn9C+0LrQsNC30LDRgtGML9GB0LrRgNGL0YLRjCDQsdC+0LrQvtCy0YPRjiDQv9Cw0L3QtdC70YwnXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tLXN0YXJ0J1wiXHJcbiAgICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoc2hvd0ZpbmRiYXJCdXR0b24pIHtcclxuICAgICAgICAgIDxtcngtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1zZWFyY2gnXCJcclxuICAgICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgICAgKG1yeENsaWNrKT1cIm9uU2VhcmNoQ2xpY2soKVwiXHJcbiAgICAgICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidweS0xIHB4LTIgbXJ4LXBkZi12aWV3ZXJfX2ZpbmQtYnV0dG9uJ1wiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbXJ4LWljb24tYnV0dG9uLS10b2dnbGVkJzogaXNTZWFyY2hQYW5lbFZpc2libGV9XCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ9Cd0LDQudGC0Lgg0LIg0LTQvtC60YPQvNC10L3RgtC1J1wiXHJcbiAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ2JvdHRvbS1zdGFydCdcIlxyXG4gICAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICBAaWYgKGlzU2VhcmNoUGFuZWxWaXNpYmxlKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1wZGYtdmlld2VyX19maW5kYmFyIGctMVwiICNmaW5kTWVudT5cclxuICAgICAgICAgIDxtcngtaW5wdXQtdGV4dFxyXG4gICAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCJmaW5kU3RhdGUgPT09IDEgPyAnbXJ4LWlucHV0LWVycm9yJyA6JycrJ3NlYXJjaFRleHQnXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLQndCw0LnRgtC4INCyINC00L7QutGD0LzQtdC90YLQtS4uLlwiXHJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaFF1ZXJ5XCJcclxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2goJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPC9tcngtaW5wdXQtdGV4dD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgIFtpY29uQ2xhc3NdPVwiJ2ljb24tY2hldnJvbi1sZWZ0J1wiXHJcbiAgICAgICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgICAgIFtzdGF0ZV09XCInZGVmYXVsdCdcIlxyXG4gICAgICAgICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidwLTEnXCJcclxuICAgICAgICAgICAgICAobXJ4Q2xpY2spPVwiZmluZFByZXZpb3VzKClcIlxyXG4gICAgICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgICAgICAgIDxtcngtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICBbaWNvbkNsYXNzXT1cIidpY29uLWNoZXZyb24tcmlnaHQnXCJcclxuICAgICAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3AtMSdcIlxyXG4gICAgICAgICAgICAgIChtcnhDbGljayk9XCJmaW5kTmV4dCgpXCJcclxuICAgICAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICBAaWYgKGZpbmRTdGF0ZSA9PT0gMCB8fCBmaW5kU3RhdGUgPT09IDIpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1wZGYtdmlld2VyX19maW5kYmFyLXJlc3VsdFwiPlxyXG4gICAgICAgICAgICAgIHt7IGN1cnJlbnRGaW5kIH19INC40Lcge3sgdG90YWxGb3VuZCB9fSDRgdC+0LLQv9Cw0LTQtdC90LjQuVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoZmluZFN0YXRlID09PSAxKSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xvci1uZWdhdGl2ZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG5vd3JhcFwiPtCk0YDQsNC30LAg0L3QtSDQvdCw0LnQtNC10L3QsDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LXBkZi12aWV3ZXJfX3Rvb2xiYXItLW5hdlwiPlxyXG4gICAgICAgIDxtcngtaWNvbi1idXR0b25cclxuICAgICAgICAgIFtpY29uQ2xhc3NdPVwiJ2ljb24taW4tdGhlLWVuZC1sZWZ0J1wiXHJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidweS0xIHB4LTInXCJcclxuICAgICAgICAgIFt0b29sdGlwXT1cIifQn9C10YDQstCw0Y8g0YHRgtGA0LDQvdC40YbQsCdcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tLXN0YXJ0J1wiXHJcbiAgICAgICAgICAobXJ4Q2xpY2spPVwib25QYWdlQ2hhbmdlKDEpXCJcclxuICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1jaGV2cm9uLWxlZnQnXCJcclxuICAgICAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcclxuICAgICAgICAgIFtzdGF0ZV09XCInZGVmYXVsdCdcIlxyXG4gICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ9Cf0YDQtdC00YvQtNGD0YnQsNGPINGB0YLRgNCw0L3QuNGG0LAnXCJcclxuICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ2JvdHRvbS1zdGFydCdcIlxyXG4gICAgICAgICAgKG1yeENsaWNrKT1cIm9uUGFnZUNoYW5nZShwYWdlIC0gMSB8fCAxKVwiXHJcbiAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICAgIDxtcngtaW5wdXQtbnVtYmVyXHJcbiAgICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcclxuICAgICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIid3cHgtNTYnXCJcclxuICAgICAgICAgIFtuZ01vZGVsXT1cInBhZ2VcIlxyXG4gICAgICAgICAgW251bWJlclR5cGVdPVwiJ2ludCdcIlxyXG4gICAgICAgICAgW21pblZhbHVlXT1cIjFcIlxyXG4gICAgICAgICAgW21heFZhbHVlXT1cInBhZ2VDb3VudFwiXHJcbiAgICAgICAgICBbaXNBdXRvQ29ycmVjdGluZ1ZhbHVlXT1cInRydWVcIlxyXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgID48L21yeC1pbnB1dC1udW1iZXI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCI+0LjQtyB7eyBwYWdlQ291bnQgfX08L3NwYW4+XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1jaGV2cm9uLXJpZ2h0J1wiXHJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgIChtcnhDbGljayk9XCJvbk5leHRQYWdlKClcIlxyXG4gICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ9Ch0LvQtdC00YPRjtGJ0LDRjyDRgdGC0YDQsNC90LjRhtCwJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1pbi10aGUtZW5kLXJpZ2h0J1wiXHJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgIChtcnhDbGljayk9XCJvbkxhc3RQYWdlKClcIlxyXG4gICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ9Cf0L7RgdC70LXQtNC90Y/RjyDRgdGC0YDQsNC90LjRhtCwJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICA8bXJ4LWljb24tYnV0dG9uXHJcbiAgICAgICAgKG1yeENsaWNrKT1cInpvb21DbGljayhmYWxzZSlcIlxyXG4gICAgICAgIFtpY29uQ2xhc3NdPVwiJ2ljb24tbWludXMnXCJcclxuICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgIFt0b29sdGlwXT1cIifQo9C80LXQvdGM0YjQuNGC0YwnXCJcclxuICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICA8bXJ4LWljb24tYnV0dG9uXHJcbiAgICAgICAgKG1yeENsaWNrKT1cInpvb21DbGljayh0cnVlKVwiXHJcbiAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1wbHVzJ1wiXHJcbiAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgIFtzdGF0ZV09XCInZGVmYXVsdCdcIlxyXG4gICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidweS0xIHB4LTInXCJcclxuICAgICAgICBbdG9vbHRpcF09XCIn0KPQstC10LvQuNGH0LjRgtGMJ1wiXHJcbiAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tLXN0YXJ0J1wiXHJcbiAgICAgID48L21yeC1pY29uLWJ1dHRvbj5cclxuICAgICAgPG1yeC1pbnB1dC1zZWxlY3RcclxuICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3dweC0xNTYnXCJcclxuICAgICAgICBbaXRlbXNdPVwiem9vbU9wdGlvbnNcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uWm9vbUxldmVsU2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkWm9vbVwiXHJcbiAgICAgICAgW2NsZWFyYWJsZV09XCJmYWxzZVwiPlxyXG4gICAgICA8L21yeC1pbnB1dC1zZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgIEBpZiAoc2hvd0hhbmRUb29sQnV0dG9uKSB7XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1mYy10ZXh0J1wiXHJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J21yeC1pY29uLWJ1dHRvbi0tdG9nZ2xlZCc6ICFoYW5kVG9vbH1cIlxyXG4gICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICAobXJ4Q2xpY2spPVwib25IYW5kVG9vbENsaWNrKClcIlxyXG4gICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgID48L21yeC1pY29uLWJ1dHRvbj5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKHNob3dSb3RhdGVCdXR0b24pIHtcclxuICAgICAgICA8bXJ4LWljb24tYnV0dG9uXHJcbiAgICAgICAgICBbaWNvbkNsYXNzXT1cIidpY29uLXJlbG9hZCdcIlxyXG4gICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICAobXJ4Q2xpY2spPVwib25Sb3RhdGUoMSlcIlxyXG4gICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ9Cf0L7QstC10YDQvdGD0YLRjCDQv9C+INGH0LDRgdC+0LLQvtC5INGB0YLRgNC10LvQutC1J1wiXHJcbiAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgIH1cclxuICAgICAgQGlmIChzaG93Um90YXRlQnV0dG9uKSB7XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1yZXR1cm4nXCJcclxuICAgICAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcclxuICAgICAgICAgIFtzdGF0ZV09XCInZGVmYXVsdCdcIlxyXG4gICAgICAgICAgKG1yeENsaWNrKT1cIm9uUm90YXRlKC0xKVwiXHJcbiAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCIncHktMSBweC0yJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcF09XCIn0J/QvtCy0LXRgNC90YPRgtGMINC/0YDQvtGC0LjQsiDRh9Cw0YHQvtCy0L7QuSDRgdGC0YDQtdC70LrQuCdcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tLXN0YXJ0J1wiXHJcbiAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoc2hvd0V4cGFuZEJ1dHRvbikge1xyXG4gICAgICAgIDxtcngtaWNvbi1idXR0b25cclxuICAgICAgICAgIFtpY29uQ2xhc3NdPVwiJ2ljb24tYXJyb3ctZXhwYW5kJ1wiXHJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidweS0xIHB4LTInXCJcclxuICAgICAgICAgIChtcnhDbGljayk9XCJvbkV4cGFuZE1vZGVDbGljaygpXCJcclxuICAgICAgICAgIFt0b29sdGlwXT1cIifQn9C+0LrQsNC30LDRgtGMINC90LAg0LLQtdGB0Ywg0Y3QutGA0LDQvSdcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tLXN0YXJ0J1wiXHJcbiAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoc2hvd1ByaW50QnV0dG9uKSB7XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1wcmludCdcIlxyXG4gICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCIncHktMSBweC0yJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcF09XCIn0J/QtdGH0LDRgtGMJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgICAgIChtcnhDbGljayk9XCJvblByaW50Q2xpY2soKVwiXHJcbiAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoc2hvd0Rvd25sb2FkQnV0dG9uKSB7XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1kb3dubG9hZCdcIlxyXG4gICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCIncHktMSBweC0yJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcF09XCIn0KHQutCw0YfQsNGC0YwnXCJcclxuICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ2JvdHRvbS1zdGFydCdcIlxyXG4gICAgICAgICAgKG1yeENsaWNrKT1cIm9uRG93bmxvYWRDbGljaygpXCJcclxuICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5neC1leHRlbmRlZC1wZGYtdmlld2VyXHJcbiAgI3BkZlZpZXdlclxyXG4gIGNsYXNzPVwibXJ4LXBkZi12aWV3ZXJcIlxyXG4gIFtzcmNdPVwic3JjXCJcclxuICBbcGFnZV09XCJwYWdlXCJcclxuICBbc2lkZWJhclZpc2libGVdPVwic2hvd1NpZGViYXJCdXR0b24gJiYgc2lkZWJhclZpc2libGVcIlxyXG4gIFtjdXN0b21Ub29sYmFyXT1cImN1c3RvbVRvb2xiYXJcIlxyXG4gIFtzaG93U2lkZWJhckJ1dHRvbl09XCJ0cnVlXCJcclxuICBbc2hvd1JvdGF0ZUJ1dHRvbl09XCJzaG93Um90YXRlQnV0dG9uXCJcclxuICBbc2hvd0Rvd25sb2FkQnV0dG9uXT1cInNob3dEb3dubG9hZEJ1dHRvblwiXHJcbiAgW2lnbm9yZUtleXNdPVwiaWdub3JlS2V5c1wiXHJcbiAgW3pvb21dPVwic2VsZWN0ZWRab29tLnZhbHVlXCJcclxuICBbdGV4dExheWVyXT1cInRydWVcIlxyXG4gIFtoYW5kVG9vbF09XCJoYW5kVG9vbFwiXHJcbiAgW3JvdGF0aW9uXT1cInJvdGF0aW9uXCJcclxuICAoem9vbUNoYW5nZSk9XCJvblpvb21DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gIChwYWdlc0xvYWRlZCk9XCJvblBhZ2VzTG9hZGVkKCRldmVudClcIlxyXG4gICh1cGRhdGVGaW5kU3RhdGUpPVwib25GaW5kU3RhdGVDaGFuZ2VkKCRldmVudClcIlxyXG4gIChzaWRlYmFyVmlzaWJsZUNoYW5nZSk9XCJvblNpZGViYXJWaXNpYmxlQ2hhbmdlKCRldmVudClcIlxyXG4gICh1cGRhdGVGaW5kTWF0Y2hlc0NvdW50KT1cIm9uVXBkYXRlTWF0Y2hDYXNlKCRldmVudClcIlxyXG4+PC9uZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlcj5cclxuIl19
|
|
329
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvcGRmLXZpZXdlci9wZGYtdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9wZGYtdmlld2VyL3BkZi12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFLTCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUVMLFNBQVMsRUFDVCw2QkFBNkIsRUFHOUIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQWMsV0FBVyxFQUFnQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7O0FBc0I3RSxNQUFNLE9BQU8sa0JBQWtCO0lBaUVuQjtJQUNBO0lBQ0E7SUFDQTtJQW5FSCxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLFNBQVMsR0FBYyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBQ3pDLFVBQVUsR0FBVyxDQUFDLENBQUM7SUFDdkIsV0FBVyxHQUFXLENBQUMsQ0FBQztJQUN4QixJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ1Qsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBQzdCLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDdEIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLFlBQVksR0FBOEMsRUFBQyxLQUFLLEVBQUUsTUFB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ZUFBZSxFQUFFLEtBQUssRUFBQyxDQUFDLENBQzNEOzRCQUNELEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDOzRCQUNuRSxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQzs0QkFDcEQsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7eUJBQ3JELENBQUM7cUJBQ0gsYUFDVSxDQUFDLGNBQWMsQ0FBQyxtQkFDVix1QkFBdUIsQ0FBQyxNQUFNO2lMQTRCdEMsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFFb0MsU0FBUztzQkFBbEQsU0FBUzt1QkFBQyw2QkFBNkI7Z0JBQ2pCLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFHckIsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBSZW5kZXJlcjIsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IFRvb2x0aXBTZXJ2aWNlIH0gZnJvbSAnLi4vdG9vbHRpcC9zZXJ2aWNlcy90b29sdGlwLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIEZpbmRSZXN1bHRNYXRjaGVzQ291bnQsXHJcbiAgRmluZFN0YXRlLFxyXG4gIE5neEV4dGVuZGVkUGRmVmlld2VyQ29tcG9uZW50LFxyXG4gIE5neEV4dGVuZGVkUGRmVmlld2VyU2VydmljZSxcclxuICBQYWdlc0xvYWRlZEV2ZW50XHJcbn0gZnJvbSAnbmd4LWV4dGVuZGVkLXBkZi12aWV3ZXInO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxudHlwZSBSb3RhdGlvblR5cGUgPSAwIHwgOTAgfCAxODAgfCAyNzA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1wZGYtdmlld2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGRmLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcGRmLXZpZXdlci5jb21wb25lbnQubGVzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ29wZW5DbG9zZScsIFtcclxuICAgICAgc3RhdGUoXHJcbiAgICAgICAgJ29wZW4nLFxyXG4gICAgICAgIHN0eWxlKHtoZWlnaHQ6ICcqJywgcGFkZGluZzogJyonLCAnbWFyZ2luLWJvdHRvbSc6ICc4cHgnfSlcclxuICAgICAgKSxcclxuICAgICAgc3RhdGUoJ2Nsb3NlZCcsIHN0eWxlKHtoZWlnaHQ6IDAsIHBhZGRpbmc6IDAsICdtYXJnaW4tYm90dG9tJzogMH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignb3BlbiA9PiBjbG9zZWQnLCBbYW5pbWF0ZSgnMC41cyBlYXNlJyldKSxcclxuICAgICAgdHJhbnNpdGlvbignY2xvc2VkID0+IG9wZW4nLCBbYW5pbWF0ZSgnMC41cyBlYXNlJyldKSxcclxuICAgIF0pLFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbVG9vbHRpcFNlcnZpY2VdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGRmVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIHB1YmxpYyBzZWFyY2hRdWVyeSA9ICcnO1xyXG4gIHB1YmxpYyBmaW5kU3RhdGU6IEZpbmRTdGF0ZSA9IEZpbmRTdGF0ZS5QRU5ESU5HO1xyXG4gIHB1YmxpYyB0b3RhbEZvdW5kOiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBjdXJyZW50RmluZDogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgcGFnZSA9IDE7XHJcbiAgcHVibGljIGlzU2VhcmNoUGFuZWxWaXNpYmxlID0gZmFsc2U7XHJcbiAgcHVibGljIHNpZGViYXJWaXNpYmxlID0gdHJ1ZTtcclxuICBwdWJsaWMgcGFnZUNvdW50ID0gMTtcclxuICBwdWJsaWMgc2VsZWN0ZWRab29tOiB7IHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsIGxhYmVsOiBzdHJpbmcgfSA9IHt2YWx1ZTogJ2F1dG8nLCBsYWJlbDogJ9CQ0LLRgtC+0LzQsNGC0LjRh9C10YHQutC4J307XHJcbiAgcHVibGljIHpvb21PcHRpb25zID0gW1xyXG4gICAge3ZhbHVlOiAnYXV0bycsIGxhYmVsOiAn0JDQstGC0L7QvNCw0YLQuNGH0LXRgdC60LgnfSxcclxuICAgIHt2YWx1ZTogJ3BhZ2UtYWN0dWFsJywgbGFiZWw6ICfQoNC10LDQu9GM0L3Ri9C5INGA0LDQt9C80LXRgCd9LFxyXG4gICAge3ZhbHVlOiAncGdlLWZpdCcsIGxhYmVsOiAn0J/QviDRgNCw0LfQvNC10YDRgyDRgdGC0YDQsNC90LjRhtGLJ30sXHJcbiAgICB7dmFsdWU6ICdwYWdlLXdpZHRoJywgbGFiZWw6ICfQn9C+INGI0LjRgNC40L3QtSDRgdGC0YDQsNC90LjRhtGLJ30sXHJcbiAgICB7dmFsdWU6IDUwLCBsYWJlbDogJzUwJSd9LFxyXG4gICAge3ZhbHVlOiAxMDAsIGxhYmVsOiAnMTAwJSd9LFxyXG4gICAge3ZhbHVlOiAxMjUsIGxhYmVsOiAnMTI1JSd9LFxyXG4gICAge3ZhbHVlOiAxNTAsIGxhYmVsOiAnMTUwJSd9LFxyXG4gICAge3ZhbHVlOiAyMDAsIGxhYmVsOiAnMjAwJSd9LFxyXG4gICAge3ZhbHVlOiAzMDAsIGxhYmVsOiAnMzAwJSd9LFxyXG4gICAge3ZhbHVlOiA0MDAsIGxhYmVsOiAnNDAwJSd9LFxyXG4gIF07XHJcblxyXG4gIHB1YmxpYyByb3RhdGlvbjogUm90YXRpb25UeXBlID0gMDtcclxuXHJcbiAgQElucHV0KCkgc2hvd1NpZGViYXJCdXR0b24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dIYW5kVG9vbEJ1dHRvbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhhbmRUb29sID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93RmluZGJhckJ1dHRvbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd1JvdGF0ZUJ1dHRvbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd1ByaW50QnV0dG9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93RG93bmxvYWRCdXR0b24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dFeHBhbmRCdXR0b24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRab29tOiBudW1iZXIgfCAnYXV0bycgfCAncGFnZS1hY3R1YWwnIHwgJ3BnZS1maXQnIHwgJ3BhZ2Utd2lkdGgnID0gJ2F1dG8nO1xyXG4gIEBJbnB1dCgpIGRvd25sb2FkRmlsZU5hbWUgPSAnJztcclxuICBASW5wdXQoKSBzcmMgPSAnJztcclxuXHJcbiAgQFZpZXdDaGlsZChOZ3hFeHRlbmRlZFBkZlZpZXdlckNvbXBvbmVudCkgcGRmVmlld2VyITogTmd4RXh0ZW5kZWRQZGZWaWV3ZXJDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZmluZE1lbnUnKSBmaW5kTWVudTogRWxlbWVudFJlZiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdwJyAmJiAhdGhpcy5zaG93UHJpbnRCdXR0b24pIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBpZ25vcmVLZXlzKCk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IGlnbm9yZWRLZXlzID0gW107XHJcblxyXG4gICAgaWYgKCF0aGlzLnNob3dSb3RhdGVCdXR0b24pIHtcclxuICAgICAgaWdub3JlZEtleXMucHVzaCgnUicsICdTaGlmdCtSJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuc2hvd0Rvd25sb2FkQnV0dG9uKSB7XHJcbiAgICAgIGlnbm9yZWRLZXlzLnB1c2goJ0NUUkwrUycpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnNob3dTaWRlYmFyQnV0dG9uKSB7XHJcbiAgICAgIGlnbm9yZWRLZXlzLnB1c2goJ0Y0Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGlnbm9yZWRLZXlzO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9wZGZWaWV3ZXJTZXJ2aWNlOiBOZ3hFeHRlbmRlZFBkZlZpZXdlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBfcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnRcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydkZWZhdWx0Wm9vbSddICYmIGNoYW5nZXNbJ2RlZmF1bHRab29tJ10uY3VycmVudFZhbHVlICE9IGNoYW5nZXNbJ2RlZmF1bHRab29tJ10ucHJldmlvdXNWYWx1ZSkge1xyXG4gICAgICB0aGlzLmluaXRab29tKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0Wm9vbSgpIHtcclxuICAgIGNvbnN0IGV4aXN0aW5nVmFsdWUgPSB0aGlzLnpvb21PcHRpb25zLmZpbmQoeCA9PiB4LnZhbHVlID09PSB0aGlzLmRlZmF1bHRab29tKTtcclxuXHJcbiAgICBpZiAoZXhpc3RpbmdWYWx1ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkWm9vbSA9IHsuLi5leGlzdGluZ1ZhbHVlfTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRab29tID0ge3ZhbHVlOiB0aGlzLmRlZmF1bHRab29tLCBsYWJlbDogYCR7dGhpcy5kZWZhdWx0Wm9vbX0lYH07XHJcbiAgfVxyXG5cclxuICBpbml0U2VhcmNoKCkge1xyXG4gICAgaWYgKHRoaXMuc2hvd0ZpbmRiYXJCdXR0b24pIHtcclxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xyXG4gICAgICAgIGlmIChldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2YnICYmIGV2ZW50LmN0cmxLZXkpIHtcclxuICAgICAgICAgIHRoaXMuaXNTZWFyY2hQYW5lbFZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFNlYXJjaCgpO1xyXG4gICAgdGhpcy5pbml0Wm9vbSgpO1xyXG5cclxuICAgIHRoaXMuX3JlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ2NsaWNrJywgKGV2ZW50OiBFdmVudCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc1NlYXJjaFBhbmVsVmlzaWJsZSkge1xyXG4gICAgICAgIGNvbnN0IGlzSW5NZW51ID0gdGhpcy5maW5kTWVudT8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXHJcbiAgICAgICAgICB8fCAoZXZlbnQudGFyZ2V0IGFzIGFueSkuaWQgPT09ICdmaW5kTmV4dCdcclxuICAgICAgICAgIHx8IChldmVudC50YXJnZXQgYXMgYW55KS5pZCA9PT0gJ2ZpbmRQcmV2aW91cyc7XHJcblxyXG4gICAgICAgIGNvbnN0IGlzRmluZEJ1dHRvbiA9IChldmVudC50YXJnZXQgYXMgYW55KS5jbGFzc0xpc3QuY29udGFpbnMoJ21yeC1wZGYtdmlld2VyX19maW5kLWJ1dHRvbicpO1xyXG5cclxuICAgICAgICBpZiAoIWlzSW5NZW51ICYmICFpc0ZpbmRCdXR0b24pIHtcclxuICAgICAgICAgIHRoaXMuaXNTZWFyY2hQYW5lbFZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuX3JlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlQ2hhbmdlKCRldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnBhZ2UgPSAkZXZlbnQgfHwgMTtcclxuICB9XHJcblxyXG4gIG9uTmV4dFBhZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5wYWdlIDwgdGhpcy5wYWdlQ291bnQpIHtcclxuICAgICAgdGhpcy5wYWdlID0gdGhpcy5wYWdlICsgMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uTGFzdFBhZ2UoKSB7XHJcbiAgICB0aGlzLnBhZ2UgPSB0aGlzLnBhZ2VDb3VudDtcclxuICB9XHJcblxyXG4gIG9uUGFnZXNMb2FkZWQoJGV2ZW50OiBQYWdlc0xvYWRlZEV2ZW50KSB7XHJcbiAgICBjb25zdCB2aWV3T3V0bGluZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN2aWV3T3V0bGluZScpO1xyXG4gICAgY29uc3Qgdmlld1RodW1ibmFpbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN2aWV3VGh1bWJuYWlsJyk7XHJcblxyXG4gICAgdGhpcy5wYWdlQ291bnQgPSAkZXZlbnQucGFnZXNDb3VudDtcclxuXHJcbiAgICBpZiAodmlld091dGxpbmUpIHtcclxuICAgICAgKHZpZXdPdXRsaW5lIGFzIGFueSkudGl0bGUgPSAnJztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh2aWV3VGh1bWJuYWlsLCAnZGlzcGxheScsICdub25lJyk7XHJcbiAgICBpZiAodmlld1RodW1ibmFpbCkge1xyXG5cclxuICAgICAgKHZpZXdUaHVtYm5haWwgYXMgYW55KS50aXRsZSA9ICd0ZXN0JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHpvb21DbGljayhpbmNyZWFzZTogYm9vbGVhbikge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLnNlbGVjdGVkWm9vbS52YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFpvb20gPSB7dmFsdWU6IDEwMCwgbGFiZWw6ICcxMDAlJ307XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9IGluY3JlYXNlID8gdGhpcy5zZWxlY3RlZFpvb20udmFsdWUgKz0gMjAgOiB0aGlzLnNlbGVjdGVkWm9vbS52YWx1ZSAtPSAyMDtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkWm9vbSA9IHt2YWx1ZTogbmV3VmFsdWUsIGxhYmVsOiBgJHtuZXdWYWx1ZX0lYH07XHJcbiAgfVxyXG5cclxuICBvblpvb21MZXZlbFNlbGVjdChpdGVtOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRab29tID0gaXRlbTtcclxuICB9XHJcblxyXG4gIG9uWm9vbUNoYW5nZSgkZXZlbnQ6IHN0cmluZyB8IG51bWJlcikge1xyXG4gICAgY29uc3QgZXhpc3RpbmdPcHRpb24gPSB0aGlzLnpvb21PcHRpb25zLmZpbmQoeCA9PiB4LnZhbHVlID09PSAkZXZlbnQpO1xyXG5cclxuICAgIGlmIChleGlzdGluZ09wdGlvbikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkWm9vbSA9IHsuLi5leGlzdGluZ09wdGlvbn07XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaXhlZFZhbHVlID0gTWF0aC5yb3VuZChOdW1iZXIoJGV2ZW50KSk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZFpvb20gPSB7dmFsdWU6IGZpeGVkVmFsdWUsIGxhYmVsOiBgJHtmaXhlZFZhbHVlfSVgfTtcclxuICB9XHJcblxyXG4gIG9uUm90YXRlKGRpcmVjdGlvbjogbnVtYmVyKSB7XHJcbiAgICBsZXQgZGF0YSA9IHRoaXMucm90YXRpb247XHJcblxyXG4gICAgaWYgKGRpcmVjdGlvbiA8IDApIHtcclxuICAgICAgZGF0YSAtPSA5MDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRhdGEgKz0gOTA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRhdGEgPj0gMzYwKSB7XHJcbiAgICAgIHRoaXMucm90YXRpb24gPSBkYXRhIC0gMzYwIGFzIFJvdGF0aW9uVHlwZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkYXRhIDwgMCkge1xyXG4gICAgICB0aGlzLnJvdGF0aW9uID0gMzYwICsgZGF0YSBhcyBSb3RhdGlvblR5cGU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJvdGF0aW9uID0gZGF0YSBhcyBSb3RhdGlvblR5cGU7XHJcbiAgfVxyXG5cclxuICBvblByaW50Q2xpY2soKSB7XHJcbiAgICB0aGlzLl9wZGZWaWV3ZXJTZXJ2aWNlLnByaW50KCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHByaW50RGlhbG9nID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGlhbG9nI3ByaW50U2VydmljZURpYWxvZycpO1xyXG4gICAgICBjb25zdCBwcm9ncmVzc1RleHQgPSBwcmludERpYWxvZz8ucXVlcnlTZWxlY3RvcignLnJvdyBzcGFuJyk7XHJcbiAgICAgIGNvbnN0IGNhbmNlbEJ1dHRvbiA9IHByaW50RGlhbG9nPy5xdWVyeVNlbGVjdG9yKCcjcHJpbnRDYW5jZWwgc3BhbicpO1xyXG5cclxuICAgICAgaWYgKHByb2dyZXNzVGV4dCkge1xyXG4gICAgICAgIHByb2dyZXNzVGV4dC50ZXh0Q29udGVudCA9ICfQn9C+0LTQs9C+0YLQvtCy0LrQsCDQtNC+0LrRg9C80LXQvdGC0LAg0Log0L/QtdGH0LDRgtC4Li4uJztcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGNhbmNlbEJ1dHRvbikge1xyXG4gICAgICAgIGNhbmNlbEJ1dHRvbi50ZXh0Q29udGVudCA9ICfQntGC0LzQtdC90LAnO1xyXG4gICAgICB9XHJcbiAgICB9LCAxKTtcclxuICB9XHJcblxyXG4gIG9uU2lkZWJhclZpZXdDbGljaygpIHtcclxuICAgIHRoaXMuc2lkZWJhclZpc2libGUgPSAhdGhpcy5zaWRlYmFyVmlzaWJsZTtcclxuICB9XHJcblxyXG4gIG9uRXhwYW5kTW9kZUNsaWNrKCkge1xyXG4gICAgY29uc3QgcGRmVmlld2VyQXBwbGljYXRpb24gPSAod2luZG93IGFzIGFueSkuUERGVmlld2VyQXBwbGljYXRpb247XHJcblxyXG4gICAgaWYgKHBkZlZpZXdlckFwcGxpY2F0aW9uPy5wZGZWaWV3ZXIpIHtcclxuICAgICAgcGRmVmlld2VyQXBwbGljYXRpb24ucmVxdWVzdFByZXNlbnRhdGlvbk1vZGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VhcmNoQ2xpY2soKSB7XHJcbiAgICB0aGlzLmlzU2VhcmNoUGFuZWxWaXNpYmxlID0gIXRoaXMuaXNTZWFyY2hQYW5lbFZpc2libGU7XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaCgkZXZlbnQ6IHN0cmluZykge1xyXG4gICAgaWYgKCRldmVudCkge1xyXG4gICAgICB0aGlzLl9wZGZWaWV3ZXJTZXJ2aWNlLmZpbmQoJGV2ZW50LCB7aGlnaGxpZ2h0QWxsOiB0cnVlfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3BkZlZpZXdlclNlcnZpY2UuZmluZCgnJywge30pO1xyXG4gIH1cclxuXHJcbiAgZmluZE5leHQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wZGZWaWV3ZXJTZXJ2aWNlLmZpbmROZXh0KCk7XHJcbiAgfVxyXG5cclxuICBmaW5kUHJldmlvdXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wZGZWaWV3ZXJTZXJ2aWNlLmZpbmRQcmV2aW91cygpO1xyXG4gIH1cclxuXHJcbiAgb25VcGRhdGVNYXRjaENhc2UoJGV2ZW50OiBGaW5kUmVzdWx0TWF0Y2hlc0NvdW50KSB7XHJcbiAgICB0aGlzLnRvdGFsRm91bmQgPSAkZXZlbnQudG90YWw7XHJcbiAgICB0aGlzLmN1cnJlbnRGaW5kID0gJGV2ZW50LmN1cnJlbnQ7XHJcbiAgfVxyXG5cclxuICBvbkZpbmRTdGF0ZUNoYW5nZWQoJGV2ZW50OiBGaW5kU3RhdGUpIHtcclxuICAgIHRoaXMuZmluZFN0YXRlID0gJGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgb25TaWRlYmFyVmlzaWJsZUNoYW5nZSgkZXZlbnQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc2lkZWJhclZpc2libGUgPSAkZXZlbnQ7XHJcbiAgfVxyXG5cclxuICBvbkhhbmRUb29sQ2xpY2soKSB7XHJcbiAgICB0aGlzLmhhbmRUb29sID0gIXRoaXMuaGFuZFRvb2w7XHJcbiAgfVxyXG5cclxuICBvbkRvd25sb2FkQ2xpY2soKSB7XHJcbiAgICBpZiAodGhpcy5kb3dubG9hZEZpbGVOYW1lKSB7XHJcbiAgICAgIHRoaXMuX2Rvd25sb2FkRmlsZSh0aGlzLmRvd25sb2FkRmlsZU5hbWUpLnRoZW4oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuXHJcbiAgICAgIGhlYWRlcnMuc2V0KCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ9Cf0LXRh9Cw0YLQvdCw0Y8g0YTQvtGA0LzQsCDQt9Cw0Y/QstC60Lgg0YHQviDRiNGC0LDQvNC/0L7QvC5wZGYnKTtcclxuXHJcbiAgICAgIHRoaXMuX2h0dHAuZ2V0KHRoaXMuc3JjLCB7cmVzcG9uc2VUeXBlOiAnYmxvYicsIG9ic2VydmU6ICdyZXNwb25zZScsfSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogSHR0cFJlc3BvbnNlPEJsb2I+KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjb250ZW50RGlzcG9zaXRpb24gPSByZXNwb25zZS5oZWFkZXJzLmdldCgnQ29udGVudC1EaXNwb3NpdGlvbicpO1xyXG5cclxuICAgICAgICAgIGlmICghY29udGVudERpc3Bvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Rvd25sb2FkRmlsZSgnZG9jdW1lbnQucGRmJykudGhlbigpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgY29uc3QgZW5jb2RpbmdGaWxlTmFtZSA9IGNvbnRlbnREaXNwb3NpdGlvbi5tYXRjaCgvZmlsZW5hbWVcXCpcXHMqPVxccyooW147XSspL2kpO1xyXG5cclxuICAgICAgICAgIGlmIChlbmNvZGluZ0ZpbGVOYW1lKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gZW5jb2RpbmdGaWxlTmFtZVsxXS5zcGxpdCgnXFwnXFwnJyk7XHJcblxyXG4gICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZW5jb2RpbmcgPSBwYXJ0c1swXS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGZpbGVOYW1lID0gcGFydHNbMV07XHJcblxyXG4gICAgICAgICAgICAgIGlmIChlbmNvZGluZyA9PT0gJ3V0Zi04Jykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZG93bmxvYWRGaWxlKGRlY29kZVVSSUNvbXBvbmVudChmaWxlTmFtZSkpLnRoZW4oKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb25zdCBzaW1wbGVGaWxlTmFtZSA9IGNvbnRlbnREaXNwb3NpdGlvbi5tYXRjaCgvZmlsZW5hbWVcXHMqPVxccypbXCInXT8oW147XCInXSspL2kpO1xyXG5cclxuICAgICAgICAgIGlmIChzaW1wbGVGaWxlTmFtZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9kb3dubG9hZEZpbGUoc2ltcGxlRmlsZU5hbWVbMV0pLnRoZW4oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuX2Rvd25sb2FkRmlsZSgnZG9jdW1lbnQucGRmJykudGhlbigpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZG93bmxvYWRGaWxlKGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGJsb2I6IEJsb2IgPSBhd2FpdCB0aGlzLl9wZGZWaWV3ZXJTZXJ2aWNlLmdldEN1cnJlbnREb2N1bWVudEFzQmxvYigpO1xyXG4gICAgY29uc3Qgb2JqZWN0VXJsOiBzdHJpbmcgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgY29uc3QgYTogSFRNTEFuY2hvckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJykgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XHJcblxyXG4gICAgYS5ocmVmID0gb2JqZWN0VXJsO1xyXG4gICAgYS5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG5cclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XHJcblxyXG4gICAgYS5jbGljaygpO1xyXG5cclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XHJcblxyXG4gICAgVVJMLnJldm9rZU9iamVjdFVSTChvYmplY3RVcmwpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctdGVtcGxhdGUgI2N1c3RvbVRvb2xiYXI+XHJcbiAgPGRpdiBjbGFzcz1cIm1yeC1wZGYtdmlld2VyX190b29sYmFyXCIgaWQ9XCJ0b29sYmFyVmlld2VyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGctMlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGctMVwiPlxyXG4gICAgICAgIEBpZiAoc2hvd1NpZGViYXJCdXR0b24pIHtcclxuICAgICAgICAgIDxtcngtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1idXJnZXInXCJcclxuICAgICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgICAgKG1yeENsaWNrKT1cIm9uU2lkZWJhclZpZXdDbGljaygpXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydtcngtaWNvbi1idXR0b24tLXRvZ2dsZWQnOiBzaWRlYmFyVmlzaWJsZX1cIlxyXG4gICAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCIncHktMSBweC0yJ1wiXHJcbiAgICAgICAgICAgIFt0b29sdGlwXT1cIifQn9C+0LrQsNC30LDRgtGML9GB0LrRgNGL0YLRjCDQsdC+0LrQvtCy0YPRjiDQv9Cw0L3QtdC70YwnXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tLXN0YXJ0J1wiXHJcbiAgICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoc2hvd0ZpbmRiYXJCdXR0b24pIHtcclxuICAgICAgICAgIDxtcngtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1zZWFyY2gnXCJcclxuICAgICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgICAgKG1yeENsaWNrKT1cIm9uU2VhcmNoQ2xpY2soKVwiXHJcbiAgICAgICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidweS0xIHB4LTIgbXJ4LXBkZi12aWV3ZXJfX2ZpbmQtYnV0dG9uJ1wiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbXJ4LWljb24tYnV0dG9uLS10b2dnbGVkJzogaXNTZWFyY2hQYW5lbFZpc2libGV9XCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ9Cd0LDQudGC0Lgg0LIg0LTQvtC60YPQvNC10L3RgtC1J1wiXHJcbiAgICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ2JvdHRvbS1zdGFydCdcIlxyXG4gICAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICBAaWYgKGlzU2VhcmNoUGFuZWxWaXNpYmxlKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1wZGYtdmlld2VyX19maW5kYmFyIGctMVwiICNmaW5kTWVudT5cclxuICAgICAgICAgIDxtcngtaW5wdXQtdGV4dFxyXG4gICAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCJmaW5kU3RhdGUgPT09IDEgPyAnbXJ4LWlucHV0LWVycm9yJyA6JycrJ3NlYXJjaFRleHQnXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLQndCw0LnRgtC4INCyINC00L7QutGD0LzQtdC90YLQtS4uLlwiXHJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaFF1ZXJ5XCJcclxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2goJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPC9tcngtaW5wdXQtdGV4dD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgIFtpY29uQ2xhc3NdPVwiJ2ljb24tY2hldnJvbi1sZWZ0J1wiXHJcbiAgICAgICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgICAgIFtzdGF0ZV09XCInZGVmYXVsdCdcIlxyXG4gICAgICAgICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidwLTEnXCJcclxuICAgICAgICAgICAgICAobXJ4Q2xpY2spPVwiZmluZFByZXZpb3VzKClcIlxyXG4gICAgICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgICAgICAgIDxtcngtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICBbaWNvbkNsYXNzXT1cIidpY29uLWNoZXZyb24tcmlnaHQnXCJcclxuICAgICAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3AtMSdcIlxyXG4gICAgICAgICAgICAgIChtcnhDbGljayk9XCJmaW5kTmV4dCgpXCJcclxuICAgICAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICBAaWYgKGZpbmRTdGF0ZSA9PT0gMCB8fCBmaW5kU3RhdGUgPT09IDIpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1wZGYtdmlld2VyX19maW5kYmFyLXJlc3VsdFwiPlxyXG4gICAgICAgICAgICAgIHt7IGN1cnJlbnRGaW5kIH19INC40Lcge3sgdG90YWxGb3VuZCB9fSDRgdC+0LLQv9Cw0LTQtdC90LjQuVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpZiAoZmluZFN0YXRlID09PSAxKSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xvci1uZWdhdGl2ZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG5vd3JhcFwiPtCk0YDQsNC30LAg0L3QtSDQvdCw0LnQtNC10L3QsDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LXBkZi12aWV3ZXJfX3Rvb2xiYXItLW5hdlwiPlxyXG4gICAgICAgIDxtcngtaWNvbi1idXR0b25cclxuICAgICAgICAgIFtpY29uQ2xhc3NdPVwiJ2ljb24taW4tdGhlLWVuZC1sZWZ0J1wiXHJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidweS0xIHB4LTInXCJcclxuICAgICAgICAgIFt0b29sdGlwXT1cIifQn9C10YDQstCw0Y8g0YHRgtGA0LDQvdC40YbQsCdcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tLXN0YXJ0J1wiXHJcbiAgICAgICAgICAobXJ4Q2xpY2spPVwib25QYWdlQ2hhbmdlKDEpXCJcclxuICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1jaGV2cm9uLWxlZnQnXCJcclxuICAgICAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcclxuICAgICAgICAgIFtzdGF0ZV09XCInZGVmYXVsdCdcIlxyXG4gICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ9Cf0YDQtdC00YvQtNGD0YnQsNGPINGB0YLRgNCw0L3QuNGG0LAnXCJcclxuICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ2JvdHRvbS1zdGFydCdcIlxyXG4gICAgICAgICAgKG1yeENsaWNrKT1cIm9uUGFnZUNoYW5nZShwYWdlIC0gMSB8fCAxKVwiXHJcbiAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICAgIDxtcngtaW5wdXQtbnVtYmVyXHJcbiAgICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcclxuICAgICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIid3cHgtNTYnXCJcclxuICAgICAgICAgIFtuZ01vZGVsXT1cInBhZ2VcIlxyXG4gICAgICAgICAgW251bWJlclR5cGVdPVwiJ2ludCdcIlxyXG4gICAgICAgICAgW21pblZhbHVlXT1cIjFcIlxyXG4gICAgICAgICAgW21heFZhbHVlXT1cInBhZ2VDb3VudFwiXHJcbiAgICAgICAgICBbaXNBdXRvQ29ycmVjdGluZ1ZhbHVlXT1cInRydWVcIlxyXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgID48L21yeC1pbnB1dC1udW1iZXI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCI+0LjQtyB7eyBwYWdlQ291bnQgfX08L3NwYW4+XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1jaGV2cm9uLXJpZ2h0J1wiXHJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgIChtcnhDbGljayk9XCJvbk5leHRQYWdlKClcIlxyXG4gICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ9Ch0LvQtdC00YPRjtGJ0LDRjyDRgdGC0YDQsNC90LjRhtCwJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1pbi10aGUtZW5kLXJpZ2h0J1wiXHJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgIChtcnhDbGljayk9XCJvbkxhc3RQYWdlKClcIlxyXG4gICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ9Cf0L7RgdC70LXQtNC90Y/RjyDRgdGC0YDQsNC90LjRhtCwJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICA8bXJ4LWljb24tYnV0dG9uXHJcbiAgICAgICAgKG1yeENsaWNrKT1cInpvb21DbGljayhmYWxzZSlcIlxyXG4gICAgICAgIFtpY29uQ2xhc3NdPVwiJ2ljb24tbWludXMnXCJcclxuICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgIFt0b29sdGlwXT1cIifQo9C80LXQvdGM0YjQuNGC0YwnXCJcclxuICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICA8bXJ4LWljb24tYnV0dG9uXHJcbiAgICAgICAgKG1yeENsaWNrKT1cInpvb21DbGljayh0cnVlKVwiXHJcbiAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1wbHVzJ1wiXHJcbiAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgIFtzdGF0ZV09XCInZGVmYXVsdCdcIlxyXG4gICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidweS0xIHB4LTInXCJcclxuICAgICAgICBbdG9vbHRpcF09XCIn0KPQstC10LvQuNGH0LjRgtGMJ1wiXHJcbiAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tLXN0YXJ0J1wiXHJcbiAgICAgID48L21yeC1pY29uLWJ1dHRvbj5cclxuICAgICAgPG1yeC1pbnB1dC1zZWxlY3RcclxuICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3dweC0xNTYnXCJcclxuICAgICAgICBbaXRlbXNdPVwiem9vbU9wdGlvbnNcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uWm9vbUxldmVsU2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkWm9vbVwiXHJcbiAgICAgICAgW2NsZWFyYWJsZV09XCJmYWxzZVwiPlxyXG4gICAgICA8L21yeC1pbnB1dC1zZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgIEBpZiAoc2hvd0hhbmRUb29sQnV0dG9uKSB7XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1mYy10ZXh0J1wiXHJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J21yeC1pY29uLWJ1dHRvbi0tdG9nZ2xlZCc6ICFoYW5kVG9vbH1cIlxyXG4gICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICAobXJ4Q2xpY2spPVwib25IYW5kVG9vbENsaWNrKClcIlxyXG4gICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgID48L21yeC1pY29uLWJ1dHRvbj5cclxuICAgICAgfVxyXG4gICAgICBAaWYgKHNob3dSb3RhdGVCdXR0b24pIHtcclxuICAgICAgICA8bXJ4LWljb24tYnV0dG9uXHJcbiAgICAgICAgICBbaWNvbkNsYXNzXT1cIidpY29uLXJlbG9hZCdcIlxyXG4gICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICAobXJ4Q2xpY2spPVwib25Sb3RhdGUoMSlcIlxyXG4gICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B5LTEgcHgtMidcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ9Cf0L7QstC10YDQvdGD0YLRjCDQv9C+INGH0LDRgdC+0LLQvtC5INGB0YLRgNC10LvQutC1J1wiXHJcbiAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgIH1cclxuICAgICAgQGlmIChzaG93Um90YXRlQnV0dG9uKSB7XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1yZXR1cm4nXCJcclxuICAgICAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcclxuICAgICAgICAgIFtzdGF0ZV09XCInZGVmYXVsdCdcIlxyXG4gICAgICAgICAgKG1yeENsaWNrKT1cIm9uUm90YXRlKC0xKVwiXHJcbiAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCIncHktMSBweC0yJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcF09XCIn0J/QvtCy0LXRgNC90YPRgtGMINC/0YDQvtGC0LjQsiDRh9Cw0YHQvtCy0L7QuSDRgdGC0YDQtdC70LrQuCdcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tLXN0YXJ0J1wiXHJcbiAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoc2hvd0V4cGFuZEJ1dHRvbikge1xyXG4gICAgICAgIDxtcngtaWNvbi1idXR0b25cclxuICAgICAgICAgIFtpY29uQ2xhc3NdPVwiJ2ljb24tYXJyb3ctZXhwYW5kJ1wiXHJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICBbc3RhdGVdPVwiJ2RlZmF1bHQnXCJcclxuICAgICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidweS0xIHB4LTInXCJcclxuICAgICAgICAgIChtcnhDbGljayk9XCJvbkV4cGFuZE1vZGVDbGljaygpXCJcclxuICAgICAgICAgIFt0b29sdGlwXT1cIifQn9C+0LrQsNC30LDRgtGMINC90LAg0LLQtdGB0Ywg0Y3QutGA0LDQvSdcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tLXN0YXJ0J1wiXHJcbiAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoc2hvd1ByaW50QnV0dG9uKSB7XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1wcmludCdcIlxyXG4gICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCIncHktMSBweC0yJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcF09XCIn0J/QtdGH0LDRgtGMJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgICAgIChtcnhDbGljayk9XCJvblByaW50Q2xpY2soKVwiXHJcbiAgICAgICAgPjwvbXJ4LWljb24tYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoc2hvd0Rvd25sb2FkQnV0dG9uKSB7XHJcbiAgICAgICAgPG1yeC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgW2ljb25DbGFzc109XCInaWNvbi1kb3dubG9hZCdcIlxyXG4gICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAgICAgW3N0YXRlXT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCIncHktMSBweC0yJ1wiXHJcbiAgICAgICAgICBbdG9vbHRpcF09XCIn0KHQutCw0YfQsNGC0YwnXCJcclxuICAgICAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ2JvdHRvbS1zdGFydCdcIlxyXG4gICAgICAgICAgKG1yeENsaWNrKT1cIm9uRG93bmxvYWRDbGljaygpXCJcclxuICAgICAgICA+PC9tcngtaWNvbi1idXR0b24+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5neC1leHRlbmRlZC1wZGYtdmlld2VyXHJcbiAgI3BkZlZpZXdlclxyXG4gIGNsYXNzPVwibXJ4LXBkZi12aWV3ZXJcIlxyXG4gIFtzcmNdPVwic3JjXCJcclxuICBbcGFnZV09XCJwYWdlXCJcclxuICBbc2lkZWJhclZpc2libGVdPVwic2hvd1NpZGViYXJCdXR0b24gJiYgc2lkZWJhclZpc2libGVcIlxyXG4gIFtjdXN0b21Ub29sYmFyXT1cImN1c3RvbVRvb2xiYXJcIlxyXG4gIFtzaG93U2lkZWJhckJ1dHRvbl09XCJ0cnVlXCJcclxuICBbc2hvd1JvdGF0ZUJ1dHRvbl09XCJzaG93Um90YXRlQnV0dG9uXCJcclxuICBbc2hvd0Rvd25sb2FkQnV0dG9uXT1cInNob3dEb3dubG9hZEJ1dHRvblwiXHJcbiAgW2lnbm9yZUtleXNdPVwiaWdub3JlS2V5c1wiXHJcbiAgW3pvb21dPVwic2VsZWN0ZWRab29tLnZhbHVlXCJcclxuICBbdGV4dExheWVyXT1cInRydWVcIlxyXG4gIFtoYW5kVG9vbF09XCJoYW5kVG9vbFwiXHJcbiAgW3JvdGF0aW9uXT1cInJvdGF0aW9uXCJcclxuICAoem9vbUNoYW5nZSk9XCJvblpvb21DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gIChwYWdlc0xvYWRlZCk9XCJvblBhZ2VzTG9hZGVkKCRldmVudClcIlxyXG4gICh1cGRhdGVGaW5kU3RhdGUpPVwib25GaW5kU3RhdGVDaGFuZ2VkKCRldmVudClcIlxyXG4gIChzaWRlYmFyVmlzaWJsZUNoYW5nZSk9XCJvblNpZGViYXJWaXNpYmxlQ2hhbmdlKCRldmVudClcIlxyXG4gICh1cGRhdGVGaW5kTWF0Y2hlc0NvdW50KT1cIm9uVXBkYXRlTWF0Y2hDYXNlKCRldmVudClcIlxyXG4+PC9uZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlcj5cclxuIl19
|
package/fesm2022/myrta-ui.mjs
CHANGED
|
@@ -19,7 +19,7 @@ import { NgSelectModule } from '@ng-select/ng-select';
|
|
|
19
19
|
import { Subscription, asyncScheduler, delay, of, timer, Subject, filter, BehaviorSubject, EMPTY } from 'rxjs';
|
|
20
20
|
import isEqual from 'lodash-es/isEqual';
|
|
21
21
|
import * as i1$3 from '@angular/common/http';
|
|
22
|
-
import { HttpEventType, HttpClientModule } from '@angular/common/http';
|
|
22
|
+
import { HttpEventType, HttpClientModule, HttpHeaders } from '@angular/common/http';
|
|
23
23
|
import { cloneDeep } from 'lodash-es';
|
|
24
24
|
import * as i1$4 from 'ngx-toastr';
|
|
25
25
|
import { Toast, ToastrModule, ToastrService } from 'ngx-toastr';
|
|
@@ -19126,24 +19126,36 @@ class PdfViewerComponent {
|
|
|
19126
19126
|
}
|
|
19127
19127
|
onDownloadClick() {
|
|
19128
19128
|
if (this.downloadFileName) {
|
|
19129
|
-
this._downloadFile(this.downloadFileName);
|
|
19129
|
+
this._downloadFile(this.downloadFileName).then();
|
|
19130
19130
|
}
|
|
19131
19131
|
else {
|
|
19132
|
+
const headers = new HttpHeaders();
|
|
19133
|
+
headers.set('Content-Disposition', 'Печатная форма заявки со штампом.pdf');
|
|
19132
19134
|
this._http.get(this.src, { responseType: 'blob', observe: 'response', })
|
|
19133
19135
|
.subscribe((response) => {
|
|
19134
19136
|
const contentDisposition = response.headers.get('Content-Disposition');
|
|
19135
|
-
if (contentDisposition) {
|
|
19136
|
-
|
|
19137
|
-
|
|
19138
|
-
|
|
19139
|
-
|
|
19140
|
-
|
|
19141
|
-
|
|
19137
|
+
if (!contentDisposition) {
|
|
19138
|
+
this._downloadFile('document.pdf').then();
|
|
19139
|
+
return;
|
|
19140
|
+
}
|
|
19141
|
+
const encodingFileName = contentDisposition.match(/filename\*\s*=\s*([^;]+)/i);
|
|
19142
|
+
if (encodingFileName) {
|
|
19143
|
+
const parts = encodingFileName[1].split('\'\'');
|
|
19144
|
+
if (parts.length === 2) {
|
|
19145
|
+
const encoding = parts[0].toLowerCase();
|
|
19146
|
+
const fileName = parts[1];
|
|
19147
|
+
if (encoding === 'utf-8') {
|
|
19148
|
+
this._downloadFile(decodeURIComponent(fileName)).then();
|
|
19149
|
+
return;
|
|
19150
|
+
}
|
|
19142
19151
|
}
|
|
19143
19152
|
}
|
|
19144
|
-
|
|
19145
|
-
|
|
19153
|
+
const simpleFileName = contentDisposition.match(/filename\s*=\s*["']?([^;"']+)/i);
|
|
19154
|
+
if (simpleFileName) {
|
|
19155
|
+
this._downloadFile(simpleFileName[1]).then();
|
|
19156
|
+
return;
|
|
19146
19157
|
}
|
|
19158
|
+
this._downloadFile('document.pdf').then();
|
|
19147
19159
|
});
|
|
19148
19160
|
}
|
|
19149
19161
|
}
|