@datarailsshared/datarailsshared 1.6.145 → 1.6.149
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/datarailsshared-datarailsshared-1.6.149.tgz +0 -0
- package/esm2022/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.mjs +5 -2
- package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.mjs +14 -9
- package/esm2022/lib/dr-inputs/date-pickers/dr-fiscal-month-calendar-picker/dr-fiscal-month-calendar-picker.component.mjs +7 -7
- package/fesm2022/datarailsshared-datarailsshared.mjs +23 -15
- package/fesm2022/datarailsshared-datarailsshared.mjs.map +1 -1
- package/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.d.ts +3 -1
- package/package.json +1 -1
- package/datarailsshared-datarailsshared-1.6.145.tgz +0 -0
|
Binary file
|
package/esm2022/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.mjs
CHANGED
|
@@ -257,7 +257,10 @@ export class DialogModalWrapperComponent {
|
|
|
257
257
|
}), tap(() => this.fieldsItemsLoading[currentValue.name].next(false)), finalize(() => this.fieldsItemsLoading[currentValue.name].next(false)));
|
|
258
258
|
}
|
|
259
259
|
const currentFormControl = {};
|
|
260
|
-
currentFormControl[currentValue.name] = new FormControl(currentValue.default || null,
|
|
260
|
+
currentFormControl[currentValue.name] = new FormControl(currentValue.default || null, {
|
|
261
|
+
validators: currentValue.validators || [],
|
|
262
|
+
asyncValidators: currentValue.asyncValidators || [],
|
|
263
|
+
});
|
|
261
264
|
return Object.assign(accumulator, currentFormControl);
|
|
262
265
|
}, {}));
|
|
263
266
|
}
|
|
@@ -342,4 +345,4 @@ export class DialogModalWrapperComponent {
|
|
|
342
345
|
type: HostBinding,
|
|
343
346
|
args: ['class']
|
|
344
347
|
}] }); })();
|
|
345
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLW1vZGFsLXdyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZGlhbG9nL2NvbXBvbmVudHMvZGlhbG9nLW1vZGFsLXdyYXBwZXIvZGlhbG9nLW1vZGFsLXdyYXBwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZGlhbG9nL2NvbXBvbmVudHMvZGlhbG9nLW1vZGFsLXdyYXBwZXIvZGlhbG9nLW1vZGFsLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxzQkFBc0IsSUFBSSxlQUFlLEVBQUUsa0JBQWtCLElBQUksWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEksT0FBTyxFQUFZLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7O0lDSDlELDRCQUtnQztJQUg1QixpS0FBUyxlQUFBLG9CQUFhLENBQUEsSUFBQztJQUdLLGlCQUFJOzs7SUFEaEMsZ0RBQW9DOzs7O0lBSTVDLDZCQUE2RztJQUF6RSxpS0FBUyxlQUFBLG9CQUFhLENBQUEsSUFBQztJQUFrRCxpQkFBSTs7O0lBRXJILCtCQUF3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QVc7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQzsrR0E3RlEsMkJBQTJCLG9FQWN4QixlQUFlO21HQWRsQiwyQkFBMkI7OztZQ1p4Qyw4QkFBa0MsWUFBQTtZQUUxQix3RUFLb0M7WUFDcEMsK0JBQWlDO1lBQUEsWUFBc0I7WUFBQSxpQkFBTyxFQUFBO1lBRWxFLHdFQUFpSDtZQUNySCxpQkFBTTtZQUNOLDRFQUVNO1lBQ04sOEVBbUVPO1lBRVAsOEJBQWtDO1lBQzlCLDRFQXFCTTtZQUNWLGlCQUFNOztZQXhHTyxlQUFnQztZQUFoQyxxREFBZ0M7WUFLSixlQUFzQjtZQUF0QiwwQ0FBc0I7WUFFdkQsZUFBOEI7WUFBOUIsbURBQThCO1lBRWhDLGVBQXdCO1lBQXhCLDZDQUF3QjtZQUd2QixlQUF1QjtZQUF2Qiw0Q0FBdUI7WUFzRUksZUFBd0Q7WUFBeEQsaUZBQXdEOzs7dUZEekU3RSwyQkFBMkI7Y0FMdkMsU0FBUzsyQkFDSSx5QkFBeUI7O3NCQWtCOUIsTUFBTTt1QkFBQyxlQUFlO3dCQUpMLEtBQUs7a0JBQTFCLFdBQVc7bUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIEluamVjdCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNQVRfTEVHQUNZX0RJQUxPR19EQVRBIGFzIE1BVF9ESUFMT0dfREFUQSwgTWF0TGVnYWN5RGlhbG9nUmVmIGFzIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1kaWFsb2cnO1xuaW1wb3J0IHsgRGF0YVByb3AsIERJQUxPR19GSUVMRF9UWVBFIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9kaWFsb2ctZGF0YSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkci1kaWFsb2ctbW9kYWwtd3JhcHBlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RpYWxvZy1tb2RhbC13cmFwcGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kaWFsb2ctbW9kYWwtd3JhcHBlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dNb2RhbFdyYXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcmVhZG9ubHkgZGlhbG9nRmllbGRUeXBlID0gRElBTE9HX0ZJRUxEX1RZUEU7XG4gICAgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgZm9ybTogRm9ybUdyb3VwO1xuICAgIHNhdmluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgICBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgICBzaG93U2VydmVyRXJyb3JNZXNzYWdlID0gZmFsc2U7XG4gICAgZmllbGRzSXRlbXNMb2FkaW5nOiBSZWNvcmQ8c3RyaW5nLCBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4+ID0ge307XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3MgPSB0aGlzPy5kaWFsb2dEYXRhPy50aGVtZT8udGhlbWVTaXplO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEaWFsb2dNb2RhbFdyYXBwZXJDb21wb25lbnQ+LFxuICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRpYWxvZ0RhdGE6IERhdGFQcm9wLFxuICAgICkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlhbG9nRGF0YS5maWVsZHMpIHRoaXMuZGlhbG9nRGF0YS5maWVsZHMgPSBbXTtcblxuICAgICAgICB0aGlzLmZvcm0gPSBuZXcgRm9ybUdyb3VwKFxuICAgICAgICAgICAgdGhpcy5kaWFsb2dEYXRhLmZpZWxkcy5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBjdXJyZW50VmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFZhbHVlLml0ZW1zJCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkc0l0ZW1zTG9hZGluZ1tjdXJyZW50VmFsdWUubmFtZV0gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWUuaXRlbXMkID0gKGN1cnJlbnRWYWx1ZS5pdGVtcyQgYXMgYW55KS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZHNJdGVtc0xvYWRpbmdbY3VycmVudFZhbHVlLm5hbWVdLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLmZpZWxkc0l0ZW1zTG9hZGluZ1tjdXJyZW50VmFsdWUubmFtZV0ubmV4dChmYWxzZSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5maWVsZHNJdGVtc0xvYWRpbmdbY3VycmVudFZhbHVlLm5hbWVdLm5leHQoZmFsc2UpKSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50Rm9ybUNvbnRyb2wgPSB7fTtcbiAgICAgICAgICAgICAgICBjdXJyZW50Rm9ybUNvbnRyb2xbY3VycmVudFZhbHVlLm5hbWVdID0gbmV3IEZvcm1Db250cm9sKFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWUuZGVmYXVsdCB8fCBudWxsLFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWUudmFsaWRhdG9ycyB8fCBbXSxcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlLmFzeW5jVmFsaWRhdG9ycyB8fCBbXSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGFjY3VtdWxhdG9yLCBjdXJyZW50Rm9ybUNvbnRyb2wpO1xuICAgICAgICAgICAgfSwge30pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIG9uQWNjZXB0KCkge1xuICAgICAgICBpZiAoIXRoaXMuZGlhbG9nRGF0YS5jb25maXJtRm4pIHJldHVybiB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0aGlzLmZvcm0udmFsdWUgfHwgdHJ1ZSk7XG5cbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnNhdmluZyQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kaWFsb2dEYXRhXG4gICAgICAgICAgICAuY29uZmlybUZuKHRoaXMuZm9ybS52YWx1ZSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zYXZpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93U2VydmVyRXJyb3JNZXNzYWdlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zYXZpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zYXZpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRoaXMuZm9ybS52YWx1ZSB8fCB0cnVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRGVjbGluZSgpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBvbkNhbmNlbCgpIHtcbiAgICAgICAgY29uc3QgZnVuY3Rpb25zID0gdGhpcy5kaWFsb2dEYXRhPy5jYW5jZWxCdXR0b24/LmZ1bmN0aW9ucztcbiAgICAgICAgaWYgKGZ1bmN0aW9ucykgZnVuY3Rpb25zKCk7XG5cbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZmFsc2UpO1xuICAgIH1cblxuICAgIGZvb3RlckFjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dEYXRhLmZvb3RlclRlbXBsYXRlRGF0YS5hY3Rpb24odGhpcy5mb3JtLnZhbHVlKTtcbiAgICB9XG5cbiAgICBjbG9zZURpYWxvZygpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZmFsc2UpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgaGVhZGVyIGNsYXNzPVwiaGVhZGVyLWRpYWxvZ1wiPlxuICAgIDxoMSBjbGFzcz1cInRpdGxlLWRpYWxvZ1wiIGRhdGEtdGVzdD1cIm1vZGFsVGl0bGVcIj5cbiAgICAgICAgPGlcbiAgICAgICAgICAgICpuZ0lmPVwiZGlhbG9nRGF0YS5oZWFkZXJJY29uQ2xhc3NcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0aXRsZS1kaWFsb2dfX2ljb25cIlxuICAgICAgICAgICAgW2NsYXNzXT1cImRpYWxvZ0RhdGEuaGVhZGVySWNvbkNsYXNzXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdD1cImRpYWxvZ1RpdGxlSWNvblwiPjwvaT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS1kaWFsb2dfX3RleHRcIj57eyBkaWFsb2dEYXRhLnRpdGxlIH19PC9zcGFuPlxuICAgIDwvaDE+XG4gICAgPGkgKm5nSWY9XCIhZGlhbG9nRGF0YS5oaWRlQ2xvc2VCdG5cIiAoY2xpY2spPVwiY2xvc2VEaWFsb2coKVwiIGNsYXNzPVwiZHItaWNvbi1leGl0IGljb24tY2xvc2VcIiBkYXRhLXRlc3Q9XCJ4QnRuXCI+PC9pPlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwiZGlhbG9nRGF0YS5jb250ZW50XCIgY2xhc3M9XCJjb250ZW50LWRpYWxvZ1wiIFtpbm5lckhUTUxdPVwiZGlhbG9nRGF0YS5jb250ZW50XCI+XG4gICAgPHNwYW4gI2NvbnRlbnQgY2xhc3M9XCJjb250ZW50LWFuY2hvclwiPjwvc3Bhbj5cbjwvZGl2PlxuPGZvcm0gKm5nSWY9XCJkaWFsb2dEYXRhLmZpZWxkc1wiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwiZHItc21hcnQtZnJvbVwiPlxuICAgIDxkaXYgW2NsYXNzXT1cImRpYWxvZ0RhdGEuZm9ybVdyYXBwZXJDbGFzcyB8fCAnZHItc21hcnQtZm9ybV93cmFwcGVyJ1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZGlhbG9nRGF0YS5maWVsZHNcIlxuICAgICAgICAgICAgY2xhc3M9XCJkci1zbWFydC1mb3JtX2dyb3VwXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJmaWVsZC5mb3JtR3JvdXBDbGFzc1wiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGRpc3BsYXk6IGZpZWxkLmlzTGFiZWxGdWxsV2lkdGggPyAnYmxvY2snIDogJ2ZsZXgnIH1cIj5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZmllbGQubGFiZWwgJiYgZmllbGQudHlwZSAhPT0gZGlhbG9nRmllbGRUeXBlLkNIRUNLQk9YXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJmaWVsZC5pc0xhYmVsRnVsbFdpZHRoID8gJ2NvbC1tZC0xMiBtYi0yJyA6ICdjb2wtbWQtMidcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibGFiZWwgcC0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID57eyBmaWVsZC5sYWJlbCB9fTwvbGFiZWxcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LWdyb3VwIHAtMFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAnY29sLW1kLTEwJzogZmllbGQubGFiZWwgJiYgIWZpZWxkLmlzTGFiZWxGdWxsV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICdjb2wtbWQtMTInOiAhZmllbGQubGFiZWwgfHwgZmllbGQuaXNMYWJlbEZ1bGxXaWR0aCxcbiAgICAgICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgICAgPGRyLXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZpZWxkLnR5cGUgPT09IGRpYWxvZ0ZpZWxkVHlwZS5TRUxFQ1RcIlxuICAgICAgICAgICAgICAgICAgICBbc2VhcmNoYWJsZV09XCJkaWFsb2dEYXRhLnNlYXJjaGFibGVcIlxuICAgICAgICAgICAgICAgICAgICBbY2xlYXJhYmxlXT1cImRpYWxvZ0RhdGEuY2xlYXJhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgW2FkZFRhZ109XCJmaWVsZC5hZGRUYWdcIlxuICAgICAgICAgICAgICAgICAgICBbYmluZExhYmVsXT1cImZpZWxkLmJpbmRMYWJlbCB8fCBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2JpbmRWYWx1ZV09XCJmaWVsZC5iaW5kVmFsdWUgfHwgbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZEl0ZW1dPVwiZmllbGQuZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJmaWVsZC5pdGVtcyB8fCAoZmllbGQuaXRlbXMkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgICAgICAgICAgW2xvYWRpbmddPVwiZmllbGRzSXRlbXNMb2FkaW5nW2ZpZWxkLm5hbWVdIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiIWZpZWxkLmlzT3B0aW9uYWxcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiZGlhbG9nRGF0YT8uZm9vdGVyVGVtcGxhdGVEYXRhXCIgI29wdGlvbkZvb3RlclRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiIGxldC1jbG9zZT1cImNsb3NlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJmb290ZXJBY3Rpb24oKTsgY2xvc2UoKVwiIGNsYXNzPVwiZHItc2VsZWN0LWZvb3Rlcl9fYnRuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJkaWFsb2dEYXRhLmZvb3RlclRlbXBsYXRlRGF0YS5pY29uXCIgY2xhc3M9XCJ7eyBkaWFsb2dEYXRhLmZvb3RlclRlbXBsYXRlRGF0YS5pY29uIH19XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRpYWxvZ0RhdGEuZm9vdGVyVGVtcGxhdGVEYXRhLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2RyLXNlbGVjdD5cbiAgICAgICAgICAgICAgICA8ZHItaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWVsZC50eXBlID09PSBkaWFsb2dGaWVsZFR5cGUuSU5QVVRcIlxuICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3Q9XCJtb2RhbElucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJcIj48L2RyLWlucHV0PlxuICAgICAgICAgICAgICAgIDxkci1kYXRlLXBpY2tlclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZpZWxkLnR5cGUgPT09IGRpYWxvZ0ZpZWxkVHlwZS5EQVRFX1BJQ0tFUlwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtYXRdPVwiZmllbGQuZGF0ZVBpY2tlckZvcm1hdFwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlclwiPjwvZHItZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICAgICAgPGRyLWNoZWNrYm94ICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gZGlhbG9nRmllbGRUeXBlLkNIRUNLQk9YXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9kci1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWVycm9yLWFsZXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmb3JtLmludmFsaWQgJiYgZm9ybS5jb250cm9sc1tmaWVsZC5uYW1lXT8uZGlydHkgJiYgZm9ybS5jb250cm9sc1tmaWVsZC5uYW1lXT8uZXJyb3JzXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGZvcm0uY29udHJvbHNbZmllbGQubmFtZV0uZXJyb3JzLmVycm9yU3RyaW5nIH19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWVycm9yLWFsZXJ0XCIgKm5nSWY9XCJkaWFsb2dEYXRhLmVycm9yTWVzc2FnZSAmJiAhZm9ybS5wcmlzdGluZSAmJiBmb3JtLmludmFsaWRcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZGlhbG9nRGF0YS5lcnJvck1lc3NhZ2UgfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tZXJyb3ItYWxlcnRcIiAqbmdJZj1cImZvcm0udmFsaWQgJiYgc2hvd1NlcnZlckVycm9yTWVzc2FnZSAmJiBkaWFsb2dEYXRhLnNlcnZlckVycm9yTWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBkaWFsb2dEYXRhLnNlcnZlckVycm9yTWVzc2FnZSB9fVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Zvcm0+XG5cbjxkaXYgZm9vdGVyIGNsYXNzPVwiZm9vdGVyLWRpYWxvZ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLXdyYXBwZXJcIiAqbmdJZj1cImRpYWxvZ0RhdGEuY2FuY2VsQnV0dG9uIHx8IGRpYWxvZ0RhdGEuYWNjZXB0QnV0dG9uXCI+XG4gICAgICAgIDxkci1idXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJvbkRlY2xpbmUoKVwiXG4gICAgICAgICAgICAqbmdJZj1cImRpYWxvZ0RhdGEuY3VzdG9tQnV0dG9uXCJcbiAgICAgICAgICAgIFt0aGVtZV09XCJkaWFsb2dEYXRhLmN1c3RvbUJ1dHRvbj8udGhlbWUgfHwgJ3NlY29uZGFyeSdcIlxuICAgICAgICAgICAgY2xhc3M9XCJidXR0b25zLXdyYXBwZXItLWN1c3RvbS1idG5cIlxuICAgICAgICAgICAgZGF0YS10ZXN0PVwiZGVjbGluZUJ0blwiXG4gICAgICAgICAgICA+e3sgZGlhbG9nRGF0YS5jdXN0b21CdXR0b24ubGFiZWwgfX08L2RyLWJ1dHRvblxuICAgICAgICA+XG4gICAgICAgIDxkci1idXR0b24gKm5nSWY9XCJkaWFsb2dEYXRhLmNhbmNlbEJ1dHRvblwiIGRhdGEtdGVzdD1cIm1vZGFsQ2xvc2VCdG5cIiAoY2xpY2spPVwib25DYW5jZWwoKVwiIFt0aGVtZV09XCInc2Vjb25kYXJ5J1wiPnt7XG4gICAgICAgICAgICBkaWFsb2dEYXRhLmNhbmNlbEJ1dHRvbi5sYWJlbFxuICAgICAgICB9fTwvZHItYnV0dG9uPlxuICAgICAgICA8ZHItYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImRpYWxvZ0RhdGEuYWNjZXB0QnV0dG9uXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdD1cIm1vZGFsQWRkQnRuXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkFjY2VwdCgpXCJcbiAgICAgICAgICAgIFt0aGVtZV09XCIncHJpbWFyeSdcIlxuICAgICAgICAgICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiXG4gICAgICAgICAgICA+e3sgZGlhbG9nRGF0YS5hY2NlcHRCdXR0b24ubGFiZWwgfX08L2RyLWJ1dHRvblxuICAgICAgICA+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
348
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLW1vZGFsLXdyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZGlhbG9nL2NvbXBvbmVudHMvZGlhbG9nLW1vZGFsLXdyYXBwZXIvZGlhbG9nLW1vZGFsLXdyYXBwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZGlhbG9nL2NvbXBvbmVudHMvZGlhbG9nLW1vZGFsLXdyYXBwZXIvZGlhbG9nLW1vZGFsLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxzQkFBc0IsSUFBSSxlQUFlLEVBQUUsa0JBQWtCLElBQUksWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEksT0FBTyxFQUFZLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7O0lDSDlELDRCQUtnQztJQUg1QixpS0FBUyxlQUFBLG9CQUFhLENBQUEsSUFBQztJQUdLLGlCQUFJOzs7SUFEaEMsZ0RBQW9DOzs7O0lBSTVDLDZCQUE2RztJQUF6RSxpS0FBUyxlQUFBLG9CQUFhLENBQUEsSUFBQztJQUFrRCxpQkFBSTs7O0lBRXJILCtCQUF3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QUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7K0dBNUZRLDJCQUEyQixvRUFjeEIsZUFBZTttR0FkbEIsMkJBQTJCOzs7WUNaeEMsOEJBQWtDLFlBQUE7WUFFMUIsd0VBS29DO1lBQ3BDLCtCQUFpQztZQUFBLFlBQXNCO1lBQUEsaUJBQU8sRUFBQTtZQUVsRSx3RUFBaUg7WUFDckgsaUJBQU07WUFDTiw0RUFFTTtZQUNOLDhFQW1FTztZQUVQLDhCQUFrQztZQUM5Qiw0RUFxQk07WUFDVixpQkFBTTs7WUF4R08sZUFBZ0M7WUFBaEMscURBQWdDO1lBS0osZUFBc0I7WUFBdEIsMENBQXNCO1lBRXZELGVBQThCO1lBQTlCLG1EQUE4QjtZQUVoQyxlQUF3QjtZQUF4Qiw2Q0FBd0I7WUFHdkIsZUFBdUI7WUFBdkIsNENBQXVCO1lBc0VJLGVBQXdEO1lBQXhELGlGQUF3RDs7O3VGRHpFN0UsMkJBQTJCO2NBTHZDLFNBQVM7MkJBQ0kseUJBQXlCOztzQkFrQjlCLE1BQU07dUJBQUMsZUFBZTt3QkFKTCxLQUFLO2tCQUExQixXQUFXO21CQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbmplY3QsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTUFUX0xFR0FDWV9ESUFMT0dfREFUQSBhcyBNQVRfRElBTE9HX0RBVEEsIE1hdExlZ2FjeURpYWxvZ1JlZiBhcyBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcbmltcG9ydCB7IERhdGFQcm9wLCBESUFMT0dfRklFTERfVFlQRSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZGlhbG9nLWRhdGEnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHItZGlhbG9nLW1vZGFsLXdyYXBwZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kaWFsb2ctbW9kYWwtd3JhcHBlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGlhbG9nLW1vZGFsLXdyYXBwZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRGlhbG9nTW9kYWxXcmFwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHJlYWRvbmx5IGRpYWxvZ0ZpZWxkVHlwZSA9IERJQUxPR19GSUVMRF9UWVBFO1xuICAgIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGZvcm06IEZvcm1Hcm91cDtcbiAgICBzYXZpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gICAgaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgc2hvd1NlcnZlckVycm9yTWVzc2FnZSA9IGZhbHNlO1xuICAgIGZpZWxkc0l0ZW1zTG9hZGluZzogUmVjb3JkPHN0cmluZywgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+PiA9IHt9O1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gdGhpcz8uZGlhbG9nRGF0YT8udGhlbWU/LnRoZW1lU2l6ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RGlhbG9nTW9kYWxXcmFwcGVyQ29tcG9uZW50PixcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkaWFsb2dEYXRhOiBEYXRhUHJvcCxcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpYWxvZ0RhdGEuZmllbGRzKSB0aGlzLmRpYWxvZ0RhdGEuZmllbGRzID0gW107XG5cbiAgICAgICAgdGhpcy5mb3JtID0gbmV3IEZvcm1Hcm91cChcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nRGF0YS5maWVsZHMucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZS5pdGVtcyQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZHNJdGVtc0xvYWRpbmdbY3VycmVudFZhbHVlLm5hbWVdID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlLml0ZW1zJCA9IChjdXJyZW50VmFsdWUuaXRlbXMkIGFzIGFueSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGRzSXRlbXNMb2FkaW5nW2N1cnJlbnRWYWx1ZS5uYW1lXS5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5maWVsZHNJdGVtc0xvYWRpbmdbY3VycmVudFZhbHVlLm5hbWVdLm5leHQoZmFsc2UpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuZmllbGRzSXRlbXNMb2FkaW5nW2N1cnJlbnRWYWx1ZS5uYW1lXS5uZXh0KGZhbHNlKSksXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEZvcm1Db250cm9sID0ge307XG4gICAgICAgICAgICAgICAgY3VycmVudEZvcm1Db250cm9sW2N1cnJlbnRWYWx1ZS5uYW1lXSA9IG5ldyBGb3JtQ29udHJvbChjdXJyZW50VmFsdWUuZGVmYXVsdCB8fCBudWxsLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IGN1cnJlbnRWYWx1ZS52YWxpZGF0b3JzIHx8IFtdLFxuICAgICAgICAgICAgICAgICAgICBhc3luY1ZhbGlkYXRvcnM6IGN1cnJlbnRWYWx1ZS5hc3luY1ZhbGlkYXRvcnMgfHwgW10sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYWNjdW11bGF0b3IsIGN1cnJlbnRGb3JtQ29udHJvbCk7XG4gICAgICAgICAgICB9LCB7fSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgb25BY2NlcHQoKSB7XG4gICAgICAgIGlmICghdGhpcy5kaWFsb2dEYXRhLmNvbmZpcm1GbikgcmV0dXJuIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRoaXMuZm9ybS52YWx1ZSB8fCB0cnVlKTtcblxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuc2F2aW5nJC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRpYWxvZ0RhdGFcbiAgICAgICAgICAgIC5jb25maXJtRm4odGhpcy5mb3JtLnZhbHVlKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNhdmluZyQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dTZXJ2ZXJFcnJvck1lc3NhZ2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNhdmluZyQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycik7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmluZyQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5mb3JtLnZhbHVlIHx8IHRydWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25EZWNsaW5lKCkge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIG9uQ2FuY2VsKCkge1xuICAgICAgICBjb25zdCBmdW5jdGlvbnMgPSB0aGlzLmRpYWxvZ0RhdGE/LmNhbmNlbEJ1dHRvbj8uZnVuY3Rpb25zO1xuICAgICAgICBpZiAoZnVuY3Rpb25zKSBmdW5jdGlvbnMoKTtcblxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShmYWxzZSk7XG4gICAgfVxuXG4gICAgZm9vdGVyQWN0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpYWxvZ0RhdGEuZm9vdGVyVGVtcGxhdGVEYXRhLmFjdGlvbih0aGlzLmZvcm0udmFsdWUpO1xuICAgIH1cblxuICAgIGNsb3NlRGlhbG9nKCkge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShmYWxzZSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPGRpdiBoZWFkZXIgY2xhc3M9XCJoZWFkZXItZGlhbG9nXCI+XG4gICAgPGgxIGNsYXNzPVwidGl0bGUtZGlhbG9nXCIgZGF0YS10ZXN0PVwibW9kYWxUaXRsZVwiPlxuICAgICAgICA8aVxuICAgICAgICAgICAgKm5nSWY9XCJkaWFsb2dEYXRhLmhlYWRlckljb25DbGFzc1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VEaWFsb2coKVwiXG4gICAgICAgICAgICBjbGFzcz1cInRpdGxlLWRpYWxvZ19faWNvblwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiZGlhbG9nRGF0YS5oZWFkZXJJY29uQ2xhc3NcIlxuICAgICAgICAgICAgZGF0YS10ZXN0PVwiZGlhbG9nVGl0bGVJY29uXCI+PC9pPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlLWRpYWxvZ19fdGV4dFwiPnt7IGRpYWxvZ0RhdGEudGl0bGUgfX08L3NwYW4+XG4gICAgPC9oMT5cbiAgICA8aSAqbmdJZj1cIiFkaWFsb2dEYXRhLmhpZGVDbG9zZUJ0blwiIChjbGljayk9XCJjbG9zZURpYWxvZygpXCIgY2xhc3M9XCJkci1pY29uLWV4aXQgaWNvbi1jbG9zZVwiIGRhdGEtdGVzdD1cInhCdG5cIj48L2k+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJkaWFsb2dEYXRhLmNvbnRlbnRcIiBjbGFzcz1cImNvbnRlbnQtZGlhbG9nXCIgW2lubmVySFRNTF09XCJkaWFsb2dEYXRhLmNvbnRlbnRcIj5cbiAgICA8c3BhbiAjY29udGVudCBjbGFzcz1cImNvbnRlbnQtYW5jaG9yXCI+PC9zcGFuPlxuPC9kaXY+XG48Zm9ybSAqbmdJZj1cImRpYWxvZ0RhdGEuZmllbGRzXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJkci1zbWFydC1mcm9tXCI+XG4gICAgPGRpdiBbY2xhc3NdPVwiZGlhbG9nRGF0YS5mb3JtV3JhcHBlckNsYXNzIHx8ICdkci1zbWFydC1mb3JtX3dyYXBwZXInXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBkaWFsb2dEYXRhLmZpZWxkc1wiXG4gICAgICAgICAgICBjbGFzcz1cImRyLXNtYXJ0LWZvcm1fZ3JvdXBcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImZpZWxkLmZvcm1Hcm91cENsYXNzXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgZGlzcGxheTogZmllbGQuaXNMYWJlbEZ1bGxXaWR0aCA/ICdibG9jaycgOiAnZmxleCcgfVwiPlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJmaWVsZC5sYWJlbCAmJiBmaWVsZC50eXBlICE9PSBkaWFsb2dGaWVsZFR5cGUuQ0hFQ0tCT1hcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImZpZWxkLmlzTGFiZWxGdWxsV2lkdGggPyAnY29sLW1kLTEyIG1iLTInIDogJ2NvbC1tZC0yJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJsYWJlbCBwLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgPnt7IGZpZWxkLmxhYmVsIH19PC9sYWJlbFxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtZ3JvdXAgcC0wXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICdjb2wtbWQtMTAnOiBmaWVsZC5sYWJlbCAmJiAhZmllbGQuaXNMYWJlbEZ1bGxXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgJ2NvbC1tZC0xMic6ICFmaWVsZC5sYWJlbCB8fCBmaWVsZC5pc0xhYmVsRnVsbFdpZHRoLFxuICAgICAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgICAgICA8ZHItc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gZGlhbG9nRmllbGRUeXBlLlNFTEVDVFwiXG4gICAgICAgICAgICAgICAgICAgIFtzZWFyY2hhYmxlXT1cImRpYWxvZ0RhdGEuc2VhcmNoYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGVhcmFibGVdPVwiZGlhbG9nRGF0YS5jbGVhcmFibGVcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBbYWRkVGFnXT1cImZpZWxkLmFkZFRhZ1wiXG4gICAgICAgICAgICAgICAgICAgIFtiaW5kTGFiZWxdPVwiZmllbGQuYmluZExhYmVsIHx8IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbYmluZFZhbHVlXT1cImZpZWxkLmJpbmRWYWx1ZSB8fCBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkSXRlbV09XCJmaWVsZC5kZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImZpZWxkLml0ZW1zIHx8IChmaWVsZC5pdGVtcyQgfCBhc3luYylcIlxuICAgICAgICAgICAgICAgICAgICBbbG9hZGluZ109XCJmaWVsZHNJdGVtc0xvYWRpbmdbZmllbGQubmFtZV0gfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCIhZmllbGQuaXNPcHRpb25hbFwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJkaWFsb2dEYXRhPy5mb290ZXJUZW1wbGF0ZURhdGFcIiAjb3B0aW9uRm9vdGVyVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWNsb3NlPVwiY2xvc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImZvb3RlckFjdGlvbigpOyBjbG9zZSgpXCIgY2xhc3M9XCJkci1zZWxlY3QtZm9vdGVyX19idG5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImRpYWxvZ0RhdGEuZm9vdGVyVGVtcGxhdGVEYXRhLmljb25cIiBjbGFzcz1cInt7IGRpYWxvZ0RhdGEuZm9vdGVyVGVtcGxhdGVEYXRhLmljb24gfX1cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGlhbG9nRGF0YS5mb290ZXJUZW1wbGF0ZURhdGEubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvZHItc2VsZWN0PlxuICAgICAgICAgICAgICAgIDxkci1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZpZWxkLnR5cGUgPT09IGRpYWxvZ0ZpZWxkVHlwZS5JTlBVVFwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdD1cIm1vZGFsSW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlclwiPjwvZHItaW5wdXQ+XG4gICAgICAgICAgICAgICAgPGRyLWRhdGUtcGlja2VyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gZGlhbG9nRmllbGRUeXBlLkRBVEVfUElDS0VSXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1hdF09XCJmaWVsZC5kYXRlUGlja2VyRm9ybWF0XCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyXCI+PC9kci1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICA8ZHItY2hlY2tib3ggKm5nSWY9XCJmaWVsZC50eXBlID09PSBkaWFsb2dGaWVsZFR5cGUuQ0hFQ0tCT1hcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L2RyLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtZXJyb3ItYWxlcnRcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZvcm0uaW52YWxpZCAmJiBmb3JtLmNvbnRyb2xzW2ZpZWxkLm5hbWVdPy5kaXJ0eSAmJiBmb3JtLmNvbnRyb2xzW2ZpZWxkLm5hbWVdPy5lcnJvcnNcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZm9ybS5jb250cm9sc1tmaWVsZC5uYW1lXS5lcnJvcnMuZXJyb3JTdHJpbmcgfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tZXJyb3ItYWxlcnRcIiAqbmdJZj1cImRpYWxvZ0RhdGEuZXJyb3JNZXNzYWdlICYmICFmb3JtLnByaXN0aW5lICYmIGZvcm0uaW52YWxpZFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBkaWFsb2dEYXRhLmVycm9yTWVzc2FnZSB9fVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1lcnJvci1hbGVydFwiICpuZ0lmPVwiZm9ybS52YWxpZCAmJiBzaG93U2VydmVyRXJyb3JNZXNzYWdlICYmIGRpYWxvZ0RhdGEuc2VydmVyRXJyb3JNZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGRpYWxvZ0RhdGEuc2VydmVyRXJyb3JNZXNzYWdlIH19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZm9ybT5cblxuPGRpdiBmb290ZXIgY2xhc3M9XCJmb290ZXItZGlhbG9nXCI+XG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbnMtd3JhcHBlclwiICpuZ0lmPVwiZGlhbG9nRGF0YS5jYW5jZWxCdXR0b24gfHwgZGlhbG9nRGF0YS5hY2NlcHRCdXR0b25cIj5cbiAgICAgICAgPGRyLWJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVjbGluZSgpXCJcbiAgICAgICAgICAgICpuZ0lmPVwiZGlhbG9nRGF0YS5jdXN0b21CdXR0b25cIlxuICAgICAgICAgICAgW3RoZW1lXT1cImRpYWxvZ0RhdGEuY3VzdG9tQnV0dG9uPy50aGVtZSB8fCAnc2Vjb25kYXJ5J1wiXG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvbnMtd3JhcHBlci0tY3VzdG9tLWJ0blwiXG4gICAgICAgICAgICBkYXRhLXRlc3Q9XCJkZWNsaW5lQnRuXCJcbiAgICAgICAgICAgID57eyBkaWFsb2dEYXRhLmN1c3RvbUJ1dHRvbi5sYWJlbCB9fTwvZHItYnV0dG9uXG4gICAgICAgID5cbiAgICAgICAgPGRyLWJ1dHRvbiAqbmdJZj1cImRpYWxvZ0RhdGEuY2FuY2VsQnV0dG9uXCIgZGF0YS10ZXN0PVwibW9kYWxDbG9zZUJ0blwiIChjbGljayk9XCJvbkNhbmNlbCgpXCIgW3RoZW1lXT1cIidzZWNvbmRhcnknXCI+e3tcbiAgICAgICAgICAgIGRpYWxvZ0RhdGEuY2FuY2VsQnV0dG9uLmxhYmVsXG4gICAgICAgIH19PC9kci1idXR0b24+XG4gICAgICAgIDxkci1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiZGlhbG9nRGF0YS5hY2NlcHRCdXR0b25cIlxuICAgICAgICAgICAgZGF0YS10ZXN0PVwibW9kYWxBZGRCdG5cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWNjZXB0KClcIlxuICAgICAgICAgICAgW3RoZW1lXT1cIidwcmltYXJ5J1wiXG4gICAgICAgICAgICBbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgICAgID57eyBkaWFsb2dEYXRhLmFjY2VwdEJ1dHRvbi5sYWJlbCB9fTwvZHItYnV0dG9uXG4gICAgICAgID5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -49,7 +49,7 @@ function DrDatePickerComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
|
49
49
|
i0.ɵɵadvance(3);
|
|
50
50
|
i0.ɵɵproperty("drDatePickerFormat", i0.ɵɵpipeBind1(7, 17, ctx_r0.datePickerService.format$));
|
|
51
51
|
i0.ɵɵadvance(2);
|
|
52
|
-
i0.ɵɵproperty("startAt", ctx_r0._startAt)("panelClass", "dr-week-datepicker")("calendarHeaderComponent", ctx_r0.customHeader);
|
|
52
|
+
i0.ɵɵproperty("startAt", ctx_r0._startAt)("panelClass", "dr-week-datepicker" + (ctx_r0.panelClass ? " " + ctx_r0.panelClass : ""))("calendarHeaderComponent", ctx_r0.customHeader);
|
|
53
53
|
} }
|
|
54
54
|
function DrDatePickerComponent_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
55
55
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
@@ -67,10 +67,10 @@ function DrDatePickerComponent_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
|
67
67
|
const _r11 = i0.ɵɵreference(5);
|
|
68
68
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
69
69
|
i0.ɵɵadvance(1);
|
|
70
|
-
i0.ɵɵproperty("ngModel", i0.ɵɵpipeBind1(2,
|
|
70
|
+
i0.ɵɵproperty("ngModel", i0.ɵɵpipeBind1(2, 13, ctx_r1.displayValue$))("matDatepicker", _r11)("matDatepickerFilter", ctx_r1.dateFilter)("disabled", ctx_r1.disabled)("placeholder", ctx_r1.placeholder)("drDatePickerFormat", i0.ɵɵpipeBind1(3, 15, ctx_r1.datePickerService.format$))("readonly", ctx_r1.readonly)("min", ctx_r1._min)("max", ctx_r1._max);
|
|
71
71
|
i0.ɵɵattribute("id", ctx_r1.id);
|
|
72
72
|
i0.ɵɵadvance(3);
|
|
73
|
-
i0.ɵɵproperty("startAt", ctx_r1._startAt)("calendarHeaderComponent", ctx_r1.customHeader);
|
|
73
|
+
i0.ɵɵproperty("panelClass", ctx_r1.panelClass)("startAt", ctx_r1._startAt)("calendarHeaderComponent", ctx_r1.customHeader);
|
|
74
74
|
} }
|
|
75
75
|
const noop = () => { };
|
|
76
76
|
export class CustomDateAdapter extends MomentDateAdapter {
|
|
@@ -79,6 +79,9 @@ export class CustomDateAdapter extends MomentDateAdapter {
|
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
export class DrDatePickerComponent {
|
|
82
|
+
set useDarkTheme(value) {
|
|
83
|
+
this.panelClass = value ? 'dr-datepicker-dark-theme' : '';
|
|
84
|
+
}
|
|
82
85
|
set min(minDate) {
|
|
83
86
|
this._min = minDate ? moment.unix(minDate).utc() : null;
|
|
84
87
|
}
|
|
@@ -372,25 +375,25 @@ export class DrDatePickerComponent {
|
|
|
372
375
|
} }, hostVars: 5, hostBindings: function DrDatePickerComponent_HostBindings(rf, ctx) { if (rf & 2) {
|
|
373
376
|
i0.ɵɵattribute("id", ctx.hostId);
|
|
374
377
|
i0.ɵɵclassProp("disabled", ctx.disabled)("active", ctx.active);
|
|
375
|
-
} }, inputs: { id: "id", format: "format", min: "min", max: "max", startAt: "startAt", periodPosition: "periodPosition", placeholder: "placeholder", disabled: "disabled", fiscalYearMonthsModifier: "fiscalYearMonthsModifier", fiscalYearBack: "fiscalYearBack", datepickerFilter: "datepickerFilter", fixForNormalizedValueWithMaxDate: "fixForNormalizedValueWithMaxDate" }, features: [i0.ɵɵProvidersFeature([
|
|
378
|
+
} }, inputs: { id: "id", useDarkTheme: "useDarkTheme", format: "format", min: "min", max: "max", startAt: "startAt", periodPosition: "periodPosition", placeholder: "placeholder", disabled: "disabled", fiscalYearMonthsModifier: "fiscalYearMonthsModifier", fiscalYearBack: "fiscalYearBack", datepickerFilter: "datepickerFilter", fixForNormalizedValueWithMaxDate: "fixForNormalizedValueWithMaxDate" }, features: [i0.ɵɵProvidersFeature([
|
|
376
379
|
{ provide: NG_VALUE_ACCESSOR, useExisting: DrDatePickerComponent, multi: true },
|
|
377
380
|
{ provide: DateAdapter, useClass: CustomDateAdapter },
|
|
378
381
|
{ provide: MAT_DATE_RANGE_SELECTION_STRATEGY, useClass: WeekSelectionStrategy },
|
|
379
382
|
DrDatePickerService,
|
|
380
|
-
]), i0.ɵɵNgOnChangesFeature], decls: 5, vars: 6, consts: [[1, "dr-icon-date", 3, "click"], [4, "ngIf"], [3, "ngModel", "disabled", "placeholder", "readonly", "min", "max", "click"], [1, "range-input", 3, "formGroup", "rangePicker", "dateFilter"], ["matStartDate", "", "formControlName", "start", 3, "drDatePickerFormat", "dateChange"], ["input", ""], ["matEndDate", "", "formControlName", "end", 3, "drDatePickerFormat"], [3, "startAt", "panelClass", "calendarHeaderComponent", "yearSelected", "monthSelected", "opened", "closed"], ["datePicker", ""], [3, "ngModel", "matDatepicker", "matDatepickerFilter", "disabled", "placeholder", "drDatePickerFormat", "readonly", "min", "max", "ngModelChange", "click"], [3, "startAt", "calendarHeaderComponent", "yearSelected", "monthSelected", "opened", "closed"]], template: function DrDatePickerComponent_Template(rf, ctx) { if (rf & 1) {
|
|
383
|
+
]), i0.ɵɵNgOnChangesFeature], decls: 5, vars: 6, consts: [[1, "dr-icon-date", 3, "click"], [4, "ngIf"], [3, "ngModel", "disabled", "placeholder", "readonly", "min", "max", "click"], [1, "range-input", 3, "formGroup", "rangePicker", "dateFilter"], ["matStartDate", "", "formControlName", "start", 3, "drDatePickerFormat", "dateChange"], ["input", ""], ["matEndDate", "", "formControlName", "end", 3, "drDatePickerFormat"], [3, "startAt", "panelClass", "calendarHeaderComponent", "yearSelected", "monthSelected", "opened", "closed"], ["datePicker", ""], [3, "ngModel", "matDatepicker", "matDatepickerFilter", "disabled", "placeholder", "drDatePickerFormat", "readonly", "min", "max", "ngModelChange", "click"], [3, "panelClass", "startAt", "calendarHeaderComponent", "yearSelected", "monthSelected", "opened", "closed"]], template: function DrDatePickerComponent_Template(rf, ctx) { if (rf & 1) {
|
|
381
384
|
i0.ɵɵelementStart(0, "i", 0);
|
|
382
385
|
i0.ɵɵlistener("click", function DrDatePickerComponent_Template_i_click_0_listener() { return ctx.datePicker.open(); });
|
|
383
386
|
i0.ɵɵelementEnd();
|
|
384
387
|
i0.ɵɵtemplate(1, DrDatePickerComponent_ng_container_1_Template, 10, 19, "ng-container", 1);
|
|
385
388
|
i0.ɵɵpipe(2, "async");
|
|
386
|
-
i0.ɵɵtemplate(3, DrDatePickerComponent_ng_container_3_Template, 6,
|
|
389
|
+
i0.ɵɵtemplate(3, DrDatePickerComponent_ng_container_3_Template, 6, 17, "ng-container", 1);
|
|
387
390
|
i0.ɵɵpipe(4, "async");
|
|
388
391
|
} if (rf & 2) {
|
|
389
392
|
i0.ɵɵadvance(1);
|
|
390
393
|
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(2, 2, ctx.datePickerService.timeframe$) === "week");
|
|
391
394
|
i0.ɵɵadvance(2);
|
|
392
395
|
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(4, 4, ctx.datePickerService.timeframe$) !== "week");
|
|
393
|
-
} }, dependencies: [i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.NgModel, i3.FormGroupDirective, i3.FormControlName, i4.NgIf, i5.MatDatepicker, i5.MatDatepickerInput, i5.MatDateRangeInput, i5.MatStartDate, i5.MatEndDate, i5.MatDateRangePicker, i6.DrDatePickerFormatDirective, i4.AsyncPipe], styles: ["[_nghost-%COMP%]{position:relative;width:100%;display:flex;flex-direction:row;min-height:32px;height:32px;font-size:14px;font-family:Poppins,sans-serif;background-color:#fff;border:1px solid #9ea1aa;border-radius:6px;color:#333;overflow:hidden;outline:none;cursor:pointer}[_nghost-%COMP%]:hover{border-color:#9ea1aa}.active[_nghost-%COMP%], [_nghost-%COMP%]:focus-within{border-color:#4646ce!important;color:#333}.disabled[_nghost-%COMP%]{pointer-events:none;border:1px solid #aeabac;background:#f0f1f4;color:#aeabac}.disabled[_nghost-%COMP%]:after{color:#aeabac}.ng-valid.ng-dirty[_nghost-%COMP%]{border-color:#037c5a}.ng-invalid.ng-dirty[_nghost-%COMP%]:not(:focus-within){border-color:#bf1d30!important}.ng-untouched.ng-valid[_nghost-%COMP%]{border-color:#9ea1aa}[_nghost-%COMP%]:after, [_nghost-%COMP%]:before{position:absolute;display:flex;border-color:#6d6e6f transparent transparent;color:#6d6e6f}[_nghost-%COMP%]:after{font-family:DataRails!important;content:\"\\ea17\";font-size:24px;color:#6d6e6f;top:0;bottom:0;right:8px;pointer-events:none;position:absolute;display:flex;align-items:center;justify-content:center}[_nghost-%COMP%] i[_ngcontent-%COMP%]{display:flex;align-items:center;position:absolute;color:#6d6e6f;left:8px;top:0;bottom:0}[_nghost-%COMP%] input[_ngcontent-%COMP%]{display:flex;flex-grow:1;height:100%;border:none;text-align:left;padding-left:35px;padding-right:25px;cursor:pointer!important;outline:none}[_nghost-%COMP%] input.when-quarter[_ngcontent-%COMP%]{position:absolute;visibility:hidden}[_nghost-%COMP%] input[_ngcontent-%COMP%]:disabled{border:none;color:#aeabac;background:transparent}[_nghost-%COMP%] input[_ngcontent-%COMP%]::-webkit-search-decoration, [_nghost-%COMP%] input[_ngcontent-%COMP%]::-webkit-search-cancel-button, [_nghost-%COMP%] input[_ngcontent-%COMP%]::-webkit-search-results-button, [_nghost-%COMP%] input[_ngcontent-%COMP%]::-webkit-search-results-decoration{-webkit-appearance:none}[_nghost-%COMP%] input[_ngcontent-%COMP%]::placeholder{color:#6d6e6f;font-size:14px;line-height:18px}[_nghost-%COMP%] .range-input[_ngcontent-%COMP%]{position:absolute;height:0;width:0;bottom:0;left:0;z-index:-1} .mat-datepicker-popup .dr-week-datepicker{width:386px!important} .mat-datepicker-popup .dr-week-datepicker .mat-calendar-body-in-range:before{background:initial!important} .mat-datepicker-popup .dr-week-datepicker .mat-calendar-body-in-range .mat-calendar-body-selected, .mat-datepicker-popup .dr-week-datepicker .mat-calendar-body-in-range .mat-calendar-body-cell-content{background:#f2f2fb!important;color:#4646ce!important;font-weight:600!important} .mat-datepicker-popup .mat-datepicker-content{margin:7px 0;box-shadow:0 4px 8px 1px #00000040;border-radius:12px!important} .mat-datepicker-popup .mat-datepicker-content button[disabled]{border:inherit;color:inherit;background-color:inherit} .mat-datepicker-popup .mat-datepicker-content button[disabled]:hover{border:inherit} .mat-datepicker-popup .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical), .mat-datepicker-popup .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#fff} .mat-datepicker-popup .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background:#f2f2fb;color:#4646ce;font-weight:600} .mat-datepicker-popup .mat-calendar-body-selected{background-color:#4646ce;color:#f2f2fb;font-weight:600} .mat-datepicker-popup .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:none} .mat-datepicker-popup .mat-button-focus-overlay{background:#f5f5f5} .mat-datepicker-popup .mat-calendar-controls .mat-icon-button:hover .mat-button-focus-overlay{opacity:1!important;background:#f5f5f5;transition:opacity .2s cubic-bezier(.35,0,.25,1)} .mat-datepicker-popup .mat-calendar-controls .mat-calendar-period-button:hover{background:#f5f5f5;transition:background .2s cubic-bezier(.35,0,.25,1)} .mat-datepicker-popup .mat-calendar-table-header th{font-size:14px;font-weight:600;color:#333} .mat-datepicker-popup .mat-calendar-table-header-divider{display:none} .mat-datepicker-popup .mat-calendar-body-label{color:#fff;padding:0} .mat-datepicker-popup .mat-calendar-body>tr[aria-hidden=true]>.mat-calendar-body-label{display:none} .mat-datepicker-popup .mat-calendar-content{display:flex} .mat-datepicker-popup .mat-calendar-content dr-week-selector{flex:0} .mat-datepicker-popup .mat-calendar-content mat-month-view, .mat-datepicker-popup .mat-calendar-content mat-multi-year-view, .mat-datepicker-popup .mat-calendar-content mat-year-view{flex:1}"], changeDetection: 0 }); }
|
|
396
|
+
} }, dependencies: [i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.NgModel, i3.FormGroupDirective, i3.FormControlName, i4.NgIf, i5.MatDatepicker, i5.MatDatepickerInput, i5.MatDateRangeInput, i5.MatStartDate, i5.MatEndDate, i5.MatDateRangePicker, i6.DrDatePickerFormatDirective, i4.AsyncPipe], styles: ["[_nghost-%COMP%]{position:relative;width:100%;display:flex;flex-direction:row;min-height:32px;height:32px;font-size:14px;font-family:Poppins,sans-serif;background-color:#fff;border:1px solid #9ea1aa;border-radius:6px;color:#333;overflow:hidden;outline:none;cursor:pointer}[_nghost-%COMP%]:hover{border-color:#9ea1aa}.active[_nghost-%COMP%], [_nghost-%COMP%]:focus-within{border-color:#4646ce!important;color:#333}.disabled[_nghost-%COMP%]{pointer-events:none;border:1px solid #aeabac;background:#f0f1f4;color:#aeabac}.disabled[_nghost-%COMP%]:after{color:#aeabac}.ng-valid.ng-dirty[_nghost-%COMP%]{border-color:#037c5a}.ng-invalid.ng-dirty[_nghost-%COMP%]:not(:focus-within){border-color:#bf1d30!important}.ng-untouched.ng-valid[_nghost-%COMP%]{border-color:#9ea1aa}[_nghost-%COMP%]:after, [_nghost-%COMP%]:before{position:absolute;display:flex;border-color:#6d6e6f transparent transparent;color:#6d6e6f}[_nghost-%COMP%]:after{font-family:DataRails!important;content:\"\\ea17\";font-size:24px;color:#6d6e6f;top:0;bottom:0;right:8px;pointer-events:none;position:absolute;display:flex;align-items:center;justify-content:center}[_nghost-%COMP%] i[_ngcontent-%COMP%]{display:flex;align-items:center;position:absolute;color:#6d6e6f;left:8px;top:0;bottom:0}[_nghost-%COMP%] input[_ngcontent-%COMP%]{display:flex;flex-grow:1;height:100%;border:none;text-align:left;padding-left:35px;padding-right:25px;cursor:pointer!important;outline:none}[_nghost-%COMP%] input.when-quarter[_ngcontent-%COMP%]{position:absolute;visibility:hidden}[_nghost-%COMP%] input[_ngcontent-%COMP%]:disabled{border:none;color:#aeabac;background:transparent}[_nghost-%COMP%] input[_ngcontent-%COMP%]::-webkit-search-decoration, [_nghost-%COMP%] input[_ngcontent-%COMP%]::-webkit-search-cancel-button, [_nghost-%COMP%] input[_ngcontent-%COMP%]::-webkit-search-results-button, [_nghost-%COMP%] input[_ngcontent-%COMP%]::-webkit-search-results-decoration{-webkit-appearance:none}[_nghost-%COMP%] input[_ngcontent-%COMP%]::placeholder{color:#6d6e6f;font-size:14px;line-height:18px}[_nghost-%COMP%] .range-input[_ngcontent-%COMP%]{position:absolute;height:0;width:0;bottom:0;left:0;z-index:-1} .mat-datepicker-popup .dr-week-datepicker{width:386px!important} .mat-datepicker-popup .dr-week-datepicker .mat-calendar-body-in-range:before{background:initial!important} .mat-datepicker-popup .dr-week-datepicker .mat-calendar-body-in-range .mat-calendar-body-selected, .mat-datepicker-popup .dr-week-datepicker .mat-calendar-body-in-range .mat-calendar-body-cell-content{background:#f2f2fb!important;color:#4646ce!important;font-weight:600!important} .mat-datepicker-popup .mat-datepicker-content{margin:7px 0;box-shadow:0 4px 8px 1px #00000040;border-radius:12px!important} .mat-datepicker-popup .mat-datepicker-content button[disabled]{border:inherit;color:inherit;background-color:inherit} .mat-datepicker-popup .mat-datepicker-content button[disabled]:hover{border:inherit} .mat-datepicker-popup .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical), .mat-datepicker-popup .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#fff} .mat-datepicker-popup .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background:#f2f2fb;color:#4646ce;font-weight:600} .mat-datepicker-popup .mat-calendar-body-selected{background-color:#4646ce;color:#f2f2fb;font-weight:600} .mat-datepicker-popup .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:none} .mat-datepicker-popup .mat-button-focus-overlay{background:#f5f5f5} .mat-datepicker-popup .mat-calendar-controls .mat-icon-button:hover .mat-button-focus-overlay{opacity:1!important;background:#f5f5f5;transition:opacity .2s cubic-bezier(.35,0,.25,1)} .mat-datepicker-popup .mat-calendar-controls .mat-calendar-period-button:hover{background:#f5f5f5;transition:background .2s cubic-bezier(.35,0,.25,1)} .mat-datepicker-popup .mat-calendar-table-header th{font-size:14px;font-weight:600;color:#333} .mat-datepicker-popup .mat-calendar-table-header-divider{display:none} .mat-datepicker-popup .mat-calendar-body-label{color:#fff;padding:0} .mat-datepicker-popup .mat-calendar-body>tr[aria-hidden=true]>.mat-calendar-body-label{display:none} .mat-datepicker-popup .mat-calendar-content{display:flex} .mat-datepicker-popup .mat-calendar-content dr-week-selector{flex:0} .mat-datepicker-popup .mat-calendar-content mat-month-view, .mat-datepicker-popup .mat-calendar-content mat-multi-year-view, .mat-datepicker-popup .mat-calendar-content mat-year-view{flex:1}", ".mat-datepicker-popup .dr-datepicker-dark-theme{background-color:#0c142b;color:#fff;border-radius:12px} .mat-datepicker-popup .dr-datepicker-dark-theme .mat-calendar-body-label{visibility:hidden} .mat-datepicker-popup .dr-datepicker-dark-theme .mat-calendar-body-cell-content, .mat-datepicker-popup .dr-datepicker-dark-theme .mat-calendar-table-header th{color:#fff} .mat-datepicker-popup .dr-datepicker-dark-theme .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical), .mat-datepicker-popup .dr-datepicker-dark-theme .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#373c4c} .mat-datepicker-popup .dr-datepicker-dark-theme .mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border:none;background-color:#1d1d6d;color:#fff} .mat-datepicker-popup .dr-datepicker-dark-theme .dr-quarterly-datepicker .quarter-selector:hover{background:#373c4c!important;color:#fff!important} .mat-datepicker-popup .dr-datepicker-dark-theme .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background:#373c4c;color:#fff} .mat-datepicker-popup .dr-datepicker-dark-theme.dr-week-datepicker .weeks__container{color:#fff} .mat-datepicker-popup .dr-datepicker-dark-theme.dr-week-datepicker .mat-calendar-body-in-range .mat-calendar-body-selected, .mat-datepicker-popup .dr-datepicker-dark-theme.dr-week-datepicker .mat-calendar-body-in-range .mat-calendar-body-cell-content{background-color:#4646ce!important;color:#fff!important} .mat-datepicker-popup .dr-datepicker-dark-theme.dr-week-datepicker .weeks .btn:hover{background:#373c4c!important;color:#fff!important} .mat-datepicker-popup .dr-datepicker-dark-theme .mat-calendar-body-selected{background-color:#4646ce;color:#fff} .mat-datepicker-popup .dr-datepicker-dark-theme .mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:#aeabac} .mat-datepicker-popup .dr-datepicker-dark-theme dr-date-picker_custom-header .dr-date-paging:hover{background-color:transparent} .mat-datepicker-popup .dr-datepicker-dark-theme dr-date-picker_custom-header .dr-date-paging>.dr-icon-arrow-right, .mat-datepicker-popup .dr-datepicker-dark-theme dr-date-picker_custom-header .dr-date-paging>.dr-icon-arrow-left{color:#aeabac} .mat-datepicker-popup .dr-datepicker-dark-theme dr-date-picker_custom-header .dr-date-paging>.dr-icon-arrow-right:hover, .mat-datepicker-popup .dr-datepicker-dark-theme dr-date-picker_custom-header .dr-date-paging>.dr-icon-arrow-left:hover{background:#373c4c;border-radius:12px;cursor:pointer}"], changeDetection: 0 }); }
|
|
394
397
|
}
|
|
395
398
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrDatePickerComponent, [{
|
|
396
399
|
type: Component,
|
|
@@ -399,12 +402,14 @@ export class DrDatePickerComponent {
|
|
|
399
402
|
{ provide: DateAdapter, useClass: CustomDateAdapter },
|
|
400
403
|
{ provide: MAT_DATE_RANGE_SELECTION_STRATEGY, useClass: WeekSelectionStrategy },
|
|
401
404
|
DrDatePickerService,
|
|
402
|
-
], template: "<i class=\"dr-icon-date\" (click)=\"datePicker.open()\"></i>\n\n<ng-container *ngIf=\"(datePickerService.timeframe$ | async) === 'week'\">\n <input\n [attr.id]=\"id\"\n [ngModel]=\"input.value\"\n (click)=\"datePicker.open()\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [readonly]=\"readonly\"\n [min]=\"_min\"\n [max]=\"_max\" />\n\n <mat-date-range-input [formGroup]=\"rangeForm\" [rangePicker]=\"datePicker\" [dateFilter]=\"dateFilter\" class=\"range-input\">\n <input\n matStartDate\n #input\n [drDatePickerFormat]=\"datePickerService.format$ | async\"\n formControlName=\"start\"\n (dateChange)=\"valueChangedInCalendar(rangeForm.value.start)\" />\n <input matEndDate [drDatePickerFormat]=\"datePickerService.format$ | async\" formControlName=\"end\" />\n </mat-date-range-input>\n\n <mat-date-range-picker\n #datePicker\n [startAt]=\"_startAt\"\n [panelClass]=\"'dr-week-datepicker'\"\n [calendarHeaderComponent]=\"customHeader\"\n (yearSelected)=\"chosenPeriodHandler($event, timeframeOption.YEAR, datePicker)\"\n (monthSelected)=\"chosenPeriodHandler($event, timeframeOption.MONTH, datePicker)\"\n (opened)=\"onOpen()\"\n (closed)=\"onCLose()\">\n </mat-date-range-picker>\n</ng-container>\n\n<ng-container *ngIf=\"(datePickerService.timeframe$ | async) !== 'week'\">\n <input\n [attr.id]=\"id\"\n [ngModel]=\"displayValue$ | async\"\n (ngModelChange)=\"valueChangedInCalendar($event)\"\n (click)=\"datePicker.open()\"\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"dateFilter\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [drDatePickerFormat]=\"datePickerService.format$ | async\"\n [readonly]=\"readonly\"\n [min]=\"_min\"\n [max]=\"_max\" />\n\n <mat-datepicker\n #datePicker\n [startAt]=\"_startAt\"\n [calendarHeaderComponent]=\"customHeader\"\n (yearSelected)=\"chosenPeriodHandler($event, timeframeOption.YEAR, datePicker)\"\n (monthSelected)=\"chosenPeriodHandler($event, timeframeOption.MONTH, datePicker)\"\n (opened)=\"onOpen()\"\n (closed)=\"onCLose()\">\n </mat-datepicker>\n</ng-container>\n", styles: [":host{position:relative;width:100%;display:flex;flex-direction:row;min-height:32px;height:32px;font-size:14px;font-family:Poppins,sans-serif;background-color:#fff;border:1px solid #9ea1aa;border-radius:6px;color:#333;overflow:hidden;outline:none;cursor:pointer}:host:hover{border-color:#9ea1aa}:host.active,:host:focus-within{border-color:#4646ce!important;color:#333}:host.disabled{pointer-events:none;border:1px solid #aeabac;background:#f0f1f4;color:#aeabac}:host.disabled:after{color:#aeabac}:host.ng-valid.ng-dirty{border-color:#037c5a}:host.ng-invalid.ng-dirty:not(:focus-within){border-color:#bf1d30!important}:host.ng-untouched.ng-valid{border-color:#9ea1aa}:host:after,:host:before{position:absolute;display:flex;border-color:#6d6e6f transparent transparent;color:#6d6e6f}:host:after{font-family:DataRails!important;content:\"\\ea17\";font-size:24px;color:#6d6e6f;top:0;bottom:0;right:8px;pointer-events:none;position:absolute;display:flex;align-items:center;justify-content:center}:host i{display:flex;align-items:center;position:absolute;color:#6d6e6f;left:8px;top:0;bottom:0}:host input{display:flex;flex-grow:1;height:100%;border:none;text-align:left;padding-left:35px;padding-right:25px;cursor:pointer!important;outline:none}:host input.when-quarter{position:absolute;visibility:hidden}:host input:disabled{border:none;color:#aeabac;background:transparent}:host input::-webkit-search-decoration,:host input::-webkit-search-cancel-button,:host input::-webkit-search-results-button,:host input::-webkit-search-results-decoration{-webkit-appearance:none}:host input::placeholder{color:#6d6e6f;font-size:14px;line-height:18px}:host .range-input{position:absolute;height:0;width:0;bottom:0;left:0;z-index:-1}::ng-deep .mat-datepicker-popup .dr-week-datepicker{width:386px!important}::ng-deep .mat-datepicker-popup .dr-week-datepicker .mat-calendar-body-in-range:before{background:initial!important}::ng-deep .mat-datepicker-popup .dr-week-datepicker .mat-calendar-body-in-range .mat-calendar-body-selected,::ng-deep .mat-datepicker-popup .dr-week-datepicker .mat-calendar-body-in-range .mat-calendar-body-cell-content{background:#f2f2fb!important;color:#4646ce!important;font-weight:600!important}::ng-deep .mat-datepicker-popup .mat-datepicker-content{margin:7px 0;box-shadow:0 4px 8px 1px #00000040;border-radius:12px!important}::ng-deep .mat-datepicker-popup .mat-datepicker-content button[disabled]{border:inherit;color:inherit;background-color:inherit}::ng-deep .mat-datepicker-popup .mat-datepicker-content button[disabled]:hover{border:inherit}::ng-deep .mat-datepicker-popup .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),::ng-deep .mat-datepicker-popup .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#fff}::ng-deep .mat-datepicker-popup .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background:#f2f2fb;color:#4646ce;font-weight:600}::ng-deep .mat-datepicker-popup .mat-calendar-body-selected{background-color:#4646ce;color:#f2f2fb;font-weight:600}::ng-deep .mat-datepicker-popup .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:none}::ng-deep .mat-datepicker-popup .mat-button-focus-overlay{background:#f5f5f5}::ng-deep .mat-datepicker-popup .mat-calendar-controls .mat-icon-button:hover .mat-button-focus-overlay{opacity:1!important;background:#f5f5f5;transition:opacity .2s cubic-bezier(.35,0,.25,1)}::ng-deep .mat-datepicker-popup .mat-calendar-controls .mat-calendar-period-button:hover{background:#f5f5f5;transition:background .2s cubic-bezier(.35,0,.25,1)}::ng-deep .mat-datepicker-popup .mat-calendar-table-header th{font-size:14px;font-weight:600;color:#333}::ng-deep .mat-datepicker-popup .mat-calendar-table-header-divider{display:none}::ng-deep .mat-datepicker-popup .mat-calendar-body-label{color:#fff;padding:0}::ng-deep .mat-datepicker-popup .mat-calendar-body>tr[aria-hidden=true]>.mat-calendar-body-label{display:none}::ng-deep .mat-datepicker-popup .mat-calendar-content{display:flex}::ng-deep .mat-datepicker-popup .mat-calendar-content dr-week-selector{flex:0}::ng-deep .mat-datepicker-popup .mat-calendar-content mat-month-view,::ng-deep .mat-datepicker-popup .mat-calendar-content mat-multi-year-view,::ng-deep .mat-datepicker-popup .mat-calendar-content mat-year-view{flex:1}\n"] }]
|
|
405
|
+
], template: "<i class=\"dr-icon-date\" (click)=\"datePicker.open()\"></i>\n\n<ng-container *ngIf=\"(datePickerService.timeframe$ | async) === 'week'\">\n <input\n [attr.id]=\"id\"\n [ngModel]=\"input.value\"\n (click)=\"datePicker.open()\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [readonly]=\"readonly\"\n [min]=\"_min\"\n [max]=\"_max\" />\n\n <mat-date-range-input [formGroup]=\"rangeForm\" [rangePicker]=\"datePicker\" [dateFilter]=\"dateFilter\" class=\"range-input\">\n <input\n matStartDate\n #input\n [drDatePickerFormat]=\"datePickerService.format$ | async\"\n formControlName=\"start\"\n (dateChange)=\"valueChangedInCalendar(rangeForm.value.start)\" />\n <input matEndDate [drDatePickerFormat]=\"datePickerService.format$ | async\" formControlName=\"end\" />\n </mat-date-range-input>\n\n <mat-date-range-picker\n #datePicker\n [startAt]=\"_startAt\"\n [panelClass]=\"'dr-week-datepicker' + (panelClass ? ' ' + panelClass : '')\"\n [calendarHeaderComponent]=\"customHeader\"\n (yearSelected)=\"chosenPeriodHandler($event, timeframeOption.YEAR, datePicker)\"\n (monthSelected)=\"chosenPeriodHandler($event, timeframeOption.MONTH, datePicker)\"\n (opened)=\"onOpen()\"\n (closed)=\"onCLose()\">\n </mat-date-range-picker>\n</ng-container>\n\n<ng-container *ngIf=\"(datePickerService.timeframe$ | async) !== 'week'\">\n <input\n [attr.id]=\"id\"\n [ngModel]=\"displayValue$ | async\"\n (ngModelChange)=\"valueChangedInCalendar($event)\"\n (click)=\"datePicker.open()\"\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"dateFilter\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [drDatePickerFormat]=\"datePickerService.format$ | async\"\n [readonly]=\"readonly\"\n [min]=\"_min\"\n [max]=\"_max\" />\n\n <mat-datepicker\n #datePicker\n [panelClass]=\"panelClass\"\n [startAt]=\"_startAt\"\n [calendarHeaderComponent]=\"customHeader\"\n (yearSelected)=\"chosenPeriodHandler($event, timeframeOption.YEAR, datePicker)\"\n (monthSelected)=\"chosenPeriodHandler($event, timeframeOption.MONTH, datePicker)\"\n (opened)=\"onOpen()\"\n (closed)=\"onCLose()\">\n </mat-datepicker>\n</ng-container>\n", styles: [":host{position:relative;width:100%;display:flex;flex-direction:row;min-height:32px;height:32px;font-size:14px;font-family:Poppins,sans-serif;background-color:#fff;border:1px solid #9ea1aa;border-radius:6px;color:#333;overflow:hidden;outline:none;cursor:pointer}:host:hover{border-color:#9ea1aa}:host.active,:host:focus-within{border-color:#4646ce!important;color:#333}:host.disabled{pointer-events:none;border:1px solid #aeabac;background:#f0f1f4;color:#aeabac}:host.disabled:after{color:#aeabac}:host.ng-valid.ng-dirty{border-color:#037c5a}:host.ng-invalid.ng-dirty:not(:focus-within){border-color:#bf1d30!important}:host.ng-untouched.ng-valid{border-color:#9ea1aa}:host:after,:host:before{position:absolute;display:flex;border-color:#6d6e6f transparent transparent;color:#6d6e6f}:host:after{font-family:DataRails!important;content:\"\\ea17\";font-size:24px;color:#6d6e6f;top:0;bottom:0;right:8px;pointer-events:none;position:absolute;display:flex;align-items:center;justify-content:center}:host i{display:flex;align-items:center;position:absolute;color:#6d6e6f;left:8px;top:0;bottom:0}:host input{display:flex;flex-grow:1;height:100%;border:none;text-align:left;padding-left:35px;padding-right:25px;cursor:pointer!important;outline:none}:host input.when-quarter{position:absolute;visibility:hidden}:host input:disabled{border:none;color:#aeabac;background:transparent}:host input::-webkit-search-decoration,:host input::-webkit-search-cancel-button,:host input::-webkit-search-results-button,:host input::-webkit-search-results-decoration{-webkit-appearance:none}:host input::placeholder{color:#6d6e6f;font-size:14px;line-height:18px}:host .range-input{position:absolute;height:0;width:0;bottom:0;left:0;z-index:-1}::ng-deep .mat-datepicker-popup .dr-week-datepicker{width:386px!important}::ng-deep .mat-datepicker-popup .dr-week-datepicker .mat-calendar-body-in-range:before{background:initial!important}::ng-deep .mat-datepicker-popup .dr-week-datepicker .mat-calendar-body-in-range .mat-calendar-body-selected,::ng-deep .mat-datepicker-popup .dr-week-datepicker .mat-calendar-body-in-range .mat-calendar-body-cell-content{background:#f2f2fb!important;color:#4646ce!important;font-weight:600!important}::ng-deep .mat-datepicker-popup .mat-datepicker-content{margin:7px 0;box-shadow:0 4px 8px 1px #00000040;border-radius:12px!important}::ng-deep .mat-datepicker-popup .mat-datepicker-content button[disabled]{border:inherit;color:inherit;background-color:inherit}::ng-deep .mat-datepicker-popup .mat-datepicker-content button[disabled]:hover{border:inherit}::ng-deep .mat-datepicker-popup .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),::ng-deep .mat-datepicker-popup .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#fff}::ng-deep .mat-datepicker-popup .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background:#f2f2fb;color:#4646ce;font-weight:600}::ng-deep .mat-datepicker-popup .mat-calendar-body-selected{background-color:#4646ce;color:#f2f2fb;font-weight:600}::ng-deep .mat-datepicker-popup .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:none}::ng-deep .mat-datepicker-popup .mat-button-focus-overlay{background:#f5f5f5}::ng-deep .mat-datepicker-popup .mat-calendar-controls .mat-icon-button:hover .mat-button-focus-overlay{opacity:1!important;background:#f5f5f5;transition:opacity .2s cubic-bezier(.35,0,.25,1)}::ng-deep .mat-datepicker-popup .mat-calendar-controls .mat-calendar-period-button:hover{background:#f5f5f5;transition:background .2s cubic-bezier(.35,0,.25,1)}::ng-deep .mat-datepicker-popup .mat-calendar-table-header th{font-size:14px;font-weight:600;color:#333}::ng-deep .mat-datepicker-popup .mat-calendar-table-header-divider{display:none}::ng-deep .mat-datepicker-popup .mat-calendar-body-label{color:#fff;padding:0}::ng-deep .mat-datepicker-popup .mat-calendar-body>tr[aria-hidden=true]>.mat-calendar-body-label{display:none}::ng-deep .mat-datepicker-popup .mat-calendar-content{display:flex}::ng-deep .mat-datepicker-popup .mat-calendar-content dr-week-selector{flex:0}::ng-deep .mat-datepicker-popup .mat-calendar-content mat-month-view,::ng-deep .mat-datepicker-popup .mat-calendar-content mat-multi-year-view,::ng-deep .mat-datepicker-popup .mat-calendar-content mat-year-view{flex:1}\n", "::ng-deep .mat-datepicker-popup .dr-datepicker-dark-theme{background-color:#0c142b;color:#fff;border-radius:12px}::ng-deep .mat-datepicker-popup .dr-datepicker-dark-theme .mat-calendar-body-label{visibility:hidden}::ng-deep .mat-datepicker-popup .dr-datepicker-dark-theme .mat-calendar-body-cell-content,::ng-deep .mat-datepicker-popup .dr-datepicker-dark-theme .mat-calendar-table-header th{color:#fff}::ng-deep .mat-datepicker-popup .dr-datepicker-dark-theme .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),::ng-deep .mat-datepicker-popup .dr-datepicker-dark-theme .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#373c4c}::ng-deep .mat-datepicker-popup .dr-datepicker-dark-theme .mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border:none;background-color:#1d1d6d;color:#fff}::ng-deep .mat-datepicker-popup .dr-datepicker-dark-theme .dr-quarterly-datepicker .quarter-selector:hover{background:#373c4c!important;color:#fff!important}::ng-deep .mat-datepicker-popup .dr-datepicker-dark-theme .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background:#373c4c;color:#fff}::ng-deep .mat-datepicker-popup .dr-datepicker-dark-theme.dr-week-datepicker .weeks__container{color:#fff}::ng-deep .mat-datepicker-popup .dr-datepicker-dark-theme.dr-week-datepicker .mat-calendar-body-in-range .mat-calendar-body-selected,::ng-deep .mat-datepicker-popup .dr-datepicker-dark-theme.dr-week-datepicker .mat-calendar-body-in-range .mat-calendar-body-cell-content{background-color:#4646ce!important;color:#fff!important}::ng-deep .mat-datepicker-popup .dr-datepicker-dark-theme.dr-week-datepicker .weeks .btn:hover{background:#373c4c!important;color:#fff!important}::ng-deep .mat-datepicker-popup .dr-datepicker-dark-theme .mat-calendar-body-selected{background-color:#4646ce;color:#fff}::ng-deep .mat-datepicker-popup .dr-datepicker-dark-theme .mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:#aeabac}::ng-deep .mat-datepicker-popup .dr-datepicker-dark-theme dr-date-picker_custom-header .dr-date-paging:hover{background-color:transparent}::ng-deep .mat-datepicker-popup .dr-datepicker-dark-theme dr-date-picker_custom-header .dr-date-paging>.dr-icon-arrow-right,::ng-deep .mat-datepicker-popup .dr-datepicker-dark-theme dr-date-picker_custom-header .dr-date-paging>.dr-icon-arrow-left{color:#aeabac}::ng-deep .mat-datepicker-popup .dr-datepicker-dark-theme dr-date-picker_custom-header .dr-date-paging>.dr-icon-arrow-right:hover,::ng-deep .mat-datepicker-popup .dr-datepicker-dark-theme dr-date-picker_custom-header .dr-date-paging>.dr-icon-arrow-left:hover{background:#373c4c;border-radius:12px;cursor:pointer}\n"] }]
|
|
403
406
|
}], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.DateAdapter }, { type: i2.DrDatePickerService }]; }, { id: [{
|
|
404
407
|
type: Input
|
|
405
408
|
}], hostId: [{
|
|
406
409
|
type: HostBinding,
|
|
407
410
|
args: ['attr.id']
|
|
411
|
+
}], useDarkTheme: [{
|
|
412
|
+
type: Input
|
|
408
413
|
}], format: [{
|
|
409
414
|
type: Input
|
|
410
415
|
}], min: [{
|
|
@@ -437,4 +442,4 @@ export class DrDatePickerComponent {
|
|
|
437
442
|
type: HostBinding,
|
|
438
443
|
args: ['class.active']
|
|
439
444
|
}] }); })();
|
|
440
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItaW5wdXRzL2RhdGUtcGlja2Vycy9kci1kYXRlLXBpY2tlci9kci1kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1pbnB1dHMvZGF0ZS1waWNrZXJzL2RyLWRhdGUtcGlja2VyL2RyLWRhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFJTCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXJHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDM0gsT0FBTyxFQUlILGlDQUFpQyxHQUNw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REQsS0FBSztZQUdOLE1BQU07a0JBREwsV0FBVzttQkFBQyxTQUFTO1lBT3RCLE1BQU07a0JBREwsS0FBSztZQUlGLEdBQUc7a0JBRE4sS0FBSztZQU1GLEdBQUc7a0JBRE4sS0FBSztZQVVGLE9BQU87a0JBRFYsS0FBSztZQVFHLGNBQWM7a0JBQXRCLEtBQUs7WUFFRyxXQUFXO2tCQUFuQixLQUFLO1lBRWtDLFFBQVE7a0JBQS9DLEtBQUs7O2tCQUFJLFdBQVc7bUJBQUMsZ0JBQWdCO1lBRTdCLHdCQUF3QjtrQkFBaEMsS0FBSztZQUVHLGNBQWM7a0JBQXRCLEtBQUs7WUFFRyxnQkFBZ0I7a0JBQXhCLEtBQUs7WUFHRyxnQ0FBZ0M7a0JBQXhDLEtBQUs7WUFJSyxVQUFVO2tCQURwQixTQUFTO21CQUFDLFlBQVk7WUFXbkIsTUFBTTtrQkFEVCxXQUFXO21CQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQnVpbGRlciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDYWxlbmRhclZpZXcsIERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbiwgVGltZWZyYW1lT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2RhdGVQaWNrZXInO1xuaW1wb3J0IHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBEckRhdGVQaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZHItZGF0ZS1waWNrZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEckRhdGVQaWNrZXJDdXN0b21IZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9kci1kYXRlLXBpY2tlcl9jdXN0b20taGVhZGVyL2RyLWRhdGUtcGlja2VyX2N1c3RvbS1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgTWF0Q2FsZW5kYXJWaWV3LFxuICAgIE1hdERhdGVwaWNrZXIsXG4gICAgTWF0RGF0ZVJhbmdlUGlja2VyLFxuICAgIE1BVF9EQVRFX1JBTkdFX1NFTEVDVElPTl9TVFJBVEVHWSxcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBNb21lbnREYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyJztcbmltcG9ydCB7IFdlZWtTZWxlY3Rpb25TdHJhdGVneSB9IGZyb20gJy4uL3NlcnZpY2VzL3dlZWstc2VsZWN0aW9uLXN0cmF0ZWd5JztcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tRGF0ZUFkYXB0ZXIgZXh0ZW5kcyBNb21lbnREYXRlQWRhcHRlciB7XG4gICAgZ2V0Rmlyc3REYXlPZldlZWsoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RyLWRhdGUtcGlja2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHItZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RyLWRhdGUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBEckRhdGVQaWNrZXJDb21wb25lbnQsIG11bHRpOiB0cnVlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBDdXN0b21EYXRlQWRhcHRlciB9LFxuICAgICAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX1JBTkdFX1NFTEVDVElPTl9TVFJBVEVHWSwgdXNlQ2xhc3M6IFdlZWtTZWxlY3Rpb25TdHJhdGVneSB9LFxuICAgICAgICBEckRhdGVQaWNrZXJTZXJ2aWNlLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIERyRGF0ZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KClcbiAgICBpZD86IHN0cmluZztcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIGhvc3RJZCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29udHJvbHMgZGF0ZSBwaWNrZXIgZm9ybWF0IGlucHV0IGxhYmVsLCBjYWxlbmRhciBzdGFydCB2aWV3IGFuZCB0aW1lZnJhbWVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZvcm1hdDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgbWluKG1pbkRhdGU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9taW4gPSBtaW5EYXRlID8gbW9tZW50LnVuaXgobWluRGF0ZSkudXRjKCkgOiBudWxsO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1heChtYXhEYXRlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbWF4RGF0ZU1vbWVudCA9IG1heERhdGUgPyBtb21lbnQudW5peChtYXhEYXRlKS51dGMoKSA6IG51bGw7XG4gICAgICAgIHRoaXMuX21heCA9IG1heERhdGVNb21lbnQ7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UubWF4RGF0ZSA9IG1heERhdGVNb21lbnQ7XG4gICAgfVxuXG4gICAgX3N0YXJ0QXQ6IE1vbWVudCB8IG51bGwgPSBudWxsO1xuICAgIC8qKiBUaGUgZGF0ZSB0byBvcGVuIHRoZSBjYWxlbmRhciB0byBpbml0aWFsbHkuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc3RhcnRBdCh2YWx1ZTogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9zdGFydEF0ID0gdmFsdWUgPyBtb21lbnQudW5peCh2YWx1ZSkudXRjKCkgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRvIHRyYW5zZm9ybSBkYXRlLCB0YWtpbmcgZW5kLCBzdGFydCwgbWlkZGxlIG9mIHBlcmlvZCAoaS5lLiBzZXQgbWlkZGxlIG9mIG1vbnRoIGlmIHRpbWVmcmFtZT0nbW9udGgnKVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHBlcmlvZFBvc2l0aW9uOiBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24gPSBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24uREVGQVVMVDtcblxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ1NlbGVjdC4uLic7XG5cbiAgICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2NsYXNzLmRpc2FibGVkJykgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBmaXNjYWxZZWFyTW9udGhzTW9kaWZpZXIgPSAwO1xuXG4gICAgQElucHV0KCkgZmlzY2FsWWVhckJhY2sgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGRhdGVwaWNrZXJGaWx0ZXI6IChtb21lbnQ6IE1vbWVudCkgPT4gYm9vbGVhbjtcblxuICAgIC8vIFRPRE86IEFkZGVkIGFzIHRlbXAgc29sdXRpb24gaW5zdGVhZCBvZiBGRiwgd2lsbCByZW1vdmUgb25jZSBzdGFibGUgLSBodHRwczovL2RhdGFyYWlsc3RlYW0uYXRsYXNzaWFuLm5ldC9icm93c2UvRFItMzUzOTRcbiAgICBASW5wdXQoKSBmaXhGb3JOb3JtYWxpemVkVmFsdWVXaXRoTWF4RGF0ZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBfZGF0ZVBpY2tlcjogTWF0RGF0ZXBpY2tlcjxhbnk+IHwgTWF0RGF0ZVJhbmdlUGlja2VyPGFueT47XG4gICAgQFZpZXdDaGlsZCgnZGF0ZVBpY2tlcicpXG4gICAgcHVibGljIHNldCBkYXRlUGlja2VyKHZhbHVlOiBNYXREYXRlcGlja2VyPGFueT4gfCBNYXREYXRlUmFuZ2VQaWNrZXI8YW55Pikge1xuICAgICAgICB0aGlzLl9kYXRlUGlja2VyID0gdmFsdWU7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZGF0ZVBpY2tlckluc3RhbmNlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXIuc3RhcnRWaWV3ID0gdGhpcy5jYWxlbmRhclZpZXdzVGltZWZyYW1lTWFwcGluZ1t0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZV07XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgZGF0ZVBpY2tlcigpOiBNYXREYXRlcGlja2VyPGFueT4gfCBNYXREYXRlUmFuZ2VQaWNrZXI8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuYWN0aXZlJylcbiAgICBnZXQgYWN0aXZlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcGVuZWQkLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhbGVuZGFyVmlld3NUaW1lZnJhbWVNYXBwaW5nOiBhbnkgPSB7XG4gICAgICAgIHllYXI6ICdtdWx0aS15ZWFyJyxcbiAgICAgICAgbW9udGg6ICd5ZWFyJyxcbiAgICAgICAgcXVhcnRlcjogJ25vbmUnLFxuICAgICAgICBkYXk6ICdtb250aCcsXG4gICAgICAgIHdlZWs6ICdtb250aCcsXG4gICAgfSBhcyBjb25zdDtcblxuICAgIHB1YmxpYyByZWFkb25seSBjdXN0b21IZWFkZXIgPSBEckRhdGVQaWNrZXJDdXN0b21IZWFkZXJDb21wb25lbnQ7XG4gICAgcHVibGljIHJlYWRvbmx5ID0gdHJ1ZTtcbiAgICBwdWJsaWMgX21pbjogTW9tZW50O1xuICAgIHB1YmxpYyBfbWF4OiBNb21lbnQ7XG4gICAgcHVibGljIHJlYWRvbmx5IHRpbWVmcmFtZU9wdGlvbiA9IFRpbWVmcmFtZU9wdGlvbjtcblxuICAgIHByb3RlY3RlZCBnZXQgaW5uZXJWYWx1ZSgpOiBNb21lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRlUGlja2VyU2VydmljZS5pbm5lclZhbHVlO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgc2V0IGlubmVyVmFsdWUodmFsdWU6IE1vbWVudCkge1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlubmVyVmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGlzcGxheVZhbHVlJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlubmVyVmFsdWUkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICAgIF0pLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aChbbnVsbCwgbnVsbF0pLFxuICAgICAgICBtYXAoKFt2YWx1ZSwgdGltZWZyYW1lXTogW01vbWVudCwgVGltZWZyYW1lT3B0aW9uXSkgPT4gdGhpcy50cmFuc2Zvcm1EaXNwbGF5ZWRWYWx1ZSh2YWx1ZSwgdGltZWZyYW1lKSksXG4gICAgICAgIHRhcCgodmFsdWU6IE1vbWVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlICYmIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuY2FsZW5kYXJJbnN0YW5jZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuY2FsZW5kYXJJbnN0YW5jZS5hY3RpdmVEYXRlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5jYWxlbmRhckluc3RhbmNlLnNlbGVjdGVkID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSksXG4gICAgKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3BlbmVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG5cbiAgICByZWFkb25seSByYW5nZUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgc3RhcnQ6IHRoaXMuZmIuY29udHJvbDxNb21lbnQgfCBudWxsPihudWxsKSxcbiAgICAgICAgZW5kOiB0aGlzLmZiLmNvbnRyb2w8TW9tZW50IHwgbnVsbD4obnVsbCksXG4gICAgfSk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByb3RlY3RlZCBkYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXI8YW55PixcbiAgICAgICAgcHVibGljIGRhdGVQaWNrZXJTZXJ2aWNlOiBEckRhdGVQaWNrZXJTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBkYXRlUGlja2VyU2VydmljZS51cGRhdGVkUXVhcnRlciQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRhdGVQaWNrZXJTZXJ2aWNlLndlZWtTZWxlY3Rpb25DaGFuZ2UkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoeyBzdGFydCwgZW5kIH0pID0+IHtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VGb3JtLnBhdGNoVmFsdWUoeyBzdGFydCwgZW5kIH0pO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKHN0YXJ0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pbm5lclZhbHVlJC5waXBlKGZpbHRlcihCb29sZWFuKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VGb3JtLnBhdGNoVmFsdWUoeyBzdGFydDogdmFsdWUuY2xvbmUoKS5zdGFydE9mKCdpc29XZWVrJyksIGVuZDogdmFsdWUuY2xvbmUoKS5lbmRPZignaXNvV2VlaycpIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBkYXRlRm9ybWF0Rm4gPSB0aGlzLmRhdGVBZGFwdGVyLmZvcm1hdDtcbiAgICAgICAgdGhpcy5kYXRlQWRhcHRlci5mb3JtYXQgPSAoZGF0ZTogTW9tZW50LCBkaXNwbGF5Rm9ybWF0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGxldCBkYXRlVG9Gb3JtYXQgPSBkYXRlLmNsb25lKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1RpbWVmcmFtZURlcGVuZGluZ09uRlkodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUpKSB7XG4gICAgICAgICAgICAgICAgZGF0ZVRvRm9ybWF0ID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5zdWJ0cmFjdEZpc2NhbFllYXJNb250aHNGcm9tRGF0ZShkYXRlVG9Gb3JtYXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRhdGVGb3JtYXRGbi5jYWxsKHRoaXMuZGF0ZUFkYXB0ZXIsIGRhdGVUb0Zvcm1hdCwgZGlzcGxheUZvcm1hdCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmZpc2NhbFllYXJNb250aHNNb2RpZmllciA9IHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyO1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmZpc2NhbFllYXJCYWNrID0gdGhpcy5maXNjYWxZZWFyQmFjaztcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5kYXRlcGlja2VyRmlsdGVyID0gdGhpcy5kYXRlRmlsdGVyO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmZvcm1hdD8uY3VycmVudFZhbHVlICYmIGNoYW5nZXMuZm9ybWF0LmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlcy5mb3JtYXQucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGb3JtYXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLmZpc2NhbFllYXJNb250aHNNb2RpZmllcikge1xuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5maXNjYWxZZWFyTW9udGhzTW9kaWZpZXIgPSB0aGlzLmZpc2NhbFllYXJNb250aHNNb2RpZmllcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLmZpc2NhbFllYXJCYWNrKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmZpc2NhbFllYXJCYWNrID0gdGhpcy5maXNjYWxZZWFyQmFjaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0aW5nIGNvbXBvbmVudCBpbm5lciB2YWx1ZSBhY2NvcmRpbmcgdG8gZGF0ZXBpY2tlciB0aW1lZnJhbWUgKGRheSwgbW9udGggZXRjLilcbiAgICAgKiBhbmQgZGF0ZSBwb3NpdGlvbiBpbiBwZXJpb2QgKHN0YXJ0LCBlbmQsIG1pZGRsZSlcbiAgICAgKi9cbiAgICB0cnlUb05vcm1hbGl6ZVRpbWVmcmFtZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGltZWZyYW1lID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWU7XG4gICAgICAgIGxldCBub3JtYWxpemVkVmFsdWUgPSB0aGlzLmlubmVyVmFsdWUuY2xvbmUoKTtcbiAgICAgICAgY29uc3QgdW5pdCA9IHRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLldFRUsgPyAnaXNvV2VlaycgOiB0aW1lZnJhbWU7XG4gICAgICAgIHN3aXRjaCAodGhpcy5wZXJpb2RQb3NpdGlvbikge1xuICAgICAgICAgICAgY2FzZSBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24uU1RBUlRfT0ZfUEVSSU9EOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLlFVQVJURVIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zZXRTdGFydE9mQ3VycmVudFF1YXJ0ZXIobm9ybWFsaXplZFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uWUVBUikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnNldFN0YXJ0T2ZRdWFydGVyKG5vcm1hbGl6ZWRWYWx1ZSwgMSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlLnN0YXJ0T2YodW5pdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24uRU5EX09GX1BFUklPRDpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5RVUFSVEVSKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0RW5kT2ZDdXJyZW50UXVhcnRlcihub3JtYWxpemVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5ZRUFSKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0RW5kT2ZRdWFydGVyKG5vcm1hbGl6ZWRWYWx1ZSwgNCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlLmVuZE9mKHVuaXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRGF0ZVBpY2tlclBlcmlvZFBvc2l0aW9uLk1JRERMRV9PRl9QRVJJT0Q6XG4gICAgICAgICAgICAgICAgbGV0IGVuZE9mUGVyaW9kOiBNb21lbnQ7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uUVVBUlRFUikge1xuICAgICAgICAgICAgICAgICAgICBlbmRPZlBlcmlvZCA9IG5vcm1hbGl6ZWRWYWx1ZS5jbG9uZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnNldFN0YXJ0T2ZDdXJyZW50UXVhcnRlcihub3JtYWxpemVkVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnNldEVuZE9mQ3VycmVudFF1YXJ0ZXIoZW5kT2ZQZXJpb2QpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5ZRUFSKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZE9mUGVyaW9kID0gbm9ybWFsaXplZFZhbHVlLmNsb25lKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0U3RhcnRPZlF1YXJ0ZXIobm9ybWFsaXplZFZhbHVlLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zZXRFbmRPZlF1YXJ0ZXIoZW5kT2ZQZXJpb2QsIDQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZS5zdGFydE9mKHVuaXQpO1xuICAgICAgICAgICAgICAgICAgICBlbmRPZlBlcmlvZCA9IG5vcm1hbGl6ZWRWYWx1ZS5jbG9uZSgpLmVuZE9mKHVuaXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBkaWZmID0gZW5kT2ZQZXJpb2QuZGlmZihub3JtYWxpemVkVmFsdWUsICdzZWNvbmRzJyk7XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlLmFkZChkaWZmIC8gMiArIDEsICdzZWNvbmRzJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZS5zdGFydE9mKHVuaXQpLnNldCgnaG91cnMnLCAxMik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZml4Rm9yTm9ybWFsaXplZFZhbHVlV2l0aE1heERhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1pblVuaXggPSBNYXRoLm1pbihub3JtYWxpemVkVmFsdWUudW5peCgpLCB0aGlzLl9tYXgudW5peCgpKTtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IG1vbWVudC51bml4KG1pblVuaXgpLnV0YygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaW5uZXJWYWx1ZSA9IG5vcm1hbGl6ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hvc2VuUGVyaW9kSGFuZGxlcihjaG9zZW5EYXRlOiBNb21lbnQsIHRpbWVmcmFtZTogVGltZWZyYW1lT3B0aW9uLCBwaWNrZXI6IE1hdERhdGVwaWNrZXI8YW55Pikge1xuICAgICAgICBpZiAodGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uWUVBUikge1xuICAgICAgICAgICAgY2hvc2VuRGF0ZSA9IHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuYWRkRmlzY2FsWWVhck1vbnRoc1RvRGF0ZShjaG9zZW5EYXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLlFVQVJURVIgJiYgdGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uWUVBUikge1xuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5jYWxlbmRhckluc3RhbmNlLmN1cnJlbnRWaWV3ID0gQ2FsZW5kYXJWaWV3LkZPUl9RVUFSVEVSUyBhcyBNYXRDYWxlbmRhclZpZXc7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmNhbGVuZGFySW5zdGFuY2UuYWN0aXZlRGF0ZSA9IGNob3NlbkRhdGU7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IHRpbWVmcmFtZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKGNob3NlbkRhdGUpO1xuICAgICAgICAgICAgcGlja2VyLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXR0aW5nIHZhbHVlIGZyb20gb3V0c2lkZSBvZiBjb21wb25lbnQgdmlhIG5nTW9kZWwgb3IgZm9ybUNvbnRyb2wgdXBkYXRlc1xuICAgICAqL1xuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgLypcbiAgICAgICAgICogV2UgbmVlZCBrZWVwIGxvY2FsIHRpbWVzdGFtcCBmb3IgRWxlY3Ryb24gQXBwbGljYXRpb25cbiAgICAgICAgICogSXNzdWUgaW4gZWxlY3Ryb246IHdoZW4gd2Ugc2VsZWN0IGRhdGUsIGRhdGUgc2VsZWN0IHdpdGggLTEgKGlmIHdlJ3JlIGNob29zaW5nIDIwMjMsIG91dHB1dCB3aWxsIGJlIDIwMjIpXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBjb252ZXJ0ZWRWYWx1ZSA9IChkb2N1bWVudCBhcyBhbnkpLmlzX2VsZWN0cm9uID8gbW9tZW50LnVuaXgodmFsdWUpIDogbW9tZW50LnVuaXgodmFsdWUpLnV0YygpO1xuICAgICAgICB0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZSA/IGNvbnZlcnRlZFZhbHVlIDogbnVsbDtcbiAgICAgICAgaWYgKHRoaXMuaW5uZXJWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy50cnlUb05vcm1hbGl6ZVRpbWVmcmFtZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XG4gICAgcHVibGljIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLy8gU2hvdWxkIGJlIGFzIGFycm93IGZ1bmN0aW9uIHRvIGF2b2lkIGxvc2Ugc2NvcGVcbiAgICBwdWJsaWMgZGF0ZUZpbHRlciA9IChtb21lbnQ6IE1vbWVudCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5kYXRlcGlja2VyRmlsdGVyICYmIG1vbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZXBpY2tlckZpbHRlcihtb21lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcblxuICAgIHB1YmxpYyB2YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKHZhbDogTW9tZW50KSB7XG4gICAgICAgIGlmICh2YWwgIT09IHRoaXMuaW5uZXJWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVUb1NldCA9IHZhbD8uY2xvbmUoKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZVRvU2V0ICYmIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNUaW1lZnJhbWVEZXBlbmRpbmdPbkZZKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc3VidHJhY3RGaXNjYWxZZWFyU2hpZnRGb3JZZWFyKHZhbHVlVG9TZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUZyb21Nb21lbnQodmFsdWVUb1NldCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgaW5uZXIgdmFsdWUgZnJvbSBNb21lbnQgYW5kIHByb3BhZ2F0ZVxuICAgICAqXG4gICAgICogQHBhcmFtIG1vbWVudERhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc2V0VmFsdWVGcm9tTW9tZW50KG1vbWVudERhdGU6IE1vbWVudCkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKG1vbWVudERhdGUudW5peCgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgaW5uZXIgdmFsdWUgZnJvbSB0aW1lc3RhbXAgYW5kIHByb3BhZ2F0ZVxuICAgICAqXG4gICAgICogQHBhcmFtIHRpbWVzdGFtcFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzZXRWYWx1ZSh0aW1lc3RhbXA6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyBpc1ZhbHVlVXBkYXRpbmcgaXMgcmVxdWlyZWQgZm9yIG1hbmFnZSBjbGlja3Mgb24gc2FtZSBkYXRlczogaWYgaXNWYWx1ZVVwZGF0aW5nIC0gdHJ1ZSB0aGVuXG4gICAgICAgIC8vIGRheXMgYXJlIGRpZmZlcmVudCBhbmQgc3Vic2NyaXB0aW9uIG9uIGNhbGVuZGFyIGRheSBjbGljayBhY3Rpb24gd29uJ3QgdHJpZ2dlciBBY2Nlc3NvciBuZ01vZGVsIHVwZGF0ZVxuICAgICAgICAvLyBvbmUgbW9yZSB0aW1lXG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNWYWx1ZVVwZGF0aW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRpbWVzdGFtcCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLmlubmVyVmFsdWUudW5peCgpKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlzVmFsdWVVcGRhdGluZyA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdHJhbnNmb3JtRGlzcGxheWVkVmFsdWUodmFsdWU6IE1vbWVudCwgdGltZWZyYW1lOiBUaW1lZnJhbWVPcHRpb24pOiBNb21lbnQge1xuICAgICAgICBjb25zdCB2YWx1ZVRvUmV0dXJuID0gdmFsdWU/LmNsb25lKCk7XG4gICAgICAgIGlmICh2YWx1ZVRvUmV0dXJuICYmIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNUaW1lZnJhbWVEZXBlbmRpbmdPbkZZKHRpbWVmcmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuYWRkRmlzY2FsWWVhclNoaWZ0Rm9yWWVhcih2YWx1ZVRvUmV0dXJuKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWVUb1JldHVybjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlRm9ybWF0KCk6IHZvaWQge1xuICAgICAgICBsZXQgdGltZWZyYW1lO1xuICAgICAgICBsZXQgZm9ybWF0ID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRDb25maWd1cmVkRm9ybWF0KHRoaXMuZm9ybWF0IGFzIFRpbWVmcmFtZU9wdGlvbik7XG4gICAgICAgIGlmIChmb3JtYXQpIHtcbiAgICAgICAgICAgIHRpbWVmcmFtZSA9IHRoaXMuZm9ybWF0IGFzIFRpbWVmcmFtZU9wdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1hdCA9IHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uubm9ybWFsaXplVmFsdWUodGhpcy5mb3JtYXQpO1xuICAgICAgICAgICAgdGltZWZyYW1lID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRUaW1lZnJhbWUoZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9IHRpbWVmcmFtZTtcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5mb3JtYXQkLm5leHQoZm9ybWF0KTtcbiAgICB9XG5cbiAgICBvbk9wZW4oKSB7XG4gICAgICAgIHRoaXMub3BlbmVkJC5uZXh0KHRydWUpO1xuICAgIH1cblxuICAgIG9uQ0xvc2UoKSB7XG4gICAgICAgIGlmICh0aGlzLmlubmVyVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vbk5vcm1hbGl6ZWRUaW1lc3RhbXAgPSB0aGlzLmlubmVyVmFsdWUudW5peCgpO1xuICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKG5vbk5vcm1hbGl6ZWRUaW1lc3RhbXApO1xuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZFZhbHVlID0gdGhpcy5pbm5lclZhbHVlLnVuaXgoKTtcbiAgICAgICAgICAgIGlmIChub3JtYWxpemVkVmFsdWUgIT09IG5vbk5vcm1hbGl6ZWRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sobm9ybWFsaXplZFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wZW5lZCQubmV4dChmYWxzZSk7XG4gICAgfVxufVxuIiwiPGkgY2xhc3M9XCJkci1pY29uLWRhdGVcIiAoY2xpY2spPVwiZGF0ZVBpY2tlci5vcGVuKClcIj48L2k+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIoZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lJCB8IGFzeW5jKSA9PT0gJ3dlZWsnXCI+XG4gICAgPGlucHV0XG4gICAgICAgIFthdHRyLmlkXT1cImlkXCJcbiAgICAgICAgW25nTW9kZWxdPVwiaW5wdXQudmFsdWVcIlxuICAgICAgICAoY2xpY2spPVwiZGF0ZVBpY2tlci5vcGVuKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICBbbWluXT1cIl9taW5cIlxuICAgICAgICBbbWF4XT1cIl9tYXhcIiAvPlxuXG4gICAgPG1hdC1kYXRlLXJhbmdlLWlucHV0IFtmb3JtR3JvdXBdPVwicmFuZ2VGb3JtXCIgW3JhbmdlUGlja2VyXT1cImRhdGVQaWNrZXJcIiBbZGF0ZUZpbHRlcl09XCJkYXRlRmlsdGVyXCIgY2xhc3M9XCJyYW5nZS1pbnB1dFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIG1hdFN0YXJ0RGF0ZVxuICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICBbZHJEYXRlUGlja2VyRm9ybWF0XT1cImRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdCQgfCBhc3luY1wiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdGFydFwiXG4gICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKHJhbmdlRm9ybS52YWx1ZS5zdGFydClcIiAvPlxuICAgICAgICA8aW5wdXQgbWF0RW5kRGF0ZSBbZHJEYXRlUGlja2VyRm9ybWF0XT1cImRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdCQgfCBhc3luY1wiIGZvcm1Db250cm9sTmFtZT1cImVuZFwiIC8+XG4gICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cblxuICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXJcbiAgICAgICAgI2RhdGVQaWNrZXJcbiAgICAgICAgW3N0YXJ0QXRdPVwiX3N0YXJ0QXRcIlxuICAgICAgICBbcGFuZWxDbGFzc109XCInZHItd2Vlay1kYXRlcGlja2VyJ1wiXG4gICAgICAgIFtjYWxlbmRhckhlYWRlckNvbXBvbmVudF09XCJjdXN0b21IZWFkZXJcIlxuICAgICAgICAoeWVhclNlbGVjdGVkKT1cImNob3NlblBlcmlvZEhhbmRsZXIoJGV2ZW50LCB0aW1lZnJhbWVPcHRpb24uWUVBUiwgZGF0ZVBpY2tlcilcIlxuICAgICAgICAobW9udGhTZWxlY3RlZCk9XCJjaG9zZW5QZXJpb2RIYW5kbGVyKCRldmVudCwgdGltZWZyYW1lT3B0aW9uLk1PTlRILCBkYXRlUGlja2VyKVwiXG4gICAgICAgIChvcGVuZWQpPVwib25PcGVuKClcIlxuICAgICAgICAoY2xvc2VkKT1cIm9uQ0xvc2UoKVwiPlxuICAgIDwvbWF0LWRhdGUtcmFuZ2UtcGlja2VyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIoZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lJCB8IGFzeW5jKSAhPT0gJ3dlZWsnXCI+XG4gICAgPGlucHV0XG4gICAgICAgIFthdHRyLmlkXT1cImlkXCJcbiAgICAgICAgW25nTW9kZWxdPVwiZGlzcGxheVZhbHVlJCB8IGFzeW5jXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVDaGFuZ2VkSW5DYWxlbmRhcigkZXZlbnQpXCJcbiAgICAgICAgKGNsaWNrKT1cImRhdGVQaWNrZXIub3BlbigpXCJcbiAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiZGF0ZVBpY2tlclwiXG4gICAgICAgIFttYXREYXRlcGlja2VyRmlsdGVyXT1cImRhdGVGaWx0ZXJcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbZHJEYXRlUGlja2VyRm9ybWF0XT1cImRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdCQgfCBhc3luY1wiXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgIFttaW5dPVwiX21pblwiXG4gICAgICAgIFttYXhdPVwiX21heFwiIC8+XG5cbiAgICA8bWF0LWRhdGVwaWNrZXJcbiAgICAgICAgI2RhdGVQaWNrZXJcbiAgICAgICAgW3N0YXJ0QXRdPVwiX3N0YXJ0QXRcIlxuICAgICAgICBbY2FsZW5kYXJIZWFkZXJDb21wb25lbnRdPVwiY3VzdG9tSGVhZGVyXCJcbiAgICAgICAgKHllYXJTZWxlY3RlZCk9XCJjaG9zZW5QZXJpb2RIYW5kbGVyKCRldmVudCwgdGltZWZyYW1lT3B0aW9uLllFQVIsIGRhdGVQaWNrZXIpXCJcbiAgICAgICAgKG1vbnRoU2VsZWN0ZWQpPVwiY2hvc2VuUGVyaW9kSGFuZGxlcigkZXZlbnQsIHRpbWVmcmFtZU9wdGlvbi5NT05USCwgZGF0ZVBpY2tlcilcIlxuICAgICAgICAob3BlbmVkKT1cIm9uT3BlbigpXCJcbiAgICAgICAgKGNsb3NlZCk9XCJvbkNMb3NlKClcIj5cbiAgICA8L21hdC1kYXRlcGlja2VyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
445
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItaW5wdXRzL2RhdGUtcGlja2Vycy9kci1kYXRlLXBpY2tlci9kci1kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1pbnB1dHMvZGF0ZS1waWNrZXJzL2RyLWRhdGUtcGlja2VyL2RyLWRhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFJTCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXJHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDM0gsT0FBTyxFQUlILGlDQUFpQyxHQUNw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VyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTtvQkFDckQsRUFBRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFO29CQUMvRSxtQkFBbUI7aUJBQ3RCO2dJQUlELEVBQUU7a0JBREQsS0FBSztZQUdOLE1BQU07a0JBREwsV0FBVzttQkFBQyxTQUFTO1lBTWxCLFlBQVk7a0JBRGYsS0FBSztZQVNOLE1BQU07a0JBREwsS0FBSztZQUlGLEdBQUc7a0JBRE4sS0FBSztZQU1GLEdBQUc7a0JBRE4sS0FBSztZQVVGLE9BQU87a0JBRFYsS0FBSztZQVFHLGNBQWM7a0JBQXRCLEtBQUs7WUFFRyxXQUFXO2tCQUFuQixLQUFLO1lBRWtDLFFBQVE7a0JBQS9DLEtBQUs7O2tCQUFJLFdBQVc7bUJBQUMsZ0JBQWdCO1lBRTdCLHdCQUF3QjtrQkFBaEMsS0FBSztZQUVHLGNBQWM7a0JBQXRCLEtBQUs7WUFFRyxnQkFBZ0I7a0JBQXhCLEtBQUs7WUFHRyxnQ0FBZ0M7a0JBQXhDLEtBQUs7WUFJSyxVQUFVO2tCQURwQixTQUFTO21CQUFDLFlBQVk7WUFXbkIsTUFBTTtrQkFEVCxXQUFXO21CQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQnVpbGRlciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDYWxlbmRhclZpZXcsIERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbiwgVGltZWZyYW1lT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2RhdGVQaWNrZXInO1xuaW1wb3J0IHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBEckRhdGVQaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZHItZGF0ZS1waWNrZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEckRhdGVQaWNrZXJDdXN0b21IZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9kci1kYXRlLXBpY2tlcl9jdXN0b20taGVhZGVyL2RyLWRhdGUtcGlja2VyX2N1c3RvbS1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgTWF0Q2FsZW5kYXJWaWV3LFxuICAgIE1hdERhdGVwaWNrZXIsXG4gICAgTWF0RGF0ZVJhbmdlUGlja2VyLFxuICAgIE1BVF9EQVRFX1JBTkdFX1NFTEVDVElPTl9TVFJBVEVHWSxcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBNb21lbnREYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyJztcbmltcG9ydCB7IFdlZWtTZWxlY3Rpb25TdHJhdGVneSB9IGZyb20gJy4uL3NlcnZpY2VzL3dlZWstc2VsZWN0aW9uLXN0cmF0ZWd5JztcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tRGF0ZUFkYXB0ZXIgZXh0ZW5kcyBNb21lbnREYXRlQWRhcHRlciB7XG4gICAgZ2V0Rmlyc3REYXlPZldlZWsoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RyLWRhdGUtcGlja2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHItZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RyLWRhdGUtcGlja2VyLmNvbXBvbmVudC5zY3NzJywgJy4vZHItZGF0ZS1waWNrZXItZGFyay5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogRHJEYXRlUGlja2VyQ29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogQ3VzdG9tRGF0ZUFkYXB0ZXIgfSxcbiAgICAgICAgeyBwcm92aWRlOiBNQVRfREFURV9SQU5HRV9TRUxFQ1RJT05fU1RSQVRFR1ksIHVzZUNsYXNzOiBXZWVrU2VsZWN0aW9uU3RyYXRlZ3kgfSxcbiAgICAgICAgRHJEYXRlUGlja2VyU2VydmljZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEckRhdGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpXG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBob3N0SWQgPSBudWxsO1xuXG4gICAgcGFuZWxDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgdXNlRGFya1RoZW1lKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMucGFuZWxDbGFzcyA9IHZhbHVlID8gJ2RyLWRhdGVwaWNrZXItZGFyay10aGVtZScgOiAnJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29udHJvbHMgZGF0ZSBwaWNrZXIgZm9ybWF0IGlucHV0IGxhYmVsLCBjYWxlbmRhciBzdGFydCB2aWV3IGFuZCB0aW1lZnJhbWVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZvcm1hdDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgbWluKG1pbkRhdGU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9taW4gPSBtaW5EYXRlID8gbW9tZW50LnVuaXgobWluRGF0ZSkudXRjKCkgOiBudWxsO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1heChtYXhEYXRlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbWF4RGF0ZU1vbWVudCA9IG1heERhdGUgPyBtb21lbnQudW5peChtYXhEYXRlKS51dGMoKSA6IG51bGw7XG4gICAgICAgIHRoaXMuX21heCA9IG1heERhdGVNb21lbnQ7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UubWF4RGF0ZSA9IG1heERhdGVNb21lbnQ7XG4gICAgfVxuXG4gICAgX3N0YXJ0QXQ6IE1vbWVudCB8IG51bGwgPSBudWxsO1xuICAgIC8qKiBUaGUgZGF0ZSB0byBvcGVuIHRoZSBjYWxlbmRhciB0byBpbml0aWFsbHkuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc3RhcnRBdCh2YWx1ZTogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9zdGFydEF0ID0gdmFsdWUgPyBtb21lbnQudW5peCh2YWx1ZSkudXRjKCkgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRvIHRyYW5zZm9ybSBkYXRlLCB0YWtpbmcgZW5kLCBzdGFydCwgbWlkZGxlIG9mIHBlcmlvZCAoaS5lLiBzZXQgbWlkZGxlIG9mIG1vbnRoIGlmIHRpbWVmcmFtZT0nbW9udGgnKVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHBlcmlvZFBvc2l0aW9uOiBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24gPSBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24uREVGQVVMVDtcblxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ1NlbGVjdC4uLic7XG5cbiAgICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2NsYXNzLmRpc2FibGVkJykgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBmaXNjYWxZZWFyTW9udGhzTW9kaWZpZXIgPSAwO1xuXG4gICAgQElucHV0KCkgZmlzY2FsWWVhckJhY2sgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGRhdGVwaWNrZXJGaWx0ZXI6IChtb21lbnQ6IE1vbWVudCkgPT4gYm9vbGVhbjtcblxuICAgIC8vIFRPRE86IEFkZGVkIGFzIHRlbXAgc29sdXRpb24gaW5zdGVhZCBvZiBGRiwgd2lsbCByZW1vdmUgb25jZSBzdGFibGUgLSBodHRwczovL2RhdGFyYWlsc3RlYW0uYXRsYXNzaWFuLm5ldC9icm93c2UvRFItMzUzOTRcbiAgICBASW5wdXQoKSBmaXhGb3JOb3JtYWxpemVkVmFsdWVXaXRoTWF4RGF0ZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBfZGF0ZVBpY2tlcjogTWF0RGF0ZXBpY2tlcjxhbnk+IHwgTWF0RGF0ZVJhbmdlUGlja2VyPGFueT47XG4gICAgQFZpZXdDaGlsZCgnZGF0ZVBpY2tlcicpXG4gICAgcHVibGljIHNldCBkYXRlUGlja2VyKHZhbHVlOiBNYXREYXRlcGlja2VyPGFueT4gfCBNYXREYXRlUmFuZ2VQaWNrZXI8YW55Pikge1xuICAgICAgICB0aGlzLl9kYXRlUGlja2VyID0gdmFsdWU7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZGF0ZVBpY2tlckluc3RhbmNlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXIuc3RhcnRWaWV3ID0gdGhpcy5jYWxlbmRhclZpZXdzVGltZWZyYW1lTWFwcGluZ1t0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZV07XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgZGF0ZVBpY2tlcigpOiBNYXREYXRlcGlja2VyPGFueT4gfCBNYXREYXRlUmFuZ2VQaWNrZXI8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuYWN0aXZlJylcbiAgICBnZXQgYWN0aXZlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcGVuZWQkLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhbGVuZGFyVmlld3NUaW1lZnJhbWVNYXBwaW5nOiBhbnkgPSB7XG4gICAgICAgIHllYXI6ICdtdWx0aS15ZWFyJyxcbiAgICAgICAgbW9udGg6ICd5ZWFyJyxcbiAgICAgICAgcXVhcnRlcjogJ25vbmUnLFxuICAgICAgICBkYXk6ICdtb250aCcsXG4gICAgICAgIHdlZWs6ICdtb250aCcsXG4gICAgfSBhcyBjb25zdDtcblxuICAgIHB1YmxpYyByZWFkb25seSBjdXN0b21IZWFkZXIgPSBEckRhdGVQaWNrZXJDdXN0b21IZWFkZXJDb21wb25lbnQ7XG4gICAgcHVibGljIHJlYWRvbmx5ID0gdHJ1ZTtcbiAgICBwdWJsaWMgX21pbjogTW9tZW50O1xuICAgIHB1YmxpYyBfbWF4OiBNb21lbnQ7XG4gICAgcHVibGljIHJlYWRvbmx5IHRpbWVmcmFtZU9wdGlvbiA9IFRpbWVmcmFtZU9wdGlvbjtcblxuICAgIHByb3RlY3RlZCBnZXQgaW5uZXJWYWx1ZSgpOiBNb21lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRlUGlja2VyU2VydmljZS5pbm5lclZhbHVlO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgc2V0IGlubmVyVmFsdWUodmFsdWU6IE1vbWVudCkge1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlubmVyVmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGlzcGxheVZhbHVlJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlubmVyVmFsdWUkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICAgIF0pLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aChbbnVsbCwgbnVsbF0pLFxuICAgICAgICBtYXAoKFt2YWx1ZSwgdGltZWZyYW1lXTogW01vbWVudCwgVGltZWZyYW1lT3B0aW9uXSkgPT4gdGhpcy50cmFuc2Zvcm1EaXNwbGF5ZWRWYWx1ZSh2YWx1ZSwgdGltZWZyYW1lKSksXG4gICAgICAgIHRhcCgodmFsdWU6IE1vbWVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlICYmIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuY2FsZW5kYXJJbnN0YW5jZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuY2FsZW5kYXJJbnN0YW5jZS5hY3RpdmVEYXRlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5jYWxlbmRhckluc3RhbmNlLnNlbGVjdGVkID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSksXG4gICAgKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3BlbmVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG5cbiAgICByZWFkb25seSByYW5nZUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgc3RhcnQ6IHRoaXMuZmIuY29udHJvbDxNb21lbnQgfCBudWxsPihudWxsKSxcbiAgICAgICAgZW5kOiB0aGlzLmZiLmNvbnRyb2w8TW9tZW50IHwgbnVsbD4obnVsbCksXG4gICAgfSk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByb3RlY3RlZCBkYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXI8YW55PixcbiAgICAgICAgcHVibGljIGRhdGVQaWNrZXJTZXJ2aWNlOiBEckRhdGVQaWNrZXJTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBkYXRlUGlja2VyU2VydmljZS51cGRhdGVkUXVhcnRlciQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRhdGVQaWNrZXJTZXJ2aWNlLndlZWtTZWxlY3Rpb25DaGFuZ2UkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoeyBzdGFydCwgZW5kIH0pID0+IHtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VGb3JtLnBhdGNoVmFsdWUoeyBzdGFydCwgZW5kIH0pO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKHN0YXJ0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pbm5lclZhbHVlJC5waXBlKGZpbHRlcihCb29sZWFuKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VGb3JtLnBhdGNoVmFsdWUoeyBzdGFydDogdmFsdWUuY2xvbmUoKS5zdGFydE9mKCdpc29XZWVrJyksIGVuZDogdmFsdWUuY2xvbmUoKS5lbmRPZignaXNvV2VlaycpIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBkYXRlRm9ybWF0Rm4gPSB0aGlzLmRhdGVBZGFwdGVyLmZvcm1hdDtcbiAgICAgICAgdGhpcy5kYXRlQWRhcHRlci5mb3JtYXQgPSAoZGF0ZTogTW9tZW50LCBkaXNwbGF5Rm9ybWF0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGxldCBkYXRlVG9Gb3JtYXQgPSBkYXRlLmNsb25lKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1RpbWVmcmFtZURlcGVuZGluZ09uRlkodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUpKSB7XG4gICAgICAgICAgICAgICAgZGF0ZVRvRm9ybWF0ID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5zdWJ0cmFjdEZpc2NhbFllYXJNb250aHNGcm9tRGF0ZShkYXRlVG9Gb3JtYXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRhdGVGb3JtYXRGbi5jYWxsKHRoaXMuZGF0ZUFkYXB0ZXIsIGRhdGVUb0Zvcm1hdCwgZGlzcGxheUZvcm1hdCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmZpc2NhbFllYXJNb250aHNNb2RpZmllciA9IHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyO1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmZpc2NhbFllYXJCYWNrID0gdGhpcy5maXNjYWxZZWFyQmFjaztcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5kYXRlcGlja2VyRmlsdGVyID0gdGhpcy5kYXRlRmlsdGVyO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmZvcm1hdD8uY3VycmVudFZhbHVlICYmIGNoYW5nZXMuZm9ybWF0LmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlcy5mb3JtYXQucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGb3JtYXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLmZpc2NhbFllYXJNb250aHNNb2RpZmllcikge1xuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5maXNjYWxZZWFyTW9udGhzTW9kaWZpZXIgPSB0aGlzLmZpc2NhbFllYXJNb250aHNNb2RpZmllcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLmZpc2NhbFllYXJCYWNrKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmZpc2NhbFllYXJCYWNrID0gdGhpcy5maXNjYWxZZWFyQmFjaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0aW5nIGNvbXBvbmVudCBpbm5lciB2YWx1ZSBhY2NvcmRpbmcgdG8gZGF0ZXBpY2tlciB0aW1lZnJhbWUgKGRheSwgbW9udGggZXRjLilcbiAgICAgKiBhbmQgZGF0ZSBwb3NpdGlvbiBpbiBwZXJpb2QgKHN0YXJ0LCBlbmQsIG1pZGRsZSlcbiAgICAgKi9cbiAgICB0cnlUb05vcm1hbGl6ZVRpbWVmcmFtZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGltZWZyYW1lID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWU7XG4gICAgICAgIGxldCBub3JtYWxpemVkVmFsdWUgPSB0aGlzLmlubmVyVmFsdWUuY2xvbmUoKTtcbiAgICAgICAgY29uc3QgdW5pdCA9IHRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLldFRUsgPyAnaXNvV2VlaycgOiB0aW1lZnJhbWU7XG4gICAgICAgIHN3aXRjaCAodGhpcy5wZXJpb2RQb3NpdGlvbikge1xuICAgICAgICAgICAgY2FzZSBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24uU1RBUlRfT0ZfUEVSSU9EOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLlFVQVJURVIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zZXRTdGFydE9mQ3VycmVudFF1YXJ0ZXIobm9ybWFsaXplZFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uWUVBUikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnNldFN0YXJ0T2ZRdWFydGVyKG5vcm1hbGl6ZWRWYWx1ZSwgMSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlLnN0YXJ0T2YodW5pdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24uRU5EX09GX1BFUklPRDpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5RVUFSVEVSKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0RW5kT2ZDdXJyZW50UXVhcnRlcihub3JtYWxpemVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5ZRUFSKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0RW5kT2ZRdWFydGVyKG5vcm1hbGl6ZWRWYWx1ZSwgNCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlLmVuZE9mKHVuaXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRGF0ZVBpY2tlclBlcmlvZFBvc2l0aW9uLk1JRERMRV9PRl9QRVJJT0Q6XG4gICAgICAgICAgICAgICAgbGV0IGVuZE9mUGVyaW9kOiBNb21lbnQ7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uUVVBUlRFUikge1xuICAgICAgICAgICAgICAgICAgICBlbmRPZlBlcmlvZCA9IG5vcm1hbGl6ZWRWYWx1ZS5jbG9uZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnNldFN0YXJ0T2ZDdXJyZW50UXVhcnRlcihub3JtYWxpemVkVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnNldEVuZE9mQ3VycmVudFF1YXJ0ZXIoZW5kT2ZQZXJpb2QpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5ZRUFSKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZE9mUGVyaW9kID0gbm9ybWFsaXplZFZhbHVlLmNsb25lKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0U3RhcnRPZlF1YXJ0ZXIobm9ybWFsaXplZFZhbHVlLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zZXRFbmRPZlF1YXJ0ZXIoZW5kT2ZQZXJpb2QsIDQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZS5zdGFydE9mKHVuaXQpO1xuICAgICAgICAgICAgICAgICAgICBlbmRPZlBlcmlvZCA9IG5vcm1hbGl6ZWRWYWx1ZS5jbG9uZSgpLmVuZE9mKHVuaXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBkaWZmID0gZW5kT2ZQZXJpb2QuZGlmZihub3JtYWxpemVkVmFsdWUsICdzZWNvbmRzJyk7XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlLmFkZChkaWZmIC8gMiArIDEsICdzZWNvbmRzJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZS5zdGFydE9mKHVuaXQpLnNldCgnaG91cnMnLCAxMik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZml4Rm9yTm9ybWFsaXplZFZhbHVlV2l0aE1heERhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1pblVuaXggPSBNYXRoLm1pbihub3JtYWxpemVkVmFsdWUudW5peCgpLCB0aGlzLl9tYXgudW5peCgpKTtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IG1vbWVudC51bml4KG1pblVuaXgpLnV0YygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaW5uZXJWYWx1ZSA9IG5vcm1hbGl6ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hvc2VuUGVyaW9kSGFuZGxlcihjaG9zZW5EYXRlOiBNb21lbnQsIHRpbWVmcmFtZTogVGltZWZyYW1lT3B0aW9uLCBwaWNrZXI6IE1hdERhdGVwaWNrZXI8YW55Pikge1xuICAgICAgICBpZiAodGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uWUVBUikge1xuICAgICAgICAgICAgY2hvc2VuRGF0ZSA9IHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuYWRkRmlzY2FsWWVhck1vbnRoc1RvRGF0ZShjaG9zZW5EYXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLlFVQVJURVIgJiYgdGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uWUVBUikge1xuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5jYWxlbmRhckluc3RhbmNlLmN1cnJlbnRWaWV3ID0gQ2FsZW5kYXJWaWV3LkZPUl9RVUFSVEVSUyBhcyBNYXRDYWxlbmRhclZpZXc7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmNhbGVuZGFySW5zdGFuY2UuYWN0aXZlRGF0ZSA9IGNob3NlbkRhdGU7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IHRpbWVmcmFtZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKGNob3NlbkRhdGUpO1xuICAgICAgICAgICAgcGlja2VyLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXR0aW5nIHZhbHVlIGZyb20gb3V0c2lkZSBvZiBjb21wb25lbnQgdmlhIG5nTW9kZWwgb3IgZm9ybUNvbnRyb2wgdXBkYXRlc1xuICAgICAqL1xuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgLypcbiAgICAgICAgICogV2UgbmVlZCBrZWVwIGxvY2FsIHRpbWVzdGFtcCBmb3IgRWxlY3Ryb24gQXBwbGljYXRpb25cbiAgICAgICAgICogSXNzdWUgaW4gZWxlY3Ryb246IHdoZW4gd2Ugc2VsZWN0IGRhdGUsIGRhdGUgc2VsZWN0IHdpdGggLTEgKGlmIHdlJ3JlIGNob29zaW5nIDIwMjMsIG91dHB1dCB3aWxsIGJlIDIwMjIpXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBjb252ZXJ0ZWRWYWx1ZSA9IChkb2N1bWVudCBhcyBhbnkpLmlzX2VsZWN0cm9uID8gbW9tZW50LnVuaXgodmFsdWUpIDogbW9tZW50LnVuaXgodmFsdWUpLnV0YygpO1xuICAgICAgICB0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZSA/IGNvbnZlcnRlZFZhbHVlIDogbnVsbDtcbiAgICAgICAgaWYgKHRoaXMuaW5uZXJWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy50cnlUb05vcm1hbGl6ZVRpbWVmcmFtZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XG4gICAgcHVibGljIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLy8gU2hvdWxkIGJlIGFzIGFycm93IGZ1bmN0aW9uIHRvIGF2b2lkIGxvc2Ugc2NvcGVcbiAgICBwdWJsaWMgZGF0ZUZpbHRlciA9IChtb21lbnQ6IE1vbWVudCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5kYXRlcGlja2VyRmlsdGVyICYmIG1vbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZXBpY2tlckZpbHRlcihtb21lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcblxuICAgIHB1YmxpYyB2YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKHZhbDogTW9tZW50KSB7XG4gICAgICAgIGlmICh2YWwgIT09IHRoaXMuaW5uZXJWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVUb1NldCA9IHZhbD8uY2xvbmUoKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZVRvU2V0ICYmIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNUaW1lZnJhbWVEZXBlbmRpbmdPbkZZKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc3VidHJhY3RGaXNjYWxZZWFyU2hpZnRGb3JZZWFyKHZhbHVlVG9TZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUZyb21Nb21lbnQodmFsdWVUb1NldCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgaW5uZXIgdmFsdWUgZnJvbSBNb21lbnQgYW5kIHByb3BhZ2F0ZVxuICAgICAqXG4gICAgICogQHBhcmFtIG1vbWVudERhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc2V0VmFsdWVGcm9tTW9tZW50KG1vbWVudERhdGU6IE1vbWVudCkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKG1vbWVudERhdGUudW5peCgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgaW5uZXIgdmFsdWUgZnJvbSB0aW1lc3RhbXAgYW5kIHByb3BhZ2F0ZVxuICAgICAqXG4gICAgICogQHBhcmFtIHRpbWVzdGFtcFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzZXRWYWx1ZSh0aW1lc3RhbXA6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyBpc1ZhbHVlVXBkYXRpbmcgaXMgcmVxdWlyZWQgZm9yIG1hbmFnZSBjbGlja3Mgb24gc2FtZSBkYXRlczogaWYgaXNWYWx1ZVVwZGF0aW5nIC0gdHJ1ZSB0aGVuXG4gICAgICAgIC8vIGRheXMgYXJlIGRpZmZlcmVudCBhbmQgc3Vic2NyaXB0aW9uIG9uIGNhbGVuZGFyIGRheSBjbGljayBhY3Rpb24gd29uJ3QgdHJpZ2dlciBBY2Nlc3NvciBuZ01vZGVsIHVwZGF0ZVxuICAgICAgICAvLyBvbmUgbW9yZSB0aW1lXG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNWYWx1ZVVwZGF0aW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRpbWVzdGFtcCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLmlubmVyVmFsdWUudW5peCgpKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlzVmFsdWVVcGRhdGluZyA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdHJhbnNmb3JtRGlzcGxheWVkVmFsdWUodmFsdWU6IE1vbWVudCwgdGltZWZyYW1lOiBUaW1lZnJhbWVPcHRpb24pOiBNb21lbnQge1xuICAgICAgICBjb25zdCB2YWx1ZVRvUmV0dXJuID0gdmFsdWU/LmNsb25lKCk7XG4gICAgICAgIGlmICh2YWx1ZVRvUmV0dXJuICYmIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNUaW1lZnJhbWVEZXBlbmRpbmdPbkZZKHRpbWVmcmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuYWRkRmlzY2FsWWVhclNoaWZ0Rm9yWWVhcih2YWx1ZVRvUmV0dXJuKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWVUb1JldHVybjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlRm9ybWF0KCk6IHZvaWQge1xuICAgICAgICBsZXQgdGltZWZyYW1lO1xuICAgICAgICBsZXQgZm9ybWF0ID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRDb25maWd1cmVkRm9ybWF0KHRoaXMuZm9ybWF0IGFzIFRpbWVmcmFtZU9wdGlvbik7XG4gICAgICAgIGlmIChmb3JtYXQpIHtcbiAgICAgICAgICAgIHRpbWVmcmFtZSA9IHRoaXMuZm9ybWF0IGFzIFRpbWVmcmFtZU9wdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1hdCA9IHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uubm9ybWFsaXplVmFsdWUodGhpcy5mb3JtYXQpO1xuICAgICAgICAgICAgdGltZWZyYW1lID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRUaW1lZnJhbWUoZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9IHRpbWVmcmFtZTtcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5mb3JtYXQkLm5leHQoZm9ybWF0KTtcbiAgICB9XG5cbiAgICBvbk9wZW4oKSB7XG4gICAgICAgIHRoaXMub3BlbmVkJC5uZXh0KHRydWUpO1xuICAgIH1cblxuICAgIG9uQ0xvc2UoKSB7XG4gICAgICAgIGlmICh0aGlzLmlubmVyVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vbk5vcm1hbGl6ZWRUaW1lc3RhbXAgPSB0aGlzLmlubmVyVmFsdWUudW5peCgpO1xuICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKG5vbk5vcm1hbGl6ZWRUaW1lc3RhbXApO1xuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZFZhbHVlID0gdGhpcy5pbm5lclZhbHVlLnVuaXgoKTtcbiAgICAgICAgICAgIGlmIChub3JtYWxpemVkVmFsdWUgIT09IG5vbk5vcm1hbGl6ZWRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sobm9ybWFsaXplZFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wZW5lZCQubmV4dChmYWxzZSk7XG4gICAgfVxufVxuIiwiPGkgY2xhc3M9XCJkci1pY29uLWRhdGVcIiAoY2xpY2spPVwiZGF0ZVBpY2tlci5vcGVuKClcIj48L2k+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIoZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lJCB8IGFzeW5jKSA9PT0gJ3dlZWsnXCI+XG4gICAgPGlucHV0XG4gICAgICAgIFthdHRyLmlkXT1cImlkXCJcbiAgICAgICAgW25nTW9kZWxdPVwiaW5wdXQudmFsdWVcIlxuICAgICAgICAoY2xpY2spPVwiZGF0ZVBpY2tlci5vcGVuKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICBbbWluXT1cIl9taW5cIlxuICAgICAgICBbbWF4XT1cIl9tYXhcIiAvPlxuXG4gICAgPG1hdC1kYXRlLXJhbmdlLWlucHV0IFtmb3JtR3JvdXBdPVwicmFuZ2VGb3JtXCIgW3JhbmdlUGlja2VyXT1cImRhdGVQaWNrZXJcIiBbZGF0ZUZpbHRlcl09XCJkYXRlRmlsdGVyXCIgY2xhc3M9XCJyYW5nZS1pbnB1dFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIG1hdFN0YXJ0RGF0ZVxuICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICBbZHJEYXRlUGlja2VyRm9ybWF0XT1cImRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdCQgfCBhc3luY1wiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdGFydFwiXG4gICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKHJhbmdlRm9ybS52YWx1ZS5zdGFydClcIiAvPlxuICAgICAgICA8aW5wdXQgbWF0RW5kRGF0ZSBbZHJEYXRlUGlja2VyRm9ybWF0XT1cImRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdCQgfCBhc3luY1wiIGZvcm1Db250cm9sTmFtZT1cImVuZFwiIC8+XG4gICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cblxuICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXJcbiAgICAgICAgI2RhdGVQaWNrZXJcbiAgICAgICAgW3N0YXJ0QXRdPVwiX3N0YXJ0QXRcIlxuICAgICAgICBbcGFuZWxDbGFzc109XCInZHItd2Vlay1kYXRlcGlja2VyJyArIChwYW5lbENsYXNzID8gJyAnICsgcGFuZWxDbGFzcyA6ICcnKVwiXG4gICAgICAgIFtjYWxlbmRhckhlYWRlckNvbXBvbmVudF09XCJjdXN0b21IZWFkZXJcIlxuICAgICAgICAoeWVhclNlbGVjdGVkKT1cImNob3NlblBlcmlvZEhhbmRsZXIoJGV2ZW50LCB0aW1lZnJhbWVPcHRpb24uWUVBUiwgZGF0ZVBpY2tlcilcIlxuICAgICAgICAobW9udGhTZWxlY3RlZCk9XCJjaG9zZW5QZXJpb2RIYW5kbGVyKCRldmVudCwgdGltZWZyYW1lT3B0aW9uLk1PTlRILCBkYXRlUGlja2VyKVwiXG4gICAgICAgIChvcGVuZWQpPVwib25PcGVuKClcIlxuICAgICAgICAoY2xvc2VkKT1cIm9uQ0xvc2UoKVwiPlxuICAgIDwvbWF0LWRhdGUtcmFuZ2UtcGlja2VyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIoZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lJCB8IGFzeW5jKSAhPT0gJ3dlZWsnXCI+XG4gICAgPGlucHV0XG4gICAgICAgIFthdHRyLmlkXT1cImlkXCJcbiAgICAgICAgW25nTW9kZWxdPVwiZGlzcGxheVZhbHVlJCB8IGFzeW5jXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVDaGFuZ2VkSW5DYWxlbmRhcigkZXZlbnQpXCJcbiAgICAgICAgKGNsaWNrKT1cImRhdGVQaWNrZXIub3BlbigpXCJcbiAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiZGF0ZVBpY2tlclwiXG4gICAgICAgIFttYXREYXRlcGlja2VyRmlsdGVyXT1cImRhdGVGaWx0ZXJcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbZHJEYXRlUGlja2VyRm9ybWF0XT1cImRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdCQgfCBhc3luY1wiXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgIFttaW5dPVwiX21pblwiXG4gICAgICAgIFttYXhdPVwiX21heFwiIC8+XG5cbiAgICA8bWF0LWRhdGVwaWNrZXJcbiAgICAgICAgI2RhdGVQaWNrZXJcbiAgICAgICAgW3BhbmVsQ2xhc3NdPVwicGFuZWxDbGFzc1wiXG4gICAgICAgIFtzdGFydEF0XT1cIl9zdGFydEF0XCJcbiAgICAgICAgW2NhbGVuZGFySGVhZGVyQ29tcG9uZW50XT1cImN1c3RvbUhlYWRlclwiXG4gICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwiY2hvc2VuUGVyaW9kSGFuZGxlcigkZXZlbnQsIHRpbWVmcmFtZU9wdGlvbi5ZRUFSLCBkYXRlUGlja2VyKVwiXG4gICAgICAgIChtb250aFNlbGVjdGVkKT1cImNob3NlblBlcmlvZEhhbmRsZXIoJGV2ZW50LCB0aW1lZnJhbWVPcHRpb24uTU9OVEgsIGRhdGVQaWNrZXIpXCJcbiAgICAgICAgKG9wZW5lZCk9XCJvbk9wZW4oKVwiXG4gICAgICAgIChjbG9zZWQpPVwib25DTG9zZSgpXCI+XG4gICAgPC9tYXQtZGF0ZXBpY2tlcj5cbjwvbmctY29udGFpbmVyPlxuIl19
|