UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

1,118 lines (1,117 loc) 88.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, ElementRef, Input, Output, ViewChild, EventEmitter } from '@angular/core'; import { Platform } from '@angular/cdk/platform'; import { NativeDateAdapter } from '@angular/material'; import { DatePicker } from '../../../../../component/dataview/input/DatePicker.component'; import { NeedFocusService } from '../../../../../service/NeedFocusService.service'; import { I18N } from '../../../../../decorator/I18N.decorator'; import { Option } from '../../../../../decorator/Option.decorator'; import { FormatterFactory } from '../../../../../service/FormatterFactory.service'; import { PhloxAppInfoService } from '../../../../../service/PhloxAppInfoService.service'; import { EventUtils } from '../../../../../share/utils/EventUtils'; import { DateAdapter, MatDatepicker, MAT_DATE_LOCALE } from '@angular/material'; import { BEFORE_MONTH_SELECTED_EVENT, MONTH_SELECTED_EVENT } from '../../../../../share/CustomEventType'; import { FormControl } from '@angular/forms'; const /** @type {?} */ TYPE_NAME = "material-date-picker"; const /** @type {?} */ NORMAL = 'normal'; const /** @type {?} */ SUCCESS = 'success'; const /** @type {?} */ WARNING = 'warning'; const /** @type {?} */ ERROR = 'error'; const /** @type {?} */ DEFAULT_BUTTON_POSITION = 'suffix'; const /** @type {?} */ DEFAULT_BUTTON_ICON = 'date_range_black'; const /** @type {?} */ DEFAULT_START_VIEW = 'month'; export class MaterialDateAdapter extends NativeDateAdapter { /** * @param {?} matDateLocale * @param {?} platform */ constructor(matDateLocale, platform) { super(matDateLocale, platform); } /** * @param {?} formatter * @return {?} */ setFormatter(formatter) { this.formatter = formatter; } /** * @return {?} */ getFormatter() { return this.formatter; } /** * @param {?} value * @return {?} */ parse(value) { if (this.formatter === null || this.formatter === undefined) { return super.parse(value); } return this.formatter.parse(value); } /** * @param {?} date * @param {?} displayFormat * @return {?} */ format(date, displayFormat) { if (this.formatter === null || this.formatter === undefined) { return super.format(date, displayFormat); } if (displayFormat !== null && typeof displayFormat === 'object') { if (displayFormat['day'] === undefined && displayFormat['month'] !== undefined && displayFormat['year'] !== undefined) { // Format for popup's month-year dropdown. return super.format(date, displayFormat); } } return this.formatter.format(date); } } function MaterialDateAdapter_tsickle_Closure_declarations() { /** @type {?} */ MaterialDateAdapter.prototype.formatter; } export class MaterialDatePicker extends DatePicker { /** * @param {?} elementRef * @param {?} needFocusService * @param {?} formatterFactory * @param {?} phloxAppInfoService * @param {?} adapter */ constructor(elementRef, needFocusService, formatterFactory, phloxAppInfoService, adapter) { super(elementRef, needFocusService, formatterFactory, phloxAppInfoService); this.beforeYearSelectedEvent = new EventEmitter(); this.yearSelectedEvent = new EventEmitter(); this.beforeMonthSelectedEvent = new EventEmitter(); this.monthSelectedEvent = new EventEmitter(); this.formControl = new FormControl(); this._adapter = /** @type {?} */ (adapter); this.active = false; } /** * @param {?} matDateLocale * @param {?} platform * @return {?} */ static DateAdapterFactory(matDateLocale, platform) { return new MaterialDateAdapter(matDateLocale, platform); } /** * @return {?} */ ngOnInit() { super.ngOnInit(); this.render(); setTimeout(() => { this.setOptions(this.options); }, 500); this._firstTextValue = this.formattedData; } /** * @param {?} changes * @return {?} */ ngOnChanges(changes) { this.render(); } /** * @return {?} */ render() { this._adapter.setFormatter(this.formatter); if (this.locale !== null && this.locale !== undefined) { this._adapter.setLocale(this.locale); } setTimeout(() => { let /** @type {?} */ btn = $('mat-datepicker-toggle > button'); let /** @type {?} */ datePickerContent = $.find('.mat-datepicker-content'); let /** @type {?} */ matCalendar = $.find('.mat-calendar'); if (datePickerContent.length > 0 && this.popupHeight) { $(datePickerContent).height(this.popupHeight); } if (matCalendar.length > 0 && this.popupWidth) { $(matCalendar).width(this.popupWidth); } // Add lost focus handler to button. btn.blur(($event) => { this.onBtnLostFocusing($event); }); }, 20); } /** * @return {?} */ getClassMatFocused() { return this.isReadOnly() ? { 'mat-focused': this._classFocused } : {}; } /** * @return {?} */ isBtnFocused() { return $(this.elementRef.nativeElement).find('mat-datepicker-toggle > button.cdk-focused').length > 0; } /** * @return {?} */ isTxtFocused() { return $(this.elementRef.nativeElement).find('input.form-control:focus').length > 0; } /** * @param {?} $event * @return {?} */ doFocus($event) { // Do not call super.doFocus() since we don't want to requestFocus() on <input>. this._classFocused = true; } /** * @param {?} $event * @return {?} */ onLostFocusing($event) { setTimeout(() => { if (this.isBtnFocused() || this.isTxtFocused() || this.isActive()) { // If anything is still focused, do nothing. return; } super.onLostFocusing($event); }, 20); } /** * @param {?} $event * @return {?} */ onBtnLostFocusing($event) { setTimeout(() => { if (this.isBtnFocused() || this.isTxtFocused() || this.isActive()) { // If anything is still focused, do nothing. return; } super.onLostFocusing($event); }, 20); } /** * @param {?} $event * @return {?} */ doLostFocus($event) { // Super will always hide popup in doLostFocus(). super.doLostFocus($event); this._classFocused = false; } /** * @return {?} */ doShow() { this.active = true; } /** * @param {?} event * @return {?} */ onFocus(event) { super.onFocus(event); this._classFocused = true; } /** * @return {?} */ getLabel() { return this.label; } /** * @param {?} label * @return {?} */ setLabel(label) { this.label = label; } /** * @return {?} */ getDescription() { return this.description; } /** * @param {?} description * @return {?} */ setDescription(description) { this.description = description; } /** * @return {?} */ getButtonPosition() { return !this.buttonPosition ? DEFAULT_BUTTON_POSITION : this.buttonPosition; } /** * @param {?} buttonPosition * @return {?} */ setButtonPosition(buttonPosition) { this.buttonPosition = buttonPosition; this.render(); } /** * @return {?} */ getButtonIcon() { return !this.buttonIcon ? DEFAULT_BUTTON_ICON : this.buttonIcon; } /** * @param {?} buttonIcon * @return {?} */ setButtonIcon(buttonIcon) { this.buttonIcon = buttonIcon; } /** * @return {?} */ getStartView() { return !this.startView ? DEFAULT_START_VIEW : this.startView; } /** * @param {?} startView * @return {?} */ setStartView(startView) { this.startView = startView; } /** * @return {?} */ getStartAt() { return new Date(this.startAt); } /** * @param {?} startAt * @return {?} */ setStartAt(startAt) { this.startAt = startAt; } /** * @return {?} */ getMin() { return this.min; } /** * @param {?} min * @return {?} */ setMin(min) { this.min = min; } /** * @return {?} */ getMax() { return this.max; } /** * @param {?} max * @return {?} */ setMax(max) { this.max = max; } /** * @return {?} */ getPanelClass() { return this.panelClass; } /** * @param {?} panelClass * @return {?} */ setPanelClass(panelClass) { this.panelClass = panelClass; } /** * @return {?} */ getLocale() { return this.locale; } /** * @param {?} locale * @return {?} */ setLocale(locale) { this.locale = locale; this.render(); } /** * @param {?} $event * @param {?=} fireEvent * @return {?} */ onOpened($event, fireEvent) { if (this.isReadOnly() || this.isDisabled()) { this.picker.close(); return; } this.show($event, fireEvent); this.render(); // Force set focus to this component when popup is displaying. this.onFocusing($event); } /** * @param {?} $event * @param {?=} fireEvent * @return {?} */ onClosed($event, fireEvent) { this.hide($event, fireEvent); } /** * @param {?} $event * @param {?=} fireEvent * @return {?} */ onDateChanged($event, fireEvent) { this.setDate($event.value, $event, fireEvent); } /** * @param {?} inputVal * @param {?=} $event * @param {?=} fireEvent * @return {?} */ setInputValue(inputVal, $event, fireEvent) { if (fireEvent === null || fireEvent === undefined) { fireEvent = true; } let /** @type {?} */ oldValue = this.getInputValue(); EventUtils.handleBrowserEvent(this, 'beforeChangeEvent', $event, fireEvent, ($event) => { // doEvent // Set input value into data object. this._setValueToData(inputVal); }, ($event) => { // emitBeforeEvent this.emitBeforeChangeEvent(oldValue, inputVal, true, $event); }, ($event) => { // emitAfterEvent this.emitChangeEvent(oldValue, inputVal, true, $event); }, ($event) => { // doPrevented this.formControl.setValue(oldValue); }, 'inputValue'); this._formattedData = this.getFormattedData(); } /** * @param {?} $event * @param {?=} fireEvent * @return {?} */ onMonthSelected($event, fireEvent) { // $event is boolean if (fireEvent === null || fireEvent === undefined) { fireEvent = true; } EventUtils.handleBrowserEvent(this, 'beforeMonthSelectedEvent', $event, fireEvent, ($event) => { // doEvent }, ($event) => { // emitBeforeEvent this.emitBeforeMonthSelectedEvent($event); }, ($event, result) => { // emitAfterEvent this.emitMonthSelectedEvent($event); }, ($event) => { // doPrevented }); } /** * @param {?} newValue * @param {?=} $event * @return {?} */ emitBeforeMonthSelectedEvent(newValue, $event) { let /** @type {?} */ eventData = { data: this.data, newValue: newValue }; // emit event let /** @type {?} */ data = eventData; let /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_MONTH_SELECTED_EVENT, this, data, $event); if (this.beforeMonthSelectedEvent !== null && this.beforeMonthSelectedEvent !== undefined) { this.beforeMonthSelectedEvent.emit(ev); } } /** * @param {?} newValue * @param {?=} $event * @return {?} */ emitMonthSelectedEvent(newValue, $event) { let /** @type {?} */ eventData = { data: this.data, newValue: newValue }; // emit event let /** @type {?} */ data = eventData; let /** @type {?} */ ev = EventUtils.newCustomEvent(MONTH_SELECTED_EVENT, this, data, $event); if (this.monthSelectedEvent !== null && this.monthSelectedEvent !== undefined) { this.monthSelectedEvent.emit(ev); } } /** * @param {?} $event * @param {?=} fireEvent * @return {?} */ onYearSelected($event, fireEvent) { // $event is boolean if (fireEvent === null || fireEvent === undefined) { fireEvent = true; } EventUtils.handleBrowserEvent(this, 'beforeYearSelectedEvent', $event, fireEvent, ($event) => { // doEvent }, ($event) => { // emitBeforeEvent this.emitBeforeYearSelectedEvent($event); }, ($event, result) => { // emitAfterEvent this.emitYearSelectedEvent($event); }, ($event) => { // doPrevented }); } /** * @param {?} newValue * @param {?=} $event * @return {?} */ emitBeforeYearSelectedEvent(newValue, $event) { let /** @type {?} */ eventData = { data: this.data, newValue: newValue }; // emit event let /** @type {?} */ data = eventData; let /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_MONTH_SELECTED_EVENT, this, data, $event); if (this.beforeYearSelectedEvent !== null && this.beforeYearSelectedEvent !== undefined) { this.beforeYearSelectedEvent.emit(ev); } } /** * @param {?} newValue * @param {?=} $event * @return {?} */ emitYearSelectedEvent(newValue, $event) { let /** @type {?} */ eventData = { data: this.data, newValue: newValue }; // emit event let /** @type {?} */ data = eventData; let /** @type {?} */ ev = EventUtils.newCustomEvent(MONTH_SELECTED_EVENT, this, data, $event); if (this.yearSelectedEvent !== null && this.yearSelectedEvent !== undefined) { this.yearSelectedEvent.emit(ev); } } /** * @param {?} popupHeight * @return {?} */ setPopupHeight(popupHeight) { super.setPopupHeight(popupHeight); this.render(); } /** * @param {?} popupWidth * @return {?} */ setPopupWidth(popupWidth) { super.setPopupWidth(popupWidth); this.render(); } /** * @return {?} */ getBeforeMonthSelectedEvent() { return this.beforeMonthSelectedEvent; } /** * @param {?} event * @return {?} */ setBeforeMonthSelectedEvent(event) { this.beforeMonthSelectedEvent = event; } /** * @return {?} */ getMonthSelectedEvent() { return this.monthSelectedEvent; } /** * @param {?} event * @return {?} */ setMonthSelectedEvent(event) { this.monthSelectedEvent = event; } /** * @return {?} */ getBeforeYearSelectedEvent() { return this.beforeYearSelectedEvent; } /** * @param {?} event * @return {?} */ setBeforeYearSelectedEvent(event) { this.beforeYearSelectedEvent = event; } /** * @return {?} */ getYearSelectedEvent() { return this.yearSelectedEvent; } /** * @param {?} event * @return {?} */ setYearSelectedEvent(event) { this.yearSelectedEvent = event; } /** * @param {?} formatterName * @return {?} */ setFormatterName(formatterName) { super.setFormatterName(formatterName); // Call this.render() to rerender if formatter changed. this.render(); } /** * @param {?} options * @return {?} */ setFormatterOptions(options) { super.setFormatterOptions(options); // Call this.render() to rerender if formatter changed. this.render(); } /** * @param {?} formatter * @return {?} */ setFormatter(formatter) { super.setFormatter(formatter); // Call this.render() to rerender if formatter changed. this.render(); } /** * @param {?} options * @return {?} */ setOptions(options) { super.setOptions(options); // Call this.render() to rerender if formatter changed. this.render(); } /** * @param {?} data * @return {?} */ setData(data) { super.setData(data); this._firstTextValue = this.formattedData; } } MaterialDatePicker.TYPE_NAME = TYPE_NAME; MaterialDatePicker.decorators = [ { type: Component, args: [{ moduleId: module.id, selector: TYPE_NAME, template: `<div class="material-input material-date-picker" [style.width]="getWidth()"> <div class="date-picker-wrapper" [class.active]="isActive()"> <mat-form-field [ngClass]="getClassMatFocused()"> <input matInput [formControl]="formControl" [phxDisableControl]="isDisabled()" [matDatepicker]="picker" [style.height]="getHeight()" placeholder="{{getLabel() | phx_text}}" class="form-control" [class.dirty]="isDataDirty()" [readonly]="isReadOnly()" (focus)="onFocusing($event)" (blur)="onLostFocusing($event)" (change)="onValueChanged($event)" (dateChange)="onDateChanged($event)" [class.normal]="isNormal() && !isDisabled()" [class.success]="isSuccess() && !isDisabled()" [class.warning]="isWarning() && !isDisabled()" [class.error]="isError() && !isDisabled()" [max]="getMax()" [min]="getMin()" [value]="_firstTextValue"> <mat-datepicker-toggle [disabled]="isDisabled()" *ngIf="getButtonPosition() === 'suffix'" matSuffix [for]="picker"> <mat-icon matDatepickerToggleIcon *ngIf="getButtonIcon()">{{getButtonIcon()}}</mat-icon> </mat-datepicker-toggle> <mat-datepicker-toggle [disabled]="isDisabled()" *ngIf="getButtonPosition() === 'prefix'" matPrefix [for]="picker"> <mat-icon matDatepickerToggleIcon *ngIf="getButtonIcon()">{{getButtonIcon()}}</mat-icon> </mat-datepicker-toggle> <mat-datepicker #picker [startView]="getStartView()" [startAt]="getStartAt()" [disabled]="isDisabled()" [panelClass]="getPanelClass()" (opened)="onOpened($event)" (closed)="onClosed($event)" (monthSelected)="onMonthSelected($event)" (yearSelected)="onYearSelected($event)"></mat-datepicker> </mat-form-field> </div> <div class="validation" [style.display]="getValidationResultMessage() ? undefined : 'none'" [class.normal]="isNormal() && !isDisabled()" [class.success]="isSuccess() && !isDisabled()" [class.warning]="isWarning() && !isDisabled()" [class.error]="isError() && !isDisabled()"> <ng-template [ngIf]="getValidationResultMessage()" [ngIfElse]="validation_else"> {{getValidationResultMessage() | phx_text}} </ng-template> <ng-template #validation_else> <!-- We've to put whitespace if there is no validation msg to prevent empty dom --> <!-- since if validate msg's <div> dom is empty, the component positioning --> <!-- will be misplaced. --> {{ '&nbsp;' }} </ng-template> </div> <div class="description" [style.display]="getValidationResultMessage() ? 'none' : undefined" [class.normal]="isNormal() && !isDisabled()" [class.success]="isSuccess() && !isDisabled()" [class.warning]="isWarning() && !isDisabled()" [class.error]="isError() && !isDisabled()"> <ng-template [ngIf]="getDescription()" [ngIfElse]="description_else"> {{ getDescription() | phx_text }} </ng-template> <ng-template #description_else> <!-- We've to put whitespace if there is no description to prevent empty dom --> <!-- since if description's <div> dom is empty, the component positioning --> <!-- will be misplaced. --> {{ '&nbsp;' }} </ng-template> </div> <div class="help"> {{getHelp() | phx_text}} </div> </div> `, providers: [ { provide: DateAdapter, useFactory: MaterialDatePicker.DateAdapterFactory, deps: [MAT_DATE_LOCALE, Platform] } ] },] }, ]; /** @nocollapse */ MaterialDatePicker.ctorParameters = () => [ { type: ElementRef, }, { type: NeedFocusService, }, { type: FormatterFactory, }, { type: PhloxAppInfoService, }, { type: DateAdapter, }, ]; MaterialDatePicker.propDecorators = { "picker": [{ type: ViewChild, args: ['picker',] },], "dataParent": [{ type: Input },], "ignoreParentData": [{ type: Input },], "data": [{ type: Input },], "ignoreParentDisabled": [{ type: Input },], "delegateHistory": [{ type: Input },], "onDisabled": [{ type: Input },], "onEnabled": [{ type: Input },], "loadingEnabled": [{ type: Input },], "i18nKey": [{ type: Input },], "bypass": [{ type: Input, args: ['i18nBypass',] },], "options": [{ type: Input },], "disabled": [{ type: Input },], "field": [{ type: Input },], "name": [{ type: Input },], "typeOfData": [{ type: Input },], "readOnly": [{ type: Input },], "help": [{ type: Input },], "formatter": [{ type: Input, args: ['formatter',] },], "formatterName": [{ type: Input, args: ['formatterName',] },], "formatterOptions": [{ type: Input, args: ['formatterOptions',] },], "formatterUsePropertyValue": [{ type: Input, args: ['formatterUsePropertyValue',] },], "dataPattern": [{ type: Input },], "width": [{ type: Input },], "height": [{ type: Input },], "popupWidth": [{ type: Input },], "popupHeight": [{ type: Input },], "minDate": [{ type: Input },], "maxDate": [{ type: Input },], "label": [{ type: Input },], "description": [{ type: Input },], "locale": [{ type: Input },], "buttonPosition": [{ type: Input },], "buttonIcon": [{ type: Input },], "startView": [{ type: Input },], "startAt": [{ type: Input },], "panelClass": [{ type: Input },], "max": [{ type: Input },], "min": [{ type: Input },], "loadEvent": [{ type: Output, args: ['phxLoad',] },], "startValidateEvent": [{ type: Output, args: ['phxStartValidate',] },], "endValidateEvent": [{ type: Output, args: ['phxEndValidate',] },], "beforeFocusEvent": [{ type: Output, args: ['phxBeforeFocus',] },], "focusEvent": [{ type: Output, args: ['phxFocus',] },], "beforeLostFocusEvent": [{ type: Output, args: ['phxBeforeLostFocus',] },], "lostFocusEvent": [{ type: Output, args: ['phxLostFocus',] },], "beforeChangeEvent": [{ type: Output, args: ['phxBeforeChange',] },], "changeEvent": [{ type: Output, args: ['phxChange',] },], "beforeViewShowEvent": [{ type: Output, args: ['phxBeforeViewShow',] },], "viewShowEvent": [{ type: Output, args: ['phxViewShow',] },], "beforeViewHideEvent": [{ type: Output, args: ['phxBeforeViewHide',] },], "viewHideEvent": [{ type: Output, args: ['phxViewHide',] },], "beforeMonthSelectedEvent": [{ type: Output, args: ['phxBeforeMonthSelected',] },], "monthSelectedEvent": [{ type: Output, args: ['phxMonthSelected',] },], "beforeYearSelectedEvent": [{ type: Output, args: ['phxBeforeYearSelected',] },], "yearSelectedEvent": [{ type: Output, args: ['phxYearSelected',] },], }; tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], MaterialDatePicker.prototype, "dataParent", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialDatePicker.prototype, "ignoreParentData", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], MaterialDatePicker.prototype, "data", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialDatePicker.prototype, "ignoreParentDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialDatePicker.prototype, "delegateHistory", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], MaterialDatePicker.prototype, "onDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], MaterialDatePicker.prototype, "onEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialDatePicker.prototype, "loadingEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialDatePicker.prototype, "i18nKey", void 0); tslib_1.__decorate([ Option('i18nBypass'), tslib_1.__metadata("design:type", Boolean) ], MaterialDatePicker.prototype, "bypass", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialDatePicker.prototype, "disabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialDatePicker.prototype, "field", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialDatePicker.prototype, "name", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialDatePicker.prototype, "typeOfData", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], MaterialDatePicker.prototype, "readOnly", void 0); tslib_1.__decorate([ I18N(), Option(), tslib_1.__metadata("design:type", Object) ], MaterialDatePicker.prototype, "help", void 0); tslib_1.__decorate([ Option('formatter.instance'), tslib_1.__metadata("design:type", Object) ], MaterialDatePicker.prototype, "formatter", void 0); tslib_1.__decorate([ Option('formatter.name'), tslib_1.__metadata("design:type", String) ], MaterialDatePicker.prototype, "formatterName", void 0); tslib_1.__decorate([ Option('formatter.options'), tslib_1.__metadata("design:type", Object) ], MaterialDatePicker.prototype, "formatterOptions", void 0); tslib_1.__decorate([ Option('formatter.usePropertyValue'), tslib_1.__metadata("design:type", Boolean) ], MaterialDatePicker.prototype, "formatterUsePropertyValue", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialDatePicker.prototype, "dataPattern", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialDatePicker.prototype, "width", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialDatePicker.prototype, "height", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialDatePicker.prototype, "popupWidth", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialDatePicker.prototype, "popupHeight", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Date) ], MaterialDatePicker.prototype, "minDate", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Date) ], MaterialDatePicker.prototype, "maxDate", void 0); tslib_1.__decorate([ I18N(), Option(), tslib_1.__metadata("design:type", String) ], MaterialDatePicker.prototype, "label", void 0); tslib_1.__decorate([ I18N(), Option(), tslib_1.__metadata("design:type", String) ], MaterialDatePicker.prototype, "description", void 0); tslib_1.__decorate([ I18N(), Option(), tslib_1.__metadata("design:type", String) ], MaterialDatePicker.prototype, "locale", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialDatePicker.prototype, "buttonPosition", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialDatePicker.prototype, "buttonIcon", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], MaterialDatePicker.prototype, "startView", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Date) ], MaterialDatePicker.prototype, "startAt", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], MaterialDatePicker.prototype, "panelClass", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Date) ], MaterialDatePicker.prototype, "max", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Date) ], MaterialDatePicker.prototype, "min", void 0); tslib_1.__decorate([ Option('load'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialDatePicker.prototype, "loadEvent", void 0); tslib_1.__decorate([ Option('startValidate'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialDatePicker.prototype, "startValidateEvent", void 0); tslib_1.__decorate([ Option('endValidate'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialDatePicker.prototype, "endValidateEvent", void 0); tslib_1.__decorate([ Option('beforeFocus'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialDatePicker.prototype, "beforeFocusEvent", void 0); tslib_1.__decorate([ Option('focus'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialDatePicker.prototype, "focusEvent", void 0); tslib_1.__decorate([ Option('beforeLostFocus'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialDatePicker.prototype, "beforeLostFocusEvent", void 0); tslib_1.__decorate([ Option('lostFocus'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialDatePicker.prototype, "lostFocusEvent", void 0); tslib_1.__decorate([ Option('beforeChange'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialDatePicker.prototype, "beforeChangeEvent", void 0); tslib_1.__decorate([ Option('change'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialDatePicker.prototype, "changeEvent", void 0); tslib_1.__decorate([ Option('beforeViewShow'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialDatePicker.prototype, "beforeViewShowEvent", void 0); tslib_1.__decorate([ Option('viewShow'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialDatePicker.prototype, "viewShowEvent", void 0); tslib_1.__decorate([ Option('beforeViewHide'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialDatePicker.prototype, "beforeViewHideEvent", void 0); tslib_1.__decorate([ Option('viewHide'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialDatePicker.prototype, "viewHideEvent", void 0); tslib_1.__decorate([ Option('beforeMonthSelected'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialDatePicker.prototype, "beforeMonthSelectedEvent", void 0); tslib_1.__decorate([ Option('monthSelected'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialDatePicker.prototype, "monthSelectedEvent", void 0); tslib_1.__decorate([ Option('beforeYearSelected'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialDatePicker.prototype, "beforeYearSelectedEvent", void 0); tslib_1.__decorate([ Option('yearSelected'), tslib_1.__metadata("design:type", EventEmitter) ], MaterialDatePicker.prototype, "yearSelectedEvent", void 0); function MaterialDatePicker_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ MaterialDatePicker.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ MaterialDatePicker.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ MaterialDatePicker.propDecorators; /** @type {?} */ MaterialDatePicker.TYPE_NAME; /** @type {?} */ MaterialDatePicker.prototype.picker; /** @type {?} */ MaterialDatePicker.prototype.dataParent; /** @type {?} */ MaterialDatePicker.prototype.ignoreParentData; /** @type {?} */ MaterialDatePicker.prototype.data; /** @type {?} */ MaterialDatePicker.prototype.ignoreParentDisabled; /** @type {?} */ MaterialDatePicker.prototype.delegateHistory; /** @type {?} */ MaterialDatePicker.prototype.onDisabled; /** @type {?} */ MaterialDatePicker.prototype.onEnabled; /** @type {?} */ MaterialDatePicker.prototype.loadingEnabled; /** @type {?} */ MaterialDatePicker.prototype.i18nKey; /** @type {?} */ MaterialDatePicker.prototype.bypass; /** @type {?} */ MaterialDatePicker.prototype.options; /** @type {?} */ MaterialDatePicker.prototype.disabled; /** @type {?} */ MaterialDatePicker.prototype.field; /** @type {?} */ MaterialDatePicker.prototype.name; /** @type {?} */ MaterialDatePicker.prototype.typeOfData; /** @type {?} */ MaterialDatePicker.prototype.readOnly; /** @type {?} */ MaterialDatePicker.prototype.help; /** @type {?} */ MaterialDatePicker.prototype.formatter; /** @type {?} */ MaterialDatePicker.prototype.formatterName; /** @type {?} */ MaterialDatePicker.prototype.formatterOptions; /** @type {?} */ MaterialDatePicker.prototype.formatterUsePropertyValue; /** @type {?} */ MaterialDatePicker.prototype.dataPattern; /** @type {?} */ MaterialDatePicker.prototype.width; /** @type {?} */ MaterialDatePicker.prototype.height; /** @type {?} */ MaterialDatePicker.prototype.popupWidth; /** @type {?} */ MaterialDatePicker.prototype.popupHeight; /** @type {?} */ MaterialDatePicker.prototype.minDate; /** @type {?} */ MaterialDatePicker.prototype.maxDate; /** @type {?} */ MaterialDatePicker.prototype.label; /** @type {?} */ MaterialDatePicker.prototype.description; /** @type {?} */ MaterialDatePicker.prototype.locale; /** @type {?} */ MaterialDatePicker.prototype.buttonPosition; /** @type {?} */ MaterialDatePicker.prototype.buttonIcon; /** @type {?} */ MaterialDatePicker.prototype.startView; /** @type {?} */ MaterialDatePicker.prototype.startAt; /** @type {?} */ MaterialDatePicker.prototype.panelClass; /** @type {?} */ MaterialDatePicker.prototype.max; /** @type {?} */ MaterialDatePicker.prototype.min; /** @type {?} */ MaterialDatePicker.prototype.loadEvent; /** @type {?} */ MaterialDatePicker.prototype.startValidateEvent; /** @type {?} */ MaterialDatePicker.prototype.endValidateEvent; /** @type {?} */ MaterialDatePicker.prototype.beforeFocusEvent; /** @type {?} */ MaterialDatePicker.prototype.focusEvent; /** @type {?} */ MaterialDatePicker.prototype.beforeLostFocusEvent; /** @type {?} */ MaterialDatePicker.prototype.lostFocusEvent; /** @type {?} */ MaterialDatePicker.prototype.beforeChangeEvent; /** @type {?} */ MaterialDatePicker.prototype.changeEvent; /** @type {?} */ MaterialDatePicker.prototype.beforeViewShowEvent; /** @type {?} */ MaterialDatePicker.prototype.viewShowEvent; /** @type {?} */ MaterialDatePicker.prototype.beforeViewHideEvent; /** @type {?} */ MaterialDatePicker.prototype.viewHideEvent; /** @type {?} */ MaterialDatePicker.prototype.beforeMonthSelectedEvent; /** @type {?} */ MaterialDatePicker.prototype.monthSelectedEvent; /** @type {?} */ MaterialDatePicker.prototype.beforeYearSelectedEvent; /** @type {?} */ MaterialDatePicker.prototype.yearSelectedEvent; /** @type {?} */ MaterialDatePicker.prototype._classFocused; /** @type {?} */ MaterialDatePicker.prototype._adapter; /** @type {?} */ MaterialDatePicker.prototype.formControl; /** @type {?} */ MaterialDatePicker.prototype._firstTextValue; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWF0ZXJpYWxEYXRlUGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL3RoZW1lL21hdGVyaWFsL2NvbXBvbmVudC9kYXRhdmlldy9pbnB1dC9NYXRlcmlhbERhdGVQaWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOERBQThELENBQUM7QUFFMUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFFbkYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzdDLHVCQUFNLFNBQVMsR0FBVyxzQkFBc0IsQ0FBQztBQUVqRCx1QkFBTSxNQUFNLEdBQVcsUUFBUSxDQUFDO0FBQ2hDLHVCQUFNLE9BQU8sR0FBVyxTQUFTLENBQUM7QUFDbEMsdUJBQU0sT0FBTyxHQUFXLFNBQVMsQ0FBQztBQUNsQyx1QkFBTSxLQUFLLEdBQVcsT0FBTyxDQUFDO0FBRTlCLHVCQUFNLHVCQUF1QixHQUFHLFFBQVEsQ0FBQztBQUN6Qyx1QkFBTSxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FBQztBQUMvQyx1QkFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUM7QUFFbkMsTUFBTSwwQkFBMkIsU0FBUSxpQkFBaUI7Ozs7O0lBSXhELFlBQVksYUFBcUIsRUFBRSxRQUFrQjtRQUNuRCxLQUFLLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQ2hDOzs7OztJQUVNLFlBQVksQ0FBQyxTQUFxQjtRQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQzs7Ozs7SUFHdEIsWUFBWTtRQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzs7Ozs7O0lBSWpCLEtBQUssQ0FBQyxLQUFVO1FBQ3JCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztZQUM1RCxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMzQjtRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzs7Ozs7OztJQUk5QixNQUFNLENBQUMsSUFBUyxFQUFFLGFBQXFCO1FBQzVDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztZQUM1RCxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDMUM7UUFDRCxFQUFFLENBQUMsQ0FBQyxhQUFhLEtBQUssSUFBSSxJQUFJLE9BQU8sYUFBYSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDaEUsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLFNBQVM7Z0JBQ3BDLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxTQUFTO2dCQUNwQyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQzs7Z0JBRXRDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQzthQUMxQztTQUNGO1FBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDOztDQUd0Qzs7Ozs7QUF5REQsTUFBTSx5QkFBMEIsU0FBUSxVQUFVOzs7Ozs7OztJQXlNaEQsWUFBWSxVQUFzQixFQUFFLGdCQUFrQyxFQUFFLGdCQUFrQyxFQUFFLG1CQUF3QyxFQUFFLE9BQXlCO1FBQzdLLEtBQUssQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUUzRSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN2RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNqRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN4RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNsRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFFckMsSUFBSSxDQUFDLFFBQVEscUJBQXdCLE9BQU8sQ0FBQSxDQUFDO1FBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0tBQ3JCOzs7Ozs7SUFoTk0sTUFBTSxDQUFDLGtCQUFrQixDQUFDLGFBQXFCLEVBQUUsUUFBa0I7UUFDeEUsTUFBTSxDQUFDLElBQUksbUJBQW1CLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDOzs7OztJQWlObkQsUUFBUTtRQUNiLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVqQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFZCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7U0FDOUIsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVSLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQzs7Ozs7O0lBR3JDLFdBQVcsQ0FBQyxPQUFZO1FBQzdCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzs7Ozs7SUFHVCxNQUFNO1FBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTNDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdEM7UUFFRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QscUJBQUksR0FBRyxHQUFRLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1lBQ25ELHFCQUFJLGlCQUFpQixHQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUMvRCxxQkFBSSxXQUFXLEdBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUUvQyxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNyRCxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQy9DO1lBQ0QsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQzlDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3ZDOztZQUdELEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2hDLENBQUMsQ0FBQztTQUNKLEVBQUUsRUFBRSxDQUFDLENBQUM7Ozs7O0lBR0Ysa0JBQWtCO1FBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDOzs7OztJQUdoRSxZQUFZO1FBQ2xCLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsNENBQTRDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDOzs7OztJQUdoRyxZQUFZO1FBQ2xCLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDOzs7Ozs7SUFHNUUsT0FBTyxDQUFDLE1BQWE7O1FBRTdCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0tBQzNCOzs7OztJQUVNLGNBQWMsQ0FBQyxNQUFhO1FBQ2pDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7O2dCQUVsRSxNQUFNLENBQUM7YUFDUjtZQUVELEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDOUIsRUFBRSxFQUFFLENBQUMsQ0FBQzs7Ozs7O0lBR0YsaUJBQWlCLENBQUMsTUFBYTtRQUNwQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDOztnQkFFbEUsTUFBTSxDQUFDO2FBQ1I7WUFFRCxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzlCLEVBQUUsRUFBRSxDQUFDLENBQUM7Ozs7OztJQUdDLFdBQVcsQ0FBQyxNQUFhOztRQUVqQyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0tBQzVCOzs7O0lBRVMsTUFBTTtRQUNkLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0tBQ3BCOzs7OztJQUVNLE9BQU8sQ0FBQyxLQUFVO1FBQ3ZCLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7Ozs7O0lBR3JCLFFBQVE7UUFDYixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQzs7Ozs7O0lBR2IsUUFBUSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7Ozs7O0lBR2QsY0FBYztRQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzs7Ozs7O0lBR25CLGNBQWMsQ0FBQyxXQUFtQjtRQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQzs7Ozs7SUFHMUIsaUJBQWlCO1FBQ3RCLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDOzs7Ozs7SUFHdkUsaUJBQWlCLENBQUMsY0FBc0I7UUFDN0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFFckMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDOzs7OztJQUdULGFBQWE7UUFDbEIsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7Ozs7OztJQUczRCxhQUFhLENBQUMsVUFBa0I7UUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7Ozs7O0lBR3hCLFlBQVk7UUFDakIsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7Ozs7OztJQUd4RCxZQUFZLENBQUMsU0FBaUI7UUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7Ozs7O0lBR3RCLFVBQVU7UUFDZixNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDOzs7Ozs7SUFHekIsVUFBVSxDQUFDLE9BQVk7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7Ozs7O0lBR2xCLE1BQU07UUFDWCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQzs7Ozs7O0lBR1gsTUFBTSxDQUFDLEdBQVM7UUFDckIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7Ozs7O0lBR1YsTUFBTTtRQUNYLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDOzs7Ozs7SUFHWCxNQUFNLENBQUMsR0FBUztRQUNyQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQzs7Ozs7SUFHVixhQUFhO1FBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDOzs7Ozs7SUFHbEIsYUFBYSxDQUFDLFVBQWU7UUFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7Ozs7O0lBR3hCLFNBQVM7UUFDZCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzs7Ozs7O0lBR2QsU0FBUyxDQUFDLE1BQWM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDOzs7Ozs7O0lBR1QsUUFBUSxDQUFDLE1BQVcsRUFBRSxTQUFtQjtRQUM5QyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRXBCLE1BQU0sQ0FBQztTQUNSO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFN0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDOztRQUdkLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7Ozs7Ozs7SUFHbkIsUUFBUSxDQUFDLE1BQVcsRUFBRSxTQUFtQjtRQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQzs7Ozs7OztJQUd4QixhQUFhLENBQUMsTUFBVyxFQUFFLFNBQW1CO1FBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7Ozs7Ozs7O0lBSXpDLGFBQWEsQ0FBQyxRQUFhLEVBQUUsTUFBYyxFQUFFLFNBQW1CO1FBQ3JFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsS0FBSyxJQUFJLElBQUksU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDbEQsU0FBUyxHQUFHLElBQUksQ0FBQztTQUNsQjtRQUVELHFCQUFJLFFBQVEsR0FBUSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFekMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsTUFBYSxFQUFFLEVBQUU7OztZQUc1RixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2hDLEVBQUUsQ0FBQyxNQUFhLEVBQUUsRUFBRTs7WUFFbkIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQzlELEVBQUUsQ0FBQyxNQUFhLEVBQUUsRUFBRTs7WUFFbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN4RCxFQUFFLENBQUMsTUFBYSxFQUFFLEVBQUU7O1lBRW5CLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3JDLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzs7Ozs7OztJQUd6QyxlQUFlLENBQUMsTUFBVyxFQUFFLFNBQW1COztRQUVyRCxFQUFFLENBQUMsQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ2xELFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDbEI7UUFFRCxVQUFVLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLDBCQUEwQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxNQUFhLEVBQUUsRUFBRTs7U0FFcEcsRUFBRSxDQUFDLE1BQWEsRUFBRSxFQUFFOztZQUVuQixJQUFJLENBQUMsNEJBQTRCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDM0MsRUFBRSxDQUFDLE1BQWEsRUFBRSxNQUFXLEVBQUUsRUFBRTs7WUFFaEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3JDLEVBQUUsQ0FBQyxNQUFhLEVBQUUsRUFBRTs7U0FFcEIsQ0FBQyxDQUFDOzs7Ozs7O0lBR0ssNEJBQTRCLENBQUMsUUFBYSxFQUFFLE1BQVk7UUFDaEUscUJBQUksU0FBUyxHQUFRO1lBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLFFBQVEsRUFBRSxRQUFRO1NBQ25CLENBQUM7O1FBR0YscUJBQUksSUFBSSxHQUFRLFNBQVMsQ0FBQztRQUMxQixxQkFBSSxFQUFFLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQywyQkFBMkIsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXBGLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLHdCQUF3QixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDMUYsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN4QztLQUNGOzs7Ozs7SUFFUyxzQkFBc0IsQ0FBQyxRQUFhLEVBQUUsTUFBWTtRQUMxRCxxQkFBSSxTQUFTLEdBQVE7WUFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQzs7UUFHRixxQkFBSSxJQUFJLEdBQVEsU0FBUyxDQUFDO1FBQzFCLHFCQUFJLEVBQUUsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLG9CQUFvQixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFN0UsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsa0JBQWtCLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztZQUM5RSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2xDO0tBQ0Y7Ozs7OztJQUVNLGNBQWMsQ0FBQyxNQUFXLEVBQUUsU0FBbUI7O1FBRXBELEVBQUUsQ0FBQyxDQUFDLFNBQVMsS0FBSyxJQUFJLElBQUksU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDbEQsU0FBUyxHQUFHLElBQUksQ0FBQztTQUNsQjtRQUVELFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLE1BQWEsRUFBRSxFQUFFOztTQUVuRyxFQUFFLENBQUMsTUFBYSxFQUFFLEVBQUU7O1lBRW5CLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMxQyxFQUFFLENBQUMsTUFBYSxFQUFFLE1BQVcsRUFBRSxFQUFFOztZQUVoQyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDcEMsRUFBRSxDQUFDLE1BQWEsRUFBRSxFQUFFOztTQUVwQixDQUFDLENBQUM7Ozs7Ozs7SUFHSywyQkFBMkIsQ0FBQyxRQUFhLEVBQUUsTUFBWTtRQUMvRCxxQkFBSSxTQUFTLEdBQVE7WUFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQzs7UUFHRixxQkFBSSxJQUFJLEdBQVEsU0FBUyxDQUFDO1FBQzFCLHFCQUFJLEVBQUUsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLDJCQUEyQixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFcEYsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsdUJBQXVCLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztZQUN4RixJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZDO0tBQ0Y7Ozs7OztJQUVTLHFCQUFxQixDQUFDLFFBQWEsRUFBRSxNQUFZO1FBQ3pELHFCQUFJLFNBQVMsR0FBUTtZQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixRQUFRLEVBQUUsUUFBUTtTQUNuQixDQUFDOztRQUdGLHFCQ