@tsi-developpement/tsi-shared-ui 1.2.1 → 1.2.3

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.
@@ -24,10 +24,14 @@ export class ModeleImportService extends CrudBaseService {
24
24
  deleteImport(codeImport, classe) {
25
25
  return this._httpClient.get(ImportExportEndPoints.deleteImport(codeImport, classe));
26
26
  }
27
- executeImportWithoutModel(file) {
27
+ executeImportWithoutModel(executeImportRequest, file) {
28
28
  const formData = new FormData();
29
- const blob = new Blob([file], { type: file.type });
30
- formData.append('formFile', blob, file.name);
29
+ formData.append('formFile', file, file.name);
30
+ for (const key in executeImportRequest) {
31
+ if (Object.prototype.hasOwnProperty.call(executeImportRequest, key)) {
32
+ formData.append(key, executeImportRequest[key]?.toString() ?? '');
33
+ }
34
+ }
31
35
  return this._httpClient.post(ImportExportEndPoints.executeImportWithoutModel(), formData);
32
36
  }
33
37
  executeExport(id, pagedRequest) {
@@ -66,4 +70,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
66
70
  providedIn: 'root'
67
71
  }]
68
72
  }], ctorParameters: () => [{ type: i1.HttpClient }] });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxlLWltcG9ydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3NlcnZpY2VzL0ltcG9ydC1FeHBvcnQvbW9kZWxlLWltcG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSTVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFNL0UsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGVBQTJIO0lBRWxLLFlBQXNCLFVBQXNCO1FBQzFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsb0JBQW9CLENBQUMsWUFBWSxDQUFDLENBQUE7UUFEaEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUU1QyxDQUFDO0lBRUQsYUFBYSxDQUFDLG9CQUEwQyxFQUFFLElBQVU7UUFDbEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUVoQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTdDLEtBQUssTUFBTSxHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQztZQUN2QyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNwRSxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRyxvQkFBNEIsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM3RSxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJ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QUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEcsQ0FBQzsrR0FwRVUsbUJBQW1CO21IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ3J1ZEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vYmFzZS9jcnVkLWJhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRXhlY3V0ZUltcG9ydFJlcXVlc3QsIGV4ZWN1dGVJbXBvcnRSZXN1bHQsIEltcG9ydFJlc3VsdCwgTW9kZWxlSW1wb3J0Q3JlYXRlUmVxdWVzdCB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEltcG9ydEV4cG9ydFNlZ21lbnRzLCBJbXBvcnRFeHBvcnRFbmRQb2ludHMgfSBmcm9tICcuLi8uLi9lbmQtcG9pbnRzJztcclxuaW1wb3J0IHsgSVBhZ2VkUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLWJhc2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTW9kZWxlSW1wb3J0U2VydmljZSBleHRlbmRzIENydWRCYXNlU2VydmljZTxNb2RlbGVJbXBvcnRDcmVhdGVSZXF1ZXN0LCBNb2RlbGVJbXBvcnRDcmVhdGVSZXF1ZXN0LCBNb2RlbGVJbXBvcnRDcmVhdGVSZXF1ZXN0LCBNb2RlbGVJbXBvcnRDcmVhdGVSZXF1ZXN0PiB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSB7XHJcbiAgICBzdXBlcihodHRwQ2xpZW50LCBJbXBvcnRFeHBvcnRTZWdtZW50cy5tb2RlbGVJbXBvcnQpXHJcbiAgfVxyXG5cclxuICBleGVjdXRlSW1wb3J0KGV4ZWN1dGVJbXBvcnRSZXF1ZXN0OiBFeGVjdXRlSW1wb3J0UmVxdWVzdCwgZmlsZTogRmlsZSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG5cclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnZm9ybUZpbGUnLCBmaWxlLCBmaWxlLm5hbWUpO1xyXG5cclxuICAgIGZvciAoY29uc3Qga2V5IGluIGV4ZWN1dGVJbXBvcnRSZXF1ZXN0KSB7XHJcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXhlY3V0ZUltcG9ydFJlcXVlc3QsIGtleSkpIHtcclxuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoa2V5LCAoZXhlY3V0ZUltcG9ydFJlcXVlc3QgYXMgYW55KVtrZXldPy50b1N0cmluZygpID8/ICcnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LnBvc3QoSW1wb3J0RXhwb3J0RW5kUG9pbnRzLmV4ZWN1dGVJbXBvcnQoKSwgZm9ybURhdGEpO1xyXG4gIH1cclxuXHJcbiAgZXhlY3V0ZUltcG9ydEpzb24oZmlsZU5hbWU6IHN0cmluZywgY2xhc3NlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQuZ2V0KEltcG9ydEV4cG9ydEVuZFBvaW50cy5leGVjdXRlSW1wb3J0SnNvbkZyb21TZXJ2ZXIoZmlsZU5hbWUsIGNsYXNzZSkpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlSW1wb3J0KGNvZGVJbXBvcnQ6IHN0cmluZywgY2xhc3NlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQuZ2V0KEltcG9ydEV4cG9ydEVuZFBvaW50cy5kZWxldGVJbXBvcnQoY29kZUltcG9ydCwgY2xhc3NlKSk7XHJcbiAgfVxyXG5cclxuICBleGVjdXRlSW1wb3J0V2l0aG91dE1vZGVsKGZpbGU6IEZpbGUpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbZmlsZV0sIHsgdHlwZTogZmlsZS50eXBlIH0pO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdmb3JtRmlsZScsIGJsb2IsIGZpbGUubmFtZSk7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5wb3N0KEltcG9ydEV4cG9ydEVuZFBvaW50cy5leGVjdXRlSW1wb3J0V2l0aG91dE1vZGVsKCksIGZvcm1EYXRhKTtcclxuICB9XHJcblxyXG4gIGV4ZWN1dGVFeHBvcnQoaWQ6IHN0cmluZywgcGFnZWRSZXF1ZXN0OiBJUGFnZWRSZXF1ZXN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LnBvc3QoSW1wb3J0RXhwb3J0RW5kUG9pbnRzLmV4ZWN1dGVFeHBvcnQoaWQpLCBwYWdlZFJlcXVlc3QpO1xyXG4gIH1cclxuXHJcbiAgZXhlY3V0ZUV4cG9ydEpzb24oaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQoSW1wb3J0RXhwb3J0RW5kUG9pbnRzLmV4ZWN1dGVFeHBvcnRKc29uKGlkKSk7XHJcbiAgfVxyXG5cclxuICBleGVjdXRlRXhwb3J0SnNvblNlcnZlcihpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldChJbXBvcnRFeHBvcnRFbmRQb2ludHMuZXhlY3V0ZUV4cG9ydEpzb25TZXJ2ZXIoaWQpKTtcclxuICB9XHJcblxyXG4gIHVwbG9hZEpzb25GaWxlKGZpbGU6IEZpbGUpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbZmlsZV0sIHsgdHlwZTogZmlsZS50eXBlIH0pO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uRmlsZScsIGJsb2IsIGZpbGUubmFtZSk7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5wb3N0KEltcG9ydEV4cG9ydEVuZFBvaW50cy5leGVjdXRlSW1wb3J0SnNvbigpLCBmb3JtRGF0YSk7XHJcbiAgfVxyXG5cclxuICBHZXRKc29uRmlsZXMoY2xhc3NlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8YW55PihJbXBvcnRFeHBvcnRFbmRQb2ludHMuZ2V0SnNvbkZpbGVzKGNsYXNzZSkpO1xyXG4gIH1cclxuXHJcbiAgR2V0SW1wb3J0SGlzdG9yeShjbGFzc2U6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxhbnk+KEltcG9ydEV4cG9ydEVuZFBvaW50cy5nZXRJbXBvcnRIaXN0b3J5KGNsYXNzZSkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW1wb3J0UmVzdWx0QnlCdXNpbmVzc0NsYXNzKGJ1c2luZXNzQ2xhc3MgOiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxJbXBvcnRSZXN1bHRbXT57XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8SW1wb3J0UmVzdWx0W10+KEltcG9ydEV4cG9ydEVuZFBvaW50cy5nZXRJbXBvcnRSZXN1bHRCeUJ1c2luZXNzQ2xhc3MoYnVzaW5lc3NDbGFzcykpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW1wb3J0UmVzdWx0QnlJZCh1aWQgOiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxleGVjdXRlSW1wb3J0UmVzdWx0PntcclxuICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldDxleGVjdXRlSW1wb3J0UmVzdWx0PihJbXBvcnRFeHBvcnRFbmRQb2ludHMuZ2V0SW1wb3J0UmVzdWx0QnlVaWQodWlkKSk7XHJcbiAgfVxyXG5cclxufSJdfQ==
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxlLWltcG9ydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3NlcnZpY2VzL0ltcG9ydC1FeHBvcnQvbW9kZWxlLWltcG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSTVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFNL0UsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGVBQTJIO0lBRWxLLFlBQXNCLFVBQXNCO1FBQzFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsb0JBQW9CLENBQUMsWUFBWSxDQUFDLENBQUE7UUFEaEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUU1QyxDQUFDO0lBRUQsYUFBYSxDQUFDLG9CQUEwQyxFQUFFLElBQVU7UUFDbEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUVoQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTdDLEtBQUssTUFBTSxHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQztZQUN2QyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNwRSxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRyxvQkFBNEIsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM3RSxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJ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LEdBQUcsQ0FBaUIscUJBQXFCLENBQUMsOEJBQThCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNuSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsR0FBWTtRQUM5QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFzQixxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7K0dBNUVVLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENydWRCYXNlU2VydmljZSB9IGZyb20gJy4uL2Jhc2UvY3J1ZC1iYXNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEV4ZWN1dGVJbXBvcnRSZXF1ZXN0LCBleGVjdXRlSW1wb3J0UmVzdWx0LCBJbXBvcnRSZXN1bHQsIE1vZGVsZUltcG9ydENyZWF0ZVJlcXVlc3QgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBJbXBvcnRFeHBvcnRTZWdtZW50cywgSW1wb3J0RXhwb3J0RW5kUG9pbnRzIH0gZnJvbSAnLi4vLi4vZW5kLXBvaW50cyc7XHJcbmltcG9ydCB7IElQYWdlZFJlcXVlc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BhZ2luYXRpb24vcGFnaW5hdGlvbi1iYXNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE1vZGVsZUltcG9ydFNlcnZpY2UgZXh0ZW5kcyBDcnVkQmFzZVNlcnZpY2U8TW9kZWxlSW1wb3J0Q3JlYXRlUmVxdWVzdCwgTW9kZWxlSW1wb3J0Q3JlYXRlUmVxdWVzdCwgTW9kZWxlSW1wb3J0Q3JlYXRlUmVxdWVzdCwgTW9kZWxlSW1wb3J0Q3JlYXRlUmVxdWVzdD4ge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaHR0cENsaWVudDogSHR0cENsaWVudCkge1xyXG4gICAgc3VwZXIoaHR0cENsaWVudCwgSW1wb3J0RXhwb3J0U2VnbWVudHMubW9kZWxlSW1wb3J0KVxyXG4gIH1cclxuXHJcbiAgZXhlY3V0ZUltcG9ydChleGVjdXRlSW1wb3J0UmVxdWVzdDogRXhlY3V0ZUltcG9ydFJlcXVlc3QsIGZpbGU6IEZpbGUpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuXHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2Zvcm1GaWxlJywgZmlsZSwgZmlsZS5uYW1lKTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBleGVjdXRlSW1wb3J0UmVxdWVzdCkge1xyXG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGV4ZWN1dGVJbXBvcnRSZXF1ZXN0LCBrZXkpKSB7XHJcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGtleSwgKGV4ZWN1dGVJbXBvcnRSZXF1ZXN0IGFzIGFueSlba2V5XT8udG9TdHJpbmcoKSA/PyAnJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5wb3N0KEltcG9ydEV4cG9ydEVuZFBvaW50cy5leGVjdXRlSW1wb3J0KCksIGZvcm1EYXRhKTtcclxuICB9XHJcblxyXG4gIGV4ZWN1dGVJbXBvcnRKc29uKGZpbGVOYW1lOiBzdHJpbmcsIGNsYXNzZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldChJbXBvcnRFeHBvcnRFbmRQb2ludHMuZXhlY3V0ZUltcG9ydEpzb25Gcm9tU2VydmVyKGZpbGVOYW1lLCBjbGFzc2UpKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUltcG9ydChjb2RlSW1wb3J0OiBzdHJpbmcsIGNsYXNzZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldChJbXBvcnRFeHBvcnRFbmRQb2ludHMuZGVsZXRlSW1wb3J0KGNvZGVJbXBvcnQsIGNsYXNzZSkpO1xyXG4gIH1cclxuXHJcbiAgZXhlY3V0ZUltcG9ydFdpdGhvdXRNb2RlbChleGVjdXRlSW1wb3J0UmVxdWVzdDogRXhlY3V0ZUltcG9ydFJlcXVlc3QsIGZpbGU6IEZpbGUpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cclxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcblxyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdmb3JtRmlsZScsIGZpbGUsIGZpbGUubmFtZSk7XHJcblxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZXhlY3V0ZUltcG9ydFJlcXVlc3QpIHtcclxuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChleGVjdXRlSW1wb3J0UmVxdWVzdCwga2V5KSkge1xyXG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIChleGVjdXRlSW1wb3J0UmVxdWVzdCBhcyBhbnkpW2tleV0/LnRvU3RyaW5nKCkgPz8gJycpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQucG9zdChJbXBvcnRFeHBvcnRFbmRQb2ludHMuZXhlY3V0ZUltcG9ydFdpdGhvdXRNb2RlbCgpLCBmb3JtRGF0YSk7XHJcbiAgfVxyXG5cclxuICBleGVjdXRlRXhwb3J0KGlkOiBzdHJpbmcsIHBhZ2VkUmVxdWVzdDogSVBhZ2VkUmVxdWVzdCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5wb3N0KEltcG9ydEV4cG9ydEVuZFBvaW50cy5leGVjdXRlRXhwb3J0KGlkKSwgcGFnZWRSZXF1ZXN0KTtcclxuICB9XHJcblxyXG4gIGV4ZWN1dGVFeHBvcnRKc29uKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQuZ2V0KEltcG9ydEV4cG9ydEVuZFBvaW50cy5leGVjdXRlRXhwb3J0SnNvbihpZCkpO1xyXG4gIH1cclxuXHJcbiAgZXhlY3V0ZUV4cG9ydEpzb25TZXJ2ZXIoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQoSW1wb3J0RXhwb3J0RW5kUG9pbnRzLmV4ZWN1dGVFeHBvcnRKc29uU2VydmVyKGlkKSk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRKc29uRmlsZShmaWxlOiBGaWxlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2ZpbGVdLCB7IHR5cGU6IGZpbGUudHlwZSB9KTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkZpbGUnLCBibG9iLCBmaWxlLm5hbWUpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQucG9zdChJbXBvcnRFeHBvcnRFbmRQb2ludHMuZXhlY3V0ZUltcG9ydEpzb24oKSwgZm9ybURhdGEpO1xyXG4gIH1cclxuXHJcbiAgR2V0SnNvbkZpbGVzKGNsYXNzZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PGFueT4oSW1wb3J0RXhwb3J0RW5kUG9pbnRzLmdldEpzb25GaWxlcyhjbGFzc2UpKTtcclxuICB9XHJcblxyXG4gIEdldEltcG9ydEhpc3RvcnkoY2xhc3NlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8YW55PihJbXBvcnRFeHBvcnRFbmRQb2ludHMuZ2V0SW1wb3J0SGlzdG9yeShjbGFzc2UpKTtcclxuICB9XHJcblxyXG4gIGdldEltcG9ydFJlc3VsdEJ5QnVzaW5lc3NDbGFzcyhidXNpbmVzc0NsYXNzIDogc3RyaW5nKSA6IE9ic2VydmFibGU8SW1wb3J0UmVzdWx0W10+e1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQuZ2V0PEltcG9ydFJlc3VsdFtdPihJbXBvcnRFeHBvcnRFbmRQb2ludHMuZ2V0SW1wb3J0UmVzdWx0QnlCdXNpbmVzc0NsYXNzKGJ1c2luZXNzQ2xhc3MpKTtcclxuICB9XHJcblxyXG4gIGdldEltcG9ydFJlc3VsdEJ5SWQodWlkIDogc3RyaW5nKSA6IE9ic2VydmFibGU8ZXhlY3V0ZUltcG9ydFJlc3VsdD57XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8ZXhlY3V0ZUltcG9ydFJlc3VsdD4oSW1wb3J0RXhwb3J0RW5kUG9pbnRzLmdldEltcG9ydFJlc3VsdEJ5VWlkKHVpZCkpO1xyXG4gIH1cclxuXHJcbn0iXX0=
@@ -217,8 +217,8 @@ export class ManageImportExportComponent extends TsiFormComponentBaseComponent {
217
217
  async ngOnInit() {
218
218
  super.ngOnInit();
219
219
  let data = await firstValueFrom(this.modeleImportService.GetJsonFiles(this.config?.data?.formName));
220
- await this.getImportResult();
221
220
  this.gridData = data;
221
+ await this.getImportResult();
222
222
  if (Segment.production) {
223
223
  let buttonAdBuiltinTemplatesIndex = this.columns.findIndex((col) => {
224
224
  return col.field == "downloadJson";
@@ -229,6 +229,12 @@ export class ManageImportExportComponent extends TsiFormComponentBaseComponent {
229
229
  }
230
230
  this.historyGridData = await firstValueFrom(this.modeleImportService.GetImportHistory(this.config?.data?.businessClass));
231
231
  }
232
+ async refreshImportExportData() {
233
+ let data = await firstValueFrom(this.modeleImportService.GetJsonFiles(this.config?.data?.formName));
234
+ this.gridData = data;
235
+ await this.getImportResult();
236
+ this.historyGridData = await firstValueFrom(this.modeleImportService.GetImportHistory(this.config?.data?.businessClass));
237
+ }
232
238
  openModal() {
233
239
  this._dialogRef = this._tsiModalService.open(CreateOrEditModeleImportComponent, {
234
240
  data: {
@@ -413,21 +419,14 @@ export class ManageImportExportComponent extends TsiFormComponentBaseComponent {
413
419
  onImportFileWithoutModel_ImportFile(event) {
414
420
  if (this.toUploadWithoutModel) {
415
421
  this.isloading = true;
416
- this.modeleImportService.executeImportWithoutModel(this.toUploadWithoutModel)
422
+ let executeImportRequest = new ExecuteImportRequest();
423
+ executeImportRequest.modeleImportUid = undefined;
424
+ executeImportRequest.fileName = this.toUploadWithoutModel?.name;
425
+ this.modeleImportService.executeImportWithoutModel(executeImportRequest, this.toUploadWithoutModel)
417
426
  .subscribe({
418
427
  next: async (result) => {
419
428
  console.log(result);
420
429
  this.isloading = false;
421
- this.historyGridData = await firstValueFrom(this.modeleImportService.GetImportHistory(this.config?.data?.businessClass));
422
- this._tsiModalService.open(AlertImportMessageComponent, {
423
- data: {
424
- executeImportResult: result?.data,
425
- },
426
- closable: true,
427
- draggable: true,
428
- width: '35vw',
429
- height: '25vw',
430
- });
431
430
  }
432
431
  });
433
432
  }
@@ -478,11 +477,11 @@ export class ManageImportExportComponent extends TsiFormComponentBaseComponent {
478
477
  }
479
478
  }
480
479
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ManageImportExportComponent, deps: [{ token: i1.ModeleImportService }, { token: i1.TsiConfirmationService }, { token: i1.TsiNotificationService }, { token: i2.DynamicDialogConfig }, { token: i1.TsiModalService }, { token: i1.ErrorResponseManagerService }, { token: i2.DynamicDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
481
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ManageImportExportComponent, selector: "app-manage-import-export", providers: [...appProviders], viewQueries: [{ propertyName: "gridComponent", first: true, predicate: TsiViewGridComponent, descendants: true }, { propertyName: "fileUploader", first: true, predicate: ["fileUpload"], descendants: true }, { propertyName: "viewGridComponent", first: true, predicate: ["viewGrid"], descendants: true }, { propertyName: "importFileToExecuteFileUpload", first: true, predicate: ["importFileToExecuteFileUpload"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<p-tabView>\r\n <p-tabPanel [header]=\"'shared_execute_import_model_import_export' | localize\" class=\"pt-3 px-2\">\r\n <div class=\"card\">\r\n <div *busy=\"isloading\"></div>\r\n <div class=\"grid\">\r\n <div class=\"grid col-10\">\r\n <div>\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'shared_reporting_form'\">\r\n </Tsi-Label>\r\n <!-- <p-dropdown class=\"col-10 tsi-component\" class=\"tsi-component\" styleClass=\"tsi-component\" appendTp=\"body\"\r\n optionLabel=\"value\" optionValue=\"key\" [filter]=\"true\"\r\n filterBy=\"value\" [showClear]=\"true\" placeholder=\"{{'shared_reporting_select_form' | localize}}\"\r\n [disabled]=\"true\">\r\n </p-dropdown> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <p-toolbar styleClass=\"mb-4 gap-2\">\r\n <ng-template pTemplate=\"left\">\r\n <Tsi-Button [text]=\"'shared_reporting_add_report' | localize\"\r\n icon=\"p-button-icon p-button-icon-left pi pi-plus\"\r\n styleClass=\"p-element p-button-success mr-2 p-button p-component ng-star-inserted p-button-label\"\r\n (click)=\"openModal()\"></Tsi-Button>\r\n </ng-template>\r\n <ng-template pTemplate=\"right\">\r\n <p-fileUpload #fileUpload name=\"demo[]\" (onBeforeUpload)=\"onImportFile($event)\"\r\n (onSelect)=\"onFileSelected($event)\" (onClear)=\"onClear($event)\" (onRemove)=\"onRemove($event)\"\r\n [multiple]=\"false\" accept=\"application/json\" [maxFileSize]=\"1000000\"\r\n [invalidFileSizeMessageSummary]=\"'shared_file_upload_invalid_file_size_message_summary' | localize\"\r\n [invalidFileSizeMessageDetail]=\"'shared_file_upload_invalid_file_size_message_detail' | localize\"\r\n [invalidFileTypeMessageSummary]=\"'shared_file_upload_invalid_file_type_message_summary' | localize\"\r\n [invalidFileLimitMessageDetail]=\"'shared_file_upload_invalid_file_limit_message_detail' | localize\"\r\n [invalidFileLimitMessageSummary]=\"'shared_file_upload_invalid_file_limit_message_summary' | localize\"\r\n [invalidFileTypeMessageDetail]=\"'shared_file_upload_invalid_file_type_message_detail' | localize\"\r\n [chooseIcon]=\"'pi pi-paperclip'\" cancelStyleClass=\"p-button-secondary\" uploadStyleClass=\"p-button-help\"\r\n removeStyleClass=\"p-button-danger\" [chooseLabel]=\"'shared_reporting_choose_report_file' | localize\"\r\n [uploadLabel]=\"'shared_reporting_import_report' | localize\"\r\n [cancelLabel]=\"'shared_reporting_cancel_choose_report_file' | localize\">\r\n <ng-template *ngIf=\"toUploadFileData\" pTemplate=\"fileupload-content\">\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n </p-toolbar>\r\n\r\n <tsi-view-grid #viewGrid [header]=\"'shared_execute_import_model_import_export' |localize\"\r\n [searchFields]=\"searchFields\" [showConsultButton]=\"false\" [getDataFromApi]=\"true\"\r\n [crudService]=\"modeleImportService\" (buttonColumnClicked)=\"buttonClicked($event)\"\r\n [formName]=\"'app-manage-import-export'\" [columns]=\"columns\" key=\"uid\">\r\n </tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_execute_import_model_import_export_default' | localize\" class=\"pt-3 px-2\">\r\n <div class=\"grid\">\r\n <tsi-view-grid class=\"col-12\" [header]=\"'shared_execute_import_model_import_export_default' |localize\"\r\n [columns]=\"columnsJson\" [getDataFromApi]=\"false\" [gridData]=\"gridData\" [key]=\"key\"\r\n [formName]=\"'modele-import-par-default'\"\r\n (buttonColumnClicked)=\"handleButtonColumnExecuteClicked($event)\"></tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_execute_import_history' | localize\" class=\"pt-3 px-2\">\r\n <div class=\"grid\">\r\n <tsi-view-grid class=\"col-12\" [header]=\"'shared_execute_import_history' |localize\" [columns]=\"columnsHistory\"\r\n [getDataFromApi]=\"false\" [gridData]=\"historyGridData\" [key]=\"importHistoryKey\"\r\n [formName]=\"'modele-import-par-default'\"\r\n (buttonColumnClicked)=\"handleButtonColumnExecuteClicked($event)\"></tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_execute_import_without_model' | localize\" class=\"pt-3 px-2\">\r\n <ng-template pTemplate=\"body\">\r\n <p-fileUpload #importFileToReportFileUpload name=\"importFileToReport\" [multiple]=\"false\"\r\n (onSelect)=\"onImportFileWithoutModel_FileSelected($event)\" (onClear)=\"onImportFileWithoutModel_Clear($event)\"\r\n (onBeforeUpload)=\"onImportFileWithoutModel_ImportFile($event)\"\r\n (onRemove)=\"onImportFileWithoutModel_Remove($event)\" accept=\".xls,.xlsx\" [maxFileSize]=\"10000000\"\r\n [invalidFileSizeMessageSummary]=\"'shared_file_upload_invalid_file_size_message_summary' | localize\"\r\n [invalidFileSizeMessageDetail]=\"'shared_file_upload_invalid_file_size_message_detail' | localize\"\r\n [invalidFileTypeMessageSummary]=\"'shared_file_upload_invalid_file_type_message_summary' | localize\"\r\n [invalidFileLimitMessageDetail]=\"'shared_file_upload_invalid_file_limit_message_detail' | localize\"\r\n [invalidFileLimitMessageSummary]=\"'shared_file_upload_invalid_file_limit_message_summary' | localize\"\r\n [invalidFileTypeMessageDetail]=\"'shared_file_upload_invalid_file_type_message_detail' | localize\"\r\n [chooseIcon]=\"'pi pi-paperclip'\" cancelStyleClass=\"p-button-secondary\" uploadStyleClass=\"p-button-help\"\r\n removeStyleClass=\"p-button-danger\" [chooseLabel]=\"'shared_reporting_choose_report_file' | localize\"\r\n [uploadLabel]=\"'shared_reporting_import_report' | localize\"\r\n [cancelLabel]=\"'shared_reporting_cancel_choose_report_file' | localize\">\r\n <ng-template pTemplate=\"fileupload-content\">\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_import_result_header' | localize\" class=\"pt-3 px-2\">\r\n\r\n <div class=\"p-1\">\r\n <Tsi-Button (onClick)=\"getImportResult()\"\r\n styleClass=\"p-element p-button-text p-button-raised p-button-rounded mr-2 p-button p-component p-button-icon-only\"\r\n [tooltipText]=\"'shared_import_export_refresh'\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n icon=\"p-button-icon pi pi-refresh\" class=\"p-button-text p-button-raised p-button-rounded mr-2\"></Tsi-Button>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <tsi-view-grid class=\"col-12\" [header]=\"'shared_import_result_header' |localize\" [columns]=\"importResultsColumns\"\r\n [getDataFromApi]=\"false\" [gridData]=\"importResultData\" [key]=\"'uid'\" [formName]=\"'modele-import-result-import'\"\r\n (buttonColumnClicked)=\"handleConsultImportResultButtonClicked($event)\"></tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n</p-tabView>\r\n\r\n<div class=\"p-1\">\r\n <Tsi-Button\r\n styleClass=\"p-element p-button-text p-button-raised p-button-rounded mr-2 p-button p-component p-button-icon-only\"\r\n [tooltipText]=\"'shared_import_export_refresh'\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n icon=\"p-button-icon pi pi-refresh\" class=\"p-button-text p-button-raised p-button-rounded mr-2\"></Tsi-Button>\r\n</div>\r\n\r\n<!-- dialog to import file to report -->\r\n<p-dialog header=\"{{'shared_reporting_select_file_to_import_into_report' | localize}}\"\r\n [(visible)]=\"isImportFileToExecuteVisible\" [style]=\"{width: '50vw'}\">\r\n <!-- <Tsi-Modal-Header (onCloseClick)=\"onImportFileToReportModalCancelClick()\" [inputTitle]=\"'shared_reporting_select_file_to_import_into_report'\"></Tsi-Modal-Header> -->\r\n\r\n <ng-template pTemplate=\"body\">\r\n <p-fileUpload #importFileToReportFileUpload name=\"importFileToReport\" [multiple]=\"false\"\r\n (onSelect)=\"onImportFileToExecute_FileSelected($event)\" (onClear)=\"onImportFileToExecute_Clear($event)\"\r\n (onBeforeUpload)=\"onImportFileToExecute_ImportFile($event)\" (onRemove)=\"onImportFileToExecute_Remove($event)\"\r\n accept=\".xls,.xlsx\" [maxFileSize]=\"10000000\"\r\n [invalidFileSizeMessageSummary]=\"'shared_file_upload_invalid_file_size_message_summary' | localize\"\r\n [invalidFileSizeMessageDetail]=\"'shared_file_upload_invalid_file_size_message_detail' | localize\"\r\n [invalidFileTypeMessageSummary]=\"'shared_file_upload_invalid_file_type_message_summary' | localize\"\r\n [invalidFileLimitMessageDetail]=\"'shared_file_upload_invalid_file_limit_message_detail' | localize\"\r\n [invalidFileLimitMessageSummary]=\"'shared_file_upload_invalid_file_limit_message_summary' | localize\"\r\n [invalidFileTypeMessageDetail]=\"'shared_file_upload_invalid_file_type_message_detail' | localize\"\r\n [chooseIcon]=\"'pi pi-paperclip'\" cancelStyleClass=\"p-button-secondary\" uploadStyleClass=\"p-button-help\"\r\n removeStyleClass=\"p-button-danger\" [chooseLabel]=\"'shared_reporting_choose_report_file' | localize\"\r\n [uploadLabel]=\"'shared_reporting_import_report' | localize\"\r\n [cancelLabel]=\"'shared_reporting_cancel_choose_report_file' | localize\">\r\n <ng-template pTemplate=\"fileupload-content\">\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n\r\n\r\n <!-- <Tsi-Modal-Footer (onCancelClick)=\"onImportFileToReportModalCancelClick()\"\r\n (onSaveClick)=\"onImportFileToReportModalSaveClick()\"\r\n [saveDisabled]=\"!toUploadToUpdateReportFileData\"></Tsi-Modal-Footer> -->\r\n\r\n</p-dialog>", styles: ["::ng-deep .p-fileupload-choose input{display:none!important}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass", "ariaLabelledBy"] }, { kind: "component", type: i6.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: i7.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i8.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "component", type: i9.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i10.TsiViewGridComponent, selector: "tsi-view-grid", inputs: ["columns", "gridConfiguration", "viewComponent", "crudService", "header", "modalSize", "showConsultButton", "showSearchField", "searchFields", "formEndpoint", "formName", "id", "showImportExportButton", "targetBusinessClass", "getDataFromApi", "gridData", "isSearchButtonDisabled", "selectKeyOnly", "selectionMode", "selectedItems", "key", "showGlobalSearch", "showExportButton", "showCalenderView", "calenderSchema", "showHeaderFilters", "showFilterButton", "selectAll", "checkedByField", "searchOnInit"], outputs: ["summariesChange", "selectedItemsChange", "buttonColumnClicked", "searchFieldsValueChanged", "getAllPagedResultChanged"] }, { kind: "component", type: i11.TsiButtonComponent, selector: "Tsi-Button", inputs: ["disabled", "text", "style", "tooltipText", "tooltipPosition", "buttonType", "icon", "styleClass", "iconSrc", "id", "iconWidth", "iconClass"], outputs: ["onClick", "rightClick"] }, { kind: "directive", type: i12.BusyDirective, selector: "[busy]", inputs: ["busy"] }, { kind: "pipe", type: i13.LocalizePipe, name: "localize" }] }); }
480
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ManageImportExportComponent, selector: "app-manage-import-export", providers: [...appProviders], viewQueries: [{ propertyName: "gridComponent", first: true, predicate: TsiViewGridComponent, descendants: true }, { propertyName: "fileUploader", first: true, predicate: ["fileUpload"], descendants: true }, { propertyName: "viewGridComponent", first: true, predicate: ["viewGrid"], descendants: true }, { propertyName: "importFileToExecuteFileUpload", first: true, predicate: ["importFileToExecuteFileUpload"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<p-tabView>\r\n <p-tabPanel [header]=\"'shared_execute_import_model_import_export' | localize\" class=\"pt-3 px-2\">\r\n <div class=\"card\">\r\n <div *busy=\"isloading\"></div>\r\n <div class=\"grid\">\r\n <div class=\"grid col-10\">\r\n <div>\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'shared_reporting_form'\">\r\n </Tsi-Label>\r\n <!-- <p-dropdown class=\"col-10 tsi-component\" class=\"tsi-component\" styleClass=\"tsi-component\" appendTp=\"body\"\r\n optionLabel=\"value\" optionValue=\"key\" [filter]=\"true\"\r\n filterBy=\"value\" [showClear]=\"true\" placeholder=\"{{'shared_reporting_select_form' | localize}}\"\r\n [disabled]=\"true\">\r\n </p-dropdown> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <p-toolbar styleClass=\"mb-4 gap-2\">\r\n <ng-template pTemplate=\"left\">\r\n <Tsi-Button [text]=\"'shared_reporting_add_report' | localize\"\r\n icon=\"p-button-icon p-button-icon-left pi pi-plus\"\r\n styleClass=\"p-element p-button-success mr-2 p-button p-component ng-star-inserted p-button-label\"\r\n (click)=\"openModal()\"></Tsi-Button>\r\n </ng-template>\r\n <ng-template pTemplate=\"right\">\r\n <p-fileUpload #fileUpload name=\"demo[]\" (onBeforeUpload)=\"onImportFile($event)\"\r\n (onSelect)=\"onFileSelected($event)\" (onClear)=\"onClear($event)\" (onRemove)=\"onRemove($event)\"\r\n [multiple]=\"false\" accept=\"application/json\" [maxFileSize]=\"1000000\"\r\n [invalidFileSizeMessageSummary]=\"'shared_file_upload_invalid_file_size_message_summary' | localize\"\r\n [invalidFileSizeMessageDetail]=\"'shared_file_upload_invalid_file_size_message_detail' | localize\"\r\n [invalidFileTypeMessageSummary]=\"'shared_file_upload_invalid_file_type_message_summary' | localize\"\r\n [invalidFileLimitMessageDetail]=\"'shared_file_upload_invalid_file_limit_message_detail' | localize\"\r\n [invalidFileLimitMessageSummary]=\"'shared_file_upload_invalid_file_limit_message_summary' | localize\"\r\n [invalidFileTypeMessageDetail]=\"'shared_file_upload_invalid_file_type_message_detail' | localize\"\r\n [chooseIcon]=\"'pi pi-paperclip'\" cancelStyleClass=\"p-button-secondary\" uploadStyleClass=\"p-button-help\"\r\n removeStyleClass=\"p-button-danger\" [chooseLabel]=\"'shared_reporting_choose_report_file' | localize\"\r\n [uploadLabel]=\"'shared_reporting_import_report' | localize\"\r\n [cancelLabel]=\"'shared_reporting_cancel_choose_report_file' | localize\">\r\n <ng-template *ngIf=\"toUploadFileData\" pTemplate=\"fileupload-content\">\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n </p-toolbar>\r\n\r\n <tsi-view-grid #viewGrid [header]=\"'shared_execute_import_model_import_export' |localize\"\r\n [searchFields]=\"searchFields\" [showConsultButton]=\"false\" [getDataFromApi]=\"true\"\r\n [crudService]=\"modeleImportService\" (buttonColumnClicked)=\"buttonClicked($event)\"\r\n [formName]=\"'app-manage-import-export'\" [columns]=\"columns\" key=\"uid\">\r\n </tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_execute_import_model_import_export_default' | localize\" class=\"pt-3 px-2\">\r\n <div class=\"grid\">\r\n <tsi-view-grid class=\"col-12\" [header]=\"'shared_execute_import_model_import_export_default' |localize\"\r\n [columns]=\"columnsJson\" [getDataFromApi]=\"false\" [gridData]=\"gridData\" [key]=\"key\"\r\n [formName]=\"'modele-import-par-default'\"\r\n (buttonColumnClicked)=\"handleButtonColumnExecuteClicked($event)\"></tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_execute_import_history' | localize\" class=\"pt-3 px-2\">\r\n <div class=\"grid\">\r\n <tsi-view-grid class=\"col-12\" [header]=\"'shared_execute_import_history' |localize\" [columns]=\"columnsHistory\"\r\n [getDataFromApi]=\"false\" [gridData]=\"historyGridData\" [key]=\"importHistoryKey\"\r\n [formName]=\"'modele-import-par-default'\"\r\n (buttonColumnClicked)=\"handleButtonColumnExecuteClicked($event)\"></tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_execute_import_without_model' | localize\" class=\"pt-3 px-2\">\r\n <div *busy=\"isloading\"></div>\r\n <ng-template pTemplate=\"body\">\r\n <p-fileUpload #importFileToReportFileUpload name=\"importFileToReport\" [multiple]=\"false\"\r\n (onSelect)=\"onImportFileWithoutModel_FileSelected($event)\" (onClear)=\"onImportFileWithoutModel_Clear($event)\"\r\n (onBeforeUpload)=\"onImportFileWithoutModel_ImportFile($event)\"\r\n (onRemove)=\"onImportFileWithoutModel_Remove($event)\" accept=\".xls,.xlsx\" [maxFileSize]=\"10000000\"\r\n [invalidFileSizeMessageSummary]=\"'shared_file_upload_invalid_file_size_message_summary' | localize\"\r\n [invalidFileSizeMessageDetail]=\"'shared_file_upload_invalid_file_size_message_detail' | localize\"\r\n [invalidFileTypeMessageSummary]=\"'shared_file_upload_invalid_file_type_message_summary' | localize\"\r\n [invalidFileLimitMessageDetail]=\"'shared_file_upload_invalid_file_limit_message_detail' | localize\"\r\n [invalidFileLimitMessageSummary]=\"'shared_file_upload_invalid_file_limit_message_summary' | localize\"\r\n [invalidFileTypeMessageDetail]=\"'shared_file_upload_invalid_file_type_message_detail' | localize\"\r\n [chooseIcon]=\"'pi pi-paperclip'\" cancelStyleClass=\"p-button-secondary\" uploadStyleClass=\"p-button-help\"\r\n removeStyleClass=\"p-button-danger\" [chooseLabel]=\"'shared_reporting_choose_report_file' | localize\"\r\n [uploadLabel]=\"'shared_reporting_import_report' | localize\"\r\n [cancelLabel]=\"'shared_reporting_cancel_choose_report_file' | localize\">\r\n <ng-template pTemplate=\"fileupload-content\">\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_import_result_header' | localize\" class=\"pt-3 px-2\">\r\n\r\n <div class=\"p-1\">\r\n <Tsi-Button (onClick)=\"getImportResult()\"\r\n styleClass=\"p-element p-button-text p-button-raised p-button-rounded mr-2 p-button p-component p-button-icon-only\"\r\n [tooltipText]=\"'shared_import_export_refresh'\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n icon=\"p-button-icon pi pi-refresh\" class=\"p-button-text p-button-raised p-button-rounded mr-2\"></Tsi-Button>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <tsi-view-grid class=\"col-12\" [header]=\"'shared_import_result_header' |localize\" [columns]=\"importResultsColumns\"\r\n [getDataFromApi]=\"false\" [gridData]=\"importResultData\" [key]=\"'uid'\" [formName]=\"'modele-import-result-import'\"\r\n (buttonColumnClicked)=\"handleConsultImportResultButtonClicked($event)\"></tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n</p-tabView>\r\n\r\n<div class=\"p-1\">\r\n <Tsi-Button\r\n styleClass=\"p-element p-button-text p-button-raised p-button-rounded mr-2 p-button p-component p-button-icon-only\"\r\n [tooltipText]=\"'shared_import_export_refresh'\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n icon=\"p-button-icon pi pi-refresh\" (onClick)=\"refreshImportExportData()\" class=\"p-button-text p-button-raised p-button-rounded mr-2\"></Tsi-Button>\r\n</div>\r\n\r\n<!-- dialog to import file to report -->\r\n<p-dialog header=\"{{'shared_reporting_select_file_to_import_into_report' | localize}}\"\r\n [(visible)]=\"isImportFileToExecuteVisible\" [style]=\"{width: '50vw'}\">\r\n <!-- <Tsi-Modal-Header (onCloseClick)=\"onImportFileToReportModalCancelClick()\" [inputTitle]=\"'shared_reporting_select_file_to_import_into_report'\"></Tsi-Modal-Header> -->\r\n\r\n <ng-template pTemplate=\"body\">\r\n <p-fileUpload #importFileToReportFileUpload name=\"importFileToReport\" [multiple]=\"false\"\r\n (onSelect)=\"onImportFileToExecute_FileSelected($event)\" (onClear)=\"onImportFileToExecute_Clear($event)\"\r\n (onBeforeUpload)=\"onImportFileToExecute_ImportFile($event)\" (onRemove)=\"onImportFileToExecute_Remove($event)\"\r\n accept=\".xls,.xlsx\" [maxFileSize]=\"10000000\"\r\n [invalidFileSizeMessageSummary]=\"'shared_file_upload_invalid_file_size_message_summary' | localize\"\r\n [invalidFileSizeMessageDetail]=\"'shared_file_upload_invalid_file_size_message_detail' | localize\"\r\n [invalidFileTypeMessageSummary]=\"'shared_file_upload_invalid_file_type_message_summary' | localize\"\r\n [invalidFileLimitMessageDetail]=\"'shared_file_upload_invalid_file_limit_message_detail' | localize\"\r\n [invalidFileLimitMessageSummary]=\"'shared_file_upload_invalid_file_limit_message_summary' | localize\"\r\n [invalidFileTypeMessageDetail]=\"'shared_file_upload_invalid_file_type_message_detail' | localize\"\r\n [chooseIcon]=\"'pi pi-paperclip'\" cancelStyleClass=\"p-button-secondary\" uploadStyleClass=\"p-button-help\"\r\n removeStyleClass=\"p-button-danger\" [chooseLabel]=\"'shared_reporting_choose_report_file' | localize\"\r\n [uploadLabel]=\"'shared_reporting_import_report' | localize\"\r\n [cancelLabel]=\"'shared_reporting_cancel_choose_report_file' | localize\">\r\n <ng-template pTemplate=\"fileupload-content\">\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n\r\n\r\n <!-- <Tsi-Modal-Footer (onCancelClick)=\"onImportFileToReportModalCancelClick()\"\r\n (onSaveClick)=\"onImportFileToReportModalSaveClick()\"\r\n [saveDisabled]=\"!toUploadToUpdateReportFileData\"></Tsi-Modal-Footer> -->\r\n\r\n</p-dialog>", styles: ["::ng-deep .p-fileupload-choose input{display:none!important}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i5.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass", "ariaLabelledBy"] }, { kind: "component", type: i6.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: i7.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i8.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "component", type: i9.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i10.TsiViewGridComponent, selector: "tsi-view-grid", inputs: ["columns", "gridConfiguration", "viewComponent", "crudService", "header", "modalSize", "showConsultButton", "showSearchField", "searchFields", "formEndpoint", "formName", "id", "showImportExportButton", "targetBusinessClass", "getDataFromApi", "gridData", "isSearchButtonDisabled", "selectKeyOnly", "selectionMode", "selectedItems", "key", "showGlobalSearch", "showExportButton", "showCalenderView", "calenderSchema", "showHeaderFilters", "showFilterButton", "selectAll", "checkedByField", "searchOnInit"], outputs: ["summariesChange", "selectedItemsChange", "buttonColumnClicked", "searchFieldsValueChanged", "getAllPagedResultChanged"] }, { kind: "component", type: i11.TsiButtonComponent, selector: "Tsi-Button", inputs: ["disabled", "text", "style", "tooltipText", "tooltipPosition", "buttonType", "icon", "styleClass", "iconSrc", "id", "iconWidth", "iconClass"], outputs: ["onClick", "rightClick"] }, { kind: "directive", type: i12.BusyDirective, selector: "[busy]", inputs: ["busy"] }, { kind: "pipe", type: i13.LocalizePipe, name: "localize" }] }); }
482
481
  }
483
482
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ManageImportExportComponent, decorators: [{
484
483
  type: Component,
485
- args: [{ selector: 'app-manage-import-export', providers: [...appProviders], template: "<p-tabView>\r\n <p-tabPanel [header]=\"'shared_execute_import_model_import_export' | localize\" class=\"pt-3 px-2\">\r\n <div class=\"card\">\r\n <div *busy=\"isloading\"></div>\r\n <div class=\"grid\">\r\n <div class=\"grid col-10\">\r\n <div>\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'shared_reporting_form'\">\r\n </Tsi-Label>\r\n <!-- <p-dropdown class=\"col-10 tsi-component\" class=\"tsi-component\" styleClass=\"tsi-component\" appendTp=\"body\"\r\n optionLabel=\"value\" optionValue=\"key\" [filter]=\"true\"\r\n filterBy=\"value\" [showClear]=\"true\" placeholder=\"{{'shared_reporting_select_form' | localize}}\"\r\n [disabled]=\"true\">\r\n </p-dropdown> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <p-toolbar styleClass=\"mb-4 gap-2\">\r\n <ng-template pTemplate=\"left\">\r\n <Tsi-Button [text]=\"'shared_reporting_add_report' | localize\"\r\n icon=\"p-button-icon p-button-icon-left pi pi-plus\"\r\n styleClass=\"p-element p-button-success mr-2 p-button p-component ng-star-inserted p-button-label\"\r\n (click)=\"openModal()\"></Tsi-Button>\r\n </ng-template>\r\n <ng-template pTemplate=\"right\">\r\n <p-fileUpload #fileUpload name=\"demo[]\" (onBeforeUpload)=\"onImportFile($event)\"\r\n (onSelect)=\"onFileSelected($event)\" (onClear)=\"onClear($event)\" (onRemove)=\"onRemove($event)\"\r\n [multiple]=\"false\" accept=\"application/json\" [maxFileSize]=\"1000000\"\r\n [invalidFileSizeMessageSummary]=\"'shared_file_upload_invalid_file_size_message_summary' | localize\"\r\n [invalidFileSizeMessageDetail]=\"'shared_file_upload_invalid_file_size_message_detail' | localize\"\r\n [invalidFileTypeMessageSummary]=\"'shared_file_upload_invalid_file_type_message_summary' | localize\"\r\n [invalidFileLimitMessageDetail]=\"'shared_file_upload_invalid_file_limit_message_detail' | localize\"\r\n [invalidFileLimitMessageSummary]=\"'shared_file_upload_invalid_file_limit_message_summary' | localize\"\r\n [invalidFileTypeMessageDetail]=\"'shared_file_upload_invalid_file_type_message_detail' | localize\"\r\n [chooseIcon]=\"'pi pi-paperclip'\" cancelStyleClass=\"p-button-secondary\" uploadStyleClass=\"p-button-help\"\r\n removeStyleClass=\"p-button-danger\" [chooseLabel]=\"'shared_reporting_choose_report_file' | localize\"\r\n [uploadLabel]=\"'shared_reporting_import_report' | localize\"\r\n [cancelLabel]=\"'shared_reporting_cancel_choose_report_file' | localize\">\r\n <ng-template *ngIf=\"toUploadFileData\" pTemplate=\"fileupload-content\">\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n </p-toolbar>\r\n\r\n <tsi-view-grid #viewGrid [header]=\"'shared_execute_import_model_import_export' |localize\"\r\n [searchFields]=\"searchFields\" [showConsultButton]=\"false\" [getDataFromApi]=\"true\"\r\n [crudService]=\"modeleImportService\" (buttonColumnClicked)=\"buttonClicked($event)\"\r\n [formName]=\"'app-manage-import-export'\" [columns]=\"columns\" key=\"uid\">\r\n </tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_execute_import_model_import_export_default' | localize\" class=\"pt-3 px-2\">\r\n <div class=\"grid\">\r\n <tsi-view-grid class=\"col-12\" [header]=\"'shared_execute_import_model_import_export_default' |localize\"\r\n [columns]=\"columnsJson\" [getDataFromApi]=\"false\" [gridData]=\"gridData\" [key]=\"key\"\r\n [formName]=\"'modele-import-par-default'\"\r\n (buttonColumnClicked)=\"handleButtonColumnExecuteClicked($event)\"></tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_execute_import_history' | localize\" class=\"pt-3 px-2\">\r\n <div class=\"grid\">\r\n <tsi-view-grid class=\"col-12\" [header]=\"'shared_execute_import_history' |localize\" [columns]=\"columnsHistory\"\r\n [getDataFromApi]=\"false\" [gridData]=\"historyGridData\" [key]=\"importHistoryKey\"\r\n [formName]=\"'modele-import-par-default'\"\r\n (buttonColumnClicked)=\"handleButtonColumnExecuteClicked($event)\"></tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_execute_import_without_model' | localize\" class=\"pt-3 px-2\">\r\n <ng-template pTemplate=\"body\">\r\n <p-fileUpload #importFileToReportFileUpload name=\"importFileToReport\" [multiple]=\"false\"\r\n (onSelect)=\"onImportFileWithoutModel_FileSelected($event)\" (onClear)=\"onImportFileWithoutModel_Clear($event)\"\r\n (onBeforeUpload)=\"onImportFileWithoutModel_ImportFile($event)\"\r\n (onRemove)=\"onImportFileWithoutModel_Remove($event)\" accept=\".xls,.xlsx\" [maxFileSize]=\"10000000\"\r\n [invalidFileSizeMessageSummary]=\"'shared_file_upload_invalid_file_size_message_summary' | localize\"\r\n [invalidFileSizeMessageDetail]=\"'shared_file_upload_invalid_file_size_message_detail' | localize\"\r\n [invalidFileTypeMessageSummary]=\"'shared_file_upload_invalid_file_type_message_summary' | localize\"\r\n [invalidFileLimitMessageDetail]=\"'shared_file_upload_invalid_file_limit_message_detail' | localize\"\r\n [invalidFileLimitMessageSummary]=\"'shared_file_upload_invalid_file_limit_message_summary' | localize\"\r\n [invalidFileTypeMessageDetail]=\"'shared_file_upload_invalid_file_type_message_detail' | localize\"\r\n [chooseIcon]=\"'pi pi-paperclip'\" cancelStyleClass=\"p-button-secondary\" uploadStyleClass=\"p-button-help\"\r\n removeStyleClass=\"p-button-danger\" [chooseLabel]=\"'shared_reporting_choose_report_file' | localize\"\r\n [uploadLabel]=\"'shared_reporting_import_report' | localize\"\r\n [cancelLabel]=\"'shared_reporting_cancel_choose_report_file' | localize\">\r\n <ng-template pTemplate=\"fileupload-content\">\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_import_result_header' | localize\" class=\"pt-3 px-2\">\r\n\r\n <div class=\"p-1\">\r\n <Tsi-Button (onClick)=\"getImportResult()\"\r\n styleClass=\"p-element p-button-text p-button-raised p-button-rounded mr-2 p-button p-component p-button-icon-only\"\r\n [tooltipText]=\"'shared_import_export_refresh'\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n icon=\"p-button-icon pi pi-refresh\" class=\"p-button-text p-button-raised p-button-rounded mr-2\"></Tsi-Button>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <tsi-view-grid class=\"col-12\" [header]=\"'shared_import_result_header' |localize\" [columns]=\"importResultsColumns\"\r\n [getDataFromApi]=\"false\" [gridData]=\"importResultData\" [key]=\"'uid'\" [formName]=\"'modele-import-result-import'\"\r\n (buttonColumnClicked)=\"handleConsultImportResultButtonClicked($event)\"></tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n</p-tabView>\r\n\r\n<div class=\"p-1\">\r\n <Tsi-Button\r\n styleClass=\"p-element p-button-text p-button-raised p-button-rounded mr-2 p-button p-component p-button-icon-only\"\r\n [tooltipText]=\"'shared_import_export_refresh'\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n icon=\"p-button-icon pi pi-refresh\" class=\"p-button-text p-button-raised p-button-rounded mr-2\"></Tsi-Button>\r\n</div>\r\n\r\n<!-- dialog to import file to report -->\r\n<p-dialog header=\"{{'shared_reporting_select_file_to_import_into_report' | localize}}\"\r\n [(visible)]=\"isImportFileToExecuteVisible\" [style]=\"{width: '50vw'}\">\r\n <!-- <Tsi-Modal-Header (onCloseClick)=\"onImportFileToReportModalCancelClick()\" [inputTitle]=\"'shared_reporting_select_file_to_import_into_report'\"></Tsi-Modal-Header> -->\r\n\r\n <ng-template pTemplate=\"body\">\r\n <p-fileUpload #importFileToReportFileUpload name=\"importFileToReport\" [multiple]=\"false\"\r\n (onSelect)=\"onImportFileToExecute_FileSelected($event)\" (onClear)=\"onImportFileToExecute_Clear($event)\"\r\n (onBeforeUpload)=\"onImportFileToExecute_ImportFile($event)\" (onRemove)=\"onImportFileToExecute_Remove($event)\"\r\n accept=\".xls,.xlsx\" [maxFileSize]=\"10000000\"\r\n [invalidFileSizeMessageSummary]=\"'shared_file_upload_invalid_file_size_message_summary' | localize\"\r\n [invalidFileSizeMessageDetail]=\"'shared_file_upload_invalid_file_size_message_detail' | localize\"\r\n [invalidFileTypeMessageSummary]=\"'shared_file_upload_invalid_file_type_message_summary' | localize\"\r\n [invalidFileLimitMessageDetail]=\"'shared_file_upload_invalid_file_limit_message_detail' | localize\"\r\n [invalidFileLimitMessageSummary]=\"'shared_file_upload_invalid_file_limit_message_summary' | localize\"\r\n [invalidFileTypeMessageDetail]=\"'shared_file_upload_invalid_file_type_message_detail' | localize\"\r\n [chooseIcon]=\"'pi pi-paperclip'\" cancelStyleClass=\"p-button-secondary\" uploadStyleClass=\"p-button-help\"\r\n removeStyleClass=\"p-button-danger\" [chooseLabel]=\"'shared_reporting_choose_report_file' | localize\"\r\n [uploadLabel]=\"'shared_reporting_import_report' | localize\"\r\n [cancelLabel]=\"'shared_reporting_cancel_choose_report_file' | localize\">\r\n <ng-template pTemplate=\"fileupload-content\">\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n\r\n\r\n <!-- <Tsi-Modal-Footer (onCancelClick)=\"onImportFileToReportModalCancelClick()\"\r\n (onSaveClick)=\"onImportFileToReportModalSaveClick()\"\r\n [saveDisabled]=\"!toUploadToUpdateReportFileData\"></Tsi-Modal-Footer> -->\r\n\r\n</p-dialog>", styles: ["::ng-deep .p-fileupload-choose input{display:none!important}\n"] }]
484
+ args: [{ selector: 'app-manage-import-export', providers: [...appProviders], template: "<p-tabView>\r\n <p-tabPanel [header]=\"'shared_execute_import_model_import_export' | localize\" class=\"pt-3 px-2\">\r\n <div class=\"card\">\r\n <div *busy=\"isloading\"></div>\r\n <div class=\"grid\">\r\n <div class=\"grid col-10\">\r\n <div>\r\n <Tsi-Label class=\"col-2\" [labelValue]=\"'shared_reporting_form'\">\r\n </Tsi-Label>\r\n <!-- <p-dropdown class=\"col-10 tsi-component\" class=\"tsi-component\" styleClass=\"tsi-component\" appendTp=\"body\"\r\n optionLabel=\"value\" optionValue=\"key\" [filter]=\"true\"\r\n filterBy=\"value\" [showClear]=\"true\" placeholder=\"{{'shared_reporting_select_form' | localize}}\"\r\n [disabled]=\"true\">\r\n </p-dropdown> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <p-toolbar styleClass=\"mb-4 gap-2\">\r\n <ng-template pTemplate=\"left\">\r\n <Tsi-Button [text]=\"'shared_reporting_add_report' | localize\"\r\n icon=\"p-button-icon p-button-icon-left pi pi-plus\"\r\n styleClass=\"p-element p-button-success mr-2 p-button p-component ng-star-inserted p-button-label\"\r\n (click)=\"openModal()\"></Tsi-Button>\r\n </ng-template>\r\n <ng-template pTemplate=\"right\">\r\n <p-fileUpload #fileUpload name=\"demo[]\" (onBeforeUpload)=\"onImportFile($event)\"\r\n (onSelect)=\"onFileSelected($event)\" (onClear)=\"onClear($event)\" (onRemove)=\"onRemove($event)\"\r\n [multiple]=\"false\" accept=\"application/json\" [maxFileSize]=\"1000000\"\r\n [invalidFileSizeMessageSummary]=\"'shared_file_upload_invalid_file_size_message_summary' | localize\"\r\n [invalidFileSizeMessageDetail]=\"'shared_file_upload_invalid_file_size_message_detail' | localize\"\r\n [invalidFileTypeMessageSummary]=\"'shared_file_upload_invalid_file_type_message_summary' | localize\"\r\n [invalidFileLimitMessageDetail]=\"'shared_file_upload_invalid_file_limit_message_detail' | localize\"\r\n [invalidFileLimitMessageSummary]=\"'shared_file_upload_invalid_file_limit_message_summary' | localize\"\r\n [invalidFileTypeMessageDetail]=\"'shared_file_upload_invalid_file_type_message_detail' | localize\"\r\n [chooseIcon]=\"'pi pi-paperclip'\" cancelStyleClass=\"p-button-secondary\" uploadStyleClass=\"p-button-help\"\r\n removeStyleClass=\"p-button-danger\" [chooseLabel]=\"'shared_reporting_choose_report_file' | localize\"\r\n [uploadLabel]=\"'shared_reporting_import_report' | localize\"\r\n [cancelLabel]=\"'shared_reporting_cancel_choose_report_file' | localize\">\r\n <ng-template *ngIf=\"toUploadFileData\" pTemplate=\"fileupload-content\">\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n </p-toolbar>\r\n\r\n <tsi-view-grid #viewGrid [header]=\"'shared_execute_import_model_import_export' |localize\"\r\n [searchFields]=\"searchFields\" [showConsultButton]=\"false\" [getDataFromApi]=\"true\"\r\n [crudService]=\"modeleImportService\" (buttonColumnClicked)=\"buttonClicked($event)\"\r\n [formName]=\"'app-manage-import-export'\" [columns]=\"columns\" key=\"uid\">\r\n </tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_execute_import_model_import_export_default' | localize\" class=\"pt-3 px-2\">\r\n <div class=\"grid\">\r\n <tsi-view-grid class=\"col-12\" [header]=\"'shared_execute_import_model_import_export_default' |localize\"\r\n [columns]=\"columnsJson\" [getDataFromApi]=\"false\" [gridData]=\"gridData\" [key]=\"key\"\r\n [formName]=\"'modele-import-par-default'\"\r\n (buttonColumnClicked)=\"handleButtonColumnExecuteClicked($event)\"></tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_execute_import_history' | localize\" class=\"pt-3 px-2\">\r\n <div class=\"grid\">\r\n <tsi-view-grid class=\"col-12\" [header]=\"'shared_execute_import_history' |localize\" [columns]=\"columnsHistory\"\r\n [getDataFromApi]=\"false\" [gridData]=\"historyGridData\" [key]=\"importHistoryKey\"\r\n [formName]=\"'modele-import-par-default'\"\r\n (buttonColumnClicked)=\"handleButtonColumnExecuteClicked($event)\"></tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_execute_import_without_model' | localize\" class=\"pt-3 px-2\">\r\n <div *busy=\"isloading\"></div>\r\n <ng-template pTemplate=\"body\">\r\n <p-fileUpload #importFileToReportFileUpload name=\"importFileToReport\" [multiple]=\"false\"\r\n (onSelect)=\"onImportFileWithoutModel_FileSelected($event)\" (onClear)=\"onImportFileWithoutModel_Clear($event)\"\r\n (onBeforeUpload)=\"onImportFileWithoutModel_ImportFile($event)\"\r\n (onRemove)=\"onImportFileWithoutModel_Remove($event)\" accept=\".xls,.xlsx\" [maxFileSize]=\"10000000\"\r\n [invalidFileSizeMessageSummary]=\"'shared_file_upload_invalid_file_size_message_summary' | localize\"\r\n [invalidFileSizeMessageDetail]=\"'shared_file_upload_invalid_file_size_message_detail' | localize\"\r\n [invalidFileTypeMessageSummary]=\"'shared_file_upload_invalid_file_type_message_summary' | localize\"\r\n [invalidFileLimitMessageDetail]=\"'shared_file_upload_invalid_file_limit_message_detail' | localize\"\r\n [invalidFileLimitMessageSummary]=\"'shared_file_upload_invalid_file_limit_message_summary' | localize\"\r\n [invalidFileTypeMessageDetail]=\"'shared_file_upload_invalid_file_type_message_detail' | localize\"\r\n [chooseIcon]=\"'pi pi-paperclip'\" cancelStyleClass=\"p-button-secondary\" uploadStyleClass=\"p-button-help\"\r\n removeStyleClass=\"p-button-danger\" [chooseLabel]=\"'shared_reporting_choose_report_file' | localize\"\r\n [uploadLabel]=\"'shared_reporting_import_report' | localize\"\r\n [cancelLabel]=\"'shared_reporting_cancel_choose_report_file' | localize\">\r\n <ng-template pTemplate=\"fileupload-content\">\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel [header]=\"'shared_import_result_header' | localize\" class=\"pt-3 px-2\">\r\n\r\n <div class=\"p-1\">\r\n <Tsi-Button (onClick)=\"getImportResult()\"\r\n styleClass=\"p-element p-button-text p-button-raised p-button-rounded mr-2 p-button p-component p-button-icon-only\"\r\n [tooltipText]=\"'shared_import_export_refresh'\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n icon=\"p-button-icon pi pi-refresh\" class=\"p-button-text p-button-raised p-button-rounded mr-2\"></Tsi-Button>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <tsi-view-grid class=\"col-12\" [header]=\"'shared_import_result_header' |localize\" [columns]=\"importResultsColumns\"\r\n [getDataFromApi]=\"false\" [gridData]=\"importResultData\" [key]=\"'uid'\" [formName]=\"'modele-import-result-import'\"\r\n (buttonColumnClicked)=\"handleConsultImportResultButtonClicked($event)\"></tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n\r\n</p-tabView>\r\n\r\n<div class=\"p-1\">\r\n <Tsi-Button\r\n styleClass=\"p-element p-button-text p-button-raised p-button-rounded mr-2 p-button p-component p-button-icon-only\"\r\n [tooltipText]=\"'shared_import_export_refresh'\" [tooltipPosition]=\"tooltipPosition.Top\"\r\n icon=\"p-button-icon pi pi-refresh\" (onClick)=\"refreshImportExportData()\" class=\"p-button-text p-button-raised p-button-rounded mr-2\"></Tsi-Button>\r\n</div>\r\n\r\n<!-- dialog to import file to report -->\r\n<p-dialog header=\"{{'shared_reporting_select_file_to_import_into_report' | localize}}\"\r\n [(visible)]=\"isImportFileToExecuteVisible\" [style]=\"{width: '50vw'}\">\r\n <!-- <Tsi-Modal-Header (onCloseClick)=\"onImportFileToReportModalCancelClick()\" [inputTitle]=\"'shared_reporting_select_file_to_import_into_report'\"></Tsi-Modal-Header> -->\r\n\r\n <ng-template pTemplate=\"body\">\r\n <p-fileUpload #importFileToReportFileUpload name=\"importFileToReport\" [multiple]=\"false\"\r\n (onSelect)=\"onImportFileToExecute_FileSelected($event)\" (onClear)=\"onImportFileToExecute_Clear($event)\"\r\n (onBeforeUpload)=\"onImportFileToExecute_ImportFile($event)\" (onRemove)=\"onImportFileToExecute_Remove($event)\"\r\n accept=\".xls,.xlsx\" [maxFileSize]=\"10000000\"\r\n [invalidFileSizeMessageSummary]=\"'shared_file_upload_invalid_file_size_message_summary' | localize\"\r\n [invalidFileSizeMessageDetail]=\"'shared_file_upload_invalid_file_size_message_detail' | localize\"\r\n [invalidFileTypeMessageSummary]=\"'shared_file_upload_invalid_file_type_message_summary' | localize\"\r\n [invalidFileLimitMessageDetail]=\"'shared_file_upload_invalid_file_limit_message_detail' | localize\"\r\n [invalidFileLimitMessageSummary]=\"'shared_file_upload_invalid_file_limit_message_summary' | localize\"\r\n [invalidFileTypeMessageDetail]=\"'shared_file_upload_invalid_file_type_message_detail' | localize\"\r\n [chooseIcon]=\"'pi pi-paperclip'\" cancelStyleClass=\"p-button-secondary\" uploadStyleClass=\"p-button-help\"\r\n removeStyleClass=\"p-button-danger\" [chooseLabel]=\"'shared_reporting_choose_report_file' | localize\"\r\n [uploadLabel]=\"'shared_reporting_import_report' | localize\"\r\n [cancelLabel]=\"'shared_reporting_cancel_choose_report_file' | localize\">\r\n <ng-template pTemplate=\"fileupload-content\">\r\n </ng-template>\r\n </p-fileUpload>\r\n </ng-template>\r\n\r\n\r\n <!-- <Tsi-Modal-Footer (onCancelClick)=\"onImportFileToReportModalCancelClick()\"\r\n (onSaveClick)=\"onImportFileToReportModalSaveClick()\"\r\n [saveDisabled]=\"!toUploadToUpdateReportFileData\"></Tsi-Modal-Footer> -->\r\n\r\n</p-dialog>", styles: ["::ng-deep .p-fileupload-choose input{display:none!important}\n"] }]
486
485
  }], ctorParameters: () => [{ type: i1.ModeleImportService }, { type: i1.TsiConfirmationService }, { type: i1.TsiNotificationService }, { type: i2.DynamicDialogConfig }, { type: i1.TsiModalService }, { type: i1.ErrorResponseManagerService }, { type: i2.DynamicDialogRef }], propDecorators: { gridComponent: [{
487
486
  type: ViewChild,
488
487
  args: [TsiViewGridComponent]
@@ -496,4 +495,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
496
495
  type: ViewChild,
497
496
  args: ['importFileToExecuteFileUpload']
498
497
  }] } });
499
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLWltcG9ydC1leHBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL21hbmFnZS1pbXBvcnQtZXhwb3J0L21hbmFnZS1pbXBvcnQtZXhwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9tYW5hZ2UtaW1wb3J0LWV4cG9ydC9tYW5hZ2UtaW1wb3J0LWV4cG9ydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUMzSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWxGLE9BQU8sRUFBRSxvQkFBb0IsRUFBNkIsTUFBTSxjQUFjLENBQUM7QUFFL0UsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDaEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFB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QUMsZUFBZSxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFBO3dCQUN4SCxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLENBQUM7b0JBQ3pFLENBQUMsRUFDRCxLQUFLLENBQUMsRUFBRTt3QkFDTixPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUNoRCxDQUFDLENBQ0YsQ0FBQztnQkFDTixDQUFDO1lBQ0gsQ0FBQyxDQUNGLENBQUM7UUFFSixDQUFDO0lBQ0gsQ0FBQzsrR0FwaEJVLDJCQUEyQjttR0FBM0IsMkJBQTJCLG1EQUYzQixDQUFDLEdBQUcsWUFBWSxDQUFDLHlFQUlqQixvQkFBb0IscVlDNUJqQyxzclRBb0pXOzs0RkQxSEUsMkJBQTJCO2tCQVB2QyxTQUFTOytCQUNFLDBCQUEwQixhQUl6QixDQUFDLEdBQUcsWUFBWSxDQUFDOzJTQUlLLGFBQWE7c0JBQTdDLFNBQVM7dUJBQUMsb0JBQW9CO2dCQUNOLFlBQVk7c0JBQXBDLFNBQVM7dUJBQUMsWUFBWTtnQkFDQSxpQkFBaUI7c0JBQXZDLFNBQVM7dUJBQUMsVUFBVTtnQkFnRHVCLDZCQUE2QjtzQkFBeEUsU0FBUzt1QkFBQywrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZCB9IGZyb20gJ3ByaW1lbmcvZmlsZXVwbG9hZCc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFsZXJ0SW1wb3J0TWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4uL2FsZXJ0LWltcG9ydC1tZXNzYWdlL2FsZXJ0LWltcG9ydC1tZXNzYWdlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENyZWF0ZU9yRWRpdE1vZGVsZUltcG9ydENvbXBvbmVudCB9IGZyb20gJy4uL2NyZWF0ZS1vci1lZGl0LW1vZGVsZS1pbXBvcnQvY3JlYXRlLW9yLWVkaXQtbW9kZWxlLWltcG9ydC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUc2lWaWV3R3JpZENvbXBvbmVudCB9IGZyb20gJy4uL291dHB1dC1jb21wb25lbnRzL3RzaS12aWV3LWdyaWQvdHNpLXZpZXctZ3JpZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuLi8uLi9lbnVtcy90b29sdGlwUG9zaXRpb24uZW51bSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25LZXlzIH0gZnJvbSAnLi4vLi4vY29uc3RzL2xvY2FsaXphdGlvbi1rZXknO1xyXG5pbXBvcnQgeyBJbnB1dFR5cGVzLCBGaWx0ZXJPcGVyYXRvclR5cGUsIE1vZGVzLCBEaXNwbGF5VHlwZXMgfSBmcm9tICcuLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IEdyaWRDb2x1bW4sIEJ1dHRvbkNsaWNrUmVzdWx0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEV4ZWN1dGVJbXBvcnRSZXF1ZXN0LCBJbXBvcnRSZXN1bHQsIFNlYXJjaEZpZWxkIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgTW9kZWxlSW1wb3J0U2VydmljZSwgVHNpQ29uZmlybWF0aW9uU2VydmljZSwgVHNpTm90aWZpY2F0aW9uU2VydmljZSwgRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLCBUc2lNZXNzYWdlU2VydmljZSwgVHNpTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBUc2lGb3JtQ29tcG9uZW50QmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3RzaS1iYXNlL2NvbXBvbmVudHMvdHNpLWZvcm0tYmFzZS90c2ktZm9ybS1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNlZ21lbnQgfSBmcm9tICcuLi8uLi9lbmQtcG9pbnRzJztcclxuaW1wb3J0IHsgYXBwUHJvdmlkZXJzIH0gZnJvbSAnLi4vLi4vY29uc3RzL2FwcC1wcm92aWRlcnMnO1xyXG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nQ29uZmlnLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1tYW5hZ2UtaW1wb3J0LWV4cG9ydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21hbmFnZS1pbXBvcnQtZXhwb3J0LmNvbXBvbmVudC5odG1sJyxcclxuICAvL2VuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbWFuYWdlLWltcG9ydC1leHBvcnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFsuLi5hcHBQcm92aWRlcnNdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYW5hZ2VJbXBvcnRFeHBvcnRDb21wb25lbnQgZXh0ZW5kcyBUc2lGb3JtQ29tcG9uZW50QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQFZpZXdDaGlsZChUc2lWaWV3R3JpZENvbXBvbmVudCkgZ3JpZENvbXBvbmVudCE6IFRzaVZpZXdHcmlkQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVVcGxvYWQnKSBmaWxlVXBsb2FkZXIhOiBGaWxlVXBsb2FkO1xyXG4gIEBWaWV3Q2hpbGQoXCJ2aWV3R3JpZFwiKSB2aWV3R3JpZENvbXBvbmVudD86IFRzaVZpZXdHcmlkQ29tcG9uZW50O1xyXG4gIHRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbjtcclxuXHJcbiAgdG9VcGxvYWRGaWxlRGF0YTogYW55O1xyXG4gIG9uUmVtb3ZlKCRldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnRvVXBsb2FkRmlsZURhdGEgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG4gIG9uQ2xlYXIoJGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMudG9VcGxvYWRGaWxlRGF0YSA9IHVuZGVmaW5lZDtcclxuICB9XHJcbiAgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgZmlsZTogRmlsZSA9IGV2ZW50LmN1cnJlbnRGaWxlc1swXTtcclxuICAgIHRoaXMudG9VcGxvYWRGaWxlRGF0YSA9IGZpbGU7XHJcbiAgfVxyXG4gIG9uSW1wb3J0RmlsZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UudXBsb2FkSnNvbkZpbGUodGhpcy50b1VwbG9hZEZpbGVEYXRhKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5lcnJvciA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2Vzcygnc2hhcmVkX2ltcG9ydE1vZGVsZV9qc29uX3VwbG9hZGVkX3N1Y2Nlc3NmdWxseScpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmdyaWRDb21wb25lbnQucmVmcmVzaCh0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIilcclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgIHRoaXMuZmlsZVVwbG9hZGVyLmNsZWFyKClcclxuICB9XHJcblxyXG4gIGNvbHVtbnNKc29uOiBBcnJheTxHcmlkQ29sdW1uPiA9IFtcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRNb2RlbGVfanNvbl9uYW1lXCIsXHJcbiAgICAgIGZpZWxkOiBcImpzb25GaWxlTmFtZVwiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6ICcnLFxyXG4gICAgICBmaWVsZDogJ2Zyb21Kc29uVG9EYXRhYmFzZScsXHJcbiAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICBidXR0b25JY29uOiAncGkgcGktYXJyb3ctY2lyY2xlLXVwJyxcclxuICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgcC1idXR0b24tc2Vjb25kYXJ5J1xyXG4gICAgfSxcclxuICBdO1xyXG4gIGtleTogc3RyaW5nID0gJ2pzb25GaWxlTmFtZSc7XHJcbiAgZ3JpZERhdGE6IGFueVxyXG5cclxuICBAVmlld0NoaWxkKCdpbXBvcnRGaWxlVG9FeGVjdXRlRmlsZVVwbG9hZCcpIGltcG9ydEZpbGVUb0V4ZWN1dGVGaWxlVXBsb2FkPzogRmlsZVVwbG9hZDtcclxuXHJcbiAgY29sdW1uczogYW55XHJcblxyXG4gIGlzSW1wb3J0RmlsZVRvRXhlY3V0ZVZpc2libGU6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIHRvVXBsb2FkVG9FeGVjdXRlRmlsZTogYW55ID0gdW5kZWZpbmVkXHJcbiAgdG9VcGxvYWRXaXRob3V0TW9kZWw6IGFueSA9IHVuZGVmaW5lZFxyXG4gIHRvSW1wb3J0TW9kZWxlVWlkPzogc3RyaW5nXHJcblxyXG4gIGNvbHVtbnNIaXN0b3J5OiBBcnJheTxHcmlkQ29sdW1uPiA9IFtcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRNb2RlbGVfY29kZV9pbXBvcnRcIixcclxuICAgICAgZmllbGQ6IFwiY29kZUltcG9ydFwiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydE1vZGVsZV9kYXRlX2ltcG9ydFwiLFxyXG4gICAgICBmaWVsZDogXCJkYXRlSW1wb3J0XCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0TW9kZWxlX25vbWJyZV9saWduZXNcIixcclxuICAgICAgZmllbGQ6IFwibm9tYnJlTGlnbmVzXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgIGZpZWxkOiAnZGVsZXRlRnJvbURhdGFiYXNlJyxcclxuICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgIGJ1dHRvbkljb246ICdwaSBwaS10cmFzaCcsXHJcbiAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXNlY29uZGFyeSdcclxuICAgIH0sXHJcbiAgXTtcclxuICBoaXN0b3J5R3JpZERhdGE6IGFueVxyXG4gIGltcG9ydEhpc3RvcnlLZXk6IHN0cmluZyA9ICdjb2RlSW1wb3J0JztcclxuXHJcbiAgaW1wb3J0UmVzdWx0RGF0YTogQXJyYXk8SW1wb3J0UmVzdWx0PiA9IFtdXHJcblxyXG4gIHNlYXJjaEZpZWxkczogQXJyYXk8U2VhcmNoRmllbGQ+ID0gW1xyXG4gIF1cclxuXHJcbiAgaW1wb3J0UmVzdWx0c0NvbHVtbnM6IEFycmF5PEdyaWRDb2x1bW4+ID0gW1xyXG4gICAge1xyXG4gICAgICBoZWFkZXI6ICcnLFxyXG4gICAgICBmaWVsZDogJ2NvbnN1bHREZXRhaWwnLFxyXG4gICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWV5ZScsXHJcbiAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXNlY29uZGFyeSdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0X3Jlc3VsdF9tb2RlbGVfaW1wb3J0X2xpYmVsbGVcIixcclxuICAgICAgZmllbGQ6IFwibW9kZWxlSW1wb3J0TGliZWxsZVwiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydF9yZXN1bHRfbW9kZWxlX3V0aWxpc2F0ZXVyXCIsXHJcbiAgICAgIGZpZWxkOiBcInVzZXJOYW1lXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0X3Jlc3VsdF9maWxlbmFtZVwiLFxyXG4gICAgICBmaWVsZDogXCJmaWxlTmFtZVwiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydF9yZXN1bHRfc3RhcnREYXRlXCIsXHJcbiAgICAgIGZpZWxkOiBcInN0YXJ0RGF0ZVwiLFxyXG4gICAgICB0eXBlOiBEaXNwbGF5VHlwZXMuREFURVRJTUVfRElTUExBWVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRfcmVzdWx0X2VuZF9kYXRlXCIsXHJcbiAgICAgIGZpZWxkOiBcImVuZERhdGVcIixcclxuICAgICAgdHlwZTogRGlzcGxheVR5cGVzLkRBVEVUSU1FX0RJU1BMQVlcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0X3Jlc3VsdF9zdGF0dXNcIixcclxuICAgICAgZmllbGQ6IFwic3RhdHVzXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0X3Jlc3VsdF9wcm9ncmVzc1wiLFxyXG4gICAgICBmaWVsZDogXCJwcm9ncmVzc1wiLFxyXG4gICAgICB0eXBlOiBEaXNwbGF5VHlwZXMuUkFURV9ESVNQTEFZXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydF9yZXN1bHRfdG90YWxfbGluZXNfbnVtYmVyXCIsXHJcbiAgICAgIGZpZWxkOiBcInRvdGFsTGluZXNOdW1iZXJcIixcclxuICAgICAgdHlwZTogRGlzcGxheVR5cGVzLklOVEVHRVJfRElTUExBWVxyXG4gICAgfVxyXG4gIF1cclxuXHJcbiAgcHJpdmF0ZSBfZGlhbG9nUmVmPzogRHluYW1pY0RpYWxvZ1JlZjtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIG1vZGVsZUltcG9ydFNlcnZpY2U6IE1vZGVsZUltcG9ydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IFRzaUNvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29uZmlnOiBEeW5hbWljRGlhbG9nQ29uZmlnLCBwcml2YXRlIF90c2lNb2RhbFNlcnZpY2U6IFRzaU1vZGFsU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZTogRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIHJlZj86IER5bmFtaWNEaWFsb2dSZWYpIHtcclxuICAgIHN1cGVyKHJlZiwgY29uZmlnKVxyXG4gICAgdGhpcy5zZWFyY2hGaWVsZHMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBJbnB1dFR5cGVzLlRFWFRfQk9YLFxyXG4gICAgICAgIGZpZWxkOiBcIkNsYXNzZVwiLFxyXG4gICAgICAgIGxhYmVsVmFsdWU6IFwiQ2xhc3NlXCIsXHJcbiAgICAgICAgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yVHlwZS5FUVVBTCxcclxuICAgICAgICBzdHlsZUNsYXNzOiAnY29sLTYnLFxyXG4gICAgICAgIGlucHV0U3R5bGVDbGFzczogJ2NvbC0zJyxcclxuICAgICAgICBsYWJlbFN0eWxlQ2xhc3M6ICdjb2wtMycsXHJcbiAgICAgICAgZGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuY29uZmlnPy5kYXRhPy5idXNpbmVzc0NsYXNzXHJcbiAgICAgIH1cclxuICAgIF1cclxuICAgIHRoaXMuY29sdW1ucyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGZpZWxkOiAnbm9tTW9kZWxlJyxcclxuICAgICAgICBoZWFkZXI6ICdOb20nXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBoZWFkZXI6ICcnLFxyXG4gICAgICAgIGZpZWxkOiAnZWRpdCcsXHJcbiAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWZpbGUtZWRpdCcsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgcC1idXR0b24tc3VjY2VzcycsXHJcbiAgICAgICAgdG9vbFRpcFRleHQ6ICdNb2RpZmllcidcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgICAgZmllbGQ6ICdleHBvcnRKc29uJyxcclxuICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICBidXR0b25JY29uOiAncGkgcGktZmlsZS1leHBvcnQnLFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWhlbHAnLFxyXG4gICAgICAgIHRvb2xUaXBUZXh0OiAnRXhwb3J0ZXIgSnNvbidcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgICAgZmllbGQ6ICdleHBvcnQnLFxyXG4gICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1maWxlLWV4Y2VsJyxcclxuICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBwLWJ1dHRvbi13YXJuaW5nJyxcclxuICAgICAgICB0b29sVGlwVGV4dDogJ0V4cG9ydGVyJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaGVhZGVyOiAnJyxcclxuICAgICAgICBmaWVsZDogJ2ltcG9ydCcsXHJcbiAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWZpbGUtaW1wb3J0JyxcclxuICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCcsXHJcbiAgICAgICAgdG9vbFRpcFRleHQ6ICdJbXBvcnRlcidcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgICAgZmllbGQ6ICdkZWxldGUnLFxyXG4gICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS10cmFzaCcsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgcC1idXR0b24tZGFuZ2VyJyxcclxuICAgICAgICB0b29sVGlwVGV4dDogJ1N1cHByaW1lcidcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgICAgZmllbGQ6ICdkb3dubG9hZEpzb24nLFxyXG4gICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1hcnJvdy1jaXJjbGUtZG93bicsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgcC1idXR0b24taGVscCcsXHJcbiAgICAgICAgdG9vbFRpcFRleHQ6ICdFeHBvcnQgSnNvbiBTZXJ2ZXInXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gIH1cclxuXHJcblxyXG4gIG92ZXJyaWRlIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIHN1cGVyLm5nT25Jbml0KClcclxuICAgIGxldCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLkdldEpzb25GaWxlcyh0aGlzLmNvbmZpZz8uZGF0YT8uZm9ybU5hbWUpKVxyXG4gICAgYXdhaXQgdGhpcy5nZXRJbXBvcnRSZXN1bHQoKVxyXG4gICAgdGhpcy5ncmlkRGF0YSA9IGRhdGFcclxuICAgIGlmIChTZWdtZW50LnByb2R1Y3Rpb24pIHtcclxuICAgICAgbGV0IGJ1dHRvbkFkQnVpbHRpblRlbXBsYXRlc0luZGV4ID0gdGhpcy5jb2x1bW5zLmZpbmRJbmRleCgoY29sOiBHcmlkQ29sdW1uKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGNvbC5maWVsZCA9PSBcImRvd25sb2FkSnNvblwiXHJcbiAgICAgIH0pXHJcbiAgICAgIGlmIChidXR0b25BZEJ1aWx0aW5UZW1wbGF0ZXNJbmRleCAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMuY29sdW1ucy5zcGxpY2UoYnV0dG9uQWRCdWlsdGluVGVtcGxhdGVzSW5kZXgsIDEpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuaGlzdG9yeUdyaWREYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLkdldEltcG9ydEhpc3RvcnkodGhpcy5jb25maWc/LmRhdGE/LmJ1c2luZXNzQ2xhc3MpKVxyXG4gIH1cclxuXHJcbiAgb3Blbk1vZGFsKCkge1xyXG4gICAgdGhpcy5fZGlhbG9nUmVmID0gdGhpcy5fdHNpTW9kYWxTZXJ2aWNlLm9wZW4oQ3JlYXRlT3JFZGl0TW9kZWxlSW1wb3J0Q29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBidXNpbmVzc0NsYXNzOiB0aGlzLmNvbmZpZz8uZGF0YT8uYnVzaW5lc3NDbGFzcyxcclxuICAgICAgICBmb3JtTmFtZTogdGhpcy5jb25maWc/LmRhdGE/LmZvcm1OYW1lLFxyXG4gICAgICAgIG1vZGU6IE1vZGVzLmNyZWF0ZVxyXG4gICAgICB9LFxyXG4gICAgICBzdHlsZUNsYXNzOiAnJyxcclxuICAgICAgd2lkdGg6ICc3NXZ3JyxcclxuICAgICAgaGVpZ2h0OiAnNTV2dycsXHJcbiAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fZGlhbG9nUmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHRoaXMudmlld0dyaWRDb21wb25lbnQpIHtcclxuICAgICAgICB0aGlzLnZpZXdHcmlkQ29tcG9uZW50LnJlZnJlc2godHJ1ZSlcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRJbXBvcnRSZXN1bHQoKSB7XHJcbiAgICBpZiAoIXRoaXMuY29uZmlnPy5kYXRhPy5idXNpbmVzc0NsYXNzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLmdldEltcG9ydFJlc3VsdEJ5QnVzaW5lc3NDbGFzcyh0aGlzLmNvbmZpZz8uZGF0YT8uYnVzaW5lc3NDbGFzcykpXHJcbiAgICAgIHRoaXMuaW1wb3J0UmVzdWx0RGF0YSA9IGRhdGFcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBidXR0b25DbGlja2VkKGRhdGE6IEJ1dHRvbkNsaWNrUmVzdWx0KSB7XHJcbiAgICBpZiAoZGF0YS5maWVsZCA9PSBcImVkaXRcIikge1xyXG4gICAgICB0aGlzLl9kaWFsb2dSZWYgPSB0aGlzLl90c2lNb2RhbFNlcnZpY2Uub3BlbihDcmVhdGVPckVkaXRNb2RlbGVJbXBvcnRDb21wb25lbnQsIHtcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBpZDogZGF0YS5rZXksXHJcbiAgICAgICAgICBidXNpbmVzc0NsYXNzOiB0aGlzLmNvbmZpZz8uZGF0YT8uYnVzaW5lc3NDbGFzcyxcclxuICAgICAgICAgIG1vZGU6IE1vZGVzLmVkaXRcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICcnLFxyXG4gICAgICAgIHdpZHRoOiAnNzV2dycsXHJcbiAgICAgICAgaGVpZ2h0OiAnNTV2dycsXHJcbiAgICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5fZGlhbG9nUmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy52aWV3R3JpZENvbXBvbmVudCkge1xyXG4gICAgICAgICAgdGhpcy52aWV3R3JpZENvbXBvbmVudC5yZWZyZXNoKHRydWUpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGRhdGEuZmllbGQgPT0gXCJkZWxldGVcIikge1xyXG4gICAgICB0aGlzLmRlbGV0ZU1vZGVsZUltcG9ydChkYXRhKVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZGF0YS5maWVsZCA9PSBcImltcG9ydFwiKSB7XHJcbiAgICAgIHRoaXMuaXNJbXBvcnRGaWxlVG9FeGVjdXRlVmlzaWJsZSA9IHRydWVcclxuICAgICAgdGhpcy50b0ltcG9ydE1vZGVsZVVpZCA9IGRhdGEua2V5XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChkYXRhLmZpZWxkID09IFwiZXhwb3J0XCIpIHtcclxuICAgICAgdGhpcy5leHBvcnREYXRhKGRhdGEua2V5KVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZGF0YS5maWVsZCA9PSBcImV4cG9ydEpzb25cIikge1xyXG4gICAgICB0aGlzLmV4cG9ydERhdGFKc29uKGRhdGEua2V5KVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZGF0YS5maWVsZCA9PSBcImRvd25sb2FkSnNvblwiKSB7XHJcbiAgICAgIHRoaXMuZXhwb3J0RGF0YUpzb25TZXJ2ZXIoZGF0YS5rZXkpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnREYXRhKGlkOiBzdHJpbmcpIHtcclxuICAgIGlmIChpZCAhPSB1bmRlZmluZWQgJiYgaWQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmlzbG9hZGluZyA9IHRydWVcclxuICAgICAgdGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLmV4ZWN1dGVFeHBvcnQoaWQsIHRoaXMuY29uZmlnLmRhdGE/LnBhZ2VkUmVxdWVzdCkuc3Vic2NyaWJlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUoZGF0YT8uZGF0YSlcclxuICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0RGF0YUpzb24oaWQ6IHN0cmluZykge1xyXG4gICAgaWYgKGlkICE9IHVuZGVmaW5lZCAmJiBpZCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuaXNsb2FkaW5nID0gdHJ1ZVxyXG4gICAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuZXhlY3V0ZUV4cG9ydEpzb24oaWQpLnN1YnNjcmliZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZG93bmxvYWRGaWxlKGRhdGE/LmRhdGEpXHJcbiAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2VcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4cG9ydERhdGFKc29uU2VydmVyKGlkOiBzdHJpbmcpIHtcclxuICAgIGlmIChpZCAhPSB1bmRlZmluZWQgJiYgaWQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmlzbG9hZGluZyA9IHRydWVcclxuICAgICAgdGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLmV4ZWN1dGVFeHBvcnRKc29uU2VydmVyKGlkKS5zdWJzY3JpYmUoXHJcblxyXG4gICAgICAgIHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2VcclxuICAgICAgICAgIHRoaXMucmVmcmVzaEdyaWQoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvd25sb2FkRmlsZShkYXRhOiBhbnkpIHtcclxuICAgIGxldCBibG9iVXJsID0gXCJkYXRhOmFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O2Jhc2U2NCxcIiArIGRhdGEuZmlsZUNvbnRlbnQ7XHJcbiAgICBsZXQgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgbGluay5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIGJsb2JVcmwpO1xyXG4gICAgbGluay5zZXRBdHRyaWJ1dGUoXCJkb3dubG9hZFwiLCBkYXRhLmZpbGVOYW1lKTtcclxuICAgIGxpbmsuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG4gIH1cclxuXHJcblxyXG4gIGRlbGV0ZU1vZGVsZUltcG9ydChkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKFxyXG4gICAgICBMb2NhbGl6YXRpb25LZXlzLmNvbmZpcm1EZWxldGUsXHJcbiAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQgJiYgZGF0YS5rZXkgIT0gbnVsbCAmJiBkYXRhLmtleSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5kZWxldGUoZGF0YS5rZXkpLnN1YnNjcmliZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZENvbXBvbmVudC5yZWZyZXNoKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoTG9jYWxpemF0aW9uS2V5cy5kZWxldGVkU3VjY2Vzc2Z1bGx5KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBvbkltcG9ydEZpbGVUb0V4ZWN1dGVfRmlsZVNlbGVjdGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBldmVudC5jdXJyZW50RmlsZXNbMF1cclxuICAgIHRoaXMudG9VcGxvYWRUb0V4ZWN1dGVGaWxlID0gZmlsZTtcclxuICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2VcclxuICB9XHJcblxyXG4gIG9uSW1wb3J0RmlsZVRvRXhlY3V0ZV9DbGVhcihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnRvVXBsb2FkVG9FeGVjdXRlRmlsZSA9IHVuZGVmaW5lZFxyXG4gICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZVxyXG4gIH1cclxuXHJcbiAgb25JbXBvcnRGaWxlVG9FeGVjdXRlX1JlbW92ZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnRvVXBsb2FkVG9FeGVjdXRlRmlsZSA9IHVuZGVmaW5lZFxyXG4gIH1cclxuXHJcbiAgb25JbXBvcnRGaWxlVG9FeGVjdXRlX0ltcG9ydEZpbGUoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMudG9JbXBvcnRNb2RlbGVVaWQgJiYgdGhpcy50b1VwbG9hZFRvRXhlY3V0ZUZpbGUpIHtcclxuICAgICAgdGhpcy5pc2xvYWRpbmcgPSB0cnVlXHJcbiAgICAgIHRoaXMuaXNJbXBvcnRGaWxlVG9FeGVjdXRlVmlzaWJsZSA9IGZhbHNlXHJcbiAgICAgIGxldCBleGVjdXRlSW1wb3J0UmVxdWVzdDogRXhlY3V0ZUltcG9ydFJlcXVlc3QgPSBuZXcgRXhlY3V0ZUltcG9ydFJlcXVlc3QoKVxyXG4gICAgICBleGVjdXRlSW1wb3J0UmVxdWVzdC5tb2RlbGVJbXBvcnRVaWQgPSB0aGlzLnRvSW1wb3J0TW9kZWxlVWlkO1xyXG4gICAgICBleGVjdXRlSW1wb3J0UmVxdWVzdC5maWxlTmFtZSA9IHRoaXMudG9VcGxvYWRUb0V4ZWN1dGVGaWxlPy5uYW1lXHJcblxyXG4gICAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuZXhlY3V0ZUltcG9ydChleGVjdXRlSW1wb3J0UmVxdWVzdCwgdGhpcy50b1VwbG9hZFRvRXhlY3V0ZUZpbGUpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmV4dDogYXN5bmMgKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdClcclxuICAgICAgICAgICAgICB0aGlzLmlzSW1wb3J0RmlsZVRvRXhlY3V0ZVZpc2libGUgPSBmYWxzZVxyXG4gICAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2VcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UoZXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25JbXBvcnRGaWxlV2l0aG91dE1vZGVsX0ZpbGVTZWxlY3RlZChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBmaWxlOiBGaWxlID0gZXZlbnQuY3VycmVudEZpbGVzWzBdO1xyXG4gICAgdGhpcy50b1VwbG9hZFdpdGhvdXRNb2RlbCA9IGZpbGU7XHJcbiAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlXHJcbiAgfVxyXG5cclxuICBvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfQ2xlYXIoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy50b1VwbG9hZFdpdGhvdXRNb2RlbCA9IHVuZGVmaW5lZFxyXG4gICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZVxyXG4gIH1cclxuXHJcbiAgb25JbXBvcnRGaWxlV2l0aG91dE1vZGVsX1JlbW92ZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnRvVXBsb2FkV2l0aG91dE1vZGVsID0gdW5kZWZpbmVkXHJcbiAgfVxyXG5cclxuICBvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfSW1wb3J0RmlsZShldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy50b1VwbG9hZFdpdGhvdXRNb2RlbCkge1xyXG4gICAgICB0aGlzLmlzbG9hZGluZyA9IHRydWVcclxuICAgICAgdGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLmV4ZWN1dGVJbXBvcnRXaXRob3V0TW9kZWwodGhpcy50b1VwbG9hZFdpdGhvdXRNb2RlbClcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuZXh0OiBhc3luYyAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KVxyXG4gICAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2VcclxuICAgICAgICAgICAgICB0aGlzLmhpc3RvcnlHcmlkRGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5HZXRJbXBvcnRIaXN0b3J5KHRoaXMuY29uZmlnPy5kYXRhPy5idXNpbmVzc0NsYXNzKSlcclxuICAgICAgICAgICAgICB0aGlzLl90c2lNb2RhbFNlcnZpY2Uub3BlbihBbGVydEltcG9ydE1lc3NhZ2VDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgZXhlY3V0ZUltcG9ydFJlc3VsdDogcmVzdWx0Py5kYXRhLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNsb3NhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICczNXZ3JyxcclxuICAgICAgICAgICAgICAgIGhlaWdodDogJzI1dncnLFxyXG4gICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZEdyaWREYXRhKCk6IHZvaWQge1xyXG4gICAgdGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLkdldEpzb25GaWxlcyh0aGlzLmNvbmZpZz8uZGF0YT8uZm9ybU5hbWUpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5ncmlkRGF0YSA9IGRhdGE7XHJcbiAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgZ3JpZCBkYXRhJywgZXJyb3IpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoR3JpZCgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZEdyaWREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDb25zdWx0SW1wb3J0UmVzdWx0QnV0dG9uQ2xpY2tlZChldmVudDogQnV0dG9uQ2xpY2tSZXN1bHQpIHtcclxuICAgIHRoaXMuX3RzaU1vZGFsU2VydmljZS5vcGVuKEFsZXJ0SW1wb3J0TWVzc2FnZUNvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgaWQ6IGV2ZW50LmtleSxcclxuICAgICAgfSxcclxuICAgICAgY2xvc2FibGU6IHRydWUsXHJcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcclxuICAgICAgd2lkdGg6ICczNXZ3JyxcclxuICAgICAgaGVpZ2h0OiAnMjV2dycsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQnV0dG9uQ29sdW1uRXhlY3V0ZUNsaWNrZWQoZXZlbnQ6IEJ1dHRvbkNsaWNrUmVzdWx0KSB7XHJcbiAgICBpZiAoZXZlbnQuZmllbGQgPT0gJ2Zyb21Kc29uVG9EYXRhYmFzZScpIHtcclxuICAgICAgdGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLmV4ZWN1dGVJbXBvcnRKc29uKGV2ZW50LmtleSwgdGhpcy5jb25maWc/LmRhdGE/LmZvcm1OYW1lKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JpZENvbXBvbmVudC5yZWZyZXNoKHRydWUpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW1wb3J0aW5nIGpzb246JywgZXJyb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5maWVsZCA9PSAnZGVsZXRlRnJvbURhdGFiYXNlJykge1xyXG4gICAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybShcclxuICAgICAgICBMb2NhbGl6YXRpb25LZXlzLmNvbmZpcm1EZWxldGUsXHJcbiAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgIChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLmRlbGV0ZUltcG9ydChldmVudC5rZXksIHRoaXMuY29uZmlnPy5kYXRhPy5idXNpbmVzc0NsYXNzKVxyXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICBhc3luYyByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZENvbXBvbmVudC5yZWZyZXNoKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmhpc3RvcnlHcmlkRGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5HZXRJbXBvcnRIaXN0b3J5KHRoaXMuY29uZmlnPy5kYXRhPy5idXNpbmVzc0NsYXNzKSlcclxuICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoTG9jYWxpemF0aW9uS2V5cy5kZWxldGVkU3VjY2Vzc2Z1bGx5KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGltcG9ydGluZyBqc29uOicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8cC10YWJWaWV3PlxyXG4gIDxwLXRhYlBhbmVsIFtoZWFkZXJdPVwiJ3NoYXJlZF9leGVjdXRlX2ltcG9ydF9tb2RlbF9pbXBvcnRfZXhwb3J0JyB8IGxvY2FsaXplXCIgY2xhc3M9XCJwdC0zIHB4LTJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgIDxkaXYgKmJ1c3k9XCJpc2xvYWRpbmdcIj48L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBjb2wtMTBcIj5cclxuICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxUc2ktTGFiZWwgY2xhc3M9XCJjb2wtMlwiIFtsYWJlbFZhbHVlXT1cIidzaGFyZWRfcmVwb3J0aW5nX2Zvcm0nXCI+XHJcbiAgICAgICAgICAgIDwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICA8IS0tIDxwLWRyb3Bkb3duIGNsYXNzPVwiY29sLTEwIHRzaS1jb21wb25lbnRcIiBjbGFzcz1cInRzaS1jb21wb25lbnRcIiBzdHlsZUNsYXNzPVwidHNpLWNvbXBvbmVudFwiIGFwcGVuZFRwPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICBvcHRpb25MYWJlbD1cInZhbHVlXCIgb3B0aW9uVmFsdWU9XCJrZXlcIiBbZmlsdGVyXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgZmlsdGVyQnk9XCJ2YWx1ZVwiIFtzaG93Q2xlYXJdPVwidHJ1ZVwiIHBsYWNlaG9sZGVyPVwie3snc2hhcmVkX3JlcG9ydGluZ19zZWxlY3RfZm9ybScgfCBsb2NhbGl6ZX19XCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgPC9wLWRyb3Bkb3duPiAtLT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxwLXRvb2xiYXIgc3R5bGVDbGFzcz1cIm1iLTQgZ2FwLTJcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwibGVmdFwiPlxyXG4gICAgICAgICAgPFRzaS1CdXR0b24gW3RleHRdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfYWRkX3JlcG9ydCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIGljb249XCJwLWJ1dHRvbi1pY29uIHAtYnV0dG9uLWljb24tbGVmdCBwaSBwaS1wbHVzXCJcclxuICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtZWxlbWVudCBwLWJ1dHRvbi1zdWNjZXNzIG1yLTIgcC1idXR0b24gcC1jb21wb25lbnQgbmctc3Rhci1pbnNlcnRlZCBwLWJ1dHRvbi1sYWJlbFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuTW9kYWwoKVwiPjwvVHNpLUJ1dHRvbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJyaWdodFwiPlxyXG4gICAgICAgICAgPHAtZmlsZVVwbG9hZCAjZmlsZVVwbG9hZCBuYW1lPVwiZGVtb1tdXCIgKG9uQmVmb3JlVXBsb2FkKT1cIm9uSW1wb3J0RmlsZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKG9uU2VsZWN0KT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIiAob25DbGVhcik9XCJvbkNsZWFyKCRldmVudClcIiAob25SZW1vdmUpPVwib25SZW1vdmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFttdWx0aXBsZV09XCJmYWxzZVwiIGFjY2VwdD1cImFwcGxpY2F0aW9uL2pzb25cIiBbbWF4RmlsZVNpemVdPVwiMTAwMDAwMFwiXHJcbiAgICAgICAgICAgIFtpbnZhbGlkRmlsZVNpemVNZXNzYWdlU3VtbWFyeV09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV9zaXplX21lc3NhZ2Vfc3VtbWFyeScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtpbnZhbGlkRmlsZVNpemVNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3NpemVfbWVzc2FnZV9kZXRhaWwnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbaW52YWxpZEZpbGVUeXBlTWVzc2FnZVN1bW1hcnldPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfdHlwZV9tZXNzYWdlX3N1bW1hcnknIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VEZXRhaWxdPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfbGltaXRfbWVzc2FnZV9kZXRhaWwnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VTdW1tYXJ5XT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX2xpbWl0X21lc3NhZ2Vfc3VtbWFyeScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtpbnZhbGlkRmlsZVR5cGVNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3R5cGVfbWVzc2FnZV9kZXRhaWwnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbY2hvb3NlSWNvbl09XCIncGkgcGktcGFwZXJjbGlwJ1wiIGNhbmNlbFN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1zZWNvbmRhcnlcIiB1cGxvYWRTdHlsZUNsYXNzPVwicC1idXR0b24taGVscFwiXHJcbiAgICAgICAgICAgIHJlbW92ZVN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1kYW5nZXJcIiBbY2hvb3NlTGFiZWxdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfY2hvb3NlX3JlcG9ydF9maWxlJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgW3VwbG9hZExhYmVsXT1cIidzaGFyZWRfcmVwb3J0aW5nX2ltcG9ydF9yZXBvcnQnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbY2FuY2VsTGFiZWxdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfY2FuY2VsX2Nob29zZV9yZXBvcnRfZmlsZScgfCBsb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJ0b1VwbG9hZEZpbGVEYXRhXCIgcFRlbXBsYXRlPVwiZmlsZXVwbG9hZC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L3AtZmlsZVVwbG9hZD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L3AtdG9vbGJhcj5cclxuXHJcbiAgICAgIDx0c2ktdmlldy1ncmlkICN2aWV3R3JpZCBbaGVhZGVyXT1cIidzaGFyZWRfZXhlY3V0ZV9pbXBvcnRfbW9kZWxfaW1wb3J0X2V4cG9ydCcgIHxsb2NhbGl6ZVwiXHJcbiAgICAgICAgW3NlYXJjaEZpZWxkc109XCJzZWFyY2hGaWVsZHNcIiBbc2hvd0NvbnN1bHRCdXR0b25dPVwiZmFsc2VcIiBbZ2V0RGF0YUZyb21BcGldPVwidHJ1ZVwiXHJcbiAgICAgICAgW2NydWRTZXJ2aWNlXT1cIm1vZGVsZUltcG9ydFNlcnZpY2VcIiAoYnV0dG9uQ29sdW1uQ2xpY2tlZCk9XCJidXR0b25DbGlja2VkKCRldmVudClcIlxyXG4gICAgICAgIFtmb3JtTmFtZV09XCInYXBwLW1hbmFnZS1pbXBvcnQtZXhwb3J0J1wiIFtjb2x1bW5zXT1cImNvbHVtbnNcIiBrZXk9XCJ1aWRcIj5cclxuICAgICAgPC90c2ktdmlldy1ncmlkPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9wLXRhYlBhbmVsPlxyXG5cclxuICA8cC10YWJQYW5lbCBbaGVhZGVyXT1cIidzaGFyZWRfZXhlY3V0ZV9pbXBvcnRfbW9kZWxfaW1wb3J0X2V4cG9ydF9kZWZhdWx0JyB8IGxvY2FsaXplXCIgY2xhc3M9XCJwdC0zIHB4LTJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgIDx0c2ktdmlldy1ncmlkIGNsYXNzPVwiY29sLTEyXCIgW2hlYWRlcl09XCInc2hhcmVkX2V4ZWN1dGVfaW1wb3J0X21vZGVsX2ltcG9ydF9leHBvcnRfZGVmYXVsdCcgIHxsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc0pzb25cIiBbZ2V0RGF0YUZyb21BcGldPVwiZmFsc2VcIiBbZ3JpZERhdGFdPVwiZ3JpZERhdGFcIiBba2V5XT1cImtleVwiXHJcbiAgICAgICAgW2Zvcm1OYW1lXT1cIidtb2RlbGUtaW1wb3J0LXBhci1kZWZhdWx0J1wiXHJcbiAgICAgICAgKGJ1dHRvbkNvbHVtbkNsaWNrZWQpPVwiaGFuZGxlQnV0dG9uQ29sdW1uRXhlY3V0ZUNsaWNrZWQoJGV2ZW50KVwiPjwvdHNpLXZpZXctZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvcC10YWJQYW5lbD5cclxuXHJcbiAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInc2hhcmVkX2V4ZWN1dGVfaW1wb3J0X2hpc3RvcnknIHwgbG9jYWxpemVcIiBjbGFzcz1cInB0LTMgcHgtMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgPHRzaS12aWV3LWdyaWQgY2xhc3M9XCJjb2wtMTJcIiBbaGVhZGVyXT1cIidzaGFyZWRfZXhlY3V0ZV9pbXBvcnRfaGlzdG9yeScgIHxsb2NhbGl6ZVwiIFtjb2x1bW5zXT1cImNvbHVtbnNIaXN0b3J5XCJcclxuICAgICAgICBbZ2V0RGF0YUZyb21BcGldPVwiZmFsc2VcIiBbZ3JpZERhdGFdPVwiaGlzdG9yeUdyaWREYXRhXCIgW2tleV09XCJpbXBvcnRIaXN0b3J5S2V5XCJcclxuICAgICAgICBbZm9ybU5hbWVdPVwiJ21vZGVsZS1pbXBvcnQtcGFyLWRlZmF1bHQnXCJcclxuICAgICAgICAoYnV0dG9uQ29sdW1uQ2xpY2tlZCk9XCJoYW5kbGVCdXR0b25Db2x1bW5FeGVjdXRlQ2xpY2tlZCgkZXZlbnQpXCI+PC90c2ktdmlldy1ncmlkPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9wLXRhYlBhbmVsPlxyXG5cclxuICA8cC10YWJQYW5lbCBbaGVhZGVyXT1cIidzaGFyZWRfZXhlY3V0ZV9pbXBvcnRfd2l0aG91dF9tb2RlbCcgfCBsb2NhbGl6ZVwiIGNsYXNzPVwicHQtMyBweC0yXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiPlxyXG4gICAgICA8cC1maWxlVXBsb2FkICNpbXBvcnRGaWxlVG9SZXBvcnRGaWxlVXBsb2FkIG5hbWU9XCJpbXBvcnRGaWxlVG9SZXBvcnRcIiBbbXVsdGlwbGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIChvblNlbGVjdCk9XCJvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfRmlsZVNlbGVjdGVkKCRldmVudClcIiAob25DbGVhcik9XCJvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfQ2xlYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgKG9uQmVmb3JlVXBsb2FkKT1cIm9uSW1wb3J0RmlsZVdpdGhvdXRNb2RlbF9JbXBvcnRGaWxlKCRldmVudClcIlxyXG4gICAgICAgIChvblJlbW92ZSk9XCJvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfUmVtb3ZlKCRldmVudClcIiBhY2NlcHQ9XCIueGxzLC54bHN4XCIgW21heEZpbGVTaXplXT1cIjEwMDAwMDAwXCJcclxuICAgICAgICBbaW52YWxpZEZpbGVTaXplTWVzc2FnZVN1bW1hcnldPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfc2l6ZV9tZXNzYWdlX3N1bW1hcnknIHwgbG9jYWxpemVcIlxyXG4gICAgICAgIFtpbnZhbGlkRmlsZVNpemVNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3NpemVfbWVzc2FnZV9kZXRhaWwnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgIFtpbnZhbGlkRmlsZVR5cGVNZXNzYWdlU3VtbWFyeV09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV90eXBlX21lc3NhZ2Vfc3VtbWFyeScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2ludmFsaWRGaWxlTGltaXRNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX2xpbWl0X21lc3NhZ2VfZGV0YWlsJyB8IGxvY2FsaXplXCJcclxuICAgICAgICBbaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VTdW1tYXJ5XT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX2xpbWl0X21lc3NhZ2Vfc3VtbWFyeScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2ludmFsaWRGaWxlVHlwZU1lc3NhZ2VEZXRhaWxdPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfdHlwZV9tZXNzYWdlX2RldGFpbCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2Nob29zZUljb25dPVwiJ3BpIHBpLXBhcGVyY2xpcCdcIiBjYW5jZWxTdHlsZUNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5XCIgdXBsb2FkU3R5bGVDbGFzcz1cInAtYnV0dG9uLWhlbHBcIlxyXG4gICAgICAgIHJlbW92ZVN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1kYW5nZXJcIiBbY2hvb3NlTGFiZWxdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfY2hvb3NlX3JlcG9ydF9maWxlJyB8IGxvY2FsaXplXCJcclxuICAgICAgICBbdXBsb2FkTGFiZWxdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfaW1wb3J0X3JlcG9ydCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2NhbmNlbExhYmVsXT1cIidzaGFyZWRfcmVwb3J0aW5nX2NhbmNlbF9jaG9vc2VfcmVwb3J0X2ZpbGUnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZmlsZXVwbG9hZC1jb250ZW50XCI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9wLWZpbGVVcGxvYWQ+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC10YWJQYW5lbD5cclxuXHJcbiAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInc2hhcmVkX2ltcG9ydF9yZXN1bHRfaGVhZGVyJyB8IGxvY2FsaXplXCIgY2xhc3M9XCJwdC0zIHB4LTJcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicC0xXCI+XHJcbiAgICAgIDxUc2ktQnV0dG9uIChvbkNsaWNrKT1cImdldEltcG9ydFJlc3VsdCgpXCJcclxuICAgICAgICBzdHlsZUNsYXNzPVwicC1lbGVtZW50IHAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXJvdW5kZWQgbXItMiBwLWJ1dHRvbiBwLWNvbXBvbmVudCBwLWJ1dHRvbi1pY29uLW9ubHlcIlxyXG4gICAgICAgIFt0b29sdGlwVGV4dF09XCInc2hhcmVkX2ltcG9ydF9leHBvcnRfcmVmcmVzaCdcIiBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIlxyXG4gICAgICAgIGljb249XCJwLWJ1dHRvbi1pY29uIHBpIHBpLXJlZnJlc2hcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXJvdW5kZWQgbXItMlwiPjwvVHNpLUJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgIDx0c2ktdmlldy1ncmlkIGNsYXNzPVwiY29sLTEyXCIgW2hlYWRlcl09XCInc2hhcmVkX2ltcG9ydF9yZXN1bHRfaGVhZGVyJyAgfGxvY2FsaXplXCIgW2NvbHVtbnNdPVwiaW1wb3J0UmVzdWx0c0NvbHVtbnNcIlxyXG4gICAgICAgIFtnZXREYXRhRnJvbUFwaV09XCJmYWxzZVwiIFtncmlkRGF0YV09XCJpbXBvcnRSZXN1bHREYXRhXCIgW2tleV09XCIndWlkJ1wiIFtmb3JtTmFtZV09XCInbW9kZWxlLWltcG9ydC1yZXN1bHQtaW1wb3J0J1wiXHJcbiAgICAgICAgKGJ1dHRvbkNvbHVtbkNsaWNrZWQpPVwiaGFuZGxlQ29uc3VsdEltcG9ydFJlc3VsdEJ1dHRvbkNsaWNrZWQoJGV2ZW50KVwiPjwvdHNpLXZpZXctZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvcC10YWJQYW5lbD5cclxuXHJcbjwvcC10YWJWaWV3PlxyXG5cclxuPGRpdiBjbGFzcz1cInAtMVwiPlxyXG4gIDxUc2ktQnV0dG9uXHJcbiAgICBzdHlsZUNsYXNzPVwicC1lbGVtZW50IHAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXJvdW5kZWQgbXItMiBwLWJ1dHRvbiBwLWNvbXBvbmVudCBwLWJ1dHRvbi1pY29uLW9ubHlcIlxyXG4gICAgW3Rvb2x0aXBUZXh0XT1cIidzaGFyZWRfaW1wb3J0X2V4cG9ydF9yZWZyZXNoJ1wiIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiXHJcbiAgICBpY29uPVwicC1idXR0b24taWNvbiBwaSBwaS1yZWZyZXNoXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZCBwLWJ1dHRvbi1yb3VuZGVkIG1yLTJcIj48L1RzaS1CdXR0b24+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBkaWFsb2cgdG8gaW1wb3J0IGZpbGUgdG8gcmVwb3J0IC0tPlxyXG48cC1kaWFsb2cgaGVhZGVyPVwie3snc2hhcmVkX3JlcG9ydGluZ19zZWxlY3RfZmlsZV90b19pbXBvcnRfaW50b19yZXBvcnQnIHwgbG9jYWxpemV9fVwiXHJcbiAgWyh2aXNpYmxlKV09XCJpc0ltcG9ydEZpbGVUb0V4ZWN1dGVWaXNpYmxlXCIgW3N0eWxlXT1cInt3aWR0aDogJzUwdncnfVwiPlxyXG4gIDwhLS0gPFRzaS1Nb2RhbC1IZWFkZXIgKG9uQ2xvc2VDbGljayk9XCJvbkltcG9ydEZpbGVUb1JlcG9ydE1vZGFsQ2FuY2VsQ2xpY2soKVwiIFtpbnB1dFRpdGxlXT1cIidzaGFyZWRfcmVwb3J0aW5nX3NlbGVjdF9maWxlX3RvX2ltcG9ydF9pbnRvX3JlcG9ydCdcIj48L1RzaS1Nb2RhbC1IZWFkZXI+IC0tPlxyXG5cclxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiPlxyXG4gICAgPHAtZmlsZVVwbG9hZCAjaW1wb3J0RmlsZVRvUmVwb3J0RmlsZVVwbG9hZCBuYW1lPVwiaW1wb3J0RmlsZVRvUmVwb3J0XCIgW211bHRpcGxlXT1cImZhbHNlXCJcclxuICAgICAgKG9uU2VsZWN0KT1cIm9uSW1wb3J0RmlsZVRvRXhlY3V0ZV9GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiIChvbkNsZWFyKT1cIm9uSW1wb3J0RmlsZVRvRXhlY3V0ZV9DbGVhcigkZXZlbnQpXCJcclxuICAgICAgKG9uQmVmb3JlVXBsb2FkKT1cIm9uSW1wb3J0RmlsZVRvRXhlY3V0ZV9JbXBvcnRGaWxlKCRldmVudClcIiAob25SZW1vdmUpPVwib25JbXBvcnRGaWxlVG9FeGVjdXRlX1JlbW92ZSgkZXZlbnQpXCJcclxuICAgICAgYWNjZXB0PVwiLnhscywueGxzeFwiIFttYXhGaWxlU2l6ZV09XCIxMDAwMDAwMFwiXHJcbiAgICAgIFtpbnZhbGlkRmlsZVNpemVNZXNzYWdlU3VtbWFyeV09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV9zaXplX21lc3NhZ2Vfc3VtbWFyeScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgIFtpbnZhbGlkRmlsZVNpemVNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3NpemVfbWVzc2FnZV9kZXRhaWwnIHwgbG9jYWxpemVcIlxyXG4gICAgICBbaW52YWxpZEZpbGVUeXBlTWVzc2FnZVN1bW1hcnldPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfdHlwZV9tZXNzYWdlX3N1bW1hcnknIHwgbG9jYWxpemVcIlxyXG4gICAgICBbaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VEZXRhaWxdPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfbGltaXRfbWVzc2FnZV9kZXRhaWwnIHwgbG9jYWxpemVcIlxyXG4gICAgICBbaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VTdW1tYXJ5XT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX2xpbWl0X21lc3NhZ2Vfc3VtbWFyeScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgIFtpbnZhbGlkRmlsZVR5cGVNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3R5cGVfbWVzc2FnZV9kZXRhaWwnIHwgbG9jYWxpemVcIlxyXG4gICAgICBbY2hvb3NlSWNvbl09XCIncGkgcGktcGFwZXJjbGlwJ1wiIGNhbmNlbFN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1zZWNvbmRhcnlcIiB1cGxvYWRTdHlsZUNsYXNzPVwicC1idXR0b24taGVscFwiXHJcbiAgICAgIHJlbW92ZVN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1kYW5nZXJcIiBbY2hvb3NlTGFiZWxdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfY2hvb3NlX3JlcG9ydF9maWxlJyB8IGxvY2FsaXplXCJcclxuICAgICAgW3VwbG9hZExhYmVsXT1cIidzaGFyZWRfcmVwb3J0aW5nX2ltcG9ydF9yZXBvcnQnIHwgbG9jYWxpemVcIlxyXG4gICAgICBbY2FuY2VsTGFiZWxdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfY2FuY2VsX2Nob29zZV9yZXBvcnRfZmlsZScgfCBsb2NhbGl6ZVwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZmlsZXVwbG9hZC1jb250ZW50XCI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3AtZmlsZVVwbG9hZD5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbiAgPCEtLSA8VHNpLU1vZGFsLUZvb3RlciAob25DYW5jZWxDbGljayk9XCJvbkltcG9ydEZpbGVUb1JlcG9ydE1vZGFsQ2FuY2VsQ2xpY2soKVwiXHJcbiAgICAob25TYXZlQ2xpY2spPVwib25JbXBvcnRGaWxlVG9SZXBvcnRNb2RhbFNhdmVDbGljaygpXCJcclxuICAgIFtzYXZlRGlzYWJsZWRdPVwiIXRvVXBsb2FkVG9VcGRhdGVSZXBvcnRGaWxlRGF0YVwiPjwvVHNpLU1vZGFsLUZvb3Rlcj4gLS0+XHJcblxyXG48L3AtZGlhbG9nPiJdfQ==
498
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLWltcG9ydC1leHBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL21hbmFnZS1pbXBvcnQtZXhwb3J0L21hbmFnZS1pbXBvcnQtZXhwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9tYW5hZ2UtaW1wb3J0LWV4cG9ydC9tYW5hZ2UtaW1wb3J0LWV4cG9ydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUMzSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWxGLE9BQU8sRUFBRSxvQkFBb0IsRUFBNkIsTUFBTSxjQUFjLENBQUM7QUFFL0UsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDaEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFB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QUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDO3lCQUMvRSxTQUFTLENBQ1IsS0FBSyxFQUFDLFFBQVEsRUFBQyxFQUFFO3dCQUNmLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNqQyxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFBO3dCQUN4SCxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLENBQUM7b0JBQ3pFLENBQUMsRUFDRCxLQUFLLENBQUMsRUFBRTt3QkFDTixPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUNoRCxDQUFDLENBQ0YsQ0FBQztnQkFDTixDQUFDO1lBQ0gsQ0FBQyxDQUNGLENBQUM7UUFFSixDQUFDO0lBQ0gsQ0FBQzsrR0F0aEJVLDJCQUEyQjttR0FBM0IsMkJBQTJCLG1EQUYzQixDQUFDLEdBQUcsWUFBWSxDQUFDLHlFQUlqQixvQkFBb0IscVlDNUJqQyxxd1RBcUpXOzs0RkQzSEUsMkJBQTJCO2tCQVB2QyxTQUFTOytCQUNFLDBCQUEwQixhQUl6QixDQUFDLEdBQUcsWUFBWSxDQUFDOzJTQUlLLGFBQWE7c0JBQTdDLFNBQVM7dUJBQUMsb0JBQW9CO2dCQUNOLFlBQVk7c0JBQXBDLFNBQVM7dUJBQUMsWUFBWTtnQkFDQSxpQkFBaUI7c0JBQXZDLFNBQVM7dUJBQUMsVUFBVTtnQkFnRHVCLDZCQUE2QjtzQkFBeEUsU0FBUzt1QkFBQywrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZCB9IGZyb20gJ3ByaW1lbmcvZmlsZXVwbG9hZCc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFsZXJ0SW1wb3J0TWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4uL2FsZXJ0LWltcG9ydC1tZXNzYWdlL2FsZXJ0LWltcG9ydC1tZXNzYWdlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENyZWF0ZU9yRWRpdE1vZGVsZUltcG9ydENvbXBvbmVudCB9IGZyb20gJy4uL2NyZWF0ZS1vci1lZGl0LW1vZGVsZS1pbXBvcnQvY3JlYXRlLW9yLWVkaXQtbW9kZWxlLWltcG9ydC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUc2lWaWV3R3JpZENvbXBvbmVudCB9IGZyb20gJy4uL291dHB1dC1jb21wb25lbnRzL3RzaS12aWV3LWdyaWQvdHNpLXZpZXctZ3JpZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuLi8uLi9lbnVtcy90b29sdGlwUG9zaXRpb24uZW51bSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25LZXlzIH0gZnJvbSAnLi4vLi4vY29uc3RzL2xvY2FsaXphdGlvbi1rZXknO1xyXG5pbXBvcnQgeyBJbnB1dFR5cGVzLCBGaWx0ZXJPcGVyYXRvclR5cGUsIE1vZGVzLCBEaXNwbGF5VHlwZXMgfSBmcm9tICcuLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IEdyaWRDb2x1bW4sIEJ1dHRvbkNsaWNrUmVzdWx0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEV4ZWN1dGVJbXBvcnRSZXF1ZXN0LCBJbXBvcnRSZXN1bHQsIFNlYXJjaEZpZWxkIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgTW9kZWxlSW1wb3J0U2VydmljZSwgVHNpQ29uZmlybWF0aW9uU2VydmljZSwgVHNpTm90aWZpY2F0aW9uU2VydmljZSwgRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLCBUc2lNZXNzYWdlU2VydmljZSwgVHNpTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBUc2lGb3JtQ29tcG9uZW50QmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3RzaS1iYXNlL2NvbXBvbmVudHMvdHNpLWZvcm0tYmFzZS90c2ktZm9ybS1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNlZ21lbnQgfSBmcm9tICcuLi8uLi9lbmQtcG9pbnRzJztcclxuaW1wb3J0IHsgYXBwUHJvdmlkZXJzIH0gZnJvbSAnLi4vLi4vY29uc3RzL2FwcC1wcm92aWRlcnMnO1xyXG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nQ29uZmlnLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1tYW5hZ2UtaW1wb3J0LWV4cG9ydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21hbmFnZS1pbXBvcnQtZXhwb3J0LmNvbXBvbmVudC5odG1sJyxcclxuICAvL2VuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbWFuYWdlLWltcG9ydC1leHBvcnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFsuLi5hcHBQcm92aWRlcnNdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYW5hZ2VJbXBvcnRFeHBvcnRDb21wb25lbnQgZXh0ZW5kcyBUc2lGb3JtQ29tcG9uZW50QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQFZpZXdDaGlsZChUc2lWaWV3R3JpZENvbXBvbmVudCkgZ3JpZENvbXBvbmVudCE6IFRzaVZpZXdHcmlkQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVVcGxvYWQnKSBmaWxlVXBsb2FkZXIhOiBGaWxlVXBsb2FkO1xyXG4gIEBWaWV3Q2hpbGQoXCJ2aWV3R3JpZFwiKSB2aWV3R3JpZENvbXBvbmVudD86IFRzaVZpZXdHcmlkQ29tcG9uZW50O1xyXG4gIHRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbjtcclxuXHJcbiAgdG9VcGxvYWRGaWxlRGF0YTogYW55O1xyXG4gIG9uUmVtb3ZlKCRldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnRvVXBsb2FkRmlsZURhdGEgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG4gIG9uQ2xlYXIoJGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMudG9VcGxvYWRGaWxlRGF0YSA9IHVuZGVmaW5lZDtcclxuICB9XHJcbiAgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgZmlsZTogRmlsZSA9IGV2ZW50LmN1cnJlbnRGaWxlc1swXTtcclxuICAgIHRoaXMudG9VcGxvYWRGaWxlRGF0YSA9IGZpbGU7XHJcbiAgfVxyXG4gIG9uSW1wb3J0RmlsZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UudXBsb2FkSnNvbkZpbGUodGhpcy50b1VwbG9hZEZpbGVEYXRhKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5lcnJvciA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2Vzcygnc2hhcmVkX2ltcG9ydE1vZGVsZV9qc29uX3VwbG9hZGVkX3N1Y2Nlc3NmdWxseScpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmdyaWRDb21wb25lbnQucmVmcmVzaCh0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIilcclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgIHRoaXMuZmlsZVVwbG9hZGVyLmNsZWFyKClcclxuICB9XHJcblxyXG4gIGNvbHVtbnNKc29uOiBBcnJheTxHcmlkQ29sdW1uPiA9IFtcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRNb2RlbGVfanNvbl9uYW1lXCIsXHJcbiAgICAgIGZpZWxkOiBcImpzb25GaWxlTmFtZVwiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6ICcnLFxyXG4gICAgICBmaWVsZDogJ2Zyb21Kc29uVG9EYXRhYmFzZScsXHJcbiAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICBidXR0b25JY29uOiAncGkgcGktYXJyb3ctY2lyY2xlLXVwJyxcclxuICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgcC1idXR0b24tc2Vjb25kYXJ5J1xyXG4gICAgfSxcclxuICBdO1xyXG4gIGtleTogc3RyaW5nID0gJ2pzb25GaWxlTmFtZSc7XHJcbiAgZ3JpZERhdGE6IGFueVxyXG5cclxuICBAVmlld0NoaWxkKCdpbXBvcnRGaWxlVG9FeGVjdXRlRmlsZVVwbG9hZCcpIGltcG9ydEZpbGVUb0V4ZWN1dGVGaWxlVXBsb2FkPzogRmlsZVVwbG9hZDtcclxuXHJcbiAgY29sdW1uczogYW55XHJcblxyXG4gIGlzSW1wb3J0RmlsZVRvRXhlY3V0ZVZpc2libGU6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIHRvVXBsb2FkVG9FeGVjdXRlRmlsZTogYW55ID0gdW5kZWZpbmVkXHJcbiAgdG9VcGxvYWRXaXRob3V0TW9kZWw6IGFueSA9IHVuZGVmaW5lZFxyXG4gIHRvSW1wb3J0TW9kZWxlVWlkPzogc3RyaW5nXHJcblxyXG4gIGNvbHVtbnNIaXN0b3J5OiBBcnJheTxHcmlkQ29sdW1uPiA9IFtcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRNb2RlbGVfY29kZV9pbXBvcnRcIixcclxuICAgICAgZmllbGQ6IFwiY29kZUltcG9ydFwiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydE1vZGVsZV9kYXRlX2ltcG9ydFwiLFxyXG4gICAgICBmaWVsZDogXCJkYXRlSW1wb3J0XCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0TW9kZWxlX25vbWJyZV9saWduZXNcIixcclxuICAgICAgZmllbGQ6IFwibm9tYnJlTGlnbmVzXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgIGZpZWxkOiAnZGVsZXRlRnJvbURhdGFiYXNlJyxcclxuICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgIGJ1dHRvbkljb246ICdwaSBwaS10cmFzaCcsXHJcbiAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXNlY29uZGFyeSdcclxuICAgIH0sXHJcbiAgXTtcclxuICBoaXN0b3J5R3JpZERhdGE6IGFueVxyXG4gIGltcG9ydEhpc3RvcnlLZXk6IHN0cmluZyA9ICdjb2RlSW1wb3J0JztcclxuXHJcbiAgaW1wb3J0UmVzdWx0RGF0YTogQXJyYXk8SW1wb3J0UmVzdWx0PiA9IFtdXHJcblxyXG4gIHNlYXJjaEZpZWxkczogQXJyYXk8U2VhcmNoRmllbGQ+ID0gW1xyXG4gIF1cclxuXHJcbiAgaW1wb3J0UmVzdWx0c0NvbHVtbnM6IEFycmF5PEdyaWRDb2x1bW4+ID0gW1xyXG4gICAge1xyXG4gICAgICBoZWFkZXI6ICcnLFxyXG4gICAgICBmaWVsZDogJ2NvbnN1bHREZXRhaWwnLFxyXG4gICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWV5ZScsXHJcbiAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXNlY29uZGFyeSdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0X3Jlc3VsdF9tb2RlbGVfaW1wb3J0X2xpYmVsbGVcIixcclxuICAgICAgZmllbGQ6IFwibW9kZWxlSW1wb3J0TGliZWxsZVwiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydF9yZXN1bHRfbW9kZWxlX3V0aWxpc2F0ZXVyXCIsXHJcbiAgICAgIGZpZWxkOiBcInVzZXJOYW1lXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0X3Jlc3VsdF9maWxlbmFtZVwiLFxyXG4gICAgICBmaWVsZDogXCJmaWxlTmFtZVwiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydF9yZXN1bHRfc3RhcnREYXRlXCIsXHJcbiAgICAgIGZpZWxkOiBcInN0YXJ0RGF0ZVwiLFxyXG4gICAgICB0eXBlOiBEaXNwbGF5VHlwZXMuREFURVRJTUVfRElTUExBWVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRfcmVzdWx0X2VuZF9kYXRlXCIsXHJcbiAgICAgIGZpZWxkOiBcImVuZERhdGVcIixcclxuICAgICAgdHlwZTogRGlzcGxheVR5cGVzLkRBVEVUSU1FX0RJU1BMQVlcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0X3Jlc3VsdF9zdGF0dXNcIixcclxuICAgICAgZmllbGQ6IFwic3RhdHVzXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0X3Jlc3VsdF9wcm9ncmVzc1wiLFxyXG4gICAgICBmaWVsZDogXCJwcm9ncmVzc1wiLFxyXG4gICAgICB0eXBlOiBEaXNwbGF5VHlwZXMuUkFURV9ESVNQTEFZXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydF9yZXN1bHRfdG90YWxfbGluZXNfbnVtYmVyXCIsXHJcbiAgICAgIGZpZWxkOiBcInRvdGFsTGluZXNOdW1iZXJcIixcclxuICAgICAgdHlwZTogRGlzcGxheVR5cGVzLklOVEVHRVJfRElTUExBWVxyXG4gICAgfVxyXG4gIF1cclxuXHJcbiAgcHJpdmF0ZSBfZGlhbG9nUmVmPzogRHluYW1pY0RpYWxvZ1JlZjtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIG1vZGVsZUltcG9ydFNlcnZpY2U6IE1vZGVsZUltcG9ydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IFRzaUNvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29uZmlnOiBEeW5hbWljRGlhbG9nQ29uZmlnLCBwcml2YXRlIF90c2lNb2RhbFNlcnZpY2U6IFRzaU1vZGFsU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZTogRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIHJlZj86IER5bmFtaWNEaWFsb2dSZWYpIHtcclxuICAgIHN1cGVyKHJlZiwgY29uZmlnKVxyXG4gICAgdGhpcy5zZWFyY2hGaWVsZHMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBJbnB1dFR5cGVzLlRFWFRfQk9YLFxyXG4gICAgICAgIGZpZWxkOiBcIkNsYXNzZVwiLFxyXG4gICAgICAgIGxhYmVsVmFsdWU6IFwiQ2xhc3NlXCIsXHJcbiAgICAgICAgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yVHlwZS5FUVVBTCxcclxuICAgICAgICBzdHlsZUNsYXNzOiAnY29sLTYnLFxyXG4gICAgICAgIGlucHV0U3R5bGVDbGFzczogJ2NvbC0zJyxcclxuICAgICAgICBsYWJlbFN0eWxlQ2xhc3M6ICdjb2wtMycsXHJcbiAgICAgICAgZGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuY29uZmlnPy5kYXRhPy5idXNpbmVzc0NsYXNzXHJcbiAgICAgIH1cclxuICAgIF1cclxuICAgIHRoaXMuY29sdW1ucyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGZpZWxkOiAnbm9tTW9kZWxlJyxcclxuICAgICAgICBoZWFkZXI6ICdOb20nXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBoZWFkZXI6ICcnLFxyXG4gICAgICAgIGZpZWxkOiAnZWRpdCcsXHJcbiAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWZpbGUtZWRpdCcsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgcC1idXR0b24tc3VjY2VzcycsXHJcbiAgICAgICAgdG9vbFRpcFRleHQ6ICdNb2RpZmllcidcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgICAgZmllbGQ6ICdleHBvcnRKc29uJyxcclxuICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICBidXR0b25JY29uOiAncGkgcGktZmlsZS1leHBvcnQnLFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWhlbHAnLFxyXG4gICAgICAgIHRvb2xUaXBUZXh0OiAnRXhwb3J0ZXIgSnNvbidcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgICAgZmllbGQ6ICdleHBvcnQnLFxyXG4gICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1maWxlLWV4Y2VsJyxcclxuICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBwLWJ1dHRvbi13YXJuaW5nJyxcclxuICAgICAgICB0b29sVGlwVGV4dDogJ0V4cG9ydGVyJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaGVhZGVyOiAnJyxcclxuICAgICAgICBmaWVsZDogJ2ltcG9ydCcsXHJcbiAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWZpbGUtaW1wb3J0JyxcclxuICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCcsXHJcbiAgICAgICAgdG9vbFRpcFRleHQ6ICdJbXBvcnRlcidcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgICAgZmllbGQ6ICdkZWxldGUnLFxyXG4gICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS10cmFzaCcsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgcC1idXR0b24tZGFuZ2VyJyxcclxuICAgICAgICB0b29sVGlwVGV4dDogJ1N1cHByaW1lcidcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgICAgZmllbGQ6ICdkb3dubG9hZEpzb24nLFxyXG4gICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1hcnJvdy1jaXJjbGUtZG93bicsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgcC1idXR0b24taGVscCcsXHJcbiAgICAgICAgdG9vbFRpcFRleHQ6ICdFeHBvcnQgSnNvbiBTZXJ2ZXInXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gIH1cclxuXHJcblxyXG4gIG92ZXJyaWRlIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIHN1cGVyLm5nT25Jbml0KClcclxuICAgIGxldCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLkdldEpzb25GaWxlcyh0aGlzLmNvbmZpZz8uZGF0YT8uZm9ybU5hbWUpKVxyXG4gICAgdGhpcy5ncmlkRGF0YSA9IGRhdGFcclxuICAgIGF3YWl0IHRoaXMuZ2V0SW1wb3J0UmVzdWx0KClcclxuICAgIGlmIChTZWdtZW50LnByb2R1Y3Rpb24pIHtcclxuICAgICAgbGV0IGJ1dHRvbkFkQnVpbHRpblRlbXBsYXRlc0luZGV4ID0gdGhpcy5jb2x1bW5zLmZpbmRJbmRleCgoY29sOiBHcmlkQ29sdW1uKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGNvbC5maWVsZCA9PSBcImRvd25sb2FkSnNvblwiXHJcbiAgICAgIH0pXHJcbiAgICAgIGlmIChidXR0b25BZEJ1aWx0aW5UZW1wbGF0ZXNJbmRleCAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMuY29sdW1ucy5zcGxpY2UoYnV0dG9uQWRCdWlsdGluVGVtcGxhdGVzSW5kZXgsIDEpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuaGlzdG9yeUdyaWREYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLkdldEltcG9ydEhpc3RvcnkodGhpcy5jb25maWc/LmRhdGE/LmJ1c2luZXNzQ2xhc3MpKVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVmcmVzaEltcG9ydEV4cG9ydERhdGEoKXtcclxuICAgIGxldCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLkdldEpzb25GaWxlcyh0aGlzLmNvbmZpZz8uZGF0YT8uZm9ybU5hbWUpKVxyXG4gICAgdGhpcy5ncmlkRGF0YSA9IGRhdGFcclxuICAgIGF3YWl0IHRoaXMuZ2V0SW1wb3J0UmVzdWx0KClcclxuICAgIHRoaXMuaGlzdG9yeUdyaWREYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLkdldEltcG9ydEhpc3RvcnkodGhpcy5jb25maWc/LmRhdGE/LmJ1c2luZXNzQ2xhc3MpKVxyXG4gIH1cclxuXHJcbiAgb3Blbk1vZGFsKCkge1xyXG4gICAgdGhpcy5fZGlhbG9nUmVmID0gdGhpcy5fdHNpTW9kYWxTZXJ2aWNlLm9wZW4oQ3JlYXRlT3JFZGl0TW9kZWxlSW1wb3J0Q29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBidXNpbmVzc0NsYXNzOiB0aGlzLmNvbmZpZz8uZGF0YT8uYnVzaW5lc3NDbGFzcyxcclxuICAgICAgICBmb3JtTmFtZTogdGhpcy5jb25maWc/LmRhdGE/LmZvcm1OYW1lLFxyXG4gICAgICAgIG1vZGU6IE1vZGVzLmNyZWF0ZVxyXG4gICAgICB9LFxyXG4gICAgICBzdHlsZUNsYXNzOiAnJyxcclxuICAgICAgd2lkdGg6ICc3NXZ3JyxcclxuICAgICAgaGVpZ2h0OiAnNTV2dycsXHJcbiAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fZGlhbG9nUmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHRoaXMudmlld0dyaWRDb21wb25lbnQpIHtcclxuICAgICAgICB0aGlzLnZpZXdHcmlkQ29tcG9uZW50LnJlZnJlc2godHJ1ZSlcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRJbXBvcnRSZXN1bHQoKSB7XHJcbiAgICBpZiAoIXRoaXMuY29uZmlnPy5kYXRhPy5idXNpbmVzc0NsYXNzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLmdldEltcG9ydFJlc3VsdEJ5QnVzaW5lc3NDbGFzcyh0aGlzLmNvbmZpZz8uZGF0YT8uYnVzaW5lc3NDbGFzcykpXHJcbiAgICAgIHRoaXMuaW1wb3J0UmVzdWx0RGF0YSA9IGRhdGFcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBidXR0b25DbGlja2VkKGRhdGE6IEJ1dHRvbkNsaWNrUmVzdWx0KSB7XHJcbiAgICBpZiAoZGF0YS5maWVsZCA9PSBcImVkaXRcIikge1xyXG4gICAgICB0aGlzLl9kaWFsb2dSZWYgPSB0aGlzLl90c2lNb2RhbFNlcnZpY2Uub3BlbihDcmVhdGVPckVkaXRNb2RlbGVJbXBvcnRDb21wb25lbnQsIHtcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBpZDogZGF0YS5rZXksXHJcbiAgICAgICAgICBidXNpbmVzc0NsYXNzOiB0aGlzLmNvbmZpZz8uZGF0YT8uYnVzaW5lc3NDbGFzcyxcclxuICAgICAgICAgIG1vZGU6IE1vZGVzLmVkaXRcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICcnLFxyXG4gICAgICAgIHdpZHRoOiAnNzV2dycsXHJcbiAgICAgICAgaGVpZ2h0OiAnNTV2dycsXHJcbiAgICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5fZGlhbG9nUmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy52aWV3R3JpZENvbXBvbmVudCkge1xyXG4gICAgICAgICAgdGhpcy52aWV3R3JpZENvbXBvbmVudC5yZWZyZXNoKHRydWUpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGRhdGEuZmllbGQgPT0gXCJkZWxldGVcIikge1xyXG4gICAgICB0aGlzLmRlbGV0ZU1vZGVsZUltcG9ydChkYXRhKVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZGF0YS5maWVsZCA9PSBcImltcG9ydFwiKSB7XHJcbiAgICAgIHRoaXMuaXNJbXBvcnRGaWxlVG9FeGVjdXRlVmlzaWJsZSA9IHRydWVcclxuICAgICAgdGhpcy50b0ltcG9ydE1vZGVsZVVpZCA9IGRhdGEua2V5XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChkYXRhLmZpZWxkID09IFwiZXhwb3J0XCIpIHtcclxuICAgICAgdGhpcy5leHBvcnREYXRhKGRhdGEua2V5KVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZGF0YS5maWVsZCA9PSBcImV4cG9ydEpzb25cIikge1xyXG4gICAgICB0aGlzLmV4cG9ydERhdGFKc29uKGRhdGEua2V5KVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZGF0YS5maWVsZCA9PSBcImRvd25sb2FkSnNvblwiKSB7XHJcbiAgICAgIHRoaXMuZXhwb3J0RGF0YUpzb25TZXJ2ZXIoZGF0YS5rZXkpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnREYXRhKGlkOiBzdHJpbmcpIHtcclxuICAgIGlmIChpZCAhPSB1bmRlZmluZWQgJiYgaWQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmlzbG9hZGluZyA9IHRydWVcclxuICAgICAgdGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLmV4ZWN1dGVFeHBvcnQoaWQsIHRoaXMuY29uZmlnLmRhdGE/LnBhZ2VkUmVxdWVzdCkuc3Vic2NyaWJlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUoZGF0YT8uZGF0YSlcclxuICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0RGF0YUpzb24oaWQ6IHN0cmluZykge1xyXG4gICAgaWYgKGlkICE9IHVuZGVmaW5lZCAmJiBpZCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuaXNsb2FkaW5nID0gdHJ1ZVxyXG4gICAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuZXhlY3V0ZUV4cG9ydEpzb24oaWQpLnN1YnNjcmliZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZG93bmxvYWRGaWxlKGRhdGE/LmRhdGEpXHJcbiAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2VcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4cG9ydERhdGFKc29uU2VydmVyKGlkOiBzdHJpbmcpIHtcclxuICAgIGlmIChpZCAhPSB1bmRlZmluZWQgJiYgaWQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmlzbG9hZGluZyA9IHRydWVcclxuICAgICAgdGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLmV4ZWN1dGVFeHBvcnRKc29uU2VydmVyKGlkKS5zdWJzY3JpYmUoXHJcblxyXG4gICAgICAgIHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2VcclxuICAgICAgICAgIHRoaXMucmVmcmVzaEdyaWQoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvd25sb2FkRmlsZShkYXRhOiBhbnkpIHtcclxuICAgIGxldCBibG9iVXJsID0gXCJkYXRhOmFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O2Jhc2U2NCxcIiArIGRhdGEuZmlsZUNvbnRlbnQ7XHJcbiAgICBsZXQgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgbGluay5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIGJsb2JVcmwpO1xyXG4gICAgbGluay5zZXRBdHRyaWJ1dGUoXCJkb3dubG9hZFwiLCBkYXRhLmZpbGVOYW1lKTtcclxuICAgIGxpbmsuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG4gIH1cclxuXHJcblxyXG4gIGRlbGV0ZU1vZGVsZUltcG9ydChkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKFxyXG4gICAgICBMb2NhbGl6YXRpb25LZXlzLmNvbmZpcm1EZWxldGUsXHJcbiAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQgJiYgZGF0YS5rZXkgIT0gbnVsbCAmJiBkYXRhLmtleSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5kZWxldGUoZGF0YS5rZXkpLnN1YnNjcmliZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZENvbXBvbmVudC5yZWZyZXNoKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoTG9jYWxpemF0aW9uS2V5cy5kZWxldGVkU3VjY2Vzc2Z1bGx5KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBvbkltcG9ydEZpbGVUb0V4ZWN1dGVfRmlsZVNlbGVjdGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBldmVudC5jdXJyZW50RmlsZXNbMF1cclxuICAgIHRoaXMudG9VcGxvYWRUb0V4ZWN1dGVGaWxlID0gZmlsZTtcclxuICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2VcclxuICB9XHJcblxyXG4gIG9uSW1wb3J0RmlsZVRvRXhlY3V0ZV9DbGVhcihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnRvVXBsb2FkVG9FeGVjdXRlRmlsZSA9IHVuZGVmaW5lZFxyXG4gICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZVxyXG4gIH1cclxuXHJcbiAgb25JbXBvcnRGaWxlVG9FeGVjdXRlX1JlbW92ZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnRvVXBsb2FkVG9FeGVjdXRlRmlsZSA9IHVuZGVmaW5lZFxyXG4gIH1cclxuXHJcbiAgb25JbXBvcnRGaWxlVG9FeGVjdXRlX0ltcG9ydEZpbGUoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMudG9JbXBvcnRNb2RlbGVVaWQgJiYgdGhpcy50b1VwbG9hZFRvRXhlY3V0ZUZpbGUpIHtcclxuICAgICAgdGhpcy5pc2xvYWRpbmcgPSB0cnVlXHJcbiAgICAgIHRoaXMuaXNJbXBvcnRGaWxlVG9FeGVjdXRlVmlzaWJsZSA9IGZhbHNlXHJcbiAgICAgIGxldCBleGVjdXRlSW1wb3J0UmVxdWVzdDogRXhlY3V0ZUltcG9ydFJlcXVlc3QgPSBuZXcgRXhlY3V0ZUltcG9ydFJlcXVlc3QoKVxyXG4gICAgICBleGVjdXRlSW1wb3J0UmVxdWVzdC5tb2RlbGVJbXBvcnRVaWQgPSB0aGlzLnRvSW1wb3J0TW9kZWxlVWlkO1xyXG4gICAgICBleGVjdXRlSW1wb3J0UmVxdWVzdC5maWxlTmFtZSA9IHRoaXMudG9VcGxvYWRUb0V4ZWN1dGVGaWxlPy5uYW1lXHJcblxyXG4gICAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuZXhlY3V0ZUltcG9ydChleGVjdXRlSW1wb3J0UmVxdWVzdCwgdGhpcy50b1VwbG9hZFRvRXhlY3V0ZUZpbGUpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmV4dDogYXN5bmMgKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdClcclxuICAgICAgICAgICAgICB0aGlzLmlzSW1wb3J0RmlsZVRvRXhlY3V0ZVZpc2libGUgPSBmYWxzZVxyXG4gICAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2VcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UoZXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25JbXBvcnRGaWxlV2l0aG91dE1vZGVsX0ZpbGVTZWxlY3RlZChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBmaWxlOiBGaWxlID0gZXZlbnQuY3VycmVudEZpbGVzWzBdO1xyXG4gICAgdGhpcy50b1VwbG9hZFdpdGhvdXRNb2RlbCA9IGZpbGU7XHJcbiAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlXHJcbiAgfVxyXG5cclxuICBvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfQ2xlYXIoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy50b1VwbG9hZFdpdGhvdXRNb2RlbCA9IHVuZGVmaW5lZFxyXG4gICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZVxyXG4gIH1cclxuXHJcbiAgb25JbXBvcnRGaWxlV2l0aG91dE1vZGVsX1JlbW92ZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnRvVXBsb2FkV2l0aG91dE1vZGVsID0gdW5kZWZpbmVkXHJcbiAgfVxyXG5cclxuICBvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfSW1wb3J0RmlsZShldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy50b1VwbG9hZFdpdGhvdXRNb2RlbCkge1xyXG4gICAgICB0aGlzLmlzbG9hZGluZyA9IHRydWVcclxuXHJcbiAgICAgIGxldCBleGVjdXRlSW1wb3J0UmVxdWVzdDogRXhlY3V0ZUltcG9ydFJlcXVlc3QgPSBuZXcgRXhlY3V0ZUltcG9ydFJlcXVlc3QoKVxyXG4gICAgICBleGVjdXRlSW1wb3J0UmVxdWVzdC5tb2RlbGVJbXBvcnRVaWQgPSB1bmRlZmluZWQ7XHJcbiAgICAgIGV4ZWN1dGVJbXBvcnRSZXF1ZXN0LmZpbGVOYW1lID0gdGhpcy50b1VwbG9hZFdpdGhvdXRNb2RlbD8ubmFtZVxyXG5cclxuICAgICAgdGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLmV4ZWN1dGVJbXBvcnRXaXRob3V0TW9kZWwoZXhlY3V0ZUltcG9ydFJlcXVlc3QsIHRoaXMudG9VcGxvYWRXaXRob3V0TW9kZWwpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmV4dDogYXN5bmMgKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdClcclxuICAgICAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlXHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZEdyaWREYXRhKCk6IHZvaWQge1xyXG4gICAgdGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLkdldEpzb25GaWxlcyh0aGlzLmNvbmZpZz8uZGF0YT8uZm9ybU5hbWUpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5ncmlkRGF0YSA9IGRhdGE7XHJcbiAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgZ3JpZCBkYXRhJywgZXJyb3IpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoR3JpZCgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZEdyaWREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDb25zdWx0SW1wb3J0UmVzdWx0QnV0dG9uQ2xpY2tlZChldmVudDogQnV0dG9uQ2xpY2tSZXN1bHQpIHtcclxuICAgIHRoaXMuX3RzaU1vZGFsU2VydmljZS5vcGVuKEFsZXJ0SW1wb3J0TWVzc2FnZUNvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgaWQ6IGV2ZW50LmtleSxcclxuICAgICAgfSxcclxuICAgICAgY2xvc2FibGU6IHRydWUsXHJcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcclxuICAgICAgd2lkdGg6ICczNXZ3JyxcclxuICAgICAgaGVpZ2h0OiAnMjV2dycsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQnV0dG9uQ29sdW1uRXhlY3V0ZUNsaWNrZWQoZXZlbnQ6IEJ1dHRvbkNsaWNrUmVzdWx0KSB7XHJcbiAgICBpZiAoZXZlbnQuZmllbGQgPT0gJ2Zyb21Kc29uVG9EYXRhYmFzZScpIHtcclxuICAgICAgdGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLmV4ZWN1dGVJbXBvcnRKc29uKGV2ZW50LmtleSwgdGhpcy5jb25maWc/LmRhdGE/LmZvcm1OYW1lKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JpZENvbXBvbmVudC5yZWZyZXNoKHRydWUpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW1wb3J0aW5nIGpzb246JywgZXJyb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5maWVsZCA9PSAnZGVsZXRlRnJvbURhdGFiYXNlJykge1xyXG4gICAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybShcclxuICAgICAgICBMb2NhbGl6YXRpb25LZXlzLmNvbmZpcm1EZWxldGUsXHJcbiAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgIChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLmRlbGV0ZUltcG9ydChldmVudC5rZXksIHRoaXMuY29uZmlnPy5kYXRhPy5idXNpbmVzc0NsYXNzKVxyXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICBhc3luYyByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZENvbXBvbmVudC5yZWZyZXNoKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmhpc3RvcnlHcmlkRGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5HZXRJbXBvcnRIaXN0b3J5KHRoaXMuY29uZmlnPy5kYXRhPy5idXNpbmVzc0NsYXNzKSlcclxuICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoTG9jYWxpemF0aW9uS2V5cy5kZWxldGVkU3VjY2Vzc2Z1bGx5KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGltcG9ydGluZyBqc29uOicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8cC10YWJWaWV3PlxyXG4gIDxwLXRhYlBhbmVsIFtoZWFkZXJdPVwiJ3NoYXJlZF9leGVjdXRlX2ltcG9ydF9tb2RlbF9pbXBvcnRfZXhwb3J0JyB8IGxvY2FsaXplXCIgY2xhc3M9XCJwdC0zIHB4LTJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgIDxkaXYgKmJ1c3k9XCJpc2xvYWRpbmdcIj48L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBjb2wtMTBcIj5cclxuICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxUc2ktTGFiZWwgY2xhc3M9XCJjb2wtMlwiIFtsYWJlbFZhbHVlXT1cIidzaGFyZWRfcmVwb3J0aW5nX2Zvcm0nXCI+XHJcbiAgICAgICAgICAgIDwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICA8IS0tIDxwLWRyb3Bkb3duIGNsYXNzPVwiY29sLTEwIHRzaS1jb21wb25lbnRcIiBjbGFzcz1cInRzaS1jb21wb25lbnRcIiBzdHlsZUNsYXNzPVwidHNpLWNvbXBvbmVudFwiIGFwcGVuZFRwPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICBvcHRpb25MYWJlbD1cInZhbHVlXCIgb3B0aW9uVmFsdWU9XCJrZXlcIiBbZmlsdGVyXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgZmlsdGVyQnk9XCJ2YWx1ZVwiIFtzaG93Q2xlYXJdPVwidHJ1ZVwiIHBsYWNlaG9sZGVyPVwie3snc2hhcmVkX3JlcG9ydGluZ19zZWxlY3RfZm9ybScgfCBsb2NhbGl6ZX19XCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgPC9wLWRyb3Bkb3duPiAtLT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxwLXRvb2xiYXIgc3R5bGVDbGFzcz1cIm1iLTQgZ2FwLTJcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwibGVmdFwiPlxyXG4gICAgICAgICAgPFRzaS1CdXR0b24gW3RleHRdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfYWRkX3JlcG9ydCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIGljb249XCJwLWJ1dHRvbi1pY29uIHAtYnV0dG9uLWljb24tbGVmdCBwaSBwaS1wbHVzXCJcclxuICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtZWxlbWVudCBwLWJ1dHRvbi1zdWNjZXNzIG1yLTIgcC1idXR0b24gcC1jb21wb25lbnQgbmctc3Rhci1pbnNlcnRlZCBwLWJ1dHRvbi1sYWJlbFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuTW9kYWwoKVwiPjwvVHNpLUJ1dHRvbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJyaWdodFwiPlxyXG4gICAgICAgICAgPHAtZmlsZVVwbG9hZCAjZmlsZVVwbG9hZCBuYW1lPVwiZGVtb1tdXCIgKG9uQmVmb3JlVXBsb2FkKT1cIm9uSW1wb3J0RmlsZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKG9uU2VsZWN0KT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIiAob25DbGVhcik9XCJvbkNsZWFyKCRldmVudClcIiAob25SZW1vdmUpPVwib25SZW1vdmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFttdWx0aXBsZV09XCJmYWxzZVwiIGFjY2VwdD1cImFwcGxpY2F0aW9uL2pzb25cIiBbbWF4RmlsZVNpemVdPVwiMTAwMDAwMFwiXHJcbiAgICAgICAgICAgIFtpbnZhbGlkRmlsZVNpemVNZXNzYWdlU3VtbWFyeV09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV9zaXplX21lc3NhZ2Vfc3VtbWFyeScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtpbnZhbGlkRmlsZVNpemVNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3NpemVfbWVzc2FnZV9kZXRhaWwnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbaW52YWxpZEZpbGVUeXBlTWVzc2FnZVN1bW1hcnldPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfdHlwZV9tZXNzYWdlX3N1bW1hcnknIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VEZXRhaWxdPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfbGltaXRfbWVzc2FnZV9kZXRhaWwnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VTdW1tYXJ5XT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX2xpbWl0X21lc3NhZ2Vfc3VtbWFyeScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtpbnZhbGlkRmlsZVR5cGVNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3R5cGVfbWVzc2FnZV9kZXRhaWwnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbY2hvb3NlSWNvbl09XCIncGkgcGktcGFwZXJjbGlwJ1wiIGNhbmNlbFN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1zZWNvbmRhcnlcIiB1cGxvYWRTdHlsZUNsYXNzPVwicC1idXR0b24taGVscFwiXHJcbiAgICAgICAgICAgIHJlbW92ZVN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1kYW5nZXJcIiBbY2hvb3NlTGFiZWxdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfY2hvb3NlX3JlcG9ydF9maWxlJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgW3VwbG9hZExhYmVsXT1cIidzaGFyZWRfcmVwb3J0aW5nX2ltcG9ydF9yZXBvcnQnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbY2FuY2VsTGFiZWxdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfY2FuY2VsX2Nob29zZV9yZXBvcnRfZmlsZScgfCBsb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJ0b1VwbG9hZEZpbGVEYXRhXCIgcFRlbXBsYXRlPVwiZmlsZXVwbG9hZC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L3AtZmlsZVVwbG9hZD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L3AtdG9vbGJhcj5cclxuXHJcbiAgICAgIDx0c2ktdmlldy1ncmlkICN2aWV3R3JpZCBbaGVhZGVyXT1cIidzaGFyZWRfZXhlY3V0ZV9pbXBvcnRfbW9kZWxfaW1wb3J0X2V4cG9ydCcgIHxsb2NhbGl6ZVwiXHJcbiAgICAgICAgW3NlYXJjaEZpZWxkc109XCJzZWFyY2hGaWVsZHNcIiBbc2hvd0NvbnN1bHRCdXR0b25dPVwiZmFsc2VcIiBbZ2V0RGF0YUZyb21BcGldPVwidHJ1ZVwiXHJcbiAgICAgICAgW2NydWRTZXJ2aWNlXT1cIm1vZGVsZUltcG9ydFNlcnZpY2VcIiAoYnV0dG9uQ29sdW1uQ2xpY2tlZCk9XCJidXR0b25DbGlja2VkKCRldmVudClcIlxyXG4gICAgICAgIFtmb3JtTmFtZV09XCInYXBwLW1hbmFnZS1pbXBvcnQtZXhwb3J0J1wiIFtjb2x1bW5zXT1cImNvbHVtbnNcIiBrZXk9XCJ1aWRcIj5cclxuICAgICAgPC90c2ktdmlldy1ncmlkPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9wLXRhYlBhbmVsPlxyXG5cclxuICA8cC10YWJQYW5lbCBbaGVhZGVyXT1cIidzaGFyZWRfZXhlY3V0ZV9pbXBvcnRfbW9kZWxfaW1wb3J0X2V4cG9ydF9kZWZhdWx0JyB8IGxvY2FsaXplXCIgY2xhc3M9XCJwdC0zIHB4LTJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgIDx0c2ktdmlldy1ncmlkIGNsYXNzPVwiY29sLTEyXCIgW2hlYWRlcl09XCInc2hhcmVkX2V4ZWN1dGVfaW1wb3J0X21vZGVsX2ltcG9ydF9leHBvcnRfZGVmYXVsdCcgIHxsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc0pzb25cIiBbZ2V0RGF0YUZyb21BcGldPVwiZmFsc2VcIiBbZ3JpZERhdGFdPVwiZ3JpZERhdGFcIiBba2V5XT1cImtleVwiXHJcbiAgICAgICAgW2Zvcm1OYW1lXT1cIidtb2RlbGUtaW1wb3J0LXBhci1kZWZhdWx0J1wiXHJcbiAgICAgICAgKGJ1dHRvbkNvbHVtbkNsaWNrZWQpPVwiaGFuZGxlQnV0dG9uQ29sdW1uRXhlY3V0ZUNsaWNrZWQoJGV2ZW50KVwiPjwvdHNpLXZpZXctZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvcC10YWJQYW5lbD5cclxuXHJcbiAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInc2hhcmVkX2V4ZWN1dGVfaW1wb3J0X2hpc3RvcnknIHwgbG9jYWxpemVcIiBjbGFzcz1cInB0LTMgcHgtMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgPHRzaS12aWV3LWdyaWQgY2xhc3M9XCJjb2wtMTJcIiBbaGVhZGVyXT1cIidzaGFyZWRfZXhlY3V0ZV9pbXBvcnRfaGlzdG9yeScgIHxsb2NhbGl6ZVwiIFtjb2x1bW5zXT1cImNvbHVtbnNIaXN0b3J5XCJcclxuICAgICAgICBbZ2V0RGF0YUZyb21BcGldPVwiZmFsc2VcIiBbZ3JpZERhdGFdPVwiaGlzdG9yeUdyaWREYXRhXCIgW2tleV09XCJpbXBvcnRIaXN0b3J5S2V5XCJcclxuICAgICAgICBbZm9ybU5hbWVdPVwiJ21vZGVsZS1pbXBvcnQtcGFyLWRlZmF1bHQnXCJcclxuICAgICAgICAoYnV0dG9uQ29sdW1uQ2xpY2tlZCk9XCJoYW5kbGVCdXR0b25Db2x1bW5FeGVjdXRlQ2xpY2tlZCgkZXZlbnQpXCI+PC90c2ktdmlldy1ncmlkPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9wLXRhYlBhbmVsPlxyXG5cclxuICA8cC10YWJQYW5lbCBbaGVhZGVyXT1cIidzaGFyZWRfZXhlY3V0ZV9pbXBvcnRfd2l0aG91dF9tb2RlbCcgfCBsb2NhbGl6ZVwiIGNsYXNzPVwicHQtMyBweC0yXCI+XHJcbiAgICA8ZGl2ICpidXN5PVwiaXNsb2FkaW5nXCI+PC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiPlxyXG4gICAgICA8cC1maWxlVXBsb2FkICNpbXBvcnRGaWxlVG9SZXBvcnRGaWxlVXBsb2FkIG5hbWU9XCJpbXBvcnRGaWxlVG9SZXBvcnRcIiBbbXVsdGlwbGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIChvblNlbGVjdCk9XCJvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfRmlsZVNlbGVjdGVkKCRldmVudClcIiAob25DbGVhcik9XCJvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfQ2xlYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgKG9uQmVmb3JlVXBsb2FkKT1cIm9uSW1wb3J0RmlsZVdpdGhvdXRNb2RlbF9JbXBvcnRGaWxlKCRldmVudClcIlxyXG4gICAgICAgIChvblJlbW92ZSk9XCJvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfUmVtb3ZlKCRldmVudClcIiBhY2NlcHQ9XCIueGxzLC54bHN4XCIgW21heEZpbGVTaXplXT1cIjEwMDAwMDAwXCJcclxuICAgICAgICBbaW52YWxpZEZpbGVTaXplTWVzc2FnZVN1bW1hcnldPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfc2l6ZV9tZXNzYWdlX3N1bW1hcnknIHwgbG9jYWxpemVcIlxyXG4gICAgICAgIFtpbnZhbGlkRmlsZVNpemVNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3NpemVfbWVzc2FnZV9kZXRhaWwnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgIFtpbnZhbGlkRmlsZVR5cGVNZXNzYWdlU3VtbWFyeV09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV90eXBlX21lc3NhZ2Vfc3VtbWFyeScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2ludmFsaWRGaWxlTGltaXRNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX2xpbWl0X21lc3NhZ2VfZGV0YWlsJyB8IGxvY2FsaXplXCJcclxuICAgICAgICBbaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VTdW1tYXJ5XT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX2xpbWl0X21lc3NhZ2Vfc3VtbWFyeScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2ludmFsaWRGaWxlVHlwZU1lc3NhZ2VEZXRhaWxdPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfdHlwZV9tZXNzYWdlX2RldGFpbCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2Nob29zZUljb25dPVwiJ3BpIHBpLXBhcGVyY2xpcCdcIiBjYW5jZWxTdHlsZUNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5XCIgdXBsb2FkU3R5bGVDbGFzcz1cInAtYnV0dG9uLWhlbHBcIlxyXG4gICAgICAgIHJlbW92ZVN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1kYW5nZXJcIiBbY2hvb3NlTGFiZWxdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfY2hvb3NlX3JlcG9ydF9maWxlJyB8IGxvY2FsaXplXCJcclxuICAgICAgICBbdXBsb2FkTGFiZWxdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfaW1wb3J0X3JlcG9ydCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2NhbmNlbExhYmVsXT1cIidzaGFyZWRfcmVwb3J0aW5nX2NhbmNlbF9jaG9vc2VfcmVwb3J0X2ZpbGUnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZmlsZXVwbG9hZC1jb250ZW50XCI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9wLWZpbGVVcGxvYWQ+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC10YWJQYW5lbD5cclxuXHJcbiAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInc2hhcmVkX2ltcG9ydF9yZXN1bHRfaGVhZGVyJyB8IGxvY2FsaXplXCIgY2xhc3M9XCJwdC0zIHB4LTJcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicC0xXCI+XHJcbiAgICAgIDxUc2ktQnV0dG9uIChvbkNsaWNrKT1cImdldEltcG9ydFJlc3VsdCgpXCJcclxuICAgICAgICBzdHlsZUNsYXNzPVwicC1lbGVtZW50IHAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXJvdW5kZWQgbXItMiBwLWJ1dHRvbiBwLWNvbXBvbmVudCBwLWJ1dHRvbi1pY29uLW9ubHlcIlxyXG4gICAgICAgIFt0b29sdGlwVGV4dF09XCInc2hhcmVkX2ltcG9ydF9leHBvcnRfcmVmcmVzaCdcIiBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIlxyXG4gICAgICAgIGljb249XCJwLWJ1dHRvbi1pY29uIHBpIHBpLXJlZnJlc2hcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXJvdW5kZWQgbXItMlwiPjwvVHNpLUJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgIDx0c2ktdmlldy1ncmlkIGNsYXNzPVwiY29sLTEyXCIgW2hlYWRlcl09XCInc2hhcmVkX2ltcG9ydF9yZXN1bHRfaGVhZGVyJyAgfGxvY2FsaXplXCIgW2NvbHVtbnNdPVwiaW1wb3J0UmVzdWx0c0NvbHVtbnNcIlxyXG4gICAgICAgIFtnZXREYXRhRnJvbUFwaV09XCJmYWxzZVwiIFtncmlkRGF0YV09XCJpbXBvcnRSZXN1bHREYXRhXCIgW2tleV09XCIndWlkJ1wiIFtmb3JtTmFtZV09XCInbW9kZWxlLWltcG9ydC1yZXN1bHQtaW1wb3J0J1wiXHJcbiAgICAgICAgKGJ1dHRvbkNvbHVtbkNsaWNrZWQpPVwiaGFuZGxlQ29uc3VsdEltcG9ydFJlc3VsdEJ1dHRvbkNsaWNrZWQoJGV2ZW50KVwiPjwvdHNpLXZpZXctZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvcC10YWJQYW5lbD5cclxuXHJcbjwvcC10YWJWaWV3PlxyXG5cclxuPGRpdiBjbGFzcz1cInAtMVwiPlxyXG4gIDxUc2ktQnV0dG9uXHJcbiAgICBzdHlsZUNsYXNzPVwicC1lbGVtZW50IHAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXJvdW5kZWQgbXItMiBwLWJ1dHRvbiBwLWNvbXBvbmVudCBwLWJ1dHRvbi1pY29uLW9ubHlcIlxyXG4gICAgW3Rvb2x0aXBUZXh0XT1cIidzaGFyZWRfaW1wb3J0X2V4cG9ydF9yZWZyZXNoJ1wiIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiXHJcbiAgICBpY29uPVwicC1idXR0b24taWNvbiBwaSBwaS1yZWZyZXNoXCIgKG9uQ2xpY2spPVwicmVmcmVzaEltcG9ydEV4cG9ydERhdGEoKVwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yYWlzZWQgcC1idXR0b24tcm91bmRlZCBtci0yXCI+PC9Uc2ktQnV0dG9uPlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gZGlhbG9nIHRvIGltcG9ydCBmaWxlIHRvIHJlcG9ydCAtLT5cclxuPHAtZGlhbG9nIGhlYWRlcj1cInt7J3NoYXJlZF9yZXBvcnRpbmdfc2VsZWN0X2ZpbGVfdG9faW1wb3J0X2ludG9fcmVwb3J0JyB8IGxvY2FsaXplfX1cIlxyXG4gIFsodmlzaWJsZSldPVwiaXNJbXBvcnRGaWxlVG9FeGVjdXRlVmlzaWJsZVwiIFtzdHlsZV09XCJ7d2lkdGg6ICc1MHZ3J31cIj5cclxuICA8IS0tIDxUc2ktTW9kYWwtSGVhZGVyIChvbkNsb3NlQ2xpY2spPVwib25JbXBvcnRGaWxlVG9SZXBvcnRNb2RhbENhbmNlbENsaWNrKClcIiBbaW5wdXRUaXRsZV09XCInc2hhcmVkX3JlcG9ydGluZ19zZWxlY3RfZmlsZV90b19pbXBvcnRfaW50b19yZXBvcnQnXCI+PC9Uc2ktTW9kYWwtSGVhZGVyPiAtLT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIj5cclxuICAgIDxwLWZpbGVVcGxvYWQgI2ltcG9ydEZpbGVUb1JlcG9ydEZpbGVVcGxvYWQgbmFtZT1cImltcG9ydEZpbGVUb1JlcG9ydFwiIFttdWx0aXBsZV09XCJmYWxzZVwiXHJcbiAgICAgIChvblNlbGVjdCk9XCJvbkltcG9ydEZpbGVUb0V4ZWN1dGVfRmlsZVNlbGVjdGVkKCRldmVudClcIiAob25DbGVhcik9XCJvbkltcG9ydEZpbGVUb0V4ZWN1dGVfQ2xlYXIoJGV2ZW50KVwiXHJcbiAgICAgIChvbkJlZm9yZVVwbG9hZCk9XCJvbkltcG9ydEZpbGVUb0V4ZWN1dGVfSW1wb3J0RmlsZSgkZXZlbnQpXCIgKG9uUmVtb3ZlKT1cIm9uSW1wb3J0RmlsZVRvRXhlY3V0ZV9SZW1vdmUoJGV2ZW50KVwiXHJcbiAgICAgIGFjY2VwdD1cIi54bHMsLnhsc3hcIiBbbWF4RmlsZVNpemVdPVwiMTAwMDAwMDBcIlxyXG4gICAgICBbaW52YWxpZEZpbGVTaXplTWVzc2FnZVN1bW1hcnldPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfc2l6ZV9tZXNzYWdlX3N1bW1hcnknIHwgbG9jYWxpemVcIlxyXG4gICAgICBbaW52YWxpZEZpbGVTaXplTWVzc2FnZURldGFpbF09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV9zaXplX21lc3NhZ2VfZGV0YWlsJyB8IGxvY2FsaXplXCJcclxuICAgICAgW2ludmFsaWRGaWxlVHlwZU1lc3NhZ2VTdW1tYXJ5XT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3R5cGVfbWVzc2FnZV9zdW1tYXJ5JyB8IGxvY2FsaXplXCJcclxuICAgICAgW2ludmFsaWRGaWxlTGltaXRNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX2xpbWl0X21lc3NhZ2VfZGV0YWlsJyB8IGxvY2FsaXplXCJcclxuICAgICAgW2ludmFsaWRGaWxlTGltaXRNZXNzYWdlU3VtbWFyeV09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV9saW1pdF9tZXNzYWdlX3N1bW1hcnknIHwgbG9jYWxpemVcIlxyXG4gICAgICBbaW52YWxpZEZpbGVUeXBlTWVzc2FnZURldGFpbF09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV90eXBlX21lc3NhZ2VfZGV0YWlsJyB8IGxvY2FsaXplXCJcclxuICAgICAgW2Nob29zZUljb25dPVwiJ3BpIHBpLXBhcGVyY2xpcCdcIiBjYW5jZWxTdHlsZUNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5XCIgdXBsb2FkU3R5bGVDbGFzcz1cInAtYnV0dG9uLWhlbHBcIlxyXG4gICAgICByZW1vdmVTdHlsZUNsYXNzPVwicC1idXR0b24tZGFuZ2VyXCIgW2Nob29zZUxhYmVsXT1cIidzaGFyZWRfcmVwb3J0aW5nX2Nob29zZV9yZXBvcnRfZmlsZScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgIFt1cGxvYWRMYWJlbF09XCInc2hhcmVkX3JlcG9ydGluZ19pbXBvcnRfcmVwb3J0JyB8IGxvY2FsaXplXCJcclxuICAgICAgW2NhbmNlbExhYmVsXT1cIidzaGFyZWRfcmVwb3J0aW5nX2NhbmNlbF9jaG9vc2VfcmVwb3J0X2ZpbGUnIHwgbG9jYWxpemVcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZpbGV1cGxvYWQtY29udGVudFwiPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9wLWZpbGVVcGxvYWQ+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG4gIDwhLS0gPFRzaS1Nb2RhbC1Gb290ZXIgKG9uQ2FuY2VsQ2xpY2spPVwib25JbXBvcnRGaWxlVG9SZXBvcnRNb2RhbENhbmNlbENsaWNrKClcIlxyXG4gICAgKG9uU2F2ZUNsaWNrKT1cIm9uSW1wb3J0RmlsZVRvUmVwb3J0TW9kYWxTYXZlQ2xpY2soKVwiXHJcbiAgICBbc2F2ZURpc2FibGVkXT1cIiF0b1VwbG9hZFRvVXBkYXRlUmVwb3J0RmlsZURhdGFcIj48L1RzaS1Nb2RhbC1Gb290ZXI+IC0tPlxyXG5cclxuPC9wLWRpYWxvZz4iXX0=