@dsivd/prestations-ng 15.1.1 → 15.1.4-beta1
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.
- package/CHANGELOG.md +18 -0
- package/dsivd-prestations-ng-v15.1.4-beta1.tgz +0 -0
- package/esm2020/foehn-agenda/calendar.type.mjs +1 -1
- package/esm2020/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.mjs +5 -3
- package/esm2020/foehn-agenda/foehn-agenda.component.mjs +4 -8
- package/esm2020/foehn-date-picker/foehn-date-picker.component.mjs +3 -3
- package/esm2020/foehn-nav13/foehn-input-nav13.component.mjs +8 -2
- package/esm2020/gesdem/gesdem-loader.guard.mjs +3 -2
- package/esm2020/gesdem-error/gesdem-error.component.mjs +31 -12
- package/esm2020/gesdem-error/gesdem-error.module.mjs +8 -4
- package/esm2020/sdk-dictionary/default-dictionary.mjs +10 -2
- package/fesm2015/dsivd-prestations-ng.mjs +54 -23
- package/fesm2015/dsivd-prestations-ng.mjs.map +1 -1
- package/fesm2020/dsivd-prestations-ng.mjs +53 -23
- package/fesm2020/dsivd-prestations-ng.mjs.map +1 -1
- package/foehn-agenda/calendar.type.d.ts +2 -0
- package/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.d.ts +1 -0
- package/foehn-agenda/foehn-agenda.component.d.ts +1 -3
- package/gesdem-error/gesdem-error.component.d.ts +5 -1
- package/gesdem-error/gesdem-error.module.d.ts +2 -1
- package/package.json +1 -1
- package/dsivd-prestations-ng-v15.1.1.tgz +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -26,6 +26,24 @@ A change is considered **breaking** if you have to change your code or update yo
|
|
|
26
26
|
|
|
27
27
|
---
|
|
28
28
|
|
|
29
|
+
## [15.1.3]
|
|
30
|
+
|
|
31
|
+
### Updated
|
|
32
|
+
- [foehn-input-nav13.component.ts](projects/prestations-ng/src/foehn-nav13/foehn-input-nav13.component.ts)
|
|
33
|
+
- pasting an AVS number (witouht the prefix `756`) in the first editable input will now expand it to the other inputs.
|
|
34
|
+
|
|
35
|
+
- [foehn-agenda-timeslot-panel.component.ts](projects/prestations-ng/src/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.ts)
|
|
36
|
+
- don't allow closing the panel if it would hide the selected slot
|
|
37
|
+
|
|
38
|
+
## [15.1.2]
|
|
39
|
+
|
|
40
|
+
- [foehn-agenda.components.ts](projects/prestations-ng/src/foehn-agenda/foehn-agenda.component.ts)
|
|
41
|
+
- removed `@Input() minDate: number[]`, replaced by `Calendar.minAvailableDate`
|
|
42
|
+
- removed `@Input() maxDate: number[]`, replaced by `Calendar.maxAvailableDate`
|
|
43
|
+
|
|
44
|
+
- [foehn-date-picker.component.html](projects/prestations-ng/src/foehn-date-picker/foehn-date-picker.component.html)
|
|
45
|
+
- do not display (`hidden`) days that are not in the current month (to avoid confusion with actually disabled days)
|
|
46
|
+
|
|
29
47
|
## [15.1.1]
|
|
30
48
|
|
|
31
49
|
### Updated
|
|
Binary file
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export class Calendar {
|
|
2
2
|
}
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1hZ2VuZGEvY2FsZW5kYXIudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sUUFBUTtDQU1wQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhZ2luYXRpb25XZWVrIH0gZnJvbSAnLi9wYWdpbmF0aW9uLXdlZWsudHlwZSc7XG5pbXBvcnQgeyBDdXJyZW50V2VlayB9IGZyb20gJy4vY3VycmVudC13ZWVrLnR5cGUnO1xuXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXIge1xuICAgIHByZXZpb3VzV2VlazogUGFnaW5hdGlvbldlZWs7XG4gICAgY3VycmVudFdlZWs6IEN1cnJlbnRXZWVrO1xuICAgIG5leHRXZWVrOiBQYWdpbmF0aW9uV2VlaztcbiAgICBtaW5BdmFpbGFibGVEYXRlOiBudW1iZXJbXTtcbiAgICBtYXhBdmFpbGFibGVEYXRlOiBudW1iZXJbXTtcbn1cbiJdfQ==
|
package/esm2020/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.mjs
CHANGED
|
@@ -9,6 +9,7 @@ export class FoehnAgendaTimeslotPanelComponent extends FoehnInputComponent {
|
|
|
9
9
|
super();
|
|
10
10
|
this.dictionaryService = dictionaryService;
|
|
11
11
|
this.isClosed = true;
|
|
12
|
+
this.canClose = true;
|
|
12
13
|
this.DEFAULT_NB_VISISBLE_ELEMENTS = 22;
|
|
13
14
|
this.keyboardNavigationAllowed = false;
|
|
14
15
|
this.hasSelectedSlotInPanel = false;
|
|
@@ -99,6 +100,7 @@ export class FoehnAgendaTimeslotPanelComponent extends FoehnInputComponent {
|
|
|
99
100
|
else {
|
|
100
101
|
this.hasSelectedSlotInPanel = false;
|
|
101
102
|
}
|
|
103
|
+
this.canClose = positionValue < this.nbVisibleElements;
|
|
102
104
|
}
|
|
103
105
|
onTimeFocusin() {
|
|
104
106
|
this.keyboardNavigationAllowed = true;
|
|
@@ -214,7 +216,7 @@ FoehnAgendaTimeslotPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion
|
|
|
214
216
|
useExisting: forwardRef(() => FoehnAgendaTimeslotPanelComponent),
|
|
215
217
|
multi: true
|
|
216
218
|
}
|
|
217
|
-
], 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 ml-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"sr-only\" *ngIf=\"!!isSelected(timeInputValue)\">\n {{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"sr-only\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements: currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"font-italic align-self-end ml-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 row d-flex flex-wrap ml-auto mr-auto pl-3\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n class=\"btn btn-info mr-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-danger]=\"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\"\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: 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: 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{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-link{padding:0}.show-more{cursor:pointer;font-size:.9rem}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i2.AsyncPipe, "fromDictionary": i3.SdkDictionaryPipe } });
|
|
219
|
+
], 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 ml-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"sr-only\" *ngIf=\"!!isSelected(timeInputValue)\">\n {{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"sr-only\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements: currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"font-italic align-self-end ml-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 row d-flex flex-wrap ml-auto mr-auto pl-3\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n class=\"btn btn-info mr-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-danger]=\"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: 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: 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{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-link{padding:0}.show-more{cursor:pointer;font-size:.9rem}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i2.AsyncPipe, "fromDictionary": i3.SdkDictionaryPipe } });
|
|
218
220
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: FoehnAgendaTimeslotPanelComponent, decorators: [{
|
|
219
221
|
type: Component,
|
|
220
222
|
args: [{ selector: 'foehn-agenda-timeslot-panel', providers: [
|
|
@@ -223,7 +225,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImpor
|
|
|
223
225
|
useExisting: forwardRef(() => FoehnAgendaTimeslotPanelComponent),
|
|
224
226
|
multi: true
|
|
225
227
|
}
|
|
226
|
-
], 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 ml-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"sr-only\" *ngIf=\"!!isSelected(timeInputValue)\">\n {{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"sr-only\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements: currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"font-italic align-self-end ml-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 row d-flex flex-wrap ml-auto mr-auto pl-3\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n class=\"btn btn-info mr-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-danger]=\"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\"\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: 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: 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{padding-right:.4rem;padding-left:.4rem}.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 ml-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"sr-only\" *ngIf=\"!!isSelected(timeInputValue)\">\n {{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"sr-only\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements: currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"font-italic align-self-end ml-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 row d-flex flex-wrap ml-auto mr-auto pl-3\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n class=\"btn btn-info mr-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-danger]=\"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: 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: 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{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-link{padding:0}.show-more{cursor:pointer;font-size:.9rem}\n"] }]
|
|
227
229
|
}], ctorParameters: function () { return [{ type: i1.SdkDictionaryService }]; }, propDecorators: { timeSlotButtonsElemRef: [{
|
|
228
230
|
type: ViewChildren,
|
|
229
231
|
args: ['timeSlotButtonsElemRef']
|
|
@@ -237,4 +239,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImpor
|
|
|
237
239
|
type: HostListener,
|
|
238
240
|
args: ['keydown', ['$event']]
|
|
239
241
|
}] } });
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1hZ2VuZGEvZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsL2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tYWdlbmRhL2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC9mb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFLTCxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7O0FBbUI5RSxNQUFNLE9BQU8saUNBQ1QsU0FBUSxtQkFBaUM7SUF5QnpDLFlBQW9CLGlCQUF1QztRQUN2RCxLQUFLLEVBQUUsQ0FBQztRQURRLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFaM0QsYUFBUSxHQUFHLElBQUksQ0FBQztRQUlQLGlDQUE0QixHQUFHLEVBQUUsQ0FBQztRQUluQyw4QkFBeUIsR0FBRyxLQUFLLENBQUM7UUFFbEMsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBSW5DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUM7SUFDL0QsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFDSSxXQUFXLENBQUMsS0FBZTtRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJ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V0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztZQUNoRSxLQUFLLEVBQUUsSUFBSTtTQUNkO0tBQ0osMkxDN0JMLGs4R0E4RkE7MkZEL0RhLGlDQUFpQztrQkFaN0MsU0FBUzsrQkFDSSw2QkFBNkIsYUFHNUI7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0NBQWtDLENBQUM7NEJBQ2hFLEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOzJHQU1ELHNCQUFzQjtzQkFEckIsWUFBWTt1QkFBQyx3QkFBd0I7Z0JBSXRDLFFBQVE7c0JBRFAsS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBMkJGLFdBQVc7c0JBRGQsS0FBSztnQkFPTix1QkFBdUI7c0JBRHRCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZSxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFNlbGVjdGVkU2xvdCB9IGZyb20gJy4uL3NlbGVjdGVkLXNsb3QudHlwZSc7XG5pbXBvcnQgeyBEYXlTbG90cyB9IGZyb20gJy4uL2RheS1zbG90cy50eXBlJztcbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSAnLi4vY2FsZW5kYXIudHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuY29tcG9uZW50LmNzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9laG5BZ2VuZGFUaW1lc2xvdFBhbmVsQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuQWdlbmRhVGltZXNsb3RQYW5lbENvbXBvbmVudFxuICAgIGV4dGVuZHMgRm9laG5JbnB1dENvbXBvbmVudDxTZWxlY3RlZFNsb3Q+XG4gICAgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3RpbWVTbG90QnV0dG9uc0VsZW1SZWYnKVxuICAgIHRpbWVTbG90QnV0dG9uc0VsZW1SZWY6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICAgIEBJbnB1dCgpXG4gICAgY2FsZW5kYXI6IE9ic2VydmFibGU8Q2FsZW5kYXI+O1xuXG4gICAgQElucHV0KClcbiAgICBuYlZpc2libGVFbGVtZW50czogbnVtYmVyO1xuXG4gICAgc2VsZWN0ZWRUaW1lU2xvdDogc3RyaW5nO1xuICAgIHRpbWVTbG90czogc3RyaW5nW107XG4gICAgaXNDbG9zZWQgPSB0cnVlO1xuICAgIHRpbWVzbG90UmVtYWluaW5nOiBudW1iZXI7XG4gICAgdGltZUlucHV0VmFsdWU6IHN0cmluZztcblxuICAgIHJlYWRvbmx5IERFRkFVTFRfTkJfVklTSVNCTEVfRUxFTUVOVFMgPSAyMjtcblxuICAgIHByaXZhdGUgY3VycmVudFdlZWtfOiBEYXlTbG90cztcbiAgICBwcml2YXRlIGRheUlucHV0VmFsdWU6IHN0cmluZztcbiAgICBwcml2YXRlIGtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGN1cnJlbnRBY3RpdmVFbGVtZW50OiBFbGVtZW50O1xuICAgIHByaXZhdGUgaGFzU2VsZWN0ZWRTbG90SW5QYW5lbCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5uYlZpc2libGVFbGVtZW50cyA9IHRoaXMuREVGQVVMVF9OQl9WSVNJU0JMRV9FTEVNRU5UUztcbiAgICB9XG5cbiAgICBnZXQgY3VycmVudFdlZWsoKTogRGF5U2xvdHMge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50V2Vla187XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgY3VycmVudFdlZWsodmFsdWU6IERheVNsb3RzKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFdlZWtfID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2xpY2VOYlZpc2libGVFbGVtZW50cygpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWJvYXJkRG93bkV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25LZXlEb3duSW5uZXIoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRpbWVTbG90QnV0dG9uc0VsZW1SZWZBcnJheSA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMudGltZVNsb3RCdXR0b25zRWxlbVJlZi50b0FycmF5KClcbiAgICAgICAgXTtcbiAgICAgICAgaWYgKCEhdGltZVNsb3RCdXR0b25zRWxlbVJlZkFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGltZVNsb3RCdXR0b25zRWxlbVJlZkFycmF5WzBdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk5iVmlzaWJsZUVsZW1lbnRzQ2hhbmdlKGNoYW5nZXMubmJWaXNpYmxlRWxlbWVudHMpO1xuICAgIH1cblxuICAgIGNhcGl0YWxDYXNlRmlyc3RMZXR0ZXIoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFzKSB7XG4gICAgICAgICAgICByZXR1cm4gcztcbiAgICAgICAgfVxuICAgICAgICBpZiAocy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBzLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAke3MuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtzLnNsaWNlKDEpfWA7XG4gICAgfVxuXG4gICAgaGFuZGxlVXNlcklucHV0KFxuICAgICAgICBkYXk6IHN0cmluZyxcbiAgICAgICAgZGF0ZTogbnVtYmVyW10sXG4gICAgICAgIHRpbWU6IHN0cmluZyxcbiAgICAgICAgY2FsZW5kYXI6IENhbGVuZGFyXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbGlkVmFsdWUgPSB0aGlzLmdldFZhbGlkVmFsdWUoZGF5LCBkYXRlLCB0aW1lLCBjYWxlbmRhcik7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMudXNlcklucHV0Lm5leHQodmFsaWRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwodmFsaWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGVQYW5lbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Nsb3NlZCA9ICF0aGlzLmlzQ2xvc2VkO1xuICAgICAgICBpZiAodGhpcy5pc0Nsb3NlZCkge1xuICAgICAgICAgICAgdGhpcy5zbGljZU5iVmlzaWJsZUVsZW1lbnRzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBOZWVkIHNldFRpbWVvdXQgYmVjYXVzZSB3ZSBhcmUgb3V0c2lkZSBhbmd1bGFyIGN5Y2xlIHdoZW4gcmVsb2FkaW5nIHBhZ2VcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGltZVNsb3RzID0gdGhpcy5jdXJyZW50V2Vlay50aW1lU2xvdHM7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW9kZWxDaGFuZ2UodmFsdWU6IFNlbGVjdGVkU2xvdCk6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lU2xvdCA9IGAke3ZhbHVlLmRheX0tJHt2YWx1ZS50aW1lfWA7XG4gICAgICAgICAgICB0aGlzLnRpbWVJbnB1dFZhbHVlID0gdmFsdWUudGltZTtcbiAgICAgICAgICAgIHRoaXMuZGF5SW5wdXRWYWx1ZSA9IHZhbHVlLmRheTtcbiAgICAgICAgfSBlbHNlIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lU2xvdCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnRpbWVJbnB1dFZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZGF5SW5wdXRWYWx1ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWFyY2hUaW1lVmFsdWVJblRpbWVTbG90KCk7XG4gICAgfVxuXG4gICAgZ2V0VGltZUlucHV0VmFsdWUoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCEhcykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVTcGxpdCA9IHMuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZVNwbGl0Lmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlU3BsaXRbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHM7XG4gICAgfVxuXG4gICAgc2VhcmNoVGltZVZhbHVlSW5UaW1lU2xvdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb25WYWx1ZSA9IHRoaXMuY3VycmVudFdlZWsudGltZVNsb3RzLmZpbmRJbmRleChcbiAgICAgICAgICAgIHggPT5cbiAgICAgICAgICAgICAgICB4ID09PSB0aGlzLnRpbWVJbnB1dFZhbHVlICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50V2Vlay5kYXkgPT09IHRoaXMuZGF5SW5wdXRWYWx1ZVxuICAgICAgICApO1xuICAgICAgICBpZiAocG9zaXRpb25WYWx1ZSAhPT0gLTEgJiYgISF0aGlzLnNlbGVjdGVkVGltZVNsb3QpIHtcbiAgICAgICAgICAgIHRoaXMuaGFzU2VsZWN0ZWRTbG90SW5QYW5lbCA9IHRydWU7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0Nsb3NlZCAmJiBwb3NpdGlvblZhbHVlID49IHRoaXMubmJWaXNpYmxlRWxlbWVudHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVBhbmVsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhhc1NlbGVjdGVkU2xvdEluUGFuZWwgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVGltZUZvY3VzaW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uQWxsb3dlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY3VycmVudEFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIG9uVGltZUZvY3Vzb3V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKHRpbWVTbG90OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkVGltZVNsb3QpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGltZVNsb3QgPT09IHRoaXMudGltZUlucHV0VmFsdWUgJiZcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFdlZWsuZGF5ID09PSB0aGlzLmRheUlucHV0VmFsdWVcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRCdXR0b25UaW1lU2xvdEFyaWFMYWJlbChkYXk6IHN0cmluZywgdGltZVNsb3Q6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXN1bHQgPSBgJHtkYXl9ICR7dGltZVNsb3R9YDtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZCh0aW1lU2xvdCkpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS50aW1lc2xvdC5zZWxlY3RlZCdcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBnZXRUaW1lU2xvdFRhYkluZGV4KHRpbWVTbG90OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKHRpbWVTbG90KSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpbmRleCAmJiAhdGhpcy5oYXNTZWxlY3RlZFNsb3RJblBhbmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgY2xlYW5JZEZvclF1ZXJ5U2VsZWN0b3Ioczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcyA9IHMucmVwbGFjZShuZXcgUmVnRXhwKCcgJywgJ2cnKSwgJ18nKTtcbiAgICAgICAgcmV0dXJuIHMucmVwbGFjZShuZXcgUmVnRXhwKCc6JywgJ2cnKSwgJ18nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNsaWNlTmJWaXNpYmxlRWxlbWVudHMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5uYlZpc2libGVFbGVtZW50cykge1xuICAgICAgICAgICAgdGhpcy5uYlZpc2libGVFbGVtZW50cyA9IHRoaXMuREVGQVVMVF9OQl9WSVNJU0JMRV9FTEVNRU5UUztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRpbWVTbG90cyA9IHRoaXMuY3VycmVudFdlZWsudGltZVNsb3RzLnNsaWNlKFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHRoaXMubmJWaXNpYmxlRWxlbWVudHNcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy50aW1lc2xvdFJlbWFpbmluZyA9XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGggLSB0aGlzLm5iVmlzaWJsZUVsZW1lbnRzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsaWRWYWx1ZShcbiAgICAgICAgZGF5OiBzdHJpbmcsXG4gICAgICAgIGRhdGU6IG51bWJlcltdLFxuICAgICAgICB0aW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGVuZGFyOiBDYWxlbmRhclxuICAgICk6IFNlbGVjdGVkU2xvdCB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIWRheSB8fCAhdGltZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWxfICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRheSxcbiAgICAgICAgICAgIHRpbWUsXG4gICAgICAgICAgICB5ZWFyOiBjYWxlbmRhci5jdXJyZW50V2Vlay55ZWFyLFxuICAgICAgICAgICAgd2Vla051bWJlcjogY2FsZW5kYXIuY3VycmVudFdlZWsud2Vla051bWJlcixcbiAgICAgICAgICAgIGRhdGVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTmJWaXNpYmxlRWxlbWVudHNDaGFuZ2UoY2hhbmdlOiBTaW1wbGVDaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5zbGljZU5iVmlzaWJsZUVsZW1lbnRzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uS2V5RG93bklubmVyKGtleUV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIC8vIElFIGRvZXNuJ3Qgc3VwcG9ydCBrZXlFdmVudC5jb2RlLCBhbmQgaGFzIGRpZmZlcmVudCB2YWx1ZXNcbiAgICAgICAgLy8gaW4ga2V5RXZlbnQua2V5IChEb3duIGluc3RlYWQgb2YgQXJyb3dEb3duIGZvciBpbnN0YW5jZSksIGhlbmNlIHRoZSBtdWx0aS1zdXBwb3J0LlxuICAgICAgICBjb25zdCBpZTExQ29tcGF0aWJsZUNvZGUgPSBrZXlFdmVudC5jb2RlIHx8IGtleUV2ZW50LmtleTtcbiAgICAgICAgc3dpdGNoIChpZTExQ29tcGF0aWJsZUNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Rvd24nOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgIGNhc2UgJ1JpZ2h0JzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNUaW1lU2xvdCgxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1VwJzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgY2FzZSAnTGVmdCc6XG4gICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNUaW1lU2xvdCgtMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdTcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdTcGFjZWJhcic6XG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2xpY2snKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAga2V5RXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAga2V5RXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNUaW1lU2xvdChpbmM6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBidXR0b25zQXJyYXkgPSBbLi4udGhpcy50aW1lU2xvdEJ1dHRvbnNFbGVtUmVmLnRvQXJyYXkoKV07XG4gICAgICAgIGNvbnN0IGluZGV4c2VsZWN0ZWQgPSBidXR0b25zQXJyYXkuZmluZEluZGV4KFxuICAgICAgICAgICAgaXRlbSA9PlxuICAgICAgICAgICAgICAgIGl0ZW0ubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJykgPT09XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSBpbmRleHNlbGVjdGVkICsgaW5jO1xuICAgICAgICBpZiAobmV3SW5kZXggPj0gYnV0dG9uc0FycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgYnV0dG9uc0FycmF5WzBdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIGlmIChuZXdJbmRleCA8IDApIHtcbiAgICAgICAgICAgIGJ1dHRvbnNBcnJheVtidXR0b25zQXJyYXkubGVuZ3RoIC0gMV0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnV0dG9uc0FycmF5W25ld0luZGV4XS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8c2VjdGlvblxuICAgICpuZ0lmPVwiY2FsZW5kYXIgfCBhc3luYyBhcyBsb2FkZWRDYWxlbmRhclwiXG4gICAgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0IG1iLTNcIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkaW5nIG10LTIgbWItMiBweS0yIGQtZmxleCBhbGlnbi1pdGVtcy1iYXNlbGluZVwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJoNSBtbC0zIG10LTAgbWItMFwiPlxuICAgICAgICAgICAge3sgY2FwaXRhbENhc2VGaXJzdExldHRlcihjdXJyZW50V2Vlay5kYXkpIH19XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIiAqbmdJZj1cIiEhaXNTZWxlY3RlZCh0aW1lSW5wdXRWYWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAmbmJzcDt7e1xuICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLnNlbGVjdGVkLXRpbWUnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5OiB7IHRpbWVTZWxlY3RlZFZhbHVlOiB0aW1lSW5wdXRWYWx1ZSB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPHNtYWxsICpuZ0lmPVwiISFjdXJyZW50V2Vlay50aW1lU2xvdHMubGVuZ3RoXCIgY2xhc3M9XCJzci1vbmx5XCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdmb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwubmJyLWRpc3BvJ1xuICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5iRWxlbWVudHM6IGN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGgudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICA8L3NtYWxsPlxuICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICpuZ0lmPVwiIWN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGhcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb250LWl0YWxpYyBhbGlnbi1zZWxmLWVuZCBtbC0yXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgJ2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5uby1kaXNwbycgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICA8L3NtYWxsPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cIiEhY3VycmVudFdlZWsudGltZVNsb3RzLmxlbmd0aFwiXG4gICAgICAgIGNsYXNzPVwicGFuZWwtYm9keSByb3cgZC1mbGV4IGZsZXgtd3JhcCBtbC1hdXRvIG1yLWF1dG8gcGwtM1wiXG4gICAgICAgIChmb2N1c2luKT1cIm9uVGltZUZvY3VzaW4oKVwiXG4gICAgICAgIChmb2N1c291dCk9XCJvblRpbWVGb2N1c291dCgpXCJcbiAgICAgICAgcm9sZT1cImFwcGxpY2F0aW9uXCJcbiAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0aW1lU2xvdCBvZiB0aW1lU2xvdHM7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1pbmZvIG1yLTIgbWItMlwiXG4gICAgICAgICAgICAjdGltZVNsb3RCdXR0b25zRWxlbVJlZlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiXG4gICAgICAgICAgICAgICAgY2xlYW5JZEZvclF1ZXJ5U2VsZWN0b3IoY3VycmVudFdlZWsuZGF5ICsgJy0nICsgdGltZVNsb3QpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3RhYmluZGV4XT1cImdldFRpbWVTbG90VGFiSW5kZXgodGltZVNsb3QsIGluZGV4KVwiXG4gICAgICAgICAgICBbY2xhc3MuYnRuLWRhbmdlcl09XCJpc1NlbGVjdGVkKHRpbWVTbG90KVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgaGFuZGxlVXNlcklucHV0KFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50V2Vlay5kYXksXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRXZWVrLmRhdGUsXG4gICAgICAgICAgICAgICAgICAgIHRpbWVTbG90LFxuICAgICAgICAgICAgICAgICAgICBsb2FkZWRDYWxlbmRhclxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgIGdldEJ1dHRvblRpbWVTbG90QXJpYUxhYmVsKGN1cnJlbnRXZWVrLmRheSwgdGltZVNsb3QpXG4gICAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB0aW1lU2xvdCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgbWItMVwiXG4gICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGggPiBuYlZpc2libGVFbGVtZW50c1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBzaG93LW1vcmVcIlxuICAgICAgICAgICAgICAgICN0aW1lU2xvdEJ1dHRvbnNFbGVtUmVmXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBhbmVsKClcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgIChpc0Nsb3NlZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLnNob3ctbW9yZS1zci1vbmx5J1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLnNob3ctbGVzcydcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ickVsZW1lbnRzSGlkZGVuOiB0aW1lc2xvdFJlbWFpbmluZy50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAoaXNDbG9zZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ2ZvZWhuLmFnZW5kYS10aW1lc2xvdC1wYW5lbC5zaG93LW1vcmUnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdmb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuc2hvdy1sZXNzJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmJyRWxlbWVudHNIaWRkZW46IHRpbWVzbG90UmVtYWluaW5nLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9zZWN0aW9uPlxuIl19
|
|
242
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1hZ2VuZGEvZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsL2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tYWdlbmRhL2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC9mb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFLTCxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7O0FBbUI5RSxNQUFNLE9BQU8saUNBQ1QsU0FBUSxtQkFBaUM7SUEwQnpDLFlBQW9CLGlCQUF1QztRQUN2RCxLQUFLLEVBQUUsQ0FBQztRQURRLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFiM0QsYUFBUSxHQUFHLElBQUksQ0FBQztRQUdoQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBRVAsaUNBQTRCLEdBQUcsRUFBRSxDQUFDO1FBSW5DLDhCQUF5QixHQUFHLEtBQUssQ0FBQztRQUVsQywyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFJbkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztJQUMvRCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUNJLFdBQVcsQ0FBQyxLQUFlO1FBQzNCLElBQUksQ0FBQyxZ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QUNoRDtJQUNMLENBQUM7OzhIQTNRUSxpQ0FBaUM7a0hBQWpDLGlDQUFpQyxtT0FSL0I7UUFDUDtZQUNJLE9BQU8sRUFBRSxtQkFBbUI7WUFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztZQUNoRSxLQUFLLEVBQUUsSUFBSTtTQUNkO0tBQ0osMkxDN0JMLDg4R0E4RkE7MkZEL0RhLGlDQUFpQztrQkFaN0MsU0FBUzsrQkFDSSw2QkFBNkIsYUFHNUI7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0NBQWtDLENBQUM7NEJBQ2hFLEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOzJHQU1ELHNCQUFzQjtzQkFEckIsWUFBWTt1QkFBQyx3QkFBd0I7Z0JBSXRDLFFBQVE7c0JBRFAsS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBNEJGLFdBQVc7c0JBRGQsS0FBSztnQkFPTix1QkFBdUI7c0JBRHRCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZSxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFNlbGVjdGVkU2xvdCB9IGZyb20gJy4uL3NlbGVjdGVkLXNsb3QudHlwZSc7XG5pbXBvcnQgeyBEYXlTbG90cyB9IGZyb20gJy4uL2RheS1zbG90cy50eXBlJztcbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSAnLi4vY2FsZW5kYXIudHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuY29tcG9uZW50LmNzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9laG5BZ2VuZGFUaW1lc2xvdFBhbmVsQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuQWdlbmRhVGltZXNsb3RQYW5lbENvbXBvbmVudFxuICAgIGV4dGVuZHMgRm9laG5JbnB1dENvbXBvbmVudDxTZWxlY3RlZFNsb3Q+XG4gICAgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3RpbWVTbG90QnV0dG9uc0VsZW1SZWYnKVxuICAgIHRpbWVTbG90QnV0dG9uc0VsZW1SZWY6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICAgIEBJbnB1dCgpXG4gICAgY2FsZW5kYXI6IE9ic2VydmFibGU8Q2FsZW5kYXI+O1xuXG4gICAgQElucHV0KClcbiAgICBuYlZpc2libGVFbGVtZW50czogbnVtYmVyO1xuXG4gICAgc2VsZWN0ZWRUaW1lU2xvdDogc3RyaW5nO1xuICAgIHRpbWVTbG90czogc3RyaW5nW107XG4gICAgaXNDbG9zZWQgPSB0cnVlO1xuICAgIHRpbWVzbG90UmVtYWluaW5nOiBudW1iZXI7XG4gICAgdGltZUlucHV0VmFsdWU6IHN0cmluZztcbiAgICBjYW5DbG9zZSA9IHRydWU7XG5cbiAgICByZWFkb25seSBERUZBVUxUX05CX1ZJU0lTQkxFX0VMRU1FTlRTID0gMjI7XG5cbiAgICBwcml2YXRlIGN1cnJlbnRXZWVrXzogRGF5U2xvdHM7XG4gICAgcHJpdmF0ZSBkYXlJbnB1dFZhbHVlOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBrZXlib2FyZE5hdmlnYXRpb25BbGxvd2VkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBjdXJyZW50QWN0aXZlRWxlbWVudDogRWxlbWVudDtcbiAgICBwcml2YXRlIGhhc1NlbGVjdGVkU2xvdEluUGFuZWwgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGljdGlvbmFyeVNlcnZpY2U6IFNka0RpY3Rpb25hcnlTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubmJWaXNpYmxlRWxlbWVudHMgPSB0aGlzLkRFRkFVTFRfTkJfVklTSVNCTEVfRUxFTUVOVFM7XG4gICAgfVxuXG4gICAgZ2V0IGN1cnJlbnRXZWVrKCk6IERheVNsb3RzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFdlZWtfO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGN1cnJlbnRXZWVrKHZhbHVlOiBEYXlTbG90cykge1xuICAgICAgICB0aGlzLmN1cnJlbnRXZWVrXyA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNsaWNlTmJWaXNpYmxlRWxlbWVudHMoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVLZXlib2FyZERvd25FdmVudChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5rZXlib2FyZE5hdmlnYXRpb25BbGxvd2VkKSB7XG4gICAgICAgICAgICB0aGlzLm9uS2V5RG93bklubmVyKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0aW1lU2xvdEJ1dHRvbnNFbGVtUmVmQXJyYXkgPSBbXG4gICAgICAgICAgICAuLi50aGlzLnRpbWVTbG90QnV0dG9uc0VsZW1SZWYudG9BcnJheSgpXG4gICAgICAgIF07XG4gICAgICAgIGlmICghIXRpbWVTbG90QnV0dG9uc0VsZW1SZWZBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRpbWVTbG90QnV0dG9uc0VsZW1SZWZBcnJheVswXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25OYlZpc2libGVFbGVtZW50c0NoYW5nZShjaGFuZ2VzLm5iVmlzaWJsZUVsZW1lbnRzKTtcbiAgICB9XG5cbiAgICBjYXBpdGFsQ2FzZUZpcnN0TGV0dGVyKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICghcykge1xuICAgICAgICAgICAgcmV0dXJuIHM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gcy50b1VwcGVyQ2FzZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtzLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7cy5zbGljZSgxKX1gO1xuICAgIH1cblxuICAgIGhhbmRsZVVzZXJJbnB1dChcbiAgICAgICAgZGF5OiBzdHJpbmcsXG4gICAgICAgIGRhdGU6IG51bWJlcltdLFxuICAgICAgICB0aW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGVuZGFyOiBDYWxlbmRhclxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZFZhbHVlID0gdGhpcy5nZXRWYWxpZFZhbHVlKGRheSwgZGF0ZSwgdGltZSwgY2FsZW5kYXIpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLnVzZXJJbnB1dC5uZXh0KHZhbGlkVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKHZhbGlkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlUGFuZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNDbG9zZWQgPSAhdGhpcy5pc0Nsb3NlZDtcbiAgICAgICAgaWYgKHRoaXMuaXNDbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2xpY2VOYlZpc2libGVFbGVtZW50cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTmVlZCBzZXRUaW1lb3V0IGJlY2F1c2Ugd2UgYXJlIG91dHNpZGUgYW5ndWxhciBjeWNsZSB3aGVuIHJlbG9hZGluZyBwYWdlXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWVTbG90cyA9IHRoaXMuY3VycmVudFdlZWsudGltZVNsb3RzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBTZWxlY3RlZFNsb3QpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGltZVNsb3QgPSBgJHt2YWx1ZS5kYXl9LSR7dmFsdWUudGltZX1gO1xuICAgICAgICAgICAgdGhpcy50aW1lSW5wdXRWYWx1ZSA9IHZhbHVlLnRpbWU7XG4gICAgICAgICAgICB0aGlzLmRheUlucHV0VmFsdWUgPSB2YWx1ZS5kYXk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGltZVNsb3QgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy50aW1lSW5wdXRWYWx1ZSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmRheUlucHV0VmFsdWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VhcmNoVGltZVZhbHVlSW5UaW1lU2xvdCgpO1xuICAgIH1cblxuICAgIGdldFRpbWVJbnB1dFZhbHVlKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICghIXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlU3BsaXQgPSBzLnNwbGl0KCctJyk7XG4gICAgICAgICAgICBpZiAodmFsdWVTcGxpdC5sZW5ndGggPj0gMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVNwbGl0WzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzO1xuICAgIH1cblxuICAgIHNlYXJjaFRpbWVWYWx1ZUluVGltZVNsb3QoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uVmFsdWUgPSB0aGlzLmN1cnJlbnRXZWVrLnRpbWVTbG90cy5maW5kSW5kZXgoXG4gICAgICAgICAgICB4ID0+XG4gICAgICAgICAgICAgICAgeCA9PT0gdGhpcy50aW1lSW5wdXRWYWx1ZSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFdlZWsuZGF5ID09PSB0aGlzLmRheUlucHV0VmFsdWVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHBvc2l0aW9uVmFsdWUgIT09IC0xICYmICEhdGhpcy5zZWxlY3RlZFRpbWVTbG90KSB7XG4gICAgICAgICAgICB0aGlzLmhhc1NlbGVjdGVkU2xvdEluUGFuZWwgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNDbG9zZWQgJiYgcG9zaXRpb25WYWx1ZSA+PSB0aGlzLm5iVmlzaWJsZUVsZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVQYW5lbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oYXNTZWxlY3RlZFNsb3RJblBhbmVsID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jYW5DbG9zZSA9IHBvc2l0aW9uVmFsdWUgPCB0aGlzLm5iVmlzaWJsZUVsZW1lbnRzO1xuICAgIH1cblxuICAgIG9uVGltZUZvY3VzaW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uQWxsb3dlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY3VycmVudEFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIG9uVGltZUZvY3Vzb3V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKHRpbWVTbG90OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkVGltZVNsb3QpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGltZVNsb3QgPT09IHRoaXMudGltZUlucHV0VmFsdWUgJiZcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFdlZWsuZGF5ID09PSB0aGlzLmRheUlucHV0VmFsdWVcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRCdXR0b25UaW1lU2xvdEFyaWFMYWJlbChkYXk6IHN0cmluZywgdGltZVNsb3Q6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXN1bHQgPSBgJHtkYXl9ICR7dGltZVNsb3R9YDtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZCh0aW1lU2xvdCkpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS50aW1lc2xvdC5zZWxlY3RlZCdcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBnZXRUaW1lU2xvdFRhYkluZGV4KHRpbWVTbG90OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKHRpbWVTbG90KSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpbmRleCAmJiAhdGhpcy5oYXNTZWxlY3RlZFNsb3RJblBhbmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgY2xlYW5JZEZvclF1ZXJ5U2VsZWN0b3Ioczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcyA9IHMucmVwbGFjZShuZXcgUmVnRXhwKCcgJywgJ2cnKSwgJ18nKTtcbiAgICAgICAgcmV0dXJuIHMucmVwbGFjZShuZXcgUmVnRXhwKCc6JywgJ2cnKSwgJ18nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNsaWNlTmJWaXNpYmxlRWxlbWVudHMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5uYlZpc2libGVFbGVtZW50cykge1xuICAgICAgICAgICAgdGhpcy5uYlZpc2libGVFbGVtZW50cyA9IHRoaXMuREVGQVVMVF9OQl9WSVNJU0JMRV9FTEVNRU5UUztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRpbWVTbG90cyA9IHRoaXMuY3VycmVudFdlZWsudGltZVNsb3RzLnNsaWNlKFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHRoaXMubmJWaXNpYmxlRWxlbWVudHNcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy50aW1lc2xvdFJlbWFpbmluZyA9XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGggLSB0aGlzLm5iVmlzaWJsZUVsZW1lbnRzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsaWRWYWx1ZShcbiAgICAgICAgZGF5OiBzdHJpbmcsXG4gICAgICAgIGRhdGU6IG51bWJlcltdLFxuICAgICAgICB0aW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGVuZGFyOiBDYWxlbmRhclxuICAgICk6IFNlbGVjdGVkU2xvdCB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIWRheSB8fCAhdGltZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWxfICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRheSxcbiAgICAgICAgICAgIHRpbWUsXG4gICAgICAgICAgICB5ZWFyOiBjYWxlbmRhci5jdXJyZW50V2Vlay55ZWFyLFxuICAgICAgICAgICAgd2Vla051bWJlcjogY2FsZW5kYXIuY3VycmVudFdlZWsud2Vla051bWJlcixcbiAgICAgICAgICAgIGRhdGVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTmJWaXNpYmxlRWxlbWVudHNDaGFuZ2UoY2hhbmdlOiBTaW1wbGVDaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5zbGljZU5iVmlzaWJsZUVsZW1lbnRzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uS2V5RG93bklubmVyKGtleUV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIC8vIElFIGRvZXNuJ3Qgc3VwcG9ydCBrZXlFdmVudC5jb2RlLCBhbmQgaGFzIGRpZmZlcmVudCB2YWx1ZXNcbiAgICAgICAgLy8gaW4ga2V5RXZlbnQua2V5IChEb3duIGluc3RlYWQgb2YgQXJyb3dEb3duIGZvciBpbnN0YW5jZSksIGhlbmNlIHRoZSBtdWx0aS1zdXBwb3J0LlxuICAgICAgICBjb25zdCBpZTExQ29tcGF0aWJsZUNvZGUgPSBrZXlFdmVudC5jb2RlIHx8IGtleUV2ZW50LmtleTtcbiAgICAgICAgc3dpdGNoIChpZTExQ29tcGF0aWJsZUNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Rvd24nOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgIGNhc2UgJ1JpZ2h0JzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNUaW1lU2xvdCgxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1VwJzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgY2FzZSAnTGVmdCc6XG4gICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNUaW1lU2xvdCgtMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdTcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdTcGFjZWJhcic6XG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2xpY2snKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAga2V5RXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAga2V5RXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNUaW1lU2xvdChpbmM6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBidXR0b25zQXJyYXkgPSBbLi4udGhpcy50aW1lU2xvdEJ1dHRvbnNFbGVtUmVmLnRvQXJyYXkoKV07XG4gICAgICAgIGNvbnN0IGluZGV4c2VsZWN0ZWQgPSBidXR0b25zQXJyYXkuZmluZEluZGV4KFxuICAgICAgICAgICAgaXRlbSA9PlxuICAgICAgICAgICAgICAgIGl0ZW0ubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJykgPT09XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSBpbmRleHNlbGVjdGVkICsgaW5jO1xuICAgICAgICBpZiAobmV3SW5kZXggPj0gYnV0dG9uc0FycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgYnV0dG9uc0FycmF5WzBdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIGlmIChuZXdJbmRleCA8IDApIHtcbiAgICAgICAgICAgIGJ1dHRvbnNBcnJheVtidXR0b25zQXJyYXkubGVuZ3RoIC0gMV0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnV0dG9uc0FycmF5W25ld0luZGV4XS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8c2VjdGlvblxuICAgICpuZ0lmPVwiY2FsZW5kYXIgfCBhc3luYyBhcyBsb2FkZWRDYWxlbmRhclwiXG4gICAgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0IG1iLTNcIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkaW5nIG10LTIgbWItMiBweS0yIGQtZmxleCBhbGlnbi1pdGVtcy1iYXNlbGluZVwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJoNSBtbC0zIG10LTAgbWItMFwiPlxuICAgICAgICAgICAge3sgY2FwaXRhbENhc2VGaXJzdExldHRlcihjdXJyZW50V2Vlay5kYXkpIH19XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIiAqbmdJZj1cIiEhaXNTZWxlY3RlZCh0aW1lSW5wdXRWYWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAmbmJzcDt7e1xuICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLnNlbGVjdGVkLXRpbWUnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5OiB7IHRpbWVTZWxlY3RlZFZhbHVlOiB0aW1lSW5wdXRWYWx1ZSB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPHNtYWxsICpuZ0lmPVwiISFjdXJyZW50V2Vlay50aW1lU2xvdHMubGVuZ3RoXCIgY2xhc3M9XCJzci1vbmx5XCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdmb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwubmJyLWRpc3BvJ1xuICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5iRWxlbWVudHM6IGN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGgudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICA8L3NtYWxsPlxuICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICpuZ0lmPVwiIWN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGhcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb250LWl0YWxpYyBhbGlnbi1zZWxmLWVuZCBtbC0yXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgJ2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5uby1kaXNwbycgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICA8L3NtYWxsPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cIiEhY3VycmVudFdlZWsudGltZVNsb3RzLmxlbmd0aFwiXG4gICAgICAgIGNsYXNzPVwicGFuZWwtYm9keSByb3cgZC1mbGV4IGZsZXgtd3JhcCBtbC1hdXRvIG1yLWF1dG8gcGwtM1wiXG4gICAgICAgIChmb2N1c2luKT1cIm9uVGltZUZvY3VzaW4oKVwiXG4gICAgICAgIChmb2N1c291dCk9XCJvblRpbWVGb2N1c291dCgpXCJcbiAgICAgICAgcm9sZT1cImFwcGxpY2F0aW9uXCJcbiAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0aW1lU2xvdCBvZiB0aW1lU2xvdHM7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1pbmZvIG1yLTIgbWItMlwiXG4gICAgICAgICAgICAjdGltZVNsb3RCdXR0b25zRWxlbVJlZlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiXG4gICAgICAgICAgICAgICAgY2xlYW5JZEZvclF1ZXJ5U2VsZWN0b3IoY3VycmVudFdlZWsuZGF5ICsgJy0nICsgdGltZVNsb3QpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3RhYmluZGV4XT1cImdldFRpbWVTbG90VGFiSW5kZXgodGltZVNsb3QsIGluZGV4KVwiXG4gICAgICAgICAgICBbY2xhc3MuYnRuLWRhbmdlcl09XCJpc1NlbGVjdGVkKHRpbWVTbG90KVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgaGFuZGxlVXNlcklucHV0KFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50V2Vlay5kYXksXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRXZWVrLmRhdGUsXG4gICAgICAgICAgICAgICAgICAgIHRpbWVTbG90LFxuICAgICAgICAgICAgICAgICAgICBsb2FkZWRDYWxlbmRhclxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgIGdldEJ1dHRvblRpbWVTbG90QXJpYUxhYmVsKGN1cnJlbnRXZWVrLmRheSwgdGltZVNsb3QpXG4gICAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB0aW1lU2xvdCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgbWItMVwiXG4gICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGggPiBuYlZpc2libGVFbGVtZW50cyAmJiBjYW5DbG9zZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBzaG93LW1vcmVcIlxuICAgICAgICAgICAgICAgICN0aW1lU2xvdEJ1dHRvbnNFbGVtUmVmXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBhbmVsKClcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgIChpc0Nsb3NlZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLnNob3ctbW9yZS1zci1vbmx5J1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLnNob3ctbGVzcydcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ickVsZW1lbnRzSGlkZGVuOiB0aW1lc2xvdFJlbWFpbmluZy50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAoaXNDbG9zZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ2ZvZWhuLmFnZW5kYS10aW1lc2xvdC1wYW5lbC5zaG93LW1vcmUnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdmb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuc2hvdy1sZXNzJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmJyRWxlbWVudHNIaWRkZW46IHRpbWVzbG90UmVtYWluaW5nLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9zZWN0aW9uPlxuIl19
|
|
@@ -66,13 +66,13 @@ export class FoehnAgendaComponent extends FoehnInputComponent {
|
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
FoehnAgendaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: FoehnAgendaComponent, deps: [{ token: i1.SdkDictionaryService }], target: i0.ɵɵFactoryTarget.Component });
|
|
69
|
-
FoehnAgendaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.5", type: FoehnAgendaComponent, selector: "foehn-agenda", inputs: { calendar: "calendar", nbVisibleElements: "nbVisibleElements"
|
|
69
|
+
FoehnAgendaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.5", type: FoehnAgendaComponent, selector: "foehn-agenda", inputs: { calendar: "calendar", nbVisibleElements: "nbVisibleElements" }, outputs: { paginationChange: "paginationChange" }, providers: [
|
|
70
70
|
{
|
|
71
71
|
provide: FoehnInputComponent,
|
|
72
72
|
useExisting: forwardRef(() => FoehnAgendaComponent),
|
|
73
73
|
multi: true
|
|
74
74
|
}
|
|
75
|
-
], viewQueries: [{ propertyName: "timeSlotPanelsElemRef", predicate: ["timeSlotPanelElemRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrors()\"\n [class.vd-form-group-danger]=\"hasErrors()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <p\n [attr.id]=\"buildChildId() + 'Label'\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"label && type !== 'hidden'\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </p>\n\n <small\n *ngIf=\"helpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-container *ngIf=\"!(calendar | async)\">\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n <p class=\"alert alert-warning\">\n {{ 'foehn-agenda.calendar-indisponible' | fromDictionary }}\n </p>\n </ng-container>\n\n <!-- Fake input with NgModel to be registered into Form controls -->\n <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <p\n [id]=\"buildChildId('srOnlyAnnouncements')\"\n class=\"sr-only\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{ srAnnouncements }}\n </p>\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"calendar | async as loadedCalendar\">\n <section\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrors() || null\"\n >\n <h2 class=\"h3 mt-3\">\n <span aria-live=\"polite\" role=\"status\" aria-atomic=\"true\">\n {{ loadedCalendar.currentWeek.label }}\n </span>\n </h2>\n\n <!-- Rappel de l'heure actuellement s\u00E9lectionn\u00E9e -->\n <p [id]=\"buildChildId('timeSlotSelectedSrOnly')\" class=\"sr-only\">\n {{ extractDayTime(model) }}\n </p>\n\n <!-- Navigation top hidden from screen reader-->\n <foehn-agenda-navigation\n [id]=\"buildChildId() + 'week-pagination-top'\"\n [calendar]=\"loadedCalendar\"\n [minDate]=\"
|
|
75
|
+
], viewQueries: [{ propertyName: "timeSlotPanelsElemRef", predicate: ["timeSlotPanelElemRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrors()\"\n [class.vd-form-group-danger]=\"hasErrors()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <p\n [attr.id]=\"buildChildId() + 'Label'\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"label && type !== 'hidden'\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </p>\n\n <small\n *ngIf=\"helpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-container *ngIf=\"!(calendar | async)\">\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n <p class=\"alert alert-warning\">\n {{ 'foehn-agenda.calendar-indisponible' | fromDictionary }}\n </p>\n </ng-container>\n\n <!-- Fake input with NgModel to be registered into Form controls -->\n <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <p\n [id]=\"buildChildId('srOnlyAnnouncements')\"\n class=\"sr-only\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{ srAnnouncements }}\n </p>\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"calendar | async as loadedCalendar\">\n <section\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrors() || null\"\n >\n <h2 class=\"h3 mt-3\">\n <span aria-live=\"polite\" role=\"status\" aria-atomic=\"true\">\n {{ loadedCalendar.currentWeek.label }}\n </span>\n </h2>\n\n <!-- Rappel de l'heure actuellement s\u00E9lectionn\u00E9e -->\n <p [id]=\"buildChildId('timeSlotSelectedSrOnly')\" class=\"sr-only\">\n {{ extractDayTime(model) }}\n </p>\n\n <!-- Navigation top hidden from screen reader-->\n <foehn-agenda-navigation\n [id]=\"buildChildId() + 'week-pagination-top'\"\n [calendar]=\"loadedCalendar\"\n [minDate]=\"loadedCalendar.minAvailableDate\"\n [maxDate]=\"loadedCalendar.maxAvailableDate\"\n (paginationChange)=\"paginate($event)\"\n aria-hidden=\"true\"\n ></foehn-agenda-navigation>\n\n <!-- Link to navigation bottom only for screen reader -->\n <p [id]=\"buildChildId('navigationBottomAnchor')\" class=\"sr-only\">\n {{\n 'foehn-agenda.pagination-anchor.first-part' | fromDictionary\n }}\n <a\n href=\"#\"\n (click)=\"$event.preventDefault(); scrollToNavigation(true)\"\n >\n {{\n 'foehn-agenda.pagination-anchor.top-next-part'\n | fromDictionary\n }}\n </a>\n </p>\n\n <foehn-validation-alerts\n [component]=\"this\"\n ></foehn-validation-alerts>\n\n <div\n class=\"row\"\n [tabIndex]=\"hasErrors() ? 0 : -1\"\n [attr.id]=\"buildChildId()\"\n #entryComponent\n >\n <foehn-agenda-timeslot-panel\n *ngFor=\"let currentWeek of loadedCalendar.currentWeek.week\"\n class=\"col-12\"\n #timeSlotPanelElemRef\n [currentWeek]=\"currentWeek\"\n [calendar]=\"calendar\"\n [nbVisibleElements]=\"nbVisibleElements\"\n [(model)]=\"model\"\n (userInput)=\"handleUserInput($event)\"\n ></foehn-agenda-timeslot-panel>\n </div>\n </section>\n\n <!-- Navigation bottom used for screen reader only -->\n <foehn-agenda-navigation\n class=\"sr-only\"\n [id]=\"buildChildId() + 'week-pagination-bottom'\"\n [calendar]=\"loadedCalendar\"\n [isSrOnly]=\"true\"\n [minDate]=\"loadedCalendar.minAvailableDate\"\n [maxDate]=\"loadedCalendar.maxAvailableDate\"\n (paginationChange)=\"paginate($event)\"\n ></foehn-agenda-navigation>\n\n <!-- Link to navigation top hidden from screen reader -->\n <p [id]=\"buildChildId('navigationTopAnchor')\" aria-hidden=\"true\">\n {{ 'foehn-agenda.pagination-anchor.first-part' | fromDictionary }}\n <a\n href=\"#\"\n (click)=\"$event.preventDefault(); scrollToNavigation(false)\"\n >\n {{\n 'foehn-agenda.pagination-anchor.bottom-next-part'\n | fromDictionary\n }}\n </a>\n </p>\n </ng-container>\n</div>\n", components: [{ type: i2.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { type: i3.FoehnAgendaNavigationComponent, selector: "foehn-agenda-navigation", inputs: ["id", "calendar", "isSrOnly", "minDate", "maxDate"], outputs: ["paginationChange"] }, { type: i4.FoehnAgendaTimeslotPanelComponent, selector: "foehn-agenda-timeslot-panel", inputs: ["calendar", "nbVisibleElements", "currentWeek"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "fromDictionary": i7.SdkDictionaryPipe, "async": i5.AsyncPipe } });
|
|
76
76
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: FoehnAgendaComponent, decorators: [{
|
|
77
77
|
type: Component,
|
|
78
78
|
args: [{ selector: 'foehn-agenda', providers: [
|
|
@@ -81,19 +81,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImpor
|
|
|
81
81
|
useExisting: forwardRef(() => FoehnAgendaComponent),
|
|
82
82
|
multi: true
|
|
83
83
|
}
|
|
84
|
-
], template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrors()\"\n [class.vd-form-group-danger]=\"hasErrors()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <p\n [attr.id]=\"buildChildId() + 'Label'\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"label && type !== 'hidden'\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </p>\n\n <small\n *ngIf=\"helpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-container *ngIf=\"!(calendar | async)\">\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n <p class=\"alert alert-warning\">\n {{ 'foehn-agenda.calendar-indisponible' | fromDictionary }}\n </p>\n </ng-container>\n\n <!-- Fake input with NgModel to be registered into Form controls -->\n <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <p\n [id]=\"buildChildId('srOnlyAnnouncements')\"\n class=\"sr-only\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{ srAnnouncements }}\n </p>\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"calendar | async as loadedCalendar\">\n <section\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrors() || null\"\n >\n <h2 class=\"h3 mt-3\">\n <span aria-live=\"polite\" role=\"status\" aria-atomic=\"true\">\n {{ loadedCalendar.currentWeek.label }}\n </span>\n </h2>\n\n <!-- Rappel de l'heure actuellement s\u00E9lectionn\u00E9e -->\n <p [id]=\"buildChildId('timeSlotSelectedSrOnly')\" class=\"sr-only\">\n {{ extractDayTime(model) }}\n </p>\n\n <!-- Navigation top hidden from screen reader-->\n <foehn-agenda-navigation\n [id]=\"buildChildId() + 'week-pagination-top'\"\n [calendar]=\"loadedCalendar\"\n [minDate]=\"
|
|
84
|
+
], template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrors()\"\n [class.vd-form-group-danger]=\"hasErrors()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <p\n [attr.id]=\"buildChildId() + 'Label'\"\n [attr.for]=\"buildChildId()\"\n *ngIf=\"label && type !== 'hidden'\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </p>\n\n <small\n *ngIf=\"helpText && type !== 'hidden'\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-container *ngIf=\"!(calendar | async)\">\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n <p class=\"alert alert-warning\">\n {{ 'foehn-agenda.calendar-indisponible' | fromDictionary }}\n </p>\n </ng-container>\n\n <!-- Fake input with NgModel to be registered into Form controls -->\n <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <p\n [id]=\"buildChildId('srOnlyAnnouncements')\"\n class=\"sr-only\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{ srAnnouncements }}\n </p>\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"calendar | async as loadedCalendar\">\n <section\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrors() || null\"\n >\n <h2 class=\"h3 mt-3\">\n <span aria-live=\"polite\" role=\"status\" aria-atomic=\"true\">\n {{ loadedCalendar.currentWeek.label }}\n </span>\n </h2>\n\n <!-- Rappel de l'heure actuellement s\u00E9lectionn\u00E9e -->\n <p [id]=\"buildChildId('timeSlotSelectedSrOnly')\" class=\"sr-only\">\n {{ extractDayTime(model) }}\n </p>\n\n <!-- Navigation top hidden from screen reader-->\n <foehn-agenda-navigation\n [id]=\"buildChildId() + 'week-pagination-top'\"\n [calendar]=\"loadedCalendar\"\n [minDate]=\"loadedCalendar.minAvailableDate\"\n [maxDate]=\"loadedCalendar.maxAvailableDate\"\n (paginationChange)=\"paginate($event)\"\n aria-hidden=\"true\"\n ></foehn-agenda-navigation>\n\n <!-- Link to navigation bottom only for screen reader -->\n <p [id]=\"buildChildId('navigationBottomAnchor')\" class=\"sr-only\">\n {{\n 'foehn-agenda.pagination-anchor.first-part' | fromDictionary\n }}\n <a\n href=\"#\"\n (click)=\"$event.preventDefault(); scrollToNavigation(true)\"\n >\n {{\n 'foehn-agenda.pagination-anchor.top-next-part'\n | fromDictionary\n }}\n </a>\n </p>\n\n <foehn-validation-alerts\n [component]=\"this\"\n ></foehn-validation-alerts>\n\n <div\n class=\"row\"\n [tabIndex]=\"hasErrors() ? 0 : -1\"\n [attr.id]=\"buildChildId()\"\n #entryComponent\n >\n <foehn-agenda-timeslot-panel\n *ngFor=\"let currentWeek of loadedCalendar.currentWeek.week\"\n class=\"col-12\"\n #timeSlotPanelElemRef\n [currentWeek]=\"currentWeek\"\n [calendar]=\"calendar\"\n [nbVisibleElements]=\"nbVisibleElements\"\n [(model)]=\"model\"\n (userInput)=\"handleUserInput($event)\"\n ></foehn-agenda-timeslot-panel>\n </div>\n </section>\n\n <!-- Navigation bottom used for screen reader only -->\n <foehn-agenda-navigation\n class=\"sr-only\"\n [id]=\"buildChildId() + 'week-pagination-bottom'\"\n [calendar]=\"loadedCalendar\"\n [isSrOnly]=\"true\"\n [minDate]=\"loadedCalendar.minAvailableDate\"\n [maxDate]=\"loadedCalendar.maxAvailableDate\"\n (paginationChange)=\"paginate($event)\"\n ></foehn-agenda-navigation>\n\n <!-- Link to navigation top hidden from screen reader -->\n <p [id]=\"buildChildId('navigationTopAnchor')\" aria-hidden=\"true\">\n {{ 'foehn-agenda.pagination-anchor.first-part' | fromDictionary }}\n <a\n href=\"#\"\n (click)=\"$event.preventDefault(); scrollToNavigation(false)\"\n >\n {{\n 'foehn-agenda.pagination-anchor.bottom-next-part'\n | fromDictionary\n }}\n </a>\n </p>\n </ng-container>\n</div>\n" }]
|
|
85
85
|
}], ctorParameters: function () { return [{ type: i1.SdkDictionaryService }]; }, propDecorators: { calendar: [{
|
|
86
86
|
type: Input
|
|
87
87
|
}], nbVisibleElements: [{
|
|
88
88
|
type: Input
|
|
89
|
-
}], minDate: [{
|
|
90
|
-
type: Input
|
|
91
|
-
}], maxDate: [{
|
|
92
|
-
type: Input
|
|
93
89
|
}], paginationChange: [{
|
|
94
90
|
type: Output
|
|
95
91
|
}], timeSlotPanelsElemRef: [{
|
|
96
92
|
type: ViewChildren,
|
|
97
93
|
args: ['timeSlotPanelElemRef']
|
|
98
94
|
}] } });
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tYWdlbmRhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1hZ2VuZGEvZm9laG4tYWdlbmRhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1hZ2VuZGEvZm9laG4tYWdlbmRhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUVOLFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7Ozs7O0FBbUIzRSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsbUJBQWlDO0lBeUJ2RSxZQUFvQixpQkFBdUM7UUFDdkQsS0FBSyxFQUFFLENBQUM7UUFEUSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBWDNELHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBS3RELG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBSUosOENBQXlDLEdBQUcsSUFBSSxDQUFDO0lBSWxFLENBQUM7SUFFTyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBUztRQUM1QyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxLQUFLO1FBQ0QsTUFBTSwwQkFBMEIsR0FBRztZQUMvQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUU7U0FDMUMsQ0FBQztRQUNGLElBQUksQ0FBQyxDQUFDLDBCQUEwQixDQUFDLE1BQU0sRUFBRTtZQUNyQyxNQUFNLGFBQWEsR0FBRywwQkFB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QXFCO3NCQURwQixZQUFZO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9laG5JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZWxlY3RlZFNsb3QgfSBmcm9tICcuL3NlbGVjdGVkLXNsb3QudHlwZSc7XG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gJy4vY2FsZW5kYXIudHlwZSc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uV2VlayB9IGZyb20gJy4vcGFnaW5hdGlvbi13ZWVrLnR5cGUnO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IEZvZWhuQWdlbmRhVGltZXNsb3RQYW5lbENvbXBvbmVudCB9IGZyb20gJy4vZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsL2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWFnZW5kYScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZvZWhuLWFnZW5kYS5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZvZWhuSW5wdXRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb2VobkFnZW5kYUNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobkFnZW5kYUNvbXBvbmVudCBleHRlbmRzIEZvZWhuSW5wdXRDb21wb25lbnQ8U2VsZWN0ZWRTbG90PiB7XG4gICAgQElucHV0KClcbiAgICBjYWxlbmRhcjogT2JzZXJ2YWJsZTxDYWxlbmRhcj47XG5cbiAgICBASW5wdXQoKVxuICAgIG5iVmlzaWJsZUVsZW1lbnRzOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIG1pbkRhdGU6IG51bWJlcltdO1xuXG4gICAgQElucHV0KClcbiAgICBtYXhEYXRlOiBudW1iZXJbXTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHBhZ2luYXRpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2luYXRpb25XZWVrPigpO1xuXG4gICAgQFZpZXdDaGlsZHJlbigndGltZVNsb3RQYW5lbEVsZW1SZWYnKVxuICAgIHRpbWVTbG90UGFuZWxzRWxlbVJlZjogUXVlcnlMaXN0PEZvZWhuQWdlbmRhVGltZXNsb3RQYW5lbENvbXBvbmVudD47XG5cbiAgICBzckFubm91bmNlbWVudHMgPSAnJztcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBzckFubm91bmNlbWVudENsZWFyVGltZXI6IGFueTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IFNSX0FOTk9VTkNFTUVOVF9DTEVBUl9USU1FT1VUX0lOVEVSVkFMX01TID0gMTAwMDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGljdGlvbmFyeVNlcnZpY2U6IFNka0RpY3Rpb25hcnlTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgY2xlYW5JZEZvclF1ZXJ5U2VsZWN0b3Ioczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHMucmVwbGFjZShuZXcgUmVnRXhwKCdcXFxcLicsICdnJyksICdcXFxcLicpO1xuICAgIH1cblxuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0aW1lU2xvdFBhbmVsc0VsZW1SZWZBcnJheSA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMudGltZVNsb3RQYW5lbHNFbGVtUmVmLnRvQXJyYXkoKVxuICAgICAgICBdO1xuICAgICAgICBpZiAoISF0aW1lU2xvdFBhbmVsc0VsZW1SZWZBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVTbG90UGFuZWwgPSB0aW1lU2xvdFBhbmVsc0VsZW1SZWZBcnJheS5maW5kKFxuICAgICAgICAgICAgICAgIGVsZW0gPT4gISFlbGVtLnRpbWVTbG90cyAmJiAhIWVsZW0udGltZVNsb3RzLmxlbmd0aFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICghIXRpbWVTbG90UGFuZWwpIHtcbiAgICAgICAgICAgICAgICB0aW1lU2xvdFBhbmVsLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwYWdpbmF0ZShwYWdpbmF0aW9uV2VlazogUGFnaW5hdGlvbldlZWspOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uQ2hhbmdlLm5leHQocGFnaW5hdGlvbldlZWspO1xuICAgIH1cblxuICAgIGhhbmRsZVVzZXJJbnB1dChzZWxlY3RlZFRpbWVTbG90OiBTZWxlY3RlZFNsb3QpOiB2b2lkIHtcbiAgICAgICAgLy8gbWFya0FzRGlydHkgaGlkZXMgZXJyb3IgYnkgc2ltdWxhdGluZyB0aGUgY29udHJvbCBvbiBuZ01vZGVsIGFzIGRpcnR5XG4gICAgICAgIHRoaXMubWFya0FzRGlydHkoKTtcbiAgICAgICAgdGhpcy5tYW5hZ2VTY3JlZW5SZWFkZXJBbm5vdW5jZW1lbnQoXG4gICAgICAgICAgICBgJHtzZWxlY3RlZFRpbWVTbG90LmRheX0gJHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFRpbWVTbG90LnRpbWVcbiAgICAgICAgICAgIH0gJHt0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS50aW1lc2xvdC5zZWxlY3RlZCdcbiAgICAgICAgICAgICl9YFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHNjcm9sbFRvTmF2aWdhdGlvbihpc1RvcDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBsZXQgbmF2aWdhdGlvbklkID0gYCMke0ZvZWhuQWdlbmRhQ29tcG9uZW50LmNsZWFuSWRGb3JRdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgdGhpcy5idWlsZENoaWxkSWQoJ3dlZWstcGFnaW5hdGlvbicpXG4gICAgICAgICl9YDtcbiAgICAgICAgbmF2aWdhdGlvbklkICs9IGlzVG9wID8gJy1ib3R0b20nIDogJy10b3AnO1xuICAgICAgICBjb25zdCBuYXZpZ2F0aW9uRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IobmF2aWdhdGlvbklkKTtcbiAgICAgICAgaWYgKG5hdmlnYXRpb25FbGVtZW50KSB7XG4gICAgICAgICAgICBuYXZpZ2F0aW9uRWxlbWVudC5zY3JvbGxJbnRvVmlldygpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5hdmlnYXRpb25MaW5rSWQgPSBgJHtuYXZpZ2F0aW9uSWR9IC52ZC1wYWdpbmF0aW9uX19saW5rYDtcbiAgICAgICAgY29uc3QgbmF2aWdhdGlvbkxpbms6IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgIG5hdmlnYXRpb25MaW5rSWRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKG5hdmlnYXRpb25MaW5rKSB7XG4gICAgICAgICAgICBuYXZpZ2F0aW9uTGluay5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXh0cmFjdERheVRpbWUoc2VsZWN0ZWQ6IFNlbGVjdGVkU2xvdCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCR7c2VsZWN0ZWQuZGF5fSAke3NlbGVjdGVkLnRpbWV9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZVNjcmVlblJlYWRlckFubm91bmNlbWVudChtc2c6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zckFubm91bmNlbWVudENsZWFyVGltZXIpO1xuICAgICAgICB0aGlzLnNyQW5ub3VuY2VtZW50cyA9IG1zZztcbiAgICAgICAgdGhpcy5zckFubm91bmNlbWVudENsZWFyVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3JBbm5vdW5jZW1lbnRzID0gJyc7XG4gICAgICAgIH0sIHRoaXMuU1JfQU5OT1VOQ0VNRU5UX0NMRUFSX1RJTUVPVVRfSU5URVJWQUxfTVMpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXBcIlxuICAgIFtjbGFzcy5oYXMtZGFuZ2VyXT1cImhhc0Vycm9ycygpXCJcbiAgICBbY2xhc3MudmQtZm9ybS1ncm91cC1kYW5nZXJdPVwiaGFzRXJyb3JzKClcIlxuICAgIFthdHRyLmlkXT1cImJ1aWxkSWQoJ0NvbnRhaW5lcicpXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbj5cbiAgICA8cFxuICAgICAgICBbYXR0ci5pZF09XCJidWlsZENoaWxkSWQoKSArICdMYWJlbCdcIlxuICAgICAgICBbYXR0ci5mb3JdPVwiYnVpbGRDaGlsZElkKClcIlxuICAgICAgICAqbmdJZj1cImxhYmVsICYmIHR5cGUgIT09ICdoaWRkZW4nXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiaXNMYWJlbFNyT25seSA/ICdzci1vbmx5JyA6ICd2ZC1wJ1wiXG4gICAgPlxuICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImxhYmVsXCI+PC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCIhcmVxdWlyZWQgJiYgIWhpZGVOb3RSZXF1aXJlZEV4dHJhTGFiZWxcIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgJ2ZvZWhuLWlucHV0Lm9wdGlvbmFsJyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L3A+XG5cbiAgICA8c21hbGxcbiAgICAgICAgKm5nSWY9XCJoZWxwVGV4dCAmJiB0eXBlICE9PSAnaGlkZGVuJ1wiXG4gICAgICAgIFthdHRyLmlkXT1cImJ1aWxkQ2hpbGRJZCgpICsgJ0hlbHAnXCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cImhlbHBUZXh0XCJcbiAgICA+PC9zbWFsbD5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhKGNhbGVuZGFyIHwgYXN5bmMpXCI+XG4gICAgICAgIDxmb2Vobi12YWxpZGF0aW9uLWFsZXJ0cyBbY29tcG9uZW50XT1cInRoaXNcIj48L2ZvZWhuLXZhbGlkYXRpb24tYWxlcnRzPlxuICAgICAgICA8cCBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmdcIj5cbiAgICAgICAgICAgIHt7ICdmb2Vobi1hZ2VuZGEuY2FsZW5kYXItaW5kaXNwb25pYmxlJyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgIDwvcD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gRmFrZSBpbnB1dCB3aXRoIE5nTW9kZWwgdG8gYmUgcmVnaXN0ZXJlZCBpbnRvIEZvcm0gY29udHJvbHMgLS0+XG4gICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBbbmFtZV09XCJuYW1lIHx8IGxhYmVsXCIgW25nTW9kZWxdPVwibW9kZWxcIiAvPlxuXG4gICAgPHBcbiAgICAgICAgW2lkXT1cImJ1aWxkQ2hpbGRJZCgnc3JPbmx5QW5ub3VuY2VtZW50cycpXCJcbiAgICAgICAgY2xhc3M9XCJzci1vbmx5XCJcbiAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgYXJpYS1hdG9taWM9XCJ0cnVlXCJcbiAgICA+XG4gICAgICAgIHt7IHNyQW5ub3VuY2VtZW50cyB9fVxuICAgIDwvcD5cblxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYWxlbmRhciB8IGFzeW5jIGFzIGxvYWRlZENhbGVuZGFyXCI+XG4gICAgICAgIDxzZWN0aW9uXG4gICAgICAgICAgICBjbGFzcz1cIm1iLTNcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJnZXREZXNjcmliZWRCeSgpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJoYXNFcnJvcnMoKSB8fCBudWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGgyIGNsYXNzPVwiaDMgbXQtM1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtbGl2ZT1cInBvbGl0ZVwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWF0b21pYz1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgbG9hZGVkQ2FsZW5kYXIuY3VycmVudFdlZWsubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2gyPlxuXG4gICAgICAgICAgICA8IS0tIFJhcHBlbCBkZSBsJ2hldXJlIGFjdHVlbGxlbWVudCBzw6lsZWN0aW9ubsOpZSAtLT5cbiAgICAgICAgICAgIDxwIFtpZF09XCJidWlsZENoaWxkSWQoJ3RpbWVTbG90U2VsZWN0ZWRTck9ubHknKVwiIGNsYXNzPVwic3Itb25seVwiPlxuICAgICAgICAgICAgICAgIHt7IGV4dHJhY3REYXlUaW1lKG1vZGVsKSB9fVxuICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgICA8IS0tIE5hdmlnYXRpb24gdG9wIGhpZGRlbiBmcm9tIHNjcmVlbiByZWFkZXItLT5cbiAgICAgICAgICAgIDxmb2Vobi1hZ2VuZGEtbmF2aWdhdGlvblxuICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZENoaWxkSWQoKSArICd3ZWVrLXBhZ2luYXRpb24tdG9wJ1wiXG4gICAgICAgICAgICAgICAgW2NhbGVuZGFyXT1cImxvYWRlZENhbGVuZGFyXCJcbiAgICAgICAgICAgICAgICBbbWluRGF0ZV09XCJtaW5EYXRlXCJcbiAgICAgICAgICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcbiAgICAgICAgICAgICAgICAocGFnaW5hdGlvbkNoYW5nZSk9XCJwYWdpbmF0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPjwvZm9laG4tYWdlbmRhLW5hdmlnYXRpb24+XG5cbiAgICAgICAgICAgIDwhLS0gTGluayB0byBuYXZpZ2F0aW9uIGJvdHRvbSBvbmx5IGZvciBzY3JlZW4gcmVhZGVyIC0tPlxuICAgICAgICAgICAgPHAgW2lkXT1cImJ1aWxkQ2hpbGRJZCgnbmF2aWdhdGlvbkJvdHRvbUFuY2hvcicpXCIgY2xhc3M9XCJzci1vbmx5XCI+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS5wYWdpbmF0aW9uLWFuY2hvci5maXJzdC1wYXJ0JyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBocmVmPVwiI1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgc2Nyb2xsVG9OYXZpZ2F0aW9uKHRydWUpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLnBhZ2luYXRpb24tYW5jaG9yLnRvcC1uZXh0LXBhcnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvcD5cblxuICAgICAgICAgICAgPGZvZWhuLXZhbGlkYXRpb24tYWxlcnRzXG4gICAgICAgICAgICAgICAgW2NvbXBvbmVudF09XCJ0aGlzXCJcbiAgICAgICAgICAgID48L2ZvZWhuLXZhbGlkYXRpb24tYWxlcnRzPlxuXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyb3dcIlxuICAgICAgICAgICAgICAgIFt0YWJJbmRleF09XCJoYXNFcnJvcnMoKSA/IDAgOiAtMVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKClcIlxuICAgICAgICAgICAgICAgICNlbnRyeUNvbXBvbmVudFxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxmb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWxcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGN1cnJlbnRXZWVrIG9mIGxvYWRlZENhbGVuZGFyLmN1cnJlbnRXZWVrLndlZWtcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC0xMlwiXG4gICAgICAgICAgICAgICAgICAgICN0aW1lU2xvdFBhbmVsRWxlbVJlZlxuICAgICAgICAgICAgICAgICAgICBbY3VycmVudFdlZWtdPVwiY3VycmVudFdlZWtcIlxuICAgICAgICAgICAgICAgICAgICBbY2FsZW5kYXJdPVwiY2FsZW5kYXJcIlxuICAgICAgICAgICAgICAgICAgICBbbmJWaXNpYmxlRWxlbWVudHNdPVwibmJWaXNpYmxlRWxlbWVudHNcIlxuICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJtb2RlbFwiXG4gICAgICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwiaGFuZGxlVXNlcklucHV0KCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgPCEtLSBOYXZpZ2F0aW9uIGJvdHRvbSB1c2VkIGZvciBzY3JlZW4gcmVhZGVyIG9ubHkgLS0+XG4gICAgICAgIDxmb2Vobi1hZ2VuZGEtbmF2aWdhdGlvblxuICAgICAgICAgICAgY2xhc3M9XCJzci1vbmx5XCJcbiAgICAgICAgICAgIFtpZF09XCJidWlsZENoaWxkSWQoKSArICd3ZWVrLXBhZ2luYXRpb24tYm90dG9tJ1wiXG4gICAgICAgICAgICBbY2FsZW5kYXJdPVwibG9hZGVkQ2FsZW5kYXJcIlxuICAgICAgICAgICAgW2lzU3JPbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcbiAgICAgICAgICAgIChwYWdpbmF0aW9uQ2hhbmdlKT1cInBhZ2luYXRlKCRldmVudClcIlxuICAgICAgICA+PC9mb2Vobi1hZ2VuZGEtbmF2aWdhdGlvbj5cblxuICAgICAgICA8IS0tIExpbmsgdG8gbmF2aWdhdGlvbiB0b3AgaGlkZGVuIGZyb20gc2NyZWVuIHJlYWRlciAtLT5cbiAgICAgICAgPHAgW2lkXT1cImJ1aWxkQ2hpbGRJZCgnbmF2aWdhdGlvblRvcEFuY2hvcicpXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICB7eyAnZm9laG4tYWdlbmRhLnBhZ2luYXRpb24tYW5jaG9yLmZpcnN0LXBhcnQnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgaHJlZj1cIiNcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgc2Nyb2xsVG9OYXZpZ2F0aW9uKGZhbHNlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS5wYWdpbmF0aW9uLWFuY2hvci5ib3R0b20tbmV4dC1wYXJ0J1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvcD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tYWdlbmRhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1hZ2VuZGEvZm9laG4tYWdlbmRhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1hZ2VuZGEvZm9laG4tYWdlbmRhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUVOLFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7Ozs7O0FBbUIzRSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsbUJBQWlDO0lBbUJ2RSxZQUFvQixpQkFBdUM7UUFDdkQsS0FBSyxFQUFFLENBQUM7UUFEUSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBWDNELHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBS3RELG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBSUosOENBQXlDLEdBQUcsSUFBSSxDQUFDO0lBSWxFLENBQUM7SUFFTyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBUztRQUM1QyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxLQUFLO1FBQ0QsTUFBTSwwQkFBMEIsR0FBRztZQUMvQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUU7U0FDMUMsQ0FBQztRQUNGLElBQUksQ0FBQyxDQUFDLDBCQUEwQixDQUFDLE1BQU0sRUFBRTtZQUNyQyxNQUFNLGFBQWEsR0FBRywwQkFB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dCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2VsZWN0ZWRTbG90IH0gZnJvbSAnLi9zZWxlY3RlZC1zbG90LnR5cGUnO1xuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuL2NhbGVuZGFyLnR5cGUnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbldlZWsgfSBmcm9tICcuL3BhZ2luYXRpb24td2Vlay50eXBlJztcbmltcG9ydCB7IFNka0RpY3Rpb25hcnlTZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLWRpY3Rpb25hcnkvc2RrLWRpY3Rpb25hcnkuc2VydmljZSc7XG5pbXBvcnQgeyBGb2VobkFnZW5kYVRpbWVzbG90UGFuZWxDb21wb25lbnQgfSBmcm9tICcuL2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC9mb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1hZ2VuZGEnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi1hZ2VuZGEuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9laG5BZ2VuZGFDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5BZ2VuZGFDb21wb25lbnQgZXh0ZW5kcyBGb2VobklucHV0Q29tcG9uZW50PFNlbGVjdGVkU2xvdD4ge1xuICAgIEBJbnB1dCgpXG4gICAgY2FsZW5kYXI6IE9ic2VydmFibGU8Q2FsZW5kYXI+O1xuXG4gICAgQElucHV0KClcbiAgICBuYlZpc2libGVFbGVtZW50czogbnVtYmVyO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcGFnaW5hdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnaW5hdGlvbldlZWs+KCk7XG5cbiAgICBAVmlld0NoaWxkcmVuKCd0aW1lU2xvdFBhbmVsRWxlbVJlZicpXG4gICAgdGltZVNsb3RQYW5lbHNFbGVtUmVmOiBRdWVyeUxpc3Q8Rm9laG5BZ2VuZGFUaW1lc2xvdFBhbmVsQ29tcG9uZW50PjtcblxuICAgIHNyQW5ub3VuY2VtZW50cyA9ICcnO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIHNyQW5ub3VuY2VtZW50Q2xlYXJUaW1lcjogYW55O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgU1JfQU5OT1VOQ0VNRU5UX0NMRUFSX1RJTUVPVVRfSU5URVJWQUxfTVMgPSAxMDAwO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBjbGVhbklkRm9yUXVlcnlTZWxlY3RvcihzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gcy5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcXFwuJywgJ2cnKSwgJ1xcXFwuJyk7XG4gICAgfVxuXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRpbWVTbG90UGFuZWxzRWxlbVJlZkFycmF5ID0gW1xuICAgICAgICAgICAgLi4udGhpcy50aW1lU2xvdFBhbmVsc0VsZW1SZWYudG9BcnJheSgpXG4gICAgICAgIF07XG4gICAgICAgIGlmICghIXRpbWVTbG90UGFuZWxzRWxlbVJlZkFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgdGltZVNsb3RQYW5lbCA9IHRpbWVTbG90UGFuZWxzRWxlbVJlZkFycmF5LmZpbmQoXG4gICAgICAgICAgICAgICAgZWxlbSA9PiAhIWVsZW0udGltZVNsb3RzICYmICEhZWxlbS50aW1lU2xvdHMubGVuZ3RoXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCEhdGltZVNsb3RQYW5lbCkge1xuICAgICAgICAgICAgICAgIHRpbWVTbG90UGFuZWwuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBhZ2luYXRlKHBhZ2luYXRpb25XZWVrOiBQYWdpbmF0aW9uV2Vlayk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhZ2luYXRpb25DaGFuZ2UubmV4dChwYWdpbmF0aW9uV2Vlayk7XG4gICAgfVxuXG4gICAgaGFuZGxlVXNlcklucHV0KHNlbGVjdGVkVGltZVNsb3Q6IFNlbGVjdGVkU2xvdCk6IHZvaWQge1xuICAgICAgICAvLyBtYXJrQXNEaXJ0eSBoaWRlcyBlcnJvciBieSBzaW11bGF0aW5nIHRoZSBjb250cm9sIG9uIG5nTW9kZWwgYXMgZGlydHlcbiAgICAgICAgdGhpcy5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICB0aGlzLm1hbmFnZVNjcmVlblJlYWRlckFubm91bmNlbWVudChcbiAgICAgICAgICAgIGAke3NlbGVjdGVkVGltZVNsb3QuZGF5fSAke1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkVGltZVNsb3QudGltZVxuICAgICAgICAgICAgfSAke3RoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLnRpbWVzbG90LnNlbGVjdGVkJ1xuICAgICAgICAgICAgKX1gXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc2Nyb2xsVG9OYXZpZ2F0aW9uKGlzVG9wOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGxldCBuYXZpZ2F0aW9uSWQgPSBgIyR7Rm9laG5BZ2VuZGFDb21wb25lbnQuY2xlYW5JZEZvclF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICB0aGlzLmJ1aWxkQ2hpbGRJZCgnd2Vlay1wYWdpbmF0aW9uJylcbiAgICAgICAgKX1gO1xuICAgICAgICBuYXZpZ2F0aW9uSWQgKz0gaXNUb3AgPyAnLWJvdHRvbScgOiAnLXRvcCc7XG4gICAgICAgIGNvbnN0IG5hdmlnYXRpb25FbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihuYXZpZ2F0aW9uSWQpO1xuICAgICAgICBpZiAobmF2aWdhdGlvbkVsZW1lbnQpIHtcbiAgICAgICAgICAgIG5hdmlnYXRpb25FbGVtZW50LnNjcm9sbEludG9WaWV3KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmF2aWdhdGlvbkxpbmtJZCA9IGAke25hdmlnYXRpb25JZH0gLnZkLXBhZ2luYXRpb25fX2xpbmtgO1xuICAgICAgICBjb25zdCBuYXZpZ2F0aW9uTGluazogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgbmF2aWdhdGlvbkxpbmtJZFxuICAgICAgICApO1xuICAgICAgICBpZiAobmF2aWdhdGlvbkxpbmspIHtcbiAgICAgICAgICAgIG5hdmlnYXRpb25MaW5rLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBleHRyYWN0RGF5VGltZShzZWxlY3RlZDogU2VsZWN0ZWRTbG90KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFzZWxlY3RlZCkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtzZWxlY3RlZC5kYXl9ICR7c2VsZWN0ZWQudGltZX1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFuYWdlU2NyZWVuUmVhZGVyQW5ub3VuY2VtZW50KG1zZzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNyQW5ub3VuY2VtZW50Q2xlYXJUaW1lcik7XG4gICAgICAgIHRoaXMuc3JBbm5vdW5jZW1lbnRzID0gbXNnO1xuICAgICAgICB0aGlzLnNyQW5ub3VuY2VtZW50Q2xlYXJUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zckFubm91bmNlbWVudHMgPSAnJztcbiAgICAgICAgfSwgdGhpcy5TUl9BTk5PVU5DRU1FTlRfQ0xFQVJfVElNRU9VVF9JTlRFUlZBTF9NUyk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cFwiXG4gICAgW2NsYXNzLmhhcy1kYW5nZXJdPVwiaGFzRXJyb3JzKClcIlxuICAgIFtjbGFzcy52ZC1mb3JtLWdyb3VwLWRhbmdlcl09XCJoYXNFcnJvcnMoKVwiXG4gICAgW2F0dHIuaWRdPVwiYnVpbGRJZCgnQ29udGFpbmVyJylcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuPlxuICAgIDxwXG4gICAgICAgIFthdHRyLmlkXT1cImJ1aWxkQ2hpbGRJZCgpICsgJ0xhYmVsJ1wiXG4gICAgICAgIFthdHRyLmZvcl09XCJidWlsZENoaWxkSWQoKVwiXG4gICAgICAgICpuZ0lmPVwibGFiZWwgJiYgdHlwZSAhPT0gJ2hpZGRlbidcIlxuICAgICAgICBbbmdDbGFzc109XCJpc0xhYmVsU3JPbmx5ID8gJ3NyLW9ubHknIDogJ3ZkLXAnXCJcbiAgICA+XG4gICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibGFiZWxcIj48L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cIiFyZXF1aXJlZCAmJiAhaGlkZU5vdFJlcXVpcmVkRXh0cmFMYWJlbFwiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyAnZm9laG4taW5wdXQub3B0aW9uYWwnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvcD5cblxuICAgIDxzbWFsbFxuICAgICAgICAqbmdJZj1cImhlbHBUZXh0ICYmIHR5cGUgIT09ICdoaWRkZW4nXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKCkgKyAnSGVscCdcIlxuICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwiaGVscFRleHRcIlxuICAgID48L3NtYWxsPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEoY2FsZW5kYXIgfCBhc3luYylcIj5cbiAgICAgICAgPGZvZWhuLXZhbGlkYXRpb24tYWxlcnRzIFtjb21wb25lbnRdPVwidGhpc1wiPjwvZm9laG4tdmFsaWRhdGlvbi1hbGVydHM+XG4gICAgICAgIDxwIGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZ1wiPlxuICAgICAgICAgICAge3sgJ2ZvZWhuLWFnZW5kYS5jYWxlbmRhci1pbmRpc3BvbmlibGUnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgPC9wPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBGYWtlIGlucHV0IHdpdGggTmdNb2RlbCB0byBiZSByZWdpc3RlcmVkIGludG8gRm9ybSBjb250cm9scyAtLT5cbiAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIFtuYW1lXT1cIm5hbWUgfHwgbGFiZWxcIiBbbmdNb2RlbF09XCJtb2RlbFwiIC8+XG5cbiAgICA8cFxuICAgICAgICBbaWRdPVwiYnVpbGRDaGlsZElkKCdzck9ubHlBbm5vdW5jZW1lbnRzJylcIlxuICAgICAgICBjbGFzcz1cInNyLW9ubHlcIlxuICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICBhcmlhLWF0b21pYz1cInRydWVcIlxuICAgID5cbiAgICAgICAge3sgc3JBbm5vdW5jZW1lbnRzIH19XG4gICAgPC9wPlxuXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbGVuZGFyIHwgYXN5bmMgYXMgbG9hZGVkQ2FsZW5kYXJcIj5cbiAgICAgICAgPHNlY3Rpb25cbiAgICAgICAgICAgIGNsYXNzPVwibWItM1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImdldERlc2NyaWJlZEJ5KClcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImhhc0Vycm9ycygpIHx8IG51bGxcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aDIgY2xhc3M9XCJoMyBtdC0zXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1saXZlPVwicG9saXRlXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtYXRvbWljPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBsb2FkZWRDYWxlbmRhci5jdXJyZW50V2Vlay5sYWJlbCB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvaDI+XG5cbiAgICAgICAgICAgIDwhLS0gUmFwcGVsIGRlIGwnaGV1cmUgYWN0dWVsbGVtZW50IHPDqWxlY3Rpb25uw6llIC0tPlxuICAgICAgICAgICAgPHAgW2lkXT1cImJ1aWxkQ2hpbGRJZCgndGltZVNsb3RTZWxlY3RlZFNyT25seScpXCIgY2xhc3M9XCJzci1vbmx5XCI+XG4gICAgICAgICAgICAgICAge3sgZXh0cmFjdERheVRpbWUobW9kZWwpIH19XG4gICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgIDwhLS0gTmF2aWdhdGlvbiB0b3AgaGlkZGVuIGZyb20gc2NyZWVuIHJlYWRlci0tPlxuICAgICAgICAgICAgPGZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uXG4gICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkQ2hpbGRJZCgpICsgJ3dlZWstcGFnaW5hdGlvbi10b3AnXCJcbiAgICAgICAgICAgICAgICBbY2FsZW5kYXJdPVwibG9hZGVkQ2FsZW5kYXJcIlxuICAgICAgICAgICAgICAgIFttaW5EYXRlXT1cImxvYWRlZENhbGVuZGFyLm1pbkF2YWlsYWJsZURhdGVcIlxuICAgICAgICAgICAgICAgIFttYXhEYXRlXT1cImxvYWRlZENhbGVuZGFyLm1heEF2YWlsYWJsZURhdGVcIlxuICAgICAgICAgICAgICAgIChwYWdpbmF0aW9uQ2hhbmdlKT1cInBhZ2luYXRlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICA+PC9mb2Vobi1hZ2VuZGEtbmF2aWdhdGlvbj5cblxuICAgICAgICAgICAgPCEtLSBMaW5rIHRvIG5hdmlnYXRpb24gYm90dG9tIG9ubHkgZm9yIHNjcmVlbiByZWFkZXIgLS0+XG4gICAgICAgICAgICA8cCBbaWRdPVwiYnVpbGRDaGlsZElkKCduYXZpZ2F0aW9uQm90dG9tQW5jaG9yJylcIiBjbGFzcz1cInNyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLnBhZ2luYXRpb24tYW5jaG9yLmZpcnN0LXBhcnQnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIGhyZWY9XCIjXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBzY3JvbGxUb05hdmlnYXRpb24odHJ1ZSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1hZ2VuZGEucGFnaW5hdGlvbi1hbmNob3IudG9wLW5leHQtcGFydCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgICA8Zm9laG4tdmFsaWRhdGlvbi1hbGVydHNcbiAgICAgICAgICAgICAgICBbY29tcG9uZW50XT1cInRoaXNcIlxuICAgICAgICAgICAgPjwvZm9laG4tdmFsaWRhdGlvbi1hbGVydHM+XG5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJvd1wiXG4gICAgICAgICAgICAgICAgW3RhYkluZGV4XT1cImhhc0Vycm9ycygpID8gMCA6IC0xXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJidWlsZENoaWxkSWQoKVwiXG4gICAgICAgICAgICAgICAgI2VudHJ5Q29tcG9uZW50XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbFxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY3VycmVudFdlZWsgb2YgbG9hZGVkQ2FsZW5kYXIuY3VycmVudFdlZWsud2Vla1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLTEyXCJcbiAgICAgICAgICAgICAgICAgICAgI3RpbWVTbG90UGFuZWxFbGVtUmVmXG4gICAgICAgICAgICAgICAgICAgIFtjdXJyZW50V2Vla109XCJjdXJyZW50V2Vla1wiXG4gICAgICAgICAgICAgICAgICAgIFtjYWxlbmRhcl09XCJjYWxlbmRhclwiXG4gICAgICAgICAgICAgICAgICAgIFtuYlZpc2libGVFbGVtZW50c109XCJuYlZpc2libGVFbGVtZW50c1wiXG4gICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cIm1vZGVsXCJcbiAgICAgICAgICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJoYW5kbGVVc2VySW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICA8IS0tIE5hdmlnYXRpb24gYm90dG9tIHVzZWQgZm9yIHNjcmVlbiByZWFkZXIgb25seSAtLT5cbiAgICAgICAgPGZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uXG4gICAgICAgICAgICBjbGFzcz1cInNyLW9ubHlcIlxuICAgICAgICAgICAgW2lkXT1cImJ1aWxkQ2hpbGRJZCgpICsgJ3dlZWstcGFnaW5hdGlvbi1ib3R0b20nXCJcbiAgICAgICAgICAgIFtjYWxlbmRhcl09XCJsb2FkZWRDYWxlbmRhclwiXG4gICAgICAgICAgICBbaXNTck9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICBbbWluRGF0ZV09XCJsb2FkZWRDYWxlbmRhci5taW5BdmFpbGFibGVEYXRlXCJcbiAgICAgICAgICAgIFttYXhEYXRlXT1cImxvYWRlZENhbGVuZGFyLm1heEF2YWlsYWJsZURhdGVcIlxuICAgICAgICAgICAgKHBhZ2luYXRpb25DaGFuZ2UpPVwicGFnaW5hdGUoJGV2ZW50KVwiXG4gICAgICAgID48L2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uPlxuXG4gICAgICAgIDwhLS0gTGluayB0byBuYXZpZ2F0aW9uIHRvcCBoaWRkZW4gZnJvbSBzY3JlZW4gcmVhZGVyIC0tPlxuICAgICAgICA8cCBbaWRdPVwiYnVpbGRDaGlsZElkKCduYXZpZ2F0aW9uVG9wQW5jaG9yJylcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIHt7ICdmb2Vobi1hZ2VuZGEucGFnaW5hdGlvbi1hbmNob3IuZmlyc3QtcGFydCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBocmVmPVwiI1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBzY3JvbGxUb05hdmlnYXRpb24oZmFsc2UpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLnBhZ2luYXRpb24tYW5jaG9yLmJvdHRvbS1uZXh0LXBhcnQnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9wPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
|