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
303 lines • 32.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { BehaviorSubject } from 'rxjs';
import { distinctUntilChanged, pluck } from 'rxjs/operators';
/*
*
*/
export class LayoutStore {
/**
* \@method constructor
* @param {?} layoutConfig [description]
*/
constructor(layoutConfig) {
this.initialLayoutState = {
isSidebarLeftCollapsed: false,
isSidebarLeftExpandOnOver: false,
isSidebarLeftMouseOver: false,
isSidebarLeftMini: true,
sidebarRightSkin: 'dark',
isSidebarRightCollapsed: true,
isSidebarRightOverContent: true,
layout: 'normal',
sidebarLeftMenu: [],
sidebarLeftMenuActiveUrl: '',
skin: 'blue'
};
if (layoutConfig) {
this.initialLayoutState = Object.assign(this.initialLayoutState, layoutConfig);
}
this._layoutState = new BehaviorSubject(this.initialLayoutState);
this.layoutState = this._layoutState.asObservable();
}
/**
* [windowInnerHeight description]
* \@method windowInnerHeight
* @return {?} [description]
*/
get windowInnerHeight() {
return (/** @type {?} */ (this.layoutState.pipe(pluck('windowInnerHeight'), distinctUntilChanged())));
}
/**
* [windowInnerWidth description]
* \@method windowInnerWidth
* @return {?} [description]
*/
get windowInnerWidth() {
return (/** @type {?} */ (this.layoutState.pipe(pluck('windowInnerWidth'), distinctUntilChanged())));
}
/**
* [isSidebarLeftCollapsed description]
* @return {?} [description]
*/
get isSidebarLeftCollapsed() {
return (/** @type {?} */ (this.layoutState.pipe(pluck('isSidebarLeftCollapsed'), distinctUntilChanged())));
}
/**
* [isSidebarLeftExpandOnOver description]
* \@method isSidebarLeftExpandOnOver
* @return {?} [description]
*/
get isSidebarLeftExpandOnOver() {
return (/** @type {?} */ (this.layoutState.pipe(pluck('isSidebarLeftExpandOnOver'), distinctUntilChanged())));
}
/**
* [isSidebarLeftMouseOver description]
* \@method isSidebarLeftMouseOver
* @return {?} [description]
*/
get isSidebarLeftMouseOver() {
return (/** @type {?} */ (this.layoutState.pipe(pluck('isSidebarLeftMouseOver'), distinctUntilChanged())));
}
/**
* [isSidebarLeftMini description]
* \@method isSidebarLeftMini
* @return {?} [description]
*/
get isSidebarLeftMini() {
return (/** @type {?} */ (this.layoutState.pipe(pluck('isSidebarLeftMini'), distinctUntilChanged())));
}
/**
* [sidebarRightSkin description]
* \@method sidebarRightSkin
* @return {?} [description]
*/
get sidebarRightSkin() {
return (/** @type {?} */ (this.layoutState.pipe(pluck('sidebarRightSkin'), distinctUntilChanged())));
}
/**
* [isSidebarRightCollapsed description]
* @return {?} [description]
*/
get isSidebarRightCollapsed() {
return (/** @type {?} */ (this.layoutState.pipe(pluck('isSidebarRightCollapsed'), distinctUntilChanged())));
}
/**
* [isSidebarRightOverContent description]
* \@method isSidebarRightOverContent
* @return {?} [description]
*/
get isSidebarRightOverContent() {
return (/** @type {?} */ (this.layoutState.pipe(pluck('isSidebarRightOverContent'), distinctUntilChanged())));
}
/**
* [sidebarLeftMenu description]
* \@method sidebarLeftMenu
* @return {?} [description]
*/
get sidebarLeftMenu() {
return (/** @type {?} */ (this.layoutState.pipe(pluck('sidebarLeftMenu'), distinctUntilChanged())));
}
/**
* [sidebarLeftMenuActiveUrl description]
* \@method sidebarLeftMenuActiveUrl
* @return {?} [description]
*/
get sidebarLeftMenuActiveUrl() {
return (/** @type {?} */ (this.layoutState.pipe(pluck('sidebarLeftMenuActiveUrl'), distinctUntilChanged())));
}
/**
* [sidebarLeftElementHeight description]
* \@method sidebarLeftElementHeight
* @return {?} [description]
*/
get sidebarLeftElementHeight() {
return (/** @type {?} */ (this.layoutState.pipe(pluck('sidebarLeftElementHeight'), distinctUntilChanged())));
}
/**
* [layoutType description]
* \@method layoutType
* @return {?} [description]
*/
get layout() {
return (/** @type {?} */ (this.layoutState.pipe(pluck('layout'), distinctUntilChanged())));
}
/**
* [skin description]
* \@method skin
* @return {?} [description]
*/
get skin() {
return (/** @type {?} */ (this.layoutState.pipe(pluck('skin'), distinctUntilChanged())));
}
/**
* [wrapperClasses description]
* \@method wrapperClasses
* @return {?} [description]
*/
get wrapperClasses() {
return (/** @type {?} */ (this.layoutState.pipe(pluck('wrapperClasses'), distinctUntilChanged())));
}
/**
* [sidebarLeftCollapsed description]
* \@method sidebarLeftCollapsed
* @param {?=} value [description]
* @return {?}
*/
sidebarLeftCollapsed(value) {
this._layoutState.next(Object.assign(this._layoutState.value, { isSidebarLeftCollapsed: value }));
}
/**
* [sidebarLeftExpandOnOver description]
* \@method sidebarLeftExpandOnOver
* @param {?=} value [description]
* @return {?}
*/
sidebarLeftExpandOnOver(value) {
this._layoutState.next(Object.assign(this._layoutState.value, { isSidebarLeftExpandOnOver: value }));
}
/**
* [setSidebarLeftElementHeight description]
* \@method setSidebarLeftElementHeight
* @param {?} value [description]
* @return {?}
*/
setSidebarLeftElementHeight(value) {
this._layoutState.next(Object.assign(this._layoutState.value, { sidebarLeftElementHeight: value }));
}
/**
* [setSidebarRightSkin description]
* \@method setSidebarRightSkin
* @param {?=} value [description]
* @return {?}
*/
setSidebarRightSkin(value) {
this._layoutState.next(Object.assign(this._layoutState.value, { sidebarRightSkin: value }));
}
/**
* [sidebarLeftMouseOver description]
* \@method sidebarLeftMouseOver
* @param {?=} value [description]
* @return {?}
*/
sidebarLeftMouseOver(value) {
this._layoutState.next(Object.assign(this._layoutState.value, { isSidebarLeftMouseOver: value }));
}
/**
* [sidebarLeftMini description]
* \@method sidebarLeftMini
* @param {?=} value [description]
* @return {?}
*/
sidebarLeftMini(value) {
this._layoutState.next(Object.assign(this._layoutState.value, { isSidebarLeftMini: value }));
}
/**
* [sidebarRightCollapsed description]
* \@method sidebarRightCollapsed
* @param {?=} value [description]
* @return {?}
*/
sidebarRightCollapsed(value) {
this._layoutState.next(Object.assign(this._layoutState.value, { isSidebarRightCollapsed: value }));
}
/**
* [sidebarRightOverContent description]
* \@method sidebarRightOverContent
* @param {?=} value [description]
* @return {?}
*/
sidebarRightOverContent(value) {
this._layoutState.next(Object.assign(this._layoutState.value, { isSidebarRightOverContent: value }));
}
/**
* [setSidebarLeftMenu description]
* \@method setSidebarLeftMenu
* @param {?} value [description]
* @return {?}
*/
setSidebarLeftMenu(value) {
this._layoutState.next(Object.assign(this._layoutState.value, { sidebarLeftMenu: value }));
}
/**
* [setSidebarLeftMenuActiveUrl description]
* \@method setSidebarLeftMenuActiveUrl
* @param {?} value [description]
* @return {?}
*/
setSidebarLeftMenuActiveUrl(value) {
this._layoutState.next(Object.assign(this._layoutState.value, { sidebarLeftMenuActiveUrl: value }));
}
/**
* [setLayout description]
* \@method setLayout
* @param {?} value [description]
* @return {?}
*/
setLayout(value) {
this._layoutState.next(Object.assign(this._layoutState.value, { layout: value }));
}
/**
* [setSkin description]
* \@method setSkin
* @param {?} value [description]
* @return {?}
*/
setSkin(value) {
this._layoutState.next(Object.assign(this._layoutState.value, { skin: value }));
}
/**
* [setWrapperClasses description]
* \@method setWrapperClasses
* @param {?} value [description]
* @return {?}
*/
setWrapperClasses(value) {
this._layoutState.next(Object.assign(this._layoutState.value, { wrapperClasses: value }));
}
/**
* [setWindowInnerHeight description]
* \@method setWindowInnerHeight
* @param {?} value [description]
* @return {?}
*/
setWindowInnerHeight(value) {
this._layoutState.next(Object.assign(this._layoutState.value, { windowInnerHeight: value }));
}
/**
* [setWindowInnerWidth description]
* \@method setWindowInnerWidth
* @param {?} value [description]
* @return {?}
*/
setWindowInnerWidth(value) {
this._layoutState.next(Object.assign(this._layoutState.value, { windowInnerWidth: value }));
}
}
if (false) {
/** @type {?} */
LayoutStore.prototype.layoutState;
/**
* @type {?}
* @private
*/
LayoutStore.prototype._layoutState;
/**
* @type {?}
* @private
*/
LayoutStore.prototype.initialLayoutState;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LnN0b3JlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWQtY3VzdG9tLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9sYXlvdXQvbGF5b3V0LnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQU83RCxNQUFNLE9BQU8sV0FBVzs7Ozs7SUFzQnBCLFlBQVksWUFBeUI7UUFsQnBCLHVCQUFrQixHQUFnQjtZQUMvQyxzQkFBc0IsRUFBRSxLQUFLO1lBQzdCLHlCQUF5QixFQUFFLEtBQUs7WUFDaEMsc0JBQXNCLEVBQUUsS0FBSztZQUM3QixpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLGdCQUFnQixFQUFFLE1BQU07WUFDeEIsdUJBQXVCLEVBQUUsSUFBSTtZQUM3Qix5QkFBeUIsRUFBRSxJQUFJO1lBQy9CLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLGVBQWUsRUFBRSxFQUFFO1lBQ25CLHdCQUF3QixFQUFFLEVBQUU7WUFDNUIsSUFBSSxFQUFFLE1BQU07U0FDZixDQUFDO1FBT0UsSUFBSSxZQUFZLEVBQUU7WUFDZCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsWUFBWSxDQUFDLENBQUM7U0FDbEY7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4RCxDQUFDOzs7Ozs7SUFPRCxJQUFJLGlCQUFpQjtRQUNqQixPQUFPLG1CQUFvQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMs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dCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgcGx1Y2sgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBMYXlvdXRTdGF0ZSB9IGZyb20gJy4vbGF5b3V0LnN0YXRlJztcclxuXHJcbi8qXHJcbiAqXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTGF5b3V0U3RvcmUge1xyXG4gICAgcHVibGljIHJlYWRvbmx5IGxheW91dFN0YXRlOiBPYnNlcnZhYmxlPExheW91dFN0YXRlPjtcclxuXHJcbiAgICBwcml2YXRlIF9sYXlvdXRTdGF0ZTogQmVoYXZpb3JTdWJqZWN0PExheW91dFN0YXRlPjtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5pdGlhbExheW91dFN0YXRlOiBMYXlvdXRTdGF0ZSA9IHtcclxuICAgICAgICBpc1NpZGViYXJMZWZ0Q29sbGFwc2VkOiBmYWxzZSxcclxuICAgICAgICBpc1NpZGViYXJMZWZ0RXhwYW5kT25PdmVyOiBmYWxzZSxcclxuICAgICAgICBpc1NpZGViYXJMZWZ0TW91c2VPdmVyOiBmYWxzZSxcclxuICAgICAgICBpc1NpZGViYXJMZWZ0TWluaTogdHJ1ZSxcclxuICAgICAgICBzaWRlYmFyUmlnaHRTa2luOiAnZGFyaycsXHJcbiAgICAgICAgaXNTaWRlYmFyUmlnaHRDb2xsYXBzZWQ6IHRydWUsXHJcbiAgICAgICAgaXNTaWRlYmFyUmlnaHRPdmVyQ29udGVudDogdHJ1ZSxcclxuICAgICAgICBsYXlvdXQ6ICdub3JtYWwnLFxyXG4gICAgICAgIHNpZGViYXJMZWZ0TWVudTogW10sXHJcbiAgICAgICAgc2lkZWJhckxlZnRNZW51QWN0aXZlVXJsOiAnJyxcclxuICAgICAgICBza2luOiAnYmx1ZSdcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAbWV0aG9kIGNvbnN0cnVjdG9yXHJcbiAgICAgKiBAcGFyYW0gbGF5b3V0Q29uZmlnIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IobGF5b3V0Q29uZmlnOiBMYXlvdXRTdGF0ZSkge1xyXG4gICAgICAgIGlmIChsYXlvdXRDb25maWcpIHtcclxuICAgICAgICAgICAgdGhpcy5pbml0aWFsTGF5b3V0U3RhdGUgPSBPYmplY3QuYXNzaWduKHRoaXMuaW5pdGlhbExheW91dFN0YXRlLCBsYXlvdXRDb25maWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9sYXlvdXRTdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy5pbml0aWFsTGF5b3V0U3RhdGUpO1xyXG4gICAgICAgIHRoaXMubGF5b3V0U3RhdGUgPSB0aGlzLl9sYXlvdXRTdGF0ZS5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFt3aW5kb3dJbm5lckhlaWdodCBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2Qgd2luZG93SW5uZXJIZWlnaHRcclxuICAgICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBnZXQgd2luZG93SW5uZXJIZWlnaHQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICAgICAgICByZXR1cm4gPE9ic2VydmFibGU8bnVtYmVyPj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ3dpbmRvd0lubmVySGVpZ2h0JyksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW3dpbmRvd0lubmVyV2lkdGggZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIHdpbmRvd0lubmVyV2lkdGhcclxuICAgICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBnZXQgd2luZG93SW5uZXJXaWR0aCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgICAgIHJldHVybiA8T2JzZXJ2YWJsZTxudW1iZXI+PnRoaXMubGF5b3V0U3RhdGUucGlwZShwbHVjaygnd2luZG93SW5uZXJXaWR0aCcpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtpc1NpZGViYXJMZWZ0Q29sbGFwc2VkIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIGdldCBpc1NpZGViYXJMZWZ0Q29sbGFwc2VkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiA8T2JzZXJ2YWJsZTxib29sZWFuPj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ2lzU2lkZWJhckxlZnRDb2xsYXBzZWQnKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbaXNTaWRlYmFyTGVmdEV4cGFuZE9uT3ZlciBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2QgaXNTaWRlYmFyTGVmdEV4cGFuZE9uT3ZlclxyXG4gICAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIGdldCBpc1NpZGViYXJMZWZ0RXhwYW5kT25PdmVyKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiA8T2JzZXJ2YWJsZTxib29sZWFuPj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ2lzU2lkZWJhckxlZnRFeHBhbmRPbk92ZXInKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbaXNTaWRlYmFyTGVmdE1vdXNlT3ZlciBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2QgaXNTaWRlYmFyTGVmdE1vdXNlT3ZlclxyXG4gICAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIGdldCBpc1NpZGViYXJMZWZ0TW91c2VPdmVyKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiA8T2JzZXJ2YWJsZTxib29sZWFuPj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ2lzU2lkZWJhckxlZnRNb3VzZU92ZXInKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbaXNTaWRlYmFyTGVmdE1pbmkgZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIGlzU2lkZWJhckxlZnRNaW5pXHJcbiAgICAgKiBAcmV0dXJuIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgZ2V0IGlzU2lkZWJhckxlZnRNaW5pKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiA8T2JzZXJ2YWJsZTxib29sZWFuPj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ2lzU2lkZWJhckxlZnRNaW5pJyksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW3NpZGViYXJSaWdodFNraW4gZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIHNpZGViYXJSaWdodFNraW5cclxuICAgICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBnZXQgc2lkZWJhclJpZ2h0U2tpbigpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiA8T2JzZXJ2YWJsZTxzdHJpbmc+PnRoaXMubGF5b3V0U3RhdGUucGlwZShwbHVjaygnc2lkZWJhclJpZ2h0U2tpbicpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtpc1NpZGViYXJSaWdodENvbGxhcHNlZCBkZXNjcmlwdGlvbl1cclxuICAgICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBnZXQgaXNTaWRlYmFyUmlnaHRDb2xsYXBzZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIDxPYnNlcnZhYmxlPGJvb2xlYW4+PnRoaXMubGF5b3V0U3RhdGUucGlwZShwbHVjaygnaXNTaWRlYmFyUmlnaHRDb2xsYXBzZWQnKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbaXNTaWRlYmFyUmlnaHRPdmVyQ29udGVudCBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2QgaXNTaWRlYmFyUmlnaHRPdmVyQ29udGVudFxyXG4gICAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIGdldCBpc1NpZGViYXJSaWdodE92ZXJDb250ZW50KCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiA8T2JzZXJ2YWJsZTxib29sZWFuPj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ2lzU2lkZWJhclJpZ2h0T3ZlckNvbnRlbnQnKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbc2lkZWJhckxlZnRNZW51IGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBzaWRlYmFyTGVmdE1lbnVcclxuICAgICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBnZXQgc2lkZWJhckxlZnRNZW51KCk6IE9ic2VydmFibGU8QXJyYXk8YW55Pj4ge1xyXG4gICAgICAgIHJldHVybiA8T2JzZXJ2YWJsZTxBcnJheTxhbnk+Pj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ3NpZGViYXJMZWZ0TWVudScpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtzaWRlYmFyTGVmdE1lbnVBY3RpdmVVcmwgZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIHNpZGViYXJMZWZ0TWVudUFjdGl2ZVVybFxyXG4gICAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIGdldCBzaWRlYmFyTGVmdE1lbnVBY3RpdmVVcmwoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gPE9ic2VydmFibGU8c3RyaW5nPj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ3NpZGViYXJMZWZ0TWVudUFjdGl2ZVVybCcpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtzaWRlYmFyTGVmdEVsZW1lbnRIZWlnaHQgZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIHNpZGViYXJMZWZ0RWxlbWVudEhlaWdodFxyXG4gICAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIGdldCBzaWRlYmFyTGVmdEVsZW1lbnRIZWlnaHQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICAgICAgICByZXR1cm4gPE9ic2VydmFibGU8bnVtYmVyPj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ3NpZGViYXJMZWZ0RWxlbWVudEhlaWdodCcpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtsYXlvdXRUeXBlIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBsYXlvdXRUeXBlXHJcbiAgICAgKiBAcmV0dXJuIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgZ2V0IGxheW91dCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiA8T2JzZXJ2YWJsZTxzdHJpbmc+PnRoaXMubGF5b3V0U3RhdGUucGlwZShwbHVjaygnbGF5b3V0JyksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW3NraW4gZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIHNraW5cclxuICAgICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBnZXQgc2tpbigpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiA8T2JzZXJ2YWJsZTxzdHJpbmc+PnRoaXMubGF5b3V0U3RhdGUucGlwZShwbHVjaygnc2tpbicpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFt3cmFwcGVyQ2xhc3NlcyBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2Qgd3JhcHBlckNsYXNzZXNcclxuICAgICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBnZXQgd3JhcHBlckNsYXNzZXMoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gPE9ic2VydmFibGU8c3RyaW5nPj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ3dyYXBwZXJDbGFzc2VzJyksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW3NpZGViYXJMZWZ0Q29sbGFwc2VkIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBzaWRlYmFyTGVmdENvbGxhcHNlZFxyXG4gICAgICogQHBhcmFtIHZhbHVlIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNpZGViYXJMZWZ0Q29sbGFwc2VkKHZhbHVlPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2xheW91dFN0YXRlLm5leHQoXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHsgaXNTaWRlYmFyTGVmdENvbGxhcHNlZDogdmFsdWUgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW3NpZGViYXJMZWZ0RXhwYW5kT25PdmVyIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBzaWRlYmFyTGVmdEV4cGFuZE9uT3ZlclxyXG4gICAgICogQHBhcmFtIHZhbHVlIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNpZGViYXJMZWZ0RXhwYW5kT25PdmVyKHZhbHVlPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2xheW91dFN0YXRlLm5leHQoXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHsgaXNTaWRlYmFyTGVmdEV4cGFuZE9uT3ZlcjogdmFsdWUgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW3NldFNpZGViYXJMZWZ0RWxlbWVudEhlaWdodCBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2Qgc2V0U2lkZWJhckxlZnRFbGVtZW50SGVpZ2h0XHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0U2lkZWJhckxlZnRFbGVtZW50SGVpZ2h0KHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9sYXlvdXRTdGF0ZS5uZXh0KFxyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuX2xheW91dFN0YXRlLnZhbHVlLCB7IHNpZGViYXJMZWZ0RWxlbWVudEhlaWdodDogdmFsdWUgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW3NldFNpZGViYXJSaWdodFNraW4gZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIHNldFNpZGViYXJSaWdodFNraW5cclxuICAgICAqIEBwYXJhbSB2YWx1ZSBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRTaWRlYmFyUmlnaHRTa2luKHZhbHVlPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbGF5b3V0U3RhdGUubmV4dChcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9sYXlvdXRTdGF0ZS52YWx1ZSwgeyBzaWRlYmFyUmlnaHRTa2luOiB2YWx1ZSB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbc2lkZWJhckxlZnRNb3VzZU92ZXIgZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIHNpZGViYXJMZWZ0TW91c2VPdmVyXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2lkZWJhckxlZnRNb3VzZU92ZXIodmFsdWU/OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbGF5b3V0U3RhdGUubmV4dChcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9sYXlvdXRTdGF0ZS52YWx1ZSwgeyBpc1NpZGViYXJMZWZ0TW91c2VPdmVyOiB2YWx1ZSB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbc2lkZWJhckxlZnRNaW5pIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBzaWRlYmFyTGVmdE1pbmlcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaWRlYmFyTGVmdE1pbmkodmFsdWU/OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbGF5b3V0U3RhdGUubmV4dChcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9sYXlvdXRTdGF0ZS52YWx1ZSwgeyBpc1NpZGViYXJMZWZ0TWluaTogdmFsdWUgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW3NpZGViYXJSaWdodENvbGxhcHNlZCBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2Qgc2lkZWJhclJpZ2h0Q29sbGFwc2VkXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2lkZWJhclJpZ2h0Q29sbGFwc2VkKHZhbHVlPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2xheW91dFN0YXRlLm5leHQoXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHsgaXNTaWRlYmFyUmlnaHRDb2xsYXBzZWQ6IHZhbHVlIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtzaWRlYmFyUmlnaHRPdmVyQ29udGVudCBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2Qgc2lkZWJhclJpZ2h0T3ZlckNvbnRlbnRcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaWRlYmFyUmlnaHRPdmVyQ29udGVudCh2YWx1ZT86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9sYXlvdXRTdGF0ZS5uZXh0KFxyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuX2xheW91dFN0YXRlLnZhbHVlLCB7IGlzU2lkZWJhclJpZ2h0T3ZlckNvbnRlbnQ6IHZhbHVlIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtzZXRTaWRlYmFyTGVmdE1lbnUgZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIHNldFNpZGViYXJMZWZ0TWVudVxyXG4gICAgICogQHBhcmFtIHZhbHVlIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldFNpZGViYXJMZWZ0TWVudSh2YWx1ZTogQXJyYXk8YW55Pik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2xheW91dFN0YXRlLm5leHQoXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHsgc2lkZWJhckxlZnRNZW51OiB2YWx1ZSB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbc2V0U2lkZWJhckxlZnRNZW51QWN0aXZlVXJsIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBzZXRTaWRlYmFyTGVmdE1lbnVBY3RpdmVVcmxcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRTaWRlYmFyTGVmdE1lbnVBY3RpdmVVcmwodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2xheW91dFN0YXRlLm5leHQoXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHsgc2lkZWJhckxlZnRNZW51QWN0aXZlVXJsOiB2YWx1ZSB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbc2V0TGF5b3V0IGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBzZXRMYXlvdXRcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRMYXlvdXQodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2xheW91dFN0YXRlLm5leHQoXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHsgbGF5b3V0OiB2YWx1ZSB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbc2V0U2tpbiBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2Qgc2V0U2tpblxyXG4gICAgICogQHBhcmFtIHZhbHVlIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldFNraW4odmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2xheW91dFN0YXRlLm5leHQoXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHsgc2tpbjogdmFsdWUgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW3NldFdyYXBwZXJDbGFzc2VzIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBzZXRXcmFwcGVyQ2xhc3Nlc1xyXG4gICAgICogQHBhcmFtIHZhbHVlIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldFdyYXBwZXJDbGFzc2VzKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9sYXlvdXRTdGF0ZS5uZXh0KFxyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuX2xheW91dFN0YXRlLnZhbHVlLCB7IHdyYXBwZXJDbGFzc2VzOiB2YWx1ZSB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbc2V0V2luZG93SW5uZXJIZWlnaHQgZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIHNldFdpbmRvd0lubmVySGVpZ2h0XHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0V2luZG93SW5uZXJIZWlnaHQodmFsdWU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2xheW91dFN0YXRlLm5leHQoXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHsgd2luZG93SW5uZXJIZWlnaHQ6IHZhbHVlIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtzZXRXaW5kb3dJbm5lcldpZHRoIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBzZXRXaW5kb3dJbm5lcldpZHRoXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0V2luZG93SW5uZXJXaWR0aCh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbGF5b3V0U3RhdGUubmV4dChcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9sYXlvdXRTdGF0ZS52YWx1ZSwgeyB3aW5kb3dJbm5lcldpZHRoOiB2YWx1ZSB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIl19