vc-layout 1.0.3 → 1.0.4
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.
|
@@ -178,65 +178,54 @@ export class BusinessCycleComponent {
|
|
|
178
178
|
*
|
|
179
179
|
*/
|
|
180
180
|
setBusinessCycle() {
|
|
181
|
-
|
|
181
|
+
const combinedDates = this.businessCycleService.convertNumericAlpha(this.businessCycleList[0]?.start_date +
|
|
182
|
+
this.businessCycleList[0]?.end_date);
|
|
183
|
+
const isFutureDates = (cycle) => cycle?.business_cycle === combinedDates &&
|
|
184
|
+
this.businessCycleList[0]?.business_cycle === FUTURE_DATES;
|
|
185
|
+
let businessCycleObject = {
|
|
186
|
+
userId: this.userId,
|
|
187
|
+
selectedCycle: {
|
|
188
|
+
selected: true,
|
|
189
|
+
business_cycle: [],
|
|
190
|
+
selected_cycle_arr: [],
|
|
191
|
+
},
|
|
192
|
+
};
|
|
182
193
|
if (this.tempSelectedCycle?.length === 1) {
|
|
183
|
-
businessCycleObject
|
|
184
|
-
userId: this.userId,
|
|
185
|
-
selectedCycle: {
|
|
186
|
-
start_date: this.tempSelectedCycle[0]?.start_date,
|
|
187
|
-
end_date: this.tempSelectedCycle[0]?.end_date,
|
|
188
|
-
selected: true,
|
|
189
|
-
business_cycle: this.tempSelectedCycle[0]?.business_cycle,
|
|
190
|
-
selected_cycle: this.tempSelectedCycle[0]?.start_date +
|
|
191
|
-
'-' +
|
|
192
|
-
this.tempSelectedCycle[0]?.end_date,
|
|
193
|
-
selected_cycle_arr: [
|
|
194
|
-
this.tempSelectedCycle[0]?.start_date +
|
|
195
|
-
'-' +
|
|
196
|
-
this.tempSelectedCycle[0]?.end_date,
|
|
197
|
-
],
|
|
198
|
-
},
|
|
199
|
-
};
|
|
200
|
-
this.setCycleToShow(businessCycleObject?.selectedCycle);
|
|
201
|
-
// this.cycleToShow = this.tempSelectedCycle[0]?.business_cycle;
|
|
194
|
+
this.setSingleSelectedCycle(businessCycleObject, isFutureDates);
|
|
202
195
|
}
|
|
203
196
|
else {
|
|
204
|
-
|
|
205
|
-
let selected_cycle_arr = [];
|
|
206
|
-
const combinedDates = this.businessCycleService.convertNumericAlpha(this.businessCycleList[0]?.start_date +
|
|
207
|
-
this.businessCycleList[0]?.end_date);
|
|
208
|
-
this.tempSelectedCycle?.forEach((el) => {
|
|
209
|
-
if (el?.business_cycle === combinedDates &&
|
|
210
|
-
this.businessCycleList[0]?.business_cycle === FUTURE_DATES) {
|
|
211
|
-
business_cycle.push(FUTURE_DATES);
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
business_cycle.push(el?.business_cycle);
|
|
215
|
-
}
|
|
216
|
-
selected_cycle_arr.push(el?.start_date + '-' + el?.end_date);
|
|
217
|
-
});
|
|
218
|
-
businessCycleObject = {
|
|
219
|
-
userId: this.userId,
|
|
220
|
-
selectedCycle: {
|
|
221
|
-
start_date: this.tempSelectedCycle[0]?.start_date,
|
|
222
|
-
end_date: this.tempSelectedCycle[1]?.end_date,
|
|
223
|
-
selected: true,
|
|
224
|
-
business_cycle: business_cycle,
|
|
225
|
-
selected_cycle: this.tempSelectedCycle[0]?.start_date +
|
|
226
|
-
'-' +
|
|
227
|
-
this.tempSelectedCycle[1]?.end_date,
|
|
228
|
-
selected_cycle_arr: selected_cycle_arr,
|
|
229
|
-
},
|
|
230
|
-
};
|
|
231
|
-
this.setCycleToShow(businessCycleObject?.selectedCycle);
|
|
232
|
-
// this.cycleToShow = business_cycle[0].substring(0,11) + " - " + business_cycle[1].substring(business_cycle[1]?.length-11, business_cycle[1]?.lenth);
|
|
197
|
+
this.setMultipleSelectedCycles(businessCycleObject, isFutureDates);
|
|
233
198
|
}
|
|
234
|
-
|
|
199
|
+
this.setCycleToShow(businessCycleObject?.selectedCycle);
|
|
235
200
|
localStorage.setItem('businessCycle', JSON.stringify(businessCycleObject));
|
|
236
201
|
this.selectedBusinessCycle = businessCycleObject?.selectedCycle;
|
|
237
202
|
this.businessCycleChange.emit(this.selectedBusinessCycle);
|
|
238
203
|
this.businessCycleService.changeBusinessCycle$.next(true);
|
|
239
204
|
}
|
|
205
|
+
setSingleSelectedCycle(businessCycleObject, isFutureDates) {
|
|
206
|
+
const cycle = this.tempSelectedCycle[0];
|
|
207
|
+
if (isFutureDates(cycle)) {
|
|
208
|
+
cycle.business_cycle = FUTURE_DATES;
|
|
209
|
+
}
|
|
210
|
+
Object.assign(businessCycleObject?.selectedCycle, {
|
|
211
|
+
start_date: cycle?.start_date,
|
|
212
|
+
end_date: cycle?.end_date,
|
|
213
|
+
business_cycle: cycle?.business_cycle,
|
|
214
|
+
selected_cycle: `${cycle?.start_date}-${cycle?.end_date}`,
|
|
215
|
+
selected_cycle_arr: [`${cycle?.start_date}-${cycle?.end_date}`],
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
setMultipleSelectedCycles(businessCycleObject, isFutureDates) {
|
|
219
|
+
this.tempSelectedCycle?.forEach((cycle) => {
|
|
220
|
+
businessCycleObject?.selectedCycle.business_cycle?.push(isFutureDates(cycle) ? FUTURE_DATES : cycle?.business_cycle);
|
|
221
|
+
businessCycleObject?.selectedCycle.selected_cycle_arr?.push(`${cycle?.start_date}-${cycle?.end_date}`);
|
|
222
|
+
});
|
|
223
|
+
businessCycleObject.selectedCycle.start_date =
|
|
224
|
+
this.tempSelectedCycle[0]?.start_date;
|
|
225
|
+
businessCycleObject.selectedCycle.end_date =
|
|
226
|
+
this.tempSelectedCycle[1]?.end_date;
|
|
227
|
+
businessCycleObject.selectedCycle.selected_cycle = `${businessCycleObject?.selectedCycle?.start_date}-${businessCycleObject?.selectedCycle?.end_date}`;
|
|
228
|
+
}
|
|
240
229
|
/**
|
|
241
230
|
* #### Description
|
|
242
231
|
* when user click cancel then it will close the popover.
|
|
@@ -283,4 +272,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
283
272
|
}], orgDetails: [{
|
|
284
273
|
type: Input
|
|
285
274
|
}] } });
|
|
286
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVzaW5lc3MtY3ljbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmMtbGF5b3V0L3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXIvYnVzaW5lc3MtY3ljbGUvYnVzaW5lc3MtY3ljbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmMtbGF5b3V0L3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXIvYnVzaW5lc3MtY3ljbGUvYnVzaW5lc3MtY3ljbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7Ozs7Ozs7O0FBTzFFLE1BQU0sT0FBTyxzQkFBc0I7SUFjakMsWUFDVSxXQUE4QixFQUM5QixvQkFBMEMsRUFDMUMsVUFBc0I7UUFGdEIsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBQzlCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQWhCaEMsZ0JBQVcsR0FBVyxnQkFBZ0IsQ0FBQztRQUN2QyxxQkFBZ0IsR0FBa0IsRUFBRSxDQUFDO1FBQ3JDLGdCQUFXLEdBQWtCLEVBQUUsQ0FBQztRQUNoQyx5QkFBb0IsR0FBa0IsRUFBRSxDQUFDO1FBQ3pDLG9CQUFlLEdBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckMsdUJBQWtCLEdBQWUsRUFBRSxDQUFDO1FBRXBDLHNCQUFpQixHQUFVLEVBQUUsQ0FBQztRQUM5QixXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBRVQsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVFqRCxJQUFJLENBQUMsTUFBTSxHQUFHLElB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LGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQy9EO2lCQUFNLElBQUksS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxXQUFXO29CQUNkLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7d0JBQzFDLEtBQUs7d0JBQ0wsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQ2hDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFDckMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQ2hDLENBQUM7YUFDTDtTQUNGO0lBQ0gsQ0FBQzsrR0EzUlUsc0JBQXNCO21HQUF0QixzQkFBc0Isd0pDWG5DLHU1SEFxR0E7OzRGRDFGYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsbUJBQW1CO29LQWVuQixtQkFBbUI7c0JBQTVCLE1BQU07Z0JBRUUsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXV0aG9yaXplclNlcnZpY2UgfSBmcm9tICdAdmNvbXBseS9hdXRob3JpemVyJztcclxuaW1wb3J0IHsgQnVzaW5lc3NDeWNsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvYnVzaW5lc3MtY3ljbGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGVVRVUkVfREFURVMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvYnVzaW5lc3MtY3ljbGUuY29uc3RhbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd2Yy1idXNpbmVzcy1jeWNsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2J1c2luZXNzLWN5Y2xlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9idXNpbmVzcy1jeWNsZS5jb21wb25lbnQubGVzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQnVzaW5lc3NDeWNsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY3ljbGVUb1Nob3c6IHN0cmluZyA9ICdCdXNpbmVzcyBDeWNsZSc7XHJcbiAgYnVzaW5lc3NDeWNsZUFycjogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gIGhpZGRlbkN5Y2xlOiBBcnJheTxudW1iZXI+ID0gW107XHJcbiAgdGVtcEJ1c2luZXNzQ3ljbGVBcnI6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuICB0ZW1wSGlkZGVuQ3ljbGU6IEFycmF5PG51bWJlcj4gPSBbMF07XHJcbiAgYnVzaW5lc3NDeWNsZXNMaXN0OiBBcnJheTxhbnk+ID0gW107XHJcbiAgYnVzaW5lc3NDeWNsZUxpc3QhOiBBcnJheTxhbnk+O1xyXG4gIHRlbXBTZWxlY3RlZEN5Y2xlOiBhbnlbXSA9IFtdO1xyXG4gIHVzZXJJZDogbnVtYmVyID0gMDtcclxuICBzZWxlY3RlZEJ1c2luZXNzQ3ljbGUhOiBhbnk7XHJcbiAgQE91dHB1dCgpIGJ1c2luZXNzQ3ljbGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBJbnB1dCgpIG9yZ0RldGFpbHM6IGFueTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhvcml6ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBidXNpbmVzc0N5Y2xlU2VydmljZTogQnVzaW5lc3NDeWNsZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFwaVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMudXNlcklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VySWQoKSA/PyAwO1xyXG4gICAgdGhpcy5idXNpbmVzc0N5Y2xlU2VydmljZS5pc0J1c2luZXNzQ3ljbGVBdmFpbGFibGUoKTtcclxuICAgIHRoaXMuc2V0U2VsZWN0ZWRCdXNpbmVzc0N5Y2xlKCk7XHJcbiAgICB0aGlzLmdldE9yZ0RldGFpbHMoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge31cclxuXHJcbiAgZ2V0T3JnRGV0YWlscygpIHtcclxuICAgIHRoaXMuYXBpU2VydmljZS5vcmdhbml6YXRpb25EZXRhaWwkLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMuc2V0QnVzaW5lc3NDeWNsZUtleShyZXMuYnVzaW5lc3NfY3ljbGVzX2Fycik7XHJcbiAgICAgICAgdGhpcy5zZXRCdXNpbmVzc0N5Y2xlKCk7XHJcbiAgICAgICAgdGhpcy5zZXRDeWNsZUVuYWJsZURpc2FibGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3RlZEJ1c2luZXNzQ3ljbGUoKSB7XHJcbiAgICB0aGlzLmJ1c2luZXNzQ3ljbGVTZXJ2aWNlLnNlbGVjdGVkQnVzaW5lc3NDeWNsZSQuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEJ1c2luZXNzQ3ljbGUgPSByZXM7XHJcbiAgICAgICAgdGhpcy5zZXRUZW1wU2VsZWN0ZWRDeWNsZShyZXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqICMjIyMgRGVzY3JpcHRpb25cclxuICAgKiBpdCB3aWxsIHNldCBhIG5ldyBrZXkgaW4gZXZlcnkgY3ljbGVcclxuICAgKiBrZXkgd2lsbCB1c2UgZm9yIGRpc2FibGVkIG9yIGVuYWJsZSB0aGUgY3ljbGUgZnJvbSBidXNpbmVzcyBjeWNsZSBsaXN0LlxyXG4gICAqIEBwYXJhbSBidXNpbmVzc0N5Y2xlIHRoaXMgdGhlIGJ1c2luZXNzIGN5Y2xlIGxpc3RcclxuICAgKi9cclxuICBzZXRCdXNpbmVzc0N5Y2xlS2V5KGJ1c2luZXNzQ3ljbGU6IGFueSkge1xyXG4gICAgdGhpcy5idXNpbmVzc0N5Y2xlTGlzdCA9IGJ1c2luZXNzQ3ljbGU7XHJcbiAgICBpZiAodGhpcy5idXNpbmVzc0N5Y2xlTGlzdC5sZW5ndGgpXHJcbiAgICAgIHRoaXMuYnVzaW5lc3NDeWNsZUxpc3QubWFwKChjeWNsZTogYW55KSA9PiB7XHJcbiAgICAgICAgY3ljbGVbJ2lzRGlzYWJsZWQnXSA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqICMjIyMgRGVzY3JpcHRpb25cclxuICAgKiBpdCB3aWxsIGNoZWNrIHRoZSBjeWNsZSBpZiBpdCBpcyBub3QgY2hlY2tlZC5cclxuICAgKiBpZiBpdCBoYXMgY2hlY2tlZCB0aGVuIGl0IHdpbGwgdW5jaGVjayB0aGF0IGN5Y2xlLlxyXG4gICAqIEBwYXJhbSBjeWNsZSBjaGVja2VkIG9yIHVuY2hlY2tlZCBjeWNsZSBmcm9tIGJ1c2luZXNzIGN5Y2xlIGxpc3QuXHJcbiAgICogQHBhcmFtIGluZGV4IGl0IGdpdmUgdGhlIGluZGV4IHZhbHVlIG9mIGJ1c2luZXNzIGN5Y2xlIGxpc3Qgd2hpY2ggaXMgc2VsZWN0ZWQuXHJcbiAgICovXHJcbiAgc2VsZWN0Q3ljbGUoY3ljbGU6IGFueSwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3QgaXNFeGlzdCA9IHRoaXMudGVtcFNlbGVjdGVkQ3ljbGUuZmluZEluZGV4KFxyXG4gICAgICAoZWw6IGFueSkgPT4gZWwuc3RhcnRfZGF0ZSA9PSBjeWNsZS5zdGFydF9kYXRlXHJcbiAgICApO1xyXG4gICAgaWYgKGlzRXhpc3QgPj0gMCkge1xyXG4gICAgICB0aGlzLnRlbXBTZWxlY3RlZEN5Y2xlLnNwbGljZShpc0V4aXN0LCAxKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy50ZW1wU2VsZWN0ZWRDeWNsZT8ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMudGVtcFNlbGVjdGVkQ3ljbGUucHVzaChjeWNsZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdGhpcy5idXNpbmVzc0N5Y2xlTGlzdC5maW5kSW5kZXgoXHJcbiAgICAgICAgKGVsOiBhbnkpID0+IGVsLnN0YXJ0X2RhdGUgPT0gdGhpcy50ZW1wU2VsZWN0ZWRDeWNsZVswXT8uc3RhcnRfZGF0ZVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoc2VsZWN0ZWRJbmRleCA8IGluZGV4KSB7XHJcbiAgICAgICAgdGhpcy50ZW1wU2VsZWN0ZWRDeWNsZS51bnNoaWZ0KGN5Y2xlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnRlbXBTZWxlY3RlZEN5Y2xlLnB1c2goY3ljbGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEN5Y2xlRW5hYmxlRGlzYWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogIyMjIyBEZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogbmVlZCB0byBjaGVjayBjeWNsZSBpbmNsdWRlcyBpbiBzZWxlY3RlZCBjeWNsZSBhcnJheVxyXG4gICAqIERldGVybWluZXMgd2hldGhlciBzZWxlY3RlZCBjeWNsZSBpc1xyXG4gICAqIEBwYXJhbSBzZWxlY3RlZEN5Y2xlIHNlbGVjdGVkIEN5Y2xlIHdoaWNoIHVzZXIgY2hlY2tlZCBvciBhdXRvIHNlbGVjdGVkIGN5Y2xlLlxyXG4gICAqIEBwYXJhbSBjeWNsZSBhbGwgaW5kaXZpc2libGUgY3ljbGUgb2YgYnVzaW5lc3MgY3ljbGUgb2YgdGhlIG9yZ2FuaXphdGlvbi5cclxuICAgKiBAcmV0dXJucyBib29sZWFuIHZhbHVlIGlzIGN5Y2xlIGV4aXN0IGluIHNlbGVjdGVkIGN5Y2xlIG9yIG5vdC5cclxuICAgKi9cclxuXHJcbiAgaXNTZWxlY3RlZEN5Y2xlKHNlbGVjdGVkQ3ljbGU6IGFueSwgY3ljbGU6IGFueSkge1xyXG4gICAgbGV0IGlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgIHNlbGVjdGVkQ3ljbGUuZm9yRWFjaCgoZWw6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgIGlmIChlbC5zdGFydF9kYXRlID09IGN5Y2xlLnN0YXJ0X2RhdGUpIHtcclxuICAgICAgICBpc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gaXNTZWxlY3RlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqICMjIyMgRGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIHNldCBzZWxlY3RlZCBidXNpbmVzc0N5Y2xlIHRvIHRlbXAgYnVzaW5lc3MgY3ljbGUgaW5kaXZpc2libGUgaWYgdGhlcmUgaXMgdHdvIHNlbGVjdGVkIGN5Y2xlXHJcbiAgICogU2V0cyB0ZW1wIHNlbGVjdGVkIGN5Y2xlXHJcbiAgICogQHBhcmFtIGN5Y2xlIHNlbGVjdGVkIGJ1c2luZXNzIGN5Y2xlIGZyb20gbG9jYWwgc3RvcmFnZVxyXG4gICAqL1xyXG4gIHNldFRlbXBTZWxlY3RlZEN5Y2xlKGN5Y2xlOiBhbnkpIHtcclxuICAgIHRoaXMudGVtcFNlbGVjdGVkQ3ljbGUgPSBbXTtcclxuICAgIGlmIChjeWNsZT8uc2VsZWN0ZWRfY3ljbGVfYXJyPy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgdGhpcy50ZW1wU2VsZWN0ZWRDeWNsZS5wdXNoKGN5Y2xlKTtcclxuICAgICAgdGhpcy5zZXRDeWNsZVRvU2hvdyhjeWNsZSk7XHJcbiAgICAgIC8vIHRoaXMuY3ljbGVUb1Nob3cgPSBjeWNsZS5idXNpbmVzc19jeWNsZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGN5Y2xlPy5zZWxlY3RlZF9jeWNsZV9hcnI/LmZvckVhY2goKGVsOiBhbnksIGk6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICAgICAgc3RhcnRfZGF0ZTogZWwuc3Vic3RyaW5nKDAsIDEwKSxcclxuICAgICAgICAgIGVuZF9kYXRlOiBlbC5zdWJzdHJpbmcoZWw/Lmxlbmd0aCAtIDEwLCBlbD8ubGVudGgpLFxyXG4gICAgICAgICAgc2VsZWN0ZWQ6IHRydWUsXHJcbiAgICAgICAgICBidXNpbmVzc19jeWNsZTogY3ljbGU/LmJ1c2luZXNzX2N5Y2xlW2ldLFxyXG4gICAgICAgICAgc2VsZWN0ZWRfY3ljbGU6IGN5Y2xlPy5zZWxlY3RlZF9jeWNsZVtpXSxcclxuICAgICAgICAgIHNlbGVjdGVkX2N5Y2xlX2FycjogW2VsXSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMudGVtcFNlbGVjdGVkQ3ljbGUucHVzaChwYXlsb2FkKTtcclxuICAgICAgfSk7XHJcbiAgICAgIC8vIHRoaXMuY3ljbGVUb1Nob3cgPSBjeWNsZT8uYnVzaW5lc3NfY3ljbGVbMF0/LnN1YnN0cmluZygwLDExKSArIFwiIC0gXCIgKyBjeWNsZT8uYnVzaW5lc3NfY3ljbGVbMV0uc3Vic3RyaW5nKGN5Y2xlPy5idXNpbmVzc19jeWNsZVsxXT8ubGVuZ3RoLTExLCBjeWNsZT8uYnVzaW5lc3NfY3ljbGVbMV0/LmxlbnRoKTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMuc2V0Q3ljbGVUb1Nob3coY3ljbGUpO1xyXG4gICAgdGhpcy5zZXRDeWNsZUVuYWJsZURpc2FibGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqICMjIyMgRGVzY3JpcHRpb25cclxuICAgKiAgd2hlbiB1c2VyIHNlbGVjdCBvbmUgY3ljbGUgdGhlbiB0aGVpciBiZXNpZGVzIGN5Y2xlcyBhcmUgZW5hYmxlIGFuZCBvdGhlciBhcmUgZGlzYWJsZWQuXHJcbiAgICogIGlmIHVzZXIgc2VsZWN0IHR3byBjeWNsZXMgdGhlbiBhbGwgdGhlIGN5Y2xlcyBnZXQgZGlzYWJsZWQgZXhjZXB0IHNlbGVjdGVkIGN5Y2xlcy5cclxuICAgKlxyXG4gICAqICBJbiBidXNpbmVzc0N5Y2xlTGlzdCBhcnJheSB3ZSBzZXQgYSBpc0Rpc2FibGVkIGtleSwgd2UgYXJlIHNldCBpdCB0cnVlIHdoZW4gbmVlZCB0byBkaXNhYmxlZCB0aGUgY3ljbGUuXHJcbiAgICovXHJcbiAgc2V0Q3ljbGVFbmFibGVEaXNhYmxlKCkge1xyXG4gICAgaWYgKCF0aGlzLnRlbXBTZWxlY3RlZEN5Y2xlPy5sZW5ndGgpIHtcclxuICAgICAgaWYgKHRoaXMuYnVzaW5lc3NDeWNsZUxpc3Q/Lmxlbmd0aClcclxuICAgICAgICB0aGlzLmJ1c2luZXNzQ3ljbGVMaXN0Lm1hcCgoY3ljbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY3ljbGVbJ2lzRGlzYWJsZWQnXSA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnRlbXBTZWxlY3RlZEN5Y2xlPy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmJ1c2luZXNzQ3ljbGVMaXN0Py5maW5kSW5kZXgoXHJcbiAgICAgICAgKGVsOiBhbnkpID0+IGVsLnN0YXJ0X2RhdGUgPT0gdGhpcy50ZW1wU2VsZWN0ZWRDeWNsZVswXS5zdGFydF9kYXRlXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuYnVzaW5lc3NDeWNsZUxpc3Q/LmZvckVhY2goKGN5Y2xlOiBhbnksIGk6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGlmIChpbmRleCAtIDEgPT09IGkgfHwgaW5kZXggPT09IGkgfHwgaW5kZXggKyAxID09PSBpKSB7XHJcbiAgICAgICAgICBjeWNsZS5pc0Rpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGN5Y2xlLmlzRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmJ1c2luZXNzQ3ljbGVMaXN0Py5mb3JFYWNoKChjeWNsZTogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGlzRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudGVtcFNlbGVjdGVkQ3ljbGUuZm9yRWFjaCgoZWw6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGN5Y2xlLnN0YXJ0X2RhdGUgPT0gZWwuc3RhcnRfZGF0ZSkge1xyXG4gICAgICAgICAgICBpc0Rpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY3ljbGUuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogIyMjIyBEZXNjcmlwdGlvblxyXG4gICAqICBXaGVuIHVzZXIgY2xpY2sgYXBwbHkgdGhlbiBzZWxlY3RlZCBjeWNsZSBpcyBzZXQgaW4gbG9jYWwgc3RvcmFnZS5cclxuICAgKlxyXG4gICAqL1xyXG4gIHNldEJ1c2luZXNzQ3ljbGUoKSB7XHJcbiAgICBsZXQgYnVzaW5lc3NDeWNsZU9iamVjdDogYW55ID0ge307XHJcbiAgICBpZiAodGhpcy50ZW1wU2VsZWN0ZWRDeWNsZT8ubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIGJ1c2luZXNzQ3ljbGVPYmplY3QgPSB7XHJcbiAgICAgICAgdXNlcklkOiB0aGlzLnVzZXJJZCxcclxuICAgICAgICBzZWxlY3RlZEN5Y2xlOiB7XHJcbiAgICAgICAgICBzdGFydF9kYXRlOiB0aGlzLnRlbXBTZWxlY3RlZEN5Y2xlWzBdPy5zdGFydF9kYXRlLFxyXG4gICAgICAgICAgZW5kX2RhdGU6IHRoaXMudGVtcFNlbGVjdGVkQ3ljbGVbMF0/LmVuZF9kYXRlLFxyXG4gICAgICAgICAgc2VsZWN0ZWQ6IHRydWUsXHJcbiAgICAgICAgICBidXNpbmVzc19jeWNsZTogdGhpcy50ZW1wU2VsZWN0ZWRDeWNsZVswXT8uYnVzaW5lc3NfY3ljbGUsXHJcbiAgICAgICAgICBzZWxlY3RlZF9jeWNsZTpcclxuICAgICAgICAgICAgdGhpcy50ZW1wU2VsZWN0ZWRDeWNsZVswXT8uc3RhcnRfZGF0ZSArXHJcbiAgICAgICAgICAgICctJyArXHJcbiAgICAgICAgICAgIHRoaXMudGVtcFNlbGVjdGVkQ3ljbGVbMF0/LmVuZF9kYXRlLFxyXG4gICAgICAgICAgc2VsZWN0ZWRfY3ljbGVfYXJyOiBbXHJcbiAgICAgICAgICAgIHRoaXMudGVtcFNlbGVjdGVkQ3ljbGVbMF0/LnN0YXJ0X2RhdGUgK1xyXG4gICAgICAgICAgICAgICctJyArXHJcbiAgICAgICAgICAgICAgdGhpcy50ZW1wU2VsZWN0ZWRDeWNsZVswXT8uZW5kX2RhdGUsXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc2V0Q3ljbGVUb1Nob3coYnVzaW5lc3NDeWNsZU9iamVjdD8uc2VsZWN0ZWRDeWNsZSk7XHJcbiAgICAgIC8vIHRoaXMuY3ljbGVUb1Nob3cgPSB0aGlzLnRlbXBTZWxlY3RlZEN5Y2xlWzBdPy5idXNpbmVzc19jeWNsZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBidXNpbmVzc19jeWNsZTogYW55ID0gW107XHJcbiAgICAgIGxldCBzZWxlY3RlZF9jeWNsZV9hcnI6IGFueSA9IFtdO1xyXG4gICAgICBjb25zdCBjb21iaW5lZERhdGVzID0gdGhpcy5idXNpbmVzc0N5Y2xlU2VydmljZS5jb252ZXJ0TnVtZXJpY0FscGhhKFxyXG4gICAgICAgIHRoaXMuYnVzaW5lc3NDeWNsZUxpc3RbMF0/LnN0YXJ0X2RhdGUgK1xyXG4gICAgICAgICAgdGhpcy5idXNpbmVzc0N5Y2xlTGlzdFswXT8uZW5kX2RhdGVcclxuICAgICAgKTtcclxuICAgICAgdGhpcy50ZW1wU2VsZWN0ZWRDeWNsZT8uZm9yRWFjaCgoZWw6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGVsPy5idXNpbmVzc19jeWNsZSA9PT0gY29tYmluZWREYXRlcyAmJlxyXG4gICAgICAgICAgdGhpcy5idXNpbmVzc0N5Y2xlTGlzdFswXT8uYnVzaW5lc3NfY3ljbGUgPT09IEZVVFVSRV9EQVRFU1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgYnVzaW5lc3NfY3ljbGUucHVzaChGVVRVUkVfREFURVMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBidXNpbmVzc19jeWNsZS5wdXNoKGVsPy5idXNpbmVzc19jeWNsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNlbGVjdGVkX2N5Y2xlX2Fyci5wdXNoKGVsPy5zdGFydF9kYXRlICsgJy0nICsgZWw/LmVuZF9kYXRlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGJ1c2luZXNzQ3ljbGVPYmplY3QgPSB7XHJcbiAgICAgICAgdXNlcklkOiB0aGlzLnVzZXJJZCxcclxuICAgICAgICBzZWxlY3RlZEN5Y2xlOiB7XHJcbiAgICAgICAgICBzdGFydF9kYXRlOiB0aGlzLnRlbXBTZWxlY3RlZEN5Y2xlWzBdPy5zdGFydF9kYXRlLFxyXG4gICAgICAgICAgZW5kX2RhdGU6IHRoaXMudGVtcFNlbGVjdGVkQ3ljbGVbMV0/LmVuZF9kYXRlLFxyXG4gICAgICAgICAgc2VsZWN0ZWQ6IHRydWUsXHJcbiAgICAgICAgICBidXNpbmVzc19jeWNsZTogYnVzaW5lc3NfY3ljbGUsXHJcbiAgICAgICAgICBzZWxlY3RlZF9jeWNsZTpcclxuICAgICAgICAgICAgdGhpcy50ZW1wU2VsZWN0ZWRDeWNsZVswXT8uc3RhcnRfZGF0ZSArXHJcbiAgICAgICAgICAgICctJyArXHJcbiAgICAgICAgICAgIHRoaXMudGVtcFNlbGVjdGVkQ3ljbGVbMV0/LmVuZF9kYXRlLFxyXG4gICAgICAgICAgc2VsZWN0ZWRfY3ljbGVfYXJyOiBzZWxlY3RlZF9jeWNsZV9hcnIsXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5zZXRDeWNsZVRvU2hvdyhidXNpbmVzc0N5Y2xlT2JqZWN0Py5zZWxlY3RlZEN5Y2xlKTtcclxuICAgICAgLy8gdGhpcy5jeWNsZVRvU2hvdyA9IGJ1c2luZXNzX2N5Y2xlWzBdLnN1YnN0cmluZygwLDExKSArIFwiIC0gXCIgKyBidXNpbmVzc19jeWNsZVsxXS5zdWJzdHJpbmcoYnVzaW5lc3NfY3ljbGVbMV0/Lmxlbmd0aC0xMSwgYnVzaW5lc3NfY3ljbGVbMV0/LmxlbnRoKTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMuc2V0Q3ljbGVUb1Nob3coYnVzaW5lc3NDeWNsZU9iamVjdD8uc2VsZWN0ZWRDeWNsZSk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYnVzaW5lc3NDeWNsZScsIEpTT04uc3RyaW5naWZ5KGJ1c2luZXNzQ3ljbGVPYmplY3QpKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRCdXNpbmVzc0N5Y2xlID0gYnVzaW5lc3NDeWNsZU9iamVjdD8uc2VsZWN0ZWRDeWNsZTtcclxuICAgIHRoaXMuYnVzaW5lc3NDeWNsZUNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRCdXNpbmVzc0N5Y2xlKTtcclxuICAgIHRoaXMuYnVzaW5lc3NDeWNsZVNlcnZpY2UuY2hhbmdlQnVzaW5lc3NDeWNsZSQubmV4dCh0cnVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqICMjIyMgRGVzY3JpcHRpb25cclxuICAgKiB3aGVuIHVzZXIgY2xpY2sgY2FuY2VsIHRoZW4gaXQgd2lsbCBjbG9zZSB0aGUgcG9wb3Zlci5cclxuICAgKiByZW1vdmUgdGVtcCB2YWx1ZSBmcm9tIHRlcm0gc2VsZWN0ZWQgYXJyYXkgYW5kIHNldCB0aGUgcHJldmlvdXMgc2VsZWN0ZWQgY3ljbGUgaW4gaXQuXHJcbiAgICovXHJcbiAgY2FuY2VsQnVzaW5lc3NDeWNsZSgpIHtcclxuICAgIHRoaXMuc2V0VGVtcFNlbGVjdGVkQ3ljbGUodGhpcy5zZWxlY3RlZEJ1c2luZXNzQ3ljbGUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogIyMjIyBEZXNjcmlwdGlvblxyXG4gICAqIHRoaXMgd2lsbCBzZXQgdGhlIHN0cmluZyBvZiBidXNpbmVzcyBjeWNsZSB3aGljaCAgd2lsbCBkaXNwbGF5IGluIHRoZSBoZWFkZXIuXHJcbiAgICogQHBhcmFtIGN5Y2xlIG9iamVjdCB3aGljaCBpcyBzZWxlY3RlZCBhbmQgYXBwbHkuIHRoZSBzYW1lIG9iamVjdCB3aWxsIHN0b3JlIGluIGxvY2FsIHN0b3JhZ2UuXHJcbiAgICovXHJcbiAgc2V0Q3ljbGVUb1Nob3coY3ljbGU6IGFueSkge1xyXG4gICAgaWYgKGN5Y2xlPy5zZWxlY3RlZF9jeWNsZV9hcnI/Lmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICBpZiAoY3ljbGU/LmJ1c2luZXNzX2N5Y2xlPy50b0xvd2VyQ2FzZSgpID09ICdzaG93IGZ1dHVyZSBkdWUgZGF0ZXMnKSB7XHJcbiAgICAgICAgdGhpcy5jeWNsZVRvU2hvdyA9ICdGdXR1cmUgRHVlIERhdGVzJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmN5Y2xlVG9TaG93ID0gY3ljbGUuYnVzaW5lc3NfY3ljbGU7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBjeWNsZT8uYnVzaW5lc3NfY3ljbGU/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICBjeWNsZT8uYnVzaW5lc3NfY3ljbGVbMV0/LnRvTG93ZXJDYXNlKCkgPT0gJ3Nob3cgZnV0dXJlIGR1ZSBkYXRlcydcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5jeWNsZVRvU2hvdyA9IGN5Y2xlPy5idXNpbmVzc19jeWNsZVswXT8uc3Vic3RyaW5nKDAsIDExKTtcclxuICAgICAgfSBlbHNlIGlmIChjeWNsZT8uYnVzaW5lc3NfY3ljbGU/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuY3ljbGVUb1Nob3cgPVxyXG4gICAgICAgICAgY3ljbGU/LmJ1c2luZXNzX2N5Y2xlWzBdPy5zdWJzdHJpbmcoMCwgMTEpICtcclxuICAgICAgICAgICcgLSAnICtcclxuICAgICAgICAgIGN5Y2xlPy5idXNpbmVzc19jeWNsZVsxXS5zdWJzdHJpbmcoXHJcbiAgICAgICAgICAgIGN5Y2xlPy5idXNpbmVzc19jeWNsZVsxXT8ubGVuZ3RoIC0gMTEsXHJcbiAgICAgICAgICAgIGN5Y2xlPy5idXNpbmVzc19jeWNsZVsxXT8ubGVudGhcclxuICAgICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwidmMtYnVzaW5lc3MtY3ljbGUgdngtcHQtMiB2eC1wYi0yXCJcclxuICBhcHBQb3BvdmVyXHJcbiAgKGNsaWNrKT1cImJ1c2luZXNzQ3ljbGVQb3AucG9wb3ZlcigpXCJcclxuICBwb3NpdGlvbj1cImxlZnRcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cImhlYWRpbmcgdngtZnMtOSB2eC10dC11cHBlcmNhc2UgdngtbWItMSB2eC1saC0zXCI+XHJcbiAgICBTSE9XSU5HIERBVEEge3sgY3ljbGVUb1Nob3cgPT09IFwiU2hvdyBGdXR1cmUgRHVlIERhdGVzXCIgPyBcIkZvclwiIDogXCJGcm9tXCIgfX1cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtbGgtNFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cclxuICAgICAgPGkgY2xhc3M9XCJpY29ucyBjYWxlbmRhciB2eC1mcy0xMiB2eC1tci0yXCI+JiN4ZTk5Njs8L2k+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtdHh0LXdoaXRlIHZ4LWQtaW5saW5lLWJsb2NrXCI+e3tcclxuICAgICAgICBjeWNsZVRvU2hvdyA9PT0gXCJTaG93IEZ1dHVyZSBEdWUgRGF0ZXNcIlxyXG4gICAgICAgICAgPyBcIkZ1dHVyZSBEdWUgRGF0ZXNcIlxyXG4gICAgICAgICAgOiBjeWNsZVRvU2hvd1xyXG4gICAgICB9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGkgY2xhc3M9XCJpY29ucyBhcnJvdyB2eC1mcy0xMCB2eC1tci0yXCI+JiN4ZTllODs8L2k+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPHZ1aS1wb3BvdmVyICNidXNpbmVzc0N5Y2xlUG9wIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICA8ZGl2IGNsYXNzPVwidmMtYnVzaW5lc3MtY3ljbGUtcG9wb3Zlci1jb250YWluZXJcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJ2Yy1idXNpbmVzcy1jeWNsZS1wb3BvdmVyLWNvbnRhaW5lci10b3AgdngtcHQtMiB2eC1wYi0yIHZ4LXBsLTMgdngtcHItM1wiXHJcbiAgICA+XHJcbiAgICAgIDxwIGNsYXNzPVwidngtZnMtMTEgdngtZnctNDAwIHZ4LWxhYmVsLXR4dCB2eC1wLTAgdngtbS0wXCI+XHJcbiAgICAgICAgWW91IGNhbiBzZWxlY3QgdXB0byBhIG1heCBvZiB0d28gY29uc2VjdXRpdmUgeWVhcnNcclxuICAgICAgPC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidmMtYnVzaW5lc3MtY3ljbGUtcG9wb3Zlci1jb250YWluZXItYm9keVwiPlxyXG4gICAgICA8dWwgY2xhc3M9XCJ2eC1wLTAgdngtbS0wXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGVhY2hDeWNsZSBvZiBidXNpbmVzc0N5Y2xlTGlzdDsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgZWFjaEN5Y2xlPy5idXNpbmVzc19jeWNsZT8udG9Mb3dlckNhc2UoKSA9PT1cclxuICAgICAgICAgICAgICAnc2hvdyBmdXR1cmUgZHVlIGRhdGVzJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcHQtMiB2eC1wYi0yIHZ4LXBsLTMgdngtcHItM1wiXHJcbiAgICAgICAgICAgIFtjbGFzcy5mdXR1cmUtY3ljbGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3hcclxuICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJpc1NlbGVjdGVkQ3ljbGUodGVtcFNlbGVjdGVkQ3ljbGUsIGVhY2hDeWNsZSlcIlxyXG4gICAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInNlbGVjdEN5Y2xlKGVhY2hDeWNsZSwgaSlcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJlYWNoQ3ljbGU/LmlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgID5TaG93IEZ1dHVyZSBEdWUgRGF0ZXM8L2FwcC1jcy1jaGVja2JveFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBpbmZvLWljb24gdngtZnMtMTJcIlxyXG4gICAgICAgICAgICAgIFthclRvb2x0aXBdPVwiXHJcbiAgICAgICAgICAgICAgICAnVGhpcyBvcHRpb24gbGV0cyB5b3UgdmlldyBkYXRhIHRoYXQgbGllcyBvdXRzaWRlIHRoZSBjdXJyZW50IGJ1c2luZXNzIGN5Y2xlIGFuZCBhcmUgZHVlIGluIHRoZSBmdXR1cmUuJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBlYWNoQ3ljbGU/LmJ1c2luZXNzX2N5Y2xlPy50b0xvd2VyQ2FzZSgpICE9PVxyXG4gICAgICAgICAgICAgICdzaG93IGZ1dHVyZSBkdWUgZGF0ZXMnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wdC0yIHZ4LXBiLTIgdngtcGwtMyB2eC1wci0zXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGFwcC1jcy1jaGVja2JveFxyXG4gICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cImlzU2VsZWN0ZWRDeWNsZSh0ZW1wU2VsZWN0ZWRDeWNsZSwgZWFjaEN5Y2xlKVwiXHJcbiAgICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwic2VsZWN0Q3ljbGUoZWFjaEN5Y2xlLCBpKVwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImVhY2hDeWNsZT8uaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgPnt7IGVhY2hDeWNsZT8uc3RhcnRfZGF0ZSB8IGRhdGVGb3JtYXQgfX0gLVxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICB7eyBlYWNoQ3ljbGU/LmVuZF9kYXRlIHwgZGF0ZUZvcm1hdCB9fTwvbmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L2FwcC1jcy1jaGVja2JveD5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvdWw+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJ2Yy1idXNpbmVzcy1jeWNsZS1wb3BvdmVyLWNvbnRhaW5lci1mb290ZXIgdngtZC1mbGV4IHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wLTNcIlxyXG4gICAgPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgKGNsaWNrKT1cImJ1c2luZXNzQ3ljbGVQb3AuY2xvc2VQb3BvdmVyKCd0b3AnKVwiXHJcbiAgICAgICAgY2xhc3M9XCJ3aGl0ZSB2eC1mcy0xMSB2eC1mdy01MDAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC10eHQtYmx1ZVwiXHJcbiAgICAgID5cclxuICAgICAgICBDQU5DRUxcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICAoY2xpY2spPVwic2V0QnVzaW5lc3NDeWNsZSgpOyBidXNpbmVzc0N5Y2xlUG9wLmNsb3NlUG9wb3ZlcigndG9wJylcIlxyXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgY2xhc3M9XCJibHVlIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LXR4dC13aGl0ZVwiXHJcbiAgICAgID5cclxuICAgICAgICBBUFBMWVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3Z1aS1wb3BvdmVyPlxyXG4iXX0=
|
|
275
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVzaW5lc3MtY3ljbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmMtbGF5b3V0L3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXIvYnVzaW5lc3MtY3ljbGUvYnVzaW5lc3MtY3ljbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmMtbGF5b3V0L3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXIvYnVzaW5lc3MtY3ljbGUvYnVzaW5lc3MtY3ljbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7Ozs7Ozs7O0FBTzFFLE1BQU0sT0FBTyxzQkFBc0I7SUFjakMsWUFDVSxXQUE4QixFQUM5QixvQkFBMEMsRUFDMUMsVUFBc0I7UUFGdEIsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBQzlCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQWhCaEMsZ0JBQVcsR0FBVyxnQkFBZ0IsQ0FBQztRQUN2QyxxQkFBZ0IsR0FBa0IsRUFBRSxDQUFDO1FBQ3JDLGdCQUFXLEdBQWtCLEVBQUUsQ0FBQztRQUNoQyx5QkFBb0IsR0FBa0IsRUFBRSxDQUFDO1FBQ3pDLG9CQUFlLEdBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckMsdUJBQWtCLEdBQWUsRUFBRSxDQUFDO1FBRXBDLHNCQUFpQixHQUFVLEVBQUUsQ0FBQztRQUM5QixXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBRVQsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVFqRCxJQUFJLENBQUMsTUFBTSxHQUFHLElB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QUFJLENBQUMsV0FBVyxHQUFHLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzthQUMvRDtpQkFBTSxJQUFJLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFO2dCQUN4QyxJQUFJLENBQUMsV0FBVztvQkFDZCxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO3dCQUMxQyxLQUFLO3dCQUNMLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUNoQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQ3JDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUNoQyxDQUFDO2FBQ0w7U0FDRjtJQUNILENBQUM7K0dBOVJVLHNCQUFzQjttR0FBdEIsc0JBQXNCLHdKQ1huQyx1NUhBcUdBOzs0RkQxRmEsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG1CQUFtQjtvS0FlbkIsbUJBQW1CO3NCQUE1QixNQUFNO2dCQUVFLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEF1dGhvcml6ZXJTZXJ2aWNlIH0gZnJvbSAnQHZjb21wbHkvYXV0aG9yaXplcic7XHJcbmltcG9ydCB7IEJ1c2luZXNzQ3ljbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2J1c2luZXNzLWN5Y2xlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRlVUVVJFX0RBVEVTIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2J1c2luZXNzLWN5Y2xlLmNvbnN0YW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndmMtYnVzaW5lc3MtY3ljbGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9idXNpbmVzcy1jeWNsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYnVzaW5lc3MtY3ljbGUuY29tcG9uZW50Lmxlc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJ1c2luZXNzQ3ljbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGN5Y2xlVG9TaG93OiBzdHJpbmcgPSAnQnVzaW5lc3MgQ3ljbGUnO1xyXG4gIGJ1c2luZXNzQ3ljbGVBcnI6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuICBoaWRkZW5DeWNsZTogQXJyYXk8bnVtYmVyPiA9IFtdO1xyXG4gIHRlbXBCdXNpbmVzc0N5Y2xlQXJyOiBBcnJheTxzdHJpbmc+ID0gW107XHJcbiAgdGVtcEhpZGRlbkN5Y2xlOiBBcnJheTxudW1iZXI+ID0gWzBdO1xyXG4gIGJ1c2luZXNzQ3ljbGVzTGlzdDogQXJyYXk8YW55PiA9IFtdO1xyXG4gIGJ1c2luZXNzQ3ljbGVMaXN0ITogQXJyYXk8YW55PjtcclxuICB0ZW1wU2VsZWN0ZWRDeWNsZTogYW55W10gPSBbXTtcclxuICB1c2VySWQ6IG51bWJlciA9IDA7XHJcbiAgc2VsZWN0ZWRCdXNpbmVzc0N5Y2xlITogYW55O1xyXG4gIEBPdXRwdXQoKSBidXNpbmVzc0N5Y2xlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBASW5wdXQoKSBvcmdEZXRhaWxzOiBhbnk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRob3JpemVyU2VydmljZSxcclxuICAgIHByaXZhdGUgYnVzaW5lc3NDeWNsZVNlcnZpY2U6IEJ1c2luZXNzQ3ljbGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBBcGlTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLnVzZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlcklkKCkgPz8gMDtcclxuICAgIHRoaXMuYnVzaW5lc3NDeWNsZVNlcnZpY2UuaXNCdXNpbmVzc0N5Y2xlQXZhaWxhYmxlKCk7XHJcbiAgICB0aGlzLnNldFNlbGVjdGVkQnVzaW5lc3NDeWNsZSgpO1xyXG4gICAgdGhpcy5nZXRPcmdEZXRhaWxzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XHJcblxyXG4gIGdldE9yZ0RldGFpbHMoKSB7XHJcbiAgICB0aGlzLmFwaVNlcnZpY2Uub3JnYW5pemF0aW9uRGV0YWlsJC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICB0aGlzLnNldEJ1c2luZXNzQ3ljbGVLZXkocmVzLmJ1c2luZXNzX2N5Y2xlc19hcnIpO1xyXG4gICAgICAgIHRoaXMuc2V0QnVzaW5lc3NDeWNsZSgpO1xyXG4gICAgICAgIHRoaXMuc2V0Q3ljbGVFbmFibGVEaXNhYmxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0ZWRCdXNpbmVzc0N5Y2xlKCkge1xyXG4gICAgdGhpcy5idXNpbmVzc0N5Y2xlU2VydmljZS5zZWxlY3RlZEJ1c2luZXNzQ3ljbGUkLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRCdXNpbmVzc0N5Y2xlID0gcmVzO1xyXG4gICAgICAgIHRoaXMuc2V0VGVtcFNlbGVjdGVkQ3ljbGUocmVzKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiAjIyMjIERlc2NyaXB0aW9uXHJcbiAgICogaXQgd2lsbCBzZXQgYSBuZXcga2V5IGluIGV2ZXJ5IGN5Y2xlXHJcbiAgICoga2V5IHdpbGwgdXNlIGZvciBkaXNhYmxlZCBvciBlbmFibGUgdGhlIGN5Y2xlIGZyb20gYnVzaW5lc3MgY3ljbGUgbGlzdC5cclxuICAgKiBAcGFyYW0gYnVzaW5lc3NDeWNsZSB0aGlzIHRoZSBidXNpbmVzcyBjeWNsZSBsaXN0XHJcbiAgICovXHJcbiAgc2V0QnVzaW5lc3NDeWNsZUtleShidXNpbmVzc0N5Y2xlOiBhbnkpIHtcclxuICAgIHRoaXMuYnVzaW5lc3NDeWNsZUxpc3QgPSBidXNpbmVzc0N5Y2xlO1xyXG4gICAgaWYgKHRoaXMuYnVzaW5lc3NDeWNsZUxpc3QubGVuZ3RoKVxyXG4gICAgICB0aGlzLmJ1c2luZXNzQ3ljbGVMaXN0Lm1hcCgoY3ljbGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGN5Y2xlWydpc0Rpc2FibGVkJ10gPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiAjIyMjIERlc2NyaXB0aW9uXHJcbiAgICogaXQgd2lsbCBjaGVjayB0aGUgY3ljbGUgaWYgaXQgaXMgbm90IGNoZWNrZWQuXHJcbiAgICogaWYgaXQgaGFzIGNoZWNrZWQgdGhlbiBpdCB3aWxsIHVuY2hlY2sgdGhhdCBjeWNsZS5cclxuICAgKiBAcGFyYW0gY3ljbGUgY2hlY2tlZCBvciB1bmNoZWNrZWQgY3ljbGUgZnJvbSBidXNpbmVzcyBjeWNsZSBsaXN0LlxyXG4gICAqIEBwYXJhbSBpbmRleCBpdCBnaXZlIHRoZSBpbmRleCB2YWx1ZSBvZiBidXNpbmVzcyBjeWNsZSBsaXN0IHdoaWNoIGlzIHNlbGVjdGVkLlxyXG4gICAqL1xyXG4gIHNlbGVjdEN5Y2xlKGN5Y2xlOiBhbnksIGluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGlzRXhpc3QgPSB0aGlzLnRlbXBTZWxlY3RlZEN5Y2xlLmZpbmRJbmRleChcclxuICAgICAgKGVsOiBhbnkpID0+IGVsLnN0YXJ0X2RhdGUgPT0gY3ljbGUuc3RhcnRfZGF0ZVxyXG4gICAgKTtcclxuICAgIGlmIChpc0V4aXN0ID49IDApIHtcclxuICAgICAgdGhpcy50ZW1wU2VsZWN0ZWRDeWNsZS5zcGxpY2UoaXNFeGlzdCwgMSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudGVtcFNlbGVjdGVkQ3ljbGU/Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLnRlbXBTZWxlY3RlZEN5Y2xlLnB1c2goY3ljbGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHRoaXMuYnVzaW5lc3NDeWNsZUxpc3QuZmluZEluZGV4KFxyXG4gICAgICAgIChlbDogYW55KSA9PiBlbC5zdGFydF9kYXRlID09IHRoaXMudGVtcFNlbGVjdGVkQ3ljbGVbMF0/LnN0YXJ0X2RhdGVcclxuICAgICAgKTtcclxuICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPCBpbmRleCkge1xyXG4gICAgICAgIHRoaXMudGVtcFNlbGVjdGVkQ3ljbGUudW5zaGlmdChjeWNsZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50ZW1wU2VsZWN0ZWRDeWNsZS5wdXNoKGN5Y2xlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRDeWNsZUVuYWJsZURpc2FibGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqICMjIyMgRGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIG5lZWQgdG8gY2hlY2sgY3ljbGUgaW5jbHVkZXMgaW4gc2VsZWN0ZWQgY3ljbGUgYXJyYXlcclxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgc2VsZWN0ZWQgY3ljbGUgaXNcclxuICAgKiBAcGFyYW0gc2VsZWN0ZWRDeWNsZSBzZWxlY3RlZCBDeWNsZSB3aGljaCB1c2VyIGNoZWNrZWQgb3IgYXV0byBzZWxlY3RlZCBjeWNsZS5cclxuICAgKiBAcGFyYW0gY3ljbGUgYWxsIGluZGl2aXNpYmxlIGN5Y2xlIG9mIGJ1c2luZXNzIGN5Y2xlIG9mIHRoZSBvcmdhbml6YXRpb24uXHJcbiAgICogQHJldHVybnMgYm9vbGVhbiB2YWx1ZSBpcyBjeWNsZSBleGlzdCBpbiBzZWxlY3RlZCBjeWNsZSBvciBub3QuXHJcbiAgICovXHJcblxyXG4gIGlzU2VsZWN0ZWRDeWNsZShzZWxlY3RlZEN5Y2xlOiBhbnksIGN5Y2xlOiBhbnkpIHtcclxuICAgIGxldCBpc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICBzZWxlY3RlZEN5Y2xlLmZvckVhY2goKGVsOiBhbnkpOiBhbnkgPT4ge1xyXG4gICAgICBpZiAoZWwuc3RhcnRfZGF0ZSA9PSBjeWNsZS5zdGFydF9kYXRlKSB7XHJcbiAgICAgICAgaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGlzU2VsZWN0ZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiAjIyMjIERlc2NyaXB0aW9uXHJcbiAgICpcclxuICAgKiBzZXQgc2VsZWN0ZWQgYnVzaW5lc3NDeWNsZSB0byB0ZW1wIGJ1c2luZXNzIGN5Y2xlIGluZGl2aXNpYmxlIGlmIHRoZXJlIGlzIHR3byBzZWxlY3RlZCBjeWNsZVxyXG4gICAqIFNldHMgdGVtcCBzZWxlY3RlZCBjeWNsZVxyXG4gICAqIEBwYXJhbSBjeWNsZSBzZWxlY3RlZCBidXNpbmVzcyBjeWNsZSBmcm9tIGxvY2FsIHN0b3JhZ2VcclxuICAgKi9cclxuICBzZXRUZW1wU2VsZWN0ZWRDeWNsZShjeWNsZTogYW55KSB7XHJcbiAgICB0aGlzLnRlbXBTZWxlY3RlZEN5Y2xlID0gW107XHJcbiAgICBpZiAoY3ljbGU/LnNlbGVjdGVkX2N5Y2xlX2Fycj8ubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIHRoaXMudGVtcFNlbGVjdGVkQ3ljbGUucHVzaChjeWNsZSk7XHJcbiAgICAgIHRoaXMuc2V0Q3ljbGVUb1Nob3coY3ljbGUpO1xyXG4gICAgICAvLyB0aGlzLmN5Y2xlVG9TaG93ID0gY3ljbGUuYnVzaW5lc3NfY3ljbGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjeWNsZT8uc2VsZWN0ZWRfY3ljbGVfYXJyPy5mb3JFYWNoKChlbDogYW55LCBpOiBudW1iZXIpID0+IHtcclxuICAgICAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgICAgIHN0YXJ0X2RhdGU6IGVsLnN1YnN0cmluZygwLCAxMCksXHJcbiAgICAgICAgICBlbmRfZGF0ZTogZWwuc3Vic3RyaW5nKGVsPy5sZW5ndGggLSAxMCwgZWw/LmxlbnRoKSxcclxuICAgICAgICAgIHNlbGVjdGVkOiB0cnVlLFxyXG4gICAgICAgICAgYnVzaW5lc3NfY3ljbGU6IGN5Y2xlPy5idXNpbmVzc19jeWNsZVtpXSxcclxuICAgICAgICAgIHNlbGVjdGVkX2N5Y2xlOiBjeWNsZT8uc2VsZWN0ZWRfY3ljbGVbaV0sXHJcbiAgICAgICAgICBzZWxlY3RlZF9jeWNsZV9hcnI6IFtlbF0sXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLnRlbXBTZWxlY3RlZEN5Y2xlLnB1c2gocGF5bG9hZCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyB0aGlzLmN5Y2xlVG9TaG93ID0gY3ljbGU/LmJ1c2luZXNzX2N5Y2xlWzBdPy5zdWJzdHJpbmcoMCwxMSkgKyBcIiAtIFwiICsgY3ljbGU/LmJ1c2luZXNzX2N5Y2xlWzFdLnN1YnN0cmluZyhjeWNsZT8uYnVzaW5lc3NfY3ljbGVbMV0/Lmxlbmd0aC0xMSwgY3ljbGU/LmJ1c2luZXNzX2N5Y2xlWzFdPy5sZW50aCk7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnNldEN5Y2xlVG9TaG93KGN5Y2xlKTtcclxuICAgIHRoaXMuc2V0Q3ljbGVFbmFibGVEaXNhYmxlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiAjIyMjIERlc2NyaXB0aW9uXHJcbiAgICogIHdoZW4gdXNlciBzZWxlY3Qgb25lIGN5Y2xlIHRoZW4gdGhlaXIgYmVzaWRlcyBjeWNsZXMgYXJlIGVuYWJsZSBhbmQgb3RoZXIgYXJlIGRpc2FibGVkLlxyXG4gICAqICBpZiB1c2VyIHNlbGVjdCB0d28gY3ljbGVzIHRoZW4gYWxsIHRoZSBjeWNsZXMgZ2V0IGRpc2FibGVkIGV4Y2VwdCBzZWxlY3RlZCBjeWNsZXMuXHJcbiAgICpcclxuICAgKiAgSW4gYnVzaW5lc3NDeWNsZUxpc3QgYXJyYXkgd2Ugc2V0IGEgaXNEaXNhYmxlZCBrZXksIHdlIGFyZSBzZXQgaXQgdHJ1ZSB3aGVuIG5lZWQgdG8gZGlzYWJsZWQgdGhlIGN5Y2xlLlxyXG4gICAqL1xyXG4gIHNldEN5Y2xlRW5hYmxlRGlzYWJsZSgpIHtcclxuICAgIGlmICghdGhpcy50ZW1wU2VsZWN0ZWRDeWNsZT8ubGVuZ3RoKSB7XHJcbiAgICAgIGlmICh0aGlzLmJ1c2luZXNzQ3ljbGVMaXN0Py5sZW5ndGgpXHJcbiAgICAgICAgdGhpcy5idXNpbmVzc0N5Y2xlTGlzdC5tYXAoKGN5Y2xlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGN5Y2xlWydpc0Rpc2FibGVkJ10gPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy50ZW1wU2VsZWN0ZWRDeWNsZT8ubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5idXNpbmVzc0N5Y2xlTGlzdD8uZmluZEluZGV4KFxyXG4gICAgICAgIChlbDogYW55KSA9PiBlbC5zdGFydF9kYXRlID09IHRoaXMudGVtcFNlbGVjdGVkQ3ljbGVbMF0uc3RhcnRfZGF0ZVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmJ1c2luZXNzQ3ljbGVMaXN0Py5mb3JFYWNoKChjeWNsZTogYW55LCBpOiBudW1iZXIpID0+IHtcclxuICAgICAgICBpZiAoaW5kZXggLSAxID09PSBpIHx8IGluZGV4ID09PSBpIHx8IGluZGV4ICsgMSA9PT0gaSkge1xyXG4gICAgICAgICAgY3ljbGUuaXNEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjeWNsZS5pc0Rpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5idXNpbmVzc0N5Y2xlTGlzdD8uZm9yRWFjaCgoY3ljbGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCBpc0Rpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnRlbXBTZWxlY3RlZEN5Y2xlLmZvckVhY2goKGVsOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjeWNsZS5zdGFydF9kYXRlID09IGVsLnN0YXJ0X2RhdGUpIHtcclxuICAgICAgICAgICAgaXNEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGN5Y2xlLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqICMjIyMgRGVzY3JpcHRpb25cclxuICAgKiAgV2hlbiB1c2VyIGNsaWNrIGFwcGx5IHRoZW4gc2VsZWN0ZWQgY3ljbGUgaXMgc2V0IGluIGxvY2FsIHN0b3JhZ2UuXHJcbiAgICpcclxuICAgKi9cclxuICBzZXRCdXNpbmVzc0N5Y2xlKCkge1xyXG4gICAgY29uc3QgY29tYmluZWREYXRlcyA9IHRoaXMuYnVzaW5lc3NDeWNsZVNlcnZpY2UuY29udmVydE51bWVyaWNBbHBoYShcclxuICAgICAgdGhpcy5idXNpbmVzc0N5Y2xlTGlzdFswXT8uc3RhcnRfZGF0ZSArXHJcbiAgICAgICAgdGhpcy5idXNpbmVzc0N5Y2xlTGlzdFswXT8uZW5kX2RhdGVcclxuICAgICk7XHJcbiAgICBjb25zdCBpc0Z1dHVyZURhdGVzID0gKGN5Y2xlOiBhbnkpID0+XHJcbiAgICAgIGN5Y2xlPy5idXNpbmVzc19jeWNsZSA9PT0gY29tYmluZWREYXRlcyAmJlxyXG4gICAgICB0aGlzLmJ1c2luZXNzQ3ljbGVMaXN0WzBdPy5idXNpbmVzc19jeWNsZSA9PT0gRlVUVVJFX0RBVEVTO1xyXG5cclxuICAgIGxldCBidXNpbmVzc0N5Y2xlT2JqZWN0OiBhbnkgPSB7XHJcbiAgICAgIHVzZXJJZDogdGhpcy51c2VySWQsXHJcbiAgICAgIHNlbGVjdGVkQ3ljbGU6IHtcclxuICAgICAgICBzZWxlY3RlZDogdHJ1ZSxcclxuICAgICAgICBidXNpbmVzc19jeWNsZTogW10sXHJcbiAgICAgICAgc2VsZWN0ZWRfY3ljbGVfYXJyOiBbXSxcclxuICAgICAgfSxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMudGVtcFNlbGVjdGVkQ3ljbGU/Lmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICB0aGlzLnNldFNpbmdsZVNlbGVjdGVkQ3ljbGUoYnVzaW5lc3NDeWNsZU9iamVjdCwgaXNGdXR1cmVEYXRlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldE11bHRpcGxlU2VsZWN0ZWRDeWNsZXMoYnVzaW5lc3NDeWNsZU9iamVjdCwgaXNGdXR1cmVEYXRlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRDeWNsZVRvU2hvdyhidXNpbmVzc0N5Y2xlT2JqZWN0Py5zZWxlY3RlZEN5Y2xlKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdidXNpbmVzc0N5Y2xlJywgSlNPTi5zdHJpbmdpZnkoYnVzaW5lc3NDeWNsZU9iamVjdCkpO1xyXG4gICAgdGhpcy5zZWxlY3RlZEJ1c2luZXNzQ3ljbGUgPSBidXNpbmVzc0N5Y2xlT2JqZWN0Py5zZWxlY3RlZEN5Y2xlO1xyXG4gICAgdGhpcy5idXNpbmVzc0N5Y2xlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEJ1c2luZXNzQ3ljbGUpO1xyXG4gICAgdGhpcy5idXNpbmVzc0N5Y2xlU2VydmljZS5jaGFuZ2VCdXNpbmVzc0N5Y2xlJC5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgc2V0U2luZ2xlU2VsZWN0ZWRDeWNsZShcclxuICAgIGJ1c2luZXNzQ3ljbGVPYmplY3Q6IGFueSxcclxuICAgIGlzRnV0dXJlRGF0ZXM6IChjeWNsZTogYW55KSA9PiBib29sZWFuXHJcbiAgKSB7XHJcbiAgICBjb25zdCBjeWNsZSA9IHRoaXMudGVtcFNlbGVjdGVkQ3ljbGVbMF07XHJcbiAgICBpZiAoaXNGdXR1cmVEYXRlcyhjeWNsZSkpIHtcclxuICAgICAgY3ljbGUuYnVzaW5lc3NfY3ljbGUgPSBGVVRVUkVfREFURVM7XHJcbiAgICB9XHJcbiAgICBPYmplY3QuYXNzaWduKGJ1c2luZXNzQ3ljbGVPYmplY3Q/LnNlbGVjdGVkQ3ljbGUsIHtcclxuICAgICAgc3RhcnRfZGF0ZTogY3ljbGU/LnN0YXJ0X2RhdGUsXHJcbiAgICAgIGVuZF9kYXRlOiBjeWNsZT8uZW5kX2RhdGUsXHJcbiAgICAgIGJ1c2luZXNzX2N5Y2xlOiBjeWNsZT8uYnVzaW5lc3NfY3ljbGUsXHJcbiAgICAgIHNlbGVjdGVkX2N5Y2xlOiBgJHtjeWNsZT8uc3RhcnRfZGF0ZX0tJHtjeWNsZT8uZW5kX2RhdGV9YCxcclxuICAgICAgc2VsZWN0ZWRfY3ljbGVfYXJyOiBbYCR7Y3ljbGU/LnN0YXJ0X2RhdGV9LSR7Y3ljbGU/LmVuZF9kYXRlfWBdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRNdWx0aXBsZVNlbGVjdGVkQ3ljbGVzKFxyXG4gICAgYnVzaW5lc3NDeWNsZU9iamVjdDogYW55LFxyXG4gICAgaXNGdXR1cmVEYXRlczogKGN5Y2xlOiBhbnkpID0+IGJvb2xlYW5cclxuICApIHtcclxuICAgIHRoaXMudGVtcFNlbGVjdGVkQ3ljbGU/LmZvckVhY2goKGN5Y2xlOiBhbnkpID0+IHtcclxuICAgICAgYnVzaW5lc3NDeWNsZU9iamVjdD8uc2VsZWN0ZWRDeWNsZS5idXNpbmVzc19jeWNsZT8ucHVzaChcclxuICAgICAgICBpc0Z1dHVyZURhdGVzKGN5Y2xlKSA/IEZVVFVSRV9EQVRFUyA6IGN5Y2xlPy5idXNpbmVzc19jeWNsZVxyXG4gICAgICApO1xyXG4gICAgICBidXNpbmVzc0N5Y2xlT2JqZWN0Py5zZWxlY3RlZEN5Y2xlLnNlbGVjdGVkX2N5Y2xlX2Fycj8ucHVzaChcclxuICAgICAgICBgJHtjeWNsZT8uc3RhcnRfZGF0ZX0tJHtjeWNsZT8uZW5kX2RhdGV9YFxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcblxyXG4gICAgYnVzaW5lc3NDeWNsZU9iamVjdC5zZWxlY3RlZEN5Y2xlLnN0YXJ0X2RhdGUgPVxyXG4gICAgICB0aGlzLnRlbXBTZWxlY3RlZEN5Y2xlWzBdPy5zdGFydF9kYXRlO1xyXG4gICAgYnVzaW5lc3NDeWNsZU9iamVjdC5zZWxlY3RlZEN5Y2xlLmVuZF9kYXRlID1cclxuICAgICAgdGhpcy50ZW1wU2VsZWN0ZWRDeWNsZVsxXT8uZW5kX2RhdGU7XHJcbiAgICBidXNpbmVzc0N5Y2xlT2JqZWN0LnNlbGVjdGVkQ3ljbGUuc2VsZWN0ZWRfY3ljbGUgPSBgJHtidXNpbmVzc0N5Y2xlT2JqZWN0Py5zZWxlY3RlZEN5Y2xlPy5zdGFydF9kYXRlfS0ke2J1c2luZXNzQ3ljbGVPYmplY3Q/LnNlbGVjdGVkQ3ljbGU/LmVuZF9kYXRlfWA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiAjIyMjIERlc2NyaXB0aW9uXHJcbiAgICogd2hlbiB1c2VyIGNsaWNrIGNhbmNlbCB0aGVuIGl0IHdpbGwgY2xvc2UgdGhlIHBvcG92ZXIuXHJcbiAgICogcmVtb3ZlIHRlbXAgdmFsdWUgZnJvbSB0ZXJtIHNlbGVjdGVkIGFycmF5IGFuZCBzZXQgdGhlIHByZXZpb3VzIHNlbGVjdGVkIGN5Y2xlIGluIGl0LlxyXG4gICAqL1xyXG4gIGNhbmNlbEJ1c2luZXNzQ3ljbGUoKSB7XHJcbiAgICB0aGlzLnNldFRlbXBTZWxlY3RlZEN5Y2xlKHRoaXMuc2VsZWN0ZWRCdXNpbmVzc0N5Y2xlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqICMjIyMgRGVzY3JpcHRpb25cclxuICAgKiB0aGlzIHdpbGwgc2V0IHRoZSBzdHJpbmcgb2YgYnVzaW5lc3MgY3ljbGUgd2hpY2ggIHdpbGwgZGlzcGxheSBpbiB0aGUgaGVhZGVyLlxyXG4gICAqIEBwYXJhbSBjeWNsZSBvYmplY3Qgd2hpY2ggaXMgc2VsZWN0ZWQgYW5kIGFwcGx5LiB0aGUgc2FtZSBvYmplY3Qgd2lsbCBzdG9yZSBpbiBsb2NhbCBzdG9yYWdlLlxyXG4gICAqL1xyXG4gIHNldEN5Y2xlVG9TaG93KGN5Y2xlOiBhbnkpIHtcclxuICAgIGlmIChjeWNsZT8uc2VsZWN0ZWRfY3ljbGVfYXJyPy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgaWYgKGN5Y2xlPy5idXNpbmVzc19jeWNsZT8udG9Mb3dlckNhc2UoKSA9PSAnc2hvdyBmdXR1cmUgZHVlIGRhdGVzJykge1xyXG4gICAgICAgIHRoaXMuY3ljbGVUb1Nob3cgPSAnRnV0dXJlIER1ZSBEYXRlcyc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jeWNsZVRvU2hvdyA9IGN5Y2xlLmJ1c2luZXNzX2N5Y2xlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgY3ljbGU/LmJ1c2luZXNzX2N5Y2xlPy5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgY3ljbGU/LmJ1c2luZXNzX2N5Y2xlWzFdPy50b0xvd2VyQ2FzZSgpID09ICdzaG93IGZ1dHVyZSBkdWUgZGF0ZXMnXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuY3ljbGVUb1Nob3cgPSBjeWNsZT8uYnVzaW5lc3NfY3ljbGVbMF0/LnN1YnN0cmluZygwLCAxMSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoY3ljbGU/LmJ1c2luZXNzX2N5Y2xlPy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmN5Y2xlVG9TaG93ID1cclxuICAgICAgICAgIGN5Y2xlPy5idXNpbmVzc19jeWNsZVswXT8uc3Vic3RyaW5nKDAsIDExKSArXHJcbiAgICAgICAgICAnIC0gJyArXHJcbiAgICAgICAgICBjeWNsZT8uYnVzaW5lc3NfY3ljbGVbMV0uc3Vic3RyaW5nKFxyXG4gICAgICAgICAgICBjeWNsZT8uYnVzaW5lc3NfY3ljbGVbMV0/Lmxlbmd0aCAtIDExLFxyXG4gICAgICAgICAgICBjeWNsZT8uYnVzaW5lc3NfY3ljbGVbMV0/LmxlbnRoXHJcbiAgICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cInZjLWJ1c2luZXNzLWN5Y2xlIHZ4LXB0LTIgdngtcGItMlwiXHJcbiAgYXBwUG9wb3ZlclxyXG4gIChjbGljayk9XCJidXNpbmVzc0N5Y2xlUG9wLnBvcG92ZXIoKVwiXHJcbiAgcG9zaXRpb249XCJsZWZ0XCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJoZWFkaW5nIHZ4LWZzLTkgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTEgdngtbGgtM1wiPlxyXG4gICAgU0hPV0lORyBEQVRBIHt7IGN5Y2xlVG9TaG93ID09PSBcIlNob3cgRnV0dXJlIER1ZSBEYXRlc1wiID8gXCJGb3JcIiA6IFwiRnJvbVwiIH19XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LWxoLTRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY2FsZW5kYXIgdngtZnMtMTIgdngtbXItMlwiPiYjeGU5OTY7PC9pPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXR4dC13aGl0ZSB2eC1kLWlubGluZS1ibG9ja1wiPnt7XHJcbiAgICAgICAgY3ljbGVUb1Nob3cgPT09IFwiU2hvdyBGdXR1cmUgRHVlIERhdGVzXCJcclxuICAgICAgICAgID8gXCJGdXR1cmUgRHVlIERhdGVzXCJcclxuICAgICAgICAgIDogY3ljbGVUb1Nob3dcclxuICAgICAgfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxpIGNsYXNzPVwiaWNvbnMgYXJyb3cgdngtZnMtMTAgdngtbXItMlwiPiYjeGU5ZTg7PC9pPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjx2dWktcG9wb3ZlciAjYnVzaW5lc3NDeWNsZVBvcCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgPGRpdiBjbGFzcz1cInZjLWJ1c2luZXNzLWN5Y2xlLXBvcG92ZXItY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwidmMtYnVzaW5lc3MtY3ljbGUtcG9wb3Zlci1jb250YWluZXItdG9wIHZ4LXB0LTIgdngtcGItMiB2eC1wbC0zIHZ4LXByLTNcIlxyXG4gICAgPlxyXG4gICAgICA8cCBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTQwMCB2eC1sYWJlbC10eHQgdngtcC0wIHZ4LW0tMFwiPlxyXG4gICAgICAgIFlvdSBjYW4gc2VsZWN0IHVwdG8gYSBtYXggb2YgdHdvIGNvbnNlY3V0aXZlIHllYXJzXHJcbiAgICAgIDwvcD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInZjLWJ1c2luZXNzLWN5Y2xlLXBvcG92ZXItY29udGFpbmVyLWJvZHlcIj5cclxuICAgICAgPHVsIGNsYXNzPVwidngtcC0wIHZ4LW0tMFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBlYWNoQ3ljbGUgb2YgYnVzaW5lc3NDeWNsZUxpc3Q7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIGVhY2hDeWNsZT8uYnVzaW5lc3NfY3ljbGU/LnRvTG93ZXJDYXNlKCkgPT09XHJcbiAgICAgICAgICAgICAgJ3Nob3cgZnV0dXJlIGR1ZSBkYXRlcydcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXB0LTIgdngtcGItMiB2eC1wbC0zIHZ4LXByLTNcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZnV0dXJlLWN5Y2xlXT1cInRydWVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgW25nVmFsdWVdPVwiaXNTZWxlY3RlZEN5Y2xlKHRlbXBTZWxlY3RlZEN5Y2xlLCBlYWNoQ3ljbGUpXCJcclxuICAgICAgICAgICAgICAobmdWYWx1ZUNoYW5nZSk9XCJzZWxlY3RDeWNsZShlYWNoQ3ljbGUsIGkpXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZWFjaEN5Y2xlPy5pc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICA+U2hvdyBGdXR1cmUgRHVlIERhdGVzPC9hcHAtY3MtY2hlY2tib3hcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgaW5mby1pY29uIHZ4LWZzLTEyXCJcclxuICAgICAgICAgICAgICBbYXJUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgJ1RoaXMgb3B0aW9uIGxldHMgeW91IHZpZXcgZGF0YSB0aGF0IGxpZXMgb3V0c2lkZSB0aGUgY3VycmVudCBidXNpbmVzcyBjeWNsZSBhbmQgYXJlIGR1ZSBpbiB0aGUgZnV0dXJlLidcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgID4mI3hlOTFmOzwvaVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgZWFjaEN5Y2xlPy5idXNpbmVzc19jeWNsZT8udG9Mb3dlckNhc2UoKSAhPT1cclxuICAgICAgICAgICAgICAnc2hvdyBmdXR1cmUgZHVlIGRhdGVzJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcHQtMiB2eC1wYi0yIHZ4LXBsLTMgdngtcHItM1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3hcclxuICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJpc1NlbGVjdGVkQ3ljbGUodGVtcFNlbGVjdGVkQ3ljbGUsIGVhY2hDeWNsZSlcIlxyXG4gICAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInNlbGVjdEN5Y2xlKGVhY2hDeWNsZSwgaSlcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJlYWNoQ3ljbGU/LmlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgID57eyBlYWNoQ3ljbGU/LnN0YXJ0X2RhdGUgfCBkYXRlRm9ybWF0IH19IC1cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAge3sgZWFjaEN5Y2xlPy5lbmRfZGF0ZSB8IGRhdGVGb3JtYXQgfX08L25nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9hcHAtY3MtY2hlY2tib3g+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwidmMtYnVzaW5lc3MtY3ljbGUtcG9wb3Zlci1jb250YWluZXItZm9vdGVyIHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcC0zXCJcclxuICAgID5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIChjbGljayk9XCJidXNpbmVzc0N5Y2xlUG9wLmNsb3NlUG9wb3ZlcigndG9wJylcIlxyXG4gICAgICAgIGNsYXNzPVwid2hpdGUgdngtZnMtMTEgdngtZnctNTAwIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtdHh0LWJsdWVcIlxyXG4gICAgICA+XHJcbiAgICAgICAgQ0FOQ0VMXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgKGNsaWNrKT1cInNldEJ1c2luZXNzQ3ljbGUoKTsgYnVzaW5lc3NDeWNsZVBvcC5jbG9zZVBvcG92ZXIoJ3RvcCcpXCJcclxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgIGNsYXNzPVwiYmx1ZSB2eC1mcy0xMSB2eC1mdy01MDAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC10eHQtd2hpdGVcIlxyXG4gICAgICA+XHJcbiAgICAgICAgQVBQTFlcclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC92dWktcG9wb3Zlcj5cclxuIl19
|
package/fesm2022/vc-layout.mjs
CHANGED
|
@@ -1768,65 +1768,54 @@ class BusinessCycleComponent {
|
|
|
1768
1768
|
*
|
|
1769
1769
|
*/
|
|
1770
1770
|
setBusinessCycle() {
|
|
1771
|
-
|
|
1771
|
+
const combinedDates = this.businessCycleService.convertNumericAlpha(this.businessCycleList[0]?.start_date +
|
|
1772
|
+
this.businessCycleList[0]?.end_date);
|
|
1773
|
+
const isFutureDates = (cycle) => cycle?.business_cycle === combinedDates &&
|
|
1774
|
+
this.businessCycleList[0]?.business_cycle === FUTURE_DATES;
|
|
1775
|
+
let businessCycleObject = {
|
|
1776
|
+
userId: this.userId,
|
|
1777
|
+
selectedCycle: {
|
|
1778
|
+
selected: true,
|
|
1779
|
+
business_cycle: [],
|
|
1780
|
+
selected_cycle_arr: [],
|
|
1781
|
+
},
|
|
1782
|
+
};
|
|
1772
1783
|
if (this.tempSelectedCycle?.length === 1) {
|
|
1773
|
-
businessCycleObject
|
|
1774
|
-
userId: this.userId,
|
|
1775
|
-
selectedCycle: {
|
|
1776
|
-
start_date: this.tempSelectedCycle[0]?.start_date,
|
|
1777
|
-
end_date: this.tempSelectedCycle[0]?.end_date,
|
|
1778
|
-
selected: true,
|
|
1779
|
-
business_cycle: this.tempSelectedCycle[0]?.business_cycle,
|
|
1780
|
-
selected_cycle: this.tempSelectedCycle[0]?.start_date +
|
|
1781
|
-
'-' +
|
|
1782
|
-
this.tempSelectedCycle[0]?.end_date,
|
|
1783
|
-
selected_cycle_arr: [
|
|
1784
|
-
this.tempSelectedCycle[0]?.start_date +
|
|
1785
|
-
'-' +
|
|
1786
|
-
this.tempSelectedCycle[0]?.end_date,
|
|
1787
|
-
],
|
|
1788
|
-
},
|
|
1789
|
-
};
|
|
1790
|
-
this.setCycleToShow(businessCycleObject?.selectedCycle);
|
|
1791
|
-
// this.cycleToShow = this.tempSelectedCycle[0]?.business_cycle;
|
|
1784
|
+
this.setSingleSelectedCycle(businessCycleObject, isFutureDates);
|
|
1792
1785
|
}
|
|
1793
1786
|
else {
|
|
1794
|
-
|
|
1795
|
-
let selected_cycle_arr = [];
|
|
1796
|
-
const combinedDates = this.businessCycleService.convertNumericAlpha(this.businessCycleList[0]?.start_date +
|
|
1797
|
-
this.businessCycleList[0]?.end_date);
|
|
1798
|
-
this.tempSelectedCycle?.forEach((el) => {
|
|
1799
|
-
if (el?.business_cycle === combinedDates &&
|
|
1800
|
-
this.businessCycleList[0]?.business_cycle === FUTURE_DATES) {
|
|
1801
|
-
business_cycle.push(FUTURE_DATES);
|
|
1802
|
-
}
|
|
1803
|
-
else {
|
|
1804
|
-
business_cycle.push(el?.business_cycle);
|
|
1805
|
-
}
|
|
1806
|
-
selected_cycle_arr.push(el?.start_date + '-' + el?.end_date);
|
|
1807
|
-
});
|
|
1808
|
-
businessCycleObject = {
|
|
1809
|
-
userId: this.userId,
|
|
1810
|
-
selectedCycle: {
|
|
1811
|
-
start_date: this.tempSelectedCycle[0]?.start_date,
|
|
1812
|
-
end_date: this.tempSelectedCycle[1]?.end_date,
|
|
1813
|
-
selected: true,
|
|
1814
|
-
business_cycle: business_cycle,
|
|
1815
|
-
selected_cycle: this.tempSelectedCycle[0]?.start_date +
|
|
1816
|
-
'-' +
|
|
1817
|
-
this.tempSelectedCycle[1]?.end_date,
|
|
1818
|
-
selected_cycle_arr: selected_cycle_arr,
|
|
1819
|
-
},
|
|
1820
|
-
};
|
|
1821
|
-
this.setCycleToShow(businessCycleObject?.selectedCycle);
|
|
1822
|
-
// this.cycleToShow = business_cycle[0].substring(0,11) + " - " + business_cycle[1].substring(business_cycle[1]?.length-11, business_cycle[1]?.lenth);
|
|
1787
|
+
this.setMultipleSelectedCycles(businessCycleObject, isFutureDates);
|
|
1823
1788
|
}
|
|
1824
|
-
|
|
1789
|
+
this.setCycleToShow(businessCycleObject?.selectedCycle);
|
|
1825
1790
|
localStorage.setItem('businessCycle', JSON.stringify(businessCycleObject));
|
|
1826
1791
|
this.selectedBusinessCycle = businessCycleObject?.selectedCycle;
|
|
1827
1792
|
this.businessCycleChange.emit(this.selectedBusinessCycle);
|
|
1828
1793
|
this.businessCycleService.changeBusinessCycle$.next(true);
|
|
1829
1794
|
}
|
|
1795
|
+
setSingleSelectedCycle(businessCycleObject, isFutureDates) {
|
|
1796
|
+
const cycle = this.tempSelectedCycle[0];
|
|
1797
|
+
if (isFutureDates(cycle)) {
|
|
1798
|
+
cycle.business_cycle = FUTURE_DATES;
|
|
1799
|
+
}
|
|
1800
|
+
Object.assign(businessCycleObject?.selectedCycle, {
|
|
1801
|
+
start_date: cycle?.start_date,
|
|
1802
|
+
end_date: cycle?.end_date,
|
|
1803
|
+
business_cycle: cycle?.business_cycle,
|
|
1804
|
+
selected_cycle: `${cycle?.start_date}-${cycle?.end_date}`,
|
|
1805
|
+
selected_cycle_arr: [`${cycle?.start_date}-${cycle?.end_date}`],
|
|
1806
|
+
});
|
|
1807
|
+
}
|
|
1808
|
+
setMultipleSelectedCycles(businessCycleObject, isFutureDates) {
|
|
1809
|
+
this.tempSelectedCycle?.forEach((cycle) => {
|
|
1810
|
+
businessCycleObject?.selectedCycle.business_cycle?.push(isFutureDates(cycle) ? FUTURE_DATES : cycle?.business_cycle);
|
|
1811
|
+
businessCycleObject?.selectedCycle.selected_cycle_arr?.push(`${cycle?.start_date}-${cycle?.end_date}`);
|
|
1812
|
+
});
|
|
1813
|
+
businessCycleObject.selectedCycle.start_date =
|
|
1814
|
+
this.tempSelectedCycle[0]?.start_date;
|
|
1815
|
+
businessCycleObject.selectedCycle.end_date =
|
|
1816
|
+
this.tempSelectedCycle[1]?.end_date;
|
|
1817
|
+
businessCycleObject.selectedCycle.selected_cycle = `${businessCycleObject?.selectedCycle?.start_date}-${businessCycleObject?.selectedCycle?.end_date}`;
|
|
1818
|
+
}
|
|
1830
1819
|
/**
|
|
1831
1820
|
* #### Description
|
|
1832
1821
|
* when user click cancel then it will close the popover.
|