@valtimo/zgw 12.4.1 → 12.4.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.
@@ -281,7 +281,9 @@ export class DossierDetailTabDocumentenApiDocumentsComponent {
281
281
  return file.status === 'definitief';
282
282
  }
283
283
  downloadDocument(relatedFile, forceDownload) {
284
- this.downloadService.downloadFile(`/api/v1/documenten-api/${relatedFile.pluginConfigurationId}/files/${relatedFile.fileId}/download`, relatedFile.bestandsnaam ?? '', forceDownload);
284
+ this.documentId$.pipe(take(1)).subscribe(documentId => {
285
+ this.downloadService.downloadFile(`/api/v1/zaken-api/${relatedFile.pluginConfigurationId}/case-document/${documentId}/files/${relatedFile.fileId}/download`, relatedFile.bestandsnaam ?? '', forceDownload);
286
+ });
285
287
  }
286
288
  openQueryParamsSubscription() {
287
289
  this._subscriptions.add(combineLatest([
@@ -362,4 +364,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
362
364
  type: ViewChild,
363
365
  args: ['translationTemplate']
364
366
  }] } });
365
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vemd3L3NyYy9saWIvbW9kdWxlcy9kb2N1bWVudGVuLWFwaS9jb21wb25lbnRzL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy9kb2N1bWVudGVuLWFwaS1kb2N1bWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby96Z3cvc3JjL2xpYi9tb2R1bGVzL2RvY3VtZW50ZW4tYXBpL2NvbXBvbmVudHMvZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsU0FBUyxFQUE4QyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFL0YsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBQyxlQUFlLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUVMLGdCQUFnQixFQUVoQix1QkFBdUIsRUFDdkIsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUl4QixRQUFRLEdBQ1QsTUFBTSxxQkFBcUIsQ0FBQztBQUk3QixPQUFPLEVBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQWMsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RixPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFFYixFQUFFLEVBQ0YsYUFBYSxFQUNiLE9BQU8sRUFDUCxZQUFZLEdBQ2IsTUFBTSxNQUFNLENBQUM7QUFDZCxP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LE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQyxPQUFPO2dCQUNMLFNBQVMsRUFBRSxJQUFJO2dCQUNmLEtBQUssRUFBRTtvQkFDTCxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztvQkFDcEIsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQWM7aUJBQ3ZDO2FBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7K0dBbGFVLCtDQUErQzttR0FBL0MsK0NBQStDLG9VQzVFNUQseTZNQXNMQSwraENEckhJLFlBQVkseVpBQ1osZ0JBQWdCLDIxQkFDaEIsbUNBQW1DLHlmQUNuQyxZQUFZLGdNQUNaLFVBQVUsNE5BQ1YsZUFBZSw0RkFDZiw0QkFBNEIsc0hBQzVCLFlBQVksbVFBQ1osdUJBQXVCOzs0RkFHZCwrQ0FBK0M7a0JBakIzRCxTQUFTOytCQUNFLHFEQUFxRCxjQUduRCxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLG1DQUFtQzt3QkFDbkMsWUFBWTt3QkFDWixVQUFVO3dCQUNWLGVBQWU7d0JBQ2YsNEJBQTRCO3dCQUM1QixZQUFZO3dCQUNaLHVCQUF1QjtxQkFDeEI7K1pBR3VCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDWSxtQkFBbUI7c0JBQXBELFNBQVM7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7RmlsdGVyMTYsIFRhZ0dyb3VwMTYsIFVwbG9hZDE2fSBmcm9tICdAY2FyYm9uL2ljb25zJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGlvbkl0ZW0sXG4gIENhcmJvbkxpc3RNb2R1bGUsXG4gIENvbHVtbkNvbmZpZyxcbiAgQ29uZmlybWF0aW9uTW9kYWxNb2R1bGUsXG4gIERFRkFVTFRfUEFHSU5BVElPTixcbiAgREVGQVVMVF9QQUdJTkFUT1JfQ09ORklHLFxuICBEb2N1bWVudGVuQXBpTWV0YWRhdGEsXG4gIFBhZ2luYXRpb24sXG4gIFNvcnRTdGF0ZSxcbiAgVmlld1R5cGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlLCBEaXJlY3Rpb259IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge0Rvd25sb2FkU2VydmljZSwgVXBsb2FkUHJvdmlkZXJTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9yZXNvdXJjZSc7XG5pbXBvcnQge1VzZXJQcm92aWRlclNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3NlY3VyaXR5JztcbmltcG9ydCB7QnV0dG9uTW9kdWxlLCBEaWFsb2dNb2R1bGUsIEljb25Nb2R1bGUsIEljb25TZXJ2aWNlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIFJlcGxheVN1YmplY3QsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmlwdGlvbixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRha2UsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQ09MVU1OX1ZJRVdfVFlQRVMsXG4gIENvbmZpZ3VyZWRDb2x1bW4sXG4gIERPQ1VNRU5URU5fQ09MVU1OX0tFWVMsXG4gIERvY3VtZW50ZW5BcGlGaWx0ZXJNb2RlbCxcbiAgRG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlLFxuICBTdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMsXG59IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0RvY3VtZW50ZW5BcGlDb2x1bW5TZXJ2aWNlLCBEb2N1bWVudGVuQXBpVmVyc2lvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7RG9jdW1lbnRlbkFwaURvY3VtZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvZG9jdW1lbnRlbi1hcGktZG9jdW1lbnQuc2VydmljZSc7XG5pbXBvcnQge0RvY3VtZW50ZW5BcGlGaWx0ZXJDb21wb25lbnR9IGZyb20gJy4uL2RvY3VtZW50ZW4tYXBpLWZpbHRlci9kb2N1bWVudGVuLWFwaS1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7RG9jdW1lbnRlbkFwaU1ldGFkYXRhTW9kYWxDb21wb25lbnR9IGZyb20gJy4uL2RvY3VtZW50ZW4tYXBpLW1ldGFkYXRhLW1vZGFsL2RvY3VtZW50ZW4tYXBpLW1ldGFkYXRhLW1vZGFsLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1kZXRhaWwtdGFiLWRvY3VtZW50ZW4tYXBpLWRvY3VtZW50cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2N1bWVudGVuLWFwaS1kb2N1bWVudHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb2N1bWVudGVuLWFwaS1kb2N1bWVudHMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBDYXJib25MaXN0TW9kdWxlLFxuICAgIERvY3VtZW50ZW5BcGlNZXRhZGF0YU1vZGFsQ29tcG9uZW50LFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBJY29uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBEb2N1bWVudGVuQXBpRmlsdGVyQ29tcG9uZW50LFxuICAgIERpYWxvZ01vZHVsZSxcbiAgICBDb25maXJtYXRpb25Nb2RhbE1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llckRldGFpbFRhYkRvY3VtZW50ZW5BcGlEb2N1bWVudHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgndHJhbnNsYXRpb25UZW1wbGF0ZScpIHRyYW5zbGF0aW9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnREZWZpbml0aW9uTmFtZSQgPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5kb2N1bWVudERlZmluaXRpb25OYW1lKSxcbiAgICBmaWx0ZXIoY2FzZURlZmluaXRpb25OYW1lID0+ICEhY2FzZURlZmluaXRpb25OYW1lKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMkID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PFN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyQ6IE9ic2VydmFibGU8U3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzPiA9XG4gICAgdGhpcy5fZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICAgIHN3aXRjaE1hcChjYXNlRGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgICAgdGhpcy5kb2N1bWVudGVuQXBpVmVyc2lvblNlcnZpY2UuZ2V0U3VwcG9ydGVkQXBpRmVhdHVyZXMoY2FzZURlZmluaXRpb25OYW1lKVxuICAgICAgKSxcbiAgICAgIHRhcChzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMgPT5cbiAgICAgICAgdGhpcy5zdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMkLm5leHQoc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzKVxuICAgICAgKVxuICAgICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZpZWxkcyQ6IE9ic2VydmFibGU8Q29sdW1uQ29uZmlnW10+ID0gdGhpcy5fZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICB0YXAoKCkgPT4gdGhpcy5maWVsZHNMb2FkaW5nJC5uZXh0KHRydWUpKSxcbiAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuZG9jdW1lbnRlbkFwaUNvbHVtblNlcnZpY2UuZ2V0Q29uZmlndXJlZENvbHVtbnMoZG9jdW1lbnREZWZpbml0aW9uTmFtZSksXG4gICAgICAgIHRoaXMuX3N1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyQsXG4gICAgICAgIHRoaXMuX3NvcnQkLFxuICAgICAgXSlcbiAgICApLFxuICAgIG1hcCgoW2NvbHVtbnMsIHN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcywgc29ydF0pID0+IHtcbiAgICAgIGNvbnN0IGRlZmF1bHRTb3J0Q29sdW1uOiBDb25maWd1cmVkQ29sdW1uIHwgdW5kZWZpbmVkID0gY29sdW1ucy5maW5kKFxuICAgICAgICAoY29sdW1uOiBDb25maWd1cmVkQ29sdW1uKSA9PiAhIWNvbHVtbi5kZWZhdWx0U29ydFxuICAgICAgKTtcbiAgICAgIGlmICghIWRlZmF1bHRTb3J0Q29sdW1uICYmICFzb3J0ICYmIHN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcy5zdXBwb3J0c1NvcnRhYmxlQ29sdW1ucykge1xuICAgICAgICB0aGlzLl9zb3J0JC5uZXh0KHtzb3J0OiBgJHtkZWZhdWx0U29ydENvbHVtbi5rZXl9LCR7ZGVmYXVsdFNvcnRDb2x1bW4uZGVmYXVsdFNvcnR9YH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29sdW1ucy5tYXAoKGNvbHVtbjogQ29uZmlndXJlZENvbHVtbikgPT4gKHtcbiAgICAgICAga2V5OiBjb2x1bW4ua2V5ID09PSBET0NVTUVOVEVOX0NPTFVNTl9LRVlTLkJFU1RBTkRTT01WQU5HID8gJ3NpemUnIDogY29sdW1uLmtleSxcbiAgICAgICAgbGFiZWw6IGB6Z3cuZG9jdW1lbnRDb2x1bW5zLiR7Y29sdW1uLmtleX1gLFxuICAgICAgICB2aWV3VHlwZTogIUNPTFVNTl9WSUVXX1RZUEVTW2NvbHVtbi5rZXldID8gVmlld1R5cGUuVEVYVCA6IENPTFVNTl9WSUVXX1RZUEVTW2NvbHVtbi5rZXldLFxuICAgICAgICAuLi4oQ09MVU1OX1ZJRVdfVFlQRVNbY29sdW1uLmtleV0gPT09IFZpZXdUeXBlLlRFTVBMQVRFICYmIHtcbiAgICAgICAgICB0ZW1wbGF0ZTogdGhpcy50cmFuc2xhdGlvblRlbXBsYXRlLFxuICAgICAgICAgIHRlbXBsYXRlRGF0YToge2tleTogY29sdW1uLmtleX0sXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4oY29sdW1uLmtleSA9PT0gRE9DVU1FTlRFTl9DT0xVTU5fS0VZUy5DUkVBVElFREFUVU0gJiYge2Zvcm1hdDogJ0RELU1NLVlZWVknfSksXG4gICAgICAgIHNvcnRhYmxlOiBjb2x1bW4uc29ydGFibGUgJiYgc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzLnN1cHBvcnRzU29ydGFibGVDb2x1bW5zLFxuICAgICAgfSkpO1xuICAgIH0pLFxuICAgIHRhcCgoKSA9PiB7XG4gICAgICB0aGlzLmZpZWxkc0xvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgIH0pXG4gICk7XG4gIHB1YmxpYyBkb2N1bWVudDogRG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlO1xuICBwdWJsaWMgYWN0aW9uSXRlbXM6IEFjdGlvbkl0ZW1bXSA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogJ2RvY3VtZW50LmRvd25sb2FkJyxcbiAgICAgIGNhbGxiYWNrOiB0aGlzLm9uRG93bmxvYWRBY3Rpb25DbGljay5iaW5kKHRoaXMpLFxuICAgICAgdHlwZTogJ25vcm1hbCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ2RvY3VtZW50LmVkaXQnLFxuICAgICAgY2FsbGJhY2s6IHRoaXMub25FZGl0TWV0YWRhdGEuYmluZCh0aGlzKSxcbiAgICAgIGRpc2FibGVkQ2FsbGJhY2s6IHRoaXMuZWRpdERpc2FibGVkLmJpbmQodGhpcyksXG4gICAgICB0eXBlOiAnbm9ybWFsJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnZG9jdW1lbnQuZGVsZXRlJyxcbiAgICAgIGNhbGxiYWNrOiB0aGlzLm9uRGVsZXRlQWN0aW9uQ2xpY2suYmluZCh0aGlzKSxcbiAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgIH0sXG4gIF07XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5kb2N1bWVudERlZmluaXRpb25OYW1lKSxcbiAgICBmaWx0ZXIoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PiAhIWRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50SWQkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5kb2N1bWVudElkKSxcbiAgICBmaWx0ZXIoZG9jdW1lbnRJZCA9PiAhIWRvY3VtZW50SWQpXG4gICk7XG5cbiAgcHVibGljIGlzQWRtaW46IGJvb2xlYW47XG4gIHB1YmxpYyBzaG93WmFha0xpbmtXYXJuaW5nOiBib29sZWFuO1xuICBwdWJsaWMgdXBsb2FkUHJvY2Vzc0xpbmtlZFNldCA9IGZhbHNlO1xuICBwdWJsaWMgdXBsb2FkUHJvY2Vzc0xpbmtlZCE6IGJvb2xlYW47XG5cbiAgcHVibGljIGlzRWRpdE1vZGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFjY2VwdGVkRmlsZXM6IHN0cmluZyB8IG51bGwgPVxuICAgIHRoaXMuY29uZmlnU2VydmljZT8uY29uZmlnPy5jYXNlRmlsZVVwbG9hZEFjY2VwdGVkRmlsZXMgfHwgbnVsbDtcbiAgcHVibGljIHJlYWRvbmx5IG1heEZpbGVTaXplOiBudW1iZXIgPSB0aGlzLmNvbmZpZ1NlcnZpY2U/LmNvbmZpZz8uY2FzZUZpbGVTaXplVXBsb2FkTGltaXRNQiB8fCA1O1xuXG4gIHB1YmxpYyByZWFkb25seSBmaWxlVG9CZVVwbG9hZGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsZSB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgbW9kYWxEaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dNb2RhbCQgPSBuZXcgU3ViamVjdDxudWxsPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd1VwbG9hZE1vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd0RlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSB1cGxvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2l0ZW1zTG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwdWJsaWMgcmVhZG9ubHkgZmllbGRzTG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9pdGVtc0xvYWRpbmckLCB0aGlzLmZpZWxkc0xvYWRpbmckXSkucGlwZShcbiAgICBtYXAoKFtpdGVtc0xvYWRpbmcsIGZpZWxkc0xvYWRpbmddKSA9PiBpdGVtc0xvYWRpbmcgfHwgZmllbGRzTG9hZGluZylcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyJCA9IG5ldyBSZXBsYXlTdWJqZWN0PERvY3VtZW50ZW5BcGlGaWx0ZXJNb2RlbCB8IG51bGw+KCk7XG4gIHB1YmxpYyByZWFkb25seSBwYWdpbmF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UGFnaW5hdGlvbj4oREVGQVVMVF9QQUdJTkFUSU9OKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVmZXRjaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zb3J0JCA9IG5ldyBSZXBsYXlTdWJqZWN0PHtzb3J0OiBzdHJpbmd9IHwgbnVsbD4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcGFnaW5hdG9yQ29uZmlnID0ge1xuICAgIC4uLkRFRkFVTFRfUEFHSU5BVE9SX0NPTkZJRyxcbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zOiBbNSwgMTAsIDIwLCA1MCwgMTAwXSxcbiAgfTtcblxuICBwdWJsaWMgZ2V0IHNvcnRTdGF0ZSQoKTogT2JzZXJ2YWJsZTxTb3J0U3RhdGUgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NvcnQkLnBpcGUobWFwKHNvcnRWYWx1ZSA9PiB0aGlzLmdldFNvcnRTdGF0ZUZyb21Tb3J0U3RyaW5nKHNvcnRWYWx1ZT8uc29ydCkpKTtcbiAgfVxuXG4gIHB1YmxpYyByZWxhdGVkRmlsZXMkOiBPYnNlcnZhYmxlPEFycmF5PERvY3VtZW50ZW5BcGlSZWxhdGVkRmlsZT4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5kb2N1bWVudElkJCxcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1NYXAsXG4gICAgdGhpcy5fcmVmZXRjaCQsXG4gIF0pLnBpcGUoXG4gICAgdGFwKCgpID0+IHRoaXMuX2l0ZW1zTG9hZGluZyQubmV4dCh0cnVlKSksXG4gICAgc3dpdGNoTWFwKChbZG9jdW1lbnRJZCwgcXVlcnlQYXJhbXNdKSA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuZG9jdW1lbnRlbkFwaURvY3VtZW50U2VydmljZS5nZXRGaWx0ZXJlZFpha2VuQXBpRG9jdW1lbnRzKFxuICAgICAgICAgIGRvY3VtZW50SWQsXG4gICAgICAgICAgcXVlcnlQYXJhbXNbJ3BhcmFtcyddXG4gICAgICAgICksXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICAgICAgXSlcbiAgICApLFxuICAgIG1hcCgoW3JlbGF0ZWRGaWxlc10pID0+IHtcbiAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMucGFnaW5hdGlvbiQuZ2V0VmFsdWUoKSxcbiAgICAgICAgY29sbGVjdGlvblNpemU6IHJlbGF0ZWRGaWxlcy50b3RhbEVsZW1lbnRzLFxuICAgICAgfSk7XG4gICAgICBjb25zdCB0cmFuc2xhdGVkRmlsZXMgPSByZWxhdGVkRmlsZXM/LmNvbnRlbnQ/Lm1hcChmaWxlID0+ICh7XG4gICAgICAgIC4uLmZpbGUsXG4gICAgICAgIGNyZWF0ZWRCeTogZmlsZS5jcmVhdGVkQnkgfHwgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2xpc3QuYXV0b21hdGljYWxseUdlbmVyYXRlZCcpLFxuICAgICAgICBzaXplOiB0aGlzLmJ5dGVzVG9NZWdhYnl0ZXMoZmlsZS5iZXN0YW5kc29tdmFuZyksXG4gICAgICAgIHRhZ3M6IGZpbGUudHJlZndvb3JkZW4/Lm1hcCgodHJlZndvb3JkOiBzdHJpbmcpID0+ICh7XG4gICAgICAgICAgY29udGVudDogdHJlZndvb3JkLFxuICAgICAgICB9KSksXG4gICAgICB9KSk7XG4gICAgICByZXR1cm4gdHJhbnNsYXRlZEZpbGVzIHx8IFtdO1xuICAgIH0pLFxuICAgIHRhcCgoKSA9PiB7XG4gICAgICB0aGlzLl9pdGVtc0xvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgIH0pLFxuICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgdGhpcy5zaG93WmFha0xpbmtXYXJuaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2l0ZW1zTG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH0pXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdXBsb2FkUHJvdmlkZXJTZXJ2aWNlOiBVcGxvYWRQcm92aWRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb3dubG9hZFNlcnZpY2U6IERvd25sb2FkU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlclByb3ZpZGVyU2VydmljZTogVXNlclByb3ZpZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGljb25TZXJ2aWNlOiBJY29uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ZW5BcGlEb2N1bWVudFNlcnZpY2U6IERvY3VtZW50ZW5BcGlEb2N1bWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudGVuQXBpQ29sdW1uU2VydmljZTogRG9jdW1lbnRlbkFwaUNvbHVtblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudGVuQXBpVmVyc2lvblNlcnZpY2U6IERvY3VtZW50ZW5BcGlWZXJzaW9uU2VydmljZVxuICApIHtcbiAgICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyKEZpbHRlcjE2KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEluaXRpYWxQYXJhbXMoKTtcbiAgICB0aGlzLnNldFVwbG9hZFByb2Nlc3NMaW5rZWQoKTtcbiAgICB0aGlzLmlzVXNlckFkbWluKCk7XG4gICAgdGhpcy5pY29uU2VydmljZS5yZWdpc3RlckFsbChbRmlsdGVyMTYsIFRhZ0dyb3VwMTYsIFVwbG9hZDE2XSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG9uRGVsZXRlQWN0aW9uQ2xpY2soaXRlbTogRG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlKTogdm9pZCB7XG4gICAgdGhpcy5kb2N1bWVudCA9IGl0ZW07XG4gICAgdGhpcy5zaG93RGVsZXRlQ29uZmlybWF0aW9uTW9kYWwkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlRG9jdW1lbnQoKTogdm9pZCB7XG4gICAgdGhpcy5faXRlbXNMb2FkaW5nJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZG9jdW1lbnRlbkFwaURvY3VtZW50U2VydmljZS5kZWxldGVEb2N1bWVudCh0aGlzLmRvY3VtZW50KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZldGNoRG9jdW1lbnRzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYnl0ZXNUb01lZ2FieXRlcyhieXRlczogbnVtYmVyIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgICBpZiAoIWJ5dGVzKSByZXR1cm4gJyc7XG5cbiAgICBjb25zdCBtZWdhYnl0ZXMgPSBieXRlcyAvICgxMDI0ICogMTAyNCk7XG4gICAgaWYgKG1lZ2FieXRlcyA8IDEpIHtcbiAgICAgIHJldHVybiBgJHtNYXRoLmNlaWwobWVnYWJ5dGVzICogMTAwMCl9IEtCYDtcbiAgICB9IGVsc2UgaWYgKG1lZ2FieXRlcyA8IDEwMDApIHtcbiAgICAgIHJldHVybiBtZWdhYnl0ZXMudG9GaXhlZCgyKSArICcgTUInO1xuICAgIH1cblxuICAgIHJldHVybiAobWVnYWJ5dGVzIC8gMTAwMCkudG9GaXhlZCgyKSArICcgR0InO1xuICB9XG5cbiAgcHVibGljIGdldFVwbG9hZEJ1dHRvblRvb2x0aXAoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy51cGxvYWRQcm9jZXNzTGlua2VkU2V0ICYmIHRoaXMudXBsb2FkUHJvY2Vzc0xpbmtlZCkge1xuICAgICAgcmV0dXJuICdVcGxvYWQnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0FkbWluKSB7XG4gICAgICByZXR1cm4gJ2Rvc3NpZXIuZG9jdW1lbnRlbi5ub1Byb2Nlc3NMaW5rZWQuYWRtaW5Sb2xlJztcbiAgICB9XG5cbiAgICByZXR1cm4gJ2Rvc3NpZXIuZG9jdW1lbnRlbi5ub1Byb2Nlc3NMaW5rZWQucmVndWxhclVzZXInO1xuICB9XG5cbiAgcHVibGljIGlzVXNlckFkbWluKCkge1xuICAgIHRoaXMudXNlclByb3ZpZGVyU2VydmljZVxuICAgICAgLmdldFVzZXJTdWJqZWN0KClcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICB1c2VySWRlbnRpdHkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNBZG1pbiA9IHVzZXJJZGVudGl0eS5yb2xlcy5pbmNsdWRlcygnUk9MRV9BRE1JTicpO1xuICAgICAgICB9LFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc0FkbWluID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgbWV0YWRhdGFTZXQobWV0YWRhdGE6IERvY3VtZW50ZW5BcGlNZXRhZGF0YSk6IHZvaWQge1xuICAgIHRoaXMudXBsb2FkaW5nJC5uZXh0KHRydWUpO1xuXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5maWxlVG9CZVVwbG9hZGVkJCwgdGhpcy5kb2N1bWVudElkJF0pXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoW2ZpbGUsIGRvY3VtZW50SWRdKSA9PiB7XG4gICAgICAgICAgaWYgKCFmaWxlKSByZXR1cm47XG4gICAgICAgICAgaWYgKHRoaXMuaXNFZGl0TW9kZSQuZ2V0VmFsdWUoKSkge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudGVuQXBpRG9jdW1lbnRTZXJ2aWNlLnVwZGF0ZURvY3VtZW50KGZpbGUsIG1ldGFkYXRhKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnJlZmV0Y2hEb2N1bWVudHMoKTtcbiAgICAgICAgICAgICAgdGhpcy51cGxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICB0aGlzLmZpbGVUb0JlVXBsb2FkZWQkLm5leHQobnVsbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRQcm92aWRlclNlcnZpY2VcbiAgICAgICAgICAgICAgLnVwbG9hZEZpbGVXaXRoTWV0YWRhdGEoZmlsZSwgZG9jdW1lbnRJZCwgbWV0YWRhdGEpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVmZXRjaERvY3VtZW50cygpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyJC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dChERUZBVUxUX1BBR0lOQVRJT04pO1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVUb0JlVXBsb2FkZWQkLm5leHQobnVsbCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRvd25sb2FkQWN0aW9uQ2xpY2soZmlsZTogRG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlKTogdm9pZCB7XG4gICAgdGhpcy5kb3dubG9hZERvY3VtZW50KGZpbGUsIHRydWUpO1xuICB9XG5cbiAgcHVibGljIG9uRWRpdE1ldGFkYXRhKGZpbGU6IEZpbGUpOiB2b2lkIHtcbiAgICB0aGlzLmlzRWRpdE1vZGUkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5maWxlVG9CZVVwbG9hZGVkJC5uZXh0KGZpbGUpO1xuICAgIHRoaXMuc2hvd1VwbG9hZE1vZGFsJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIGNsb3NlTWV0YWRhdGFNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dVcGxvYWRNb2RhbCQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaXNFZGl0TW9kZSQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5maWxlVG9CZVVwbG9hZGVkJC5uZXh0KGV2ZW50LnRhcmdldC5maWxlc1swXSk7XG4gICAgdGhpcy5zaG93VXBsb2FkTW9kYWwkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5yZXNldEZpbGVJbnB1dCgpO1xuICB9XG5cbiAgcHVibGljIG9uTmF2aWdhdGVUb0Nhc2VBZG1pbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PiB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9kb3NzaWVyLW1hbmFnZW1lbnQvZG9zc2llci8ke2RvY3VtZW50RGVmaW5pdGlvbk5hbWV9YF0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uUm93Q2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZG93bmxvYWREb2N1bWVudChldmVudCwgZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIG9uUGFnaW5hdGlvbkNsaWNrZWQocGFnZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHsuLi50aGlzLnBhZ2luYXRpb24kLmdldFZhbHVlKCksIHBhZ2V9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblBhZ2luYXRpb25TZXQoc2l6ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qge2NvbGxlY3Rpb25TaXplLCBwYWdlfSA9IHRoaXMucGFnaW5hdGlvbiQuZ2V0VmFsdWUoKTtcbiAgICBjb25zdCByZXNldFBhZ2U6IGJvb2xlYW4gPSBNYXRoLmNlaWwoK2NvbGxlY3Rpb25TaXplIC8gc2l6ZSkgPD0gK3BhZ2UgJiYgK2NvbGxlY3Rpb25TaXplID4gMDtcbiAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoey4uLnRoaXMucGFnaW5hdGlvbiQuZ2V0VmFsdWUoKSwgc2l6ZSwgLi4uKHJlc2V0UGFnZSAmJiB7cGFnZTogMX0pfSk7XG4gIH1cblxuICBwdWJsaWMgb25VcGxvYWRCdXR0b25DbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gIH1cblxuICBwdWJsaWMgb25GaWx0ZXJFdmVudChmaWx0ZXI6IERvY3VtZW50ZW5BcGlGaWx0ZXJNb2RlbCB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlciQubmV4dChmaWx0ZXIpO1xuICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7Li4udGhpcy5wYWdpbmF0aW9uJC5nZXRWYWx1ZSgpLCAuLi5ERUZBVUxUX1BBR0lOQVRJT059KTtcbiAgfVxuXG4gIHB1YmxpYyBvblNvcnRDaGFuZ2VkKHNvcnRTdGF0ZTogU29ydFN0YXRlKTogdm9pZCB7XG4gICAgdGhpcy5fc29ydCQubmV4dChcbiAgICAgIHNvcnRTdGF0ZS5pc1NvcnRpbmdcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBzb3J0OiBgJHtzb3J0U3RhdGUuc3RhdGUubmFtZSA9PT0gJ3NpemUnID8gRE9DVU1FTlRFTl9DT0xVTU5fS0VZUy5CRVNUQU5EU09NVkFORyA6IHNvcnRTdGF0ZS5zdGF0ZS5uYW1lfSwke3NvcnRTdGF0ZS5zdGF0ZS5kaXJlY3Rpb259YCxcbiAgICAgICAgICB9XG4gICAgICAgIDogbnVsbFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgcmVmZXRjaERvY3VtZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl9yZWZldGNoJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBlZGl0RGlzYWJsZWQoZmlsZTogRG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZpbGUuc3RhdHVzID09PSAnZGVmaW5pdGllZic7XG4gIH1cblxuICBwcml2YXRlIGRvd25sb2FkRG9jdW1lbnQocmVsYXRlZEZpbGU6IERvY3VtZW50ZW5BcGlSZWxhdGVkRmlsZSwgZm9yY2VEb3dubG9hZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZG93bmxvYWRTZXJ2aWNlLmRvd25sb2FkRmlsZShcbiAgICAgIGAvYXBpL3YxL2RvY3VtZW50ZW4tYXBpLyR7cmVsYXRlZEZpbGUucGx1Z2luQ29uZmlndXJhdGlvbklkfS9maWxlcy8ke3JlbGF0ZWRGaWxlLmZpbGVJZH0vZG93bmxvYWRgLFxuICAgICAgcmVsYXRlZEZpbGUuYmVzdGFuZHNuYWFtID8/ICcnLFxuICAgICAgZm9yY2VEb3dubG9hZFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5RdWVyeVBhcmFtc1N1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLFxuICAgICAgICB0aGlzLmRvY3VtZW50SWQkLFxuICAgICAgICB0aGlzLmZpbHRlciQsXG4gICAgICAgIHRoaXMuX3NvcnQkLFxuICAgICAgICB0aGlzLnBhZ2luYXRpb24kLFxuICAgICAgXSkuc3Vic2NyaWJlKChbZGVmaW5pdGlvbk5hbWUsIGRvY3VtZW50SWQsIGZpbHRlciwgc29ydCwgcGFnaW5hdGlvbl0pID0+IHtcbiAgICAgICAgY29uc3Qge3NpemUsIHBhZ2V9ID0gcGFnaW5hdGlvbjtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AvZG9zc2llcnMvJHtkZWZpbml0aW9uTmFtZX0vZG9jdW1lbnQvJHtkb2N1bWVudElkfS9kb2N1bWVudHNgXSwge1xuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7Li4uZmlsdGVyLCAuLi5zb3J0LCBzaXplLCBwYWdlOiBwYWdlIC0gMX0sXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEZpbGVJbnB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gIH1cblxuICBwcml2YXRlIHNldFVwbG9hZFByb2Nlc3NMaW5rZWQoKTogdm9pZCB7XG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChkb2N1bWVudERlZmluaXRpb25OYW1lID0+XG4gICAgICAgICAgdGhpcy51cGxvYWRQcm92aWRlclNlcnZpY2UuY2hlY2tVcGxvYWRQcm9jZXNzTGluayhkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICAgICAgICApLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBsb2FkUHJvY2Vzc0xpbmtlZFNldCA9IHRydWU7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChsaW5rZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy51cGxvYWRQcm9jZXNzTGlua2VkID0gbGlua2VkO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldEluaXRpYWxQYXJhbXMoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtTWFwXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgbWFwKHF1ZXJ5UGFyYW1zID0+IHtcbiAgICAgICAgICBjb25zdCB7c29ydCwgc2l6ZSwgcGFnZSwgLi4uZmlsdGVyfSA9IHF1ZXJ5UGFyYW1zWydwYXJhbXMnXTtcbiAgICAgICAgICByZXR1cm4ge3NvcnQsIGZpbHRlciwgc2l6ZSwgcGFnZX07XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh7ZmlsdGVyLCBzb3J0LCBzaXplLCBwYWdlfSkgPT4ge1xuICAgICAgICB0aGlzLl9zb3J0JC5uZXh0KHtzb3J0fSk7XG4gICAgICAgIHRoaXMuZmlsdGVyJC5uZXh0KGZpbHRlcik7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7XG4gICAgICAgICAgLi4udGhpcy5wYWdpbmF0aW9uJC5nZXRWYWx1ZSgpLFxuICAgICAgICAgIHNpemU6ICtzaXplLFxuICAgICAgICAgIHBhZ2U6ICsocGFnZSA/PyAwKSArIDEsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm9wZW5RdWVyeVBhcmFtc1N1YnNjcmlwdGlvbigpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFNvcnRTdGF0ZUZyb21Tb3J0U3RyaW5nKHNvcnRTdHJpbmc/OiBzdHJpbmcpOiBTb3J0U3RhdGUgfCBudWxsIHtcbiAgICBjb25zdCBzcGxpdFN0cmluZyA9IHNvcnRTdHJpbmcgJiYgc29ydFN0cmluZy5zcGxpdCgnLCcpO1xuICAgIGlmIChzcGxpdFN0cmluZyAmJiBzcGxpdFN0cmluZz8ubGVuZ3RoID4gMSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNTb3J0aW5nOiB0cnVlLFxuICAgICAgICBzdGF0ZToge1xuICAgICAgICAgIG5hbWU6IHNwbGl0U3RyaW5nWzBdLFxuICAgICAgICAgIGRpcmVjdGlvbjogc3BsaXRTdHJpbmdbMV0gYXMgRGlyZWN0aW9uLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuPGRpdlxuICBjbGFzcz1cImNhcmJvbi1kb2N1bWVudC10YWJsZS13cmFwcGVyXCJcbiAgKm5nSWY9XCJ7XG4gICAgbG9hZGluZzogbG9hZGluZyQgfCBhc3luYyxcbiAgICBmaWVsZHNMb2FkaW5nOiBmaWVsZHNMb2FkaW5nJCB8IGFzeW5jLFxuICAgIHVwbG9hZGluZzogdXBsb2FkaW5nJCB8IGFzeW5jLFxuICAgIHJlbGF0ZWRGaWxlczogcmVsYXRlZEZpbGVzJCB8IGFzeW5jLFxuICAgIGZpZWxkczogZmllbGRzJCB8IGFzeW5jLFxuICAgIHN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlczogc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzJCB8IGFzeW5jLFxuICAgIHBhZ2luYXRpb246IHBhZ2luYXRpb24kIHwgYXN5bmMsXG4gICAgc29ydFN0YXRlOiBzb3J0U3RhdGUkIHwgYXN5bmMsXG4gIH0gYXMgb2JzXCJcbj5cbiAgQGlmICgoIW9icy5maWVsZHNMb2FkaW5nICYmIG9icy5maWVsZHMubGVuZ3RoKSB8fCBvYnMuZmllbGRzTG9hZGluZykge1xuICAgIDx2YWx0aW1vLWNhcmJvbi1saXN0XG4gICAgICBbYWN0aW9uSXRlbXNdPVwiYWN0aW9uSXRlbXNcIlxuICAgICAgW2l0ZW1zXT1cIm9icy5yZWxhdGVkRmlsZXNcIlxuICAgICAgW2ZpZWxkc109XCJvYnMuZmllbGRzXCJcbiAgICAgIFtpbml0aWFsU29ydFN0YXRlXT1cIm9icy5zb3J0U3RhdGVcIlxuICAgICAgW2xvYWRpbmddPVwib2JzLmxvYWRpbmdcIlxuICAgICAgW3BhZ2luYXRpb25dPVwib2JzLnBhZ2luYXRpb25cIlxuICAgICAgW3BhZ2luYXRvckNvbmZpZ109XCJwYWdpbmF0b3JDb25maWdcIlxuICAgICAgcGFnaW5hdGlvbklkZW50aWZpZXI9XCJkb2N1bWVudGVuQXBpXCJcbiAgICAgIChyb3dDbGlja2VkKT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiXG4gICAgICAoc29ydENoYW5nZWQpPVwiXG4gICAgICAgIG9icz8uc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzPy5zdXBwb3J0c1NvcnRhYmxlQ29sdW1ucyAmJiBvblNvcnRDaGFuZ2VkKCRldmVudClcbiAgICAgIFwiXG4gICAgICAocGFnaW5hdGlvbkNsaWNrZWQpPVwib25QYWdpbmF0aW9uQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICAgIChwYWdpbmF0aW9uU2V0KT1cIm9uUGFnaW5hdGlvblNldCgkZXZlbnQpXCJcbiAgICAgIGhpZGVDb2x1bW5IZWFkZXJcbiAgICA+XG4gICAgICA8ZGl2IGNhcmJvblRvb2xiYXJDb250ZW50PlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBbYWNjZXB0XT1cImFjY2VwdGVkRmlsZXNcIlxuICAgICAgICAgIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgaGlkZGVuXG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICNmaWxlSW5wdXRcbiAgICAgICAgLz5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJvYnM/LnN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcz8uc3VwcG9ydHNGaWx0ZXJhYmxlQ29sdW1uc1wiXG4gICAgICAgICAgW2Nkc092ZXJmbG93TWVudV09XCJvdmVyZmxvd0ZpbHRlclwiXG4gICAgICAgICAgW2N1c3RvbVBhbmVdPVwidHJ1ZVwiXG4gICAgICAgICAgW2ljb25Pbmx5XT1cInRydWVcIlxuICAgICAgICAgIFtmbGlwXT1cInRydWVcIlxuICAgICAgICAgIFtvZmZzZXRdPVwie3g6IDAsIHk6IDQ3fVwiXG4gICAgICAgICAgY2RzQnV0dG9uPVwiZ2hvc3RcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiZmlsdGVyXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ1cGxvYWRCdXR0b25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9SZXN1bHRzXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC92YWx0aW1vLWNhcmJvbi1saXN0PlxuICB9IEBlbHNlIHtcbiAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICBbYWN0aW9uXT1cIm5hdmlnYXRlVG9DYXNlQWRtaW5CdXR0b25cIlxuICAgICAgW2Rlc2NyaXB0aW9uXT1cIid6Z3cuZG9jdW1lbnRzLm5vQ29sdW1ucy5kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgW3RpdGxlXT1cIid6Z3cuZG9jdW1lbnRzLm5vQ29sdW1ucy50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgfVxuXG4gIDx2YWx0aW1vLWRvY3VtZW50ZW4tYXBpLW1ldGFkYXRhLW1vZGFsXG4gICAgW29wZW5dPVwic2hvd1VwbG9hZE1vZGFsJCB8IGFzeW5jXCJcbiAgICBbZGlzYWJsZWQkXT1cIm1vZGFsRGlzYWJsZWQkXCJcbiAgICBbZmlsZSRdPVwiZmlsZVRvQmVVcGxvYWRlZCRcIlxuICAgIFtpc0VkaXRNb2RlXT1cImlzRWRpdE1vZGUkIHwgYXN5bmNcIlxuICAgIFtzdXBwb3J0c1RyZWZ3b29yZGVuXT1cIm9icz8uc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzPy5zdXBwb3J0c1RyZWZ3b29yZGVuXCJcbiAgICAobW9kYWxDbG9zZSk9XCJjbG9zZU1ldGFkYXRhTW9kYWwoKVwiXG4gICAgKG1ldGFkYXRhKT1cIm1ldGFkYXRhU2V0KCRldmVudClcIlxuICA+PC92YWx0aW1vLWRvY3VtZW50ZW4tYXBpLW1ldGFkYXRhLW1vZGFsPlxuPC9kaXY+XG5cbjx2YWx0aW1vLWNvbmZpcm1hdGlvbi1tb2RhbFxuICBjb25maXJtQnV0dG9uVGV4dFRyYW5zbGF0aW9uS2V5PVwiZGFzaGJvYXJkTWFuYWdlbWVudC5kZWxldGVNb2RhbC5jb25maXJtXCJcbiAgY29udGVudFRyYW5zbGF0aW9uS2V5PVwiZG9zc2llci5kb2N1bWVudGVuLmRlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsLmNvbnRlbnRcIlxuICBjb25maXJtQnV0dG9uVHlwZT1cImRhbmdlclwiXG4gIHRpdGxlVHJhbnNsYXRpb25LZXk9XCJkb3NzaWVyLmRvY3VtZW50ZW4uZGVsZXRlQ29uZmlybWF0aW9uTW9kYWwudGl0bGVcIlxuICBbc2hvd01vZGFsU3ViamVjdCRdPVwic2hvd0RlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsJFwiXG4gIChjb25maXJtRXZlbnQpPVwiZGVsZXRlRG9jdW1lbnQoKVwiXG4+XG48L3ZhbHRpbW8tY29uZmlybWF0aW9uLW1vZGFsPlxuXG48bmctdGVtcGxhdGUgI2Rvd25sb2FkQnV0dG9uIGxldC1pbmRleD1cImluZGV4XCIgbGV0LWl0ZW09XCJpdGVtXCI+XG4gIDxkaXZcbiAgICAqbmdJZj1cIntpc0Rvd25sb2FkaW5nOiBpbmRleGVzSW5jbHVkZUluZGV4KGRvd25sb2FkaW5nRmlsZUluZGV4ZXMkIHwgYXN5bmMsIGluZGV4KX0gYXMgdmFyc1wiXG4gICAgY2xhc3M9XCJkb3dubG9hZC1idXR0b24tY29udGFpbmVyXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiIXZhcnMuaXNEb3dubG9hZGluZ1wiXG4gICAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJzbVwiXG4gICAgICAoY2xpY2spPVwiZG93bmxvYWREb2N1bWVudChpdGVtLCBpbmRleClcIlxuICAgID5cbiAgICAgIHt7ICdpbnRlcmZhY2UuZG93bmxvYWQnIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJkb3dubG9hZFwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGNkcy1sb2FkaW5nIHNpemU9XCJzbVwiICpuZ0lmPVwidmFycy5pc0Rvd25sb2FkaW5nXCI+PC9jZHMtbG9hZGluZz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vUmVzdWx0cz5cbiAgQGlmICgoZmlsdGVyJCB8IGFzeW5jIHwga2V5dmFsdWUpPy5sZW5ndGgpIHtcbiAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICBbYWN0aW9uXT1cInJlc2V0RmlsdGVyQnV0dG9uXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCInemd3LmRvY3VtZW50cy5ub1Jlc3VsdHMuZmlsdGVyRGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgIFt0aXRsZV09XCInemd3LmRvY3VtZW50cy5ub1Jlc3VsdHMuZmlsdGVyVGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG4gIH0gQGVsc2UgaWYgKHNob3daYWFrTGlua1dhcm5pbmcgJiYgaXNBZG1pbikge1xuICAgIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICAgIFthY3Rpb25dPVwibmF2aWdhdGVUb0Nhc2VBZG1pbkJ1dHRvblwiXG4gICAgICBbZGVzY3JpcHRpb25dPVwiJ2Rvc3NpZXIuZG9jdW1lbnRlbi5ub1phYWtGb3VuZCcgfCB0cmFuc2xhdGVcIlxuICAgICAgW3RpdGxlXT1cIidkb3NzaWVyLmRvY3VtZW50ZW4ubm9aYWFrRm91bmRUaXRsZScgfCB0cmFuc2xhdGVcIlxuICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgfSBAZWxzZSB7XG4gICAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgICAgW2FjdGlvbl09XCJ1cGxvYWRCdXR0b25cIlxuICAgICAgW2Rlc2NyaXB0aW9uXT1cIidkb3NzaWVyLmRvY3VtZW50ZW4ubm9GaWxlcycgfCB0cmFuc2xhdGVcIlxuICAgICAgW3RpdGxlXT1cIidkb3NzaWVyLmRvY3VtZW50ZW4ubm9GaWxlc1RpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI292ZXJmbG93RmlsdGVyPlxuICA8dmFsdGltby1kb3NzaWVyLWRldGFpbC10YWItZG9jdW1lbnRlbi1hcGktZmlsdGVyXG4gICAgW3ByZWZpbGxGaWx0ZXJdPVwiZmlsdGVyJCB8IGFzeW5jXCJcbiAgICAoZmlsdGVyRXZlbnQpPVwib25GaWx0ZXJFdmVudCgkZXZlbnQpXCJcbiAgPjwvdmFsdGltby1kb3NzaWVyLWRldGFpbC10YWItZG9jdW1lbnRlbi1hcGktZmlsdGVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNyZXNldEZpbHRlckJ1dHRvbj5cbiAgPGJ1dHRvbiBjZHNCdXR0b249XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9uRmlsdGVyRXZlbnQobnVsbClcIj5cbiAgICB7eyAnUmVzZXQgZmlsdGVyJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInRyYXNoLWNhblwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdXBsb2FkQnV0dG9uIGxldC1kaXNhYmxlZD1cImRpc2FibGVkXCI+XG4gIDxidXR0b25cbiAgICBbZGlzYWJsZWRdPVwiKHVwbG9hZFByb2Nlc3NMaW5rZWRTZXQgJiYgIXVwbG9hZFByb2Nlc3NMaW5rZWQpIHx8IHNob3daYWFrTGlua1dhcm5pbmcgfHwgZGlzYWJsZWRcIlxuICAgIFt2VG9vbHRpcF09XCJnZXRVcGxvYWRCdXR0b25Ub29sdGlwKCkgfCB0cmFuc2xhdGVcIlxuICAgIChjbGljayk9XCJvblVwbG9hZEJ1dHRvbkNsaWNrKClcIlxuICAgIGNkc0J1dHRvbj1cInByaW1hcnlcIlxuICA+XG4gICAge3sgJ1VwbG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwidXBsb2FkXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0cmFuc2xhdGlvblRlbXBsYXRlIGxldC1kYXRhPVwiZGF0YVwiPlxuICB7eyAnZG9jdW1lbnQuJyArIGRhdGEuaXRlbVtkYXRhLmtleV0gfCB0cmFuc2xhdGUgfX1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbmF2aWdhdGVUb0Nhc2VBZG1pbkJ1dHRvbj5cbiAgPGJ1dHRvbiAoY2xpY2spPVwib25OYXZpZ2F0ZVRvQ2FzZUFkbWluQ2xpY2soKVwiIGNkc0J1dHRvbj1cInByaW1hcnlcIj5cbiAgICB7eyAnZG9zc2llci5kb2N1bWVudGVuLm5hdmlnYXRlVG9DYXNlQWRtaW4nIHwgdHJhbnNsYXRlIH19XG5cbiAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwic2V0dGluZ3NcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuIl19
367
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vemd3L3NyYy9saWIvbW9kdWxlcy9kb2N1bWVudGVuLWFwaS9jb21wb25lbnRzL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy9kb2N1bWVudGVuLWFwaS1kb2N1bWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby96Z3cvc3JjL2xpYi9tb2R1bGVzL2RvY3VtZW50ZW4tYXBpL2NvbXBvbmVudHMvZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsU0FBUyxFQUE4QyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFL0YsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBQyxlQUFlLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUVMLGdCQUFnQixFQUVoQix1QkFBdUIsRUFDdkIsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUl4QixRQUFRLEdBQ1QsTUFBTSxxQkFBcUIsQ0FBQztBQUk3QixPQUFPLEVBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQWMsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RixPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFFYixFQUFFLEVBQ0YsYUFBYSxFQUNiLE9BQU8sRUFDUCxZQUFZLEdBQ2IsTUFBTSxNQUFNLENBQUM7QUFDZCxP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QUFDO0lBRU8sMEJBQTBCLENBQUMsVUFBbUI7UUFDcEQsTUFBTSxXQUFXLEdBQUcsVUFBVSxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEQsSUFBSSxXQUFXLElBQUksV0FBVyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQyxPQUFPO2dCQUNMLFNBQVMsRUFBRSxJQUFJO2dCQUNmLEtBQUssRUFBRTtvQkFDTCxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztvQkFDcEIsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQWM7aUJBQ3ZDO2FBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7K0dBcGFVLCtDQUErQzttR0FBL0MsK0NBQStDLG9VQzVFNUQseTZNQXNMQSwraENEckhJLFlBQVkseVpBQ1osZ0JBQWdCLDIxQkFDaEIsbUNBQW1DLHlmQUNuQyxZQUFZLGdNQUNaLFVBQVUsNE5BQ1YsZUFBZSw0RkFDZiw0QkFBNEIsc0hBQzVCLFlBQVksbVFBQ1osdUJBQXVCOzs0RkFHZCwrQ0FBK0M7a0JBakIzRCxTQUFTOytCQUNFLHFEQUFxRCxjQUduRCxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLG1DQUFtQzt3QkFDbkMsWUFBWTt3QkFDWixVQUFVO3dCQUNWLGVBQWU7d0JBQ2YsNEJBQTRCO3dCQUM1QixZQUFZO3dCQUNaLHVCQUF1QjtxQkFDeEI7K1pBR3VCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDWSxtQkFBbUI7c0JBQXBELFNBQVM7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7RmlsdGVyMTYsIFRhZ0dyb3VwMTYsIFVwbG9hZDE2fSBmcm9tICdAY2FyYm9uL2ljb25zJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGlvbkl0ZW0sXG4gIENhcmJvbkxpc3RNb2R1bGUsXG4gIENvbHVtbkNvbmZpZyxcbiAgQ29uZmlybWF0aW9uTW9kYWxNb2R1bGUsXG4gIERFRkFVTFRfUEFHSU5BVElPTixcbiAgREVGQVVMVF9QQUdJTkFUT1JfQ09ORklHLFxuICBEb2N1bWVudGVuQXBpTWV0YWRhdGEsXG4gIFBhZ2luYXRpb24sXG4gIFNvcnRTdGF0ZSxcbiAgVmlld1R5cGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlLCBEaXJlY3Rpb259IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge0Rvd25sb2FkU2VydmljZSwgVXBsb2FkUHJvdmlkZXJTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9yZXNvdXJjZSc7XG5pbXBvcnQge1VzZXJQcm92aWRlclNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3NlY3VyaXR5JztcbmltcG9ydCB7QnV0dG9uTW9kdWxlLCBEaWFsb2dNb2R1bGUsIEljb25Nb2R1bGUsIEljb25TZXJ2aWNlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIFJlcGxheVN1YmplY3QsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmlwdGlvbixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRha2UsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQ09MVU1OX1ZJRVdfVFlQRVMsXG4gIENvbmZpZ3VyZWRDb2x1bW4sXG4gIERPQ1VNRU5URU5fQ09MVU1OX0tFWVMsXG4gIERvY3VtZW50ZW5BcGlGaWx0ZXJNb2RlbCxcbiAgRG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlLFxuICBTdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMsXG59IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0RvY3VtZW50ZW5BcGlDb2x1bW5TZXJ2aWNlLCBEb2N1bWVudGVuQXBpVmVyc2lvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7RG9jdW1lbnRlbkFwaURvY3VtZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvZG9jdW1lbnRlbi1hcGktZG9jdW1lbnQuc2VydmljZSc7XG5pbXBvcnQge0RvY3VtZW50ZW5BcGlGaWx0ZXJDb21wb25lbnR9IGZyb20gJy4uL2RvY3VtZW50ZW4tYXBpLWZpbHRlci9kb2N1bWVudGVuLWFwaS1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7RG9jdW1lbnRlbkFwaU1ldGFkYXRhTW9kYWxDb21wb25lbnR9IGZyb20gJy4uL2RvY3VtZW50ZW4tYXBpLW1ldGFkYXRhLW1vZGFsL2RvY3VtZW50ZW4tYXBpLW1ldGFkYXRhLW1vZGFsLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1kZXRhaWwtdGFiLWRvY3VtZW50ZW4tYXBpLWRvY3VtZW50cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2N1bWVudGVuLWFwaS1kb2N1bWVudHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb2N1bWVudGVuLWFwaS1kb2N1bWVudHMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBDYXJib25MaXN0TW9kdWxlLFxuICAgIERvY3VtZW50ZW5BcGlNZXRhZGF0YU1vZGFsQ29tcG9uZW50LFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBJY29uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBEb2N1bWVudGVuQXBpRmlsdGVyQ29tcG9uZW50LFxuICAgIERpYWxvZ01vZHVsZSxcbiAgICBDb25maXJtYXRpb25Nb2RhbE1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llckRldGFpbFRhYkRvY3VtZW50ZW5BcGlEb2N1bWVudHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgndHJhbnNsYXRpb25UZW1wbGF0ZScpIHRyYW5zbGF0aW9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnREZWZpbml0aW9uTmFtZSQgPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5kb2N1bWVudERlZmluaXRpb25OYW1lKSxcbiAgICBmaWx0ZXIoY2FzZURlZmluaXRpb25OYW1lID0+ICEhY2FzZURlZmluaXRpb25OYW1lKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMkID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PFN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyQ6IE9ic2VydmFibGU8U3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzPiA9XG4gICAgdGhpcy5fZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICAgIHN3aXRjaE1hcChjYXNlRGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgICAgdGhpcy5kb2N1bWVudGVuQXBpVmVyc2lvblNlcnZpY2UuZ2V0U3VwcG9ydGVkQXBpRmVhdHVyZXMoY2FzZURlZmluaXRpb25OYW1lKVxuICAgICAgKSxcbiAgICAgIHRhcChzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMgPT5cbiAgICAgICAgdGhpcy5zdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMkLm5leHQoc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzKVxuICAgICAgKVxuICAgICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZpZWxkcyQ6IE9ic2VydmFibGU8Q29sdW1uQ29uZmlnW10+ID0gdGhpcy5fZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICB0YXAoKCkgPT4gdGhpcy5maWVsZHNMb2FkaW5nJC5uZXh0KHRydWUpKSxcbiAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuZG9jdW1lbnRlbkFwaUNvbHVtblNlcnZpY2UuZ2V0Q29uZmlndXJlZENvbHVtbnMoZG9jdW1lbnREZWZpbml0aW9uTmFtZSksXG4gICAgICAgIHRoaXMuX3N1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyQsXG4gICAgICAgIHRoaXMuX3NvcnQkLFxuICAgICAgXSlcbiAgICApLFxuICAgIG1hcCgoW2NvbHVtbnMsIHN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcywgc29ydF0pID0+IHtcbiAgICAgIGNvbnN0IGRlZmF1bHRTb3J0Q29sdW1uOiBDb25maWd1cmVkQ29sdW1uIHwgdW5kZWZpbmVkID0gY29sdW1ucy5maW5kKFxuICAgICAgICAoY29sdW1uOiBDb25maWd1cmVkQ29sdW1uKSA9PiAhIWNvbHVtbi5kZWZhdWx0U29ydFxuICAgICAgKTtcbiAgICAgIGlmICghIWRlZmF1bHRTb3J0Q29sdW1uICYmICFzb3J0ICYmIHN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcy5zdXBwb3J0c1NvcnRhYmxlQ29sdW1ucykge1xuICAgICAgICB0aGlzLl9zb3J0JC5uZXh0KHtzb3J0OiBgJHtkZWZhdWx0U29ydENvbHVtbi5rZXl9LCR7ZGVmYXVsdFNvcnRDb2x1bW4uZGVmYXVsdFNvcnR9YH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29sdW1ucy5tYXAoKGNvbHVtbjogQ29uZmlndXJlZENvbHVtbikgPT4gKHtcbiAgICAgICAga2V5OiBjb2x1bW4ua2V5ID09PSBET0NVTUVOVEVOX0NPTFVNTl9LRVlTLkJFU1RBTkRTT01WQU5HID8gJ3NpemUnIDogY29sdW1uLmtleSxcbiAgICAgICAgbGFiZWw6IGB6Z3cuZG9jdW1lbnRDb2x1bW5zLiR7Y29sdW1uLmtleX1gLFxuICAgICAgICB2aWV3VHlwZTogIUNPTFVNTl9WSUVXX1RZUEVTW2NvbHVtbi5rZXldID8gVmlld1R5cGUuVEVYVCA6IENPTFVNTl9WSUVXX1RZUEVTW2NvbHVtbi5rZXldLFxuICAgICAgICAuLi4oQ09MVU1OX1ZJRVdfVFlQRVNbY29sdW1uLmtleV0gPT09IFZpZXdUeXBlLlRFTVBMQVRFICYmIHtcbiAgICAgICAgICB0ZW1wbGF0ZTogdGhpcy50cmFuc2xhdGlvblRlbXBsYXRlLFxuICAgICAgICAgIHRlbXBsYXRlRGF0YToge2tleTogY29sdW1uLmtleX0sXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4oY29sdW1uLmtleSA9PT0gRE9DVU1FTlRFTl9DT0xVTU5fS0VZUy5DUkVBVElFREFUVU0gJiYge2Zvcm1hdDogJ0RELU1NLVlZWVknfSksXG4gICAgICAgIHNvcnRhYmxlOiBjb2x1bW4uc29ydGFibGUgJiYgc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzLnN1cHBvcnRzU29ydGFibGVDb2x1bW5zLFxuICAgICAgfSkpO1xuICAgIH0pLFxuICAgIHRhcCgoKSA9PiB7XG4gICAgICB0aGlzLmZpZWxkc0xvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgIH0pXG4gICk7XG4gIHB1YmxpYyBkb2N1bWVudDogRG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlO1xuICBwdWJsaWMgYWN0aW9uSXRlbXM6IEFjdGlvbkl0ZW1bXSA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogJ2RvY3VtZW50LmRvd25sb2FkJyxcbiAgICAgIGNhbGxiYWNrOiB0aGlzLm9uRG93bmxvYWRBY3Rpb25DbGljay5iaW5kKHRoaXMpLFxuICAgICAgdHlwZTogJ25vcm1hbCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ2RvY3VtZW50LmVkaXQnLFxuICAgICAgY2FsbGJhY2s6IHRoaXMub25FZGl0TWV0YWRhdGEuYmluZCh0aGlzKSxcbiAgICAgIGRpc2FibGVkQ2FsbGJhY2s6IHRoaXMuZWRpdERpc2FibGVkLmJpbmQodGhpcyksXG4gICAgICB0eXBlOiAnbm9ybWFsJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnZG9jdW1lbnQuZGVsZXRlJyxcbiAgICAgIGNhbGxiYWNrOiB0aGlzLm9uRGVsZXRlQWN0aW9uQ2xpY2suYmluZCh0aGlzKSxcbiAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgIH0sXG4gIF07XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5kb2N1bWVudERlZmluaXRpb25OYW1lKSxcbiAgICBmaWx0ZXIoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PiAhIWRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50SWQkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5kb2N1bWVudElkKSxcbiAgICBmaWx0ZXIoZG9jdW1lbnRJZCA9PiAhIWRvY3VtZW50SWQpXG4gICk7XG5cbiAgcHVibGljIGlzQWRtaW46IGJvb2xlYW47XG4gIHB1YmxpYyBzaG93WmFha0xpbmtXYXJuaW5nOiBib29sZWFuO1xuICBwdWJsaWMgdXBsb2FkUHJvY2Vzc0xpbmtlZFNldCA9IGZhbHNlO1xuICBwdWJsaWMgdXBsb2FkUHJvY2Vzc0xpbmtlZCE6IGJvb2xlYW47XG5cbiAgcHVibGljIGlzRWRpdE1vZGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFjY2VwdGVkRmlsZXM6IHN0cmluZyB8IG51bGwgPVxuICAgIHRoaXMuY29uZmlnU2VydmljZT8uY29uZmlnPy5jYXNlRmlsZVVwbG9hZEFjY2VwdGVkRmlsZXMgfHwgbnVsbDtcbiAgcHVibGljIHJlYWRvbmx5IG1heEZpbGVTaXplOiBudW1iZXIgPSB0aGlzLmNvbmZpZ1NlcnZpY2U/LmNvbmZpZz8uY2FzZUZpbGVTaXplVXBsb2FkTGltaXRNQiB8fCA1O1xuXG4gIHB1YmxpYyByZWFkb25seSBmaWxlVG9CZVVwbG9hZGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsZSB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgbW9kYWxEaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dNb2RhbCQgPSBuZXcgU3ViamVjdDxudWxsPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd1VwbG9hZE1vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd0RlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSB1cGxvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2l0ZW1zTG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwdWJsaWMgcmVhZG9ubHkgZmllbGRzTG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9pdGVtc0xvYWRpbmckLCB0aGlzLmZpZWxkc0xvYWRpbmckXSkucGlwZShcbiAgICBtYXAoKFtpdGVtc0xvYWRpbmcsIGZpZWxkc0xvYWRpbmddKSA9PiBpdGVtc0xvYWRpbmcgfHwgZmllbGRzTG9hZGluZylcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyJCA9IG5ldyBSZXBsYXlTdWJqZWN0PERvY3VtZW50ZW5BcGlGaWx0ZXJNb2RlbCB8IG51bGw+KCk7XG4gIHB1YmxpYyByZWFkb25seSBwYWdpbmF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UGFnaW5hdGlvbj4oREVGQVVMVF9QQUdJTkFUSU9OKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVmZXRjaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zb3J0JCA9IG5ldyBSZXBsYXlTdWJqZWN0PHtzb3J0OiBzdHJpbmd9IHwgbnVsbD4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcGFnaW5hdG9yQ29uZmlnID0ge1xuICAgIC4uLkRFRkFVTFRfUEFHSU5BVE9SX0NPTkZJRyxcbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zOiBbNSwgMTAsIDIwLCA1MCwgMTAwXSxcbiAgfTtcblxuICBwdWJsaWMgZ2V0IHNvcnRTdGF0ZSQoKTogT2JzZXJ2YWJsZTxTb3J0U3RhdGUgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NvcnQkLnBpcGUobWFwKHNvcnRWYWx1ZSA9PiB0aGlzLmdldFNvcnRTdGF0ZUZyb21Tb3J0U3RyaW5nKHNvcnRWYWx1ZT8uc29ydCkpKTtcbiAgfVxuXG4gIHB1YmxpYyByZWxhdGVkRmlsZXMkOiBPYnNlcnZhYmxlPEFycmF5PERvY3VtZW50ZW5BcGlSZWxhdGVkRmlsZT4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5kb2N1bWVudElkJCxcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1NYXAsXG4gICAgdGhpcy5fcmVmZXRjaCQsXG4gIF0pLnBpcGUoXG4gICAgdGFwKCgpID0+IHRoaXMuX2l0ZW1zTG9hZGluZyQubmV4dCh0cnVlKSksXG4gICAgc3dpdGNoTWFwKChbZG9jdW1lbnRJZCwgcXVlcnlQYXJhbXNdKSA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuZG9jdW1lbnRlbkFwaURvY3VtZW50U2VydmljZS5nZXRGaWx0ZXJlZFpha2VuQXBpRG9jdW1lbnRzKFxuICAgICAgICAgIGRvY3VtZW50SWQsXG4gICAgICAgICAgcXVlcnlQYXJhbXNbJ3BhcmFtcyddXG4gICAgICAgICksXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICAgICAgXSlcbiAgICApLFxuICAgIG1hcCgoW3JlbGF0ZWRGaWxlc10pID0+IHtcbiAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7XG4gICAgICAgIC4uLnRoaXMucGFnaW5hdGlvbiQuZ2V0VmFsdWUoKSxcbiAgICAgICAgY29sbGVjdGlvblNpemU6IHJlbGF0ZWRGaWxlcy50b3RhbEVsZW1lbnRzLFxuICAgICAgfSk7XG4gICAgICBjb25zdCB0cmFuc2xhdGVkRmlsZXMgPSByZWxhdGVkRmlsZXM/LmNvbnRlbnQ/Lm1hcChmaWxlID0+ICh7XG4gICAgICAgIC4uLmZpbGUsXG4gICAgICAgIGNyZWF0ZWRCeTogZmlsZS5jcmVhdGVkQnkgfHwgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2xpc3QuYXV0b21hdGljYWxseUdlbmVyYXRlZCcpLFxuICAgICAgICBzaXplOiB0aGlzLmJ5dGVzVG9NZWdhYnl0ZXMoZmlsZS5iZXN0YW5kc29tdmFuZyksXG4gICAgICAgIHRhZ3M6IGZpbGUudHJlZndvb3JkZW4/Lm1hcCgodHJlZndvb3JkOiBzdHJpbmcpID0+ICh7XG4gICAgICAgICAgY29udGVudDogdHJlZndvb3JkLFxuICAgICAgICB9KSksXG4gICAgICB9KSk7XG4gICAgICByZXR1cm4gdHJhbnNsYXRlZEZpbGVzIHx8IFtdO1xuICAgIH0pLFxuICAgIHRhcCgoKSA9PiB7XG4gICAgICB0aGlzLl9pdGVtc0xvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgIH0pLFxuICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgdGhpcy5zaG93WmFha0xpbmtXYXJuaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2l0ZW1zTG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH0pXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdXBsb2FkUHJvdmlkZXJTZXJ2aWNlOiBVcGxvYWRQcm92aWRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb3dubG9hZFNlcnZpY2U6IERvd25sb2FkU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlclByb3ZpZGVyU2VydmljZTogVXNlclByb3ZpZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGljb25TZXJ2aWNlOiBJY29uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ZW5BcGlEb2N1bWVudFNlcnZpY2U6IERvY3VtZW50ZW5BcGlEb2N1bWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudGVuQXBpQ29sdW1uU2VydmljZTogRG9jdW1lbnRlbkFwaUNvbHVtblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudGVuQXBpVmVyc2lvblNlcnZpY2U6IERvY3VtZW50ZW5BcGlWZXJzaW9uU2VydmljZVxuICApIHtcbiAgICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyKEZpbHRlcjE2KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEluaXRpYWxQYXJhbXMoKTtcbiAgICB0aGlzLnNldFVwbG9hZFByb2Nlc3NMaW5rZWQoKTtcbiAgICB0aGlzLmlzVXNlckFkbWluKCk7XG4gICAgdGhpcy5pY29uU2VydmljZS5yZWdpc3RlckFsbChbRmlsdGVyMTYsIFRhZ0dyb3VwMTYsIFVwbG9hZDE2XSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG9uRGVsZXRlQWN0aW9uQ2xpY2soaXRlbTogRG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlKTogdm9pZCB7XG4gICAgdGhpcy5kb2N1bWVudCA9IGl0ZW07XG4gICAgdGhpcy5zaG93RGVsZXRlQ29uZmlybWF0aW9uTW9kYWwkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlRG9jdW1lbnQoKTogdm9pZCB7XG4gICAgdGhpcy5faXRlbXNMb2FkaW5nJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZG9jdW1lbnRlbkFwaURvY3VtZW50U2VydmljZS5kZWxldGVEb2N1bWVudCh0aGlzLmRvY3VtZW50KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZldGNoRG9jdW1lbnRzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYnl0ZXNUb01lZ2FieXRlcyhieXRlczogbnVtYmVyIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgICBpZiAoIWJ5dGVzKSByZXR1cm4gJyc7XG5cbiAgICBjb25zdCBtZWdhYnl0ZXMgPSBieXRlcyAvICgxMDI0ICogMTAyNCk7XG4gICAgaWYgKG1lZ2FieXRlcyA8IDEpIHtcbiAgICAgIHJldHVybiBgJHtNYXRoLmNlaWwobWVnYWJ5dGVzICogMTAwMCl9IEtCYDtcbiAgICB9IGVsc2UgaWYgKG1lZ2FieXRlcyA8IDEwMDApIHtcbiAgICAgIHJldHVybiBtZWdhYnl0ZXMudG9GaXhlZCgyKSArICcgTUInO1xuICAgIH1cblxuICAgIHJldHVybiAobWVnYWJ5dGVzIC8gMTAwMCkudG9GaXhlZCgyKSArICcgR0InO1xuICB9XG5cbiAgcHVibGljIGdldFVwbG9hZEJ1dHRvblRvb2x0aXAoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy51cGxvYWRQcm9jZXNzTGlua2VkU2V0ICYmIHRoaXMudXBsb2FkUHJvY2Vzc0xpbmtlZCkge1xuICAgICAgcmV0dXJuICdVcGxvYWQnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0FkbWluKSB7XG4gICAgICByZXR1cm4gJ2Rvc3NpZXIuZG9jdW1lbnRlbi5ub1Byb2Nlc3NMaW5rZWQuYWRtaW5Sb2xlJztcbiAgICB9XG5cbiAgICByZXR1cm4gJ2Rvc3NpZXIuZG9jdW1lbnRlbi5ub1Byb2Nlc3NMaW5rZWQucmVndWxhclVzZXInO1xuICB9XG5cbiAgcHVibGljIGlzVXNlckFkbWluKCkge1xuICAgIHRoaXMudXNlclByb3ZpZGVyU2VydmljZVxuICAgICAgLmdldFVzZXJTdWJqZWN0KClcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICB1c2VySWRlbnRpdHkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNBZG1pbiA9IHVzZXJJZGVudGl0eS5yb2xlcy5pbmNsdWRlcygnUk9MRV9BRE1JTicpO1xuICAgICAgICB9LFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc0FkbWluID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgbWV0YWRhdGFTZXQobWV0YWRhdGE6IERvY3VtZW50ZW5BcGlNZXRhZGF0YSk6IHZvaWQge1xuICAgIHRoaXMudXBsb2FkaW5nJC5uZXh0KHRydWUpO1xuXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5maWxlVG9CZVVwbG9hZGVkJCwgdGhpcy5kb2N1bWVudElkJF0pXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoW2ZpbGUsIGRvY3VtZW50SWRdKSA9PiB7XG4gICAgICAgICAgaWYgKCFmaWxlKSByZXR1cm47XG4gICAgICAgICAgaWYgKHRoaXMuaXNFZGl0TW9kZSQuZ2V0VmFsdWUoKSkge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudGVuQXBpRG9jdW1lbnRTZXJ2aWNlLnVwZGF0ZURvY3VtZW50KGZpbGUsIG1ldGFkYXRhKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnJlZmV0Y2hEb2N1bWVudHMoKTtcbiAgICAgICAgICAgICAgdGhpcy51cGxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICB0aGlzLmZpbGVUb0JlVXBsb2FkZWQkLm5leHQobnVsbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRQcm92aWRlclNlcnZpY2VcbiAgICAgICAgICAgICAgLnVwbG9hZEZpbGVXaXRoTWV0YWRhdGEoZmlsZSwgZG9jdW1lbnRJZCwgbWV0YWRhdGEpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVmZXRjaERvY3VtZW50cygpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyJC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dChERUZBVUxUX1BBR0lOQVRJT04pO1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVUb0JlVXBsb2FkZWQkLm5leHQobnVsbCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRvd25sb2FkQWN0aW9uQ2xpY2soZmlsZTogRG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlKTogdm9pZCB7XG4gICAgdGhpcy5kb3dubG9hZERvY3VtZW50KGZpbGUsIHRydWUpO1xuICB9XG5cbiAgcHVibGljIG9uRWRpdE1ldGFkYXRhKGZpbGU6IEZpbGUpOiB2b2lkIHtcbiAgICB0aGlzLmlzRWRpdE1vZGUkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5maWxlVG9CZVVwbG9hZGVkJC5uZXh0KGZpbGUpO1xuICAgIHRoaXMuc2hvd1VwbG9hZE1vZGFsJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIGNsb3NlTWV0YWRhdGFNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dVcGxvYWRNb2RhbCQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaXNFZGl0TW9kZSQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5maWxlVG9CZVVwbG9hZGVkJC5uZXh0KGV2ZW50LnRhcmdldC5maWxlc1swXSk7XG4gICAgdGhpcy5zaG93VXBsb2FkTW9kYWwkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5yZXNldEZpbGVJbnB1dCgpO1xuICB9XG5cbiAgcHVibGljIG9uTmF2aWdhdGVUb0Nhc2VBZG1pbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PiB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9kb3NzaWVyLW1hbmFnZW1lbnQvZG9zc2llci8ke2RvY3VtZW50RGVmaW5pdGlvbk5hbWV9YF0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uUm93Q2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZG93bmxvYWREb2N1bWVudChldmVudCwgZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIG9uUGFnaW5hdGlvbkNsaWNrZWQocGFnZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHsuLi50aGlzLnBhZ2luYXRpb24kLmdldFZhbHVlKCksIHBhZ2V9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblBhZ2luYXRpb25TZXQoc2l6ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qge2NvbGxlY3Rpb25TaXplLCBwYWdlfSA9IHRoaXMucGFnaW5hdGlvbiQuZ2V0VmFsdWUoKTtcbiAgICBjb25zdCByZXNldFBhZ2U6IGJvb2xlYW4gPSBNYXRoLmNlaWwoK2NvbGxlY3Rpb25TaXplIC8gc2l6ZSkgPD0gK3BhZ2UgJiYgK2NvbGxlY3Rpb25TaXplID4gMDtcbiAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoey4uLnRoaXMucGFnaW5hdGlvbiQuZ2V0VmFsdWUoKSwgc2l6ZSwgLi4uKHJlc2V0UGFnZSAmJiB7cGFnZTogMX0pfSk7XG4gIH1cblxuICBwdWJsaWMgb25VcGxvYWRCdXR0b25DbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gIH1cblxuICBwdWJsaWMgb25GaWx0ZXJFdmVudChmaWx0ZXI6IERvY3VtZW50ZW5BcGlGaWx0ZXJNb2RlbCB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlciQubmV4dChmaWx0ZXIpO1xuICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7Li4udGhpcy5wYWdpbmF0aW9uJC5nZXRWYWx1ZSgpLCAuLi5ERUZBVUxUX1BBR0lOQVRJT059KTtcbiAgfVxuXG4gIHB1YmxpYyBvblNvcnRDaGFuZ2VkKHNvcnRTdGF0ZTogU29ydFN0YXRlKTogdm9pZCB7XG4gICAgdGhpcy5fc29ydCQubmV4dChcbiAgICAgIHNvcnRTdGF0ZS5pc1NvcnRpbmdcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBzb3J0OiBgJHtzb3J0U3RhdGUuc3RhdGUubmFtZSA9PT0gJ3NpemUnID8gRE9DVU1FTlRFTl9DT0xVTU5fS0VZUy5CRVNUQU5EU09NVkFORyA6IHNvcnRTdGF0ZS5zdGF0ZS5uYW1lfSwke3NvcnRTdGF0ZS5zdGF0ZS5kaXJlY3Rpb259YCxcbiAgICAgICAgICB9XG4gICAgICAgIDogbnVsbFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgcmVmZXRjaERvY3VtZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl9yZWZldGNoJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBlZGl0RGlzYWJsZWQoZmlsZTogRG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZpbGUuc3RhdHVzID09PSAnZGVmaW5pdGllZic7XG4gIH1cblxuICBwcml2YXRlIGRvd25sb2FkRG9jdW1lbnQocmVsYXRlZEZpbGU6IERvY3VtZW50ZW5BcGlSZWxhdGVkRmlsZSwgZm9yY2VEb3dubG9hZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnRJZCQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoZG9jdW1lbnRJZCA9PiB7XG4gICAgICB0aGlzLmRvd25sb2FkU2VydmljZS5kb3dubG9hZEZpbGUoXG4gICAgICAgIGAvYXBpL3YxL3pha2VuLWFwaS8ke3JlbGF0ZWRGaWxlLnBsdWdpbkNvbmZpZ3VyYXRpb25JZH0vY2FzZS1kb2N1bWVudC8ke2RvY3VtZW50SWR9L2ZpbGVzLyR7cmVsYXRlZEZpbGUuZmlsZUlkfS9kb3dubG9hZGAsXG4gICAgICAgIHJlbGF0ZWRGaWxlLmJlc3RhbmRzbmFhbSA/PyAnJyxcbiAgICAgICAgZm9yY2VEb3dubG9hZFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblF1ZXJ5UGFyYW1zU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQsXG4gICAgICAgIHRoaXMuZG9jdW1lbnRJZCQsXG4gICAgICAgIHRoaXMuZmlsdGVyJCxcbiAgICAgICAgdGhpcy5fc29ydCQsXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQsXG4gICAgICBdKS5zdWJzY3JpYmUoKFtkZWZpbml0aW9uTmFtZSwgZG9jdW1lbnRJZCwgZmlsdGVyLCBzb3J0LCBwYWdpbmF0aW9uXSkgPT4ge1xuICAgICAgICBjb25zdCB7c2l6ZSwgcGFnZX0gPSBwYWdpbmF0aW9uO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9kb3NzaWVycy8ke2RlZmluaXRpb25OYW1lfS9kb2N1bWVudC8ke2RvY3VtZW50SWR9L2RvY3VtZW50c2BdLCB7XG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHsuLi5maWx0ZXIsIC4uLnNvcnQsIHNpemUsIHBhZ2U6IHBhZ2UgLSAxfSxcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RmlsZUlucHV0KCk6IHZvaWQge1xuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgfVxuXG4gIHByaXZhdGUgc2V0VXBsb2FkUHJvY2Vzc0xpbmtlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgICAgICB0aGlzLnVwbG9hZFByb3ZpZGVyU2VydmljZS5jaGVja1VwbG9hZFByb2Nlc3NMaW5rKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICAgICAgICksXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGxvYWRQcm9jZXNzTGlua2VkU2V0ID0gdHJ1ZTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGxpbmtlZDogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLnVwbG9hZFByb2Nlc3NMaW5rZWQgPSBsaW5rZWQ7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5pdGlhbFBhcmFtcygpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1NYXBcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBtYXAocXVlcnlQYXJhbXMgPT4ge1xuICAgICAgICAgIGNvbnN0IHtzb3J0LCBzaXplLCBwYWdlLCAuLi5maWx0ZXJ9ID0gcXVlcnlQYXJhbXNbJ3BhcmFtcyddO1xuICAgICAgICAgIHJldHVybiB7c29ydCwgZmlsdGVyLCBzaXplLCBwYWdlfTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHtmaWx0ZXIsIHNvcnQsIHNpemUsIHBhZ2V9KSA9PiB7XG4gICAgICAgIHRoaXMuX3NvcnQkLm5leHQoe3NvcnR9KTtcbiAgICAgICAgdGhpcy5maWx0ZXIkLm5leHQoZmlsdGVyKTtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHtcbiAgICAgICAgICAuLi50aGlzLnBhZ2luYXRpb24kLmdldFZhbHVlKCksXG4gICAgICAgICAgc2l6ZTogK3NpemUsXG4gICAgICAgICAgcGFnZTogKyhwYWdlID8/IDApICsgMSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub3BlblF1ZXJ5UGFyYW1zU3Vic2NyaXB0aW9uKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U29ydFN0YXRlRnJvbVNvcnRTdHJpbmcoc29ydFN0cmluZz86IHN0cmluZyk6IFNvcnRTdGF0ZSB8IG51bGwge1xuICAgIGNvbnN0IHNwbGl0U3RyaW5nID0gc29ydFN0cmluZyAmJiBzb3J0U3RyaW5nLnNwbGl0KCcsJyk7XG4gICAgaWYgKHNwbGl0U3RyaW5nICYmIHNwbGl0U3RyaW5nPy5sZW5ndGggPiAxKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc1NvcnRpbmc6IHRydWUsXG4gICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgbmFtZTogc3BsaXRTdHJpbmdbMF0sXG4gICAgICAgICAgZGlyZWN0aW9uOiBzcGxpdFN0cmluZ1sxXSBhcyBEaXJlY3Rpb24sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG48ZGl2XG4gIGNsYXNzPVwiY2FyYm9uLWRvY3VtZW50LXRhYmxlLXdyYXBwZXJcIlxuICAqbmdJZj1cIntcbiAgICBsb2FkaW5nOiBsb2FkaW5nJCB8IGFzeW5jLFxuICAgIGZpZWxkc0xvYWRpbmc6IGZpZWxkc0xvYWRpbmckIHwgYXN5bmMsXG4gICAgdXBsb2FkaW5nOiB1cGxvYWRpbmckIHwgYXN5bmMsXG4gICAgcmVsYXRlZEZpbGVzOiByZWxhdGVkRmlsZXMkIHwgYXN5bmMsXG4gICAgZmllbGRzOiBmaWVsZHMkIHwgYXN5bmMsXG4gICAgc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzOiBzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMkIHwgYXN5bmMsXG4gICAgcGFnaW5hdGlvbjogcGFnaW5hdGlvbiQgfCBhc3luYyxcbiAgICBzb3J0U3RhdGU6IHNvcnRTdGF0ZSQgfCBhc3luYyxcbiAgfSBhcyBvYnNcIlxuPlxuICBAaWYgKCghb2JzLmZpZWxkc0xvYWRpbmcgJiYgb2JzLmZpZWxkcy5sZW5ndGgpIHx8IG9icy5maWVsZHNMb2FkaW5nKSB7XG4gICAgPHZhbHRpbW8tY2FyYm9uLWxpc3RcbiAgICAgIFthY3Rpb25JdGVtc109XCJhY3Rpb25JdGVtc1wiXG4gICAgICBbaXRlbXNdPVwib2JzLnJlbGF0ZWRGaWxlc1wiXG4gICAgICBbZmllbGRzXT1cIm9icy5maWVsZHNcIlxuICAgICAgW2luaXRpYWxTb3J0U3RhdGVdPVwib2JzLnNvcnRTdGF0ZVwiXG4gICAgICBbbG9hZGluZ109XCJvYnMubG9hZGluZ1wiXG4gICAgICBbcGFnaW5hdGlvbl09XCJvYnMucGFnaW5hdGlvblwiXG4gICAgICBbcGFnaW5hdG9yQ29uZmlnXT1cInBhZ2luYXRvckNvbmZpZ1wiXG4gICAgICBwYWdpbmF0aW9uSWRlbnRpZmllcj1cImRvY3VtZW50ZW5BcGlcIlxuICAgICAgKHJvd0NsaWNrZWQpPVwib25Sb3dDbGljaygkZXZlbnQpXCJcbiAgICAgIChzb3J0Q2hhbmdlZCk9XCJcbiAgICAgICAgb2JzPy5zdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXM/LnN1cHBvcnRzU29ydGFibGVDb2x1bW5zICYmIG9uU29ydENoYW5nZWQoJGV2ZW50KVxuICAgICAgXCJcbiAgICAgIChwYWdpbmF0aW9uQ2xpY2tlZCk9XCJvblBhZ2luYXRpb25DbGlja2VkKCRldmVudClcIlxuICAgICAgKHBhZ2luYXRpb25TZXQpPVwib25QYWdpbmF0aW9uU2V0KCRldmVudClcIlxuICAgICAgaGlkZUNvbHVtbkhlYWRlclxuICAgID5cbiAgICAgIDxkaXYgY2FyYm9uVG9vbGJhckNvbnRlbnQ+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIFthY2NlcHRdPVwiYWNjZXB0ZWRGaWxlc1wiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICBoaWRkZW5cbiAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgI2ZpbGVJbnB1dFxuICAgICAgICAvPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cIm9icz8uc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzPy5zdXBwb3J0c0ZpbHRlcmFibGVDb2x1bW5zXCJcbiAgICAgICAgICBbY2RzT3ZlcmZsb3dNZW51XT1cIm92ZXJmbG93RmlsdGVyXCJcbiAgICAgICAgICBbY3VzdG9tUGFuZV09XCJ0cnVlXCJcbiAgICAgICAgICBbaWNvbk9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgW2ZsaXBdPVwidHJ1ZVwiXG4gICAgICAgICAgW29mZnNldF09XCJ7eDogMCwgeTogNDd9XCJcbiAgICAgICAgICBjZHNCdXR0b249XCJnaG9zdFwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJmaWx0ZXJcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInVwbG9hZEJ1dHRvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub1Jlc3VsdHNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L3ZhbHRpbW8tY2FyYm9uLWxpc3Q+XG4gIH0gQGVsc2Uge1xuICAgIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICAgIFthY3Rpb25dPVwibmF2aWdhdGVUb0Nhc2VBZG1pbkJ1dHRvblwiXG4gICAgICBbZGVzY3JpcHRpb25dPVwiJ3pndy5kb2N1bWVudHMubm9Db2x1bW5zLmRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdGl0bGVdPVwiJ3pndy5kb2N1bWVudHMubm9Db2x1bW5zLnRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuICB9XG5cbiAgPHZhbHRpbW8tZG9jdW1lbnRlbi1hcGktbWV0YWRhdGEtbW9kYWxcbiAgICBbb3Blbl09XCJzaG93VXBsb2FkTW9kYWwkIHwgYXN5bmNcIlxuICAgIFtkaXNhYmxlZCRdPVwibW9kYWxEaXNhYmxlZCRcIlxuICAgIFtmaWxlJF09XCJmaWxlVG9CZVVwbG9hZGVkJFwiXG4gICAgW2lzRWRpdE1vZGVdPVwiaXNFZGl0TW9kZSQgfCBhc3luY1wiXG4gICAgW3N1cHBvcnRzVHJlZndvb3JkZW5dPVwib2JzPy5zdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXM/LnN1cHBvcnRzVHJlZndvb3JkZW5cIlxuICAgIChtb2RhbENsb3NlKT1cImNsb3NlTWV0YWRhdGFNb2RhbCgpXCJcbiAgICAobWV0YWRhdGEpPVwibWV0YWRhdGFTZXQoJGV2ZW50KVwiXG4gID48L3ZhbHRpbW8tZG9jdW1lbnRlbi1hcGktbWV0YWRhdGEtbW9kYWw+XG48L2Rpdj5cblxuPHZhbHRpbW8tY29uZmlybWF0aW9uLW1vZGFsXG4gIGNvbmZpcm1CdXR0b25UZXh0VHJhbnNsYXRpb25LZXk9XCJkYXNoYm9hcmRNYW5hZ2VtZW50LmRlbGV0ZU1vZGFsLmNvbmZpcm1cIlxuICBjb250ZW50VHJhbnNsYXRpb25LZXk9XCJkb3NzaWVyLmRvY3VtZW50ZW4uZGVsZXRlQ29uZmlybWF0aW9uTW9kYWwuY29udGVudFwiXG4gIGNvbmZpcm1CdXR0b25UeXBlPVwiZGFuZ2VyXCJcbiAgdGl0bGVUcmFuc2xhdGlvbktleT1cImRvc3NpZXIuZG9jdW1lbnRlbi5kZWxldGVDb25maXJtYXRpb25Nb2RhbC50aXRsZVwiXG4gIFtzaG93TW9kYWxTdWJqZWN0JF09XCJzaG93RGVsZXRlQ29uZmlybWF0aW9uTW9kYWwkXCJcbiAgKGNvbmZpcm1FdmVudCk9XCJkZWxldGVEb2N1bWVudCgpXCJcbj5cbjwvdmFsdGltby1jb25maXJtYXRpb24tbW9kYWw+XG5cbjxuZy10ZW1wbGF0ZSAjZG93bmxvYWRCdXR0b24gbGV0LWluZGV4PVwiaW5kZXhcIiBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgPGRpdlxuICAgICpuZ0lmPVwie2lzRG93bmxvYWRpbmc6IGluZGV4ZXNJbmNsdWRlSW5kZXgoZG93bmxvYWRpbmdGaWxlSW5kZXhlcyQgfCBhc3luYywgaW5kZXgpfSBhcyB2YXJzXCJcbiAgICBjbGFzcz1cImRvd25sb2FkLWJ1dHRvbi1jb250YWluZXJcIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCIhdmFycy5pc0Rvd25sb2FkaW5nXCJcbiAgICAgIGNkc0J1dHRvbj1cInByaW1hcnlcIlxuICAgICAgc2l6ZT1cInNtXCJcbiAgICAgIChjbGljayk9XCJkb3dubG9hZERvY3VtZW50KGl0ZW0sIGluZGV4KVwiXG4gICAgPlxuICAgICAge3sgJ2ludGVyZmFjZS5kb3dubG9hZCcgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cImRvd25sb2FkXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgPC9idXR0b24+XG5cbiAgICA8Y2RzLWxvYWRpbmcgc2l6ZT1cInNtXCIgKm5nSWY9XCJ2YXJzLmlzRG93bmxvYWRpbmdcIj48L2Nkcy1sb2FkaW5nPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbm9SZXN1bHRzPlxuICBAaWYgKChmaWx0ZXIkIHwgYXN5bmMgfCBrZXl2YWx1ZSk/Lmxlbmd0aCkge1xuICAgIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICAgIFthY3Rpb25dPVwicmVzZXRGaWx0ZXJCdXR0b25cIlxuICAgICAgW2Rlc2NyaXB0aW9uXT1cIid6Z3cuZG9jdW1lbnRzLm5vUmVzdWx0cy5maWx0ZXJEZXNjcmlwdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgW3RpdGxlXT1cIid6Z3cuZG9jdW1lbnRzLm5vUmVzdWx0cy5maWx0ZXJUaXRsZScgfCB0cmFuc2xhdGVcIlxuICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgfSBAZWxzZSBpZiAoc2hvd1phYWtMaW5rV2FybmluZyAmJiBpc0FkbWluKSB7XG4gICAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgICAgW2FjdGlvbl09XCJuYXZpZ2F0ZVRvQ2FzZUFkbWluQnV0dG9uXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCInZG9zc2llci5kb2N1bWVudGVuLm5vWmFha0ZvdW5kJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdGl0bGVdPVwiJ2Rvc3NpZXIuZG9jdW1lbnRlbi5ub1phYWtGb3VuZFRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuICB9IEBlbHNlIHtcbiAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICBbYWN0aW9uXT1cInVwbG9hZEJ1dHRvblwiXG4gICAgICBbZGVzY3JpcHRpb25dPVwiJ2Rvc3NpZXIuZG9jdW1lbnRlbi5ub0ZpbGVzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdGl0bGVdPVwiJ2Rvc3NpZXIuZG9jdW1lbnRlbi5ub0ZpbGVzVGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjb3ZlcmZsb3dGaWx0ZXI+XG4gIDx2YWx0aW1vLWRvc3NpZXItZGV0YWlsLXRhYi1kb2N1bWVudGVuLWFwaS1maWx0ZXJcbiAgICBbcHJlZmlsbEZpbHRlcl09XCJmaWx0ZXIkIHwgYXN5bmNcIlxuICAgIChmaWx0ZXJFdmVudCk9XCJvbkZpbHRlckV2ZW50KCRldmVudClcIlxuICA+PC92YWx0aW1vLWRvc3NpZXItZGV0YWlsLXRhYi1kb2N1bWVudGVuLWFwaS1maWx0ZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Jlc2V0RmlsdGVyQnV0dG9uPlxuICA8YnV0dG9uIGNkc0J1dHRvbj1cInByaW1hcnlcIiAoY2xpY2spPVwib25GaWx0ZXJFdmVudChudWxsKVwiPlxuICAgIHt7ICdSZXNldCBmaWx0ZXInIHwgdHJhbnNsYXRlIH19XG5cbiAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwidHJhc2gtY2FuXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN1cGxvYWRCdXR0b24gbGV0LWRpc2FibGVkPVwiZGlzYWJsZWRcIj5cbiAgPGJ1dHRvblxuICAgIFtkaXNhYmxlZF09XCIodXBsb2FkUHJvY2Vzc0xpbmtlZFNldCAmJiAhdXBsb2FkUHJvY2Vzc0xpbmtlZCkgfHwgc2hvd1phYWtMaW5rV2FybmluZyB8fCBkaXNhYmxlZFwiXG4gICAgW3ZUb29sdGlwXT1cImdldFVwbG9hZEJ1dHRvblRvb2x0aXAoKSB8IHRyYW5zbGF0ZVwiXG4gICAgKGNsaWNrKT1cIm9uVXBsb2FkQnV0dG9uQ2xpY2soKVwiXG4gICAgY2RzQnV0dG9uPVwicHJpbWFyeVwiXG4gID5cbiAgICB7eyAnVXBsb2FkJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJ1cGxvYWRcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RyYW5zbGF0aW9uVGVtcGxhdGUgbGV0LWRhdGE9XCJkYXRhXCI+XG4gIHt7ICdkb2N1bWVudC4nICsgZGF0YS5pdGVtW2RhdGEua2V5XSB8IHRyYW5zbGF0ZSB9fVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNuYXZpZ2F0ZVRvQ2FzZUFkbWluQnV0dG9uPlxuICA8YnV0dG9uIChjbGljayk9XCJvbk5hdmlnYXRlVG9DYXNlQWRtaW5DbGljaygpXCIgY2RzQnV0dG9uPVwicHJpbWFyeVwiPlxuICAgIHt7ICdkb3NzaWVyLmRvY3VtZW50ZW4ubmF2aWdhdGVUb0Nhc2VBZG1pbicgfCB0cmFuc2xhdGUgfX1cblxuICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJzZXR0aW5nc1wiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1621,7 +1621,9 @@ class DossierDetailTabDocumentenApiDocumentsComponent {
1621
1621
  return file.status === 'definitief';
1622
1622
  }
1623
1623
  downloadDocument(relatedFile, forceDownload) {
1624
- this.downloadService.downloadFile(`/api/v1/documenten-api/${relatedFile.pluginConfigurationId}/files/${relatedFile.fileId}/download`, relatedFile.bestandsnaam ?? '', forceDownload);
1624
+ this.documentId$.pipe(take$1(1)).subscribe(documentId => {
1625
+ this.downloadService.downloadFile(`/api/v1/zaken-api/${relatedFile.pluginConfigurationId}/case-document/${documentId}/files/${relatedFile.fileId}/download`, relatedFile.bestandsnaam ?? '', forceDownload);
1626
+ });
1625
1627
  }
1626
1628
  openQueryParamsSubscription() {
1627
1629
  this._subscriptions.add(combineLatest([