@valtimo/plugin 12.20.1 → 12.21.1
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/plugins/besluiten-api/besluiten-api-plugin.module.mjs +25 -6
- package/esm2022/lib/plugins/besluiten-api/besluiten-api-plugin.specification.mjs +35 -10
- package/esm2022/lib/plugins/besluiten-api/components/get-besluit/get-besluit-configuration.component.mjs +75 -0
- package/esm2022/lib/plugins/besluiten-api/components/patch-zaak-besluit/patch-zaak-besluit-configuration.component.mjs +132 -0
- package/esm2022/lib/plugins/besluiten-api/models/config.mjs +1 -1
- package/esm2022/lib/plugins/besluiten-api/models/patch-besluit-properties.mjs +27 -0
- package/esm2022/lib/plugins/zaken-api/components/get-zaakbesluiten/get-zaakbesluiten-configuration.component.mjs +75 -0
- package/esm2022/lib/plugins/zaken-api/components/set-zaak-status/set-zaak-status-configuration.component.mjs +154 -12
- package/esm2022/lib/plugins/zaken-api/models/config.mjs +1 -1
- package/esm2022/lib/plugins/zaken-api/zaken-api-plugin.module.mjs +17 -6
- package/esm2022/lib/plugins/zaken-api/zaken-api-plugin.specification.mjs +24 -1
- package/esm2022/public-api.mjs +4 -1
- package/fesm2022/valtimo-plugin.mjs +534 -34
- package/fesm2022/valtimo-plugin.mjs.map +1 -1
- package/lib/plugins/besluiten-api/besluiten-api-plugin.module.d.ts +8 -6
- package/lib/plugins/besluiten-api/besluiten-api-plugin.module.d.ts.map +1 -1
- package/lib/plugins/besluiten-api/besluiten-api-plugin.specification.d.ts.map +1 -1
- package/lib/plugins/besluiten-api/components/get-besluit/get-besluit-configuration.component.d.ts +24 -0
- package/lib/plugins/besluiten-api/components/get-besluit/get-besluit-configuration.component.d.ts.map +1 -0
- package/lib/plugins/besluiten-api/components/patch-zaak-besluit/patch-zaak-besluit-configuration.component.d.ts +39 -0
- package/lib/plugins/besluiten-api/components/patch-zaak-besluit/patch-zaak-besluit-configuration.component.d.ts.map +1 -0
- package/lib/plugins/besluiten-api/models/config.d.ts +17 -1
- package/lib/plugins/besluiten-api/models/config.d.ts.map +1 -1
- package/lib/plugins/besluiten-api/models/patch-besluit-properties.d.ts +3 -0
- package/lib/plugins/besluiten-api/models/patch-besluit-properties.d.ts.map +1 -0
- package/lib/plugins/zaken-api/components/get-zaakbesluiten/get-zaakbesluiten-configuration.component.d.ts +24 -0
- package/lib/plugins/zaken-api/components/get-zaakbesluiten/get-zaakbesluiten-configuration.component.d.ts.map +1 -0
- package/lib/plugins/zaken-api/components/set-zaak-status/set-zaak-status-configuration.component.d.ts +18 -2
- package/lib/plugins/zaken-api/components/set-zaak-status/set-zaak-status-configuration.component.d.ts.map +1 -1
- package/lib/plugins/zaken-api/models/config.d.ts +6 -1
- package/lib/plugins/zaken-api/models/config.d.ts.map +1 -1
- package/lib/plugins/zaken-api/zaken-api-plugin.module.d.ts +7 -6
- package/lib/plugins/zaken-api/zaken-api-plugin.module.d.ts.map +1 -1
- package/lib/plugins/zaken-api/zaken-api-plugin.specification.d.ts.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +3 -0
- package/public-api.d.ts.map +1 -1
|
@@ -14,9 +14,11 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
17
|
-
import { BehaviorSubject, combineLatest, filter, of, Subject, switchMap, take, tap, } from 'rxjs';
|
|
17
|
+
import { BehaviorSubject, combineLatest, filter, of, Subject, Subscription, switchMap, take, tap, } from 'rxjs';
|
|
18
|
+
import { CARBON_THEME, CurrentCarbonTheme } from '@valtimo/components';
|
|
18
19
|
import { map } from 'rxjs/operators';
|
|
19
20
|
import { PluginTranslatePipe } from '../../../../pipes';
|
|
21
|
+
import flatpickr from 'flatpickr';
|
|
20
22
|
import * as i0 from "@angular/core";
|
|
21
23
|
import * as i1 from "@valtimo/components";
|
|
22
24
|
import * as i2 from "@valtimo/document";
|
|
@@ -25,15 +27,17 @@ import * as i4 from "../../../../pipes";
|
|
|
25
27
|
import * as i5 from "@angular/common";
|
|
26
28
|
import * as i6 from "carbon-components-angular";
|
|
27
29
|
import * as i7 from "../../../../pipes/plugin-translate/plugin-translate.pipe";
|
|
30
|
+
import * as i8 from "@ngx-translate/core";
|
|
28
31
|
export class SetZaakStatusConfigurationComponent {
|
|
29
32
|
set pluginId(value) {
|
|
30
33
|
this.pluginId$.next(value);
|
|
31
34
|
}
|
|
32
|
-
constructor(modalService, documentService, zakenApiService, pluginTranslatePipe) {
|
|
35
|
+
constructor(modalService, documentService, zakenApiService, pluginTranslatePipe, cdsThemeService) {
|
|
33
36
|
this.modalService = modalService;
|
|
34
37
|
this.documentService = documentService;
|
|
35
38
|
this.zakenApiService = zakenApiService;
|
|
36
39
|
this.pluginTranslatePipe = pluginTranslatePipe;
|
|
40
|
+
this.cdsThemeService = cdsThemeService;
|
|
37
41
|
this.valid = new EventEmitter();
|
|
38
42
|
this.configuration = new EventEmitter();
|
|
39
43
|
this.caseDefinitionSelectItems$ = new BehaviorSubject(null);
|
|
@@ -85,7 +89,10 @@ export class SetZaakStatusConfigurationComponent {
|
|
|
85
89
|
this.loading$.next(false);
|
|
86
90
|
}));
|
|
87
91
|
this.selectedInputOption$ = new BehaviorSubject('selection');
|
|
92
|
+
this.datumStatusGezetSelectedInputOption$ = new BehaviorSubject('now');
|
|
93
|
+
this.datePickerInvalid$ = new BehaviorSubject(false);
|
|
88
94
|
this.pluginId$ = new BehaviorSubject('');
|
|
95
|
+
this._subscriptions = new Subscription();
|
|
89
96
|
this.inputTypeOptions$ = this.pluginId$.pipe(filter(pluginId => !!pluginId), switchMap(pluginId => combineLatest([
|
|
90
97
|
this.pluginTranslatePipe.transform('selection', pluginId),
|
|
91
98
|
this.pluginTranslatePipe.transform('text', pluginId),
|
|
@@ -93,20 +100,46 @@ export class SetZaakStatusConfigurationComponent {
|
|
|
93
100
|
{ value: 'selection', title: selectionTranslation },
|
|
94
101
|
{ value: 'text', title: textTranslation },
|
|
95
102
|
]));
|
|
103
|
+
this.datePickerInputTypeOptions$ = this.pluginId$.pipe(filter(pluginId => !!pluginId), switchMap(pluginId => combineLatest([
|
|
104
|
+
this.pluginTranslatePipe.transform('now', pluginId),
|
|
105
|
+
this.pluginTranslatePipe.transform('selection', pluginId),
|
|
106
|
+
this.pluginTranslatePipe.transform('text', pluginId),
|
|
107
|
+
])), map(([nowTranslation, selectionTranslation, textTranslation]) => [
|
|
108
|
+
{ value: 'now', title: nowTranslation },
|
|
109
|
+
{ value: 'selection', title: selectionTranslation },
|
|
110
|
+
{ value: 'text', title: textTranslation },
|
|
111
|
+
]));
|
|
112
|
+
this.theme$ = this.cdsThemeService.currentTheme$.pipe(map((theme) => theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G100));
|
|
96
113
|
this.formValue$ = new BehaviorSubject(null);
|
|
97
114
|
this.valid$ = new BehaviorSubject(false);
|
|
115
|
+
this.selectedDate = null;
|
|
116
|
+
this.selectedTime = null;
|
|
98
117
|
}
|
|
99
118
|
ngOnInit() {
|
|
100
119
|
this.openSaveSubscription();
|
|
120
|
+
this.prefillToday();
|
|
101
121
|
}
|
|
102
122
|
ngOnDestroy() {
|
|
103
123
|
this.saveSubscription?.unsubscribe();
|
|
124
|
+
this._subscriptions.unsubscribe();
|
|
104
125
|
}
|
|
105
126
|
formValueChange(formValue) {
|
|
106
|
-
this.formValue$.
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
127
|
+
const currentFormValue = this.formValue$.value ?? {};
|
|
128
|
+
const updatedFormValue = {
|
|
129
|
+
...currentFormValue,
|
|
130
|
+
...formValue,
|
|
131
|
+
};
|
|
132
|
+
this.formValue$.next(updatedFormValue);
|
|
133
|
+
this.handleValid(updatedFormValue);
|
|
134
|
+
if (updatedFormValue.inputTypeZaakStatusToggle) {
|
|
135
|
+
this.selectedInputOption$.next(updatedFormValue.inputTypeZaakStatusToggle);
|
|
136
|
+
}
|
|
137
|
+
if (updatedFormValue.inputDatumStatusGezetToggle) {
|
|
138
|
+
this.datumStatusGezetSelectedInputOption$.next(updatedFormValue.inputDatumStatusGezetToggle);
|
|
139
|
+
}
|
|
140
|
+
if (updatedFormValue.inputDatumStatusGezetToggle === 'now') {
|
|
141
|
+
this.selectedDate = null;
|
|
142
|
+
this.selectedTime = null;
|
|
110
143
|
}
|
|
111
144
|
}
|
|
112
145
|
selectCaseDefinition(caseDefinitionId) {
|
|
@@ -120,7 +153,11 @@ export class SetZaakStatusConfigurationComponent {
|
|
|
120
153
|
return false;
|
|
121
154
|
}
|
|
122
155
|
handleValid(formValue) {
|
|
123
|
-
const
|
|
156
|
+
const hasStatusType = !!formValue.statustypeUrl;
|
|
157
|
+
const hasValidDatumStatusGezet = this.isValidDatumStatusGezet(formValue.datumStatusGezet);
|
|
158
|
+
const dateIsNotInFuture = this.isDateNotInFuture(formValue.datumStatusGezet);
|
|
159
|
+
const hasEnteredDateText = this.hasEnteredDateText(formValue.datumStatusGezet);
|
|
160
|
+
const valid = hasStatusType && hasValidDatumStatusGezet && dateIsNotInFuture && hasEnteredDateText;
|
|
124
161
|
this.valid$.next(valid);
|
|
125
162
|
this.valid.emit(valid);
|
|
126
163
|
}
|
|
@@ -130,21 +167,126 @@ export class SetZaakStatusConfigurationComponent {
|
|
|
130
167
|
.pipe(take(1))
|
|
131
168
|
.subscribe(([formValue, valid]) => {
|
|
132
169
|
if (valid) {
|
|
170
|
+
if (formValue.inputDatumStatusGezetToggle == 'now') {
|
|
171
|
+
formValue.datumStatusGezet = null;
|
|
172
|
+
}
|
|
133
173
|
this.configuration.emit({
|
|
134
174
|
statustoelichting: formValue.statustoelichting,
|
|
135
175
|
statustypeUrl: formValue.statustypeUrl,
|
|
176
|
+
datumStatusGezet: formValue.datumStatusGezet,
|
|
136
177
|
});
|
|
137
178
|
}
|
|
138
179
|
});
|
|
139
180
|
});
|
|
140
181
|
}
|
|
141
|
-
|
|
142
|
-
|
|
182
|
+
onDateSelected(event) {
|
|
183
|
+
const date = Array.isArray(event) && event[0];
|
|
184
|
+
if (!date)
|
|
185
|
+
return;
|
|
186
|
+
this.selectedDate = date.toISOString();
|
|
187
|
+
this.updateDatumStatusGezet();
|
|
188
|
+
}
|
|
189
|
+
onTimeSelected(event) {
|
|
190
|
+
this.selectedTime = event;
|
|
191
|
+
this.updateDatumStatusGezet();
|
|
192
|
+
}
|
|
193
|
+
updateDatumStatusGezet() {
|
|
194
|
+
if (!this.selectedDate && !this.selectedTime) {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
let hoursStr;
|
|
198
|
+
let minutesStr;
|
|
199
|
+
let secondsStr;
|
|
200
|
+
try {
|
|
201
|
+
[hoursStr, minutesStr = '00', secondsStr = '00'] = this.selectedTime.split(':');
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
[hoursStr, minutesStr = '00', secondsStr = '00'] = ['00', '00'];
|
|
205
|
+
}
|
|
206
|
+
const date = new Date(this.selectedDate);
|
|
207
|
+
const year = date.getFullYear();
|
|
208
|
+
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
209
|
+
const day = String(date.getDate()).padStart(2, '0');
|
|
210
|
+
const hh = hoursStr.padStart(2, '0');
|
|
211
|
+
const mm = minutesStr.padStart(2, '0');
|
|
212
|
+
const ss = secondsStr.padStart(2, '0');
|
|
213
|
+
const isoWithoutMs = `${year}-${month}-${day}T${hh}:${mm}:${ss}Z`;
|
|
214
|
+
const currentFormValue = this.formValue$.value ?? {};
|
|
215
|
+
const updatedFormValue = {
|
|
216
|
+
...currentFormValue,
|
|
217
|
+
datumStatusGezet: isoWithoutMs,
|
|
218
|
+
};
|
|
219
|
+
this.formValueChange(updatedFormValue);
|
|
220
|
+
}
|
|
221
|
+
prefillToday() {
|
|
222
|
+
this._subscriptions.add(this.prefillConfiguration$.subscribe(config => {
|
|
223
|
+
console.log('Prefilling configuration', config?.datumStatusGezet);
|
|
224
|
+
let baseDate;
|
|
225
|
+
if (config?.datumStatusGezet) {
|
|
226
|
+
try {
|
|
227
|
+
baseDate = flatpickr.formatDate(!!config?.datumStatusGezet ? new Date(config.datumStatusGezet) : new Date(), 'Z');
|
|
228
|
+
this.datumStatusGezetSelectedInputOption$.next('selection');
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
baseDate = config.datumStatusGezet;
|
|
232
|
+
this.datumStatusGezetSelectedInputOption$.next('text');
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
baseDate = null;
|
|
237
|
+
this.datumStatusGezetSelectedInputOption$.next('now');
|
|
238
|
+
}
|
|
239
|
+
this.selectedDate = baseDate;
|
|
240
|
+
this.selectedTime = this.formatTime(baseDate);
|
|
241
|
+
}));
|
|
242
|
+
this.updateDatumStatusGezet();
|
|
243
|
+
}
|
|
244
|
+
formatTime(date) {
|
|
245
|
+
const [hours, minutes, seconds] = date.split('T')[1].split(':');
|
|
246
|
+
return `${hours}:${minutes}:${seconds.split('.')[0]}`;
|
|
247
|
+
}
|
|
248
|
+
isValidDatumStatusGezet(value) {
|
|
249
|
+
if (['text', 'now'].includes(this.datumStatusGezetSelectedInputOption$.getValue())) {
|
|
250
|
+
return true;
|
|
251
|
+
}
|
|
252
|
+
if (!value) {
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
const trimmed = value.trim();
|
|
256
|
+
// Required format: YYYY-MM-DDTHH:mm:ssZ
|
|
257
|
+
const regex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$/;
|
|
258
|
+
if (!regex.test(trimmed)) {
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
const date = new Date(trimmed);
|
|
262
|
+
return !isNaN(date.getTime());
|
|
263
|
+
}
|
|
264
|
+
isDateNotInFuture(value) {
|
|
265
|
+
if (['text', 'now'].includes(this.datumStatusGezetSelectedInputOption$.getValue())) {
|
|
266
|
+
return true;
|
|
267
|
+
}
|
|
268
|
+
if (!value) {
|
|
269
|
+
return false;
|
|
270
|
+
}
|
|
271
|
+
const date = new Date(value);
|
|
272
|
+
const now = new Date();
|
|
273
|
+
const isDateNotInFuture = date.getTime() <= now.getTime();
|
|
274
|
+
this.datePickerInvalid$.next(!isDateNotInFuture);
|
|
275
|
+
return isDateNotInFuture;
|
|
276
|
+
}
|
|
277
|
+
hasEnteredDateText(value) {
|
|
278
|
+
if (this.datumStatusGezetSelectedInputOption$.getValue() !== 'text') {
|
|
279
|
+
return true;
|
|
280
|
+
}
|
|
281
|
+
return !value === false;
|
|
282
|
+
}
|
|
283
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SetZaakStatusConfigurationComponent, deps: [{ token: i1.ModalService }, { token: i2.DocumentService }, { token: i3.ZakenApiService }, { token: i4.PluginTranslatePipe }, { token: i1.CdsThemeService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
284
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SetZaakStatusConfigurationComponent, selector: "valtimo-set-zaak-status-configuration", inputs: { save$: "save$", disabled$: "disabled$", pluginId: "pluginId", prefillConfiguration$: "prefillConfiguration$" }, outputs: { valid: "valid", configuration: "configuration" }, providers: [PluginTranslatePipe], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-form\n (valueChange)=\"formValueChange($event)\"\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n pluginId: pluginId$ | async,\n selectedInputOption: selectedInputOption$ | async,\n datumStatusGezetSelectedInputOption: datumStatusGezetSelectedInputOption$ | async,\n loading: loading$ | async,\n caseDefinitionItems: caseDefinitionSelectItems$ | async,\n statusTypeItems: statusTypeSelectItems$ | async,\n selectedCaseDefinitionId: selectedCaseDefinitionId$ | async,\n datePickerInvalid: datePickerInvalid$ | async\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-input\n name=\"statustoelichting\"\n [title]=\"'statustoelichting' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.statustoelichting\"\n [disabled]=\"obs.disabled\"\n [required]=\"false\"\n [tooltip]=\"'statustoelichtingTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n [placeholder]=\"'statustoelichting' | pluginTranslate: obs.pluginId | async\"\n >\n </v-input>\n\n <v-radio\n name=\"inputDatumStatusGezetToggle\"\n [disabled]=\"obs.disabled\"\n [title]=\"'inputDatumStatusGezetToggle' | pluginTranslate: obs.pluginId | async\"\n [radioValues]=\"datePickerInputTypeOptions$ | async\"\n [defaultValue]=\"obs.datumStatusGezetSelectedInputOption\"\n [margin]=\"true\"\n ></v-radio>\n\n <div class=\"date-time-row\" *ngIf=\"obs.datumStatusGezetSelectedInputOption === 'selection'\">\n <cds-date-picker\n [attr.data-carbon-theme]=\"theme$ | async\"\n [label]=\"'logging.search.afterTimestamp' | translate\"\n placeholder=\"DD-MM-YYYY\"\n [dateFormat]=\"'d-m-Y'\"\n [value]=\"[selectedDate]\"\n [invalid]=\"obs.datePickerInvalid\"\n [invalidText]=\"'datumStatusGezetInvalidText' | pluginTranslate: obs.pluginId | async\"\n (valueChange)=\"onDateSelected($event)\"\n ></cds-date-picker>\n\n <cds-timepicker\n class=\"timepicker\"\n [attr.data-carbon-theme]=\"theme$ | async\"\n [value]=\"selectedTime\"\n [invalid]=\"obs.datePickerInvalid\"\n (valueChange)=\"onTimeSelected($event)\"\n ></cds-timepicker>\n </div>\n\n <v-input\n *ngIf=\"obs.datumStatusGezetSelectedInputOption === 'text'\"\n name=\"datumStatusGezet\"\n [title]=\"'datumStatusGezet' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.datumStatusGezet\"\n [disabled]=\"obs.disabled\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'datumStatusGezetTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n ></v-input>\n\n <v-radio\n name=\"inputTypeZaakStatusToggle\"\n [disabled]=\"obs.disabled\"\n [title]=\"'inputTypeZaakStatusToggle' | pluginTranslate: obs.pluginId | async\"\n [radioValues]=\"inputTypeOptions$ | async\"\n [defaultValue]=\"selectedInputOption$ | async\"\n [margin]=\"true\"\n >\n </v-radio>\n <v-input\n *ngIf=\"obs.selectedInputOption === 'text'\"\n name=\"statustypeUrl\"\n [title]=\"'statustypeUrl' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.statustypeUrl\"\n [disabled]=\"obs.disabled\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'statustypeUrlTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n >\n </v-input>\n <ng-container *ngIf=\"obs.selectedInputOption === 'selection'\">\n <v-select\n [items]=\"obs.caseDefinitionItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"caseDefinition\"\n [title]=\"'caseDefinition' | pluginTranslate: obs.pluginId | async\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n !obs.caseDefinitionItems ||\n oneSelectItem(obs.caseDefinitionItems)\n \"\n [required]=\"true\"\n [loading]=\"!obs.caseDefinitionItems\"\n [tooltip]=\"'caseDefinitionTooltip' | pluginTranslate: obs.pluginId | async\"\n (selectedChange)=\"selectCaseDefinition($event)\"\n [defaultSelectionId]=\"obs?.selectedCaseDefinitionId\"\n ></v-select>\n <v-select\n [items]=\"obs.statusTypeItems && obs.statusTypeItems[obs.selectedCaseDefinitionId]\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"statustypeUrl\"\n [title]=\"'statustypeUrlSelect' | pluginTranslate: obs.pluginId | async\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n !obs.statusTypeItems ||\n !obs.statusTypeItems[obs.selectedCaseDefinitionId]\n \"\n [defaultSelectionId]=\"obs.prefill?.statustypeUrl\"\n [required]=\"true\"\n [loading]=\"!obs.statusTypeItems\"\n [tooltip]=\"'statustypeUrlSelectTooltip' | pluginTranslate: obs.pluginId | async\"\n [clearSelectionSubject$]=\"clearStatusSelection$\"\n ></v-select>\n </ng-container>\n </ng-container>\n</v-form>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n", styles: [".loading-container{display:flex;flex-direction:row;justify-content:center;height:100%;width:100%;align-items:center}.date-time-row{display:flex;align-items:flex-start;gap:16px;margin-bottom:34px}.timepicker{margin-top:24px!important;height:48px!important}.date-time-row cds-date-picker,.date-time-row cds-timepicker{display:block}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.FormComponent, selector: "v-form", inputs: ["className"], outputs: ["valueChange"] }, { kind: "component", type: i1.InputComponent, selector: "v-input", inputs: ["name", "type", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "step", "min", "maxLength", "tooltip", "required", "hideNumberSpinBox", "smallLabel", "rows", "clear$", "carbonTheme", "placeholder", "dataTestId", "trim"], outputs: ["valueChange"] }, { kind: "component", type: i1.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "defaultSelectionIds", "disabled", "dropUp", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "clearText", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder", "smallMargin", "carbonTheme", "appendInline", "dataTestId"], outputs: ["selectedChange"] }, { kind: "component", type: i1.RadioComponent, selector: "v-radio", inputs: ["name", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "tooltip", "required", "smallLabel", "rows", "clear$", "radioValues"], outputs: ["valueChange"] }, { kind: "component", type: i6.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: i6.DatePicker, selector: "cds-date-picker, ibm-date-picker", inputs: ["range", "dateFormat", "language", "label", "helperText", "rangeHelperText", "rangeLabel", "placeholder", "ariaLabel", "inputPattern", "id", "value", "theme", "disabled", "invalid", "invalidText", "warn", "warnText", "size", "rangeInvalid", "rangeInvalidText", "rangeWarn", "rangeWarnText", "skeleton", "plugins", "flatpickrOptions"], outputs: ["valueChange", "onClose"] }, { kind: "component", type: i6.TimePicker, selector: "cds-timepicker, ibm-timepicker", inputs: ["invalid", "invalidText", "label", "hideLabel", "placeholder", "pattern", "id", "disabled", "value", "maxLength", "skeleton", "theme", "size"], outputs: ["valueChange"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.PluginTranslatePipe, name: "pluginTranslate" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] }); }
|
|
143
285
|
}
|
|
144
286
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SetZaakStatusConfigurationComponent, decorators: [{
|
|
145
287
|
type: Component,
|
|
146
|
-
args: [{ selector: 'valtimo-set-zaak-status-configuration', providers: [PluginTranslatePipe], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-form\n (valueChange)=\"formValueChange($event)\"\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n pluginId: pluginId$ | async,\n selectedInputOption: selectedInputOption$ | async,\n loading: loading$ | async,\n caseDefinitionItems: caseDefinitionSelectItems$ | async,\n statusTypeItems: statusTypeSelectItems$ | async,\n selectedCaseDefinitionId: selectedCaseDefinitionId$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-input\n name=\"statustoelichting\"\n [title]=\"'statustoelichting' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.statustoelichting\"\n [disabled]=\"obs.disabled\"\n [required]=\"false\"\n [tooltip]=\"'statustoelichtingTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n >\n </v-input>\n <v-radio\n name=\"inputTypeZaakStatusToggle\"\n [disabled]=\"obs.disabled\"\n [title]=\"'inputTypeZaakStatusToggle' | pluginTranslate: obs.pluginId | async\"\n [radioValues]=\"inputTypeOptions$ | async\"\n [defaultValue]=\"selectedInputOption$ | async\"\n [margin]=\"true\"\n >\n </v-radio>\n <v-input\n *ngIf=\"obs.selectedInputOption === 'text'\"\n name=\"statustypeUrl\"\n [title]=\"'statustypeUrl' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.statustypeUrl\"\n [disabled]=\"obs.disabled\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'statustypeUrlTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n >\n </v-input>\n <ng-container *ngIf=\"obs.selectedInputOption === 'selection'\">\n <v-select\n [items]=\"obs.caseDefinitionItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"caseDefinition\"\n [title]=\"'caseDefinition' | pluginTranslate: obs.pluginId | async\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n !obs.caseDefinitionItems ||\n oneSelectItem(obs.caseDefinitionItems)\n \"\n [required]=\"true\"\n [loading]=\"!obs.caseDefinitionItems\"\n [tooltip]=\"'caseDefinitionTooltip' | pluginTranslate: obs.pluginId | async\"\n (selectedChange)=\"selectCaseDefinition($event)\"\n [defaultSelectionId]=\"obs?.selectedCaseDefinitionId\"\n ></v-select>\n <v-select\n [items]=\"obs.statusTypeItems && obs.statusTypeItems[obs.selectedCaseDefinitionId]\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"statustypeUrl\"\n [title]=\"'statustypeUrlSelect' | pluginTranslate: obs.pluginId | async\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n !obs.statusTypeItems ||\n !obs.statusTypeItems[obs.selectedCaseDefinitionId]\n \"\n [defaultSelectionId]=\"obs.prefill?.statustypeUrl\"\n [required]=\"true\"\n [loading]=\"!obs.statusTypeItems\"\n [tooltip]=\"'statustypeUrlSelectTooltip' | pluginTranslate: obs.pluginId | async\"\n [clearSelectionSubject$]=\"clearStatusSelection$\"\n ></v-select>\n </ng-container>\n </ng-container>\n</v-form>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n", styles: [".loading-container{display:flex;flex-direction:row;justify-content:center;height:100%;width:100%;align-items:center}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
147
|
-
}], ctorParameters: () => [{ type: i1.ModalService }, { type: i2.DocumentService }, { type: i3.ZakenApiService }, { type: i4.PluginTranslatePipe }], propDecorators: { save$: [{
|
|
288
|
+
args: [{ selector: 'valtimo-set-zaak-status-configuration', providers: [PluginTranslatePipe], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-form\n (valueChange)=\"formValueChange($event)\"\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n pluginId: pluginId$ | async,\n selectedInputOption: selectedInputOption$ | async,\n datumStatusGezetSelectedInputOption: datumStatusGezetSelectedInputOption$ | async,\n loading: loading$ | async,\n caseDefinitionItems: caseDefinitionSelectItems$ | async,\n statusTypeItems: statusTypeSelectItems$ | async,\n selectedCaseDefinitionId: selectedCaseDefinitionId$ | async,\n datePickerInvalid: datePickerInvalid$ | async\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-input\n name=\"statustoelichting\"\n [title]=\"'statustoelichting' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.statustoelichting\"\n [disabled]=\"obs.disabled\"\n [required]=\"false\"\n [tooltip]=\"'statustoelichtingTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n [placeholder]=\"'statustoelichting' | pluginTranslate: obs.pluginId | async\"\n >\n </v-input>\n\n <v-radio\n name=\"inputDatumStatusGezetToggle\"\n [disabled]=\"obs.disabled\"\n [title]=\"'inputDatumStatusGezetToggle' | pluginTranslate: obs.pluginId | async\"\n [radioValues]=\"datePickerInputTypeOptions$ | async\"\n [defaultValue]=\"obs.datumStatusGezetSelectedInputOption\"\n [margin]=\"true\"\n ></v-radio>\n\n <div class=\"date-time-row\" *ngIf=\"obs.datumStatusGezetSelectedInputOption === 'selection'\">\n <cds-date-picker\n [attr.data-carbon-theme]=\"theme$ | async\"\n [label]=\"'logging.search.afterTimestamp' | translate\"\n placeholder=\"DD-MM-YYYY\"\n [dateFormat]=\"'d-m-Y'\"\n [value]=\"[selectedDate]\"\n [invalid]=\"obs.datePickerInvalid\"\n [invalidText]=\"'datumStatusGezetInvalidText' | pluginTranslate: obs.pluginId | async\"\n (valueChange)=\"onDateSelected($event)\"\n ></cds-date-picker>\n\n <cds-timepicker\n class=\"timepicker\"\n [attr.data-carbon-theme]=\"theme$ | async\"\n [value]=\"selectedTime\"\n [invalid]=\"obs.datePickerInvalid\"\n (valueChange)=\"onTimeSelected($event)\"\n ></cds-timepicker>\n </div>\n\n <v-input\n *ngIf=\"obs.datumStatusGezetSelectedInputOption === 'text'\"\n name=\"datumStatusGezet\"\n [title]=\"'datumStatusGezet' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.datumStatusGezet\"\n [disabled]=\"obs.disabled\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'datumStatusGezetTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n ></v-input>\n\n <v-radio\n name=\"inputTypeZaakStatusToggle\"\n [disabled]=\"obs.disabled\"\n [title]=\"'inputTypeZaakStatusToggle' | pluginTranslate: obs.pluginId | async\"\n [radioValues]=\"inputTypeOptions$ | async\"\n [defaultValue]=\"selectedInputOption$ | async\"\n [margin]=\"true\"\n >\n </v-radio>\n <v-input\n *ngIf=\"obs.selectedInputOption === 'text'\"\n name=\"statustypeUrl\"\n [title]=\"'statustypeUrl' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.statustypeUrl\"\n [disabled]=\"obs.disabled\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'statustypeUrlTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n >\n </v-input>\n <ng-container *ngIf=\"obs.selectedInputOption === 'selection'\">\n <v-select\n [items]=\"obs.caseDefinitionItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"caseDefinition\"\n [title]=\"'caseDefinition' | pluginTranslate: obs.pluginId | async\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n !obs.caseDefinitionItems ||\n oneSelectItem(obs.caseDefinitionItems)\n \"\n [required]=\"true\"\n [loading]=\"!obs.caseDefinitionItems\"\n [tooltip]=\"'caseDefinitionTooltip' | pluginTranslate: obs.pluginId | async\"\n (selectedChange)=\"selectCaseDefinition($event)\"\n [defaultSelectionId]=\"obs?.selectedCaseDefinitionId\"\n ></v-select>\n <v-select\n [items]=\"obs.statusTypeItems && obs.statusTypeItems[obs.selectedCaseDefinitionId]\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"statustypeUrl\"\n [title]=\"'statustypeUrlSelect' | pluginTranslate: obs.pluginId | async\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n !obs.statusTypeItems ||\n !obs.statusTypeItems[obs.selectedCaseDefinitionId]\n \"\n [defaultSelectionId]=\"obs.prefill?.statustypeUrl\"\n [required]=\"true\"\n [loading]=\"!obs.statusTypeItems\"\n [tooltip]=\"'statustypeUrlSelectTooltip' | pluginTranslate: obs.pluginId | async\"\n [clearSelectionSubject$]=\"clearStatusSelection$\"\n ></v-select>\n </ng-container>\n </ng-container>\n</v-form>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n", styles: [".loading-container{display:flex;flex-direction:row;justify-content:center;height:100%;width:100%;align-items:center}.date-time-row{display:flex;align-items:flex-start;gap:16px;margin-bottom:34px}.timepicker{margin-top:24px!important;height:48px!important}.date-time-row cds-date-picker,.date-time-row cds-timepicker{display:block}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
289
|
+
}], ctorParameters: () => [{ type: i1.ModalService }, { type: i2.DocumentService }, { type: i3.ZakenApiService }, { type: i4.PluginTranslatePipe }, { type: i1.CdsThemeService }], propDecorators: { save$: [{
|
|
148
290
|
type: Input
|
|
149
291
|
}], disabled$: [{
|
|
150
292
|
type: Input
|
|
@@ -157,4 +299,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
157
299
|
}], configuration: [{
|
|
158
300
|
type: Output
|
|
159
301
|
}] } });
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LXphYWstc3RhdHVzLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9wbHVnaW4vc3JjL2xpYi9wbHVnaW5zL3pha2VuLWFwaS9jb21wb25lbnRzL3NldC16YWFrLXN0YXR1cy9zZXQtemFhay1zdGF0dXMtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3BsdWdpbi9zcmMvbGliL3BsdWdpbnMvemFrZW4tYXBpL2NvbXBvbmVudHMvc2V0LXphYWstc3RhdHVzL3NldC16YWFrLXN0YXR1cy1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEYsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsTUFBTSxFQUVOLEVBQUUsRUFDRixPQUFPLEVBRVAsU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFJZCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7OztBQVF0RCxNQUFNLE9BQU8sbUNBQW1DO0lBSzlDLElBQWEsUUFBUSxDQUFDLEtBQWE7UUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQXdHRCxZQUNtQixZQUEwQixFQUMxQixlQUFnQyxFQUNoQyxlQUFnQyxFQUNoQyxtQkFBd0M7UUFIeEMsaUJBQVksR0FBWixZ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LG1DQUFtQyx1UEFGbkMsQ0FBQyxtQkFBbUIsQ0FBQywwQkN6Q2xDLGluSUE2R0E7OzRGRGxFYSxtQ0FBbUM7a0JBTi9DLFNBQVM7K0JBQ0UsdUNBQXVDLGFBR3RDLENBQUMsbUJBQW1CLENBQUM7K0tBS3ZCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBR0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21wb25lbnR9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZpbHRlcixcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmlwdGlvbixcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtJbnB1dE9wdGlvbiwgU2V0WmFha1N0YXR1c0NvbmZpZ30gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7TW9kYWxTZXJ2aWNlLCBSYWRpb1ZhbHVlLCBTZWxlY3RJdGVtfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7RG9jdW1lbnRTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtaYWtlbkFwaVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7UGx1Z2luVHJhbnNsYXRlUGlwZX0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLXNldC16YWFrLXN0YXR1cy1jb25maWd1cmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NldC16YWFrLXN0YXR1cy1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2V0LXphYWstc3RhdHVzLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbUGx1Z2luVHJhbnNsYXRlUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNldFphYWtTdGF0dXNDb25maWd1cmF0aW9uQ29tcG9uZW50XG4gIGltcGxlbWVudHMgRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveVxue1xuICBASW5wdXQoKSBzYXZlJDogT2JzZXJ2YWJsZTx2b2lkPjtcbiAgQElucHV0KCkgZGlzYWJsZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBASW5wdXQoKSBzZXQgcGx1Z2luSWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMucGx1Z2luSWQkLm5leHQodmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHByZWZpbGxDb25maWd1cmF0aW9uJDogT2JzZXJ2YWJsZTxTZXRaYWFrU3RhdHVzQ29uZmlnPjtcbiAgQE91dHB1dCgpIHZhbGlkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBjb25maWd1cmF0aW9uOiBFdmVudEVtaXR0ZXI8U2V0WmFha1N0YXR1c0NvbmZpZz4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8U2V0WmFha1N0YXR1c0NvbmZpZz4oKTtcblxuICByZWFkb25seSBjYXNlRGVmaW5pdGlvblNlbGVjdEl0ZW1zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8U2VsZWN0SXRlbT4+KG51bGwpO1xuICByZWFkb25seSBzZWxlY3RlZENhc2VEZWZpbml0aW9uSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgY2xlYXJTdGF0dXNTZWxlY3Rpb24kID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICByZWFkb25seSBsb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgcmVhZG9ubHkgc3RhdHVzVHlwZVNlbGVjdEl0ZW1zJDogT2JzZXJ2YWJsZTx7W2Nhc2VEZWZpbml0aW9uSWQ6IHN0cmluZ106IEFycmF5PFNlbGVjdEl0ZW0+fT4gPVxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm1vZGFsRGF0YSQucGlwZShcbiAgICAgIHN3aXRjaE1hcChwYXJhbXMgPT5cbiAgICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZmluZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zQnlQcm9jZXNzRGVmaW5pdGlvbktleShcbiAgICAgICAgICBwYXJhbXM/LnByb2Nlc3NEZWZpbml0aW9uS2V5XG4gICAgICAgIClcbiAgICAgICksXG4gICAgICB0YXAocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMgPT4ge1xuICAgICAgICBjb25zdCBjYXNlRGVmU2VsZWN0SXRlbXMgPSBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucy5tYXAocHJvY2Vzc0RvY0RlZiA9PiAoe1xuICAgICAgICAgIHRleHQ6IHByb2Nlc3NEb2NEZWYuaWQuZG9jdW1lbnREZWZpbml0aW9uSWQubmFtZSxcbiAgICAgICAgICBpZDogcHJvY2Vzc0RvY0RlZi5pZC5kb2N1bWVudERlZmluaXRpb25JZC5uYW1lLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgdGhpcy5jYXNlRGVmaW5pdGlvblNlbGVjdEl0ZW1zJC5uZXh0KGNhc2VEZWZTZWxlY3RJdGVtcyk7XG5cbiAgICAgICAgaWYgKHRoaXMub25lU2VsZWN0SXRlbShjYXNlRGVmU2VsZWN0SXRlbXMpKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENhc2VEZWZpbml0aW9uSWQkLm5leHQoY2FzZURlZlNlbGVjdEl0ZW1zWzBdLmlkKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMgPT5cbiAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgb2YocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMubWFwKHByb2Nlc3NEb2MgPT4gcHJvY2Vzc0RvYy5pZC5kb2N1bWVudERlZmluaXRpb25JZC5uYW1lKSksXG4gICAgICAgICAgLi4ucHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMubWFwKHByb2Nlc3NEb2NEZWYgPT5cbiAgICAgICAgICAgIHRoaXMuemFrZW5BcGlTZXJ2aWNlLmdldFN0YXR1c1R5cGVzQnlDYXNlRGVmaW5pdGlvbihcbiAgICAgICAgICAgICAgcHJvY2Vzc0RvY0RlZi5pZC5kb2N1bWVudERlZmluaXRpb25JZC5uYW1lXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgXSlcbiAgICAgICksXG4gICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgY29uc3QgY2FzZURlZmluaXRpb25JZHMgPSByZXNbMF07XG4gICAgICAgIGNvbnN0IHN0YXR1c1R5cGVzID0gcmVzLmZpbHRlcigoY3VyciwgaW5kZXgpID0+IGluZGV4ICE9PSAwKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0T2JqZWN0ID0ge307XG5cbiAgICAgICAgY2FzZURlZmluaXRpb25JZHMuZm9yRWFjaCgoY2FzZURlZmluaXRpb25JZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICBzZWxlY3RPYmplY3RbY2FzZURlZmluaXRpb25JZF0gPSBzdGF0dXNUeXBlc1tpbmRleF0ubWFwKHN0YXR1c1R5cGUgPT4gKHtcbiAgICAgICAgICAgIGlkOiBzdGF0dXNUeXBlLnVybCxcbiAgICAgICAgICAgIHRleHQ6IHN0YXR1c1R5cGUubmFtZSxcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBzZWxlY3RPYmplY3Q7XG4gICAgICB9KSxcbiAgICAgIHRhcChzZWxlY3RPYmplY3QgPT4ge1xuICAgICAgICB0aGlzLnByZWZpbGxDb25maWd1cmF0aW9uJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShwcmVmaWxsQ29uZmlnID0+IHtcbiAgICAgICAgICBjb25zdCBzdGF0dXNUeXBlVXJsID0gcHJlZmlsbENvbmZpZz8uc3RhdHVzdHlwZVVybDtcblxuICAgICAgICAgIGlmIChzdGF0dXNUeXBlVXJsKSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkITogc3RyaW5nO1xuXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhzZWxlY3RPYmplY3QpLmZvckVhY2goY2FzZURlZmluaXRpb25JZCA9PiB7XG4gICAgICAgICAgICAgIGlmIChzZWxlY3RPYmplY3RbY2FzZURlZmluaXRpb25JZF0uZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IHN0YXR1c1R5cGVVcmwpKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkID0gY2FzZURlZmluaXRpb25JZDtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChzZWxlY3RlZENhc2VEZWZpbml0aW9uSWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2FzZURlZmluaXRpb25JZCQubmV4dChzZWxlY3RlZENhc2VEZWZpbml0aW9uSWQpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbnB1dE9wdGlvbiQubmV4dCgndGV4dCcpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgfSlcbiAgICApO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkSW5wdXRPcHRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJbnB1dE9wdGlvbj4oJ3NlbGVjdGlvbicpO1xuXG4gIHJlYWRvbmx5IHBsdWdpbklkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG5cbiAgcmVhZG9ubHkgaW5wdXRUeXBlT3B0aW9ucyQ6IE9ic2VydmFibGU8QXJyYXk8UmFkaW9WYWx1ZT4+ID0gdGhpcy5wbHVnaW5JZCQucGlwZShcbiAgICBmaWx0ZXIocGx1Z2luSWQgPT4gISFwbHVnaW5JZCksXG4gICAgc3dpdGNoTWFwKHBsdWdpbklkID0+XG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5wbHVnaW5UcmFuc2xhdGVQaXBlLnRyYW5zZm9ybSgnc2VsZWN0aW9uJywgcGx1Z2luSWQpLFxuICAgICAgICB0aGlzLnBsdWdpblRyYW5zbGF0ZVBpcGUudHJhbnNmb3JtKCd0ZXh0JywgcGx1Z2luSWQpLFxuICAgICAgXSlcbiAgICApLFxuICAgIG1hcCgoW3NlbGVjdGlvblRyYW5zbGF0aW9uLCB0ZXh0VHJhbnNsYXRpb25dKSA9PiBbXG4gICAgICB7dmFsdWU6ICdzZWxlY3Rpb24nLCB0aXRsZTogc2VsZWN0aW9uVHJhbnNsYXRpb259LFxuICAgICAge3ZhbHVlOiAndGV4dCcsIHRpdGxlOiB0ZXh0VHJhbnNsYXRpb259LFxuICAgIF0pXG4gICk7XG5cbiAgcHJpdmF0ZSBzYXZlU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZm9ybVZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2V0WmFha1N0YXR1c0NvbmZpZyB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IHZhbGlkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHpha2VuQXBpU2VydmljZTogWmFrZW5BcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luVHJhbnNsYXRlUGlwZTogUGx1Z2luVHJhbnNsYXRlUGlwZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuU2F2ZVN1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zYXZlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZm9ybVZhbHVlQ2hhbmdlKGZvcm1WYWx1ZTogU2V0WmFha1N0YXR1c0NvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuZm9ybVZhbHVlJC5uZXh0KGZvcm1WYWx1ZSk7XG4gICAgdGhpcy5oYW5kbGVWYWxpZChmb3JtVmFsdWUpO1xuXG4gICAgaWYgKGZvcm1WYWx1ZS5pbnB1dFR5cGVaYWFrU3RhdHVzVG9nZ2xlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSW5wdXRPcHRpb24kLm5leHQoZm9ybVZhbHVlLmlucHV0VHlwZVphYWtTdGF0dXNUb2dnbGUpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdENhc2VEZWZpbml0aW9uKGNhc2VEZWZpbml0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkJC5uZXh0KGNhc2VEZWZpbml0aW9uSWQpO1xuICAgIHRoaXMuY2xlYXJTdGF0dXNTZWxlY3Rpb24kLm5leHQoKTtcbiAgfVxuXG4gIG9uZVNlbGVjdEl0ZW0oc2VsZWN0SXRlbXM6IEFycmF5PFNlbGVjdEl0ZW0+KTogYm9vbGVhbiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0SXRlbXMpKSB7XG4gICAgICByZXR1cm4gc2VsZWN0SXRlbXMubGVuZ3RoID09PSAxO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVmFsaWQoZm9ybVZhbHVlOiBTZXRaYWFrU3RhdHVzQ29uZmlnKTogdm9pZCB7XG4gICAgY29uc3QgdmFsaWQgPSAhIWZvcm1WYWx1ZS5zdGF0dXN0eXBlVXJsO1xuXG4gICAgdGhpcy52YWxpZCQubmV4dCh2YWxpZCk7XG4gICAgdGhpcy52YWxpZC5lbWl0KHZhbGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblNhdmVTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zYXZlU3Vic2NyaXB0aW9uID0gdGhpcy5zYXZlJD8uc3Vic2NyaWJlKHNhdmUgPT4ge1xuICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5mb3JtVmFsdWUkLCB0aGlzLnZhbGlkJF0pXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKFtmb3JtVmFsdWUsIHZhbGlkXSkgPT4ge1xuICAgICAgICAgIGlmICh2YWxpZCkge1xuICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmVtaXQoe1xuICAgICAgICAgICAgICBzdGF0dXN0b2VsaWNodGluZzogZm9ybVZhbHVlLnN0YXR1c3RvZWxpY2h0aW5nLFxuICAgICAgICAgICAgICBzdGF0dXN0eXBlVXJsOiBmb3JtVmFsdWUuc3RhdHVzdHlwZVVybCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPHYtZm9ybVxuICAodmFsdWVDaGFuZ2UpPVwiZm9ybVZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAqbmdJZj1cIntcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQkIHwgYXN5bmMsXG4gICAgcHJlZmlsbDogcHJlZmlsbENvbmZpZ3VyYXRpb24kID8gKHByZWZpbGxDb25maWd1cmF0aW9uJCB8IGFzeW5jKSA6IG51bGwsXG4gICAgcGx1Z2luSWQ6IHBsdWdpbklkJCB8IGFzeW5jLFxuICAgIHNlbGVjdGVkSW5wdXRPcHRpb246IHNlbGVjdGVkSW5wdXRPcHRpb24kIHwgYXN5bmMsXG4gICAgbG9hZGluZzogbG9hZGluZyQgfCBhc3luYyxcbiAgICBjYXNlRGVmaW5pdGlvbkl0ZW1zOiBjYXNlRGVmaW5pdGlvblNlbGVjdEl0ZW1zJCB8IGFzeW5jLFxuICAgIHN0YXR1c1R5cGVJdGVtczogc3RhdHVzVHlwZVNlbGVjdEl0ZW1zJCB8IGFzeW5jLFxuICAgIHNlbGVjdGVkQ2FzZURlZmluaXRpb25JZDogc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkJCB8IGFzeW5jLFxuICB9IGFzIG9ic1wiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJvYnMubG9hZGluZyA9PT0gZmFsc2U7IGVsc2UgbG9hZGluZ1wiPlxuICAgIDx2LWlucHV0XG4gICAgICBuYW1lPVwic3RhdHVzdG9lbGljaHRpbmdcIlxuICAgICAgW3RpdGxlXT1cIidzdGF0dXN0b2VsaWNodGluZycgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgIFttYXJnaW5dPVwidHJ1ZVwiXG4gICAgICBbZGVmYXVsdFZhbHVlXT1cIm9icy5wcmVmaWxsPy5zdGF0dXN0b2VsaWNodGluZ1wiXG4gICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCJcbiAgICAgIFtyZXF1aXJlZF09XCJmYWxzZVwiXG4gICAgICBbdG9vbHRpcF09XCInc3RhdHVzdG9lbGljaHRpbmdUb29sdGlwJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICA+XG4gICAgPC92LWlucHV0PlxuICAgIDx2LXJhZGlvXG4gICAgICBuYW1lPVwiaW5wdXRUeXBlWmFha1N0YXR1c1RvZ2dsZVwiXG4gICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCJcbiAgICAgIFt0aXRsZV09XCInaW5wdXRUeXBlWmFha1N0YXR1c1RvZ2dsZScgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgIFtyYWRpb1ZhbHVlc109XCJpbnB1dFR5cGVPcHRpb25zJCB8IGFzeW5jXCJcbiAgICAgIFtkZWZhdWx0VmFsdWVdPVwic2VsZWN0ZWRJbnB1dE9wdGlvbiQgfCBhc3luY1wiXG4gICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgID5cbiAgICA8L3YtcmFkaW8+XG4gICAgPHYtaW5wdXRcbiAgICAgICpuZ0lmPVwib2JzLnNlbGVjdGVkSW5wdXRPcHRpb24gPT09ICd0ZXh0J1wiXG4gICAgICBuYW1lPVwic3RhdHVzdHlwZVVybFwiXG4gICAgICBbdGl0bGVdPVwiJ3N0YXR1c3R5cGVVcmwnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgW2RlZmF1bHRWYWx1ZV09XCJvYnMucHJlZmlsbD8uc3RhdHVzdHlwZVVybFwiXG4gICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCJcbiAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgIFt0cmltXT1cInRydWVcIlxuICAgICAgW3Rvb2x0aXBdPVwiJ3N0YXR1c3R5cGVVcmxUb29sdGlwJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICA+XG4gICAgPC92LWlucHV0PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvYnMuc2VsZWN0ZWRJbnB1dE9wdGlvbiA9PT0gJ3NlbGVjdGlvbidcIj5cbiAgICAgIDx2LXNlbGVjdFxuICAgICAgICBbaXRlbXNdPVwib2JzLmNhc2VEZWZpbml0aW9uSXRlbXNcIlxuICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgICBbd2lkdGhJblB4XT1cIjM1MFwiXG4gICAgICAgIG5hbWU9XCJjYXNlRGVmaW5pdGlvblwiXG4gICAgICAgIFt0aXRsZV09XCInY2FzZURlZmluaXRpb24nIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICBvYnMuZGlzYWJsZWQgfHxcbiAgICAgICAgICBvYnMuc2VsZWN0ZWRJbnB1dE9wdGlvbiA9PT0gJ3RleHQnIHx8XG4gICAgICAgICAgIW9icy5jYXNlRGVmaW5pdGlvbkl0ZW1zIHx8XG4gICAgICAgICAgb25lU2VsZWN0SXRlbShvYnMuY2FzZURlZmluaXRpb25JdGVtcylcbiAgICAgICAgXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICBbbG9hZGluZ109XCIhb2JzLmNhc2VEZWZpbml0aW9uSXRlbXNcIlxuICAgICAgICBbdG9vbHRpcF09XCInY2FzZURlZmluaXRpb25Ub29sdGlwJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwic2VsZWN0Q2FzZURlZmluaXRpb24oJGV2ZW50KVwiXG4gICAgICAgIFtkZWZhdWx0U2VsZWN0aW9uSWRdPVwib2JzPy5zZWxlY3RlZENhc2VEZWZpbml0aW9uSWRcIlxuICAgICAgPjwvdi1zZWxlY3Q+XG4gICAgICA8di1zZWxlY3RcbiAgICAgICAgW2l0ZW1zXT1cIm9icy5zdGF0dXNUeXBlSXRlbXMgJiYgb2JzLnN0YXR1c1R5cGVJdGVtc1tvYnMuc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkXVwiXG4gICAgICAgIFttYXJnaW5dPVwidHJ1ZVwiXG4gICAgICAgIFt3aWR0aEluUHhdPVwiMzUwXCJcbiAgICAgICAgbmFtZT1cInN0YXR1c3R5cGVVcmxcIlxuICAgICAgICBbdGl0bGVdPVwiJ3N0YXR1c3R5cGVVcmxTZWxlY3QnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICBvYnMuZGlzYWJsZWQgfHxcbiAgICAgICAgICBvYnMuc2VsZWN0ZWRJbnB1dE9wdGlvbiA9PT0gJ3RleHQnIHx8XG4gICAgICAgICAgIW9icy5zdGF0dXNUeXBlSXRlbXMgfHxcbiAgICAgICAgICAhb2JzLnN0YXR1c1R5cGVJdGVtc1tvYnMuc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkXVxuICAgICAgICBcIlxuICAgICAgICBbZGVmYXVsdFNlbGVjdGlvbklkXT1cIm9icy5wcmVmaWxsPy5zdGF0dXN0eXBlVXJsXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICBbbG9hZGluZ109XCIhb2JzLnN0YXR1c1R5cGVJdGVtc1wiXG4gICAgICAgIFt0b29sdGlwXT1cIidzdGF0dXN0eXBlVXJsU2VsZWN0VG9vbHRpcCcgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgW2NsZWFyU2VsZWN0aW9uU3ViamVjdCRdPVwiY2xlYXJTdGF0dXNTZWxlY3Rpb24kXCJcbiAgICAgID48L3Ytc2VsZWN0PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvdi1mb3JtPlxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gIDxkaXYgY2xhc3M9XCJsb2FkaW5nLWNvbnRhaW5lclwiPlxuICAgIDxjZHMtbG9hZGluZz48L2Nkcy1sb2FkaW5nPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
302
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LXphYWstc3RhdHVzLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9wbHVnaW4vc3JjL2xpYi9wbHVnaW5zL3pha2VuLWFwaS9jb21wb25lbnRzL3NldC16YWFrLXN0YXR1cy9zZXQtemFhay1zdGF0dXMtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3BsdWdpbi9zcmMvbGliL3BsdWdpbnMvemFrZW4tYXBpL2NvbXBvbmVudHMvc2V0LXphYWstc3RhdHVzL3NldC16YWFrLXN0YXR1cy1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEYsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsTUFBTSxFQUVOLEVBQUUsRUFDRixPQUFPLEVBQ1AsWUFBWSxFQUNaLFNBQVMsRUFDVCxJQUFJLEVBQ0osR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFDLFlBQVksRUFBbUIsa0JBQWtCLEVBQXVDLE1BQU0scUJBQXFCLENBQUM7QUFFNUgsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sU0FBUyxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7OztBQVFsQyxNQUFNLE9BQU8sbUNBQW1DO0lBSzlDLElBQWEsUUFBUSxDQUFDLEtBQWE7UUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQW9JRCxZQUNtQixZQUEwQixFQUMxQixlQUFnQyxFQUNoQyxlQUFnQyxFQUNoQyxtQkFBd0MsRUFDeEMsZUFBZ0M7UUFKaEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQXZJekMsVUFBSyxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzNELGtCQUFhLEdBQ3JCLElBQUksWUFBWSxFQUF1QixDQUFDO1FBRWpDLCtCQUEwQixHQUFHLElBQUksZUFBZSxDQUFvQixJQUFJLENBQUMsQ0FBQztRQUMxRSw4QkFBeUIsR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUM1RCwwQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRTVDLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUU5QywyQkFBc0IsR0FDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUMvQixTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDakIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvREFBb0QsQ0FDdkUsTUFBTSxFQUFFLG9CQUFvQixDQUM3QixDQUNGLEVBQ0QsR0FBRyxDQUFDLDBCQUEwQixDQUFDLEVBQUU7WUFDL0IsTUFBTSxrQkFBa0IsR0FBRywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMxRSxJQUFJLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJO2dCQUNoRCxFQUFFLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJO2FBQy9DLENBQUMsQ0FBQyxDQUFDO1lBRUosSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRXpELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEUsQ0FBQztRQUNILENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLENBQ3JDLGFBQWEsQ0FBQztZQUNaLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pGLEdBQUcsMEJBQTBCLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsOEJBQThCLENBQ2pELGFBQWEsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUMzQyxDQUNGO1NBQ0YsQ0FBQyxDQUNILEVBQ0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1IsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakMsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM3RCxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7WUFFeEIsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3BELFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNyRSxFQUFFLEVBQUUsVUFBVSxDQUFDLEdBQUc7b0JBQ2xCLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtpQkFDdEIsQ0FBQyxDQUFDLENBQUM7WUFDTixDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNqQixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDakUsTUFBTSxhQUFhLEdBQUcsYUFBYSxFQUFFLGFBQWEsQ0FBQztnQkFFbkQsSUFBSSxhQUFhLEVBQUUsQ0FBQztvQkFDbEIsSUFBSSx3QkFBaUMsQ0FBQztvQkFFdEMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRTt3QkFDbkQsSUFBSSxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLGFBQWEsQ0FBQyxFQUFFLENBQUM7NEJBQzNFLHdCQUF3QixHQUFHLGdCQUFnQixDQUFDO3dCQUM5QyxDQUFDO3dCQUVELElBQUksd0JBQXdCLEVBQUUsQ0FBQzs0QkFDN0IsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO3dCQUNoRSxDQUFDOzZCQUFNLENBQUM7NEJBQ04sSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDekMsQ0FBQztvQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVLLHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUFjLFdBQVcsQ0FBQyxDQUFDO1FBQ3JFLHlDQUFvQyxHQUFHLElBQUksZUFBZSxDQUFTLEtBQUssQ0FBQyxDQUFDO1FBQzFFLHVCQUFrQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRXpELGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUNwQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFNUMsc0JBQWlCLEdBQWtDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUM3RSxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQzlCLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUNuQixhQUFhLENBQUM7WUFDWixJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUM7WUFDekQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO1NBQ3JELENBQUMsQ0FDSCxFQUNELEdBQUcsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLEVBQUUsZUFBZSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQy9DLEVBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUM7WUFDakQsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUM7U0FDeEMsQ0FBQyxDQUNILENBQUM7UUFFTyxnQ0FBMkIsR0FBa0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ3ZGLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFDOUIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQ25CLGFBQWEsQ0FBQztZQUNaLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQztZQUNuRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUM7WUFDekQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO1NBQ3JELENBQUMsQ0FDSCxFQUNELEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLG9CQUFvQixFQUFFLGVBQWUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMvRCxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBQztZQUNyQyxFQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFDO1lBQ2pELEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFDO1NBQ3hDLENBQUMsQ0FDSCxDQUFDO1FBRWMsV0FBTSxHQUE2QixJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3hGLEdBQUcsQ0FBQyxDQUFDLEtBQXlCLEVBQUUsRUFBRSxDQUNoQyxLQUFLLEtBQUssa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUMxRSxDQUNGLENBQUM7UUFJZSxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQTZCLElBQUksQ0FBQyxDQUFDO1FBQ25FLFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUV2RCxpQkFBWSxHQUFrQixJQUFJLENBQUM7UUFDbkMsaUJBQVksR0FBa0IsSUFBSSxDQUFDO0lBUXZDLENBQUM7SUFFRyxRQUFRO1FBQ2IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxlQUFlLENBQUMsU0FBOEI7UUFDNUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSyxFQUEwQixDQUFDO1FBQzlFLE1BQU0sZ0JBQWdCLEdBQXdCO1lBQzVDLEdBQUcsZ0JBQWdCO1lBQ25CLEdBQUcsU0FBUztTQUNiLENBQUM7UUFFRixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNuQyxJQUFJLGdCQUFnQixDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFDRCxJQUFJLGdCQUFnQixDQUFDLDJCQUEyQixFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLG9DQUFvQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQy9GLENBQUM7UUFDRCxJQUFJLGdCQUFnQixDQUFDLDJCQUEyQixLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsZ0JBQXdCO1FBQzNDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxXQUE4QjtRQUMxQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUMvQixPQUFPLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxXQUFXLENBQUMsU0FBOEI7UUFDaEQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUM7UUFDaEQsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDMUYsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDN0UsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFL0UsTUFBTSxLQUFLLEdBQUcsYUFBYSxJQUFJLHdCQUF3QixJQUFJLGlCQUFpQixJQUFJLGtCQUFrQixDQUFDO1FBRW5HLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ25ELGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNiLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7Z0JBQ2hDLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ1YsSUFBSSxTQUFTLENBQUMsMkJBQTJCLElBQUksS0FBSyxFQUFFLENBQUM7d0JBQ25ELFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7b0JBQ3BDLENBQUM7b0JBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7d0JBQ3RCLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxpQkFBaUI7d0JBQzlDLGFBQWEsRUFBRSxTQUFTLENBQUMsYUFBYTt3QkFDdEMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLGdCQUFnQjtxQkFDN0MsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGNBQWMsQ0FBQyxLQUFhO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUNsQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQWE7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM3QyxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksUUFBUSxDQUFDO1FBQ2IsSUFBSSxVQUFVLENBQUM7UUFDZixJQUFJLFVBQVUsQ0FBQztRQUNmLElBQUksQ0FBQztZQUNILENBQUMsUUFBUSxFQUFFLFVBQVUsR0FBRyxJQUFJLEVBQUUsVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsQ0FBQyxRQUFRLEVBQUUsVUFBVSxHQUFHLElBQUksRUFBRSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV6QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzNELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXZDLE1BQU0sWUFBWSxHQUFHLEdBQUcsSUFBSSxJQUFJLEtBQUssSUFBSSxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQztRQUVsRSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFLLEVBQTBCLENBQUM7UUFDOUUsTUFBTSxnQkFBZ0IsR0FBd0I7WUFDNUMsR0FBRyxnQkFBZ0I7WUFDbkIsZ0JBQWdCLEVBQUUsWUFBWTtTQUMvQixDQUFDO1FBRUYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUNyQixJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFDbEUsSUFBSSxRQUFRLENBQUM7WUFFYixJQUFJLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUM7b0JBQ0gsUUFBUSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQzdCLENBQUMsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxFQUM1RSxHQUFHLENBQ0osQ0FBQztvQkFDRixJQUFJLENBQUMsb0NBQW9DLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUM5RCxDQUFDO2dCQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7b0JBQ2YsUUFBUSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLG9DQUFvQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDekQsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNoQixJQUFJLENBQUMsb0NBQW9DLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hELENBQUM7WUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztZQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxVQUFVLENBQUMsSUFBWTtRQUM3QixNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoRSxPQUFPLEdBQUcsS0FBSyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUVPLHVCQUF1QixDQUFDLEtBQWdDO1FBQzlELElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxvQ0FBb0MsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDbkYsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTdCLHdDQUF3QztRQUN4QyxNQUFNLEtBQUssR0FBRyx3Q0FBd0MsQ0FBQztRQUV2RCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEtBQWdDO1FBQ3hELElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxvQ0FBb0MsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDbkYsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFMUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFakQsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0lBRU8sa0JBQWtCLENBQUMsS0FBZ0M7UUFDekQsSUFBSSxJQUFJLENBQUMsb0NBQW9DLENBQUMsUUFBUSxFQUFFLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDcEUsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUM7SUFDMUIsQ0FBQzsrR0E1VlUsbUNBQW1DO21HQUFuQyxtQ0FBbUMsdVBBRm5DLENBQUMsbUJBQW1CLENBQUMsMEJDMUNsQyw4K0xBNEpBOzs0RkRoSGEsbUNBQW1DO2tCQU4vQyxTQUFTOytCQUNFLHVDQUF1QyxhQUd0QyxDQUFDLG1CQUFtQixDQUFDOzZNQUt2QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDTyxRQUFRO3NCQUFwQixLQUFLO2dCQUdHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDSSxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBmaWx0ZXIsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBTdWJqZWN0LFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7SW5wdXRPcHRpb24sIFNldFphYWtTdGF0dXNDb25maWd9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0NBUkJPTl9USEVNRSwgQ2RzVGhlbWVTZXJ2aWNlLCBDdXJyZW50Q2FyYm9uVGhlbWUsIE1vZGFsU2VydmljZSwgUmFkaW9WYWx1ZSwgU2VsZWN0SXRlbX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0RvY3VtZW50U2VydmljZX0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7WmFrZW5BcGlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1BsdWdpblRyYW5zbGF0ZVBpcGV9IGZyb20gJy4uLy4uLy4uLy4uL3BpcGVzJztcbmltcG9ydCBmbGF0cGlja3IgZnJvbSAnZmxhdHBpY2tyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1zZXQtemFhay1zdGF0dXMtY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZXQtemFhay1zdGF0dXMtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NldC16YWFrLXN0YXR1cy1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1BsdWdpblRyYW5zbGF0ZVBpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTZXRaYWFrU3RhdHVzQ29uZmlndXJhdGlvbkNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KCkgc2F2ZSQ6IE9ic2VydmFibGU8dm9pZD47XG4gIEBJbnB1dCgpIGRpc2FibGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgQElucHV0KCkgc2V0IHBsdWdpbklkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnBsdWdpbklkJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBwcmVmaWxsQ29uZmlndXJhdGlvbiQ6IE9ic2VydmFibGU8U2V0WmFha1N0YXR1c0NvbmZpZz47XG4gIEBPdXRwdXQoKSB2YWxpZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgY29uZmlndXJhdGlvbjogRXZlbnRFbWl0dGVyPFNldFphYWtTdGF0dXNDb25maWc+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPFNldFphYWtTdGF0dXNDb25maWc+KCk7XG5cbiAgcmVhZG9ubHkgY2FzZURlZmluaXRpb25TZWxlY3RJdGVtcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PFNlbGVjdEl0ZW0+PihudWxsKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGNsZWFyU3RhdHVzU2VsZWN0aW9uJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuXG4gIHJlYWRvbmx5IHN0YXR1c1R5cGVTZWxlY3RJdGVtcyQ6IE9ic2VydmFibGU8e1tjYXNlRGVmaW5pdGlvbklkOiBzdHJpbmddOiBBcnJheTxTZWxlY3RJdGVtPn0+ID1cbiAgICB0aGlzLm1vZGFsU2VydmljZS5tb2RhbERhdGEkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAocGFyYW1zID0+XG4gICAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmZpbmRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uc0J5UHJvY2Vzc0RlZmluaXRpb25LZXkoXG4gICAgICAgICAgcGFyYW1zPy5wcm9jZXNzRGVmaW5pdGlvbktleVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgdGFwKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zID0+IHtcbiAgICAgICAgY29uc3QgY2FzZURlZlNlbGVjdEl0ZW1zID0gcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMubWFwKHByb2Nlc3NEb2NEZWYgPT4gKHtcbiAgICAgICAgICB0ZXh0OiBwcm9jZXNzRG9jRGVmLmlkLmRvY3VtZW50RGVmaW5pdGlvbklkLm5hbWUsXG4gICAgICAgICAgaWQ6IHByb2Nlc3NEb2NEZWYuaWQuZG9jdW1lbnREZWZpbml0aW9uSWQubmFtZSxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHRoaXMuY2FzZURlZmluaXRpb25TZWxlY3RJdGVtcyQubmV4dChjYXNlRGVmU2VsZWN0SXRlbXMpO1xuXG4gICAgICAgIGlmICh0aGlzLm9uZVNlbGVjdEl0ZW0oY2FzZURlZlNlbGVjdEl0ZW1zKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkJC5uZXh0KGNhc2VEZWZTZWxlY3RJdGVtc1swXS5pZCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zID0+XG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgIG9mKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLm1hcChwcm9jZXNzRG9jID0+IHByb2Nlc3NEb2MuaWQuZG9jdW1lbnREZWZpbml0aW9uSWQubmFtZSkpLFxuICAgICAgICAgIC4uLnByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLm1hcChwcm9jZXNzRG9jRGVmID0+XG4gICAgICAgICAgICB0aGlzLnpha2VuQXBpU2VydmljZS5nZXRTdGF0dXNUeXBlc0J5Q2FzZURlZmluaXRpb24oXG4gICAgICAgICAgICAgIHByb2Nlc3NEb2NEZWYuaWQuZG9jdW1lbnREZWZpbml0aW9uSWQubmFtZVxuICAgICAgICAgICAgKVxuICAgICAgICAgICksXG4gICAgICAgIF0pXG4gICAgICApLFxuICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgIGNvbnN0IGNhc2VEZWZpbml0aW9uSWRzID0gcmVzWzBdO1xuICAgICAgICBjb25zdCBzdGF0dXNUeXBlcyA9IHJlcy5maWx0ZXIoKGN1cnIsIGluZGV4KSA9PiBpbmRleCAhPT0gMCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdE9iamVjdCA9IHt9O1xuXG4gICAgICAgIGNhc2VEZWZpbml0aW9uSWRzLmZvckVhY2goKGNhc2VEZWZpbml0aW9uSWQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgc2VsZWN0T2JqZWN0W2Nhc2VEZWZpbml0aW9uSWRdID0gc3RhdHVzVHlwZXNbaW5kZXhdLm1hcChzdGF0dXNUeXBlID0+ICh7XG4gICAgICAgICAgICBpZDogc3RhdHVzVHlwZS51cmwsXG4gICAgICAgICAgICB0ZXh0OiBzdGF0dXNUeXBlLm5hbWUsXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gc2VsZWN0T2JqZWN0O1xuICAgICAgfSksXG4gICAgICB0YXAoc2VsZWN0T2JqZWN0ID0+IHtcbiAgICAgICAgdGhpcy5wcmVmaWxsQ29uZmlndXJhdGlvbiQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocHJlZmlsbENvbmZpZyA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhdHVzVHlwZVVybCA9IHByZWZpbGxDb25maWc/LnN0YXR1c3R5cGVVcmw7XG5cbiAgICAgICAgICBpZiAoc3RhdHVzVHlwZVVybCkge1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkQ2FzZURlZmluaXRpb25JZCE6IHN0cmluZztcblxuICAgICAgICAgICAgT2JqZWN0LmtleXMoc2VsZWN0T2JqZWN0KS5mb3JFYWNoKGNhc2VEZWZpbml0aW9uSWQgPT4ge1xuICAgICAgICAgICAgICBpZiAoc2VsZWN0T2JqZWN0W2Nhc2VEZWZpbml0aW9uSWRdLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBzdGF0dXNUeXBlVXJsKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2FzZURlZmluaXRpb25JZCA9IGNhc2VEZWZpbml0aW9uSWQ7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENhc2VEZWZpbml0aW9uSWQkLm5leHQoc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5wdXRPcHRpb24kLm5leHQoJ3RleHQnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICByZWFkb25seSBzZWxlY3RlZElucHV0T3B0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SW5wdXRPcHRpb24+KCdzZWxlY3Rpb24nKTtcbiAgcmVhZG9ubHkgZGF0dW1TdGF0dXNHZXpldFNlbGVjdGVkSW5wdXRPcHRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCdub3cnKTtcbiAgcmVhZG9ubHkgZGF0ZVBpY2tlckludmFsaWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgcGx1Z2luSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICByZWFkb25seSBpbnB1dFR5cGVPcHRpb25zJDogT2JzZXJ2YWJsZTxBcnJheTxSYWRpb1ZhbHVlPj4gPSB0aGlzLnBsdWdpbklkJC5waXBlKFxuICAgIGZpbHRlcihwbHVnaW5JZCA9PiAhIXBsdWdpbklkKSxcbiAgICBzd2l0Y2hNYXAocGx1Z2luSWQgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLnBsdWdpblRyYW5zbGF0ZVBpcGUudHJhbnNmb3JtKCdzZWxlY3Rpb24nLCBwbHVnaW5JZCksXG4gICAgICAgIHRoaXMucGx1Z2luVHJhbnNsYXRlUGlwZS50cmFuc2Zvcm0oJ3RleHQnLCBwbHVnaW5JZCksXG4gICAgICBdKVxuICAgICksXG4gICAgbWFwKChbc2VsZWN0aW9uVHJhbnNsYXRpb24sIHRleHRUcmFuc2xhdGlvbl0pID0+IFtcbiAgICAgIHt2YWx1ZTogJ3NlbGVjdGlvbicsIHRpdGxlOiBzZWxlY3Rpb25UcmFuc2xhdGlvbn0sXG4gICAgICB7dmFsdWU6ICd0ZXh0JywgdGl0bGU6IHRleHRUcmFuc2xhdGlvbn0sXG4gICAgXSlcbiAgKTtcblxuICByZWFkb25seSBkYXRlUGlja2VySW5wdXRUeXBlT3B0aW9ucyQ6IE9ic2VydmFibGU8QXJyYXk8UmFkaW9WYWx1ZT4+ID0gdGhpcy5wbHVnaW5JZCQucGlwZShcbiAgICBmaWx0ZXIocGx1Z2luSWQgPT4gISFwbHVnaW5JZCksXG4gICAgc3dpdGNoTWFwKHBsdWdpbklkID0+XG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5wbHVnaW5UcmFuc2xhdGVQaXBlLnRyYW5zZm9ybSgnbm93JywgcGx1Z2luSWQpLFxuICAgICAgICB0aGlzLnBsdWdpblRyYW5zbGF0ZVBpcGUudHJhbnNmb3JtKCdzZWxlY3Rpb24nLCBwbHVnaW5JZCksXG4gICAgICAgIHRoaXMucGx1Z2luVHJhbnNsYXRlUGlwZS50cmFuc2Zvcm0oJ3RleHQnLCBwbHVnaW5JZCksXG4gICAgICBdKVxuICAgICksXG4gICAgbWFwKChbbm93VHJhbnNsYXRpb24sIHNlbGVjdGlvblRyYW5zbGF0aW9uLCB0ZXh0VHJhbnNsYXRpb25dKSA9PiBbXG4gICAgICB7dmFsdWU6ICdub3cnLCB0aXRsZTogbm93VHJhbnNsYXRpb259LFxuICAgICAge3ZhbHVlOiAnc2VsZWN0aW9uJywgdGl0bGU6IHNlbGVjdGlvblRyYW5zbGF0aW9ufSxcbiAgICAgIHt2YWx1ZTogJ3RleHQnLCB0aXRsZTogdGV4dFRyYW5zbGF0aW9ufSxcbiAgICBdKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSB0aGVtZSQ6IE9ic2VydmFibGU8Q0FSQk9OX1RIRU1FPiA9IHRoaXMuY2RzVGhlbWVTZXJ2aWNlLmN1cnJlbnRUaGVtZSQucGlwZShcbiAgICBtYXAoKHRoZW1lOiBDdXJyZW50Q2FyYm9uVGhlbWUpID0+XG4gICAgICB0aGVtZSA9PT0gQ3VycmVudENhcmJvblRoZW1lLkcxMCA/IENBUkJPTl9USEVNRS5XSElURSA6IENBUkJPTl9USEVNRS5HMTAwXG4gICAgKVxuICApO1xuXG4gIHByaXZhdGUgc2F2ZVN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGZvcm1WYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNldFphYWtTdGF0dXNDb25maWcgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSB2YWxpZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwdWJsaWMgc2VsZWN0ZWREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIHNlbGVjdGVkVGltZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgemFrZW5BcGlTZXJ2aWNlOiBaYWtlbkFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwbHVnaW5UcmFuc2xhdGVQaXBlOiBQbHVnaW5UcmFuc2xhdGVQaXBlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RzVGhlbWVTZXJ2aWNlOiBDZHNUaGVtZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5TYXZlU3Vic2NyaXB0aW9uKCk7XG4gICAgdGhpcy5wcmVmaWxsVG9kYXkoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnNhdmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZm9ybVZhbHVlQ2hhbmdlKGZvcm1WYWx1ZTogU2V0WmFha1N0YXR1c0NvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRGb3JtVmFsdWUgPSB0aGlzLmZvcm1WYWx1ZSQudmFsdWUgPz8gKHt9IGFzIFNldFphYWtTdGF0dXNDb25maWcpO1xuICAgIGNvbnN0IHVwZGF0ZWRGb3JtVmFsdWU6IFNldFphYWtTdGF0dXNDb25maWcgPSB7XG4gICAgICAuLi5jdXJyZW50Rm9ybVZhbHVlLFxuICAgICAgLi4uZm9ybVZhbHVlLFxuICAgIH07XG5cbiAgICB0aGlzLmZvcm1WYWx1ZSQubmV4dCh1cGRhdGVkRm9ybVZhbHVlKTtcbiAgICB0aGlzLmhhbmRsZVZhbGlkKHVwZGF0ZWRGb3JtVmFsdWUpO1xuICAgIGlmICh1cGRhdGVkRm9ybVZhbHVlLmlucHV0VHlwZVphYWtTdGF0dXNUb2dnbGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbnB1dE9wdGlvbiQubmV4dCh1cGRhdGVkRm9ybVZhbHVlLmlucHV0VHlwZVphYWtTdGF0dXNUb2dnbGUpO1xuICAgIH1cbiAgICBpZiAodXBkYXRlZEZvcm1WYWx1ZS5pbnB1dERhdHVtU3RhdHVzR2V6ZXRUb2dnbGUpIHtcbiAgICAgIHRoaXMuZGF0dW1TdGF0dXNHZXpldFNlbGVjdGVkSW5wdXRPcHRpb24kLm5leHQodXBkYXRlZEZvcm1WYWx1ZS5pbnB1dERhdHVtU3RhdHVzR2V6ZXRUb2dnbGUpO1xuICAgIH1cbiAgICBpZiAodXBkYXRlZEZvcm1WYWx1ZS5pbnB1dERhdHVtU3RhdHVzR2V6ZXRUb2dnbGUgPT09ICdub3cnKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkVGltZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0Q2FzZURlZmluaXRpb24oY2FzZURlZmluaXRpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZENhc2VEZWZpbml0aW9uSWQkLm5leHQoY2FzZURlZmluaXRpb25JZCk7XG4gICAgdGhpcy5jbGVhclN0YXR1c1NlbGVjdGlvbiQubmV4dCgpO1xuICB9XG5cbiAgb25lU2VsZWN0SXRlbShzZWxlY3RJdGVtczogQXJyYXk8U2VsZWN0SXRlbT4pOiBib29sZWFuIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RJdGVtcykpIHtcbiAgICAgIHJldHVybiBzZWxlY3RJdGVtcy5sZW5ndGggPT09IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVWYWxpZChmb3JtVmFsdWU6IFNldFphYWtTdGF0dXNDb25maWcpOiB2b2lkIHtcbiAgICBjb25zdCBoYXNTdGF0dXNUeXBlID0gISFmb3JtVmFsdWUuc3RhdHVzdHlwZVVybDtcbiAgICBjb25zdCBoYXNWYWxpZERhdHVtU3RhdHVzR2V6ZXQgPSB0aGlzLmlzVmFsaWREYXR1bVN0YXR1c0dlemV0KGZvcm1WYWx1ZS5kYXR1bVN0YXR1c0dlemV0KTtcbiAgICBjb25zdCBkYXRlSXNOb3RJbkZ1dHVyZSA9IHRoaXMuaXNEYXRlTm90SW5GdXR1cmUoZm9ybVZhbHVlLmRhdHVtU3RhdHVzR2V6ZXQpO1xuICAgIGNvbnN0IGhhc0VudGVyZWREYXRlVGV4dCA9IHRoaXMuaGFzRW50ZXJlZERhdGVUZXh0KGZvcm1WYWx1ZS5kYXR1bVN0YXR1c0dlemV0KTtcblxuICAgIGNvbnN0IHZhbGlkID0gaGFzU3RhdHVzVHlwZSAmJiBoYXNWYWxpZERhdHVtU3RhdHVzR2V6ZXQgJiYgZGF0ZUlzTm90SW5GdXR1cmUgJiYgaGFzRW50ZXJlZERhdGVUZXh0O1xuXG4gICAgdGhpcy52YWxpZCQubmV4dCh2YWxpZCk7XG4gICAgdGhpcy52YWxpZC5lbWl0KHZhbGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblNhdmVTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zYXZlU3Vic2NyaXB0aW9uID0gdGhpcy5zYXZlJD8uc3Vic2NyaWJlKHNhdmUgPT4ge1xuICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5mb3JtVmFsdWUkLCB0aGlzLnZhbGlkJF0pXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKFtmb3JtVmFsdWUsIHZhbGlkXSkgPT4ge1xuICAgICAgICAgIGlmICh2YWxpZCkge1xuICAgICAgICAgICAgaWYgKGZvcm1WYWx1ZS5pbnB1dERhdHVtU3RhdHVzR2V6ZXRUb2dnbGUgPT0gJ25vdycpIHtcbiAgICAgICAgICAgICAgZm9ybVZhbHVlLmRhdHVtU3RhdHVzR2V6ZXQgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmVtaXQoe1xuICAgICAgICAgICAgICBzdGF0dXN0b2VsaWNodGluZzogZm9ybVZhbHVlLnN0YXR1c3RvZWxpY2h0aW5nLFxuICAgICAgICAgICAgICBzdGF0dXN0eXBlVXJsOiBmb3JtVmFsdWUuc3RhdHVzdHlwZVVybCxcbiAgICAgICAgICAgICAgZGF0dW1TdGF0dXNHZXpldDogZm9ybVZhbHVlLmRhdHVtU3RhdHVzR2V6ZXQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uRGF0ZVNlbGVjdGVkKGV2ZW50OiBEYXRlW10pOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gQXJyYXkuaXNBcnJheShldmVudCkgJiYgZXZlbnRbMF07XG4gICAgaWYgKCFkYXRlKSByZXR1cm47XG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBkYXRlLnRvSVNPU3RyaW5nKCk7XG4gICAgdGhpcy51cGRhdGVEYXR1bVN0YXR1c0dlemV0KCk7XG4gIH1cblxuICBwdWJsaWMgb25UaW1lU2VsZWN0ZWQoZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRUaW1lID0gZXZlbnQ7XG4gICAgdGhpcy51cGRhdGVEYXR1bVN0YXR1c0dlemV0KCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURhdHVtU3RhdHVzR2V6ZXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRGF0ZSAmJiAhdGhpcy5zZWxlY3RlZFRpbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgaG91cnNTdHI7XG4gICAgbGV0IG1pbnV0ZXNTdHI7XG4gICAgbGV0IHNlY29uZHNTdHI7XG4gICAgdHJ5IHtcbiAgICAgIFtob3Vyc1N0ciwgbWludXRlc1N0ciA9ICcwMCcsIHNlY29uZHNTdHIgPSAnMDAnXSA9IHRoaXMuc2VsZWN0ZWRUaW1lLnNwbGl0KCc6Jyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIFtob3Vyc1N0ciwgbWludXRlc1N0ciA9ICcwMCcsIHNlY29uZHNTdHIgPSAnMDAnXSA9IFsnMDAnLCAnMDAnXTtcbiAgICB9XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlKTtcblxuICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgY29uc3QgbW9udGggPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCBkYXkgPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgY29uc3QgaGggPSBob3Vyc1N0ci5wYWRTdGFydCgyLCAnMCcpO1xuICAgIGNvbnN0IG1tID0gbWludXRlc1N0ci5wYWRTdGFydCgyLCAnMCcpO1xuICAgIGNvbnN0IHNzID0gc2Vjb25kc1N0ci5wYWRTdGFydCgyLCAnMCcpO1xuXG4gICAgY29uc3QgaXNvV2l0aG91dE1zID0gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9VCR7aGh9OiR7bW19OiR7c3N9WmA7XG5cbiAgICBjb25zdCBjdXJyZW50Rm9ybVZhbHVlID0gdGhpcy5mb3JtVmFsdWUkLnZhbHVlID8/ICh7fSBhcyBTZXRaYWFrU3RhdHVzQ29uZmlnKTtcbiAgICBjb25zdCB1cGRhdGVkRm9ybVZhbHVlOiBTZXRaYWFrU3RhdHVzQ29uZmlnID0ge1xuICAgICAgLi4uY3VycmVudEZvcm1WYWx1ZSxcbiAgICAgIGRhdHVtU3RhdHVzR2V6ZXQ6IGlzb1dpdGhvdXRNcyxcbiAgICB9O1xuXG4gICAgdGhpcy5mb3JtVmFsdWVDaGFuZ2UodXBkYXRlZEZvcm1WYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHByZWZpbGxUb2RheSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMucHJlZmlsbENvbmZpZ3VyYXRpb24kLnN1YnNjcmliZShjb25maWcgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnUHJlZmlsbGluZyBjb25maWd1cmF0aW9uJywgY29uZmlnPy5kYXR1bVN0YXR1c0dlemV0KTtcbiAgICAgICAgbGV0IGJhc2VEYXRlO1xuXG4gICAgICAgIGlmIChjb25maWc/LmRhdHVtU3RhdHVzR2V6ZXQpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYmFzZURhdGUgPSBmbGF0cGlja3IuZm9ybWF0RGF0ZShcbiAgICAgICAgICAgICAgISFjb25maWc/LmRhdHVtU3RhdHVzR2V6ZXQgPyBuZXcgRGF0ZShjb25maWchLmRhdHVtU3RhdHVzR2V6ZXQpIDogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgJ1onXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5kYXR1bVN0YXR1c0dlemV0U2VsZWN0ZWRJbnB1dE9wdGlvbiQubmV4dCgnc2VsZWN0aW9uJyk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGJhc2VEYXRlID0gY29uZmlnLmRhdHVtU3RhdHVzR2V6ZXQ7XG4gICAgICAgICAgICB0aGlzLmRhdHVtU3RhdHVzR2V6ZXRTZWxlY3RlZElucHV0T3B0aW9uJC5uZXh0KCd0ZXh0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2VEYXRlID0gbnVsbDtcbiAgICAgICAgICB0aGlzLmRhdHVtU3RhdHVzR2V6ZXRTZWxlY3RlZElucHV0T3B0aW9uJC5uZXh0KCdub3cnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gYmFzZURhdGU7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lID0gdGhpcy5mb3JtYXRUaW1lKGJhc2VEYXRlKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMudXBkYXRlRGF0dW1TdGF0dXNHZXpldCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRUaW1lKGRhdGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgW2hvdXJzLCBtaW51dGVzLCBzZWNvbmRzXSA9IGRhdGUuc3BsaXQoJ1QnKVsxXS5zcGxpdCgnOicpO1xuICAgIHJldHVybiBgJHtob3Vyc306JHttaW51dGVzfToke3NlY29uZHMuc3BsaXQoJy4nKVswXX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkRGF0dW1TdGF0dXNHZXpldCh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIGlmIChbJ3RleHQnLCAnbm93J10uaW5jbHVkZXModGhpcy5kYXR1bVN0YXR1c0dlemV0U2VsZWN0ZWRJbnB1dE9wdGlvbiQuZ2V0VmFsdWUoKSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmltbWVkID0gdmFsdWUudHJpbSgpO1xuXG4gICAgLy8gUmVxdWlyZWQgZm9ybWF0OiBZWVlZLU1NLUREVEhIOm1tOnNzWlxuICAgIGNvbnN0IHJlZ2V4ID0gL15cXGR7NH0tXFxkezJ9LVxcZHsyfVRcXGR7Mn06XFxkezJ9OlxcZHsyfVokLztcblxuICAgIGlmICghcmVnZXgudGVzdCh0cmltbWVkKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0cmltbWVkKTtcbiAgICByZXR1cm4gIWlzTmFOKGRhdGUuZ2V0VGltZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNEYXRlTm90SW5GdXR1cmUodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICBpZiAoWyd0ZXh0JywgJ25vdyddLmluY2x1ZGVzKHRoaXMuZGF0dW1TdGF0dXNHZXpldFNlbGVjdGVkSW5wdXRPcHRpb24kLmdldFZhbHVlKCkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGlzRGF0ZU5vdEluRnV0dXJlID0gZGF0ZS5nZXRUaW1lKCkgPD0gbm93LmdldFRpbWUoKTtcblxuICAgIHRoaXMuZGF0ZVBpY2tlckludmFsaWQkLm5leHQoIWlzRGF0ZU5vdEluRnV0dXJlKTtcblxuICAgIHJldHVybiBpc0RhdGVOb3RJbkZ1dHVyZTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzRW50ZXJlZERhdGVUZXh0KHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuZGF0dW1TdGF0dXNHZXpldFNlbGVjdGVkSW5wdXRPcHRpb24kLmdldFZhbHVlKCkgIT09ICd0ZXh0Jykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuICF2YWx1ZSA9PT0gZmFsc2U7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPHYtZm9ybVxuICAodmFsdWVDaGFuZ2UpPVwiZm9ybVZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAqbmdJZj1cIntcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQkIHwgYXN5bmMsXG4gICAgcHJlZmlsbDogcHJlZmlsbENvbmZpZ3VyYXRpb24kID8gKHByZWZpbGxDb25maWd1cmF0aW9uJCB8IGFzeW5jKSA6IG51bGwsXG4gICAgcGx1Z2luSWQ6IHBsdWdpbklkJCB8IGFzeW5jLFxuICAgIHNlbGVjdGVkSW5wdXRPcHRpb246IHNlbGVjdGVkSW5wdXRPcHRpb24kIHwgYXN5bmMsXG4gICAgZGF0dW1TdGF0dXNHZXpldFNlbGVjdGVkSW5wdXRPcHRpb246IGRhdHVtU3RhdHVzR2V6ZXRTZWxlY3RlZElucHV0T3B0aW9uJCB8IGFzeW5jLFxuICAgIGxvYWRpbmc6IGxvYWRpbmckIHwgYXN5bmMsXG4gICAgY2FzZURlZmluaXRpb25JdGVtczogY2FzZURlZmluaXRpb25TZWxlY3RJdGVtcyQgfCBhc3luYyxcbiAgICBzdGF0dXNUeXBlSXRlbXM6IHN0YXR1c1R5cGVTZWxlY3RJdGVtcyQgfCBhc3luYyxcbiAgICBzZWxlY3RlZENhc2VEZWZpbml0aW9uSWQ6IHNlbGVjdGVkQ2FzZURlZmluaXRpb25JZCQgfCBhc3luYyxcbiAgICBkYXRlUGlja2VySW52YWxpZDogZGF0ZVBpY2tlckludmFsaWQkIHwgYXN5bmNcbiAgfSBhcyBvYnNcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JzLmxvYWRpbmcgPT09IGZhbHNlOyBlbHNlIGxvYWRpbmdcIj5cbiAgICA8di1pbnB1dFxuICAgICAgbmFtZT1cInN0YXR1c3RvZWxpY2h0aW5nXCJcbiAgICAgIFt0aXRsZV09XCInc3RhdHVzdG9lbGljaHRpbmcnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgW2RlZmF1bHRWYWx1ZV09XCJvYnMucHJlZmlsbD8uc3RhdHVzdG9lbGljaHRpbmdcIlxuICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiXG4gICAgICBbcmVxdWlyZWRdPVwiZmFsc2VcIlxuICAgICAgW3Rvb2x0aXBdPVwiJ3N0YXR1c3RvZWxpY2h0aW5nVG9vbHRpcCcgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ3N0YXR1c3RvZWxpY2h0aW5nJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgID5cbiAgICA8L3YtaW5wdXQ+XG5cbiAgICA8di1yYWRpb1xuICAgICAgbmFtZT1cImlucHV0RGF0dW1TdGF0dXNHZXpldFRvZ2dsZVwiXG4gICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCJcbiAgICAgIFt0aXRsZV09XCInaW5wdXREYXR1bVN0YXR1c0dlemV0VG9nZ2xlJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgW3JhZGlvVmFsdWVzXT1cImRhdGVQaWNrZXJJbnB1dFR5cGVPcHRpb25zJCB8IGFzeW5jXCJcbiAgICAgIFtkZWZhdWx0VmFsdWVdPVwib2JzLmRhdHVtU3RhdHVzR2V6ZXRTZWxlY3RlZElucHV0T3B0aW9uXCJcbiAgICAgIFttYXJnaW5dPVwidHJ1ZVwiXG4gICAgPjwvdi1yYWRpbz5cblxuICAgIDxkaXYgY2xhc3M9XCJkYXRlLXRpbWUtcm93XCIgKm5nSWY9XCJvYnMuZGF0dW1TdGF0dXNHZXpldFNlbGVjdGVkSW5wdXRPcHRpb24gPT09ICdzZWxlY3Rpb24nXCI+XG4gICAgICA8Y2RzLWRhdGUtcGlja2VyXG4gICAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cInRoZW1lJCB8IGFzeW5jXCJcbiAgICAgICAgW2xhYmVsXT1cIidsb2dnaW5nLnNlYXJjaC5hZnRlclRpbWVzdGFtcCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIkRELU1NLVlZWVlcIlxuICAgICAgICBbZGF0ZUZvcm1hdF09XCInZC1tLVknXCJcbiAgICAgICAgW3ZhbHVlXT1cIltzZWxlY3RlZERhdGVdXCJcbiAgICAgICAgW2ludmFsaWRdPVwib2JzLmRhdGVQaWNrZXJJbnZhbGlkXCJcbiAgICAgICAgW2ludmFsaWRUZXh0XT1cIidkYXR1bVN0YXR1c0dlemV0SW52YWxpZFRleHQnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkRhdGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgID48L2Nkcy1kYXRlLXBpY2tlcj5cblxuICAgICAgPGNkcy10aW1lcGlja2VyXG4gICAgICAgIGNsYXNzPVwidGltZXBpY2tlclwiXG4gICAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cInRoZW1lJCB8IGFzeW5jXCJcbiAgICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkVGltZVwiXG4gICAgICAgIFtpbnZhbGlkXT1cIm9icy5kYXRlUGlja2VySW52YWxpZFwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblRpbWVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgID48L2Nkcy10aW1lcGlja2VyPlxuICAgIDwvZGl2PlxuXG4gICAgPHYtaW5wdXRcbiAgICAgICpuZ0lmPVwib2JzLmRhdHVtU3RhdHVzR2V6ZXRTZWxlY3RlZElucHV0T3B0aW9uID09PSAndGV4dCdcIlxuICAgICAgbmFtZT1cImRhdHVtU3RhdHVzR2V6ZXRcIlxuICAgICAgW3RpdGxlXT1cIidkYXR1bVN0YXR1c0dlemV0JyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgIFtkZWZhdWx0VmFsdWVdPVwib2JzLnByZWZpbGw/LmRhdHVtU3RhdHVzR2V6ZXRcIlxuICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiXG4gICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICBbdHJpbV09XCJ0cnVlXCJcbiAgICAgIFt0b29sdGlwXT1cIidkYXR1bVN0YXR1c0dlemV0VG9vbHRpcCcgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgPjwvdi1pbnB1dD5cblxuICAgIDx2LXJhZGlvXG4gICAgICBuYW1lPVwiaW5wdXRUeXBlWmFha1N0YXR1c1RvZ2dsZVwiXG4gICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCJcbiAgICAgIFt0aXRsZV09XCInaW5wdXRUeXBlWmFha1N0YXR1c1RvZ2dsZScgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgIFtyYWRpb1ZhbHVlc109XCJpbnB1dFR5cGVPcHRpb25zJCB8IGFzeW5jXCJcbiAgICAgIFtkZWZhdWx0VmFsdWVdPVwic2VsZWN0ZWRJbnB1dE9wdGlvbiQgfCBhc3luY1wiXG4gICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgID5cbiAgICA8L3YtcmFkaW8+XG4gICAgPHYtaW5wdXRcbiAgICAgICpuZ0lmPVwib2JzLnNlbGVjdGVkSW5wdXRPcHRpb24gPT09ICd0ZXh0J1wiXG4gICAgICBuYW1lPVwic3RhdHVzdHlwZVVybFwiXG4gICAgICBbdGl0bGVdPVwiJ3N0YXR1c3R5cGVVcmwnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgW2RlZmF1bHRWYWx1ZV09XCJvYnMucHJlZmlsbD8uc3RhdHVzdHlwZVVybFwiXG4gICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCJcbiAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgIFt0cmltXT1cInRydWVcIlxuICAgICAgW3Rvb2x0aXBdPVwiJ3N0YXR1c3R5cGVVcmxUb29sdGlwJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICA+XG4gICAgPC92LWlucHV0PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvYnMuc2VsZWN0ZWRJbnB1dE9wdGlvbiA9PT0gJ3NlbGVjdGlvbidcIj5cbiAgICAgIDx2LXNlbGVjdFxuICAgICAgICBbaXRlbXNdPVwib2JzLmNhc2VEZWZpbml0aW9uSXRlbXNcIlxuICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgICBbd2lkdGhJblB4XT1cIjM1MFwiXG4gICAgICAgIG5hbWU9XCJjYXNlRGVmaW5pdGlvblwiXG4gICAgICAgIFt0aXRsZV09XCInY2FzZURlZmluaXRpb24nIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICBvYnMuZGlzYWJsZWQgfHxcbiAgICAgICAgICBvYnMuc2VsZWN0ZWRJbnB1dE9wdGlvbiA9PT0gJ3RleHQnIHx8XG4gICAgICAgICAgIW9icy5jYXNlRGVmaW5pdGlvbkl0ZW1zIHx8XG4gICAgICAgICAgb25lU2VsZWN0SXRlbShvYnMuY2FzZURlZmluaXRpb25JdGVtcylcbiAgICAgICAgXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICBbbG9hZGluZ109XCIhb2JzLmNhc2VEZWZpbml0aW9uSXRlbXNcIlxuICAgICAgICBbdG9vbHRpcF09XCInY2FzZURlZmluaXRpb25Ub29sdGlwJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwic2VsZWN0Q2FzZURlZmluaXRpb24oJGV2ZW50KVwiXG4gICAgICAgIFtkZWZhdWx0U2VsZWN0aW9uSWRdPVwib2JzPy5zZWxlY3RlZENhc2VEZWZpbml0aW9uSWRcIlxuICAgICAgPjwvdi1zZWxlY3Q+XG4gICAgICA8di1zZWxlY3RcbiAgICAgICAgW2l0ZW1zXT1cIm9icy5zdGF0dXNUeXBlSXRlbXMgJiYgb2JzLnN0YXR1c1R5cGVJdGVtc1tvYnMuc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkXVwiXG4gICAgICAgIFttYXJnaW5dPVwidHJ1ZVwiXG4gICAgICAgIFt3aWR0aEluUHhdPVwiMzUwXCJcbiAgICAgICAgbmFtZT1cInN0YXR1c3R5cGVVcmxcIlxuICAgICAgICBbdGl0bGVdPVwiJ3N0YXR1c3R5cGVVcmxTZWxlY3QnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICBvYnMuZGlzYWJsZWQgfHxcbiAgICAgICAgICBvYnMuc2VsZWN0ZWRJbnB1dE9wdGlvbiA9PT0gJ3RleHQnIHx8XG4gICAgICAgICAgIW9icy5zdGF0dXNUeXBlSXRlbXMgfHxcbiAgICAgICAgICAhb2JzLnN0YXR1c1R5cGVJdGVtc1tvYnMuc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkXVxuICAgICAgICBcIlxuICAgICAgICBbZGVmYXVsdFNlbGVjdGlvbklkXT1cIm9icy5wcmVmaWxsPy5zdGF0dXN0eXBlVXJsXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICBbbG9hZGluZ109XCIhb2JzLnN0YXR1c1R5cGVJdGVtc1wiXG4gICAgICAgIFt0b29sdGlwXT1cIidzdGF0dXN0eXBlVXJsU2VsZWN0VG9vbHRpcCcgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgW2NsZWFyU2VsZWN0aW9uU3ViamVjdCRdPVwiY2xlYXJTdGF0dXNTZWxlY3Rpb24kXCJcbiAgICAgID48L3Ytc2VsZWN0PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvdi1mb3JtPlxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gIDxkaXYgY2xhc3M9XCJsb2FkaW5nLWNvbnRhaW5lclwiPlxuICAgIDxjZHMtbG9hZGluZz48L2Nkcy1sb2FkaW5nPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -14,4 +14,4 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
export {};
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9wbHVnaW4vc3JjL2xpYi9wbHVnaW5zL3pha2VuLWFwaS9tb2RlbHMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjUgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtQbHVnaW5Db25maWd1cmF0aW9uRGF0YX0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7SW5wdXRPcHRpb259IGZyb20gJy4vaW5wdXQnO1xuXG5pbnRlcmZhY2UgWmFrZW5BcGlDb25maWcgZXh0ZW5kcyBQbHVnaW5Db25maWd1cmF0aW9uRGF0YSB7XG4gIHVybDogc3RyaW5nO1xuICBhdXRoZW50aWNhdGlvblBsdWdpbkNvbmZpZ3VyYXRpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIExpbmtEb2N1bWVudFRvWmFha0NvbmZpZyB7XG4gIGRvY3VtZW50VXJsOiBzdHJpbmc7XG4gIHRpdGVsOiBzdHJpbmc7XG4gIGJlc2NocmlqdmluZzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU2V0WmFha1N0YXR1c0NvbmZpZyB7XG4gIHN0YXR1c3R5cGVVcmw6IHN0cmluZztcbiAgc3RhdHVzdG9lbGljaHRpbmc6IHN0cmluZztcbiAgaW5wdXRUeXBlWmFha1N0YXR1c1RvZ2dsZT86IElucHV0T3B0aW9uO1xuICBpbnB1dERhdHVtU3RhdHVzR2V6ZXRUb2dnbGU/OiBzdHJpbmc7XG4gIGRhdHVtU3RhdHVzR2V6ZXQ/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBDcmVhdGVaYWFrUmVzdWx0YWF0Q29uZmlnIHtcbiAgcmVzdWx0YWF0dHlwZVVybDogc3RyaW5nO1xuICB0b2VsaWNodGluZzogc3RyaW5nO1xuICBpbnB1dFR5cGVaYWFrUmVzdWx0YWF0VG9nZ2xlPzogSW5wdXRPcHRpb247XG59XG5cbmludGVyZmFjZSBDcmVhdGVOYXR1dXJsaWprZVBlcnNvb25aYWFrUm9sQ29uZmlnIHtcbiAgcm9sdHlwZVVybDogc3RyaW5nO1xuICByb2xUb2VsaWNodGluZzogc3RyaW5nO1xuICBpbnBCc246IHN0cmluZztcbiAgYW5wSWRlbnRpZmljYXRpZTogc3RyaW5nO1xuICBpbnBBX251bW1lcjogc3RyaW5nO1xuICByZXN1bHRQcm9jZXNzVmFyaWFibGU/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBDcmVhdGVOaWV0TmF0dXVybGlqa2VQZXJzb29uWmFha1JvbENvbmZpZyB7XG4gIHJvbHR5cGVVcmw6IHN0cmluZztcbiAgcm9sVG9lbGljaHRpbmc6IHN0cmluZztcbiAgaW5uTm5wSWQ6IHN0cmluZztcbiAgYW5uSWRlbnRpZmljYXRpZTogc3RyaW5nO1xuICByZXN1bHRQcm9jZXNzVmFyaWFibGU/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBEZWxldGVaYWFrUm9sQ29uZmlnIHtcbiAgcm9sVXVpZDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQ3JlYXRlWmFha0NvbmZpZyB7XG4gIHJzaW46IHN0cmluZztcbiAgbWFudWFsWmFha1R5cGVVcmw6IGJvb2xlYW47XG4gIHphYWt0eXBlVXJsOiBzdHJpbmc7XG4gIGlucHV0VHlwZVphYWtUeXBlVG9nZ2xlPzogSW5wdXRPcHRpb247XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBwbGFubmVkRW5kRGF0ZT86IHN0cmluZztcbiAgZmluYWxEZWxpdmVyeURhdGU/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBTZXRaYWFrb3BzY2hvcnRpbmdDb25maWcge1xuICB2ZXJsZW5naW5nc2R1dXI6IHN0cmluZztcbiAgdG9lbGljaHRpbmdWZXJsZW5naW5nOiBzdHJpbmc7XG4gIHRvZWxpY2h0aW5nT3BzY2hvcnRpbmc6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFN0YXJ0SGVyc3RlbHRlcm1pam5Db25maWcge1xuICBtYXhEdXJhdGlvbkluRGF5czogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQ3JlYXRlWmFha2VpZ2Vuc2NoYXBDb25maWcge1xuICBlaWdlbnNjaGFwVXJsOiBzdHJpbmc7XG4gIGVpZ2Vuc2NoYXBWYWx1ZTogc3RyaW5nO1xuICBpbnB1dFR5cGVFaWdlbnNjaGFwVG9nZ2xlPzogSW5wdXRPcHRpb247XG59XG5cbmludGVyZmFjZSBVcGRhdGVaYWFrZWlnZW5zY2hhcENvbmZpZyB7XG4gIGVpZ2Vuc2NoYXBVcmw6IHN0cmluZztcbiAgZWlnZW5zY2hhcFZhbHVlOiBzdHJpbmc7XG4gIGlucHV0VHlwZUVpZ2Vuc2NoYXBUb2dnbGU/OiBJbnB1dE9wdGlvbjtcbn1cblxuaW50ZXJmYWNlIERlbGV0ZVphYWtlaWdlbnNjaGFwQ29uZmlnIHtcbiAgZWlnZW5zY2hhcFVybDogc3RyaW5nO1xuICBpbnB1dFR5cGVFaWdlbnNjaGFwVG9nZ2xlPzogSW5wdXRPcHRpb247XG59XG5cbmludGVyZmFjZSBSZWxhdGVlclpha2VuQ29uZmlnIHtcbiAgdGVSZWxhdGVyZW5aYWFrVXJpOiBzdHJpbmc7XG4gIGFhcmRSZWxhdGllOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBHZXRaYWFrYmVzbHVpdGVuQ29uZmlnIHtcbiAgcmVzdWx0UHJvY2Vzc1ZhcmlhYmxlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB7XG4gIFpha2VuQXBpQ29uZmlnLFxuICBMaW5rRG9jdW1lbnRUb1phYWtDb25maWcsXG4gIFNldFphYWtTdGF0dXNDb25maWcsXG4gIENyZWF0ZVphYWtSZXN1bHRhYXRDb25maWcsXG4gIENyZWF0ZVphYWtDb25maWcsXG4gIENyZWF0ZU5hdHV1cmxpamtlUGVyc29vblphYWtSb2xDb25maWcsXG4gIENyZWF0ZU5pZXROYXR1dXJsaWprZVBlcnNvb25aYWFrUm9sQ29uZmlnLFxuICBEZWxldGVaYWFrUm9sQ29uZmlnLFxuICBTZXRaYWFrb3BzY2hvcnRpbmdDb25maWcsXG4gIFN0YXJ0SGVyc3RlbHRlcm1pam5Db25maWcsXG4gIENyZWF0ZVphYWtlaWdlbnNjaGFwQ29uZmlnLFxuICBVcGRhdGVaYWFrZWlnZW5zY2hhcENvbmZpZyxcbiAgRGVsZXRlWmFha2VpZ2Vuc2NoYXBDb25maWcsXG4gIFJlbGF0ZWVyWmFrZW5Db25maWcsXG4gIEdldFphYWtiZXNsdWl0ZW5Db25maWcsXG59O1xuIl19
|