@valtimo/zgw 12.5.0 → 12.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/esm2022/lib/components/dossier-management-zgw/dossier-management-zgw.component.mjs +9 -9
  2. package/esm2022/lib/models/dossier-management-zgw.model.mjs +2 -1
  3. package/esm2022/lib/modules/documenten-api/components/documenten-api-documents/documenten-api-documents.component.mjs +32 -3
  4. package/esm2022/lib/modules/documenten-api/components/documenten-api-metadata-modal/documenten-api-metadata-modal.component.mjs +95 -53
  5. package/esm2022/lib/modules/documenten-api/components/documenten-api-tags/documenten-api-tags.component.mjs +1 -3
  6. package/esm2022/lib/modules/documenten-api/components/documenten-api-upload-field-model/documenten-api-upload-field-modal.component.mjs +182 -0
  7. package/esm2022/lib/modules/documenten-api/components/documenten-api-upload-fields/documenten-api-upload-fields.component.mjs +118 -0
  8. package/esm2022/lib/modules/documenten-api/components/index.mjs +4 -2
  9. package/esm2022/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader-edit-form.mjs +287 -49
  10. package/esm2022/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader.component.mjs +108 -5
  11. package/esm2022/lib/modules/documenten-api/models/documenten-api-metadata.model.mjs +19 -2
  12. package/esm2022/lib/modules/documenten-api/models/documenten-api-upload-field.model.mjs +33 -0
  13. package/esm2022/lib/modules/documenten-api/services/documenten-api-document.service.mjs +10 -1
  14. package/fesm2022/valtimo-zgw.mjs +868 -159
  15. package/fesm2022/valtimo-zgw.mjs.map +1 -1
  16. package/lib/components/dossier-management-zgw/dossier-management-zgw.component.d.ts.map +1 -1
  17. package/lib/models/dossier-management-zgw.model.d.ts +2 -1
  18. package/lib/models/dossier-management-zgw.model.d.ts.map +1 -1
  19. package/lib/modules/documenten-api/components/documenten-api-documents/documenten-api-documents.component.d.ts +4 -0
  20. package/lib/modules/documenten-api/components/documenten-api-documents/documenten-api-documents.component.d.ts.map +1 -1
  21. package/lib/modules/documenten-api/components/documenten-api-metadata-modal/documenten-api-metadata-modal.component.d.ts +17 -21
  22. package/lib/modules/documenten-api/components/documenten-api-metadata-modal/documenten-api-metadata-modal.component.d.ts.map +1 -1
  23. package/lib/modules/documenten-api/components/documenten-api-tags/documenten-api-tags.component.d.ts.map +1 -1
  24. package/lib/modules/documenten-api/components/documenten-api-upload-field-model/documenten-api-upload-field-modal.component.d.ts +51 -0
  25. package/lib/modules/documenten-api/components/documenten-api-upload-field-model/documenten-api-upload-field-modal.component.d.ts.map +1 -0
  26. package/lib/modules/documenten-api/components/documenten-api-upload-fields/documenten-api-upload-fields.component.d.ts +31 -0
  27. package/lib/modules/documenten-api/components/documenten-api-upload-fields/documenten-api-upload-fields.component.d.ts.map +1 -0
  28. package/lib/modules/documenten-api/components/index.d.ts +3 -1
  29. package/lib/modules/documenten-api/components/index.d.ts.map +1 -1
  30. package/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader-edit-form.d.ts +44 -0
  31. package/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader-edit-form.d.ts.map +1 -1
  32. package/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader.component.d.ts +25 -10
  33. package/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader.component.d.ts.map +1 -1
  34. package/lib/modules/documenten-api/models/documenten-api-metadata.model.d.ts +11 -8
  35. package/lib/modules/documenten-api/models/documenten-api-metadata.model.d.ts.map +1 -1
  36. package/lib/modules/documenten-api/models/documenten-api-upload-field.model.d.ts +45 -0
  37. package/lib/modules/documenten-api/models/documenten-api-upload-field.model.d.ts.map +1 -0
  38. package/lib/modules/documenten-api/services/documenten-api-document.service.d.ts +4 -0
  39. package/lib/modules/documenten-api/services/documenten-api-document.service.d.ts.map +1 -1
  40. package/package.json +1 -1
@@ -18,7 +18,7 @@ import { TabsModule } from 'carbon-components-angular';
18
18
  import { ZgwTabEnum } from '../../models';
19
19
  import { TranslateModule } from '@ngx-translate/core';
20
20
  import { CommonModule } from '@angular/common';
21
- import { DocumentenApiColumnsComponent, DocumentenApiTagsComponent, } from '../../modules';
21
+ import { DocumentenApiColumnsComponent, DocumentenApiTagsComponent, DocumentenApiUploadFieldsComponent, } from '../../modules';
22
22
  import { BehaviorSubject, combineLatest, filter, map, switchMap, tap } from 'rxjs';
23
23
  import * as i0 from "@angular/core";
24
24
  import * as i1 from "../../services";
@@ -46,6 +46,12 @@ export class DossierManagementZgwComponent {
46
46
  tab: ZgwTabEnum.DOCUMENTEN_API_COLUMNS,
47
47
  component: DocumentenApiColumnsComponent,
48
48
  },
49
+ {
50
+ class: 'no-padding-left-right no-padding-top-bottom',
51
+ headingTranslationKey: 'zgw.tabs.documentUploadFields',
52
+ tab: ZgwTabEnum.DOCUMENTEN_API_UPLOAD_FIELDS,
53
+ component: DocumentenApiUploadFieldsComponent,
54
+ },
49
55
  ...(supportedDocumentenApiFeatures.supportsTrefwoorden
50
56
  ? [
51
57
  {
@@ -77,15 +83,9 @@ export class DossierManagementZgwComponent {
77
83
  }
78
84
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementZgwComponent, decorators: [{
79
85
  type: Component,
80
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
81
- CommonModule,
82
- TabsModule,
83
- TranslateModule,
84
- DocumentenApiTagsComponent,
85
- DocumentenApiColumnsComponent,
86
- ], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-tabs class=\"dossier-management-tabs\">\n @for (zgwTab of (zgwTabs$ | async) || []; track zgwTab.tab) {\n <cds-tab\n [class]=\"zgwTab.class\"\n [active]=\"zgwTab.active\"\n [heading]=\"zgwTab.headingTranslationKey | translate\"\n (selected)=\"displayTab(zgwTab.tab)\"\n ></cds-tab>\n }\n</cds-tabs>\n\n<div class=\"dossier-management-zgw__content\">\n <ng-template #zgwTabContent></ng-template>\n</div>\n", styles: ["/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
86
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TabsModule, TranslateModule], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-tabs class=\"dossier-management-tabs\">\n @for (zgwTab of (zgwTabs$ | async) || []; track zgwTab.tab) {\n <cds-tab\n [class]=\"zgwTab.class\"\n [active]=\"zgwTab.active\"\n [heading]=\"zgwTab.headingTranslationKey | translate\"\n (selected)=\"displayTab(zgwTab.tab)\"\n ></cds-tab>\n }\n</cds-tabs>\n\n<div class=\"dossier-management-zgw__content\">\n <ng-template #zgwTabContent></ng-template>\n</div>\n", styles: ["/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
87
87
  }], ctorParameters: () => [{ type: i1.DossierManagementZgwService }, { type: i0.ChangeDetectorRef }, { type: i2.DocumentenApiVersionService }, { type: i3.ActivatedRoute }], propDecorators: { _zgwTabContent: [{
88
88
  type: ViewChild,
89
89
  args: ['zgwTabContent', { read: ViewContainerRef }]
90
90
  }] } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXpndy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3pndy9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1tYW5hZ2VtZW50LXpndy9kb3NzaWVyLW1hbmFnZW1lbnQtemd3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vemd3L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtemd3L2Rvc3NpZXItbWFuYWdlbWVudC16Z3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRCxPQUFPLEVBQVMsVUFBVSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ2hELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUNMLDZCQUE2QixFQUM3QiwwQkFBMEIsR0FHM0IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQWdCN0YsTUFBTSxPQUFPLDZCQUE2QjtJQWlEeEMsWUFDbUIsMkJBQXdELEVBQ3hELEdBQXNCLEVBQ3RCLDJCQUF3RCxFQUN4RCxLQUFxQjtRQUhyQixnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQTZCO1FBQ3hELFFB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U0FBUztzQ0FHUyx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFVBQVU7d0JBQ1YsZUFBZTt3QkFDZiwwQkFBMEI7d0JBQzFCLDZCQUE2QjtxQkFDOUI7dU1BSU8sY0FBYztzQkFEckIsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUYWJzTW9kdWxlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7RG9zc2llck1hbmFnZW1lbnRaZ3dTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1pnd1RhYiwgWmd3VGFiRW51bX0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgRG9jdW1lbnRlbkFwaUNvbHVtbnNDb21wb25lbnQsXG4gIERvY3VtZW50ZW5BcGlUYWdzQ29tcG9uZW50LFxuICBEb2N1bWVudGVuQXBpVmVyc2lvblNlcnZpY2UsXG4gIFN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyxcbn0gZnJvbSAnLi4vLi4vbW9kdWxlcyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIHN3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vZG9zc2llci1tYW5hZ2VtZW50LXpndy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rvc3NpZXItbWFuYWdlbWVudC16Z3cuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVGFic01vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgRG9jdW1lbnRlbkFwaVRhZ3NDb21wb25lbnQsXG4gICAgRG9jdW1lbnRlbkFwaUNvbHVtbnNDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJNYW5hZ2VtZW50Wmd3Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnemd3VGFiQ29udGVudCcsIHtyZWFkOiBWaWV3Q29udGFpbmVyUmVmfSlcbiAgcHJpdmF0ZSBfemd3VGFiQ29udGVudDogVmlld0NvbnRhaW5lclJlZjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3SW5pdGlhbGl6ZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzJDogT2JzZXJ2YWJsZTxTdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXM+ID1cbiAgICB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgICAgbWFwKHBhcmFtcyA9PiBwYXJhbXM/Lm5hbWUpLFxuICAgICAgZmlsdGVyKGNhc2VEZWZpbml0aW9uTmFtZSA9PiAhIWNhc2VEZWZpbml0aW9uTmFtZSksXG4gICAgICBzd2l0Y2hNYXAoY2FzZURlZmluaXRpb25OYW1lID0+XG4gICAgICAgIHRoaXMuZG9jdW1lbnRlbkFwaVZlcnNpb25TZXJ2aWNlLmdldFN1cHBvcnRlZEFwaUZlYXR1cmVzKGNhc2VEZWZpbml0aW9uTmFtZSlcbiAgICAgIClcbiAgICApO1xuXG4gIHB1YmxpYyByZWFkb25seSB6Z3dUYWJzJDogT2JzZXJ2YWJsZTxaZ3dUYWJbXT4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLl92aWV3SW5pdGlhbGl6ZWQkLFxuICAgIHRoaXMuZG9zc2llck1hbmFnZW1lbnRaZ3dTZXJ2aWNlLmN1cnJlbnRUYWIkLFxuICAgIHRoaXMuX3N1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyQsXG4gIF0pLnBpcGUoXG4gICAgZmlsdGVyKChbdmlld0luaXRpYWxpemVkXSkgPT4gdmlld0luaXRpYWxpemVkKSxcbiAgICBtYXAoKFtfLCBjdXJyZW50VGFiLCBzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXNdKSA9PlxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgY2xhc3M6ICduby1wYWRkaW5nLWxlZnQtcmlnaHQgbm8tcGFkZGluZy10b3AtYm90dG9tJyxcbiAgICAgICAgICBoZWFkaW5nVHJhbnNsYXRpb25LZXk6ICd6Z3cudGFicy5kb2N1bWVudENvbHVtbnMnLFxuICAgICAgICAgIHRhYjogWmd3VGFiRW51bS5ET0NVTUVOVEVOX0FQSV9DT0xVTU5TLFxuICAgICAgICAgIGNvbXBvbmVudDogRG9jdW1lbnRlbkFwaUNvbHVtbnNDb21wb25lbnQsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLihzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMuc3VwcG9ydHNUcmVmd29vcmRlblxuICAgICAgICAgID8gW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3M6ICduby1wYWRkaW5nLWxlZnQtcmlnaHQgbm8tcGFkZGluZy10b3AtYm90dG9tJyxcbiAgICAgICAgICAgICAgICBoZWFkaW5nVHJhbnNsYXRpb25LZXk6ICd6Z3cudGFicy5kb2N1bWVudFRhZ3MnLFxuICAgICAgICAgICAgICAgIHRhYjogWmd3VGFiRW51bS5ET0NVTUVOVEVOX0FQSV9UQUdTLFxuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogRG9jdW1lbnRlbkFwaVRhZ3NDb21wb25lbnQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdXG4gICAgICAgICAgOiBbXSksXG4gICAgICBdLm1hcCh6Z3dUYWIgPT4gKHsuLi56Z3dUYWIsIGFjdGl2ZTogY3VycmVudFRhYiA9PT0gemd3VGFiLnRhYn0pKVxuICAgICksXG4gICAgdGFwKHpnd1RhYnMgPT4ge1xuICAgICAgY29uc3QgYWN0aXZlVGFiID0gemd3VGFicy5sZW5ndGggPiAxID8gemd3VGFicy5maW5kKHRhYiA9PiB0YWIuYWN0aXZlKSA6IHpnd1RhYnNbMF07XG4gICAgICB0aGlzLl96Z3dUYWJDb250ZW50LmNsZWFyKCk7XG4gICAgICB0aGlzLl96Z3dUYWJDb250ZW50LmNyZWF0ZUNvbXBvbmVudChhY3RpdmVUYWIuY29tcG9uZW50KTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9zc2llck1hbmFnZW1lbnRaZ3dTZXJ2aWNlOiBEb3NzaWVyTWFuYWdlbWVudFpnd1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRlbkFwaVZlcnNpb25TZXJ2aWNlOiBEb2N1bWVudGVuQXBpVmVyc2lvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fdmlld0luaXRpYWxpemVkJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZG9zc2llck1hbmFnZW1lbnRaZ3dTZXJ2aWNlLnJlc2V0VG9EZWZhdWx0VGFiKCk7XG4gIH1cblxuICBwdWJsaWMgZGlzcGxheVRhYih0YWI6IFpnd1RhYkVudW0pOiB2b2lkIHtcbiAgICB0aGlzLmRvc3NpZXJNYW5hZ2VtZW50Wmd3U2VydmljZS5jdXJyZW50VGFiID0gdGFiO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxjZHMtdGFicyBjbGFzcz1cImRvc3NpZXItbWFuYWdlbWVudC10YWJzXCI+XG4gIEBmb3IgKHpnd1RhYiBvZiAoemd3VGFicyQgfCBhc3luYykgfHwgW107IHRyYWNrIHpnd1RhYi50YWIpIHtcbiAgICA8Y2RzLXRhYlxuICAgICAgW2NsYXNzXT1cInpnd1RhYi5jbGFzc1wiXG4gICAgICBbYWN0aXZlXT1cInpnd1RhYi5hY3RpdmVcIlxuICAgICAgW2hlYWRpbmddPVwiemd3VGFiLmhlYWRpbmdUcmFuc2xhdGlvbktleSB8IHRyYW5zbGF0ZVwiXG4gICAgICAoc2VsZWN0ZWQpPVwiZGlzcGxheVRhYih6Z3dUYWIudGFiKVwiXG4gICAgPjwvY2RzLXRhYj5cbiAgfVxuPC9jZHMtdGFicz5cblxuPGRpdiBjbGFzcz1cImRvc3NpZXItbWFuYWdlbWVudC16Z3dfX2NvbnRlbnRcIj5cbiAgPG5nLXRlbXBsYXRlICN6Z3dUYWJDb250ZW50PjwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXpndy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3pndy9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1tYW5hZ2VtZW50LXpndy9kb3NzaWVyLW1hbmFnZW1lbnQtemd3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vemd3L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtemd3L2Rvc3NpZXItbWFuYWdlbWVudC16Z3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRCxPQUFPLEVBQVMsVUFBVSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ2hELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUNMLDZCQUE2QixFQUM3QiwwQkFBMEIsRUFDMUIsa0NBQWtDLEdBR25DLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFVN0YsTUFBTSxPQUFPLDZCQUE2QjtJQXVEeEMsWUFDbUIsMkJBQXdELEVBQ3hELEdBQXNCLEVBQ3RCLDJCQUF3RCxFQUN4RCxLQUFxQjtRQUhyQixnQ0FBMkIsR0FBM0IsMkJBQTJCLENB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RyxDQUFDO0lBQ3BELENBQUM7K0dBeEVVLDZCQUE2QjttR0FBN0IsNkJBQTZCLG9LQUNMLGdCQUFnQiw2QkNoRHJELHdrQ0E4QkEsdXJCRGVZLFlBQVksbUZBQUUsVUFBVSwrYkFBRSxlQUFlOzs0RkFFeEMsNkJBQTZCO2tCQVB6QyxTQUFTO3NDQUdTLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxlQUFlLENBQUM7dU1BSTVDLGNBQWM7c0JBRHJCLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VGFic01vZHVsZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge0Rvc3NpZXJNYW5hZ2VtZW50Wmd3U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtaZ3dUYWIsIFpnd1RhYkVudW19IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIERvY3VtZW50ZW5BcGlDb2x1bW5zQ29tcG9uZW50LFxuICBEb2N1bWVudGVuQXBpVGFnc0NvbXBvbmVudCxcbiAgRG9jdW1lbnRlbkFwaVVwbG9hZEZpZWxkc0NvbXBvbmVudCxcbiAgRG9jdW1lbnRlbkFwaVZlcnNpb25TZXJ2aWNlLFxuICBTdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMsXG59IGZyb20gJy4uLy4uL21vZHVsZXMnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL2Rvc3NpZXItbWFuYWdlbWVudC16Z3cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLW1hbmFnZW1lbnQtemd3LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUYWJzTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyTWFuYWdlbWVudFpnd0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ3pnd1RhYkNvbnRlbnQnLCB7cmVhZDogVmlld0NvbnRhaW5lclJlZn0pXG4gIHByaXZhdGUgX3pnd1RhYkNvbnRlbnQ6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdmlld0luaXRpYWxpemVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyQ6IE9ic2VydmFibGU8U3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzPiA9XG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5uYW1lKSxcbiAgICAgIGZpbHRlcihjYXNlRGVmaW5pdGlvbk5hbWUgPT4gISFjYXNlRGVmaW5pdGlvbk5hbWUpLFxuICAgICAgc3dpdGNoTWFwKGNhc2VEZWZpbml0aW9uTmFtZSA9PlxuICAgICAgICB0aGlzLmRvY3VtZW50ZW5BcGlWZXJzaW9uU2VydmljZS5nZXRTdXBwb3J0ZWRBcGlGZWF0dXJlcyhjYXNlRGVmaW5pdGlvbk5hbWUpXG4gICAgICApXG4gICAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgemd3VGFicyQ6IE9ic2VydmFibGU8Wmd3VGFiW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5fdmlld0luaXRpYWxpemVkJCxcbiAgICB0aGlzLmRvc3NpZXJNYW5hZ2VtZW50Wmd3U2VydmljZS5jdXJyZW50VGFiJCxcbiAgICB0aGlzLl9zdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMkLFxuICBdKS5waXBlKFxuICAgIGZpbHRlcigoW3ZpZXdJbml0aWFsaXplZF0pID0+IHZpZXdJbml0aWFsaXplZCksXG4gICAgbWFwKChbXywgY3VycmVudFRhYiwgc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzXSkgPT5cbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzOiAnbm8tcGFkZGluZy1sZWZ0LXJpZ2h0IG5vLXBhZGRpbmctdG9wLWJvdHRvbScsXG4gICAgICAgICAgaGVhZGluZ1RyYW5zbGF0aW9uS2V5OiAnemd3LnRhYnMuZG9jdW1lbnRDb2x1bW5zJyxcbiAgICAgICAgICB0YWI6IFpnd1RhYkVudW0uRE9DVU1FTlRFTl9BUElfQ09MVU1OUyxcbiAgICAgICAgICBjb21wb25lbnQ6IERvY3VtZW50ZW5BcGlDb2x1bW5zQ29tcG9uZW50LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3M6ICduby1wYWRkaW5nLWxlZnQtcmlnaHQgbm8tcGFkZGluZy10b3AtYm90dG9tJyxcbiAgICAgICAgICBoZWFkaW5nVHJhbnNsYXRpb25LZXk6ICd6Z3cudGFicy5kb2N1bWVudFVwbG9hZEZpZWxkcycsXG4gICAgICAgICAgdGFiOiBaZ3dUYWJFbnVtLkRPQ1VNRU5URU5fQVBJX1VQTE9BRF9GSUVMRFMsXG4gICAgICAgICAgY29tcG9uZW50OiBEb2N1bWVudGVuQXBpVXBsb2FkRmllbGRzQ29tcG9uZW50LFxuICAgICAgICB9LFxuICAgICAgICAuLi4oc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzLnN1cHBvcnRzVHJlZndvb3JkZW5cbiAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzOiAnbm8tcGFkZGluZy1sZWZ0LXJpZ2h0IG5vLXBhZGRpbmctdG9wLWJvdHRvbScsXG4gICAgICAgICAgICAgICAgaGVhZGluZ1RyYW5zbGF0aW9uS2V5OiAnemd3LnRhYnMuZG9jdW1lbnRUYWdzJyxcbiAgICAgICAgICAgICAgICB0YWI6IFpnd1RhYkVudW0uRE9DVU1FTlRFTl9BUElfVEFHUyxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6IERvY3VtZW50ZW5BcGlUYWdzQ29tcG9uZW50LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXVxuICAgICAgICAgIDogW10pLFxuICAgICAgXS5tYXAoemd3VGFiID0+ICh7Li4uemd3VGFiLCBhY3RpdmU6IGN1cnJlbnRUYWIgPT09IHpnd1RhYi50YWJ9KSlcbiAgICApLFxuICAgIHRhcCh6Z3dUYWJzID0+IHtcbiAgICAgIGNvbnN0IGFjdGl2ZVRhYiA9IHpnd1RhYnMubGVuZ3RoID4gMSA/IHpnd1RhYnMuZmluZCh0YWIgPT4gdGFiLmFjdGl2ZSkgOiB6Z3dUYWJzWzBdO1xuICAgICAgdGhpcy5femd3VGFiQ29udGVudC5jbGVhcigpO1xuICAgICAgdGhpcy5femd3VGFiQ29udGVudC5jcmVhdGVDb21wb25lbnQoYWN0aXZlVGFiLmNvbXBvbmVudCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSlcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvc3NpZXJNYW5hZ2VtZW50Wmd3U2VydmljZTogRG9zc2llck1hbmFnZW1lbnRaZ3dTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ZW5BcGlWZXJzaW9uU2VydmljZTogRG9jdW1lbnRlbkFwaVZlcnNpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge31cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3ZpZXdJbml0aWFsaXplZCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRvc3NpZXJNYW5hZ2VtZW50Wmd3U2VydmljZS5yZXNldFRvRGVmYXVsdFRhYigpO1xuICB9XG5cbiAgcHVibGljIGRpc3BsYXlUYWIodGFiOiBaZ3dUYWJFbnVtKTogdm9pZCB7XG4gICAgdGhpcy5kb3NzaWVyTWFuYWdlbWVudFpnd1NlcnZpY2UuY3VycmVudFRhYiA9IHRhYjtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48Y2RzLXRhYnMgY2xhc3M9XCJkb3NzaWVyLW1hbmFnZW1lbnQtdGFic1wiPlxuICBAZm9yICh6Z3dUYWIgb2YgKHpnd1RhYnMkIHwgYXN5bmMpIHx8IFtdOyB0cmFjayB6Z3dUYWIudGFiKSB7XG4gICAgPGNkcy10YWJcbiAgICAgIFtjbGFzc109XCJ6Z3dUYWIuY2xhc3NcIlxuICAgICAgW2FjdGl2ZV09XCJ6Z3dUYWIuYWN0aXZlXCJcbiAgICAgIFtoZWFkaW5nXT1cInpnd1RhYi5oZWFkaW5nVHJhbnNsYXRpb25LZXkgfCB0cmFuc2xhdGVcIlxuICAgICAgKHNlbGVjdGVkKT1cImRpc3BsYXlUYWIoemd3VGFiLnRhYilcIlxuICAgID48L2Nkcy10YWI+XG4gIH1cbjwvY2RzLXRhYnM+XG5cbjxkaXYgY2xhc3M9XCJkb3NzaWVyLW1hbmFnZW1lbnQtemd3X19jb250ZW50XCI+XG4gIDxuZy10ZW1wbGF0ZSAjemd3VGFiQ29udGVudD48L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
@@ -17,6 +17,7 @@ var ZgwTabEnum;
17
17
  (function (ZgwTabEnum) {
18
18
  ZgwTabEnum["DOCUMENTEN_API_COLUMNS"] = "documentenApiColumns";
19
19
  ZgwTabEnum["DOCUMENTEN_API_TAGS"] = "documentenApiTags";
20
+ ZgwTabEnum["DOCUMENTEN_API_UPLOAD_FIELDS"] = "documentenApiUploadFields";
20
21
  })(ZgwTabEnum || (ZgwTabEnum = {}));
21
22
  export { ZgwTabEnum };
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXpndy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vemd3L3NyYy9saWIvbW9kZWxzL2Rvc3NpZXItbWFuYWdlbWVudC16Z3cubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFJSCxJQUFLLFVBR0o7QUFIRCxXQUFLLFVBQVU7SUFDYiw2REFBK0MsQ0FBQTtJQUMvQyx1REFBeUMsQ0FBQTtBQUMzQyxDQUFDLEVBSEksVUFBVSxLQUFWLFVBQVUsUUFHZDtBQVVELE9BQU8sRUFBQyxVQUFVLEVBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmVudW0gWmd3VGFiRW51bSB7XG4gIERPQ1VNRU5URU5fQVBJX0NPTFVNTlMgPSAnZG9jdW1lbnRlbkFwaUNvbHVtbnMnLFxuICBET0NVTUVOVEVOX0FQSV9UQUdTID0gJ2RvY3VtZW50ZW5BcGlUYWdzJyxcbn1cblxuaW50ZXJmYWNlIFpnd1RhYiB7XG4gIGNsYXNzOiBzdHJpbmc7XG4gIGhlYWRpbmdUcmFuc2xhdGlvbktleTogc3RyaW5nO1xuICB0YWI6IFpnd1RhYkVudW07XG4gIGFjdGl2ZT86IGJvb2xlYW47XG4gIGNvbXBvbmVudDogVHlwZTxhbnk+O1xufVxuXG5leHBvcnQge1pnd1RhYkVudW0sIFpnd1RhYn07XG4iXX0=
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXpndy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vemd3L3NyYy9saWIvbW9kZWxzL2Rvc3NpZXItbWFuYWdlbWVudC16Z3cubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFJSCxJQUFLLFVBSUo7QUFKRCxXQUFLLFVBQVU7SUFDYiw2REFBK0MsQ0FBQTtJQUMvQyx1REFBeUMsQ0FBQTtJQUN6Qyx3RUFBMEQsQ0FBQTtBQUM1RCxDQUFDLEVBSkksVUFBVSxLQUFWLFVBQVUsUUFJZDtBQVVELE9BQU8sRUFBQyxVQUFVLEVBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmVudW0gWmd3VGFiRW51bSB7XG4gIERPQ1VNRU5URU5fQVBJX0NPTFVNTlMgPSAnZG9jdW1lbnRlbkFwaUNvbHVtbnMnLFxuICBET0NVTUVOVEVOX0FQSV9UQUdTID0gJ2RvY3VtZW50ZW5BcGlUYWdzJyxcbiAgRE9DVU1FTlRFTl9BUElfVVBMT0FEX0ZJRUxEUyA9ICdkb2N1bWVudGVuQXBpVXBsb2FkRmllbGRzJyxcbn1cblxuaW50ZXJmYWNlIFpnd1RhYiB7XG4gIGNsYXNzOiBzdHJpbmc7XG4gIGhlYWRpbmdUcmFuc2xhdGlvbktleTogc3RyaW5nO1xuICB0YWI6IFpnd1RhYkVudW07XG4gIGFjdGl2ZT86IGJvb2xlYW47XG4gIGNvbXBvbmVudDogVHlwZTxhbnk+O1xufVxuXG5leHBvcnQge1pnd1RhYkVudW0sIFpnd1RhYn07XG4iXX0=
@@ -118,6 +118,35 @@ export class DossierDetailTabDocumentenApiDocumentsComponent {
118
118
  ...DEFAULT_PAGINATOR_CONFIG,
119
119
  itemsPerPageOptions: [5, 10, 20, 50, 100],
120
120
  };
121
+ this.uploadFields$ = this.documentId$.pipe(switchMap(documentId => this.documentenApiDocumentService.getPrefilledUploadFields(documentId)), map(uploadFields => uploadFields.reduce((acc, curr) => ({
122
+ ...acc,
123
+ [curr.key]: {
124
+ key: curr.key,
125
+ defaultValue: curr.defaultValue,
126
+ visible: curr.visible,
127
+ readonly: curr.readonly,
128
+ },
129
+ }), {})));
130
+ this.defaultValues$ = this.uploadFields$.pipe(map(formFields => ({
131
+ auteur: formFields?.auteur?.defaultValue,
132
+ vertrouwelijkheidaanduiding: formFields?.vertrouwelijkheidaanduiding?.defaultValue,
133
+ beschrijving: formFields?.beschrijving?.defaultValue,
134
+ titel: formFields?.titel?.defaultValue,
135
+ informatieobjecttype: formFields?.informatieobjecttype?.defaultValue,
136
+ bestandsnaam: formFields?.bestandsnaam?.defaultValue,
137
+ taal: formFields?.taal?.defaultValue,
138
+ status: formFields?.status?.defaultValue,
139
+ trefwoorden: formFields?.trefwoorden?.defaultValue
140
+ ?.split(',')
141
+ ?.map(tag => tag.trim())
142
+ ?.filter(tag => !!tag),
143
+ })));
144
+ this.hideFields$ = this.uploadFields$.pipe(map(formFields => {
145
+ if (formFields) {
146
+ return Object.keys(formFields).filter(field => !formFields[field]?.visible);
147
+ }
148
+ return [];
149
+ }));
121
150
  this.relatedFiles$ = combineLatest([
122
151
  this.documentId$,
123
152
  this.route.queryParamMap,
@@ -341,7 +370,7 @@ export class DossierDetailTabDocumentenApiDocumentsComponent {
341
370
  return null;
342
371
  }
343
372
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierDetailTabDocumentenApiDocumentsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.UploadProviderService }, { token: i2.DownloadService }, { token: i3.TranslateService }, { token: i4.ConfigService }, { token: i5.UserProviderService }, { token: i6.IconService }, { token: i7.DocumentenApiDocumentService }, { token: i8.DocumentenApiColumnService }, { token: i8.DocumentenApiVersionService }], target: i0.ɵɵFactoryTarget.Component }); }
344
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DossierDetailTabDocumentenApiDocumentsComponent, isStandalone: true, selector: "valtimo-dossier-detail-tab-documenten-api-documents", viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "translationTemplate", first: true, predicate: ["translationTemplate"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div\n class=\"carbon-document-table-wrapper\"\n *ngIf=\"{\n loading: loading$ | async,\n fieldsLoading: fieldsLoading$ | async,\n uploading: uploading$ | async,\n relatedFiles: relatedFiles$ | async,\n fields: fields$ | async,\n supportedDocumentenApiFeatures: supportedDocumentenApiFeatures$ | async,\n pagination: pagination$ | async,\n sortState: sortState$ | async,\n } as obs\"\n>\n @if ((!obs.fieldsLoading && obs.fields.length) || obs.fieldsLoading) {\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [items]=\"obs.relatedFiles\"\n [fields]=\"obs.fields\"\n [initialSortState]=\"obs.sortState\"\n [loading]=\"obs.loading\"\n [pagination]=\"obs.pagination\"\n [paginatorConfig]=\"paginatorConfig\"\n paginationIdentifier=\"documentenApi\"\n (rowClicked)=\"onRowClick($event)\"\n (sortChanged)=\"\n obs?.supportedDocumentenApiFeatures?.supportsSortableColumns && onSortChanged($event)\n \"\n (paginationClicked)=\"onPaginationClicked($event)\"\n (paginationSet)=\"onPaginationSet($event)\"\n hideColumnHeader\n >\n <div carbonToolbarContent>\n <input\n [accept]=\"acceptedFiles\"\n (change)=\"onFileSelected($event)\"\n hidden\n type=\"file\"\n #fileInput\n />\n\n <button\n *ngIf=\"obs?.supportedDocumentenApiFeatures?.supportsFilterableColumns\"\n [cdsOverflowMenu]=\"overflowFilter\"\n [customPane]=\"true\"\n [iconOnly]=\"true\"\n [flip]=\"true\"\n [offset]=\"{x: 0, y: 47}\"\n cdsButton=\"ghost\"\n placement=\"bottom\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"filter\" size=\"16\"></svg>\n </button>\n\n <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"noResults\"></ng-container>\n </valtimo-carbon-list>\n } @else {\n <valtimo-no-results\n [action]=\"navigateToCaseAdminButton\"\n [description]=\"'zgw.documents.noColumns.description' | translate\"\n [title]=\"'zgw.documents.noColumns.title' | translate\"\n ></valtimo-no-results>\n }\n\n <valtimo-documenten-api-metadata-modal\n [open]=\"showUploadModal$ | async\"\n [disabled$]=\"modalDisabled$\"\n [file$]=\"fileToBeUploaded$\"\n [isEditMode]=\"isEditMode$ | async\"\n [supportsTrefwoorden]=\"obs?.supportedDocumentenApiFeatures?.supportsTrefwoorden\"\n (modalClose)=\"closeMetadataModal()\"\n (metadata)=\"metadataSet($event)\"\n ></valtimo-documenten-api-metadata-modal>\n</div>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"dashboardManagement.deleteModal.confirm\"\n contentTranslationKey=\"dossier.documenten.deleteConfirmationModal.content\"\n confirmButtonType=\"danger\"\n titleTranslationKey=\"dossier.documenten.deleteConfirmationModal.title\"\n [showModalSubject$]=\"showDeleteConfirmationModal$\"\n (confirmEvent)=\"deleteDocument()\"\n>\n</valtimo-confirmation-modal>\n\n<ng-template #downloadButton let-index=\"index\" let-item=\"item\">\n <div\n *ngIf=\"{isDownloading: indexesIncludeIndex(downloadingFileIndexes$ | async, index)} as vars\"\n class=\"download-button-container\"\n >\n <button\n *ngIf=\"!vars.isDownloading\"\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"downloadDocument(item, index)\"\n >\n {{ 'interface.download' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n\n <cds-loading size=\"sm\" *ngIf=\"vars.isDownloading\"></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #noResults>\n @if ((filter$ | async | keyvalue)?.length) {\n <valtimo-no-results\n [action]=\"resetFilterButton\"\n [description]=\"'zgw.documents.noResults.filterDescription' | translate\"\n [title]=\"'zgw.documents.noResults.filterTitle' | translate\"\n ></valtimo-no-results>\n } @else if (showZaakLinkWarning && isAdmin) {\n <valtimo-no-results\n [action]=\"navigateToCaseAdminButton\"\n [description]=\"'dossier.documenten.noZaakFound' | translate\"\n [title]=\"'dossier.documenten.noZaakFoundTitle' | translate\"\n ></valtimo-no-results>\n } @else {\n <valtimo-no-results\n [action]=\"uploadButton\"\n [description]=\"'dossier.documenten.noFiles' | translate\"\n [title]=\"'dossier.documenten.noFilesTitle' | translate\"\n ></valtimo-no-results>\n }\n</ng-template>\n\n<ng-template #overflowFilter>\n <valtimo-dossier-detail-tab-documenten-api-filter\n [prefillFilter]=\"filter$ | async\"\n (filterEvent)=\"onFilterEvent($event)\"\n ></valtimo-dossier-detail-tab-documenten-api-filter>\n</ng-template>\n\n<ng-template #resetFilterButton>\n <button cdsButton=\"primary\" (click)=\"onFilterEvent(null)\">\n {{ 'Reset filter' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #uploadButton let-disabled=\"disabled\">\n <button\n [disabled]=\"(uploadProcessLinkedSet && !uploadProcessLinked) || showZaakLinkWarning || disabled\"\n [vTooltip]=\"getUploadButtonTooltip() | translate\"\n (click)=\"onUploadButtonClick()\"\n cdsButton=\"primary\"\n >\n {{ 'Upload' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #translationTemplate let-data=\"data\">\n {{ 'document.' + data.item[data.key] | translate }}\n</ng-template>\n\n<ng-template #navigateToCaseAdminButton>\n <button (click)=\"onNavigateToCaseAdminClick()\" cdsButton=\"primary\">\n {{ 'dossier.documenten.navigateToCaseAdmin' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"settings\" size=\"16\"></svg>\n </button>\n</ng-template>\n", styles: [".hidden{display:none}.loading-container{padding:var(--cds-grid-margin);display:flex;align-items:center;justify-content:center}.carbon-document-table-wrapper{margin:0}.documenten-api-documents-filesize-template{text-align:right}::ng-deep .cds--overflow-menu-options.cds--overflow-menu-options--open{max-width:max-content!important;width:max-content!important}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i10.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i10.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "component", type: DocumentenApiMetadataModalComponent, selector: "valtimo-documenten-api-metadata-modal", inputs: ["disabled$", "file$", "author", "confidentialityLevel", "description", "disableAuthor", "disableConfidentialityLevel", "disableDescription", "disableDocumentTitle", "disableDocumentType", "disableFilename", "disableLanguage", "disableStatus", "disableTrefwoorden", "documentTitle", "documentType", "filename", "isEditMode", "language", "open", "status", "supportsTrefwoorden"], outputs: ["metadata", "modalClose"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: DocumentenApiFilterComponent, selector: "valtimo-dossier-detail-tab-documenten-api-filter", outputs: ["filterEvent"] }, { kind: "ngmodule", type: DialogModule }, { kind: "directive", type: i6.OverflowMenuDirective, selector: "[cdsOverflowMenu], [ibmOverflowMenu]", inputs: ["ibmOverflowMenu", "cdsOverflowMenu", "flip", "offset", "wrapperClass", "customPane"], exportAs: ["overflowMenu"] }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i10.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }] }); }
373
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DossierDetailTabDocumentenApiDocumentsComponent, isStandalone: true, selector: "valtimo-dossier-detail-tab-documenten-api-documents", viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "translationTemplate", first: true, predicate: ["translationTemplate"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div\n class=\"carbon-document-table-wrapper\"\n *ngIf=\"{\n loading: loading$ | async,\n fieldsLoading: fieldsLoading$ | async,\n uploading: uploading$ | async,\n relatedFiles: relatedFiles$ | async,\n fields: fields$ | async,\n supportedDocumentenApiFeatures: supportedDocumentenApiFeatures$ | async,\n pagination: pagination$ | async,\n sortState: sortState$ | async,\n uploadFields: uploadFields$ | async,\n defaultValues: defaultValues$ | async,\n hideFields: hideFields$ | async,\n } as obs\"\n>\n @if ((!obs.fieldsLoading && obs.fields.length) || obs.fieldsLoading) {\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [items]=\"obs.relatedFiles\"\n [fields]=\"obs.fields\"\n [initialSortState]=\"obs.sortState\"\n [loading]=\"obs.loading\"\n [pagination]=\"obs.pagination\"\n [paginatorConfig]=\"paginatorConfig\"\n paginationIdentifier=\"documentenApi\"\n (rowClicked)=\"onRowClick($event)\"\n (sortChanged)=\"\n obs?.supportedDocumentenApiFeatures?.supportsSortableColumns && onSortChanged($event)\n \"\n (paginationClicked)=\"onPaginationClicked($event)\"\n (paginationSet)=\"onPaginationSet($event)\"\n hideColumnHeader\n >\n <div carbonToolbarContent>\n <input\n [accept]=\"acceptedFiles\"\n (change)=\"onFileSelected($event)\"\n hidden\n type=\"file\"\n #fileInput\n />\n\n <button\n *ngIf=\"obs?.supportedDocumentenApiFeatures?.supportsFilterableColumns\"\n [cdsOverflowMenu]=\"overflowFilter\"\n [customPane]=\"true\"\n [iconOnly]=\"true\"\n [flip]=\"true\"\n [offset]=\"{x: 0, y: 47}\"\n cdsButton=\"ghost\"\n placement=\"bottom\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"filter\" size=\"16\"></svg>\n </button>\n\n <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"noResults\"></ng-container>\n </valtimo-carbon-list>\n } @else {\n <valtimo-no-results\n [action]=\"navigateToCaseAdminButton\"\n [description]=\"'zgw.documents.noColumns.description' | translate\"\n [title]=\"'zgw.documents.noColumns.title' | translate\"\n ></valtimo-no-results>\n }\n\n <valtimo-documenten-api-metadata-modal\n [defaultValues]=\"obs.defaultValues\"\n [disableAuthor]=\"obs.uploadFields?.auteur?.readonly\"\n [disableConfidentialityLevel]=\"obs.uploadFields?.vertrouwelijkheidaanduiding?.readonly\"\n [disableCreationDate]=\"obs.uploadFields?.creatiedatum?.readonly\"\n [disableDescription]=\"obs.uploadFields?.beschrijving?.readonly\"\n [disableDocumentTitle]=\"obs.uploadFields?.titel?.readonly\"\n [disableDocumentType]=\"obs.uploadFields?.informatieobjecttype?.readonly\"\n [disableFilename]=\"obs.uploadFields?.bestandsnaam?.readonly\"\n [disableLanguage]=\"obs.uploadFields?.taal?.readonly\"\n [disableStatus]=\"obs.uploadFields?.status?.readonly\"\n [hideFields]=\"obs.hideFields\"\n [open]=\"showUploadModal$ | async\"\n [disabled$]=\"modalDisabled$\"\n [file$]=\"fileToBeUploaded$\"\n [isEditMode]=\"isEditMode$ | async\"\n [supportsTrefwoorden]=\"obs?.supportedDocumentenApiFeatures?.supportsTrefwoorden\"\n (modalClose)=\"closeMetadataModal()\"\n (metadata)=\"metadataSet($event)\"\n ></valtimo-documenten-api-metadata-modal>\n</div>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"dashboardManagement.deleteModal.confirm\"\n contentTranslationKey=\"dossier.documenten.deleteConfirmationModal.content\"\n confirmButtonType=\"danger\"\n titleTranslationKey=\"dossier.documenten.deleteConfirmationModal.title\"\n [showModalSubject$]=\"showDeleteConfirmationModal$\"\n (confirmEvent)=\"deleteDocument()\"\n>\n</valtimo-confirmation-modal>\n\n<ng-template #downloadButton let-index=\"index\" let-item=\"item\">\n <div\n *ngIf=\"{isDownloading: indexesIncludeIndex(downloadingFileIndexes$ | async, index)} as vars\"\n class=\"download-button-container\"\n >\n <button\n *ngIf=\"!vars.isDownloading\"\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"downloadDocument(item, index)\"\n >\n {{ 'interface.download' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n\n <cds-loading size=\"sm\" *ngIf=\"vars.isDownloading\"></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #noResults>\n @if ((filter$ | async | keyvalue)?.length) {\n <valtimo-no-results\n [action]=\"resetFilterButton\"\n [description]=\"'zgw.documents.noResults.filterDescription' | translate\"\n [title]=\"'zgw.documents.noResults.filterTitle' | translate\"\n ></valtimo-no-results>\n } @else if (showZaakLinkWarning && isAdmin) {\n <valtimo-no-results\n [action]=\"navigateToCaseAdminButton\"\n [description]=\"'dossier.documenten.noZaakFound' | translate\"\n [title]=\"'dossier.documenten.noZaakFoundTitle' | translate\"\n ></valtimo-no-results>\n } @else {\n <valtimo-no-results\n [action]=\"uploadButton\"\n [description]=\"'dossier.documenten.noFiles' | translate\"\n [title]=\"'dossier.documenten.noFilesTitle' | translate\"\n ></valtimo-no-results>\n }\n</ng-template>\n\n<ng-template #overflowFilter>\n <valtimo-dossier-detail-tab-documenten-api-filter\n [prefillFilter]=\"filter$ | async\"\n (filterEvent)=\"onFilterEvent($event)\"\n ></valtimo-dossier-detail-tab-documenten-api-filter>\n</ng-template>\n\n<ng-template #resetFilterButton>\n <button cdsButton=\"primary\" (click)=\"onFilterEvent(null)\">\n {{ 'Reset filter' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #uploadButton let-disabled=\"disabled\">\n <button\n [disabled]=\"(uploadProcessLinkedSet && !uploadProcessLinked) || showZaakLinkWarning || disabled\"\n [vTooltip]=\"getUploadButtonTooltip() | translate\"\n (click)=\"onUploadButtonClick()\"\n cdsButton=\"primary\"\n >\n {{ 'Upload' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #translationTemplate let-data=\"data\">\n @if (data.item[data.key]) {\n {{ 'document.' + data.item[data.key] | translate }}\n } @else {\n -\n }\n</ng-template>\n\n<ng-template #navigateToCaseAdminButton>\n <button (click)=\"onNavigateToCaseAdminClick()\" cdsButton=\"primary\">\n {{ 'dossier.documenten.navigateToCaseAdmin' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"settings\" size=\"16\"></svg>\n </button>\n</ng-template>\n", styles: [".hidden{display:none}.loading-container{padding:var(--cds-grid-margin);display:flex;align-items:center;justify-content:center}.carbon-document-table-wrapper{margin:0}.documenten-api-documents-filesize-template{text-align:right}::ng-deep .cds--overflow-menu-options.cds--overflow-menu-options--open{max-width:max-content!important;width:max-content!important}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i10.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i10.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "component", type: DocumentenApiMetadataModalComponent, selector: "valtimo-documenten-api-metadata-modal", inputs: ["disabled$", "file$", "hideFields", "defaultValues", "disableAuthor", "disableConfidentialityLevel", "disableDescription", "disableDocumentTitle", "disableDocumentType", "disableFilename", "disableLanguage", "disableStatus", "supportsTrefwoorden", "disableCreationDate", "isEditMode", "open"], outputs: ["metadata", "modalClose"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: DocumentenApiFilterComponent, selector: "valtimo-dossier-detail-tab-documenten-api-filter", outputs: ["filterEvent"] }, { kind: "ngmodule", type: DialogModule }, { kind: "directive", type: i6.OverflowMenuDirective, selector: "[cdsOverflowMenu], [ibmOverflowMenu]", inputs: ["ibmOverflowMenu", "cdsOverflowMenu", "flip", "offset", "wrapperClass", "customPane"], exportAs: ["overflowMenu"] }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i10.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }] }); }
345
374
  }
346
375
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierDetailTabDocumentenApiDocumentsComponent, decorators: [{
347
376
  type: Component,
@@ -355,7 +384,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
355
384
  DocumentenApiFilterComponent,
356
385
  DialogModule,
357
386
  ConfirmationModalModule,
358
- ], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div\n class=\"carbon-document-table-wrapper\"\n *ngIf=\"{\n loading: loading$ | async,\n fieldsLoading: fieldsLoading$ | async,\n uploading: uploading$ | async,\n relatedFiles: relatedFiles$ | async,\n fields: fields$ | async,\n supportedDocumentenApiFeatures: supportedDocumentenApiFeatures$ | async,\n pagination: pagination$ | async,\n sortState: sortState$ | async,\n } as obs\"\n>\n @if ((!obs.fieldsLoading && obs.fields.length) || obs.fieldsLoading) {\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [items]=\"obs.relatedFiles\"\n [fields]=\"obs.fields\"\n [initialSortState]=\"obs.sortState\"\n [loading]=\"obs.loading\"\n [pagination]=\"obs.pagination\"\n [paginatorConfig]=\"paginatorConfig\"\n paginationIdentifier=\"documentenApi\"\n (rowClicked)=\"onRowClick($event)\"\n (sortChanged)=\"\n obs?.supportedDocumentenApiFeatures?.supportsSortableColumns && onSortChanged($event)\n \"\n (paginationClicked)=\"onPaginationClicked($event)\"\n (paginationSet)=\"onPaginationSet($event)\"\n hideColumnHeader\n >\n <div carbonToolbarContent>\n <input\n [accept]=\"acceptedFiles\"\n (change)=\"onFileSelected($event)\"\n hidden\n type=\"file\"\n #fileInput\n />\n\n <button\n *ngIf=\"obs?.supportedDocumentenApiFeatures?.supportsFilterableColumns\"\n [cdsOverflowMenu]=\"overflowFilter\"\n [customPane]=\"true\"\n [iconOnly]=\"true\"\n [flip]=\"true\"\n [offset]=\"{x: 0, y: 47}\"\n cdsButton=\"ghost\"\n placement=\"bottom\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"filter\" size=\"16\"></svg>\n </button>\n\n <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"noResults\"></ng-container>\n </valtimo-carbon-list>\n } @else {\n <valtimo-no-results\n [action]=\"navigateToCaseAdminButton\"\n [description]=\"'zgw.documents.noColumns.description' | translate\"\n [title]=\"'zgw.documents.noColumns.title' | translate\"\n ></valtimo-no-results>\n }\n\n <valtimo-documenten-api-metadata-modal\n [open]=\"showUploadModal$ | async\"\n [disabled$]=\"modalDisabled$\"\n [file$]=\"fileToBeUploaded$\"\n [isEditMode]=\"isEditMode$ | async\"\n [supportsTrefwoorden]=\"obs?.supportedDocumentenApiFeatures?.supportsTrefwoorden\"\n (modalClose)=\"closeMetadataModal()\"\n (metadata)=\"metadataSet($event)\"\n ></valtimo-documenten-api-metadata-modal>\n</div>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"dashboardManagement.deleteModal.confirm\"\n contentTranslationKey=\"dossier.documenten.deleteConfirmationModal.content\"\n confirmButtonType=\"danger\"\n titleTranslationKey=\"dossier.documenten.deleteConfirmationModal.title\"\n [showModalSubject$]=\"showDeleteConfirmationModal$\"\n (confirmEvent)=\"deleteDocument()\"\n>\n</valtimo-confirmation-modal>\n\n<ng-template #downloadButton let-index=\"index\" let-item=\"item\">\n <div\n *ngIf=\"{isDownloading: indexesIncludeIndex(downloadingFileIndexes$ | async, index)} as vars\"\n class=\"download-button-container\"\n >\n <button\n *ngIf=\"!vars.isDownloading\"\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"downloadDocument(item, index)\"\n >\n {{ 'interface.download' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n\n <cds-loading size=\"sm\" *ngIf=\"vars.isDownloading\"></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #noResults>\n @if ((filter$ | async | keyvalue)?.length) {\n <valtimo-no-results\n [action]=\"resetFilterButton\"\n [description]=\"'zgw.documents.noResults.filterDescription' | translate\"\n [title]=\"'zgw.documents.noResults.filterTitle' | translate\"\n ></valtimo-no-results>\n } @else if (showZaakLinkWarning && isAdmin) {\n <valtimo-no-results\n [action]=\"navigateToCaseAdminButton\"\n [description]=\"'dossier.documenten.noZaakFound' | translate\"\n [title]=\"'dossier.documenten.noZaakFoundTitle' | translate\"\n ></valtimo-no-results>\n } @else {\n <valtimo-no-results\n [action]=\"uploadButton\"\n [description]=\"'dossier.documenten.noFiles' | translate\"\n [title]=\"'dossier.documenten.noFilesTitle' | translate\"\n ></valtimo-no-results>\n }\n</ng-template>\n\n<ng-template #overflowFilter>\n <valtimo-dossier-detail-tab-documenten-api-filter\n [prefillFilter]=\"filter$ | async\"\n (filterEvent)=\"onFilterEvent($event)\"\n ></valtimo-dossier-detail-tab-documenten-api-filter>\n</ng-template>\n\n<ng-template #resetFilterButton>\n <button cdsButton=\"primary\" (click)=\"onFilterEvent(null)\">\n {{ 'Reset filter' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #uploadButton let-disabled=\"disabled\">\n <button\n [disabled]=\"(uploadProcessLinkedSet && !uploadProcessLinked) || showZaakLinkWarning || disabled\"\n [vTooltip]=\"getUploadButtonTooltip() | translate\"\n (click)=\"onUploadButtonClick()\"\n cdsButton=\"primary\"\n >\n {{ 'Upload' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #translationTemplate let-data=\"data\">\n {{ 'document.' + data.item[data.key] | translate }}\n</ng-template>\n\n<ng-template #navigateToCaseAdminButton>\n <button (click)=\"onNavigateToCaseAdminClick()\" cdsButton=\"primary\">\n {{ 'dossier.documenten.navigateToCaseAdmin' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"settings\" size=\"16\"></svg>\n </button>\n</ng-template>\n", styles: [".hidden{display:none}.loading-container{padding:var(--cds-grid-margin);display:flex;align-items:center;justify-content:center}.carbon-document-table-wrapper{margin:0}.documenten-api-documents-filesize-template{text-align:right}::ng-deep .cds--overflow-menu-options.cds--overflow-menu-options--open{max-width:max-content!important;width:max-content!important}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
387
+ ], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div\n class=\"carbon-document-table-wrapper\"\n *ngIf=\"{\n loading: loading$ | async,\n fieldsLoading: fieldsLoading$ | async,\n uploading: uploading$ | async,\n relatedFiles: relatedFiles$ | async,\n fields: fields$ | async,\n supportedDocumentenApiFeatures: supportedDocumentenApiFeatures$ | async,\n pagination: pagination$ | async,\n sortState: sortState$ | async,\n uploadFields: uploadFields$ | async,\n defaultValues: defaultValues$ | async,\n hideFields: hideFields$ | async,\n } as obs\"\n>\n @if ((!obs.fieldsLoading && obs.fields.length) || obs.fieldsLoading) {\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [items]=\"obs.relatedFiles\"\n [fields]=\"obs.fields\"\n [initialSortState]=\"obs.sortState\"\n [loading]=\"obs.loading\"\n [pagination]=\"obs.pagination\"\n [paginatorConfig]=\"paginatorConfig\"\n paginationIdentifier=\"documentenApi\"\n (rowClicked)=\"onRowClick($event)\"\n (sortChanged)=\"\n obs?.supportedDocumentenApiFeatures?.supportsSortableColumns && onSortChanged($event)\n \"\n (paginationClicked)=\"onPaginationClicked($event)\"\n (paginationSet)=\"onPaginationSet($event)\"\n hideColumnHeader\n >\n <div carbonToolbarContent>\n <input\n [accept]=\"acceptedFiles\"\n (change)=\"onFileSelected($event)\"\n hidden\n type=\"file\"\n #fileInput\n />\n\n <button\n *ngIf=\"obs?.supportedDocumentenApiFeatures?.supportsFilterableColumns\"\n [cdsOverflowMenu]=\"overflowFilter\"\n [customPane]=\"true\"\n [iconOnly]=\"true\"\n [flip]=\"true\"\n [offset]=\"{x: 0, y: 47}\"\n cdsButton=\"ghost\"\n placement=\"bottom\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"filter\" size=\"16\"></svg>\n </button>\n\n <ng-container *ngTemplateOutlet=\"uploadButton\"></ng-container>\n </div>\n\n <ng-container *ngTemplateOutlet=\"noResults\"></ng-container>\n </valtimo-carbon-list>\n } @else {\n <valtimo-no-results\n [action]=\"navigateToCaseAdminButton\"\n [description]=\"'zgw.documents.noColumns.description' | translate\"\n [title]=\"'zgw.documents.noColumns.title' | translate\"\n ></valtimo-no-results>\n }\n\n <valtimo-documenten-api-metadata-modal\n [defaultValues]=\"obs.defaultValues\"\n [disableAuthor]=\"obs.uploadFields?.auteur?.readonly\"\n [disableConfidentialityLevel]=\"obs.uploadFields?.vertrouwelijkheidaanduiding?.readonly\"\n [disableCreationDate]=\"obs.uploadFields?.creatiedatum?.readonly\"\n [disableDescription]=\"obs.uploadFields?.beschrijving?.readonly\"\n [disableDocumentTitle]=\"obs.uploadFields?.titel?.readonly\"\n [disableDocumentType]=\"obs.uploadFields?.informatieobjecttype?.readonly\"\n [disableFilename]=\"obs.uploadFields?.bestandsnaam?.readonly\"\n [disableLanguage]=\"obs.uploadFields?.taal?.readonly\"\n [disableStatus]=\"obs.uploadFields?.status?.readonly\"\n [hideFields]=\"obs.hideFields\"\n [open]=\"showUploadModal$ | async\"\n [disabled$]=\"modalDisabled$\"\n [file$]=\"fileToBeUploaded$\"\n [isEditMode]=\"isEditMode$ | async\"\n [supportsTrefwoorden]=\"obs?.supportedDocumentenApiFeatures?.supportsTrefwoorden\"\n (modalClose)=\"closeMetadataModal()\"\n (metadata)=\"metadataSet($event)\"\n ></valtimo-documenten-api-metadata-modal>\n</div>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"dashboardManagement.deleteModal.confirm\"\n contentTranslationKey=\"dossier.documenten.deleteConfirmationModal.content\"\n confirmButtonType=\"danger\"\n titleTranslationKey=\"dossier.documenten.deleteConfirmationModal.title\"\n [showModalSubject$]=\"showDeleteConfirmationModal$\"\n (confirmEvent)=\"deleteDocument()\"\n>\n</valtimo-confirmation-modal>\n\n<ng-template #downloadButton let-index=\"index\" let-item=\"item\">\n <div\n *ngIf=\"{isDownloading: indexesIncludeIndex(downloadingFileIndexes$ | async, index)} as vars\"\n class=\"download-button-container\"\n >\n <button\n *ngIf=\"!vars.isDownloading\"\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"downloadDocument(item, index)\"\n >\n {{ 'interface.download' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n\n <cds-loading size=\"sm\" *ngIf=\"vars.isDownloading\"></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #noResults>\n @if ((filter$ | async | keyvalue)?.length) {\n <valtimo-no-results\n [action]=\"resetFilterButton\"\n [description]=\"'zgw.documents.noResults.filterDescription' | translate\"\n [title]=\"'zgw.documents.noResults.filterTitle' | translate\"\n ></valtimo-no-results>\n } @else if (showZaakLinkWarning && isAdmin) {\n <valtimo-no-results\n [action]=\"navigateToCaseAdminButton\"\n [description]=\"'dossier.documenten.noZaakFound' | translate\"\n [title]=\"'dossier.documenten.noZaakFoundTitle' | translate\"\n ></valtimo-no-results>\n } @else {\n <valtimo-no-results\n [action]=\"uploadButton\"\n [description]=\"'dossier.documenten.noFiles' | translate\"\n [title]=\"'dossier.documenten.noFilesTitle' | translate\"\n ></valtimo-no-results>\n }\n</ng-template>\n\n<ng-template #overflowFilter>\n <valtimo-dossier-detail-tab-documenten-api-filter\n [prefillFilter]=\"filter$ | async\"\n (filterEvent)=\"onFilterEvent($event)\"\n ></valtimo-dossier-detail-tab-documenten-api-filter>\n</ng-template>\n\n<ng-template #resetFilterButton>\n <button cdsButton=\"primary\" (click)=\"onFilterEvent(null)\">\n {{ 'Reset filter' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #uploadButton let-disabled=\"disabled\">\n <button\n [disabled]=\"(uploadProcessLinkedSet && !uploadProcessLinked) || showZaakLinkWarning || disabled\"\n [vTooltip]=\"getUploadButtonTooltip() | translate\"\n (click)=\"onUploadButtonClick()\"\n cdsButton=\"primary\"\n >\n {{ 'Upload' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"upload\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #translationTemplate let-data=\"data\">\n @if (data.item[data.key]) {\n {{ 'document.' + data.item[data.key] | translate }}\n } @else {\n -\n }\n</ng-template>\n\n<ng-template #navigateToCaseAdminButton>\n <button (click)=\"onNavigateToCaseAdminClick()\" cdsButton=\"primary\">\n {{ 'dossier.documenten.navigateToCaseAdmin' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"settings\" size=\"16\"></svg>\n </button>\n</ng-template>\n", styles: [".hidden{display:none}.loading-container{padding:var(--cds-grid-margin);display:flex;align-items:center;justify-content:center}.carbon-document-table-wrapper{margin:0}.documenten-api-documents-filesize-template{text-align:right}::ng-deep .cds--overflow-menu-options.cds--overflow-menu-options--open{max-width:max-content!important;width:max-content!important}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
359
388
  }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.UploadProviderService }, { type: i2.DownloadService }, { type: i3.TranslateService }, { type: i4.ConfigService }, { type: i5.UserProviderService }, { type: i6.IconService }, { type: i7.DocumentenApiDocumentService }, { type: i8.DocumentenApiColumnService }, { type: i8.DocumentenApiVersionService }], propDecorators: { fileInput: [{
360
389
  type: ViewChild,
361
390
  args: ['fileInput']
@@ -363,4 +392,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
363
392
  type: ViewChild,
364
393
  args: ['translationTemplate']
365
394
  }] } });
366
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vemd3L3NyYy9saWIvbW9kdWxlcy9kb2N1bWVudGVuLWFwaS9jb21wb25lbnRzL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy9kb2N1bWVudGVuLWFwaS1kb2N1bWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby96Z3cvc3JjL2xpYi9tb2R1bGVzL2RvY3VtZW50ZW4tYXBpL2NvbXBvbmVudHMvZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsU0FBUyxFQUE4QyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFL0YsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBQyxlQUFlLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUVMLGdCQUFnQixFQUVoQix1QkFBdUIsRUFDdkIsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUl4QixRQUFRLEdBQ1QsTUFBTSxxQkFBcUIsQ0FBQztBQUk3QixPQUFPLEVBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQWMsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RixPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFFYixFQUFFLEVBQ0YsYUFBYSxFQUNiLE9BQU8sRUFDUCxZQUFZLEdBQ2IsTUFBTSxNQUFNLENBQUM7QUFDZCxP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TUFBTSxXQUFXLEdBQUcsVUFBVSxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEQsSUFBSSxXQUFXLElBQUksV0FBVyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQyxPQUFPO2dCQUNMLFNBQVMsRUFBRSxJQUFJO2dCQUNmLEtBQUssRUFBRTtvQkFDTCxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztvQkFDcEIsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQWM7aUJBQ3ZDO2FBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7K0dBcGFVLCtDQUErQzttR0FBL0MsK0NBQStDLG9VQzVFNUQseTZNQXNMQSwraENEckhJLFlBQVkseVpBQ1osZ0JBQWdCLDIxQkFDaEIsbUNBQW1DLHlmQUNuQyxZQUFZLGdNQUNaLFVBQVUsNE5BQ1YsZUFBZSw0RkFDZiw0QkFBNEIsc0hBQzVCLFlBQVksbVFBQ1osdUJBQXVCOzs0RkFHZCwrQ0FBK0M7a0JBakIzRCxTQUFTOytCQUNFLHFEQUFxRCxjQUduRCxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLG1DQUFtQzt3QkFDbkMsWUFBWTt3QkFDWixVQUFVO3dCQUNWLGVBQWU7d0JBQ2YsNEJBQTRCO3dCQUM1QixZQUFZO3dCQUNaLHVCQUF1QjtxQkFDeEI7K1pBR3VCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDWSxtQkFBbUI7c0JBQXBELFNBQVM7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7RmlsdGVyMTYsIFRhZ0dyb3VwMTYsIFVwbG9hZDE2fSBmcm9tICdAY2FyYm9uL2ljb25zJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGlvbkl0ZW0sXG4gIENhcmJvbkxpc3RNb2R1bGUsXG4gIENvbHVtbkNvbmZpZyxcbiAgQ29uZmlybWF0aW9uTW9kYWxNb2R1bGUsXG4gIERFRkFVTFRfUEFHSU5BVElPTixcbiAgREVGQVVMVF9QQUdJTkFUT1JfQ09ORklHLFxuICBEb2N1bWVudGVuQXBpTWV0YWRhdGEsXG4gIFBhZ2luYXRpb24sXG4gIFNvcnRTdGF0ZSxcbiAgVmlld1R5cGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlLCBEaXJlY3Rpb259IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge0Rvd25sb2FkU2VydmljZSwgVXBsb2FkUHJvdmlkZXJTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9yZXNvdXJjZSc7XG5pbXBvcnQge1VzZXJQcm92aWRlclNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3NlY3VyaXR5JztcbmltcG9ydCB7QnV0dG9uTW9kdWxlLCBEaWFsb2dNb2R1bGUsIEljb25Nb2R1bGUsIEljb25TZXJ2aWNlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIFJlcGxheVN1YmplY3QsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmlwdGlvbixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRha2UsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQ09MVU1OX1ZJRVdfVFlQRVMsXG4gIENvbmZpZ3VyZWRDb2x1bW4sXG4gIERPQ1VNRU5URU5fQ09MVU1OX0tFWVMsXG4gIERvY3VtZW50ZW5BcGlGaWx0ZXJNb2RlbCxcbiAgRG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlLFxuICBTdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMsXG59IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0RvY3VtZW50ZW5BcGlDb2x1bW5TZXJ2aWNlLCBEb2N1bWVudGVuQXBpVmVyc2lvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7RG9jdW1lbnRlbkFwaURvY3VtZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvZG9jdW1lbnRlbi1hcGktZG9jdW1lbnQuc2VydmljZSc7XG5pbXBvcnQge0RvY3VtZW50ZW5BcGlGaWx0ZXJDb21wb25lbnR9IGZyb20gJy4uL2RvY3VtZW50ZW4tYXBpLWZpbHRlci9kb2N1bWVudGVuLWFwaS1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7RG9jdW1lbnRlbkFwaU1ldGFkYXRhTW9kYWxDb21wb25lbnR9IGZyb20gJy4uL2RvY3VtZW50ZW4tYXBpLW1ldGFkYXRhLW1vZGFsL2RvY3VtZW50ZW4tYXBpLW1ldGFkYXRhLW1vZGFsLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1kZXRhaWwtdGFiLWRvY3VtZW50ZW4tYXBpLWRvY3VtZW50cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2N1bWVudGVuLWFwaS1kb2N1bWVudHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb2N1bWVudGVuLWFwaS1kb2N1bWVudHMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBDYXJib25MaXN0TW9kdWxlLFxuICAgIERvY3VtZW50ZW5BcGlNZXRhZGF0YU1vZGFsQ29tcG9uZW50LFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBJY29uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBEb2N1bWVudGVuQXBpRmlsdGVyQ29tcG9uZW50LFxuICAgIERpYWxvZ01vZHVsZSxcbiAgICBDb25maXJtYXRpb25Nb2RhbE1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llckRldGFpbFRhYkRvY3VtZW50ZW5BcGlEb2N1bWVudHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgndHJhbnNsYXRpb25UZW1wbGF0ZScpIHRyYW5zbGF0aW9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnREZWZpbml0aW9uTmFtZSQgPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5kb2N1bWVudERlZmluaXRpb25OYW1lKSxcbiAgICBmaWx0ZXIoY2FzZURlZmluaXRpb25OYW1lID0+ICEhY2FzZURlZmluaXRpb25OYW1lKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMkID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PFN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyQ6IE9ic2VydmFibGU8U3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzPiA9XG4gICAgdGhpcy5fZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICAgIHN3aXRjaE1hcChjYXNlRGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgICAgdGhpcy5kb2N1bWVudGVuQXBpVmVyc2lvblNlcnZpY2UuZ2V0U3VwcG9ydGVkQXBpRmVhdHVyZXMoY2FzZURlZmluaXRpb25OYW1lKVxuICAgICAgKSxcbiAgICAgIHRhcChzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMgPT5cbiAgICAgICAgdGhpcy5zdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMkLm5leHQoc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzKVxuICAgICAgKVxuICAgICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZpZWxkcyQ6IE9ic2VydmFibGU8Q29sdW1uQ29uZmlnW10+ID0gdGhpcy5fZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICB0YXAoKCkgPT4gdGhpcy5maWVsZHNMb2FkaW5nJC5uZXh0KHRydWUpKSxcbiAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuZG9jdW1lbnRlbkFwaUNvbHVtblNlcnZpY2UuZ2V0Q29uZmlndXJlZENvbHVtbnMoZG9jdW1lbnREZWZpbml0aW9uTmFtZSksXG4gICAgICAgIHRoaXMuX3N1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcyQsXG4gICAgICAgIHRoaXMuX3NvcnQkLFxuICAgICAgXSlcbiAgICApLFxuICAgIG1hcCgoW2NvbHVtbnMsIHN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcywgc29ydF0pID0+IHtcbiAgICAgIGNvbnN0IGRlZmF1bHRTb3J0Q29sdW1uOiBDb25maWd1cmVkQ29sdW1uIHwgdW5kZWZpbmVkID0gY29sdW1ucy5maW5kKFxuICAgICAgICAoY29sdW1uOiBDb25maWd1cmVkQ29sdW1uKSA9PiAhIWNvbHVtbi5kZWZhdWx0U29ydFxuICAgICAgKTtcbiAgICAgIGlmICghIWRlZmF1bHRTb3J0Q29sdW1uICYmICFzb3J0ICYmIHN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcy5zdXBwb3J0c1NvcnRhYmxlQ29sdW1ucykge1xuICAgICAgICB0aGlzLl9zb3J0JC5uZXh0KHtzb3J0OiBgJHtkZWZhdWx0U29ydENvbHVtbi5rZXl9LCR7ZGVmYXVsdFNvcnRDb2x1bW4uZGVmYXVsdFNvcnR9YH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29sdW1ucy5tYXAoKGNvbHVtbjogQ29uZmlndXJlZENvbHVtbikgPT4gKHtcbiAgICAgICAga2V5OiBjb2x1bW4ua2V5ID09PSBET0NVTUVOVEVOX0NPTFVNTl9LRVlTLkJFU1RBTkRTT01WQU5HID8gJ3NpemUnIDogY29sdW1uLmtleSxcbiAgICAgICAgbGFiZWw6IGB6Z3cuZG9jdW1lbnRDb2x1bW5zLiR7Y29sdW1uLmtleX1gLFxuICAgICAgICB2aWV3VHlwZTogIUNPTFVNTl9WSUVXX1RZUEVTW2NvbHVtbi5rZXldID8gVmlld1R5cGUuVEVYVCA6IENPTFVNTl9WSUVXX1RZUEVTW2NvbHVtbi5rZXldLFxuICAgICAgICAuLi4oQ09MVU1OX1ZJRVdfVFlQRVNbY29sdW1uLmtleV0gPT09IFZpZXdUeXBlLlRFTVBMQVRFICYmIHtcbiAgICAgICAgICB0ZW1wbGF0ZTogdGhpcy50cmFuc2xhdGlvblRlbXBsYXRlLFxuICAgICAgICAgIHRlbXBsYXRlRGF0YToge2tleTogY29sdW1uLmtleX0sXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4oY29sdW1uLmtleSA9PT0gRE9DVU1FTlRFTl9DT0xVTU5fS0VZUy5DUkVBVElFREFUVU0gJiYge2Zvcm1hdDogJ0RELU1NLVlZWVknfSksXG4gICAgICAgIHNvcnRhYmxlOiBjb2x1bW4uc29ydGFibGUgJiYgc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzLnN1cHBvcnRzU29ydGFibGVDb2x1bW5zLFxuICAgICAgfSkpO1xuICAgIH0pLFxuICAgIHRhcCgoKSA9PiB7XG4gICAgICB0aGlzLmZpZWxkc0xvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgIH0pXG4gICk7XG4gIHB1YmxpYyBkb2N1bWVudDogRG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlO1xuICBwdWJsaWMgYWN0aW9uSXRlbXM6IEFjdGlvbkl0ZW1bXSA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogJ2RvY3VtZW50LmRvd25sb2FkJyxcbiAgICAgIGNhbGxiYWNrOiB0aGlzLm9uRG93bmxvYWRBY3Rpb25DbGljay5iaW5kKHRoaXMpLFxuICAgICAgdHlwZTogJ25vcm1hbCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ2RvY3VtZW50LmVkaXQnLFxuICAgICAgY2FsbGJhY2s6IHRoaXMub25FZGl0TWV0YWRhdGEuYmluZCh0aGlzKSxcbiAgICAgIGRpc2FibGVkQ2FsbGJhY2s6IHRoaXMuZWRpdERpc2FibGVkLmJpbmQodGhpcyksXG4gICAgICB0eXBlOiAnbm9ybWFsJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnZG9jdW1lbnQuZGVsZXRlJyxcbiAgICAgIGNhbGxiYWNrOiB0aGlzLm9uRGVsZXRlQWN0aW9uQ2xpY2suYmluZCh0aGlzKSxcbiAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgIH0sXG4gIF07XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5kb2N1bWVudERlZmluaXRpb25OYW1lKSxcbiAgICBmaWx0ZXIoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PiAhIWRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50SWQkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5kb2N1bWVudElkKSxcbiAgICBmaWx0ZXIoZG9jdW1lbnRJZCA9PiAhIWRvY3VtZW50SWQpXG4gICk7XG5cbiAgcHVibGljIGlzQWRtaW46IGJvb2xlYW47XG4gIHB1YmxpYyBzaG93WmFha0xpbmtXYXJuaW5nOiBib29sZWFuO1xuICBwdWJsaWMgdXBsb2FkUHJvY2Vzc0xpbmtlZFNldCA9IGZhbHNlO1xuICBwdWJsaWMgdXBsb2FkUHJvY2Vzc0xpbmtlZCE6IGJvb2xlYW47XG5cbiAgcHVibGljIGlzRWRpdE1vZGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFjY2VwdGVkRmlsZXM6IHN0cmluZyB8IG51bGwgPVxuICAgIHRoaXMuY29uZmlnU2VydmljZT8uY29uZmlnPy5jYXNlRmlsZVVwbG9hZEFjY2VwdGVkRmlsZXMgfHwgbnVsbDtcbiAgcHVibGljIHJlYWRvbmx5IG1heEZpbGVTaXplOiBudW1iZXIgPSB0aGlzLmNvbmZpZ1NlcnZpY2U/LmNvbmZpZz8uY2FzZUZpbGVTaXplVXBsb2FkTGltaXRNQiB8fCA1O1xuXG4gIHB1YmxpYyByZWFkb25seSBmaWxlVG9CZVVwbG9hZGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsZSB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgbW9kYWxEaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dNb2RhbCQgPSBuZXcgU3ViamVjdDxudWxsPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd1VwbG9hZE1vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd0RlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSB1cGxvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2l0ZW1zTG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwdWJsaWMgcmVhZG9ubHkgZmllbGRzTG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9pdGVtc0xvYWRpbmckLCB0aGlzLmZpZWxkc0xvYWRpbmckXSkucGlwZShcbiAgICBtYXAoKFtpdGVtc0xvYWRpbmcsIGZpZWxkc0xvYWRpbmddKSA9PiBpdGVtc0xvYWRpbmcgfHwgZmllbGRzTG9hZGluZylcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyJCA9IG5ldyBSZXBsYXlTdWJqZWN0PERvY3VtZW50ZW5BcGlGaWx0ZXJNb2RlbCB8IG51bGw+KCk7XG4gIHB1YmxpYyByZWFkb25seSBwYWdpbmF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UGFnaW5hdGlvbj4oREVGQVVMVF9QQUdJTkFUSU9OKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVmZXRjaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zb3J0JCA9IG5ldyBSZXBsYXlTdWJqZWN0PHtzb3J0OiBzdHJpbmd9IHwgbnVsbD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSB2YWx0aW1vRW5kcG9pbnRVcmkhOiBzdHJpbmc7XG5cbiAgcHVibGljIHJlYWRvbmx5IHBhZ2luYXRvckNvbmZpZyA9IHtcbiAgICAuLi5ERUZBVUxUX1BBR0lOQVRPUl9DT05GSUcsXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9uczogWzUsIDEwLCAyMCwgNTAsIDEwMF0sXG4gIH07XG5cbiAgcHVibGljIGdldCBzb3J0U3RhdGUkKCk6IE9ic2VydmFibGU8U29ydFN0YXRlIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9zb3J0JC5waXBlKG1hcChzb3J0VmFsdWUgPT4gdGhpcy5nZXRTb3J0U3RhdGVGcm9tU29ydFN0cmluZyhzb3J0VmFsdWU/LnNvcnQpKSk7XG4gIH1cblxuICBwdWJsaWMgcmVsYXRlZEZpbGVzJDogT2JzZXJ2YWJsZTxBcnJheTxEb2N1bWVudGVuQXBpUmVsYXRlZEZpbGU+PiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuZG9jdW1lbnRJZCQsXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtTWFwLFxuICAgIHRoaXMuX3JlZmV0Y2gkLFxuICBdKS5waXBlKFxuICAgIHRhcCgoKSA9PiB0aGlzLl9pdGVtc0xvYWRpbmckLm5leHQodHJ1ZSkpLFxuICAgIHN3aXRjaE1hcCgoW2RvY3VtZW50SWQsIHF1ZXJ5UGFyYW1zXSkgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmRvY3VtZW50ZW5BcGlEb2N1bWVudFNlcnZpY2UuZ2V0RmlsdGVyZWRaYWtlbkFwaURvY3VtZW50cyhcbiAgICAgICAgICBkb2N1bWVudElkLFxuICAgICAgICAgIHF1ZXJ5UGFyYW1zWydwYXJhbXMnXVxuICAgICAgICApLFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgICAgIF0pXG4gICAgKSxcbiAgICBtYXAoKFtyZWxhdGVkRmlsZXNdKSA9PiB7XG4gICAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoe1xuICAgICAgICAuLi50aGlzLnBhZ2luYXRpb24kLmdldFZhbHVlKCksXG4gICAgICAgIGNvbGxlY3Rpb25TaXplOiByZWxhdGVkRmlsZXMudG90YWxFbGVtZW50cyxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgdHJhbnNsYXRlZEZpbGVzID0gcmVsYXRlZEZpbGVzPy5jb250ZW50Py5tYXAoZmlsZSA9PiAoe1xuICAgICAgICAuLi5maWxlLFxuICAgICAgICBjcmVhdGVkQnk6IGZpbGUuY3JlYXRlZEJ5IHx8IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdsaXN0LmF1dG9tYXRpY2FsbHlHZW5lcmF0ZWQnKSxcbiAgICAgICAgc2l6ZTogdGhpcy5ieXRlc1RvTWVnYWJ5dGVzKGZpbGUuYmVzdGFuZHNvbXZhbmcpLFxuICAgICAgICB0YWdzOiBmaWxlLnRyZWZ3b29yZGVuPy5tYXAoKHRyZWZ3b29yZDogc3RyaW5nKSA9PiAoe1xuICAgICAgICAgIGNvbnRlbnQ6IHRyZWZ3b29yZCxcbiAgICAgICAgfSkpLFxuICAgICAgfSkpO1xuICAgICAgcmV0dXJuIHRyYW5zbGF0ZWRGaWxlcyB8fCBbXTtcbiAgICB9KSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5faXRlbXNMb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9KSxcbiAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgIHRoaXMuc2hvd1phYWtMaW5rV2FybmluZyA9IHRydWU7XG4gICAgICB0aGlzLl9pdGVtc0xvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9KVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVwbG9hZFByb3ZpZGVyU2VydmljZTogVXBsb2FkUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG93bmxvYWRTZXJ2aWNlOiBEb3dubG9hZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJQcm92aWRlclNlcnZpY2U6IFVzZXJQcm92aWRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpY29uU2VydmljZTogSWNvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudGVuQXBpRG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudGVuQXBpRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRlbkFwaUNvbHVtblNlcnZpY2U6IERvY3VtZW50ZW5BcGlDb2x1bW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRlbkFwaVZlcnNpb25TZXJ2aWNlOiBEb2N1bWVudGVuQXBpVmVyc2lvblNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pY29uU2VydmljZS5yZWdpc3RlcihGaWx0ZXIxNik7XG4gICAgdGhpcy52YWx0aW1vRW5kcG9pbnRVcmkgPSBjb25maWdTZXJ2aWNlLmNvbmZpZy52YWx0aW1vQXBpLmVuZHBvaW50VXJpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0SW5pdGlhbFBhcmFtcygpO1xuICAgIHRoaXMuc2V0VXBsb2FkUHJvY2Vzc0xpbmtlZCgpO1xuICAgIHRoaXMuaXNVc2VyQWRtaW4oKTtcbiAgICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyQWxsKFtGaWx0ZXIxNiwgVGFnR3JvdXAxNiwgVXBsb2FkMTZdKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgb25EZWxldGVBY3Rpb25DbGljayhpdGVtOiBEb2N1bWVudGVuQXBpUmVsYXRlZEZpbGUpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50ID0gaXRlbTtcbiAgICB0aGlzLnNob3dEZWxldGVDb25maXJtYXRpb25Nb2RhbCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGVEb2N1bWVudCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pdGVtc0xvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kb2N1bWVudGVuQXBpRG9jdW1lbnRTZXJ2aWNlLmRlbGV0ZURvY3VtZW50KHRoaXMuZG9jdW1lbnQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlZmV0Y2hEb2N1bWVudHMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBieXRlc1RvTWVnYWJ5dGVzKGJ5dGVzOiBudW1iZXIgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIGlmICghYnl0ZXMpIHJldHVybiAnJztcblxuICAgIGNvbnN0IG1lZ2FieXRlcyA9IGJ5dGVzIC8gKDEwMjQgKiAxMDI0KTtcbiAgICBpZiAobWVnYWJ5dGVzIDwgMSkge1xuICAgICAgcmV0dXJuIGAke01hdGguY2VpbChtZWdhYnl0ZXMgKiAxMDAwKX0gS0JgO1xuICAgIH0gZWxzZSBpZiAobWVnYWJ5dGVzIDwgMTAwMCkge1xuICAgICAgcmV0dXJuIG1lZ2FieXRlcy50b0ZpeGVkKDIpICsgJyBNQic7XG4gICAgfVxuXG4gICAgcmV0dXJuIChtZWdhYnl0ZXMgLyAxMDAwKS50b0ZpeGVkKDIpICsgJyBHQic7XG4gIH1cblxuICBwdWJsaWMgZ2V0VXBsb2FkQnV0dG9uVG9vbHRpcCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnVwbG9hZFByb2Nlc3NMaW5rZWRTZXQgJiYgdGhpcy51cGxvYWRQcm9jZXNzTGlua2VkKSB7XG4gICAgICByZXR1cm4gJ1VwbG9hZCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzQWRtaW4pIHtcbiAgICAgIHJldHVybiAnZG9zc2llci5kb2N1bWVudGVuLm5vUHJvY2Vzc0xpbmtlZC5hZG1pblJvbGUnO1xuICAgIH1cblxuICAgIHJldHVybiAnZG9zc2llci5kb2N1bWVudGVuLm5vUHJvY2Vzc0xpbmtlZC5yZWd1bGFyVXNlcic7XG4gIH1cblxuICBwdWJsaWMgaXNVc2VyQWRtaW4oKSB7XG4gICAgdGhpcy51c2VyUHJvdmlkZXJTZXJ2aWNlXG4gICAgICAuZ2V0VXNlclN1YmplY3QoKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIHVzZXJJZGVudGl0eSA9PiB7XG4gICAgICAgICAgdGhpcy5pc0FkbWluID0gdXNlcklkZW50aXR5LnJvbGVzLmluY2x1ZGVzKCdST0xFX0FETUlOJyk7XG4gICAgICAgIH0sXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzQWRtaW4gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRhZGF0YVNldChtZXRhZGF0YTogRG9jdW1lbnRlbkFwaU1ldGFkYXRhKTogdm9pZCB7XG4gICAgdGhpcy51cGxvYWRpbmckLm5leHQodHJ1ZSk7XG5cbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmZpbGVUb0JlVXBsb2FkZWQkLCB0aGlzLmRvY3VtZW50SWQkXSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChbZmlsZSwgZG9jdW1lbnRJZF0pID0+IHtcbiAgICAgICAgICBpZiAoIWZpbGUpIHJldHVybjtcbiAgICAgICAgICBpZiAodGhpcy5pc0VkaXRNb2RlJC5nZXRWYWx1ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50ZW5BcGlEb2N1bWVudFNlcnZpY2UudXBkYXRlRG9jdW1lbnQoZmlsZSwgbWV0YWRhdGEpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucmVmZXRjaERvY3VtZW50cygpO1xuICAgICAgICAgICAgICB0aGlzLnVwbG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgIHRoaXMuZmlsZVRvQmVVcGxvYWRlZCQubmV4dChudWxsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFByb3ZpZGVyU2VydmljZVxuICAgICAgICAgICAgICAudXBsb2FkRmlsZVdpdGhNZXRhZGF0YShmaWxlLCBkb2N1bWVudElkLCBtZXRhZGF0YSlcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWZldGNoRG9jdW1lbnRzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIkLm5leHQobnVsbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KERFRkFVTFRfUEFHSU5BVElPTik7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZVRvQmVVcGxvYWRlZCQubmV4dChudWxsKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG9uRG93bmxvYWRBY3Rpb25DbGljayhmaWxlOiBEb2N1bWVudGVuQXBpUmVsYXRlZEZpbGUpOiB2b2lkIHtcbiAgICB0aGlzLmRvd25sb2FkRG9jdW1lbnQoZmlsZSwgdHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgb25FZGl0TWV0YWRhdGEoZmlsZTogRmlsZSk6IHZvaWQge1xuICAgIHRoaXMuaXNFZGl0TW9kZSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmZpbGVUb0JlVXBsb2FkZWQkLm5leHQoZmlsZSk7XG4gICAgdGhpcy5zaG93VXBsb2FkTW9kYWwkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VNZXRhZGF0YU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd1VwbG9hZE1vZGFsJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkZpbGVTZWxlY3RlZChldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5pc0VkaXRNb2RlJC5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLmZpbGVUb0JlVXBsb2FkZWQkLm5leHQoZXZlbnQudGFyZ2V0LmZpbGVzWzBdKTtcbiAgICB0aGlzLnNob3dVcGxvYWRNb2RhbCQubmV4dCh0cnVlKTtcbiAgICB0aGlzLnJlc2V0RmlsZUlucHV0KCk7XG4gIH1cblxuICBwdWJsaWMgb25OYXZpZ2F0ZVRvQ2FzZUFkbWluQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShkb2N1bWVudERlZmluaXRpb25OYW1lID0+IHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL2Rvc3NpZXItbWFuYWdlbWVudC9kb3NzaWVyLyR7ZG9jdW1lbnREZWZpbml0aW9uTmFtZX1gXSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25Sb3dDbGljayhldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5kb3dubG9hZERvY3VtZW50KGV2ZW50LCBmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgb25QYWdpbmF0aW9uQ2xpY2tlZChwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoey4uLnRoaXMucGFnaW5hdGlvbiQuZ2V0VmFsdWUoKSwgcGFnZX0pO1xuICB9XG5cbiAgcHVibGljIG9uUGFnaW5hdGlvblNldChzaXplOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB7Y29sbGVjdGlvblNpemUsIHBhZ2V9ID0gdGhpcy5wYWdpbmF0aW9uJC5nZXRWYWx1ZSgpO1xuICAgIGNvbnN0IHJlc2V0UGFnZTogYm9vbGVhbiA9IE1hdGguY2VpbCgrY29sbGVjdGlvblNpemUgLyBzaXplKSA8PSArcGFnZSAmJiArY29sbGVjdGlvblNpemUgPiAwO1xuICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7Li4udGhpcy5wYWdpbmF0aW9uJC5nZXRWYWx1ZSgpLCBzaXplLCAuLi4ocmVzZXRQYWdlICYmIHtwYWdlOiAxfSl9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblVwbG9hZEJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkZpbHRlckV2ZW50KGZpbHRlcjogRG9jdW1lbnRlbkFwaUZpbHRlck1vZGVsIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyJC5uZXh0KGZpbHRlcik7XG4gICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHsuLi50aGlzLnBhZ2luYXRpb24kLmdldFZhbHVlKCksIC4uLkRFRkFVTFRfUEFHSU5BVElPTn0pO1xuICB9XG5cbiAgcHVibGljIG9uU29ydENoYW5nZWQoc29ydFN0YXRlOiBTb3J0U3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLl9zb3J0JC5uZXh0KFxuICAgICAgc29ydFN0YXRlLmlzU29ydGluZ1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIHNvcnQ6IGAke3NvcnRTdGF0ZS5zdGF0ZS5uYW1lID09PSAnc2l6ZScgPyBET0NVTUVOVEVOX0NPTFVNTl9LRVlTLkJFU1RBTkRTT01WQU5HIDogc29ydFN0YXRlLnN0YXRlLm5hbWV9LCR7c29ydFN0YXRlLnN0YXRlLmRpcmVjdGlvbn1gLFxuICAgICAgICAgIH1cbiAgICAgICAgOiBudWxsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyByZWZldGNoRG9jdW1lbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuX3JlZmV0Y2gkLm5leHQobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIGVkaXREaXNhYmxlZChmaWxlOiBEb2N1bWVudGVuQXBpUmVsYXRlZEZpbGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmlsZS5zdGF0dXMgPT09ICdkZWZpbml0aWVmJztcbiAgfVxuXG4gIHByaXZhdGUgZG93bmxvYWREb2N1bWVudChyZWxhdGVkRmlsZTogRG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlLCBmb3JjZURvd25sb2FkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kb3dubG9hZFNlcnZpY2UuZG93bmxvYWRGaWxlKFxuICAgICAgYCR7dGhpcy52YWx0aW1vRW5kcG9pbnRVcml9djEvZG9jdW1lbnRlbi1hcGkvJHtyZWxhdGVkRmlsZS5wbHVnaW5Db25maWd1cmF0aW9uSWR9L2ZpbGVzLyR7cmVsYXRlZEZpbGUuZmlsZUlkfS9kb3dubG9hZGAsXG4gICAgICByZWxhdGVkRmlsZS5iZXN0YW5kc25hYW0gPz8gJycsXG4gICAgICBmb3JjZURvd25sb2FkXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblF1ZXJ5UGFyYW1zU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQsXG4gICAgICAgIHRoaXMuZG9jdW1lbnRJZCQsXG4gICAgICAgIHRoaXMuZmlsdGVyJCxcbiAgICAgICAgdGhpcy5fc29ydCQsXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQsXG4gICAgICBdKS5zdWJzY3JpYmUoKFtkZWZpbml0aW9uTmFtZSwgZG9jdW1lbnRJZCwgZmlsdGVyLCBzb3J0LCBwYWdpbmF0aW9uXSkgPT4ge1xuICAgICAgICBjb25zdCB7c2l6ZSwgcGFnZX0gPSBwYWdpbmF0aW9uO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9kb3NzaWVycy8ke2RlZmluaXRpb25OYW1lfS9kb2N1bWVudC8ke2RvY3VtZW50SWR9L2RvY3VtZW50c2BdLCB7XG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHsuLi5maWx0ZXIsIC4uLnNvcnQsIHNpemUsIHBhZ2U6IHBhZ2UgLSAxfSxcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RmlsZUlucHV0KCk6IHZvaWQge1xuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgfVxuXG4gIHByaXZhdGUgc2V0VXBsb2FkUHJvY2Vzc0xpbmtlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgICAgICB0aGlzLnVwbG9hZFByb3ZpZGVyU2VydmljZS5jaGVja1VwbG9hZFByb2Nlc3NMaW5rKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICAgICAgICksXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGxvYWRQcm9jZXNzTGlua2VkU2V0ID0gdHJ1ZTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGxpbmtlZDogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLnVwbG9hZFByb2Nlc3NMaW5rZWQgPSBsaW5rZWQ7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5pdGlhbFBhcmFtcygpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1NYXBcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBtYXAocXVlcnlQYXJhbXMgPT4ge1xuICAgICAgICAgIGNvbnN0IHtzb3J0LCBzaXplLCBwYWdlLCAuLi5maWx0ZXJ9ID0gcXVlcnlQYXJhbXNbJ3BhcmFtcyddO1xuICAgICAgICAgIHJldHVybiB7c29ydCwgZmlsdGVyLCBzaXplLCBwYWdlfTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHtmaWx0ZXIsIHNvcnQsIHNpemUsIHBhZ2V9KSA9PiB7XG4gICAgICAgIHRoaXMuX3NvcnQkLm5leHQoe3NvcnR9KTtcbiAgICAgICAgdGhpcy5maWx0ZXIkLm5leHQoZmlsdGVyKTtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHtcbiAgICAgICAgICAuLi50aGlzLnBhZ2luYXRpb24kLmdldFZhbHVlKCksXG4gICAgICAgICAgc2l6ZTogK3NpemUsXG4gICAgICAgICAgcGFnZTogKyhwYWdlID8/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=
395
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vemd3L3NyYy9saWIvbW9kdWxlcy9kb2N1bWVudGVuLWFwaS9jb21wb25lbnRzL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy9kb2N1bWVudGVuLWFwaS1kb2N1bWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby96Z3cvc3JjL2xpYi9tb2R1bGVzL2RvY3VtZW50ZW4tYXBpL2NvbXBvbmVudHMvZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsU0FBUyxFQUE4QyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFL0YsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBQyxlQUFlLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUVMLGdCQUFnQixFQUVoQix1QkFBdUIsRUFDdkIsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUl4QixRQUFRLEdBQ1QsTUFBTSxxQkFBcUIsQ0FBQztBQUk3QixPQUFPLEVBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQWMsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RixPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFFYixFQUFFLEVBQ0YsYUFBYSxFQUNiLE9BQU8sRUFDUCxZQUFZLEdBQ2IsTUFBTSxNQUFNLENBQUM7QUFDZCxP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LFlBQVksbVFBQ1osdUJBQXVCOzs0RkFHZCwrQ0FBK0M7a0JBakIzRCxTQUFTOytCQUNFLHFEQUFxRCxjQUduRCxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLG1DQUFtQzt3QkFDbkMsWUFBWTt3QkFDWixVQUFVO3dCQUNWLGVBQWU7d0JBQ2YsNEJBQTRCO3dCQUM1QixZQUFZO3dCQUNaLHVCQUF1QjtxQkFDeEI7K1pBR3VCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDWSxtQkFBbUI7c0JBQXBELFNBQVM7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7RmlsdGVyMTYsIFRhZ0dyb3VwMTYsIFVwbG9hZDE2fSBmcm9tICdAY2FyYm9uL2ljb25zJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGlvbkl0ZW0sXG4gIENhcmJvbkxpc3RNb2R1bGUsXG4gIENvbHVtbkNvbmZpZyxcbiAgQ29uZmlybWF0aW9uTW9kYWxNb2R1bGUsXG4gIERFRkFVTFRfUEFHSU5BVElPTixcbiAgREVGQVVMVF9QQUdJTkFUT1JfQ09ORklHLFxuICBEb2N1bWVudGVuQXBpTWV0YWRhdGEsXG4gIFBhZ2luYXRpb24sXG4gIFNvcnRTdGF0ZSxcbiAgVmlld1R5cGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlLCBEaXJlY3Rpb259IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge0Rvd25sb2FkU2VydmljZSwgVXBsb2FkUHJvdmlkZXJTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9yZXNvdXJjZSc7XG5pbXBvcnQge1VzZXJQcm92aWRlclNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3NlY3VyaXR5JztcbmltcG9ydCB7QnV0dG9uTW9kdWxlLCBEaWFsb2dNb2R1bGUsIEljb25Nb2R1bGUsIEljb25TZXJ2aWNlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIFJlcGxheVN1YmplY3QsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmlwdGlvbixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRha2UsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQ09MVU1OX1ZJRVdfVFlQRVMsXG4gIENvbmZpZ3VyZWRDb2x1bW4sXG4gIERPQ1VNRU5URU5fQ09MVU1OX0tFWVMsXG4gIERvY3VtZW50ZW5BcGlGaWx0ZXJNb2RlbCxcbiAgRG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlLFxuICBTdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMsXG59IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0RvY3VtZW50ZW5BcGlDb2x1bW5TZXJ2aWNlLCBEb2N1bWVudGVuQXBpVmVyc2lvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7RG9jdW1lbnRlbkFwaURvY3VtZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvZG9jdW1lbnRlbi1hcGktZG9jdW1lbnQuc2VydmljZSc7XG5pbXBvcnQge0RvY3VtZW50ZW5BcGlGaWx0ZXJDb21wb25lbnR9IGZyb20gJy4uL2RvY3VtZW50ZW4tYXBpLWZpbHRlci9kb2N1bWVudGVuLWFwaS1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7RG9jdW1lbnRlbkFwaU1ldGFkYXRhTW9kYWxDb21wb25lbnR9IGZyb20gJy4uL2RvY3VtZW50ZW4tYXBpLW1ldGFkYXRhLW1vZGFsL2RvY3VtZW50ZW4tYXBpLW1ldGFkYXRhLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBEb2N1bWVudGVuQXBpVXBsb2FkRmllbGREZWZhdWx0VmFsdWVzLFxuICBEb2N1bWVudGVuQXBpVXBsb2FkRmllbGRzXG59IGZyb20gJy4uLy4uL21vZGVscy9kb2N1bWVudGVuLWFwaS11cGxvYWQtZmllbGQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItZGV0YWlsLXRhYi1kb2N1bWVudGVuLWFwaS1kb2N1bWVudHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQ2FyYm9uTGlzdE1vZHVsZSxcbiAgICBEb2N1bWVudGVuQXBpTWV0YWRhdGFNb2RhbENvbXBvbmVudCxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgRG9jdW1lbnRlbkFwaUZpbHRlckNvbXBvbmVudCxcbiAgICBEaWFsb2dNb2R1bGUsXG4gICAgQ29uZmlybWF0aW9uTW9kYWxNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJEZXRhaWxUYWJEb2N1bWVudGVuQXBpRG9jdW1lbnRzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3RyYW5zbGF0aW9uVGVtcGxhdGUnKSB0cmFuc2xhdGlvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RvY3VtZW50RGVmaW5pdGlvbk5hbWUkID0gdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICBtYXAocGFyYW1zID0+IHBhcmFtcz8uZG9jdW1lbnREZWZpbml0aW9uTmFtZSksXG4gICAgZmlsdGVyKGNhc2VEZWZpbml0aW9uTmFtZSA9PiAhIWNhc2VEZWZpbml0aW9uTmFtZSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzJCA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxTdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMgfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMkOiBPYnNlcnZhYmxlPFN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcz4gPVxuICAgIHRoaXMuX2RvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoY2FzZURlZmluaXRpb25OYW1lID0+XG4gICAgICAgIHRoaXMuZG9jdW1lbnRlbkFwaVZlcnNpb25TZXJ2aWNlLmdldFN1cHBvcnRlZEFwaUZlYXR1cmVzKGNhc2VEZWZpbml0aW9uTmFtZSlcbiAgICAgICksXG4gICAgICB0YXAoc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzID0+XG4gICAgICAgIHRoaXMuc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzJC5uZXh0KHN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcylcbiAgICAgIClcbiAgICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBmaWVsZHMkOiBPYnNlcnZhYmxlPENvbHVtbkNvbmZpZ1tdPiA9IHRoaXMuX2RvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgdGFwKCgpID0+IHRoaXMuZmllbGRzTG9hZGluZyQubmV4dCh0cnVlKSksXG4gICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmRvY3VtZW50ZW5BcGlDb2x1bW5TZXJ2aWNlLmdldENvbmZpZ3VyZWRDb2x1bW5zKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpLFxuICAgICAgICB0aGlzLl9zdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMkLFxuICAgICAgICB0aGlzLl9zb3J0JCxcbiAgICAgIF0pXG4gICAgKSxcbiAgICBtYXAoKFtjb2x1bW5zLCBzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMsIHNvcnRdKSA9PiB7XG4gICAgICBjb25zdCBkZWZhdWx0U29ydENvbHVtbjogQ29uZmlndXJlZENvbHVtbiB8IHVuZGVmaW5lZCA9IGNvbHVtbnMuZmluZChcbiAgICAgICAgKGNvbHVtbjogQ29uZmlndXJlZENvbHVtbikgPT4gISFjb2x1bW4uZGVmYXVsdFNvcnRcbiAgICAgICk7XG4gICAgICBpZiAoISFkZWZhdWx0U29ydENvbHVtbiAmJiAhc29ydCAmJiBzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMuc3VwcG9ydHNTb3J0YWJsZUNvbHVtbnMpIHtcbiAgICAgICAgdGhpcy5fc29ydCQubmV4dCh7c29ydDogYCR7ZGVmYXVsdFNvcnRDb2x1bW4ua2V5fSwke2RlZmF1bHRTb3J0Q29sdW1uLmRlZmF1bHRTb3J0fWB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbHVtbnMubWFwKChjb2x1bW46IENvbmZpZ3VyZWRDb2x1bW4pID0+ICh7XG4gICAgICAgIGtleTogY29sdW1uLmtleSA9PT0gRE9DVU1FTlRFTl9DT0xVTU5fS0VZUy5CRVNUQU5EU09NVkFORyA/ICdzaXplJyA6IGNvbHVtbi5rZXksXG4gICAgICAgIGxhYmVsOiBgemd3LmRvY3VtZW50Q29sdW1ucy4ke2NvbHVtbi5rZXl9YCxcbiAgICAgICAgdmlld1R5cGU6ICFDT0xVTU5fVklFV19UWVBFU1tjb2x1bW4ua2V5XSA/IFZpZXdUeXBlLlRFWFQgOiBDT0xVTU5fVklFV19UWVBFU1tjb2x1bW4ua2V5XSxcbiAgICAgICAgLi4uKENPTFVNTl9WSUVXX1RZUEVTW2NvbHVtbi5rZXldID09PSBWaWV3VHlwZS5URU1QTEFURSAmJiB7XG4gICAgICAgICAgdGVtcGxhdGU6IHRoaXMudHJhbnNsYXRpb25UZW1wbGF0ZSxcbiAgICAgICAgICB0ZW1wbGF0ZURhdGE6IHtrZXk6IGNvbHVtbi5rZXl9LFxuICAgICAgICB9KSxcbiAgICAgICAgLi4uKGNvbHVtbi5rZXkgPT09IERPQ1VNRU5URU5fQ09MVU1OX0tFWVMuQ1JFQVRJRURBVFVNICYmIHtmb3JtYXQ6ICdERC1NTS1ZWVlZJ30pLFxuICAgICAgICBzb3J0YWJsZTogY29sdW1uLnNvcnRhYmxlICYmIHN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcy5zdXBwb3J0c1NvcnRhYmxlQ29sdW1ucyxcbiAgICAgIH0pKTtcbiAgICB9KSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5maWVsZHNMb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9KVxuICApO1xuICBwdWJsaWMgZG9jdW1lbnQ6IERvY3VtZW50ZW5BcGlSZWxhdGVkRmlsZTtcbiAgcHVibGljIGFjdGlvbkl0ZW1zOiBBY3Rpb25JdGVtW10gPSBbXG4gICAge1xuICAgICAgbGFiZWw6ICdkb2N1bWVudC5kb3dubG9hZCcsXG4gICAgICBjYWxsYmFjazogdGhpcy5vbkRvd25sb2FkQWN0aW9uQ2xpY2suYmluZCh0aGlzKSxcbiAgICAgIHR5cGU6ICdub3JtYWwnLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICdkb2N1bWVudC5lZGl0JyxcbiAgICAgIGNhbGxiYWNrOiB0aGlzLm9uRWRpdE1ldGFkYXRhLmJpbmQodGhpcyksXG4gICAgICBkaXNhYmxlZENhbGxiYWNrOiB0aGlzLmVkaXREaXNhYmxlZC5iaW5kKHRoaXMpLFxuICAgICAgdHlwZTogJ25vcm1hbCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ2RvY3VtZW50LmRlbGV0ZScsXG4gICAgICBjYWxsYmFjazogdGhpcy5vbkRlbGV0ZUFjdGlvbkNsaWNrLmJpbmQodGhpcyksXG4gICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICB9LFxuICBdO1xuXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudERlZmluaXRpb25OYW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICBtYXAocGFyYW1zID0+IHBhcmFtcz8uZG9jdW1lbnREZWZpbml0aW9uTmFtZSksXG4gICAgZmlsdGVyKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT4gISFkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudElkJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICBtYXAocGFyYW1zID0+IHBhcmFtcz8uZG9jdW1lbnRJZCksXG4gICAgZmlsdGVyKGRvY3VtZW50SWQgPT4gISFkb2N1bWVudElkKVxuICApO1xuXG4gIHB1YmxpYyBpc0FkbWluOiBib29sZWFuO1xuICBwdWJsaWMgc2hvd1phYWtMaW5rV2FybmluZzogYm9vbGVhbjtcbiAgcHVibGljIHVwbG9hZFByb2Nlc3NMaW5rZWRTZXQgPSBmYWxzZTtcbiAgcHVibGljIHVwbG9hZFByb2Nlc3NMaW5rZWQhOiBib29sZWFuO1xuXG4gIHB1YmxpYyBpc0VkaXRNb2RlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSBhY2NlcHRlZEZpbGVzOiBzdHJpbmcgfCBudWxsID1cbiAgICB0aGlzLmNvbmZpZ1NlcnZpY2U/LmNvbmZpZz8uY2FzZUZpbGVVcGxvYWRBY2NlcHRlZEZpbGVzIHx8IG51bGw7XG4gIHB1YmxpYyByZWFkb25seSBtYXhGaWxlU2l6ZTogbnVtYmVyID0gdGhpcy5jb25maWdTZXJ2aWNlPy5jb25maWc/LmNhc2VGaWxlU2l6ZVVwbG9hZExpbWl0TUIgfHwgNTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZmlsZVRvQmVVcGxvYWRlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZpbGUgfCBudWxsPihudWxsKTtcbiAgcHVibGljIHJlYWRvbmx5IG1vZGFsRGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzaG93TW9kYWwkID0gbmV3IFN1YmplY3Q8bnVsbD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dVcGxvYWRNb2RhbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dEZWxldGVDb25maXJtYXRpb25Nb2RhbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdXBsb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pdGVtc0xvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHVibGljIHJlYWRvbmx5IGZpZWxkc0xvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHVibGljIHJlYWRvbmx5IGxvYWRpbmckID0gY29tYmluZUxhdGVzdChbdGhpcy5faXRlbXNMb2FkaW5nJCwgdGhpcy5maWVsZHNMb2FkaW5nJF0pLnBpcGUoXG4gICAgbWFwKChbaXRlbXNMb2FkaW5nLCBmaWVsZHNMb2FkaW5nXSkgPT4gaXRlbXNMb2FkaW5nIHx8IGZpZWxkc0xvYWRpbmcpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZpbHRlciQgPSBuZXcgUmVwbGF5U3ViamVjdDxEb2N1bWVudGVuQXBpRmlsdGVyTW9kZWwgfCBudWxsPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgcGFnaW5hdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBhZ2luYXRpb24+KERFRkFVTFRfUEFHSU5BVElPTik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlZmV0Y2gkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc29ydCQgPSBuZXcgUmVwbGF5U3ViamVjdDx7c29ydDogc3RyaW5nfSB8IG51bGw+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmFsdGltb0VuZHBvaW50VXJpITogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBwYWdpbmF0b3JDb25maWcgPSB7XG4gICAgLi4uREVGQVVMVF9QQUdJTkFUT1JfQ09ORklHLFxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnM6IFs1LCAxMCwgMjAsIDUwLCAxMDBdLFxuICB9O1xuXG4gIHB1YmxpYyBnZXQgc29ydFN0YXRlJCgpOiBPYnNlcnZhYmxlPFNvcnRTdGF0ZSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fc29ydCQucGlwZShtYXAoc29ydFZhbHVlID0+IHRoaXMuZ2V0U29ydFN0YXRlRnJvbVNvcnRTdHJpbmcoc29ydFZhbHVlPy5zb3J0KSkpO1xuICB9XG5cbiAgcHVibGljIHVwbG9hZEZpZWxkcyQ6IE9ic2VydmFibGU8RG9jdW1lbnRlbkFwaVVwbG9hZEZpZWxkcz4gPSB0aGlzLmRvY3VtZW50SWQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGRvY3VtZW50SWQgPT4gdGhpcy5kb2N1bWVudGVuQXBpRG9jdW1lbnRTZXJ2aWNlLmdldFByZWZpbGxlZFVwbG9hZEZpZWxkcyhkb2N1bWVudElkKSksXG4gICAgbWFwKHVwbG9hZEZpZWxkcyA9PlxuICAgICAgdXBsb2FkRmllbGRzLnJlZHVjZShcbiAgICAgICAgKGFjYywgY3VycikgPT4gKHtcbiAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgW2N1cnIua2V5XToge1xuICAgICAgICAgICAga2V5OiBjdXJyLmtleSxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogY3Vyci5kZWZhdWx0VmFsdWUsXG4gICAgICAgICAgICB2aXNpYmxlOiBjdXJyLnZpc2libGUsXG4gICAgICAgICAgICByZWFkb25seTogY3Vyci5yZWFkb25seSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICAge31cbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcHVibGljIGRlZmF1bHRWYWx1ZXMkOiBPYnNlcnZhYmxlPERvY3VtZW50ZW5BcGlVcGxvYWRGaWVsZERlZmF1bHRWYWx1ZXM+ID0gdGhpcy51cGxvYWRGaWVsZHMkLnBpcGUoXG4gICAgbWFwKGZvcm1GaWVsZHMgPT4gKHtcbiAgICAgIGF1dGV1cjogZm9ybUZpZWxkcz8uYXV0ZXVyPy5kZWZhdWx0VmFsdWUsXG4gICAgICB2ZXJ0cm91d2VsaWpraGVpZGFhbmR1aWRpbmc6IGZvcm1GaWVsZHM/LnZlcnRyb3V3ZWxpamtoZWlkYWFuZHVpZGluZz8uZGVmYXVsdFZhbHVlLFxuICAgICAgYmVzY2hyaWp2aW5nOiBmb3JtRmllbGRzPy5iZXNjaHJpanZpbmc/LmRlZmF1bHRWYWx1ZSxcbiAgICAgIHRpdGVsOiBmb3JtRmllbGRzPy50aXRlbD8uZGVmYXVsdFZhbHVlLFxuICAgICAgaW5mb3JtYXRpZW9iamVjdHR5cGU6IGZvcm1GaWVsZHM/LmluZm9ybWF0aWVvYmplY3R0eXBlPy5kZWZhdWx0VmFsdWUsXG4gICAgICBiZXN0YW5kc25hYW06IGZvcm1GaWVsZHM/LmJlc3RhbmRzbmFhbT8uZGVmYXVsdFZhbHVlLFxuICAgICAgdGFhbDogZm9ybUZpZWxkcz8udGFhbD8uZGVmYXVsdFZhbHVlLFxuICAgICAgc3RhdHVzOiBmb3JtRmllbGRzPy5zdGF0dXM/LmRlZmF1bHRWYWx1ZSxcbiAgICAgIHRyZWZ3b29yZGVuOiBmb3JtRmllbGRzPy50cmVmd29vcmRlbj8uZGVmYXVsdFZhbHVlXG4gICAgICAgID8uc3BsaXQoJywnKVxuICAgICAgICA/Lm1hcCh0YWcgPT4gdGFnLnRyaW0oKSlcbiAgICAgICAgPy5maWx0ZXIodGFnID0+ICEhdGFnKSxcbiAgICB9KSlcbiAgKTtcblxuICBwdWJsaWMgaGlkZUZpZWxkcyQ6IE9ic2VydmFibGU8QXJyYXk8c3RyaW5nPj4gPSB0aGlzLnVwbG9hZEZpZWxkcyQucGlwZShcbiAgICBtYXAoZm9ybUZpZWxkcyA9PiB7XG4gICAgICBpZiAoZm9ybUZpZWxkcykge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZm9ybUZpZWxkcykuZmlsdGVyKGZpZWxkID0+ICFmb3JtRmllbGRzW2ZpZWxkXT8udmlzaWJsZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gW107XG4gICAgfSlcbiAgKTtcblxuICBwdWJsaWMgcmVsYXRlZEZpbGVzJDogT2JzZXJ2YWJsZTxBcnJheTxEb2N1bWVudGVuQXBpUmVsYXRlZEZpbGU+PiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuZG9jdW1lbnRJZCQsXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtTWFwLFxuICAgIHRoaXMuX3JlZmV0Y2gkLFxuICBdKS5waXBlKFxuICAgIHRhcCgoKSA9PiB0aGlzLl9pdGVtc0xvYWRpbmckLm5leHQodHJ1ZSkpLFxuICAgIHN3aXRjaE1hcCgoW2RvY3VtZW50SWQsIHF1ZXJ5UGFyYW1zXSkgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmRvY3VtZW50ZW5BcGlEb2N1bWVudFNlcnZpY2UuZ2V0RmlsdGVyZWRaYWtlbkFwaURvY3VtZW50cyhcbiAgICAgICAgICBkb2N1bWVudElkLFxuICAgICAgICAgIHF1ZXJ5UGFyYW1zWydwYXJhbXMnXVxuICAgICAgICApLFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgICAgIF0pXG4gICAgKSxcbiAgICBtYXAoKFtyZWxhdGVkRmlsZXNdKSA9PiB7XG4gICAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoe1xuICAgICAgICAuLi50aGlzLnBhZ2luYXRpb24kLmdldFZhbHVlKCksXG4gICAgICAgIGNvbGxlY3Rpb25TaXplOiByZWxhdGVkRmlsZXMudG90YWxFbGVtZW50cyxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgdHJhbnNsYXRlZEZpbGVzID0gcmVsYXRlZEZpbGVzPy5jb250ZW50Py5tYXAoZmlsZSA9PiAoe1xuICAgICAgICAuLi5maWxlLFxuICAgICAgICBjcmVhdGVkQnk6IGZpbGUuY3JlYXRlZEJ5IHx8IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdsaXN0LmF1dG9tYXRpY2FsbHlHZW5lcmF0ZWQnKSxcbiAgICAgICAgc2l6ZTogdGhpcy5ieXRlc1RvTWVnYWJ5dGVzKGZpbGUuYmVzdGFuZHNvbXZhbmcpLFxuICAgICAgICB0YWdzOiBmaWxlLnRyZWZ3b29yZGVuPy5tYXAoKHRyZWZ3b29yZDogc3RyaW5nKSA9PiAoe1xuICAgICAgICAgIGNvbnRlbnQ6IHRyZWZ3b29yZCxcbiAgICAgICAgfSkpLFxuICAgICAgfSkpO1xuICAgICAgcmV0dXJuIHRyYW5zbGF0ZWRGaWxlcyB8fCBbXTtcbiAgICB9KSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5faXRlbXNMb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9KSxcbiAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgIHRoaXMuc2hvd1phYWtMaW5rV2FybmluZyA9IHRydWU7XG4gICAgICB0aGlzLl9pdGVtc0xvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9KVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVwbG9hZFByb3ZpZGVyU2VydmljZTogVXBsb2FkUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG93bmxvYWRTZXJ2aWNlOiBEb3dubG9hZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJQcm92aWRlclNlcnZpY2U6IFVzZXJQcm92aWRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpY29uU2VydmljZTogSWNvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudGVuQXBpRG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudGVuQXBpRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRlbkFwaUNvbHVtblNlcnZpY2U6IERvY3VtZW50ZW5BcGlDb2x1bW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRlbkFwaVZlcnNpb25TZXJ2aWNlOiBEb2N1bWVudGVuQXBpVmVyc2lvblNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pY29uU2VydmljZS5yZWdpc3RlcihGaWx0ZXIxNik7XG4gICAgdGhpcy52YWx0aW1vRW5kcG9pbnRVcmkgPSBjb25maWdTZXJ2aWNlLmNvbmZpZy52YWx0aW1vQXBpLmVuZHBvaW50VXJpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0SW5pdGlhbFBhcmFtcygpO1xuICAgIHRoaXMuc2V0VXBsb2FkUHJvY2Vzc0xpbmtlZCgpO1xuICAgIHRoaXMuaXNVc2VyQWRtaW4oKTtcbiAgICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyQWxsKFtGaWx0ZXIxNiwgVGFnR3JvdXAxNiwgVXBsb2FkMTZdKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgb25EZWxldGVBY3Rpb25DbGljayhpdGVtOiBEb2N1bWVudGVuQXBpUmVsYXRlZEZpbGUpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50ID0gaXRlbTtcbiAgICB0aGlzLnNob3dEZWxldGVDb25maXJtYXRpb25Nb2RhbCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGVEb2N1bWVudCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pdGVtc0xvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kb2N1bWVudGVuQXBpRG9jdW1lbnRTZXJ2aWNlLmRlbGV0ZURvY3VtZW50KHRoaXMuZG9jdW1lbnQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlZmV0Y2hEb2N1bWVudHMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBieXRlc1RvTWVnYWJ5dGVzKGJ5dGVzOiBudW1iZXIgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIGlmICghYnl0ZXMpIHJldHVybiAnJztcblxuICAgIGNvbnN0IG1lZ2FieXRlcyA9IGJ5dGVzIC8gKDEwMjQgKiAxMDI0KTtcbiAgICBpZiAobWVnYWJ5dGVzIDwgMSkge1xuICAgICAgcmV0dXJuIGAke01hdGguY2VpbChtZWdhYnl0ZXMgKiAxMDAwKX0gS0JgO1xuICAgIH0gZWxzZSBpZiAobWVnYWJ5dGVzIDwgMTAwMCkge1xuICAgICAgcmV0dXJuIG1lZ2FieXRlcy50b0ZpeGVkKDIpICsgJyBNQic7XG4gICAgfVxuXG4gICAgcmV0dXJuIChtZWdhYnl0ZXMgLyAxMDAwKS50b0ZpeGVkKDIpICsgJyBHQic7XG4gIH1cblxuICBwdWJsaWMgZ2V0VXBsb2FkQnV0dG9uVG9vbHRpcCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnVwbG9hZFByb2Nlc3NMaW5rZWRTZXQgJiYgdGhpcy51cGxvYWRQcm9jZXNzTGlua2VkKSB7XG4gICAgICByZXR1cm4gJ1VwbG9hZCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzQWRtaW4pIHtcbiAgICAgIHJldHVybiAnZG9zc2llci5kb2N1bWVudGVuLm5vUHJvY2Vzc0xpbmtlZC5hZG1pblJvbGUnO1xuICAgIH1cblxuICAgIHJldHVybiAnZG9zc2llci5kb2N1bWVudGVuLm5vUHJvY2Vzc0xpbmtlZC5yZWd1bGFyVXNlcic7XG4gIH1cblxuICBwdWJsaWMgaXNVc2VyQWRtaW4oKSB7XG4gICAgdGhpcy51c2VyUHJvdmlkZXJTZXJ2aWNlXG4gICAgICAuZ2V0VXNlclN1YmplY3QoKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIHVzZXJJZGVudGl0eSA9PiB7XG4gICAgICAgICAgdGhpcy5pc0FkbWluID0gdXNlcklkZW50aXR5LnJvbGVzLmluY2x1ZGVzKCdST0xFX0FETUlOJyk7XG4gICAgICAgIH0sXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzQWRtaW4gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRhZGF0YVNldChtZXRhZGF0YTogRG9jdW1lbnRlbkFwaU1ldGFkYXRhKTogdm9pZCB7XG4gICAgdGhpcy51cGxvYWRpbmckLm5leHQodHJ1ZSk7XG5cbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmZpbGVUb0JlVXBsb2FkZWQkLCB0aGlzLmRvY3VtZW50SWQkXSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChbZmlsZSwgZG9jdW1lbnRJZF0pID0+IHtcbiAgICAgICAgICBpZiAoIWZpbGUpIHJldHVybjtcbiAgICAgICAgICBpZiAodGhpcy5pc0VkaXRNb2RlJC5nZXRWYWx1ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50ZW5BcGlEb2N1bWVudFNlcnZpY2UudXBkYXRlRG9jdW1lbnQoZmlsZSwgbWV0YWRhdGEpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucmVmZXRjaERvY3VtZW50cygpO1xuICAgICAgICAgICAgICB0aGlzLnVwbG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgIHRoaXMuZmlsZVRvQmVVcGxvYWRlZCQubmV4dChudWxsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFByb3ZpZGVyU2VydmljZVxuICAgICAgICAgICAgICAudXBsb2FkRmlsZVdpdGhNZXRhZGF0YShmaWxlLCBkb2N1bWVudElkLCBtZXRhZGF0YSlcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWZldGNoRG9jdW1lbnRzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIkLm5leHQobnVsbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KERFRkFVTFRfUEFHSU5BVElPTik7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZVRvQmVVcGxvYWRlZCQubmV4dChudWxsKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG9uRG93bmxvYWRBY3Rpb25DbGljayhmaWxlOiBEb2N1bWVudGVuQXBpUmVsYXRlZEZpbGUpOiB2b2lkIHtcbiAgICB0aGlzLmRvd25sb2FkRG9jdW1lbnQoZmlsZSwgdHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgb25FZGl0TWV0YWRhdGEoZmlsZTogRmlsZSk6IHZvaWQge1xuICAgIHRoaXMuaXNFZGl0TW9kZSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmZpbGVUb0JlVXBsb2FkZWQkLm5leHQoZmlsZSk7XG4gICAgdGhpcy5zaG93VXBsb2FkTW9kYWwkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VNZXRhZGF0YU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd1VwbG9hZE1vZGFsJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkZpbGVTZWxlY3RlZChldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5pc0VkaXRNb2RlJC5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLmZpbGVUb0JlVXBsb2FkZWQkLm5leHQoZXZlbnQudGFyZ2V0LmZpbGVzWzBdKTtcbiAgICB0aGlzLnNob3dVcGxvYWRNb2RhbCQubmV4dCh0cnVlKTtcbiAgICB0aGlzLnJlc2V0RmlsZUlucHV0KCk7XG4gIH1cblxuICBwdWJsaWMgb25OYXZpZ2F0ZVRvQ2FzZUFkbWluQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShkb2N1bWVudERlZmluaXRpb25OYW1lID0+IHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL2Rvc3NpZXItbWFuYWdlbWVudC9kb3NzaWVyLyR7ZG9jdW1lbnREZWZpbml0aW9uTmFtZX1gXSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25Sb3dDbGljayhldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5kb3dubG9hZERvY3VtZW50KGV2ZW50LCBmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgb25QYWdpbmF0aW9uQ2xpY2tlZChwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoey4uLnRoaXMucGFnaW5hdGlvbiQuZ2V0VmFsdWUoKSwgcGFnZX0pO1xuICB9XG5cbiAgcHVibGljIG9uUGFnaW5hdGlvblNldChzaXplOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB7Y29sbGVjdGlvblNpemUsIHBhZ2V9ID0gdGhpcy5wYWdpbmF0aW9uJC5nZXRWYWx1ZSgpO1xuICAgIGNvbnN0IHJlc2V0UGFnZTogYm9vbGVhbiA9IE1hdGguY2VpbCgrY29sbGVjdGlvblNpemUgLyBzaXplKSA8PSArcGFnZSAmJiArY29sbGVjdGlvblNpemUgPiAwO1xuICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7Li4udGhpcy5wYWdpbmF0aW9uJC5nZXRWYWx1ZSgpLCBzaXplLCAuLi4ocmVzZXRQYWdlICYmIHtwYWdlOiAxfSl9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblVwbG9hZEJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkZpbHRlckV2ZW50KGZpbHRlcjogRG9jdW1lbnRlbkFwaUZpbHRlck1vZGVsIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyJC5uZXh0KGZpbHRlcik7XG4gICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHsuLi50aGlzLnBhZ2luYXRpb24kLmdldFZhbHVlKCksIC4uLkRFRkFVTFRfUEFHSU5BVElPTn0pO1xuICB9XG5cbiAgcHVibGljIG9uU29ydENoYW5nZWQoc29ydFN0YXRlOiBTb3J0U3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLl9zb3J0JC5uZXh0KFxuICAgICAgc29ydFN0YXRlLmlzU29ydGluZ1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIHNvcnQ6IGAke3NvcnRTdGF0ZS5zdGF0ZS5uYW1lID09PSAnc2l6ZScgPyBET0NVTUVOVEVOX0NPTFVNTl9LRVlTLkJFU1RBTkRTT01WQU5HIDogc29ydFN0YXRlLnN0YXRlLm5hbWV9LCR7c29ydFN0YXRlLnN0YXRlLmRpcmVjdGlvbn1gLFxuICAgICAgICAgIH1cbiAgICAgICAgOiBudWxsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyByZWZldGNoRG9jdW1lbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuX3JlZmV0Y2gkLm5leHQobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIGVkaXREaXNhYmxlZChmaWxlOiBEb2N1bWVudGVuQXBpUmVsYXRlZEZpbGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmlsZS5zdGF0dXMgPT09ICdkZWZpbml0aWVmJztcbiAgfVxuXG4gIHByaXZhdGUgZG93bmxvYWREb2N1bWVudChyZWxhdGVkRmlsZTogRG9jdW1lbnRlbkFwaVJlbGF0ZWRGaWxlLCBmb3JjZURvd25sb2FkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kb3dubG9hZFNlcnZpY2UuZG93bmxvYWRGaWxlKFxuICAgICAgYCR7dGhpcy52YWx0aW1vRW5kcG9pbnRVcml9djEvZG9jdW1lbnRlbi1hcGkvJHtyZWxhdGVkRmlsZS5wbHVnaW5Db25maWd1cmF0aW9uSWR9L2ZpbGVzLyR7cmVsYXRlZEZpbGUuZmlsZUlkfS9kb3dubG9hZGAsXG4gICAgICByZWxhdGVkRmlsZS5iZXN0YW5kc25hYW0gPz8gJycsXG4gICAgICBmb3JjZURvd25sb2FkXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblF1ZXJ5UGFyYW1zU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQsXG4gICAgICAgIHRoaXMuZG9jdW1lbnRJZCQsXG4gICAgICAgIHRoaXMuZmlsdGVyJCxcbiAgICAgICAgdGhpcy5fc29ydCQsXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQsXG4gICAgICBdKS5zdWJzY3JpYmUoKFtkZWZpbml0aW9uTmFtZSwgZG9jdW1lbnRJZCwgZmlsdGVyLCBzb3J0LCBwYWdpbmF0aW9uXSkgPT4ge1xuICAgICAgICBjb25zdCB7c2l6ZSwgcGFnZX0gPSBwYWdpbmF0aW9uO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9kb3NzaWVycy8ke2RlZmluaXRpb25OYW1lfS9kb2N1bWVudC8ke2RvY3VtZW50SWR9L2RvY3VtZW50c2BdLCB7XG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHsuLi5maWx0ZXIsIC4uLnNvcnQsIHNpemUsIHBhZ2U6IHBhZ2UgLSAxfSxcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RmlsZUlucHV0KCk6IHZvaWQge1xuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgfVxuXG4gIHByaXZhdGUgc2V0VXBsb2FkUHJvY2Vzc0xpbmtlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgICAgICB0aGlzLnVwbG9hZFByb3ZpZGVyU2VydmljZS5jaGVja1VwbG9hZFByb2Nlc3NMaW5rKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICAgICAgICksXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGxvYWRQcm9jZXNzTGlua2VkU2V0ID0gdHJ1ZTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGxpbmtlZDogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLnVwbG9hZFByb2Nlc3NMaW5rZWQgPSBsaW5rZWQ7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5pdGlhbFBhcmFtcygpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1NYXBcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBtYXAocXVlcnlQYXJhbXMgPT4ge1xuICAgICAgICAgIGNvbnN0IHtzb3J0LCBzaXplLCBwYWdlLCAuLi5maWx0ZXJ9ID0gcXVlcnlQYXJhbXNbJ3BhcmFtcyddO1xuICAgICAgICAgIHJldHVybiB7c29ydCwgZmlsdGVyLCBzaXplLCBwYWdlfTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHtmaWx0ZXIsIHNvcnQsIHNpemUsIHBhZ2V9KSA9PiB7XG4gICAgICAgIHRoaXMuX3NvcnQkLm5leHQoe3NvcnR9KTtcbiAgICAgICAgdGhpcy5maWx0ZXIkLm5leHQoZmlsdGVyKTtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHtcbiAgICAgICAgICAuLi50aGlzLnBhZ2luYXRpb24kLmdldFZhbHVlKCksXG4gICAgICAgICAgc2l6ZTogK3NpemUsXG4gICAgICAgICAgcGFnZTogKyhwYWdlID8/IDApICsgMSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub3BlblF1ZXJ5UGFyYW1zU3Vic2NyaXB0aW9uKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U29ydFN0YXRlRnJvbVNvcnRTdHJpbmcoc29ydFN0cmluZz86IHN0cmluZyk6IFNvcnRTdGF0ZSB8IG51bGwge1xuICAgIGNvbnN0IHNwbGl0U3RyaW5nID0gc29ydFN0cmluZyAmJiBzb3J0U3RyaW5nLnNwbGl0KCcsJyk7XG4gICAgaWYgKHNwbGl0U3RyaW5nICYmIHNwbGl0U3RyaW5nPy5sZW5ndGggPiAxKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc1NvcnRpbmc6IHRydWUsXG4gICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgbmFtZTogc3BsaXRTdHJpbmdbMF0sXG4gICAgICAgICAgZGlyZWN0aW9uOiBzcGxpdFN0cmluZ1sxXSBhcyBEaXJlY3Rpb24sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG48ZGl2XG4gIGNsYXNzPVwiY2FyYm9uLWRvY3VtZW50LXRhYmxlLXdyYXBwZXJcIlxuICAqbmdJZj1cIntcbiAgICBsb2FkaW5nOiBsb2FkaW5nJCB8IGFzeW5jLFxuICAgIGZpZWxkc0xvYWRpbmc6IGZpZWxkc0xvYWRpbmckIHwgYXN5bmMsXG4gICAgdXBsb2FkaW5nOiB1cGxvYWRpbmckIHwgYXN5bmMsXG4gICAgcmVsYXRlZEZpbGVzOiByZWxhdGVkRmlsZXMkIHwgYXN5bmMsXG4gICAgZmllbGRzOiBmaWVsZHMkIHwgYXN5bmMsXG4gICAgc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzOiBzdXBwb3J0ZWREb2N1bWVudGVuQXBpRmVhdHVyZXMkIHwgYXN5bmMsXG4gICAgcGFnaW5hdGlvbjogcGFnaW5hdGlvbiQgfCBhc3luYyxcbiAgICBzb3J0U3RhdGU6IHNvcnRTdGF0ZSQgfCBhc3luYyxcbiAgICB1cGxvYWRGaWVsZHM6IHVwbG9hZEZpZWxkcyQgfCBhc3luYyxcbiAgICBkZWZhdWx0VmFsdWVzOiBkZWZhdWx0VmFsdWVzJCB8IGFzeW5jLFxuICAgIGhpZGVGaWVsZHM6IGhpZGVGaWVsZHMkIHwgYXN5bmMsXG4gIH0gYXMgb2JzXCJcbj5cbiAgQGlmICgoIW9icy5maWVsZHNMb2FkaW5nICYmIG9icy5maWVsZHMubGVuZ3RoKSB8fCBvYnMuZmllbGRzTG9hZGluZykge1xuICAgIDx2YWx0aW1vLWNhcmJvbi1saXN0XG4gICAgICBbYWN0aW9uSXRlbXNdPVwiYWN0aW9uSXRlbXNcIlxuICAgICAgW2l0ZW1zXT1cIm9icy5yZWxhdGVkRmlsZXNcIlxuICAgICAgW2ZpZWxkc109XCJvYnMuZmllbGRzXCJcbiAgICAgIFtpbml0aWFsU29ydFN0YXRlXT1cIm9icy5zb3J0U3RhdGVcIlxuICAgICAgW2xvYWRpbmddPVwib2JzLmxvYWRpbmdcIlxuICAgICAgW3BhZ2luYXRpb25dPVwib2JzLnBhZ2luYXRpb25cIlxuICAgICAgW3BhZ2luYXRvckNvbmZpZ109XCJwYWdpbmF0b3JDb25maWdcIlxuICAgICAgcGFnaW5hdGlvbklkZW50aWZpZXI9XCJkb2N1bWVudGVuQXBpXCJcbiAgICAgIChyb3dDbGlja2VkKT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiXG4gICAgICAoc29ydENoYW5nZWQpPVwiXG4gICAgICAgIG9icz8uc3VwcG9ydGVkRG9jdW1lbnRlbkFwaUZlYXR1cmVzPy5zdXBwb3J0c1NvcnRhYmxlQ29sdW1ucyAmJiBvblNvcnRDaGFuZ2VkKCRldmVudClcbiAgICAgIFwiXG4gICAgICAocGFnaW5hdGlvbkNsaWNrZWQpPVwib25QYWdpbmF0aW9uQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICAgIChwYWdpbmF0aW9uU2V0KT1cIm9uUGFnaW5hdGlvblNldCgkZXZlbnQpXCJcbiAgICAgIGhpZGVDb2x1bW5IZWFkZXJcbiAgICA+XG4gICAgICA8ZGl2IGNhcmJvblRvb2xiYXJDb250ZW50PlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBbYWNjZXB0XT1cImFjY2VwdGVkRmlsZXNcIlxuICAgICAgICAgIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgaGlkZGVuXG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICNmaWxlSW5wdXRcbiAgICAgICAgLz5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJvYnM/LnN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcz8uc3VwcG9ydHNGaWx0ZXJhYmxlQ29sdW1uc1wiXG4gICAgICAgICAgW2Nkc092ZXJmbG93TWVudV09XCJvdmVyZmxvd0ZpbHRlclwiXG4gICAgICAgICAgW2N1c3RvbVBhbmVdPVwidHJ1ZVwiXG4gICAgICAgICAgW2ljb25Pbmx5XT1cInRydWVcIlxuICAgICAgICAgIFtmbGlwXT1cInRydWVcIlxuICAgICAgICAgIFtvZmZzZXRdPVwie3g6IDAsIHk6IDQ3fVwiXG4gICAgICAgICAgY2RzQnV0dG9uPVwiZ2hvc3RcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiZmlsdGVyXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ1cGxvYWRCdXR0b25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9SZXN1bHRzXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC92YWx0aW1vLWNhcmJvbi1saXN0PlxuICB9IEBlbHNlIHtcbiAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICBbYWN0aW9uXT1cIm5hdmlnYXRlVG9DYXNlQWRtaW5CdXR0b25cIlxuICAgICAgW2Rlc2NyaXB0aW9uXT1cIid6Z3cuZG9jdW1lbnRzLm5vQ29sdW1ucy5kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgW3RpdGxlXT1cIid6Z3cuZG9jdW1lbnRzLm5vQ29sdW1ucy50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgfVxuXG4gIDx2YWx0aW1vLWRvY3VtZW50ZW4tYXBpLW1ldGFkYXRhLW1vZGFsXG4gICAgW2RlZmF1bHRWYWx1ZXNdPVwib2JzLmRlZmF1bHRWYWx1ZXNcIlxuICAgIFtkaXNhYmxlQXV0aG9yXT1cIm9icy51cGxvYWRGaWVsZHM/LmF1dGV1cj8ucmVhZG9ubHlcIlxuICAgIFtkaXNhYmxlQ29uZmlkZW50aWFsaXR5TGV2ZWxdPVwib2JzLnVwbG9hZEZpZWxkcz8udmVydHJvdXdlbGlqa2hlaWRhYW5kdWlkaW5nPy5yZWFkb25seVwiXG4gICAgW2Rpc2FibGVDcmVhdGlvbkRhdGVdPVwib2JzLnVwbG9hZEZpZWxkcz8uY3JlYXRpZWRhdHVtPy5yZWFkb25seVwiXG4gICAgW2Rpc2FibGVEZXNjcmlwdGlvbl09XCJvYnMudXBsb2FkRmllbGRzPy5iZXNjaHJpanZpbmc/LnJlYWRvbmx5XCJcbiAgICBbZGlzYWJsZURvY3VtZW50VGl0bGVdPVwib2JzLnVwbG9hZEZpZWxkcz8udGl0ZWw/LnJlYWRvbmx5XCJcbiAgICBbZGlzYWJsZURvY3VtZW50VHlwZV09XCJvYnMudXBsb2FkRmllbGRzPy5pbmZvcm1hdGllb2JqZWN0dHlwZT8ucmVhZG9ubHlcIlxuICAgIFtkaXNhYmxlRmlsZW5hbWVdPVwib2JzLnVwbG9hZEZpZWxkcz8uYmVzdGFuZHNuYWFtPy5yZWFkb25seVwiXG4gICAgW2Rpc2FibGVMYW5ndWFnZV09XCJvYnMudXBsb2FkRmllbGRzPy50YWFsPy5yZWFkb25seVwiXG4gICAgW2Rpc2FibGVTdGF0dXNdPVwib2JzLnVwbG9hZEZpZWxkcz8uc3RhdHVzPy5yZWFkb25seVwiXG4gICAgW2hpZGVGaWVsZHNdPVwib2JzLmhpZGVGaWVsZHNcIlxuICAgIFtvcGVuXT1cInNob3dVcGxvYWRNb2RhbCQgfCBhc3luY1wiXG4gICAgW2Rpc2FibGVkJF09XCJtb2RhbERpc2FibGVkJFwiXG4gICAgW2ZpbGUkXT1cImZpbGVUb0JlVXBsb2FkZWQkXCJcbiAgICBbaXNFZGl0TW9kZV09XCJpc0VkaXRNb2RlJCB8IGFzeW5jXCJcbiAgICBbc3VwcG9ydHNUcmVmd29vcmRlbl09XCJvYnM/LnN1cHBvcnRlZERvY3VtZW50ZW5BcGlGZWF0dXJlcz8uc3VwcG9ydHNUcmVmd29vcmRlblwiXG4gICAgKG1vZGFsQ2xvc2UpPVwiY2xvc2VNZXRhZGF0YU1vZGFsKClcIlxuICAgIChtZXRhZGF0YSk9XCJtZXRhZGF0YVNldCgkZXZlbnQpXCJcbiAgPjwvdmFsdGltby1kb2N1bWVudGVuLWFwaS1tZXRhZGF0YS1tb2RhbD5cbjwvZGl2PlxuXG48dmFsdGltby1jb25maXJtYXRpb24tbW9kYWxcbiAgY29uZmlybUJ1dHRvblRleHRUcmFuc2xhdGlvbktleT1cImRhc2hib2FyZE1hbmFnZW1lbnQuZGVsZXRlTW9kYWwuY29uZmlybVwiXG4gIGNvbnRlbnRUcmFuc2xhdGlvbktleT1cImRvc3NpZXIuZG9jdW1lbnRlbi5kZWxldGVDb25maXJtYXRpb25Nb2RhbC5jb250ZW50XCJcbiAgY29uZmlybUJ1dHRvblR5cGU9XCJkYW5nZXJcIlxuICB0aXRsZVRyYW5zbGF0aW9uS2V5PVwiZG9zc2llci5kb2N1bWVudGVuLmRlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsLnRpdGxlXCJcbiAgW3Nob3dNb2RhbFN1YmplY3QkXT1cInNob3dEZWxldGVDb25maXJtYXRpb25Nb2RhbCRcIlxuICAoY29uZmlybUV2ZW50KT1cImRlbGV0ZURvY3VtZW50KClcIlxuPlxuPC92YWx0aW1vLWNvbmZpcm1hdGlvbi1tb2RhbD5cblxuPG5nLXRlbXBsYXRlICNkb3dubG9hZEJ1dHRvbiBsZXQtaW5kZXg9XCJpbmRleFwiIGxldC1pdGVtPVwiaXRlbVwiPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJ7aXNEb3dubG9hZGluZzogaW5kZXhlc0luY2x1ZGVJbmRleChkb3dubG9hZGluZ0ZpbGVJbmRleGVzJCB8IGFzeW5jLCBpbmRleCl9IGFzIHZhcnNcIlxuICAgIGNsYXNzPVwiZG93bmxvYWQtYnV0dG9uLWNvbnRhaW5lclwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cIiF2YXJzLmlzRG93bmxvYWRpbmdcIlxuICAgICAgY2RzQnV0dG9uPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwic21cIlxuICAgICAgKGNsaWNrKT1cImRvd25sb2FkRG9jdW1lbnQoaXRlbSwgaW5kZXgpXCJcbiAgICA+XG4gICAgICB7eyAnaW50ZXJmYWNlLmRvd25sb2FkJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiZG93bmxvYWRcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxjZHMtbG9hZGluZyBzaXplPVwic21cIiAqbmdJZj1cInZhcnMuaXNEb3dubG9hZGluZ1wiPjwvY2RzLWxvYWRpbmc+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub1Jlc3VsdHM+XG4gIEBpZiAoKGZpbHRlciQgfCBhc3luYyB8IGtleXZhbHVlKT8ubGVuZ3RoKSB7XG4gICAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgICAgW2FjdGlvbl09XCJyZXNldEZpbHRlckJ1dHRvblwiXG4gICAgICBbZGVzY3JpcHRpb25dPVwiJ3pndy5kb2N1bWVudHMubm9SZXN1bHRzLmZpbHRlckRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdGl0bGVdPVwiJ3pndy5kb2N1bWVudHMubm9SZXN1bHRzLmZpbHRlclRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuICB9IEBlbHNlIGlmIChzaG93WmFha0xpbmtXYXJuaW5nICYmIGlzQWRtaW4pIHtcbiAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICBbYWN0aW9uXT1cIm5hdmlnYXRlVG9DYXNlQWRtaW5CdXR0b25cIlxuICAgICAgW2Rlc2NyaXB0aW9uXT1cIidkb3NzaWVyLmRvY3VtZW50ZW4ubm9aYWFrRm91bmQnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFt0aXRsZV09XCInZG9zc2llci5kb2N1bWVudGVuLm5vWmFha0ZvdW5kVGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG4gIH0gQGVsc2Uge1xuICAgIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICAgIFthY3Rpb25dPVwidXBsb2FkQnV0dG9uXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCInZG9zc2llci5kb2N1bWVudGVuLm5vRmlsZXMnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFt0aXRsZV09XCInZG9zc2llci5kb2N1bWVudGVuLm5vRmlsZXNUaXRsZScgfCB0cmFuc2xhdGVcIlxuICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNvdmVyZmxvd0ZpbHRlcj5cbiAgPHZhbHRpbW8tZG9zc2llci1kZXRhaWwtdGFiLWRvY3VtZW50ZW4tYXBpLWZpbHRlclxuICAgIFtwcmVmaWxsRmlsdGVyXT1cImZpbHRlciQgfCBhc3luY1wiXG4gICAgKGZpbHRlckV2ZW50KT1cIm9uRmlsdGVyRXZlbnQoJGV2ZW50KVwiXG4gID48L3ZhbHRpbW8tZG9zc2llci1kZXRhaWwtdGFiLWRvY3VtZW50ZW4tYXBpLWZpbHRlcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcmVzZXRGaWx0ZXJCdXR0b24+XG4gIDxidXR0b24gY2RzQnV0dG9uPVwicHJpbWFyeVwiIChjbGljayk9XCJvbkZpbHRlckV2ZW50KG51bGwpXCI+XG4gICAge3sgJ1Jlc2V0IGZpbHRlcicgfCB0cmFuc2xhdGUgfX1cblxuICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJ0cmFzaC1jYW5cIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3VwbG9hZEJ1dHRvbiBsZXQtZGlzYWJsZWQ9XCJkaXNhYmxlZFwiPlxuICA8YnV0dG9uXG4gICAgW2Rpc2FibGVkXT1cIih1cGxvYWRQcm9jZXNzTGlua2VkU2V0ICYmICF1cGxvYWRQcm9jZXNzTGlua2VkKSB8fCBzaG93WmFha0xpbmtXYXJuaW5nIHx8IGRpc2FibGVkXCJcbiAgICBbdlRvb2x0aXBdPVwiZ2V0VXBsb2FkQnV0dG9uVG9vbHRpcCgpIHwgdHJhbnNsYXRlXCJcbiAgICAoY2xpY2spPVwib25VcGxvYWRCdXR0b25DbGljaygpXCJcbiAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgPlxuICAgIHt7ICdVcGxvYWQnIHwgdHJhbnNsYXRlIH19XG4gICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInVwbG9hZFwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdHJhbnNsYXRpb25UZW1wbGF0ZSBsZXQtZGF0YT1cImRhdGFcIj5cbiAgQGlmIChkYXRhLml0ZW1bZGF0YS5rZXldKSB7XG4gICAge3sgJ2RvY3VtZW50LicgKyBkYXRhLml0ZW1bZGF0YS5rZXldIHwgdHJhbnNsYXRlIH19XG4gIH0gQGVsc2Uge1xuICAgIC1cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNuYXZpZ2F0ZVRvQ2FzZUFkbWluQnV0dG9uPlxuICA8YnV0dG9uIChjbGljayk9XCJvbk5hdmlnYXRlVG9DYXNlQWRtaW5DbGljaygpXCIgY2RzQnV0dG9uPVwicHJpbWFyeVwiPlxuICAgIHt7ICdkb3NzaWVyLmRvY3VtZW50ZW4ubmF2aWdhdGVUb0Nhc2VBZG1pbicgfCB0cmFuc2xhdGUgfX1cblxuICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJzZXR0aW5nc1wiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=