ad-custom-lib
Version:
This is an UI custom library based on Adminlte library with purpose for personal use, if you need a full template of Primeng please visit https://github.com/mledour/angular-admin-lte
292 lines • 23 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, EventEmitter, Input, NgZone, Output, Renderer2, ViewChild } from '@angular/core';
import { removeListeners } from '../helpers';
import { BoxContentDirective, BoxFooterDirective, BoxHeaderDirective, BoxToolsDirective } from './box.directive';
/*
*
*/
var BoxComponent = /** @class */ (function () {
/**
* @method constructor
* @param changeDetectorRef [description]
* @param ngZone [description]
* @param renderer2 [description]
*/
function BoxComponent(changeDetectorRef, ngZone, renderer2) {
this.changeDetectorRef = changeDetectorRef;
this.ngZone = ngZone;
this.renderer2 = renderer2;
this.remove = false;
this.listeners = [];
this.boxColor = 'default';
this.buttonsStyleClass = 'btn btn-box-tool';
this.contentStyleClass = 'box-content-wrapper';
this.footerStyleClass = 'box-footer';
this.headerBorder = true;
this.headerStyleClass = 'box-header';
this.isCollapsable = true;
this.isCollapsed = false;
this.isRemovable = true;
this.isSolid = false;
this.loadingStyleClass = 'fa fa-refresh fa-spin';
this.styleClass = 'box';
this.onCollapseDone = new EventEmitter();
this.onCollapseStart = new EventEmitter();
}
/**
* @method ngAfterViewInit
*/
/**
* \@method ngAfterViewInit
* @return {?}
*/
BoxComponent.prototype.ngAfterViewInit = /**
* \@method ngAfterViewInit
* @return {?}
*/
function () {
var _this = this;
this.ngZone.runOutsideAngular((/**
* @return {?}
*/
function () {
if (_this.toggleButtonElement) {
_this.listeners.push(_this.renderer2.listen(_this.toggleButtonElement.nativeElement, 'click', (/**
* @return {?}
*/
function () {
_this.isCollapsed = !_this.isCollapsed;
_this.changeDetectorRef.detectChanges();
})));
}
if (_this.removeButtonElement) {
_this.listeners.push(_this.renderer2.listen(_this.removeButtonElement.nativeElement, 'click', (/**
* @return {?}
*/
function () {
_this.remove = true;
_this.changeDetectorRef.detectChanges();
})));
}
}));
};
/**
* @method ngOnDestroy
*/
/**
* \@method ngOnDestroy
* @return {?}
*/
BoxComponent.prototype.ngOnDestroy = /**
* \@method ngOnDestroy
* @return {?}
*/
function () {
removeListeners(this.listeners);
};
/**
* [removedDone description]
* @method removedDone
* @param event [description]
*/
/**
* [removedDone description]
* \@method removedDone
* @param {?} event [description]
* @return {?}
*/
BoxComponent.prototype.removedDone = /**
* [removedDone description]
* \@method removedDone
* @param {?} event [description]
* @return {?}
*/
function (event) {
if (event.toState === '1') {
this.removed = true;
}
};
/**
* [collapseStart description]
* @method collapseStart
* @param event [description]
*/
/**
* [collapseStart description]
* \@method collapseStart
* @param {?} event [description]
* @return {?}
*/
BoxComponent.prototype.collapseStart = /**
* [collapseStart description]
* \@method collapseStart
* @param {?} event [description]
* @return {?}
*/
function (event) {
if (event.fromState !== 'void') {
this.isCollaping = true;
this.onCollapseStart.emit(event);
}
};
/**
* [collapseDone description]
* @method collapseDone
* @param event [description]
*/
/**
* [collapseDone description]
* \@method collapseDone
* @param {?} event [description]
* @return {?}
*/
BoxComponent.prototype.collapseDone = /**
* [collapseDone description]
* \@method collapseDone
* @param {?} event [description]
* @return {?}
*/
function (event) {
if (event.fromState !== 'void') {
this.isCollaping = false;
this.onCollapseDone.emit(event);
}
};
BoxComponent.decorators = [
{ type: Component, args: [{
selector: 'mk-box',
template: "<div *ngIf=\"!removed\" [mkColor]=\"boxColor\" mkColorProperty=\"border-color\" mkColorPrefix=\"box\" [ngClass]=\"styleClass\"\r\n [class.collapsed-box]=\"isCollapsed && !isCollaping\" [class.box-solid]=\"isSolid\" [mkCollapseAnimation]=\"remove\"\r\n (mkCollapseAnimation.done)=\"removedDone($event)\">\r\n <div *ngIf=\"header || boxHeaderDirective\" [ngClass]=\"headerStyleClass\" [mkColor]=\"boxColor\"\r\n [mkColorCondition]=\"isSolid\" mkColorProperty=\"background-color\" [class.with-border]=\"headerBorder\">\r\n <h3 class=\"box-title\" [mkFontColor]=\"headerColor\">\r\n {{header}}\r\n <ng-content select=\"mk-box-header\"></ng-content>\r\n </h3>\r\n <div class=\"box-tools pull-right\">\r\n <ng-content select=\"mk-box-tools\"></ng-content>\r\n <button *ngIf=\"isCollapsable\" type=\"button\" [ngClass]=\"buttonsStyleClass\" #toggleButtonElement>\r\n <i class=\"fa\" [ngClass]=\"{'fa-plus': isCollapsed, 'fa-minus': !isCollapsed}\"></i>\r\n </button>\r\n <button *ngIf=\"isRemovable\" type=\"button\" [ngClass]=\"buttonsStyleClass\" #removeButtonElement>\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"contentStyleClass\" [mkFontColor]=\"contentColor\" [mkCollapseAnimation]=\"isCollapsed\"\r\n (mkCollapseAnimation.start)=\"collapseStart($event)\" (mkCollapseAnimation.done)=\"collapseDone($event)\">\r\n <div class=\"box-body\">\r\n <ng-container\r\n *ngIf=\"boxHeaderDirective || boxContentDirective || boxFooterDirective || boxToolsDirective; else noDirective\">\r\n <ng-content select=\"mk-box-content\"></ng-content>\r\n </ng-container>\r\n <ng-template #noDirective>\r\n <ng-content></ng-content>\r\n </ng-template>\r\n </div>\r\n <div *ngIf=\"footer || boxFooterDirective\" [ngClass]=\"footerStyleClass\" [mkFontColor]=\"footerColor\">\r\n {{footer}}\r\n <ng-content select=\"mk-box-footer\"></ng-content>\r\n </div>\r\n </div>\r\n <div *ngIf=\"isLoading\" class=\"overlay\">\r\n <i [ngClass]=\"loadingStyleClass\" [mkFontColor]=\"loadingColor\"></i>\r\n </div>\r\n</div>",
changeDetection: ChangeDetectionStrategy.OnPush,
styles: [".box.collapsed-box .box-body,.box.collapsed-box .box-footer{display:inherit}.box-solid{border:1px solid}.box-body{background-color:#fff}.box.box-solid.bg-color>.box-header{color:#fff}"]
}] }
];
/** @nocollapse */
BoxComponent.ctorParameters = function () { return [
{ type: ChangeDetectorRef },
{ type: NgZone },
{ type: Renderer2 }
]; };
BoxComponent.propDecorators = {
boxColor: [{ type: Input }],
buttonsStyleClass: [{ type: Input }],
contentStyleClass: [{ type: Input }],
contentColor: [{ type: Input }],
footer: [{ type: Input }],
footerColor: [{ type: Input }],
footerStyleClass: [{ type: Input }],
header: [{ type: Input }],
headerBorder: [{ type: Input }],
headerColor: [{ type: Input }],
headerStyleClass: [{ type: Input }],
isCollapsable: [{ type: Input }],
isCollapsed: [{ type: Input }],
isLoading: [{ type: Input }],
isRemovable: [{ type: Input }],
isSolid: [{ type: Input }],
loadingColor: [{ type: Input }],
loadingStyleClass: [{ type: Input }],
styleClass: [{ type: Input }],
onCollapseDone: [{ type: Output }],
onCollapseStart: [{ type: Output }],
boxHeaderDirective: [{ type: ContentChild, args: [BoxHeaderDirective, { static: true },] }],
boxFooterDirective: [{ type: ContentChild, args: [BoxFooterDirective, { static: true },] }],
boxContentDirective: [{ type: ContentChild, args: [BoxContentDirective, { static: true },] }],
boxToolsDirective: [{ type: ContentChild, args: [BoxToolsDirective, { static: true },] }],
toggleButtonElement: [{ type: ViewChild, args: ['toggleButtonElement', { static: true },] }],
removeButtonElement: [{ type: ViewChild, args: ['removeButtonElement', { static: true },] }]
};
return BoxComponent;
}());
export { BoxComponent };
if (false) {
/** @type {?} */
BoxComponent.prototype.isCollaping;
/** @type {?} */
BoxComponent.prototype.remove;
/** @type {?} */
BoxComponent.prototype.removed;
/**
* @type {?}
* @private
*/
BoxComponent.prototype.listeners;
/** @type {?} */
BoxComponent.prototype.boxColor;
/** @type {?} */
BoxComponent.prototype.buttonsStyleClass;
/** @type {?} */
BoxComponent.prototype.contentStyleClass;
/** @type {?} */
BoxComponent.prototype.contentColor;
/** @type {?} */
BoxComponent.prototype.footer;
/** @type {?} */
BoxComponent.prototype.footerColor;
/** @type {?} */
BoxComponent.prototype.footerStyleClass;
/** @type {?} */
BoxComponent.prototype.header;
/** @type {?} */
BoxComponent.prototype.headerBorder;
/** @type {?} */
BoxComponent.prototype.headerColor;
/** @type {?} */
BoxComponent.prototype.headerStyleClass;
/** @type {?} */
BoxComponent.prototype.isCollapsable;
/** @type {?} */
BoxComponent.prototype.isCollapsed;
/** @type {?} */
BoxComponent.prototype.isLoading;
/** @type {?} */
BoxComponent.prototype.isRemovable;
/** @type {?} */
BoxComponent.prototype.isSolid;
/** @type {?} */
BoxComponent.prototype.loadingColor;
/** @type {?} */
BoxComponent.prototype.loadingStyleClass;
/** @type {?} */
BoxComponent.prototype.styleClass;
/** @type {?} */
BoxComponent.prototype.onCollapseDone;
/** @type {?} */
BoxComponent.prototype.onCollapseStart;
/** @type {?} */
BoxComponent.prototype.boxHeaderDirective;
/** @type {?} */
BoxComponent.prototype.boxFooterDirective;
/** @type {?} */
BoxComponent.prototype.boxContentDirective;
/** @type {?} */
BoxComponent.prototype.boxToolsDirective;
/**
* @type {?}
* @private
*/
BoxComponent.prototype.toggleButtonElement;
/**
* @type {?}
* @private
*/
BoxComponent.prototype.removeButtonElement;
/**
* @type {?}
* @private
*/
BoxComponent.prototype.changeDetectorRef;
/**
* @type {?}
* @private
*/
BoxComponent.prototype.ngZone;
/**
* @type {?}
* @private
*/
BoxComponent.prototype.renderer2;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FkLWN1c3RvbS1saWIvIiwic291cmNlcyI6WyJsaWIvYm94L2JveC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDWSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUNsRixZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFDdkUsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM3QyxPQUFPLEVBQ0gsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQ2pGLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFLekI7SUEyQ0k7Ozs7O09BS0c7SUFDSCxzQkFDWSxpQkFBb0MsRUFDcEMsTUFBYyxFQUNkLFNBQW9CO1FBRnBCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGNBQVMsR0FBVCxTQUFTLENBQVc7UUE1Q3pCLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZCxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRVAsYUFBUSxHQUFHLFNBQVMsQ0FBQztRQUNyQixzQkFBaUIsR0FBRyxrQkFBa0IsQ0FBQztRQUN2QyxzQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQztRQUkxQyxxQkFBZ0IsR0FBRyxZQUFZLENBQUM7UUFFaEMsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFFcEIscUJBQWdCLEdBQUcsWUFBWSxDQUFDO1FBQ2hDLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFaEIsc0JBQWlCLEdBQUcsdUJBQXVCLENBQUM7UUFDNUMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVsQixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDcEMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBb0JsRCxDQUFDO0lBRUw7O09BRUc7Ozs7O0lBQ0gsc0NBQWU7Ozs7SUFBZjtRQUFBLGlCQWVDO1FBZEcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUI7OztRQUFDO1lBQzFCLElBQUksS0FBSSxDQUFDLG1CQUFtQixFQUFFO2dCQUMxQixLQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFLE9BQU87OztnQkFBRTtvQkFDdkYsS0FBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEtBQUksQ0FBQyxXQUFXLENBQUM7b0JBQ3JDLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDM0MsQ0FBQyxFQUFDLENBQUMsQ0FBQzthQUNQO1lBQ0QsSUFBSSxLQUFJLENBQUMsbUJBQW1CLEVBQUU7Z0JBQzFCLEtBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsT0FBTzs7O2dCQUFFO29CQUN2RixLQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztvQkFDbkIsS0FBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMzQyxDQUFDLEVBQUMsQ0FBQyxDQUFDO2FBQ1A7UUFDTCxDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7T0FFRzs7Ozs7SUFDSCxrQ0FBVzs7OztJQUFYO1FBQ0ksZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7T0FJRzs7Ozs7OztJQUNJLGtDQUFXOzs7Ozs7SUFBbEIsVUFBbUIsS0FBSztRQUNwQixJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssR0FBRyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7Ozs7Ozs7SUFDSSxvQ0FBYTs7Ozs7O0lBQXBCLFVBQXFCLEtBQXFCO1FBQ3RDLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxNQUFNLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDcEM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRzs7Ozs7OztJQUNJLG1DQUFZOzs7Ozs7SUFBbkIsVUFBb0IsS0FBcUI7UUFDckMsSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLE1BQU0sRUFBRTtZQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuQztJQUNMLENBQUM7O2dCQW5ISixTQUFTLFNBQUM7b0JBQ1AsUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLDJ6RUFBbUM7b0JBRW5DLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztpQkFDbEQ7Ozs7Z0JBbEIyQyxpQkFBaUI7Z0JBQ3BDLE1BQU07Z0JBQXFCLFNBQVM7OzsyQkF3QnhELEtBQUs7b0NBQ0wsS0FBSztvQ0FDTCxLQUFLOytCQUNMLEtBQUs7eUJBQ0wsS0FBSzs4QkFDTCxLQUFLO21DQUNMLEtBQUs7eUJBQ0wsS0FBSzsrQkFDTCxLQUFLOzhCQUNMLEtBQUs7bUNBQ0wsS0FBSztnQ0FDTCxLQUFLOzhCQUNMLEtBQUs7NEJBQ0wsS0FBSzs4QkFDTCxLQUFLOzBCQUNMLEtBQUs7K0JBQ0wsS0FBSztvQ0FDTCxLQUFLOzZCQUNMLEtBQUs7aUNBRUwsTUFBTTtrQ0FDTixNQUFNO3FDQUVOLFlBQVksU0FBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7cUNBQ2pELFlBQVksU0FBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7c0NBQ2pELFlBQVksU0FBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7b0NBQ2xELFlBQVksU0FBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7c0NBRWhELFNBQVMsU0FBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7c0NBQ2pELFNBQVMsU0FBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7O0lBMkV0RCxtQkFBQztDQUFBLEFBcEhELElBb0hDO1NBOUdZLFlBQVk7OztJQUNyQixtQ0FBNEI7O0lBQzVCLDhCQUFzQjs7SUFDdEIsK0JBQXdCOzs7OztJQUN4QixpQ0FBdUI7O0lBRXZCLGdDQUFxQzs7SUFDckMseUNBQXVEOztJQUN2RCx5Q0FBMEQ7O0lBQzFELG9DQUFxQzs7SUFDckMsOEJBQStCOztJQUMvQixtQ0FBb0M7O0lBQ3BDLHdDQUFnRDs7SUFDaEQsOEJBQStCOztJQUMvQixvQ0FBb0M7O0lBQ3BDLG1DQUFvQzs7SUFDcEMsd0NBQWdEOztJQUNoRCxxQ0FBcUM7O0lBQ3JDLG1DQUFvQzs7SUFDcEMsaUNBQW1DOztJQUNuQyxtQ0FBbUM7O0lBQ25DLCtCQUFnQzs7SUFDaEMsb0NBQXFDOztJQUNyQyx5Q0FBNEQ7O0lBQzVELGtDQUFtQzs7SUFFbkMsc0NBQXFEOztJQUNyRCx1Q0FBc0Q7O0lBRXRELDBDQUFrRzs7SUFDbEcsMENBQWtHOztJQUNsRywyQ0FBcUc7O0lBQ3JHLHlDQUErRjs7Ozs7SUFFL0YsMkNBQWdGOzs7OztJQUNoRiwyQ0FBZ0Y7Ozs7O0lBUzVFLHlDQUE0Qzs7Ozs7SUFDNUMsOEJBQXNCOzs7OztJQUN0QixpQ0FBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCxcclxuICAgIEV2ZW50RW1pdHRlciwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPdXRwdXQsIFJlbmRlcmVyMiwgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBBbmltYXRpb25FdmVudCB9IGZyb20gJy4uL2FuaW1hdGlvbnMvYW5pbWF0aW9ucy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyByZW1vdmVMaXN0ZW5lcnMgfSBmcm9tICcuLi9oZWxwZXJzJztcclxuaW1wb3J0IHtcclxuICAgIEJveENvbnRlbnREaXJlY3RpdmUsIEJveEZvb3RlckRpcmVjdGl2ZSwgQm94SGVhZGVyRGlyZWN0aXZlLCBCb3hUb29sc0RpcmVjdGl2ZVxyXG59IGZyb20gJy4vYm94LmRpcmVjdGl2ZSc7XHJcblxyXG4vKlxyXG4gKlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ21rLWJveCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYm94LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2JveC5jb21wb25lbnQuY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQm94Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAgIHB1YmxpYyBpc0NvbGxhcGluZzogYm9vbGVhbjtcclxuICAgIHB1YmxpYyByZW1vdmUgPSBmYWxzZTtcclxuICAgIHB1YmxpYyByZW1vdmVkOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBsaXN0ZW5lcnMgPSBbXTtcclxuXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgYm94Q29sb3IgPSAnZGVmYXVsdCc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgYnV0dG9uc1N0eWxlQ2xhc3MgPSAnYnRuIGJ0bi1ib3gtdG9vbCc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgY29udGVudFN0eWxlQ2xhc3MgPSAnYm94LWNvbnRlbnQtd3JhcHBlcic7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgY29udGVudENvbG9yOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgZm9vdGVyOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgZm9vdGVyQ29sb3I6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBmb290ZXJTdHlsZUNsYXNzID0gJ2JveC1mb290ZXInO1xyXG4gICAgQElucHV0KCkgcHVibGljIGhlYWRlcjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgcHVibGljIGhlYWRlckJvcmRlciA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaGVhZGVyQ29sb3I6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBoZWFkZXJTdHlsZUNsYXNzID0gJ2JveC1oZWFkZXInO1xyXG4gICAgQElucHV0KCkgcHVibGljIGlzQ29sbGFwc2FibGUgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgcHVibGljIGlzQ29sbGFwc2VkID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaXNMb2FkaW5nOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgcHVibGljIGlzUmVtb3ZhYmxlID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBpc1NvbGlkID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgbG9hZGluZ0NvbG9yOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgbG9hZGluZ1N0eWxlQ2xhc3MgPSAnZmEgZmEtcmVmcmVzaCBmYS1zcGluJztcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBzdHlsZUNsYXNzID0gJ2JveCc7XHJcblxyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbkNvbGxhcHNlRG9uZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBwdWJsaWMgb25Db2xsYXBzZVN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIEBDb250ZW50Q2hpbGQoQm94SGVhZGVyRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgYm94SGVhZGVyRGlyZWN0aXZlOiBCb3hIZWFkZXJEaXJlY3RpdmU7XHJcbiAgICBAQ29udGVudENoaWxkKEJveEZvb3RlckRpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGJveEZvb3RlckRpcmVjdGl2ZTogQm94Rm9vdGVyRGlyZWN0aXZlO1xyXG4gICAgQENvbnRlbnRDaGlsZChCb3hDb250ZW50RGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgYm94Q29udGVudERpcmVjdGl2ZTogQm94Q29udGVudERpcmVjdGl2ZTtcclxuICAgIEBDb250ZW50Q2hpbGQoQm94VG9vbHNEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBib3hUb29sc0RpcmVjdGl2ZTogQm94VG9vbHNEaXJlY3RpdmU7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgndG9nZ2xlQnV0dG9uRWxlbWVudCcsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgdG9nZ2xlQnV0dG9uRWxlbWVudDtcclxuICAgIEBWaWV3Q2hpbGQoJ3JlbW92ZUJ1dHRvbkVsZW1lbnQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIHJlbW92ZUJ1dHRvbkVsZW1lbnQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAbWV0aG9kIGNvbnN0cnVjdG9yXHJcbiAgICAgKiBAcGFyYW0gY2hhbmdlRGV0ZWN0b3JSZWYgW2Rlc2NyaXB0aW9uXVxyXG4gICAgICogQHBhcmFtIG5nWm9uZSAgICAgICAgICAgIFtkZXNjcmlwdGlvbl1cclxuICAgICAqIEBwYXJhbSByZW5kZXJlcjIgICAgICAgICBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXHJcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjI6IFJlbmRlcmVyMlxyXG4gICAgKSB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBtZXRob2QgbmdBZnRlclZpZXdJbml0XHJcbiAgICAgKi9cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRvZ2dsZUJ1dHRvbkVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzLnB1c2godGhpcy5yZW5kZXJlcjIubGlzdGVuKHRoaXMudG9nZ2xlQnV0dG9uRWxlbWVudC5uYXRpdmVFbGVtZW50LCAnY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvbGxhcHNlZCA9ICF0aGlzLmlzQ29sbGFwc2VkO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJlbW92ZUJ1dHRvbkVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzLnB1c2godGhpcy5yZW5kZXJlcjIubGlzdGVuKHRoaXMucmVtb3ZlQnV0dG9uRWxlbWVudC5uYXRpdmVFbGVtZW50LCAnY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAbWV0aG9kIG5nT25EZXN0cm95XHJcbiAgICAgKi9cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHJlbW92ZUxpc3RlbmVycyh0aGlzLmxpc3RlbmVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbcmVtb3ZlZERvbmUgZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIHJlbW92ZWREb25lXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVtb3ZlZERvbmUoZXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJzEnKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2NvbGxhcHNlU3RhcnQgZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIGNvbGxhcHNlU3RhcnRcclxuICAgICAqIEBwYXJhbSBldmVudCBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb2xsYXBzZVN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmIChldmVudC5mcm9tU3RhdGUgIT09ICd2b2lkJykge1xyXG4gICAgICAgICAgICB0aGlzLmlzQ29sbGFwaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5vbkNvbGxhcHNlU3RhcnQuZW1pdChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2NvbGxhcHNlRG9uZSBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2QgY29sbGFwc2VEb25lXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY29sbGFwc2VEb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmIChldmVudC5mcm9tU3RhdGUgIT09ICd2b2lkJykge1xyXG4gICAgICAgICAgICB0aGlzLmlzQ29sbGFwaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMub25Db2xsYXBzZURvbmUuZW1pdChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==