pdm-ui-kit 0.1.27 → 0.1.28

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.
@@ -115,10 +115,17 @@ export class PdmCalendarComponent {
115
115
  return this.getAnchorMonth().getFullYear();
116
116
  }
117
117
  get yearOptions() {
118
- const currentYear = this.singleHeaderYear;
119
- let minYear = this.minYear ?? (this.minDate ? this.minDate.getFullYear() : currentYear - 100);
120
- let maxYear = this.maxYear ?? (this.maxDate ? this.maxDate.getFullYear() : currentYear + 10);
118
+ const baseYear = new Date().getFullYear();
119
+ const selectedYear = this.singleHeaderYear;
120
+ let minYear = this.minYear ?? (this.minDate ? this.minDate.getFullYear() : baseYear - 100);
121
+ let maxYear = this.maxYear ?? (this.maxDate ? this.maxDate.getFullYear() : baseYear + 10);
121
122
  const years = [];
123
+ if (selectedYear < minYear) {
124
+ minYear = selectedYear;
125
+ }
126
+ if (selectedYear > maxYear) {
127
+ maxYear = selectedYear;
128
+ }
122
129
  if (minYear > maxYear) {
123
130
  const nextMin = maxYear;
124
131
  maxYear = minYear;
@@ -480,4 +487,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
480
487
  }], month: [{
481
488
  type: Input
482
489
  }] } });
483
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBZ0NuSCxNQUFNLGtCQUFrQixHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7QUFDdEMsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBT25DLE1BQU0sT0FBTyxvQkFBb0I7SUFLL0IsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFKbEMsV0FBTSxHQUFnQixJQUFJLENBQUM7UUFDM0IsZ0JBQVcsR0FBNEIsSUFBSSxDQUFDO1FBQzVDLFdBQU0sR0FBZ0IsSUFBSSxDQUFDO1FBSTFCLFlBQU8sR0FBZ0MsUUFBUSxDQUFDO1FBQ2hELGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUMzQixZQUFPLEdBQWdCLElBQUksQ0FBQztRQUM1QixZQUFPLEdBQWdCLElBQUksQ0FBQztRQUM1QixZQUFPLEdBQWtCLElBQUksQ0FBQztRQUM5QixZQUFPLEdBQWtCLElBQUksQ0FBQztRQUM5QixtQkFBYyxHQUFxQyxJQUFJLENBQUM7UUFDeEQsc0JBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFaEIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFDO1FBQzlDLHFCQUFnQixHQUFH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TSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7O2lIQWxoQlUsb0JBQW9CO3FHQUFwQixvQkFBb0IsaWlCQ3hDakMsZy9JQXNHQTsyRkQ5RGEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGNBQWMsbUJBRVAsdUJBQXVCLENBQUMsTUFBTTt3R0FTdEMsT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUdILEtBQUs7c0JBRFIsS0FBSztnQkFTRixVQUFVO3NCQURiLEtBQUs7Z0JBY0YsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBQZG1DYWxlbmRhclZhcmlhbnQgPSAnc2luZ2xlJyB8ICdyYW5nZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGRtQ2FsZW5kYXJSYW5nZSB7XG4gIHN0YXJ0OiBEYXRlIHwgbnVsbDtcbiAgZW5kOiBEYXRlIHwgbnVsbDtcbn1cblxuaW50ZXJmYWNlIFBkbUNhbGVuZGFyQ2VsbCB7XG4gIGRhdGU6IERhdGU7XG4gIGxhYmVsOiBudW1iZXI7XG4gIG11dGVkOiBib29sZWFuO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIGluUmFuZ2U6IGJvb2xlYW47XG4gIHJhbmdlRmlsbDogYm9vbGVhbjtcbiAgcmFuZ2VMZWZ0Q2FwOiBib29sZWFuO1xuICByYW5nZVJpZ2h0Q2FwOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgUGRtQ2FsZW5kYXJNb250aFZpZXcge1xuICBkYXRlOiBEYXRlO1xuICB0aXRsZTogc3RyaW5nO1xuICB0aXRsZVN0eWxlOiAnZHJvcGRvd25zJyB8ICdwbGFpbic7XG4gIGRyb3Bkb3duTW9udGg/OiBzdHJpbmc7XG4gIGRyb3Bkb3duWWVhcj86IHN0cmluZztcbiAgc2hvd1ByZXZCdXR0b246IGJvb2xlYW47XG4gIHNob3dOZXh0QnV0dG9uOiBib29sZWFuO1xuICB3ZWVrczogcmVhZG9ubHkgKHJlYWRvbmx5IFBkbUNhbGVuZGFyQ2VsbFtdKVtdO1xufVxuXG5jb25zdCBERUZBVUxUX1ZJRVdfTU9OVEggPSBuZXcgRGF0ZSgpO1xuY29uc3QgREFZX01TID0gMjQgKiA2MCAqIDYwICogMTAwMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRtLWNhbGVuZGFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUGRtQ2FsZW5kYXJDb21wb25lbnQge1xuICBwcml2YXRlIF92YWx1ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9yYW5nZVZhbHVlOiBQZG1DYWxlbmRhclJhbmdlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX21vbnRoOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIEBJbnB1dCgpIHZhcmlhbnQ6IFBkbUNhbGVuZGFyVmFyaWFudCB8IHN0cmluZyA9ICdzaW5nbGUnO1xuICBASW5wdXQoKSBjbGFzc05hbWUgPSAnJztcbiAgQElucHV0KCkgZGlzYWJsZWREYXRlczogRGF0ZVtdID0gW107XG4gIEBJbnB1dCgpIG1pbkRhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgbWF4RGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBtaW5ZZWFyOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgbWF4WWVhcjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGlzRGF0ZURpc2FibGVkOiAoKGRhdGU6IERhdGUpID0+IGJvb2xlYW4pIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGFsbG93U2FtZURheVJhbmdlID0gdHJ1ZTtcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPigpO1xuICBAT3V0cHV0KCkgcmFuZ2VWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGRtQ2FsZW5kYXJSYW5nZSB8IG51bGw+KCk7XG4gIEBPdXRwdXQoKSBtb250aENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgQE91dHB1dCgpIGRhdGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgQE91dHB1dCgpIGRpc2FibGVkRGF0ZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZSk7XG4gIH1cbiAgZ2V0IHZhbHVlKCk6IERhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgcmFuZ2VWYWx1ZSh2YWx1ZTogUGRtQ2FsZW5kYXJSYW5nZSB8IG51bGwpIHtcbiAgICB0aGlzLl9yYW5nZVZhbHVlID0gdmFsdWVcbiAgICAgID8ge1xuICAgICAgICAgIHN0YXJ0OiB0aGlzLm5vcm1hbGl6ZURhdGUodmFsdWUuc3RhcnQpLFxuICAgICAgICAgIGVuZDogdGhpcy5ub3JtYWxpemVEYXRlKHZhbHVlLmVuZClcbiAgICAgICAgfVxuICAgICAgOiBudWxsO1xuICB9XG4gIGdldCByYW5nZVZhbHVlKCk6IFBkbUNhbGVuZGFyUmFuZ2UgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2VWYWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBtb250aCh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcbiAgICB0aGlzLl9tb250aCA9IHZhbHVlID8gdGhpcy5zdGFydE9mTW9udGgodmFsdWUpIDogbnVsbDtcbiAgfVxuICBnZXQgbW9udGgoKTogRGF0ZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tb250aDtcbiAgfVxuXG4gIHJlYWRvbmx5IHdlZWtkYXlzID0gWydTdScsICdNbycsICdUdScsICdXZScsICdUaCcsICdGcicsICdTYSddIGFzIGNvbnN0O1xuICByZWFkb25seSBtb250aE9wdGlvbnMgPSBbXG4gICAgeyB2YWx1ZTogMCwgbGFiZWw6ICdKYW4nIH0sXG4gICAgeyB2YWx1ZTogMSwgbGFiZWw6ICdGZWInIH0sXG4gICAgeyB2YWx1ZTogMiwgbGFiZWw6ICdNYXInIH0sXG4gICAgeyB2YWx1ZTogMywgbGFiZWw6ICdBcHInIH0sXG4gICAgeyB2YWx1ZTogNCwgbGFiZWw6ICdNYXknIH0sXG4gICAgeyB2YWx1ZTogNSwgbGFiZWw6ICdKdW4nIH0sXG4gICAgeyB2YWx1ZTogNiwgbGFiZWw6ICdKdWwnIH0sXG4gICAgeyB2YWx1ZTogNywgbGFiZWw6ICdBdWcnIH0sXG4gICAgeyB2YWx1ZTogOCwgbGFiZWw6ICdTZXAnIH0sXG4gICAgeyB2YWx1ZTogOSwgbGFiZWw6ICdPY3QnIH0sXG4gICAgeyB2YWx1ZTogMTAsIGxhYmVsOiAnTm92JyB9LFxuICAgIHsgdmFsdWU6IDExLCBsYWJlbDogJ0RlYycgfVxuICBdIGFzIGNvbnN0O1xuXG4gIGdldCByZXNvbHZlZFZhcmlhbnQoKTogUGRtQ2FsZW5kYXJWYXJpYW50IHtcbiAgICByZXR1cm4gdGhpcy52YXJpYW50ID09PSAncmFuZ2UnID8gJ3JhbmdlJyA6ICdzaW5nbGUnO1xuICB9XG5cbiAgZ2V0IHZpc2libGVNb250aHMoKTogcmVhZG9ubHkgUGRtQ2FsZW5kYXJNb250aFZpZXdbXSB7XG4gICAgY29uc3QgYmFzZU1vbnRoID0gdGhpcy5nZXRBbmNob3JNb250aCgpO1xuXG4gICAgaWYgKHRoaXMucmVzb2x2ZWRWYXJpYW50ID09PSAnc2luZ2xlJykge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIGRhdGU6IGJhc2VNb250aCxcbiAgICAgICAgICB0aXRsZTogdGhpcy5mb3JtYXRNb250aFllYXIoYmFzZU1vbnRoKSxcbiAgICAgICAgICB0aXRsZVN0eWxlOiAnZHJvcGRvd25zJyxcbiAgICAgICAgICBkcm9wZG93bk1vbnRoOiB0aGlzLmZvcm1hdE1vbnRoU2hvcnQoYmFzZU1vbnRoKSxcbiAgICAgICAgICBkcm9wZG93blllYXI6IFN0cmluZyhiYXNlTW9udGguZ2V0RnVsbFllYXIoKSksXG4gICAgICAgICAgc2hvd1ByZXZCdXR0b246IHRydWUsXG4gICAgICAgICAgc2hvd05leHRCdXR0b246IHRydWUsXG4gICAgICAgICAgd2Vla3M6IHRoaXMuYnVpbGRNb250aFdlZWtzKGJhc2VNb250aCwgZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgfVxuXG4gICAgY29uc3QgbmV4dE1vbnRoID0gdGhpcy5hZGRNb250aHMoYmFzZU1vbnRoLCAxKTtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBkYXRlOiBiYXNlTW9udGgsXG4gICAgICAgIHRpdGxlOiB0aGlzLmZvcm1hdE1vbnRoWWVhcihiYXNlTW9udGgpLFxuICAgICAgICB0aXRsZVN0eWxlOiAncGxhaW4nLFxuICAgICAgICBzaG93UHJldkJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgc2hvd05leHRCdXR0b246IGZhbHNlLFxuICAgICAgICB3ZWVrczogdGhpcy5idWlsZE1vbnRoV2Vla3MoYmFzZU1vbnRoLCB0cnVlKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZGF0ZTogbmV4dE1vbnRoLFxuICAgICAgICB0aXRsZTogdGhpcy5mb3JtYXRNb250aFllYXIobmV4dE1vbnRoKSxcbiAgICAgICAgdGl0bGVTdHlsZTogJ3BsYWluJyxcbiAgICAgICAgc2hvd1ByZXZCdXR0b246IGZhbHNlLFxuICAgICAgICBzaG93TmV4dEJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgd2Vla3M6IHRoaXMuYnVpbGRNb250aFdlZWtzKG5leHRNb250aCwgdHJ1ZSlcbiAgICAgIH1cbiAgICBdO1xuICB9XG5cbiAgZ2V0IHNpbmdsZUhlYWRlck1vbnRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QW5jaG9yTW9udGgoKS5nZXRNb250aCgpO1xuICB9XG5cbiAgZ2V0IHNpbmdsZUhlYWRlclllYXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbmNob3JNb250aCgpLmdldEZ1bGxZZWFyKCk7XG4gIH1cblxuICBnZXQgeWVhck9wdGlvbnMoKTogcmVhZG9ubHkgbnVtYmVyW10ge1xuICAgIGNvbnN0IGN1cnJlbnRZZWFyID0gdGhpcy5zaW5nbGVIZWFkZXJZZWFyO1xuICAgIGxldCBtaW5ZZWFyID0gdGhpcy5taW5ZZWFyID8/ICh0aGlzLm1pbkRhdGUgPyB0aGlzLm1pbkRhdGUuZ2V0RnVsbFllYXIoKSA6IGN1cnJlbnRZZWFyIC0gMTAwKTtcbiAgICBsZXQgbWF4WWVhciA9IHRoaXMubWF4WWVhciA/PyAodGhpcy5tYXhEYXRlID8gdGhpcy5tYXhEYXRlLmdldEZ1bGxZZWFyKCkgOiBjdXJyZW50WWVhciArIDEwKTtcbiAgICBjb25zdCB5ZWFyczogbnVtYmVyW10gPSBbXTtcblxuICAgIGlmIChtaW5ZZWFyID4gbWF4WWVhcikge1xuICAgICAgY29uc3QgbmV4dE1pbiA9IG1heFllYXI7XG4gICAgICBtYXhZZWFyID0gbWluWWVhcjtcbiAgICAgIG1pblllYXIgPSBuZXh0TWluO1xuICAgIH1cblxuICAgIGZvciAobGV0IHllYXIgPSBtaW5ZZWFyOyB5ZWFyIDw9IG1heFllYXI7IHllYXIgKz0gMSkge1xuICAgICAgeWVhcnMucHVzaCh5ZWFyKTtcbiAgICB9XG5cbiAgICByZXR1cm4geWVhcnM7XG4gIH1cblxuICBnZXQgcm9vdENsYXNzZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnYm9yZGVyLWJvcmRlciBiZy1iYWNrZ3JvdW5kIHJlbGF0aXZlIHJvdW5kZWQtWzEwcHhdIGJvcmRlciBwLTMgc2hhZG93LXNtJyxcbiAgICAgIHRoaXMucmVzb2x2ZWRWYXJpYW50ID09PSAncmFuZ2UnXG4gICAgICAgID8gJ2lubGluZS1mbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktY2VudGVyIGdhcC00IHNocmluay0wIGdyb3ctMCBiYXNpcy1hdXRvJ1xuICAgICAgICA6ICdpbmxpbmUtZmxleCBmbGV4LWNvbCBnYXAtNCBzaHJpbmstMCBncm93LTAgYmFzaXMtYXV0bycsXG4gICAgICB0aGlzLmNsYXNzTmFtZVxuICAgIF07XG4gIH1cblxuICBnZXQgcm9vdFN0eWxlKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy5yZXNvbHZlZFZhcmlhbnQgPT09ICdyYW5nZScgPyAnNDg4cHgnIDogJzI1MHB4JztcblxuICAgIHJldHVybiB7XG4gICAgICB3aWR0aCxcbiAgICAgIG1pbldpZHRoOiB3aWR0aCxcbiAgICAgIG1heFdpZHRoOiB3aWR0aCxcbiAgICAgIG1pbkhlaWdodDogJzI5M3B4JyxcbiAgICAgIGZsZXg6ICcwIDAgYXV0bycsXG4gICAgICBhbGlnblNlbGY6ICdmbGV4LXN0YXJ0J1xuICAgIH07XG4gIH1cblxuICBtb250aFBhbmVsQ2xhc3NlcyhfaW5kZXg6IG51bWJlcik6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWydmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0JywgdGhpcy5yZXNvbHZlZFZhcmlhbnQgPT09ICdyYW5nZScgPyAndy1bMjI0cHhdIGdhcC00JyA6ICd3LWZ1bGwgZ2FwLTAnXTtcbiAgfVxuXG4gIGhlYWRlckNsYXNzZXMobW9udGg6IFBkbUNhbGVuZGFyTW9udGhWaWV3KTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbJ2ZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4nLCBtb250aC50aXRsZVN0eWxlID09PSAnZHJvcGRvd25zJyA/ICcnIDogJ21iLTQnXTtcbiAgfVxuXG4gIG5hdkJ1dHRvbkNsYXNzZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnZmxleCBoLTggdy04IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLW1kIHRleHQtZm9yZWdyb3VuZCcsXG4gICAgICAnZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpvcGFjaXR5LTQwJ1xuICAgIF07XG4gIH1cblxuICBuYXZQbGFjZWhvbGRlckNsYXNzZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbJ2gtNyB3LTcgc2hyaW5rLTAnXTtcbiAgfVxuXG4gIGRyb3Bkb3duV3JhcENsYXNzZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbJ2ZsZXggdy00MCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTInXTtcbiAgfVxuXG4gIGRyb3Bkb3duQ2xhc3Nlcyh3aWR0aENsYXNzOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsnZmxleCBoLTggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0xIHB4LTEnLCB3aWR0aENsYXNzXTtcbiAgfVxuXG4gIGRyb3Bkb3duU2VsZWN0Q2xhc3NlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICd0ZXh0LWZvcmVncm91bmQgaC1mdWxsIGJnLXRyYW5zcGFyZW50IHRleHQtc20gZm9udC1tZWRpdW0gbGVhZGluZy01JyxcbiAgICAgICdhcHBlYXJhbmNlLW5vbmUgYm9yZGVyLTAgb3V0bGluZS1ub25lIHJpbmctMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIHRleHQtY2VudGVyIGN1cnNvci1wb2ludGVyJ1xuICAgIF07XG4gIH1cblxuICBnZXQgZHJvcGRvd25TZWxlY3RTdHlsZSgpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICByZXR1cm4ge1xuICAgICAgYXBwZWFyYW5jZTogJ25vbmUnLFxuICAgICAgV2Via2l0QXBwZWFyYW5jZTogJ25vbmUnLFxuICAgICAgTW96QXBwZWFyYW5jZTogJ25vbmUnLFxuICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgIGJvcmRlcjogJzAnLFxuICAgICAgYm94U2hhZG93OiAnbm9uZScsXG4gICAgICBvdXRsaW5lOiAnMCcsXG4gICAgICBwYWRkaW5nOiAnMCcsXG4gICAgICBtYXJnaW46ICcwJ1xuICAgIH07XG4gIH1cblxuICBjYWxlbmRhckdyaWRXcmFwQ2xhc3NlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsnZmxleCB3LWZ1bGwgZmxleC1jb2wgaXRlbXMtc3RhcnQnXTtcbiAgfVxuXG4gIHdlZWtkYXlSb3dDbGFzc2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWydmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXInXTtcbiAgfVxuXG4gIHdlZWtkYXlDZWxsQ2xhc3NlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsndGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGZsZXggaC1bMjFweF0gdy04IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLW1kIHRleHQteHMgbGVhZGluZy00J107XG4gIH1cblxuICB3ZWVrUm93Q2xhc3NlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsnZmxleCB3LWZ1bGwgaXRlbXMtc3RhcnQgcHQtMiddO1xuICB9XG5cbiAgZGF5Q2VsbENsYXNzZXMoY2VsbDogUGRtQ2FsZW5kYXJDZWxsKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAncmVsYXRpdmUgZmxleCBoLTggdy04IHNocmluay0wIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlcicsXG4gICAgICBjZWxsLnJhbmdlRmlsbCA/ICdiZy1hY2NlbnQnIDogJycsXG4gICAgICBjZWxsLnJhbmdlTGVmdENhcCA/ICdyb3VuZGVkLWwtbWQnIDogJycsXG4gICAgICBjZWxsLnJhbmdlUmlnaHRDYXAgPyAncm91bmRlZC1yLW1kJyA6ICcnXG4gICAgXTtcbiAgfVxuXG4gIGRheUJ1dHRvbkNsYXNzZXMoY2VsbDogUGRtQ2FsZW5kYXJDZWxsKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAncmVsYXRpdmUgei0xMCBmbGV4IGgtOCB3LTggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbWQgdGV4dC1zbSBsZWFkaW5nLTUnLFxuICAgICAgY2VsbC5zZWxlY3RlZCA/ICdiZy1wcmltYXJ5IHRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kJyA6IGNlbGwucmFuZ2VGaWxsID8gJ3RleHQtYWNjZW50LWZvcmVncm91bmQnIDogJ3RleHQtZm9yZWdyb3VuZCcsXG4gICAgICBjZWxsLm11dGVkICYmICFjZWxsLnJhbmdlRmlsbCA/ICdvcGFjaXR5LTUwJyA6ICcnLFxuICAgICAgY2VsbC5kaXNhYmxlZCA/ICdjdXJzb3Itbm90LWFsbG93ZWQgb3BhY2l0eS00MCcgOiAnJyxcbiAgICAgICFjZWxsLmRpc2FibGVkICYmICF0aGlzLnJlYWRvbmx5ICYmICFjZWxsLnNlbGVjdGVkID8gJ2hvdmVyOmJnLWFjY2VudC83MCcgOiAnJ1xuICAgIF07XG4gIH1cblxuICBkYXlMYWJlbENsYXNzZXMoX2NlbGw6IFBkbUNhbGVuZGFyQ2VsbCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWydmb250LW5vcm1hbCddO1xuICB9XG5cbiAgdHJhY2tCeUluZGV4ID0gKGluZGV4OiBudW1iZXIpOiBudW1iZXIgPT4ge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHRyYWNrQnlEYXRlID0gKF9pbmRleDogbnVtYmVyLCBjZWxsOiBQZG1DYWxlbmRhckNlbGwpOiBzdHJpbmcgPT4ge1xuICAgIHJldHVybiB0aGlzLmRhdGVLZXkoY2VsbC5kYXRlKTtcbiAgfVxuXG4gIGdvVG9QcmV2aW91c01vbnRoKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0QW5jaG9yTW9udGgodGhpcy5hZGRNb250aHModGhpcy5nZXRBbmNob3JNb250aCgpLCAtMSkpO1xuICB9XG5cbiAgZ29Ub05leHRNb250aCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEFuY2hvck1vbnRoKHRoaXMuYWRkTW9udGhzKHRoaXMuZ2V0QW5jaG9yTW9udGgoKSwgMSkpO1xuICB9XG5cbiAgb25TaW5nbGVNb250aENoYW5nZShtb250aFZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBtb250aCA9IE51bWJlcihtb250aFZhbHVlKTtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKG1vbnRoKSB8fCBtb250aCA8IDAgfHwgbW9udGggPiAxMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFuY2hvciA9IHRoaXMuZ2V0QW5jaG9yTW9udGgoKTtcbiAgICB0aGlzLnNldEFuY2hvck1vbnRoKG5ldyBEYXRlKGFuY2hvci5nZXRGdWxsWWVhcigpLCBtb250aCwgMSkpO1xuICB9XG5cbiAgb25TaW5nbGVZZWFyQ2hhbmdlKHllYXJWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgeWVhciA9IE51bWJlcih5ZWFyVmFsdWUpO1xuICAgIGlmIChOdW1iZXIuaXNOYU4oeWVhcikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhbmNob3IgPSB0aGlzLmdldEFuY2hvck1vbnRoKCk7XG4gICAgdGhpcy5zZXRBbmNob3JNb250aChuZXcgRGF0ZSh5ZWFyLCBhbmNob3IuZ2V0TW9udGgoKSwgMSkpO1xuICB9XG5cbiAgb25EYXRlUHJlc3NlZChjZWxsOiBQZG1DYWxlbmRhckNlbGwpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gdGhpcy5jbG9uZURhdGUoY2VsbC5kYXRlKTtcblxuICAgIGlmIChjZWxsLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmRpc2FibGVkRGF0ZUNsaWNrLmVtaXQoZGF0ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRhdGVDbGljay5lbWl0KGRhdGUpO1xuXG4gICAgaWYgKHRoaXMucmVzb2x2ZWRWYXJpYW50ID09PSAnc2luZ2xlJykge1xuICAgICAgdGhpcy5fdmFsdWUgPSBkYXRlO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuY2xvbmVEYXRlKGRhdGUpKTtcbiAgICAgIHRoaXMuc3luY1Zpc2libGVNb250aFRvRGF0ZShkYXRlKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaGFuZGxlUmFuZ2VTZWxlY3Rpb24oZGF0ZSk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVJhbmdlU2VsZWN0aW9uKGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5fcmFuZ2VWYWx1ZTtcbiAgICBjb25zdCBjdXJyZW50U3RhcnQgPSBjdXJyZW50Py5zdGFydCA/IHRoaXMuY2xvbmVEYXRlKGN1cnJlbnQuc3RhcnQpIDogbnVsbDtcbiAgICBjb25zdCBjdXJyZW50RW5kID0gY3VycmVudD8uZW5kID8gdGhpcy5jbG9uZURhdGUoY3VycmVudC5lbmQpIDogbnVsbDtcblxuICAgIGlmICghY3VycmVudFN0YXJ0IHx8IChjdXJyZW50U3RhcnQgJiYgY3VycmVudEVuZCkpIHtcbiAgICAgIHRoaXMuX3JhbmdlVmFsdWUgPSB7IHN0YXJ0OiBkYXRlLCBlbmQ6IG51bGwgfTtcbiAgICAgIHRoaXMucmFuZ2VWYWx1ZUNoYW5nZS5lbWl0KHsgc3RhcnQ6IHRoaXMuY2xvbmVEYXRlKGRhdGUpLCBlbmQ6IG51bGwgfSk7XG4gICAgICB0aGlzLnN5bmNWaXNpYmxlTW9udGhUb0RhdGUoZGF0ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNTYW1lRGF5KGN1cnJlbnRTdGFydCwgZGF0ZSkgJiYgIXRoaXMuYWxsb3dTYW1lRGF5UmFuZ2UpIHtcbiAgICAgIHRoaXMuX3JhbmdlVmFsdWUgPSB7IHN0YXJ0OiBkYXRlLCBlbmQ6IG51bGwgfTtcbiAgICAgIHRoaXMucmFuZ2VWYWx1ZUNoYW5nZS5lbWl0KHsgc3RhcnQ6IHRoaXMuY2xvbmVEYXRlKGRhdGUpLCBlbmQ6IG51bGwgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLmNvbXBhcmVEYXRlKGRhdGUsIGN1cnJlbnRTdGFydCkgPCAwID8gZGF0ZSA6IGN1cnJlbnRTdGFydDtcbiAgICBjb25zdCBlbmQgPSB0aGlzLmNvbXBhcmVEYXRlKGRhdGUsIGN1cnJlbnRTdGFydCkgPCAwID8gY3VycmVudFN0YXJ0IDogZGF0ZTtcblxuICAgIGlmICh0aGlzLnJhbmdlQ29udGFpbnNCbG9ja2VkRGF0ZShzdGFydCwgZW5kKSkge1xuICAgICAgdGhpcy5kaXNhYmxlZERhdGVDbGljay5lbWl0KHRoaXMuY2xvbmVEYXRlKGRhdGUpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9yYW5nZVZhbHVlID0geyBzdGFydCwgZW5kIH07XG4gICAgdGhpcy5yYW5nZVZhbHVlQ2hhbmdlLmVtaXQoeyBzdGFydDogdGhpcy5jbG9uZURhdGUoc3RhcnQpLCBlbmQ6IHRoaXMuY2xvbmVEYXRlKGVuZCkgfSk7XG4gICAgdGhpcy5zeW5jVmlzaWJsZU1vbnRoVG9EYXRlKHN0YXJ0KTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRNb250aFdlZWtzKG1vbnRoOiBEYXRlLCBpbmNsdWRlUmFuZ2U6IGJvb2xlYW4pOiByZWFkb25seSAocmVhZG9ubHkgUGRtQ2FsZW5kYXJDZWxsW10pW10ge1xuICAgIGNvbnN0IGZpcnN0T2ZNb250aCA9IHRoaXMuc3RhcnRPZk1vbnRoKG1vbnRoKTtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuc3RhcnRPZldlZWsoZmlyc3RPZk1vbnRoKTtcbiAgICBjb25zdCBlbmQgPSB0aGlzLmVuZE9mV2Vlayh0aGlzLmVuZE9mTW9udGgoZmlyc3RPZk1vbnRoKSk7XG4gICAgY29uc3Qgd2Vla3M6IFBkbUNhbGVuZGFyQ2VsbFtdW10gPSBbXTtcblxuICAgIGxldCBjdXJzb3IgPSB0aGlzLmNsb25lRGF0ZShzdGFydCk7XG4gICAgd2hpbGUgKHRoaXMuY29tcGFyZURhdGUoY3Vyc29yLCBlbmQpIDw9IDApIHtcbiAgICAgIGNvbnN0IHJvdzogUGRtQ2FsZW5kYXJDZWxsW10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgY29sID0gMDsgY29sIDwgNzsgY29sICs9IDEpIHtcbiAgICAgICAgcm93LnB1c2godGhpcy5idWlsZENlbGwoY3Vyc29yLCBtb250aCwgaW5jbHVkZVJhbmdlKSk7XG4gICAgICAgIGN1cnNvciA9IHRoaXMuYWRkRGF5cyhjdXJzb3IsIDEpO1xuICAgICAgfVxuXG4gICAgICB3ZWVrcy5wdXNoKHJvdyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCByb3cgb2Ygd2Vla3MpIHtcbiAgICAgIGZvciAobGV0IGNvbCA9IDA7IGNvbCA8IHJvdy5sZW5ndGg7IGNvbCArPSAxKSB7XG4gICAgICAgIGNvbnN0IGNlbGwgPSByb3dbY29sXTtcbiAgICAgICAgaWYgKCFjZWxsLmluUmFuZ2UpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxlZnRJblJvdyA9IGNvbCA+IDAgPyByb3dbY29sIC0gMV0uaW5SYW5nZSA6IGZhbHNlO1xuICAgICAgICBjb25zdCByaWdodEluUm93ID0gY29sIDwgcm93Lmxlbmd0aCAtIDEgPyByb3dbY29sICsgMV0uaW5SYW5nZSA6IGZhbHNlO1xuXG4gICAgICAgIGNlbGwucmFuZ2VMZWZ0Q2FwID0gIWxlZnRJblJvdztcbiAgICAgICAgY2VsbC5yYW5nZVJpZ2h0Q2FwID0gIXJpZ2h0SW5Sb3c7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHdlZWtzO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENlbGwoZGF0ZTogRGF0ZSwgdmlzaWJsZU1vbnRoOiBEYXRlLCBpbmNsdWRlUmFuZ2U6IGJvb2xlYW4pOiBQZG1DYWxlbmRhckNlbGwge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB0aGlzLmNsb25lRGF0ZShkYXRlKTtcbiAgICBjb25zdCBpbkN1cnJlbnRNb250aCA9IG5vcm1hbGl6ZWQuZ2V0TW9udGgoKSA9PT0gdmlzaWJsZU1vbnRoLmdldE1vbnRoKCkgJiYgbm9ybWFsaXplZC5nZXRGdWxsWWVhcigpID09PSB2aXNpYmxlTW9udGguZ2V0RnVsbFllYXIoKTtcbiAgICBjb25zdCBkaXNhYmxlZCA9IHRoaXMuaXNCbG9ja2VkKG5vcm1hbGl6ZWQpO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRTaW5nbGUgPSB0aGlzLnJlc29sdmVkVmFyaWFudCA9PT0gJ3NpbmdsZScgJiYgISF0aGlzLl92YWx1ZSAmJiB0aGlzLmlzU2FtZURheShub3JtYWxpemVkLCB0aGlzLl92YWx1ZSk7XG4gICAgY29uc3QgcmFuZ2VTdGFydCA9IGluY2x1ZGVSYW5nZSAmJiAhIXRoaXMuX3JhbmdlVmFsdWU/LnN0YXJ0ICYmIHRoaXMuaXNTYW1lRGF5KG5vcm1hbGl6ZWQsIHRoaXMuX3JhbmdlVmFsdWUuc3RhcnQpO1xuICAgIGNvbnN0IHJhbmdlRW5kID0gaW5jbHVkZVJhbmdlICYmICEhdGhpcy5fcmFuZ2VWYWx1ZT8uZW5kICYmIHRoaXMuaXNTYW1lRGF5KG5vcm1hbGl6ZWQsIHRoaXMuX3JhbmdlVmFsdWUuZW5kKTtcbiAgICBjb25zdCBpblJhbmdlID1cbiAgICAgIGluY2x1ZGVSYW5nZSAmJlxuICAgICAgISF0aGlzLl9yYW5nZVZhbHVlPy5zdGFydCAmJlxuICAgICAgISF0aGlzLl9yYW5nZVZhbHVlPy5lbmQgJiZcbiAgICAgIHRoaXMuY29tcGFyZURhdGUobm9ybWFsaXplZCwgdGhpcy5fcmFuZ2VWYWx1ZS5zdGFydCkgPj0gMCAmJlxuICAgICAgdGhpcy5jb21wYXJlRGF0ZShub3JtYWxpemVkLCB0aGlzLl9yYW5nZVZhbHVlLmVuZCkgPD0gMDtcblxuICAgIHJldHVybiB7XG4gICAgICBkYXRlOiBub3JtYWxpemVkLFxuICAgICAgbGFiZWw6IG5vcm1hbGl6ZWQuZ2V0RGF0ZSgpLFxuICAgICAgbXV0ZWQ6ICFpbkN1cnJlbnRNb250aCxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgc2VsZWN0ZWQ6IHNlbGVjdGVkU2luZ2xlIHx8IHJhbmdlU3RhcnQgfHwgcmFuZ2VFbmQsXG4gICAgICBpblJhbmdlLFxuICAgICAgcmFuZ2VGaWxsOiBpblJhbmdlLFxuICAgICAgcmFuZ2VMZWZ0Q2FwOiBmYWxzZSxcbiAgICAgIHJhbmdlUmlnaHRDYXA6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QW5jaG9yTW9udGgoKTogRGF0ZSB7XG4gICAgaWYgKHRoaXMuX21vbnRoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jbG9uZURhdGUodGhpcy5fbW9udGgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc29sdmVkVmFyaWFudCA9PT0gJ3NpbmdsZScgJiYgdGhpcy5fdmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0YXJ0T2ZNb250aCh0aGlzLl92YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVzb2x2ZWRWYXJpYW50ID09PSAncmFuZ2UnICYmIHRoaXMuX3JhbmdlVmFsdWU/LnN0YXJ0KSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGFydE9mTW9udGgodGhpcy5fcmFuZ2VWYWx1ZS5zdGFydCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RhcnRPZk1vbnRoKERFRkFVTFRfVklFV19NT05USCk7XG4gIH1cblxuICBwcml2YXRlIHNldEFuY2hvck1vbnRoKG1vbnRoOiBEYXRlKTogdm9pZCB7XG4gICAgdGhpcy5fbW9udGggPSB0aGlzLnN0YXJ0T2ZNb250aChtb250aCk7XG4gICAgdGhpcy5tb250aENoYW5nZS5lbWl0KHRoaXMuY2xvbmVEYXRlKHRoaXMuX21vbnRoKSk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNWaXNpYmxlTW9udGhUb0RhdGUoZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IG5leHRNb250aCA9IHRoaXMuc3RhcnRPZk1vbnRoKGRhdGUpO1xuICAgIGlmICghdGhpcy5fbW9udGggfHwgIXRoaXMuaXNTYW1lTW9udGgodGhpcy5fbW9udGgsIG5leHRNb250aCkpIHtcbiAgICAgIHRoaXMuX21vbnRoID0gbmV4dE1vbnRoO1xuICAgICAgdGhpcy5tb250aENoYW5nZS5lbWl0KHRoaXMuY2xvbmVEYXRlKG5leHRNb250aCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNCbG9ja2VkKGRhdGU6IERhdGUpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5taW5EYXRlICYmIHRoaXMuY29tcGFyZURhdGUoZGF0ZSwgdGhpcy5taW5EYXRlKSA8IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1heERhdGUgJiYgdGhpcy5jb21wYXJlRGF0ZShkYXRlLCB0aGlzLm1heERhdGUpID4gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgYmxvY2tlZFNldCA9IG5ldyBTZXQoKHRoaXMuZGlzYWJsZWREYXRlcyB8fCBbXSkubWFwKChpdGVtKSA9PiB0aGlzLmRhdGVLZXkoaXRlbSkpKTtcbiAgICBpZiAoYmxvY2tlZFNldC5oYXModGhpcy5kYXRlS2V5KGRhdGUpKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuICEhdGhpcy5pc0RhdGVEaXNhYmxlZD8uKHRoaXMuY2xvbmVEYXRlKGRhdGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmFuZ2VDb250YWluc0Jsb2NrZWREYXRlKHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUpOiBib29sZWFuIHtcbiAgICBsZXQgY3Vyc29yID0gdGhpcy5jbG9uZURhdGUoc3RhcnQpO1xuXG4gICAgd2hpbGUgKHRoaXMuY29tcGFyZURhdGUoY3Vyc29yLCBlbmQpIDw9IDApIHtcbiAgICAgIGlmICh0aGlzLmlzQmxvY2tlZChjdXJzb3IpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgY3Vyc29yID0gdGhpcy5hZGREYXlzKGN1cnNvciwgMSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVEYXRlKHZhbHVlOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHx8IE51bWJlci5pc05hTih2YWx1ZS5nZXRUaW1lKCkpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUuZ2V0RnVsbFllYXIoKSwgdmFsdWUuZ2V0TW9udGgoKSwgdmFsdWUuZ2V0RGF0ZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvbmVEYXRlKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRPZk1vbnRoKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIDEpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmRPZk1vbnRoKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCkgKyAxLCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRPZldlZWsoZGF0ZTogRGF0ZSk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLmFkZERheXMoZGF0ZSwgLWRhdGUuZ2V0RGF5KCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmRPZldlZWsoZGF0ZTogRGF0ZSk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLmFkZERheXMoZGF0ZSwgNiAtIGRhdGUuZ2V0RGF5KCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRNb250aHMoZGF0ZTogRGF0ZSwgbW9udGhzOiBudW1iZXIpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCkgKyBtb250aHMsIDEpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREYXlzKGRhdGU6IERhdGUsIGRheXM6IG51bWJlcik6IERhdGUge1xuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkgKyBkYXlzKTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcGFyZURhdGUoYTogRGF0ZSwgYjogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVZhbHVlKGEpIC0gdGhpcy5kYXRlVmFsdWUoYik7XG4gIH1cblxuICBwcml2YXRlIGRhdGVWYWx1ZShkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKSAvIERBWV9NUztcbiAgfVxuXG4gIHByaXZhdGUgaXNTYW1lRGF5KGE6IERhdGUsIGI6IERhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb21wYXJlRGF0ZShhLCBiKSA9PT0gMDtcbiAgfVxuXG4gIHByaXZhdGUgaXNTYW1lTW9udGgoYTogRGF0ZSwgYjogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhLmdldEZ1bGxZZWFyKCkgPT09IGIuZ2V0RnVsbFllYXIoKSAmJiBhLmdldE1vbnRoKCkgPT09IGIuZ2V0TW9udGgoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGF0ZUtleShkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICBjb25zdCB5ID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IG0gPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCBkID0gU3RyaW5nKGRhdGUuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIHJldHVybiBgJHt5fS0ke219LSR7ZH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRNb250aFNob3J0KGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRlLnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHsgbW9udGg6ICdzaG9ydCcgfSk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdE1vbnRoWWVhcihkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF0ZS50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7IG1vbnRoOiAnbG9uZycsIHllYXI6ICdudW1lcmljJyB9KTtcbiAgfVxufVxuIiwiPGRpdiBbbmdDbGFzc109XCJyb290Q2xhc3Nlc1wiIFtuZ1N0eWxlXT1cInJvb3RTdHlsZVwiPlxuICA8ZGl2ICpuZ0Zvcj1cImxldCBtb250aCBvZiB2aXNpYmxlTW9udGhzOyBsZXQgbW9udGhJbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIiBbbmdDbGFzc109XCJtb250aFBhbmVsQ2xhc3Nlcyhtb250aEluZGV4KVwiPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwiaGVhZGVyQ2xhc3Nlcyhtb250aClcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJtb250aC5zaG93UHJldkJ1dHRvbjsgZWxzZSBwcmV2UGxhY2Vob2xkZXJcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW25nQ2xhc3NdPVwibmF2QnV0dG9uQ2xhc3NlcygpXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIlByZXZpb3VzIG1vbnRoXCJcbiAgICAgICAgKGNsaWNrKT1cImdvVG9QcmV2aW91c01vbnRoKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIlxuICAgICAgPlxuICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBjbGFzcz1cImgtNCB3LTRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICA8cGF0aCBkPVwibTE1IDE4LTYtNiA2LTZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8bmctdGVtcGxhdGUgI3ByZXZQbGFjZWhvbGRlcj5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJuYXZQbGFjZWhvbGRlckNsYXNzZXMoKVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vbnRoLnRpdGxlU3R5bGUgPT09ICdkcm9wZG93bnMnOyBlbHNlIHBsYWluVGl0bGVcIj5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJkcm9wZG93bldyYXBDbGFzc2VzKClcIj5cbiAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImRyb3Bkb3duQ2xhc3Nlcygndy1bNzJweF0nKVwiPlxuICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJkcm9wZG93blNlbGVjdENsYXNzZXMoKVwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImRyb3Bkb3duU2VsZWN0U3R5bGVcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwic2luZ2xlSGVhZGVyTW9udGhcIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiTW9udGhcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uU2luZ2xlTW9udGhDaGFuZ2UoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBtb250aE9wdGlvbiBvZiBtb250aE9wdGlvbnNcIiBbdmFsdWVdPVwibW9udGhPcHRpb24udmFsdWVcIj57eyBtb250aE9wdGlvbi5sYWJlbCB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBjbGFzcz1cImgtMyB3LTMgdGV4dC1mb3JlZ3JvdW5kXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJtNiA5IDYgNiA2LTZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImRyb3Bkb3duQ2xhc3Nlcygndy1bODJweF0nKVwiPlxuICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJkcm9wZG93blNlbGVjdENsYXNzZXMoKVwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImRyb3Bkb3duU2VsZWN0U3R5bGVcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwic2luZ2xlSGVhZGVyWWVhclwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJZZWFyXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblNpbmdsZVllYXJDaGFuZ2UoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB5ZWFyIG9mIHllYXJPcHRpb25zXCIgW3ZhbHVlXT1cInllYXJcIj57eyB5ZWFyIH19PC9vcHRpb24+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGNsYXNzPVwiaC0zIHctMyB0ZXh0LWZvcmVncm91bmRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIm02IDkgNiA2IDYtNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI3BsYWluVGl0bGU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IG1pbi13LTAgZmxleC0xIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1mb3JlZ3JvdW5kIHRleHQtY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW0gbGVhZGluZy01XCI+XG4gICAgICAgICAgICB7eyBtb250aC50aXRsZSB9fVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwibW9udGguc2hvd05leHRCdXR0b247IGVsc2UgbmV4dFBsYWNlaG9sZGVyXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIm5hdkJ1dHRvbkNsYXNzZXMoKVwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJOZXh0IG1vbnRoXCJcbiAgICAgICAgKGNsaWNrKT1cImdvVG9OZXh0TW9udGgoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJyZWFkb25seVwiXG4gICAgICA+XG4gICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGNsYXNzPVwiaC00IHctNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJtOSAxOCA2LTYtNi02XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG5nLXRlbXBsYXRlICNuZXh0UGxhY2Vob2xkZXI+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwibmF2UGxhY2Vob2xkZXJDbGFzc2VzKClcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IFtuZ0NsYXNzXT1cImNhbGVuZGFyR3JpZFdyYXBDbGFzc2VzKClcIj5cbiAgICAgIDxkaXYgW25nQ2xhc3NdPVwid2Vla2RheVJvd0NsYXNzZXMoKVwiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2Vla2RheXM7IHRyYWNrQnk6IHRyYWNrQnlJbmRleFwiIFtuZ0NsYXNzXT1cIndlZWtkYXlDZWxsQ2xhc3NlcygpXCI+XG4gICAgICAgICAgPHNwYW4+e3sgZGF5IH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB3ZWVrIG9mIG1vbnRoLndlZWtzOyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIiBbbmdDbGFzc109XCJ3ZWVrUm93Q2xhc3NlcygpXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNlbGwgb2Ygd2VlazsgdHJhY2tCeTogdHJhY2tCeURhdGVcIiBbbmdDbGFzc109XCJkYXlDZWxsQ2xhc3NlcyhjZWxsKVwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF5QnV0dG9uQ2xhc3NlcyhjZWxsKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJjZWxsLnNlbGVjdGVkXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiY2VsbC5kaXNhYmxlZCB8fCByZWFkb25seVwiXG4gICAgICAgICAgICBbYXR0ci50aXRsZV09XCJjZWxsLmRhdGUgfCBkYXRlIDogJ3l5eXktTU0tZGQnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkRhdGVQcmVzc2VkKGNlbGwpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJkYXlMYWJlbENsYXNzZXMoY2VsbClcIj57eyBjZWxsLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
490
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBZ0NuSCxNQUFNLGtCQUFrQixHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7QUFDdEMsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBT25DLE1BQU0sT0FBTyxvQkFBb0I7SUFLL0IsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFKbEMsV0FBTSxHQUFnQixJQUFJLENBQUM7UUFDM0IsZ0JBQVcsR0FBNEIsSUFBSSxDQUFDO1FBQzVDLFdBQU0sR0FBZ0IsSUFBSSxDQUFDO1FBSTFCLFlBQU8sR0FBZ0MsUUFBUSxDQUFDO1FBQ2hELGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUMzQixZQUFPLEdBQWdCLElBQUksQ0FBQztRQUM1QixZQUFPLEdBQWdCLElBQUksQ0FBQztRQUM1QixZQUFPLEdBQWtCLElBQUksQ0FBQztRQUM5QixZQUFPLEdBQWtCLElBQUksQ0FBQztRQUM5QixtQkFBYyxHQUFxQyxJQUFJLENBQUM7UUFDeEQsc0JBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFaEIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFDO1FBQzlDLHFCQUFnQixHQUFH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QWdCLENBQUMsSUFBVTtRQUNqQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVPLGVBQWUsQ0FBQyxJQUFVO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7O2lIQTNoQlUsb0JBQW9CO3FHQUFwQixvQkFBb0IsaWlCQ3hDakMsZy9JQXNHQTsyRkQ5RGEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGNBQWMsbUJBRVAsdUJBQXVCLENBQUMsTUFBTTt3R0FTdEMsT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUdILEtBQUs7c0JBRFIsS0FBSztnQkFTRixVQUFVO3NCQURiLEtBQUs7Z0JBY0YsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBQZG1DYWxlbmRhclZhcmlhbnQgPSAnc2luZ2xlJyB8ICdyYW5nZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGRtQ2FsZW5kYXJSYW5nZSB7XG4gIHN0YXJ0OiBEYXRlIHwgbnVsbDtcbiAgZW5kOiBEYXRlIHwgbnVsbDtcbn1cblxuaW50ZXJmYWNlIFBkbUNhbGVuZGFyQ2VsbCB7XG4gIGRhdGU6IERhdGU7XG4gIGxhYmVsOiBudW1iZXI7XG4gIG11dGVkOiBib29sZWFuO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIGluUmFuZ2U6IGJvb2xlYW47XG4gIHJhbmdlRmlsbDogYm9vbGVhbjtcbiAgcmFuZ2VMZWZ0Q2FwOiBib29sZWFuO1xuICByYW5nZVJpZ2h0Q2FwOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgUGRtQ2FsZW5kYXJNb250aFZpZXcge1xuICBkYXRlOiBEYXRlO1xuICB0aXRsZTogc3RyaW5nO1xuICB0aXRsZVN0eWxlOiAnZHJvcGRvd25zJyB8ICdwbGFpbic7XG4gIGRyb3Bkb3duTW9udGg/OiBzdHJpbmc7XG4gIGRyb3Bkb3duWWVhcj86IHN0cmluZztcbiAgc2hvd1ByZXZCdXR0b246IGJvb2xlYW47XG4gIHNob3dOZXh0QnV0dG9uOiBib29sZWFuO1xuICB3ZWVrczogcmVhZG9ubHkgKHJlYWRvbmx5IFBkbUNhbGVuZGFyQ2VsbFtdKVtdO1xufVxuXG5jb25zdCBERUZBVUxUX1ZJRVdfTU9OVEggPSBuZXcgRGF0ZSgpO1xuY29uc3QgREFZX01TID0gMjQgKiA2MCAqIDYwICogMTAwMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRtLWNhbGVuZGFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUGRtQ2FsZW5kYXJDb21wb25lbnQge1xuICBwcml2YXRlIF92YWx1ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9yYW5nZVZhbHVlOiBQZG1DYWxlbmRhclJhbmdlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX21vbnRoOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIEBJbnB1dCgpIHZhcmlhbnQ6IFBkbUNhbGVuZGFyVmFyaWFudCB8IHN0cmluZyA9ICdzaW5nbGUnO1xuICBASW5wdXQoKSBjbGFzc05hbWUgPSAnJztcbiAgQElucHV0KCkgZGlzYWJsZWREYXRlczogRGF0ZVtdID0gW107XG4gIEBJbnB1dCgpIG1pbkRhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgbWF4RGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBtaW5ZZWFyOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgbWF4WWVhcjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGlzRGF0ZURpc2FibGVkOiAoKGRhdGU6IERhdGUpID0+IGJvb2xlYW4pIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGFsbG93U2FtZURheVJhbmdlID0gdHJ1ZTtcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPigpO1xuICBAT3V0cHV0KCkgcmFuZ2VWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGRtQ2FsZW5kYXJSYW5nZSB8IG51bGw+KCk7XG4gIEBPdXRwdXQoKSBtb250aENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgQE91dHB1dCgpIGRhdGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgQE91dHB1dCgpIGRpc2FibGVkRGF0ZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZSk7XG4gIH1cbiAgZ2V0IHZhbHVlKCk6IERhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgcmFuZ2VWYWx1ZSh2YWx1ZTogUGRtQ2FsZW5kYXJSYW5nZSB8IG51bGwpIHtcbiAgICB0aGlzLl9yYW5nZVZhbHVlID0gdmFsdWVcbiAgICAgID8ge1xuICAgICAgICAgIHN0YXJ0OiB0aGlzLm5vcm1hbGl6ZURhdGUodmFsdWUuc3RhcnQpLFxuICAgICAgICAgIGVuZDogdGhpcy5ub3JtYWxpemVEYXRlKHZhbHVlLmVuZClcbiAgICAgICAgfVxuICAgICAgOiBudWxsO1xuICB9XG4gIGdldCByYW5nZVZhbHVlKCk6IFBkbUNhbGVuZGFyUmFuZ2UgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2VWYWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBtb250aCh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcbiAgICB0aGlzLl9tb250aCA9IHZhbHVlID8gdGhpcy5zdGFydE9mTW9udGgodmFsdWUpIDogbnVsbDtcbiAgfVxuICBnZXQgbW9udGgoKTogRGF0ZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tb250aDtcbiAgfVxuXG4gIHJlYWRvbmx5IHdlZWtkYXlzID0gWydTdScsICdNbycsICdUdScsICdXZScsICdUaCcsICdGcicsICdTYSddIGFzIGNvbnN0O1xuICByZWFkb25seSBtb250aE9wdGlvbnMgPSBbXG4gICAgeyB2YWx1ZTogMCwgbGFiZWw6ICdKYW4nIH0sXG4gICAgeyB2YWx1ZTogMSwgbGFiZWw6ICdGZWInIH0sXG4gICAgeyB2YWx1ZTogMiwgbGFiZWw6ICdNYXInIH0sXG4gICAgeyB2YWx1ZTogMywgbGFiZWw6ICdBcHInIH0sXG4gICAgeyB2YWx1ZTogNCwgbGFiZWw6ICdNYXknIH0sXG4gICAgeyB2YWx1ZTogNSwgbGFiZWw6ICdKdW4nIH0sXG4gICAgeyB2YWx1ZTogNiwgbGFiZWw6ICdKdWwnIH0sXG4gICAgeyB2YWx1ZTogNywgbGFiZWw6ICdBdWcnIH0sXG4gICAgeyB2YWx1ZTogOCwgbGFiZWw6ICdTZXAnIH0sXG4gICAgeyB2YWx1ZTogOSwgbGFiZWw6ICdPY3QnIH0sXG4gICAgeyB2YWx1ZTogMTAsIGxhYmVsOiAnTm92JyB9LFxuICAgIHsgdmFsdWU6IDExLCBsYWJlbDogJ0RlYycgfVxuICBdIGFzIGNvbnN0O1xuXG4gIGdldCByZXNvbHZlZFZhcmlhbnQoKTogUGRtQ2FsZW5kYXJWYXJpYW50IHtcbiAgICByZXR1cm4gdGhpcy52YXJpYW50ID09PSAncmFuZ2UnID8gJ3JhbmdlJyA6ICdzaW5nbGUnO1xuICB9XG5cbiAgZ2V0IHZpc2libGVNb250aHMoKTogcmVhZG9ubHkgUGRtQ2FsZW5kYXJNb250aFZpZXdbXSB7XG4gICAgY29uc3QgYmFzZU1vbnRoID0gdGhpcy5nZXRBbmNob3JNb250aCgpO1xuXG4gICAgaWYgKHRoaXMucmVzb2x2ZWRWYXJpYW50ID09PSAnc2luZ2xlJykge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIGRhdGU6IGJhc2VNb250aCxcbiAgICAgICAgICB0aXRsZTogdGhpcy5mb3JtYXRNb250aFllYXIoYmFzZU1vbnRoKSxcbiAgICAgICAgICB0aXRsZVN0eWxlOiAnZHJvcGRvd25zJyxcbiAgICAgICAgICBkcm9wZG93bk1vbnRoOiB0aGlzLmZvcm1hdE1vbnRoU2hvcnQoYmFzZU1vbnRoKSxcbiAgICAgICAgICBkcm9wZG93blllYXI6IFN0cmluZyhiYXNlTW9udGguZ2V0RnVsbFllYXIoKSksXG4gICAgICAgICAgc2hvd1ByZXZCdXR0b246IHRydWUsXG4gICAgICAgICAgc2hvd05leHRCdXR0b246IHRydWUsXG4gICAgICAgICAgd2Vla3M6IHRoaXMuYnVpbGRNb250aFdlZWtzKGJhc2VNb250aCwgZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgfVxuXG4gICAgY29uc3QgbmV4dE1vbnRoID0gdGhpcy5hZGRNb250aHMoYmFzZU1vbnRoLCAxKTtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBkYXRlOiBiYXNlTW9udGgsXG4gICAgICAgIHRpdGxlOiB0aGlzLmZvcm1hdE1vbnRoWWVhcihiYXNlTW9udGgpLFxuICAgICAgICB0aXRsZVN0eWxlOiAncGxhaW4nLFxuICAgICAgICBzaG93UHJldkJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgc2hvd05leHRCdXR0b246IGZhbHNlLFxuICAgICAgICB3ZWVrczogdGhpcy5idWlsZE1vbnRoV2Vla3MoYmFzZU1vbnRoLCB0cnVlKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZGF0ZTogbmV4dE1vbnRoLFxuICAgICAgICB0aXRsZTogdGhpcy5mb3JtYXRNb250aFllYXIobmV4dE1vbnRoKSxcbiAgICAgICAgdGl0bGVTdHlsZTogJ3BsYWluJyxcbiAgICAgICAgc2hvd1ByZXZCdXR0b246IGZhbHNlLFxuICAgICAgICBzaG93TmV4dEJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgd2Vla3M6IHRoaXMuYnVpbGRNb250aFdlZWtzKG5leHRNb250aCwgdHJ1ZSlcbiAgICAgIH1cbiAgICBdO1xuICB9XG5cbiAgZ2V0IHNpbmdsZUhlYWRlck1vbnRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QW5jaG9yTW9udGgoKS5nZXRNb250aCgpO1xuICB9XG5cbiAgZ2V0IHNpbmdsZUhlYWRlclllYXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbmNob3JNb250aCgpLmdldEZ1bGxZZWFyKCk7XG4gIH1cblxuICBnZXQgeWVhck9wdGlvbnMoKTogcmVhZG9ubHkgbnVtYmVyW10ge1xuICAgIGNvbnN0IGJhc2VZZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IHNlbGVjdGVkWWVhciA9IHRoaXMuc2luZ2xlSGVhZGVyWWVhcjtcbiAgICBsZXQgbWluWWVhciA9IHRoaXMubWluWWVhciA/PyAodGhpcy5taW5EYXRlID8gdGhpcy5taW5EYXRlLmdldEZ1bGxZZWFyKCkgOiBiYXNlWWVhciAtIDEwMCk7XG4gICAgbGV0IG1heFllYXIgPSB0aGlzLm1heFllYXIgPz8gKHRoaXMubWF4RGF0ZSA/IHRoaXMubWF4RGF0ZS5nZXRGdWxsWWVhcigpIDogYmFzZVllYXIgKyAxMCk7XG4gICAgY29uc3QgeWVhcnM6IG51bWJlcltdID0gW107XG5cbiAgICBpZiAoc2VsZWN0ZWRZZWFyIDwgbWluWWVhcikge1xuICAgICAgbWluWWVhciA9IHNlbGVjdGVkWWVhcjtcbiAgICB9XG5cbiAgICBpZiAoc2VsZWN0ZWRZZWFyID4gbWF4WWVhcikge1xuICAgICAgbWF4WWVhciA9IHNlbGVjdGVkWWVhcjtcbiAgICB9XG5cbiAgICBpZiAobWluWWVhciA+IG1heFllYXIpIHtcbiAgICAgIGNvbnN0IG5leHRNaW4gPSBtYXhZZWFyO1xuICAgICAgbWF4WWVhciA9IG1pblllYXI7XG4gICAgICBtaW5ZZWFyID0gbmV4dE1pbjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCB5ZWFyID0gbWluWWVhcjsgeWVhciA8PSBtYXhZZWFyOyB5ZWFyICs9IDEpIHtcbiAgICAgIHllYXJzLnB1c2goeWVhcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHllYXJzO1xuICB9XG5cbiAgZ2V0IHJvb3RDbGFzc2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ2JvcmRlci1ib3JkZXIgYmctYmFja2dyb3VuZCByZWxhdGl2ZSByb3VuZGVkLVsxMHB4XSBib3JkZXIgcC0zIHNoYWRvdy1zbScsXG4gICAgICB0aGlzLnJlc29sdmVkVmFyaWFudCA9PT0gJ3JhbmdlJ1xuICAgICAgICA/ICdpbmxpbmUtZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWNlbnRlciBnYXAtNCBzaHJpbmstMCBncm93LTAgYmFzaXMtYXV0bydcbiAgICAgICAgOiAnaW5saW5lLWZsZXggZmxleC1jb2wgZ2FwLTQgc2hyaW5rLTAgZ3Jvdy0wIGJhc2lzLWF1dG8nLFxuICAgICAgdGhpcy5jbGFzc05hbWVcbiAgICBdO1xuICB9XG5cbiAgZ2V0IHJvb3RTdHlsZSgpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCB3aWR0aCA9IHRoaXMucmVzb2x2ZWRWYXJpYW50ID09PSAncmFuZ2UnID8gJzQ4OHB4JyA6ICcyNTBweCc7XG5cbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGgsXG4gICAgICBtaW5XaWR0aDogd2lkdGgsXG4gICAgICBtYXhXaWR0aDogd2lkdGgsXG4gICAgICBtaW5IZWlnaHQ6ICcyOTNweCcsXG4gICAgICBmbGV4OiAnMCAwIGF1dG8nLFxuICAgICAgYWxpZ25TZWxmOiAnZmxleC1zdGFydCdcbiAgICB9O1xuICB9XG5cbiAgbW9udGhQYW5lbENsYXNzZXMoX2luZGV4OiBudW1iZXIpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsnZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCcsIHRoaXMucmVzb2x2ZWRWYXJpYW50ID09PSAncmFuZ2UnID8gJ3ctWzIyNHB4XSBnYXAtNCcgOiAndy1mdWxsIGdhcC0wJ107XG4gIH1cblxuICBoZWFkZXJDbGFzc2VzKG1vbnRoOiBQZG1DYWxlbmRhck1vbnRoVmlldyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWydmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuJywgbW9udGgudGl0bGVTdHlsZSA9PT0gJ2Ryb3Bkb3ducycgPyAnJyA6ICdtYi00J107XG4gIH1cblxuICBuYXZCdXR0b25DbGFzc2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ2ZsZXggaC04IHctOCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZCB0ZXh0LWZvcmVncm91bmQnLFxuICAgICAgJ2Rpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6b3BhY2l0eS00MCdcbiAgICBdO1xuICB9XG5cbiAgbmF2UGxhY2Vob2xkZXJDbGFzc2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWydoLTcgdy03IHNocmluay0wJ107XG4gIH1cblxuICBkcm9wZG93bldyYXBDbGFzc2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWydmbGV4IHctNDAgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yJ107XG4gIH1cblxuICBkcm9wZG93bkNsYXNzZXMod2lkdGhDbGFzczogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbJ2ZsZXggaC04IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMSBweC0xJywgd2lkdGhDbGFzc107XG4gIH1cblxuICBkcm9wZG93blNlbGVjdENsYXNzZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAndGV4dC1mb3JlZ3JvdW5kIGgtZnVsbCBiZy10cmFuc3BhcmVudCB0ZXh0LXNtIGZvbnQtbWVkaXVtIGxlYWRpbmctNScsXG4gICAgICAnYXBwZWFyYW5jZS1ub25lIGJvcmRlci0wIG91dGxpbmUtbm9uZSByaW5nLTAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCB0ZXh0LWNlbnRlciBjdXJzb3ItcG9pbnRlcidcbiAgICBdO1xuICB9XG5cbiAgZ2V0IGRyb3Bkb3duU2VsZWN0U3R5bGUoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFwcGVhcmFuY2U6ICdub25lJyxcbiAgICAgIFdlYmtpdEFwcGVhcmFuY2U6ICdub25lJyxcbiAgICAgIE1vekFwcGVhcmFuY2U6ICdub25lJyxcbiAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICBib3JkZXI6ICcwJyxcbiAgICAgIGJveFNoYWRvdzogJ25vbmUnLFxuICAgICAgb3V0bGluZTogJzAnLFxuICAgICAgcGFkZGluZzogJzAnLFxuICAgICAgbWFyZ2luOiAnMCdcbiAgICB9O1xuICB9XG5cbiAgY2FsZW5kYXJHcmlkV3JhcENsYXNzZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbJ2ZsZXggdy1mdWxsIGZsZXgtY29sIGl0ZW1zLXN0YXJ0J107XG4gIH1cblxuICB3ZWVrZGF5Um93Q2xhc3NlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsnZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyJ107XG4gIH1cblxuICB3ZWVrZGF5Q2VsbENsYXNzZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbJ3RleHQtbXV0ZWQtZm9yZWdyb3VuZCBmbGV4IGgtWzIxcHhdIHctOCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZCB0ZXh0LXhzIGxlYWRpbmctNCddO1xuICB9XG5cbiAgd2Vla1Jvd0NsYXNzZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbJ2ZsZXggdy1mdWxsIGl0ZW1zLXN0YXJ0IHB0LTInXTtcbiAgfVxuXG4gIGRheUNlbGxDbGFzc2VzKGNlbGw6IFBkbUNhbGVuZGFyQ2VsbCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ3JlbGF0aXZlIGZsZXggaC04IHctOCBzaHJpbmstMCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXInLFxuICAgICAgY2VsbC5yYW5nZUZpbGwgPyAnYmctYWNjZW50JyA6ICcnLFxuICAgICAgY2VsbC5yYW5nZUxlZnRDYXAgPyAncm91bmRlZC1sLW1kJyA6ICcnLFxuICAgICAgY2VsbC5yYW5nZVJpZ2h0Q2FwID8gJ3JvdW5kZWQtci1tZCcgOiAnJ1xuICAgIF07XG4gIH1cblxuICBkYXlCdXR0b25DbGFzc2VzKGNlbGw6IFBkbUNhbGVuZGFyQ2VsbCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ3JlbGF0aXZlIHotMTAgZmxleCBoLTggdy04IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLW1kIHRleHQtc20gbGVhZGluZy01JyxcbiAgICAgIGNlbGwuc2VsZWN0ZWQgPyAnYmctcHJpbWFyeSB0ZXh0LXByaW1hcnktZm9yZWdyb3VuZCcgOiBjZWxsLnJhbmdlRmlsbCA/ICd0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kJyA6ICd0ZXh0LWZvcmVncm91bmQnLFxuICAgICAgY2VsbC5tdXRlZCAmJiAhY2VsbC5yYW5nZUZpbGwgPyAnb3BhY2l0eS01MCcgOiAnJyxcbiAgICAgIGNlbGwuZGlzYWJsZWQgPyAnY3Vyc29yLW5vdC1hbGxvd2VkIG9wYWNpdHktNDAnIDogJycsXG4gICAgICAhY2VsbC5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkb25seSAmJiAhY2VsbC5zZWxlY3RlZCA/ICdob3ZlcjpiZy1hY2NlbnQvNzAnIDogJydcbiAgICBdO1xuICB9XG5cbiAgZGF5TGFiZWxDbGFzc2VzKF9jZWxsOiBQZG1DYWxlbmRhckNlbGwpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsnZm9udC1ub3JtYWwnXTtcbiAgfVxuXG4gIHRyYWNrQnlJbmRleCA9IChpbmRleDogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICB0cmFja0J5RGF0ZSA9IChfaW5kZXg6IG51bWJlciwgY2VsbDogUGRtQ2FsZW5kYXJDZWxsKTogc3RyaW5nID0+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRlS2V5KGNlbGwuZGF0ZSk7XG4gIH1cblxuICBnb1RvUHJldmlvdXNNb250aCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEFuY2hvck1vbnRoKHRoaXMuYWRkTW9udGhzKHRoaXMuZ2V0QW5jaG9yTW9udGgoKSwgLTEpKTtcbiAgfVxuXG4gIGdvVG9OZXh0TW9udGgoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRBbmNob3JNb250aCh0aGlzLmFkZE1vbnRocyh0aGlzLmdldEFuY2hvck1vbnRoKCksIDEpKTtcbiAgfVxuXG4gIG9uU2luZ2xlTW9udGhDaGFuZ2UobW9udGhWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbW9udGggPSBOdW1iZXIobW9udGhWYWx1ZSk7XG4gICAgaWYgKE51bWJlci5pc05hTihtb250aCkgfHwgbW9udGggPCAwIHx8IG1vbnRoID4gMTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhbmNob3IgPSB0aGlzLmdldEFuY2hvck1vbnRoKCk7XG4gICAgdGhpcy5zZXRBbmNob3JNb250aChuZXcgRGF0ZShhbmNob3IuZ2V0RnVsbFllYXIoKSwgbW9udGgsIDEpKTtcbiAgfVxuXG4gIG9uU2luZ2xlWWVhckNoYW5nZSh5ZWFyVmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHllYXIgPSBOdW1iZXIoeWVhclZhbHVlKTtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKHllYXIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYW5jaG9yID0gdGhpcy5nZXRBbmNob3JNb250aCgpO1xuICAgIHRoaXMuc2V0QW5jaG9yTW9udGgobmV3IERhdGUoeWVhciwgYW5jaG9yLmdldE1vbnRoKCksIDEpKTtcbiAgfVxuXG4gIG9uRGF0ZVByZXNzZWQoY2VsbDogUGRtQ2FsZW5kYXJDZWxsKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IHRoaXMuY2xvbmVEYXRlKGNlbGwuZGF0ZSk7XG5cbiAgICBpZiAoY2VsbC5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5kaXNhYmxlZERhdGVDbGljay5lbWl0KGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kYXRlQ2xpY2suZW1pdChkYXRlKTtcblxuICAgIGlmICh0aGlzLnJlc29sdmVkVmFyaWFudCA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gZGF0ZTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmNsb25lRGF0ZShkYXRlKSk7XG4gICAgICB0aGlzLnN5bmNWaXNpYmxlTW9udGhUb0RhdGUoZGF0ZSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmhhbmRsZVJhbmdlU2VsZWN0aW9uKGRhdGUpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVSYW5nZVNlbGVjdGlvbihkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuX3JhbmdlVmFsdWU7XG4gICAgY29uc3QgY3VycmVudFN0YXJ0ID0gY3VycmVudD8uc3RhcnQgPyB0aGlzLmNsb25lRGF0ZShjdXJyZW50LnN0YXJ0KSA6IG51bGw7XG4gICAgY29uc3QgY3VycmVudEVuZCA9IGN1cnJlbnQ/LmVuZCA/IHRoaXMuY2xvbmVEYXRlKGN1cnJlbnQuZW5kKSA6IG51bGw7XG5cbiAgICBpZiAoIWN1cnJlbnRTdGFydCB8fCAoY3VycmVudFN0YXJ0ICYmIGN1cnJlbnRFbmQpKSB7XG4gICAgICB0aGlzLl9yYW5nZVZhbHVlID0geyBzdGFydDogZGF0ZSwgZW5kOiBudWxsIH07XG4gICAgICB0aGlzLnJhbmdlVmFsdWVDaGFuZ2UuZW1pdCh7IHN0YXJ0OiB0aGlzLmNsb25lRGF0ZShkYXRlKSwgZW5kOiBudWxsIH0pO1xuICAgICAgdGhpcy5zeW5jVmlzaWJsZU1vbnRoVG9EYXRlKGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzU2FtZURheShjdXJyZW50U3RhcnQsIGRhdGUpICYmICF0aGlzLmFsbG93U2FtZURheVJhbmdlKSB7XG4gICAgICB0aGlzLl9yYW5nZVZhbHVlID0geyBzdGFydDogZGF0ZSwgZW5kOiBudWxsIH07XG4gICAgICB0aGlzLnJhbmdlVmFsdWVDaGFuZ2UuZW1pdCh7IHN0YXJ0OiB0aGlzLmNsb25lRGF0ZShkYXRlKSwgZW5kOiBudWxsIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5jb21wYXJlRGF0ZShkYXRlLCBjdXJyZW50U3RhcnQpIDwgMCA/IGRhdGUgOiBjdXJyZW50U3RhcnQ7XG4gICAgY29uc3QgZW5kID0gdGhpcy5jb21wYXJlRGF0ZShkYXRlLCBjdXJyZW50U3RhcnQpIDwgMCA/IGN1cnJlbnRTdGFydCA6IGRhdGU7XG5cbiAgICBpZiAodGhpcy5yYW5nZUNvbnRhaW5zQmxvY2tlZERhdGUoc3RhcnQsIGVuZCkpIHtcbiAgICAgIHRoaXMuZGlzYWJsZWREYXRlQ2xpY2suZW1pdCh0aGlzLmNsb25lRGF0ZShkYXRlKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcmFuZ2VWYWx1ZSA9IHsgc3RhcnQsIGVuZCB9O1xuICAgIHRoaXMucmFuZ2VWYWx1ZUNoYW5nZS5lbWl0KHsgc3RhcnQ6IHRoaXMuY2xvbmVEYXRlKHN0YXJ0KSwgZW5kOiB0aGlzLmNsb25lRGF0ZShlbmQpIH0pO1xuICAgIHRoaXMuc3luY1Zpc2libGVNb250aFRvRGF0ZShzdGFydCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTW9udGhXZWVrcyhtb250aDogRGF0ZSwgaW5jbHVkZVJhbmdlOiBib29sZWFuKTogcmVhZG9ubHkgKHJlYWRvbmx5IFBkbUNhbGVuZGFyQ2VsbFtdKVtdIHtcbiAgICBjb25zdCBmaXJzdE9mTW9udGggPSB0aGlzLnN0YXJ0T2ZNb250aChtb250aCk7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLnN0YXJ0T2ZXZWVrKGZpcnN0T2ZNb250aCk7XG4gICAgY29uc3QgZW5kID0gdGhpcy5lbmRPZldlZWsodGhpcy5lbmRPZk1vbnRoKGZpcnN0T2ZNb250aCkpO1xuICAgIGNvbnN0IHdlZWtzOiBQZG1DYWxlbmRhckNlbGxbXVtdID0gW107XG5cbiAgICBsZXQgY3Vyc29yID0gdGhpcy5jbG9uZURhdGUoc3RhcnQpO1xuICAgIHdoaWxlICh0aGlzLmNvbXBhcmVEYXRlKGN1cnNvciwgZW5kKSA8PSAwKSB7XG4gICAgICBjb25zdCByb3c6IFBkbUNhbGVuZGFyQ2VsbFtdID0gW107XG5cbiAgICAgIGZvciAobGV0IGNvbCA9IDA7IGNvbCA8IDc7IGNvbCArPSAxKSB7XG4gICAgICAgIHJvdy5wdXNoKHRoaXMuYnVpbGRDZWxsKGN1cnNvciwgbW9udGgsIGluY2x1ZGVSYW5nZSkpO1xuICAgICAgICBjdXJzb3IgPSB0aGlzLmFkZERheXMoY3Vyc29yLCAxKTtcbiAgICAgIH1cblxuICAgICAgd2Vla3MucHVzaChyb3cpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgcm93IG9mIHdlZWtzKSB7XG4gICAgICBmb3IgKGxldCBjb2wgPSAwOyBjb2wgPCByb3cubGVuZ3RoOyBjb2wgKz0gMSkge1xuICAgICAgICBjb25zdCBjZWxsID0gcm93W2NvbF07XG4gICAgICAgIGlmICghY2VsbC5pblJhbmdlKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsZWZ0SW5Sb3cgPSBjb2wgPiAwID8gcm93W2NvbCAtIDFdLmluUmFuZ2UgOiBmYWxzZTtcbiAgICAgICAgY29uc3QgcmlnaHRJblJvdyA9IGNvbCA8IHJvdy5sZW5ndGggLSAxID8gcm93W2NvbCArIDFdLmluUmFuZ2UgOiBmYWxzZTtcblxuICAgICAgICBjZWxsLnJhbmdlTGVmdENhcCA9ICFsZWZ0SW5Sb3c7XG4gICAgICAgIGNlbGwucmFuZ2VSaWdodENhcCA9ICFyaWdodEluUm93O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB3ZWVrcztcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDZWxsKGRhdGU6IERhdGUsIHZpc2libGVNb250aDogRGF0ZSwgaW5jbHVkZVJhbmdlOiBib29sZWFuKTogUGRtQ2FsZW5kYXJDZWxsIHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gdGhpcy5jbG9uZURhdGUoZGF0ZSk7XG4gICAgY29uc3QgaW5DdXJyZW50TW9udGggPSBub3JtYWxpemVkLmdldE1vbnRoKCkgPT09IHZpc2libGVNb250aC5nZXRNb250aCgpICYmIG5vcm1hbGl6ZWQuZ2V0RnVsbFllYXIoKSA9PT0gdmlzaWJsZU1vbnRoLmdldEZ1bGxZZWFyKCk7XG4gICAgY29uc3QgZGlzYWJsZWQgPSB0aGlzLmlzQmxvY2tlZChub3JtYWxpemVkKTtcblxuICAgIGNvbnN0IHNlbGVjdGVkU2luZ2xlID0gdGhpcy5yZXNvbHZlZFZhcmlhbnQgPT09ICdzaW5nbGUnICYmICEhdGhpcy5fdmFsdWUgJiYgdGhpcy5pc1NhbWVEYXkobm9ybWFsaXplZCwgdGhpcy5fdmFsdWUpO1xuICAgIGNvbnN0IHJhbmdlU3RhcnQgPSBpbmNsdWRlUmFuZ2UgJiYgISF0aGlzLl9yYW5nZVZhbHVlPy5zdGFydCAmJiB0aGlzLmlzU2FtZURheShub3JtYWxpemVkLCB0aGlzLl9yYW5nZVZhbHVlLnN0YXJ0KTtcbiAgICBjb25zdCByYW5nZUVuZCA9IGluY2x1ZGVSYW5nZSAmJiAhIXRoaXMuX3JhbmdlVmFsdWU/LmVuZCAmJiB0aGlzLmlzU2FtZURheShub3JtYWxpemVkLCB0aGlzLl9yYW5nZVZhbHVlLmVuZCk7XG4gICAgY29uc3QgaW5SYW5nZSA9XG4gICAgICBpbmNsdWRlUmFuZ2UgJiZcbiAgICAgICEhdGhpcy5fcmFuZ2VWYWx1ZT8uc3RhcnQgJiZcbiAgICAgICEhdGhpcy5fcmFuZ2VWYWx1ZT8uZW5kICYmXG4gICAgICB0aGlzLmNvbXBhcmVEYXRlKG5vcm1hbGl6ZWQsIHRoaXMuX3JhbmdlVmFsdWUuc3RhcnQpID49IDAgJiZcbiAgICAgIHRoaXMuY29tcGFyZURhdGUobm9ybWFsaXplZCwgdGhpcy5fcmFuZ2VWYWx1ZS5lbmQpIDw9IDA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0ZTogbm9ybWFsaXplZCxcbiAgICAgIGxhYmVsOiBub3JtYWxpemVkLmdldERhdGUoKSxcbiAgICAgIG11dGVkOiAhaW5DdXJyZW50TW9udGgsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIHNlbGVjdGVkOiBzZWxlY3RlZFNpbmdsZSB8fCByYW5nZVN0YXJ0IHx8IHJhbmdlRW5kLFxuICAgICAgaW5SYW5nZSxcbiAgICAgIHJhbmdlRmlsbDogaW5SYW5nZSxcbiAgICAgIHJhbmdlTGVmdENhcDogZmFsc2UsXG4gICAgICByYW5nZVJpZ2h0Q2FwOiBmYWxzZVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldEFuY2hvck1vbnRoKCk6IERhdGUge1xuICAgIGlmICh0aGlzLl9tb250aCkge1xuICAgICAgcmV0dXJuIHRoaXMuY2xvbmVEYXRlKHRoaXMuX21vbnRoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNvbHZlZFZhcmlhbnQgPT09ICdzaW5nbGUnICYmIHRoaXMuX3ZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGFydE9mTW9udGgodGhpcy5fdmFsdWUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc29sdmVkVmFyaWFudCA9PT0gJ3JhbmdlJyAmJiB0aGlzLl9yYW5nZVZhbHVlPy5zdGFydCkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhcnRPZk1vbnRoKHRoaXMuX3JhbmdlVmFsdWUuc3RhcnQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YXJ0T2ZNb250aChERUZBVUxUX1ZJRVdfTU9OVEgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRBbmNob3JNb250aChtb250aDogRGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuX21vbnRoID0gdGhpcy5zdGFydE9mTW9udGgobW9udGgpO1xuICAgIHRoaXMubW9udGhDaGFuZ2UuZW1pdCh0aGlzLmNsb25lRGF0ZSh0aGlzLl9tb250aCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW5jVmlzaWJsZU1vbnRoVG9EYXRlKGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBuZXh0TW9udGggPSB0aGlzLnN0YXJ0T2ZNb250aChkYXRlKTtcbiAgICBpZiAoIXRoaXMuX21vbnRoIHx8ICF0aGlzLmlzU2FtZU1vbnRoKHRoaXMuX21vbnRoLCBuZXh0TW9udGgpKSB7XG4gICAgICB0aGlzLl9tb250aCA9IG5leHRNb250aDtcbiAgICAgIHRoaXMubW9udGhDaGFuZ2UuZW1pdCh0aGlzLmNsb25lRGF0ZShuZXh0TW9udGgpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzQmxvY2tlZChkYXRlOiBEYXRlKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubWluRGF0ZSAmJiB0aGlzLmNvbXBhcmVEYXRlKGRhdGUsIHRoaXMubWluRGF0ZSkgPCAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tYXhEYXRlICYmIHRoaXMuY29tcGFyZURhdGUoZGF0ZSwgdGhpcy5tYXhEYXRlKSA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGJsb2NrZWRTZXQgPSBuZXcgU2V0KCh0aGlzLmRpc2FibGVkRGF0ZXMgfHwgW10pLm1hcCgoaXRlbSkgPT4gdGhpcy5kYXRlS2V5KGl0ZW0pKSk7XG4gICAgaWYgKGJsb2NrZWRTZXQuaGFzKHRoaXMuZGF0ZUtleShkYXRlKSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiAhIXRoaXMuaXNEYXRlRGlzYWJsZWQ/Lih0aGlzLmNsb25lRGF0ZShkYXRlKSk7XG4gIH1cblxuICBwcml2YXRlIHJhbmdlQ29udGFpbnNCbG9ja2VkRGF0ZShzdGFydDogRGF0ZSwgZW5kOiBEYXRlKTogYm9vbGVhbiB7XG4gICAgbGV0IGN1cnNvciA9IHRoaXMuY2xvbmVEYXRlKHN0YXJ0KTtcblxuICAgIHdoaWxlICh0aGlzLmNvbXBhcmVEYXRlKGN1cnNvciwgZW5kKSA8PSAwKSB7XG4gICAgICBpZiAodGhpcy5pc0Jsb2NrZWQoY3Vyc29yKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGN1cnNvciA9IHRoaXMuYWRkRGF5cyhjdXJzb3IsIDEpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplRGF0ZSh2YWx1ZTogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB8fCBOdW1iZXIuaXNOYU4odmFsdWUuZ2V0VGltZSgpKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlLmdldEZ1bGxZZWFyKCksIHZhbHVlLmdldE1vbnRoKCksIHZhbHVlLmdldERhdGUoKSk7XG4gIH1cblxuICBwcml2YXRlIGNsb25lRGF0ZShkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0T2ZNb250aChkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCAxKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5kT2ZNb250aChkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpICsgMSwgMCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0T2ZXZWVrKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5hZGREYXlzKGRhdGUsIC1kYXRlLmdldERheSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5kT2ZXZWVrKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5hZGREYXlzKGRhdGUsIDYgLSBkYXRlLmdldERheSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTW9udGhzKGRhdGU6IERhdGUsIG1vbnRoczogbnVtYmVyKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpICsgbW9udGhzLCAxKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRGF5cyhkYXRlOiBEYXRlLCBkYXlzOiBudW1iZXIpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpICsgZGF5cyk7XG4gIH1cblxuICBwcml2YXRlIGNvbXBhcmVEYXRlKGE6IERhdGUsIGI6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmRhdGVWYWx1ZShhKSAtIHRoaXMuZGF0ZVZhbHVlKGIpO1xuICB9XG5cbiAgcHJpdmF0ZSBkYXRlVmFsdWUoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIERhdGUuVVRDKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSkgLyBEQVlfTVM7XG4gIH1cblxuICBwcml2YXRlIGlzU2FtZURheShhOiBEYXRlLCBiOiBEYXRlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29tcGFyZURhdGUoYSwgYikgPT09IDA7XG4gIH1cblxuICBwcml2YXRlIGlzU2FtZU1vbnRoKGE6IERhdGUsIGI6IERhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gYS5nZXRGdWxsWWVhcigpID09PSBiLmdldEZ1bGxZZWFyKCkgJiYgYS5nZXRNb250aCgpID09PSBiLmdldE1vbnRoKCk7XG4gIH1cblxuICBwcml2YXRlIGRhdGVLZXkoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgY29uc3QgeSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICBjb25zdCBtID0gU3RyaW5nKGRhdGUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgY29uc3QgZCA9IFN0cmluZyhkYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICByZXR1cm4gYCR7eX0tJHttfS0ke2R9YDtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0TW9udGhTaG9ydChkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF0ZS50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7IG1vbnRoOiAnc2hvcnQnIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRNb250aFllYXIoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywgeyBtb250aDogJ2xvbmcnLCB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gIH1cbn1cbiIsIjxkaXYgW25nQ2xhc3NdPVwicm9vdENsYXNzZXNcIiBbbmdTdHlsZV09XCJyb290U3R5bGVcIj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgbW9udGggb2YgdmlzaWJsZU1vbnRoczsgbGV0IG1vbnRoSW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCIgW25nQ2xhc3NdPVwibW9udGhQYW5lbENsYXNzZXMobW9udGhJbmRleClcIj5cbiAgICA8ZGl2IFtuZ0NsYXNzXT1cImhlYWRlckNsYXNzZXMobW9udGgpXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwibW9udGguc2hvd1ByZXZCdXR0b247IGVsc2UgcHJldlBsYWNlaG9sZGVyXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIm5hdkJ1dHRvbkNsYXNzZXMoKVwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJQcmV2aW91cyBtb250aFwiXG4gICAgICAgIChjbGljayk9XCJnb1RvUHJldmlvdXNNb250aCgpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCJcbiAgICAgID5cbiAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgY2xhc3M9XCJoLTQgdy00XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgPHBhdGggZD1cIm0xNSAxOC02LTYgNi02XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG5nLXRlbXBsYXRlICNwcmV2UGxhY2Vob2xkZXI+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwibmF2UGxhY2Vob2xkZXJDbGFzc2VzKClcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb250aC50aXRsZVN0eWxlID09PSAnZHJvcGRvd25zJzsgZWxzZSBwbGFpblRpdGxlXCI+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZHJvcGRvd25XcmFwQ2xhc3NlcygpXCI+XG4gICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJkcm9wZG93bkNsYXNzZXMoJ3ctWzcycHhdJylcIj5cbiAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZHJvcGRvd25TZWxlY3RDbGFzc2VzKClcIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJkcm9wZG93blNlbGVjdFN0eWxlXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInNpbmdsZUhlYWRlck1vbnRoXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk1vbnRoXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblNpbmdsZU1vbnRoQ2hhbmdlKCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgbW9udGhPcHRpb24gb2YgbW9udGhPcHRpb25zXCIgW3ZhbHVlXT1cIm1vbnRoT3B0aW9uLnZhbHVlXCI+e3sgbW9udGhPcHRpb24ubGFiZWwgfX08L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgY2xhc3M9XCJoLTMgdy0zIHRleHQtZm9yZWdyb3VuZFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwibTYgOSA2IDYgNi02XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJkcm9wZG93bkNsYXNzZXMoJ3ctWzgycHhdJylcIj5cbiAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZHJvcGRvd25TZWxlY3RDbGFzc2VzKClcIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJkcm9wZG93blNlbGVjdFN0eWxlXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInNpbmdsZUhlYWRlclllYXJcIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiWWVhclwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwib25TaW5nbGVZZWFyQ2hhbmdlKCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyT3B0aW9uc1wiIFt2YWx1ZV09XCJ5ZWFyXCI+e3sgeWVhciB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBjbGFzcz1cImgtMyB3LTMgdGV4dC1mb3JlZ3JvdW5kXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJtNiA5IDYgNiA2LTZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNwbGFpblRpdGxlPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBtaW4tdy0wIGZsZXgtMSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICA8cCBjbGFzcz1cInRleHQtZm9yZWdyb3VuZCB0ZXh0LWNlbnRlciB0ZXh0LXNtIGZvbnQtbWVkaXVtIGxlYWRpbmctNVwiPlxuICAgICAgICAgICAge3sgbW9udGgudGl0bGUgfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cIm1vbnRoLnNob3dOZXh0QnV0dG9uOyBlbHNlIG5leHRQbGFjZWhvbGRlclwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbbmdDbGFzc109XCJuYXZCdXR0b25DbGFzc2VzKClcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiTmV4dCBtb250aFwiXG4gICAgICAgIChjbGljayk9XCJnb1RvTmV4dE1vbnRoKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIlxuICAgICAgPlxuICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBjbGFzcz1cImgtNCB3LTRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICA8cGF0aCBkPVwibTkgMTggNi02LTYtNlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbmV4dFBsYWNlaG9sZGVyPlxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIm5hdlBsYWNlaG9sZGVyQ2xhc3NlcygpXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBbbmdDbGFzc109XCJjYWxlbmRhckdyaWRXcmFwQ2xhc3NlcygpXCI+XG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cIndlZWtkYXlSb3dDbGFzc2VzKClcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWtkYXlzOyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIiBbbmdDbGFzc109XCJ3ZWVrZGF5Q2VsbENsYXNzZXMoKVwiPlxuICAgICAgICAgIDxzcGFuPnt7IGRheSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgd2VlayBvZiBtb250aC53ZWVrczsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCIgW25nQ2xhc3NdPVwid2Vla1Jvd0NsYXNzZXMoKVwiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjZWxsIG9mIHdlZWs7IHRyYWNrQnk6IHRyYWNrQnlEYXRlXCIgW25nQ2xhc3NdPVwiZGF5Q2VsbENsYXNzZXMoY2VsbClcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRheUJ1dHRvbkNsYXNzZXMoY2VsbClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiY2VsbC5zZWxlY3RlZFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImNlbGwuZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxuICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiY2VsbC5kYXRlIHwgZGF0ZSA6ICd5eXl5LU1NLWRkJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib25EYXRlUHJlc3NlZChjZWxsKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiZGF5TGFiZWxDbGFzc2VzKGNlbGwpXCI+e3sgY2VsbC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -117,7 +117,7 @@ export class PdmDatePickerComponent {
117
117
  'min-h-[36px] disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',
118
118
  focusStyle
119
119
  ? 'bg-accent border-neutral-400 ring-3 ring-neutral-300'
120
- : 'bg-input border-input',
120
+ : 'bg-background border-input',
121
121
  this.invalid ? 'border-destructive ring-destructive/20' : '',
122
122
  this.triggerClassName
123
123
  ];
@@ -284,4 +284,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
284
284
  type: HostListener,
285
285
  args: ['document:click', ['$event']]
286
286
  }] } });
287
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sSUFBSSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7O0FBR25ELElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBT3pCLE1BQU0sT0FBTyxzQkFBc0I7SUFRakMsWUFDbUIsVUFBbUMsRUFDbkMsR0FBc0I7UUFEdEIsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbkMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFUakMsV0FBTSxHQUFnQixJQUFJLENBQUM7UUFDM0IsZ0JBQVcsR0FBNEIsSUFBSSxDQUFDO1FBQzVDLFVBQUssR0FBRyxLQUFLLENBQUM7UUFFTCxlQUFVLEdBQUcsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5RCxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQU90QixPQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsWUFBTyxHQUFnQyxRQUFRLENBQUM7UUFDaEQsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsZ0JBQVcsR0FBRyxhQUFhLENB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QkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUdILElBQUk7c0JBRFAsS0FBSztnQkFVRixLQUFLO3NCQURSLEtBQUs7Z0JBVUYsVUFBVTtzQkFEYixLQUFLO2dCQXFKTixRQUFRO3NCQURQLFlBQVk7dUJBQUMseUJBQXlCO2dCQVF2QyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JtYXQgYXMgZm9ybWF0RGF0ZUZucyB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IFBkbUNhbGVuZGFyUmFuZ2UsIFBkbUNhbGVuZGFyVmFyaWFudCB9IGZyb20gJy4uL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudCc7XG5cbmxldCBuZXh0RGF0ZVBpY2tlcklkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRtLWRhdGUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUGRtRGF0ZVBpY2tlckNvbXBvbmVudCB7XG4gIHByaXZhdGUgX3ZhbHVlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3JhbmdlVmFsdWU6IFBkbUNhbGVuZGFyUmFuZ2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfb3BlbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5zdGFuY2VJZCA9IGBwZG0tZGF0ZS1waWNrZXItJHsrK25leHREYXRlUGlja2VySWR9YDtcbiAgcHJpdmF0ZSB0cmlnZ2VyRm9jdXNlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBASW5wdXQoKSBpZCA9ICcnO1xuICBASW5wdXQoKSB2YXJpYW50OiBQZG1DYWxlbmRhclZhcmlhbnQgfCBzdHJpbmcgPSAnc2luZ2xlJztcbiAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgQElucHV0KCkgbGFiZWxDbGFzc05hbWUgPSAnJztcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG4gIEBJbnB1dCgpIHRyaWdnZXJDbGFzc05hbWUgPSAnJztcbiAgQElucHV0KCkgcGFuZWxDbGFzc05hbWUgPSAnJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnUGljayBhIGRhdGUnO1xuICBASW5wdXQoKSByYW5nZVBsYWNlaG9sZGVyID0gJ1BpY2sgYSBkYXRlIHJhbmdlJztcbiAgQElucHV0KCkgZm9ybWF0ID0gJ01NTSBkLCB5eXl5JztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgaW52YWxpZCA9IGZhbHNlO1xuICBASW5wdXQoKSBhbGxvd1NhbWVEYXlSYW5nZSA9IHRydWU7XG4gIEBJbnB1dCgpIGNsb3NlT25TZWxlY3QgPSB0cnVlO1xuICBASW5wdXQoKSBtaW5EYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIG1heERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgbWluWWVhcjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIG1heFllYXI6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBkaXNhYmxlZERhdGVzOiBEYXRlW10gPSBbXTtcbiAgQElucHV0KCkgaXNEYXRlRGlzYWJsZWQ6ICgoZGF0ZTogRGF0ZSkgPT4gYm9vbGVhbikgfCBudWxsID0gbnVsbDtcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPigpO1xuICBAT3V0cHV0KCkgcmFuZ2VWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGRtQ2FsZW5kYXJSYW5nZSB8IG51bGw+KCk7XG4gIEBPdXRwdXQoKSBvcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgbW9udGhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG5cbiAgQElucHV0KClcbiAgc2V0IG9wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9vcGVuID0gISF2YWx1ZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuICBnZXQgb3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fb3BlbjtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZSk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cbiAgZ2V0IHZhbHVlKCk6IERhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgcmFuZ2VWYWx1ZSh2YWx1ZTogUGRtQ2FsZW5kYXJSYW5nZSB8IG51bGwpIHtcbiAgICB0aGlzLl9yYW5nZVZhbHVlID0gdmFsdWVcbiAgICAgID8ge1xuICAgICAgICAgIHN0YXJ0OiB0aGlzLm5vcm1hbGl6ZURhdGUodmFsdWUuc3RhcnQpLFxuICAgICAgICAgIGVuZDogdGhpcy5ub3JtYWxpemVEYXRlKHZhbHVlLmVuZClcbiAgICAgICAgfVxuICAgICAgOiBudWxsO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG4gIGdldCByYW5nZVZhbHVlKCk6IFBkbUNhbGVuZGFyUmFuZ2UgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2VWYWx1ZTtcbiAgfVxuXG4gIGdldCByZXNvbHZlZFZhcmlhbnQoKTogUGRtQ2FsZW5kYXJWYXJpYW50IHtcbiAgICByZXR1cm4gdGhpcy52YXJpYW50ID09PSAncmFuZ2UnID8gJ3JhbmdlJyA6ICdzaW5nbGUnO1xuICB9XG5cbiAgZ2V0IHRyaWdnZXJJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlkIHx8IGAke3RoaXMuaW5zdGFuY2VJZH0tdHJpZ2dlcmA7XG4gIH1cblxuICBnZXQgcGFuZWxJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmlkIHx8IHRoaXMuaW5zdGFuY2VJZH0tcGFuZWxgO1xuICB9XG5cbiAgZ2V0IGhhc1NpbmdsZVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVkVmFyaWFudCA9PT0gJ3NpbmdsZScgJiYgISF0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIGdldCBoYXNSYW5nZVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVkVmFyaWFudCA9PT0gJ3JhbmdlJyAmJiAhIXRoaXMuX3JhbmdlVmFsdWU/LnN0YXJ0O1xuICB9XG5cbiAgZ2V0IGRpc3BsYXlUZXh0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucmVzb2x2ZWRWYXJpYW50ID09PSAnc2luZ2xlJykge1xuICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlID8gdGhpcy5mb3JtYXREYXRlKHRoaXMuX3ZhbHVlKSA6IHRoaXMucGxhY2Vob2xkZXI7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9yYW5nZVZhbHVlPy5zdGFydCA/PyBudWxsO1xuICAgIGNvbnN0IGVuZCA9IHRoaXMuX3JhbmdlVmFsdWU/LmVuZCA/PyBudWxsO1xuXG4gICAgaWYgKCFzdGFydCkge1xuICAgICAgcmV0dXJuIHRoaXMucmFuZ2VQbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICBpZiAoIWVuZCkge1xuICAgICAgcmV0dXJuIGAke3RoaXMuZm9ybWF0RGF0ZShzdGFydCl9IC1gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0aGlzLmZvcm1hdERhdGUoc3RhcnQpfSAtICR7dGhpcy5mb3JtYXREYXRlKGVuZCl9YDtcbiAgfVxuXG4gIGdldCB0ZXh0Q2xhc3NlcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgaGFzVmFsdWUgPSB0aGlzLnJlc29sdmVkVmFyaWFudCA9PT0gJ3NpbmdsZScgPyB0aGlzLmhhc1NpbmdsZVZhbHVlIDogdGhpcy5oYXNSYW5nZVZhbHVlO1xuICAgIHJldHVybiBbXG4gICAgICAnbWluLXctMCBmbGV4LTEgdHJ1bmNhdGUgdGV4dC1sZWZ0IHRleHQtc20gbGVhZGluZy01JyxcbiAgICAgIGhhc1ZhbHVlID8gJ3RleHQtZm9yZWdyb3VuZCcgOiAndGV4dC1tdXRlZC1mb3JlZ3JvdW5kJ1xuICAgIF07XG4gIH1cblxuICBnZXQgcm9vdENsYXNzZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnZ3JpZCBnYXAtMicsXG4gICAgICB0aGlzLnJlc29sdmVkVmFyaWFudCA9PT0gJ3JhbmdlJyA/ICd3LVsyODBweF0nIDogJ3ctWzE5N3B4XScsXG4gICAgICB0aGlzLmNsYXNzTmFtZVxuICAgIF07XG4gIH1cblxuICBnZXQgdHJpZ2dlckNsYXNzZXMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZvY3VzU3R5bGUgPSB0aGlzLm9wZW4gfHwgdGhpcy50cmlnZ2VyRm9jdXNlZDtcblxuICAgIHJldHVybiBbXG4gICAgICAncmVsYXRpdmUgZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGdhcC0yIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWxnIGJvcmRlciBweC0zIHB5LVs3LjVweF0gdGV4dC1sZWZ0IHNoYWRvdy14cyBvdXRsaW5lLW5vbmUgdHJhbnNpdGlvbi1jb2xvcnMnLFxuICAgICAgJ21pbi1oLVszNnB4XSBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwJyxcbiAgICAgIGZvY3VzU3R5bGVcbiAgICAgICAgPyAnYmctYWNjZW50IGJvcmRlci1uZXV0cmFsLTQwMCByaW5nLTMgcmluZy1uZXV0cmFsLTMwMCdcbiAgICAgICAgOiAnYmctaW5wdXQgYm9yZGVyLWlucHV0JyxcbiAgICAgIHRoaXMuaW52YWxpZCA/ICdib3JkZXItZGVzdHJ1Y3RpdmUgcmluZy1kZXN0cnVjdGl2ZS8yMCcgOiAnJyxcbiAgICAgIHRoaXMudHJpZ2dlckNsYXNzTmFtZVxuICAgIF07XG4gIH1cblxuICBnZXQgcGFuZWxDbGFzc2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ2Fic29sdXRlIGxlZnQtMCB0b3AtZnVsbCB6LTMwIG10LTInLFxuICAgICAgdGhpcy5wYW5lbENsYXNzTmFtZVxuICAgIF07XG4gIH1cblxuICB0b2dnbGVPcGVuKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldE9wZW4oIXRoaXMub3Blbik7XG4gIH1cblxuICBvblRyaWdnZXJGb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLnRyaWdnZXJGb2N1c2VkID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uVHJpZ2dlckJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy50cmlnZ2VyRm9jdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb25DYWxlbmRhclZhbHVlQ2hhbmdlKHZhbHVlOiBEYXRlIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5ub3JtYWxpemVEYXRlKHZhbHVlKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5fdmFsdWUgPyB0aGlzLmNsb25lRGF0ZSh0aGlzLl92YWx1ZSkgOiBudWxsKTtcblxuICAgIGlmICh0aGlzLmNsb3NlT25TZWxlY3QgJiYgdGhpcy5fdmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0T3BlbihmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2FsZW5kYXJSYW5nZVZhbHVlQ2hhbmdlKHZhbHVlOiBQZG1DYWxlbmRhclJhbmdlIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuX3JhbmdlVmFsdWUgPSB2YWx1ZVxuICAgICAgPyB7XG4gICAgICAgICAgc3RhcnQ6IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZS5zdGFydCksXG4gICAgICAgICAgZW5kOiB0aGlzLm5vcm1hbGl6ZURhdGUodmFsdWUuZW5kKVxuICAgICAgICB9XG4gICAgICA6IG51bGw7XG5cbiAgICB0aGlzLnJhbmdlVmFsdWVDaGFuZ2UuZW1pdChcbiAgICAgIHRoaXMuX3JhbmdlVmFsdWVcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBzdGFydDogdGhpcy5fcmFuZ2VWYWx1ZS5zdGFydCA/IHRoaXMuY2xvbmVEYXRlKHRoaXMuX3JhbmdlVmFsdWUuc3RhcnQpIDogbnVsbCxcbiAgICAgICAgICAgIGVuZDogdGhpcy5fcmFuZ2VWYWx1ZS5lbmQgPyB0aGlzLmNsb25lRGF0ZSh0aGlzLl9yYW5nZVZhbHVlLmVuZCkgOiBudWxsXG4gICAgICAgICAgfVxuICAgICAgICA6IG51bGxcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuY2xvc2VPblNlbGVjdCAmJiB0aGlzLl9yYW5nZVZhbHVlPy5zdGFydCAmJiB0aGlzLl9yYW5nZVZhbHVlPy5lbmQpIHtcbiAgICAgIHRoaXMuc2V0T3BlbihmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvbkNhbGVuZGFyTW9udGhDaGFuZ2UobW9udGg6IERhdGUpOiB2b2lkIHtcbiAgICB0aGlzLm1vbnRoQ2hhbmdlLmVtaXQodGhpcy5jbG9uZURhdGUobW9udGgpKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJylcbiAgb25Fc2NhcGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgdGhpcy5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5vcGVuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIE5vZGUgfCBudWxsO1xuICAgIGlmICh0YXJnZXQgJiYgIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgIHRoaXMuc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRPcGVuKG5leHRPcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX29wZW4gPT09IG5leHRPcGVuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fb3BlbiA9IG5leHRPcGVuO1xuICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KHRoaXMuX29wZW4pO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXREYXRlKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZm9ybWF0RGF0ZUZucyhkYXRlLCB0aGlzLmZvcm1hdCB8fCAnTU1NIGQsIHl5eXknKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmb3JtYXREYXRlRm5zKGRhdGUsICdNTU0gZCwgeXl5eScpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplRGF0ZSh2YWx1ZTogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpOiBEYXRlIHwgbnVsbCB7XG4gICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB8fCBOdW1iZXIuaXNOYU4odmFsdWUuZ2V0VGltZSgpKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlLmdldEZ1bGxZZWFyKCksIHZhbHVlLmdldE1vbnRoKCksIHZhbHVlLmdldERhdGUoKSk7XG4gIH1cblxuICBwcml2YXRlIGNsb25lRGF0ZShkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSk7XG4gIH1cbn1cbiIsIjxkaXYgW25nQ2xhc3NdPVwicm9vdENsYXNzZXNcIj5cbiAgPHBkbS1sYWJlbCAqbmdJZj1cImxhYmVsXCIgW2ZvcklkXT1cInRyaWdnZXJJZFwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIFtjbGFzc05hbWVdPVwibGFiZWxDbGFzc05hbWVcIj5cbiAgICB7eyBsYWJlbCB9fVxuICA8L3BkbS1sYWJlbD5cblxuICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgaW5saW5lLWJsb2NrIHctZnVsbFwiPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2lkXT1cInRyaWdnZXJJZFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvcGVuXCJcbiAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwicGFuZWxJZFwiXG4gICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cIidkaWFsb2cnXCJcbiAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJpbnZhbGlkXCJcbiAgICAgIFtuZ0NsYXNzXT1cInRyaWdnZXJDbGFzc2VzXCJcbiAgICAgIFthdHRyLnRpdGxlXT1cImRpc3BsYXlUZXh0XCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVPcGVuKClcIlxuICAgICAgKGZvY3VzKT1cIm9uVHJpZ2dlckZvY3VzKClcIlxuICAgICAgKGJsdXIpPVwib25UcmlnZ2VyQmx1cigpXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cImZsZXggaC01IHctNSBzaHJpbmstMCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC0wLjUgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGNsYXNzPVwiaC00IHctNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS44XCI+XG4gICAgICAgICAgPHBhdGggZD1cIk04IDJ2NFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgICAgICA8cGF0aCBkPVwiTTE2IDJ2NFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cbiAgICAgICAgICA8cmVjdCB4PVwiM1wiIHk9XCI0LjVcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMTYuNVwiIHJ4PVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcmVjdD5cbiAgICAgICAgICA8cGF0aCBkPVwiTTMgOS41aDE4XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHNwYW4gW25nQ2xhc3NdPVwidGV4dENsYXNzZXNcIj57eyBkaXNwbGF5VGV4dCB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXYgKm5nSWY9XCJvcGVuXCIgW2lkXT1cInBhbmVsSWRcIiBbbmdDbGFzc109XCJwYW5lbENsYXNzZXNcIiByb2xlPVwiZGlhbG9nXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImxhYmVsID8gdHJpZ2dlcklkIDogbnVsbFwiPlxuICAgICAgPHBkbS1jYWxlbmRhclxuICAgICAgICBbdmFyaWFudF09XCJyZXNvbHZlZFZhcmlhbnRcIlxuICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICBbcmFuZ2VWYWx1ZV09XCJyYW5nZVZhbHVlXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgW2FsbG93U2FtZURheVJhbmdlXT1cImFsbG93U2FtZURheVJhbmdlXCJcbiAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgICAgICBbbWluWWVhcl09XCJtaW5ZZWFyXCJcbiAgICAgICAgW21heFllYXJdPVwibWF4WWVhclwiXG4gICAgICAgIFtkaXNhYmxlZERhdGVzXT1cImRpc2FibGVkRGF0ZXNcIlxuICAgICAgICBbaXNEYXRlRGlzYWJsZWRdPVwiaXNEYXRlRGlzYWJsZWRcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25DYWxlbmRhclZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAocmFuZ2VWYWx1ZUNoYW5nZSk9XCJvbkNhbGVuZGFyUmFuZ2VWYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm9uQ2FsZW5kYXJNb250aENoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L3BkbS1jYWxlbmRhcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
287
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sSUFBSSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7O0FBR25ELElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBT3pCLE1BQU0sT0FBTyxzQkFBc0I7SUFRakMsWUFDbUIsVUFBbUMsRUFDbkMsR0FBc0I7UUFEdEIsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbkMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFUakMsV0FBTSxHQUFnQixJQUFJLENBQUM7UUFDM0IsZ0JBQVcsR0FBNEIsSUFBSSxDQUFDO1FBQzVDLFVBQUssR0FBRyxLQUFLLENBQUM7UUFFTCxlQUFVLEdBQUcsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5RCxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQU90QixPQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1IsWUFBTyxHQUFnQyxRQUFRLENBQUM7UUFDaEQsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsZ0JBQVcsR0FBRyxhQUFhLENB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QkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUdILElBQUk7c0JBRFAsS0FBSztnQkFVRixLQUFLO3NCQURSLEtBQUs7Z0JBVUYsVUFBVTtzQkFEYixLQUFLO2dCQXFKTixRQUFRO3NCQURQLFlBQVk7dUJBQUMseUJBQXlCO2dCQVF2QyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JtYXQgYXMgZm9ybWF0RGF0ZUZucyB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IFBkbUNhbGVuZGFyUmFuZ2UsIFBkbUNhbGVuZGFyVmFyaWFudCB9IGZyb20gJy4uL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudCc7XG5cbmxldCBuZXh0RGF0ZVBpY2tlcklkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRtLWRhdGUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUGRtRGF0ZVBpY2tlckNvbXBvbmVudCB7XG4gIHByaXZhdGUgX3ZhbHVlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3JhbmdlVmFsdWU6IFBkbUNhbGVuZGFyUmFuZ2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfb3BlbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5zdGFuY2VJZCA9IGBwZG0tZGF0ZS1waWNrZXItJHsrK25leHREYXRlUGlja2VySWR9YDtcbiAgcHJpdmF0ZSB0cmlnZ2VyRm9jdXNlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBASW5wdXQoKSBpZCA9ICcnO1xuICBASW5wdXQoKSB2YXJpYW50OiBQZG1DYWxlbmRhclZhcmlhbnQgfCBzdHJpbmcgPSAnc2luZ2xlJztcbiAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgQElucHV0KCkgbGFiZWxDbGFzc05hbWUgPSAnJztcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG4gIEBJbnB1dCgpIHRyaWdnZXJDbGFzc05hbWUgPSAnJztcbiAgQElucHV0KCkgcGFuZWxDbGFzc05hbWUgPSAnJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnUGljayBhIGRhdGUnO1xuICBASW5wdXQoKSByYW5nZVBsYWNlaG9sZGVyID0gJ1BpY2sgYSBkYXRlIHJhbmdlJztcbiAgQElucHV0KCkgZm9ybWF0ID0gJ01NTSBkLCB5eXl5JztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgaW52YWxpZCA9IGZhbHNlO1xuICBASW5wdXQoKSBhbGxvd1NhbWVEYXlSYW5nZSA9IHRydWU7XG4gIEBJbnB1dCgpIGNsb3NlT25TZWxlY3QgPSB0cnVlO1xuICBASW5wdXQoKSBtaW5EYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIG1heERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgbWluWWVhcjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIG1heFllYXI6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBkaXNhYmxlZERhdGVzOiBEYXRlW10gPSBbXTtcbiAgQElucHV0KCkgaXNEYXRlRGlzYWJsZWQ6ICgoZGF0ZTogRGF0ZSkgPT4gYm9vbGVhbikgfCBudWxsID0gbnVsbDtcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPigpO1xuICBAT3V0cHV0KCkgcmFuZ2VWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGRtQ2FsZW5kYXJSYW5nZSB8IG51bGw+KCk7XG4gIEBPdXRwdXQoKSBvcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgbW9udGhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG5cbiAgQElucHV0KClcbiAgc2V0IG9wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9vcGVuID0gISF2YWx1ZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuICBnZXQgb3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fb3BlbjtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZSk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cbiAgZ2V0IHZhbHVlKCk6IERhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgcmFuZ2VWYWx1ZSh2YWx1ZTogUGRtQ2FsZW5kYXJSYW5nZSB8IG51bGwpIHtcbiAgICB0aGlzLl9yYW5nZVZhbHVlID0gdmFsdWVcbiAgICAgID8ge1xuICAgICAgICAgIHN0YXJ0OiB0aGlzLm5vcm1hbGl6ZURhdGUodmFsdWUuc3RhcnQpLFxuICAgICAgICAgIGVuZDogdGhpcy5ub3JtYWxpemVEYXRlKHZhbHVlLmVuZClcbiAgICAgICAgfVxuICAgICAgOiBudWxsO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG4gIGdldCByYW5nZVZhbHVlKCk6IFBkbUNhbGVuZGFyUmFuZ2UgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2VWYWx1ZTtcbiAgfVxuXG4gIGdldCByZXNvbHZlZFZhcmlhbnQoKTogUGRtQ2FsZW5kYXJWYXJpYW50IHtcbiAgICByZXR1cm4gdGhpcy52YXJpYW50ID09PSAncmFuZ2UnID8gJ3JhbmdlJyA6ICdzaW5nbGUnO1xuICB9XG5cbiAgZ2V0IHRyaWdnZXJJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlkIHx8IGAke3RoaXMuaW5zdGFuY2VJZH0tdHJpZ2dlcmA7XG4gIH1cblxuICBnZXQgcGFuZWxJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmlkIHx8IHRoaXMuaW5zdGFuY2VJZH0tcGFuZWxgO1xuICB9XG5cbiAgZ2V0IGhhc1NpbmdsZVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVkVmFyaWFudCA9PT0gJ3NpbmdsZScgJiYgISF0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIGdldCBoYXNSYW5nZVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVkVmFyaWFudCA9PT0gJ3JhbmdlJyAmJiAhIXRoaXMuX3JhbmdlVmFsdWU/LnN0YXJ0O1xuICB9XG5cbiAgZ2V0IGRpc3BsYXlUZXh0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucmVzb2x2ZWRWYXJpYW50ID09PSAnc2luZ2xlJykge1xuICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlID8gdGhpcy5mb3JtYXREYXRlKHRoaXMuX3ZhbHVlKSA6IHRoaXMucGxhY2Vob2xkZXI7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9yYW5nZVZhbHVlPy5zdGFydCA/PyBudWxsO1xuICAgIGNvbnN0IGVuZCA9IHRoaXMuX3JhbmdlVmFsdWU/LmVuZCA/PyBudWxsO1xuXG4gICAgaWYgKCFzdGFydCkge1xuICAgICAgcmV0dXJuIHRoaXMucmFuZ2VQbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICBpZiAoIWVuZCkge1xuICAgICAgcmV0dXJuIGAke3RoaXMuZm9ybWF0RGF0ZShzdGFydCl9IC1gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0aGlzLmZvcm1hdERhdGUoc3RhcnQpfSAtICR7dGhpcy5mb3JtYXREYXRlKGVuZCl9YDtcbiAgfVxuXG4gIGdldCB0ZXh0Q2xhc3NlcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgaGFzVmFsdWUgPSB0aGlzLnJlc29sdmVkVmFyaWFudCA9PT0gJ3NpbmdsZScgPyB0aGlzLmhhc1NpbmdsZVZhbHVlIDogdGhpcy5oYXNSYW5nZVZhbHVlO1xuICAgIHJldHVybiBbXG4gICAgICAnbWluLXctMCBmbGV4LTEgdHJ1bmNhdGUgdGV4dC1sZWZ0IHRleHQtc20gbGVhZGluZy01JyxcbiAgICAgIGhhc1ZhbHVlID8gJ3RleHQtZm9yZWdyb3VuZCcgOiAndGV4dC1tdXRlZC1mb3JlZ3JvdW5kJ1xuICAgIF07XG4gIH1cblxuICBnZXQgcm9vdENsYXNzZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnZ3JpZCBnYXAtMicsXG4gICAgICB0aGlzLnJlc29sdmVkVmFyaWFudCA9PT0gJ3JhbmdlJyA/ICd3LVsyODBweF0nIDogJ3ctWzE5N3B4XScsXG4gICAgICB0aGlzLmNsYXNzTmFtZVxuICAgIF07XG4gIH1cblxuICBnZXQgdHJpZ2dlckNsYXNzZXMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZvY3VzU3R5bGUgPSB0aGlzLm9wZW4gfHwgdGhpcy50cmlnZ2VyRm9jdXNlZDtcblxuICAgIHJldHVybiBbXG4gICAgICAncmVsYXRpdmUgZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGdhcC0yIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWxnIGJvcmRlciBweC0zIHB5LVs3LjVweF0gdGV4dC1sZWZ0IHNoYWRvdy14cyBvdXRsaW5lLW5vbmUgdHJhbnNpdGlvbi1jb2xvcnMnLFxuICAgICAgJ21pbi1oLVszNnB4XSBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwJyxcbiAgICAgIGZvY3VzU3R5bGVcbiAgICAgICAgPyAnYmctYWNjZW50IGJvcmRlci1uZXV0cmFsLTQwMCByaW5nLTMgcmluZy1uZXV0cmFsLTMwMCdcbiAgICAgICAgOiAnYmctYmFja2dyb3VuZCBib3JkZXItaW5wdXQnLFxuICAgICAgdGhpcy5pbnZhbGlkID8gJ2JvcmRlci1kZXN0cnVjdGl2ZSByaW5nLWRlc3RydWN0aXZlLzIwJyA6ICcnLFxuICAgICAgdGhpcy50cmlnZ2VyQ2xhc3NOYW1lXG4gICAgXTtcbiAgfVxuXG4gIGdldCBwYW5lbENsYXNzZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXG4gICAgICAnYWJzb2x1dGUgbGVmdC0wIHRvcC1mdWxsIHotMzAgbXQtMicsXG4gICAgICB0aGlzLnBhbmVsQ2xhc3NOYW1lXG4gICAgXTtcbiAgfVxuXG4gIHRvZ2dsZU9wZW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2V0T3BlbighdGhpcy5vcGVuKTtcbiAgfVxuXG4gIG9uVHJpZ2dlckZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMudHJpZ2dlckZvY3VzZWQgPSB0cnVlO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb25UcmlnZ2VyQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLnRyaWdnZXJGb2N1c2VkID0gZmFsc2U7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvbkNhbGVuZGFyVmFsdWVDaGFuZ2UodmFsdWU6IERhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsdWUgPSB0aGlzLm5vcm1hbGl6ZURhdGUodmFsdWUpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLl92YWx1ZSA/IHRoaXMuY2xvbmVEYXRlKHRoaXMuX3ZhbHVlKSA6IG51bGwpO1xuXG4gICAgaWYgKHRoaXMuY2xvc2VPblNlbGVjdCAmJiB0aGlzLl92YWx1ZSkge1xuICAgICAgdGhpcy5zZXRPcGVuKGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgb25DYWxlbmRhclJhbmdlVmFsdWVDaGFuZ2UodmFsdWU6IFBkbUNhbGVuZGFyUmFuZ2UgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5fcmFuZ2VWYWx1ZSA9IHZhbHVlXG4gICAgICA/IHtcbiAgICAgICAgICBzdGFydDogdGhpcy5ub3JtYWxpemVEYXRlKHZhbHVlLnN0YXJ0KSxcbiAgICAgICAgICBlbmQ6IHRoaXMubm9ybWFsaXplRGF0ZSh2YWx1ZS5lbmQpXG4gICAgICAgIH1cbiAgICAgIDogbnVsbDtcblxuICAgIHRoaXMucmFuZ2VWYWx1ZUNoYW5nZS5lbWl0KFxuICAgICAgdGhpcy5fcmFuZ2VWYWx1ZVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHN0YXJ0OiB0aGlzLl9yYW5nZVZhbHVlLnN0YXJ0ID8gdGhpcy5jbG9uZURhdGUodGhpcy5fcmFuZ2VWYWx1ZS5zdGFydCkgOiBudWxsLFxuICAgICAgICAgICAgZW5kOiB0aGlzLl9yYW5nZVZhbHVlLmVuZCA/IHRoaXMuY2xvbmVEYXRlKHRoaXMuX3JhbmdlVmFsdWUuZW5kKSA6IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIDogbnVsbFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5jbG9zZU9uU2VsZWN0ICYmIHRoaXMuX3JhbmdlVmFsdWU/LnN0YXJ0ICYmIHRoaXMuX3JhbmdlVmFsdWU/LmVuZCkge1xuICAgICAgdGhpcy5zZXRPcGVuKGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uQ2FsZW5kYXJNb250aENoYW5nZShtb250aDogRGF0ZSk6IHZvaWQge1xuICAgIHRoaXMubW9udGhDaGFuZ2UuZW1pdCh0aGlzLmNsb25lRGF0ZShtb250aCkpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnKVxuICBvbkVzY2FwZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcGVuKSB7XG4gICAgICB0aGlzLnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm9wZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgTm9kZSB8IG51bGw7XG4gICAgaWYgKHRhcmdldCAmJiAhdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgdGhpcy5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldE9wZW4obmV4dE9wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fb3BlbiA9PT0gbmV4dE9wZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9vcGVuID0gbmV4dE9wZW47XG4gICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQodGhpcy5fb3Blbik7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdERhdGUoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBmb3JtYXREYXRlRm5zKGRhdGUsIHRoaXMuZm9ybWF0IHx8ICdNTU0gZCwgeXl5eScpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZvcm1hdERhdGVGbnMoZGF0ZSwgJ01NTSBkLCB5eXl5Jyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVEYXRlKHZhbHVlOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHx8IE51bWJlci5pc05hTih2YWx1ZS5nZXRUaW1lKCkpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUuZ2V0RnVsbFllYXIoKSwgdmFsdWUuZ2V0TW9udGgoKSwgdmFsdWUuZ2V0RGF0ZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvbmVEYXRlKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKTtcbiAgfVxufVxuIiwiPGRpdiBbbmdDbGFzc109XCJyb290Q2xhc3Nlc1wiPlxuICA8cGRtLWxhYmVsICpuZ0lmPVwibGFiZWxcIiBbZm9ySWRdPVwidHJpZ2dlcklkXCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgW2NsYXNzTmFtZV09XCJsYWJlbENsYXNzTmFtZVwiPlxuICAgIHt7IGxhYmVsIH19XG4gIDwvcGRtLWxhYmVsPlxuXG4gIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBpbmxpbmUtYmxvY2sgdy1mdWxsXCI+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbaWRdPVwidHJpZ2dlcklkXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm9wZW5cIlxuICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJwYW5lbElkXCJcbiAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiJ2RpYWxvZydcIlxuICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImludmFsaWRcIlxuICAgICAgW25nQ2xhc3NdPVwidHJpZ2dlckNsYXNzZXNcIlxuICAgICAgW2F0dHIudGl0bGVdPVwiZGlzcGxheVRleHRcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZU9wZW4oKVwiXG4gICAgICAoZm9jdXMpPVwib25UcmlnZ2VyRm9jdXMoKVwiXG4gICAgICAoYmx1cik9XCJvblRyaWdnZXJCbHVyKClcIlxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZmxleCBoLTUgdy01IHNocmluay0wIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBwLTAuNSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgY2xhc3M9XCJoLTQgdy00XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjhcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTggMnY0XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMTYgMnY0XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxuICAgICAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjQuNVwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxNi41XCIgcng9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9yZWN0PlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMyA5LjVoMThcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8c3BhbiBbbmdDbGFzc109XCJ0ZXh0Q2xhc3Nlc1wiPnt7IGRpc3BsYXlUZXh0IH19PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdiAqbmdJZj1cIm9wZW5cIiBbaWRdPVwicGFuZWxJZFwiIFtuZ0NsYXNzXT1cInBhbmVsQ2xhc3Nlc1wiIHJvbGU9XCJkaWFsb2dcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwibGFiZWwgPyB0cmlnZ2VySWQgOiBudWxsXCI+XG4gICAgICA8cGRtLWNhbGVuZGFyXG4gICAgICAgIFt2YXJpYW50XT1cInJlc29sdmVkVmFyaWFudFwiXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgIFtyYW5nZVZhbHVlXT1cInJhbmdlVmFsdWVcIlxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICBbYWxsb3dTYW1lRGF5UmFuZ2VdPVwiYWxsb3dTYW1lRGF5UmFuZ2VcIlxuICAgICAgICBbbWluRGF0ZV09XCJtaW5EYXRlXCJcbiAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZVwiXG4gICAgICAgIFttaW5ZZWFyXT1cIm1pblllYXJcIlxuICAgICAgICBbbWF4WWVhcl09XCJtYXhZZWFyXCJcbiAgICAgICAgW2Rpc2FibGVkRGF0ZXNdPVwiZGlzYWJsZWREYXRlc1wiXG4gICAgICAgIFtpc0RhdGVEaXNhYmxlZF09XCJpc0RhdGVEaXNhYmxlZFwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkNhbGVuZGFyVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChyYW5nZVZhbHVlQ2hhbmdlKT1cIm9uQ2FsZW5kYXJSYW5nZVZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAobW9udGhDaGFuZ2UpPVwib25DYWxlbmRhck1vbnRoQ2hhbmdlKCRldmVudClcIlxuICAgICAgPjwvcGRtLWNhbGVuZGFyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -668,10 +668,17 @@ class PdmCalendarComponent {
668
668
  }
669
669
  get yearOptions() {
670
670
  var _a, _b;
671
- const currentYear = this.singleHeaderYear;
672
- let minYear = (_a = this.minYear) !== null && _a !== void 0 ? _a : (this.minDate ? this.minDate.getFullYear() : currentYear - 100);
673
- let maxYear = (_b = this.maxYear) !== null && _b !== void 0 ? _b : (this.maxDate ? this.maxDate.getFullYear() : currentYear + 10);
671
+ const baseYear = new Date().getFullYear();
672
+ const selectedYear = this.singleHeaderYear;
673
+ let minYear = (_a = this.minYear) !== null && _a !== void 0 ? _a : (this.minDate ? this.minDate.getFullYear() : baseYear - 100);
674
+ let maxYear = (_b = this.maxYear) !== null && _b !== void 0 ? _b : (this.maxDate ? this.maxDate.getFullYear() : baseYear + 10);
674
675
  const years = [];
676
+ if (selectedYear < minYear) {
677
+ minYear = selectedYear;
678
+ }
679
+ if (selectedYear > maxYear) {
680
+ maxYear = selectedYear;
681
+ }
675
682
  if (minYear > maxYear) {
676
683
  const nextMin = maxYear;
677
684
  maxYear = minYear;
@@ -2027,7 +2034,7 @@ class PdmDatePickerComponent {
2027
2034
  'min-h-[36px] disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',
2028
2035
  focusStyle
2029
2036
  ? 'bg-accent border-neutral-400 ring-3 ring-neutral-300'
2030
- : 'bg-input border-input',
2037
+ : 'bg-background border-input',
2031
2038
  this.invalid ? 'border-destructive ring-destructive/20' : '',
2032
2039
  this.triggerClassName
2033
2040
  ];