com.phloxui
Version:
PhloxUI Ng2+ Framework
736 lines (735 loc) • 74.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, Input, ElementRef, Output, EventEmitter } from '@angular/core';
import { AbstractAccordion } from './AbstractAccordion';
import { I18N } from '../../decorator/I18N.decorator';
import { Option } from '../../decorator/Option.decorator';
const /** @type {?} */ TYPE_NAME = "phx-component-accordion";
export class ComponentAccordion extends AbstractAccordion {
/**
* @param {?} elementRef
*/
constructor(elementRef) {
super(elementRef);
this.ACCORDIAN_CONTAINER_SELECTOR = ".accordion-container";
this.inited = false;
this.autoInit = true; // fix to auto init
this.itemComponents = [];
this.activeItems = [];
// imple for component handler
this.pageComponentHandler = (data) => {
if (this != null && typeof this !== 'undefined') {
if (data.setting !== null && typeof data.setting !== 'undefined') {
let /** @type {?} */ index = data.setting.index;
if (index > -1) {
if (index < this.itemComponents.length) {
this.itemComponents[index] = data.instance;
}
else {
let /** @type {?} */ count = this.itemComponents.length;
while (count <= index) {
if (count === index) {
this.itemComponents.push(data.instance);
}
else {
this.itemComponents.push(null);
}
count++;
}
}
}
if (this.items !== null && typeof this.items !== 'undefined') {
if (index < this.items.length) {
let /** @type {?} */ item = this.items[index];
if (typeof data.instance.setModel === 'function') {
data.instance.setModel(item.componentModel);
}
if (typeof data.instance.setData === 'function') {
data.instance.setData(item.componentData);
}
// by pass child
if (this.dataParent !== null && typeof this.dataParent !== 'undefined') {
if (typeof this.dataParent.addDataChild === 'function') {
let /** @type {?} */ hasDataCompo = /** @type {?} */ (data.instance);
if (typeof hasDataCompo !== 'undefined') {
this.dataParent.addDataChild(hasDataCompo);
}
}
}
// delegate handler
if (item.componentHandler !== null && typeof item.componentHandler !== 'undefined') {
item.componentHandler.call(null, data);
}
}
}
}
}
};
}
/**
* @return {?}
*/
ngOnInit() {
super.ngOnInit();
this.setDataParent(this.dataParent);
}
/**
* @param {?} id
* @return {?}
*/
moveUpAccordionBelowId(id) {
if (id === null || typeof id === 'undefined') {
return;
}
if (this.elementRef !== null && typeof this.elementRef !== 'undefined') {
let /** @type {?} */ accordionSelector = ".accordion-item";
let /** @type {?} */ selector = "#" + id + accordionSelector;
let /** @type {?} */ selectorElement = $(this.elementRef.nativeElement).find(selector);
let /** @type {?} */ height = 0;
if (typeof selectorElement !== 'undefined') {
if (typeof $(selectorElement).height() !== 'undefined') {
height = $(selectorElement).height();
}
let /** @type {?} */ bodySelector = $(selectorElement).find(".body");
if (typeof bodySelector !== 'undefined') {
height = $(bodySelector).height();
}
let /** @type {?} */ nextElement = $(selectorElement).next();
if (typeof nextElement !== 'undefined') {
$(nextElement).css('margin-top', -height);
}
}
let /** @type {?} */ accContainerSelector = this.ACCORDIAN_CONTAINER_SELECTOR;
let /** @type {?} */ accContainerElement = $(this.elementRef.nativeElement).find(accContainerSelector);
let /** @type {?} */ containerHeight = 0;
if (typeof accContainerElement !== 'undefined') {
containerHeight = 0;
if (typeof $(accContainerElement).height() !== 'undefined') {
containerHeight = $(accContainerElement).height();
}
}
let /** @type {?} */ fakeAccordionSelector = ".fake";
let /** @type {?} */ fakeAccElement = $(this.elementRef.nativeElement).find(fakeAccordionSelector);
let /** @type {?} */ fakeHeight = 0;
let /** @type {?} */ oldFakeHeight = 0;
if (typeof fakeAccElement !== 'undefined') {
let /** @type {?} */ beforeFakeElement = $(fakeAccElement).prev();
if (beforeFakeElement !== undefined) {
if ($(beforeFakeElement).hasClass("hideborder")) {
if (typeof $(fakeAccElement).height() !== 'undefined') {
fakeHeight = $(fakeAccElement).height();
oldFakeHeight = $(fakeAccElement).height();
}
fakeHeight = fakeHeight - height;
if (!this.isFixedHeight()) {
fakeHeight = 0;
}
else {
// if hide last index
if (id === ((this.items.length - 1) + "")) {
fakeHeight = height;
}
}
$(fakeAccElement).css('height', fakeHeight);
}
}
}
}
}
/**
* @param {?} id
* @return {?}
*/
moveDownAccordionBelowId(id) {
if (id === null || typeof id === 'undefined') {
return;
}
if (this.elementRef !== null && typeof this.elementRef !== 'undefined') {
let /** @type {?} */ accordionSelector = ".accordion-item";
let /** @type {?} */ selector = "#" + id + accordionSelector;
let /** @type {?} */ selectorElement = $(this.elementRef.nativeElement).find(selector);
let /** @type {?} */ height = 0;
if (typeof selectorElement !== 'undefined') {
if (typeof $(selectorElement).height() !== 'undefined') {
height = $(selectorElement).height();
}
let /** @type {?} */ bodySelector = $(selectorElement).find(".body");
if (typeof bodySelector !== 'undefined') {
height = $(bodySelector).height();
}
let /** @type {?} */ nextElement = $(selectorElement).next();
if (typeof nextElement !== 'undefined') {
$(nextElement).css('margin-top', '');
}
}
let /** @type {?} */ oldFakeHeight = 0;
let /** @type {?} */ fakeHeight = 0;
let /** @type {?} */ fakeAccordionSelector = ".fake";
let /** @type {?} */ fakeAccElement = $(this.elementRef.nativeElement).find(fakeAccordionSelector);
if (typeof fakeAccElement !== 'undefined') {
let /** @type {?} */ beforeFakeElement = $(fakeAccElement).prev();
if (beforeFakeElement !== undefined) {
if ($(beforeFakeElement).hasClass("hideborder")) {
// hiding last is up to fix height
if (typeof $(fakeAccordionSelector).height() !== 'undefined') {
fakeHeight = $(fakeAccordionSelector).height();
oldFakeHeight = $(fakeAccordionSelector).height();
}
// fakeHeight = fakeHeight + height;
fakeHeight = height;
if (!this.isFixedHeight()) {
fakeHeight = 0;
}
// ***
$(fakeAccordionSelector).css('height', fakeHeight);
}
}
}
}
}
/**
* @return {?}
*/
refreshContainerHeight() {
if (!this.multipleExpand) {
return;
}
if (this.elementRef !== null && typeof this.elementRef !== 'undefined') {
let /** @type {?} */ accContainerSelector = this.ACCORDIAN_CONTAINER_SELECTOR;
let /** @type {?} */ accContainerElement = $(this.elementRef.nativeElement).find(accContainerSelector);
// reset height
$(accContainerElement).css('height', '');
let /** @type {?} */ newContentHeight = 0;
let /** @type {?} */ missingHeight = 0;
let /** @type {?} */ accordionSelector = ".accordion-item";
$(this.elementRef.nativeElement).find(accordionSelector).each((index, element) => {
let /** @type {?} */ headerHeight = $(element).find('.header').outerHeight();
let /** @type {?} */ bodyHeight = $(element).find('.body').outerHeight();
let /** @type {?} */ eleHeight = $(element).height();
if (!$(element).hasClass("fake")) {
let /** @type {?} */ checkItem = null;
if (this.items !== null && typeof this.items !== 'undefined') {
checkItem = this.items[index];
}
if (this.activeItems !== null && typeof this.activeItems !== 'undefined') {
let /** @type {?} */ isActive = this.activeItems.indexOf(checkItem) >= 0;
if (isActive) {
newContentHeight += eleHeight;
}
else {
newContentHeight += headerHeight;
missingHeight += bodyHeight;
}
}
}
else {
// is fake
}
});
$(accContainerElement).css('height', newContentHeight);
}
}
/**
* @param {?} index
* @return {?}
*/
_getItemHeight(index) {
if (index !== null && typeof index !== 'undefined' && index > -1) {
if (this.items !== null && typeof this.items !== 'undefined' && index < this.items.length) {
let /** @type {?} */ height = this.items[index].height;
if (height !== null && typeof height !== 'undefined') {
return this.items[index].height;
}
}
}
return '';
}
/**
* @return {?}
*/
_getPageComponentHandler() {
return this.pageComponentHandler;
}
/**
* @param {?} $event
* @param {?} index
* @return {?}
*/
onShowBodyBtnClick($event, index) {
let /** @type {?} */ isActive = this.isActive(index);
let /** @type {?} */ isEnable = this.isEnable(index);
if (!isEnable) {
if (isActive) {
this.deactivate(index);
}
return;
}
if (isActive) {
this.deactivate(index);
}
else {
this.activate(index);
}
}
/**
* @param {?} index
* @return {?}
*/
isShow(index) {
let /** @type {?} */ active = this.isActive(index);
let /** @type {?} */ enable = this.isEnable(index);
return enable && active;
}
/**
* @return {?}
*/
init() {
if (this.inited) {
return;
}
this.activeItems = [];
if (this.multipleExpand) {
// all is active by default
if (this.items !== null && typeof this.items !== 'undefined') {
for (let /** @type {?} */ item of this.items) {
if (item.enable) {
item.active = true;
this.activeItems.push(item);
}
}
}
}
else {
// only one is active
if (this.items !== null && typeof this.items !== 'undefined') {
let /** @type {?} */ markFirst = false;
for (let /** @type {?} */ item of this.items) {
if (item.enable && !markFirst) {
item.active = true;
this.activeItems.push(item);
markFirst = true;
}
else {
item.active = false;
}
}
}
}
if (this.delayTimer !== null && typeof this.delayTimer !== 'undefined') {
clearTimeout(this.delayTimer);
this.delayTimer = null;
}
this.delayTimer = setTimeout(() => {
for (let /** @type {?} */ i = 0; i < this.items.length; i++) {
let /** @type {?} */ idKey = i + "";
let /** @type {?} */ item = this.items[i];
if (!item.enable) {
this.moveUpAccordionBelowId(idKey);
}
else {
if (!item.active) {
this.moveUpAccordionBelowId(idKey);
}
}
}
}, 1);
this.inited = true;
}
/**
* @return {?}
*/
reload() {
if (this.itemComponents !== null && typeof this.itemComponents.length) {
for (let /** @type {?} */ i = 0; i < this.itemComponents.length; i++) {
let /** @type {?} */ component = this.itemComponents[i];
if (component === null || typeof component === 'undefined') {
continue;
}
let /** @type {?} */ item = (i < this.items.length) ? this.items[i] : null;
if (item === null || typeof item === 'undefined') {
continue;
}
if (typeof component.setModel === 'function') {
component.setModel(item.componentModel);
}
if (typeof component.setData === 'function') {
component.setData(item.componentData);
}
}
}
}
/**
* @return {?}
*/
reRender() {
this.refreshContainerHeight();
}
/**
* @param {?} index
* @return {?}
*/
getAccordianComponent(index) {
if (index > -1 && index < this.itemComponents.length) {
return this.itemComponents[index];
}
return null;
}
/**
* @param {?} index
* @param {?} item
* @return {?}
*/
onAccordionActived(index, item) {
setTimeout(() => {
let /** @type {?} */ idKey = index + "";
this.moveDownAccordionBelowId(idKey);
if (this.activeItems.indexOf(item) < 0) {
this.activeItems.push(item);
}
}, 5);
}
/**
* @param {?} index
* @param {?} item
* @return {?}
*/
onAccordionDeactived(index, item) {
setTimeout(() => {
let /** @type {?} */ idKey = index + "";
this.moveUpAccordionBelowId(idKey);
if (this.activeItems.indexOf(item) >= 0) {
let /** @type {?} */ index = this.activeItems.indexOf(item);
this.activeItems.splice(index, 1);
}
}, 5);
}
/**
* @param {?} index
* @param {?} item
* @return {?}
*/
onAccordionEnabled(index, item) {
}
/**
* @param {?} index
* @param {?} item
* @return {?}
*/
onAccordionDisabled(index, item) {
}
/**
* @param {?} dataParent
* @return {?}
*/
setDataParent(dataParent) {
// by pass to children component that was IHasData
if (this.dataParent !== null && typeof this.dataParent !== 'undefined') {
if (typeof this.dataParent.removeDataChild === 'function') {
if (this.itemComponents !== null && typeof this.itemComponents !== 'undefined') {
for (let /** @type {?} */ compo of this.itemComponents) {
let /** @type {?} */ hasDataCompo = /** @type {?} */ (compo);
if (typeof hasDataCompo !== 'undefined') {
this.dataParent.removeDataChild(hasDataCompo);
}
}
}
}
}
this.dataParent = dataParent;
if (this.dataParent !== null && typeof this.dataParent !== 'undefined') {
if (typeof this.dataParent.addDataChild === 'function') {
for (let /** @type {?} */ compo of this.itemComponents) {
let /** @type {?} */ hasDataCompo = /** @type {?} */ (compo);
if (typeof hasDataCompo !== 'undefined') {
this.dataParent.addDataChild(hasDataCompo);
}
}
}
}
}
/**
* @return {?}
*/
getDataParent() {
return this.dataParent;
}
/**
* @return {?}
*/
getItems() {
return this.items;
}
/**
* @return {?}
*/
isSelfDataDirty() {
return false;
}
/**
* @param {?} data
* @return {?}
*/
selfSaveData(data) {
}
/**
* @return {?}
*/
selfResetData() {
}
}
ComponentAccordion.TYPE_NAME = TYPE_NAME;
ComponentAccordion.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: `<div class="phx-component-accordion">
<div class="accordion-container" [style.height]="getFixedHeight()">
<ng-template ngFor let-item [ngForOf]="getItems()" let-i="index">
<div class="accordion-item" id="{{i+''}}" [class.hideborder]="!isShow(i)">
<div class="header" (click)="onShowBodyBtnClick($event, i)">
<div class="header-wrapper" [class.disable]="!isEnable(i)">
<div class="left"><h4>{{item.label}}</h4></div>
<div class="right">
<div class="down-triangle" [class.left-triangle-accordion]="!isShow(i)"></div>
</div>
</div>
</div>
<div class="body" [style.height]="_getItemHeight(i)">
<!-- <div class="body-wrapper" [class.show]="isShow(i)" [class.disable]="!isEnable(i)"> -->
<div class="body-wrapper" [style.display]="!isShow(i) ? 'none' : undefined" [class.show]="isShow(i)" [class.disable]="!isEnable(i)">
<phx-component-wrapper [type]="item.componentType" [data]="item.componentData" [handler]="_getPageComponentHandler()" [setting]="{index: i}" [model]="item.componentModel" [dataParent]="this"></phx-component-wrapper>
</div>
</div>
</div>
</ng-template>
<div class="accordion-item fake"><!-- fake for height --></div>
</div>
</div>
`
},] },
];
/** @nocollapse */
ComponentAccordion.ctorParameters = () => [
{ type: ElementRef, },
];
ComponentAccordion.propDecorators = {
"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 },],
"loadEvent": [{ type: Output, args: ['phxLoad',] },],
"beforeActivateEvent": [{ type: Output, args: ['phxBeforeActivate',] },],
"activateEvent": [{ type: Output, args: ['phxActivate',] },],
"beforeDeactivateEvent": [{ type: Output, args: ['phxBeforeDeactivate',] },],
"deactivateEvent": [{ type: Output, args: ['phxDeactivate',] },],
"beforeEnableEvent": [{ type: Output, args: ['phxBeforeEnable',] },],
"enableEvent": [{ type: Output, args: ['phxEnable',] },],
"beforeDisableEvent": [{ type: Output, args: ['phxBeforeDisable',] },],
"disableEvent": [{ type: Output, args: ['phxDisable',] },],
"items": [{ type: Input },],
"fixedHeight": [{ type: Input },],
"name": [{ type: Input },],
"multipleExpand": [{ type: Input },],
};
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], ComponentAccordion.prototype, "dataParent", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ComponentAccordion.prototype, "ignoreParentData", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], ComponentAccordion.prototype, "data", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ComponentAccordion.prototype, "ignoreParentDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ComponentAccordion.prototype, "delegateHistory", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], ComponentAccordion.prototype, "onDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], ComponentAccordion.prototype, "onEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ComponentAccordion.prototype, "loadingEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], ComponentAccordion.prototype, "i18nKey", void 0);
tslib_1.__decorate([
Option('i18nBypass'),
tslib_1.__metadata("design:type", Boolean)
], ComponentAccordion.prototype, "bypass", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ComponentAccordion.prototype, "disabled", void 0);
tslib_1.__decorate([
Option(),
I18N(),
tslib_1.__metadata("design:type", Object)
], ComponentAccordion.prototype, "help", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], ComponentAccordion.prototype, "field", void 0);
tslib_1.__decorate([
Option('load'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentAccordion.prototype, "loadEvent", void 0);
tslib_1.__decorate([
Option('beforeActivate'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentAccordion.prototype, "beforeActivateEvent", void 0);
tslib_1.__decorate([
Option('activate'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentAccordion.prototype, "activateEvent", void 0);
tslib_1.__decorate([
Option('beforeDeactivate'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentAccordion.prototype, "beforeDeactivateEvent", void 0);
tslib_1.__decorate([
Option('deactivate'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentAccordion.prototype, "deactivateEvent", void 0);
tslib_1.__decorate([
Option('beforeEnable'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentAccordion.prototype, "beforeEnableEvent", void 0);
tslib_1.__decorate([
Option('enable'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentAccordion.prototype, "enableEvent", void 0);
tslib_1.__decorate([
Option('beforeDisable'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentAccordion.prototype, "beforeDisableEvent", void 0);
tslib_1.__decorate([
Option('disable'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentAccordion.prototype, "disableEvent", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", Array)
], ComponentAccordion.prototype, "items", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], ComponentAccordion.prototype, "fixedHeight", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], ComponentAccordion.prototype, "name", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ComponentAccordion.prototype, "multipleExpand", void 0);
tslib_1.__decorate([
I18N('components'),
tslib_1.__metadata("design:type", Array)
], ComponentAccordion.prototype, "itemComponents", void 0);
function ComponentAccordion_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
ComponentAccordion.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
ComponentAccordion.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
ComponentAccordion.propDecorators;
/** @type {?} */
ComponentAccordion.TYPE_NAME;
/** @type {?} */
ComponentAccordion.prototype.ACCORDIAN_CONTAINER_SELECTOR;
/** @type {?} */
ComponentAccordion.prototype.dataParent;
/** @type {?} */
ComponentAccordion.prototype.ignoreParentData;
/** @type {?} */
ComponentAccordion.prototype.data;
/** @type {?} */
ComponentAccordion.prototype.ignoreParentDisabled;
/** @type {?} */
ComponentAccordion.prototype.delegateHistory;
/** @type {?} */
ComponentAccordion.prototype.onDisabled;
/** @type {?} */
ComponentAccordion.prototype.onEnabled;
/** @type {?} */
ComponentAccordion.prototype.loadingEnabled;
/** @type {?} */
ComponentAccordion.prototype.i18nKey;
/** @type {?} */
ComponentAccordion.prototype.bypass;
/** @type {?} */
ComponentAccordion.prototype.options;
/** @type {?} */
ComponentAccordion.prototype.disabled;
/** @type {?} */
ComponentAccordion.prototype.help;
/** @type {?} */
ComponentAccordion.prototype.field;
/** @type {?} */
ComponentAccordion.prototype.loadEvent;
/** @type {?} */
ComponentAccordion.prototype.beforeActivateEvent;
/** @type {?} */
ComponentAccordion.prototype.activateEvent;
/** @type {?} */
ComponentAccordion.prototype.beforeDeactivateEvent;
/** @type {?} */
ComponentAccordion.prototype.deactivateEvent;
/** @type {?} */
ComponentAccordion.prototype.beforeEnableEvent;
/** @type {?} */
ComponentAccordion.prototype.enableEvent;
/** @type {?} */
ComponentAccordion.prototype.beforeDisableEvent;
/** @type {?} */
ComponentAccordion.prototype.disableEvent;
/** @type {?} */
ComponentAccordion.prototype.items;
/** @type {?} */
ComponentAccordion.prototype.fixedHeight;
/** @type {?} */
ComponentAccordion.prototype.name;
/** @type {?} */
ComponentAccordion.prototype.multipleExpand;
/** @type {?} */
ComponentAccordion.prototype.itemComponents;
/** @type {?} */
ComponentAccordion.prototype.delayTimer;
/** @type {?} */
ComponentAccordion.prototype.inited;
/** @type {?} */
ComponentAccordion.prototype.activeItems;
/** @type {?} */
ComponentAccordion.prototype.pageComponentHandler;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcG9uZW50QWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudC9kYXRhdmlldy9Db21wb25lbnRBY2NvcmRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHeEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUkxRCx1QkFBTSxTQUFTLEdBQVcseUJBQXlCLENBQUM7QUE4QnBELE1BQU0seUJBQTBCLFNBQVEsaUJBQThDOzs7O0lBMEdwRixZQUFZLFVBQXNCO1FBQ2hDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQzs0Q0F2RzJCLHNCQUFzQjtRQXlHbkUsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7O1FBRXRCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ3hDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDaEQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7b0JBQ2pF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QUU7Ozs7SUFHUixNQUFNLEVBQUU7Ozs7SUFHUixNQUFNLEVBQUU7Ozs7SUFHUixNQUFNLEVBQUU7c0NBQ2EsUUFBUTs7O0lBRTdCLE1BQU0sRUFBRTtzQ0FDWSxRQUFROzs7SUFFNUIsTUFBTSxFQUFFOzs7O0lBR1IsTUFBTSxFQUFFOzs7O0lBR1IsTUFBTSxDQUFDLFlBQVksQ0FBQzs7OztJQUtwQixNQUFNLEVBQUU7Ozs7SUFHUixNQUFNLEVBQUU7SUFDUixJQUFJLEVBQUU7Ozs7SUFJTixNQUFNLEVBQUU7Ozs7SUFNUixNQUFNLENBQUMsTUFBTSxDQUFDO3NDQUNNLFlBQVk7OztJQUloQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7c0NBQ00sWUFBWTs7O0lBRTFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7c0NBQ00sWUFBWTs7O0lBRXBDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFNUMsTUFBTSxDQUFDLFlBQVksQ0FBQztzQ0FDTSxZQUFZOzs7SUFFdEMsTUFBTSxDQUFDLGNBQWMsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFeEMsTUFBTSxDQUFDLFFBQVEsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFbEMsTUFBTSxDQUFDLGVBQWUsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFekMsTUFBTSxDQUFDLFNBQVMsQ0FBQztzQ0FDTSxZQUFZOzs7SUFJbkMsSUFBSSxFQUFFO0lBQ04sTUFBTSxFQUFFOzs7O0lBR1IsTUFBTSxFQUFFOzs7O0lBR1IsTUFBTSxFQUFFOzs7O0lBR1IsTUFBTSxFQUFFOzs7O0lBR1IsSUFBSSxDQUFDLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgRWxlbWVudFJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudEFjY29yZGlvbkl0ZW1Nb2RlbCB9IGZyb20gJy4uL21vZGVsL0Nv