@dsivd/prestations-ng 17.0.0-beta.6 → 17.0.0-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/ESLINT_MIGRATION_GUIDE.md +2 -1
  3. package/dsivd-prestations-ng-17.0.0-beta.7.tgz +0 -0
  4. package/esm2022/foehn-address/foehn-input-foreign-street.component.mjs +3 -4
  5. package/esm2022/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.mjs +3 -3
  6. package/esm2022/foehn-checkables/foehn-checkable-group.component.mjs +33 -31
  7. package/esm2022/foehn-confirm-modal/foehn-confirm-modal.component.mjs +3 -3
  8. package/esm2022/foehn-date-picker/foehn-date-picker.component.mjs +3 -3
  9. package/esm2022/foehn-dropdown-menu/foehn-dropdown-menu.component.mjs +3 -3
  10. package/esm2022/foehn-list/foehn-list.component.mjs +3 -3
  11. package/esm2022/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.mjs +3 -3
  12. package/esm2022/foehn-modal/foehn-modal.component.mjs +3 -3
  13. package/esm2022/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.mjs +3 -3
  14. package/esm2022/foehn-page/foehn-page-expiration-timer/interval.helper.mjs +2 -2
  15. package/esm2022/foehn-page/foehn-page.component.mjs +3 -3
  16. package/esm2022/foehn-table/foehn-table.component.mjs +7 -3
  17. package/esm2022/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.mjs +2 -2
  18. package/esm2022/foehn-upload/foehn-multi-upload/multi-upload.service.mjs +2 -2
  19. package/esm2022/foehn-upload/uploader.helper.mjs +5 -13
  20. package/esm2022/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.mjs +3 -3
  21. package/esm2022/sdk-dictionary/default-dictionary.mjs +2 -1
  22. package/esm2022/sdk-drafts/drafts-container.component.mjs +3 -3
  23. package/esm2022/sdk-support-alert/support-alert-container.component.mjs +3 -3
  24. package/esm2022/sdk-support-alert/support-alert.component.mjs +10 -12
  25. package/fesm2022/dsivd-prestations-ng.mjs +81 -84
  26. package/fesm2022/dsivd-prestations-ng.mjs.map +1 -1
  27. package/foehn-checkables/foehn-checkable-group.component.d.ts +2 -1
  28. package/foehn-table/foehn-table.component.d.ts +3 -1
  29. package/package.json +1 -1
  30. package/dsivd-prestations-ng-17.0.0-beta.6.tgz +0 -0
package/CHANGELOG.md CHANGED
@@ -15,8 +15,13 @@
15
15
  - Added migration guide
16
16
 
17
17
  - [gesdem-handler.service.ts](projects/prestations-ng/src/gesdem/gesdem-handler.service.ts)
18
+
18
19
  - set `?updateOnly=false` to `api/validated` when saving from first page
19
20
 
21
+ - [foehn-table.component.ts](projects/prestations-ng/src/foehn-table/foehn-table.component.ts)
22
+ - added `@Input() title: string;` to set a title (caption) to the table
23
+ - added `@Input() titleSrOnly: boolean;` when set to `true`, only screen readers will see the table title
24
+
20
25
  ## [16.5.5]
21
26
 
22
27
  ### Added
@@ -376,7 +376,8 @@ You can replace the content of your `.eslintrc.json` with the following `json`.
376
376
  {
377
377
  code: 200
378
378
  }
379
- ]
379
+ ],
380
+ '@angular-eslint/template/button-has-type': 'error'
380
381
  }
381
382
  },
382
383
  // Jasmine
@@ -2,7 +2,6 @@ import { Component, forwardRef } from '@angular/core';
2
2
  import { FoehnInputComponent } from '../foehn-input/foehn-input.component';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../foehn-input/foehn-input-text.component";
5
- import * as i2 from "../foehn-validation-alerts/foehn-validation-alerts.component";
6
5
  export class FoehnInputForeignStreetComponent extends FoehnInputComponent {
7
6
  updateStreet() {
8
7
  const validValue = this.getValidValue();
@@ -40,7 +39,7 @@ export class FoehnInputForeignStreetComponent extends FoehnInputComponent {
40
39
  useExisting: forwardRef(() => FoehnInputForeignStreetComponent),
41
40
  multi: true
42
41
  }
43
- ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <foehn-input-text\n [label]=\"label\"\n [name]=\"name + '.longName'\"\n [(model)]=\"longName\"\n (modelChange)=\"updateStreet()\"\n [required]=\"required\"\n [helpText]=\"helpText\"\n (userInput)=\"handleUserInput()\"\n [disabled]=\"disabled\"\n [isLabelSrOnly]=\"isLabelSrOnly\"\n [autocomplete]=\"'address-line1'\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n >\n <ng-content></ng-content>\n </foehn-input-text>\n </fieldset>\n</div>\n", styles: [":host ::ng-deep foehn-input-text:last-child .form-group{margin-bottom:0}\n"], dependencies: [{ kind: "component", type: i1.FoehnInputTextComponent, selector: "foehn-input-text", inputs: ["numberOnly"] }, { kind: "component", type: i2.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }] }); }
42
+ ], usesInheritance: true, ngImport: i0, template: "<foehn-input-text\n [label]=\"label\"\n [name]=\"name + '.longName'\"\n [(model)]=\"longName\"\n (modelChange)=\"updateStreet()\"\n [required]=\"required\"\n [helpText]=\"helpText\"\n (userInput)=\"handleUserInput()\"\n [disabled]=\"disabled\"\n [isLabelSrOnly]=\"isLabelSrOnly\"\n [autocomplete]=\"'address-line1'\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n>\n <ng-content></ng-content>\n</foehn-input-text>\n", dependencies: [{ kind: "component", type: i1.FoehnInputTextComponent, selector: "foehn-input-text", inputs: ["numberOnly"] }] }); }
44
43
  }
45
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnInputForeignStreetComponent, decorators: [{
46
45
  type: Component,
@@ -50,6 +49,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
50
49
  useExisting: forwardRef(() => FoehnInputForeignStreetComponent),
51
50
  multi: true
52
51
  }
53
- ], template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <foehn-input-text\n [label]=\"label\"\n [name]=\"name + '.longName'\"\n [(model)]=\"longName\"\n (modelChange)=\"updateStreet()\"\n [required]=\"required\"\n [helpText]=\"helpText\"\n (userInput)=\"handleUserInput()\"\n [disabled]=\"disabled\"\n [isLabelSrOnly]=\"isLabelSrOnly\"\n [autocomplete]=\"'address-line1'\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n >\n <ng-content></ng-content>\n </foehn-input-text>\n </fieldset>\n</div>\n", styles: [":host ::ng-deep foehn-input-text:last-child .form-group{margin-bottom:0}\n"] }]
52
+ ], template: "<foehn-input-text\n [label]=\"label\"\n [name]=\"name + '.longName'\"\n [(model)]=\"longName\"\n (modelChange)=\"updateStreet()\"\n [required]=\"required\"\n [helpText]=\"helpText\"\n (userInput)=\"handleUserInput()\"\n [disabled]=\"disabled\"\n [isLabelSrOnly]=\"isLabelSrOnly\"\n [autocomplete]=\"'address-line1'\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n>\n <ng-content></ng-content>\n</foehn-input-text>\n" }]
54
53
  }] });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWFkZHJlc3MvZm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWFkZHJlc3MvZm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7QUFlM0UsTUFBTSxPQUFPLGdDQUFpQyxTQUFRLG1CQUEyQjtJQUc3RSxZQUFZO1FBQ1IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hDLElBQUksT0FBTyxVQUFVLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDWCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEMsSUFBSSxPQUFPLFVBQVUsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDTCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWE7UUFDdkIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUNuQyxDQUFDO2FBQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLENBQUM7SUFDTCxDQUFDO0lBRU8sYUFBYTtRQUNqQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDOUIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUM1QixPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1lBRUQsT0FBTyxTQUFTLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckQsQ0FBQzs4R0FsQ1EsZ0NBQWdDO2tHQUFoQyxnQ0FBZ0MscURBUjlCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLG1CQUFtQjtnQkFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztnQkFDL0QsS0FBSyxFQUFFLElBQUk7YUFDZDtTQUNKLGlEQ2ZMLGlnQ0E4QkE7OzJGRGJhLGdDQUFnQztrQkFaNUMsU0FBUzsrQkFDSSw0QkFBNEIsYUFHM0I7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsaUNBQWlDLENBQUM7NEJBQy9ELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RyZWV0IH0gZnJvbSAnLi9hZGRyZXNzLnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWlucHV0LWZvcmVpZ24tc3RyZWV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLWlucHV0LWZvcmVpZ24tc3RyZWV0LmNvbXBvbmVudC5jc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRm9laG5JbnB1dENvbXBvbmVudCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZvZWhuSW5wdXRGb3JlaWduU3RyZWV0Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuSW5wdXRGb3JlaWduU3RyZWV0Q29tcG9uZW50IGV4dGVuZHMgRm9laG5JbnB1dENvbXBvbmVudDxTdHJlZXQ+IHtcbiAgICBsb25nTmFtZTogc3RyaW5nO1xuXG4gICAgdXBkYXRlU3RyZWV0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZFZhbHVlID0gdGhpcy5nZXRWYWxpZFZhbHVlKCk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVVzZXJJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0VmFsaWRWYWx1ZSgpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW9kZWxDaGFuZ2UodmFsdWU6IFN0cmVldCk6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubG9uZ05hbWUgPSB2YWx1ZS5sb25nTmFtZTtcbiAgICAgICAgfSBlbHNlIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubG9uZ05hbWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRWYWxpZFZhbHVlKCk6IFN0cmVldCB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodGhpcy5pc0VtcHR5KHRoaXMubG9uZ05hbWUpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlbF8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGVzdHJpZDogbnVsbCwgbG9uZ05hbWU6IHRoaXMubG9uZ05hbWUgfTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwXCJcbiAgICBbY2xhc3MuaGFzLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgW2NsYXNzLnZkLWZvcm0tZ3JvdXAtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbYXR0ci5pZF09XCJidWlsZElkKCdDb250YWluZXInKVwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4+XG4gICAgPGZpZWxkc2V0XG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiZ2V0RGVzY3JpYmVkQnkoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKSB8fCBudWxsXCJcbiAgICA+XG4gICAgICAgIDxmb2Vobi12YWxpZGF0aW9uLWFsZXJ0cyBbY29tcG9uZW50XT1cInRoaXNcIj48L2ZvZWhuLXZhbGlkYXRpb24tYWxlcnRzPlxuXG4gICAgICAgIDxmb2Vobi1pbnB1dC10ZXh0XG4gICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICcubG9uZ05hbWUnXCJcbiAgICAgICAgICAgIFsobW9kZWwpXT1cImxvbmdOYW1lXCJcbiAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVTdHJlZXQoKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgW2hlbHBUZXh0XT1cImhlbHBUZXh0XCJcbiAgICAgICAgICAgICh1c2VySW5wdXQpPVwiaGFuZGxlVXNlcklucHV0KClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtpc0xhYmVsU3JPbmx5XT1cImlzTGFiZWxTck9ubHlcIlxuICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCInYWRkcmVzcy1saW5lMSdcIlxuICAgICAgICAgICAgW2lzRXJyb3JJbmhlcml0ZWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZm9laG4taW5wdXQtdGV4dD5cbiAgICA8L2ZpZWxkc2V0PlxuPC9kaXY+XG4iXX0=
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWFkZHJlc3MvZm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWFkZHJlc3MvZm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7OztBQWMzRSxNQUFNLE9BQU8sZ0NBQWlDLFNBQVEsbUJBQTJCO0lBRzdFLFlBQVk7UUFDUixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEMsSUFBSSxPQUFPLFVBQVUsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNYLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN4QyxJQUFJLE9BQU8sVUFBVSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYTtRQUN2QixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ25DLENBQUM7YUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDekIsQ0FBQztJQUNMLENBQUM7SUFFTyxhQUFhO1FBQ2pCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO1FBQ0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyRCxDQUFDOzhHQWxDUSxnQ0FBZ0M7a0dBQWhDLGdDQUFnQyxxREFSOUI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsbUJBQW1CO2dCQUM1QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO2dCQUMvRCxLQUFLLEVBQUUsSUFBSTthQUNkO1NBQ0osaURDZEwsc2NBZUE7OzJGRENhLGdDQUFnQztrQkFYNUMsU0FBUzsrQkFDSSw0QkFBNEIsYUFFM0I7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsaUNBQWlDLENBQUM7NEJBQy9ELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RyZWV0IH0gZnJvbSAnLi9hZGRyZXNzLnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWlucHV0LWZvcmVpZ24tc3RyZWV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9laG5JbnB1dEZvcmVpZ25TdHJlZXRDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5JbnB1dEZvcmVpZ25TdHJlZXRDb21wb25lbnQgZXh0ZW5kcyBGb2VobklucHV0Q29tcG9uZW50PFN0cmVldD4ge1xuICAgIGxvbmdOYW1lOiBzdHJpbmc7XG5cbiAgICB1cGRhdGVTdHJlZXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbGlkVmFsdWUgPSB0aGlzLmdldFZhbGlkVmFsdWUoKTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWxpZFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKHZhbGlkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlVXNlcklucHV0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZFZhbHVlID0gdGhpcy5nZXRWYWxpZFZhbHVlKCk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlKHZhbGlkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Nb2RlbENoYW5nZSh2YWx1ZTogU3RyZWV0KTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5sb25nTmFtZSA9IHZhbHVlLmxvbmdOYW1lO1xuICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5sb25nTmFtZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhbGlkVmFsdWUoKTogU3RyZWV0IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRW1wdHkodGhpcy5sb25nTmFtZSkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsXyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZXN0cmlkOiBudWxsLCBsb25nTmFtZTogdGhpcy5sb25nTmFtZSB9O1xuICAgIH1cbn1cbiIsIjxmb2Vobi1pbnB1dC10ZXh0XG4gICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICBbbmFtZV09XCJuYW1lICsgJy5sb25nTmFtZSdcIlxuICAgIFsobW9kZWwpXT1cImxvbmdOYW1lXCJcbiAgICAobW9kZWxDaGFuZ2UpPVwidXBkYXRlU3RyZWV0KClcIlxuICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW2hlbHBUZXh0XT1cImhlbHBUZXh0XCJcbiAgICAodXNlcklucHV0KT1cImhhbmRsZVVzZXJJbnB1dCgpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtpc0xhYmVsU3JPbmx5XT1cImlzTGFiZWxTck9ubHlcIlxuICAgIFthdXRvY29tcGxldGVdPVwiJ2FkZHJlc3MtbGluZTEnXCJcbiAgICBbaXNFcnJvckluaGVyaXRlZF09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9mb2Vobi1pbnB1dC10ZXh0PlxuIl19
@@ -215,7 +215,7 @@ export class FoehnAgendaTimeslotPanelComponent extends FoehnInputComponent {
215
215
  useExisting: forwardRef(() => FoehnAgendaTimeslotPanelComponent),
216
216
  multi: true
217
217
  }
218
- ], viewQueries: [{ propertyName: "timeSlotButtonsElemRef", predicate: ["timeSlotButtonsElemRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<section\n *ngIf=\"calendar | async as loadedCalendar\"\n class=\"panel panel-default mb-3\"\n>\n <div class=\"panel-heading mt-2 mb-2 py-2 d-flex align-items-baseline\">\n <h3 class=\"h5 ms-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"visually-hidden\" *ngIf=\"!!isSelected(timeInputValue)\">\n &nbsp;{{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"visually-hidden\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements:\n currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"fst-italic align-self-end ms-2\"\n >\n {{ 'foehn-agenda-timeslot-panel.no-dispo' | fromDictionary }}\n </small>\n </div>\n\n <div\n *ngIf=\"!!currentWeek.timeSlots.length\"\n class=\"panel-body d-flex flex-wrap ms-auto me-auto ps-3 g-0\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n class=\"btn me-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-info]=\"!isSelected(timeSlot)\"\n [class.btn-primary]=\"isSelected(timeSlot)\"\n (click)=\"\n handleUserInput(\n currentWeek.day,\n currentWeek.date,\n timeSlot,\n loadedCalendar\n )\n \"\n [attr.aria-label]=\"\n getButtonTimeSlotAriaLabel(currentWeek.day, timeSlot)\n \"\n >\n {{ timeSlot }}\n </button>\n <div\n class=\"col-12 d-flex justify-content-end mb-1\"\n *ngIf=\"currentWeek.timeSlots.length > nbVisibleElements && canClose\"\n >\n <button\n class=\"btn btn-link show-more\"\n #timeSlotButtonsElemRef\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"\n (isClosed\n ? 'foehn-agenda-timeslot-panel.show-more-sr-only'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden:\n timeslotRemaining.toString()\n }\n \"\n >\n {{\n (isClosed\n ? 'foehn.agenda-timeslot-panel.show-more'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden:\n timeslotRemaining.toString()\n }\n }}\n </button>\n </div>\n </div>\n</section>\n", styles: [".panel-default{border:1px solid #dfdfdf}.panel-heading{position:sticky;background-color:#fff;width:100%;top:0}.panel-heading small{font-size:.9rem}.panel-heading:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.panel-body .btn-info{background-color:var(--vd-neutral-light);border-color:var(--vd-neutral-light)}.panel-body .btn-info:hover{background-color:var(--vd-neutral-lighter);border-color:var(--vd-neutral-lighter)}.panel-body .btn-info,.panel-body .btn-primary{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-info:hover,.panel-body .btn-primary:hover{box-shadow:0 0 0 .2rem var(--vd-focus)}.panel-body .btn-link{padding:0}.show-more{cursor:pointer;font-size:.9rem}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.SdkDictionaryPipe, name: "fromDictionary" }] }); }
218
+ ], viewQueries: [{ propertyName: "timeSlotButtonsElemRef", predicate: ["timeSlotButtonsElemRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<section\n *ngIf=\"calendar | async as loadedCalendar\"\n class=\"panel panel-default mb-3\"\n>\n <div class=\"panel-heading mt-2 mb-2 py-2 d-flex align-items-baseline\">\n <h3 class=\"h5 ms-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"visually-hidden\" *ngIf=\"!!isSelected(timeInputValue)\">\n &nbsp;{{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"visually-hidden\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements:\n currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"fst-italic align-self-end ms-2\"\n >\n {{ 'foehn-agenda-timeslot-panel.no-dispo' | fromDictionary }}\n </small>\n </div>\n\n <div\n *ngIf=\"!!currentWeek.timeSlots.length\"\n class=\"panel-body d-flex flex-wrap ms-auto me-auto ps-3 g-0\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n type=\"button\"\n class=\"btn me-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-info]=\"!isSelected(timeSlot)\"\n [class.btn-primary]=\"isSelected(timeSlot)\"\n (click)=\"\n handleUserInput(\n currentWeek.day,\n currentWeek.date,\n timeSlot,\n loadedCalendar\n )\n \"\n [attr.aria-label]=\"\n getButtonTimeSlotAriaLabel(currentWeek.day, timeSlot)\n \"\n >\n {{ timeSlot }}\n </button>\n <div\n class=\"col-12 d-flex justify-content-end mb-1\"\n *ngIf=\"currentWeek.timeSlots.length > nbVisibleElements && canClose\"\n >\n <button\n type=\"button\"\n class=\"btn btn-link show-more\"\n #timeSlotButtonsElemRef\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"\n (isClosed\n ? 'foehn-agenda-timeslot-panel.show-more-sr-only'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden:\n timeslotRemaining.toString()\n }\n \"\n >\n {{\n (isClosed\n ? 'foehn.agenda-timeslot-panel.show-more'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden:\n timeslotRemaining.toString()\n }\n }}\n </button>\n </div>\n </div>\n</section>\n", styles: [".panel-default{border:1px solid #dfdfdf}.panel-heading{position:sticky;background-color:#fff;width:100%;top:0}.panel-heading small{font-size:.9rem}.panel-heading:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.panel-body .btn-info{background-color:var(--vd-neutral-light);border-color:var(--vd-neutral-light)}.panel-body .btn-info:hover{background-color:var(--vd-neutral-lighter);border-color:var(--vd-neutral-lighter)}.panel-body .btn-info,.panel-body .btn-primary{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-info:hover,.panel-body .btn-primary:hover{box-shadow:0 0 0 .2rem var(--vd-focus)}.panel-body .btn-link{padding:0}.show-more{cursor:pointer;font-size:.9rem}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.SdkDictionaryPipe, name: "fromDictionary" }] }); }
219
219
  }
220
220
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnAgendaTimeslotPanelComponent, decorators: [{
221
221
  type: Component,
@@ -225,7 +225,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
225
225
  useExisting: forwardRef(() => FoehnAgendaTimeslotPanelComponent),
226
226
  multi: true
227
227
  }
228
- ], template: "<section\n *ngIf=\"calendar | async as loadedCalendar\"\n class=\"panel panel-default mb-3\"\n>\n <div class=\"panel-heading mt-2 mb-2 py-2 d-flex align-items-baseline\">\n <h3 class=\"h5 ms-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"visually-hidden\" *ngIf=\"!!isSelected(timeInputValue)\">\n &nbsp;{{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"visually-hidden\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements:\n currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"fst-italic align-self-end ms-2\"\n >\n {{ 'foehn-agenda-timeslot-panel.no-dispo' | fromDictionary }}\n </small>\n </div>\n\n <div\n *ngIf=\"!!currentWeek.timeSlots.length\"\n class=\"panel-body d-flex flex-wrap ms-auto me-auto ps-3 g-0\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n class=\"btn me-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-info]=\"!isSelected(timeSlot)\"\n [class.btn-primary]=\"isSelected(timeSlot)\"\n (click)=\"\n handleUserInput(\n currentWeek.day,\n currentWeek.date,\n timeSlot,\n loadedCalendar\n )\n \"\n [attr.aria-label]=\"\n getButtonTimeSlotAriaLabel(currentWeek.day, timeSlot)\n \"\n >\n {{ timeSlot }}\n </button>\n <div\n class=\"col-12 d-flex justify-content-end mb-1\"\n *ngIf=\"currentWeek.timeSlots.length > nbVisibleElements && canClose\"\n >\n <button\n class=\"btn btn-link show-more\"\n #timeSlotButtonsElemRef\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"\n (isClosed\n ? 'foehn-agenda-timeslot-panel.show-more-sr-only'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden:\n timeslotRemaining.toString()\n }\n \"\n >\n {{\n (isClosed\n ? 'foehn.agenda-timeslot-panel.show-more'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden:\n timeslotRemaining.toString()\n }\n }}\n </button>\n </div>\n </div>\n</section>\n", styles: [".panel-default{border:1px solid #dfdfdf}.panel-heading{position:sticky;background-color:#fff;width:100%;top:0}.panel-heading small{font-size:.9rem}.panel-heading:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.panel-body .btn-info{background-color:var(--vd-neutral-light);border-color:var(--vd-neutral-light)}.panel-body .btn-info:hover{background-color:var(--vd-neutral-lighter);border-color:var(--vd-neutral-lighter)}.panel-body .btn-info,.panel-body .btn-primary{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-info:hover,.panel-body .btn-primary:hover{box-shadow:0 0 0 .2rem var(--vd-focus)}.panel-body .btn-link{padding:0}.show-more{cursor:pointer;font-size:.9rem}\n"] }]
228
+ ], template: "<section\n *ngIf=\"calendar | async as loadedCalendar\"\n class=\"panel panel-default mb-3\"\n>\n <div class=\"panel-heading mt-2 mb-2 py-2 d-flex align-items-baseline\">\n <h3 class=\"h5 ms-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"visually-hidden\" *ngIf=\"!!isSelected(timeInputValue)\">\n &nbsp;{{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"visually-hidden\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements:\n currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"fst-italic align-self-end ms-2\"\n >\n {{ 'foehn-agenda-timeslot-panel.no-dispo' | fromDictionary }}\n </small>\n </div>\n\n <div\n *ngIf=\"!!currentWeek.timeSlots.length\"\n class=\"panel-body d-flex flex-wrap ms-auto me-auto ps-3 g-0\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n type=\"button\"\n class=\"btn me-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-info]=\"!isSelected(timeSlot)\"\n [class.btn-primary]=\"isSelected(timeSlot)\"\n (click)=\"\n handleUserInput(\n currentWeek.day,\n currentWeek.date,\n timeSlot,\n loadedCalendar\n )\n \"\n [attr.aria-label]=\"\n getButtonTimeSlotAriaLabel(currentWeek.day, timeSlot)\n \"\n >\n {{ timeSlot }}\n </button>\n <div\n class=\"col-12 d-flex justify-content-end mb-1\"\n *ngIf=\"currentWeek.timeSlots.length > nbVisibleElements && canClose\"\n >\n <button\n type=\"button\"\n class=\"btn btn-link show-more\"\n #timeSlotButtonsElemRef\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"\n (isClosed\n ? 'foehn-agenda-timeslot-panel.show-more-sr-only'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden:\n timeslotRemaining.toString()\n }\n \"\n >\n {{\n (isClosed\n ? 'foehn.agenda-timeslot-panel.show-more'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden:\n timeslotRemaining.toString()\n }\n }}\n </button>\n </div>\n </div>\n</section>\n", styles: [".panel-default{border:1px solid #dfdfdf}.panel-heading{position:sticky;background-color:#fff;width:100%;top:0}.panel-heading small{font-size:.9rem}.panel-heading:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.panel-body .btn-info{background-color:var(--vd-neutral-light);border-color:var(--vd-neutral-light)}.panel-body .btn-info:hover{background-color:var(--vd-neutral-lighter);border-color:var(--vd-neutral-lighter)}.panel-body .btn-info,.panel-body .btn-primary{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-info:hover,.panel-body .btn-primary:hover{box-shadow:0 0 0 .2rem var(--vd-focus)}.panel-body .btn-link{padding:0}.show-more{cursor:pointer;font-size:.9rem}\n"] }]
229
229
  }], ctorParameters: () => [{ type: i1.SdkDictionaryService }], propDecorators: { timeSlotButtonsElemRef: [{
230
230
  type: ViewChildren,
231
231
  args: ['timeSlotButtonsElemRef']
@@ -239,4 +239,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
239
239
  type: HostListener,
240
240
  args: ['keydown', ['$event']]
241
241
  }] } });
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1hZ2VuZGEvZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsL2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tYWdlbmRhL2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC9mb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFLTCxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7O0FBa0I5RSxNQUFNLE9BQU8saUNBQ1QsU0FBUSxtQkFBaUM7SUEyQnpDLFlBQW9CLGlCQUF1QztRQUN2RCxLQUFLLEVBQUUsQ0FBQztRQURRLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFiM0QsYUFBUSxHQUFHLElBQUksQ0FBQztRQUdoQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBRVAsaUNBQTRCLEdBQUcsRUFBRSxDQUFDO1FBSW5DLDhCQUF5QixHQUFHLEtBQUssQ0FBQztRQUVsQywyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFJbkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztJQUMvRCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUNJLFdBQVcsQ0FBQyxLQUFlO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFHRCx1QkFBdUIsQ0FBQyxLQUFvQjtRQUN4QyxJQUFJLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLO1FBQ0QsTUFBTSwyQkFBMkIsR0FBRztZQUNoQyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUU7U0FDM0MsQ0FBQztRQUNGLElBQUksQ0FBQyxDQUFDLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6RCxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELHNCQUFzQixDQUFDLENBQVM7UUFDNUIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ0wsT0FBTyxDQUFDLENBQUM7UUFDYixDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVELGVBQWUsQ0FDWCxHQUFXLEVBQ1gsSUFBYyxFQUNkLElBQVksRUFDWixRQUFrQjtRQUVsQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2pFLElBQUksT0FBTyxVQUFVLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNsQyxDQUFDO2FBQU0sQ0FBQztZQUNKLDJFQUEyRTtZQUMzRSxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNaLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUM7WUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFtQjtRQUM3QixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUNuQyxDQUFDO2FBQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFDN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDOUIsQ0FBQztRQUNELElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxDQUFTO1FBQ3ZCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ04sTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQseUJBQXlCO1FBQ3JCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FDdEQsQ0FBQyxDQUFDLEVBQUUsQ0FDQSxDQUFDLEtBQUssSUFBSSxDQUFDLGNBQWM7WUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FDbEQsQ0FBQztRQUNGLElBQUksYUFBYSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1lBQ25DLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QixDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDM0QsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxjQUFjO1FBQ1YsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQztJQUMzQyxDQUFDO0lBRUQsVUFBVSxDQUFDLFFBQWdCO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN6QixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBQ0QsT0FBTyxDQUNILFFBQVEsS0FBSyxJQUFJLENBQUMsY0FBYztZQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsYUFBYSxDQUM5QyxDQUFDO0lBQ04sQ0FBQztJQUVELDBCQUEwQixDQUFDLEdBQVcsRUFBRSxRQUFnQjtRQUNwRCxJQUFJLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNsQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM1QixNQUFNLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FDdkMsZ0NBQWdDLENBQ25DLENBQUM7UUFDTixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVELG1CQUFtQixDQUFDLFFBQWdCLEVBQUUsS0FBYTtRQUMvQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM1QixPQUFPLENBQUMsQ0FBQztRQUNiLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDekMsT0FBTyxDQUFDLENBQUM7UUFDYixDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNkLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxDQUFTO1FBQzdCLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN6QyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTyxzQkFBc0I7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUM7UUFDL0QsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUM3QyxDQUFDLEVBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUN6QixDQUFDO1FBQ0YsSUFBSSxDQUFDLGlCQUFpQjtZQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ25FLENBQUM7SUFFTyxhQUFhLENBQ2pCLEdBQVcsRUFDWCxJQUFjLEVBQ2QsSUFBWSxFQUNaLFFBQWtCO1FBRWxCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFDRCxPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO1FBQ0QsT0FBTztZQUNILEdBQUc7WUFDSCxJQUFJO1lBQ0osSUFBSSxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSTtZQUMvQixVQUFVLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxVQUFVO1lBQzNDLElBQUk7U0FDUCxDQUFDO0lBQ04sQ0FBQztJQUVPLHlCQUF5QixDQUFDLE1BQW9CO1FBQ2xELElBQUksTUFBTSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNsQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGNBQWMsQ0FBQyxRQUF1QjtRQUMxQyw2REFBNkQ7UUFDN0QscUZBQXFGO1FBQ3JGLE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDO1FBQ3pELFFBQVEsa0JBQWtCLEVBQUUsQ0FBQztZQUN6QixLQUFLLE1BQU0sQ0FBQztZQUNaLEtBQUssV0FBVyxDQUFDO1lBQ2pCLEtBQUssT0FBTyxDQUFDO1lBQ2IsS0FBSyxZQUFZO2dCQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLE1BQU07WUFDVixLQUFLLElBQUksQ0FBQztZQUNWLEtBQUssU0FBUyxDQUFDO1lBQ2YsS0FBSyxNQUFNLENBQUM7WUFDWixLQUFLLFdBQVc7Z0JBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixNQUFNO1lBQ1YsS0FBSyxPQUFPLENBQUM7WUFDYixLQUFLLFVBQVUsQ0FBQztZQUNoQixLQUFLLE9BQU87Z0JBQ1IsUUFBUSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDekQsTUFBTTtZQUNWO2dCQUNJLE9BQU8sSUFBSSxDQUFDO1FBQ3BCLENBQUM7UUFFRCxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUIsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRTNCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxhQUFhLENBQUMsR0FBVztRQUM3QixNQUFNLFlBQVksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDaEUsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FDeEMsSUFBSSxDQUFDLEVBQUUsQ0FDSCxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDckMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FDbkQsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHLGFBQWEsR0FBRyxHQUFHLENBQUM7UUFDckMsSUFBSSxRQUFRLElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUMsQ0FBQzthQUFNLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RCLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoRSxDQUFDO2FBQU0sQ0FBQztZQUNKLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakQsQ0FBQztJQUNMLENBQUM7OEdBNVFRLGlDQUFpQztrR0FBakMsaUNBQWlDLG1PQVIvQjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxtQkFBbUI7Z0JBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUNBQWlDLENBQUM7Z0JBQ2hFLEtBQUssRUFBRSxJQUFJO2FBQ2Q7U0FDSiwyTEM5QkwsOG5IQWtHQTs7MkZEbEVhLGlDQUFpQztrQkFaN0MsU0FBUzsrQkFDSSw2QkFBNkIsYUFHNUI7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0NBQWtDLENBQUM7NEJBQ2hFLEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKO3lGQU9ELHNCQUFzQjtzQkFEckIsWUFBWTt1QkFBQyx3QkFBd0I7Z0JBSXRDLFFBQVE7c0JBRFAsS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBNEJGLFdBQVc7c0JBRGQsS0FBSztnQkFPTix1QkFBdUI7c0JBRHRCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZSxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRm9laG5JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZGtEaWN0aW9uYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi9jYWxlbmRhci50eXBlJztcbmltcG9ydCB7IERheVNsb3RzIH0gZnJvbSAnLi4vZGF5LXNsb3RzLnR5cGUnO1xuaW1wb3J0IHsgU2VsZWN0ZWRTbG90IH0gZnJvbSAnLi4vc2VsZWN0ZWQtc2xvdC50eXBlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5jb21wb25lbnQuY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZvZWhuSW5wdXRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb2VobkFnZW5kYVRpbWVzbG90UGFuZWxDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5BZ2VuZGFUaW1lc2xvdFBhbmVsQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBGb2VobklucHV0Q29tcG9uZW50PFNlbGVjdGVkU2xvdD5cbiAgICBpbXBsZW1lbnRzIE9uQ2hhbmdlc1xue1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3RpbWVTbG90QnV0dG9uc0VsZW1SZWYnKVxuICAgIHRpbWVTbG90QnV0dG9uc0VsZW1SZWY6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICAgIEBJbnB1dCgpXG4gICAgY2FsZW5kYXI6IE9ic2VydmFibGU8Q2FsZW5kYXI+O1xuXG4gICAgQElucHV0KClcbiAgICBuYlZpc2libGVFbGVtZW50czogbnVtYmVyO1xuXG4gICAgc2VsZWN0ZWRUaW1lU2xvdDogc3RyaW5nO1xuICAgIHRpbWVTbG90czogc3RyaW5nW107XG4gICAgaXNDbG9zZWQgPSB0cnVlO1xuICAgIHRpbWVzbG90UmVtYWluaW5nOiBudW1iZXI7XG4gICAgdGltZUlucHV0VmFsdWU6IHN0cmluZztcbiAgICBjYW5DbG9zZSA9IHRydWU7XG5cbiAgICByZWFkb25seSBERUZBVUxUX05CX1ZJU0lTQkxFX0VMRU1FTlRTID0gMjI7XG5cbiAgICBwcml2YXRlIGN1cnJlbnRXZWVrXzogRGF5U2xvdHM7XG4gICAgcHJpdmF0ZSBkYXlJbnB1dFZhbHVlOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBrZXlib2FyZE5hdmlnYXRpb25BbGxvd2VkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBjdXJyZW50QWN0aXZlRWxlbWVudDogRWxlbWVudDtcbiAgICBwcml2YXRlIGhhc1NlbGVjdGVkU2xvdEluUGFuZWwgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGljdGlvbmFyeVNlcnZpY2U6IFNka0RpY3Rpb25hcnlTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubmJWaXNpYmxlRWxlbWVudHMgPSB0aGlzLkRFRkFVTFRfTkJfVklTSVNCTEVfRUxFTUVOVFM7XG4gICAgfVxuXG4gICAgZ2V0IGN1cnJlbnRXZWVrKCk6IERheVNsb3RzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFdlZWtfO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGN1cnJlbnRXZWVrKHZhbHVlOiBEYXlTbG90cykge1xuICAgICAgICB0aGlzLmN1cnJlbnRXZWVrXyA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNsaWNlTmJWaXNpYmxlRWxlbWVudHMoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVLZXlib2FyZERvd25FdmVudChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5rZXlib2FyZE5hdmlnYXRpb25BbGxvd2VkKSB7XG4gICAgICAgICAgICB0aGlzLm9uS2V5RG93bklubmVyKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0aW1lU2xvdEJ1dHRvbnNFbGVtUmVmQXJyYXkgPSBbXG4gICAgICAgICAgICAuLi50aGlzLnRpbWVTbG90QnV0dG9uc0VsZW1SZWYudG9BcnJheSgpXG4gICAgICAgIF07XG4gICAgICAgIGlmICghIXRpbWVTbG90QnV0dG9uc0VsZW1SZWZBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRpbWVTbG90QnV0dG9uc0VsZW1SZWZBcnJheVswXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25OYlZpc2libGVFbGVtZW50c0NoYW5nZShjaGFuZ2VzLm5iVmlzaWJsZUVsZW1lbnRzKTtcbiAgICB9XG5cbiAgICBjYXBpdGFsQ2FzZUZpcnN0TGV0dGVyKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICghcykge1xuICAgICAgICAgICAgcmV0dXJuIHM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gcy50b1VwcGVyQ2FzZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtzLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7cy5zbGljZSgxKX1gO1xuICAgIH1cblxuICAgIGhhbmRsZVVzZXJJbnB1dChcbiAgICAgICAgZGF5OiBzdHJpbmcsXG4gICAgICAgIGRhdGU6IG51bWJlcltdLFxuICAgICAgICB0aW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGVuZGFyOiBDYWxlbmRhclxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZFZhbHVlID0gdGhpcy5nZXRWYWxpZFZhbHVlKGRheSwgZGF0ZSwgdGltZSwgY2FsZW5kYXIpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLnVzZXJJbnB1dC5uZXh0KHZhbGlkVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKHZhbGlkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlUGFuZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNDbG9zZWQgPSAhdGhpcy5pc0Nsb3NlZDtcbiAgICAgICAgaWYgKHRoaXMuaXNDbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2xpY2VOYlZpc2libGVFbGVtZW50cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTmVlZCBzZXRUaW1lb3V0IGJlY2F1c2Ugd2UgYXJlIG91dHNpZGUgYW5ndWxhciBjeWNsZSB3aGVuIHJlbG9hZGluZyBwYWdlXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWVTbG90cyA9IHRoaXMuY3VycmVudFdlZWsudGltZVNsb3RzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBTZWxlY3RlZFNsb3QpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGltZVNsb3QgPSBgJHt2YWx1ZS5kYXl9LSR7dmFsdWUudGltZX1gO1xuICAgICAgICAgICAgdGhpcy50aW1lSW5wdXRWYWx1ZSA9IHZhbHVlLnRpbWU7XG4gICAgICAgICAgICB0aGlzLmRheUlucHV0VmFsdWUgPSB2YWx1ZS5kYXk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGltZVNsb3QgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy50aW1lSW5wdXRWYWx1ZSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmRheUlucHV0VmFsdWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VhcmNoVGltZVZhbHVlSW5UaW1lU2xvdCgpO1xuICAgIH1cblxuICAgIGdldFRpbWVJbnB1dFZhbHVlKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICghIXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlU3BsaXQgPSBzLnNwbGl0KCctJyk7XG4gICAgICAgICAgICBpZiAodmFsdWVTcGxpdC5sZW5ndGggPj0gMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVNwbGl0WzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzO1xuICAgIH1cblxuICAgIHNlYXJjaFRpbWVWYWx1ZUluVGltZVNsb3QoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uVmFsdWUgPSB0aGlzLmN1cnJlbnRXZWVrLnRpbWVTbG90cy5maW5kSW5kZXgoXG4gICAgICAgICAgICB4ID0+XG4gICAgICAgICAgICAgICAgeCA9PT0gdGhpcy50aW1lSW5wdXRWYWx1ZSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFdlZWsuZGF5ID09PSB0aGlzLmRheUlucHV0VmFsdWVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHBvc2l0aW9uVmFsdWUgIT09IC0xICYmICEhdGhpcy5zZWxlY3RlZFRpbWVTbG90KSB7XG4gICAgICAgICAgICB0aGlzLmhhc1NlbGVjdGVkU2xvdEluUGFuZWwgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNDbG9zZWQgJiYgcG9zaXRpb25WYWx1ZSA+PSB0aGlzLm5iVmlzaWJsZUVsZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVQYW5lbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oYXNTZWxlY3RlZFNsb3RJblBhbmVsID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jYW5DbG9zZSA9IHBvc2l0aW9uVmFsdWUgPCB0aGlzLm5iVmlzaWJsZUVsZW1lbnRzO1xuICAgIH1cblxuICAgIG9uVGltZUZvY3VzaW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uQWxsb3dlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY3VycmVudEFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIG9uVGltZUZvY3Vzb3V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKHRpbWVTbG90OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkVGltZVNsb3QpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGltZVNsb3QgPT09IHRoaXMudGltZUlucHV0VmFsdWUgJiZcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFdlZWsuZGF5ID09PSB0aGlzLmRheUlucHV0VmFsdWVcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRCdXR0b25UaW1lU2xvdEFyaWFMYWJlbChkYXk6IHN0cmluZywgdGltZVNsb3Q6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXN1bHQgPSBgJHtkYXl9ICR7dGltZVNsb3R9YDtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZCh0aW1lU2xvdCkpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS50aW1lc2xvdC5zZWxlY3RlZCdcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBnZXRUaW1lU2xvdFRhYkluZGV4KHRpbWVTbG90OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKHRpbWVTbG90KSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpbmRleCAmJiAhdGhpcy5oYXNTZWxlY3RlZFNsb3RJblBhbmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgY2xlYW5JZEZvclF1ZXJ5U2VsZWN0b3Ioczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcyA9IHMucmVwbGFjZShuZXcgUmVnRXhwKCcgJywgJ2cnKSwgJ18nKTtcbiAgICAgICAgcmV0dXJuIHMucmVwbGFjZShuZXcgUmVnRXhwKCc6JywgJ2cnKSwgJ18nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNsaWNlTmJWaXNpYmxlRWxlbWVudHMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5uYlZpc2libGVFbGVtZW50cykge1xuICAgICAgICAgICAgdGhpcy5uYlZpc2libGVFbGVtZW50cyA9IHRoaXMuREVGQVVMVF9OQl9WSVNJU0JMRV9FTEVNRU5UUztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRpbWVTbG90cyA9IHRoaXMuY3VycmVudFdlZWsudGltZVNsb3RzLnNsaWNlKFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHRoaXMubmJWaXNpYmxlRWxlbWVudHNcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy50aW1lc2xvdFJlbWFpbmluZyA9XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGggLSB0aGlzLm5iVmlzaWJsZUVsZW1lbnRzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsaWRWYWx1ZShcbiAgICAgICAgZGF5OiBzdHJpbmcsXG4gICAgICAgIGRhdGU6IG51bWJlcltdLFxuICAgICAgICB0aW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGVuZGFyOiBDYWxlbmRhclxuICAgICk6IFNlbGVjdGVkU2xvdCB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIWRheSB8fCAhdGltZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWxfICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRheSxcbiAgICAgICAgICAgIHRpbWUsXG4gICAgICAgICAgICB5ZWFyOiBjYWxlbmRhci5jdXJyZW50V2Vlay55ZWFyLFxuICAgICAgICAgICAgd2Vla051bWJlcjogY2FsZW5kYXIuY3VycmVudFdlZWsud2Vla051bWJlcixcbiAgICAgICAgICAgIGRhdGVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTmJWaXNpYmxlRWxlbWVudHNDaGFuZ2UoY2hhbmdlOiBTaW1wbGVDaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5zbGljZU5iVmlzaWJsZUVsZW1lbnRzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uS2V5RG93bklubmVyKGtleUV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIC8vIElFIGRvZXNuJ3Qgc3VwcG9ydCBrZXlFdmVudC5jb2RlLCBhbmQgaGFzIGRpZmZlcmVudCB2YWx1ZXNcbiAgICAgICAgLy8gaW4ga2V5RXZlbnQua2V5IChEb3duIGluc3RlYWQgb2YgQXJyb3dEb3duIGZvciBpbnN0YW5jZSksIGhlbmNlIHRoZSBtdWx0aS1zdXBwb3J0LlxuICAgICAgICBjb25zdCBpZTExQ29tcGF0aWJsZUNvZGUgPSBrZXlFdmVudC5jb2RlIHx8IGtleUV2ZW50LmtleTtcbiAgICAgICAgc3dpdGNoIChpZTExQ29tcGF0aWJsZUNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Rvd24nOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgIGNhc2UgJ1JpZ2h0JzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNUaW1lU2xvdCgxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1VwJzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgY2FzZSAnTGVmdCc6XG4gICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNUaW1lU2xvdCgtMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdTcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdTcGFjZWJhcic6XG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2xpY2snKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAga2V5RXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAga2V5RXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNUaW1lU2xvdChpbmM6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBidXR0b25zQXJyYXkgPSBbLi4udGhpcy50aW1lU2xvdEJ1dHRvbnNFbGVtUmVmLnRvQXJyYXkoKV07XG4gICAgICAgIGNvbnN0IGluZGV4c2VsZWN0ZWQgPSBidXR0b25zQXJyYXkuZmluZEluZGV4KFxuICAgICAgICAgICAgaXRlbSA9PlxuICAgICAgICAgICAgICAgIGl0ZW0ubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJykgPT09XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSBpbmRleHNlbGVjdGVkICsgaW5jO1xuICAgICAgICBpZiAobmV3SW5kZXggPj0gYnV0dG9uc0FycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgYnV0dG9uc0FycmF5WzBdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIGlmIChuZXdJbmRleCA8IDApIHtcbiAgICAgICAgICAgIGJ1dHRvbnNBcnJheVtidXR0b25zQXJyYXkubGVuZ3RoIC0gMV0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnV0dG9uc0FycmF5W25ld0luZGV4XS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8c2VjdGlvblxuICAgICpuZ0lmPVwiY2FsZW5kYXIgfCBhc3luYyBhcyBsb2FkZWRDYWxlbmRhclwiXG4gICAgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0IG1iLTNcIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkaW5nIG10LTIgbWItMiBweS0yIGQtZmxleCBhbGlnbi1pdGVtcy1iYXNlbGluZVwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJoNSBtcy0zIG10LTAgbWItMFwiPlxuICAgICAgICAgICAge3sgY2FwaXRhbENhc2VGaXJzdExldHRlcihjdXJyZW50V2Vlay5kYXkpIH19XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiICpuZ0lmPVwiISFpc1NlbGVjdGVkKHRpbWVJbnB1dFZhbHVlKVwiPlxuICAgICAgICAgICAgICAgICZuYnNwO3t7XG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuc2VsZWN0ZWQtdGltZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnk6IHsgdGltZVNlbGVjdGVkVmFsdWU6IHRpbWVJbnB1dFZhbHVlIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2gzPlxuICAgICAgICA8c21hbGwgKm5nSWY9XCIhIWN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGhcIiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLm5ici1kaXNwbydcbiAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYkVsZW1lbnRzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGgudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICA8L3NtYWxsPlxuICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICpuZ0lmPVwiIWN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGhcIlxuICAgICAgICAgICAgY2xhc3M9XCJmc3QtaXRhbGljIGFsaWduLXNlbGYtZW5kIG1zLTJcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLm5vLWRpc3BvJyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgIDwvc21hbGw+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiISFjdXJyZW50V2Vlay50aW1lU2xvdHMubGVuZ3RoXCJcbiAgICAgICAgY2xhc3M9XCJwYW5lbC1ib2R5IGQtZmxleCBmbGV4LXdyYXAgbXMtYXV0byBtZS1hdXRvIHBzLTMgZy0wXCJcbiAgICAgICAgKGZvY3VzaW4pPVwib25UaW1lRm9jdXNpbigpXCJcbiAgICAgICAgKGZvY3Vzb3V0KT1cIm9uVGltZUZvY3Vzb3V0KClcIlxuICAgICAgICByb2xlPVwiYXBwbGljYXRpb25cIlxuICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRpbWVTbG90IG9mIHRpbWVTbG90czsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4gbWUtMiBtYi0yXCJcbiAgICAgICAgICAgICN0aW1lU2xvdEJ1dHRvbnNFbGVtUmVmXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJcbiAgICAgICAgICAgICAgICBjbGVhbklkRm9yUXVlcnlTZWxlY3RvcihjdXJyZW50V2Vlay5kYXkgKyAnLScgKyB0aW1lU2xvdClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbdGFiaW5kZXhdPVwiZ2V0VGltZVNsb3RUYWJJbmRleCh0aW1lU2xvdCwgaW5kZXgpXCJcbiAgICAgICAgICAgIFtjbGFzcy5idG4taW5mb109XCIhaXNTZWxlY3RlZCh0aW1lU2xvdClcIlxuICAgICAgICAgICAgW2NsYXNzLmJ0bi1wcmltYXJ5XT1cImlzU2VsZWN0ZWQodGltZVNsb3QpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICBoYW5kbGVVc2VySW5wdXQoXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRXZWVrLmRheSxcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFdlZWsuZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgdGltZVNsb3QsXG4gICAgICAgICAgICAgICAgICAgIGxvYWRlZENhbGVuZGFyXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgZ2V0QnV0dG9uVGltZVNsb3RBcmlhTGFiZWwoY3VycmVudFdlZWsuZGF5LCB0aW1lU2xvdClcbiAgICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IHRpbWVTbG90IH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNvbC0xMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBtYi0xXCJcbiAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudFdlZWsudGltZVNsb3RzLmxlbmd0aCA+IG5iVmlzaWJsZUVsZW1lbnRzICYmIGNhbkNsb3NlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHNob3ctbW9yZVwiXG4gICAgICAgICAgICAgICAgI3RpbWVTbG90QnV0dG9uc0VsZW1SZWZcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUGFuZWwoKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgKGlzQ2xvc2VkXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdmb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuc2hvdy1tb3JlLXNyLW9ubHknXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdmb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuc2hvdy1sZXNzJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmJyRWxlbWVudHNIaWRkZW46XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzbG90UmVtYWluaW5nLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIChpc0Nsb3NlZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnZm9laG4uYWdlbmRhLXRpbWVzbG90LXBhbmVsLnNob3ctbW9yZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5zaG93LWxlc3MnXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYnJFbGVtZW50c0hpZGRlbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXNsb3RSZW1haW5pbmcudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3NlY3Rpb24+XG4iXX0=
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1hZ2VuZGEvZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsL2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tYWdlbmRhL2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC9mb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFLTCxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7O0FBa0I5RSxNQUFNLE9BQU8saUNBQ1QsU0FBUSxtQkFBaUM7SUEyQnpDLFlBQW9CLGlCQUF1QztRQUN2RCxLQUFLLEVBQUUsQ0FBQztRQURRLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFiM0QsYUFBUSxHQUFHLElBQUksQ0FBQztRQUdoQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBRVAsaUNBQTRCLEdBQUcsRUFBRSxDQUFDO1FBSW5DLDhCQUF5QixHQUFHLEtBQUssQ0FBQztRQUVsQywyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFJbkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztJQUMvRCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUNJLFdBQVcsQ0FBQyxLQUFlO1FBQzNCLElBQUksQ0FBQyxZ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QUFDO1lBQ2xDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUMsQ0FBQzthQUFNLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RCLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoRSxDQUFDO2FBQU0sQ0FBQztZQUNKLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakQsQ0FBQztJQUNMLENBQUM7OEdBNVFRLGlDQUFpQztrR0FBakMsaUNBQWlDLG1PQVIvQjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxtQkFBbUI7Z0JBQzVCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUNBQWlDLENBQUM7Z0JBQ2hFLEtBQUssRUFBRSxJQUFJO2FBQ2Q7U0FDSiwyTEM5QkwsNHJIQW9HQTs7MkZEcEVhLGlDQUFpQztrQkFaN0MsU0FBUzsrQkFDSSw2QkFBNkIsYUFHNUI7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0NBQWtDLENBQUM7NEJBQ2hFLEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKO3lGQU9ELHNCQUFzQjtzQkFEckIsWUFBWTt1QkFBQyx3QkFBd0I7Z0JBSXRDLFFBQVE7c0JBRFAsS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBNEJGLFdBQVc7c0JBRGQsS0FBSztnQkFPTix1QkFBdUI7c0JBRHRCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZSxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRm9laG5JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZGtEaWN0aW9uYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuLi9jYWxlbmRhci50eXBlJztcbmltcG9ydCB7IERheVNsb3RzIH0gZnJvbSAnLi4vZGF5LXNsb3RzLnR5cGUnO1xuaW1wb3J0IHsgU2VsZWN0ZWRTbG90IH0gZnJvbSAnLi4vc2VsZWN0ZWQtc2xvdC50eXBlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5jb21wb25lbnQuY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZvZWhuSW5wdXRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb2VobkFnZW5kYVRpbWVzbG90UGFuZWxDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5BZ2VuZGFUaW1lc2xvdFBhbmVsQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBGb2VobklucHV0Q29tcG9uZW50PFNlbGVjdGVkU2xvdD5cbiAgICBpbXBsZW1lbnRzIE9uQ2hhbmdlc1xue1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3RpbWVTbG90QnV0dG9uc0VsZW1SZWYnKVxuICAgIHRpbWVTbG90QnV0dG9uc0VsZW1SZWY6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICAgIEBJbnB1dCgpXG4gICAgY2FsZW5kYXI6IE9ic2VydmFibGU8Q2FsZW5kYXI+O1xuXG4gICAgQElucHV0KClcbiAgICBuYlZpc2libGVFbGVtZW50czogbnVtYmVyO1xuXG4gICAgc2VsZWN0ZWRUaW1lU2xvdDogc3RyaW5nO1xuICAgIHRpbWVTbG90czogc3RyaW5nW107XG4gICAgaXNDbG9zZWQgPSB0cnVlO1xuICAgIHRpbWVzbG90UmVtYWluaW5nOiBudW1iZXI7XG4gICAgdGltZUlucHV0VmFsdWU6IHN0cmluZztcbiAgICBjYW5DbG9zZSA9IHRydWU7XG5cbiAgICByZWFkb25seSBERUZBVUxUX05CX1ZJU0lTQkxFX0VMRU1FTlRTID0gMjI7XG5cbiAgICBwcml2YXRlIGN1cnJlbnRXZWVrXzogRGF5U2xvdHM7XG4gICAgcHJpdmF0ZSBkYXlJbnB1dFZhbHVlOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBrZXlib2FyZE5hdmlnYXRpb25BbGxvd2VkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBjdXJyZW50QWN0aXZlRWxlbWVudDogRWxlbWVudDtcbiAgICBwcml2YXRlIGhhc1NlbGVjdGVkU2xvdEluUGFuZWwgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGljdGlvbmFyeVNlcnZpY2U6IFNka0RpY3Rpb25hcnlTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubmJWaXNpYmxlRWxlbWVudHMgPSB0aGlzLkRFRkFVTFRfTkJfVklTSVNCTEVfRUxFTUVOVFM7XG4gICAgfVxuXG4gICAgZ2V0IGN1cnJlbnRXZWVrKCk6IERheVNsb3RzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFdlZWtfO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGN1cnJlbnRXZWVrKHZhbHVlOiBEYXlTbG90cykge1xuICAgICAgICB0aGlzLmN1cnJlbnRXZWVrXyA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNsaWNlTmJWaXNpYmxlRWxlbWVudHMoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVLZXlib2FyZERvd25FdmVudChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5rZXlib2FyZE5hdmlnYXRpb25BbGxvd2VkKSB7XG4gICAgICAgICAgICB0aGlzLm9uS2V5RG93bklubmVyKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0aW1lU2xvdEJ1dHRvbnNFbGVtUmVmQXJyYXkgPSBbXG4gICAgICAgICAgICAuLi50aGlzLnRpbWVTbG90QnV0dG9uc0VsZW1SZWYudG9BcnJheSgpXG4gICAgICAgIF07XG4gICAgICAgIGlmICghIXRpbWVTbG90QnV0dG9uc0VsZW1SZWZBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRpbWVTbG90QnV0dG9uc0VsZW1SZWZBcnJheVswXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25OYlZpc2libGVFbGVtZW50c0NoYW5nZShjaGFuZ2VzLm5iVmlzaWJsZUVsZW1lbnRzKTtcbiAgICB9XG5cbiAgICBjYXBpdGFsQ2FzZUZpcnN0TGV0dGVyKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICghcykge1xuICAgICAgICAgICAgcmV0dXJuIHM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gcy50b1VwcGVyQ2FzZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtzLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7cy5zbGljZSgxKX1gO1xuICAgIH1cblxuICAgIGhhbmRsZVVzZXJJbnB1dChcbiAgICAgICAgZGF5OiBzdHJpbmcsXG4gICAgICAgIGRhdGU6IG51bWJlcltdLFxuICAgICAgICB0aW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGVuZGFyOiBDYWxlbmRhclxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZFZhbHVlID0gdGhpcy5nZXRWYWxpZFZhbHVlKGRheSwgZGF0ZSwgdGltZSwgY2FsZW5kYXIpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLnVzZXJJbnB1dC5uZXh0KHZhbGlkVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKHZhbGlkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlUGFuZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNDbG9zZWQgPSAhdGhpcy5pc0Nsb3NlZDtcbiAgICAgICAgaWYgKHRoaXMuaXNDbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2xpY2VOYlZpc2libGVFbGVtZW50cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTmVlZCBzZXRUaW1lb3V0IGJlY2F1c2Ugd2UgYXJlIG91dHNpZGUgYW5ndWxhciBjeWNsZSB3aGVuIHJlbG9hZGluZyBwYWdlXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWVTbG90cyA9IHRoaXMuY3VycmVudFdlZWsudGltZVNsb3RzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBTZWxlY3RlZFNsb3QpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGltZVNsb3QgPSBgJHt2YWx1ZS5kYXl9LSR7dmFsdWUudGltZX1gO1xuICAgICAgICAgICAgdGhpcy50aW1lSW5wdXRWYWx1ZSA9IHZhbHVlLnRpbWU7XG4gICAgICAgICAgICB0aGlzLmRheUlucHV0VmFsdWUgPSB2YWx1ZS5kYXk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGltZVNsb3QgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy50aW1lSW5wdXRWYWx1ZSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmRheUlucHV0VmFsdWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VhcmNoVGltZVZhbHVlSW5UaW1lU2xvdCgpO1xuICAgIH1cblxuICAgIGdldFRpbWVJbnB1dFZhbHVlKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICghIXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlU3BsaXQgPSBzLnNwbGl0KCctJyk7XG4gICAgICAgICAgICBpZiAodmFsdWVTcGxpdC5sZW5ndGggPj0gMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVNwbGl0WzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzO1xuICAgIH1cblxuICAgIHNlYXJjaFRpbWVWYWx1ZUluVGltZVNsb3QoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uVmFsdWUgPSB0aGlzLmN1cnJlbnRXZWVrLnRpbWVTbG90cy5maW5kSW5kZXgoXG4gICAgICAgICAgICB4ID0+XG4gICAgICAgICAgICAgICAgeCA9PT0gdGhpcy50aW1lSW5wdXRWYWx1ZSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFdlZWsuZGF5ID09PSB0aGlzLmRheUlucHV0VmFsdWVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHBvc2l0aW9uVmFsdWUgIT09IC0xICYmICEhdGhpcy5zZWxlY3RlZFRpbWVTbG90KSB7XG4gICAgICAgICAgICB0aGlzLmhhc1NlbGVjdGVkU2xvdEluUGFuZWwgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNDbG9zZWQgJiYgcG9zaXRpb25WYWx1ZSA+PSB0aGlzLm5iVmlzaWJsZUVsZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVQYW5lbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oYXNTZWxlY3RlZFNsb3RJblBhbmVsID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jYW5DbG9zZSA9IHBvc2l0aW9uVmFsdWUgPCB0aGlzLm5iVmlzaWJsZUVsZW1lbnRzO1xuICAgIH1cblxuICAgIG9uVGltZUZvY3VzaW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uQWxsb3dlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY3VycmVudEFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIG9uVGltZUZvY3Vzb3V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKHRpbWVTbG90OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkVGltZVNsb3QpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGltZVNsb3QgPT09IHRoaXMudGltZUlucHV0VmFsdWUgJiZcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFdlZWsuZGF5ID09PSB0aGlzLmRheUlucHV0VmFsdWVcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRCdXR0b25UaW1lU2xvdEFyaWFMYWJlbChkYXk6IHN0cmluZywgdGltZVNsb3Q6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXN1bHQgPSBgJHtkYXl9ICR7dGltZVNsb3R9YDtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZCh0aW1lU2xvdCkpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS50aW1lc2xvdC5zZWxlY3RlZCdcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBnZXRUaW1lU2xvdFRhYkluZGV4KHRpbWVTbG90OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKHRpbWVTbG90KSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpbmRleCAmJiAhdGhpcy5oYXNTZWxlY3RlZFNsb3RJblBhbmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgY2xlYW5JZEZvclF1ZXJ5U2VsZWN0b3Ioczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcyA9IHMucmVwbGFjZShuZXcgUmVnRXhwKCcgJywgJ2cnKSwgJ18nKTtcbiAgICAgICAgcmV0dXJuIHMucmVwbGFjZShuZXcgUmVnRXhwKCc6JywgJ2cnKSwgJ18nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNsaWNlTmJWaXNpYmxlRWxlbWVudHMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5uYlZpc2libGVFbGVtZW50cykge1xuICAgICAgICAgICAgdGhpcy5uYlZpc2libGVFbGVtZW50cyA9IHRoaXMuREVGQVVMVF9OQl9WSVNJU0JMRV9FTEVNRU5UUztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRpbWVTbG90cyA9IHRoaXMuY3VycmVudFdlZWsudGltZVNsb3RzLnNsaWNlKFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHRoaXMubmJWaXNpYmxlRWxlbWVudHNcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy50aW1lc2xvdFJlbWFpbmluZyA9XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGggLSB0aGlzLm5iVmlzaWJsZUVsZW1lbnRzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsaWRWYWx1ZShcbiAgICAgICAgZGF5OiBzdHJpbmcsXG4gICAgICAgIGRhdGU6IG51bWJlcltdLFxuICAgICAgICB0aW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGVuZGFyOiBDYWxlbmRhclxuICAgICk6IFNlbGVjdGVkU2xvdCB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIWRheSB8fCAhdGltZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWxfICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRheSxcbiAgICAgICAgICAgIHRpbWUsXG4gICAgICAgICAgICB5ZWFyOiBjYWxlbmRhci5jdXJyZW50V2Vlay55ZWFyLFxuICAgICAgICAgICAgd2Vla051bWJlcjogY2FsZW5kYXIuY3VycmVudFdlZWsud2Vla051bWJlcixcbiAgICAgICAgICAgIGRhdGVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTmJWaXNpYmxlRWxlbWVudHNDaGFuZ2UoY2hhbmdlOiBTaW1wbGVDaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5zbGljZU5iVmlzaWJsZUVsZW1lbnRzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uS2V5RG93bklubmVyKGtleUV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIC8vIElFIGRvZXNuJ3Qgc3VwcG9ydCBrZXlFdmVudC5jb2RlLCBhbmQgaGFzIGRpZmZlcmVudCB2YWx1ZXNcbiAgICAgICAgLy8gaW4ga2V5RXZlbnQua2V5IChEb3duIGluc3RlYWQgb2YgQXJyb3dEb3duIGZvciBpbnN0YW5jZSksIGhlbmNlIHRoZSBtdWx0aS1zdXBwb3J0LlxuICAgICAgICBjb25zdCBpZTExQ29tcGF0aWJsZUNvZGUgPSBrZXlFdmVudC5jb2RlIHx8IGtleUV2ZW50LmtleTtcbiAgICAgICAgc3dpdGNoIChpZTExQ29tcGF0aWJsZUNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Rvd24nOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgIGNhc2UgJ1JpZ2h0JzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNUaW1lU2xvdCgxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1VwJzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgY2FzZSAnTGVmdCc6XG4gICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNUaW1lU2xvdCgtMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdTcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdTcGFjZWJhcic6XG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2xpY2snKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAga2V5RXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAga2V5RXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNUaW1lU2xvdChpbmM6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBidXR0b25zQXJyYXkgPSBbLi4udGhpcy50aW1lU2xvdEJ1dHRvbnNFbGVtUmVmLnRvQXJyYXkoKV07XG4gICAgICAgIGNvbnN0IGluZGV4c2VsZWN0ZWQgPSBidXR0b25zQXJyYXkuZmluZEluZGV4KFxuICAgICAgICAgICAgaXRlbSA9PlxuICAgICAgICAgICAgICAgIGl0ZW0ubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJykgPT09XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSBpbmRleHNlbGVjdGVkICsgaW5jO1xuICAgICAgICBpZiAobmV3SW5kZXggPj0gYnV0dG9uc0FycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgYnV0dG9uc0FycmF5WzBdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIGlmIChuZXdJbmRleCA8IDApIHtcbiAgICAgICAgICAgIGJ1dHRvbnNBcnJheVtidXR0b25zQXJyYXkubGVuZ3RoIC0gMV0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnV0dG9uc0FycmF5W25ld0luZGV4XS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8c2VjdGlvblxuICAgICpuZ0lmPVwiY2FsZW5kYXIgfCBhc3luYyBhcyBsb2FkZWRDYWxlbmRhclwiXG4gICAgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0IG1iLTNcIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkaW5nIG10LTIgbWItMiBweS0yIGQtZmxleCBhbGlnbi1pdGVtcy1iYXNlbGluZVwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJoNSBtcy0zIG10LTAgbWItMFwiPlxuICAgICAgICAgICAge3sgY2FwaXRhbENhc2VGaXJzdExldHRlcihjdXJyZW50V2Vlay5kYXkpIH19XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiICpuZ0lmPVwiISFpc1NlbGVjdGVkKHRpbWVJbnB1dFZhbHVlKVwiPlxuICAgICAgICAgICAgICAgICZuYnNwO3t7XG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuc2VsZWN0ZWQtdGltZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnk6IHsgdGltZVNlbGVjdGVkVmFsdWU6IHRpbWVJbnB1dFZhbHVlIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2gzPlxuICAgICAgICA8c21hbGwgKm5nSWY9XCIhIWN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGhcIiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLm5ici1kaXNwbydcbiAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYkVsZW1lbnRzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGgudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICA8L3NtYWxsPlxuICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICpuZ0lmPVwiIWN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGhcIlxuICAgICAgICAgICAgY2xhc3M9XCJmc3QtaXRhbGljIGFsaWduLXNlbGYtZW5kIG1zLTJcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLm5vLWRpc3BvJyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgIDwvc21hbGw+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiISFjdXJyZW50V2Vlay50aW1lU2xvdHMubGVuZ3RoXCJcbiAgICAgICAgY2xhc3M9XCJwYW5lbC1ib2R5IGQtZmxleCBmbGV4LXdyYXAgbXMtYXV0byBtZS1hdXRvIHBzLTMgZy0wXCJcbiAgICAgICAgKGZvY3VzaW4pPVwib25UaW1lRm9jdXNpbigpXCJcbiAgICAgICAgKGZvY3Vzb3V0KT1cIm9uVGltZUZvY3Vzb3V0KClcIlxuICAgICAgICByb2xlPVwiYXBwbGljYXRpb25cIlxuICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRpbWVTbG90IG9mIHRpbWVTbG90czsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBtZS0yIG1iLTJcIlxuICAgICAgICAgICAgI3RpbWVTbG90QnV0dG9uc0VsZW1SZWZcbiAgICAgICAgICAgIFthdHRyLmlkXT1cIlxuICAgICAgICAgICAgICAgIGNsZWFuSWRGb3JRdWVyeVNlbGVjdG9yKGN1cnJlbnRXZWVrLmRheSArICctJyArIHRpbWVTbG90KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFt0YWJpbmRleF09XCJnZXRUaW1lU2xvdFRhYkluZGV4KHRpbWVTbG90LCBpbmRleClcIlxuICAgICAgICAgICAgW2NsYXNzLmJ0bi1pbmZvXT1cIiFpc1NlbGVjdGVkKHRpbWVTbG90KVwiXG4gICAgICAgICAgICBbY2xhc3MuYnRuLXByaW1hcnldPVwiaXNTZWxlY3RlZCh0aW1lU2xvdClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgIGhhbmRsZVVzZXJJbnB1dChcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFdlZWsuZGF5LFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50V2Vlay5kYXRlLFxuICAgICAgICAgICAgICAgICAgICB0aW1lU2xvdCxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVkQ2FsZW5kYXJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICBnZXRCdXR0b25UaW1lU2xvdEFyaWFMYWJlbChjdXJyZW50V2Vlay5kYXksIHRpbWVTbG90KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgdGltZVNsb3QgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLTEyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG1iLTFcIlxuICAgICAgICAgICAgKm5nSWY9XCJjdXJyZW50V2Vlay50aW1lU2xvdHMubGVuZ3RoID4gbmJWaXNpYmxlRWxlbWVudHMgJiYgY2FuQ2xvc2VcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgc2hvdy1tb3JlXCJcbiAgICAgICAgICAgICAgICAjdGltZVNsb3RCdXR0b25zRWxlbVJlZlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVQYW5lbCgpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAoaXNDbG9zZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5zaG93LW1vcmUtc3Itb25seSdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5zaG93LWxlc3MnXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYnJFbGVtZW50c0hpZGRlbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXNsb3RSZW1haW5pbmcudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgKGlzQ2xvc2VkXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdmb2Vobi5hZ2VuZGEtdGltZXNsb3QtcGFuZWwuc2hvdy1tb3JlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLnNob3ctbGVzcydcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ickVsZW1lbnRzSGlkZGVuOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc2xvdFJlbWFpbmluZy50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvc2VjdGlvbj5cbiJdfQ==
@@ -100,37 +100,20 @@ export class FoehnCheckableGroupComponent extends FoehnInputComponent {
100
100
  }
101
101
  return this.elementDisabled(element);
102
102
  }
103
- onCheck(element, selectEvent, fireModelChange = true) {
103
+ onCheck(element, valueEmitted, fireModelChange = true) {
104
104
  const value = this.getValue(element);
105
105
  if (this.multiple) {
106
- if (!this.model) {
107
- this.model = [];
108
- }
109
- const modelArray = this.model;
110
- if (!!selectEvent) {
111
- if (this.findIndexInModel(value) < 0) {
112
- modelArray.push(value);
113
- }
114
- }
115
- else {
116
- const indexInModel = this.findIndexInModel(value);
117
- if (indexInModel >= 0) {
118
- modelArray.splice(indexInModel, 1);
119
- }
120
- }
121
- if (fireModelChange) {
122
- this.model = [...modelArray];
123
- }
106
+ this.onCheckMultiple(value, valueEmitted, fireModelChange);
107
+ return;
124
108
  }
125
- else {
126
- if (!!selectEvent) {
127
- this.model = value;
128
- }
129
- else {
130
- if (this.areValuesEquals(this.model, value)) {
131
- this.model = null;
132
- }
133
- }
109
+ // Single select value
110
+ if (valueEmitted) {
111
+ this.model = value;
112
+ return;
113
+ }
114
+ // Single unselect value
115
+ if (this.areValuesEquals(this.model, value)) {
116
+ this.model = null;
134
117
  }
135
118
  }
136
119
  isElementSelected(element) {
@@ -141,7 +124,7 @@ export class FoehnCheckableGroupComponent extends FoehnInputComponent {
141
124
  return this.areValuesEquals(this.model, value);
142
125
  }
143
126
  reset() {
144
- if (!!this.defaultElementValue) {
127
+ if (this.defaultElementValue) {
145
128
  this.updateNgModel(this.defaultElementValue);
146
129
  }
147
130
  else {
@@ -212,7 +195,7 @@ export class FoehnCheckableGroupComponent extends FoehnInputComponent {
212
195
  emptyGroup.elements = [];
213
196
  for (const element of this.elements) {
214
197
  const groupId = this.getGroup(element);
215
- if (!!groupId) {
198
+ if (groupId) {
216
199
  let elementsOfGroup = elementsByGroup.get(groupId);
217
200
  if (!elementsOfGroup) {
218
201
  elementsOfGroup = [];
@@ -271,6 +254,25 @@ export class FoehnCheckableGroupComponent extends FoehnInputComponent {
271
254
  this.fetchElementsFromUrl();
272
255
  }
273
256
  }
257
+ onCheckMultiple(value, valueEmitted, fireModelChange = true) {
258
+ if (!this.model) {
259
+ this.model = [];
260
+ }
261
+ const modelArray = this.model;
262
+ const index = this.findIndexInModel(value);
263
+ // Add element when it does not exist
264
+ if (valueEmitted && index < 0) {
265
+ modelArray.push(value);
266
+ }
267
+ // Remove existing element
268
+ if (!valueEmitted && index >= 0) {
269
+ modelArray.splice(index, 1);
270
+ }
271
+ // Update model
272
+ if (fireModelChange) {
273
+ this.model = [...modelArray];
274
+ }
275
+ }
274
276
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnCheckableGroupComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
275
277
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: FoehnCheckableGroupComponent, inputs: { elements: "elements", elementsUrl: "elementsUrl", elementValue: "elementValue", elementLabel: "elementLabel", elementValueIdentity: "elementValueIdentity", elementDisabled: "elementDisabled", elementGroup: "elementGroup", defaultElementValue: "defaultElementValue" }, outputs: { elementsLoaded: "elementsLoaded" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
276
278
  }
@@ -295,4 +297,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
295
297
  }], defaultElementValue: [{
296
298
  type: Input
297
299
  }] } });
298
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tY2hlY2thYmxlLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1jaGVja2FibGVzL2ZvZWhuLWNoZWNrYWJsZS1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBR25FLE1BQU0sT0FBZ0IsNEJBQ2xCLFNBQVEsbUJBQXdCO0lBZ0RoQyxZQUFvQixNQUFjO1FBQzlCLEtBQUssRUFBRSxDQUFDO1FBRFEsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXZDbEM7OztXQUdHO1FBRUgsaUJBQVksR0FBUSxPQUFPLENBQUM7UUFFNUI7OztXQUdHO1FBRUgsaUJBQVksR0FBUSxPQUFPLENBQUM7UUFVNUIsb0JBQWUsR0FBUSxVQUFVLENBQUM7UUFNbEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBTS9CLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFbkIsbUJBQWMs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QTJFO1lBQzNFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRCxDQUFDO2FBQU0sSUFDSCxNQUFNO1lBQ04sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUNsRSxDQUFDO1lBQ0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDTCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsTUFBb0I7UUFDNUMsSUFBSSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDaEMsQ0FBQztJQUNMLENBQUM7OEdBcFZpQiw0QkFBNEI7a0dBQTVCLDRCQUE0Qjs7MkZBQTVCLDRCQUE0QjtrQkFEakQsU0FBUzsyRUFNTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQVFOLFlBQVk7c0JBRFgsS0FBSztnQkFRTixZQUFZO3NCQURYLEtBQUs7Z0JBUU4sb0JBQW9CO3NCQURuQixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixNQUFNO2dCQTJCSCxtQkFBbUI7c0JBRHRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2UsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaXJzdCwgbWFwLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRm9laG5JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYmplY3RIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL29iamVjdC5oZWxwZXInO1xuaW1wb3J0IHsgU2VydmljZUxvY2F0b3IgfSBmcm9tICcuLi9zZXJ2aWNlLWxvY2F0b3InO1xuaW1wb3J0IHsgRm9ybVNlbGVjdE9wdGlvbkdyb3VwIH0gZnJvbSAnLi9mb3JtLXNlbGVjdC1vcHRpb24tZ3JvdXAnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGb2VobkNoZWNrYWJsZUdyb3VwQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBGb2VobklucHV0Q29tcG9uZW50PGFueT5cbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzXG57XG4gICAgQElucHV0KClcbiAgICBlbGVtZW50czogYW55O1xuXG4gICAgQElucHV0KClcbiAgICBlbGVtZW50c1VybDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHZhbHVlIGluIHRoZSBvYmplY3QuIENhbiBiZSBhIHN0cmluZyBvciBhIGZ1bmN0aW9uLlxuICAgICAqIERlZmF1bHRzIHRvIGB2YWx1ZWBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGVsZW1lbnRWYWx1ZTogYW55ID0gJ3ZhbHVlJztcblxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBpbiB0aGUgb2JqZWN0LiBDYW4gYmUgYSBzdHJpbmcgb3IgYSBmdW5jdGlvblxuICAgICAqIERlZmF1bHRzIHRvIGBsYWJlbGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGVsZW1lbnRMYWJlbDogYW55ID0gJ2xhYmVsJztcblxuICAgIC8qKlxuICAgICAqIFRoZSBpZGVudGlmeSB2YWx1ZSB0byBtYXRjaCB0aGUgdmFsdWUgdG8gdGhlIGxpc3Qgb2YgZWxlbWVudHMuXG4gICAgICogQnkgZGVmYXVsdCBgeCA9PiB4YFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZWxlbWVudFZhbHVlSWRlbnRpdHk6IChlbGVtZW50OiBhbnkpID0+IGFueTtcblxuICAgIEBJbnB1dCgpXG4gICAgZWxlbWVudERpc2FibGVkOiBhbnkgPSAnZGlzYWJsZWQnO1xuXG4gICAgQElucHV0KClcbiAgICBlbGVtZW50R3JvdXA6IGFueTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGVsZW1lbnRzTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBncm91cGVkRWxlbWVudHM6IEZvcm1TZWxlY3RPcHRpb25Hcm91cFtdO1xuXG4gICAgaHR0cENsaWVudDogSHR0cENsaWVudDtcblxuICAgIHByb3RlY3RlZCBtdWx0aXBsZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcHVsbGluZ186IE9ic2VydmFibGU8YW55PjtcbiAgICBwcml2YXRlIF9vbkluaXRTdWJqZWN0OiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gICAgcHJpdmF0ZSBkZWZhdWx0RWxlbWVudFZhbHVlXzogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmh0dHBDbGllbnQgPSBTZXJ2aWNlTG9jYXRvci5pbmplY3Rvci5nZXQoSHR0cENsaWVudCk7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlID0gJ29mZic7XG4gICAgfVxuXG4gICAgZ2V0IG9uSW5pdFN1YmplY3QoKTogU3ViamVjdDxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uSW5pdFN1YmplY3Q7XG4gICAgfVxuXG4gICAgZ2V0IGRlZmF1bHRFbGVtZW50VmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZV87XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgZGVmYXVsdEVsZW1lbnRWYWx1ZSh2YWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVfID0gdmFsO1xuICAgICAgICBpZiAoIXRoaXMuZWxlbWVudHNVcmwpIHtcbiAgICAgICAgICAgIHRoaXMub25FbGVtZW50c1JldHJpZXZlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnRzVXJsKSB7XG4gICAgICAgICAgICB0aGlzLmZldGNoRWxlbWVudHNGcm9tVXJsKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5lbGVtZW50cykge1xuICAgICAgICAgICAgdGhpcy5vbkVsZW1lbnRzUmV0cmlldmVkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIC8vIEhhbmRsZSBhIGNoYW5nZSBpbiB0aGUgZWxlbWVudHMgSW5wdXQuXG4gICAgICAgIHRoaXMub25FbGVtZW50c0NoYW5nZShjaGFuZ2VzLmVsZW1lbnRzKTtcblxuICAgICAgICAvLyBIYW5kbGUgYSBjaGFuZ2UgaW4gdGhlIGVsZW1lbnRzVXJsIElucHV0LlxuICAgICAgICB0aGlzLm9uRWxlbWVudHNVcmxDaGFuZ2UoY2hhbmdlcy5lbGVtZW50c1VybCk7XG4gICAgfVxuXG4gICAgZ2V0RWxlbWVudHMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgaWYgKCEhdGhpcy5lbGVtZW50c1VybCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVsbGluZ187XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2YodGhpcy5lbGVtZW50cyk7XG4gICAgfVxuXG4gICAgZ2V0R3JvdXAoZWxlbWVudDogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFlbGVtZW50IHx8ICF0aGlzLmVsZW1lbnRHcm91cCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZWxlbWVudEdyb3VwID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmVzdGVkUHJvcGVydHkoZWxlbWVudCwgdGhpcy5lbGVtZW50R3JvdXApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRHcm91cChlbGVtZW50KTtcbiAgICB9XG5cbiAgICBzZXRFbGVtZW50cyhlbGVtZW50czogYW55W10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbGVtZW50cyA9IGVsZW1lbnRzO1xuICAgICAgICB0aGlzLmVsZW1lbnRzTG9hZGVkLm5leHQoZWxlbWVudHMpO1xuICAgICAgICB0aGlzLm9uRWxlbWVudHNSZXRyaWV2ZWQoKTtcbiAgICB9XG5cbiAgICBnZXRWYWx1ZShlbGVtZW50OiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVsZW1lbnRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE5lc3RlZFByb3BlcnR5KGVsZW1lbnQsIHRoaXMuZWxlbWVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50VmFsdWUoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgZ2V0TGFiZWwoZWxlbWVudDogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVsZW1lbnRMYWJlbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE5lc3RlZFByb3BlcnR5KGVsZW1lbnQsIHRoaXMuZWxlbWVudExhYmVsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50TGFiZWwoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgZ2V0RGlzYWJsZWQoZWxlbWVudDogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAnZGlzYWJsZWQnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVsZW1lbnREaXNhYmxlZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE5lc3RlZFByb3BlcnR5KGVsZW1lbnQsIHRoaXMuZWxlbWVudERpc2FibGVkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50RGlzYWJsZWQoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgb25DaGVjayhcbiAgICAgICAgZWxlbWVudDogYW55LFxuICAgICAgICBzZWxlY3RFdmVudDogYW55LFxuICAgICAgICBmaXJlTW9kZWxDaGFuZ2U6IGJvb2xlYW4gPSB0cnVlXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZShlbGVtZW50KTtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5tb2RlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kZWwgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG1vZGVsQXJyYXkgPSB0aGlzLm1vZGVsIGFzIHN0cmluZ1tdO1xuICAgICAgICAgICAgaWYgKCEhc2VsZWN0RXZlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maW5kSW5kZXhJbk1vZGVsKHZhbHVlKSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kZWxBcnJheS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4SW5Nb2RlbCA9IHRoaXMuZmluZEluZGV4SW5Nb2RlbCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4SW5Nb2RlbCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGVsQXJyYXkuc3BsaWNlKGluZGV4SW5Nb2RlbCwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZpcmVNb2RlbENoYW5nZSkge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kZWwgPSBbLi4ubW9kZWxBcnJheV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoISFzZWxlY3RFdmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kZWwgPSB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXJlVmFsdWVzRXF1YWxzKHRoaXMubW9kZWwsIHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0VsZW1lbnRTZWxlY3RlZChlbGVtZW50OiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlKGVsZW1lbnQpO1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubW9kZWwgJiYgdGhpcy5maW5kSW5kZXhJbk1vZGVsKHZhbHVlKSA+PSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXJlVmFsdWVzRXF1YWxzKHRoaXMubW9kZWwsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEhdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwodGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLnJlc2V0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWZyZXNoRWxlbWVudHNVcmwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnRzVXJsKSB7XG4gICAgICAgICAgICB0aGlzLmZldGNoRWxlbWVudHNGcm9tVXJsKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZmluZEluZGV4SW5Nb2RlbCh2YWx1ZTogYW55KTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHJldHVybiAodGhpcy5tb2RlbCBhcyBhbnlbXSkuZmluZEluZGV4KG1vZGVsVmFsdWUgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmFyZVZhbHVlc0VxdWFscyh2YWx1ZSwgbW9kZWxWYWx1ZSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ2ZpbmRJbmRleEluTW9kZWwgY2Fubm90IGJlIHVzZWQgd2hlbiB0aGlzLm11bHRpcGxlIGlzIGZhbHNlICEnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFyZVZhbHVlc0VxdWFscyh2YWx1ZTE6IGFueSwgdmFsdWUyOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgLy8gR2V0IGFuIG9wdGlvbiB3YXkgdG8gY29tcGFyZSB0aGUgdmFsdWUgZnJvbSB0aGUgbW9kZWwuXG4gICAgICAgIC8vIFRoaXMgYWxsb3dzIHVzIHRvIHByb3Blcmx5IHVzZSBhbiBvYmplY3QgYXMgdGhlIG1vZGVsIHJhdGhlclxuICAgICAgICAvLyB0aGFuIGEgc3RyaW5nLlxuICAgICAgICBjb25zdCBpZGVudGl0eUZuID0gdGhpcy5nZXRWYWx1ZUlkZW50aXR5RnVuY3Rpb24oKTtcbiAgICAgICAgaWYgKGlkZW50aXR5Rm4pIHtcbiAgICAgICAgICAgIHJldHVybiBpZGVudGl0eUZuKHZhbHVlMSkgPT09IGlkZW50aXR5Rm4odmFsdWUyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3RIZWxwZXIuaXNFcXVhbCh2YWx1ZTEsIHZhbHVlMik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25FbGVtZW50c1JldHJpZXZlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm1vZGVsICYmIHRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUub25NaWNyb3Rhc2tFbXB0eS5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKHRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1vZGVsKSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5vbk1pY3JvdGFza0VtcHR5LnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwodGhpcy5tb2RlbF8pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncm91cGVkRWxlbWVudHMgPSB0aGlzLmdldEdyb3VwZWRFbGVtZW50cygpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXROZXN0ZWRQcm9wZXJ0eShvYmo6IGFueSwga2V5OiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIG9iaikge1xuICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgICAgICAvLyBpbiBjYXNlIGl0IGlzIGFuIG9iamVjdFxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqW3Byb3BlcnR5XSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXROZXN0ZWRQcm9wZXJ0eShcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ialtwcm9wZXJ0eV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXkuc3BsaXQoJy4nKS5zbGljZSgxKS5qb2luKCcuJylcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlc3VsdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5ID09PSBrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9ialtrZXldOyAvLyByZXR1cm5zIHRoZSB2YWx1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0R3JvdXBlZEVsZW1lbnRzKCk6IEZvcm1TZWxlY3RPcHRpb25Hcm91cFtdIHtcbiAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnRzKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnRHcm91cCkge1xuICAgICAgICAgICAgcmV0dXJuIFt7IGdyb3VwVGl0bGU6IG51bGwsIGVsZW1lbnRzOiB0aGlzLmVsZW1lbnRzIH1dO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxlbWVudHNCeUdyb3VwOiBNYXA8c3RyaW5nLCBhbnlbXT4gPSBuZXcgTWFwPHN0cmluZywgYW55W10+KCk7XG5cbiAgICAgICAgY29uc3QgZW1wdHlHcm91cCA9IG5ldyBGb3JtU2VsZWN0T3B0aW9uR3JvdXAoKTtcbiAgICAgICAgZW1wdHlHcm91cC5lbGVtZW50cyA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB0aGlzLmVsZW1lbnRzKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cElkID0gdGhpcy5nZXRHcm91cChlbGVtZW50KTtcbiAgICAgICAgICAgIGlmICghIWdyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudHNPZkdyb3VwOiBhbnlbXSA9IGVsZW1lbnRzQnlHcm91cC5nZXQoZ3JvdXBJZCk7XG4gICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50c09mR3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudHNPZkdyb3VwID0gW107XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzQnlHcm91cC5zZXQoZ3JvdXBJZCwgZWxlbWVudHNPZkdyb3VwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxlbWVudHNPZkdyb3VwLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGVtcHR5R3JvdXAuZWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvcm1TZWxlY3RPcHRpb25zR3JvdXA6IEZvcm1TZWxlY3RPcHRpb25Hcm91cFtdID0gW107XG5cbiAgICAgICAgaWYgKGVtcHR5R3JvdXAuZWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9ybVNlbGVjdE9wdGlvbnNHcm91cC5wdXNoKGVtcHR5R3JvdXApO1xuICAgICAgICB9XG4gICAgICAgIGVsZW1lbnRzQnlHcm91cC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICBmb3JtU2VsZWN0T3B0aW9uc0dyb3VwLnB1c2goeyBncm91cFRpdGxlOiBrZXksIGVsZW1lbnRzOiB2YWx1ZSB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZvcm1TZWxlY3RPcHRpb25zR3JvdXA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRWYWx1ZUlkZW50aXR5RnVuY3Rpb24oKTogKGVsZW1lbnQ6IGFueSkgPT4gYW55IHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLmVsZW1lbnRWYWx1ZUlkZW50aXR5ID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IHRoaXMuZWxlbWVudFZhbHVlSWRlbnRpdHlcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZldGNoRGF0YSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLmVsZW1lbnRzVXJsKS5waXBlKFxuICAgICAgICAgICAgbWFwKHIgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzOiBhbnkgPSByO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RWxlbWVudHMoZWxlbWVudHMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50cztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZldGNoRWxlbWVudHNGcm9tVXJsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnB1bGxpbmdfID0gdGhpcy5mZXRjaERhdGEoKTtcbiAgICAgICAgdGhpcy5wdWxsaW5nXy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vbkluaXRTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25FbGVtZW50c0NoYW5nZShjaGFuZ2U6IFNpbXBsZUNoYW5nZSk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlICYmICFjaGFuZ2UuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIC8vIFdoZW4gZWxlbWVudHMgYXJlIGRlZmVycmVkIGZyb20gbmdPbkluaXQgKGkuZS4gcGlwZSBhc3luYyBpcyB1c2VkKVxuICAgICAgICAgICAgdGhpcy5vbkVsZW1lbnRzUmV0cmlldmVkKCk7XG4gICAgICAgICAgICAvLyBIYWNrIHRvIHJlZnJlc2ggdGhlIGRpc3BsYXkgdmFsdWVcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh0aGlzLm1vZGVsXyk7XG4gICAgICAgICAgICAvLyAgV2hlbiBlbGVtZW50cyBhcmUgZGVmZXJyZWQgZnJvbSBuZ09uSW5pdCAoaS5lLiBwaXBlIGFzeW5jIGlzIHVzZWQpXG4gICAgICAgICAgICAvLyAgTmVlZCB0byBmaXJlIGFnYWluICdlbGVtZW50c0xvYWRlZCcgb3RoZXJ3aXNlIG9ubHkgJ251bGwnIHZhbHVlIGlzIHNlbnRcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudHNMb2FkZWQubmV4dChjaGFuZ2UuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGNoYW5nZSAmJlxuICAgICAgICAgICAgIU9iamVjdEhlbHBlci5pc0VxdWFsKGNoYW5nZS5jdXJyZW50VmFsdWUsIGNoYW5nZS5wcmV2aW91c1ZhbHVlKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudHNMb2FkZWQubmV4dChjaGFuZ2UuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25FbGVtZW50c1VybENoYW5nZShjaGFuZ2U6IFNpbXBsZUNoYW5nZSk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlICYmICFjaGFuZ2UuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hFbGVtZW50c0Zyb21VcmwoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tY2hlY2thYmxlLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1jaGVja2FibGVzL2ZvZWhuLWNoZWNrYWJsZS1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUdULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBR25FLE1BQU0sT0FBZ0IsNEJBQ2xCLFNBQVEsbUJBQXdCO0lBZ0RoQyxZQUFvQixNQUFjO1FBQzlCLEtBQUssRUFBRSxDQUFDO1FBRFEsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXZDbEM7OztXQUdHO1FBRUgsaUJBQVksR0FBUSxPQUFPLENBQUM7UUFFNUI7OztXQUdHO1FBRUgsaUJBQVksR0FBUSxPQUFPLENBQUM7UUFVNUIsb0JBQWUsR0FBUSxVQUFVLENBQUM7UUFNbEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBTS9CLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFbkIsbUJBQWMs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QUFVLEdBQUcsSUFBSSxDQUFDLEtBQWlCLENBQUM7UUFDMUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNDLHFDQUFxQztRQUNyQyxJQUFJLFlBQVksSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQ0QsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxZQUFZLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzlCLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxlQUFlO1FBQ2YsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0wsQ0FBQzs4R0FoV2lCLDRCQUE0QjtrR0FBNUIsNEJBQTRCOzsyRkFBNUIsNEJBQTRCO2tCQURqRCxTQUFTOzJFQU1OLFFBQVE7c0JBRFAsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBUU4sWUFBWTtzQkFEWCxLQUFLO2dCQVFOLFlBQVk7c0JBRFgsS0FBSztnQkFRTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixjQUFjO3NCQURiLE1BQU07Z0JBMkJILG1CQUFtQjtzQkFEdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZSxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0LCBtYXAsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGb2VobklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vZm9laG4taW5wdXQvZm9laG4taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IE9iamVjdEhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvb2JqZWN0LmhlbHBlcic7XG5pbXBvcnQgeyBTZXJ2aWNlTG9jYXRvciB9IGZyb20gJy4uL3NlcnZpY2UtbG9jYXRvcic7XG5pbXBvcnQgeyBGb3JtU2VsZWN0T3B0aW9uR3JvdXAgfSBmcm9tICcuL2Zvcm0tc2VsZWN0LW9wdGlvbi1ncm91cCc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZvZWhuQ2hlY2thYmxlR3JvdXBDb21wb25lbnRcbiAgICBleHRlbmRzIEZvZWhuSW5wdXRDb21wb25lbnQ8YW55PlxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXNcbntcbiAgICBASW5wdXQoKVxuICAgIGVsZW1lbnRzOiBhbnk7XG5cbiAgICBASW5wdXQoKVxuICAgIGVsZW1lbnRzVXJsOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdmFsdWUgaW4gdGhlIG9iamVjdC4gQ2FuIGJlIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb24uXG4gICAgICogRGVmYXVsdHMgdG8gYHZhbHVlYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZWxlbWVudFZhbHVlOiBhbnkgPSAndmFsdWUnO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGxhYmVsIGluIHRoZSBvYmplY3QuIENhbiBiZSBhIHN0cmluZyBvciBhIGZ1bmN0aW9uXG4gICAgICogRGVmYXVsdHMgdG8gYGxhYmVsYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZWxlbWVudExhYmVsOiBhbnkgPSAnbGFiZWwnO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGlkZW50aWZ5IHZhbHVlIHRvIG1hdGNoIHRoZSB2YWx1ZSB0byB0aGUgbGlzdCBvZiBlbGVtZW50cy5cbiAgICAgKiBCeSBkZWZhdWx0IGB4ID0+IHhgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBlbGVtZW50VmFsdWVJZGVudGl0eTogKGVsZW1lbnQ6IGFueSkgPT4gYW55O1xuXG4gICAgQElucHV0KClcbiAgICBlbGVtZW50RGlzYWJsZWQ6IGFueSA9ICdkaXNhYmxlZCc7XG5cbiAgICBASW5wdXQoKVxuICAgIGVsZW1lbnRHcm91cDogYW55O1xuXG4gICAgQE91dHB1dCgpXG4gICAgZWxlbWVudHNMb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIGdyb3VwZWRFbGVtZW50czogRm9ybVNlbGVjdE9wdGlvbkdyb3VwW107XG5cbiAgICBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xuXG4gICAgcHJvdGVjdGVkIG11bHRpcGxlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBwdWxsaW5nXzogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIHByaXZhdGUgX29uSW5pdFN1YmplY3Q6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgICBwcml2YXRlIGRlZmF1bHRFbGVtZW50VmFsdWVfOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nWm9uZTogTmdab25lKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuaHR0cENsaWVudCA9IFNlcnZpY2VMb2NhdG9yLmluamVjdG9yLmdldChIdHRwQ2xpZW50KTtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGUgPSAnb2ZmJztcbiAgICB9XG5cbiAgICBnZXQgb25Jbml0U3ViamVjdCgpOiBTdWJqZWN0PGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb25Jbml0U3ViamVjdDtcbiAgICB9XG5cbiAgICBnZXQgZGVmYXVsdEVsZW1lbnRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlXztcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBkZWZhdWx0RWxlbWVudFZhbHVlKHZhbDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZV8gPSB2YWw7XG4gICAgICAgIGlmICghdGhpcy5lbGVtZW50c1VybCkge1xuICAgICAgICAgICAgdGhpcy5vbkVsZW1lbnRzUmV0cmlldmVkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudHNVcmwpIHtcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hFbGVtZW50c0Zyb21VcmwoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmVsZW1lbnRzKSB7XG4gICAgICAgICAgICB0aGlzLm9uRWxlbWVudHNSZXRyaWV2ZWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgLy8gSGFuZGxlIGEgY2hhbmdlIGluIHRoZSBlbGVtZW50cyBJbnB1dC5cbiAgICAgICAgdGhpcy5vbkVsZW1lbnRzQ2hhbmdlKGNoYW5nZXMuZWxlbWVudHMpO1xuXG4gICAgICAgIC8vIEhhbmRsZSBhIGNoYW5nZSBpbiB0aGUgZWxlbWVudHNVcmwgSW5wdXQuXG4gICAgICAgIHRoaXMub25FbGVtZW50c1VybENoYW5nZShjaGFuZ2VzLmVsZW1lbnRzVXJsKTtcbiAgICB9XG5cbiAgICBnZXRFbGVtZW50cygpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBpZiAoISF0aGlzLmVsZW1lbnRzVXJsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wdWxsaW5nXztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvZih0aGlzLmVsZW1lbnRzKTtcbiAgICB9XG5cbiAgICBnZXRHcm91cChlbGVtZW50OiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWVsZW1lbnQgfHwgIXRoaXMuZWxlbWVudEdyb3VwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbGVtZW50R3JvdXAgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXROZXN0ZWRQcm9wZXJ0eShlbGVtZW50LCB0aGlzLmVsZW1lbnRHcm91cCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudEdyb3VwKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIHNldEVsZW1lbnRzKGVsZW1lbnRzOiBhbnlbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmVsZW1lbnRzID0gZWxlbWVudHM7XG4gICAgICAgIHRoaXMuZWxlbWVudHNMb2FkZWQubmV4dChlbGVtZW50cyk7XG4gICAgICAgIHRoaXMub25FbGVtZW50c1JldHJpZXZlZCgpO1xuICAgIH1cblxuICAgIGdldFZhbHVlKGVsZW1lbnQ6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZWxlbWVudFZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmVzdGVkUHJvcGVydHkoZWxlbWVudCwgdGhpcy5lbGVtZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRWYWx1ZShlbGVtZW50KTtcbiAgICB9XG5cbiAgICBnZXRMYWJlbChlbGVtZW50OiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZWxlbWVudExhYmVsID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmVzdGVkUHJvcGVydHkoZWxlbWVudCwgdGhpcy5lbGVtZW50TGFiZWwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRMYWJlbChlbGVtZW50KTtcbiAgICB9XG5cbiAgICBnZXREaXNhYmxlZChlbGVtZW50OiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuICdkaXNhYmxlZCc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZWxlbWVudERpc2FibGVkID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmVzdGVkUHJvcGVydHkoZWxlbWVudCwgdGhpcy5lbGVtZW50RGlzYWJsZWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnREaXNhYmxlZChlbGVtZW50KTtcbiAgICB9XG5cbiAgICBvbkNoZWNrKFxuICAgICAgICBlbGVtZW50OiBhbnksXG4gICAgICAgIHZhbHVlRW1pdHRlZDogYW55LFxuICAgICAgICBmaXJlTW9kZWxDaGFuZ2U6IGJvb2xlYW4gPSB0cnVlXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZShlbGVtZW50KTtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMub25DaGVja011bHRpcGxlKHZhbHVlLCB2YWx1ZUVtaXR0ZWQsIGZpcmVNb2RlbENoYW5nZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2luZ2xlIHNlbGVjdCB2YWx1ZVxuICAgICAgICBpZiAodmFsdWVFbWl0dGVkKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGVsID0gdmFsdWU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2luZ2xlIHVuc2VsZWN0IHZhbHVlXG4gICAgICAgIGlmICh0aGlzLmFyZVZhbHVlc0VxdWFscyh0aGlzLm1vZGVsLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNFbGVtZW50U2VsZWN0ZWQoZWxlbWVudDogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZShlbGVtZW50KTtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1vZGVsICYmIHRoaXMuZmluZEluZGV4SW5Nb2RlbCh2YWx1ZSkgPj0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmFyZVZhbHVlc0VxdWFscyh0aGlzLm1vZGVsLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmVzZXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIucmVzZXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZnJlc2hFbGVtZW50c1VybCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudHNVcmwpIHtcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hFbGVtZW50c0Zyb21VcmwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBmaW5kSW5kZXhJbk1vZGVsKHZhbHVlOiBhbnkpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgcmV0dXJuICh0aGlzLm1vZGVsIGFzIGFueVtdKS5maW5kSW5kZXgobW9kZWxWYWx1ZSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuYXJlVmFsdWVzRXF1YWxzKHZhbHVlLCBtb2RlbFZhbHVlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnZmluZEluZGV4SW5Nb2RlbCBjYW5ub3QgYmUgdXNlZCB3aGVuIHRoaXMubXVsdGlwbGUgaXMgZmFsc2UgISdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXJlVmFsdWVzRXF1YWxzKHZhbHVlMTogYW55LCB2YWx1ZTI6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBHZXQgYW4gb3B0aW9uIHdheSB0byBjb21wYXJlIHRoZSB2YWx1ZSBmcm9tIHRoZSBtb2RlbC5cbiAgICAgICAgLy8gVGhpcyBhbGxvd3MgdXMgdG8gcHJvcGVybHkgdXNlIGFuIG9iamVjdCBhcyB0aGUgbW9kZWwgcmF0aGVyXG4gICAgICAgIC8vIHRoYW4gYSBzdHJpbmcuXG4gICAgICAgIGNvbnN0IGlkZW50aXR5Rm4gPSB0aGlzLmdldFZhbHVlSWRlbnRpdHlGdW5jdGlvbigpO1xuICAgICAgICBpZiAoaWRlbnRpdHlGbikge1xuICAgICAgICAgICAgcmV0dXJuIGlkZW50aXR5Rm4odmFsdWUxKSA9PT0gaWRlbnRpdHlGbih2YWx1ZTIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdEhlbHBlci5pc0VxdWFsKHZhbHVlMSwgdmFsdWUyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkVsZW1lbnRzUmV0cmlldmVkKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubW9kZWwgJiYgdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5vbk1pY3JvdGFza0VtcHR5LnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwodGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubW9kZWwpIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLm9uTWljcm90YXNrRW1wdHkucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh0aGlzLm1vZGVsXyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdyb3VwZWRFbGVtZW50cyA9IHRoaXMuZ2V0R3JvdXBlZEVsZW1lbnRzKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldE5lc3RlZFByb3BlcnR5KG9iajogYW55LCBrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gb2JqKSB7XG4gICAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHByb3BlcnR5KSkge1xuICAgICAgICAgICAgICAgIC8vIGluIGNhc2UgaXQgaXMgYW4gb2JqZWN0XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmpbcHJvcGVydHldID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldE5lc3RlZFByb3BlcnR5KFxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqW3Byb3BlcnR5XSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleS5zcGxpdCgnLicpLnNsaWNlKDEpLmpvaW4oJy4nKVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzdWx0ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkgPT09IGtleSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2JqW2tleV07IC8vIHJldHVybnMgdGhlIHZhbHVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRHcm91cGVkRWxlbWVudHMoKTogRm9ybVNlbGVjdE9wdGlvbkdyb3VwW10ge1xuICAgICAgICBpZiAoIXRoaXMuZWxlbWVudHMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuZWxlbWVudEdyb3VwKSB7XG4gICAgICAgICAgICByZXR1cm4gW3sgZ3JvdXBUaXRsZTogbnVsbCwgZWxlbWVudHM6IHRoaXMuZWxlbWVudHMgfV07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbGVtZW50c0J5R3JvdXA6IE1hcDxzdHJpbmcsIGFueVtdPiA9IG5ldyBNYXA8c3RyaW5nLCBhbnlbXT4oKTtcblxuICAgICAgICBjb25zdCBlbXB0eUdyb3VwID0gbmV3IEZvcm1TZWxlY3RPcHRpb25Hcm91cCgpO1xuICAgICAgICBlbXB0eUdyb3VwLmVsZW1lbnRzID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHRoaXMuZWxlbWVudHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwSWQgPSB0aGlzLmdldEdyb3VwKGVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKGdyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudHNPZkdyb3VwOiBhbnlbXSA9IGVsZW1lbnRzQnlHcm91cC5nZXQoZ3JvdXBJZCk7XG4gICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50c09mR3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudHNPZkdyb3VwID0gW107XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzQnlHcm91cC5zZXQoZ3JvdXBJZCwgZWxlbWVudHNPZkdyb3VwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxlbWVudHNPZkdyb3VwLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGVtcHR5R3JvdXAuZWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvcm1TZWxlY3RPcHRpb25zR3JvdXA6IEZvcm1TZWxlY3RPcHRpb25Hcm91cFtdID0gW107XG5cbiAgICAgICAgaWYgKGVtcHR5R3JvdXAuZWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9ybVNlbGVjdE9wdGlvbnNHcm91cC5wdXNoKGVtcHR5R3JvdXApO1xuICAgICAgICB9XG4gICAgICAgIGVsZW1lbnRzQnlHcm91cC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICBmb3JtU2VsZWN0T3B0aW9uc0dyb3VwLnB1c2goeyBncm91cFRpdGxlOiBrZXksIGVsZW1lbnRzOiB2YWx1ZSB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZvcm1TZWxlY3RPcHRpb25zR3JvdXA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRWYWx1ZUlkZW50aXR5RnVuY3Rpb24oKTogKGVsZW1lbnQ6IGFueSkgPT4gYW55IHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLmVsZW1lbnRWYWx1ZUlkZW50aXR5ID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IHRoaXMuZWxlbWVudFZhbHVlSWRlbnRpdHlcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZldGNoRGF0YSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLmVsZW1lbnRzVXJsKS5waXBlKFxuICAgICAgICAgICAgbWFwKHIgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzOiBhbnkgPSByO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RWxlbWVudHMoZWxlbWVudHMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50cztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZldGNoRWxlbWVudHNGcm9tVXJsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnB1bGxpbmdfID0gdGhpcy5mZXRjaERhdGEoKTtcbiAgICAgICAgdGhpcy5wdWxsaW5nXy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vbkluaXRTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25FbGVtZW50c0NoYW5nZShjaGFuZ2U6IFNpbXBsZUNoYW5nZSk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlICYmICFjaGFuZ2UuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIC8vIFdoZW4gZWxlbWVudHMgYXJlIGRlZmVycmVkIGZyb20gbmdPbkluaXQgKGkuZS4gcGlwZSBhc3luYyBpcyB1c2VkKVxuICAgICAgICAgICAgdGhpcy5vbkVsZW1lbnRzUmV0cmlldmVkKCk7XG4gICAgICAgICAgICAvLyBIYWNrIHRvIHJlZnJlc2ggdGhlIGRpc3BsYXkgdmFsdWVcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh0aGlzLm1vZGVsXyk7XG4gICAgICAgICAgICAvLyAgV2hlbiBlbGVtZW50cyBhcmUgZGVmZXJyZWQgZnJvbSBuZ09uSW5pdCAoaS5lLiBwaXBlIGFzeW5jIGlzIHVzZWQpXG4gICAgICAgICAgICAvLyAgTmVlZCB0byBmaXJlIGFnYWluICdlbGVtZW50c0xvYWRlZCcgb3RoZXJ3aXNlIG9ubHkgJ251bGwnIHZhbHVlIGlzIHNlbnRcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudHNMb2FkZWQubmV4dChjaGFuZ2UuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGNoYW5nZSAmJlxuICAgICAgICAgICAgIU9iamVjdEhlbHBlci5pc0VxdWFsKGNoYW5nZS5jdXJyZW50VmFsdWUsIGNoYW5nZS5wcmV2aW91c1ZhbHVlKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudHNMb2FkZWQubmV4dChjaGFuZ2UuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25FbGVtZW50c1VybENoYW5nZShjaGFuZ2U6IFNpbXBsZUNoYW5nZSk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlICYmICFjaGFuZ2UuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hFbGVtZW50c0Zyb21VcmwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25DaGVja011bHRpcGxlKFxuICAgICAgICB2YWx1ZTogc3RyaW5nLFxuICAgICAgICB2YWx1ZUVtaXR0ZWQ6IGFueSxcbiAgICAgICAgZmlyZU1vZGVsQ2hhbmdlOiBib29sZWFuID0gdHJ1ZVxuICAgICk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubW9kZWwpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1vZGVsQXJyYXkgPSB0aGlzLm1vZGVsIGFzIHN0cmluZ1tdO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZmluZEluZGV4SW5Nb2RlbCh2YWx1ZSk7XG5cbiAgICAgICAgLy8gQWRkIGVsZW1lbnQgd2hlbiBpdCBkb2VzIG5vdCBleGlzdFxuICAgICAgICBpZiAodmFsdWVFbWl0dGVkICYmIGluZGV4IDwgMCkge1xuICAgICAgICAgICAgbW9kZWxBcnJheS5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZW1vdmUgZXhpc3RpbmcgZWxlbWVudFxuICAgICAgICBpZiAoIXZhbHVlRW1pdHRlZCAmJiBpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICBtb2RlbEFycmF5LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVXBkYXRlIG1vZGVsXG4gICAgICAgIGlmIChmaXJlTW9kZWxDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBbLi4ubW9kZWxBcnJheV07XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -31,10 +31,10 @@ export class FoehnConfirmModalComponent {
31
31
  this.isVisible = status;
32
32
  }
33
33
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnConfirmModalComponent, deps: [{ token: i1.FoehnConfirmModalService }], target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: FoehnConfirmModalComponent, selector: "foehn-confirm-modal", ngImport: i0, template: "<foehn-modal\n [modalHeaderText]=\"modalContent.title || 'Confirmation'\"\n modalSize=\"modal-md\"\n [isModalVisible]=\"isVisible\"\n (isModalVisibleChange)=\"updateVisibilityStatus($event)\"\n [closeable]=\"\n modalContent.closeable !== null && modalContent.closeable !== undefined\n ? modalContent.closeable\n : true\n \"\n *ngIf=\"content | async as modalContent\"\n>\n <p [innerHTML]=\"modalContent.htmlContent\"></p>\n\n <div modal-footer>\n <div class=\"d-flex justify-content-end me-2 mb-2 mt-2\">\n <button\n id=\"cancelButton\"\n class=\"btn btn-secondary\"\n (click)=\"cancel()\"\n >\n {{ modalContent.cancelButtonLabel || 'Annuler' }}\n </button>\n <button\n id=\"confirmButton\"\n class=\"btn btn-primary ms-3\"\n (click)=\"ok()\"\n >\n {{ modalContent.okButtonLabel || 'Confirmer' }}\n </button>\n </div>\n </div>\n</foehn-modal>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FoehnModalComponent, selector: "foehn-modal", inputs: ["id", "name", "modalSize", "modalBodyText", "modalHeaderText", "closeable", "modalTriggerHtmlElement", "isModalVisible"], outputs: ["isModalVisibleChange"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
34
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: FoehnConfirmModalComponent, selector: "foehn-confirm-modal", ngImport: i0, template: "<foehn-modal\n [modalHeaderText]=\"modalContent.title || 'Confirmation'\"\n modalSize=\"modal-md\"\n [isModalVisible]=\"isVisible\"\n (isModalVisibleChange)=\"updateVisibilityStatus($event)\"\n [closeable]=\"\n modalContent.closeable !== null && modalContent.closeable !== undefined\n ? modalContent.closeable\n : true\n \"\n *ngIf=\"content | async as modalContent\"\n>\n <p [innerHTML]=\"modalContent.htmlContent\"></p>\n\n <div modal-footer>\n <div class=\"d-flex justify-content-end me-2 mb-2 mt-2\">\n <button\n id=\"cancelButton\"\n type=\"button\"\n class=\"btn btn-secondary\"\n (click)=\"cancel()\"\n >\n {{ modalContent.cancelButtonLabel || 'Annuler' }}\n </button>\n <button\n id=\"confirmButton\"\n type=\"button\"\n class=\"btn btn-primary ms-3\"\n (click)=\"ok()\"\n >\n {{ modalContent.okButtonLabel || 'Confirmer' }}\n </button>\n </div>\n </div>\n</foehn-modal>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FoehnModalComponent, selector: "foehn-modal", inputs: ["id", "name", "modalSize", "modalBodyText", "modalHeaderText", "closeable", "modalTriggerHtmlElement", "isModalVisible"], outputs: ["isModalVisibleChange"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
35
35
  }
36
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FoehnConfirmModalComponent, decorators: [{
37
37
  type: Component,
38
- args: [{ selector: 'foehn-confirm-modal', template: "<foehn-modal\n [modalHeaderText]=\"modalContent.title || 'Confirmation'\"\n modalSize=\"modal-md\"\n [isModalVisible]=\"isVisible\"\n (isModalVisibleChange)=\"updateVisibilityStatus($event)\"\n [closeable]=\"\n modalContent.closeable !== null && modalContent.closeable !== undefined\n ? modalContent.closeable\n : true\n \"\n *ngIf=\"content | async as modalContent\"\n>\n <p [innerHTML]=\"modalContent.htmlContent\"></p>\n\n <div modal-footer>\n <div class=\"d-flex justify-content-end me-2 mb-2 mt-2\">\n <button\n id=\"cancelButton\"\n class=\"btn btn-secondary\"\n (click)=\"cancel()\"\n >\n {{ modalContent.cancelButtonLabel || 'Annuler' }}\n </button>\n <button\n id=\"confirmButton\"\n class=\"btn btn-primary ms-3\"\n (click)=\"ok()\"\n >\n {{ modalContent.okButtonLabel || 'Confirmer' }}\n </button>\n </div>\n </div>\n</foehn-modal>\n" }]
38
+ args: [{ selector: 'foehn-confirm-modal', template: "<foehn-modal\n [modalHeaderText]=\"modalContent.title || 'Confirmation'\"\n modalSize=\"modal-md\"\n [isModalVisible]=\"isVisible\"\n (isModalVisibleChange)=\"updateVisibilityStatus($event)\"\n [closeable]=\"\n modalContent.closeable !== null && modalContent.closeable !== undefined\n ? modalContent.closeable\n : true\n \"\n *ngIf=\"content | async as modalContent\"\n>\n <p [innerHTML]=\"modalContent.htmlContent\"></p>\n\n <div modal-footer>\n <div class=\"d-flex justify-content-end me-2 mb-2 mt-2\">\n <button\n id=\"cancelButton\"\n type=\"button\"\n class=\"btn btn-secondary\"\n (click)=\"cancel()\"\n >\n {{ modalContent.cancelButtonLabel || 'Annuler' }}\n </button>\n <button\n id=\"confirmButton\"\n type=\"button\"\n class=\"btn btn-primary ms-3\"\n (click)=\"ok()\"\n >\n {{ modalContent.okButtonLabel || 'Confirmer' }}\n </button>\n </div>\n </div>\n</foehn-modal>\n" }]
39
39
  }], ctorParameters: () => [{ type: i1.FoehnConfirmModalService }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tY29uZmlybS1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tY29uZmlybS1tb2RhbC9mb2Vobi1jb25maXJtLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1jb25maXJtLW1vZGFsL2ZvZWhuLWNvbmZpcm0tbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFVbEQsTUFBTSxPQUFPLDBCQUEwQjtJQUduQyxZQUFvQixtQkFBNkM7UUFBN0Msd0JBQW1CLEdBQW5CLG1CQUFtQixDQUEwQjtRQUZqRSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBR2QsOEVBQThFO1FBQzlFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsbUJBQW1CO2FBQ25CLFlBQVksRUFBRTtZQUNmLDBEQUEwRDthQUN6RCxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsRUFBRTtRQUNFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsTUFBZTtRQUNsQyxzRUFBc0U7UUFDdEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7SUFDNUIsQ0FBQzs4R0EvQlEsMEJBQTBCO2tHQUExQiwwQkFBMEIsMkRDVnZDLGlsQ0FpQ0E7OzJGRHZCYSwwQkFBMEI7a0JBSnRDLFNBQVM7K0JBQ0kscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRm9laG5Db25maXJtTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi9mb2Vobi1jb25maXJtLW1vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9laG5Db25maXJtTW9kYWxDb250ZW50IH0gZnJvbSAnLi9mb2Vobi1jb25maXJtLW1vZGFsLWNvbnRlbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWNvbmZpcm0tbW9kYWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi1jb25maXJtLW1vZGFsLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBGb2VobkNvbmZpcm1Nb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgaXNWaXNpYmxlID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpcm1Nb2RhbFNlcnZpY2U6IEZvZWhuQ29uZmlybU1vZGFsU2VydmljZSkge1xuICAgICAgICAvLyBUaGlzIG5lZWQgdG8gYmUgZG9uZSBhcyB3ZSdyZSBwYXNzaW5nIHRoZXNlIGZ1bmN0aW9ucyB0byBhbm90aGVyIGNvbXBvbmVudC5cbiAgICAgICAgdGhpcy5jYW5jZWwgPSB0aGlzLmNhbmNlbC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLm9rID0gdGhpcy5vay5iaW5kKHRoaXMpO1xuICAgIH1cblxuICAgIGdldCBjb250ZW50KCk6IE9ic2VydmFibGU8Rm9laG5Db25maXJtTW9kYWxDb250ZW50PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpcm1Nb2RhbFNlcnZpY2UuZ2V0Q29udGVudCgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmZpcm1Nb2RhbFNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRJc1Zpc2libGUoKVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICAgICAgLnN1YnNjcmliZShpc1Zpc2libGUgPT4gKHRoaXMuaXNWaXNpYmxlID0gaXNWaXNpYmxlKSk7XG4gICAgfVxuXG4gICAgY2FuY2VsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmZpcm1Nb2RhbFNlcnZpY2UuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBvaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb25maXJtTW9kYWxTZXJ2aWNlLm9rKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlVmlzaWJpbGl0eVN0YXR1cyhzdGF0dXM6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgLy8gSW4gY2FzZSB0aGUgbW9kYWwgaXMgY2xvc2VkIGJ5IGFub3RoZXIgbWVhbiBzdWNoIGFzIHRoZSBFc2NhcGUga2V5LlxuICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IHN0YXR1cztcbiAgICB9XG59XG4iLCI8Zm9laG4tbW9kYWxcbiAgICBbbW9kYWxIZWFkZXJUZXh0XT1cIm1vZGFsQ29udGVudC50aXRsZSB8fCAnQ29uZmlybWF0aW9uJ1wiXG4gICAgbW9kYWxTaXplPVwibW9kYWwtbWRcIlxuICAgIFtpc01vZGFsVmlzaWJsZV09XCJpc1Zpc2libGVcIlxuICAgIChpc01vZGFsVmlzaWJsZUNoYW5nZSk9XCJ1cGRhdGVWaXNpYmlsaXR5U3RhdHVzKCRldmVudClcIlxuICAgIFtjbG9zZWFibGVdPVwiXG4gICAgICAgIG1vZGFsQ29udGVudC5jbG9zZWFibGUgIT09IG51bGwgJiYgbW9kYWxDb250ZW50LmNsb3NlYWJsZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IG1vZGFsQ29udGVudC5jbG9zZWFibGVcbiAgICAgICAgICAgIDogdHJ1ZVxuICAgIFwiXG4gICAgKm5nSWY9XCJjb250ZW50IHwgYXN5bmMgYXMgbW9kYWxDb250ZW50XCJcbj5cbiAgICA8cCBbaW5uZXJIVE1MXT1cIm1vZGFsQ29udGVudC5odG1sQ29udGVudFwiPjwvcD5cblxuICAgIDxkaXYgbW9kYWwtZm9vdGVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgbWUtMiBtYi0yIG10LTJcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImNhbmNlbEJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBtb2RhbENvbnRlbnQuY2FuY2VsQnV0dG9uTGFiZWwgfHwgJ0FubnVsZXInIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImNvbmZpcm1CdXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1zLTNcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvaygpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBtb2RhbENvbnRlbnQub2tCdXR0b25MYWJlbCB8fCAnQ29uZmlybWVyJyB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9mb2Vobi1tb2RhbD5cbiJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tY29uZmlybS1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tY29uZmlybS1tb2RhbC9mb2Vobi1jb25maXJtLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1jb25maXJtLW1vZGFsL2ZvZWhuLWNvbmZpcm0tbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFVbEQsTUFBTSxPQUFPLDBCQUEwQjtJQUduQyxZQUFvQixtQkFBNkM7UUFBN0Msd0JBQW1CLEdBQW5CLG1CQUFtQixDQUEwQjtRQUZqRSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBR2QsOEVBQThFO1FBQzlFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsbUJBQW1CO2FBQ25CLFlBQVksRUFBRTtZQUNmLDBEQUEwRDthQUN6RCxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsRUFBRTtRQUNFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsTUFBZTtRQUNsQyxzRUFBc0U7UUFDdEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7SUFDNUIsQ0FBQzs4R0EvQlEsMEJBQTBCO2tHQUExQiwwQkFBMEIsMkRDVnZDLG1wQ0FtQ0E7OzJGRHpCYSwwQkFBMEI7a0JBSnRDLFNBQVM7K0JBQ0kscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRm9laG5Db25maXJtTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi9mb2Vobi1jb25maXJtLW1vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9laG5Db25maXJtTW9kYWxDb250ZW50IH0gZnJvbSAnLi9mb2Vobi1jb25maXJtLW1vZGFsLWNvbnRlbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWNvbmZpcm0tbW9kYWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi1jb25maXJtLW1vZGFsLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBGb2VobkNvbmZpcm1Nb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgaXNWaXNpYmxlID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpcm1Nb2RhbFNlcnZpY2U6IEZvZWhuQ29uZmlybU1vZGFsU2VydmljZSkge1xuICAgICAgICAvLyBUaGlzIG5lZWQgdG8gYmUgZG9uZSBhcyB3ZSdyZSBwYXNzaW5nIHRoZXNlIGZ1bmN0aW9ucyB0byBhbm90aGVyIGNvbXBvbmVudC5cbiAgICAgICAgdGhpcy5jYW5jZWwgPSB0aGlzLmNhbmNlbC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLm9rID0gdGhpcy5vay5iaW5kKHRoaXMpO1xuICAgIH1cblxuICAgIGdldCBjb250ZW50KCk6IE9ic2VydmFibGU8Rm9laG5Db25maXJtTW9kYWxDb250ZW50PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpcm1Nb2RhbFNlcnZpY2UuZ2V0Q29udGVudCgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmZpcm1Nb2RhbFNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRJc1Zpc2libGUoKVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICAgICAgLnN1YnNjcmliZShpc1Zpc2libGUgPT4gKHRoaXMuaXNWaXNpYmxlID0gaXNWaXNpYmxlKSk7XG4gICAgfVxuXG4gICAgY2FuY2VsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmZpcm1Nb2RhbFNlcnZpY2UuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBvaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb25maXJtTW9kYWxTZXJ2aWNlLm9rKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlVmlzaWJpbGl0eVN0YXR1cyhzdGF0dXM6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgLy8gSW4gY2FzZSB0aGUgbW9kYWwgaXMgY2xvc2VkIGJ5IGFub3RoZXIgbWVhbiBzdWNoIGFzIHRoZSBFc2NhcGUga2V5LlxuICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IHN0YXR1cztcbiAgICB9XG59XG4iLCI8Zm9laG4tbW9kYWxcbiAgICBbbW9kYWxIZWFkZXJUZXh0XT1cIm1vZGFsQ29udGVudC50aXRsZSB8fCAnQ29uZmlybWF0aW9uJ1wiXG4gICAgbW9kYWxTaXplPVwibW9kYWwtbWRcIlxuICAgIFtpc01vZGFsVmlzaWJsZV09XCJpc1Zpc2libGVcIlxuICAgIChpc01vZGFsVmlzaWJsZUNoYW5nZSk9XCJ1cGRhdGVWaXNpYmlsaXR5U3RhdHVzKCRldmVudClcIlxuICAgIFtjbG9zZWFibGVdPVwiXG4gICAgICAgIG1vZGFsQ29udGVudC5jbG9zZWFibGUgIT09IG51bGwgJiYgbW9kYWxDb250ZW50LmNsb3NlYWJsZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IG1vZGFsQ29udGVudC5jbG9zZWFibGVcbiAgICAgICAgICAgIDogdHJ1ZVxuICAgIFwiXG4gICAgKm5nSWY9XCJjb250ZW50IHwgYXN5bmMgYXMgbW9kYWxDb250ZW50XCJcbj5cbiAgICA8cCBbaW5uZXJIVE1MXT1cIm1vZGFsQ29udGVudC5odG1sQ29udGVudFwiPjwvcD5cblxuICAgIDxkaXYgbW9kYWwtZm9vdGVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgbWUtMiBtYi0yIG10LTJcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImNhbmNlbEJ1dHRvblwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBtb2RhbENvbnRlbnQuY2FuY2VsQnV0dG9uTGFiZWwgfHwgJ0FubnVsZXInIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImNvbmZpcm1CdXR0b25cIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1zLTNcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvaygpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBtb2RhbENvbnRlbnQub2tCdXR0b25MYWJlbCB8fCAnQ29uZmlybWVyJyB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9mb2Vobi1tb2RhbD5cbiJdfQ==