@ieeesa-npm/groups 0.15.34 → 0.15.35
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/esm2022/lib/components/interest-responses/interest-responses.component.mjs +27 -1
- package/esm2022/lib/components/interested-rosters/interested-rosters.component.mjs +21 -5
- package/fesm2022/ieeesa-npm-groups.mjs +44 -4
- package/fesm2022/ieeesa-npm-groups.mjs.map +1 -1
- package/lib/components/interest-responses/interest-responses.component.d.ts +10 -0
- package/package.json +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Component, Input, ViewEncapsulation, } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { DateTime } from 'luxon';
|
|
3
4
|
import constants from '../../assets/constants.json';
|
|
4
5
|
import { InterestFieldType, } from '../../models/interest-response.model';
|
|
5
6
|
import { Subject, takeUntil } from 'rxjs';
|
|
@@ -102,11 +103,36 @@ export class InterestResponsesComponent {
|
|
|
102
103
|
const value = response?.answerValue;
|
|
103
104
|
if (Array.isArray(value))
|
|
104
105
|
return value.join(', ');
|
|
106
|
+
// DATE answers arrive as a raw JS Date string (e.g.
|
|
107
|
+
// "Thu Oct 29 2026 00:00:00 GMT+0000"). Display the date portion only, in
|
|
108
|
+
// the app's standard display format (DD MMM YYYY, e.g. "29 Oct 2026"),
|
|
109
|
+
// dropping the 00:00:00 time and timezone. Falls back to the raw value if
|
|
110
|
+
// it cannot be parsed, so a non-standard string is never silently blanked.
|
|
111
|
+
if (response?.fieldTypeSnapshot === InterestFieldType.DATE && value) {
|
|
112
|
+
return this.formatDateAnswer(value);
|
|
113
|
+
}
|
|
105
114
|
if (response?.fieldTypeSnapshot === InterestFieldType.CHECKBOX && value) {
|
|
106
115
|
return value;
|
|
107
116
|
}
|
|
108
117
|
return value ?? '';
|
|
109
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* Formats a DATE answer value to the application's display date format
|
|
121
|
+
* (DD MMM YYYY), dropping the time/timezone. The BE sends a JS Date string
|
|
122
|
+
* such as "Thu Oct 29 2026 00:00:00 GMT+0000"; this parses it as a native
|
|
123
|
+
* date and reformats it. Returns the original string when it cannot be parsed.
|
|
124
|
+
* @param {string} value - The raw DATE answer string from the backend.
|
|
125
|
+
* @return {string} The date formatted as "DD MMM YYYY", or the original value.
|
|
126
|
+
* @memberof InterestResponsesComponent
|
|
127
|
+
*/
|
|
128
|
+
formatDateAnswer(value) {
|
|
129
|
+
const jsDate = new Date(value);
|
|
130
|
+
if (isNaN(jsDate.getTime())) {
|
|
131
|
+
return value;
|
|
132
|
+
}
|
|
133
|
+
const parsed = DateTime.fromJSDate(jsDate, { zone: 'utc' });
|
|
134
|
+
return parsed.isValid ? parsed.toFormat('dd MMM yyyy') : value;
|
|
135
|
+
}
|
|
110
136
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InterestResponsesComponent, deps: [{ token: i1.GroupsService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
111
137
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: InterestResponsesComponent, isStandalone: true, selector: "ieeesa-interest-responses", inputs: { componentData: "componentData" }, ngImport: i0, template: "<section class=\"ieeesa-interest-responses\">\r\n <p class=\"ieeesa-interest-responses__error ieeesa-body-md-16\" *ngIf=\"errorMessage\" role=\"alert\">{{ errorMessage }}</p>\r\n <dl *ngIf=\"submissionAnswers.length; else noAnswers\">\r\n <div class=\"ieeesa-interest-responses__answer\" *ngFor=\"let answer of submissionAnswers\">\r\n <dt class=\"ieeesa-body-md-16\">{{ answer.label }}</dt>\r\n <dd class=\"ieeesa-title-md-18\">{{ answer.value }}</dd>\r\n </div>\r\n </dl>\r\n <ng-template #noAnswers>\r\n <p class=\"ieeesa-interest-responses__empty ieeesa-body-md-16\" *ngIf=\"!errorMessage && !isLoading\">{{ texts?.responses?.emptyMessage }}</p>\r\n </ng-template>\r\n</section>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-modal-dialog.ieeesa-interest-responses-dialog .mat-mdc-dialog-surface{border-radius:8px;overflow:hidden}.ieeesa-modal-dialog.ieeesa-interest-responses-dialog .ieeesa-modal{position:relative;display:flex;flex-direction:column;max-height:90vh;padding:0}.ieeesa-modal-dialog.ieeesa-interest-responses-dialog .ieeesa-modal .ieeesa-modal-title{flex:0 0 auto;padding:16px 24px!important;border-bottom:1px solid #d7d6d6}.ieeesa-modal-dialog.ieeesa-interest-responses-dialog .ieeesa-modal .ieeesa-modal-title:before{display:none}.ieeesa-modal-dialog.ieeesa-interest-responses-dialog .ieeesa-modal .ieeesa-modal-title__sub-heading{margin-top:4px!important;padding-bottom:0;color:#63666a!important;font-size:1.125rem!important;line-height:24px!important;overflow-wrap:anywhere}.ieeesa-modal-dialog.ieeesa-interest-responses-dialog .ieeesa-modal .mat-mdc-dialog-content{flex:1 1 auto;min-height:0;max-height:none;overflow-y:auto;padding:0 24px 24px!important}.ieeesa-modal-dialog.ieeesa-interest-responses-dialog .ieeesa-modal__close-button{top:16px;right:24px}.ieeesa-interest-responses{color:#1c1b1f;letter-spacing:0}.ieeesa-interest-responses dl{margin:0}.ieeesa-interest-responses__answer{padding:16px 0;border-bottom:1px solid #d7d6d6}.ieeesa-interest-responses dt{margin:0 0 4px;color:#63666a!important}.ieeesa-interest-responses dd{margin:0;color:#1c1b1f!important;overflow-wrap:anywhere}.ieeesa-interest-responses__empty{margin:16px 0;color:#63666a!important}.ieeesa-interest-responses__error{margin:16px 0;color:#ba0c2f!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
112
138
|
}
|
|
@@ -116,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
116
142
|
}], ctorParameters: function () { return [{ type: i1.GroupsService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { componentData: [{
|
|
117
143
|
type: Input
|
|
118
144
|
}] } });
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJlc3QtcmVzcG9uc2VzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2NvbXBvbmVudHMvaW50ZXJlc3QtcmVzcG9uc2VzL2ludGVyZXN0LXJlc3BvbnNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL2ludGVyZXN0LXJlc3BvbnNlcy9pbnRlcmVzdC1yZXNwb25zZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxLQUFLLEVBR0wsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLFNBQVMsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsaUJBQWlCLEdBRWxCLE1BQU0sc0NBQXNDLENBQUM7QUFFOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFxQjFDOzs7Ozs7Ozs7R0FTRztBQVNILE1BQU0sT0FBTywwQkFBMEI7SUFpQnJDO0lBQ0UsMENBQTBDO0lBQ2xDLGFBQTRCO0lBQ3BDLDBDQUEwQztJQUNsQyxHQUFzQjtRQUZ0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUU1QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXBCaEM7Ozs7V0FJRztRQUNNLGtCQUFhLEdBQWlDLElBQUksQ0FBQztRQUU1RCw4REFBOEQ7UUFDOUQsY0FBUyxHQUFRLFNBQVMsQ0FBQztRQUMzQixVQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLENBQUM7UUFFM0Qsc0JBQWlCLEdBQXVCLEVBQUUsQ0FBQztRQUMzQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ0QsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFPN0MsQ0FBQztJQUVKOzs7T0FHRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssYUFBYTtRQUNuQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQztRQUNsRCxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLGFBQWE7YUFDZixvQkFBb0IsQ0FBQyxVQUFVLENBQUM7YUFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMzQixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzNCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssWUFBWSxDQUNsQixTQUFpQztRQUVqQyxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxQyxLQUFLLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixJQUFJLEVBQUU7WUFDNUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO1NBQ25DLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSyxZQUFZLENBQUMsUUFBOEI7UUFDakQsTUFBTSxLQUFLLEdBQUcsUUFBUSxFQUFFLFdBQVcsQ0FBQztRQUNwQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xELElBQUksUUFBUSxFQUFFLGlCQUFpQixLQUFLLGlCQUFpQixDQUFDLFFBQVEsSUFBSSxLQUFLLEVBQUU7WUFDdkUsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDOytHQWhHVSwwQkFBMEI7bUdBQTFCLDBCQUEwQixpSUN0RHZDLHdzQkFZQSw4eVVEcUNZLFlBQVk7OzRGQUtYLDBCQUEwQjtrQkFSdEMsU0FBUzsrQkFDRSwyQkFBMkIsY0FDekIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLGlCQUdSLGlCQUFpQixDQUFDLElBQUk7b0lBUTVCLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgY29uc3RhbnRzIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7XHJcbiAgSW50ZXJlc3RGaWVsZFR5cGUsXHJcbiAgSW50ZXJlc3RGb3JtUmVzcG9uc2UsXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL2ludGVyZXN0LXJlc3BvbnNlLm1vZGVsJztcclxuaW1wb3J0IHsgR3JvdXBzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dyb3Vwcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcblxyXG4vKipcclxuICogQSBzaW5nbGUgcXVlc3Rpb24vYW5zd2VyIHBhaXIgcmVuZGVyZWQgaW4gdGhlIGludGVyZXN0IHJlc3BvbnNlcyBsaXN0LiBCdWlsdFxyXG4gKiBmcm9tIGEgYmFja2VuZCB7QGxpbmsgSW50ZXJlc3RGb3JtUmVzcG9uc2V9OyB7QGNvZGUgdmFsdWV9IGlzIG5vcm1hbGl6ZWQgdG8gYVxyXG4gKiBkaXNwbGF5IHN0cmluZyAoQ0hFQ0tCT1ggYXJyYXlzIGFyZSBqb2luZWQpLlxyXG4gKi9cclxuaW50ZXJmYWNlIFN1Ym1pc3Npb25BbnN3ZXIge1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgdmFsdWU6IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIFBheWxvYWQgcGFzc2VkIGludG8ge0BsaW5rIEludGVyZXN0UmVzcG9uc2VzQ29tcG9uZW50fSBieSB0aGUgaG9zdFxyXG4gKiB7QGxpbmsgTW9kYWxDb21wb25lbnR9IHZpYSB0aGUgZHluYW1pYy1pbnB1dCBwYXR0ZXJuLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBJbnRlcmVzdFJlc3BvbnNlc0RhdGEge1xyXG4gIC8qKiBUaGUgaW50ZXJlc3QgcmVjb3JkIHdob3NlIHN0b3JlZCByZXNwb25zZXMgYXJlIHNob3duLiAqL1xyXG4gIGludGVyZXN0SWQ6IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIFwiVmlldyBSZXNwb25zZXNcIiBjb250ZW50IG9mIHRoZSBSb3N0ZXIgTWFuYWdlbWVudCBcIkludGVyZXN0ZWQgUm9zdGVyc1wiIHRhYlxyXG4gKiAoU1AzTS00MjgpLiBSZW5kZXJlZCBpbnNpZGUgdGhlIHNoYXJlZCB7QGxpbmsgTW9kYWxDb21wb25lbnR9ICh3aGljaCBzdXBwbGllc1xyXG4gKiB0aGUgdGl0bGUgcm93IGFuZCBYIGNsb3NlKSwgaXQgbGlzdHMgYSByZXF1ZXN0ZXIncyBzdWJtaXR0ZWQgaW50ZXJlc3QtZm9ybVxyXG4gKiBhbnN3ZXJzIGFzIGxhYmVsL3ZhbHVlIHBhaXJzLiBSZXNwb25zZXMgYXJlIGxvYWRlZCBvbiBpbml0IGZyb21cclxuICoge0BsaW5rIEdyb3Vwc1NlcnZpY2UuZ2V0SW50ZXJlc3RSZXNwb25zZXN9IHVzaW5nIHRoZSBpbnRlcmVzdCBpZCBzdXBwbGllZCBieVxyXG4gKiB0aGUgaG9zdCBtb2RhbC4gQWxsIGRpc3BsYXkgdGV4dCBpcyBzb3VyY2VkIGZyb20gY29uc3RhbnRzLmpzb24uXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIEludGVyZXN0UmVzcG9uc2VzQ29tcG9uZW50XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2llZWVzYS1pbnRlcmVzdC1yZXNwb25zZXMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ludGVyZXN0LXJlc3BvbnNlcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW50ZXJlc3QtcmVzcG9uc2VzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEludGVyZXN0UmVzcG9uc2VzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIC8qKlxyXG4gICAqIERhdGEgc3VwcGxpZWQgYnkgdGhlIGhvc3Qge0BsaW5rIE1vZGFsQ29tcG9uZW50fSB2aWEgdGhlIGR5bmFtaWMtaW5wdXRcclxuICAgKiBwYXR0ZXJuIChgZGF0YUlucHV0TmFtZTogJ2NvbXBvbmVudERhdGEnYCk6IGNhcnJpZXMgdGhlIGludGVyZXN0IGlkIHdob3NlXHJcbiAgICogcmVzcG9uc2VzIGFyZSBsb2FkZWQuXHJcbiAgICovXHJcbiAgQElucHV0KCkgY29tcG9uZW50RGF0YTogSW50ZXJlc3RSZXNwb25zZXNEYXRhIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBjb25zdGFudHM7XHJcbiAgdGV4dHMgPSB0aGlzLmNvbnN0YW50cz8ucm9zdGVySW50ZXJlc3RzPy5pbnRlcmVzdGVkUm9zdGVycztcclxuXHJcbiAgc3VibWlzc2lvbkFuc3dlcnM6IFN1Ym1pc3Npb25BbnN3ZXJbXSA9IFtdO1xyXG4gIGlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIGVycm9yTWVzc2FnZSA9ICcnO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBncm91cHNTZXJ2aWNlOiBHcm91cHNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWRzIHRoZSBpbnRlcmVzdC1mb3JtIHJlc3BvbnNlcyBmb3IgdGhlIHN1cHBsaWVkIGludGVyZXN0IGlkIG9uIGluaXQuXHJcbiAgICogQG1lbWJlcm9mIEludGVyZXN0UmVzcG9uc2VzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRSZXNwb25zZXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIGFuZCBtYXBzIHRoZSBpbnRlcmVzdC1mb3JtIHJlc3BvbnNlcyBpbnRvIGRpc3BsYXlhYmxlXHJcbiAgICogcXVlc3Rpb24vYW5zd2VyIHBhaXJzLiBGYWlsdXJlcyBzdXJmYWNlIGEgdXNlci1mYWNpbmcgZXJyb3IgbWVzc2FnZSBhbmQgYXJlXHJcbiAgICogZGVsZWdhdGVkIHRvIEdyb3Vwc1NlcnZpY2UgZm9yIGFsZXJ0aW5nLCBtaXJyb3JpbmcgdGhlIHBsYXRmb3JtIHBhdHRlcm4uXHJcbiAgICogQG1lbWJlcm9mIEludGVyZXN0UmVzcG9uc2VzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsb2FkUmVzcG9uc2VzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW50ZXJlc3RJZCA9IHRoaXMuY29tcG9uZW50RGF0YT8uaW50ZXJlc3RJZDtcclxuICAgIGlmICghaW50ZXJlc3RJZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlXHJcbiAgICAgIC5nZXRJbnRlcmVzdFJlc3BvbnNlcyhpbnRlcmVzdElkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZXMpID0+IHtcclxuICAgICAgICAgIHRoaXMuc3VibWlzc2lvbkFuc3dlcnMgPSB0aGlzLm1hcFJlc3BvbnNlcyhyZXNwb25zZXMpO1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMudGV4dHM/LmVycm9yTWVzc2FnZTtcclxuICAgICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZS5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWFwcyBiYWNrZW5kIHJlc3BvbnNlcyB0byBsYWJlbC92YWx1ZSBwYWlycywgam9pbmluZyBtdWx0aS1zZWxlY3RcclxuICAgKiAoQ0hFQ0tCT1gpIGFuc3dlcnMgYW5kIG5vcm1hbGl6aW5nIG1pc3NpbmcgdmFsdWVzIHRvIGFuIGVtcHR5IHN0cmluZy5cclxuICAgKiBAcGFyYW0ge0ludGVyZXN0Rm9ybVJlc3BvbnNlW119IHJlc3BvbnNlc1xyXG4gICAqIEByZXR1cm4ge1N1Ym1pc3Npb25BbnN3ZXJbXX1cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RSZXNwb25zZXNDb21wb25lbnRcclxuICAgKi9cclxuICBwcml2YXRlIG1hcFJlc3BvbnNlcyhcclxuICAgIHJlc3BvbnNlczogSW50ZXJlc3RGb3JtUmVzcG9uc2VbXVxyXG4gICk6IFN1Ym1pc3Npb25BbnN3ZXJbXSB7XHJcbiAgICByZXR1cm4gKHJlc3BvbnNlcyA/PyBbXSkubWFwKChyZXNwb25zZSkgPT4gKHtcclxuICAgICAgbGFiZWw6IHJlc3BvbnNlPy5xdWVzdGlvbkxhYmVsU25hcHNob3QgPz8gJycsXHJcbiAgICAgIHZhbHVlOiB0aGlzLmZvcm1hdEFuc3dlcihyZXNwb25zZSksXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOb3JtYWxpemVzIGFuIGFuc3dlciB2YWx1ZSBmb3IgZGlzcGxheS4gQ0hFQ0tCT1ggYW5zd2VycyBhcnJpdmUgYXMgYW4gYXJyYXlcclxuICAgKiBhbmQgYXJlIGpvaW5lZCB3aXRoIGNvbW1hczsgYWxsIG90aGVyIGZpZWxkIHR5cGVzIHJlbmRlciB0aGVpciBzdHJpbmdcclxuICAgKiB2YWx1ZSBhcy1pcy5cclxuICAgKiBAcGFyYW0ge0ludGVyZXN0Rm9ybVJlc3BvbnNlfSByZXNwb25zZVxyXG4gICAqIEByZXR1cm4ge3N0cmluZ31cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RSZXNwb25zZXNDb21wb25lbnRcclxuICAgKi9cclxuICBwcml2YXRlIGZvcm1hdEFuc3dlcihyZXNwb25zZTogSW50ZXJlc3RGb3JtUmVzcG9uc2UpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdmFsdWUgPSByZXNwb25zZT8uYW5zd2VyVmFsdWU7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZS5qb2luKCcsICcpO1xyXG4gICAgaWYgKHJlc3BvbnNlPy5maWVsZFR5cGVTbmFwc2hvdCA9PT0gSW50ZXJlc3RGaWVsZFR5cGUuQ0hFQ0tCT1ggJiYgdmFsdWUpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlID8/ICcnO1xyXG4gIH1cclxufVxyXG4iLCI8c2VjdGlvbiBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1yZXNwb25zZXNcIj5cclxuICA8cCBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1yZXNwb25zZXNfX2Vycm9yIGllZWVzYS1ib2R5LW1kLTE2XCIgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIiByb2xlPVwiYWxlcnRcIj57eyBlcnJvck1lc3NhZ2UgfX08L3A+XHJcbiAgPGRsICpuZ0lmPVwic3VibWlzc2lvbkFuc3dlcnMubGVuZ3RoOyBlbHNlIG5vQW5zd2Vyc1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImllZWVzYS1pbnRlcmVzdC1yZXNwb25zZXNfX2Fuc3dlclwiICpuZ0Zvcj1cImxldCBhbnN3ZXIgb2Ygc3VibWlzc2lvbkFuc3dlcnNcIj5cclxuICAgICAgPGR0IGNsYXNzPVwiaWVlZXNhLWJvZHktbWQtMTZcIj57eyBhbnN3ZXIubGFiZWwgfX08L2R0PlxyXG4gICAgICA8ZGQgY2xhc3M9XCJpZWVlc2EtdGl0bGUtbWQtMThcIj57eyBhbnN3ZXIudmFsdWUgfX08L2RkPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kbD5cclxuICA8bmctdGVtcGxhdGUgI25vQW5zd2Vycz5cclxuICAgIDxwIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LXJlc3BvbnNlc19fZW1wdHkgaWVlZXNhLWJvZHktbWQtMTZcIiAqbmdJZj1cIiFlcnJvck1lc3NhZ2UgJiYgIWlzTG9hZGluZ1wiPnt7IHRleHRzPy5yZXNwb25zZXM/LmVtcHR5TWVzc2FnZSB9fTwvcD5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L3NlY3Rpb24+XHJcbiJdfQ==
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJlc3QtcmVzcG9uc2VzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2NvbXBvbmVudHMvaW50ZXJlc3QtcmVzcG9uc2VzL2ludGVyZXN0LXJlc3BvbnNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL2ludGVyZXN0LXJlc3BvbnNlcy9pbnRlcmVzdC1yZXNwb25zZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxLQUFLLEVBR0wsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pDLE9BQU8sU0FBUyxNQUFNLDZCQUE2QixDQUFDO0FBQ3BELE9BQU8sRUFDTCxpQkFBaUIsR0FFbEIsTUFBTSxzQ0FBc0MsQ0FBQztBQUU5QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQXFCMUM7Ozs7Ozs7OztHQVNHO0FBU0gsTUFBTSxPQUFPLDBCQUEwQjtJQWlCckM7SUFDRSwwQ0FBMEM7SUFDbEMsYUFBNEI7SUFDcEMsMENBQTBDO0lBQ2xDLEdBQXNCO1FBRnRCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBRTVCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBcEJoQzs7OztXQUlHO1FBQ00sa0JBQWEsR0FBaUMsSUFBSSxDQUFDO1FBRTVELDhEQUE4RDtRQUM5RCxjQUFTLEdBQVEsU0FBUyxDQUFDO1FBQzNCLFVBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQztRQUUzRCxzQkFB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SUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUU7WUFDM0IsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDNUQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDakUsQ0FBQzsrR0ExSFUsMEJBQTBCO21HQUExQiwwQkFBMEIsaUlDdkR2Qyx3c0JBWUEsOHlVRHNDWSxZQUFZOzs0RkFLWCwwQkFBMEI7a0JBUnRDLFNBQVM7K0JBQ0UsMkJBQTJCLGNBQ3pCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxpQkFHUixpQkFBaUIsQ0FBQyxJQUFJO29JQVE1QixhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbic7XHJcbmltcG9ydCBjb25zdGFudHMgZnJvbSAnLi4vLi4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuaW1wb3J0IHtcclxuICBJbnRlcmVzdEZpZWxkVHlwZSxcclxuICBJbnRlcmVzdEZvcm1SZXNwb25zZSxcclxufSBmcm9tICcuLi8uLi9tb2RlbHMvaW50ZXJlc3QtcmVzcG9uc2UubW9kZWwnO1xyXG5pbXBvcnQgeyBHcm91cHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ3JvdXBzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuXHJcbi8qKlxyXG4gKiBBIHNpbmdsZSBxdWVzdGlvbi9hbnN3ZXIgcGFpciByZW5kZXJlZCBpbiB0aGUgaW50ZXJlc3QgcmVzcG9uc2VzIGxpc3QuIEJ1aWx0XHJcbiAqIGZyb20gYSBiYWNrZW5kIHtAbGluayBJbnRlcmVzdEZvcm1SZXNwb25zZX07IHtAY29kZSB2YWx1ZX0gaXMgbm9ybWFsaXplZCB0byBhXHJcbiAqIGRpc3BsYXkgc3RyaW5nIChDSEVDS0JPWCBhcnJheXMgYXJlIGpvaW5lZCkuXHJcbiAqL1xyXG5pbnRlcmZhY2UgU3VibWlzc2lvbkFuc3dlciB7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICB2YWx1ZTogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogUGF5bG9hZCBwYXNzZWQgaW50byB7QGxpbmsgSW50ZXJlc3RSZXNwb25zZXNDb21wb25lbnR9IGJ5IHRoZSBob3N0XHJcbiAqIHtAbGluayBNb2RhbENvbXBvbmVudH0gdmlhIHRoZSBkeW5hbWljLWlucHV0IHBhdHRlcm4uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEludGVyZXN0UmVzcG9uc2VzRGF0YSB7XHJcbiAgLyoqIFRoZSBpbnRlcmVzdCByZWNvcmQgd2hvc2Ugc3RvcmVkIHJlc3BvbnNlcyBhcmUgc2hvd24uICovXHJcbiAgaW50ZXJlc3RJZDogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogXCJWaWV3IFJlc3BvbnNlc1wiIGNvbnRlbnQgb2YgdGhlIFJvc3RlciBNYW5hZ2VtZW50IFwiSW50ZXJlc3RlZCBSb3N0ZXJzXCIgdGFiXHJcbiAqIChTUDNNLTQyOCkuIFJlbmRlcmVkIGluc2lkZSB0aGUgc2hhcmVkIHtAbGluayBNb2RhbENvbXBvbmVudH0gKHdoaWNoIHN1cHBsaWVzXHJcbiAqIHRoZSB0aXRsZSByb3cgYW5kIFggY2xvc2UpLCBpdCBsaXN0cyBhIHJlcXVlc3RlcidzIHN1Ym1pdHRlZCBpbnRlcmVzdC1mb3JtXHJcbiAqIGFuc3dlcnMgYXMgbGFiZWwvdmFsdWUgcGFpcnMuIFJlc3BvbnNlcyBhcmUgbG9hZGVkIG9uIGluaXQgZnJvbVxyXG4gKiB7QGxpbmsgR3JvdXBzU2VydmljZS5nZXRJbnRlcmVzdFJlc3BvbnNlc30gdXNpbmcgdGhlIGludGVyZXN0IGlkIHN1cHBsaWVkIGJ5XHJcbiAqIHRoZSBob3N0IG1vZGFsLiBBbGwgZGlzcGxheSB0ZXh0IGlzIHNvdXJjZWQgZnJvbSBjb25zdGFudHMuanNvbi5cclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgSW50ZXJlc3RSZXNwb25zZXNDb21wb25lbnRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWludGVyZXN0LXJlc3BvbnNlcycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW50ZXJlc3QtcmVzcG9uc2VzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnRlcmVzdC1yZXNwb25zZXMuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW50ZXJlc3RSZXNwb25zZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgLyoqXHJcbiAgICogRGF0YSBzdXBwbGllZCBieSB0aGUgaG9zdCB7QGxpbmsgTW9kYWxDb21wb25lbnR9IHZpYSB0aGUgZHluYW1pYy1pbnB1dFxyXG4gICAqIHBhdHRlcm4gKGBkYXRhSW5wdXROYW1lOiAnY29tcG9uZW50RGF0YSdgKTogY2FycmllcyB0aGUgaW50ZXJlc3QgaWQgd2hvc2VcclxuICAgKiByZXNwb25zZXMgYXJlIGxvYWRlZC5cclxuICAgKi9cclxuICBASW5wdXQoKSBjb21wb25lbnREYXRhOiBJbnRlcmVzdFJlc3BvbnNlc0RhdGEgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjb25zdGFudHM6IGFueSA9IGNvbnN0YW50cztcclxuICB0ZXh0cyA9IHRoaXMuY29uc3RhbnRzPy5yb3N0ZXJJbnRlcmVzdHM/LmludGVyZXN0ZWRSb3N0ZXJzO1xyXG5cclxuICBzdWJtaXNzaW9uQW5zd2VyczogU3VibWlzc2lvbkFuc3dlcltdID0gW107XHJcbiAgaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgZXJyb3JNZXNzYWdlID0gJyc7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGdyb3Vwc1NlcnZpY2U6IEdyb3Vwc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogTG9hZHMgdGhlIGludGVyZXN0LWZvcm0gcmVzcG9uc2VzIGZvciB0aGUgc3VwcGxpZWQgaW50ZXJlc3QgaWQgb24gaW5pdC5cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RSZXNwb25zZXNDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZFJlc3BvbnNlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgYW5kIG1hcHMgdGhlIGludGVyZXN0LWZvcm0gcmVzcG9uc2VzIGludG8gZGlzcGxheWFibGVcclxuICAgKiBxdWVzdGlvbi9hbnN3ZXIgcGFpcnMuIEZhaWx1cmVzIHN1cmZhY2UgYSB1c2VyLWZhY2luZyBlcnJvciBtZXNzYWdlIGFuZCBhcmVcclxuICAgKiBkZWxlZ2F0ZWQgdG8gR3JvdXBzU2VydmljZSBmb3IgYWxlcnRpbmcsIG1pcnJvcmluZyB0aGUgcGxhdGZvcm0gcGF0dGVybi5cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RSZXNwb25zZXNDb21wb25lbnRcclxuICAgKi9cclxuICBwcml2YXRlIGxvYWRSZXNwb25zZXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbnRlcmVzdElkID0gdGhpcy5jb21wb25lbnREYXRhPy5pbnRlcmVzdElkO1xyXG4gICAgaWYgKCFpbnRlcmVzdElkKSByZXR1cm47XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgLmdldEludGVyZXN0UmVzcG9uc2VzKGludGVyZXN0SWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zdWJtaXNzaW9uQW5zd2VycyA9IHRoaXMubWFwUmVzcG9uc2VzKHJlc3BvbnNlcyk7XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy50ZXh0cz8uZXJyb3JNZXNzYWdlO1xyXG4gICAgICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNYXBzIGJhY2tlbmQgcmVzcG9uc2VzIHRvIGxhYmVsL3ZhbHVlIHBhaXJzLCBqb2luaW5nIG11bHRpLXNlbGVjdFxyXG4gICAqIChDSEVDS0JPWCkgYW5zd2VycyBhbmQgbm9ybWFsaXppbmcgbWlzc2luZyB2YWx1ZXMgdG8gYW4gZW1wdHkgc3RyaW5nLlxyXG4gICAqIEBwYXJhbSB7SW50ZXJlc3RGb3JtUmVzcG9uc2VbXX0gcmVzcG9uc2VzXHJcbiAgICogQHJldHVybiB7U3VibWlzc2lvbkFuc3dlcltdfVxyXG4gICAqIEBtZW1iZXJvZiBJbnRlcmVzdFJlc3BvbnNlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgbWFwUmVzcG9uc2VzKFxyXG4gICAgcmVzcG9uc2VzOiBJbnRlcmVzdEZvcm1SZXNwb25zZVtdXHJcbiAgKTogU3VibWlzc2lvbkFuc3dlcltdIHtcclxuICAgIHJldHVybiAocmVzcG9uc2VzID8/IFtdKS5tYXAoKHJlc3BvbnNlKSA9PiAoe1xyXG4gICAgICBsYWJlbDogcmVzcG9uc2U/LnF1ZXN0aW9uTGFiZWxTbmFwc2hvdCA/PyAnJyxcclxuICAgICAgdmFsdWU6IHRoaXMuZm9ybWF0QW5zd2VyKHJlc3BvbnNlKSxcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5vcm1hbGl6ZXMgYW4gYW5zd2VyIHZhbHVlIGZvciBkaXNwbGF5LiBDSEVDS0JPWCBhbnN3ZXJzIGFycml2ZSBhcyBhbiBhcnJheVxyXG4gICAqIGFuZCBhcmUgam9pbmVkIHdpdGggY29tbWFzOyBhbGwgb3RoZXIgZmllbGQgdHlwZXMgcmVuZGVyIHRoZWlyIHN0cmluZ1xyXG4gICAqIHZhbHVlIGFzLWlzLlxyXG4gICAqIEBwYXJhbSB7SW50ZXJlc3RGb3JtUmVzcG9uc2V9IHJlc3BvbnNlXHJcbiAgICogQHJldHVybiB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBJbnRlcmVzdFJlc3BvbnNlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZm9ybWF0QW5zd2VyKHJlc3BvbnNlOiBJbnRlcmVzdEZvcm1SZXNwb25zZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHJlc3BvbnNlPy5hbnN3ZXJWYWx1ZTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLmpvaW4oJywgJyk7XHJcbiAgICAvLyBEQVRFIGFuc3dlcnMgYXJyaXZlIGFzIGEgcmF3IEpTIERhdGUgc3RyaW5nIChlLmcuXHJcbiAgICAvLyBcIlRodSBPY3QgMjkgMjAyNiAwMDowMDowMCBHTVQrMDAwMFwiKS4gRGlzcGxheSB0aGUgZGF0ZSBwb3J0aW9uIG9ubHksIGluXHJcbiAgICAvLyB0aGUgYXBwJ3Mgc3RhbmRhcmQgZGlzcGxheSBmb3JtYXQgKEREIE1NTSBZWVlZLCBlLmcuIFwiMjkgT2N0IDIwMjZcIiksXHJcbiAgICAvLyBkcm9wcGluZyB0aGUgMDA6MDA6MDAgdGltZSBhbmQgdGltZXpvbmUuIEZhbGxzIGJhY2sgdG8gdGhlIHJhdyB2YWx1ZSBpZlxyXG4gICAgLy8gaXQgY2Fubm90IGJlIHBhcnNlZCwgc28gYSBub24tc3RhbmRhcmQgc3RyaW5nIGlzIG5ldmVyIHNpbGVudGx5IGJsYW5rZWQuXHJcbiAgICBpZiAocmVzcG9uc2U/LmZpZWxkVHlwZVNuYXBzaG90ID09PSBJbnRlcmVzdEZpZWxkVHlwZS5EQVRFICYmIHZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZvcm1hdERhdGVBbnN3ZXIodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKHJlc3BvbnNlPy5maWVsZFR5cGVTbmFwc2hvdCA9PT0gSW50ZXJlc3RGaWVsZFR5cGUuQ0hFQ0tCT1ggJiYgdmFsdWUpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybWF0cyBhIERBVEUgYW5zd2VyIHZhbHVlIHRvIHRoZSBhcHBsaWNhdGlvbidzIGRpc3BsYXkgZGF0ZSBmb3JtYXRcclxuICAgKiAoREQgTU1NIFlZWVkpLCBkcm9wcGluZyB0aGUgdGltZS90aW1lem9uZS4gVGhlIEJFIHNlbmRzIGEgSlMgRGF0ZSBzdHJpbmdcclxuICAgKiBzdWNoIGFzIFwiVGh1IE9jdCAyOSAyMDI2IDAwOjAwOjAwIEdNVCswMDAwXCI7IHRoaXMgcGFyc2VzIGl0IGFzIGEgbmF0aXZlXHJcbiAgICogZGF0ZSBhbmQgcmVmb3JtYXRzIGl0LiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzdHJpbmcgd2hlbiBpdCBjYW5ub3QgYmUgcGFyc2VkLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIFRoZSByYXcgREFURSBhbnN3ZXIgc3RyaW5nIGZyb20gdGhlIGJhY2tlbmQuXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgZGF0ZSBmb3JtYXR0ZWQgYXMgXCJERCBNTU0gWVlZWVwiLCBvciB0aGUgb3JpZ2luYWwgdmFsdWUuXHJcbiAgICogQG1lbWJlcm9mIEludGVyZXN0UmVzcG9uc2VzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBmb3JtYXREYXRlQW5zd2VyKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QganNEYXRlID0gbmV3IERhdGUodmFsdWUpO1xyXG4gICAgaWYgKGlzTmFOKGpzRGF0ZS5nZXRUaW1lKCkpKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIGNvbnN0IHBhcnNlZCA9IERhdGVUaW1lLmZyb21KU0RhdGUoanNEYXRlLCB7IHpvbmU6ICd1dGMnIH0pO1xyXG4gICAgcmV0dXJuIHBhcnNlZC5pc1ZhbGlkID8gcGFyc2VkLnRvRm9ybWF0KCdkZCBNTU0geXl5eScpIDogdmFsdWU7XHJcbiAgfVxyXG59XHJcbiIsIjxzZWN0aW9uIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LXJlc3BvbnNlc1wiPlxyXG4gIDxwIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LXJlc3BvbnNlc19fZXJyb3IgaWVlZXNhLWJvZHktbWQtMTZcIiAqbmdJZj1cImVycm9yTWVzc2FnZVwiIHJvbGU9XCJhbGVydFwiPnt7IGVycm9yTWVzc2FnZSB9fTwvcD5cclxuICA8ZGwgKm5nSWY9XCJzdWJtaXNzaW9uQW5zd2Vycy5sZW5ndGg7IGVsc2Ugbm9BbnN3ZXJzXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaWVlZXNhLWludGVyZXN0LXJlc3BvbnNlc19fYW5zd2VyXCIgKm5nRm9yPVwibGV0IGFuc3dlciBvZiBzdWJtaXNzaW9uQW5zd2Vyc1wiPlxyXG4gICAgICA8ZHQgY2xhc3M9XCJpZWVlc2EtYm9keS1tZC0xNlwiPnt7IGFuc3dlci5sYWJlbCB9fTwvZHQ+XHJcbiAgICAgIDxkZCBjbGFzcz1cImllZWVzYS10aXRsZS1tZC0xOFwiPnt7IGFuc3dlci52YWx1ZSB9fTwvZGQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L2RsPlxyXG4gIDxuZy10ZW1wbGF0ZSAjbm9BbnN3ZXJzPlxyXG4gICAgPHAgY2xhc3M9XCJpZWVlc2EtaW50ZXJlc3QtcmVzcG9uc2VzX19lbXB0eSBpZWVlc2EtYm9keS1tZC0xNlwiICpuZ0lmPVwiIWVycm9yTWVzc2FnZSAmJiAhaXNMb2FkaW5nXCI+e3sgdGV4dHM/LnJlc3BvbnNlcz8uZW1wdHlNZXNzYWdlIH19PC9wPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvc2VjdGlvbj5cclxuIl19
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Component, Inject, Optional, ViewEncapsulation, } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
4
|
+
import { DateTime } from 'luxon';
|
|
4
5
|
import { Subject, takeUntil } from 'rxjs';
|
|
5
6
|
import { ModalType } from '@ieeesa-npm/models';
|
|
6
7
|
import { DataTableComponent, ModalComponent, TableColumnType, } from '@ieeesa-npm/presentation';
|
|
@@ -195,10 +196,25 @@ export class InterestedRostersComponent {
|
|
|
195
196
|
formatSubmittedOn(submittedOn) {
|
|
196
197
|
if (!submittedOn)
|
|
197
198
|
return '';
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
199
|
+
// Parse with EXPLICIT formats rather than `new Date(...)`. The backend sends
|
|
200
|
+
// the date as dd/MM/yyyy (e.g. "27/10/2026"); `new Date("27/10/2026")` is
|
|
201
|
+
// Invalid in JS (it expects MM/DD/YYYY, and month 27 is out of range), which
|
|
202
|
+
// previously forced the fallback and left the value unformatted. Try the
|
|
203
|
+
// dd/MM/yyyy form first, then ISO, then a native-Date last resort, then
|
|
204
|
+
// reformat to the app's standard display format (DD MMM YYYY → "27 Oct 2026").
|
|
205
|
+
let parsed = DateTime.fromFormat(submittedOn, 'dd/MM/yyyy', {
|
|
206
|
+
zone: 'utc',
|
|
207
|
+
});
|
|
208
|
+
if (!parsed.isValid) {
|
|
209
|
+
parsed = DateTime.fromISO(submittedOn, { zone: 'utc' });
|
|
210
|
+
}
|
|
211
|
+
if (!parsed.isValid) {
|
|
212
|
+
const jsDate = new Date(submittedOn);
|
|
213
|
+
if (!isNaN(jsDate.getTime())) {
|
|
214
|
+
parsed = DateTime.fromJSDate(jsDate, { zone: 'utc' });
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return parsed.isValid ? parsed.toFormat('dd MMM yyyy') : submittedOn;
|
|
202
218
|
}
|
|
203
219
|
/**
|
|
204
220
|
* Loads the Member Level dropdown options from the roles API
|
|
@@ -380,4 +396,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
380
396
|
type: Inject,
|
|
381
397
|
args: [MAT_DIALOG_DATA]
|
|
382
398
|
}] }]; } });
|
|
383
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJlc3RlZC1yb3N0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2NvbXBvbmVudHMvaW50ZXJlc3RlZC1yb3N0ZXJzL2ludGVyZXN0ZWQtcm9zdGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL2ludGVyZXN0ZWQtcm9zdGVycy9pbnRlcmVzdGVkLXJvc3RlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxNQUFNLEVBR04sUUFBUSxFQUNSLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBYSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd2RixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLG9CQUFvQixDQUFDO0FBQzdELE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsY0FBYyxFQUlkLGVBQWUsR0FDaEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLFNBQVMsTUFBTSw2QkFBNkIsQ0FBQztBQVNwRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7OztBQVFoRzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQVNILE1BQU0sT0FBTywwQkFBMEI7SUE0Q3JDO0lBQ0UsMENBQTBDO0lBQ2xDLE1BQWlCO0lBQ3pCLDBDQUEwQztJQUNsQyxhQUE0QjtJQUNwQywwQ0FBMEM7SUFDbEMsR0FBc0I7SUFDOUIsMENBQTBDO0lBQ0UsS0FBdUI7UUFOM0QsV0FBTSxH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ZSxFQUFFLElBQUksQ0FBQyxrQkFBa0I7Z0JBQ3hDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsc0JBQXNCO2dCQUN2RCw4REFBOEQ7Z0JBQzlELGNBQWMsRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLFdBQVcsQ0FBQztvQkFDL0QsSUFBSTthQUNQO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsU0FBUyxFQUFFLE1BQU07Z0JBQ2pCLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSTtnQkFDdEIsVUFBVSxFQUFFLGVBQWUsQ0FBQyxJQUFJO2dCQUNoQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTO2dCQUNyQyxTQUFTLEVBQUUsQ0FBQyxHQUFxQixFQUFFLEVBQUUsQ0FDbkMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLG1CQUFtQixJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFO2FBQ2pFO1NBQ0YsQ0FBQztJQUNKLENBQUM7K0dBeFdVLDBCQUEwQix5R0FvRGYsZUFBZTttR0FwRDFCLDBCQUEwQixxRkNwRXZDLHkyQkFrQkEsbXpDRDZDWSxZQUFZLCtCQUFFLGtCQUFrQiw0aURBQWtCLGVBQWU7OzRGQUtoRSwwQkFBMEI7a0JBUnRDLFNBQVM7K0JBQ0UsMkJBQTJCLGNBQ3pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsZUFBZSxDQUFDLGlCQUc3RCxpQkFBaUIsQ0FBQyxJQUFJOzswQkFzRGxDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEluamVjdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZywgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgU29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTW9kYWxUeXBlLCBTZWxlY3RPcHRpb24gfSBmcm9tICdAaWVlZXNhLW5wbS9tb2RlbHMnO1xyXG5pbXBvcnQge1xyXG4gIERhdGFUYWJsZUNvbXBvbmVudCxcclxuICBNb2RhbENvbXBvbmVudCxcclxuICBQYWdpbmF0b3JDb25maWcsXHJcbiAgVGFibGVBY3Rpb25zLFxyXG4gIFRhYmxlQ29sdW1uU2NoZW1hLFxyXG4gIFRhYmxlQ29sdW1uVHlwZSxcclxufSBmcm9tICdAaWVlZXNhLW5wbS9wcmVzZW50YXRpb24nO1xyXG5pbXBvcnQgY29uc3RhbnRzIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IEdyb3VwSW5mbyB9IGZyb20gJy4uLy4uL21vZGVscy9ncm91cC1pbmZvLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBHcm91cEludGVyZXN0UmVzcG9uc2VWaWV3LFxyXG4gIEludGVyZXN0ZWRSb3N0ZXIsXHJcbiAgSW50ZXJlc3RlZFJvc3RlcnNSZXF1ZXN0UGF5bG9hZCxcclxuICBVcGRhdGVNZW1iZXJMZXZlbFBheWxvYWQsXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL2ludGVyZXN0LXJlc3BvbnNlLm1vZGVsJztcclxuaW1wb3J0IHsgR3JvdXBzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dyb3Vwcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW50ZXJlc3RSZXNwb25zZXNDb21wb25lbnQgfSBmcm9tICcuLi9pbnRlcmVzdC1yZXNwb25zZXMvaW50ZXJlc3QtcmVzcG9uc2VzLmNvbXBvbmVudCc7XHJcblxyXG4vLyBHcm91cHMgbWF5IGNvbXBpbGUgYWdhaW5zdCBwdWJsaXNoZWQgUHJlc2VudGF0aW9uIHR5cGVzIHdpdGhvdXQgdGhlIHJvdy1sYWJlbCBjYWxsYmFjay5cclxudHlwZSBJbnRlcmVzdGVkUm9zdGVyQ29sdW1uU2NoZW1hID0gVGFibGVDb2x1bW5TY2hlbWEgJiB7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgYXJpYUxhYmVsPzogKHJvdzogSW50ZXJlc3RlZFJvc3RlcikgPT4gc3RyaW5nO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFwiSW50ZXJlc3RlZCBSb3N0ZXJzXCIgdGFiIG9mIHRoZSBSb3N0ZXIgSW50ZXJlc3RzIGRpYWxvZyAoU1AzTS00MjgpLiBMaXN0cyB0aGVcclxuICogdXNlcnMgd2hvIGV4cHJlc3NlZCBpbnRlcmVzdCBpbiB0aGUgZ3JvdXAgYW5kIGxldHMgYSBHcm91cCBBZG1pbiByZXZpZXcgZWFjaFxyXG4gKiByZXF1ZXN0ZXIncyBzdWJtaXR0ZWQgcmVzcG9uc2VzIGFuZCBzZXQvb3ZlcnJpZGUgdGhlaXIgbWVtYmVyc2hpcCBsZXZlbCBmcm9tXHJcbiAqIHRoZSBSb3N0ZXIgTWFuYWdlbWVudCBzY3JlZW4uXHJcbiAqXHJcbiAqIFRoZSBsaXN0IGlzIHJlbmRlcmVkIHRocm91Z2ggdGhlIHNoYXJlZCB7QGxpbmsgRGF0YVRhYmxlQ29tcG9uZW50fTogdGhlXHJcbiAqIE5hbWUvRW1haWwvQWZmaWxpYXRpb25zL1N1Ym1pdHRlZCBPbiBjb2x1bW5zIGFyZSBwbGFpbiBURVhULCBNZW1iZXIgTGV2ZWwgaXNcclxuICogdGhlIHJldXNhYmxlIHRhYmxlJ3MgRFJPUERPV04gY29sdW1uIChhbiBpbmxpbmUge0Bjb2RlIGllZWVzYS1zZWxlY3R9KSBhbmRcclxuICogRm9ybSBpcyBhIExJTksgdGhhdCBvcGVucyB0aGUgXCJWaWV3IFJlc3BvbnNlc1wiIGRpYWxvZy4gVGhlIE1lbWJlciBMZXZlbFxyXG4gKiBvcHRpb25zIGFyZSBzb3VyY2VkIGZyb20gdGhlIHJvbGVzIEFQSVxyXG4gKiAoe0BsaW5rIEdyb3Vwc1NlcnZpY2UuZ2V0R3JvdXBUeXBlUm9sZXN9KSBmaWx0ZXJlZCB0byB0aGUgXCJNZW1iZXIgTGV2ZWxcIiByb2xlXHJcbiAqIHR5cGUuIEludGVyZXN0ZWQtcm9zdGVyIHJvd3MgYXJlIGxvYWRlZCBmcm9tXHJcbiAqIHtAbGluayBHcm91cHNTZXJ2aWNlLmdldEludGVyZXN0UmVzcG9uc2VzQnlHcm91cH0gYW5kIGVhY2ggcmVxdWVzdGVyJ3Mgc3RvcmVkXHJcbiAqIGZvcm0gcmVzcG9uc2VzIGFyZSBsb2FkZWQgb24gZGVtYW5kIGZyb21cclxuICoge0BsaW5rIEdyb3Vwc1NlcnZpY2UuZ2V0SW50ZXJlc3RSZXNwb25zZXN9IHVzaW5nIHRoZSByb3cncyBgaW50ZXJlc3RJZGAuIEFsbFxyXG4gKiBkaXNwbGF5IHRleHQgaXMgc291cmNlZCBmcm9tIGNvbnN0YW50cy5qc29uLlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBJbnRlcmVzdGVkUm9zdGVyc0NvbXBvbmVudFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtaW50ZXJlc3RlZC1yb3N0ZXJzJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERhdGFUYWJsZUNvbXBvbmVudCwgTW9kYWxDb21wb25lbnQsIE1hdERpYWxvZ01vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ludGVyZXN0ZWQtcm9zdGVycy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW50ZXJlc3RlZC1yb3N0ZXJzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEludGVyZXN0ZWRSb3N0ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBjb25zdGFudHM7XHJcbiAgdGV4dHMgPSB0aGlzLmNvbnN0YW50cz8ucm9zdGVySW50ZXJlc3RzPy5pbnRlcmVzdGVkUm9zdGVycztcclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1lbWJlci1sZXZlbCBkcm9wZG93biBvcHRpb25zLCBzb3VyY2VkIGZyb20gdGhlIHJvbGVzIEFQSVxyXG4gICogKHtAY29kZSBHRVQgL2dyb3Vwcy9jb25maWcvcm9sZXNCeUdyb3VwVHlwZS97Z3JvdXBUeXBlfX0pIGZpbHRlcmVkIHRvIHRoZSBcIk1lbWJlciBMZXZlbFwiIHJvbGUgdHlwZS5cclxuICAgKiBFYWNoIG9wdGlvbiBpcyB7QGNvZGUgeyBpZDogcm9sZUlkLCBuYW1lOiByb2xlTmFtZSB9fS5cclxuICAgKi9cclxuICBtZW1iZXJMZXZlbE9wdGlvbnM6IFNlbGVjdE9wdGlvbltdID0gW107XHJcblxyXG4gIHJvc3RlcnM6IEludGVyZXN0ZWRSb3N0ZXJbXSA9IFtdO1xyXG4gIHRhYmxlRGF0YTogSW50ZXJlc3RlZFJvc3RlcltdID0gW107XHJcbiAgY29sdW1uU2NoZW1hOiBJbnRlcmVzdGVkUm9zdGVyQ29sdW1uU2NoZW1hW10gPSBbXTtcclxuXHJcbiAgLyoqIFRvdGFsIGludGVyZXN0ZWQtcm9zdGVyIHJvd3MgcmVwb3J0ZWQgYnkgdGhlIGJhY2tlbmQgKGZvciBwYWdpbmcvY291bnRzKS4gKi9cclxuICB0b3RhbFJlY29yZHMgPSAwO1xyXG5cclxuICBwYWdpbmF0b3JDb25maWc6IFBhZ2luYXRvckNvbmZpZyA9IHtcclxuICAgIHJlY29yZHNQZXJQYWdlOiB0aGlzLnRleHRzPy5wYWdlU2l6ZU9wdGlvbnM/LlswXSxcclxuICAgIHBhZ2VTaXplT3B0aW9uczogdGhpcy50ZXh0cz8ucGFnZVNpemVPcHRpb25zLFxyXG4gICAgdG90YWxSZWNvcmRzOiAwLFxyXG4gIH07XHJcbiAgcGFnZUluZGV4ID0gMDtcclxuICBkZWZhdWx0U29ydGVkQ29sdW1uID0gJ3N1Ym1pdHRlZE9uJztcclxuICBkZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvbjogU29ydFsnZGlyZWN0aW9uJ10gPSAnZGVzYyc7XHJcbiAgcHJpdmF0ZSBzb3J0ZWRCeSA9IHRoaXMuZGVmYXVsdFNvcnRlZENvbHVtbjtcclxuICBwcml2YXRlIHNvcnRlZE9yZGVyQnkgPSB0aGlzLmRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uO1xyXG5cclxuICAvKiogUmVhZC1vbmx5IHRhYmxlIOKAlCBubyBzZWFyY2ggLyBmaWx0ZXIgLyBhZGQgLyBlZGl0IC8gZGVsZXRlIGFjdGlvbnMuICovXHJcbiAgdGFibGVBY3Rpb25zOiBUYWJsZUFjdGlvbnMgPSB7XHJcbiAgICBpc1BhZ2luYXRpb25OZWVkZWQ6IHRydWUsXHJcbiAgICBpc1NlYXJjaE5lZWRlZDogZmFsc2UsXHJcbiAgICBpc0ZpbHRlck5lZWRlZDogZmFsc2UsXHJcbiAgICBpc0FkZE5lZWRlZDogZmFsc2UsXHJcbiAgICBpc0VkaXROZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNEZWxldGVOZWVkZWQ6IGZhbHNlLFxyXG4gIH07XHJcblxyXG4gIGlzTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBncm91cHNTZXJ2aWNlOiBHcm91cHNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZ3JvdXA6IEdyb3VwSW5mbyB8IG51bGxcclxuICApIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJ1aWxkcyB0aGUgcmV1c2FibGUtdGFibGUgY29sdW1uIHNjaGVtYSBhbmQgbG9hZHMgdGhlIGludGVyZXN0ZWQtcm9zdGVyXHJcbiAgICogbGlzdCBmb3IgdGhlIGN1cnJlbnQgZ3JvdXAgZnJvbSB0aGUgYmFja2VuZC5cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RlZFJvc3RlcnNDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZE1lbWJlckxldmVsT3B0aW9ucygpO1xyXG4gICAgdGhpcy5idWlsZENvbHVtblNjaGVtYSgpO1xyXG4gICAgdGhpcy5sb2FkSW50ZXJlc3RlZFJvc3RlcnMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFucyB1cCBpbi1mbGlnaHQgc3Vic2NyaXB0aW9ucyB3aGVuIHRoZSBjb21wb25lbnQgaXMgZGVzdHJveWVkLlxyXG4gICAqIEBtZW1iZXJvZiBJbnRlcmVzdGVkUm9zdGVyc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzb2x2ZXMgdGhlIGN1cnJlbnQgZ3JvdXAgaWQgZnJvbSB0aGUgZGlhbG9nIGRhdGEgKGZhbGxpbmcgYmFjayB0byB0aGVcclxuICAgKiBzZXJ2aWNlJ3Mgc2VsZWN0ZWQgZ3JvdXApIGFuZCBsb2FkcyB0aGUgaW50ZXJlc3RlZC1yb3N0ZXIgcm93cyBmb3IgaXQuIE1hcHNcclxuICAgKiBlYWNoIGJhY2tlbmQge0BsaW5rIEdyb3VwSW50ZXJlc3RSZXNwb25zZVZpZXd9IG9udG8gdGhlIGZsYXR0ZW5lZFxyXG4gICAqIHtAbGluayBJbnRlcmVzdGVkUm9zdGVyfSBzaGFwZSB0aGUgcmV1c2FibGUgdGFibGUgYmluZHMgdG8uIE9uIGZhaWx1cmUgdGhlXHJcbiAgICogdGFibGUgaXMgY2xlYXJlZCBhbmQgdGhlIGVycm9yIGlzIGRlbGVnYXRlZCB0byBHcm91cHNTZXJ2aWNlIGZvciBhbGVydGluZy5cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RlZFJvc3RlcnNDb21wb25lbnRcclxuICAgKi9cclxuICBwcml2YXRlIGxvYWRJbnRlcmVzdGVkUm9zdGVycygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGdyb3VwSWQgPVxyXG4gICAgICB0aGlzLmdyb3VwPy5ncm91cElkID8/XHJcbiAgICAgIHRoaXMuZ3JvdXBzU2VydmljZS5nZXRTZWxlY3RlZEdyb3VwSW5mbygpPy5ncm91cElkO1xyXG4gICAgaWYgKCFncm91cElkKSByZXR1cm47XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBwYXlsb2FkOiBJbnRlcmVzdGVkUm9zdGVyc1JlcXVlc3RQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgc2VhcmNoQnlOYW1lT3JFbWFpbDogJycsXHJcbiAgICAgICAgb2Zmc2V0OiB0aGlzLnBhZ2VJbmRleCAqIHRoaXMucGFnaW5hdG9yQ29uZmlnLnJlY29yZHNQZXJQYWdlLFxyXG4gICAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2luYXRvckNvbmZpZy5yZWNvcmRzUGVyUGFnZSxcclxuICAgICAgICBzb3J0ZWRCeTogdGhpcy5zb3J0ZWRCeSxcclxuICAgICAgICBzb3J0ZWRPcmRlckJ5OiB0aGlzLnNvcnRlZE9yZGVyQnksXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlXHJcbiAgICAgIC5nZXRJbnRlcmVzdFJlc3BvbnNlc0J5R3JvdXAoZ3JvdXBJZCwgcGF5bG9hZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gcmVzcG9uc2U/LnRvdGFsUmVjb3JkcyA/PyAwO1xyXG4gICAgICAgICAgdGhpcy5wYWdpbmF0b3JDb25maWcgPSB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMucGFnaW5hdG9yQ29uZmlnLFxyXG4gICAgICAgICAgICB0b3RhbFJlY29yZHM6IHRoaXMudG90YWxSZWNvcmRzLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHRoaXMucm9zdGVycyA9IChyZXNwb25zZT8uZGF0YSA/PyBbXSkubWFwKCh2aWV3KSA9PlxyXG4gICAgICAgICAgICB0aGlzLm1hcFRvUm9zdGVyKHZpZXcpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLnJvc3RlcnM7XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yb3N0ZXJzID0gW107XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSAwO1xyXG4gICAgICAgICAgdGhpcy5wYWdpbmF0b3JDb25maWcgPSB7IC4uLnRoaXMucGFnaW5hdG9yQ29uZmlnLCB0b3RhbFJlY29yZHM6IDAgfTtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2UuaGFuZGxlRXJyb3JzKGVycm9yLCBmYWxzZSk7XHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblBhZ2luYXRpb25DaGFuZ2UoZXZlbnQ6IFBhZ2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYWdlSW5kZXggPSBldmVudC5wYWdlSW5kZXg7XHJcbiAgICB0aGlzLnBhZ2luYXRvckNvbmZpZyA9IHtcclxuICAgICAgLi4udGhpcy5wYWdpbmF0b3JDb25maWcsXHJcbiAgICAgIHJlY29yZHNQZXJQYWdlOiBldmVudC5wYWdlU2l6ZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmxvYWRJbnRlcmVzdGVkUm9zdGVycygpO1xyXG4gIH1cclxuXHJcbiAgb25Tb3J0Q2hhbmdlKGV2ZW50OiBTb3J0KTogdm9pZCB7XHJcbiAgICB0aGlzLnNvcnRlZEJ5ID0gZXZlbnQuZGlyZWN0aW9uID8gZXZlbnQuYWN0aXZlIDogdGhpcy5kZWZhdWx0U29ydGVkQ29sdW1uO1xyXG4gICAgdGhpcy5zb3J0ZWRPcmRlckJ5ID0gZXZlbnQuZGlyZWN0aW9uIHx8IHRoaXMuZGVmYXVsdENvbHVtblNvcnREaXJlY3Rpb247XHJcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDA7XHJcbiAgICB0aGlzLmxvYWRJbnRlcmVzdGVkUm9zdGVycygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWFwcyBhIGJhY2tlbmQge0BsaW5rIEdyb3VwSW50ZXJlc3RSZXNwb25zZVZpZXd9IHRvIHRoZSBmbGF0dGVuZWRcclxuICAgKiB7QGxpbmsgSW50ZXJlc3RlZFJvc3Rlcn0gcm93IHRoZSB0YWJsZSByZW5kZXJzOiBhZmZpbGlhdGlvbiBvcmcgbmFtZXMgYXJlXHJcbiAgICogam9pbmVkIGludG8gdGhlIGFmZmlsaWF0aW9ucyBsaXN0LCB0aGUgYXNzaWduZWQgbWVtYmVyc2hpcCBsZXZlbCAoaWYgYW55KVxyXG4gICAqIGJlY29tZXMgdGhlIHJvbGUgbmFtZSDigJQgd2hpY2ggdGhlIE1lbWJlciBMZXZlbCBkcm9wZG93biBiaW5kcyBhcyBpdHNcclxuICAgKiBwcmUtc2VsZWN0ZWQgdmFsdWUg4oCUIHRoZSBzdWJtaXR0ZWQgdGltZXN0YW1wIGlzIGZvcm1hdHRlZCBmb3IgZGlzcGxheSwgYW5kXHJcbiAgICogdGhlIGludGVyZXN0IGlkIGlzIGNhcnJpZWQgdGhyb3VnaCBmb3IgdGhlIHJlc3BvbnNlcyBkaWFsb2cgYW5kIHRoZSBsZXZlbFxyXG4gICAqIG92ZXJyaWRlLlxyXG4gICAqIEBwYXJhbSB7R3JvdXBJbnRlcmVzdFJlc3BvbnNlVmlld30gdmlld1xyXG4gICAqIEByZXR1cm4ge0ludGVyZXN0ZWRSb3N0ZXJ9XHJcbiAgICogQG1lbWJlcm9mIEludGVyZXN0ZWRSb3N0ZXJzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBtYXBUb1Jvc3Rlcih2aWV3OiBHcm91cEludGVyZXN0UmVzcG9uc2VWaWV3KTogSW50ZXJlc3RlZFJvc3RlciB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpbnRlcmVzdElkOiB2aWV3Py5pbnRlcmVzdElkLFxyXG4gICAgICB1c2VySWQ6IHZpZXc/LnVzZXJJZCxcclxuICAgICAgbmFtZTogdmlldz8ubmFtZSxcclxuICAgICAgZW1haWw6IHZpZXc/LmVtYWlsLFxyXG4gICAgICBhZmZpbGlhdGlvbnM6ICh2aWV3Py5hZmZpbGlhdGlvbiA/PyBbXSkubWFwKChvcmcpID0+IG9yZz8ub3JnTmFtZSksXHJcbiAgICAgIHN1Ym1pdHRlZE9uOiB0aGlzLmZvcm1hdFN1Ym1pdHRlZE9uKHZpZXc/LnN1Ym1pdHRlZE9uKSxcclxuICAgICAgbWVtYmVyTGV2ZWw6IHZpZXc/Lm1lbWJlckxldmVsPy5sZW5ndGhcclxuICAgICAgICA/IHZpZXcubWVtYmVyTGV2ZWxbMF0/LnJvbGVOYW1lID8/IG51bGxcclxuICAgICAgICA6IG51bGwsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybWF0cyB0aGUgYmFja2VuZCBzdWJtaXR0ZWQgdGltZXN0YW1wIChJU08gZGF0ZSBzdHJpbmcpIGZvciBkaXNwbGF5LFxyXG4gICAqIGZhbGxpbmcgYmFjayB0byB0aGUgcmF3IHZhbHVlIHdoZW4gaXQgaXMgbm90IGEgcGFyc2VhYmxlIGRhdGUuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN1Ym1pdHRlZE9uXHJcbiAgICogQHJldHVybiB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBJbnRlcmVzdGVkUm9zdGVyc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZm9ybWF0U3VibWl0dGVkT24oc3VibWl0dGVkT246IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXN1Ym1pdHRlZE9uKSByZXR1cm4gJyc7XHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoc3VibWl0dGVkT24pO1xyXG4gICAgcmV0dXJuIGlzTmFOKGRhdGUuZ2V0VGltZSgpKVxyXG4gICAgICA/IHN1Ym1pdHRlZE9uXHJcbiAgICAgIDogZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLVVTJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkcyB0aGUgTWVtYmVyIExldmVsIGRyb3Bkb3duIG9wdGlvbnMgZnJvbSB0aGUgcm9sZXMgQVBJXHJcbiAgKiAoe0Bjb2RlIEdFVCAvZ3JvdXBzL2NvbmZpZy9yb2xlc0J5R3JvdXBUeXBlL3tncm91cFR5cGV9fSksIGtlZXBpbmcgb25seSByb2xlcyB3aG9zZVxyXG4gICAqIHtAY29kZSByb2xlVHlwZU5hbWV9IGlzIFwiTWVtYmVyIExldmVsXCIgYW5kIG1hcHBpbmcgZWFjaCB0byBhXHJcbiAgICoge0BsaW5rIFNlbGVjdE9wdGlvbn0gKHtAY29kZSB7IGlkOiByb2xlSWQsIG5hbWU6IHJvbGVOYW1lIH19KS5cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RlZFJvc3RlcnNDb21wb25lbnRcclxuICAgKi9cclxuICBwcml2YXRlIGxvYWRNZW1iZXJMZXZlbE9wdGlvbnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBncm91cFR5cGUgPVxyXG4gICAgICB0aGlzLmdyb3VwPy5ncm91cFR5cGUgPz9cclxuICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlLmdldFNlbGVjdGVkR3JvdXBJbmZvKCk/Lmdyb3VwVHlwZTtcclxuICAgIGlmICghZ3JvdXBUeXBlKSByZXR1cm47XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgLmdldEdyb3VwVHlwZVJvbGVzKGdyb3VwVHlwZSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm1lbWJlckxldmVsT3B0aW9ucyA9ICh0aGlzLmdyb3Vwc1NlcnZpY2UuZ2V0TWVtYmVyVHlwZXMoKSA/PyBbXSlcclxuICAgICAgICAgICAgLm1hcCgocm9sZSkgPT4gKHsgaWQ6IHJvbGUucm9sZUlkLCBuYW1lOiByb2xlLnJvbGVOYW1lIH0pKTtcclxuICAgICAgICAgIHRoaXMuYnVpbGRDb2x1bW5TY2hlbWEoKTtcclxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZS5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGVyc2lzdHMgdGhlIG1lbWJlcnNoaXAtbGV2ZWwgb3ZlcnJpZGUgd2hlbiB0aGUgYWRtaW4gcGlja3MgYSB2YWx1ZSBpbiBhXHJcbiAgICogcm93J3MgTWVtYmVyIExldmVsIGRyb3Bkb3duIChib3VuZCB0byB0aGUgcmV1c2FibGUgdGFibGUnc1xyXG4gICAqIGByb3dEcm9wZG93bkNoYW5nZWAgb3V0cHV0KS4gQnVpbGRzIHRoZSByZXF1ZXN0IGZyb20gdGhlIGRpYWxvZydzIGN1cnJlbnRcclxuICAgKiBncm91cCBpZCwgdGhlIHJvdydzIHVzZXIgaWQgYW5kIHRoZSBzZWxlY3RlZCBvcHRpb24ncyBpZCAodGhlIHJvbGUgaWQpLCBhbmRcclxuICAgKiBwb3N0cyBpdCB0byB0aGUgYmFja2VuZC4gVGhlIHJvdydzIGRpc3BsYXllZCBsZXZlbCBpcyB1cGRhdGVkIG9wdGltaXN0aWNhbGx5XHJcbiAgICogYW5kIHJldmVydGVkIGlmIHRoZSBzYXZlIGZhaWxzLlxyXG4gICAqIEBwYXJhbSB7eyByb3c6IEludGVyZXN0ZWRSb3N0ZXI7IG9wdGlvbjogU2VsZWN0T3B0aW9uIH19IGV2ZW50XHJcbiAgICogQG1lbWJlcm9mIEludGVyZXN0ZWRSb3N0ZXJzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25NZW1iZXJMZXZlbENoYW5nZShldmVudDoge1xyXG4gICAgcm93OiBJbnRlcmVzdGVkUm9zdGVyO1xyXG4gICAgb3B0aW9uOiBTZWxlY3RPcHRpb247XHJcbiAgfSk6IHZvaWQge1xyXG4gICAgY29uc3Qgcm93ID0gZXZlbnQ/LnJvdztcclxuICAgIGNvbnN0IG9wdGlvbiA9IGV2ZW50Py5vcHRpb247XHJcbiAgICBjb25zdCBncm91cElkID1cclxuICAgICAgdGhpcy5ncm91cD8uZ3JvdXBJZCA/P1xyXG4gICAgICB0aGlzLmdyb3Vwc1NlcnZpY2UuZ2V0U2VsZWN0ZWRHcm91cEluZm8oKT8uZ3JvdXBJZDtcclxuICAgIGNvbnN0IHJvbGVJZCA9IG9wdGlvbj8uaWQgYXMgc3RyaW5nO1xyXG4gICAgaWYgKCFyb3c/LnVzZXJJZCB8fCAhZ3JvdXBJZCB8fCAhcm9sZUlkKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgcHJldmlvdXNMZXZlbCA9IHJvdy5tZW1iZXJMZXZlbDtcclxuICAgIC8vIE9wdGltaXN0aWNhbGx5IHJlZmxlY3QgdGhlIHNlbGVjdGlvbiBpbiB0aGUgcm93LlxyXG4gICAgcm93Lm1lbWJlckxldmVsID0gb3B0aW9uPy5uYW1lID8/IHJvdy5tZW1iZXJMZXZlbDtcclxuXHJcbiAgICBjb25zdCBwYXlsb2FkOiBVcGRhdGVNZW1iZXJMZXZlbFBheWxvYWQgPSB7XHJcbiAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICBncm91cElkLFxyXG4gICAgICAgIHVzZXJJZDogcm93LnVzZXJJZCxcclxuICAgICAgICByb2xlSWQsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlXHJcbiAgICAgIC51cGRhdGVJbnRlcmVzdE1lbWJlckxldmVsKHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgLy8gUmV2ZXJ0IHRoZSBvcHRpbWlzdGljIGNoYW5nZSBvbiBmYWlsdXJlIGFuZCBzdXJmYWNlIHRoZSBlcnJvci5cclxuICAgICAgICAgIHJvdy5tZW1iZXJMZXZlbCA9IHByZXZpb3VzTGV2ZWw7XHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2UuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wZW5zIHRoZSBcIlZpZXcgUmVzcG9uc2VzXCIgZGlhbG9nIGZvciBhIHJvc3RlciByb3cgKGJvdW5kIHRvIHRoZSByZXVzYWJsZVxyXG4gICAqIHRhYmxlJ3MgTElOSyBvdXRwdXQpIHVzaW5nIHRoZSBzaGFyZWQge0BsaW5rIE1vZGFsQ29tcG9uZW50fS4gVGhlIG1vZGFsXHJcbiAgICogc3VwcGxpZXMgdGhlIHRpdGxlIHJvdyBhbmQgWCBjbG9zZTsgdGhlIHJlcXVlc3RlcidzIHN0b3JlZCBpbnRlcmVzdC1mb3JtXHJcbiAgICogcmVzcG9uc2VzIGFyZSByZW5kZXJlZCBieSB7QGxpbmsgSW50ZXJlc3RSZXNwb25zZXNDb21wb25lbnR9LCB3aGljaCBsb2Fkc1xyXG4gICAqIHRoZW0gZnJvbSB0aGUgYmFja2VuZCB1c2luZyB0aGUgcm93J3Mge0Bjb2RlIGludGVyZXN0SWR9IHBhc3NlZCB2aWEgdGhlXHJcbiAgICogTW9kYWxDb21wb25lbnQgZHluYW1pYy1pbnB1dCBwYXR0ZXJuLlxyXG4gICAqIEBwYXJhbSB7SW50ZXJlc3RlZFJvc3Rlcn0gcm93XHJcbiAgICogQG1lbWJlcm9mIEludGVyZXN0ZWRSb3N0ZXJzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Gb3JtTGlua0NsaWNrKHJvdzogSW50ZXJlc3RlZFJvc3Rlcik6IHZvaWQge1xyXG4gICAgaWYgKCFyb3c/LmludGVyZXN0SWQpIHJldHVybjtcclxuICAgIGNvbnN0IGRpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgIGhlYWRpbmc6IHRoaXMudGV4dHM/LnJlc3BvbnNlcz8udGl0bGUsXHJcbiAgICAgIHN1YkhlYWRpbmc6IHRoaXMuZ3JvdXA/Lmdyb3VwTmFtZSxcclxuICAgICAgaGVhZGluZ0NsYXNzOiAnaWVlZXNhLXRpdGxlLWxnLTI0JyxcclxuICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgY29tcG9uZW50UmVmZXJlbmNlOiBJbnRlcmVzdFJlc3BvbnNlc0NvbXBvbmVudCxcclxuICAgICAgbW9kYWxUeXBlOiBNb2RhbFR5cGUuRk9STSxcclxuICAgICAgZGF0YTJEeW5hbWljQ29tcG9uZW50OiB7IGludGVyZXN0SWQ6IHJvdy5pbnRlcmVzdElkIH0sXHJcbiAgICAgIGRhdGFJbnB1dE5hbWU6ICdjb21wb25lbnREYXRhJyxcclxuICAgIH07XHJcbiAgICB0aGlzLmRpYWxvZy5vcGVuKE1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IGRpYWxvZ09wdGlvbnMsXHJcbiAgICAgIHBhbmVsQ2xhc3M6IFsnaWVlZXNhLW1vZGFsLWRpYWxvZycsICdpZWVlc2EtaW50ZXJlc3QtcmVzcG9uc2VzLWRpYWxvZyddLFxyXG4gICAgICB3aWR0aDogJzgwMHB4JyxcclxuICAgICAgbWF4V2lkdGg6ICc5NXZ3JyxcclxuICAgICAgbWF4SGVpZ2h0OiAnOTB2aCcsXHJcbiAgICAgIGFyaWFNb2RhbDogdHJ1ZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lcyB0aGUgcmV1c2FibGUtdGFibGUgY29sdW1ucyBmb3IgdGhlIEludGVyZXN0ZWQgUm9zdGVycyBsaXN0LiBFdmVyeVxyXG4gICAqIGBjZWxsRGF0YWAvYHNlbGVjdGVkT3B0aW9uYCBpcyBhIGAocm93KSA9PiAuLi5gIGFjY2Vzc29yLCBtYXRjaGluZyB0aGVcclxuICAgKiBzaGFyZWQgdGFibGUncyBjb250cmFjdC4gTWVtYmVyIExldmVsIGlzIHRoZSBEUk9QRE9XTiBjb2x1bW4gc2VlZGVkIHdpdGggdGhlXHJcbiAgICogY29uZmlndXJlZCBsZXZlbHMgcGx1cyBcIk5vbmVcIjsgRm9ybSBpcyBhIExJTksgdGhhdCBvcGVucyB0aGUgcmVzcG9uc2VzXHJcbiAgICogZGlhbG9nLlxyXG4gICAqIEBtZW1iZXJvZiBJbnRlcmVzdGVkUm9zdGVyc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgYnVpbGRDb2x1bW5TY2hlbWEoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb2x1bW5zID0gdGhpcy50ZXh0cz8uY29sdW1ucztcclxuICAgIHRoaXMuY29sdW1uU2NoZW1hID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDEsXHJcbiAgICAgICAgY29sdW1uRGVmOiAnbmFtZScsXHJcbiAgICAgICAgaGVhZGluZzogY29sdW1ucz8ubmFtZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICBpc1NvcnRhYmxlQ29sdW1uOiB0cnVlLFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChyb3c6IGFueSkgPT4gcm93Lm5hbWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogMixcclxuICAgICAgICBjb2x1bW5EZWY6ICdlbWFpbCcsXHJcbiAgICAgICAgaGVhZGluZzogY29sdW1ucz8uZW1haWwsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgaXNTb3J0YWJsZUNvbHVtbjogdHJ1ZSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAocm93OiBhbnkpID0+IHJvdy5lbWFpbCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAzLFxyXG4gICAgICAgIGNvbHVtbkRlZjogJ2FmZmlsaWF0aW9ucycsXHJcbiAgICAgICAgaGVhZGluZzogY29sdW1ucz8uYWZmaWxpYXRpb25zLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChyb3c6IGFueSkgPT4gKHJvdy5hZmZpbGlhdGlvbnMgfHwgW10pLmpvaW4oJywgJyksXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogNCxcclxuICAgICAgICBjb2x1bW5EZWY6ICdzdWJtaXR0ZWRPbicsXHJcbiAgICAgICAgaGVhZGluZzogY29sdW1ucz8uc3VibWl0dGVkT24sXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgaXNTb3J0YWJsZUNvbHVtbjogdHJ1ZSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAocm93OiBhbnkpID0+IHJvdy5zdWJtaXR0ZWRPbixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA1LFxyXG4gICAgICAgIGNvbHVtbkRlZjogJ21lbWJlckxldmVsJyxcclxuICAgICAgICBoZWFkaW5nOiBjb2x1bW5zPy5tZW1iZXJMZXZlbCxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuRFJPUERPV04sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKHJvdzogYW55KSA9PiByb3cubWVtYmVyTGV2ZWwsXHJcbiAgICAgICAgZHJvcGRvd25PcHRpb25zOiB0aGlzLm1lbWJlckxldmVsT3B0aW9ucyxcclxuICAgICAgICBkcm9wZG93blBsYWNlaG9sZGVyOiB0aGlzLnRleHRzPy5tZW1iZXJMZXZlbFBsYWNlaG9sZGVyLFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgc2VsZWN0ZWRPcHRpb246IChyb3c6IGFueSkgPT5cclxuICAgICAgICAgIHRoaXMubWVtYmVyTGV2ZWxPcHRpb25zLmZpbmQoKG8pID0+IG8ubmFtZSA9PT0gcm93Lm1lbWJlckxldmVsKSA/P1xyXG4gICAgICAgICAgbnVsbCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA2LFxyXG4gICAgICAgIGNvbHVtbkRlZjogJ2Zvcm0nLFxyXG4gICAgICAgIGhlYWRpbmc6IGNvbHVtbnM/LmZvcm0sXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLkxJTkssXHJcbiAgICAgICAgY2VsbERhdGE6ICgpID0+IHRoaXMudGV4dHM/LnZpZXdMYWJlbCxcclxuICAgICAgICBhcmlhTGFiZWw6IChyb3c6IEludGVyZXN0ZWRSb3N0ZXIpID0+XHJcbiAgICAgICAgICBgJHt0aGlzLnRleHRzPy52aWV3QXJpYUxhYmVsUHJlZml4fSAke3Jvdz8ubmFtZSA/PyAnJ31gLnRyaW0oKSxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgfVxyXG59XHJcbiIsIjxzZWN0aW9uIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0ZWQtcm9zdGVyc1wiIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dHM/LnJlZ2lvbkFyaWFMYWJlbFwiPlxyXG4gIDxwIGNsYXNzPVwiaWVlZXNhLWludGVyZXN0ZWQtcm9zdGVyc19fY291bnRcIj57eyB0b3RhbFJlY29yZHMgfX0ge3sgdGV4dHM/LmNvdW50U3VmZml4IH19PC9wPlxyXG4gIDxpZWVlc2EtZGF0YS10YWJsZVxyXG4gICAgW3RhYmxlRGF0YUluZm9dPVwidGFibGVEYXRhXCJcclxuICAgIFtjb2x1bW5TY2hlbWFJbmZvXT1cImNvbHVtblNjaGVtYVwiXHJcbiAgICBbdGFibGVBY3Rpb25zXT1cInRhYmxlQWN0aW9uc1wiXHJcbiAgICBbcGFnaW5hdG9yQ29uZmlnXT1cInBhZ2luYXRvckNvbmZpZ1wiXHJcbiAgICBbcGFnZUluZGV4XT1cInBhZ2VJbmRleFwiXHJcbiAgICBbcGFnZVNpemVdPVwicGFnaW5hdG9yQ29uZmlnLnJlY29yZHNQZXJQYWdlXCJcclxuICAgIFtkZWZhdWx0U29ydGVkQ29sdW1uXT1cImRlZmF1bHRTb3J0ZWRDb2x1bW5cIlxyXG4gICAgW2RlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uXT1cImRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uXCJcclxuICAgIFtpc0NsZWFyU29ydE5lZWRlZF09XCJmYWxzZVwiXHJcbiAgICAocGFnaW5hdGlvbkNoYW5nZSk9XCJvblBhZ2luYXRpb25DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAoc29ydENoYW5nZSk9XCJvblNvcnRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAocm93TGluayk9XCJvbkZvcm1MaW5rQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAocm93RHJvcGRvd25DaGFuZ2UpPVwib25NZW1iZXJMZXZlbENoYW5nZSgkZXZlbnQpXCJcclxuICA+PC9pZWVlc2EtZGF0YS10YWJsZT5cclxuPC9zZWN0aW9uPlxyXG4iXX0=
|
|
399
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJlc3RlZC1yb3N0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2NvbXBvbmVudHMvaW50ZXJlc3RlZC1yb3N0ZXJzL2ludGVyZXN0ZWQtcm9zdGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL2ludGVyZXN0ZWQtcm9zdGVycy9pbnRlcmVzdGVkLXJvc3RlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxNQUFNLEVBR04sUUFBUSxFQUNSLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBYSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd2RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sb0JBQW9CLENBQUM7QUFDN0QsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixjQUFjLEVBSWQsZUFBZSxHQUNoQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sU0FBUyxNQUFNLDZCQUE2QixDQUFDO0FBU3BELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7O0FBUWhHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBU0gsTUFBTSxPQUFPLDBCQUEwQjtJQTRDckM7SUFDRSwwQ0FBMEM7SUFDbEMsTUFBaUI7SUFDekIsMENBQTBDO0lBQ2xDLGFBQTRCO0lBQ3BDLDBDQUEwQztJQUNsQyxHQUFzQjtJQUM5QiwwQ0FBMEM7SUFDRSxLQUF1QjtRQU4zRCxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBRWpCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBRTVCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBRWMsVUFBSyxHQUFMLEtBQUssQ0FBa0I7UUFuRHJFLDhEQUE4RDtRQUM5RCxjQUFTLEdBQVEsU0FBUyxDQUFDO1FBQzNCLFVBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQztRQUVuRCxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUUxQzs7OztXQUlHO1FBQ0gsdUJBQWtCLEdBQW1CLEVBQUUsQ0FBQztRQUV4QyxZQUFPLEdBQXVCLEVBQUUsQ0FBQztRQUNqQyxjQUFTLEdBQXVCLEVBQUUsQ0FBQztRQUNuQyxpQkFBWSxHQUFtQyxFQUFFLENBQUM7UUFFbEQsZ0ZBQWdGO1FBQ2hGLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBRWpCLG9CQUFlLEdBQW9CO1lBQ2pDLGNBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNoRCxlQUFlLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxlQUFlO1lBQzVDLFlBQVksRUFBRSxDQUFDO1NBQ2hCLENBQUM7UUFDRixjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2Qsd0JBQW1CLEdBQUcsYUFBYSxDQUFDO1FBQ3BDLCtCQUEwQixHQUFzQixNQUFNLENBQUM7UUFDL0MsYUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUNwQyxrQkFBYSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQztRQUV4RCwwRUFBMEU7UUFDMUUsaUJBQVksR0FBaUI7WUFDM0Isa0JBQWtCLEVBQUUsSUFBSTtZQUN4QixjQUFjLEVBQUUsS0FBSztZQUNyQixjQUFjLEVBQUUsS0FBSztZQUNyQixXQUFXLEVBQUUsS0FBSztZQUNsQixZQUFZLEVBQUUsS0FBSztZQUNuQixjQUFjLEVBQUUsS0FBSztTQUN0QixDQUFDO1FBRUYsY0FBUyxHQUFHLEtBQUssQ0FBQztJQVdmLENBQUM7SUFFSjs7OztPQUlHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLHFCQUFxQjtRQUMzQixNQUFNLE9BQU8sR0FDWCxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU87WUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLE9BQU8sQ0FBQztRQUNyRCxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsTUFBTSxPQUFPLEdBQW9DO1lBQy9DLE9BQU8sRUFBRTtnQkFDUCxtQkFBbUIsRUFBRSxFQUFFO2dCQUN2QixNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWM7Z0JBQzVELFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWM7Z0JBQzdDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDdkIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO2FBQ2xDO1NBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhO2FBQ2YsMkJBQTJCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQzthQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLEVBQUUsWUFBWSxJQUFJLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLGVBQWUsR0FBRztvQkFDckIsR0FBRyxJQUFJLENBQUMsZUFBZTtvQkFDdkIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO2lCQUNoQyxDQUFDO2dCQUNGLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQ3ZCLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMzQixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BFLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDM0IsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFnQjtRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLGVBQWUsR0FBRztZQUNyQixHQUFHLElBQUksQ0FBQyxlQUFlO1lBQ3ZCLGNBQWMsRUFBRSxLQUFLLENBQUMsUUFBUTtTQUMvQixDQUFDO1FBQ0YsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFXO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQzFFLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUM7UUFDeEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ssV0FBVyxDQUFDLElBQStCO1FBQ2pELE9BQU87WUFDTCxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVU7WUFDNUIsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNO1lBQ3BCLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUNoQixLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUs7WUFDbEIsWUFBWSxFQUFFLENBQUMsSUFBSSxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUM7WUFDbEUsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDO1lBQ3RELFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU07Z0JBQ3BDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsSUFBSSxJQUFJO2dCQUN2QyxDQUFDLENBQUMsSUFBSTtTQUNULENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssaUJBQWlCLENBQUMsV0FBbUI7UUFDM0MsSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUM1Qiw2RUFBNkU7UUFDN0UsMEVBQTBFO1FBQzFFLDZFQUE2RTtRQUM3RSx5RUFBeUU7UUFDekUsd0VBQXdFO1FBQ3hFLCtFQUErRTtRQUMvRSxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUU7WUFDMUQsSUFBSSxFQUFFLEtBQUs7U0FDWixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtZQUNuQixNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUN6RDtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ25CLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUU7Z0JBQzVCLE1BQU0sR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZEO1NBQ0Y7UUFDRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUN2RSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssc0JBQXNCO1FBQzVCLE1BQU0sU0FBUyxHQUNiLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUztZQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsU0FBUyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUN2QixJQUFJLENBQUMsYUFBYTthQUNmLGlCQUFpQixDQUFDLFNBQVMsQ0FBQzthQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUNULElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFDO3FCQUNsRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDM0IsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsbUJBQW1CLENBQUMsS0FHbkI7UUFDQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLEtBQUssRUFBRSxNQUFNLENBQUM7UUFDN0IsTUFBTSxPQUFPLEdBQ1gsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPO1lBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxPQUFPLENBQUM7UUFDckQsTUFBTSxNQUFNLEdBQUcsTUFBTSxFQUFFLEVBQVksQ0FBQztRQUNwQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBRWhELE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUM7UUFDdEMsbURBQW1EO1FBQ25ELEdBQUcsQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDO1FBRWxELE1BQU0sT0FBTyxHQUE2QjtZQUN4QyxPQUFPLEVBQUU7Z0JBQ1AsT0FBTztnQkFDUCxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07Z0JBQ2xCLE1BQU07YUFDUDtTQUNGLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYTthQUNmLHlCQUF5QixDQUFDLE9BQU8sQ0FBQzthQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZixpRUFBaUU7Z0JBQ2pFLEdBQUcsQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILGVBQWUsQ0FBQyxHQUFxQjtRQUNuQyxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVU7WUFBRSxPQUFPO1FBQzdCLE1BQU0sYUFBYSxHQUFHO1lBQ3BCLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLO1lBQ3JDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVM7WUFDakMsWUFBWSxFQUFFLG9CQUFvQjtZQUNsQyxhQUFhLEVBQUUsSUFBSTtZQUNuQixrQkFBa0IsRUFBRSwwQkFBMEI7WUFDOUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxJQUFJO1lBQ3pCLHFCQUFxQixFQUFFLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVLEVBQUU7WUFDckQsYUFBYSxFQUFFLGVBQWU7U0FDL0IsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUMvQixJQUFJLEVBQUUsYUFBYTtZQUNuQixVQUFVLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxrQ0FBa0MsQ0FBQztZQUN2RSxLQUFLLEVBQUUsT0FBTztZQUNkLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ssaUJBQWlCO1FBQ3ZCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUc7WUFDbEI7Z0JBQ0UsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsU0FBUyxFQUFFLE1BQU07Z0JBQ2pCLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSTtnQkFDdEIsVUFBVSxFQUFFLGVBQWUsQ0FBQyxJQUFJO2dCQUNoQyxnQkFBZ0IsRUFBRSxJQUFJO2dCQUN0Qiw4REFBOEQ7Z0JBQzlELFFBQVEsRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUk7YUFDakM7WUFDRDtnQkFDRSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxTQUFTLEVBQUUsT0FBTztnQkFDbEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLO2dCQUN2QixVQUFVLEVBQUUsZUFBZSxDQUFDLElBQUk7Z0JBQ2hDLGdCQUFnQixFQUFFLElBQUk7Z0JBQ3RCLDhEQUE4RDtnQkFDOUQsUUFBUSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSzthQUNsQztZQUNEO2dCQUNFLEVBQUUsRUFBRSxDQUFDO2dCQUNMLFNBQVMsRUFBRSxjQUFjO2dCQUN6QixPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVk7Z0JBQzlCLFVBQVUsRUFBRSxlQUFlLENBQUMsSUFBSTtnQkFDaEMsOERBQThEO2dCQUM5RCxRQUFRLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQzVEO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsU0FBUyxFQUFFLGFBQWE7Z0JBQ3hCLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVztnQkFDN0IsVUFBVSxFQUFFLGVBQWUsQ0FBQyxJQUFJO2dCQUNoQyxnQkFBZ0IsRUFBRSxJQUFJO2dCQUN0Qiw4REFBOEQ7Z0JBQzlELFFBQVEsRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVc7YUFDeEM7WUFDRDtnQkFDRSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxTQUFTLEVBQUUsYUFBYTtnQkFDeEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXO2dCQUM3QixVQUFVLEVBQUUsZUFBZSxDQUFDLFFBQVE7Z0JBQ3BDLDhEQUE4RDtnQkFDOUQsUUFBUSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVztnQkFDdkMsZUFBZSxFQUFFLElBQUksQ0FBQyxrQkFBa0I7Z0JBQ3hDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsc0JBQXNCO2dCQUN2RCw4REFBOEQ7Z0JBQzlELGNBQWMsRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLFdBQVcsQ0FBQztvQkFDL0QsSUFBSTthQUNQO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsU0FBUyxFQUFFLE1BQU07Z0JBQ2pCLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSTtnQkFDdEIsVUFBVSxFQUFFLGVBQWUsQ0FBQyxJQUFJO2dCQUNoQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTO2dCQUNyQyxTQUFTLEVBQUUsQ0FBQyxHQUFxQixFQUFFLEVBQUUsQ0FDbkMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLG1CQUFtQixJQUFJLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFO2FBQ2pFO1NBQ0YsQ0FBQztJQUNKLENBQUM7K0dBdlhVLDBCQUEwQix5R0FvRGYsZUFBZTttR0FwRDFCLDBCQUEwQixxRkNyRXZDLHkyQkFrQkEsbXpDRDhDWSxZQUFZLCtCQUFFLGtCQUFrQiw0aURBQWtCLGVBQWU7OzRGQUtoRSwwQkFBMEI7a0JBUnRDLFNBQVM7K0JBQ0UsMkJBQTJCLGNBQ3pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsZUFBZSxDQUFDLGlCQUc3RCxpQkFBaUIsQ0FBQyxJQUFJOzswQkFzRGxDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEluamVjdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZywgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgU29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gJ2x1eG9uJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE1vZGFsVHlwZSwgU2VsZWN0T3B0aW9uIH0gZnJvbSAnQGllZWVzYS1ucG0vbW9kZWxzJztcclxuaW1wb3J0IHtcclxuICBEYXRhVGFibGVDb21wb25lbnQsXHJcbiAgTW9kYWxDb21wb25lbnQsXHJcbiAgUGFnaW5hdG9yQ29uZmlnLFxyXG4gIFRhYmxlQWN0aW9ucyxcclxuICBUYWJsZUNvbHVtblNjaGVtYSxcclxuICBUYWJsZUNvbHVtblR5cGUsXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vcHJlc2VudGF0aW9uJztcclxuaW1wb3J0IGNvbnN0YW50cyBmcm9tICcuLi8uLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQgeyBHcm91cEluZm8gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JvdXAtaW5mby5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgR3JvdXBJbnRlcmVzdFJlc3BvbnNlVmlldyxcclxuICBJbnRlcmVzdGVkUm9zdGVyLFxyXG4gIEludGVyZXN0ZWRSb3N0ZXJzUmVxdWVzdFBheWxvYWQsXHJcbiAgVXBkYXRlTWVtYmVyTGV2ZWxQYXlsb2FkLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy9pbnRlcmVzdC1yZXNwb25zZS5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3Vwc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ncm91cHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEludGVyZXN0UmVzcG9uc2VzQ29tcG9uZW50IH0gZnJvbSAnLi4vaW50ZXJlc3QtcmVzcG9uc2VzL2ludGVyZXN0LXJlc3BvbnNlcy5jb21wb25lbnQnO1xyXG5cclxuLy8gR3JvdXBzIG1heSBjb21waWxlIGFnYWluc3QgcHVibGlzaGVkIFByZXNlbnRhdGlvbiB0eXBlcyB3aXRob3V0IHRoZSByb3ctbGFiZWwgY2FsbGJhY2suXHJcbnR5cGUgSW50ZXJlc3RlZFJvc3RlckNvbHVtblNjaGVtYSA9IFRhYmxlQ29sdW1uU2NoZW1hICYge1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gIGFyaWFMYWJlbD86IChyb3c6IEludGVyZXN0ZWRSb3N0ZXIpID0+IHN0cmluZztcclxufTtcclxuXHJcbi8qKlxyXG4gKiBcIkludGVyZXN0ZWQgUm9zdGVyc1wiIHRhYiBvZiB0aGUgUm9zdGVyIEludGVyZXN0cyBkaWFsb2cgKFNQM00tNDI4KS4gTGlzdHMgdGhlXHJcbiAqIHVzZXJzIHdobyBleHByZXNzZWQgaW50ZXJlc3QgaW4gdGhlIGdyb3VwIGFuZCBsZXRzIGEgR3JvdXAgQWRtaW4gcmV2aWV3IGVhY2hcclxuICogcmVxdWVzdGVyJ3Mgc3VibWl0dGVkIHJlc3BvbnNlcyBhbmQgc2V0L292ZXJyaWRlIHRoZWlyIG1lbWJlcnNoaXAgbGV2ZWwgZnJvbVxyXG4gKiB0aGUgUm9zdGVyIE1hbmFnZW1lbnQgc2NyZWVuLlxyXG4gKlxyXG4gKiBUaGUgbGlzdCBpcyByZW5kZXJlZCB0aHJvdWdoIHRoZSBzaGFyZWQge0BsaW5rIERhdGFUYWJsZUNvbXBvbmVudH06IHRoZVxyXG4gKiBOYW1lL0VtYWlsL0FmZmlsaWF0aW9ucy9TdWJtaXR0ZWQgT24gY29sdW1ucyBhcmUgcGxhaW4gVEVYVCwgTWVtYmVyIExldmVsIGlzXHJcbiAqIHRoZSByZXVzYWJsZSB0YWJsZSdzIERST1BET1dOIGNvbHVtbiAoYW4gaW5saW5lIHtAY29kZSBpZWVlc2Etc2VsZWN0fSkgYW5kXHJcbiAqIEZvcm0gaXMgYSBMSU5LIHRoYXQgb3BlbnMgdGhlIFwiVmlldyBSZXNwb25zZXNcIiBkaWFsb2cuIFRoZSBNZW1iZXIgTGV2ZWxcclxuICogb3B0aW9ucyBhcmUgc291cmNlZCBmcm9tIHRoZSByb2xlcyBBUElcclxuICogKHtAbGluayBHcm91cHNTZXJ2aWNlLmdldEdyb3VwVHlwZVJvbGVzfSkgZmlsdGVyZWQgdG8gdGhlIFwiTWVtYmVyIExldmVsXCIgcm9sZVxyXG4gKiB0eXBlLiBJbnRlcmVzdGVkLXJvc3RlciByb3dzIGFyZSBsb2FkZWQgZnJvbVxyXG4gKiB7QGxpbmsgR3JvdXBzU2VydmljZS5nZXRJbnRlcmVzdFJlc3BvbnNlc0J5R3JvdXB9IGFuZCBlYWNoIHJlcXVlc3RlcidzIHN0b3JlZFxyXG4gKiBmb3JtIHJlc3BvbnNlcyBhcmUgbG9hZGVkIG9uIGRlbWFuZCBmcm9tXHJcbiAqIHtAbGluayBHcm91cHNTZXJ2aWNlLmdldEludGVyZXN0UmVzcG9uc2VzfSB1c2luZyB0aGUgcm93J3MgYGludGVyZXN0SWRgLiBBbGxcclxuICogZGlzcGxheSB0ZXh0IGlzIHNvdXJjZWQgZnJvbSBjb25zdGFudHMuanNvbi5cclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgSW50ZXJlc3RlZFJvc3RlcnNDb21wb25lbnRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWludGVyZXN0ZWQtcm9zdGVycycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBEYXRhVGFibGVDb21wb25lbnQsIE1vZGFsQ29tcG9uZW50LCBNYXREaWFsb2dNb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnRlcmVzdGVkLXJvc3RlcnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ludGVyZXN0ZWQtcm9zdGVycy5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnRlcmVzdGVkUm9zdGVyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNvbnN0YW50czogYW55ID0gY29uc3RhbnRzO1xyXG4gIHRleHRzID0gdGhpcy5jb25zdGFudHM/LnJvc3RlckludGVyZXN0cz8uaW50ZXJlc3RlZFJvc3RlcnM7XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICAvKipcclxuICAgKiBNZW1iZXItbGV2ZWwgZHJvcGRvd24gb3B0aW9ucywgc291cmNlZCBmcm9tIHRoZSByb2xlcyBBUElcclxuICAqICh7QGNvZGUgR0VUIC9ncm91cHMvY29uZmlnL3JvbGVzQnlHcm91cFR5cGUve2dyb3VwVHlwZX19KSBmaWx0ZXJlZCB0byB0aGUgXCJNZW1iZXIgTGV2ZWxcIiByb2xlIHR5cGUuXHJcbiAgICogRWFjaCBvcHRpb24gaXMge0Bjb2RlIHsgaWQ6IHJvbGVJZCwgbmFtZTogcm9sZU5hbWUgfX0uXHJcbiAgICovXHJcbiAgbWVtYmVyTGV2ZWxPcHRpb25zOiBTZWxlY3RPcHRpb25bXSA9IFtdO1xyXG5cclxuICByb3N0ZXJzOiBJbnRlcmVzdGVkUm9zdGVyW10gPSBbXTtcclxuICB0YWJsZURhdGE6IEludGVyZXN0ZWRSb3N0ZXJbXSA9IFtdO1xyXG4gIGNvbHVtblNjaGVtYTogSW50ZXJlc3RlZFJvc3RlckNvbHVtblNjaGVtYVtdID0gW107XHJcblxyXG4gIC8qKiBUb3RhbCBpbnRlcmVzdGVkLXJvc3RlciByb3dzIHJlcG9ydGVkIGJ5IHRoZSBiYWNrZW5kIChmb3IgcGFnaW5nL2NvdW50cykuICovXHJcbiAgdG90YWxSZWNvcmRzID0gMDtcclxuXHJcbiAgcGFnaW5hdG9yQ29uZmlnOiBQYWdpbmF0b3JDb25maWcgPSB7XHJcbiAgICByZWNvcmRzUGVyUGFnZTogdGhpcy50ZXh0cz8ucGFnZVNpemVPcHRpb25zPy5bMF0sXHJcbiAgICBwYWdlU2l6ZU9wdGlvbnM6IHRoaXMudGV4dHM/LnBhZ2VTaXplT3B0aW9ucyxcclxuICAgIHRvdGFsUmVjb3JkczogMCxcclxuICB9O1xyXG4gIHBhZ2VJbmRleCA9IDA7XHJcbiAgZGVmYXVsdFNvcnRlZENvbHVtbiA9ICdzdWJtaXR0ZWRPbic7XHJcbiAgZGVmYXVsdENvbHVtblNvcnREaXJlY3Rpb246IFNvcnRbJ2RpcmVjdGlvbiddID0gJ2Rlc2MnO1xyXG4gIHByaXZhdGUgc29ydGVkQnkgPSB0aGlzLmRlZmF1bHRTb3J0ZWRDb2x1bW47XHJcbiAgcHJpdmF0ZSBzb3J0ZWRPcmRlckJ5ID0gdGhpcy5kZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvbjtcclxuXHJcbiAgLyoqIFJlYWQtb25seSB0YWJsZSDigJQgbm8gc2VhcmNoIC8gZmlsdGVyIC8gYWRkIC8gZWRpdCAvIGRlbGV0ZSBhY3Rpb25zLiAqL1xyXG4gIHRhYmxlQWN0aW9uczogVGFibGVBY3Rpb25zID0ge1xyXG4gICAgaXNQYWdpbmF0aW9uTmVlZGVkOiB0cnVlLFxyXG4gICAgaXNTZWFyY2hOZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNGaWx0ZXJOZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNBZGROZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNFZGl0TmVlZGVkOiBmYWxzZSxcclxuICAgIGlzRGVsZXRlTmVlZGVkOiBmYWxzZSxcclxuICB9O1xyXG5cclxuICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZ3JvdXBzU2VydmljZTogR3JvdXBzU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGdyb3VwOiBHcm91cEluZm8gfCBudWxsXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBCdWlsZHMgdGhlIHJldXNhYmxlLXRhYmxlIGNvbHVtbiBzY2hlbWEgYW5kIGxvYWRzIHRoZSBpbnRlcmVzdGVkLXJvc3RlclxyXG4gICAqIGxpc3QgZm9yIHRoZSBjdXJyZW50IGdyb3VwIGZyb20gdGhlIGJhY2tlbmQuXHJcbiAgICogQG1lbWJlcm9mIEludGVyZXN0ZWRSb3N0ZXJzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRNZW1iZXJMZXZlbE9wdGlvbnMoKTtcclxuICAgIHRoaXMuYnVpbGRDb2x1bW5TY2hlbWEoKTtcclxuICAgIHRoaXMubG9hZEludGVyZXN0ZWRSb3N0ZXJzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhbnMgdXAgaW4tZmxpZ2h0IHN1YnNjcmlwdGlvbnMgd2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZC5cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RlZFJvc3RlcnNDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc29sdmVzIHRoZSBjdXJyZW50IGdyb3VwIGlkIGZyb20gdGhlIGRpYWxvZyBkYXRhIChmYWxsaW5nIGJhY2sgdG8gdGhlXHJcbiAgICogc2VydmljZSdzIHNlbGVjdGVkIGdyb3VwKSBhbmQgbG9hZHMgdGhlIGludGVyZXN0ZWQtcm9zdGVyIHJvd3MgZm9yIGl0LiBNYXBzXHJcbiAgICogZWFjaCBiYWNrZW5kIHtAbGluayBHcm91cEludGVyZXN0UmVzcG9uc2VWaWV3fSBvbnRvIHRoZSBmbGF0dGVuZWRcclxuICAgKiB7QGxpbmsgSW50ZXJlc3RlZFJvc3Rlcn0gc2hhcGUgdGhlIHJldXNhYmxlIHRhYmxlIGJpbmRzIHRvLiBPbiBmYWlsdXJlIHRoZVxyXG4gICAqIHRhYmxlIGlzIGNsZWFyZWQgYW5kIHRoZSBlcnJvciBpcyBkZWxlZ2F0ZWQgdG8gR3JvdXBzU2VydmljZSBmb3IgYWxlcnRpbmcuXHJcbiAgICogQG1lbWJlcm9mIEludGVyZXN0ZWRSb3N0ZXJzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsb2FkSW50ZXJlc3RlZFJvc3RlcnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBncm91cElkID1cclxuICAgICAgdGhpcy5ncm91cD8uZ3JvdXBJZCA/P1xyXG4gICAgICB0aGlzLmdyb3Vwc1NlcnZpY2UuZ2V0U2VsZWN0ZWRHcm91cEluZm8oKT8uZ3JvdXBJZDtcclxuICAgIGlmICghZ3JvdXBJZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgY29uc3QgcGF5bG9hZDogSW50ZXJlc3RlZFJvc3RlcnNSZXF1ZXN0UGF5bG9hZCA9IHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIHNlYXJjaEJ5TmFtZU9yRW1haWw6ICcnLFxyXG4gICAgICAgIG9mZnNldDogdGhpcy5wYWdlSW5kZXggKiB0aGlzLnBhZ2luYXRvckNvbmZpZy5yZWNvcmRzUGVyUGFnZSxcclxuICAgICAgICBwYWdlU2l6ZTogdGhpcy5wYWdpbmF0b3JDb25maWcucmVjb3Jkc1BlclBhZ2UsXHJcbiAgICAgICAgc29ydGVkQnk6IHRoaXMuc29ydGVkQnksXHJcbiAgICAgICAgc29ydGVkT3JkZXJCeTogdGhpcy5zb3J0ZWRPcmRlckJ5LFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZVxyXG4gICAgICAuZ2V0SW50ZXJlc3RSZXNwb25zZXNCeUdyb3VwKGdyb3VwSWQsIHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHJlc3BvbnNlPy50b3RhbFJlY29yZHMgPz8gMDtcclxuICAgICAgICAgIHRoaXMucGFnaW5hdG9yQ29uZmlnID0ge1xyXG4gICAgICAgICAgICAuLi50aGlzLnBhZ2luYXRvckNvbmZpZyxcclxuICAgICAgICAgICAgdG90YWxSZWNvcmRzOiB0aGlzLnRvdGFsUmVjb3JkcyxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0aGlzLnJvc3RlcnMgPSAocmVzcG9uc2U/LmRhdGEgPz8gW10pLm1hcCgodmlldykgPT5cclxuICAgICAgICAgICAgdGhpcy5tYXBUb1Jvc3Rlcih2aWV3KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy5yb3N0ZXJzO1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMucm9zdGVycyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy50YWJsZURhdGEgPSBbXTtcclxuICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gMDtcclxuICAgICAgICAgIHRoaXMucGFnaW5hdG9yQ29uZmlnID0geyAuLi50aGlzLnBhZ2luYXRvckNvbmZpZywgdG90YWxSZWNvcmRzOiAwIH07XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvciwgZmFsc2UpO1xyXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25QYWdpbmF0aW9uQ2hhbmdlKGV2ZW50OiBQYWdlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMucGFnZUluZGV4ID0gZXZlbnQucGFnZUluZGV4O1xyXG4gICAgdGhpcy5wYWdpbmF0b3JDb25maWcgPSB7XHJcbiAgICAgIC4uLnRoaXMucGFnaW5hdG9yQ29uZmlnLFxyXG4gICAgICByZWNvcmRzUGVyUGFnZTogZXZlbnQucGFnZVNpemUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5sb2FkSW50ZXJlc3RlZFJvc3RlcnMoKTtcclxuICB9XHJcblxyXG4gIG9uU29ydENoYW5nZShldmVudDogU29ydCk6IHZvaWQge1xyXG4gICAgdGhpcy5zb3J0ZWRCeSA9IGV2ZW50LmRpcmVjdGlvbiA/IGV2ZW50LmFjdGl2ZSA6IHRoaXMuZGVmYXVsdFNvcnRlZENvbHVtbjtcclxuICAgIHRoaXMuc29ydGVkT3JkZXJCeSA9IGV2ZW50LmRpcmVjdGlvbiB8fCB0aGlzLmRlZmF1bHRDb2x1bW5Tb3J0RGlyZWN0aW9uO1xyXG4gICAgdGhpcy5wYWdlSW5kZXggPSAwO1xyXG4gICAgdGhpcy5sb2FkSW50ZXJlc3RlZFJvc3RlcnMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1hcHMgYSBiYWNrZW5kIHtAbGluayBHcm91cEludGVyZXN0UmVzcG9uc2VWaWV3fSB0byB0aGUgZmxhdHRlbmVkXHJcbiAgICoge0BsaW5rIEludGVyZXN0ZWRSb3N0ZXJ9IHJvdyB0aGUgdGFibGUgcmVuZGVyczogYWZmaWxpYXRpb24gb3JnIG5hbWVzIGFyZVxyXG4gICAqIGpvaW5lZCBpbnRvIHRoZSBhZmZpbGlhdGlvbnMgbGlzdCwgdGhlIGFzc2lnbmVkIG1lbWJlcnNoaXAgbGV2ZWwgKGlmIGFueSlcclxuICAgKiBiZWNvbWVzIHRoZSByb2xlIG5hbWUg4oCUIHdoaWNoIHRoZSBNZW1iZXIgTGV2ZWwgZHJvcGRvd24gYmluZHMgYXMgaXRzXHJcbiAgICogcHJlLXNlbGVjdGVkIHZhbHVlIOKAlCB0aGUgc3VibWl0dGVkIHRpbWVzdGFtcCBpcyBmb3JtYXR0ZWQgZm9yIGRpc3BsYXksIGFuZFxyXG4gICAqIHRoZSBpbnRlcmVzdCBpZCBpcyBjYXJyaWVkIHRocm91Z2ggZm9yIHRoZSByZXNwb25zZXMgZGlhbG9nIGFuZCB0aGUgbGV2ZWxcclxuICAgKiBvdmVycmlkZS5cclxuICAgKiBAcGFyYW0ge0dyb3VwSW50ZXJlc3RSZXNwb25zZVZpZXd9IHZpZXdcclxuICAgKiBAcmV0dXJuIHtJbnRlcmVzdGVkUm9zdGVyfVxyXG4gICAqIEBtZW1iZXJvZiBJbnRlcmVzdGVkUm9zdGVyc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgbWFwVG9Sb3N0ZXIodmlldzogR3JvdXBJbnRlcmVzdFJlc3BvbnNlVmlldyk6IEludGVyZXN0ZWRSb3N0ZXIge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaW50ZXJlc3RJZDogdmlldz8uaW50ZXJlc3RJZCxcclxuICAgICAgdXNlcklkOiB2aWV3Py51c2VySWQsXHJcbiAgICAgIG5hbWU6IHZpZXc/Lm5hbWUsXHJcbiAgICAgIGVtYWlsOiB2aWV3Py5lbWFpbCxcclxuICAgICAgYWZmaWxpYXRpb25zOiAodmlldz8uYWZmaWxpYXRpb24gPz8gW10pLm1hcCgob3JnKSA9PiBvcmc/Lm9yZ05hbWUpLFxyXG4gICAgICBzdWJtaXR0ZWRPbjogdGhpcy5mb3JtYXRTdWJtaXR0ZWRPbih2aWV3Py5zdWJtaXR0ZWRPbiksXHJcbiAgICAgIG1lbWJlckxldmVsOiB2aWV3Py5tZW1iZXJMZXZlbD8ubGVuZ3RoXHJcbiAgICAgICAgPyB2aWV3Lm1lbWJlckxldmVsWzBdPy5yb2xlTmFtZSA/PyBudWxsXHJcbiAgICAgICAgOiBudWxsLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1hdHMgdGhlIGJhY2tlbmQgc3VibWl0dGVkIHRpbWVzdGFtcCAoSVNPIGRhdGUgc3RyaW5nKSBmb3IgZGlzcGxheSxcclxuICAgKiBmYWxsaW5nIGJhY2sgdG8gdGhlIHJhdyB2YWx1ZSB3aGVuIGl0IGlzIG5vdCBhIHBhcnNlYWJsZSBkYXRlLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdWJtaXR0ZWRPblxyXG4gICAqIEByZXR1cm4ge3N0cmluZ31cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RlZFJvc3RlcnNDb21wb25lbnRcclxuICAgKi9cclxuICBwcml2YXRlIGZvcm1hdFN1Ym1pdHRlZE9uKHN1Ym1pdHRlZE9uOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFzdWJtaXR0ZWRPbikgcmV0dXJuICcnO1xyXG4gICAgLy8gUGFyc2Ugd2l0aCBFWFBMSUNJVCBmb3JtYXRzIHJhdGhlciB0aGFuIGBuZXcgRGF0ZSguLi4pYC4gVGhlIGJhY2tlbmQgc2VuZHNcclxuICAgIC8vIHRoZSBkYXRlIGFzIGRkL01NL3l5eXkgKGUuZy4gXCIyNy8xMC8yMDI2XCIpOyBgbmV3IERhdGUoXCIyNy8xMC8yMDI2XCIpYCBpc1xyXG4gICAgLy8gSW52YWxpZCBpbiBKUyAoaXQgZXhwZWN0cyBNTS9ERC9ZWVlZLCBhbmQgbW9udGggMjcgaXMgb3V0IG9mIHJhbmdlKSwgd2hpY2hcclxuICAgIC8vIHByZXZpb3VzbHkgZm9yY2VkIHRoZSBmYWxsYmFjayBhbmQgbGVmdCB0aGUgdmFsdWUgdW5mb3JtYXR0ZWQuIFRyeSB0aGVcclxuICAgIC8vIGRkL01NL3l5eXkgZm9ybSBmaXJzdCwgdGhlbiBJU08sIHRoZW4gYSBuYXRpdmUtRGF0ZSBsYXN0IHJlc29ydCwgdGhlblxyXG4gICAgLy8gcmVmb3JtYXQgdG8gdGhlIGFwcCdzIHN0YW5kYXJkIGRpc3BsYXkgZm9ybWF0IChERCBNTU0gWVlZWSDihpIgXCIyNyBPY3QgMjAyNlwiKS5cclxuICAgIGxldCBwYXJzZWQgPSBEYXRlVGltZS5mcm9tRm9ybWF0KHN1Ym1pdHRlZE9uLCAnZGQvTU0veXl5eScsIHtcclxuICAgICAgem9uZTogJ3V0YycsXHJcbiAgICB9KTtcclxuICAgIGlmICghcGFyc2VkLmlzVmFsaWQpIHtcclxuICAgICAgcGFyc2VkID0gRGF0ZVRpbWUuZnJvbUlTTyhzdWJtaXR0ZWRPbiwgeyB6b25lOiAndXRjJyB9KTtcclxuICAgIH1cclxuICAgIGlmICghcGFyc2VkLmlzVmFsaWQpIHtcclxuICAgICAgY29uc3QganNEYXRlID0gbmV3IERhdGUoc3VibWl0dGVkT24pO1xyXG4gICAgICBpZiAoIWlzTmFOKGpzRGF0ZS5nZXRUaW1lKCkpKSB7XHJcbiAgICAgICAgcGFyc2VkID0gRGF0ZVRpbWUuZnJvbUpTRGF0ZShqc0RhdGUsIHsgem9uZTogJ3V0YycgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBwYXJzZWQuaXNWYWxpZCA/IHBhcnNlZC50b0Zvcm1hdCgnZGQgTU1NIHl5eXknKSA6IHN1Ym1pdHRlZE9uO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9hZHMgdGhlIE1lbWJlciBMZXZlbCBkcm9wZG93biBvcHRpb25zIGZyb20gdGhlIHJvbGVzIEFQSVxyXG4gICogKHtAY29kZSBHRVQgL2dyb3Vwcy9jb25maWcvcm9sZXNCeUdyb3VwVHlwZS97Z3JvdXBUeXBlfX0pLCBrZWVwaW5nIG9ubHkgcm9sZXMgd2hvc2VcclxuICAgKiB7QGNvZGUgcm9sZVR5cGVOYW1lfSBpcyBcIk1lbWJlciBMZXZlbFwiIGFuZCBtYXBwaW5nIGVhY2ggdG8gYVxyXG4gICAqIHtAbGluayBTZWxlY3RPcHRpb259ICh7QGNvZGUgeyBpZDogcm9sZUlkLCBuYW1lOiByb2xlTmFtZSB9fSkuXHJcbiAgICogQG1lbWJlcm9mIEludGVyZXN0ZWRSb3N0ZXJzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsb2FkTWVtYmVyTGV2ZWxPcHRpb25zKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZ3JvdXBUeXBlID1cclxuICAgICAgdGhpcy5ncm91cD8uZ3JvdXBUeXBlID8/XHJcbiAgICAgIHRoaXMuZ3JvdXBzU2VydmljZS5nZXRTZWxlY3RlZEdyb3VwSW5mbygpPy5ncm91cFR5cGU7XHJcbiAgICBpZiAoIWdyb3VwVHlwZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlXHJcbiAgICAgIC5nZXRHcm91cFR5cGVSb2xlcyhncm91cFR5cGUpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5tZW1iZXJMZXZlbE9wdGlvbnMgPSAodGhpcy5ncm91cHNTZXJ2aWNlLmdldE1lbWJlclR5cGVzKCkgPz8gW10pXHJcbiAgICAgICAgICAgIC5tYXAoKHJvbGUpID0+ICh7IGlkOiByb2xlLnJvbGVJZCwgbmFtZTogcm9sZS5yb2xlTmFtZSB9KSk7XHJcbiAgICAgICAgICB0aGlzLmJ1aWxkQ29sdW1uU2NoZW1hKCk7XHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2UuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBlcnNpc3RzIHRoZSBtZW1iZXJzaGlwLWxldmVsIG92ZXJyaWRlIHdoZW4gdGhlIGFkbWluIHBpY2tzIGEgdmFsdWUgaW4gYVxyXG4gICAqIHJvdydzIE1lbWJlciBMZXZlbCBkcm9wZG93biAoYm91bmQgdG8gdGhlIHJldXNhYmxlIHRhYmxlJ3NcclxuICAgKiBgcm93RHJvcGRvd25DaGFuZ2VgIG91dHB1dCkuIEJ1aWxkcyB0aGUgcmVxdWVzdCBmcm9tIHRoZSBkaWFsb2cncyBjdXJyZW50XHJcbiAgICogZ3JvdXAgaWQsIHRoZSByb3cncyB1c2VyIGlkIGFuZCB0aGUgc2VsZWN0ZWQgb3B0aW9uJ3MgaWQgKHRoZSByb2xlIGlkKSwgYW5kXHJcbiAgICogcG9zdHMgaXQgdG8gdGhlIGJhY2tlbmQuIFRoZSByb3cncyBkaXNwbGF5ZWQgbGV2ZWwgaXMgdXBkYXRlZCBvcHRpbWlzdGljYWxseVxyXG4gICAqIGFuZCByZXZlcnRlZCBpZiB0aGUgc2F2ZSBmYWlscy5cclxuICAgKiBAcGFyYW0ge3sgcm93OiBJbnRlcmVzdGVkUm9zdGVyOyBvcHRpb246IFNlbGVjdE9wdGlvbiB9fSBldmVudFxyXG4gICAqIEBtZW1iZXJvZiBJbnRlcmVzdGVkUm9zdGVyc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uTWVtYmVyTGV2ZWxDaGFuZ2UoZXZlbnQ6IHtcclxuICAgIHJvdzogSW50ZXJlc3RlZFJvc3RlcjtcclxuICAgIG9wdGlvbjogU2VsZWN0T3B0aW9uO1xyXG4gIH0pOiB2b2lkIHtcclxuICAgIGNvbnN0IHJvdyA9IGV2ZW50Py5yb3c7XHJcbiAgICBjb25zdCBvcHRpb24gPSBldmVudD8ub3B0aW9uO1xyXG4gICAgY29uc3QgZ3JvdXBJZCA9XHJcbiAgICAgIHRoaXMuZ3JvdXA/Lmdyb3VwSWQgPz9cclxuICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlLmdldFNlbGVjdGVkR3JvdXBJbmZvKCk/Lmdyb3VwSWQ7XHJcbiAgICBjb25zdCByb2xlSWQgPSBvcHRpb24/LmlkIGFzIHN0cmluZztcclxuICAgIGlmICghcm93Py51c2VySWQgfHwgIWdyb3VwSWQgfHwgIXJvbGVJZCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHByZXZpb3VzTGV2ZWwgPSByb3cubWVtYmVyTGV2ZWw7XHJcbiAgICAvLyBPcHRpbWlzdGljYWxseSByZWZsZWN0IHRoZSBzZWxlY3Rpb24gaW4gdGhlIHJvdy5cclxuICAgIHJvdy5tZW1iZXJMZXZlbCA9IG9wdGlvbj8ubmFtZSA/PyByb3cubWVtYmVyTGV2ZWw7XHJcblxyXG4gICAgY29uc3QgcGF5bG9hZDogVXBkYXRlTWVtYmVyTGV2ZWxQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZ3JvdXBJZCxcclxuICAgICAgICB1c2VySWQ6IHJvdy51c2VySWQsXHJcbiAgICAgICAgcm9sZUlkLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZVxyXG4gICAgICAudXBkYXRlSW50ZXJlc3RNZW1iZXJMZXZlbChwYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIC8vIFJldmVydCB0aGUgb3B0aW1pc3RpYyBjaGFuZ2Ugb24gZmFpbHVyZSBhbmQgc3VyZmFjZSB0aGUgZXJyb3IuXHJcbiAgICAgICAgICByb3cubWVtYmVyTGV2ZWwgPSBwcmV2aW91c0xldmVsO1xyXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVucyB0aGUgXCJWaWV3IFJlc3BvbnNlc1wiIGRpYWxvZyBmb3IgYSByb3N0ZXIgcm93IChib3VuZCB0byB0aGUgcmV1c2FibGVcclxuICAgKiB0YWJsZSdzIExJTksgb3V0cHV0KSB1c2luZyB0aGUgc2hhcmVkIHtAbGluayBNb2RhbENvbXBvbmVudH0uIFRoZSBtb2RhbFxyXG4gICAqIHN1cHBsaWVzIHRoZSB0aXRsZSByb3cgYW5kIFggY2xvc2U7IHRoZSByZXF1ZXN0ZXIncyBzdG9yZWQgaW50ZXJlc3QtZm9ybVxyXG4gICAqIHJlc3BvbnNlcyBhcmUgcmVuZGVyZWQgYnkge0BsaW5rIEludGVyZXN0UmVzcG9uc2VzQ29tcG9uZW50fSwgd2hpY2ggbG9hZHNcclxuICAgKiB0aGVtIGZyb20gdGhlIGJhY2tlbmQgdXNpbmcgdGhlIHJvdydzIHtAY29kZSBpbnRlcmVzdElkfSBwYXNzZWQgdmlhIHRoZVxyXG4gICAqIE1vZGFsQ29tcG9uZW50IGR5bmFtaWMtaW5wdXQgcGF0dGVybi5cclxuICAgKiBAcGFyYW0ge0ludGVyZXN0ZWRSb3N0ZXJ9IHJvd1xyXG4gICAqIEBtZW1iZXJvZiBJbnRlcmVzdGVkUm9zdGVyc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRm9ybUxpbmtDbGljayhyb3c6IEludGVyZXN0ZWRSb3N0ZXIpOiB2b2lkIHtcclxuICAgIGlmICghcm93Py5pbnRlcmVzdElkKSByZXR1cm47XHJcbiAgICBjb25zdCBkaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICBoZWFkaW5nOiB0aGlzLnRleHRzPy5yZXNwb25zZXM/LnRpdGxlLFxyXG4gICAgICBzdWJIZWFkaW5nOiB0aGlzLmdyb3VwPy5ncm91cE5hbWUsXHJcbiAgICAgIGhlYWRpbmdDbGFzczogJ2llZWVzYS10aXRsZS1sZy0yNCcsXHJcbiAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICAgIGNvbXBvbmVudFJlZmVyZW5jZTogSW50ZXJlc3RSZXNwb25zZXNDb21wb25lbnQsXHJcbiAgICAgIG1vZGFsVHlwZTogTW9kYWxUeXBlLkZPUk0sXHJcbiAgICAgIGRhdGEyRHluYW1pY0NvbXBvbmVudDogeyBpbnRlcmVzdElkOiByb3cuaW50ZXJlc3RJZCB9LFxyXG4gICAgICBkYXRhSW5wdXROYW1lOiAnY29tcG9uZW50RGF0YScsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5kaWFsb2cub3BlbihNb2RhbENvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiBkaWFsb2dPcHRpb25zLFxyXG4gICAgICBwYW5lbENsYXNzOiBbJ2llZWVzYS1tb2RhbC1kaWFsb2cnLCAnaWVlZXNhLWludGVyZXN0LXJlc3BvbnNlcy1kaWFsb2cnXSxcclxuICAgICAgd2lkdGg6ICc4MDBweCcsXHJcbiAgICAgIG1heFdpZHRoOiAnOTV2dycsXHJcbiAgICAgIG1heEhlaWdodDogJzkwdmgnLFxyXG4gICAgICBhcmlhTW9kYWw6IHRydWUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZXMgdGhlIHJldXNhYmxlLXRhYmxlIGNvbHVtbnMgZm9yIHRoZSBJbnRlcmVzdGVkIFJvc3RlcnMgbGlzdC4gRXZlcnlcclxuICAgKiBgY2VsbERhdGFgL2BzZWxlY3RlZE9wdGlvbmAgaXMgYSBgKHJvdykgPT4gLi4uYCBhY2Nlc3NvciwgbWF0Y2hpbmcgdGhlXHJcbiAgICogc2hhcmVkIHRhYmxlJ3MgY29udHJhY3QuIE1lbWJlciBMZXZlbCBpcyB0aGUgRFJPUERPV04gY29sdW1uIHNlZWRlZCB3aXRoIHRoZVxyXG4gICAqIGNvbmZpZ3VyZWQgbGV2ZWxzIHBsdXMgXCJOb25lXCI7IEZvcm0gaXMgYSBMSU5LIHRoYXQgb3BlbnMgdGhlIHJlc3BvbnNlc1xyXG4gICAqIGRpYWxvZy5cclxuICAgKiBAbWVtYmVyb2YgSW50ZXJlc3RlZFJvc3RlcnNDb21wb25lbnRcclxuICAgKi9cclxuICBwcml2YXRlIGJ1aWxkQ29sdW1uU2NoZW1hKCk6IHZvaWQge1xyXG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMudGV4dHM/LmNvbHVtbnM7XHJcbiAgICB0aGlzLmNvbHVtblNjaGVtYSA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAxLFxyXG4gICAgICAgIGNvbHVtbkRlZjogJ25hbWUnLFxyXG4gICAgICAgIGhlYWRpbmc6IGNvbHVtbnM/Lm5hbWUsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgaXNTb3J0YWJsZUNvbHVtbjogdHJ1ZSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAocm93OiBhbnkpID0+IHJvdy5uYW1lLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDIsXHJcbiAgICAgICAgY29sdW1uRGVmOiAnZW1haWwnLFxyXG4gICAgICAgIGhlYWRpbmc6IGNvbHVtbnM/LmVtYWlsLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgIGlzU29ydGFibGVDb2x1bW46IHRydWUsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKHJvdzogYW55KSA9PiByb3cuZW1haWwsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogMyxcclxuICAgICAgICBjb2x1bW5EZWY6ICdhZmZpbGlhdGlvbnMnLFxyXG4gICAgICAgIGhlYWRpbmc6IGNvbHVtbnM/LmFmZmlsaWF0aW9ucyxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAocm93OiBhbnkpID0+IChyb3cuYWZmaWxpYXRpb25zIHx8IFtdKS5qb2luKCcsICcpLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDQsXHJcbiAgICAgICAgY29sdW1uRGVmOiAnc3VibWl0dGVkT24nLFxyXG4gICAgICAgIGhlYWRpbmc6IGNvbHVtbnM/LnN1Ym1pdHRlZE9uLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgIGlzU29ydGFibGVDb2x1bW46IHRydWUsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKHJvdzogYW55KSA9PiByb3cuc3VibWl0dGVkT24sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogNSxcclxuICAgICAgICBjb2x1bW5EZWY6ICdtZW1iZXJMZXZlbCcsXHJcbiAgICAgICAgaGVhZGluZzogY29sdW1ucz8ubWVtYmVyTGV2ZWwsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLkRST1BET1dOLFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChyb3c6IGFueSkgPT4gcm93Lm1lbWJlckxldmVsLFxyXG4gICAgICAgIGRyb3Bkb3duT3B0aW9uczogdGhpcy5tZW1iZXJMZXZlbE9wdGlvbnMsXHJcbiAgICAgICAgZHJvcGRvd25QbGFjZWhvbGRlcjogdGhpcy50ZXh0cz8ubWVtYmVyTGV2ZWxQbGFjZWhvbGRlcixcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIHNlbGVjdGVkT3B0aW9uOiAocm93OiBhbnkpID0+XHJcbiAgICAgICAgICB0aGlzLm1lbWJlckxldmVsT3B0aW9ucy5maW5kKChvKSA9PiBvLm5hbWUgPT09IHJvdy5tZW1iZXJMZXZlbCkgPz9cclxuICAgICAgICAgIG51bGwsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogNixcclxuICAgICAgICBjb2x1bW5EZWY6ICdmb3JtJyxcclxuICAgICAgICBoZWFkaW5nOiBjb2x1bW5zPy5mb3JtLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5MSU5LLFxyXG4gICAgICAgIGNlbGxEYXRhOiAoKSA9PiB0aGlzLnRleHRzPy52aWV3TGFiZWwsXHJcbiAgICAgICAgYXJpYUxhYmVsOiAocm93OiBJbnRlcmVzdGVkUm9zdGVyKSA9PlxyXG4gICAgICAgICAgYCR7dGhpcy50ZXh0cz8udmlld0FyaWFMYWJlbFByZWZpeH0gJHtyb3c/Lm5hbWUgPz8gJyd9YC50cmltKCksXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gIH1cclxufVxyXG4iLCI8c2VjdGlvbiBjbGFzcz1cImllZWVzYS1pbnRlcmVzdGVkLXJvc3RlcnNcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInRleHRzPy5yZWdpb25BcmlhTGFiZWxcIj5cclxuICA8cCBjbGFzcz1cImllZWVzYS1pbnRlcmVzdGVkLXJvc3RlcnNfX2NvdW50XCI+e3sgdG90YWxSZWNvcmRzIH19IHt7IHRleHRzPy5jb3VudFN1ZmZpeCB9fTwvcD5cclxuICA8aWVlZXNhLWRhdGEtdGFibGVcclxuICAgIFt0YWJsZURhdGFJbmZvXT1cInRhYmxlRGF0YVwiXHJcbiAgICBbY29sdW1uU2NoZW1hSW5mb109XCJjb2x1bW5TY2hlbWFcIlxyXG4gICAgW3RhYmxlQWN0aW9uc109XCJ0YWJsZUFjdGlvbnNcIlxyXG4gICAgW3BhZ2luYXRvckNvbmZpZ109XCJwYWdpbmF0b3JDb25maWdcIlxyXG4gICAgW3BhZ2VJbmRleF09XCJwYWdlSW5kZXhcIlxyXG4gICAgW3BhZ2VTaXplXT1cInBhZ2luYXRvckNvbmZpZy5yZWNvcmRzUGVyUGFnZVwiXHJcbiAgICBbZGVmYXVsdFNvcnRlZENvbHVtbl09XCJkZWZhdWx0U29ydGVkQ29sdW1uXCJcclxuICAgIFtkZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvbl09XCJkZWZhdWx0Q29sdW1uU29ydERpcmVjdGlvblwiXHJcbiAgICBbaXNDbGVhclNvcnROZWVkZWRdPVwiZmFsc2VcIlxyXG4gICAgKHBhZ2luYXRpb25DaGFuZ2UpPVwib25QYWdpbmF0aW9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgKHNvcnRDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgKHJvd0xpbmspPVwib25Gb3JtTGlua0NsaWNrKCRldmVudClcIlxyXG4gICAgKHJvd0Ryb3Bkb3duQ2hhbmdlKT1cIm9uTWVtYmVyTGV2ZWxDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgPjwvaWVlZXNhLWRhdGEtdGFibGU+XHJcbjwvc2VjdGlvbj5cclxuIl19
|
|
@@ -5883,11 +5883,36 @@ class InterestResponsesComponent {
|
|
|
5883
5883
|
const value = response?.answerValue;
|
|
5884
5884
|
if (Array.isArray(value))
|
|
5885
5885
|
return value.join(', ');
|
|
5886
|
+
// DATE answers arrive as a raw JS Date string (e.g.
|
|
5887
|
+
// "Thu Oct 29 2026 00:00:00 GMT+0000"). Display the date portion only, in
|
|
5888
|
+
// the app's standard display format (DD MMM YYYY, e.g. "29 Oct 2026"),
|
|
5889
|
+
// dropping the 00:00:00 time and timezone. Falls back to the raw value if
|
|
5890
|
+
// it cannot be parsed, so a non-standard string is never silently blanked.
|
|
5891
|
+
if (response?.fieldTypeSnapshot === InterestFieldType.DATE && value) {
|
|
5892
|
+
return this.formatDateAnswer(value);
|
|
5893
|
+
}
|
|
5886
5894
|
if (response?.fieldTypeSnapshot === InterestFieldType.CHECKBOX && value) {
|
|
5887
5895
|
return value;
|
|
5888
5896
|
}
|
|
5889
5897
|
return value ?? '';
|
|
5890
5898
|
}
|
|
5899
|
+
/**
|
|
5900
|
+
* Formats a DATE answer value to the application's display date format
|
|
5901
|
+
* (DD MMM YYYY), dropping the time/timezone. The BE sends a JS Date string
|
|
5902
|
+
* such as "Thu Oct 29 2026 00:00:00 GMT+0000"; this parses it as a native
|
|
5903
|
+
* date and reformats it. Returns the original string when it cannot be parsed.
|
|
5904
|
+
* @param {string} value - The raw DATE answer string from the backend.
|
|
5905
|
+
* @return {string} The date formatted as "DD MMM YYYY", or the original value.
|
|
5906
|
+
* @memberof InterestResponsesComponent
|
|
5907
|
+
*/
|
|
5908
|
+
formatDateAnswer(value) {
|
|
5909
|
+
const jsDate = new Date(value);
|
|
5910
|
+
if (isNaN(jsDate.getTime())) {
|
|
5911
|
+
return value;
|
|
5912
|
+
}
|
|
5913
|
+
const parsed = DateTime.fromJSDate(jsDate, { zone: 'utc' });
|
|
5914
|
+
return parsed.isValid ? parsed.toFormat('dd MMM yyyy') : value;
|
|
5915
|
+
}
|
|
5891
5916
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InterestResponsesComponent, deps: [{ token: GroupsService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5892
5917
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: InterestResponsesComponent, isStandalone: true, selector: "ieeesa-interest-responses", inputs: { componentData: "componentData" }, ngImport: i0, template: "<section class=\"ieeesa-interest-responses\">\r\n <p class=\"ieeesa-interest-responses__error ieeesa-body-md-16\" *ngIf=\"errorMessage\" role=\"alert\">{{ errorMessage }}</p>\r\n <dl *ngIf=\"submissionAnswers.length; else noAnswers\">\r\n <div class=\"ieeesa-interest-responses__answer\" *ngFor=\"let answer of submissionAnswers\">\r\n <dt class=\"ieeesa-body-md-16\">{{ answer.label }}</dt>\r\n <dd class=\"ieeesa-title-md-18\">{{ answer.value }}</dd>\r\n </div>\r\n </dl>\r\n <ng-template #noAnswers>\r\n <p class=\"ieeesa-interest-responses__empty ieeesa-body-md-16\" *ngIf=\"!errorMessage && !isLoading\">{{ texts?.responses?.emptyMessage }}</p>\r\n </ng-template>\r\n</section>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-modal-dialog.ieeesa-interest-responses-dialog .mat-mdc-dialog-surface{border-radius:8px;overflow:hidden}.ieeesa-modal-dialog.ieeesa-interest-responses-dialog .ieeesa-modal{position:relative;display:flex;flex-direction:column;max-height:90vh;padding:0}.ieeesa-modal-dialog.ieeesa-interest-responses-dialog .ieeesa-modal .ieeesa-modal-title{flex:0 0 auto;padding:16px 24px!important;border-bottom:1px solid #d7d6d6}.ieeesa-modal-dialog.ieeesa-interest-responses-dialog .ieeesa-modal .ieeesa-modal-title:before{display:none}.ieeesa-modal-dialog.ieeesa-interest-responses-dialog .ieeesa-modal .ieeesa-modal-title__sub-heading{margin-top:4px!important;padding-bottom:0;color:#63666a!important;font-size:1.125rem!important;line-height:24px!important;overflow-wrap:anywhere}.ieeesa-modal-dialog.ieeesa-interest-responses-dialog .ieeesa-modal .mat-mdc-dialog-content{flex:1 1 auto;min-height:0;max-height:none;overflow-y:auto;padding:0 24px 24px!important}.ieeesa-modal-dialog.ieeesa-interest-responses-dialog .ieeesa-modal__close-button{top:16px;right:24px}.ieeesa-interest-responses{color:#1c1b1f;letter-spacing:0}.ieeesa-interest-responses dl{margin:0}.ieeesa-interest-responses__answer{padding:16px 0;border-bottom:1px solid #d7d6d6}.ieeesa-interest-responses dt{margin:0 0 4px;color:#63666a!important}.ieeesa-interest-responses dd{margin:0;color:#1c1b1f!important;overflow-wrap:anywhere}.ieeesa-interest-responses__empty{margin:16px 0;color:#63666a!important}.ieeesa-interest-responses__error{margin:16px 0;color:#ba0c2f!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
5893
5918
|
}
|
|
@@ -6084,10 +6109,25 @@ class InterestedRostersComponent {
|
|
|
6084
6109
|
formatSubmittedOn(submittedOn) {
|
|
6085
6110
|
if (!submittedOn)
|
|
6086
6111
|
return '';
|
|
6087
|
-
|
|
6088
|
-
|
|
6089
|
-
|
|
6090
|
-
|
|
6112
|
+
// Parse with EXPLICIT formats rather than `new Date(...)`. The backend sends
|
|
6113
|
+
// the date as dd/MM/yyyy (e.g. "27/10/2026"); `new Date("27/10/2026")` is
|
|
6114
|
+
// Invalid in JS (it expects MM/DD/YYYY, and month 27 is out of range), which
|
|
6115
|
+
// previously forced the fallback and left the value unformatted. Try the
|
|
6116
|
+
// dd/MM/yyyy form first, then ISO, then a native-Date last resort, then
|
|
6117
|
+
// reformat to the app's standard display format (DD MMM YYYY → "27 Oct 2026").
|
|
6118
|
+
let parsed = DateTime.fromFormat(submittedOn, 'dd/MM/yyyy', {
|
|
6119
|
+
zone: 'utc',
|
|
6120
|
+
});
|
|
6121
|
+
if (!parsed.isValid) {
|
|
6122
|
+
parsed = DateTime.fromISO(submittedOn, { zone: 'utc' });
|
|
6123
|
+
}
|
|
6124
|
+
if (!parsed.isValid) {
|
|
6125
|
+
const jsDate = new Date(submittedOn);
|
|
6126
|
+
if (!isNaN(jsDate.getTime())) {
|
|
6127
|
+
parsed = DateTime.fromJSDate(jsDate, { zone: 'utc' });
|
|
6128
|
+
}
|
|
6129
|
+
}
|
|
6130
|
+
return parsed.isValid ? parsed.toFormat('dd MMM yyyy') : submittedOn;
|
|
6091
6131
|
}
|
|
6092
6132
|
/**
|
|
6093
6133
|
* Loads the Member Level dropdown options from the roles API
|