ng-flexmonster
Version:
Angular 4+ Module for Flexmonster Pivot Table & Charts
227 lines (221 loc) • 29.3 kB
JavaScript
import { Component, ElementRef, Input, Output, EventEmitter, NgModule } from '@angular/core';
import * as Flexmonster from 'flexmonster';
import { CommonModule } from '@angular/common';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
class FlexmonsterPivot {
/**
* @param {?} el
*/
constructor(el) {
// events
this.cellclick = new EventEmitter();
this.celldoubleclick = new EventEmitter();
this.chartclick = new EventEmitter();
this.dataerror = new EventEmitter();
this.datafilecancelled = new EventEmitter();
this.dataloaded = new EventEmitter();
this.datachanged = new EventEmitter();
this.fieldslistclose = new EventEmitter();
this.fieldslistopen = new EventEmitter();
this.filterclose = new EventEmitter();
this.filteropen = new EventEmitter();
this.drillthroughopen = new EventEmitter();
this.exportcomplete = new EventEmitter();
this.exportstart = new EventEmitter();
this.drillthroughclose = new EventEmitter();
this.fullscreen = new EventEmitter();
this.loadingdata = new EventEmitter();
this.loadinglocalization = new EventEmitter();
this.loadingolapstructure = new EventEmitter();
this.loadingreportfile = new EventEmitter();
this.localizationerror = new EventEmitter();
this.localizationloaded = new EventEmitter();
this.olapstructureerror = new EventEmitter();
this.olapstructureloaded = new EventEmitter();
this.openingreportfile = new EventEmitter();
this.printcomplete = new EventEmitter();
this.printstart = new EventEmitter();
this.querycomplete = new EventEmitter();
this.queryerror = new EventEmitter();
this.ready = new EventEmitter();
this.reportchange = new EventEmitter();
this.reportcomplete = new EventEmitter();
this.reportfilecancelled = new EventEmitter();
this.reportfileerror = new EventEmitter();
this.runningquery = new EventEmitter();
this.unauthorizederror = new EventEmitter();
this.update = new EventEmitter();
this.beforetoolbarcreated = new EventEmitter();
this.beforegriddraw = new EventEmitter();
this.aftergriddraw = new EventEmitter();
this.afterchartdraw = new EventEmitter();
this.root = (/** @type {?} */ (el.nativeElement));
}
/**
* @return {?}
*/
ngOnInit() {
this.flexmonster = new Flexmonster({
container: this.root.getElementsByClassName('fm-ng-wrapper')[0],
componentFolder: this.componentFolder,
width: this.width,
height: this.height,
toolbar: this.toolbar,
licenseKey: this.licenseKey,
licenseFilePath: this.licenseFilePath,
report: this.report,
global: this.global,
accessibility: this.accessibility,
shareReportConnection: this.shareReportConnection,
customizeAPIRequest: this.customizeAPIRequest,
customizeCell: this.customizeCell,
customizeChartElement: this.customizeChartElement,
customizeContextMenu: this.customizeContextMenu,
sortFieldsList: this.sortFieldsList,
cellclick: (cell) => this.cellclick.next(cell),
celldoubleclick: (cell) => this.celldoubleclick.next(cell),
chartclick: (event) => this.chartclick.next(event),
datachanged: (event) => this.datachanged.next(event),
dataerror: (event) => this.dataerror.next(event),
datafilecancelled: () => this.datafilecancelled.next(),
dataloaded: () => this.dataloaded.next(),
fieldslistclose: () => this.fieldslistclose.next(),
fieldslistopen: () => this.fieldslistopen.next(),
filterclose: () => this.filterclose.next(),
filteropen: (event) => this.filteropen.next(event),
drillthroughopen: (cell) => this.drillthroughopen.next(cell),
exportcomplete: () => this.exportcomplete.next(),
exportstart: () => this.exportstart.next(),
drillthroughclose: () => this.drillthroughclose.next(),
loadingdata: () => this.loadingdata.next(),
loadinglocalization: () => this.loadinglocalization.next(),
loadingolapstructure: () => this.loadingolapstructure.next(),
loadingreportfile: () => this.loadingreportfile.next(),
localizationerror: () => this.localizationerror.next(),
localizationloaded: () => this.localizationloaded.next(),
olapstructureerror: (event) => this.olapstructureerror.next(event),
olapstructureloaded: () => this.olapstructureloaded.next(),
openingreportfile: () => this.openingreportfile.next(),
printcomplete: () => this.printcomplete.next(),
printstart: () => this.printstart.next(),
querycomplete: () => this.querycomplete.next(),
queryerror: (event) => this.queryerror.next(event),
ready: () => this.ready.next(this.flexmonster),
reportchange: () => this.reportchange.next(),
reportcomplete: () => this.reportcomplete.next(),
reportfilecancelled: () => this.reportfilecancelled.next(),
reportfileerror: () => this.reportfileerror.next(),
runningquery: () => this.runningquery.next(),
unauthorizederror: (done) => this.unauthorizederror.next(done),
update: () => this.update.next(),
beforetoolbarcreated: (toolbar) => this.beforetoolbarcreated.next(toolbar),
beforegriddraw: (event) => this.beforegriddraw.next(event),
aftergriddraw: (event) => this.aftergriddraw.next(event),
afterchartdraw: () => this.afterchartdraw.next()
});
}
/**
* @return {?}
*/
ngOnDestroy() {
if (this.flexmonster) {
this.flexmonster.dispose();
this.flexmonster = null;
}
}
}
FlexmonsterPivot.decorators = [
{ type: Component, args: [{
selector: 'fm-pivot',
template: '<div style="width:100%;height:100%;"><div class="fm-ng-wrapper"></div></div>'
},] },
];
FlexmonsterPivot.ctorParameters = () => [
{ type: ElementRef }
];
FlexmonsterPivot.propDecorators = {
toolbar: [{ type: Input }],
licenseKey: [{ type: Input }],
licenseFilePath: [{ type: Input }],
width: [{ type: Input }],
height: [{ type: Input }],
componentFolder: [{ type: Input }],
report: [{ type: Input }],
shareReportConnection: [{ type: Input }],
global: [{ type: Input }],
accessibility: [{ type: Input }],
customizeAPIRequest: [{ type: Input }],
customizeCell: [{ type: Input }],
customizeChartElement: [{ type: Input }],
customizeContextMenu: [{ type: Input }],
sortFieldsList: [{ type: Input }],
cellclick: [{ type: Output }],
celldoubleclick: [{ type: Output }],
chartclick: [{ type: Output }],
dataerror: [{ type: Output }],
datafilecancelled: [{ type: Output }],
dataloaded: [{ type: Output }],
datachanged: [{ type: Output }],
fieldslistclose: [{ type: Output }],
fieldslistopen: [{ type: Output }],
filterclose: [{ type: Output }],
filteropen: [{ type: Output }],
drillthroughopen: [{ type: Output }],
exportcomplete: [{ type: Output }],
exportstart: [{ type: Output }],
drillthroughclose: [{ type: Output }],
fullscreen: [{ type: Output }],
loadingdata: [{ type: Output }],
loadinglocalization: [{ type: Output }],
loadingolapstructure: [{ type: Output }],
loadingreportfile: [{ type: Output }],
localizationerror: [{ type: Output }],
localizationloaded: [{ type: Output }],
olapstructureerror: [{ type: Output }],
olapstructureloaded: [{ type: Output }],
openingreportfile: [{ type: Output }],
printcomplete: [{ type: Output }],
printstart: [{ type: Output }],
querycomplete: [{ type: Output }],
queryerror: [{ type: Output }],
ready: [{ type: Output }],
reportchange: [{ type: Output }],
reportcomplete: [{ type: Output }],
reportfilecancelled: [{ type: Output }],
reportfileerror: [{ type: Output }],
runningquery: [{ type: Output }],
unauthorizederror: [{ type: Output }],
update: [{ type: Output }],
beforetoolbarcreated: [{ type: Output }],
beforegriddraw: [{ type: Output }],
aftergriddraw: [{ type: Output }],
afterchartdraw: [{ type: Output }]
};
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
class FlexmonsterPivotModule {
}
FlexmonsterPivotModule.decorators = [
{ type: NgModule, args: [{
imports: [
CommonModule
],
declarations: [FlexmonsterPivot],
exports: [FlexmonsterPivot]
},] },
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
export { FlexmonsterPivotModule, FlexmonsterPivot };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZmxleG1vbnN0ZXIuanMubWFwIiwic291cmNlcyI6WyJuZzovL25nLWZsZXhtb25zdGVyL2ZsZXhtb25zdGVyLmNvbXBvbmVudC50cyIsIm5nOi8vbmctZmxleG1vbnN0ZXIvZmxleG1vbnN0ZXIubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgRmxleG1vbnN0ZXIgZnJvbSAnZmxleG1vbnN0ZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmbS1waXZvdCcsXHJcbiAgdGVtcGxhdGU6ICc8ZGl2IHN0eWxlPVwid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtcIj48ZGl2IGNsYXNzPVwiZm0tbmctd3JhcHBlclwiPjwvZGl2PjwvZGl2PidcclxufSlcclxuZXhwb3J0IGNsYXNzIEZsZXhtb25zdGVyUGl2b3QgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIC8vIHBhcmFtc1xyXG4gIEBJbnB1dCgpIHRvb2xiYXI6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbGljZW5zZUtleTogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgQElucHV0KCkgbGljZW5zZUZpbGVQYXRoOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyB8IG51bWJlcjtcclxuICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZyB8IG51bWJlcjtcclxuICBASW5wdXQoKSBjb21wb25lbnRGb2xkZXI6IHN0cmluZztcclxuICBASW5wdXQoKSByZXBvcnQ6IEZsZXhtb25zdGVyLlJlcG9ydCB8IHN0cmluZztcclxuICBASW5wdXQoKSBzaGFyZVJlcG9ydENvbm5lY3Rpb246IEZsZXhtb25zdGVyLkFQSUNsaWVudE9wdGlvbnM7XHJcbiAgQElucHV0KCkgZ2xvYmFsOiBGbGV4bW9uc3Rlci5SZXBvcnQ7XHJcbiAgQElucHV0KCkgYWNjZXNzaWJpbGl0eTogRmxleG1vbnN0ZXIuQWNjZXNzaWJpbGl0eU9wdGlvbnM7XHJcbiAgQElucHV0KCkgY3VzdG9taXplQVBJUmVxdWVzdDogKHJlcXVlc3Q6IE9iamVjdCkgPT4gT2JqZWN0O1xyXG4gIEBJbnB1dCgpIGN1c3RvbWl6ZUNlbGw6IChjZWxsOiBGbGV4bW9uc3Rlci5DZWxsQnVpbGRlciwgZGF0YTogRmxleG1vbnN0ZXIuQ2VsbERhdGEpID0+IHZvaWQ7XHJcbiAgQElucHV0KCkgY3VzdG9taXplQ2hhcnRFbGVtZW50OiAoZWxlbWVudDogRWxlbWVudCwgZGF0YTogRmxleG1vbnN0ZXIuQ2hhcnREYXRhIHwgRmxleG1vbnN0ZXIuQ2hhcnRMZWdlbmRJdGVtRGF0YSkgPT4gdm9pZDtcclxuICBASW5wdXQoKSBjdXN0b21pemVDb250ZXh0TWVudTogKGNlbGw6IEZsZXhtb25zdGVyLkNvbnRleHRNZW51SXRlbVtdLCBkYXRhOiBGbGV4bW9uc3Rlci5DZWxsRGF0YSB8IEZsZXhtb25zdGVyLkNoYXJ0RGF0YSwgdmlld1R5cGU6IHN0cmluZykgPT4gRmxleG1vbnN0ZXIuQ29udGV4dE1lbnVJdGVtW107XHJcbiAgQElucHV0KCkgc29ydEZpZWxkc0xpc3Q6IChmaXJzdDogRmxleG1vbnN0ZXIuRmllbGRzTGlzdFNvcnRpbmdJdGVtLCBzZWNvbmQ6IEZsZXhtb25zdGVyLkZpZWxkc0xpc3RTb3J0aW5nSXRlbSwgZmllbGRzTGlzdFR5cGU6IHN0cmluZykgPT4gbnVtYmVyO1xyXG5cclxuICAvLyBldmVudHNcclxuICBAT3V0cHV0KCkgY2VsbGNsaWNrOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuQ2VsbERhdGE+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjZWxsZG91YmxlY2xpY2s6IEV2ZW50RW1pdHRlcjxGbGV4bW9uc3Rlci5DZWxsRGF0YT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNoYXJ0Y2xpY2s6IEV2ZW50RW1pdHRlcjxGbGV4bW9uc3Rlci5DaGFydERhdGE+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkYXRhZXJyb3I6IEV2ZW50RW1pdHRlcjxGbGV4bW9uc3Rlci5FcnJvckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGF0YWZpbGVjYW5jZWxsZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGF0YWxvYWRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkYXRhY2hhbmdlZDogRXZlbnRFbWl0dGVyPE9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZpZWxkc2xpc3RjbG9zZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWVsZHNsaXN0b3BlbjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJjbG9zZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJvcGVuOiBFdmVudEVtaXR0ZXI8T2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZHJpbGx0aHJvdWdob3BlbjogRXZlbnRFbWl0dGVyPEZsZXhtb25zdGVyLkNlbGxEYXRhIHwgRmxleG1vbnN0ZXIuQ2hhcnREYXRhPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZXhwb3J0Y29tcGxldGU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZXhwb3J0c3RhcnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZHJpbGx0aHJvdWdoY2xvc2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZnVsbHNjcmVlbjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBsb2FkaW5nZGF0YTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBsb2FkaW5nbG9jYWxpemF0aW9uOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGxvYWRpbmdvbGFwc3RydWN0dXJlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGxvYWRpbmdyZXBvcnRmaWxlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGxvY2FsaXphdGlvbmVycm9yOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGxvY2FsaXphdGlvbmxvYWRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbGFwc3RydWN0dXJlZXJyb3I6IEV2ZW50RW1pdHRlcjxGbGV4bW9uc3Rlci5FcnJvckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb2xhcHN0cnVjdHVyZWxvYWRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvcGVuaW5ncmVwb3J0ZmlsZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwcmludGNvbXBsZXRlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHByaW50c3RhcnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcXVlcnljb21wbGV0ZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBxdWVyeWVycm9yOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuRXJyb3JFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlYWR5OiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuUGl2b3Q+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByZXBvcnRjaGFuZ2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmVwb3J0Y29tcGxldGU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmVwb3J0ZmlsZWNhbmNlbGxlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByZXBvcnRmaWxlZXJyb3I6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcnVubmluZ3F1ZXJ5OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHVuYXV0aG9yaXplZGVycm9yOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuVW5hdXRob3JpemVkRXJyb3JIYW5kbGVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdXBkYXRlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGJlZm9yZXRvb2xiYXJjcmVhdGVkOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuVG9vbGJhcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGJlZm9yZWdyaWRkcmF3OiBFdmVudEVtaXR0ZXI8T2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgYWZ0ZXJncmlkZHJhdzogRXZlbnRFbWl0dGVyPE9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFmdGVyY2hhcnRkcmF3OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgLy8gYXBpXHJcbiAgcHVibGljIGZsZXhtb25zdGVyOiBGbGV4bW9uc3Rlci5QaXZvdDtcclxuICAvLyBwcml2YXRlXHJcbiAgcHJpdmF0ZSByb290OiBIVE1MRWxlbWVudDtcclxuXHJcbiAgY29uc3RydWN0b3IoZWw6IEVsZW1lbnRSZWYpIHtcclxuICAgIHRoaXMucm9vdCA9IDxIVE1MRWxlbWVudD5lbC5uYXRpdmVFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmZsZXhtb25zdGVyID0gbmV3IEZsZXhtb25zdGVyKHtcclxuICAgICAgY29udGFpbmVyOiB0aGlzLnJvb3QuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZm0tbmctd3JhcHBlcicpWzBdLFxyXG4gICAgICBjb21wb25lbnRGb2xkZXI6IHRoaXMuY29tcG9uZW50Rm9sZGVyLFxyXG4gICAgICB3aWR0aDogdGhpcy53aWR0aCxcclxuICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCxcclxuICAgICAgdG9vbGJhcjogdGhpcy50b29sYmFyLFxyXG4gICAgICBsaWNlbnNlS2V5OiB0aGlzLmxpY2Vuc2VLZXksXHJcbiAgICAgIGxpY2Vuc2VGaWxlUGF0aDogdGhpcy5saWNlbnNlRmlsZVBhdGgsXHJcbiAgICAgIHJlcG9ydDogdGhpcy5yZXBvcnQsXHJcbiAgICAgIGdsb2JhbDogdGhpcy5nbG9iYWwsXHJcbiAgICAgIGFjY2Vzc2liaWxpdHk6IHRoaXMuYWNjZXNzaWJpbGl0eSxcclxuICAgICAgc2hhcmVSZXBvcnRDb25uZWN0aW9uOiB0aGlzLnNoYXJlUmVwb3J0Q29ubmVjdGlvbixcclxuICAgICAgY3VzdG9taXplQVBJUmVxdWVzdDogdGhpcy5jdXN0b21pemVBUElSZXF1ZXN0LFxyXG4gICAgICBjdXN0b21pemVDZWxsOiB0aGlzLmN1c3RvbWl6ZUNlbGwsXHJcbiAgICAgIGN1c3RvbWl6ZUNoYXJ0RWxlbWVudDogdGhpcy5jdXN0b21pemVDaGFydEVsZW1lbnQsXHJcbiAgICAgIGN1c3RvbWl6ZUNvbnRleHRNZW51OiB0aGlzLmN1c3RvbWl6ZUNvbnRleHRNZW51LFxyXG4gICAgICBzb3J0RmllbGRzTGlzdDogdGhpcy5zb3J0RmllbGRzTGlzdCxcclxuICAgICAgY2VsbGNsaWNrOiAoY2VsbDogRmxleG1vbnN0ZXIuQ2VsbERhdGEpID0+IHRoaXMuY2VsbGNsaWNrLm5leHQoY2VsbCksXHJcbiAgICAgIGNlbGxkb3VibGVjbGljazogKGNlbGw6IEZsZXhtb25zdGVyLkNlbGxEYXRhKSA9PiB0aGlzLmNlbGxkb3VibGVjbGljay5uZXh0KGNlbGwpLFxyXG4gICAgICBjaGFydGNsaWNrOiAoZXZlbnQ6IEZsZXhtb25zdGVyLkNoYXJ0RGF0YSkgPT4gdGhpcy5jaGFydGNsaWNrLm5leHQoZXZlbnQpLFxyXG4gICAgICBkYXRhY2hhbmdlZDogKGV2ZW50OiBPYmplY3QpID0+IHRoaXMuZGF0YWNoYW5nZWQubmV4dChldmVudCksXHJcbiAgICAgIGRhdGFlcnJvcjogKGV2ZW50OiBPYmplY3QpID0+IHRoaXMuZGF0YWVycm9yLm5leHQoZXZlbnQpLFxyXG4gICAgICBkYXRhZmlsZWNhbmNlbGxlZDogKCkgPT4gdGhpcy5kYXRhZmlsZWNhbmNlbGxlZC5uZXh0KCksXHJcbiAgICAgIGRhdGFsb2FkZWQ6ICgpID0+IHRoaXMuZGF0YWxvYWRlZC5uZXh0KCksXHJcbiAgICAgIGZpZWxkc2xpc3RjbG9zZTogKCkgPT4gdGhpcy5maWVsZHNsaXN0Y2xvc2UubmV4dCgpLFxyXG4gICAgICBmaWVsZHNsaXN0b3BlbjogKCkgPT4gdGhpcy5maWVsZHNsaXN0b3Blbi5uZXh0KCksXHJcbiAgICAgIGZpbHRlcmNsb3NlOiAoKSA9PiB0aGlzLmZpbHRlcmNsb3NlLm5leHQoKSxcclxuICAgICAgZmlsdGVyb3BlbjogKGV2ZW50OiBPYmplY3QpID0+IHRoaXMuZmlsdGVyb3Blbi5uZXh0KGV2ZW50KSxcclxuICAgICAgZHJpbGx0aHJvdWdob3BlbjogKGNlbGw6IEZsZXhtb25zdGVyLkNlbGxEYXRhIHwgRmxleG1vbnN0ZXIuQ2hhcnREYXRhKSA9PiB0aGlzLmRyaWxsdGhyb3VnaG9wZW4ubmV4dChjZWxsKSxcclxuICAgICAgZXhwb3J0Y29tcGxldGU6ICgpID0+IHRoaXMuZXhwb3J0Y29tcGxldGUubmV4dCgpLFxyXG4gICAgICBleHBvcnRzdGFydDogKCkgPT4gdGhpcy5leHBvcnRzdGFydC5uZXh0KCksXHJcbiAgICAgIGRyaWxsdGhyb3VnaGNsb3NlOiAoKSA9PiB0aGlzLmRyaWxsdGhyb3VnaGNsb3NlLm5leHQoKSxcclxuICAgICAgbG9hZGluZ2RhdGE6ICgpID0+IHRoaXMubG9hZGluZ2RhdGEubmV4dCgpLFxyXG4gICAgICBsb2FkaW5nbG9jYWxpemF0aW9uOiAoKSA9PiB0aGlzLmxvYWRpbmdsb2NhbGl6YXRpb24ubmV4dCgpLFxyXG4gICAgICBsb2FkaW5nb2xhcHN0cnVjdHVyZTogKCkgPT4gdGhpcy5sb2FkaW5nb2xhcHN0cnVjdHVyZS5uZXh0KCksXHJcbiAgICAgIGxvYWRpbmdyZXBvcnRmaWxlOiAoKSA9PiB0aGlzLmxvYWRpbmdyZXBvcnRmaWxlLm5leHQoKSxcclxuICAgICAgbG9jYWxpemF0aW9uZXJyb3I6ICgpID0+IHRoaXMubG9jYWxpemF0aW9uZXJyb3IubmV4dCgpLFxyXG4gICAgICBsb2NhbGl6YXRpb25sb2FkZWQ6ICgpID0+IHRoaXMubG9jYWxpemF0aW9ubG9hZGVkLm5leHQoKSxcclxuICAgICAgb2xhcHN0cnVjdHVyZWVycm9yOiAoZXZlbnQ6IEZsZXhtb25zdGVyLkVycm9yRXZlbnQpID0+IHRoaXMub2xhcHN0cnVjdHVyZWVycm9yLm5leHQoZXZlbnQpLFxyXG4gICAgICBvbGFwc3RydWN0dXJlbG9hZGVkOiAoKSA9PiB0aGlzLm9sYXBzdHJ1Y3R1cmVsb2FkZWQubmV4dCgpLFxyXG4gICAgICBvcGVuaW5ncmVwb3J0ZmlsZTogKCkgPT4gdGhpcy5vcGVuaW5ncmVwb3J0ZmlsZS5uZXh0KCksXHJcbiAgICAgIHByaW50Y29tcGxldGU6ICgpID0+IHRoaXMucHJpbnRjb21wbGV0ZS5uZXh0KCksXHJcbiAgICAgIHByaW50c3RhcnQ6ICgpID0+IHRoaXMucHJpbnRzdGFydC5uZXh0KCksXHJcbiAgICAgIHF1ZXJ5Y29tcGxldGU6ICgpID0+IHRoaXMucXVlcnljb21wbGV0ZS5uZXh0KCksXHJcbiAgICAgIHF1ZXJ5ZXJyb3I6IChldmVudDogRmxleG1vbnN0ZXIuRXJyb3JFdmVudCkgPT4gdGhpcy5xdWVyeWVycm9yLm5leHQoZXZlbnQpLFxyXG4gICAgICByZWFkeTogKCkgPT4gdGhpcy5yZWFkeS5uZXh0KHRoaXMuZmxleG1vbnN0ZXIpLFxyXG4gICAgICByZXBvcnRjaGFuZ2U6ICgpID0+IHRoaXMucmVwb3J0Y2hhbmdlLm5leHQoKSxcclxuICAgICAgcmVwb3J0Y29tcGxldGU6ICgpID0+IHRoaXMucmVwb3J0Y29tcGxldGUubmV4dCgpLFxyXG4gICAgICByZXBvcnRmaWxlY2FuY2VsbGVkOiAoKSA9PiB0aGlzLnJlcG9ydGZpbGVjYW5jZWxsZWQubmV4dCgpLFxyXG4gICAgICByZXBvcnRmaWxlZXJyb3I6ICgpID0+IHRoaXMucmVwb3J0ZmlsZWVycm9yLm5leHQoKSxcclxuICAgICAgcnVubmluZ3F1ZXJ5OiAoKSA9PiB0aGlzLnJ1bm5pbmdxdWVyeS5uZXh0KCksXHJcbiAgICAgIHVuYXV0aG9yaXplZGVycm9yOiAoZG9uZTogRmxleG1vbnN0ZXIuVW5hdXRob3JpemVkRXJyb3JIYW5kbGVyKSA9PiB0aGlzLnVuYXV0aG9yaXplZGVycm9yLm5leHQoZG9uZSksXHJcbiAgICAgIHVwZGF0ZTogKCkgPT4gdGhpcy51cGRhdGUubmV4dCgpLFxyXG4gICAgICBiZWZvcmV0b29sYmFyY3JlYXRlZDogKHRvb2xiYXI6IEZsZXhtb25zdGVyLlRvb2xiYXIpID0+IHRoaXMuYmVmb3JldG9vbGJhcmNyZWF0ZWQubmV4dCh0b29sYmFyKSxcclxuICAgICAgYmVmb3JlZ3JpZGRyYXc6IChldmVudDogT2JqZWN0KSA9PiB0aGlzLmJlZm9yZWdyaWRkcmF3Lm5leHQoZXZlbnQpLFxyXG4gICAgICBhZnRlcmdyaWRkcmF3OiAoZXZlbnQ6IE9iamVjdCkgPT4gdGhpcy5hZnRlcmdyaWRkcmF3Lm5leHQoZXZlbnQpLFxyXG4gICAgICBhZnRlcmNoYXJ0ZHJhdzogKCkgPT4gdGhpcy5hZnRlcmNoYXJ0ZHJhdy5uZXh0KClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgIGlmICh0aGlzLmZsZXhtb25zdGVyKSB7XHJcbiAgICAgICAgICB0aGlzLmZsZXhtb25zdGVyLmRpc3Bvc2UoKTtcclxuICAgICAgICAgIHRoaXMuZmxleG1vbnN0ZXIgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZsZXhtb25zdGVyUGl2b3QgfSBmcm9tICcuL2ZsZXhtb25zdGVyLmNvbXBvbmVudCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZVxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbRmxleG1vbnN0ZXJQaXZvdF0sXHJcbiAgZXhwb3J0czogW0ZsZXhtb25zdGVyUGl2b3RdXHJcbn0pXHJc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