ets-fe-ng-sdk 17.0.71 → 17.0.72

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.
@@ -3,7 +3,7 @@ import { Injectable, inject } from '@angular/core';
3
3
  import { MatDialog as MatDialog } from '@angular/material/dialog';
4
4
  import { MatSnackBar as MatSnackBar } from '@angular/material/snack-bar';
5
5
  import { Title } from '@angular/platform-browser';
6
- import { Router } from '@angular/router';
6
+ import { Router, ActivatedRoute } from '@angular/router';
7
7
  import { ETSReactiveFormInputService as IS1 } from './input.service';
8
8
  import { RouteService } from './route.service';
9
9
  import jfd from 'js-file-download';
@@ -603,6 +603,16 @@ export class UtilityService {
603
603
  trackByID(index, item) {
604
604
  return item?.id;
605
605
  }
606
+ relativeRouter() {
607
+ const router = inject(Router), route = inject(ActivatedRoute);
608
+ return {
609
+ route,
610
+ router,
611
+ navigate: (link, config) => router.navigate([link], { relativeTo: route, ...config }),
612
+ queryParams: route.snapshot.queryParams,
613
+ pathParams: route.snapshot.params,
614
+ };
615
+ }
606
616
  extractUpload(event) {
607
617
  return event.target.files || [];
608
618
  }
@@ -772,4 +782,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImpor
772
782
  type: Injectable,
773
783
  args: [{ providedIn: 'root' }]
774
784
  }], ctorParameters: () => [] });
775
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEYsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsSUFBSSxTQUFTLEVBQXNDLE1BQU0sMEJBQTBCLENBQUM7QUFDdEcsT0FBTyxFQUFFLFdBQVcsSUFBSSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBb0IsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsMkJBQTJCLElBQUksR0FBRyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBc0MsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdD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QUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoSCxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLFFBQVEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWhDLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN0RCxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsR0FBRyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsZUFBZSxDQUFDLFFBQWdCO1FBQzlCLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDNUIsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxRCxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBQ0QsYUFBYSxDQUFJLEdBQVE7UUFDdkIsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2YsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUU7WUFDckIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNsRCxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FB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R0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXpyQlUsY0FBYztrSEFBZCxjQUFjLGNBREQsTUFBTTs7MkZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VycmVuY3lQaXBlLCBEYXRlUGlwZSwgTG9jYXRpb24sIFRpdGxlQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyBhcyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZyBhcyBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgYXMgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvbkV4dHJhcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBFVFNSZWFjdGl2ZUZvcm1JbnB1dFNlcnZpY2UgYXMgSVMxIH0gZnJvbSAnLi9pbnB1dC5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlU2VydmljZSB9IGZyb20gJy4vcm91dGUuc2VydmljZSc7XG5pbXBvcnQgamZkIGZyb20gJ2pzLWZpbGUtZG93bmxvYWQnO1xuaW1wb3J0IHsgUGFnZUxvYWRlclNlcnZpY2UgfSBmcm9tICcuL3BhZ2UtbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlnLCBDb25maWcgYXMgY29uZmlnIH0gZnJvbSAnLi4vY29uZmlncy9pbmRleC5jb25maWcnO1xuaW1wb3J0IHsgQXBwUm91dGVCYXNlIH0gZnJvbSAnLi4vU2hhcmVkL21vZGVscy9Sb3V0ZUl0ZW0uY2xhc3MnO1xuaW1wb3J0IHsgc2F2ZUFzIH0gZnJvbSAnZmlsZS1zYXZlcic7XG5pbXBvcnQgeyBFVmFsaWRhdGlvblR5cGUsIElTdHJpY3RGb3JtR3JvdXAsIFN0YXR1cywgVGFibGVDb2wgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IFBhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9wYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFVudHlwZWRGb3JtQXJyYXkgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vUmV1c2FibGVzL3JldXNhYmxlLXBhZ2VzL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIGlzT2JzZXJ2YWJsZSwgbGFzdFZhbHVlRnJvbSwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBSZXBsYXlTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVFVFNQYWdlQnRuSUQgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL0lNZW51SXRlbSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFNES0Vudmlyb25tZW50IH0gZnJvbSAnLi4vU2hhcmVkL21vZGVscy9lbnZpcm9ubWVudC5tb2RlbCc7XG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBEZWJvdW5jZXJTZXJ2aWNlIH0gZnJvbSAnLi9kZWJvdW5jZXIuc2VydmljZSc7XG5pbXBvcnQgeyBJRm9ybVNjaGVtYSB9IGZyb20gJy4uL1NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgUGFwYSBmcm9tICdwYXBhcGFyc2UnO1xuaW1wb3J0IHsgSUluZm9EaWFsb2dCdG4gfSBmcm9tICcuLi9TaGFyZWQvY29tcG9uZW50cy9pbmZvLWRpYWxvZy9pbmZvLWRpYWxvZy5jb21wb25lbnQnO1xuZGVjbGFyZSBjb25zdCAkOiBhbnk7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVXRpbGl0eVNlcnZpY2U8VEVudmlyb25tZW50IGV4dGVuZHMgU0RLRW52aXJvbm1lbnQgPSBTREtFbnZpcm9ubWVudD4ge1xuICByOiBBcHBSb3V0ZUJhc2U7XG4gIGRvd25sb2FkZXIgPSBqZmQ7XG4gIGVWYWxpZGF0aW9uVHlwZSA9IEVWYWxpZGF0aW9uVHlwZTtcbiAgY29uZmlnID0gQ29uZmlnO1xuICBlbnZpcm9ubWVudDogVEVudmlyb25tZW50ID0gZW52aXJvbm1lbnQgYXMgYW55O1xuICBwYmlkID0gRUVUU1BhZ2VCdG5JRDtcbiAgJDogYW55O1xuICBpc01vYmlsZTogYm9vbGVhbjtcbiAgcGFnZVNpemVPcHRpb25zID0gWzUsIDEwLCAxNSwgMjAsIDUwLCAxMDAsIDIwMCwgNTAwLCAxMDAwXTtcbiAgZGF0ZVBpcGVEYXRlID0gJ0VFLCBNTU1NIGQsIHknO1xuICBkYXRlUGlwZURhdGVMZWFuID0gJ0VFLCBNTU0gZCwgeSc7XG4gIGRhdGVQaXBlRGF0ZVRpbWVMZWFuID0gJ0VFLCBNTU0gZCwgeSBoaDptbSBhJztcbiAgcmVhZG9ubHkgY3VzdG9tSURGaWVsZCA9ICdfX2lkJztcbiAgcmVhZG9ubHkgZGVsaW1pdGVyID0gYH5+fi8vfn5+YDtcbiAgLyoqXG4gICAqIEVtaXRzIHRydWUgaWYgbW9iaWxlXG4gICAqL1xuICBtb2JpbGVRdWVyeUNoYW5nZWQgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigpO1xuICBwdWJsaWMgZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XG4gIHB1YmxpYyBzbmFja0JhciA9IGluamVjdChNYXRTbmFja0Jhcik7XG4gIHB1YmxpYyByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHVibGljIHRpdGxlUyA9IGluamVjdChUaXRsZSk7XG4gIHB1YmxpYyBsb2NhdGlvbiA9IGluamVjdChMb2NhdGlvbik7XG4gIHB1YmxpYyBpbnB1dFNlcnZpY2UgPSBpbmplY3QoSVMxKTtcbiAgcHVibGljIHJvdXRlU2VydmljZSA9IGluamVjdChSb3V0ZVNlcnZpY2UpO1xuICBwdWJsaWMgcFMgPSBpbmplY3QoUGFnZUxvYWRlclNlcnZpY2UpO1xuICBwdWJsaWMgY3VycmVuY3lQaXBlID0gaW5qZWN0KEN1cnJlbmN5UGlwZSk7XG4gIHB1YmxpYyB0aXRsZUNhc2VQaXBlID0gaW5qZWN0KFRpdGxlQ2FzZVBpcGUpO1xuICBwdWJsaWMgbG9nZ2VyU2VydmljZSA9IGluamVjdChMb2dnZXJTZXJ2aWNlKTtcbiAgcHVibGljIHBhZ2VTID0gaW5qZWN0KFBhZ2VTZXJ2aWNlKTtcbiAgcHVibGljIHJlc3BvbnNpdmUgPSBpbmplY3QoQnJlYWtwb2ludE9ic2VydmVyKTtcbiAgcHVibGljIGRhdGVQaXBlID0gaW5qZWN0KERhdGVQaXBlKTtcbiAgcHVibGljIGRlYm91bmNlclNlcnZpY2UgPSBpbmplY3QoRGVib3VuY2VyU2VydmljZSk7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucmVzcG9uc2l2ZS5vYnNlcnZlKFtCcmVha3BvaW50cy5IYW5kc2V0UG9ydHJhaXRdKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgY29uc3QgYnJlYWtwb2ludHMgPSByZXN1bHQuYnJlYWtwb2ludHM7XG5cbiAgICAgIGlmIChicmVha3BvaW50c1tCcmVha3BvaW50cy5IYW5kc2V0UG9ydHJhaXRdKSB7XG4gICAgICAgIHRoaXMuaXNNb2JpbGUgPSB0cnVlO1xuICAgICAgICB0aGlzLm1vYmlsZVF1ZXJ5Q2hhbmdlZC5uZXh0KHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pc01vYmlsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1vYmlsZVF1ZXJ5Q2hhbmdlZC5uZXh0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBpZiAoJCkgdGhpcy4kID0gJDtcbiAgfVxuXG4gIGJhY2sgPSAoKSA9PiB0aGlzLmxvY2F0aW9uLmJhY2soKTtcblxuICBvbmx5T25lSW5wdXQoaW5wdXRzOiBGb3JtQ29udHJvbFtdKSB7XG4gICAgY29uc3QgbklucHV0cyA9IGlucHV0cz8ubWFwKChpbnApID0+ICh7IGlkOiB0aGlzLmdlblJhbmRvbUlELCBpbnAgfSkpIHx8IFtdO1xuICAgIHJldHVybiBtZXJnZSguLi5uSW5wdXRzLm1hcCgoaSkgPT4gaS5pbnAudmFsdWVDaGFuZ2VzLnBpcGUobWFwKCh2YWwpID0+ICh7IGlkOiBpLmlkLCB2YWwgfSkpKSkpLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgLy8gZGVidWdnZXJcbiAgICAgIGlmIChyLnZhbCkgbklucHV0cy5maWx0ZXIoKHgpID0+IHguaWQgIT0gci5pZCkuZm9yRWFjaCgoeCkgPT4geC5pbnAuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSkpO1xuICAgICAgZWxzZSBuSW5wdXRzLmZpbHRlcigoeCkgPT4geC5pZCAhPSByLmlkKS5mb3JFYWNoKCh4KSA9PiB4LmlucC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGNvcHlQYXlsb2FkKHBheWxvYWQpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCg8U0RLRW52aXJvbm1lbnQ+dGhpcy5lbnZpcm9ubWVudCkuZGVidWcpIHtcbiAgICAgICAgY29uc3QgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XG4gICAgICAgIGVsZW0udmFsdWUgPSBKU09OLnN0cmluZ2lmeShwYXlsb2FkKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtKTtcbiAgICAgICAgZWxlbS5zZWxlY3QoKTtcbiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgfVxuICB4T3JZID0gKHgsIHkgPSAnLScpID0+IGAke3ggPT0gbnVsbCA/IHkgOiB4fWA7XG4gIHRvVGl0bGVDYXNlKHRleHQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnRpdGxlQ2FzZVBpcGUudHJhbnNmb3JtKHRleHQpO1xuICB9XG4gIC8qKlxuICAgKiBDb252ZXJ0IERhdGUgc3RyaW5nIHRvIERhdGUgVGltZSBzdHJpbmdcbiAgICogQHBhcmFtIGRhdGVTdHIgRGF0ZSBzdHJpbmdcbiAgICogQGV4YW1wbGUgJzIwMjItMDEtMjUnXG4gICAqIEBwYXJhbSBjb25maWcgQ29uZmlndXJhdGlvbiBmb3IgdGhlIGNvbnZlcnNpb25cbiAgICogQHJldHVybnMgUmV0dXJucyBhIERhdGUgVGltZSBzdHJpbmdcbiAgICogQGV4YW1wbGUgJzIwMjItMDEtMjVUMDA6MDA6MDBaJyBvciAnMjAyMi0wMS0yNSAwMDowMDowMCdcbiAgICovXG4gIGRhdGVUb0RhdGVUaW1lID0gKFxuICAgIGRhdGVTdHI6IHN0cmluZyxcbiAgICBjb25maWc/OiB7XG4gICAgICAvKipcbiAgICAgICAqIFVzZSB0aGUgeXl5eS1tbS1kZCBoaDptbTpzcyBmb3JtYXRcbiAgICAgICAqL1xuICAgICAgb21pdFQ/OiBib29sZWFuO1xuICAgICAgLyoqVGltZSB0byBhcHBlbmQgdG8gZGF0ZS4gQGV4YW1wbGUgYDEyOjAwOjAwWmAgKi9cbiAgICAgIHRpbWU/OiBzdHJpbmc7XG4gICAgfSxcbiAgKSA9PiB7XG4gICAgcmV0dXJuICFkYXRlU3RyXG4gICAgICA/IG51bGxcbiAgICAgIDogZGF0ZVN0clsxMF0gPT0gJ1QnXG4gICAgICAgID8gZGF0ZVN0clxuICAgICAgICA6IGRhdGVTdHIgKyAoISFjb25maWc/Lm9taXRUID8gYCAke2NvbmZpZz8udGltZSB8fCAnMDA6MDA6MDAnfWAgOiBgVCR7Y29uZmlnPy50aW1lIHx8ICcwMDowMDowMFonfWApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBTZXQgYW4gT2JqZWN0J3MgZmllbGQgaWYgdGhlIG9iamVjdCBleGlzdHMgb3IgZG9uJ3QgaWYgdGhlIG9iamVjdCBkb2Vzbid0XG4gICAqIEBwYXJhbSBvYmogT2JqZWN0IGhvbGRpbmcgdGhlIGZpZWxkXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgTmFtZSBvZiB0aGUgZmllbGQgdG8gc2V0XG4gICAqIEBwYXJhbSB2YWwgVmFsdWUgdG8gc2V0IHRoZSBmaWVsZCB3aXRoXG4gICAqIEByZXR1cm5zIFJldHVybnMgdGhlIG9iamVjdCBob2xkaW5nIHRoZSBkYXRhXG4gICAqL1xuICBzZXR0ZXJXaXRoTnVsbDxUPihvYmo6IFQsIGt2cHM6IFBhcnRpYWw8VD4pIHtcbiAgICBpZiAoIW9iaikgcmV0dXJuIG51bGw7XG4gICAgZm9yIChjb25zdCBrZXkgaW4ga3Zwcykge1xuICAgICAgb2JqW2tleV0gPSBrdnBzW2tleV07XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICAvKipcbiAgICogKFNldCBhbiBPYmplY3QncyBmaWVsZCBpZiB0aGUgb2JqZWN0IGV4aXN0cyBvciBkb24ndCBpZiB0aGUgb2JqZWN0IGRvZXNuJ3QpIGZvciBtdWx0aXBsZSBlbnRyaWVzXG4gICAqIEBwYXJhbSBpdGVtcyBBcnJheSBvZiBvYmplY3RzIGFuZCB0aGVpciBtb2RpZmljYXRpb25zXG4gICAqL1xuICBzZXR0ZXJXaXRoTnVsbEFycmF5PFQ+KGl0ZW1zOiB7IG9iajogVDsga3ZwczogUGFydGlhbDxUPiB9W10pIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIHRoaXMuc2V0dGVyV2l0aE51bGwoaXRlbS5vYmosIGl0ZW0ua3Zwcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGRlbGV0aW9uIG9mIHJvd3MgZnJvbSBhIEZvcm1BcnJheVxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgdGhlIHJvdyB0byBkZWxldGVcbiAgICogQHBhcmFtIGZhIFRoZSBGb3JtQXJyYXkgdGhhdCBob2xkcyB0aGUgcm93c1xuICAgKiBAcGFyYW0gZGVsZXRlU2VydmljZSBUaGUgZGVsZXRpb24gc2VydmljZSB0byBiZSBjYWxsZWQgKEl0IHNob3VsZCBiZSBhbiBhbm9ueW1vdXMgZnVuY3Rpb24pXG4gICAqIEBwYXJhbSBhZGRSb3dGdW5jIFRoZSBmdW5jdGlvbiAoYW5vbnltb3VzKSB0aGF0IGFkZHMgYSBuZXcgcm93IHRvIHRoZSBGb3JtQXJyYXlcbiAgICogQHBhcmFtIGVtaXRFdmVudCBTcGVjaWZ5IHdoZXRoZXIgdG8gZW1pdCBhbiBldmVudCB3aGVuIG1hbmlwdWxhdGluZyB0aGUgRm9ybUFycmF5XG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBoYW5kbGVGb3JtUm93RGVsZXRlID0gKFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgZmE6IFVudHlwZWRGb3JtQXJyYXksXG4gICAgZGVsZXRlU2VydmljZTogKC4uLmFyZ3MpID0+IFByb21pc2U8YW55PiB8IE9ic2VydmFibGU8YW55PixcbiAgICBhZGRSb3dGdW5jOiAoLi4uYXJncykgPT4gYW55LFxuICAgIGV4dHJhQ29uZmlnPzoge1xuICAgICAgZG9udEVtaXRFdmVudD86IGJvb2xlYW47XG4gICAgICBvbkRlbGV0ZT86IChyZXMpID0+IGFueTtcbiAgICB9LFxuICApID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSkgPT4ge1xuICAgICAgY29uc3QgaWQgPSBjbG9uZURlZXAoZmEuY29udHJvbHNbaW5kZXhdPy52YWx1ZT8uaWQpO1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICBpZiAoZmEuY29udHJvbHMubGVuZ3RoID09IDEgJiYgaWQpIHtcbiAgICAgICAgZmEucmVtb3ZlQXQoaW5kZXgsIHsgZW1pdEV2ZW50OiAhZXh0cmFDb25maWc/LmRvbnRFbWl0RXZlbnQgfSk7XG4gICAgICAgIGFkZFJvd0Z1bmMoKTtcbiAgICAgIH0gZWxzZSBpZiAoZmEuY29udHJvbHMubGVuZ3RoID4gMSkgZmEucmVtb3ZlQXQoaW5kZXgsIHsgZW1pdEV2ZW50OiAhZXh0cmFDb25maWc/LmRvbnRFbWl0RXZlbnQgfSk7XG4gICAgICBlbHNlIGlmIChmYS5jb250cm9scy5sZW5ndGggPT0gMSkgZmEuY29udHJvbHNbMF0ucmVzZXQoKTtcblxuICAgICAgaWYgKGlkICYmIGRlbGV0ZVNlcnZpY2UpIHtcbiAgICAgICAgY29uc3QgcmVxID0gZGVsZXRlU2VydmljZShpZCk7XG4gICAgICAgIGlmIChyZXFbJ3RvUHJvbWlzZSddKSB7XG4gICAgICAgICAgcmVzb2x2ZShsYXN0VmFsdWVGcm9tKHJlcSBhcyBPYnNlcnZhYmxlPGFueT4pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKHJlcSBhcyBhbnkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgfVxuICAgIH0pLnRoZW4oKHIpID0+IHtcbiAgICAgIGV4dHJhQ29uZmlnPy5vbkRlbGV0ZShyKTtcbiAgICAgIHJldHVybiByO1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBkZWxldGlvbiBvZiByb3dzIGZyb20gYW4gYXJyYXlcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IG9mIHRoZSByb3cgdG8gZGVsZXRlXG4gICAqIEBwYXJhbSBhcnIgVGhlIGFycmF5IHRoYXQgaG9sZHMgdGhlIHJvd3NcbiAgICogQHBhcmFtIGRlbGV0ZVNlcnZpY2UgVGhlIGRlbGV0aW9uIHNlcnZpY2UgdG8gYmUgY2FsbGVkIChJdCBzaG91bGQgYmUgYW4gYW5vbnltb3VzIGZ1bmN0aW9uKVxuICAgKiBAcGFyYW0gYWRkUm93RnVuYyBUaGUgZnVuY3Rpb24gKGFub255bW91cykgdGhhdCBhZGRzIGEgbmV3IHJvdyB0byB0aGUgYXJyYXlcbiAgICogQHBhcmFtIGNiIFRoZSBmdW5jdGlvbiB0byBjYWxsYmFjayB3aXRoIHRoZSByZXNwb25zZSBvZiB0aGUgZGVsZXRpb24gc2VydmljZSBhcyB0aGUgaW5wdXQgcGFyYW1ldGVyXG4gICAqL1xuICBoYW5kbGVSb3dEZWxldGUgPSBhc3luYyA8VD4oXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBhcnI6IGFueVtdLFxuICAgIGRlbGV0ZVNlcnZpY2U6ICguLi5hcmdzKSA9PiBQcm9taXNlPFQ+IHwgT2JzZXJ2YWJsZTxUPixcbiAgICBhZGRSb3dGdW5jOiAoLi4uYXJncykgPT4gYW55LFxuICAgIGNiPzogKGFueSkgPT4gYW55LFxuICApID0+IHtcbiAgICBjb25zdCBpZCA9IGFycltpbmRleF0/LmlkO1xuICAgIC8vIGRlYnVnZ2VyO1xuXG4gICAgaWYgKGlkICYmIGRlbGV0ZVNlcnZpY2UpIHtcbiAgICAgIGNvbnN0IHJlcSA9IGRlbGV0ZVNlcnZpY2UoaWQpO1xuICAgICAgaWYgKHR5cGVvZiByZXFbJ3RvUHJvbWlzZSddID09ICdmdW5jdGlvbicpIGNiID8gY2IoYXdhaXQgcmVxWyd0b1Byb21pc2UnXSgpKSA6IHJlcVsndG9Qcm9taXNlJ10oKTtcbiAgICAgIGVsc2UgY2IgPyBjYihhd2FpdCByZXEpIDogbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoYXJyLmxlbmd0aCA9PSAxKSB7XG4gICAgICBhcnIuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIGFkZFJvd0Z1bmMoKTtcbiAgICB9IGVsc2UgaWYgKGFyci5sZW5ndGggPiAxKSBhcnIuc3BsaWNlKGluZGV4LCAxKTtcbiAgfTtcbiAgLyoqXG4gICAqIFRvIGhhbmRsZSB0aGUgcGF0Y2hpbmcgb2YgYSBGb3JtQXJyYXlcbiAgICogQHBhcmFtIGFyciBUaGUgYXJyYXkgdGhhdCBjb250YWlucyB0aGUgZGF0YVxuICAgKiBAcGFyYW0gYWRkRnVuYyBUaGUgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhZGRpdGlvbiBvZiBzaW5nbGUgZW50cmllc1xuICAgKiBAcGFyYW0gZm9ybUFyciBUaGUgRm9ybUFycmF5IHRoYXQgd2lsbCBob2xkIHRoZSBhcnJheSdzIGRhdGFcbiAgICovXG4gIGluaXRQYXRjaEZvcm1BcnJheSA9IDxUPihhcnI6IFRbXSwgYWRkRnVuYzogKGk6IG51bWJlciwgZGF0YT86IFQsIGZvcm1BcnI/OiBGb3JtQXJyYXkpID0+IHZvaWQsIGZvcm1BcnI6IEZvcm1BcnJheSkgPT4ge1xuICAgIC8vIGRlYnVnZ2VyXG4gICAgaWYgKGFycj8ubGVuZ3RoKSB7XG4gICAgICBpZiAoZm9ybUFyci5sZW5ndGgpIGZvcm1BcnIuY2xlYXIoKTtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcnIpIHtcbiAgICAgICAgYWRkRnVuYyhmb3JtQXJyLmxlbmd0aCwgaXRlbSwgZm9ybUFycik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghZm9ybUFyci5sZW5ndGgpIGFkZEZ1bmMoZm9ybUFyci5sZW5ndGgsIG51bGwsIGZvcm1BcnIpO1xuICAgIH1cbiAgfTtcbiAgcHJpdmF0ZSBpc1Byb21pc2UgPSAoZnVuYykgPT4ge1xuICAgIHJldHVybiB0eXBlb2YgZnVuYyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGZ1bmMudGhlbiA9PT0gJ2Z1bmN0aW9uJztcbiAgfTtcbiAgaXNBc3luYyA9IChmdW5jKSA9PiB7XG4gICAgcmV0dXJuIGZ1bmMuY29uc3RydWN0b3IubmFtZSA9PT0gJ0FzeW5jRnVuY3Rpb24nIHx8ICh0eXBlb2YgZnVuYyA9PT0gJ2Z1bmN0aW9uJyAmJiB0aGlzLmlzUHJvbWlzZShmdW5jKCkpKTtcbiAgfTtcblxuICBpc09ic2VydmFibGUgPSA8VD4oZnVuYykgPT4ge1xuICAgIC8vIHJldHVybiB0eXBlb2YgZnVuYyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGZ1bmMuc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nO1xuICAgIC8vIHJldHVybiB0eXBlb2YgZnVuYyA9PT0gJ29iamVjdCcgJiYgZnVuYyBpbnN0YW5jZW9mIE9ic2VydmFibGU7XG4gICAgLy8gcmV0dXJuIHR5cGVvZiBmdW5jID09PSAnb2JqZWN0JyAmJiBmdW5jIGluc3RhbmNlb2YgT2JzZXJ2YWJsZTxUPjtcbiAgICByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdvYmplY3QnICYmIGlzT2JzZXJ2YWJsZShmdW5jKTtcbiAgICByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBmdW5jLnRvUHJvbWlzZSA9PT0gJ2Z1bmN0aW9uJztcbiAgfTtcbiAgcHJvbWlzaWZ5VmFsID0gPFQ+KHZhbDogVCB8IFByb21pc2U8VD4gfCBPYnNlcnZhYmxlPFQ+KSA9PiB7XG4gICAgaWYgKHRoaXMuaXNBc3luYyh2YWwpKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbCBhcyBQcm9taXNlPFQ+KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNPYnNlcnZhYmxlKHZhbCkpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobGFzdFZhbHVlRnJvbSh2YWwgYXMgT2JzZXJ2YWJsZTxUPikpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbCBhcyBUKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBhcnIgQXJyYXkgb2Ygb2JzZXJ2YWJsZXMgdG8gZmV0Y2hcbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgdGhlIHJlc3BvbnNlcyBtZXJnZWQgdG9nZXRoZXIuIEl0IGVtaXRzIHRoZSBtZXJnZWQgcmVzcG9uc2VzIGFzIHRoZXkgYXJlIGZldGNoZWQgYW5kIGNsb3NlcyBvbmNlIGFsbGwgdGhlIHJlc3BvbnNlcyBoYXZlIGJlZW4gZmV0Y2hlZFxuICAgKi9cbiAgbWVyZ2VBcnJPYnNlcnZhYmxlcyA9IDxUPihhcnI6IHsgJGZ1bmM6IE9ic2VydmFibGU8VFtdPiB9W10pID0+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8VFtdPigoc3ViKSA9PiB7XG4gICAgICBjb25zdCByZXQ6IFRbXSA9IFtdO1xuICAgICAgbGV0IHJlc3BvbnNlQ291bnQgPSAwO1xuICAgICAgbWVyZ2UoXG4gICAgICAgIC4uLmFyci5tYXAoXG4gICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICB4LiRmdW5jPy5waXBlKFxuICAgICAgICAgICAgICBjYXRjaEVycm9yKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgdGFwKChyKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VDb3VudCsrO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICByZXQucHVzaCguLi5yKTtcbiAgICAgICAgc3ViLm5leHQocmV0KTtcbiAgICAgICAgaWYgKHJlc3BvbnNlQ291bnQgPT0gYXJyLmZpbHRlcigoeCkgPT4geC4kZnVuYykubGVuZ3RoKSB7XG4gICAgICAgICAgLy8gZGVidWdnZXJcbiAgICAgICAgICBzdWIuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG4gIHJlbW92ZUR1cGxpY2F0ZTxUPihsaXN0OiBUW10sIGtleUZpZWxkID0gJ2NvZGUnKSB7XG4gICAgaWYgKCFsaXN0KSByZXR1cm4gbnVsbDtcbiAgICBsaXN0ID0gbGlzdC5maWx0ZXIoKHgpID0+IHgpO1xuICAgIGNvbnN0IHJldDogVFtdID0gW10sXG4gICAgICBkdXBsaWNhdGVNYXA6IHsgW3g6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGxpc3QpIHtcbiAgICAgIGlmIChkdXBsaWNhdGVNYXBbaXRlbVtrZXlGaWVsZF1dKSBjb250aW51ZTtcbiAgICAgIHJldC5wdXNoKGl0ZW0pO1xuICAgICAgZHVwbGljYXRlTWFwW2l0ZW1ba2V5RmllbGRdXSA9IGl0ZW07XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cbiAgZ2V0IGdlblJhbmRvbUlEKCkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMDAwMDAwMDAwMDAwMDAwKTtcbiAgfVxuICBzdG9yZVBheWxvYWQgPSB0aGlzLmxvZ2dlclNlcnZpY2UuYWRkTG9nO1xuICBvYmpJc0VtcHR5ID0gKG9iaiwgZXhjbHVzaW9uRmllbGRzPzogc3RyaW5nW10pID0+IHtcbiAgICBpZiAoIW9iaikgcmV0dXJuIHRydWU7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoZXhjbHVzaW9uRmllbGRzPy5pbmNsdWRlcyhrZXkpKSBjb250aW51ZTtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgIGlmIChvYmpba2V5XSkgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbiAgZGF0YUdlbiA9IDxUID0gYW55PihrZXlzOiBzdHJpbmdbXSwgbGVuZ3RoID0gMTApID0+IHtcbiAgICBjb25zdCByZXQ6IGFueVtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgbGV0IHQ6IGFueSA9IHt9O1xuICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICB0W2tleV0gPSB0aGlzLnRleHRHZW4oKTtcbiAgICAgIH1cbiAgICAgIHJldC5wdXNoKHQpO1xuICAgIH1cbiAgICByZXR1cm4gcmV0IGFzIFRbXTtcbiAgfTtcbiAgdGV4dEdlbiA9ICgpID0+ICdyYW5kb20nICsgTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwMCk7XG4gIHRyYWNrQnlDb2RlKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xuICAgIHJldHVybiBpdGVtPy5jb2RlO1xuICB9XG4gIHRyYWNrQnlJRChpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcbiAgICByZXR1cm4gaXRlbT8uaWQ7XG4gIH1cbiAgZGlhbG9nT3BlbmVyID0gKGNvbXA6IGFueSwgY29uZmlnOiBNYXREaWFsb2dDb25maWcsIHZhbHVlQ0I6IChyKSA9PiBhbnksIG5vVmFsdWVDQj86IGFueSkgPT5cbiAgICB0aGlzLmRpYWxvZ09wZW5lclJlZihjb21wLCBjb25maWcpXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICBpZiAociAhPSBudWxsICYmIHIgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdmFsdWVDQihyKTtcbiAgICAgICAgfSBlbHNlIGlmIChub1ZhbHVlQ0IpIHtcbiAgICAgICAgICBub1ZhbHVlQ0IoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIGRpYWxvZ09wZW5lclJlZiA9IChjb21wOiBhbnksIGNvbmZpZzogTWF0RGlhbG9nQ29uZmlnKSA9PiB0aGlzLmRpYWxvZy5vcGVuKGNvbXAsIGNvbmZpZyk7XG4gIGZpbmRMYWJlbEJ5SXRlbSA9IChpdGVtLCBhcnI6IGFueVtdLCBsYWJlbEZpZWxkPzogc3RyaW5nLCBrZXlGaWVsZDogc3RyaW5nID0gJ2NvZGUnKSA9PiB7XG4gICAgaWYgKCFpdGVtKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBvYmogPSBhcnI/LmZpbmQoKHgpID0+IHhba2V5RmllbGRdID09IGl0ZW0pO1xuICAgIGlmICghb2JqKSByZXR1cm4gaXRlbTtcbiAgICBlbHNlIHJldHVybiBgJHtpdGVtfSAtICR7b2JqW2xhYmVsRmllbGQgfHwgJ3RpdGxlJ10gfHwgb2JqW2xhYmVsRmllbGQgfHwgJ2Rlc2NyaXB0aW9uJ119YDtcbiAgfTtcblxuICBmb3JtRmllbGRzRnJvbUFyciA9IHRoaXMuaW5wdXRTZXJ2aWNlLmZvcm1GaWVsZHNGcm9tRkNJbnB1dHNBcnI7XG4gIG9ialRvRm9ybUNvbnRyb2xzID0gdGhpcy5pbnB1dFNlcnZpY2UuZm9ybUZpZWxkc0Zyb21PYmo7XG4gIGZvcm1TY2hlbWFUb0Zvcm1Db250cm9scyA9IHRoaXMuaW5wdXRTZXJ2aWNlLmZvcm1TY2hlbWFUb0Zvcm1Db250cm9scztcblxuICBiaW5kRm9ybUNvbnRyb2xUb0lucHV0cyA9IHRoaXMuaW5wdXRTZXJ2aWNlLmJpbmRGb3JtQ29udHJvbFRvSW5wdXRzO1xuXG4gIGdvID0gKHZhbHVlOiBzdHJpbmcsIGV4dHJhPzogTmF2aWdhdGlvbkV4dHJhcykgPT4ge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt2YWx1ZV0sIGV4dHJhKTtcbiAgfTtcbiAgLyoqXG4gICAqIFJvdXRlIHRvIGNvbXBvbmVudFxuICAgKiBAcGFyYW0gcm91dGUgUm91dGUgb2YgcGF0aCB0byBjb21wb25lbnRcbiAgICogQHBhcmFtIGV4dHJhXG4gICAqL1xuICBnb1IgPSAocm91dGU6IHN0cmluZywgZXh0cmE/OiBOYXZpZ2F0aW9uRXh0cmFzKSA9PiB7XG4gICAgaWYgKCEoPFNES0Vudmlyb25tZW50PnRoaXMuZW52aXJvbm1lbnQpLmFjdGl2YXRlZFJvdXRlKSBkZWJ1Z2dlcjtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcm91dGVdLCB7XG4gICAgICByZWxhdGl2ZVRvOiAoPFNES0Vudmlyb25tZW50PnRoaXMuZW52aXJvbm1lbnQpLmFjdGl2YXRlZFJvdXRlLFxuICAgICAgLi4uZXh0cmEsXG4gICAgfSk7XG4gICAgLy8gZGVidWdnZXI7XG4gIH07XG4gIG1vbmV5UGFyc2VyID0gKGFtb3VudDogc3RyaW5nIHwgbnVtYmVyLCBjdXJyZW5jeSA9ICcgJykgPT4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbmN5UGlwZS50cmFuc2Zvcm0oYW1vdW50LCBjdXJyZW5jeSB8fCAnICcpO1xuICB9O1xuICBleHRyYWN0VXBsb2FkKGV2ZW50OiBhbnkpIHtcbiAgICByZXR1cm4gKGV2ZW50LnRhcmdldC5maWxlcyBhcyBGaWxlW10pIHx8IFtdO1xuICB9XG5cbiAgc2Vjb25kc1RvSG91ck1pblNlYyA9IChzZWNvbmRzOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIXNlY29uZHMpIHJldHVybiB7IHNlY3M6IG51bGwsIGhvdXJzOiBudWxsLCBtaW5zOiBudWxsIH07XG4gICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKHNlY29uZHMgLyAzNjAwKSB8fCAwLFxuICAgICAgc2Vjb25kc0V4SG91cnMgPSBzZWNvbmRzICUgMzYwMCB8fCAwLFxuICAgICAgbWlucyA9IE1hdGguZmxvb3Ioc2Vjb25kc0V4SG91cnMgLyA2MCkgfHwgMCxcbiAgICAgIHNlY3MgPSBzZWNvbmRzRXhIb3VycyAlIDYwO1xuICAgIHJldHVybiB7IGhvdXJzLCBtaW5zLCBzZWNzIH07XG4gIH07XG4gIG1pbnV0ZXNUb0RheUhvdXJNaW4gPSAobWludXRlczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFtaW51dGVzKSByZXR1cm4geyBkYXlzOiBudWxsLCBob3VyczogbnVsbCwgbWluczogbnVsbCB9O1xuICAgIGNvbnN0IGRheXMgPSBNYXRoLmZsb29yKG1pbnV0ZXMgLyAxNDQwKSB8fCAwLFxuICAgICAgbWluaXV0ZXNFeERheXMgPSBtaW51dGVzICUgMTQ0MCB8fCAwLFxuICAgICAgaG91cnMgPSBNYXRoLmZsb29yKG1pbml1dGVzRXhEYXlzIC8gNjApIHx8IDAsXG4gICAgICBtaW5zID0gbWluaXV0ZXNFeERheXMgJSA2MCB8fCAwO1xuICAgIHJldHVybiB7IGRheXMsIGhvdXJzLCBtaW5zIH07XG4gIH07XG4gIG1pbnV0ZXNUb0RheUhvdXJNaW5TdHIgPSAobWludXRlczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFtaW51dGVzKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCByZXQgPSB0aGlzLm1pbnV0ZXNUb0RheUhvdXJNaW4obWludXRlcyk7XG4gICAgcmV0dXJuIGAke3JldC5kYXlzfSAke3JldC5ob3Vyc306JHtyZXQubWluc31gLnRyaW0oKTtcbiAgfTtcbiAgbWludXRlc1RvRGF5SG91ck1pblN0cjIgPSAobWludXRlczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFtaW51dGVzKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCByZXQgPSB0aGlzLm1pbnV0ZXNUb0RheUhvdXJNaW4obWludXRlcyk7XG4gICAgcmV0dXJuIGAke3JldC5kYXlzfWRheXMgJHtyZXQuaG91cnN9aHJzICR7cmV0Lm1pbnN9bWluc2AudHJpbSgpO1xuICB9O1xuICBkYXlIb3VyTWluVG9Ib3VyTWludXRlcyA9IChkeXM6IG51bWJlciwgaHJzOiBudW1iZXIsIG1pbnM6IG51bWJlcikgPT4ge1xuICAgIGlmICghZHlzICYmICFocnMgJiYgIW1pbnMpIHJldHVybiAnJztcbiAgICBjb25zdCBkeXNUb0hycyA9IChkeXMgfHwgMCkgKiAyNDtcbiAgICBocnMgPSAoK2hycyB8fCAwKSArIGR5c1RvSHJzO1xuICAgIHJldHVybiAoaHJzIHx8ICcwMCcpICsgJzonICsgKG1pbnMgfHwgJzAwJyk7XG4gIH07XG4gIGRpc2FibGVPckVuYWJsZUlucHV0cyA9IChjb250cm9sczogQWJzdHJhY3RDb250cm9sW10sIGRpc2FibGU6IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoZGlzYWJsZSkgdGhpcy5kaXNhYmxlSW5wdXRzKGNvbnRyb2xzKTtcbiAgICBlbHNlIHRoaXMuZW5hYmxlSW5wdXRzKGNvbnRyb2xzKTtcbiAgfTtcbiAgZGlzYWJsZUlucHV0cyA9IChjb250cm9sczogQWJzdHJhY3RDb250cm9sW10pID0+IHtcbiAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgY29udHJvbHMpIHtcbiAgICAgIGNvbnRyb2w/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgfTtcbiAgZW5hYmxlSW5wdXRzID0gKGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2xbXSkgPT4ge1xuICAgIGZvciAoY29uc3QgY29udHJvbCBvZiBjb250cm9scykge1xuICAgICAgY29udHJvbD8uZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gIH07XG4gIGRheUhvdXJNaW5Ub01pbnV0ZXMgPSAoZHlzOiBudW1iZXIsIGhyczogbnVtYmVyLCBtaW5zOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIWR5cyAmJiAhaHJzICYmICFtaW5zKSByZXR1cm4gMDtcbiAgICBjb25zdCBkeXNUb0hycyA9IChkeXMgfHwgMCkgKiAyNDtcbiAgICBocnMgPSAoK2hycyB8fCAwKSArIGR5c1RvSHJzO1xuICAgIHJldHVybiAoaHJzIHx8IDApICogNjAgKyBtaW5zO1xuICB9O1xuICBob3VyTWluVG9NaW51dGVzID0gKGhyczogbnVtYmVyLCBtaW5zOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIWhycyAmJiAhbWlucykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIChocnMgfHwgMCkgKiA2MCArIG1pbnM7XG4gIH07XG4gIGhvdXJNaW5Ub01pbnV0ZXMyID0gKGhyc01pbnM6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IFtocnMsIG1pbnNdID0gaHJzTWlucz8uc3BsaXQoJzonKSB8fCBbMCwgMF07XG4gICAgcmV0dXJuIHRoaXMuaG91ck1pblRvTWludXRlcygraHJzLCArbWlucyk7XG4gIH07XG4gIG5vdGlmeShtZXNzYWdlOiBzdHJpbmcsIGNsczogMCB8IDEgfCAyIHwgMyA9IDEsIGR1cmF0aW9uID0gNTAwMCwgdGl0bGUgPSAnQ2xvc2UnKSB7XG4gICAgaWYgKGNscyA9PSAwKSByZXR1cm4gdGhpcy5pbmZvKG1lc3NhZ2UsIGNscyk7XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlICE9ICdzdHJpbmcnKSBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgIG1lc3NhZ2UgPSB0eXBlb2YgbWVzc2FnZSA9PSAnc3RyaW5nJyA/IG1lc3NhZ2UgOiAnJztcbiAgICBjb25zdCByZWYgPSB0aGlzLnNuYWNrQmFyLm9wZW4obWVzc2FnZSwgdGl0bGUsIHtcbiAgICAgIGR1cmF0aW9uLFxuICAgICAgaG9yaXpvbnRhbFBvc2l0aW9uOiAnY2VudGVyJyxcbiAgICAgIHZlcnRpY2FsUG9zaXRpb246ICdib3R0b20nLFxuICAgICAgcGFuZWxDbGFzczogY2xzID09IDEgPyAnYmctc3VjY2VzcycgOiBjbHMgPT0gMiA/ICdidG4taW5mbycgOiBjbHMgPT0gMyA/ICdidG4td2FybmluZycgOiAnYmctZGFuZ2VyJyxcbiAgICB9KTtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20ocmVmLmFmdGVyRGlzbWlzc2VkKCkucGlwZShtYXAoKHIpID0+IHIuZGlzbWlzc2VkQnlBY3Rpb24pKSk7XG4gIH1cblxuICBzY3JvbGxUb1RvcCA9ICgpID0+IHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcblxuICAvKipcbiAgICpcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgZGF0ZSB0aW1lIGxvY2FsIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBkYXRldGltZS1sb2NhbCBpbnB1dFxuICAgKi9cbiAgZ2V0TG9jYWxEYXRlVGltZU5vdyA9ICgpID0+IHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBkYXRlQ2h1bmtzID0gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoKS5zcGxpdCgnLycpO1xuICAgIHJldHVybiBgJHtkYXRlQ2h1bmtzWzJdfS0ke2RhdGVDaHVua3NbMV19LSR7ZGF0ZUNodW5rc1swXX1gICsgJ1QnICsgZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcoKTtcbiAgfTtcbiAgLyoqIEByZXR1cm5zIFRoZSBjdXJyZW50IGRhdGUgbG9jYWwgdGhhdCBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIGRhdGUgaW5wdXQgKi9cbiAgbG9jYWxEYXRlTm93ID0gKCkgPT4ge1xuICAgIHJldHVybiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcbiAgfTtcbiAgZGF0ZUZvcm1hdCA9IChkYXRlOiBhbnksIGZvcm1hdCA9IDEpID0+IHtcbiAgICBpZiAoIWRhdGUpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICBpZiAoZm9ybWF0ID09IDEpIHtcbiAgICAgIHJldHVybiBkLnRvRGF0ZVN0cmluZygpO1xuICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09IDIpIHtcbiAgICAgIHJldHVybiBkLmdldERhdGUoKSArICcgJyArIGNvbmZpZy5Nb250aHNbZC5nZXRNb250aCgpXTtcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PSAzKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgYEVFRSBNTU0gZGQgWVlZWSwgaGg6bW0gYWFgKTtcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PSA0KSB7XG4gICAgICByZXR1cm4gY29uZmlnLk1vbnRoc1tkLmdldE1vbnRoKCldICsgJyAnICsgZC5nZXREYXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH07XG5cbiAgdG9KYXZhRGF0ZVN0cmluZyA9IChpc29EYXRlU3RyaW5nOiBzdHJpbmcgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkpID0+IHtcbiAgICBpZiAoIWlzb0RhdGVTdHJpbmcpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBgJHtpc29EYXRlU3RyaW5nLnNsaWNlKDAsIDE5KX1gO1xuICAgIHJldHVybiBgJHtpc29EYXRlU3RyaW5nLnNsaWNlKDAsIDEwKX0gJHtpc29EYXRlU3RyaW5nLnNsaWNlKDExLCAxOSl9YDtcbiAgfTtcblxuICB0b0phdmFEYXRldGltZVN0cmluZyA9IChpc29EYXRlU3RyaW5nOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoIWlzb0RhdGVTdHJpbmcpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGRhdGUgPSBpc29EYXRlU3RyaW5nLmluY2x1ZGVzKCdUJykgPyBpc29EYXRlU3RyaW5nIDogbmV3IERhdGUoaXNvRGF0ZVN0cmluZykudG9JU09TdHJpbmcoKTtcbiAgICByZXR1cm4gYCR7ZGF0ZS5zbGljZSgwLCAxMCl9ICR7ZGF0ZS5zbGljZSgxMSwgMTkpfWA7XG4gIH07XG5cbiAgdGltZUZvcm1hdCA9ICh0aW1lPzogYW55KSA9PiB7XG4gICAgY29uc3QgdGltZUFycjogYW55W10gPSB0aW1lLnNwbGl0KCcgJyk7XG4gICAgdGltZUFyclswXSA9IHRpbWVBcnJbMF0uc3BsaXQoJzonKS5zcGxpY2UoMCwgMikuam9pbignOicpO1xuICAgIHJldHVybiB0aW1lQXJyLmpvaW4oJyAnKTtcbiAgfTtcbiAgZnVsbERhdGVUaW1lID0gKHRpbWVzdGFtcDogc3RyaW5nIHwgbnVtYmVyKSA9PiB7XG4gICAgLy8gZGVidWdnZXJcbiAgICByZXR1cm4gdGhpcy5kYXRlRm9ybWF0KHRpbWVzdGFtcCwgMyk7XG4gIH07XG4gIGRheXNGb3JtYXR0ZXIgPSAoZGF5czogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFkYXlzKSB7XG4gICAgICByZXR1cm4gJy0nO1xuICAgIH1cbiAgICBsZXQgeXI6IG51bWJlcixcbiAgICAgIG10OiBudW1iZXIsXG4gICAgICBkeTogbnVtYmVyLFxuICAgICAgcmV0OiBzdHJpbmcsXG4gICAgICBfeXIgPSAzNjUsXG4gICAgICBfbXQgPSAzMDtcbiAgICBpZiAoZGF5cyA+IF95cikge1xuICAgICAgeXIgPSBNYXRoLmZsb29yKGRheXMgLyBfeXIpO1xuICAgIH1cbiAgICBpZiAoZGF5cyA+IF9tdCkge1xuICAgICAgbXQgPSBNYXRoLmZsb29yKChkYXlzICUgX3lyKSAvIF9tdCk7XG4gICAgfVxuICAgIGR5ID0gKGRheXMgJSBfeXIpICUgX210O1xuICAgIHJldCA9IGAke3lyID8gdGhpcy5wbHVhcmxpemVyKHlyLCAneXInKSA6ICcnfSAke210ID8gdGhpcy5wbHVhcmxpemVyKG10LCAnbXRoJykgOiAnJ30gJHt0aGlzLnBsdWFybGl6ZXIoZHksICdkeScpfWA7XG4gICAgcmV0dXJuIHJldDtcbiAgfTtcbiAgbW9udGhzRm9ybWF0dGVyID0gKG1vbnRoczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFtb250aHMpIHtcbiAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuICAgIGxldCB5cjogbnVtYmVyLFxuICAgICAgbXQ6IG51bWJlcixcbiAgICAgIHJldDogc3RyaW5nLFxuICAgICAgX3lyID0gMTI7XG4gICAgaWYgKG1vbnRocyA+IF95cikge1xuICAgICAgeXIgPSBNYXRoLmZsb29yKG1vbnRocyAvIF95cik7XG4gICAgfVxuICAgIG10ID0gbW9udGhzICUgX3lyO1xuICAgIHJldCA9IGAke3lyID8gdGhpcy5wbHVhcmxpemVyKHlyLCAneXInKSA6ICcnfSAke210ID8gdGhpcy5wbHVhcmxpemVyKG10LCAnbXRoJykgOiAnJ31gO1xuICAgIHJldHVybiByZXQ7XG4gIH07XG4gIHBsdWFybGl6ZXIgPSAodmFsOiBudW1iZXIsIHR4dDogc3RyaW5nLCBwbHVyYWw/OiBzdHJpbmcpID0+IHtcbiAgICBwbHVyYWwgPSBwbHVyYWwgfHwgdHh0ICsgJ3MnO1xuICAgIHJldHVybiB2YWwgKyAodmFsID09IDEgPyB0eHQgOiBwbHVyYWwpO1xuICB9O1xuICBkZWNpbWFsVG9QZXJjZW50YWdlID0gKGRlYzogbnVtYmVyKSA9PiB7XG4gICAgcmV0dXJuIGRlYyAqIDEwMCArICclJztcbiAgfTtcbiAgbG9nRm9ybSA9IChmb3JtKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ0ZPUk0nLCBmb3JtLCAnVkFMVUVTJywgZm9ybS52YWx1ZSBhcyBhbnkpO1xuICB9O1xuXG4gIHRvQ1NWKGRhdGE6IGFueVtdLCBoZWFkZXJOYW1lczogc3RyaW5nW10sIGZpbGVuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXBsYWNlciA9IChrZXksIHZhbHVlKSA9PiAodmFsdWUgPT09IG51bGwgPyAnJyA6IHZhbHVlKTsgLy8gc3BlY2lmeSBob3cgeW91IHdhbnQgdG8gaGFuZGxlIG51bGwgdmFsdWVzIGhlcmVcblxuICAgIGxldCBjc3YgPSBkYXRhLm1hcCgocm93KSA9PiBoZWFkZXJOYW1lcy5tYXAoKGZpZWxkTmFtZSkgPT4gSlNPTi5zdHJpbmdpZnkocm93W2ZpZWxkTmFtZV0sIHJlcGxhY2VyKSkuam9pbignLCcpKTtcbiAgICBjc3YudW5zaGlmdChoZWFkZXJOYW1lcy5qb2luKCcsJykpO1xuICAgIGxldCBjc3ZBcnJheSA9IGNzdi5qb2luKCdcXHJcXG4nKTtcblxuICAgIHZhciBibG9iID0gbmV3IEJsb2IoW2NzdkFycmF5XSwgeyB0eXBlOiAndGV4dC9jc3YnIH0pO1xuICAgIHNhdmVBcyhibG9iLCBmaWxlbmFtZSArICcuY3N2Jyk7XG4gIH1cblxuICBpc1BpY3R1cmVGb3JtYXQoZmlsZU5hbWU6IHN0cmluZykge1xuICAgIGlmICghZmlsZU5hbWUpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBQSUNUVVJFX0ZPUk1BVFMgPSBbJy5qcGcnLCAnLmpwZWcnLCAnLnBuZycsICcuZ2lmJ107XG4gICAgcmV0dXJuIFBJQ1RVUkVfRk9STUFUUy5zb21lKChmb3JtYXQpID0+IGZpbGVOYW1lLmVuZHNXaXRoKGZvcm1hdCkpO1xuICB9XG4gIG9iamVjdFRvQXJyYXk8VD4ob2JqOiBhbnkpIHtcbiAgICBjb25zdCByZXQgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgIHJldC5wdXNoKG9ialtrZXldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldCBhcyBUW107XG4gIH1cbiAgZm9ybWF0RmllbGQoZmllbGQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9UaXRsZUNhc2UoZmllbGQ/LnRvU2VudGVuY2VDYXNlKCkpO1xuICB9XG4gIC8qKlxuICAgKiBVc2VzIGEgd2ViIHdvcmtlciB0byBwZXJmb3JtIGEgdGFza1xuICAgKiBAZXhhbXBsZSBuZXcgV29ya2VyKG5ldyBVUkwoJy4vdXBsb2FkLWNzdi53b3JrZXInLCBpbXBvcnQubWV0YS51cmwpKVxuICAgKiBAcGFyYW0gd29ya2VyIFdlYiB3b3JrZXIgb2JqZWN0XG4gICAqIEBwYXJhbSBpbnB1dERhdGEgRGF0YSBiZWluZyBwYXNzZWQgaW50byB3ZWIgd29ya2VyXG4gICAqIEByZXR1cm5zIERhdGEgZ290dGVuIGZyb20gd2ViIHdvcmtlclxuICAgKi9cbiAgdXNlV2ViV29ya2VyPFQgPSBhbnk+KHdvcmtlcjogV29ya2VyLCBpbnB1dERhdGE6IGFueSwgY29uZGl0aW9ucz86IHsgc3RvcDogKHJlcykgPT4gYm9vbGVhbjsgZXJyb3I6IChyZXMpID0+IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUPigoc3ViKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIFdvcmtlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoaW5wdXREYXRhKTtcbiAgICAgICAgICB3b3JrZXIub25tZXNzYWdlID0gKHIpID0+IHtcbiAgICAgICAgICAgIC8vIGRlYnVnZ2VyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSByLmRhdGE7XG4gICAgICAgICAgICBpZiAoY29uZGl0aW9ucykge1xuICAgICAgICAgICAgICBpZiAoY29uZGl0aW9ucy5lcnJvcihkYXRhKSkge1xuICAgICAgICAgICAgICAgIHN1Yi5lcnJvcihkYXRhKTtcbiAgICAgICAgICAgICAgICBzdWIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uZGl0aW9ucy5zdG9wKGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgc3ViLm5leHQoZGF0YSk7XG4gICAgICAgICAgICAgICAgc3ViLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN1Yi5uZXh0KGRhdGEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzdWIubmV4dChkYXRhIGFzIGFueSk7XG4gICAgICAgICAgICAgIHN1Yi5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyAnbm9Xb3JrZXInO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICBzdWIuZXJyb3IoZSk7XG4gICAgICAgIHN1Yi5jb21wbGV0ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGFzeW5jIGFycmF5VG9DU1YoZGF0YTogYW55W10sIGZpbGVuYW1lOiBzdHJpbmcsIGhlYWRlck1hcD86IFRhYmxlQ29sW10sIGV4dHJhQ29uZmlnPzogeyBwcmVmaXg/OiBzdHJpbmc7IGhpZGVIZWFkZXI/OiBib29sZWFuIH0pIHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICBsZXQgX2RhdGE6IGFueVtdO1xuICAgIGNvbnN0IGhlYWRlck1hcFdpdGhGb3JtYXR0ZXJzOiBUYWJsZUNvbFtdID0gaGVhZGVyTWFwPy5maWx0ZXIoKHgpID0+IHguZm9ybWF0dGVyIHx8IHguZm9ybWF0dGVyUm93KSB8fCB1bmRlZmluZWQ7XG4gICAgaWYgKGhlYWRlck1hcFdpdGhGb3JtYXR0ZXJzPy5sZW5ndGgpIHtcbiAgICAgIF9kYXRhID0gY2xvbmVEZWVwKGRhdGEpO1xuICAgICAgZm9yIChjb25zdCBmb3JtYXR0ZXIgb2YgaGVhZGVyTWFwV2l0aEZvcm1hdHRlcnMpIHtcbiAgICAgICAgZm9yIChjb25zdCByb3cgb2YgX2RhdGEpIHtcbiAgICAgICAgICByb3dbZm9ybWF0dGVyLmZdID0gZm9ybWF0dGVyLmZvcm1hdHRlciA/IGF3YWl0IGZvcm1hdHRlci5mb3JtYXR0ZXIocm93W2Zvcm1hdHRlci5mXSkgOiBmb3JtYXR0ZXIuZm9ybWF0dGVyUm93KHJvdyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgX2RhdGEgPSBkYXRhO1xuICAgIH1cbiAgICBjb25zdCBzaG93SGVhZGVyID0gIWV4dHJhQ29uZmlnPy5oaWRlSGVhZGVyO1xuICAgIGxldCBjc3YgPSBQYXBhLnVucGFyc2UoX2RhdGEsIHtcbiAgICAgIGhlYWRlcjogc2hvd0hlYWRlciAmJiAhaGVhZGVyTWFwPy5sZW5ndGgsXG4gICAgICBjb2x1bW5zOiBoZWFkZXJNYXA/Lm1hcCgoeCkgPT4geC5mPy50b1N0cmluZygpKSB8fCB1bmRlZmluZWQsXG4gICAgfSk7XG4gICAgdGhpcy5kb3dubG9hZGVyKFxuICAgICAgKGV4dHJhQ29uZmlnPy5wcmVmaXggPyBleHRyYUNvbmZpZz8ucHJlZml4ICsgJ1xcclxcbicgOiAnJykgK1xuICAgICAgICAoaGVhZGVyTWFwPy5sZW5ndGggPyBoZWFkZXJNYXAubWFwKChmaWVsZE5hbWUpID0+IGZpZWxkTmFtZS50KS5qb2luKCcsJykgKyBgXFxyXFxuYCA6ICcnKSArXG4gICAgICAgIGNzdixcbiAgICAgIGZpbGVuYW1lPy5lbmRzV2l0aCgnLmNzdicpID8gZmlsZW5hbWUgOiBmaWxlbmFtZSArICcuY3N2JyxcbiAgICApO1xuXG4gICAgdGhpcy5pbmZvKGBEb3dubG9hZGVkICR7ZmlsZW5hbWV9YCk7XG4gIH1cblxuICBqb2luQ1NWUm93cyguLi5DU1ZzOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiBDU1ZzLmpvaW4oJ1xcclxcbicpO1xuICB9XG4gIGFzeW5jIGFycmF5VG9DU1ZTdHJpbmc8VCA9IGFueT4oZGF0YTogVFtdLCBoZWFkZXJNYXA/OiBUYWJsZUNvbDxUPltdLCBleHRyYUNvbmZpZz86IHsgcHJlZml4Pzogc3RyaW5nOyBoaWRlSGVhZGVyPzogYm9vbGVhbiB9KSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgbGV0IF9kYXRhOiBhbnlbXTtcbiAgICBjb25zdCBoZWFkZXJNYXBXaXRoRm9ybWF0dGVyczogVGFibGVDb2xbXSA9IGhlYWRlck1hcD8uZmlsdGVyKCh4KSA9PiB4LmZvcm1hdHRlciB8fCB4LmZvcm1hdHRlclJvdykgfHwgdW5kZWZpbmVkO1xuICAgIGlmIChoZWFkZXJNYXBXaXRoRm9ybWF0dGVycz8ubGVuZ3RoKSB7XG4gICAgICBfZGF0YSA9IGNsb25lRGVlcChkYXRhKTtcbiAgICAgIGZvciAoY29uc3QgZm9ybWF0dGVyIG9mIGhlYWRlck1hcFdpdGhGb3JtYXR0ZXJzKSB7XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIF9kYXRhKSB7XG4gICAgICAgICAgcm93W2Zvcm1hdHRlci5mXSA9IGZvcm1hdHRlci5mb3JtYXR0ZXIgPyBhd2FpdCBmb3JtYXR0ZXIuZm9ybWF0dGVyKHJvd1tmb3JtYXR0ZXIuZl0pIDogZm9ybWF0dGVyLmZvcm1hdHRlclJvdyhyb3cpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIF9kYXRhID0gZGF0YTtcbiAgICB9XG4gICAgY29uc3Qgc2hvd0hlYWRlciA9ICFleHRyYUNvbmZpZz8uaGlkZUhlYWRlcjtcbiAgICBsZXQgY3N2ID0gUGFwYS51bnBhcnNlKF9kYXRhLCB7XG4gICAgICBoZWFkZXI6IHNob3dIZWFkZXIgJiYgIWhlYWRlck1hcD8ubGVuZ3RoLFxuICAgICAgY29sdW1uczogaGVhZGVyTWFwPy5tYXAoKHgpID0+IHguZj8udG9TdHJpbmcoKSkgfHwgdW5kZWZpbmVkLFxuICAgIH0pO1xuICAgIHJldHVybiAoXG4gICAgICAoZXh0cmFDb25maWc/LnByZWZpeCA/IGV4dHJhQ29uZmlnPy5wcmVmaXggKyAnXFxyXFxuJyA6ICcnKSArXG4gICAgICAoaGVhZGVyTWFwPy5sZW5ndGggPyBoZWFkZXJNYXAubWFwKChmaWVsZE5hbWUpID0+IGZpZWxkTmFtZS50KS5qb2luKCcsJykgKyBgXFxyXFxuYCA6ICcnKSArXG4gICAgICBjc3ZcbiAgICApO1xuICB9XG5cbiAgaXNEYXRlVmFsdWUgPSAodikgPT4gKHYgPyB2WzRdID09ICctJyAmJiB2WzddID09ICctJyA6IGZhbHNlKTtcbiAgaXNEYXRUaW1lVmFsdWUgPSAodikgPT4gKHYgPyB2LmluY2x1ZGVzKCdUJykgJiYgdls0XSA9PSAnLScgJiYgdls3XSA9PSAnLScgOiBmYWxzZSk7XG5cbiAgeWVzTm9DZWxsRm9ybWF0dGVyQ29sb3VyZWQgPSAodikgPT4gYDxzcGFuIGNsYXNzPScke3YgPyAnc3VjY2Vzc0NlbGwnIDogJ2luZXJ0Q2VsbCd9Jz4ke3YgPyAnWWVzJyA6IHYgPT0gZmFsc2UgPyAnTm8nIDogJy0nfTwvc3Bhbj5gO1xuICB5ZXNOb0NlbGxGb3JtYXR0ZXIgPSAodikgPT4gYCR7diA/ICdZZXMnIDogJ05vJ31gO1xuICBzdGF0dXNDZWxsRm9ybWF0dGVyID0gKHN0YXR1czogU3RhdHVzKSA9PlxuICAgIGA8c3BhbiBjbGFzcz0nJHtzdGF0dXMgPT0gJ0NPTVBMRVRFRCcgPyAnc3VjY2Vzc0NlbGwnIDogc3RhdHVzID09ICdQRU5ESU5HJyA/ICdwZW5kaW5nQ2VsbCcgOiAnaW5lcnRDZWxsJ30nPiR7c3RhdHVzIHx8ICctJ308L3NwYW4+YDtcblxuICBjZWxsU3RhdHVzRm9ybWF0dGVyID1cbiAgICA8VCA9IGFueT4oZ3VpZGU6IHsgc3VjY2Vzc1ZhbD86IFQ7IHBlbmRpbmdWYWw/OiBUOyBlcnJvclZhbD86IFQ7IGluZXJ0VmFsPzogVCB9KSA9PlxuICAgICh2KSA9PlxuICAgICAgYDxzcGFuIGNsYXNzPScke1xuICAgICAgICB2ID09IGd1aWRlLnN1Y2Nlc3NWYWwgPyAnc3VjY2Vzc0NlbGwnIDogdiA9PSBndWlkZS5wZW5kaW5nVmFsID8gJ3BlbmRpbmdDZWxsJyA6IHYgPT0gZ3VpZGUuZXJyb3JWYWwgPyAnZXJyb3JDZWxsJyA6ICdpbmVydENlbGwnXG4gICAgICB9Jz4ke3Z9PC9zcGFuPmA7XG5cbiAgZ2VuZXJhdGVVVUlEKCkge1xuICAgIGxldCBkID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgbGV0IGQyID0gKHR5cGVvZiBwZXJmb3JtYW5jZSAhPT0gJ3VuZGVmaW5lZCcgJiYgcGVyZm9ybWFuY2Uubm93ICYmIHBlcmZvcm1hbmNlLm5vdygpICogMTAwMCkgfHwgMDsgLy9UaW1lIGluIG1pY3Jvc2Vjb25kcyBzaW5jZSBwYWdlLWxvYWQgb3IgMCBpZiB1bnN1cHBvcnRlZFxuICAgIHJldHVybiAneHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4Jy5yZXBsYWNlKC9beHldL2csIChjKSA9PiB7XG4gICAgICBsZXQgciA9IE1hdGgucmFuZG9tKCkgKiAxNjsgLy9yYW5kb20gbnVtYmVyIGJldHdlZW4gMCBhbmQgMTZcbiAgICAgIGlmIChkID4gMCkge1xuICAgICAgICAvL1VzZSB0aW1lc3RhbXAgdW50aWwgZGVwbGV0ZWRcbiAgICAgICAgciA9IChkICsgcikgJSAxNiB8IDA7XG4gICAgICAgIGQgPSBNYXRoLmZsb29yKGQgLyAxNik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvL1VzZSBtaWNyb3NlY29uZHMgc2luY2UgcGFnZS1sb2FkIGlmIHN1cHBvcnRlZFxuICAgICAgICByID0gKGQyICsgcikgJSAxNiB8IDA7XG4gICAgICAgIGQyID0gTWF0aC5mbG9vcihkMiAvIDE2KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAoYyA9PT0gJ3gnID8gciA6IChyICYgMHgzKSB8IDB4OCkudG9TdHJpbmcoMTYpO1xuICAgIH0pO1xuICB9XG5cbiAgaW5mbzogKHRleHQ6IHN0cmluZywgc3RhdHVzPzogMCB8IDIgfCAxLCBoZWFkaW5nPzogc3RyaW5nLCBidG5zPzogSUluZm9EaWFsb2dCdG5bXSwgZGlzYWJsZUNsb3NlPzogYm9vbGVhbikgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgZGVib3VuY2VyID0gdGhpcy5kZWJvdW5jZXJTZXJ2aWNlLmRlYm91bmNlcjtcblxuICBhc3luY1ZhbGlkYXRpb24gPSB0aGlzLmRlYm91bmNlclNlcnZpY2UuYXN5bmNWYWxpZGF0aW9uO1xuICAvLyNyZWdpb24gcm91dGVcbiAgcm91dGVQYXJhbXMxID0gdGhpcy5yb3V0ZVNlcnZpY2Uucm91dGVQYXJhbXMxO1xuICByb3V0ZVBhcmFtczIgPSB0aGlzLnJvdXRlU2VydmljZS5yb3V0ZVBhcmFtczI7XG4gIHJvdXRlUGFyYW1zMyA9IHRoaXMucm91dGVTZXJ2aWNlLnJvdXRlUGFyYW1zMztcbiAgLy8jZW5kcmVnaW9uXG4gIHN0YXJ0UGwgPSB0aGlzLnBTLnN0YXJ0UGw7XG4gIHN0b3BQbCA9IHRoaXMucFMuc3RvcFBsO1xuXG4gIGNyZWF0ZVN1YnNjcmlwdGlvbk1hbmFnZXIgPSAoLi4uc3ViczogU3Vic2NyaXB0aW9uW10pID0+IHtcbiAgICBsZXQgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gc3VicyB8fCBbXTtcbiAgICBjb25zdCBjbGVhciA9ICgpID0+IHtcbiAgICAgIF9zdWJzLmZvckVhY2goKHgpID0+IHgudW5zdWJzY3JpYmUoKSk7XG4gICAgICBfc3VicyA9IFtdO1xuICAgIH07XG4gICAgY29uc3QgcHVzaCA9ICguLi5zdWJzOiBTdWJzY3JpcHRpb25bXSkgPT4ge1xuICAgICAgX3N1YnMucHVzaCguLi5zdWJzKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHsgY2xlYXIsIHB1c2ggfTtcbiAgfTtcblxuICBjcmVhdGVDYWNoZU1hbmFnZXIgPSAoKSA9PiB7XG4gICAgbGV0IF9jYWNoZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIGNvbnN0IGNsZWFyID0gKCkgPT4ge1xuICAgICAgX2NhY2hlID0ge307XG4gICAgfTtcbiAgICBjb25zdCBkcm9wID0gKCkgPT4ge1xuICAgICAgX2NhY2hlID0gdW5kZWZpbmVkO1xuICAgIH07XG4gICAgY29uc3Qgc2F2ZSA9IChrZXk6IHN0cmluZywgZGF0YTogYW55KSA9PiB7XG4gICAgICBpZiAoIV9jYWNoZSkgX2NhY2hlID0ge307XG4gICAgICBfY2FjaGVba2V5XSA9IGRhdGE7XG4gICAgfTtcbiAgICBjb25zdCBnZXQgPSA8VD4oa2V5OiBzdHJpbmcpID0+IF9jYWNoZT8uW2tleV0gYXMgVDtcblxuICAgIHJldHVybiB7IGNsZWFyLCBkcm9wLCBnZXQsIHNhdmUgfTtcbiAgfTtcblxuICB0cmFja0J5Q3VzdG9tSUQgPSAoaW5kZXgsIGl0ZW0pID0+IHtcbiAgICBpZiAoIWl0ZW1bdGhpcy5jdXN0b21JREZpZWxkXSkge1xuICAgICAgaXRlbVt0aGlzLmN1c3RvbUlERmllbGRdID0gdGhpcy5nZW5lcmF0ZVVVSUQoKTtcbiAgICAgIGNvbnNvbGUubG9nKCdzZXQgY3VzdG9tIGlkJyk7XG4gICAgfVxuICAgIHJldHVybiBpdGVtW3RoaXMuY3VzdG9tSURGaWVsZF07XG4gIH07XG4gIHRyYWNrQnlGb3JGb3JtcyA9IChpbmRleCwgaXRlbTogRm9ybUdyb3VwKSA9PiB7XG4gICAgaWYgKCFpdGVtLmNvbnRyb2xzW3RoaXMuY3VzdG9tSURGaWVsZF0pIGl0ZW0uYWRkQ29udHJvbCh0aGlzLmN1c3RvbUlERmllbGQsIG5ldyBGb3JtQ29udHJvbCh0aGlzLmdlbmVyYXRlVVVJRCgpKSk7XG4gICAgcmV0dXJuIGl0ZW0uY29udHJvbHNbdGhpcy5jdXN0b21JREZpZWxkXS52YWx1ZTtcbiAgfTtcbiAgb2JqZWN0VG9Gb3JtR3JvdXAgPSA8VD4oZGF0YTogVCkgPT4ge1xuICAgIGNvbnN0IGZvcm0gPSBuZXcgRm9ybUdyb3VwPElTdHJpY3RGb3JtR3JvdXA8VD4+KHt9IGFzIGFueSk7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpKSBmb3JtLmFkZENvbnRyb2woa2V5LCBuZXcgRm9ybUNvbnRyb2woZGF0YVtrZXldKSk7XG4gICAgcmV0dXJuIGZvcm07XG4gIH07XG5cbiAgZm9ybVNjaGVtYVRvRm9ybUdyb3VwID0gPFQgZXh0ZW5kcyB7IFt4OiBzdHJpbmddOiBhbnkgfT4oc2NoZW1hOiBJRm9ybVNjaGVtYVtdLCBkYXRhPzogVCkgPT4ge1xuICAgIGNvbnN0IGZvcm0gPSBuZXcgRm9ybUdyb3VwPElTdHJpY3RGb3JtR3JvdXA8VD4+KHt9IGFzIGFueSk7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHNjaGVtYSkgZm9ybS5hZGRDb250cm9sKGl0ZW0uZmllbGQudG9TdHJpbmcoKSwgbmV3IEZvcm1Db250cm9sKGRhdGFbaXRlbS5maWVsZC50b1N0cmluZygpXSkpO1xuICAgIHJldHVybiBmb3JtO1xuICB9O1xuXG4gIHRpbWVDb2RlQmxvY2sgPSA8VD4obGFiZWw6IHN0cmluZywgY2I6ICgpID0+IFQpID0+IHtcbiAgICBjb25zdCBzdGFydFRJbWUgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHJlcyA9IGNiKCk7XG4gICAgY29uc3QgZW5kVGltZSA9IERhdGUubm93KCk7XG4gICAgY29uc29sZS5sb2cobGFiZWwsIHN0YXJ0VEltZSwgZW5kVGltZSwgKGVuZFRpbWUgLSBzdGFydFRJbWUpIC8gMTAwMCArICdzZWMnKTtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBEZWxldGUgbnVsbCBvciB1bmRlZmluZWQgZmllbGRzIGZyb20gYW4gb2JqZWN0XG4gICAqIEBwYXJhbSBvYmogT2JqZWN0IHRvIGRlbGV0ZSBmcm9tXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBkZWxldGVOdWxsID0gPFQ+KG9iajogVCkgPT4ge1xuICAgIGNvbnN0IHJldDogVCA9IHt9IGFzIGFueTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChvYmpba2V5XSA9PT0gbnVsbCB8fCBvYmpba2V5XSA9PT0gdW5kZWZpbmVkIHx8IG9ialtrZXldID09PSAnJykgY29udGludWU7XG4gICAgICBlbHNlIHJldFtrZXldID0gb2JqW2tleV07XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH07XG59XG4iXX0=
785
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEYsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsSUFBSSxTQUFTLEVBQXNDLE1BQU0sMEJBQTBCLENBQUM7QUFDdEcsT0FBTyxFQUFFLFdBQVcsSUFBSSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBb0IsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0UsT0FBTyxFQUFFLDJCQUEyQixJQUFJLEdBQUcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQztBQUNuQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQXNDLE1BQU0sOEJBQThCLENBQUM7QUFDbkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0Is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QUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDckIsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2FBQ3hCO2lCQUFNO2dCQUNMLCtDQUErQztnQkFDL0MsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3RCLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQzthQUMxQjtZQUNELE9BQU8sQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBdHNCVSxjQUFjO2tIQUFkLGNBQWMsY0FERCxNQUFNOzsyRkFDbkIsY0FBYztrQkFEMUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeVBpcGUsIERhdGVQaXBlLCBMb2NhdGlvbiwgVGl0bGVDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIGFzIE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnIGFzIE1hdERpYWxvZ0NvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciBhcyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uRXh0cmFzLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBFVFNSZWFjdGl2ZUZvcm1JbnB1dFNlcnZpY2UgYXMgSVMxIH0gZnJvbSAnLi9pbnB1dC5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlU2VydmljZSB9IGZyb20gJy4vcm91dGUuc2VydmljZSc7XG5pbXBvcnQgamZkIGZyb20gJ2pzLWZpbGUtZG93bmxvYWQnO1xuaW1wb3J0IHsgUGFnZUxvYWRlclNlcnZpY2UgfSBmcm9tICcuL3BhZ2UtbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlnLCBDb25maWcgYXMgY29uZmlnIH0gZnJvbSAnLi4vY29uZmlncy9pbmRleC5jb25maWcnO1xuaW1wb3J0IHsgQXBwUm91dGVCYXNlIH0gZnJvbSAnLi4vU2hhcmVkL21vZGVscy9Sb3V0ZUl0ZW0uY2xhc3MnO1xuaW1wb3J0IHsgc2F2ZUFzIH0gZnJvbSAnZmlsZS1zYXZlcic7XG5pbXBvcnQgeyBFVmFsaWRhdGlvblR5cGUsIElTdHJpY3RGb3JtR3JvdXAsIFN0YXR1cywgVGFibGVDb2wgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IFBhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9wYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFVudHlwZWRGb3JtQXJyYXkgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vUmV1c2FibGVzL3JldXNhYmxlLXBhZ2VzL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIGlzT2JzZXJ2YWJsZSwgbGFzdFZhbHVlRnJvbSwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBSZXBsYXlTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVFVFNQYWdlQnRuSUQgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL0lNZW51SXRlbSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFNES0Vudmlyb25tZW50IH0gZnJvbSAnLi4vU2hhcmVkL21vZGVscy9lbnZpcm9ubWVudC5tb2RlbCc7XG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBEZWJvdW5jZXJTZXJ2aWNlIH0gZnJvbSAnLi9kZWJvdW5jZXIuc2VydmljZSc7XG5pbXBvcnQgeyBJRm9ybVNjaGVtYSB9IGZyb20gJy4uL1NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgUGFwYSBmcm9tICdwYXBhcGFyc2UnO1xuaW1wb3J0IHsgSUluZm9EaWFsb2dCdG4gfSBmcm9tICcuLi9TaGFyZWQvY29tcG9uZW50cy9pbmZvLWRpYWxvZy9pbmZvLWRpYWxvZy5jb21wb25lbnQnO1xuZGVjbGFyZSBjb25zdCAkOiBhbnk7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVXRpbGl0eVNlcnZpY2U8VEVudmlyb25tZW50IGV4dGVuZHMgU0RLRW52aXJvbm1lbnQgPSBTREtFbnZpcm9ubWVudD4ge1xuICByOiBBcHBSb3V0ZUJhc2U7XG4gIGRvd25sb2FkZXIgPSBqZmQ7XG4gIGVWYWxpZGF0aW9uVHlwZSA9IEVWYWxpZGF0aW9uVHlwZTtcbiAgY29uZmlnID0gQ29uZmlnO1xuICBlbnZpcm9ubWVudDogVEVudmlyb25tZW50ID0gZW52aXJvbm1lbnQgYXMgYW55O1xuICBwYmlkID0gRUVUU1BhZ2VCdG5JRDtcbiAgJDogYW55O1xuICBpc01vYmlsZTogYm9vbGVhbjtcbiAgcGFnZVNpemVPcHRpb25zID0gWzUsIDEwLCAxNSwgMjAsIDUwLCAxMDAsIDIwMCwgNTAwLCAxMDAwXTtcbiAgZGF0ZVBpcGVEYXRlID0gJ0VFLCBNTU1NIGQsIHknO1xuICBkYXRlUGlwZURhdGVMZWFuID0gJ0VFLCBNTU0gZCwgeSc7XG4gIGRhdGVQaXBlRGF0ZVRpbWVMZWFuID0gJ0VFLCBNTU0gZCwgeSBoaDptbSBhJztcbiAgcmVhZG9ubHkgY3VzdG9tSURGaWVsZCA9ICdfX2lkJztcbiAgcmVhZG9ubHkgZGVsaW1pdGVyID0gYH5+fi8vfn5+YDtcbiAgLyoqXG4gICAqIEVtaXRzIHRydWUgaWYgbW9iaWxlXG4gICAqL1xuICBtb2JpbGVRdWVyeUNoYW5nZWQgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigpO1xuICBwdWJsaWMgZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XG4gIHB1YmxpYyBzbmFja0JhciA9IGluamVjdChNYXRTbmFja0Jhcik7XG4gIHB1YmxpYyByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHVibGljIHRpdGxlUyA9IGluamVjdChUaXRsZSk7XG4gIHB1YmxpYyBsb2NhdGlvbiA9IGluamVjdChMb2NhdGlvbik7XG4gIHB1YmxpYyBpbnB1dFNlcnZpY2UgPSBpbmplY3QoSVMxKTtcbiAgcHVibGljIHJvdXRlU2VydmljZSA9IGluamVjdChSb3V0ZVNlcnZpY2UpO1xuICBwdWJsaWMgcFMgPSBpbmplY3QoUGFnZUxvYWRlclNlcnZpY2UpO1xuICBwdWJsaWMgY3VycmVuY3lQaXBlID0gaW5qZWN0KEN1cnJlbmN5UGlwZSk7XG4gIHB1YmxpYyB0aXRsZUNhc2VQaXBlID0gaW5qZWN0KFRpdGxlQ2FzZVBpcGUpO1xuICBwdWJsaWMgbG9nZ2VyU2VydmljZSA9IGluamVjdChMb2dnZXJTZXJ2aWNlKTtcbiAgcHVibGljIHBhZ2VTID0gaW5qZWN0KFBhZ2VTZXJ2aWNlKTtcbiAgcHVibGljIHJlc3BvbnNpdmUgPSBpbmplY3QoQnJlYWtwb2ludE9ic2VydmVyKTtcbiAgcHVibGljIGRhdGVQaXBlID0gaW5qZWN0KERhdGVQaXBlKTtcbiAgcHVibGljIGRlYm91bmNlclNlcnZpY2UgPSBpbmplY3QoRGVib3VuY2VyU2VydmljZSk7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucmVzcG9uc2l2ZS5vYnNlcnZlKFtCcmVha3BvaW50cy5IYW5kc2V0UG9ydHJhaXRdKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgY29uc3QgYnJlYWtwb2ludHMgPSByZXN1bHQuYnJlYWtwb2ludHM7XG5cbiAgICAgIGlmIChicmVha3BvaW50c1tCcmVha3BvaW50cy5IYW5kc2V0UG9ydHJhaXRdKSB7XG4gICAgICAgIHRoaXMuaXNNb2JpbGUgPSB0cnVlO1xuICAgICAgICB0aGlzLm1vYmlsZVF1ZXJ5Q2hhbmdlZC5uZXh0KHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pc01vYmlsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1vYmlsZVF1ZXJ5Q2hhbmdlZC5uZXh0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBpZiAoJCkgdGhpcy4kID0gJDtcbiAgfVxuXG4gIGJhY2sgPSAoKSA9PiB0aGlzLmxvY2F0aW9uLmJhY2soKTtcblxuICBvbmx5T25lSW5wdXQoaW5wdXRzOiBGb3JtQ29udHJvbFtdKSB7XG4gICAgY29uc3QgbklucHV0cyA9IGlucHV0cz8ubWFwKChpbnApID0+ICh7IGlkOiB0aGlzLmdlblJhbmRvbUlELCBpbnAgfSkpIHx8IFtdO1xuICAgIHJldHVybiBtZXJnZSguLi5uSW5wdXRzLm1hcCgoaSkgPT4gaS5pbnAudmFsdWVDaGFuZ2VzLnBpcGUobWFwKCh2YWwpID0+ICh7IGlkOiBpLmlkLCB2YWwgfSkpKSkpLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgLy8gZGVidWdnZXJcbiAgICAgIGlmIChyLnZhbCkgbklucHV0cy5maWx0ZXIoKHgpID0+IHguaWQgIT0gci5pZCkuZm9yRWFjaCgoeCkgPT4geC5pbnAuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSkpO1xuICAgICAgZWxzZSBuSW5wdXRzLmZpbHRlcigoeCkgPT4geC5pZCAhPSByLmlkKS5mb3JFYWNoKCh4KSA9PiB4LmlucC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGNvcHlQYXlsb2FkKHBheWxvYWQpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCg8U0RLRW52aXJvbm1lbnQ+dGhpcy5lbnZpcm9ubWVudCkuZGVidWcpIHtcbiAgICAgICAgY29uc3QgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XG4gICAgICAgIGVsZW0udmFsdWUgPSBKU09OLnN0cmluZ2lmeShwYXlsb2FkKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtKTtcbiAgICAgICAgZWxlbS5zZWxlY3QoKTtcbiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgfVxuICB4T3JZID0gKHgsIHkgPSAnLScpID0+IGAke3ggPT0gbnVsbCA/IHkgOiB4fWA7XG4gIHRvVGl0bGVDYXNlKHRleHQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnRpdGxlQ2FzZVBpcGUudHJhbnNmb3JtKHRleHQpO1xuICB9XG4gIC8qKlxuICAgKiBDb252ZXJ0IERhdGUgc3RyaW5nIHRvIERhdGUgVGltZSBzdHJpbmdcbiAgICogQHBhcmFtIGRhdGVTdHIgRGF0ZSBzdHJpbmdcbiAgICogQGV4YW1wbGUgJzIwMjItMDEtMjUnXG4gICAqIEBwYXJhbSBjb25maWcgQ29uZmlndXJhdGlvbiBmb3IgdGhlIGNvbnZlcnNpb25cbiAgICogQHJldHVybnMgUmV0dXJucyBhIERhdGUgVGltZSBzdHJpbmdcbiAgICogQGV4YW1wbGUgJzIwMjItMDEtMjVUMDA6MDA6MDBaJyBvciAnMjAyMi0wMS0yNSAwMDowMDowMCdcbiAgICovXG4gIGRhdGVUb0RhdGVUaW1lID0gKFxuICAgIGRhdGVTdHI6IHN0cmluZyxcbiAgICBjb25maWc/OiB7XG4gICAgICAvKipcbiAgICAgICAqIFVzZSB0aGUgeXl5eS1tbS1kZCBoaDptbTpzcyBmb3JtYXRcbiAgICAgICAqL1xuICAgICAgb21pdFQ/OiBib29sZWFuO1xuICAgICAgLyoqVGltZSB0byBhcHBlbmQgdG8gZGF0ZS4gQGV4YW1wbGUgYDEyOjAwOjAwWmAgKi9cbiAgICAgIHRpbWU/OiBzdHJpbmc7XG4gICAgfSxcbiAgKSA9PiB7XG4gICAgcmV0dXJuICFkYXRlU3RyXG4gICAgICA/IG51bGxcbiAgICAgIDogZGF0ZVN0clsxMF0gPT0gJ1QnXG4gICAgICAgID8gZGF0ZVN0clxuICAgICAgICA6IGRhdGVTdHIgKyAoISFjb25maWc/Lm9taXRUID8gYCAke2NvbmZpZz8udGltZSB8fCAnMDA6MDA6MDAnfWAgOiBgVCR7Y29uZmlnPy50aW1lIHx8ICcwMDowMDowMFonfWApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBTZXQgYW4gT2JqZWN0J3MgZmllbGQgaWYgdGhlIG9iamVjdCBleGlzdHMgb3IgZG9uJ3QgaWYgdGhlIG9iamVjdCBkb2Vzbid0XG4gICAqIEBwYXJhbSBvYmogT2JqZWN0IGhvbGRpbmcgdGhlIGZpZWxkXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgTmFtZSBvZiB0aGUgZmllbGQgdG8gc2V0XG4gICAqIEBwYXJhbSB2YWwgVmFsdWUgdG8gc2V0IHRoZSBmaWVsZCB3aXRoXG4gICAqIEByZXR1cm5zIFJldHVybnMgdGhlIG9iamVjdCBob2xkaW5nIHRoZSBkYXRhXG4gICAqL1xuICBzZXR0ZXJXaXRoTnVsbDxUPihvYmo6IFQsIGt2cHM6IFBhcnRpYWw8VD4pIHtcbiAgICBpZiAoIW9iaikgcmV0dXJuIG51bGw7XG4gICAgZm9yIChjb25zdCBrZXkgaW4ga3Zwcykge1xuICAgICAgb2JqW2tleV0gPSBrdnBzW2tleV07XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICAvKipcbiAgICogKFNldCBhbiBPYmplY3QncyBmaWVsZCBpZiB0aGUgb2JqZWN0IGV4aXN0cyBvciBkb24ndCBpZiB0aGUgb2JqZWN0IGRvZXNuJ3QpIGZvciBtdWx0aXBsZSBlbnRyaWVzXG4gICAqIEBwYXJhbSBpdGVtcyBBcnJheSBvZiBvYmplY3RzIGFuZCB0aGVpciBtb2RpZmljYXRpb25zXG4gICAqL1xuICBzZXR0ZXJXaXRoTnVsbEFycmF5PFQ+KGl0ZW1zOiB7IG9iajogVDsga3ZwczogUGFydGlhbDxUPiB9W10pIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIHRoaXMuc2V0dGVyV2l0aE51bGwoaXRlbS5vYmosIGl0ZW0ua3Zwcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGRlbGV0aW9uIG9mIHJvd3MgZnJvbSBhIEZvcm1BcnJheVxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgdGhlIHJvdyB0byBkZWxldGVcbiAgICogQHBhcmFtIGZhIFRoZSBGb3JtQXJyYXkgdGhhdCBob2xkcyB0aGUgcm93c1xuICAgKiBAcGFyYW0gZGVsZXRlU2VydmljZSBUaGUgZGVsZXRpb24gc2VydmljZSB0byBiZSBjYWxsZWQgKEl0IHNob3VsZCBiZSBhbiBhbm9ueW1vdXMgZnVuY3Rpb24pXG4gICAqIEBwYXJhbSBhZGRSb3dGdW5jIFRoZSBmdW5jdGlvbiAoYW5vbnltb3VzKSB0aGF0IGFkZHMgYSBuZXcgcm93IHRvIHRoZSBGb3JtQXJyYXlcbiAgICogQHBhcmFtIGVtaXRFdmVudCBTcGVjaWZ5IHdoZXRoZXIgdG8gZW1pdCBhbiBldmVudCB3aGVuIG1hbmlwdWxhdGluZyB0aGUgRm9ybUFycmF5XG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBoYW5kbGVGb3JtUm93RGVsZXRlID0gKFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgZmE6IFVudHlwZWRGb3JtQXJyYXksXG4gICAgZGVsZXRlU2VydmljZTogKC4uLmFyZ3MpID0+IFByb21pc2U8YW55PiB8IE9ic2VydmFibGU8YW55PixcbiAgICBhZGRSb3dGdW5jOiAoLi4uYXJncykgPT4gYW55LFxuICAgIGV4dHJhQ29uZmlnPzoge1xuICAgICAgZG9udEVtaXRFdmVudD86IGJvb2xlYW47XG4gICAgICBvbkRlbGV0ZT86IChyZXMpID0+IGFueTtcbiAgICB9LFxuICApID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSkgPT4ge1xuICAgICAgY29uc3QgaWQgPSBjbG9uZURlZXAoZmEuY29udHJvbHNbaW5kZXhdPy52YWx1ZT8uaWQpO1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICBpZiAoZmEuY29udHJvbHMubGVuZ3RoID09IDEgJiYgaWQpIHtcbiAgICAgICAgZmEucmVtb3ZlQXQoaW5kZXgsIHsgZW1pdEV2ZW50OiAhZXh0cmFDb25maWc/LmRvbnRFbWl0RXZlbnQgfSk7XG4gICAgICAgIGFkZFJvd0Z1bmMoKTtcbiAgICAgIH0gZWxzZSBpZiAoZmEuY29udHJvbHMubGVuZ3RoID4gMSkgZmEucmVtb3ZlQXQoaW5kZXgsIHsgZW1pdEV2ZW50OiAhZXh0cmFDb25maWc/LmRvbnRFbWl0RXZlbnQgfSk7XG4gICAgICBlbHNlIGlmIChmYS5jb250cm9scy5sZW5ndGggPT0gMSkgZmEuY29udHJvbHNbMF0ucmVzZXQoKTtcblxuICAgICAgaWYgKGlkICYmIGRlbGV0ZVNlcnZpY2UpIHtcbiAgICAgICAgY29uc3QgcmVxID0gZGVsZXRlU2VydmljZShpZCk7XG4gICAgICAgIGlmIChyZXFbJ3RvUHJvbWlzZSddKSB7XG4gICAgICAgICAgcmVzb2x2ZShsYXN0VmFsdWVGcm9tKHJlcSBhcyBPYnNlcnZhYmxlPGFueT4pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKHJlcSBhcyBhbnkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgfVxuICAgIH0pLnRoZW4oKHIpID0+IHtcbiAgICAgIGV4dHJhQ29uZmlnPy5vbkRlbGV0ZShyKTtcbiAgICAgIHJldHVybiByO1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBkZWxldGlvbiBvZiByb3dzIGZyb20gYW4gYXJyYXlcbiAgICogQHBhcmFtIGluZGV4IEluZGV4IG9mIHRoZSByb3cgdG8gZGVsZXRlXG4gICAqIEBwYXJhbSBhcnIgVGhlIGFycmF5IHRoYXQgaG9sZHMgdGhlIHJvd3NcbiAgICogQHBhcmFtIGRlbGV0ZVNlcnZpY2UgVGhlIGRlbGV0aW9uIHNlcnZpY2UgdG8gYmUgY2FsbGVkIChJdCBzaG91bGQgYmUgYW4gYW5vbnltb3VzIGZ1bmN0aW9uKVxuICAgKiBAcGFyYW0gYWRkUm93RnVuYyBUaGUgZnVuY3Rpb24gKGFub255bW91cykgdGhhdCBhZGRzIGEgbmV3IHJvdyB0byB0aGUgYXJyYXlcbiAgICogQHBhcmFtIGNiIFRoZSBmdW5jdGlvbiB0byBjYWxsYmFjayB3aXRoIHRoZSByZXNwb25zZSBvZiB0aGUgZGVsZXRpb24gc2VydmljZSBhcyB0aGUgaW5wdXQgcGFyYW1ldGVyXG4gICAqL1xuICBoYW5kbGVSb3dEZWxldGUgPSBhc3luYyA8VD4oXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBhcnI6IGFueVtdLFxuICAgIGRlbGV0ZVNlcnZpY2U6ICguLi5hcmdzKSA9PiBQcm9taXNlPFQ+IHwgT2JzZXJ2YWJsZTxUPixcbiAgICBhZGRSb3dGdW5jOiAoLi4uYXJncykgPT4gYW55LFxuICAgIGNiPzogKGFueSkgPT4gYW55LFxuICApID0+IHtcbiAgICBjb25zdCBpZCA9IGFycltpbmRleF0/LmlkO1xuICAgIC8vIGRlYnVnZ2VyO1xuXG4gICAgaWYgKGlkICYmIGRlbGV0ZVNlcnZpY2UpIHtcbiAgICAgIGNvbnN0IHJlcSA9IGRlbGV0ZVNlcnZpY2UoaWQpO1xuICAgICAgaWYgKHR5cGVvZiByZXFbJ3RvUHJvbWlzZSddID09ICdmdW5jdGlvbicpIGNiID8gY2IoYXdhaXQgcmVxWyd0b1Byb21pc2UnXSgpKSA6IHJlcVsndG9Qcm9taXNlJ10oKTtcbiAgICAgIGVsc2UgY2IgPyBjYihhd2FpdCByZXEpIDogbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoYXJyLmxlbmd0aCA9PSAxKSB7XG4gICAgICBhcnIuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIGFkZFJvd0Z1bmMoKTtcbiAgICB9IGVsc2UgaWYgKGFyci5sZW5ndGggPiAxKSBhcnIuc3BsaWNlKGluZGV4LCAxKTtcbiAgfTtcbiAgLyoqXG4gICAqIFRvIGhhbmRsZSB0aGUgcGF0Y2hpbmcgb2YgYSBGb3JtQXJyYXlcbiAgICogQHBhcmFtIGFyciBUaGUgYXJyYXkgdGhhdCBjb250YWlucyB0aGUgZGF0YVxuICAgKiBAcGFyYW0gYWRkRnVuYyBUaGUgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhZGRpdGlvbiBvZiBzaW5nbGUgZW50cmllc1xuICAgKiBAcGFyYW0gZm9ybUFyciBUaGUgRm9ybUFycmF5IHRoYXQgd2lsbCBob2xkIHRoZSBhcnJheSdzIGRhdGFcbiAgICovXG4gIGluaXRQYXRjaEZvcm1BcnJheSA9IDxUPihhcnI6IFRbXSwgYWRkRnVuYzogKGk6IG51bWJlciwgZGF0YT86IFQsIGZvcm1BcnI/OiBGb3JtQXJyYXkpID0+IHZvaWQsIGZvcm1BcnI6IEZvcm1BcnJheSkgPT4ge1xuICAgIC8vIGRlYnVnZ2VyXG4gICAgaWYgKGFycj8ubGVuZ3RoKSB7XG4gICAgICBpZiAoZm9ybUFyci5sZW5ndGgpIGZvcm1BcnIuY2xlYXIoKTtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcnIpIHtcbiAgICAgICAgYWRkRnVuYyhmb3JtQXJyLmxlbmd0aCwgaXRlbSwgZm9ybUFycik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghZm9ybUFyci5sZW5ndGgpIGFkZEZ1bmMoZm9ybUFyci5sZW5ndGgsIG51bGwsIGZvcm1BcnIpO1xuICAgIH1cbiAgfTtcbiAgcHJpdmF0ZSBpc1Byb21pc2UgPSAoZnVuYykgPT4ge1xuICAgIHJldHVybiB0eXBlb2YgZnVuYyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGZ1bmMudGhlbiA9PT0gJ2Z1bmN0aW9uJztcbiAgfTtcbiAgaXNBc3luYyA9IChmdW5jKSA9PiB7XG4gICAgcmV0dXJuIGZ1bmMuY29uc3RydWN0b3IubmFtZSA9PT0gJ0FzeW5jRnVuY3Rpb24nIHx8ICh0eXBlb2YgZnVuYyA9PT0gJ2Z1bmN0aW9uJyAmJiB0aGlzLmlzUHJvbWlzZShmdW5jKCkpKTtcbiAgfTtcblxuICBpc09ic2VydmFibGUgPSA8VD4oZnVuYykgPT4ge1xuICAgIC8vIHJldHVybiB0eXBlb2YgZnVuYyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGZ1bmMuc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nO1xuICAgIC8vIHJldHVybiB0eXBlb2YgZnVuYyA9PT0gJ29iamVjdCcgJiYgZnVuYyBpbnN0YW5jZW9mIE9ic2VydmFibGU7XG4gICAgLy8gcmV0dXJuIHR5cGVvZiBmdW5jID09PSAnb2JqZWN0JyAmJiBmdW5jIGluc3RhbmNlb2YgT2JzZXJ2YWJsZTxUPjtcbiAgICByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdvYmplY3QnICYmIGlzT2JzZXJ2YWJsZShmdW5jKTtcbiAgICByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBmdW5jLnRvUHJvbWlzZSA9PT0gJ2Z1bmN0aW9uJztcbiAgfTtcbiAgcHJvbWlzaWZ5VmFsID0gPFQ+KHZhbDogVCB8IFByb21pc2U8VD4gfCBPYnNlcnZhYmxlPFQ+KSA9PiB7XG4gICAgaWYgKHRoaXMuaXNBc3luYyh2YWwpKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbCBhcyBQcm9taXNlPFQ+KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNPYnNlcnZhYmxlKHZhbCkpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobGFzdFZhbHVlRnJvbSh2YWwgYXMgT2JzZXJ2YWJsZTxUPikpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbCBhcyBUKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBhcnIgQXJyYXkgb2Ygb2JzZXJ2YWJsZXMgdG8gZmV0Y2hcbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgdGhlIHJlc3BvbnNlcyBtZXJnZWQgdG9nZXRoZXIuIEl0IGVtaXRzIHRoZSBtZXJnZWQgcmVzcG9uc2VzIGFzIHRoZXkgYXJlIGZldGNoZWQgYW5kIGNsb3NlcyBvbmNlIGFsbGwgdGhlIHJlc3BvbnNlcyBoYXZlIGJlZW4gZmV0Y2hlZFxuICAgKi9cbiAgbWVyZ2VBcnJPYnNlcnZhYmxlcyA9IDxUPihhcnI6IHsgJGZ1bmM6IE9ic2VydmFibGU8VFtdPiB9W10pID0+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8VFtdPigoc3ViKSA9PiB7XG4gICAgICBjb25zdCByZXQ6IFRbXSA9IFtdO1xuICAgICAgbGV0IHJlc3BvbnNlQ291bnQgPSAwO1xuICAgICAgbWVyZ2UoXG4gICAgICAgIC4uLmFyci5tYXAoXG4gICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICB4LiRmdW5jPy5waXBlKFxuICAgICAgICAgICAgICBjYXRjaEVycm9yKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgdGFwKChyKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VDb3VudCsrO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICByZXQucHVzaCguLi5yKTtcbiAgICAgICAgc3ViLm5leHQocmV0KTtcbiAgICAgICAgaWYgKHJlc3BvbnNlQ291bnQgPT0gYXJyLmZpbHRlcigoeCkgPT4geC4kZnVuYykubGVuZ3RoKSB7XG4gICAgICAgICAgLy8gZGVidWdnZXJcbiAgICAgICAgICBzdWIuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG4gIHJlbW92ZUR1cGxpY2F0ZTxUPihsaXN0OiBUW10sIGtleUZpZWxkID0gJ2NvZGUnKSB7XG4gICAgaWYgKCFsaXN0KSByZXR1cm4gbnVsbDtcbiAgICBsaXN0ID0gbGlzdC5maWx0ZXIoKHgpID0+IHgpO1xuICAgIGNvbnN0IHJldDogVFtdID0gW10sXG4gICAgICBkdXBsaWNhdGVNYXA6IHsgW3g6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGxpc3QpIHtcbiAgICAgIGlmIChkdXBsaWNhdGVNYXBbaXRlbVtrZXlGaWVsZF1dKSBjb250aW51ZTtcbiAgICAgIHJldC5wdXNoKGl0ZW0pO1xuICAgICAgZHVwbGljYXRlTWFwW2l0ZW1ba2V5RmllbGRdXSA9IGl0ZW07XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cbiAgZ2V0IGdlblJhbmRvbUlEKCkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMDAwMDAwMDAwMDAwMDAwKTtcbiAgfVxuICBzdG9yZVBheWxvYWQgPSB0aGlzLmxvZ2dlclNlcnZpY2UuYWRkTG9nO1xuICBvYmpJc0VtcHR5ID0gKG9iaiwgZXhjbHVzaW9uRmllbGRzPzogc3RyaW5nW10pID0+IHtcbiAgICBpZiAoIW9iaikgcmV0dXJuIHRydWU7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoZXhjbHVzaW9uRmllbGRzPy5pbmNsdWRlcyhrZXkpKSBjb250aW51ZTtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgIGlmIChvYmpba2V5XSkgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbiAgZGF0YUdlbiA9IDxUID0gYW55PihrZXlzOiBzdHJpbmdbXSwgbGVuZ3RoID0gMTApID0+IHtcbiAgICBjb25zdCByZXQ6IGFueVtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgbGV0IHQ6IGFueSA9IHt9O1xuICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICB0W2tleV0gPSB0aGlzLnRleHRHZW4oKTtcbiAgICAgIH1cbiAgICAgIHJldC5wdXNoKHQpO1xuICAgIH1cbiAgICByZXR1cm4gcmV0IGFzIFRbXTtcbiAgfTtcbiAgdGV4dEdlbiA9ICgpID0+ICdyYW5kb20nICsgTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwMCk7XG4gIHRyYWNrQnlDb2RlKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xuICAgIHJldHVybiBpdGVtPy5jb2RlO1xuICB9XG4gIHRyYWNrQnlJRChpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcbiAgICByZXR1cm4gaXRlbT8uaWQ7XG4gIH1cbiAgZGlhbG9nT3BlbmVyID0gKGNvbXA6IGFueSwgY29uZmlnOiBNYXREaWFsb2dDb25maWcsIHZhbHVlQ0I6IChyKSA9PiBhbnksIG5vVmFsdWVDQj86IGFueSkgPT5cbiAgICB0aGlzLmRpYWxvZ09wZW5lclJlZihjb21wLCBjb25maWcpXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICBpZiAociAhPSBudWxsICYmIHIgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdmFsdWVDQihyKTtcbiAgICAgICAgfSBlbHNlIGlmIChub1ZhbHVlQ0IpIHtcbiAgICAgICAgICBub1ZhbHVlQ0IoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIGRpYWxvZ09wZW5lclJlZiA9IChjb21wOiBhbnksIGNvbmZpZzogTWF0RGlhbG9nQ29uZmlnKSA9PiB0aGlzLmRpYWxvZy5vcGVuKGNvbXAsIGNvbmZpZyk7XG4gIGZpbmRMYWJlbEJ5SXRlbSA9IChpdGVtLCBhcnI6IGFueVtdLCBsYWJlbEZpZWxkPzogc3RyaW5nLCBrZXlGaWVsZDogc3RyaW5nID0gJ2NvZGUnKSA9PiB7XG4gICAgaWYgKCFpdGVtKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBvYmogPSBhcnI/LmZpbmQoKHgpID0+IHhba2V5RmllbGRdID09IGl0ZW0pO1xuICAgIGlmICghb2JqKSByZXR1cm4gaXRlbTtcbiAgICBlbHNlIHJldHVybiBgJHtpdGVtfSAtICR7b2JqW2xhYmVsRmllbGQgfHwgJ3RpdGxlJ10gfHwgb2JqW2xhYmVsRmllbGQgfHwgJ2Rlc2NyaXB0aW9uJ119YDtcbiAgfTtcblxuICBmb3JtRmllbGRzRnJvbUFyciA9IHRoaXMuaW5wdXRTZXJ2aWNlLmZvcm1GaWVsZHNGcm9tRkNJbnB1dHNBcnI7XG4gIG9ialRvRm9ybUNvbnRyb2xzID0gdGhpcy5pbnB1dFNlcnZpY2UuZm9ybUZpZWxkc0Zyb21PYmo7XG4gIGZvcm1TY2hlbWFUb0Zvcm1Db250cm9scyA9IHRoaXMuaW5wdXRTZXJ2aWNlLmZvcm1TY2hlbWFUb0Zvcm1Db250cm9scztcblxuICBiaW5kRm9ybUNvbnRyb2xUb0lucHV0cyA9IHRoaXMuaW5wdXRTZXJ2aWNlLmJpbmRGb3JtQ29udHJvbFRvSW5wdXRzO1xuXG4gIGdvID0gKHZhbHVlOiBzdHJpbmcsIGV4dHJhPzogTmF2aWdhdGlvbkV4dHJhcykgPT4ge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt2YWx1ZV0sIGV4dHJhKTtcbiAgfTtcbiAgLyoqXG4gICAqIFJvdXRlIHRvIGNvbXBvbmVudFxuICAgKiBAcGFyYW0gcm91dGUgUm91dGUgb2YgcGF0aCB0byBjb21wb25lbnRcbiAgICogQHBhcmFtIGV4dHJhXG4gICAqL1xuICBnb1IgPSAocm91dGU6IHN0cmluZywgZXh0cmE/OiBOYXZpZ2F0aW9uRXh0cmFzKSA9PiB7XG4gICAgaWYgKCEoPFNES0Vudmlyb25tZW50PnRoaXMuZW52aXJvbm1lbnQpLmFjdGl2YXRlZFJvdXRlKSBkZWJ1Z2dlcjtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcm91dGVdLCB7XG4gICAgICByZWxhdGl2ZVRvOiAoPFNES0Vudmlyb25tZW50PnRoaXMuZW52aXJvbm1lbnQpLmFjdGl2YXRlZFJvdXRlLFxuICAgICAgLi4uZXh0cmEsXG4gICAgfSk7XG4gICAgLy8gZGVidWdnZXI7XG4gIH07XG4gIFxuICByZWxhdGl2ZVJvdXRlcigpIHtcbiAgICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKSxcbiAgICAgIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgICByZXR1cm4ge1xuICAgICAgcm91dGUsXG4gICAgICByb3V0ZXIsXG4gICAgICBuYXZpZ2F0ZTogKGxpbms6IHN0cmluZywgY29uZmlnPzogTmF2aWdhdGlvbkV4dHJhcyB8IHVuZGVmaW5lZCkgPT4gcm91dGVyLm5hdmlnYXRlKFtsaW5rXSwgeyByZWxhdGl2ZVRvOiByb3V0ZSwgLi4uY29uZmlnIH0pLFxuICAgICAgcXVlcnlQYXJhbXM6IHJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLFxuICAgICAgcGF0aFBhcmFtczogcm91dGUuc25hcHNob3QucGFyYW1zLFxuICAgIH07XG4gIH1cblxuICBtb25leVBhcnNlciA9IChhbW91bnQ6IHN0cmluZyB8IG51bWJlciwgY3VycmVuY3kgPSAnICcpID0+IHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW5jeVBpcGUudHJhbnNmb3JtKGFtb3VudCwgY3VycmVuY3kgfHwgJyAnKTtcbiAgfTtcbiAgZXh0cmFjdFVwbG9hZChldmVudDogYW55KSB7XG4gICAgcmV0dXJuIChldmVudC50YXJnZXQuZmlsZXMgYXMgRmlsZVtdKSB8fCBbXTtcbiAgfVxuXG4gIHNlY29uZHNUb0hvdXJNaW5TZWMgPSAoc2Vjb25kczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFzZWNvbmRzKSByZXR1cm4geyBzZWNzOiBudWxsLCBob3VyczogbnVsbCwgbWluczogbnVsbCB9O1xuICAgIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gMzYwMCkgfHwgMCxcbiAgICAgIHNlY29uZHNFeEhvdXJzID0gc2Vjb25kcyAlIDM2MDAgfHwgMCxcbiAgICAgIG1pbnMgPSBNYXRoLmZsb29yKHNlY29uZHNFeEhvdXJzIC8gNjApIHx8IDAsXG4gICAgICBzZWNzID0gc2Vjb25kc0V4SG91cnMgJSA2MDtcbiAgICByZXR1cm4geyBob3VycywgbWlucywgc2VjcyB9O1xuICB9O1xuICBtaW51dGVzVG9EYXlIb3VyTWluID0gKG1pbnV0ZXM6IG51bWJlcikgPT4ge1xuICAgIGlmICghbWludXRlcykgcmV0dXJuIHsgZGF5czogbnVsbCwgaG91cnM6IG51bGwsIG1pbnM6IG51bGwgfTtcbiAgICBjb25zdCBkYXlzID0gTWF0aC5mbG9vcihtaW51dGVzIC8gMTQ0MCkgfHwgMCxcbiAgICAgIG1pbml1dGVzRXhEYXlzID0gbWludXRlcyAlIDE0NDAgfHwgMCxcbiAgICAgIGhvdXJzID0gTWF0aC5mbG9vcihtaW5pdXRlc0V4RGF5cyAvIDYwKSB8fCAwLFxuICAgICAgbWlucyA9IG1pbml1dGVzRXhEYXlzICUgNjAgfHwgMDtcbiAgICByZXR1cm4geyBkYXlzLCBob3VycywgbWlucyB9O1xuICB9O1xuICBtaW51dGVzVG9EYXlIb3VyTWluU3RyID0gKG1pbnV0ZXM6IG51bWJlcikgPT4ge1xuICAgIGlmICghbWludXRlcykgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgcmV0ID0gdGhpcy5taW51dGVzVG9EYXlIb3VyTWluKG1pbnV0ZXMpO1xuICAgIHJldHVybiBgJHtyZXQuZGF5c30gJHtyZXQuaG91cnN9OiR7cmV0Lm1pbnN9YC50cmltKCk7XG4gIH07XG4gIG1pbnV0ZXNUb0RheUhvdXJNaW5TdHIyID0gKG1pbnV0ZXM6IG51bWJlcikgPT4ge1xuICAgIGlmICghbWludXRlcykgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgcmV0ID0gdGhpcy5taW51dGVzVG9EYXlIb3VyTWluKG1pbnV0ZXMpO1xuICAgIHJldHVybiBgJHtyZXQuZGF5c31kYXlzICR7cmV0LmhvdXJzfWhycyAke3JldC5taW5zfW1pbnNgLnRyaW0oKTtcbiAgfTtcbiAgZGF5SG91ck1pblRvSG91ck1pbnV0ZXMgPSAoZHlzOiBudW1iZXIsIGhyczogbnVtYmVyLCBtaW5zOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIWR5cyAmJiAhaHJzICYmICFtaW5zKSByZXR1cm4gJyc7XG4gICAgY29uc3QgZHlzVG9IcnMgPSAoZHlzIHx8IDApICogMjQ7XG4gICAgaHJzID0gKCtocnMgfHwgMCkgKyBkeXNUb0hycztcbiAgICByZXR1cm4gKGhycyB8fCAnMDAnKSArICc6JyArIChtaW5zIHx8ICcwMCcpO1xuICB9O1xuICBkaXNhYmxlT3JFbmFibGVJbnB1dHMgPSAoY29udHJvbHM6IEFic3RyYWN0Q29udHJvbFtdLCBkaXNhYmxlOiBib29sZWFuKSA9PiB7XG4gICAgaWYgKGRpc2FibGUpIHRoaXMuZGlzYWJsZUlucHV0cyhjb250cm9scyk7XG4gICAgZWxzZSB0aGlzLmVuYWJsZUlucHV0cyhjb250cm9scyk7XG4gIH07XG4gIGRpc2FibGVJbnB1dHMgPSAoY29udHJvbHM6IEFic3RyYWN0Q29udHJvbFtdKSA9PiB7XG4gICAgZm9yIChjb25zdCBjb250cm9sIG9mIGNvbnRyb2xzKSB7XG4gICAgICBjb250cm9sPy5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gIH07XG4gIGVuYWJsZUlucHV0cyA9IChjb250cm9sczogQWJzdHJhY3RDb250cm9sW10pID0+IHtcbiAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgY29udHJvbHMpIHtcbiAgICAgIGNvbnRyb2w/LmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICB9O1xuICBkYXlIb3VyTWluVG9NaW51dGVzID0gKGR5czogbnVtYmVyLCBocnM6IG51bWJlciwgbWluczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFkeXMgJiYgIWhycyAmJiAhbWlucykgcmV0dXJuIDA7XG4gICAgY29uc3QgZHlzVG9IcnMgPSAoZHlzIHx8IDApICogMjQ7XG4gICAgaHJzID0gKCtocnMgfHwgMCkgKyBkeXNUb0hycztcbiAgICByZXR1cm4gKGhycyB8fCAwKSAqIDYwICsgbWlucztcbiAgfTtcbiAgaG91ck1pblRvTWludXRlcyA9IChocnM6IG51bWJlciwgbWluczogbnVtYmVyKSA9PiB7XG4gICAgaWYgKCFocnMgJiYgIW1pbnMpIHJldHVybiBudWxsO1xuICAgIHJldHVybiAoaHJzIHx8IDApICogNjAgKyBtaW5zO1xuICB9O1xuICBob3VyTWluVG9NaW51dGVzMiA9IChocnNNaW5zOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBbaHJzLCBtaW5zXSA9IGhyc01pbnM/LnNwbGl0KCc6JykgfHwgWzAsIDBdO1xuICAgIHJldHVybiB0aGlzLmhvdXJNaW5Ub01pbnV0ZXMoK2hycywgK21pbnMpO1xuICB9O1xuICBub3RpZnkobWVzc2FnZTogc3RyaW5nLCBjbHM6IDAgfCAxIHwgMiB8IDMgPSAxLCBkdXJhdGlvbiA9IDUwMDAsIHRpdGxlID0gJ0Nsb3NlJykge1xuICAgIGlmIChjbHMgPT0gMCkgcmV0dXJuIHRoaXMuaW5mbyhtZXNzYWdlLCBjbHMpO1xuICAgIGlmICh0eXBlb2YgbWVzc2FnZSAhPSAnc3RyaW5nJykgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICBtZXNzYWdlID0gdHlwZW9mIG1lc3NhZ2UgPT0gJ3N0cmluZycgPyBtZXNzYWdlIDogJyc7XG4gICAgY29uc3QgcmVmID0gdGhpcy5zbmFja0Jhci5vcGVuKG1lc3NhZ2UsIHRpdGxlLCB7XG4gICAgICBkdXJhdGlvbixcbiAgICAgIGhvcml6b250YWxQb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgICB2ZXJ0aWNhbFBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICAgIHBhbmVsQ2xhc3M6IGNscyA9PSAxID8gJ2JnLXN1Y2Nlc3MnIDogY2xzID09IDIgPyAnYnRuLWluZm8nIDogY2xzID09IDMgPyAnYnRuLXdhcm5pbmcnIDogJ2JnLWRhbmdlcicsXG4gICAgfSk7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHJlZi5hZnRlckRpc21pc3NlZCgpLnBpcGUobWFwKChyKSA9PiByLmRpc21pc3NlZEJ5QWN0aW9uKSkpO1xuICB9XG5cbiAgc2Nyb2xsVG9Ub3AgPSAoKSA9PiB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG5cbiAgLyoqXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGRhdGUgdGltZSBsb2NhbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgZGF0ZXRpbWUtbG9jYWwgaW5wdXRcbiAgICovXG4gIGdldExvY2FsRGF0ZVRpbWVOb3cgPSAoKSA9PiB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgZGF0ZUNodW5rcyA9IGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCkuc3BsaXQoJy8nKTtcbiAgICByZXR1cm4gYCR7ZGF0ZUNodW5rc1syXX0tJHtkYXRlQ2h1bmtzWzFdfS0ke2RhdGVDaHVua3NbMF19YCArICdUJyArIGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKCk7XG4gIH07XG4gIC8qKiBAcmV0dXJucyBUaGUgY3VycmVudCBkYXRlIGxvY2FsIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBkYXRlIGlucHV0ICovXG4gIGxvY2FsRGF0ZU5vdyA9ICgpID0+IHtcbiAgICByZXR1cm4gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07XG4gIH07XG4gIGRhdGVGb3JtYXQgPSAoZGF0ZTogYW55LCBmb3JtYXQgPSAxKSA9PiB7XG4gICAgaWYgKCFkYXRlKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBkID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgaWYgKGZvcm1hdCA9PSAxKSB7XG4gICAgICByZXR1cm4gZC50b0RhdGVTdHJpbmcoKTtcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PSAyKSB7XG4gICAgICByZXR1cm4gZC5nZXREYXRlKCkgKyAnICcgKyBjb25maWcuTW9udGhzW2QuZ2V0TW9udGgoKV07XG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gMykge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsIGBFRUUgTU1NIGRkIFlZWVksIGhoOm1tIGFhYCk7XG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gNCkge1xuICAgICAgcmV0dXJuIGNvbmZpZy5Nb250aHNbZC5nZXRNb250aCgpXSArICcgJyArIGQuZ2V0RGF0ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9O1xuXG4gIHRvSmF2YURhdGVTdHJpbmcgPSAoaXNvRGF0ZVN0cmluZzogc3RyaW5nID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpKSA9PiB7XG4gICAgaWYgKCFpc29EYXRlU3RyaW5nKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gYCR7aXNvRGF0ZVN0cmluZy5zbGljZSgwLCAxOSl9YDtcbiAgICByZXR1cm4gYCR7aXNvRGF0ZVN0cmluZy5zbGljZSgwLCAxMCl9ICR7aXNvRGF0ZVN0cmluZy5zbGljZSgxMSwgMTkpfWA7XG4gIH07XG5cbiAgdG9KYXZhRGF0ZXRpbWVTdHJpbmcgPSAoaXNvRGF0ZVN0cmluZzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFpc29EYXRlU3RyaW5nKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBkYXRlID0gaXNvRGF0ZVN0cmluZy5pbmNsdWRlcygnVCcpID8gaXNvRGF0ZVN0cmluZyA6IG5ldyBEYXRlKGlzb0RhdGVTdHJpbmcpLnRvSVNPU3RyaW5nKCk7XG4gICAgcmV0dXJuIGAke2RhdGUuc2xpY2UoMCwgMTApfSAke2RhdGUuc2xpY2UoMTEsIDE5KX1gO1xuICB9O1xuXG4gIHRpbWVGb3JtYXQgPSAodGltZT86IGFueSkgPT4ge1xuICAgIGNvbnN0IHRpbWVBcnI6IGFueVtdID0gdGltZS5zcGxpdCgnICcpO1xuICAgIHRpbWVBcnJbMF0gPSB0aW1lQXJyWzBdLnNwbGl0KCc6Jykuc3BsaWNlKDAsIDIpLmpvaW4oJzonKTtcbiAgICByZXR1cm4gdGltZUFyci5qb2luKCcgJyk7XG4gIH07XG4gIGZ1bGxEYXRlVGltZSA9ICh0aW1lc3RhbXA6IHN0cmluZyB8IG51bWJlcikgPT4ge1xuICAgIC8vIGRlYnVnZ2VyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZUZvcm1hdCh0aW1lc3RhbXAsIDMpO1xuICB9O1xuICBkYXlzRm9ybWF0dGVyID0gKGRheXM6IG51bWJlcikgPT4ge1xuICAgIGlmICghZGF5cykge1xuICAgICAgcmV0dXJuICctJztcbiAgICB9XG4gICAgbGV0IHlyOiBudW1iZXIsXG4gICAgICBtdDogbnVtYmVyLFxuICAgICAgZHk6IG51bWJlcixcbiAgICAgIHJldDogc3RyaW5nLFxuICAgICAgX3lyID0gMzY1LFxuICAgICAgX210ID0gMzA7XG4gICAgaWYgKGRheXMgPiBfeXIpIHtcbiAgICAgIHlyID0gTWF0aC5mbG9vcihkYXlzIC8gX3lyKTtcbiAgICB9XG4gICAgaWYgKGRheXMgPiBfbXQpIHtcbiAgICAgIG10ID0gTWF0aC5mbG9vcigoZGF5cyAlIF95cikgLyBfbXQpO1xuICAgIH1cbiAgICBkeSA9IChkYXlzICUgX3lyKSAlIF9tdDtcbiAgICByZXQgPSBgJHt5ciA/IHRoaXMucGx1YXJsaXplcih5ciwgJ3lyJykgOiAnJ30gJHttdCA/IHRoaXMucGx1YXJsaXplcihtdCwgJ210aCcpIDogJyd9ICR7dGhpcy5wbHVhcmxpemVyKGR5LCAnZHknKX1gO1xuICAgIHJldHVybiByZXQ7XG4gIH07XG4gIG1vbnRoc0Zvcm1hdHRlciA9IChtb250aHM6IG51bWJlcikgPT4ge1xuICAgIGlmICghbW9udGhzKSB7XG4gICAgICByZXR1cm4gJy0nO1xuICAgIH1cbiAgICBsZXQgeXI6IG51bWJlcixcbiAgICAgIG10OiBudW1iZXIsXG4gICAgICByZXQ6IHN0cmluZyxcbiAgICAgIF95ciA9IDEyO1xuICAgIGlmIChtb250aHMgPiBfeXIpIHtcbiAgICAgIHlyID0gTWF0aC5mbG9vcihtb250aHMgLyBfeXIpO1xuICAgIH1cbiAgICBtdCA9IG1vbnRocyAlIF95cjtcbiAgICByZXQgPSBgJHt5ciA/IHRoaXMucGx1YXJsaXplcih5ciwgJ3lyJykgOiAnJ30gJHttdCA/IHRoaXMucGx1YXJsaXplcihtdCwgJ210aCcpIDogJyd9YDtcbiAgICByZXR1cm4gcmV0O1xuICB9O1xuICBwbHVhcmxpemVyID0gKHZhbDogbnVtYmVyLCB0eHQ6IHN0cmluZywgcGx1cmFsPzogc3RyaW5nKSA9PiB7XG4gICAgcGx1cmFsID0gcGx1cmFsIHx8IHR4dCArICdzJztcbiAgICByZXR1cm4gdmFsICsgKHZhbCA9PSAxID8gdHh0IDogcGx1cmFsKTtcbiAgfTtcbiAgZGVjaW1hbFRvUGVyY2VudGFnZSA9IChkZWM6IG51bWJlcikgPT4ge1xuICAgIHJldHVybiBkZWMgKiAxMDAgKyAnJSc7XG4gIH07XG4gIGxvZ0Zvcm0gPSAoZm9ybSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCdGT1JNJywgZm9ybSwgJ1ZBTFVFUycsIGZvcm0udmFsdWUgYXMgYW55KTtcbiAgfTtcblxuICB0b0NTVihkYXRhOiBhbnlbXSwgaGVhZGVyTmFtZXM6IHN0cmluZ1tdLCBmaWxlbmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVwbGFjZXIgPSAoa2V5LCB2YWx1ZSkgPT4gKHZhbHVlID09PSBudWxsID8gJycgOiB2YWx1ZSk7IC8vIHNwZWNpZnkgaG93IHlvdSB3YW50IHRvIGhhbmRsZSBudWxsIHZhbHVlcyBoZXJlXG5cbiAgICBsZXQgY3N2ID0gZGF0YS5tYXAoKHJvdykgPT4gaGVhZGVyTmFtZXMubWFwKChmaWVsZE5hbWUpID0+IEpTT04uc3RyaW5naWZ5KHJvd1tmaWVsZE5hbWVdLCByZXBsYWNlcikpLmpvaW4oJywnKSk7XG4gICAgY3N2LnVuc2hpZnQoaGVhZGVyTmFtZXMuam9pbignLCcpKTtcbiAgICBsZXQgY3N2QXJyYXkgPSBjc3Yuam9pbignXFxyXFxuJyk7XG5cbiAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtjc3ZBcnJheV0sIHsgdHlwZTogJ3RleHQvY3N2JyB9KTtcbiAgICBzYXZlQXMoYmxvYiwgZmlsZW5hbWUgKyAnLmNzdicpO1xuICB9XG5cbiAgaXNQaWN0dXJlRm9ybWF0KGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoIWZpbGVOYW1lKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgUElDVFVSRV9GT1JNQVRTID0gWycuanBnJywgJy5qcGVnJywgJy5wbmcnLCAnLmdpZiddO1xuICAgIHJldHVybiBQSUNUVVJFX0ZPUk1BVFMuc29tZSgoZm9ybWF0KSA9PiBmaWxlTmFtZS5lbmRzV2l0aChmb3JtYXQpKTtcbiAgfVxuICBvYmplY3RUb0FycmF5PFQ+KG9iajogYW55KSB7XG4gICAgY29uc3QgcmV0ID0gW107XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICByZXQucHVzaChvYmpba2V5XSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXQgYXMgVFtdO1xuICB9XG4gIGZvcm1hdEZpZWxkKGZpZWxkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRvVGl0bGVDYXNlKGZpZWxkPy50b1NlbnRlbmNlQ2FzZSgpKTtcbiAgfVxuICAvKipcbiAgICogVXNlcyBhIHdlYiB3b3JrZXIgdG8gcGVyZm9ybSBhIHRhc2tcbiAgICogQGV4YW1wbGUgbmV3IFdvcmtlcihuZXcgVVJMKCcuL3VwbG9hZC1jc3Yud29ya2VyJywgaW1wb3J0Lm1ldGEudXJsKSlcbiAgICogQHBhcmFtIHdvcmtlciBXZWIgd29ya2VyIG9iamVjdFxuICAgKiBAcGFyYW0gaW5wdXREYXRhIERhdGEgYmVpbmcgcGFzc2VkIGludG8gd2ViIHdvcmtlclxuICAgKiBAcmV0dXJucyBEYXRhIGdvdHRlbiBmcm9tIHdlYiB3b3JrZXJcbiAgICovXG4gIHVzZVdlYldvcmtlcjxUID0gYW55Pih3b3JrZXI6IFdvcmtlciwgaW5wdXREYXRhOiBhbnksIGNvbmRpdGlvbnM/OiB7IHN0b3A6IChyZXMpID0+IGJvb2xlYW47IGVycm9yOiAocmVzKSA9PiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8VD4oKHN1YikgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBXb3JrZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKGlucHV0RGF0YSk7XG4gICAgICAgICAgd29ya2VyLm9ubWVzc2FnZSA9IChyKSA9PiB7XG4gICAgICAgICAgICAvLyBkZWJ1Z2dlclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coZSk7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gci5kYXRhO1xuICAgICAgICAgICAgaWYgKGNvbmRpdGlvbnMpIHtcbiAgICAgICAgICAgICAgaWYgKGNvbmRpdGlvbnMuZXJyb3IoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICBzdWIuZXJyb3IoZGF0YSk7XG4gICAgICAgICAgICAgICAgc3ViLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbmRpdGlvbnMuc3RvcChkYXRhKSkge1xuICAgICAgICAgICAgICAgIHN1Yi5uZXh0KGRhdGEpO1xuICAgICAgICAgICAgICAgIHN1Yi5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIHdvcmtlci50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdWIubmV4dChkYXRhKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc3ViLm5leHQoZGF0YSBhcyBhbnkpO1xuICAgICAgICAgICAgICBzdWIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgJ25vV29ya2VyJztcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgc3ViLmVycm9yKGUpO1xuICAgICAgICBzdWIuY29tcGxldGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBhc3luYyBhcnJheVRvQ1NWKGRhdGE6IGFueVtdLCBmaWxlbmFtZTogc3RyaW5nLCBoZWFkZXJNYXA/OiBUYWJsZUNvbFtdLCBleHRyYUNvbmZpZz86IHsgcHJlZml4Pzogc3RyaW5nOyBoaWRlSGVhZGVyPzogYm9vbGVhbiB9KSB7XG4gICAgLy8gZGVidWdnZXI7XG4gICAgbGV0IF9kYXRhOiBhbnlbXTtcbiAgICBjb25zdCBoZWFkZXJNYXBXaXRoRm9ybWF0dGVyczogVGFibGVDb2xbXSA9IGhlYWRlck1hcD8uZmlsdGVyKCh4KSA9PiB4LmZvcm1hdHRlciB8fCB4LmZvcm1hdHRlclJvdykgfHwgdW5kZWZpbmVkO1xuICAgIGlmIChoZWFkZXJNYXBXaXRoRm9ybWF0dGVycz8ubGVuZ3RoKSB7XG4gICAgICBfZGF0YSA9IGNsb25lRGVlcChkYXRhKTtcbiAgICAgIGZvciAoY29uc3QgZm9ybWF0dGVyIG9mIGhlYWRlck1hcFdpdGhGb3JtYXR0ZXJzKSB7XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIF9kYXRhKSB7XG4gICAgICAgICAgcm93W2Zvcm1hdHRlci5mXSA9IGZvcm1hdHRlci5mb3JtYXR0ZXIgPyBhd2FpdCBmb3JtYXR0ZXIuZm9ybWF0dGVyKHJvd1tmb3JtYXR0ZXIuZl0pIDogZm9ybWF0dGVyLmZvcm1hdHRlclJvdyhyb3cpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIF9kYXRhID0gZGF0YTtcbiAgICB9XG4gICAgY29uc3Qgc2hvd0hlYWRlciA9ICFleHRyYUNvbmZpZz8uaGlkZUhlYWRlcjtcbiAgICBsZXQgY3N2ID0gUGFwYS51bnBhcnNlKF9kYXRhLCB7XG4gICAgICBoZWFkZXI6IHNob3dIZWFkZXIgJiYgIWhlYWRlck1hcD8ubGVuZ3RoLFxuICAgICAgY29sdW1uczogaGVhZGVyTWFwPy5tYXAoKHgpID0+IHguZj8udG9TdHJpbmcoKSkgfHwgdW5kZWZpbmVkLFxuICAgIH0pO1xuICAgIHRoaXMuZG93bmxvYWRlcihcbiAgICAgIChleHRyYUNvbmZpZz8ucHJlZml4ID8gZXh0cmFDb25maWc/LnByZWZpeCArICdcXHJcXG4nIDogJycpICtcbiAgICAgICAgKGhlYWRlck1hcD8ubGVuZ3RoID8gaGVhZGVyTWFwLm1hcCgoZmllbGROYW1lKSA9PiBmaWVsZE5hbWUudCkuam9pbignLCcpICsgYFxcclxcbmAgOiAnJykgK1xuICAgICAgICBjc3YsXG4gICAgICBmaWxlbmFtZT8uZW5kc1dpdGgoJy5jc3YnKSA/IGZpbGVuYW1lIDogZmlsZW5hbWUgKyAnLmNzdicsXG4gICAgKTtcblxuICAgIHRoaXMuaW5mbyhgRG93bmxvYWRlZCAke2ZpbGVuYW1lfWApO1xuICB9XG5cbiAgam9pbkNTVlJvd3MoLi4uQ1NWczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gQ1NWcy5qb2luKCdcXHJcXG4nKTtcbiAgfVxuICBhc3luYyBhcnJheVRvQ1NWU3RyaW5nPFQgPSBhbnk+KGRhdGE6IFRbXSwgaGVhZGVyTWFwPzogVGFibGVDb2w8VD5bXSwgZXh0cmFDb25maWc/OiB7IHByZWZpeD86IHN0cmluZzsgaGlkZUhlYWRlcj86IGJvb2xlYW4gfSkge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGxldCBfZGF0YTogYW55W107XG4gICAgY29uc3QgaGVhZGVyTWFwV2l0aEZvcm1hdHRlcnM6IFRhYmxlQ29sW10gPSBoZWFkZXJNYXA/LmZpbHRlcigoeCkgPT4geC5mb3JtYXR0ZXIgfHwgeC5mb3JtYXR0ZXJSb3cpIHx8IHVuZGVmaW5lZDtcbiAgICBpZiAoaGVhZGVyTWFwV2l0aEZvcm1hdHRlcnM/Lmxlbmd0aCkge1xuICAgICAgX2RhdGEgPSBjbG9uZURlZXAoZGF0YSk7XG4gICAgICBmb3IgKGNvbnN0IGZvcm1hdHRlciBvZiBoZWFkZXJNYXBXaXRoRm9ybWF0dGVycykge1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBfZGF0YSkge1xuICAgICAgICAgIHJvd1tmb3JtYXR0ZXIuZl0gPSBmb3JtYXR0ZXIuZm9ybWF0dGVyID8gYXdhaXQgZm9ybWF0dGVyLmZvcm1hdHRlcihyb3dbZm9ybWF0dGVyLmZdKSA6IGZvcm1hdHRlci5mb3JtYXR0ZXJSb3cocm93KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfZGF0YSA9IGRhdGE7XG4gICAgfVxuICAgIGNvbnN0IHNob3dIZWFkZXIgPSAhZXh0cmFDb25maWc/LmhpZGVIZWFkZXI7XG4gICAgbGV0IGNzdiA9IFBhcGEudW5wYXJzZShfZGF0YSwge1xuICAgICAgaGVhZGVyOiBzaG93SGVhZGVyICYmICFoZWFkZXJNYXA/Lmxlbmd0aCxcbiAgICAgIGNvbHVtbnM6IGhlYWRlck1hcD8ubWFwKCh4KSA9PiB4LmY/LnRvU3RyaW5nKCkpIHx8IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgICByZXR1cm4gKFxuICAgICAgKGV4dHJhQ29uZmlnPy5wcmVmaXggPyBleHRyYUNvbmZpZz8ucHJlZml4ICsgJ1xcclxcbicgOiAnJykgK1xuICAgICAgKGhlYWRlck1hcD8ubGVuZ3RoID8gaGVhZGVyTWFwLm1hcCgoZmllbGROYW1lKSA9PiBmaWVsZE5hbWUudCkuam9pbignLCcpICsgYFxcclxcbmAgOiAnJykgK1xuICAgICAgY3N2XG4gICAgKTtcbiAgfVxuXG4gIGlzRGF0ZVZhbHVlID0gKHYpID0+ICh2ID8gdls0XSA9PSAnLScgJiYgdls3XSA9PSAnLScgOiBmYWxzZSk7XG4gIGlzRGF0VGltZVZhbHVlID0gKHYpID0+ICh2ID8gdi5pbmNsdWRlcygnVCcpICYmIHZbNF0gPT0gJy0nICYmIHZbN10gPT0gJy0nIDogZmFsc2UpO1xuXG4gIHllc05vQ2VsbEZvcm1hdHRlckNvbG91cmVkID0gKHYpID0+IGA8c3BhbiBjbGFzcz0nJHt2ID8gJ3N1Y2Nlc3NDZWxsJyA6ICdpbmVydENlbGwnfSc+JHt2ID8gJ1llcycgOiB2ID09IGZhbHNlID8gJ05vJyA6ICctJ308L3NwYW4+YDtcbiAgeWVzTm9DZWxsRm9ybWF0dGVyID0gKHYpID0+IGAke3YgPyAnWWVzJyA6ICdObyd9YDtcbiAgc3RhdHVzQ2VsbEZvcm1hdHRlciA9IChzdGF0dXM6IFN0YXR1cykgPT5cbiAgICBgPHNwYW4gY2xhc3M9JyR7c3RhdHVzID09ICdDT01QTEVURUQnID8gJ3N1Y2Nlc3NDZWxsJyA6IHN0YXR1cyA9PSAnUEVORElORycgPyAncGVuZGluZ0NlbGwnIDogJ2luZXJ0Q2VsbCd9Jz4ke3N0YXR1cyB8fCAnLSd9PC9zcGFuPmA7XG5cbiAgY2VsbFN0YXR1c0Zvcm1hdHRlciA9XG4gICAgPFQgPSBhbnk+KGd1aWRlOiB7IHN1Y2Nlc3NWYWw/OiBUOyBwZW5kaW5nVmFsPzogVDsgZXJyb3JWYWw/OiBUOyBpbmVydFZhbD86IFQgfSkgPT5cbiAgICAodikgPT5cbiAgICAgIGA8c3BhbiBjbGFzcz0nJHtcbiAgICAgICAgdiA9PSBndWlkZS5zdWNjZXNzVmFsID8gJ3N1Y2Nlc3NDZWxsJyA6IHYgPT0gZ3VpZGUucGVuZGluZ1ZhbCA/ICdwZW5kaW5nQ2VsbCcgOiB2ID09IGd1aWRlLmVycm9yVmFsID8gJ2Vycm9yQ2VsbCcgOiAnaW5lcnRDZWxsJ1xuICAgICAgfSc+JHt2fTwvc3Bhbj5gO1xuXG4gIGdlbmVyYXRlVVVJRCgpIHtcbiAgICBsZXQgZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIGxldCBkMiA9ICh0eXBlb2YgcGVyZm9ybWFuY2UgIT09ICd1bmRlZmluZWQnICYmIHBlcmZvcm1hbmNlLm5vdyAmJiBwZXJmb3JtYW5jZS5ub3coKSAqIDEwMDApIHx8IDA7IC8vVGltZSBpbiBtaWNyb3NlY29uZHMgc2luY2UgcGFnZS1sb2FkIG9yIDAgaWYgdW5zdXBwb3J0ZWRcbiAgICByZXR1cm4gJ3h4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCcucmVwbGFjZSgvW3h5XS9nLCAoYykgPT4ge1xuICAgICAgbGV0IHIgPSBNYXRoLnJhbmRvbSgpICogMTY7IC8vcmFuZG9tIG51bWJlciBiZXR3ZWVuIDAgYW5kIDE2XG4gICAgICBpZiAoZCA+IDApIHtcbiAgICAgICAgLy9Vc2UgdGltZXN0YW1wIHVudGlsIGRlcGxldGVkXG4gICAgICAgIHIgPSAoZCArIHIpICUgMTYgfCAwO1xuICAgICAgICBkID0gTWF0aC5mbG9vcihkIC8gMTYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy9Vc2UgbWljcm9zZWNvbmRzIHNpbmNlIHBhZ2UtbG9hZCBpZiBzdXBwb3J0ZWRcbiAgICAgICAgciA9IChkMiArIHIpICUgMTYgfCAwO1xuICAgICAgICBkMiA9IE1hdGguZmxvb3IoZDIgLyAxNik7XG4gICAgICB9XG4gICAgICByZXR1cm4gKGMgPT09ICd4JyA/IHIgOiAociAmIDB4MykgfCAweDgpLnRvU3RyaW5nKDE2KTtcbiAgICB9KTtcbiAgfVxuXG4gIGluZm86ICh0ZXh0OiBzdHJpbmcsIHN0YXR1cz86IDAgfCAyIHwgMSwgaGVhZGluZz86IHN0cmluZywgYnRucz86IElJbmZvRGlhbG9nQnRuW10sIGRpc2FibGVDbG9zZT86IGJvb2xlYW4pID0+IFByb21pc2U8Ym9vbGVhbj47XG4gIGRlYm91bmNlciA9IHRoaXMuZGVib3VuY2VyU2VydmljZS5kZWJvdW5jZXI7XG5cbiAgYXN5bmNWYWxpZGF0aW9uID0gdGhpcy5kZWJvdW5jZXJTZXJ2aWNlLmFzeW5jVmFsaWRhdGlvbjtcbiAgLy8jcmVnaW9uIHJvdXRlXG4gIHJvdXRlUGFyYW1zMSA9IHRoaXMucm91dGVTZXJ2aWNlLnJvdXRlUGFyYW1zMTtcbiAgcm91dGVQYXJhbXMyID0gdGhpcy5yb3V0ZVNlcnZpY2Uucm91dGVQYXJhbXMyO1xuICByb3V0ZVBhcmFtczMgPSB0aGlzLnJvdXRlU2VydmljZS5yb3V0ZVBhcmFtczM7XG4gIC8vI2VuZHJlZ2lvblxuICBzdGFydFBsID0gdGhpcy5wUy5zdGFydFBsO1xuICBzdG9wUGwgPSB0aGlzLnBTLnN0b3BQbDtcblxuICBjcmVhdGVTdWJzY3JpcHRpb25NYW5hZ2VyID0gKC4uLnN1YnM6IFN1YnNjcmlwdGlvbltdKSA9PiB7XG4gICAgbGV0IF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IHN1YnMgfHwgW107XG4gICAgY29uc3QgY2xlYXIgPSAoKSA9PiB7XG4gICAgICBfc3Vicy5mb3JFYWNoKCh4KSA9PiB4LnVuc3Vic2NyaWJlKCkpO1xuICAgICAgX3N1YnMgPSBbXTtcbiAgICB9O1xuICAgIGNvbnN0IHB1c2ggPSAoLi4uc3ViczogU3Vic2NyaXB0aW9uW10pID0+IHtcbiAgICAgIF9zdWJzLnB1c2goLi4uc3Vicyk7XG4gICAgfTtcblxuICAgIHJldHVybiB7IGNsZWFyLCBwdXNoIH07XG4gIH07XG5cbiAgY3JlYXRlQ2FjaGVNYW5hZ2VyID0gKCkgPT4ge1xuICAgIGxldCBfY2FjaGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBjb25zdCBjbGVhciA9ICgpID0+IHtcbiAgICAgIF9jYWNoZSA9IHt9O1xuICAgIH07XG4gICAgY29uc3QgZHJvcCA9ICgpID0+IHtcbiAgICAgIF9jYWNoZSA9IHVuZGVmaW5lZDtcbiAgICB9O1xuICAgIGNvbnN0IHNhdmUgPSAoa2V5OiBzdHJpbmcsIGRhdGE6IGFueSkgPT4ge1xuICAgICAgaWYgKCFfY2FjaGUpIF9jYWNoZSA9IHt9O1xuICAgICAgX2NhY2hlW2tleV0gPSBkYXRhO1xuICAgIH07XG4gICAgY29uc3QgZ2V0ID0gPFQ+KGtleTogc3RyaW5nKSA9PiBfY2FjaGU/LltrZXldIGFzIFQ7XG5cbiAgICByZXR1cm4geyBjbGVhciwgZHJvcCwgZ2V0LCBzYXZlIH07XG4gIH07XG5cbiAgdHJhY2tCeUN1c3RvbUlEID0gKGluZGV4LCBpdGVtKSA9PiB7XG4gICAgaWYgKCFpdGVtW3RoaXMuY3VzdG9tSURGaWVsZF0pIHtcbiAgICAgIGl0ZW1bdGhpcy5jdXN0b21JREZpZWxkXSA9IHRoaXMuZ2VuZXJhdGVVVUlEKCk7XG4gICAgICBjb25zb2xlLmxvZygnc2V0IGN1c3RvbSBpZCcpO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbVt0aGlzLmN1c3RvbUlERmllbGRdO1xuICB9O1xuICB0cmFja0J5Rm9yRm9ybXMgPSAoaW5kZXgsIGl0ZW06IEZvcm1Hcm91cCkgPT4ge1xuICAgIGlmICghaXRlbS5jb250cm9sc1t0aGlzLmN1c3RvbUlERmllbGRdKSBpdGVtLmFkZENvbnRyb2wodGhpcy5jdXN0b21JREZpZWxkLCBuZXcgRm9ybUNvbnRyb2wodGhpcy5nZW5lcmF0ZVVVSUQoKSkpO1xuICAgIHJldHVybiBpdGVtLmNvbnRyb2xzW3RoaXMuY3VzdG9tSURGaWVsZF0udmFsdWU7XG4gIH07XG4gIG9iamVjdFRvRm9ybUdyb3VwID0gPFQ+KGRhdGE6IFQpID0+IHtcbiAgICBjb25zdCBmb3JtID0gbmV3IEZvcm1Hcm91cDxJU3RyaWN0Rm9ybUdyb3VwPFQ+Pih7fSBhcyBhbnkpO1xuICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KSkgZm9ybS5hZGRDb250cm9sKGtleSwgbmV3IEZvcm1Db250cm9sKGRhdGFba2V5XSkpO1xuICAgIHJldHVybiBmb3JtO1xuICB9O1xuXG4gIGZvcm1TY2hlbWFUb0Zvcm1Hcm91cCA9IDxUIGV4dGVuZHMgeyBbeDogc3RyaW5nXTogYW55IH0+KHNjaGVtYTogSUZvcm1TY2hlbWFbXSwgZGF0YT86IFQpID0+IHtcbiAgICBjb25zdCBmb3JtID0gbmV3IEZvcm1Hcm91cDxJU3RyaWN0Rm9ybUdyb3VwPFQ+Pih7fSBhcyBhbnkpO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBzY2hlbWEpIGZvcm0uYWRkQ29udHJvbChpdGVtLmZpZWxkLnRvU3RyaW5nKCksIG5ldyBGb3JtQ29udHJvbChkYXRhW2l0ZW0uZmllbGQudG9TdHJpbmcoKV0pKTtcbiAgICByZXR1cm4gZm9ybTtcbiAgfTtcblxuICB0aW1lQ29kZUJsb2NrID0gPFQ+KGxhYmVsOiBzdHJpbmcsIGNiOiAoKSA9PiBUKSA9PiB7XG4gICAgY29uc3Qgc3RhcnRUSW1lID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCByZXMgPSBjYigpO1xuICAgIGNvbnN0IGVuZFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIGNvbnNvbGUubG9nKGxhYmVsLCBzdGFydFRJbWUsIGVuZFRpbWUsIChlbmRUaW1lIC0gc3RhcnRUSW1lKSAvIDEwMDAgKyAnc2VjJyk7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvKipcbiAgICogRGVsZXRlIG51bGwgb3IgdW5kZWZpbmVkIGZpZWxkcyBmcm9tIGFuIG9iamVjdFxuICAgKiBAcGFyYW0gb2JqIE9iamVjdCB0byBkZWxldGUgZnJvbVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZGVsZXRlTnVsbCA9IDxUPihvYmo6IFQpID0+IHtcbiAgICBjb25zdCByZXQ6IFQgPSB7fSBhcyBhbnk7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAob2JqW2tleV0gPT09IG51bGwgfHwgb2JqW2tleV0gPT09IHVuZGVmaW5lZCB8fCBvYmpba2V5XSA9PT0gJycpIGNvbnRpbnVlO1xuICAgICAgZWxzZSByZXRba2V5XSA9IG9ialtrZXldO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9O1xufVxuIl19
@@ -37,13 +37,13 @@ export class InfoDialogComponent {
37
37
  this.dialogRef.close(false);
38
38
  }
39
39
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: InfoDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
40
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.7", type: InfoDialogComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div class=\"d-flex justify-content-between align-items-center\">\n <div class=\"text-{{ cls() }} ms-3 font-weight-bold text-uppercase\">\n <i class=\"fa fa-{{ data?.status ? 'check-circle' : 'exclamation-circle' }}\"></i>\n {{ data?.heading || 'Notice' | appTranslate | async }}\n </div>\n <button mat-icon-button (click)=\"yes()\" class=\"btn-outline-danger\"><i class=\"material-icons\">close</i></button>\n</div>\n\n<div class=\"info-body\" [innerHTML]=\"data?.text\"></div>\n\n@if (data?.btns?.length) {\n <div class=\"info-buttons\">\n <div class=\"row justify-content-center\">\n @for (item of data?.btns; track item) {\n <div class=\"col-md-auto my-1\">\n <app-btn [type]=\"item.type || 'secondary'\" [icon]=\"item.icon\" (mclick)=\"item.action($event); yes()\">\n {{ item.value || item.label }}\n </app-btn>\n </div>\n }\n </div>\n </div>\n}\n<div class=\"bg-{{ cls() }} mt-2 rounded bar\"></div>\n", styles: [":host{text-align:center}:host .bar{height:5px}:host .info-body{overflow-wrap:anywhere;white-space:pre-line}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "centerBtn", "danger", "warning", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "disabled", "form", "forms", "help", "iconBtn", "loading", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid"], outputs: ["mclick"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TranslatePipe, name: "appTranslate" }] }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.7", type: InfoDialogComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div class=\"d-flex justify-content-between align-items-center\">\n <div class=\"text-{{ cls() }} ms-3 font-weight-bold text-uppercase\">\n <i class=\"fa fa-{{ data?.status ? 'check-circle' : 'exclamation-circle' }}\"></i>\n {{ data?.heading || 'Notice' | appTranslate | async }}\n </div>\n <button mat-icon-button (click)=\"yes()\" class=\"btn-outline-danger\"><i class=\"material-icons\">close</i></button>\n</div>\n\n<div class=\"info-body\" [innerHTML]=\"data?.text\"></div>\n\n@if (data?.btns?.length) {\n <div class=\"info-buttons\">\n <div class=\"row justify-content-center\">\n @for (item of data?.btns; track item) {\n <div class=\"col-md-auto my-1\">\n <app-btn [type]=\"item.type || 'secondary'\" [icon]=\"item.icon\" (mclick)=\"item.action($event); yes()\">\n {{ item.value || item.label }}\n </app-btn>\n </div>\n }\n </div>\n </div>\n}\n<div class=\"bg-{{ cls() }} mt-2 rounded bar\"></div>\n", styles: [":host{text-align:center}:host .bar{height:5px}:host .info-body{overflow-wrap:anywhere;white-space:pre-line;padding:1rem}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "centerBtn", "danger", "warning", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "disabled", "form", "forms", "help", "iconBtn", "loading", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid"], outputs: ["mclick"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TranslatePipe, name: "appTranslate" }] }); }
41
41
  }
42
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: InfoDialogComponent, decorators: [{
43
43
  type: Component,
44
- args: [{ standalone: true, imports: [MatButtonModule, NgFor, BtnComponent, AsyncPipe, TranslatePipe], template: "<div class=\"d-flex justify-content-between align-items-center\">\n <div class=\"text-{{ cls() }} ms-3 font-weight-bold text-uppercase\">\n <i class=\"fa fa-{{ data?.status ? 'check-circle' : 'exclamation-circle' }}\"></i>\n {{ data?.heading || 'Notice' | appTranslate | async }}\n </div>\n <button mat-icon-button (click)=\"yes()\" class=\"btn-outline-danger\"><i class=\"material-icons\">close</i></button>\n</div>\n\n<div class=\"info-body\" [innerHTML]=\"data?.text\"></div>\n\n@if (data?.btns?.length) {\n <div class=\"info-buttons\">\n <div class=\"row justify-content-center\">\n @for (item of data?.btns; track item) {\n <div class=\"col-md-auto my-1\">\n <app-btn [type]=\"item.type || 'secondary'\" [icon]=\"item.icon\" (mclick)=\"item.action($event); yes()\">\n {{ item.value || item.label }}\n </app-btn>\n </div>\n }\n </div>\n </div>\n}\n<div class=\"bg-{{ cls() }} mt-2 rounded bar\"></div>\n", styles: [":host{text-align:center}:host .bar{height:5px}:host .info-body{overflow-wrap:anywhere;white-space:pre-line}\n"] }]
44
+ args: [{ standalone: true, imports: [MatButtonModule, NgFor, BtnComponent, AsyncPipe, TranslatePipe], template: "<div class=\"d-flex justify-content-between align-items-center\">\n <div class=\"text-{{ cls() }} ms-3 font-weight-bold text-uppercase\">\n <i class=\"fa fa-{{ data?.status ? 'check-circle' : 'exclamation-circle' }}\"></i>\n {{ data?.heading || 'Notice' | appTranslate | async }}\n </div>\n <button mat-icon-button (click)=\"yes()\" class=\"btn-outline-danger\"><i class=\"material-icons\">close</i></button>\n</div>\n\n<div class=\"info-body\" [innerHTML]=\"data?.text\"></div>\n\n@if (data?.btns?.length) {\n <div class=\"info-buttons\">\n <div class=\"row justify-content-center\">\n @for (item of data?.btns; track item) {\n <div class=\"col-md-auto my-1\">\n <app-btn [type]=\"item.type || 'secondary'\" [icon]=\"item.icon\" (mclick)=\"item.action($event); yes()\">\n {{ item.value || item.label }}\n </app-btn>\n </div>\n }\n </div>\n </div>\n}\n<div class=\"bg-{{ cls() }} mt-2 rounded bar\"></div>\n", styles: [":host{text-align:center}:host .bar{height:5px}:host .info-body{overflow-wrap:anywhere;white-space:pre-line;padding:1rem}\n"] }]
45
45
  }], ctorParameters: () => [{ type: undefined, decorators: [{
46
46
  type: Inject,
47
47
  args: [MAT_DIALOG_DATA]
48
48
  }] }, { type: i1.MatDialogRef }] });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2luZm8tZGlhbG9nL2luZm8tZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbmZvLWRpYWxvZy9pbmZvLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxJQUFJLGVBQWUsRUFBZ0MsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBUzNELE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsWUFFUyxJQUtOLEVBQ00sU0FBNEM7UUFONUMsU0FBSSxHQUFKLElBQUksQ0FLVjtRQUNNLGNBQVMsR0FBVCxTQUFTLENBQW1DO1FBV3JELGlCQUFZLEdBQUcsQ0FBQyxLQUFtQixFQUFFLElBQW9CLEVBQUUsRUFBRTtZQUMzRCxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BCLElBQUksSUFBSSxFQUFFLGVBQWU7Z0JBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwRCxDQUFDLENBQUM7UUFDRixRQUFHLEdBQUcsQ0FBQyxTQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQWEsRUFBRSxFQUFFO1lBQ3BELFFBQVEsTUFBTSxFQUFFO2dCQUNkLEtBQUssQ0FBQztvQkFDSixPQUFPLFNBQVMsQ0FBQztnQkFDbkIsS0FBSyxDQUFDO29CQUNKLE9BQU8sTUFBTSxDQUFDO2dCQUNoQixLQUFLLENBQUM7b0JBQ0osT0FBTyxRQUFRLENBQUM7Z0JBQ2xCO29CQUNFLE9BQU8sRUFBRSxDQUFDO2FBQ2I7UUFDSCxDQUFDLENBQUM7SUF6QkMsQ0FBQztJQUVKLFFBQVEsS0FBSSxDQUFDO0lBQ2IsR0FBRztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFDRCxFQUFFO1FBQ0EsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQzs4R0FsQlUsbUJBQW1CLGtCQUVwQixlQUFlO2tHQUZkLG1CQUFtQix3RUNmaEMsbTlCQXdCQSxzS0RYWSxlQUFlLDRJQUFTLFlBQVksK2FBQUUsU0FBUyx5Q0FBRSxhQUFhOzsyRkFFN0QsbUJBQW1CO2tCQU4vQixTQUFTO2lDQUdJLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxhQUFhLENBQUM7OzBCQUl0RSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEgYXMgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgYXMgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IEJ0bkNvbXBvbmVudCB9IGZyb20gJy4uL2J0bi9idG4uY29tcG9uZW50JztcbmltcG9ydCB7IE5nRm9yLCBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IElCdG4gfSBmcm9tICcuLi9idG4vYnRuLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9pbmZvLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9pbmZvLWRpYWxvZy5jb21wb25lbnQuc2NzcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNYXRCdXR0b25Nb2R1bGUsIE5nRm9yLCBCdG5Db21wb25lbnQsIEFzeW5jUGlwZSwgVHJhbnNsYXRlUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIEluZm9EaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSlcbiAgICBwdWJsaWMgZGF0YToge1xuICAgICAgdGV4dDogc3RyaW5nO1xuICAgICAgaGVhZGluZzogc3RyaW5nO1xuICAgICAgc3RhdHVzOiBudW1iZXI7XG4gICAgICBidG5zOiBJSW5mb0RpYWxvZ0J0bltdO1xuICAgIH0sXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEluZm9EaWFsb2dDb21wb25lbnQ+LFxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxuICB5ZXMoKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodHJ1ZSk7XG4gIH1cbiAgbm8oKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZmFsc2UpO1xuICB9XG5cbiAgaGFuZGxlQWN0aW9uID0gKGV2ZW50OiBQb2ludGVyRXZlbnQsIGl0ZW06IElJbmZvRGlhbG9nQnRuKSA9PiB7XG4gICAgaXRlbT8uYWN0aW9uKGV2ZW50KTtcbiAgICBpZiAoaXRlbT8uY2xvc2VCb3hPbkNsaWNrKSB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICB9O1xuICBjbHMgPSAoc3RhdHVzOiAwIHwgMSB8IDIgPSB0aGlzLmRhdGEuc3RhdHVzIGFzIGFueSkgPT4ge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiAnc3VjY2Vzcyc7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiAnaW5mbyc7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIHJldHVybiAnZGFuZ2VyJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUluZm9EaWFsb2dCdG4gZXh0ZW5kcyBJQnRuIHtcbiAgLyoqXG4gICAqIERldGVybWluZSB3aGV0aGVyIHRvIGNsb3NlIHRoZSBpbmZvIG9uIGNsaWNraW5nIHRoZSBidXR0b25cbiAgICovXG4gIGNsb3NlQm94T25DbGljaz86IGJvb2xlYW47XG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICA8ZGl2IGNsYXNzPVwidGV4dC17eyBjbHMoKSB9fSBtcy0zIGZvbnQtd2VpZ2h0LWJvbGQgdGV4dC11cHBlcmNhc2VcIj5cbiAgICA8aSBjbGFzcz1cImZhIGZhLXt7IGRhdGE/LnN0YXR1cyA/ICdjaGVjay1jaXJjbGUnIDogJ2V4Y2xhbWF0aW9uLWNpcmNsZScgfX1cIj48L2k+XG4gICAge3sgZGF0YT8uaGVhZGluZyB8fCAnTm90aWNlJyB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gIDwvZGl2PlxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwieWVzKClcIiBjbGFzcz1cImJ0bi1vdXRsaW5lLWRhbmdlclwiPjxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5jbG9zZTwvaT48L2J1dHRvbj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiaW5mby1ib2R5XCIgW2lubmVySFRNTF09XCJkYXRhPy50ZXh0XCI+PC9kaXY+XG5cbkBpZiAoZGF0YT8uYnRucz8ubGVuZ3RoKSB7XG4gIDxkaXYgY2xhc3M9XCJpbmZvLWJ1dHRvbnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgIEBmb3IgKGl0ZW0gb2YgZGF0YT8uYnRuczsgdHJhY2sgaXRlbSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLWF1dG8gbXktMVwiPlxuICAgICAgICAgIDxhcHAtYnRuIFt0eXBlXT1cIml0ZW0udHlwZSB8fCAnc2Vjb25kYXJ5J1wiIFtpY29uXT1cIml0ZW0uaWNvblwiIChtY2xpY2spPVwiaXRlbS5hY3Rpb24oJGV2ZW50KTsgeWVzKClcIj5cbiAgICAgICAgICAgIHt7IGl0ZW0udmFsdWUgfHwgaXRlbS5sYWJlbCB9fVxuICAgICAgICAgIDwvYXBwLWJ0bj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxufVxuPGRpdiBjbGFzcz1cImJnLXt7IGNscygpIH19IG10LTIgcm91bmRlZCBiYXJcIj48L2Rpdj5cbiJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2luZm8tZGlhbG9nL2luZm8tZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbmZvLWRpYWxvZy9pbmZvLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxJQUFJLGVBQWUsRUFBZ0MsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBUzNELE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsWUFFUyxJQUtOLEVBQ00sU0FBNEM7UUFONUMsU0FBSSxHQUFKLElBQUksQ0FLVjtRQUNNLGNBQVMsR0FBVCxTQUFTLENBQW1DO1FBV3JELGlCQUFZLEdBQUcsQ0FBQyxLQUFtQixFQUFFLElBQW9CLEVBQUUsRUFBRTtZQUMzRCxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BCLElBQUksSUFBSSxFQUFFLGVBQWU7Z0JBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwRCxDQUFDLENBQUM7UUFDRixRQUFHLEdBQUcsQ0FBQyxTQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQWEsRUFBRSxFQUFFO1lBQ3BELFFBQVEsTUFBTSxFQUFFO2dCQUNkLEtBQUssQ0FBQztvQkFDSixPQUFPLFNBQVMsQ0FBQztnQkFDbkIsS0FBSyxDQUFDO29CQUNKLE9BQU8sTUFBTSxDQUFDO2dCQUNoQixLQUFLLENBQUM7b0JBQ0osT0FBTyxRQUFRLENBQUM7Z0JBQ2xCO29CQUNFLE9BQU8sRUFBRSxDQUFDO2FBQ2I7UUFDSCxDQUFDLENBQUM7SUF6QkMsQ0FBQztJQUVKLFFBQVEsS0FBSSxDQUFDO0lBQ2IsR0FBRztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFDRCxFQUFFO1FBQ0EsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQzs4R0FsQlUsbUJBQW1CLGtCQUVwQixlQUFlO2tHQUZkLG1CQUFtQix3RUNmaEMsbTlCQXdCQSxtTERYWSxlQUFlLDRJQUFTLFlBQVksK2FBQUUsU0FBUyx5Q0FBRSxhQUFhOzsyRkFFN0QsbUJBQW1CO2tCQU4vQixTQUFTO2lDQUdJLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxhQUFhLENBQUM7OzBCQUl0RSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEgYXMgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgYXMgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IEJ0bkNvbXBvbmVudCB9IGZyb20gJy4uL2J0bi9idG4uY29tcG9uZW50JztcbmltcG9ydCB7IE5nRm9yLCBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IElCdG4gfSBmcm9tICcuLi9idG4vYnRuLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9pbmZvLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9pbmZvLWRpYWxvZy5jb21wb25lbnQuc2NzcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNYXRCdXR0b25Nb2R1bGUsIE5nRm9yLCBCdG5Db21wb25lbnQsIEFzeW5jUGlwZSwgVHJhbnNsYXRlUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIEluZm9EaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSlcbiAgICBwdWJsaWMgZGF0YToge1xuICAgICAgdGV4dDogc3RyaW5nO1xuICAgICAgaGVhZGluZzogc3RyaW5nO1xuICAgICAgc3RhdHVzOiBudW1iZXI7XG4gICAgICBidG5zOiBJSW5mb0RpYWxvZ0J0bltdO1xuICAgIH0sXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEluZm9EaWFsb2dDb21wb25lbnQ+LFxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxuICB5ZXMoKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodHJ1ZSk7XG4gIH1cbiAgbm8oKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZmFsc2UpO1xuICB9XG5cbiAgaGFuZGxlQWN0aW9uID0gKGV2ZW50OiBQb2ludGVyRXZlbnQsIGl0ZW06IElJbmZvRGlhbG9nQnRuKSA9PiB7XG4gICAgaXRlbT8uYWN0aW9uKGV2ZW50KTtcbiAgICBpZiAoaXRlbT8uY2xvc2VCb3hPbkNsaWNrKSB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICB9O1xuICBjbHMgPSAoc3RhdHVzOiAwIHwgMSB8IDIgPSB0aGlzLmRhdGEuc3RhdHVzIGFzIGFueSkgPT4ge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiAnc3VjY2Vzcyc7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiAnaW5mbyc7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIHJldHVybiAnZGFuZ2VyJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUluZm9EaWFsb2dCdG4gZXh0ZW5kcyBJQnRuIHtcbiAgLyoqXG4gICAqIERldGVybWluZSB3aGV0aGVyIHRvIGNsb3NlIHRoZSBpbmZvIG9uIGNsaWNraW5nIHRoZSBidXR0b25cbiAgICovXG4gIGNsb3NlQm94T25DbGljaz86IGJvb2xlYW47XG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICA8ZGl2IGNsYXNzPVwidGV4dC17eyBjbHMoKSB9fSBtcy0zIGZvbnQtd2VpZ2h0LWJvbGQgdGV4dC11cHBlcmNhc2VcIj5cbiAgICA8aSBjbGFzcz1cImZhIGZhLXt7IGRhdGE/LnN0YXR1cyA/ICdjaGVjay1jaXJjbGUnIDogJ2V4Y2xhbWF0aW9uLWNpcmNsZScgfX1cIj48L2k+XG4gICAge3sgZGF0YT8uaGVhZGluZyB8fCAnTm90aWNlJyB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gIDwvZGl2PlxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwieWVzKClcIiBjbGFzcz1cImJ0bi1vdXRsaW5lLWRhbmdlclwiPjxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5jbG9zZTwvaT48L2J1dHRvbj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiaW5mby1ib2R5XCIgW2lubmVySFRNTF09XCJkYXRhPy50ZXh0XCI+PC9kaXY+XG5cbkBpZiAoZGF0YT8uYnRucz8ubGVuZ3RoKSB7XG4gIDxkaXYgY2xhc3M9XCJpbmZvLWJ1dHRvbnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgIEBmb3IgKGl0ZW0gb2YgZGF0YT8uYnRuczsgdHJhY2sgaXRlbSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLWF1dG8gbXktMVwiPlxuICAgICAgICAgIDxhcHAtYnRuIFt0eXBlXT1cIml0ZW0udHlwZSB8fCAnc2Vjb25kYXJ5J1wiIFtpY29uXT1cIml0ZW0uaWNvblwiIChtY2xpY2spPVwiaXRlbS5hY3Rpb24oJGV2ZW50KTsgeWVzKClcIj5cbiAgICAgICAgICAgIHt7IGl0ZW0udmFsdWUgfHwgaXRlbS5sYWJlbCB9fVxuICAgICAgICAgIDwvYXBwLWJ0bj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxufVxuPGRpdiBjbGFzcz1cImJnLXt7IGNscygpIH19IG10LTIgcm91bmRlZCBiYXJcIj48L2Rpdj5cbiJdfQ==
@@ -77,4 +77,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImpor
77
77
  }], modalSubmitted: [{
78
78
  type: Output
79
79
  }] } });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvcGFnZS10ZW1wbGF0ZS9wYWdlLXRlbXBsYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFPckQsTUFBTSxPQUFPLHFCQUFxQjtJQWlCaEM7UUFaVSxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHOUMsWUFBTyxHQUFHLE1BQU0sQ0FBQztRQU9WLFVBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0IsT0FBRSxHQUFHLE1BQU0sQ0FBQyxDQUFBLGNBQTRCLENBQUEsQ0FBQyxDQUFDO1FBRS9DLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUF5QixFQUFFLEdBQWU7UUFDbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSTtZQUNGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FB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cG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9saWIvU2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IEVQYWdlVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCwgU0RLRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW52aXJvbm1lbnQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBgLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlVGVtcGxhdGVDb21wb25lbnQ8TW9kZWxEYXRhID0gYW55LCBURW52aXJvbm1lbnQgZXh0ZW5kcyBTREtFbnZpcm9ubWVudCA9IEVudmlyb25tZW50PiB7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzTW9kYWw6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG1vZGVsRGF0YTogTW9kZWxEYXRhO1xuICBtb2RhbE9uQ29tcGxldGU6ICguLi5hcmdzKSA9PiBhbnk7XG4gIEBPdXRwdXQoKSBtb2RhbFN1Ym1pdHRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgY29kZTogc3RyaW5nO1xuICBwYWdlVHlwZTogRVBhZ2VUeXBlO1xuICBpZEZpZWxkID0gJ2NvZGUnO1xuICBpc0NyZWF0ZTogYm9vbGVhbjtcbiAgaXNJbmRleDogYm9vbGVhbjtcbiAgaXNDbG9uZTogYm9vbGVhbjtcbiAgaXNFZGl0OiBib29sZWFuO1xuICBpc1Nob3c6IGJvb2xlYW47XG4gIGluZm9GdW5jOiAodGV4dDogc3RyaW5nLCBzdGF0dXM/OiAxIHwgMCB8IDIsIGhlYWRpbmc/OiBzdHJpbmcsIGJ0bnM/OiBhbnlbXSwgZGlzYWJsZUNsb3NlPzogYm9vbGVhbikgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgcHVibGljIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHVibGljIHVTID0gaW5qZWN0KFV0aWxpdHlTZXJ2aWNlPFRFbnZpcm9ubWVudD4pO1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG5cbiAgYXN5bmMgaW5pdChmdW5jPzogKCkgPT4gUHJvbWlzZTxhbnk+LCBlcnI/OiAoKSA9PiBhbnkpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb2RlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldCh0aGlzLmlkRmllbGQpIHx8IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KHRoaXMuaWRGaWVsZCk7XG4gICAgICB0aGlzLnBhZ2VUeXBlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLnR5cGU7XG4gICAgICB0aGlzW3RoaXMuaWRGaWVsZF0gPSBjb2RlO1xuICAgICAgaWYgKHRoaXMuaXNDcmVhdGUgJiYgY29kZSkgdGhyb3cgJ1BhZ2UgaXMgaW1wdXJlJztcbiAgICAgIGlmIChjb2RlICYmIGZ1bmMpIGF3YWl0IGZ1bmMoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICBpZiAoZXJyKSBlcnIoKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLmluZm9GdW5jKGVycm9yLCAwKTtcbiAgICAgICAgdGhpcy51Uy5iYWNrKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgc2V0QXNJbmRleCgpIHtcbiAgICB0aGlzLnBhZ2VUeXBlID0gRVBhZ2VUeXBlLmluZGV4UGFnZTtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG4gIHNldEFzQ2xvbmUoKSB7XG4gICAgdGhpcy5wYWdlVHlwZSA9IEVQYWdlVHlwZS5jbG9uZVBhZ2U7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxuICBzZXRBc0NyZWF0ZSgpIHtcbiAgICB0aGlzLnBhZ2VUeXBlID0gRVBhZ2VUeXBlLmNyZWF0ZVBhZ2U7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxuICBzZXRBc0VkaXQoKSB7XG4gICAgdGhpcy5wYWdlVHlwZSA9IEVQYWdlVHlwZS5lZGl0UGFnZTtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG4gIHNldEFzU2hvdygpIHtcbiAgICB0aGlzLnBhZ2VUeXBlID0gRVBhZ2VUeXBlLnNob3dQYWdlO1xuICAgIHRoaXMudXBkYXRlKCk7XG4gIH1cbiAgdXBkYXRlKCkge1xuICAgIC8vIGRlYnVnZ2VyXG4gICAgdGhpcy5pc0luZGV4ID0gdGhpcy51Uy5wYWdlUy5pc0luZGV4KHRoaXMucm91dGUsIHRoaXMucGFnZVR5cGUpO1xuICAgIHRoaXMuaXNDbG9uZSA9IHRoaXMudVMucGFnZVMuaXNDbG9uZSh0aGlzLnJvdXRlLCB0aGlzLnBhZ2VUeXBlKTtcbiAgICB0aGlzLmlzQ3JlYXRlID0gdGhpcy51Uy5wYWdlUy5pc0NyZWF0ZSh0aGlzLnJvdXRlLCB0aGlzLnBhZ2VUeXBlKTtcbiAgICB0aGlzLmlzRWRpdCA9IHRoaXMudVMucGFnZVMuaXNFZGl0KHRoaXMucm91dGUsIHRoaXMucGFnZVR5cGUpO1xuICAgIHRoaXMuaXNTaG93ID0gdGhpcy51Uy5wYWdlUy5pc1Nob3codGhpcy5yb3V0ZSwgdGhpcy5wYWdlVHlwZSk7XG4gIH1cbn1cbiJdfQ==
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvcGFnZS10ZW1wbGF0ZS9wYWdlLXRlbXBsYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFPckQsTUFBTSxPQUFPLHFCQUFxQjtJQWlCaEM7UUFaVSxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHOUMsWUFBTyxHQUFHLE1BQU0sQ0FBQztRQU9WLFVBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0IsT0FBRSxHQUFHLE1BQU0sQ0FBQyxDQUFBLGNBQTRCLENBQUEsQ0FBQyxDQUFDO1FBRS9DLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUF5QixFQUFFLEdBQWU7UUFDbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSTtZQUNGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FB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cG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9saWIvU2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IEVQYWdlVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCwgU0RLRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW52aXJvbm1lbnQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBgLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlVGVtcGxhdGVDb21wb25lbnQ8TW9kZWxEYXRhID0gYW55LCBURW52aXJvbm1lbnQgZXh0ZW5kcyBTREtFbnZpcm9ubWVudCA9IEVudmlyb25tZW50PiB7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzTW9kYWw6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG1vZGVsRGF0YTogTW9kZWxEYXRhO1xuICBtb2RhbE9uQ29tcGxldGU6ICguLi5hcmdzKSA9PiBhbnk7XG4gIEBPdXRwdXQoKSBtb2RhbFN1Ym1pdHRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgY29kZT86IHN0cmluZztcbiAgcGFnZVR5cGU6IEVQYWdlVHlwZTtcbiAgaWRGaWVsZCA9ICdjb2RlJztcbiAgaXNDcmVhdGU6IGJvb2xlYW47XG4gIGlzSW5kZXg6IGJvb2xlYW47XG4gIGlzQ2xvbmU6IGJvb2xlYW47XG4gIGlzRWRpdDogYm9vbGVhbjtcbiAgaXNTaG93OiBib29sZWFuO1xuICBpbmZvRnVuYzogKHRleHQ6IHN0cmluZywgc3RhdHVzPzogMSB8IDAgfCAyLCBoZWFkaW5nPzogc3RyaW5nLCBidG5zPzogYW55W10sIGRpc2FibGVDbG9zZT86IGJvb2xlYW4pID0+IFByb21pc2U8Ym9vbGVhbj47XG4gIHB1YmxpYyByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHB1YmxpYyB1UyA9IGluamVjdChVdGlsaXR5U2VydmljZTxURW52aXJvbm1lbnQ+KTtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxuXG4gIGFzeW5jIGluaXQoZnVuYz86ICgpID0+IFByb21pc2U8YW55PiwgZXJyPzogKCkgPT4gYW55KSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY29kZSA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQodGhpcy5pZEZpZWxkKSB8fCB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCh0aGlzLmlkRmllbGQpO1xuICAgICAgdGhpcy5wYWdlVHlwZSA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YS50eXBlO1xuICAgICAgdGhpc1t0aGlzLmlkRmllbGRdID0gY29kZTtcbiAgICAgIGlmICh0aGlzLmlzQ3JlYXRlICYmIGNvZGUpIHRocm93ICdQYWdlIGlzIGltcHVyZSc7XG4gICAgICBpZiAoY29kZSAmJiBmdW5jKSBhd2FpdCBmdW5jKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgaWYgKGVycikgZXJyKCk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5pbmZvRnVuYyhlcnJvciwgMCk7XG4gICAgICAgIHRoaXMudVMuYmFjaygpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHNldEFzSW5kZXgoKSB7XG4gICAgdGhpcy5wYWdlVHlwZSA9IEVQYWdlVHlwZS5pbmRleFBhZ2U7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxuICBzZXRBc0Nsb25lKCkge1xuICAgIHRoaXMucGFnZVR5cGUgPSBFUGFnZVR5cGUuY2xvbmVQYWdlO1xuICAgIHRoaXMudXBkYXRlKCk7XG4gIH1cbiAgc2V0QXNDcmVhdGUoKSB7XG4gICAgdGhpcy5wYWdlVHlwZSA9IEVQYWdlVHlwZS5jcmVhdGVQYWdlO1xuICAgIHRoaXMudXBkYXRlKCk7XG4gIH1cbiAgc2V0QXNFZGl0KCkge1xuICAgIHRoaXMucGFnZVR5cGUgPSBFUGFnZVR5cGUuZWRpdFBhZ2U7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxuICBzZXRBc1Nob3coKSB7XG4gICAgdGhpcy5wYWdlVHlwZSA9IEVQYWdlVHlwZS5zaG93UGFnZTtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG4gIHVwZGF0ZSgpIHtcbiAgICAvLyBkZWJ1Z2dlclxuICAgIHRoaXMuaXNJbmRleCA9IHRoaXMudVMucGFnZVMuaXNJbmRleCh0aGlzLnJvdXRlLCB0aGlzLnBhZ2VUeXBlKTtcbiAgICB0aGlzLmlzQ2xvbmUgPSB0aGlzLnVTLnBhZ2VTLmlzQ2xvbmUodGhpcy5yb3V0ZSwgdGhpcy5wYWdlVHlwZSk7XG4gICAgdGhpcy5pc0NyZWF0ZSA9IHRoaXMudVMucGFnZVMuaXNDcmVhdGUodGhpcy5yb3V0ZSwgdGhpcy5wYWdlVHlwZSk7XG4gICAgdGhpcy5pc0VkaXQgPSB0aGlzLnVTLnBhZ2VTLmlzRWRpdCh0aGlzLnJvdXRlLCB0aGlzLnBhZ2VUeXBlKTtcbiAgICB0aGlzLmlzU2hvdyA9IHRoaXMudVMucGFnZVMuaXNTaG93KHRoaXMucm91dGUsIHRoaXMucGFnZVR5cGUpO1xuICB9XG59XG4iXX0=
@@ -16,7 +16,7 @@ import { MatSnackBar } from '@angular/material/snack-bar';
16
16
  import * as i1$3 from '@angular/platform-browser';
17
17
  import { Title } from '@angular/platform-browser';
18
18
  import * as i1 from '@angular/router';
19
- import { Router, RouterLink, ActivatedRoute, RouterModule } from '@angular/router';
19
+ import { Router, ActivatedRoute, RouterLink, RouterModule } from '@angular/router';
20
20
  import jfd from 'js-file-download';
21
21
  import { saveAs } from 'file-saver';
22
22
  import { AES, enc } from 'crypto-js';
@@ -2495,6 +2495,16 @@ class UtilityService {
2495
2495
  trackByID(index, item) {
2496
2496
  return item?.id;
2497
2497
  }
2498
+ relativeRouter() {
2499
+ const router = inject(Router), route = inject(ActivatedRoute);
2500
+ return {
2501
+ route,
2502
+ router,
2503
+ navigate: (link, config) => router.navigate([link], { relativeTo: route, ...config }),
2504
+ queryParams: route.snapshot.queryParams,
2505
+ pathParams: route.snapshot.params,
2506
+ };
2507
+ }
2498
2508
  extractUpload(event) {
2499
2509
  return event.target.files || [];
2500
2510
  }
@@ -12160,11 +12170,11 @@ class InfoDialogComponent {
12160
12170
  this.dialogRef.close(false);
12161
12171
  }
12162
12172
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: InfoDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1$1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
12163
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.7", type: InfoDialogComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div class=\"d-flex justify-content-between align-items-center\">\n <div class=\"text-{{ cls() }} ms-3 font-weight-bold text-uppercase\">\n <i class=\"fa fa-{{ data?.status ? 'check-circle' : 'exclamation-circle' }}\"></i>\n {{ data?.heading || 'Notice' | appTranslate | async }}\n </div>\n <button mat-icon-button (click)=\"yes()\" class=\"btn-outline-danger\"><i class=\"material-icons\">close</i></button>\n</div>\n\n<div class=\"info-body\" [innerHTML]=\"data?.text\"></div>\n\n@if (data?.btns?.length) {\n <div class=\"info-buttons\">\n <div class=\"row justify-content-center\">\n @for (item of data?.btns; track item) {\n <div class=\"col-md-auto my-1\">\n <app-btn [type]=\"item.type || 'secondary'\" [icon]=\"item.icon\" (mclick)=\"item.action($event); yes()\">\n {{ item.value || item.label }}\n </app-btn>\n </div>\n }\n </div>\n </div>\n}\n<div class=\"bg-{{ cls() }} mt-2 rounded bar\"></div>\n", styles: [":host{text-align:center}:host .bar{height:5px}:host .info-body{overflow-wrap:anywhere;white-space:pre-line}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "centerBtn", "danger", "warning", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "disabled", "form", "forms", "help", "iconBtn", "loading", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid"], outputs: ["mclick"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TranslatePipe, name: "appTranslate" }] }); }
12173
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.7", type: InfoDialogComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div class=\"d-flex justify-content-between align-items-center\">\n <div class=\"text-{{ cls() }} ms-3 font-weight-bold text-uppercase\">\n <i class=\"fa fa-{{ data?.status ? 'check-circle' : 'exclamation-circle' }}\"></i>\n {{ data?.heading || 'Notice' | appTranslate | async }}\n </div>\n <button mat-icon-button (click)=\"yes()\" class=\"btn-outline-danger\"><i class=\"material-icons\">close</i></button>\n</div>\n\n<div class=\"info-body\" [innerHTML]=\"data?.text\"></div>\n\n@if (data?.btns?.length) {\n <div class=\"info-buttons\">\n <div class=\"row justify-content-center\">\n @for (item of data?.btns; track item) {\n <div class=\"col-md-auto my-1\">\n <app-btn [type]=\"item.type || 'secondary'\" [icon]=\"item.icon\" (mclick)=\"item.action($event); yes()\">\n {{ item.value || item.label }}\n </app-btn>\n </div>\n }\n </div>\n </div>\n}\n<div class=\"bg-{{ cls() }} mt-2 rounded bar\"></div>\n", styles: [":host{text-align:center}:host .bar{height:5px}:host .info-body{overflow-wrap:anywhere;white-space:pre-line;padding:1rem}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "centerBtn", "danger", "warning", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "disabled", "form", "forms", "help", "iconBtn", "loading", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid"], outputs: ["mclick"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TranslatePipe, name: "appTranslate" }] }); }
12164
12174
  }
12165
12175
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: InfoDialogComponent, decorators: [{
12166
12176
  type: Component,
12167
- args: [{ standalone: true, imports: [MatButtonModule, NgFor, BtnComponent, AsyncPipe, TranslatePipe], template: "<div class=\"d-flex justify-content-between align-items-center\">\n <div class=\"text-{{ cls() }} ms-3 font-weight-bold text-uppercase\">\n <i class=\"fa fa-{{ data?.status ? 'check-circle' : 'exclamation-circle' }}\"></i>\n {{ data?.heading || 'Notice' | appTranslate | async }}\n </div>\n <button mat-icon-button (click)=\"yes()\" class=\"btn-outline-danger\"><i class=\"material-icons\">close</i></button>\n</div>\n\n<div class=\"info-body\" [innerHTML]=\"data?.text\"></div>\n\n@if (data?.btns?.length) {\n <div class=\"info-buttons\">\n <div class=\"row justify-content-center\">\n @for (item of data?.btns; track item) {\n <div class=\"col-md-auto my-1\">\n <app-btn [type]=\"item.type || 'secondary'\" [icon]=\"item.icon\" (mclick)=\"item.action($event); yes()\">\n {{ item.value || item.label }}\n </app-btn>\n </div>\n }\n </div>\n </div>\n}\n<div class=\"bg-{{ cls() }} mt-2 rounded bar\"></div>\n", styles: [":host{text-align:center}:host .bar{height:5px}:host .info-body{overflow-wrap:anywhere;white-space:pre-line}\n"] }]
12177
+ args: [{ standalone: true, imports: [MatButtonModule, NgFor, BtnComponent, AsyncPipe, TranslatePipe], template: "<div class=\"d-flex justify-content-between align-items-center\">\n <div class=\"text-{{ cls() }} ms-3 font-weight-bold text-uppercase\">\n <i class=\"fa fa-{{ data?.status ? 'check-circle' : 'exclamation-circle' }}\"></i>\n {{ data?.heading || 'Notice' | appTranslate | async }}\n </div>\n <button mat-icon-button (click)=\"yes()\" class=\"btn-outline-danger\"><i class=\"material-icons\">close</i></button>\n</div>\n\n<div class=\"info-body\" [innerHTML]=\"data?.text\"></div>\n\n@if (data?.btns?.length) {\n <div class=\"info-buttons\">\n <div class=\"row justify-content-center\">\n @for (item of data?.btns; track item) {\n <div class=\"col-md-auto my-1\">\n <app-btn [type]=\"item.type || 'secondary'\" [icon]=\"item.icon\" (mclick)=\"item.action($event); yes()\">\n {{ item.value || item.label }}\n </app-btn>\n </div>\n }\n </div>\n </div>\n}\n<div class=\"bg-{{ cls() }} mt-2 rounded bar\"></div>\n", styles: [":host{text-align:center}:host .bar{height:5px}:host .info-body{overflow-wrap:anywhere;white-space:pre-line;padding:1rem}\n"] }]
12168
12178
  }], ctorParameters: () => [{ type: undefined, decorators: [{
12169
12179
  type: Inject,
12170
12180
  args: [MAT_DIALOG_DATA]