UNPKG

@catull/igniteui-angular

Version:

Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps

300 lines 22.9 kB
import { __decorate, __metadata } from "tslib"; import { Component, Input, Output, EventEmitter, HostBinding, ElementRef, HostListener } from '@angular/core'; import { isDateInRanges } from '../calendar'; import { CalendarSelection } from '../calendar-base'; /** *@hidden */ var IgxDayItemComponent = /** @class */ (function () { function IgxDayItemComponent(elementRef) { this.elementRef = elementRef; this.hideOutsideDays = false; this.isLastInRange = false; this.isFirstInRange = false; this.isWithinRange = false; this.onDateSelection = new EventEmitter(); this._selected = false; } Object.defineProperty(IgxDayItemComponent.prototype, "selected", { /** * Returns boolean indicating if the day is selected * */ get: function () { return this._selected; }, /** * Selects the day */ set: function (value) { this._selected = value; }, enumerable: true, configurable: true }); Object.defineProperty(IgxDayItemComponent.prototype, "isCurrentMonth", { get: function () { return this.date.isCurrentMonth; }, enumerable: true, configurable: true }); Object.defineProperty(IgxDayItemComponent.prototype, "isPreviousMonth", { get: function () { return this.date.isPrevMonth; }, enumerable: true, configurable: true }); Object.defineProperty(IgxDayItemComponent.prototype, "isNextMonth", { get: function () { return this.date.isNextMonth; }, enumerable: true, configurable: true }); Object.defineProperty(IgxDayItemComponent.prototype, "nativeElement", { get: function () { return this.elementRef.nativeElement; }, enumerable: true, configurable: true }); Object.defineProperty(IgxDayItemComponent.prototype, "isSelectedCSS", { get: function () { return (!this.isDisabled && this.selected); }, enumerable: true, configurable: true }); Object.defineProperty(IgxDayItemComponent.prototype, "isInactive", { get: function () { return this.date.isNextMonth || this.date.isPrevMonth; }, enumerable: true, configurable: true }); Object.defineProperty(IgxDayItemComponent.prototype, "isHidden", { get: function () { return this.hideOutsideDays && this.isInactive; }, enumerable: true, configurable: true }); Object.defineProperty(IgxDayItemComponent.prototype, "isToday", { get: function () { var today = new Date(Date.now()); var date = this.date.date; return (date.getFullYear() === today.getFullYear() && date.getMonth() === today.getMonth() && date.getDate() === today.getDate()); }, enumerable: true, configurable: true }); Object.defineProperty(IgxDayItemComponent.prototype, "isWeekend", { get: function () { var day = this.date.date.getDay(); return day === 0 || day === 6; }, enumerable: true, configurable: true }); Object.defineProperty(IgxDayItemComponent.prototype, "isDisabled", { get: function () { if (this.disabledDates === null) { return false; } return isDateInRanges(this.date.date, this.disabledDates); }, enumerable: true, configurable: true }); Object.defineProperty(IgxDayItemComponent.prototype, "isOutOfRange", { get: function () { if (!this.outOfRangeDates) { return false; } return isDateInRanges(this.date.date, this.outOfRangeDates); }, enumerable: true, configurable: true }); Object.defineProperty(IgxDayItemComponent.prototype, "isFocusable", { get: function () { return this.isCurrentMonth && !this.isHidden && !this.isDisabled && !this.isOutOfRange; }, enumerable: true, configurable: true }); Object.defineProperty(IgxDayItemComponent.prototype, "isWithinRangeCSS", { get: function () { return !this.isSingleSelection && this.isWithinRange; }, enumerable: true, configurable: true }); Object.defineProperty(IgxDayItemComponent.prototype, "isSpecial", { get: function () { if (this.specialDates === null) { return false; } return isDateInRanges(this.date.date, this.specialDates); }, enumerable: true, configurable: true }); Object.defineProperty(IgxDayItemComponent.prototype, "defaultCSS", { get: function () { return this.date.isCurrentMonth && !(this.isWeekend && this.selected); }, enumerable: true, configurable: true }); Object.defineProperty(IgxDayItemComponent.prototype, "isDisabledCSS", { get: function () { return this.isHidden || this.isDisabled || this.isOutOfRange; }, enumerable: true, configurable: true }); Object.defineProperty(IgxDayItemComponent.prototype, "isSingleSelection", { get: function () { return this.selection !== CalendarSelection.RANGE; }, enumerable: true, configurable: true }); Object.defineProperty(IgxDayItemComponent.prototype, "tabindex", { get: function () { return this.isDisabled || this.isHidden ? -1 : 0; }, enumerable: true, configurable: true }); IgxDayItemComponent.prototype.onSelect = function () { this.onDateSelection.emit(this.date); }; IgxDayItemComponent.ctorParameters = function () { return [ { type: ElementRef } ]; }; __decorate([ Input(), __metadata("design:type", Object) ], IgxDayItemComponent.prototype, "date", void 0); __decorate([ Input(), __metadata("design:type", String) ], IgxDayItemComponent.prototype, "selection", void 0); __decorate([ Input(), __metadata("design:type", Object), __metadata("design:paramtypes", [Object]) ], IgxDayItemComponent.prototype, "selected", null); __decorate([ Input(), __metadata("design:type", Array) ], IgxDayItemComponent.prototype, "disabledDates", void 0); __decorate([ Input(), __metadata("design:type", Array) ], IgxDayItemComponent.prototype, "outOfRangeDates", void 0); __decorate([ Input(), __metadata("design:type", Array) ], IgxDayItemComponent.prototype, "specialDates", void 0); __decorate([ Input(), __metadata("design:type", Object) ], IgxDayItemComponent.prototype, "hideOutsideDays", void 0); __decorate([ Input(), HostBinding('class.igx-calendar__date--last'), __metadata("design:type", Object) ], IgxDayItemComponent.prototype, "isLastInRange", void 0); __decorate([ Input(), HostBinding('class.igx-calendar__date--first'), __metadata("design:type", Object) ], IgxDayItemComponent.prototype, "isFirstInRange", void 0); __decorate([ Input(), __metadata("design:type", Object) ], IgxDayItemComponent.prototype, "isWithinRange", void 0); __decorate([ Output(), __metadata("design:type", Object) ], IgxDayItemComponent.prototype, "onDateSelection", void 0); __decorate([ HostBinding('class.igx-calendar__date--selected'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxDayItemComponent.prototype, "isSelectedCSS", null); __decorate([ HostBinding('class.igx-calendar__date--inactive'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxDayItemComponent.prototype, "isInactive", null); __decorate([ HostBinding('class.igx-calendar__date--hidden'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxDayItemComponent.prototype, "isHidden", null); __decorate([ HostBinding('class.igx-calendar__date--current'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxDayItemComponent.prototype, "isToday", null); __decorate([ HostBinding('class.igx-calendar__date--weekend'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxDayItemComponent.prototype, "isWeekend", null); __decorate([ HostBinding('class.igx-calendar__date--range'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxDayItemComponent.prototype, "isWithinRangeCSS", null); __decorate([ HostBinding('class.igx-calendar__date--special'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxDayItemComponent.prototype, "isSpecial", null); __decorate([ HostBinding('class.igx-calendar__date'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxDayItemComponent.prototype, "defaultCSS", null); __decorate([ HostBinding('class.igx-calendar__date--disabled'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxDayItemComponent.prototype, "isDisabledCSS", null); __decorate([ HostBinding('class.igx-calendar__date--single'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxDayItemComponent.prototype, "isSingleSelection", null); __decorate([ HostBinding('attr.tabindex'), __metadata("design:type", Number), __metadata("design:paramtypes", []) ], IgxDayItemComponent.prototype, "tabindex", null); __decorate([ HostListener('click'), HostListener('keydown.enter'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], IgxDayItemComponent.prototype, "onSelect", null); IgxDayItemComponent = __decorate([ Component({ selector: 'igx-day-item', template: "<span class=\"igx-calendar__date-content\">\n <ng-content></ng-content>\n</span>\n" }), __metadata("design:paramtypes", [ElementRef]) ], IgxDayItemComponent); return IgxDayItemComponent; }()); export { IgxDayItemComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9jYWxlbmRhci9kYXlzLXZpZXcvZGF5LWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBaUIsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXJEOztFQUVFO0FBS0Y7SUF3SkksNkJBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUF2SG5DLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBSXhCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBSXRCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBR3ZCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBR3RCLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUF1R25ELGNBQVMsR0FBRyxLQUFLLENBQUM7SUFFb0IsQ0FBQztJQTVJL0Msc0JBQVcseUNBQVE7UUFMbkI7OztXQUdHO2FBRUg7WUFDSSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDMUIsQ0FBQztRQUVEOztXQUVHO2FBQ0gsVUFBb0IsS0FBVTtZQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUMzQixDQUFDOzs7T0FQQTtJQW1DRCxzQkFBVywrQ0FBYzthQUF6QjtZQUNJLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDcEMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBVyxnREFBZTthQUExQjtZQUNJLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENB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UUFEQyxNQUFNLEVBQUU7O2dFQUNrRDtJQW1CM0Q7UUFEQyxXQUFXLENBQUMsb0NBQW9DLENBQUM7Ozs0REFHakQ7SUFHRDtRQURDLFdBQVcsQ0FBQyxvQ0FBb0MsQ0FBQzs7O3lEQUdqRDtJQUdEO1FBREMsV0FBVyxDQUFDLGtDQUFrQyxDQUFDOzs7dURBRy9DO0lBR0Q7UUFEQyxXQUFXLENBQUMsbUNBQW1DLENBQUM7OztzREFRaEQ7SUFHRDtRQURDLFdBQVcsQ0FBQyxtQ0FBbUMsQ0FBQzs7O3dEQUloRDtJQXVCRDtRQURDLFdBQVcsQ0FBQyxpQ0FBaUMsQ0FBQzs7OytEQUc5QztJQUdEO1FBREMsV0FBVyxDQUFDLG1DQUFtQyxDQUFDOzs7d0RBT2hEO0lBR0Q7UUFEQyxXQUFXLENBQUMsMEJBQTBCLENBQUM7Ozt5REFHdkM7SUFHRDtRQURDLFdBQVcsQ0FBQyxvQ0FBb0MsQ0FBQzs7OzREQUdqRDtJQUdEO1FBREMsV0FBVyxDQUFDLGtDQUFrQyxDQUFDOzs7Z0VBRy9DO0lBR0Q7UUFEQyxXQUFXLENBQUMsZUFBZSxDQUFDOzs7dURBRzVCO0lBUUQ7UUFGQyxZQUFZLENBQUMsT0FBTyxDQUFDO1FBQ3JCLFlBQVksQ0FBQyxlQUFlLENBQUM7Ozs7dURBRzdCO0lBOUpRLG1CQUFtQjtRQUovQixTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsY0FBYztZQUN4QixpR0FBc0M7U0FDekMsQ0FBQzt5Q0F5SmtDLFVBQVU7T0F4SmpDLG1CQUFtQixDQStKL0I7SUFBRCwwQkFBQztDQUFBLEFBL0pELElBK0pDO1NBL0pZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJQ2FsZW5kYXJEYXRlLCBpc0RhdGVJblJhbmdlcyB9IGZyb20gJy4uL2NhbGVuZGFyJztcbmltcG9ydCB7IERhdGVSYW5nZURlc2NyaXB0b3IgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGVzJztcbmltcG9ydCB7IENhbGVuZGFyU2VsZWN0aW9uIH0gZnJvbSAnLi4vY2FsZW5kYXItYmFzZSc7XG5cbi8qKlxuICpAaGlkZGVuXG4qL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtZGF5LWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnZGF5LWl0ZW0uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIElneERheUl0ZW1Db21wb25lbnQge1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRhdGU6IElDYWxlbmRhckRhdGU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWxlY3Rpb246IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBkYXkgaXMgc2VsZWN0ZWRcbiAgICAgKlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBzZWxlY3RlZCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0cyB0aGUgZGF5XG4gICAgICovXG4gICAgcHVibGljIHNldCBzZWxlY3RlZCh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWREYXRlczogRGF0ZVJhbmdlRGVzY3JpcHRvcltdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgb3V0T2ZSYW5nZURhdGVzOiBEYXRlUmFuZ2VEZXNjcmlwdG9yW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzcGVjaWFsRGF0ZXM6IERhdGVSYW5nZURlc2NyaXB0b3JbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhpZGVPdXRzaWRlRGF5cyA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYWxlbmRhcl9fZGF0ZS0tbGFzdCcpXG4gICAgcHVibGljIGlzTGFzdEluUmFuZ2UgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FsZW5kYXJfX2RhdGUtLWZpcnN0JylcbiAgICBwdWJsaWMgaXNGaXJzdEluUmFuZ2UgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlzV2l0aGluUmFuZ2UgPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbkRhdGVTZWxlY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPElDYWxlbmRhckRhdGU+KCk7XG5cbiAgICBwdWJsaWMgZ2V0IGlzQ3VycmVudE1vbnRoKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRlLmlzQ3VycmVudE1vbnRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNQcmV2aW91c01vbnRoKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRlLmlzUHJldk1vbnRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNOZXh0TW9udGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGUuaXNOZXh0TW9udGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FsZW5kYXJfX2RhdGUtLXNlbGVjdGVkJylcbiAgICBwdWJsaWMgZ2V0IGlzU2VsZWN0ZWRDU1MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoIXRoaXMuaXNEaXNhYmxlZCAmJiB0aGlzLnNlbGVjdGVkKTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYWxlbmRhcl9fZGF0ZS0taW5hY3RpdmUnKVxuICAgIHB1YmxpYyBnZXQgaXNJbmFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZS5pc05leHRNb250aCB8fCB0aGlzLmRhdGUuaXNQcmV2TW9udGg7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FsZW5kYXJfX2RhdGUtLWhpZGRlbicpXG4gICAgcHVibGljIGdldCBpc0hpZGRlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGlkZU91dHNpZGVEYXlzICYmIHRoaXMuaXNJbmFjdGl2ZTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYWxlbmRhcl9fZGF0ZS0tY3VycmVudCcpXG4gICAgcHVibGljIGdldCBpc1RvZGF5KCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKERhdGUubm93KCkpO1xuICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5kYXRlLmRhdGU7XG4gICAgICAgIHJldHVybiAoZGF0ZS5nZXRGdWxsWWVhcigpID09PSB0b2RheS5nZXRGdWxsWWVhcigpICYmXG4gICAgICAgICAgICBkYXRlLmdldE1vbnRoKCkgPT09IHRvZGF5LmdldE1vbnRoKCkgJiZcbiAgICAgICAgICAgIGRhdGUuZ2V0RGF0ZSgpID09PSB0b2RheS5nZXREYXRlKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYWxlbmRhcl9fZGF0ZS0td2Vla2VuZCcpXG4gICAgcHVibGljIGdldCBpc1dlZWtlbmQoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGRheSA9IHRoaXMuZGF0ZS5kYXRlLmdldERheSgpO1xuICAgICAgICByZXR1cm4gZGF5ID09PSAwIHx8IGRheSA9PT0gNjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkRGF0ZXMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc0RhdGVJblJhbmdlcyh0aGlzLmRhdGUuZGF0ZSwgdGhpcy5kaXNhYmxlZERhdGVzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzT3V0T2ZSYW5nZSgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLm91dE9mUmFuZ2VEYXRlcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzRGF0ZUluUmFuZ2VzKHRoaXMuZGF0ZS5kYXRlLCB0aGlzLm91dE9mUmFuZ2VEYXRlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc0ZvY3VzYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNDdXJyZW50TW9udGggJiYgIXRoaXMuaXNIaWRkZW4gJiYgIXRoaXMuaXNEaXNhYmxlZCAmJiAhdGhpcy5pc091dE9mUmFuZ2U7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FsZW5kYXJfX2RhdGUtLXJhbmdlJylcbiAgICBwdWJsaWMgZ2V0IGlzV2l0aGluUmFuZ2VDU1MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pc1NpbmdsZVNlbGVjdGlvbiAmJiB0aGlzLmlzV2l0aGluUmFuZ2U7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FsZW5kYXJfX2RhdGUtLXNwZWNpYWwnKVxuICAgIHB1YmxpYyBnZXQgaXNTcGVjaWFsKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5zcGVjaWFsRGF0ZXMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc0RhdGVJblJhbmdlcyh0aGlzLmRhdGUuZGF0ZSwgdGhpcy5zcGVjaWFsRGF0ZXMpO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNhbGVuZGFyX19kYXRlJylcbiAgICBwdWJsaWMgZ2V0IGRlZmF1bHRDU1MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGUuaXNDdXJyZW50TW9udGggJiYgISh0aGlzLmlzV2Vla2VuZCAmJiB0aGlzLnNlbGVjdGVkKTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYWxlbmRhcl9fZGF0ZS0tZGlzYWJsZWQnKVxuICAgIHB1YmxpYyBnZXQgaXNEaXNhYmxlZENTUygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNIaWRkZW4gfHwgdGhpcy5pc0Rpc2FibGVkIHx8IHRoaXMuaXNPdXRPZlJhbmdlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNhbGVuZGFyX19kYXRlLS1zaW5nbGUnKVxuICAgIHB1YmxpYyBnZXQgaXNTaW5nbGVTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbiAhPT0gQ2FsZW5kYXJTZWxlY3Rpb24uUkFOR0U7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgICBwdWJsaWMgZ2V0IHRhYmluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzRGlzYWJsZWQgfHwgdGhpcy5pc0hpZGRlbiA/IC0xIDogMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7IH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVudGVyJylcbiAgICBwdWJsaWMgb25TZWxlY3QoKSB7XG4gICAgICAgIHRoaXMub25EYXRlU2VsZWN0aW9uLmVtaXQodGhpcy5kYXRlKTtcbiAgICB9XG59XG4iXX0=