@wavemaker/app-ng-runtime 11.14.1-rc.233 → 11.14.1-rc.238

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/components/base/bundles/index.umd.js +8 -8
  2. package/components/base/esm2022/pipes/custom-pipes.mjs +10 -10
  3. package/components/base/fesm2022/index.mjs +8 -8
  4. package/components/base/fesm2022/index.mjs.map +1 -1
  5. package/components/base/pipes/custom-pipes.d.ts +5 -5
  6. package/components/basic/search/bundles/index.umd.js +4 -4
  7. package/components/basic/search/esm2022/scrollable.directive.mjs +3 -3
  8. package/components/basic/search/esm2022/search.component.mjs +3 -3
  9. package/components/basic/search/fesm2022/index.mjs +4 -4
  10. package/components/basic/search/fesm2022/index.mjs.map +1 -1
  11. package/components/basic/search/scrollable.directive.d.ts +1 -1
  12. package/components/data/list/bundles/index.umd.js +33 -2
  13. package/components/data/list/esm2022/list.component.mjs +34 -3
  14. package/components/data/list/fesm2022/index.mjs +33 -2
  15. package/components/data/list/fesm2022/index.mjs.map +1 -1
  16. package/components/data/list/list.component.d.ts +4 -0
  17. package/components/data/table/bundles/index.umd.js +34 -3
  18. package/components/data/table/esm2022/table.component.mjs +35 -4
  19. package/components/data/table/fesm2022/index.mjs +34 -3
  20. package/components/data/table/fesm2022/index.mjs.map +1 -1
  21. package/components/data/table/table.component.d.ts +4 -0
  22. package/components/page/default/bundles/index.umd.js +6 -4
  23. package/components/page/default/esm2022/router-outlet.directive.mjs +9 -6
  24. package/components/page/default/fesm2022/index.mjs +6 -4
  25. package/components/page/default/fesm2022/index.mjs.map +1 -1
  26. package/components/page/default/router-outlet.directive.d.ts +5 -2
  27. package/npm-shrinkwrap.json +2 -2
  28. package/package-lock.json +2 -2
  29. package/package.json +1 -1
  30. package/runtime/base/bundles/index.umd.js +3 -2
  31. package/runtime/base/esm2022/services/app.manager.service.mjs +4 -3
  32. package/runtime/base/fesm2022/index.mjs +3 -2
  33. package/runtime/base/fesm2022/index.mjs.map +1 -1
  34. package/runtime/base/runtime-base.module.d.ts +2 -2
  35. package/scripts/@wavemaker/nvd3/build/nv.d3.min.js +1 -1
@@ -132,6 +132,7 @@ export declare class TableComponent extends StylableComponent implements AfterCo
132
132
  rowDef: any;
133
133
  rowInstance: any;
134
134
  pagesizeoptions: any;
135
+ prevPagesizeoptions: any;
135
136
  multiselecttitle: any;
136
137
  multiselectarialabel: any;
137
138
  radioselecttitle: any;
@@ -378,6 +379,9 @@ export declare class TableComponent extends StylableComponent implements AfterCo
378
379
  getSortExpr(): any;
379
380
  onPropertyChange(key: string, nv: any, ov?: any): void;
380
381
  setDefaultPageSize(nv: any): void;
382
+ isPageSizeOptionsChanged(): boolean;
383
+ selectPageSize(pagesize: number): void;
384
+ sanitizeCommaSeparatedIntegers(input: string): string;
381
385
  onDataSourceChange(): void;
382
386
  private clearActionRowVars;
383
387
  onStyleChange(key: any, nv: any, ov: any): void;
@@ -390,18 +390,20 @@
390
390
  };
391
391
  class RouterOutletDirective extends base.StylableComponent {
392
392
  static { this.initializeProps = registerProps(); }
393
- constructor(inj, explicitContext) {
393
+ constructor(inj, explicitContext, app) {
394
394
  super(inj, WIDGET_CONFIG, explicitContext);
395
+ this.app = app;
396
+ this.isPrism = this.app.isPrism;
395
397
  }
396
398
  onPropertyChange(key, nv, ov) {
397
- if (key === 'columnwidth') {
399
+ if (key === 'columnwidth' && !this.isPrism) {
398
400
  i2.switchClass(this.nativeElement, `col-md-${nv} col-sm-${nv}`, `col-md-${ov} col-sm-${ov}`);
399
401
  }
400
402
  else {
401
403
  super.onPropertyChange(key, nv, ov);
402
404
  }
403
405
  }
404
- static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: RouterOutletDirective, deps: [{ token: i0__namespace.Injector }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0__namespace.ɵɵFactoryTarget.Directive }); }
406
+ static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: RouterOutletDirective, deps: [{ token: i0__namespace.Injector }, { token: 'EXPLICIT_CONTEXT', optional: true }, { token: i2__namespace.App }], target: i0__namespace.ɵɵFactoryTarget.Directive }); }
405
407
  static { this.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: RouterOutletDirective, isStandalone: true, selector: "[wmRouterOutlet]", providers: [
406
408
  base.provideAsWidgetRef(RouterOutletDirective)
407
409
  ], usesInheritance: true, ngImport: i0__namespace }); }
@@ -420,7 +422,7 @@
420
422
  args: ['EXPLICIT_CONTEXT']
421
423
  }, {
422
424
  type: i0.Optional
423
- }] }] });
425
+ }] }, { type: i2__namespace.App }] });
424
426
 
425
427
  exports.ContentComponent = ContentComponent;
426
428
  exports.LayoutDirective = LayoutDirective;
@@ -1,8 +1,9 @@
1
1
  import { Directive, Inject, Injector, Optional } from '@angular/core';
2
- import { switchClass } from '@wm/core';
2
+ import { App, switchClass } from '@wm/core';
3
3
  import { provideAsWidgetRef, StylableComponent } from '@wm/components/base';
4
4
  import { registerProps } from './router-outlet.props';
5
5
  import * as i0 from "@angular/core";
6
+ import * as i1 from "@wm/core";
6
7
  const DEFAULT_CLS = 'app-content-column-wrapper';
7
8
  const WIDGET_CONFIG = {
8
9
  widgetType: 'wm-router-outlet',
@@ -10,18 +11,20 @@ const WIDGET_CONFIG = {
10
11
  };
11
12
  export class RouterOutletDirective extends StylableComponent {
12
13
  static { this.initializeProps = registerProps(); }
13
- constructor(inj, explicitContext) {
14
+ constructor(inj, explicitContext, app) {
14
15
  super(inj, WIDGET_CONFIG, explicitContext);
16
+ this.app = app;
17
+ this.isPrism = this.app.isPrism;
15
18
  }
16
19
  onPropertyChange(key, nv, ov) {
17
- if (key === 'columnwidth') {
20
+ if (key === 'columnwidth' && !this.isPrism) {
18
21
  switchClass(this.nativeElement, `col-md-${nv} col-sm-${nv}`, `col-md-${ov} col-sm-${ov}`);
19
22
  }
20
23
  else {
21
24
  super.onPropertyChange(key, nv, ov);
22
25
  }
23
26
  }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterOutletDirective, deps: [{ token: i0.Injector }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterOutletDirective, deps: [{ token: i0.Injector }, { token: 'EXPLICIT_CONTEXT', optional: true }, { token: i1.App }], target: i0.ɵɵFactoryTarget.Directive }); }
25
28
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: RouterOutletDirective, isStandalone: true, selector: "[wmRouterOutlet]", providers: [
26
29
  provideAsWidgetRef(RouterOutletDirective)
27
30
  ], usesInheritance: true, ngImport: i0 }); }
@@ -40,5 +43,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
40
43
  args: ['EXPLICIT_CONTEXT']
41
44
  }, {
42
45
  type: Optional
43
- }] }] });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLW91dGxldC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvcGFnZS9kZWZhdWx0L3NyYy9yb3V0ZXItb3V0bGV0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFckMsT0FBTyxFQUFpQixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFdEQsTUFBTSxXQUFXLEdBQUcsNEJBQTRCLENBQUM7QUFDakQsTUFBTSxhQUFhLEdBQWtCO0lBQ2pDLFVBQVUsRUFBRSxrQkFBa0I7SUFDOUIsU0FBUyxFQUFFLFdBQVc7Q0FDekIsQ0FBQztBQVNGLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxpQkFBaUI7YUFDakQsb0JBQWUsR0FBRyxhQUFhLEVBQUUsQUFBbEIsQ0FBbUI7SUFDekMsWUFBWSxHQUFhLEVBQTBDLGVBQW9CO1FBQ25GLEtBQUssQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFXLEVBQUUsRUFBTyxFQUFFLEVBQVE7UUFDM0MsSUFBSSxHQUFHLEtBQUssYUFBYSxFQUFFLENBQUM7WUFDeEIsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5RixDQUFDO2FBQU0sQ0FBQztZQUNKLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDTCxDQUFDOytHQVpRLHFCQUFxQiwwQ0FFSyxrQkFBa0I7bUdBRjVDLHFCQUFxQiwrREFKbkI7WUFDUCxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQztTQUM1Qzs7NEZBRVEscUJBQXFCO2tCQVBqQyxTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNkLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFNBQVMsRUFBRTt3QkFDUCxrQkFBa0IsdUJBQXVCO3FCQUM1QztpQkFDSjs7MEJBRytCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFBRyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEluamVjdCwgSW5qZWN0b3IsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtzd2l0Y2hDbGFzc30gZnJvbSAnQHdtL2NvcmUnO1xuXG5pbXBvcnQgeyBJV2lkZ2V0Q29uZmlnLCBwcm92aWRlQXNXaWRnZXRSZWYsIFN0eWxhYmxlQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyByZWdpc3RlclByb3BzIH0gZnJvbSAnLi9yb3V0ZXItb3V0bGV0LnByb3BzJztcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnYXBwLWNvbnRlbnQtY29sdW1uLXdyYXBwZXInO1xuY29uc3QgV0lER0VUX0NPTkZJRzogSVdpZGdldENvbmZpZyA9IHtcbiAgICB3aWRnZXRUeXBlOiAnd20tcm91dGVyLW91dGxldCcsXG4gICAgaG9zdENsYXNzOiBERUZBVUxUX0NMU1xufTtcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdbd21Sb3V0ZXJPdXRsZXRdJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKFJvdXRlck91dGxldERpcmVjdGl2ZSlcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFJvdXRlck91dGxldERpcmVjdGl2ZSBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuICAgIGNvbnN0cnVjdG9yKGluajogSW5qZWN0b3IsIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueSkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnY6IGFueSwgb3Y/OiBhbnkpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ2NvbHVtbndpZHRoJykge1xuICAgICAgICAgICAgc3dpdGNoQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBgY29sLW1kLSR7bnZ9IGNvbC1zbS0ke252fWAsIGBjb2wtbWQtJHtvdn0gY29sLXNtLSR7b3Z9YCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
46
+ }] }, { type: i1.App }] });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLW91dGxldC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvcGFnZS9kZWZhdWx0L3NyYy9yb3V0ZXItb3V0bGV0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBQyxHQUFHLEVBQUUsV0FBVyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRTFDLE9BQU8sRUFBaUIsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQUV0RCxNQUFNLFdBQVcsR0FBRyw0QkFBNEIsQ0FBQztBQUNqRCxNQUFNLGFBQWEsR0FBa0I7SUFDakMsVUFBVSxFQUFFLGtCQUFrQjtJQUM5QixTQUFTLEVBQUUsV0FBVztDQUN6QixDQUFDO0FBU0YsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGlCQUFpQjthQUNqRCxvQkFBZSxHQUFHLGFBQWEsRUFBRSxBQUFsQixDQUFtQjtJQUV6QyxZQUFZLEdBQWEsRUFBMEMsZUFBb0IsRUFBUyxHQUFRO1FBQ3BHLEtBQUssQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBRGlELFFBQUcsR0FBSCxHQUFHLENBQUs7UUFFcEcsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUNwQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBVyxFQUFFLEVBQU8sRUFBRSxFQUFRO1FBQzNDLElBQUksR0FBRyxLQUFLLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN6QyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlGLENBQUM7YUFBTSxDQUFDO1lBQ0osS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNMLENBQUM7K0dBZFEscUJBQXFCLDBDQUdLLGtCQUFrQjttR0FINUMscUJBQXFCLCtEQUpuQjtZQUNQLGtCQUFrQixDQUFDLHFCQUFxQixDQUFDO1NBQzVDOzs0RkFFUSxxQkFBcUI7a0JBUGpDLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsU0FBUyxFQUFFO3dCQUNQLGtCQUFrQix1QkFBdUI7cUJBQzVDO2lCQUNKOzswQkFJK0IsTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUFHLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgSW5qZWN0LCBJbmplY3RvciwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0FwcCwgc3dpdGNoQ2xhc3N9IGZyb20gJ0B3bS9jb3JlJztcblxuaW1wb3J0IHsgSVdpZGdldENvbmZpZywgcHJvdmlkZUFzV2lkZ2V0UmVmLCBTdHlsYWJsZUNvbXBvbmVudCB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgcmVnaXN0ZXJQcm9wcyB9IGZyb20gJy4vcm91dGVyLW91dGxldC5wcm9wcyc7XG5cbmNvbnN0IERFRkFVTFRfQ0xTID0gJ2FwcC1jb250ZW50LWNvbHVtbi13cmFwcGVyJztcbmNvbnN0IFdJREdFVF9DT05GSUc6IElXaWRnZXRDb25maWcgPSB7XG4gICAgd2lkZ2V0VHlwZTogJ3dtLXJvdXRlci1vdXRsZXQnLFxuICAgIGhvc3RDbGFzczogREVGQVVMVF9DTFNcbn07XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3dtUm91dGVyT3V0bGV0XScsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihSb3V0ZXJPdXRsZXREaXJlY3RpdmUpXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBSb3V0ZXJPdXRsZXREaXJlY3RpdmUgZXh0ZW5kcyBTdHlsYWJsZUNvbXBvbmVudCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcbiAgICBpc1ByaXNtOiBib29sZWFuO1xuICAgIGNvbnN0cnVjdG9yKGluajogSW5qZWN0b3IsIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueSwgcHVibGljIGFwcDogQXBwKSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRywgZXhwbGljaXRDb250ZXh0KTtcbiAgICAgICAgdGhpcy5pc1ByaXNtID0gdGhpcy5hcHAuaXNQcmlzbTtcbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBpZiAoa2V5ID09PSAnY29sdW1ud2lkdGgnICYmICF0aGlzLmlzUHJpc20pIHtcbiAgICAgICAgICAgIHN3aXRjaENsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgYGNvbC1tZC0ke252fSBjb2wtc20tJHtudn1gLCBgY29sLW1kLSR7b3Z9IGNvbC1zbS0ke292fWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -370,18 +370,20 @@ const WIDGET_CONFIG = {
370
370
  };
371
371
  class RouterOutletDirective extends StylableComponent {
372
372
  static { this.initializeProps = registerProps(); }
373
- constructor(inj, explicitContext) {
373
+ constructor(inj, explicitContext, app) {
374
374
  super(inj, WIDGET_CONFIG, explicitContext);
375
+ this.app = app;
376
+ this.isPrism = this.app.isPrism;
375
377
  }
376
378
  onPropertyChange(key, nv, ov) {
377
- if (key === 'columnwidth') {
379
+ if (key === 'columnwidth' && !this.isPrism) {
378
380
  switchClass(this.nativeElement, `col-md-${nv} col-sm-${nv}`, `col-md-${ov} col-sm-${ov}`);
379
381
  }
380
382
  else {
381
383
  super.onPropertyChange(key, nv, ov);
382
384
  }
383
385
  }
384
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterOutletDirective, deps: [{ token: i0.Injector }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
386
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterOutletDirective, deps: [{ token: i0.Injector }, { token: 'EXPLICIT_CONTEXT', optional: true }, { token: i2.App }], target: i0.ɵɵFactoryTarget.Directive }); }
385
387
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: RouterOutletDirective, isStandalone: true, selector: "[wmRouterOutlet]", providers: [
386
388
  provideAsWidgetRef(RouterOutletDirective)
387
389
  ], usesInheritance: true, ngImport: i0 }); }
@@ -400,7 +402,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
400
402
  args: ['EXPLICIT_CONTEXT']
401
403
  }, {
402
404
  type: Optional
403
- }] }] });
405
+ }] }, { type: i2.App }] });
404
406
 
405
407
  /**
406
408
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/page/default/src/page.props.ts","../../../../../projects/components/widgets/page/default/src/page.directive.ts","../../../../../projects/components/widgets/page/default/src/layout.props.ts","../../../../../projects/components/widgets/page/default/src/layout.directive.ts","../../../../../projects/components/widgets/page/default/src/page-content/page-content.props.ts","../../../../../projects/components/widgets/page/default/src/page-content/page-content.component.ts","../../../../../projects/components/widgets/page/default/src/page-content/page-content.component.html","../../../../../projects/components/widgets/page/default/src/content/content.props.ts","../../../../../projects/components/widgets/page/default/src/content/content.component.ts","../../../../../projects/components/widgets/page/default/src/content/content.component.html","../../../../../projects/components/widgets/page/default/src/spa-page.props.ts","../../../../../projects/components/widgets/page/default/src/spa-page.directive.ts","../../../../../projects/components/widgets/page/default/src/router-outlet.props.ts","../../../../../projects/components/widgets/page/default/src/router-outlet.directive.ts","../../../../../projects/components/widgets/page/default/src/index.ts"],"sourcesContent":["import {PROP_BOOLEAN, PROP_STRING, register} from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-page',\n new Map(\n [\n ['cache', {value: false, ...PROP_BOOLEAN}],\n ['refreshdataonattach', {value: true, ...PROP_BOOLEAN}],\n ['pagetitle', PROP_STRING],\n ['hint', PROP_STRING],\n ['arialabel', PROP_STRING]\n ]\n )\n );\n};\n","import { AfterViewInit, Directive, Inject, Injector, OnDestroy, Optional, SkipSelf } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\n\nimport { EventNotifier, Viewport, ViewportEvent } from '@wm/core';\nimport { updateDeviceView, provideAsWidgetRef, StylableComponent } from '@wm/components/base';\n\nimport { registerProps } from './page.props';\n\nconst DEFAULT_CLS = 'app-page container';\nconst WIDGET_CONFIG = { widgetType: 'wm-page', hostClass: DEFAULT_CLS };\n\n@Directive({\n standalone: true,\n selector: '[wmPage]',\n providers: [\n provideAsWidgetRef(PageDirective)\n ],\n exportAs: 'wmPage'\n})\nexport class PageDirective extends StylableComponent implements AfterViewInit, OnDestroy {\n static initializeProps = registerProps();\n\n private _eventNotifier = new EventNotifier(false);\n public refreshdataonattach = true;\n public pagetitle: string;\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'pagetitle') {\n this.titleService.setTitle(nv);\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n constructor(inj: Injector, private titleService: Title, private viewport: Viewport, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n }\n\n /**\n * A child component can notify page using this method. Notified event will be passed to\n * subscribed children only after page initialization.\n *\n * @param {string} eventName\n * @param data\n */\n public notify(eventName: string, ...data: Array<any>) {\n this._eventNotifier.notify.apply(this._eventNotifier, arguments);\n }\n\n /**\n * The main purpose of this function is to provide communication between page children objects.\n * Child component can subscribe for an event that will be emitted by another child component.\n *\n * @param eventName\n * @param {(data: any) => void} callback\n * @returns {any}\n */\n public subscribe(eventName, callback: (data: any) => void): () => void {\n return this._eventNotifier.subscribe(eventName, callback);\n }\n\n public ngAfterViewInit() {\n setTimeout(() => {\n this._eventNotifier.start();\n updateDeviceView(this.nativeElement, this.getAppInstance().isTabletApplicationType);\n }, 1);\n this.registerDestroyListener(this.viewport.subscribe(ViewportEvent.RESIZE, args => {\n this.invokeEventCallback('resize', { $event: args.$event, widget: this, data: args.data });\n }));\n this.registerDestroyListener(this.viewport.subscribe(ViewportEvent.ORIENTATION_CHANGE, args => {\n this.invokeEventCallback('orientationchange', { $event: args.$event, widget: this, data: args.data });\n }));\n }\n\n public ngOnAttach() {\n this.titleService.setTitle(this.pagetitle);\n this.invokeEventCallback('attach', { widget: this });\n this.notify('attach', {\n refreshData: this.refreshdataonattach\n });\n }\n\n public ngOnDetach() {\n this.invokeEventCallback('detach', { widget: this });\n this.notify('detach');\n }\n\n public ngOnDestroy() {\n this.invokeEventCallback('destroy', { widget: this });\n this._eventNotifier.destroy();\n }\n}\n","import { register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-layout',\n new Map(\n []\n )\n );\n};\n","import {AfterViewInit, Directive, Inject, Injector, Optional} from '@angular/core';\n\nimport {EventNotifier} from '@wm/core';\nimport { updateDeviceView, provideAsWidgetRef, StylableComponent } from '@wm/components/base';\n\nimport { registerProps } from './layout.props';\n\nconst DEFAULT_CLS = 'app-page container';\nconst WIDGET_CONFIG = {widgetType: 'wm-layout', hostClass: DEFAULT_CLS};\n\n@Directive({\n standalone: true,\n selector: '[wmLayout]',\n providers: [\n provideAsWidgetRef(LayoutDirective)\n ],\n exportAs: 'wmLayout'\n})\nexport class LayoutDirective extends StylableComponent implements AfterViewInit {\n static initializeProps = registerProps();\n\n private _eventNotifier = new EventNotifier(false);\n\n constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n }\n\n /**\n * A child component can notify page using this method. Notified event will be passed to\n * subscribed children only after page initialization.\n *\n * @param {string} eventName\n * @param data\n */\n public notify(eventName: string, ...data: Array<any>) {\n this._eventNotifier.notify.apply(this._eventNotifier, arguments);\n }\n\n public ngAfterViewInit() {\n setTimeout(() => {\n updateDeviceView(this.nativeElement, this.getAppInstance().isTabletApplicationType);\n }, 1);\n }\n}\n","import { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-page-content',\n new Map(\n [\n ['class', PROP_STRING],\n ['columnwidth', PROP_NUMBER],\n ['content', PROP_STRING],\n ['name', PROP_STRING],\n ['pulltorefresh', {value: false, ...PROP_BOOLEAN}]\n ]\n )\n );\n};\n","import {Component, Inject, Injector, Optional} from '@angular/core';\n\nimport {App, switchClass} from '@wm/core';\nimport { APPLY_STYLES_TYPE, PullToRefresh, provideAsWidgetRef, StylableComponent, styler } from '@wm/components/base';\n\nimport { registerProps } from './page-content.props';\n\nconst DEFAULT_CLS = 'app-page-content app-content-column';\nconst WIDGET_CONFIG = {widgetType: 'wm-page-content', hostClass: DEFAULT_CLS};\n\n@Component({\n standalone: true,\n selector: '[wmPageContent]',\n templateUrl: './page-content.component.html',\n providers: [\n provideAsWidgetRef(PageContentComponent)\n ]\n})\nexport class PageContentComponent extends StylableComponent {\n static initializeProps = registerProps();\n\n public pullToRefreshIns: PullToRefresh;\n private pulltorefresh: boolean;\n private childPullToRefresh: boolean;\n\n constructor(inj: Injector, private app: App, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER);\n\n this.registerDestroyListener(this.app.subscribe('pullToRefresh:enable', () => {\n this.childPullToRefresh = true;\n this.initPullToRefresh();\n }));\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'columnwidth') {\n switchClass(this.nativeElement, `col-md-${nv} col-sm-${nv}`, `col-md-${ov} col-sm-${ov}`);\n } else if (key === 'pulltorefresh' && nv) {\n // creating instance after timeout as the smoothscroll styles where getting added on pull refresh-container\n setTimeout(() => {\n this.initPullToRefresh();\n });\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n // when list component is ready, pulltorefresh instance is created and this appends pullToRefresh element on the page content.\n private initPullToRefresh() {\n const hasPullToRefreshEvent = this.hasEventCallback('pulltorefresh');\n if (!this.pullToRefreshIns && (this.childPullToRefresh || hasPullToRefreshEvent) && this.pulltorefresh) {\n this.pullToRefreshIns = new PullToRefresh($(this.nativeElement), this.app, () => {\n if (hasPullToRefreshEvent) {\n this.invokeEventCallback('pulltorefresh');\n } else {\n this.app.notify('pulltorefresh');\n }\n });\n this.registerDestroyListener(() => {\n if (this.pullToRefreshIns.cancelSubscription) {\n this.pullToRefreshIns.cancelSubscription();\n }\n });\n }\n }\n}\n","<ng-content></ng-content>","import { PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-content',\n new Map(\n [\n ['name', PROP_STRING],\n ['class', PROP_STRING]\n ]\n )\n );\n};\n","import {Component, Inject, Injector, Optional} from '@angular/core';\n\nimport { IWidgetConfig, provideAsWidgetRef, StylableComponent, styler } from '@wm/components/base';\n\nimport { registerProps } from './content.props';\n\nconst DEFAULT_CLS = 'app-content clearfix';\nconst WIDGET_CONFIG: IWidgetConfig = {widgetType: 'wm-content', hostClass: DEFAULT_CLS};\n\n@Component({\n standalone: true,\n selector: '[wmContent]',\n templateUrl: './content.component.html',\n providers: [\n provideAsWidgetRef(ContentComponent)\n ]\n})\nexport class ContentComponent extends StylableComponent {\n static initializeProps = registerProps();\n\n constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n\n styler(this.nativeElement, this);\n }\n}\n","<div class=\"row app-content-row clearfix\">\n <ng-content></ng-content>\n</div>","import { PROP_STRING, PROP_BOOLEAN, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-spa-page',\n new Map(\n [\n ['cache', {value: false, ...PROP_BOOLEAN}],\n ['refreshdataonattach', {value: true, ...PROP_BOOLEAN}],\n ['pagetitle', PROP_STRING],\n ['hint', PROP_STRING]\n ]\n )\n );\n};\n","import {AfterViewInit, Directive, Inject, Injector, OnDestroy, Optional, SkipSelf} from '@angular/core';\nimport { Title } from '@angular/platform-browser';\n\nimport {EventNotifier, Viewport, ViewportEvent} from '@wm/core';\nimport { updateDeviceView, provideAsWidgetRef, StylableComponent } from '@wm/components/base';\n\nimport { registerProps } from './spa-page.props';\n\nconst DEFAULT_CLS = 'app-spa-page';\nconst WIDGET_CONFIG = {widgetType: 'wm-spa-page', hostClass: DEFAULT_CLS};\n\n@Directive({\n standalone: true,\n selector: '[wmSpaPage]',\n providers: [\n provideAsWidgetRef(SpaPageDirective)\n ],\n exportAs: 'wmSpaPage'\n})\nexport class SpaPageDirective extends StylableComponent implements AfterViewInit, OnDestroy {\n static initializeProps = registerProps();\n\n private _eventNotifier = new EventNotifier(false);\n public refreshdataonattach = true;\n public pagetitle: string;\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'pagetitle') {\n this.titleService.setTitle(nv);\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n constructor(inj: Injector, private titleService: Title, private viewport: Viewport, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n }\n\n /**\n * A child component can notify page using this method. Notified event will be passed to\n * subscribed children only after page initialization.\n *\n * @param {string} eventName\n * @param data\n */\n public notify(eventName: string, ...data: Array<any>) {\n this._eventNotifier.notify.apply(this._eventNotifier, arguments);\n }\n\n /**\n * The main purpose of this function is to provide communication between page children objects.\n * Child component can subscribe for an event that will be emitted by another child component.\n *\n * @param eventName\n * @param {(data: any) => void} callback\n * @returns {any}\n */\n public subscribe(eventName, callback: (data: any) => void): () => void {\n return this._eventNotifier.subscribe(eventName, callback);\n }\n\n public ngAfterViewInit() {\n setTimeout(() => {\n this._eventNotifier.start();\n updateDeviceView(this.nativeElement, this.getAppInstance().isTabletApplicationType);\n }, 1);\n this.registerDestroyListener(this.viewport.subscribe(ViewportEvent.RESIZE, args => {\n this.invokeEventCallback('resize', { $event: args.$event, widget: this, data: args.data });\n }));\n this.registerDestroyListener(this.viewport.subscribe(ViewportEvent.ORIENTATION_CHANGE, args => {\n this.invokeEventCallback('orientationchange', { $event: args.$event, widget: this, data: args.data });\n }));\n }\n\n public ngOnAttach() {\n this.titleService.setTitle(this.pagetitle);\n this.invokeEventCallback('attach', { widget: this });\n this.notify('attach', {\n refreshData : this.refreshdataonattach\n });\n }\n\n public ngOnDetach() {\n this.invokeEventCallback('detach', { widget: this });\n this.notify('detach');\n }\n\n public ngOnDestroy() {\n this.invokeEventCallback('destroy', { widget: this });\n this._eventNotifier.destroy();\n }\n}\n","import { PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-router-outlet',\n new Map(\n [\n ['columnwidth', PROP_NUMBER],\n ['name', PROP_STRING]\n ]\n )\n );\n};\n","import {Directive, Inject, Injector, Optional} from '@angular/core';\n\nimport {switchClass} from '@wm/core';\n\nimport { IWidgetConfig, provideAsWidgetRef, StylableComponent } from '@wm/components/base';\nimport { registerProps } from './router-outlet.props';\n\nconst DEFAULT_CLS = 'app-content-column-wrapper';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-router-outlet',\n hostClass: DEFAULT_CLS\n};\n\n@Directive({\n standalone: true,\n selector: '[wmRouterOutlet]',\n providers: [\n provideAsWidgetRef(RouterOutletDirective)\n ]\n})\nexport class RouterOutletDirective extends StylableComponent {\n static initializeProps = registerProps();\n constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'columnwidth') {\n switchClass(this.nativeElement, `col-md-${nv} col-sm-${nv}`, `col-md-${ov} col-sm-${ov}`);\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["registerProps","DEFAULT_CLS","WIDGET_CONFIG"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/page/default/src/page.props.ts","../../../../../projects/components/widgets/page/default/src/page.directive.ts","../../../../../projects/components/widgets/page/default/src/layout.props.ts","../../../../../projects/components/widgets/page/default/src/layout.directive.ts","../../../../../projects/components/widgets/page/default/src/page-content/page-content.props.ts","../../../../../projects/components/widgets/page/default/src/page-content/page-content.component.ts","../../../../../projects/components/widgets/page/default/src/page-content/page-content.component.html","../../../../../projects/components/widgets/page/default/src/content/content.props.ts","../../../../../projects/components/widgets/page/default/src/content/content.component.ts","../../../../../projects/components/widgets/page/default/src/content/content.component.html","../../../../../projects/components/widgets/page/default/src/spa-page.props.ts","../../../../../projects/components/widgets/page/default/src/spa-page.directive.ts","../../../../../projects/components/widgets/page/default/src/router-outlet.props.ts","../../../../../projects/components/widgets/page/default/src/router-outlet.directive.ts","../../../../../projects/components/widgets/page/default/src/index.ts"],"sourcesContent":["import {PROP_BOOLEAN, PROP_STRING, register} from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-page',\n new Map(\n [\n ['cache', {value: false, ...PROP_BOOLEAN}],\n ['refreshdataonattach', {value: true, ...PROP_BOOLEAN}],\n ['pagetitle', PROP_STRING],\n ['hint', PROP_STRING],\n ['arialabel', PROP_STRING]\n ]\n )\n );\n};\n","import { AfterViewInit, Directive, Inject, Injector, OnDestroy, Optional, SkipSelf } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\n\nimport { EventNotifier, Viewport, ViewportEvent } from '@wm/core';\nimport { updateDeviceView, provideAsWidgetRef, StylableComponent } from '@wm/components/base';\n\nimport { registerProps } from './page.props';\n\nconst DEFAULT_CLS = 'app-page container';\nconst WIDGET_CONFIG = { widgetType: 'wm-page', hostClass: DEFAULT_CLS };\n\n@Directive({\n standalone: true,\n selector: '[wmPage]',\n providers: [\n provideAsWidgetRef(PageDirective)\n ],\n exportAs: 'wmPage'\n})\nexport class PageDirective extends StylableComponent implements AfterViewInit, OnDestroy {\n static initializeProps = registerProps();\n\n private _eventNotifier = new EventNotifier(false);\n public refreshdataonattach = true;\n public pagetitle: string;\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'pagetitle') {\n this.titleService.setTitle(nv);\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n constructor(inj: Injector, private titleService: Title, private viewport: Viewport, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n }\n\n /**\n * A child component can notify page using this method. Notified event will be passed to\n * subscribed children only after page initialization.\n *\n * @param {string} eventName\n * @param data\n */\n public notify(eventName: string, ...data: Array<any>) {\n this._eventNotifier.notify.apply(this._eventNotifier, arguments);\n }\n\n /**\n * The main purpose of this function is to provide communication between page children objects.\n * Child component can subscribe for an event that will be emitted by another child component.\n *\n * @param eventName\n * @param {(data: any) => void} callback\n * @returns {any}\n */\n public subscribe(eventName, callback: (data: any) => void): () => void {\n return this._eventNotifier.subscribe(eventName, callback);\n }\n\n public ngAfterViewInit() {\n setTimeout(() => {\n this._eventNotifier.start();\n updateDeviceView(this.nativeElement, this.getAppInstance().isTabletApplicationType);\n }, 1);\n this.registerDestroyListener(this.viewport.subscribe(ViewportEvent.RESIZE, args => {\n this.invokeEventCallback('resize', { $event: args.$event, widget: this, data: args.data });\n }));\n this.registerDestroyListener(this.viewport.subscribe(ViewportEvent.ORIENTATION_CHANGE, args => {\n this.invokeEventCallback('orientationchange', { $event: args.$event, widget: this, data: args.data });\n }));\n }\n\n public ngOnAttach() {\n this.titleService.setTitle(this.pagetitle);\n this.invokeEventCallback('attach', { widget: this });\n this.notify('attach', {\n refreshData: this.refreshdataonattach\n });\n }\n\n public ngOnDetach() {\n this.invokeEventCallback('detach', { widget: this });\n this.notify('detach');\n }\n\n public ngOnDestroy() {\n this.invokeEventCallback('destroy', { widget: this });\n this._eventNotifier.destroy();\n }\n}\n","import { register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-layout',\n new Map(\n []\n )\n );\n};\n","import {AfterViewInit, Directive, Inject, Injector, Optional} from '@angular/core';\n\nimport {EventNotifier} from '@wm/core';\nimport { updateDeviceView, provideAsWidgetRef, StylableComponent } from '@wm/components/base';\n\nimport { registerProps } from './layout.props';\n\nconst DEFAULT_CLS = 'app-page container';\nconst WIDGET_CONFIG = {widgetType: 'wm-layout', hostClass: DEFAULT_CLS};\n\n@Directive({\n standalone: true,\n selector: '[wmLayout]',\n providers: [\n provideAsWidgetRef(LayoutDirective)\n ],\n exportAs: 'wmLayout'\n})\nexport class LayoutDirective extends StylableComponent implements AfterViewInit {\n static initializeProps = registerProps();\n\n private _eventNotifier = new EventNotifier(false);\n\n constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n }\n\n /**\n * A child component can notify page using this method. Notified event will be passed to\n * subscribed children only after page initialization.\n *\n * @param {string} eventName\n * @param data\n */\n public notify(eventName: string, ...data: Array<any>) {\n this._eventNotifier.notify.apply(this._eventNotifier, arguments);\n }\n\n public ngAfterViewInit() {\n setTimeout(() => {\n updateDeviceView(this.nativeElement, this.getAppInstance().isTabletApplicationType);\n }, 1);\n }\n}\n","import { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-page-content',\n new Map(\n [\n ['class', PROP_STRING],\n ['columnwidth', PROP_NUMBER],\n ['content', PROP_STRING],\n ['name', PROP_STRING],\n ['pulltorefresh', {value: false, ...PROP_BOOLEAN}]\n ]\n )\n );\n};\n","import {Component, Inject, Injector, Optional} from '@angular/core';\n\nimport {App, switchClass} from '@wm/core';\nimport { APPLY_STYLES_TYPE, PullToRefresh, provideAsWidgetRef, StylableComponent, styler } from '@wm/components/base';\n\nimport { registerProps } from './page-content.props';\n\nconst DEFAULT_CLS = 'app-page-content app-content-column';\nconst WIDGET_CONFIG = {widgetType: 'wm-page-content', hostClass: DEFAULT_CLS};\n\n@Component({\n standalone: true,\n selector: '[wmPageContent]',\n templateUrl: './page-content.component.html',\n providers: [\n provideAsWidgetRef(PageContentComponent)\n ]\n})\nexport class PageContentComponent extends StylableComponent {\n static initializeProps = registerProps();\n\n public pullToRefreshIns: PullToRefresh;\n private pulltorefresh: boolean;\n private childPullToRefresh: boolean;\n\n constructor(inj: Injector, private app: App, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER);\n\n this.registerDestroyListener(this.app.subscribe('pullToRefresh:enable', () => {\n this.childPullToRefresh = true;\n this.initPullToRefresh();\n }));\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'columnwidth') {\n switchClass(this.nativeElement, `col-md-${nv} col-sm-${nv}`, `col-md-${ov} col-sm-${ov}`);\n } else if (key === 'pulltorefresh' && nv) {\n // creating instance after timeout as the smoothscroll styles where getting added on pull refresh-container\n setTimeout(() => {\n this.initPullToRefresh();\n });\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n // when list component is ready, pulltorefresh instance is created and this appends pullToRefresh element on the page content.\n private initPullToRefresh() {\n const hasPullToRefreshEvent = this.hasEventCallback('pulltorefresh');\n if (!this.pullToRefreshIns && (this.childPullToRefresh || hasPullToRefreshEvent) && this.pulltorefresh) {\n this.pullToRefreshIns = new PullToRefresh($(this.nativeElement), this.app, () => {\n if (hasPullToRefreshEvent) {\n this.invokeEventCallback('pulltorefresh');\n } else {\n this.app.notify('pulltorefresh');\n }\n });\n this.registerDestroyListener(() => {\n if (this.pullToRefreshIns.cancelSubscription) {\n this.pullToRefreshIns.cancelSubscription();\n }\n });\n }\n }\n}\n","<ng-content></ng-content>","import { PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-content',\n new Map(\n [\n ['name', PROP_STRING],\n ['class', PROP_STRING]\n ]\n )\n );\n};\n","import {Component, Inject, Injector, Optional} from '@angular/core';\n\nimport { IWidgetConfig, provideAsWidgetRef, StylableComponent, styler } from '@wm/components/base';\n\nimport { registerProps } from './content.props';\n\nconst DEFAULT_CLS = 'app-content clearfix';\nconst WIDGET_CONFIG: IWidgetConfig = {widgetType: 'wm-content', hostClass: DEFAULT_CLS};\n\n@Component({\n standalone: true,\n selector: '[wmContent]',\n templateUrl: './content.component.html',\n providers: [\n provideAsWidgetRef(ContentComponent)\n ]\n})\nexport class ContentComponent extends StylableComponent {\n static initializeProps = registerProps();\n\n constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n\n styler(this.nativeElement, this);\n }\n}\n","<div class=\"row app-content-row clearfix\">\n <ng-content></ng-content>\n</div>","import { PROP_STRING, PROP_BOOLEAN, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-spa-page',\n new Map(\n [\n ['cache', {value: false, ...PROP_BOOLEAN}],\n ['refreshdataonattach', {value: true, ...PROP_BOOLEAN}],\n ['pagetitle', PROP_STRING],\n ['hint', PROP_STRING]\n ]\n )\n );\n};\n","import {AfterViewInit, Directive, Inject, Injector, OnDestroy, Optional, SkipSelf} from '@angular/core';\nimport { Title } from '@angular/platform-browser';\n\nimport {EventNotifier, Viewport, ViewportEvent} from '@wm/core';\nimport { updateDeviceView, provideAsWidgetRef, StylableComponent } from '@wm/components/base';\n\nimport { registerProps } from './spa-page.props';\n\nconst DEFAULT_CLS = 'app-spa-page';\nconst WIDGET_CONFIG = {widgetType: 'wm-spa-page', hostClass: DEFAULT_CLS};\n\n@Directive({\n standalone: true,\n selector: '[wmSpaPage]',\n providers: [\n provideAsWidgetRef(SpaPageDirective)\n ],\n exportAs: 'wmSpaPage'\n})\nexport class SpaPageDirective extends StylableComponent implements AfterViewInit, OnDestroy {\n static initializeProps = registerProps();\n\n private _eventNotifier = new EventNotifier(false);\n public refreshdataonattach = true;\n public pagetitle: string;\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'pagetitle') {\n this.titleService.setTitle(nv);\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n constructor(inj: Injector, private titleService: Title, private viewport: Viewport, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n }\n\n /**\n * A child component can notify page using this method. Notified event will be passed to\n * subscribed children only after page initialization.\n *\n * @param {string} eventName\n * @param data\n */\n public notify(eventName: string, ...data: Array<any>) {\n this._eventNotifier.notify.apply(this._eventNotifier, arguments);\n }\n\n /**\n * The main purpose of this function is to provide communication between page children objects.\n * Child component can subscribe for an event that will be emitted by another child component.\n *\n * @param eventName\n * @param {(data: any) => void} callback\n * @returns {any}\n */\n public subscribe(eventName, callback: (data: any) => void): () => void {\n return this._eventNotifier.subscribe(eventName, callback);\n }\n\n public ngAfterViewInit() {\n setTimeout(() => {\n this._eventNotifier.start();\n updateDeviceView(this.nativeElement, this.getAppInstance().isTabletApplicationType);\n }, 1);\n this.registerDestroyListener(this.viewport.subscribe(ViewportEvent.RESIZE, args => {\n this.invokeEventCallback('resize', { $event: args.$event, widget: this, data: args.data });\n }));\n this.registerDestroyListener(this.viewport.subscribe(ViewportEvent.ORIENTATION_CHANGE, args => {\n this.invokeEventCallback('orientationchange', { $event: args.$event, widget: this, data: args.data });\n }));\n }\n\n public ngOnAttach() {\n this.titleService.setTitle(this.pagetitle);\n this.invokeEventCallback('attach', { widget: this });\n this.notify('attach', {\n refreshData : this.refreshdataonattach\n });\n }\n\n public ngOnDetach() {\n this.invokeEventCallback('detach', { widget: this });\n this.notify('detach');\n }\n\n public ngOnDestroy() {\n this.invokeEventCallback('destroy', { widget: this });\n this._eventNotifier.destroy();\n }\n}\n","import { PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-router-outlet',\n new Map(\n [\n ['columnwidth', PROP_NUMBER],\n ['name', PROP_STRING]\n ]\n )\n );\n};\n","import {Directive, Inject, Injector, Optional} from '@angular/core';\n\nimport {App, switchClass} from '@wm/core';\n\nimport { IWidgetConfig, provideAsWidgetRef, StylableComponent } from '@wm/components/base';\nimport { registerProps } from './router-outlet.props';\n\nconst DEFAULT_CLS = 'app-content-column-wrapper';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-router-outlet',\n hostClass: DEFAULT_CLS\n};\n\n@Directive({\n standalone: true,\n selector: '[wmRouterOutlet]',\n providers: [\n provideAsWidgetRef(RouterOutletDirective)\n ]\n})\nexport class RouterOutletDirective extends StylableComponent {\n static initializeProps = registerProps();\n isPrism: boolean;\n constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any, public app: App) {\n super(inj, WIDGET_CONFIG, explicitContext);\n this.isPrism = this.app.isPrism;\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'columnwidth' && !this.isPrism) {\n switchClass(this.nativeElement, `col-md-${nv} col-sm-${nv}`, `col-md-${ov} col-sm-${ov}`);\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["registerProps","DEFAULT_CLS","WIDGET_CONFIG","i1"],"mappings":"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"}
@@ -1,10 +1,13 @@
1
1
  import { Injector } from '@angular/core';
2
+ import { App } from '@wm/core';
2
3
  import { StylableComponent } from '@wm/components/base';
3
4
  import * as i0 from "@angular/core";
4
5
  export declare class RouterOutletDirective extends StylableComponent {
6
+ app: App;
5
7
  static initializeProps: void;
6
- constructor(inj: Injector, explicitContext: any);
8
+ isPrism: boolean;
9
+ constructor(inj: Injector, explicitContext: any, app: App);
7
10
  onPropertyChange(key: string, nv: any, ov?: any): void;
8
- static ɵfac: i0.ɵɵFactoryDeclaration<RouterOutletDirective, [null, { optional: true; }]>;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<RouterOutletDirective, [null, { optional: true; }, null]>;
9
12
  static ɵdir: i0.ɵɵDirectiveDeclaration<RouterOutletDirective, "[wmRouterOutlet]", never, {}, {}, never, never, true, never>;
10
13
  }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@wavemaker/app-ng-runtime",
3
- "version": "11.14.1-rc.233",
3
+ "version": "11.14.1-rc.238",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@wavemaker/app-ng-runtime",
9
- "version": "11.14.1-rc.233",
9
+ "version": "11.14.1-rc.238",
10
10
  "license": "MIT",
11
11
  "engines": {
12
12
  "node": ">=18.16.1",
package/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@wavemaker/app-ng-runtime",
3
- "version": "11.14.1-rc.233",
3
+ "version": "11.14.1-rc.238",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@wavemaker/app-ng-runtime",
9
- "version": "11.14.1-rc.233",
9
+ "version": "11.14.1-rc.238",
10
10
  "license": "MIT",
11
11
  "engines": {
12
12
  "node": ">=18.16.1",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wavemaker/app-ng-runtime",
3
- "version": "11.14.1-rc.233",
3
+ "version": "11.14.1-rc.238",
4
4
  "description": "All modules required for a WaveMaker application.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -363,8 +363,9 @@
363
363
  reloadAppData() {
364
364
  return this.loadSecurityConfig(true).then(() => {
365
365
  return this.loadMetadata().then(() => {
366
- return this.updateLoggedInUserVariable().then(() => {
367
- return this.beforeAppReady();
366
+ return this.updateLoggedInUserVariable().then((config) => {
367
+ return Promise.resolve(this.beforeAppReady())
368
+ .then(() => Promise.resolve(config));
368
369
  });
369
370
  });
370
371
  });
@@ -319,8 +319,9 @@ export class AppManagerService {
319
319
  reloadAppData() {
320
320
  return this.loadSecurityConfig(true).then(() => {
321
321
  return this.loadMetadata().then(() => {
322
- return this.updateLoggedInUserVariable().then(() => {
323
- return this.beforeAppReady();
322
+ return this.updateLoggedInUserVariable().then((config) => {
323
+ return Promise.resolve(this.beforeAppReady())
324
+ .then(() => Promise.resolve(config));
324
325
  });
325
326
  });
326
327
  });
@@ -491,4 +492,4 @@ export class AppManagerService {
491
492
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppManagerService, decorators: [{
492
493
  type: Injectable
493
494
  }], ctorParameters: () => [{ type: i1.AbstractHttpService }, { type: i2.SecurityService }, { type: i1.AbstractDialogService }, { type: i3.Router }, { type: i1.App }, { type: i4.VariablesService }, { type: i4.MetadataService }, { type: i1.AbstractSpinnerService }, { type: i1.AbstractI18nService }, { type: i5.DatePipe }] });
494
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvc2VydmljZXMvYXBwLm1hbmFnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUNILFVBQVUsRUFDVixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdEIsR0FBRyxFQUNILFlBQVksRUFDWixzQkFBc0IsRUFDdEIsU0FBUyxFQUNULFNBQVMsRUFDWixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBQyxVQUFVLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzVGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQUV6RCxJQUFLLGFBT0o7QUFQRCxXQUFLLGFBQWE7SUFDZCxzRUFBcUQsQ0FBQTtJQUNyRCxzRUFBcUQsQ0FBQTtJQUNyRCx5REFBaUQsQ0FBQTtJQUNqRCxvREFBNEMsQ0FBQTtJQUM1QyxpRUFBbUQsQ0FBQTtJQUNuRCxvQ0FBb0MsQ0FBQTtBQUN4QyxDQUFDLEVBUEksYUFBYSxLQUFiLGFBQWEsUUFPakI7QUFJRCxNQUFNLE9BQU8saUJB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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtcbiAgICAkYXBwRGlnZXN0LFxuICAgIEFic3RyYWN0RGlhbG9nU2VydmljZSxcbiAgICBBYnN0cmFjdEh0dHBTZXJ2aWNlLFxuICAgIEFic3RyYWN0STE4blNlcnZpY2UsXG4gICAgQWJzdHJhY3RTcGlubmVyU2VydmljZSxcbiAgICBBcHAsXG4gICAgZmV0Y2hDb250ZW50LFxuICAgIGdldFdtUHJvamVjdFByb3BlcnRpZXMsXG4gICAgaXNEZWZpbmVkLFxuICAgIHRyaWdnZXJGblxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge1NlY3VyaXR5U2VydmljZX0gZnJvbSAnQHdtL3NlY3VyaXR5JztcbmltcG9ydCB7JHJvb3RTY29wZSwgTWV0YWRhdGFTZXJ2aWNlLCBWYXJpYWJsZXNTZXJ2aWNlfSBmcm9tICdAd20vdmFyaWFibGVzJztcbmltcG9ydCB7ZXh0ZW5kLCBmb3JFYWNoLCBnZXQsIGlzRW1wdHksIGlzT2JqZWN0LCBpc1VuZGVmaW5lZCwgbWVyZ2UsIHRyaW19IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IGdldE1vZGVzRnJvbUxvY2FsU3RvcmFnZSB9IGZyb20gJy4uL3B1YmxpY19hcGknO1xuXG5lbnVtIFBPU1RfTUVTU0FHRVMge1xuICAgIEhJREVfVEVNUExBVEVTX1NIT1dfQ0FTRSA9ICdoaWRlLXRlbXBsYXRlcy1zaG93LWNhc2UnLFxuICAgIFNIT1dfVEVNUExBVEVTX1NIT1dfQ0FTRSA9ICdzaG93LXRlbXBsYXRlcy1zaG93LWNhc2UnLFxuICAgIFVQREFURV9MT0NBVElPTiAgICAgICAgICA9ICd1cGRhdGUtbG9jYXRpb24tcGF0aCcsXG4gICAgU0VMRUNUX1RFTVBMQVRFICAgICAgICAgID0gJ3NlbGVjdC10ZW1wbGF0ZScsXG4gICAgVEVNUExBVEVCVU5ETEVfQ09ORklHICAgID0gJ3RlbXBsYXRlLWJ1bmRsZS1jb25maWcnLFxuICAgIE9OX0xPQUQgICAgICAgICAgICAgICAgICA9ICdvbi1sb2FkJ1xufVxuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBcHBNYW5hZ2VyU2VydmljZSB7XG4gICAgc3RhdGljIHJlYWRvbmx5IFNFUlZJQ0VfTkFNRSA9ICdBcHBNYW5hZ2VyU2VydmljZSc7XG5cbiAgICBwcml2YXRlIGFwcFZhcmlhYmxlc0xvYWRlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgYXBwVmFyaWFibGVzRmlyZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9ub1JlZGlyZWN0ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZXM6IEFycmF5PGFueT47XG4gICAgcHJpdmF0ZSBsYXN0TG9nZ2VkVXNlcklkO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgJGh0dHA6IEFic3RyYWN0SHR0cFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgJHNlY3VyaXR5OiBTZWN1cml0eVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgJGRpYWxvZzogQWJzdHJhY3REaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlICRyb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSAkYXBwOiBBcHAsXG4gICAgICAgIHByaXZhdGUgJHZhcmlhYmxlczogVmFyaWFibGVzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkbWV0YWRhdGE6IE1ldGFkYXRhU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkc3Bpbm5lcjogQWJzdHJhY3RTcGlubmVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkaTE4bjogQWJzdHJhY3RJMThuU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkZGF0ZVBpcGU6IERhdGVQaXBlLFxuICAgICkge1xuICAgICAgICAvLyByZWdpc3RlciBtZXRob2QgdG8gaW52b2tlIG9uIHNlc3Npb24gdGltZW91dFxuICAgICAgICB0aGlzLiRodHRwLnJlZ2lzdGVyT25TZXNzaW9uVGltZW91dCh0aGlzLmhhbmRsZTQwMS5iaW5kKHRoaXMpKTtcblxuICAgICAgICB0aGlzLiR2YXJpYWJsZXMucmVnaXN0ZXJEZXBlbmRlbmN5KCdhcHBNYW5hZ2VyJywgdGhpcyk7XG5cbiAgICAgICAgdGhpcy4kYXBwLnN1YnNjcmliZSgndG9nZ2xlLXZhcmlhYmxlLXN0YXRlJywgKGRhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlID0gZGF0YS52YXJpYWJsZSxcbiAgICAgICAgICAgICAgICBhY3RpdmUgPSBkYXRhLmFjdGl2ZTtcbiAgICAgICAgICAgIGlmICghaXNFbXB0eSh0cmltKHZhcmlhYmxlLnNwaW5uZXJDb250ZXh0KSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzcGlubmVyRXhpc3RzO1xuICAgICAgICAgICAgICAgICAgICAvLyBXTVMtMjExMTcgOiBEbyBub3QgdHJpZ2dlciBzcGlubmVyLCBpZiB0aGUgY3VycmVudCB2YXJpYWJsZSBpcyBzYW1lIGFzIHNwaW5uZXIgd2hpY2ggaXMgaW4gY29udGV4dFxuICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFibGUuX3NwaW5uZXJJZCAmJiB2YXJpYWJsZS5fc3Bpbm5lcklkLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yRWFjaCh2YXJpYWJsZS5fc3Bpbm5lcklkLCAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLnNsaWNlKDAsIGl0ZW0ubGFzdEluZGV4T2YoJ18nKSkgPT09IHZhcmlhYmxlLl9pZCAmJiAodGhpcy4kc3Bpbm5lciBhcyBhbnkpLm1lc3NhZ2VzQnlDb250ZXh0ICYmICh0aGlzLiRzcGlubmVyIGFzIGFueSkubWVzc2FnZXNCeUNvbnRleHRbdmFyaWFibGUuc3Bpbm5lckNvbnRleHRdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YXJpYWJsZS5zcGlubmVyTWVzc2FnZSA9PT0gKHRoaXMuJHNwaW5uZXIgYXMgYW55KS5tZXNzYWdlc0J5Q29udGV4dFt2YXJpYWJsZS5zcGlubmVyQ29udGV4dF1bXCJmaW5hbE1lc3NhZ2VcIl0gfHwgdmFyaWFibGUuc3Bpbm5lck1lc3NhZ2UgPT09ICh0aGlzLiRzcGlubmVyIGFzIGFueSkubWVzc2FnZXNCeUNvbnRleHRbdmFyaWFibGUuc3Bpbm5lckNvbnRleHRdW2l0ZW1dKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGlubmVyRXhpc3RzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghc3Bpbm5lckV4aXN0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuX3NwaW5uZXJJZCA9IHZhcmlhYmxlLl9zcGlubmVySWQgfHwgW107XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGlubmVySWQgPSB0aGlzLiRzcGlubmVyLnNob3codmFyaWFibGUuc3Bpbm5lck1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuX2lkICsgJ18nICsgRGF0ZS5ub3coKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS5zcGlubmVyY2xhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuc3Bpbm5lckNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuX3NwaW5uZXJJZC5wdXNoKHNwaW5uZXJJZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRzcGlubmVyLmhpZGUodmFyaWFibGUuX3NwaW5uZXJJZC5zaGlmdCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLiRhcHAuc3Vic2NyaWJlKCd1c2VyTG9nZ2VkSW4nLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldExhbmRpbmdQYWdlKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXN0TG9nZ2VkVXNlcklkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kc2VjdXJpdHkuZ2V0Q29uZmlnKGNvbmZpZyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmKGNvbmZpZyAmJiBjb25maWcudXNlckluZm8udXNlcklkICE9PSB0aGlzLmxhc3RMb2dnZWRVc2VySWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGFwcC5jbGVhclBhZ2VDYWNoZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLiRhcHAuc3Vic2NyaWJlKCd1c2VyTG9nZ2VkT3V0JywgKCkgPT4gdGhpcy5zZXRMYW5kaW5nUGFnZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4kYXBwLmNsZWFyUGFnZUNhY2hlKCk7XG4gICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy4kYXBwLnN1YnNjcmliZSgnaHR0cDQwMScsIChkID0ge30pID0+IHRoaXMuaGFuZGxlNDAxKGQucGFnZSwgZC5vcHRpb25zKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT24gc2Vzc2lvbiB0aW1lb3V0LCBpZiB0aGUgc2Vzc2lvbiB0aW1lb3V0IGNvbmZpZyBpcyBzZXQgdG8gYSBkaWFsb2csIHRoZW4gb3BlbiBsb2dpbiBkaWFsb2dcbiAgICAgKi9cbiAgICBwcml2YXRlIHNob3dMb2dpbkRpYWxvZygpIHtcbiAgICAgICAgdGhpcy4kc3Bpbm5lci5oaWRlKCdnbG9iYWxTcGlubmVyJyk7XG4gICAgICAgIC8vIFJlbW92aW5nIHRoZSBjbG9zZSBhbGwgZGlhbG9ncyBjYWxsLCBzbyB0aGUgZXhpc3RpbmcgZGlhbG9ncyByZW1haW4gb3BlbiBhbmRcbiAgICAgICAgLy8gdGhlIGxvZ2luIGRpYWxvZyBjb21lcyBvbiB0b3Agb2YgaXQuXG4gICAgICAgIHRoaXMuJGRpYWxvZy5vcGVuKCdDb21tb25Mb2dpbkRpYWxvZycpO1xuICAgICAgICAvLyBTaW5jZSB0aGUgbG9naW4gZGlhbG9nIGlzIGNsb3NlZCBhbmQgb3BlbmVkIGl0cyB1cGRhdGVkIHByb3BlcnR5IGlzbid0IHJlYWQgYnkgYW5ndWxhci5cbiAgICAgICAgLy8gSGVuY2Ugd2UgdHJpZ2dlciB0aGUgZGlnZXN0IGN5Y2xlXG4gICAgICAgICRhcHBEaWdlc3QoKTtcbiAgICB9XG5cbiAgICBsb2FkQXBwSlMoKSB7XG5cbiAgICB9XG5cbiAgICBsb2FkQ29tbW9uUGFnZSgpIHtcblxuICAgIH1cblxuICAgIGxvYWRTZWN1cml0eUNvbmZpZyhmb3JjZUZsYWc/OiBib29sZWFuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzZWN1cml0eS5sb2FkKGZvcmNlRmxhZykudGhlbigocikgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLiRhcHAubGFuZGluZ1BhZ2VOYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRMYW5kaW5nUGFnZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGxvYWRNZXRhZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJG1ldGFkYXRhLmxvYWQoKTtcbiAgICB9XG5cbiAgICBsb2FkQXBwVmFyaWFibGVzKHZhcmlhYmxlcz86IGFueSkge1xuICAgICAgICBpZiAodGhpcy5hcHBWYXJpYWJsZXNMb2FkZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGluaXQgPSByZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy4kdmFyaWFibGVzLnJlZ2lzdGVyKCdhcHAnLCByZXNwb25zZSwgdGhpcy4kYXBwKTtcbiAgICAgICAgICAgIC8vIG5vdCBhc3NpZ25pbmcgZGlyZWN0bHkgdG8gdGhpcy4kYXBwIHRvIGtlZXAgdGhlIHJlZmVyZW5jZSBpbiB0YWN0XG4gICAgICAgICAgICBleHRlbmQodGhpcy4kYXBwLlZhcmlhYmxlcywgZGF0YS5WYXJpYWJsZXMpO1xuICAgICAgICAgICAgZXh0ZW5kKHRoaXMuJGFwcC5BY3Rpb25zLCBkYXRhLkFjdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMb2dnZWRJblVzZXJWYXJpYWJsZSgpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdXBwb3J0ZWRMb2NhbGVWYXJpYWJsZSgpO1xuICAgICAgICAgICAgdGhpcy5hcHBWYXJpYWJsZXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5hcHBWYXJpYWJsZXNGaXJlZCA9IGZhbHNlO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChpc0RlZmluZWQodmFyaWFibGVzKSkge1xuICAgICAgICAgICAgaW5pdCh2YXJpYWJsZXMpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuJGh0dHAuZ2V0KCcuL2FwcC52YXJpYWJsZXMuanNvbicpLnRoZW4ocmVzcG9uc2UgPT4gaW5pdChyZXNwb25zZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldHRlciBhbmQgc2V0dGVyIGZvciB0aGUgcHJvcGVydHkgYXBwVmFyaWFibGVzRmlyZWRcbiAgICAgKiB0aGlzIGZsYWcgZGV0ZXJtaW5lcyBpZiB0aGUgYXBwIHZhcmlhYmxlcyh3aXRoIHN0YXJ0VXBkYXRlOnRydWUpIGhhdmUgYmVlbiBmaXJlZFxuICAgICAqIHRoZXkgc2hvdWxkIGdldCBmaXJlZCBvbmx5IG9uY2UgdGhyb3VnaCBhcHAgbGlmZWN5Y2xlXG4gICAgICogQHBhcmFtIHtib29sZWFufSBpc0ZpcmVkXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgaXNBcHBWYXJpYWJsZXNGaXJlZChpc0ZpcmVkPzogYm9vbGVhbikge1xuICAgICAgICBpZiAoaXNEZWZpbmVkKGlzRmlyZWQpKSB7XG4gICAgICAgICAgICB0aGlzLmFwcFZhcmlhYmxlc0ZpcmVkID0gaXNGaXJlZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5hcHBWYXJpYWJsZXNGaXJlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyTG9nZ2VkSW5Vc2VyVmFyaWFibGUodmFyaWFibGUpIHtcbiAgICAgICAgdmFyaWFibGUuaXNBdXRoZW50aWNhdGVkID0gZmFsc2U7XG4gICAgICAgIHZhcmlhYmxlLnJvbGVzICAgICAgICAgICA9IFtdO1xuICAgICAgICB2YXJpYWJsZS5uYW1lICAgICAgICAgICAgPSB1bmRlZmluZWQ7XG4gICAgICAgIHZhcmlhYmxlLmlkICAgICAgICAgICAgICA9IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyaWFibGUudGVuYW50SWQgICAgICAgID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTG9nZ2VkSW5Vc2VyVmFyaWFibGUoKSB7XG4gICAgICAgIGNvbnN0IGxvZ2dlZEluVXNlciA9IGdldCh0aGlzLiRhcHAsICdWYXJpYWJsZXMubG9nZ2VkSW5Vc2VyLmRhdGFTZXQnKTtcblxuICAgICAgICAvLyBzYW5pdHkgY2hlY2tcbiAgICAgICAgaWYgKCFsb2dnZWRJblVzZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy4kc2VjdXJpdHkubG9hZCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VjdXJpdHlDb25maWcgPSB0aGlzLiRzZWN1cml0eS5nZXQoKTtcbiAgICAgICAgICAgIGlmIChzZWN1cml0eUNvbmZpZyAmJiBzZWN1cml0eUNvbmZpZy5zZWN1cml0eUVuYWJsZWQgJiYgc2VjdXJpdHlDb25maWcuYXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgICAgIGxvZ2dlZEluVXNlci5pc0F1dGhlbnRpY2F0ZWQgPSBzZWN1cml0eUNvbmZpZy5hdXRoZW50aWNhdGVkO1xuICAgICAgICAgICAgICAgIGxvZ2dlZEluVXNlci5yb2xlcyAgICAgICAgICAgPSBzZWN1cml0eUNvbmZpZy51c2VySW5mby51c2VyUm9sZXM7XG4gICAgICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLm5hbWUgICAgICAgICAgICA9IHNlY3VyaXR5Q29uZmlnLnVzZXJJbmZvLnVzZXJOYW1lO1xuICAgICAgICAgICAgICAgIGxvZ2dlZEluVXNlci5pZCAgICAgICAgICAgICAgPSBzZWN1cml0eUNvbmZpZy51c2VySW5mby51c2VySWQ7XG4gICAgICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLnRlbmFudElkICAgICAgICA9IHNlY3VyaXR5Q29uZmlnLnVzZXJJbmZvLnRlbmFudElkO1xuICAgICAgICAgICAgICAgIGxvZ2dlZEluVXNlci51c2VyQXR0cmlidXRlcyAgPSBzZWN1cml0eUNvbmZpZy51c2VySW5mby51c2VyQXR0cmlidXRlczsgLy8gYXNzaWduIHRoZSBleHRyYSB1c2VyQXR0cmlidXRlcyBmb3IgY3VzdG9tIHVzYWdlLlxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyTG9nZ2VkSW5Vc2VyVmFyaWFibGUobG9nZ2VkSW5Vc2VyKTtcbiAgICAgICAgICAgICAgICBsb2dnZWRJblVzZXIuaXNTZWN1cml0eUVuYWJsZWQgPSBzZWN1cml0eUNvbmZpZyAmJiBzZWN1cml0eUNvbmZpZy5zZWN1cml0eUVuYWJsZWQ7XG4gICAgICAgICAgICAgICAgdGhyb3cgbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzZWN1cml0eUNvbmZpZztcbiAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGxvZ2dlZEluVXNlci5pc0F1dGhlbnRpY2F0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGxvZ2dlZEluVXNlci5yb2xlcyAgICAgICAgICAgPSBbXTtcbiAgICAgICAgICAgIGxvZ2dlZEluVXNlci5uYW1lICAgICAgICAgICAgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBsb2dnZWRJblVzZXIuaWQgICAgICAgICAgICAgID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLnRlbmFudElkICAgICAgICA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGxvZ2dlZEluVXNlci51c2VyQXR0cmlidXRlcyAgPSB7fTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGluZyB0aGUgYXBwIHZhcmlhYmxlIHN1cHBvcnRlZCBsb2NhbGUgd2l0aCB0aGUgd21Qcm9wZXJ0aWVzIGkxOG4gRGF0YVZhbHVlc1xuICAgICAqXG4gICAgICogVE9ET1tWaWJodV06XG4gICAgICogQ2FuIHdyaXRlIGEgc2ltcGxlIG1pZ3JhdGlvbiB0byBzeW5jIHRoZSBzdXBwb3J0ZWRMb2NhbGUgdmFyaWFibGUgd2l0aCAnX1dNX0FQUF9QUk9QRVJUSUVTLnN1cHBvcnRlZExhbmd1YWdlcydcbiAgICAgKiBIZW5jZSwgdGhpcyBtYXkgbm90IGJlIHJlcXVpcmVkXG4gICAgICpcbiAgICAgKi9cbiAgICB1cGRhdGVTdXBwb3J0ZWRMb2NhbGVWYXJpYWJsZSgpIHtcbiAgICAgICAgY29uc3Qgc3VwcG9ydGVkTG9jYWxlVmFyID0gZ2V0KHRoaXMuJGFwcCwgJ1ZhcmlhYmxlcy5zdXBwb3J0ZWRMb2NhbGUnKTtcbiAgICB9XG5cbiAgICBoYW5kbGVTU09Mb2dpbihjb25maWcsIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgU1NPX1VSTCA9ICdzZXJ2aWNlcy9zZWN1cml0eS9zc29sb2dpbicsXG4gICAgICAgICAgICBQUkVWSUVXX1dJTkRPV19OQU1FID0gJ1dNX1BSRVZJRVdfV0lORE9XJztcbiAgICAgICAgbGV0IHBhZ2UgPSAnJyxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zO1xuXG4gICAgICAgIC8vIGRvIG5vdCBwcm92aWRlIHJlZGlyZWN0VG8gcGFnZSBpZiBmZXRjaGluZyBIT01FIHBhZ2UgcmVzdWx0ZWQgNDAxXG4gICAgICAgIC8vIG9uIGFwcCBsb2FkLCBieSBkZWZhdWx0IEhvbWUgcGFnZSBpcyBsb2FkZWRcblxuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAqIEZvciBwcmV2aWV3LCB0aGlzLiRzZWN1cml0eS5nZXRSZWRpcmVjdGVkUm91dGVRdWVyeVBhcmFtcygpIGdldHMgdGhlIHF1ZXJ5cGFyYW1zIGZvcm0gdGhlIGFjdGl2YXRlZCByb3V0ZShwYWdld3JhcHBlcmNvbXBvbmVudClcbiAgICAgICAgICAgICAqIEZvciBkZXBsb3llZCBhcHAsIGNhbmFjdGl2YXRlIGd1YXJkIHJlc29sdmVkIHRvIGZhbHNlIGFuZCBnZXRzIHRoZSBxdWVyeXBhcmFtcyBmcm9tIHRoZSBjYW5hY3RpdmF0ZSBndXJhcmQobm8gYWN0aXZlIHJvdXRlIGNvbXBvbmVudClcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcXVlcnlQYXJhbXMgPSAob3B0aW9ucyAmJiBvcHRpb25zLnF1ZXJ5UGFyYW1zKSB8fCB0aGlzLiRzZWN1cml0eS5nZXRSZWRpcmVjdGVkUm91dGVRdWVyeVBhcmFtcygpO1xuICAgICAgICAgICAgcXVlcnlQYXJhbXMgPSB0aGlzLiRzZWN1cml0eS5nZXRRdWVyeVN0cmluZyhxdWVyeVBhcmFtcyk7XG4gICAgICAgICAgICBxdWVyeVBhcmFtcyA9IHF1ZXJ5UGFyYW1zID8gJz8nICsgcXVlcnlQYXJhbXMgOiAnJztcblxuICAgICAgICAgICAgY29uc3QgcmVkaXJlY3RQYWdlID0gdGhpcy4kc2VjdXJpdHkuZ2V0Q3VycmVudFJvdXRlUGFnZSgpO1xuICAgICAgICAgICAgY29uc3QgaG9tZVBhZ2UgPSBnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkuaG9tZVBhZ2U7XG4gICAgICAgICAgICBpZiAocmVkaXJlY3RQYWdlICYmIChyZWRpcmVjdFBhZ2UgIT09IGhvbWVQYWdlIHx8ICEhcXVlcnlQYXJhbXMpKSB7XG4gICAgICAgICAgICAgICAgcGFnZSA9ICc/cmVkaXJlY3RQYWdlPScgKyBlbmNvZGVVUklDb21wb25lbnQocmVkaXJlY3RQYWdlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gc2hvd2luZyBhIHJlZGlyZWN0aW5nIG1lc3NhZ2VcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkudGV4dENvbnRlbnQgPSBnZXQodGhpcy5nZXRBcHBMb2NhbGUoKSwgWydNRVNTQUdFX0xPR0lOX1JFRElSRUNUSU9OJ10pIHx8ICdSZWRpcmVjdGluZyB0byBzc28gbG9naW4uLi4nO1xuICAgICAgICAgICAgLy8gYXBwZW5kaW5nIHJlZGlyZWN0IHRvIHBhZ2UgYW5kIHBhZ2UgcGFyYW1zXG4gICAgICAgICAgICBjb25zdCBzc29VcmwgPSB0aGlzLmdldERlcGxveWVkVVJMKCkgKyBTU09fVVJMICsgcGFnZSArIHF1ZXJ5UGFyYW1zO1xuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAqIHJlbW92ZSBpRnJhbWUgd2hlbiByZWRpcmVjdGVkIHRvIElkUCBsb2dpbiBwYWdlLlxuICAgICAgICAgICAgICogdGhpcyBpcyBiZWluZyBkb25lIGFzIElEUHMgZG8gbm90IGFsbG93IHRvIGdldCB0aGVtc2VsdmVzIGxvYWRlZCBpbnRvIGlGcmFtZXMuXG4gICAgICAgICAgICAgKiByZW1vdmUtdG9vbGJhciBoYXMgYmVlbiBhc3NpZ25lZCB3aXRoIGEgd2luZG93IG5hbWUgV01fUFJFVklFV19XSU5ET1csIGNoZWNrIGlmIHRoZSBpZnJhbWUgaXMgb3VyIHRvb2xiYXIgcmVsYXRlZCBhbmRcbiAgICAgICAgICAgICAqIHNhZmVseSBjaGFuZ2UgdGhlIGxvY2F0aW9uIG9mIHRoZSBwYXJlbnQgdG9vbGJhciB3aXRoIGN1cnJlbnQgdXJsLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpZiAod2luZG93LnNlbGYgIT09IHdpbmRvdy50b3ApIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LnBhcmVudCAmJiB3aW5kb3cubG9jYXRpb24ub3JpZ2luID09PSB3aW5kb3cucGFyZW50Lm9yaWdpbil7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cucGFyZW50Lm5hbWUgPT09IFBSRVZJRVdfV0lORE9XX05BTUUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cucGFyZW50LmxvY2F0aW9uLmhyZWYgPSB3aW5kb3cuc2VsZi5sb2NhdGlvbi5ocmVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5wYXJlbnQubmFtZSA9IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gc3NvVXJsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHNzb1VybDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gc3NvVXJsO1xuICAgICAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgdGhlIGFwcCB3aGVuIGEgWEhSIHJlcXVlc3QgcmV0dXJucyA0MDEgcmVzcG9uc2VcbiAgICAgKiBJZiBubyB1c2VyIHdhcyBsb2dnZWQgaW4gYmVmb3JlIDQwMSBvY2N1cnJlZCwgRmlyc3QgdGltZSBMb2dpbiBpcyBzaW11bGF0ZWRcbiAgICAgKiBFbHNlLCBhIHNlc3Npb24gdGltZW91dCBoYXMgb2NjdXJyZWQgYW5kIHRoZSBzYW1lIGlzIHNpbXVsYXRlZFxuICAgICAqIEBwYXJhbSBwYWdlICBpZiBwcm92aWRlZCwgcmVwcmVzZW50cyB0aGUgcGFnZSBuYW1lIGZvciB3aGljaCBYSFIgcmVxdWVzdCByZXR1cm5lZCA0MDEsIG9uIHJlLWxvZ2luXG4gICAgICogICAgICAgICAgICAgIGlmIG5vdCBwcm92aWRlZCwgYSBzZXJ2aWNlIHJlcXVlc3QgcmV0dXJuZWQgNDAxXG4gICAgICogQHBhcmFtIG9uU3VjY2VzcyBzdWNjZXNzIGhhbmRsZXJcbiAgICAgKiBAcGFyYW0gb25FcnJvciBlcnJvciBoYW5kbGVyXG4gICAgICovXG4gICAgaGFuZGxlNDAxKHBhZ2U/LCBvcHRpb25zPykge1xuICAgICAgICBsZXQgc2Vzc2lvblRpbWVvdXRDb25maWcsXG4gICAgICAgICAgICBzZXNzaW9uVGltZW91dE1ldGhvZCxcbiAgICAgICAgICAgIGxvZ2luQ29uZmlnLFxuICAgICAgICAgICAgbG9naW5NZXRob2Q7XG4gICAgICAgIGNvbnN0IExPR0lOX01FVEhPRCA9IHtcbiAgICAgICAgICAgICAgICAnRElBTE9HJyA6ICdESUFMT0cnLFxuICAgICAgICAgICAgICAgICdQQUdFJyAgIDogJ1BBR0UnLFxuICAgICAgICAgICAgICAgICdTU08nICAgIDogJ1NTTydcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy4kc2VjdXJpdHkuZ2V0KCk7XG4gICAgICAgIGxldCBxdWVyeVBhcmFtc09iaiA9IHt9O1xuICAgICAgICBsb2dpbkNvbmZpZyA9IGNvbmZpZy5sb2dpbkNvbmZpZztcbiAgICAgICAgdGhpcy5sYXN0TG9nZ2VkVXNlcklkID0gY29uZmlnLnVzZXJJbmZvICYmIGNvbmZpZy51c2VySW5mby51c2VySWQ7XG4gICAgICAgIC8vIGlmIHVzZXIgZm91bmQsIDQwMSB3YXMgdGhyb3duIGFmdGVyIHNlc3Npb24gdGltZVxuICAgICAgICBpZiAoY29uZmlnLnVzZXJJbmZvICYmIGNvbmZpZy51c2VySW5mby51c2VyTmFtZSkge1xuICAgICAgICAgICAgY29uZmlnLmF1dGhlbnRpY2F0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHNlc3Npb25UaW1lb3V0Q29uZmlnID0gbG9naW5Db25maWcuc2Vzc2lvblRpbWVvdXQgfHwgeyd0eXBlJzogTE9HSU5fTUVUSE9ELkRJQUxPR307XG4gICAgICAgICAgICBzZXNzaW9uVGltZW91dE1ldGhvZCA9IHNlc3Npb25UaW1lb3V0Q29uZmlnLnR5cGUudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIHN3aXRjaCAoc2Vzc2lvblRpbWVvdXRNZXRob2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlIExPR0lOX01FVEhPRC5ESUFMT0c6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0xvZ2luRGlhbG9nKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTE9HSU5fTUVUSE9ELlBBR0U6XG4gICAgICAgICAgICAgICAgICAgIGlmICghcGFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZSA9IHRoaXMuJHNlY3VyaXR5LmdldEN1cnJlbnRSb3V0ZVBhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc09ialsncmVkaXJlY3RUbyddID0gcGFnZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gQWRkaW5nIHF1ZXJ5IHBhcmFtcyhwYWdlIHBhcmFtcyBvZiBwYWdlIGJlaW5nIHJlZGlyZWN0ZWQgdG8pIHRvIHRoZSBVUkwuXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zT2JqID0gbWVyZ2UocXVlcnlQYXJhbXNPYmosIHRoaXMuJHNlY3VyaXR5LmdldFJlZGlyZWN0ZWRSb3V0ZVF1ZXJ5UGFyYW1zKCkpO1xuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcmVkaXJlY3QgcGFnZSBzaG91bGQgbm90IGJlIHNhbWUgYXMgc2Vzc2lvbiB0aW1lb3V0IGxvZ2luIHBhZ2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBwYWdlICE9PSBzZXNzaW9uVGltZW91dENvbmZpZy5wYWdlTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kcm91dGVyLm5hdmlnYXRlKFtzZXNzaW9uVGltZW91dENvbmZpZy5wYWdlTmFtZV0sIHtxdWVyeVBhcmFtczogcXVlcnlQYXJhbXNPYmp9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIExPR0lOX01FVEhPRC5TU086XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU1NPTG9naW4oY29uZmlnLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldExhbmRpbmdQYWdlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBpZiBubyB1c2VyIGZvdW5kLCA0MDEgd2FzIHRocm93biBmb3IgZmlyc3QgdGltZSBsb2dpblxuICAgICAgICAgICAgbG9naW5NZXRob2QgPSBsb2dpbkNvbmZpZy50eXBlLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICBzd2l0Y2ggKGxvZ2luTWV0aG9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBMT0dJTl9NRVRIT0QuRElBTE9HOlxuICAgICAgICAgICAgICAgICAgICAvLyBUaHJvdWdoIGxvZ2luRGlhbG9nLCB1c2VyIHdpbGwgcmVtYWluIGluIHRoZSBjdXJyZW50IHN0YXRlIGFuZCBmYWlsZWQgY2FsbHMgd2lsbCBiZSBleGVjdXRlZCBwb3N0IGxvZ2luIHRocm91Z2ggTG9naW5WYXJpYWJsZVNlcnZpY2UuXG4gICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHVzZXIgd2lsbCBiZSByZWRpcmVjdGVkIHRvIHJlc3BlY3RpdmUgbGFuZGluZyBwYWdlIG9ubHkgaWYgZGlhbG9nIGlzIG9wZW5lZCBtYW51YWxseShub3QgdGhyb3VnaCBhIGZhaWxlZCA0MDEgY2FsbCkuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9SZWRpcmVjdCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93TG9naW5EaWFsb2coKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBMT0dJTl9NRVRIT0QuUEFHRTpcbiAgICAgICAgICAgICAgICAgICAgLy8gZG8gbm90IHByb3ZpZGUgcmVkaXJlY3RUbyBwYWdlIGlmIGZldGNoaW5nIEhPTUUgcGFnZSByZXN1bHRlZCA0MDFcbiAgICAgICAgICAgICAgICAgICAgLy8gb24gYXBwIGxvYWQsIGJ5IGRlZmF1bHQgSG9tZSBwYWdlIGlzIGxvYWRlZFxuICAgICAgICAgICAgICAgICAgICBwYWdlID0gdGhpcy4kc2VjdXJpdHkuZ2V0UmVkaXJlY3RQYWdlKGNvbmZpZywgcGFnZSk7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zT2JqWydyZWRpcmVjdFRvJ10gPSBwYWdlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHRyYVF1ZXJ5UGFyYW1zID0gKG9wdGlvbnMgJiYgb3B0aW9ucy5xdWVyeVBhcmFtcykgfHwgdGhpcy4kc2VjdXJpdHkuZ2V0UmVkaXJlY3RlZFJvdXRlUXVlcnlQYXJhbXMoKTtcbiAgICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNPYmogPSBtZXJnZShxdWVyeVBhcmFtc09iaiwgZXh0cmFRdWVyeVBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHJvdXRlci5uYXZpZ2F0ZShbbG9naW5Db25maWcucGFnZU5hbWVdLCB7cXVlcnlQYXJhbXM6IHF1ZXJ5UGFyYW1zT2JqfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJGFwcC5sYW5kaW5nUGFnZU5hbWUgPSBsb2dpbkNvbmZpZy5wYWdlTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBMT0dJTl9NRVRIT0QuU1NPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNTT0xvZ2luKGNvbmZpZywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBkYXRhIGRlcGVuZGVudCBvbiBsb2dnZWQgaW4gdXNlclxuICAgICAqIFJlbG9hZHMgc2VjdXJpdHkgY29uZmlnLCBtZXRhZGF0YVxuICAgICAqIFVwZGF0ZXMgdGhlIGxvZ2dlZEluVXNlclZhcmlhYmxlXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAgICovXG4gICAgcmVsb2FkQXBwRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZFNlY3VyaXR5Q29uZmlnKHRydWUpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZE1ldGFkYXRhKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVMb2dnZWRJblVzZXJWYXJpYWJsZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJlZm9yZUFwcFJlYWR5KCk7XG4gICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5vUmVkaXJlY3QodmFsdWU/OiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9ub1JlZGlyZWN0O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbm9SZWRpcmVjdCA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdGhpcy5fbm9SZWRpcmVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpbnZva2VzIHNlc3Npb24gZmFpbHVyZSByZXF1ZXN0c1xuICAgICAqL1xuICAgIGV4ZWN1dGVTZXNzaW9uRmFpbHVyZVJlcXVlc3RzKCkge1xuICAgICAgICB0aGlzLiRodHRwLmV4ZWN1dGVTZXNzaW9uRmFpbHVyZVJlcXVlc3RzKCk7XG4gICAgfVxuXG4gICAgcHVzaFRvU2Vzc2lvbkZhaWx1cmVSZXF1ZXN0cyhjYWxsYmFjaykge1xuICAgICAgICB0aGlzLiRodHRwLnB1c2hUb1Nlc3Npb25GYWlsdXJlUXVldWUoY2FsbGJhY2spO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREZXBsb3llZFVSTCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGFwcC5kZXBsb3llZFVybCA/IHRoaXMuJGFwcC5kZXBsb3llZFVybCA6ICRyb290U2NvcGUucHJvamVjdC5kZXBsb3llZFVybDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGZXRjaGVzIHRoZSBjdXN0b211cmxzY2hlbWUgZm9yIGEgbW9iaWxlIGFwcFxuICAgICAqIHdoaWNoIGlzIHVzZWQgZm9yIHJlZGlyZWN0aW9uIGJhY2sgdG8gdGhlIGFwcCBmcm9tIGJyb3dzZXIgaW4gaW1wbGljaXQgb0F1dGggZmxvd1xuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAgICovXG4gICAgcHVibGljIGdldEN1c3RvbVVybFNjaGVtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGFwcC5jdXN0b21VcmxTY2hlbWU7XG4gICAgfVxuXG4gICAgbm90aWZ5KGV2ZW50TmFtZSwgZGF0YSkge1xuICAgICAgICB0aGlzLiRhcHAubm90aWZ5KGV2ZW50TmFtZSwgZGF0YSk7XG4gICAgfVxuXG4gICAgc3Vic2NyaWJlKGV2ZW50TmFtZSwgZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy4kYXBwLnN1YnNjcmliZShldmVudE5hbWUsIGRhdGEpO1xuICAgIH1cblxuICAgIGdldEFjdGl2ZVBhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRhcHAuYWN0aXZlUGFnZTtcbiAgICB9XG5cbiAgICBnZXRBcHBMb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRhcHAuYXBwTG9jYWxlO1xuICAgIH1cblxuICAgIGdldFNlbGVjdGVkTG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kaTE4bi5nZXRTZWxlY3RlZExvY2FsZSgpO1xuICAgIH1cblxuICAgIG5vdGlmeUFwcCh0ZW1wbGF0ZSwgdHlwZSwgdGl0bGU/KSB7XG4gICAgICAgIHRoaXMuJGFwcC5ub3RpZnlBcHAodGVtcGxhdGUsIHR5cGUsIHRpdGxlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VycyB0aGUgb25CZWZvcmVTZXJ2aWNlIG1ldGhvZCBkZWZpbmVkIGluIGFwcC5qcyBvZiB0aGUgYXBwXG4gICAgICogQHBhcmFtIHJlcXVlc3RQYXJhbXNcbiAgICAgKi9cbiAgICBhcHBPbkJlZm9yZVNlcnZpY2VDYWxsKHJlcXVlc3RQYXJhbXM6IGFueSkge1xuICAgICAgICByZXR1cm4gdHJpZ2dlckZuKHRoaXMuJGFwcC5vbkJlZm9yZVNlcnZpY2VDYWxsLCByZXF1ZXN0UGFyYW1zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VycyB0aGUgb25TZXJ2aWNlU3VjY2VzcyBtZXRob2QgZGVmaW5lZCBpbiBhcHAuanMgb2YgdGhlIGFwcFxuICAgICAqIEBwYXJhbSBkYXRhXG4gICAgICogQHBhcmFtIHhock9ialxuICAgICAqL1xuICAgIGFwcE9uU2VydmljZVN1Y2Nlc3MoZGF0YTogYW55LCB4aHJPYmo6IGFueSkge1xuICAgICAgICByZXR1cm4gdHJpZ2dlckZuKHRoaXMuJGFwcC5vblNlcnZpY2VTdWNjZXNzLCBkYXRhLCB4aHJPYmopO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXJzIHRoZSBvblNlcnZpY2VFcnJvciBtZXRob2QgZGVmaW5lZCBpbiBhcHAuanMgb2YgdGhlIGFwcFxuICAgICAqIEBwYXJhbSBkYXRhXG4gICAgICogQHBhcmFtIHhock9iXG4gICAgICovXG4gICAgYXBwT25TZXJ2aWNlRXJyb3IoZGF0YTogYW55LCB4aHJPYj86IGFueSkge1xuICAgICAgICByZXR1cm4gdHJpZ2dlckZuKHRoaXMuJGFwcC5vblNlcnZpY2VFcnJvciwgZGF0YSwgeGhyT2IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXJzIHRoZSBhcHBWYXJpYWJsZXNSZWFkeSBtZXRob2QgZGVmaW5lZCBpbiBhcHAuanMgb2YgdGhlIGFwcFxuICAgICAqL1xuICAgIGFwcFZhcmlhYmxlc1JlYWR5KCkge1xuICAgICAgICB0cmlnZ2VyRm4odGhpcy4kYXBwLm9uQXBwVmFyaWFibGVzUmVhZHkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXJzIHRoZSBvbkJlZm9yZUFwcFJlYWR5IG1ldGhvZCBkZWZpbmVkIGluIGFwcC5qcyBvZiB0aGUgYXBwXG4gICAgICovXG4gICAgYmVmb3JlQXBwUmVhZHkoKSB7XG4gICAgICAgIHJldHVybiB0cmlnZ2VyRm4odGhpcy4kYXBwLm9uQmVmb3JlQXBwUmVhZHkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHBpcGUgYmFzZWQgb24gdGhlIGlucHV0XG4gICAgICovXG4gICAgZ2V0UGlwZShwaXBlKSB7XG4gICAgICAgIGlmIChwaXBlID09PSAnZGF0ZScpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLiRkYXRlUGlwZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TGFuZGluZ1BhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzZWN1cml0eS5nZXRQYWdlQnlMb2dnZWRJblVzZXIoKS50aGVuKHAgPT4gdGhpcy4kYXBwLmxhbmRpbmdQYWdlTmFtZSA9IDxzdHJpbmc+IHApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybiB0cnVlIGlmIHByZWZhYiB0eXBlIGFwcFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIGlzUHJlZmFiVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGFwcC5pc1ByZWZhYlR5cGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJuIHRydWUgaWYgdGVtcGxhdGUgYnVuZGxlIHR5cGUgYXBwXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgaXNUZW1wbGF0ZUJ1bmRsZVR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRhcHAuaXNUZW1wbGF0ZUJ1bmRsZVR5cGU7XG4gICAgfVxuXG4gICAgcG9zdE1lc3NhZ2UoY29udGVudCkge1xuICAgICAgICB3aW5kb3cudG9wLnBvc3RNZXNzYWdlKGNvbnRlbnQsICcqJyk7XG4gICAgfVxuXG4gICAgc2hvd1RlbXBsYXRlKGlkeCkge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMudGVtcGxhdGVzW2lkeF07XG4gICAgICAgIC8vIHNjb3BlLmFjdGl2ZVRlbXBsYXRlSW5kZXggPSBpZHg7XG4gICAgICAgIHRoaXMuJHJvdXRlci5uYXZpZ2F0ZShbdGVtcGxhdGUuaWRdKTtcbiAgICB9XG4gICAgcG9zdFRlbXBsYXRlQnVuZGxlSW5mbygpIHtcblxuICAgICAgICB3aW5kb3cub25tZXNzYWdlID0gKGV2dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbXNnRGF0YSA9IGV2dC5kYXRhO1xuXG4gICAgICAgICAgICBpZiAoIWlzT2JqZWN0KG1zZ0RhdGEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjb25zdCBrZXkgPSBtc2dEYXRhLmtleTtcblxuICAgICAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFBPU1RfTUVTU0FHRVMuSElERV9URU1QTEFURVNfU0hPV19DQVNFOlxuICAgICAgICAgICAgICAgICAgICAvLyBzY29wZS5oaWRlU2hvd0Nhc2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFBPU1RfTUVTU0FHRVMuU0VMRUNUX1RFTVBMQVRFOlxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RlbXBsYXRlKG1zZ0RhdGEudGVtcGxhdGVJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wb3N0TWVzc2FnZSh7a2V5OiBQT1NUX01FU1NBR0VTLk9OX0xPQUR9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZldGNoQ29udGVudCgnanNvbicsICcuL2NvbmZpZy5qc29uJywgdHJ1ZSwgcmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZXMgPSBbXTtcbiAgICAgICAgICAgIGlmICghcmVzcG9uc2UuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlcyA9IHJlc3BvbnNlLnRlbXBsYXRlcztcbiAgICAgICAgICAgICAgICB0aGlzLnBvc3RNZXNzYWdlKHsna2V5JzogUE9TVF9NRVNTQUdFUy5URU1QTEFURUJVTkRMRV9DT05GSUcsICdjb25maWcnOiByZXNwb25zZX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwb3N0QXBwVHlwZUluZm8oKSB7XG4gICAgICAgIGlmICh0aGlzLmlzVGVtcGxhdGVCdW5kbGVUeXBlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBvc3RUZW1wbGF0ZUJ1bmRsZUluZm8oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXRBcHBNb2RlcygpOiB2b2lkIHsgICAgXG4gICAgICAgIC8vIGdldCBtb2RlcyBmcm9tIGxvY2FsIHN0b3JhZ2VcbiAgICAgICAgbGV0IHN0b3JlZE1vZGVzID0gZ2V0TW9kZXNGcm9tTG9jYWxTdG9yYWdlKCk7XG4gICAgICAgIFxuICAgICAgICAvLyBBcHBseSByZXN0b3JlZCBtb2Rlc1xuICAgICAgICB0aGlzLiRhcHAuc2V0TW9kZShzdG9yZWRNb2Rlcyk7XG4gICAgXG4gICAgICAgIC8vIExpc3RlbmVyIGZvciBwb3N0TWVzc2FnZS1iYXNlZCBtb2RlIGNoYW5nZXNcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsga2V5LCBtb2Rlcywgc2hvdWxkUGVyc2lzdCB9ID0gZXZlbnQuZGF0YSB8fCB7fTtcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdzd2l0Y2gtbW9kZScgJiYgbW9kZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRhcHAuc2V0TW9kZShtb2RlcywgIXNob3VsZFBlcnNpc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
495
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvc2VydmljZXMvYXBwLm1hbmFnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUNILFVBQVUsRUFDVixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdEIsR0FBRyxFQUNILFlBQVksRUFDWixzQkFBc0IsRUFDdEIsU0FBUyxFQUNULFNBQVMsRUFDWixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBQyxVQUFVLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzVGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQUV6RCxJQUFLLGFBT0o7QUFQRCxXQUFLLGFBQWE7SUFDZCxzRUFBcUQsQ0FBQTtJQUNyRCxzRUFBcUQsQ0FBQTtJQUNyRCx5REFBaUQsQ0FBQTtJQUNqRCxvREFBNEMsQ0FBQTtJQUM1QyxpRUFBbUQsQ0FBQTtJQUNuRCxvQ0FBb0MsQ0FBQTtBQUN4QyxDQUFDLEVBUEksYUFBYSxLQUFiLGFBQWEsUUFPakI7QUFJRCxNQUFNLE9BQU8saUJB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QUM7WUFDN0MsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0FuaEJRLGlCQUFpQjttSEFBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtcbiAgICAkYXBwRGlnZXN0LFxuICAgIEFic3RyYWN0RGlhbG9nU2VydmljZSxcbiAgICBBYnN0cmFjdEh0dHBTZXJ2aWNlLFxuICAgIEFic3RyYWN0STE4blNlcnZpY2UsXG4gICAgQWJzdHJhY3RTcGlubmVyU2VydmljZSxcbiAgICBBcHAsXG4gICAgZmV0Y2hDb250ZW50LFxuICAgIGdldFdtUHJvamVjdFByb3BlcnRpZXMsXG4gICAgaXNEZWZpbmVkLFxuICAgIHRyaWdnZXJGblxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge1NlY3VyaXR5U2VydmljZX0gZnJvbSAnQHdtL3NlY3VyaXR5JztcbmltcG9ydCB7JHJvb3RTY29wZSwgTWV0YWRhdGFTZXJ2aWNlLCBWYXJpYWJsZXNTZXJ2aWNlfSBmcm9tICdAd20vdmFyaWFibGVzJztcbmltcG9ydCB7ZXh0ZW5kLCBmb3JFYWNoLCBnZXQsIGlzRW1wdHksIGlzT2JqZWN0LCBpc1VuZGVmaW5lZCwgbWVyZ2UsIHRyaW19IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IGdldE1vZGVzRnJvbUxvY2FsU3RvcmFnZSB9IGZyb20gJy4uL3B1YmxpY19hcGknO1xuXG5lbnVtIFBPU1RfTUVTU0FHRVMge1xuICAgIEhJREVfVEVNUExBVEVTX1NIT1dfQ0FTRSA9ICdoaWRlLXRlbXBsYXRlcy1zaG93LWNhc2UnLFxuICAgIFNIT1dfVEVNUExBVEVTX1NIT1dfQ0FTRSA9ICdzaG93LXRlbXBsYXRlcy1zaG93LWNhc2UnLFxuICAgIFVQREFURV9MT0NBVElPTiAgICAgICAgICA9ICd1cGRhdGUtbG9jYXRpb24tcGF0aCcsXG4gICAgU0VMRUNUX1RFTVBMQVRFICAgICAgICAgID0gJ3NlbGVjdC10ZW1wbGF0ZScsXG4gICAgVEVNUExBVEVCVU5ETEVfQ09ORklHICAgID0gJ3RlbXBsYXRlLWJ1bmRsZS1jb25maWcnLFxuICAgIE9OX0xPQUQgICAgICAgICAgICAgICAgICA9ICdvbi1sb2FkJ1xufVxuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBcHBNYW5hZ2VyU2VydmljZSB7XG4gICAgc3RhdGljIHJlYWRvbmx5IFNFUlZJQ0VfTkFNRSA9ICdBcHBNYW5hZ2VyU2VydmljZSc7XG5cbiAgICBwcml2YXRlIGFwcFZhcmlhYmxlc0xvYWRlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgYXBwVmFyaWFibGVzRmlyZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9ub1JlZGlyZWN0ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZXM6IEFycmF5PGFueT47XG4gICAgcHJpdmF0ZSBsYXN0TG9nZ2VkVXNlcklkO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgJGh0dHA6IEFic3RyYWN0SHR0cFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgJHNlY3VyaXR5OiBTZWN1cml0eVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgJGRpYWxvZzogQWJzdHJhY3REaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlICRyb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSAkYXBwOiBBcHAsXG4gICAgICAgIHByaXZhdGUgJHZhcmlhYmxlczogVmFyaWFibGVzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkbWV0YWRhdGE6IE1ldGFkYXRhU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkc3Bpbm5lcjogQWJzdHJhY3RTcGlubmVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkaTE4bjogQWJzdHJhY3RJMThuU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkZGF0ZVBpcGU6IERhdGVQaXBlLFxuICAgICkge1xuICAgICAgICAvLyByZWdpc3RlciBtZXRob2QgdG8gaW52b2tlIG9uIHNlc3Npb24gdGltZW91dFxuICAgICAgICB0aGlzLiRodHRwLnJlZ2lzdGVyT25TZXNzaW9uVGltZW91dCh0aGlzLmhhbmRsZTQwMS5iaW5kKHRoaXMpKTtcblxuICAgICAgICB0aGlzLiR2YXJpYWJsZXMucmVnaXN0ZXJEZXBlbmRlbmN5KCdhcHBNYW5hZ2VyJywgdGhpcyk7XG5cbiAgICAgICAgdGhpcy4kYXBwLnN1YnNjcmliZSgndG9nZ2xlLXZhcmlhYmxlLXN0YXRlJywgKGRhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlID0gZGF0YS52YXJpYWJsZSxcbiAgICAgICAgICAgICAgICBhY3RpdmUgPSBkYXRhLmFjdGl2ZTtcbiAgICAgICAgICAgIGlmICghaXNFbXB0eSh0cmltKHZhcmlhYmxlLnNwaW5uZXJDb250ZXh0KSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzcGlubmVyRXhpc3RzO1xuICAgICAgICAgICAgICAgICAgICAvLyBXTVMtMjExMTcgOiBEbyBub3QgdHJpZ2dlciBzcGlubmVyLCBpZiB0aGUgY3VycmVudCB2YXJpYWJsZSBpcyBzYW1lIGFzIHNwaW5uZXIgd2hpY2ggaXMgaW4gY29udGV4dFxuICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFibGUuX3NwaW5uZXJJZCAmJiB2YXJpYWJsZS5fc3Bpbm5lcklkLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yRWFjaCh2YXJpYWJsZS5fc3Bpbm5lcklkLCAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLnNsaWNlKDAsIGl0ZW0ubGFzdEluZGV4T2YoJ18nKSkgPT09IHZhcmlhYmxlLl9pZCAmJiAodGhpcy4kc3Bpbm5lciBhcyBhbnkpLm1lc3NhZ2VzQnlDb250ZXh0ICYmICh0aGlzLiRzcGlubmVyIGFzIGFueSkubWVzc2FnZXNCeUNvbnRleHRbdmFyaWFibGUuc3Bpbm5lckNvbnRleHRdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YXJpYWJsZS5zcGlubmVyTWVzc2FnZSA9PT0gKHRoaXMuJHNwaW5uZXIgYXMgYW55KS5tZXNzYWdlc0J5Q29udGV4dFt2YXJpYWJsZS5zcGlubmVyQ29udGV4dF1bXCJmaW5hbE1lc3NhZ2VcIl0gfHwgdmFyaWFibGUuc3Bpbm5lck1lc3NhZ2UgPT09ICh0aGlzLiRzcGlubmVyIGFzIGFueSkubWVzc2FnZXNCeUNvbnRleHRbdmFyaWFibGUuc3Bpbm5lckNvbnRleHRdW2l0ZW1dKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGlubmVyRXhpc3RzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghc3Bpbm5lckV4aXN0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuX3NwaW5uZXJJZCA9IHZhcmlhYmxlLl9zcGlubmVySWQgfHwgW107XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGlubmVySWQgPSB0aGlzLiRzcGlubmVyLnNob3codmFyaWFibGUuc3Bpbm5lck1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuX2lkICsgJ18nICsgRGF0ZS5ub3coKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS5zcGlubmVyY2xhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuc3Bpbm5lckNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuX3NwaW5uZXJJZC5wdXNoKHNwaW5uZXJJZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRzcGlubmVyLmhpZGUodmFyaWFibGUuX3NwaW5uZXJJZC5zaGlmdCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLiRhcHAuc3Vic2NyaWJlKCd1c2VyTG9nZ2VkSW4nLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldExhbmRpbmdQYWdlKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXN0TG9nZ2VkVXNlcklkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kc2VjdXJpdHkuZ2V0Q29uZmlnKGNvbmZpZyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmKGNvbmZpZyAmJiBjb25maWcudXNlckluZm8udXNlcklkICE9PSB0aGlzLmxhc3RMb2dnZWRVc2VySWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGFwcC5jbGVhclBhZ2VDYWNoZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLiRhcHAuc3Vic2NyaWJlKCd1c2VyTG9nZ2VkT3V0JywgKCkgPT4gdGhpcy5zZXRMYW5kaW5nUGFnZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4kYXBwLmNsZWFyUGFnZUNhY2hlKCk7XG4gICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy4kYXBwLnN1YnNjcmliZSgnaHR0cDQwMScsIChkID0ge30pID0+IHRoaXMuaGFuZGxlNDAxKGQucGFnZSwgZC5vcHRpb25zKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT24gc2Vzc2lvbiB0aW1lb3V0LCBpZiB0aGUgc2Vzc2lvbiB0aW1lb3V0IGNvbmZpZyBpcyBzZXQgdG8gYSBkaWFsb2csIHRoZW4gb3BlbiBsb2dpbiBkaWFsb2dcbiAgICAgKi9cbiAgICBwcml2YXRlIHNob3dMb2dpbkRpYWxvZygpIHtcbiAgICAgICAgdGhpcy4kc3Bpbm5lci5oaWRlKCdnbG9iYWxTcGlubmVyJyk7XG4gICAgICAgIC8vIFJlbW92aW5nIHRoZSBjbG9zZSBhbGwgZGlhbG9ncyBjYWxsLCBzbyB0aGUgZXhpc3RpbmcgZGlhbG9ncyByZW1haW4gb3BlbiBhbmRcbiAgICAgICAgLy8gdGhlIGxvZ2luIGRpYWxvZyBjb21lcyBvbiB0b3Agb2YgaXQuXG4gICAgICAgIHRoaXMuJGRpYWxvZy5vcGVuKCdDb21tb25Mb2dpbkRpYWxvZycpO1xuICAgICAgICAvLyBTaW5jZSB0aGUgbG9naW4gZGlhbG9nIGlzIGNsb3NlZCBhbmQgb3BlbmVkIGl0cyB1cGRhdGVkIHByb3BlcnR5IGlzbid0IHJlYWQgYnkgYW5ndWxhci5cbiAgICAgICAgLy8gSGVuY2Ugd2UgdHJpZ2dlciB0aGUgZGlnZXN0IGN5Y2xlXG4gICAgICAgICRhcHBEaWdlc3QoKTtcbiAgICB9XG5cbiAgICBsb2FkQXBwSlMoKSB7XG5cbiAgICB9XG5cbiAgICBsb2FkQ29tbW9uUGFnZSgpIHtcblxuICAgIH1cblxuICAgIGxvYWRTZWN1cml0eUNvbmZpZyhmb3JjZUZsYWc/OiBib29sZWFuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzZWN1cml0eS5sb2FkKGZvcmNlRmxhZykudGhlbigocikgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLiRhcHAubGFuZGluZ1BhZ2VOYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRMYW5kaW5nUGFnZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGxvYWRNZXRhZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJG1ldGFkYXRhLmxvYWQoKTtcbiAgICB9XG5cbiAgICBsb2FkQXBwVmFyaWFibGVzKHZhcmlhYmxlcz86IGFueSkge1xuICAgICAgICBpZiAodGhpcy5hcHBWYXJpYWJsZXNMb2FkZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGluaXQgPSByZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy4kdmFyaWFibGVzLnJlZ2lzdGVyKCdhcHAnLCByZXNwb25zZSwgdGhpcy4kYXBwKTtcbiAgICAgICAgICAgIC8vIG5vdCBhc3NpZ25pbmcgZGlyZWN0bHkgdG8gdGhpcy4kYXBwIHRvIGtlZXAgdGhlIHJlZmVyZW5jZSBpbiB0YWN0XG4gICAgICAgICAgICBleHRlbmQodGhpcy4kYXBwLlZhcmlhYmxlcywgZGF0YS5WYXJpYWJsZXMpO1xuICAgICAgICAgICAgZXh0ZW5kKHRoaXMuJGFwcC5BY3Rpb25zLCBkYXRhLkFjdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMb2dnZWRJblVzZXJWYXJpYWJsZSgpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdXBwb3J0ZWRMb2NhbGVWYXJpYWJsZSgpO1xuICAgICAgICAgICAgdGhpcy5hcHBWYXJpYWJsZXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5hcHBWYXJpYWJsZXNGaXJlZCA9IGZhbHNlO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChpc0RlZmluZWQodmFyaWFibGVzKSkge1xuICAgICAgICAgICAgaW5pdCh2YXJpYWJsZXMpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuJGh0dHAuZ2V0KCcuL2FwcC52YXJpYWJsZXMuanNvbicpLnRoZW4ocmVzcG9uc2UgPT4gaW5pdChyZXNwb25zZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldHRlciBhbmQgc2V0dGVyIGZvciB0aGUgcHJvcGVydHkgYXBwVmFyaWFibGVzRmlyZWRcbiAgICAgKiB0aGlzIGZsYWcgZGV0ZXJtaW5lcyBpZiB0aGUgYXBwIHZhcmlhYmxlcyh3aXRoIHN0YXJ0VXBkYXRlOnRydWUpIGhhdmUgYmVlbiBmaXJlZFxuICAgICAqIHRoZXkgc2hvdWxkIGdldCBmaXJlZCBvbmx5IG9uY2UgdGhyb3VnaCBhcHAgbGlmZWN5Y2xlXG4gICAgICogQHBhcmFtIHtib29sZWFufSBpc0ZpcmVkXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgaXNBcHBWYXJpYWJsZXNGaXJlZChpc0ZpcmVkPzogYm9vbGVhbikge1xuICAgICAgICBpZiAoaXNEZWZpbmVkKGlzRmlyZWQpKSB7XG4gICAgICAgICAgICB0aGlzLmFwcFZhcmlhYmxlc0ZpcmVkID0gaXNGaXJlZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5hcHBWYXJpYWJsZXNGaXJlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyTG9nZ2VkSW5Vc2VyVmFyaWFibGUodmFyaWFibGUpIHtcbiAgICAgICAgdmFyaWFibGUuaXNBdXRoZW50aWNhdGVkID0gZmFsc2U7XG4gICAgICAgIHZhcmlhYmxlLnJvbGVzICAgICAgICAgICA9IFtdO1xuICAgICAgICB2YXJpYWJsZS5uYW1lICAgICAgICAgICAgPSB1bmRlZmluZWQ7XG4gICAgICAgIHZhcmlhYmxlLmlkICAgICAgICAgICAgICA9IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyaWFibGUudGVuYW50SWQgICAgICAgID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTG9nZ2VkSW5Vc2VyVmFyaWFibGUoKSB7XG4gICAgICAgIGNvbnN0IGxvZ2dlZEluVXNlciA9IGdldCh0aGlzLiRhcHAsICdWYXJpYWJsZXMubG9nZ2VkSW5Vc2VyLmRhdGFTZXQnKTtcblxuICAgICAgICAvLyBzYW5pdHkgY2hlY2tcbiAgICAgICAgaWYgKCFsb2dnZWRJblVzZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy4kc2VjdXJpdHkubG9hZCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VjdXJpdHlDb25maWcgPSB0aGlzLiRzZWN1cml0eS5nZXQoKTtcbiAgICAgICAgICAgIGlmIChzZWN1cml0eUNvbmZpZyAmJiBzZWN1cml0eUNvbmZpZy5zZWN1cml0eUVuYWJsZWQgJiYgc2VjdXJpdHlDb25maWcuYXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgICAgIGxvZ2dlZEluVXNlci5pc0F1dGhlbnRpY2F0ZWQgPSBzZWN1cml0eUNvbmZpZy5hdXRoZW50aWNhdGVkO1xuICAgICAgICAgICAgICAgIGxvZ2dlZEluVXNlci5yb2xlcyAgICAgICAgICAgPSBzZWN1cml0eUNvbmZpZy51c2VySW5mby51c2VyUm9sZXM7XG4gICAgICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLm5hbWUgICAgICAgICAgICA9IHNlY3VyaXR5Q29uZmlnLnVzZXJJbmZvLnVzZXJOYW1lO1xuICAgICAgICAgICAgICAgIGxvZ2dlZEluVXNlci5pZCAgICAgICAgICAgICAgPSBzZWN1cml0eUNvbmZpZy51c2VySW5mby51c2VySWQ7XG4gICAgICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLnRlbmFudElkICAgICAgICA9IHNlY3VyaXR5Q29uZmlnLnVzZXJJbmZvLnRlbmFudElkO1xuICAgICAgICAgICAgICAgIGxvZ2dlZEluVXNlci51c2VyQXR0cmlidXRlcyAgPSBzZWN1cml0eUNvbmZpZy51c2VySW5mby51c2VyQXR0cmlidXRlczsgLy8gYXNzaWduIHRoZSBleHRyYSB1c2VyQXR0cmlidXRlcyBmb3IgY3VzdG9tIHVzYWdlLlxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyTG9nZ2VkSW5Vc2VyVmFyaWFibGUobG9nZ2VkSW5Vc2VyKTtcbiAgICAgICAgICAgICAgICBsb2dnZWRJblVzZXIuaXNTZWN1cml0eUVuYWJsZWQgPSBzZWN1cml0eUNvbmZpZyAmJiBzZWN1cml0eUNvbmZpZy5zZWN1cml0eUVuYWJsZWQ7XG4gICAgICAgICAgICAgICAgdGhyb3cgbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzZWN1cml0eUNvbmZpZztcbiAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGxvZ2dlZEluVXNlci5pc0F1dGhlbnRpY2F0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGxvZ2dlZEluVXNlci5yb2xlcyAgICAgICAgICAgPSBbXTtcbiAgICAgICAgICAgIGxvZ2dlZEluVXNlci5uYW1lICAgICAgICAgICAgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBsb2dnZWRJblVzZXIuaWQgICAgICAgICAgICAgID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLnRlbmFudElkICAgICAgICA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGxvZ2dlZEluVXNlci51c2VyQXR0cmlidXRlcyAgPSB7fTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGluZyB0aGUgYXBwIHZhcmlhYmxlIHN1cHBvcnRlZCBsb2NhbGUgd2l0aCB0aGUgd21Qcm9wZXJ0aWVzIGkxOG4gRGF0YVZhbHVlc1xuICAgICAqXG4gICAgICogVE9ET1tWaWJodV06XG4gICAgICogQ2FuIHdyaXRlIGEgc2ltcGxlIG1pZ3JhdGlvbiB0byBzeW5jIHRoZSBzdXBwb3J0ZWRMb2NhbGUgdmFyaWFibGUgd2l0aCAnX1dNX0FQUF9QUk9QRVJUSUVTLnN1cHBvcnRlZExhbmd1YWdlcydcbiAgICAgKiBIZW5jZSwgdGhpcyBtYXkgbm90IGJlIHJlcXVpcmVkXG4gICAgICpcbiAgICAgKi9cbiAgICB1cGRhdGVTdXBwb3J0ZWRMb2NhbGVWYXJpYWJsZSgpIHtcbiAgICAgICAgY29uc3Qgc3VwcG9ydGVkTG9jYWxlVmFyID0gZ2V0KHRoaXMuJGFwcCwgJ1ZhcmlhYmxlcy5zdXBwb3J0ZWRMb2NhbGUnKTtcbiAgICB9XG5cbiAgICBoYW5kbGVTU09Mb2dpbihjb25maWcsIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgU1NPX1VSTCA9ICdzZXJ2aWNlcy9zZWN1cml0eS9zc29sb2dpbicsXG4gICAgICAgICAgICBQUkVWSUVXX1dJTkRPV19OQU1FID0gJ1dNX1BSRVZJRVdfV0lORE9XJztcbiAgICAgICAgbGV0IHBhZ2UgPSAnJyxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zO1xuXG4gICAgICAgIC8vIGRvIG5vdCBwcm92aWRlIHJlZGlyZWN0VG8gcGFnZSBpZiBmZXRjaGluZyBIT01FIHBhZ2UgcmVzdWx0ZWQgNDAxXG4gICAgICAgIC8vIG9uIGFwcCBsb2FkLCBieSBkZWZhdWx0IEhvbWUgcGFnZSBpcyBsb2FkZWRcblxuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAqIEZvciBwcmV2aWV3LCB0aGlzLiRzZWN1cml0eS5nZXRSZWRpcmVjdGVkUm91dGVRdWVyeVBhcmFtcygpIGdldHMgdGhlIHF1ZXJ5cGFyYW1zIGZvcm0gdGhlIGFjdGl2YXRlZCByb3V0ZShwYWdld3JhcHBlcmNvbXBvbmVudClcbiAgICAgICAgICAgICAqIEZvciBkZXBsb3llZCBhcHAsIGNhbmFjdGl2YXRlIGd1YXJkIHJlc29sdmVkIHRvIGZhbHNlIGFuZCBnZXRzIHRoZSBxdWVyeXBhcmFtcyBmcm9tIHRoZSBjYW5hY3RpdmF0ZSBndXJhcmQobm8gYWN0aXZlIHJvdXRlIGNvbXBvbmVudClcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcXVlcnlQYXJhbXMgPSAob3B0aW9ucyAmJiBvcHRpb25zLnF1ZXJ5UGFyYW1zKSB8fCB0aGlzLiRzZWN1cml0eS5nZXRSZWRpcmVjdGVkUm91dGVRdWVyeVBhcmFtcygpO1xuICAgICAgICAgICAgcXVlcnlQYXJhbXMgPSB0aGlzLiRzZWN1cml0eS5nZXRRdWVyeVN0cmluZyhxdWVyeVBhcmFtcyk7XG4gICAgICAgICAgICBxdWVyeVBhcmFtcyA9IHF1ZXJ5UGFyYW1zID8gJz8nICsgcXVlcnlQYXJhbXMgOiAnJztcblxuICAgICAgICAgICAgY29uc3QgcmVkaXJlY3RQYWdlID0gdGhpcy4kc2VjdXJpdHkuZ2V0Q3VycmVudFJvdXRlUGFnZSgpO1xuICAgICAgICAgICAgY29uc3QgaG9tZVBhZ2UgPSBnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkuaG9tZVBhZ2U7XG4gICAgICAgICAgICBpZiAocmVkaXJlY3RQYWdlICYmIChyZWRpcmVjdFBhZ2UgIT09IGhvbWVQYWdlIHx8ICEhcXVlcnlQYXJhbXMpKSB7XG4gICAgICAgICAgICAgICAgcGFnZSA9ICc/cmVkaXJlY3RQYWdlPScgKyBlbmNvZGVVUklDb21wb25lbnQocmVkaXJlY3RQYWdlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gc2hvd2luZyBhIHJlZGlyZWN0aW5nIG1lc3NhZ2VcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkudGV4dENvbnRlbnQgPSBnZXQodGhpcy5nZXRBcHBMb2NhbGUoKSwgWydNRVNTQUdFX0xPR0lOX1JFRElSRUNUSU9OJ10pIHx8ICdSZWRpcmVjdGluZyB0byBzc28gbG9naW4uLi4nO1xuICAgICAgICAgICAgLy8gYXBwZW5kaW5nIHJlZGlyZWN0IHRvIHBhZ2UgYW5kIHBhZ2UgcGFyYW1zXG4gICAgICAgICAgICBjb25zdCBzc29VcmwgPSB0aGlzLmdldERlcGxveWVkVVJMKCkgKyBTU09fVVJMICsgcGFnZSArIHF1ZXJ5UGFyYW1zO1xuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAqIHJlbW92ZSBpRnJhbWUgd2hlbiByZWRpcmVjdGVkIHRvIElkUCBsb2dpbiBwYWdlLlxuICAgICAgICAgICAgICogdGhpcyBpcyBiZWluZyBkb25lIGFzIElEUHMgZG8gbm90IGFsbG93IHRvIGdldCB0aGVtc2VsdmVzIGxvYWRlZCBpbnRvIGlGcmFtZXMuXG4gICAgICAgICAgICAgKiByZW1vdmUtdG9vbGJhciBoYXMgYmVlbiBhc3NpZ25lZCB3aXRoIGEgd2luZG93IG5hbWUgV01fUFJFVklFV19XSU5ET1csIGNoZWNrIGlmIHRoZSBpZnJhbWUgaXMgb3VyIHRvb2xiYXIgcmVsYXRlZCBhbmRcbiAgICAgICAgICAgICAqIHNhZmVseSBjaGFuZ2UgdGhlIGxvY2F0aW9uIG9mIHRoZSBwYXJlbnQgdG9vbGJhciB3aXRoIGN1cnJlbnQgdXJsLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpZiAod2luZG93LnNlbGYgIT09IHdpbmRvdy50b3ApIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LnBhcmVudCAmJiB3aW5kb3cubG9jYXRpb24ub3JpZ2luID09PSB3aW5kb3cucGFyZW50Lm9yaWdpbil7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cucGFyZW50Lm5hbWUgPT09IFBSRVZJRVdfV0lORE9XX05BTUUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cucGFyZW50LmxvY2F0aW9uLmhyZWYgPSB3aW5kb3cuc2VsZi5sb2NhdGlvbi5ocmVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5wYXJlbnQubmFtZSA9IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gc3NvVXJsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHNzb1VybDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gc3NvVXJsO1xuICAgICAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgdGhlIGFwcCB3aGVuIGEgWEhSIHJlcXVlc3QgcmV0dXJucyA0MDEgcmVzcG9uc2VcbiAgICAgKiBJZiBubyB1c2VyIHdhcyBsb2dnZWQgaW4gYmVmb3JlIDQwMSBvY2N1cnJlZCwgRmlyc3QgdGltZSBMb2dpbiBpcyBzaW11bGF0ZWRcbiAgICAgKiBFbHNlLCBhIHNlc3Npb24gdGltZW91dCBoYXMgb2NjdXJyZWQgYW5kIHRoZSBzYW1lIGlzIHNpbXVsYXRlZFxuICAgICAqIEBwYXJhbSBwYWdlICBpZiBwcm92aWRlZCwgcmVwcmVzZW50cyB0aGUgcGFnZSBuYW1lIGZvciB3aGljaCBYSFIgcmVxdWVzdCByZXR1cm5lZCA0MDEsIG9uIHJlLWxvZ2luXG4gICAgICogICAgICAgICAgICAgIGlmIG5vdCBwcm92aWRlZCwgYSBzZXJ2aWNlIHJlcXVlc3QgcmV0dXJuZWQgNDAxXG4gICAgICogQHBhcmFtIG9uU3VjY2VzcyBzdWNjZXNzIGhhbmRsZXJcbiAgICAgKiBAcGFyYW0gb25FcnJvciBlcnJvciBoYW5kbGVyXG4gICAgICovXG4gICAgaGFuZGxlNDAxKHBhZ2U/LCBvcHRpb25zPykge1xuICAgICAgICBsZXQgc2Vzc2lvblRpbWVvdXRDb25maWcsXG4gICAgICAgICAgICBzZXNzaW9uVGltZW91dE1ldGhvZCxcbiAgICAgICAgICAgIGxvZ2luQ29uZmlnLFxuICAgICAgICAgICAgbG9naW5NZXRob2Q7XG4gICAgICAgIGNvbnN0IExPR0lOX01FVEhPRCA9IHtcbiAgICAgICAgICAgICAgICAnRElBTE9HJyA6ICdESUFMT0cnLFxuICAgICAgICAgICAgICAgICdQQUdFJyAgIDogJ1BBR0UnLFxuICAgICAgICAgICAgICAgICdTU08nICAgIDogJ1NTTydcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy4kc2VjdXJpdHkuZ2V0KCk7XG4gICAgICAgIGxldCBxdWVyeVBhcmFtc09iaiA9IHt9O1xuICAgICAgICBsb2dpbkNvbmZpZyA9IGNvbmZpZy5sb2dpbkNvbmZpZztcbiAgICAgICAgdGhpcy5sYXN0TG9nZ2VkVXNlcklkID0gY29uZmlnLnVzZXJJbmZvICYmIGNvbmZpZy51c2VySW5mby51c2VySWQ7XG4gICAgICAgIC8vIGlmIHVzZXIgZm91bmQsIDQwMSB3YXMgdGhyb3duIGFmdGVyIHNlc3Npb24gdGltZVxuICAgICAgICBpZiAoY29uZmlnLnVzZXJJbmZvICYmIGNvbmZpZy51c2VySW5mby51c2VyTmFtZSkge1xuICAgICAgICAgICAgY29uZmlnLmF1dGhlbnRpY2F0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHNlc3Npb25UaW1lb3V0Q29uZmlnID0gbG9naW5Db25maWcuc2Vzc2lvblRpbWVvdXQgfHwgeyd0eXBlJzogTE9HSU5fTUVUSE9ELkRJQUxPR307XG4gICAgICAgICAgICBzZXNzaW9uVGltZW91dE1ldGhvZCA9IHNlc3Npb25UaW1lb3V0Q29uZmlnLnR5cGUudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIHN3aXRjaCAoc2Vzc2lvblRpbWVvdXRNZXRob2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlIExPR0lOX01FVEhPRC5ESUFMT0c6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0xvZ2luRGlhbG9nKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTE9HSU5fTUVUSE9ELlBBR0U6XG4gICAgICAgICAgICAgICAgICAgIGlmICghcGFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZSA9IHRoaXMuJHNlY3VyaXR5LmdldEN1cnJlbnRSb3V0ZVBhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc09ialsncmVkaXJlY3RUbyddID0gcGFnZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gQWRkaW5nIHF1ZXJ5IHBhcmFtcyhwYWdlIHBhcmFtcyBvZiBwYWdlIGJlaW5nIHJlZGlyZWN0ZWQgdG8pIHRvIHRoZSBVUkwuXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zT2JqID0gbWVyZ2UocXVlcnlQYXJhbXNPYmosIHRoaXMuJHNlY3VyaXR5LmdldFJlZGlyZWN0ZWRSb3V0ZVF1ZXJ5UGFyYW1zKCkpO1xuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcmVkaXJlY3QgcGFnZSBzaG91bGQgbm90IGJlIHNhbWUgYXMgc2Vzc2lvbiB0aW1lb3V0IGxvZ2luIHBhZ2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBwYWdlICE9PSBzZXNzaW9uVGltZW91dENvbmZpZy5wYWdlTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kcm91dGVyLm5hdmlnYXRlKFtzZXNzaW9uVGltZW91dENvbmZpZy5wYWdlTmFtZV0sIHtxdWVyeVBhcmFtczogcXVlcnlQYXJhbXNPYmp9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIExPR0lOX01FVEhPRC5TU086XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU1NPTG9naW4oY29uZmlnLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldExhbmRpbmdQYWdlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBpZiBubyB1c2VyIGZvdW5kLCA0MDEgd2FzIHRocm93biBmb3IgZmlyc3QgdGltZSBsb2dpblxuICAgICAgICAgICAgbG9naW5NZXRob2QgPSBsb2dpbkNvbmZpZy50eXBlLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICBzd2l0Y2ggKGxvZ2luTWV0aG9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBMT0dJTl9NRVRIT0QuRElBTE9HOlxuICAgICAgICAgICAgICAgICAgICAvLyBUaHJvdWdoIGxvZ2luRGlhbG9nLCB1c2VyIHdpbGwgcmVtYWluIGluIHRoZSBjdXJyZW50IHN0YXRlIGFuZCBmYWlsZWQgY2FsbHMgd2lsbCBiZSBleGVjdXRlZCBwb3N0IGxvZ2luIHRocm91Z2ggTG9naW5WYXJpYWJsZVNlcnZpY2UuXG4gICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHVzZXIgd2lsbCBiZSByZWRpcmVjdGVkIHRvIHJlc3BlY3RpdmUgbGFuZGluZyBwYWdlIG9ubHkgaWYgZGlhbG9nIGlzIG9wZW5lZCBtYW51YWxseShub3QgdGhyb3VnaCBhIGZhaWxlZCA0MDEgY2FsbCkuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9SZWRpcmVjdCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93TG9naW5EaWFsb2coKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBMT0dJTl9NRVRIT0QuUEFHRTpcbiAgICAgICAgICAgICAgICAgICAgLy8gZG8gbm90IHByb3ZpZGUgcmVkaXJlY3RUbyBwYWdlIGlmIGZldGNoaW5nIEhPTUUgcGFnZSByZXN1bHRlZCA0MDFcbiAgICAgICAgICAgICAgICAgICAgLy8gb24gYXBwIGxvYWQsIGJ5IGRlZmF1bHQgSG9tZSBwYWdlIGlzIGxvYWRlZFxuICAgICAgICAgICAgICAgICAgICBwYWdlID0gdGhpcy4kc2VjdXJpdHkuZ2V0UmVkaXJlY3RQYWdlKGNvbmZpZywgcGFnZSk7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zT2JqWydyZWRpcmVjdFRvJ10gPSBwYWdlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHRyYVF1ZXJ5UGFyYW1zID0gKG9wdGlvbnMgJiYgb3B0aW9ucy5xdWVyeVBhcmFtcykgfHwgdGhpcy4kc2VjdXJpdHkuZ2V0UmVkaXJlY3RlZFJvdXRlUXVlcnlQYXJhbXMoKTtcbiAgICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNPYmogPSBtZXJnZShxdWVyeVBhcmFtc09iaiwgZXh0cmFRdWVyeVBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHJvdXRlci5uYXZpZ2F0ZShbbG9naW5Db25maWcucGFnZU5hbWVdLCB7cXVlcnlQYXJhbXM6IHF1ZXJ5UGFyYW1zT2JqfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJGFwcC5sYW5kaW5nUGFnZU5hbWUgPSBsb2dpbkNvbmZpZy5wYWdlTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBMT0dJTl9NRVRIT0QuU1NPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNTT0xvZ2luKGNvbmZpZywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBkYXRhIGRlcGVuZGVudCBvbiBsb2dnZWQgaW4gdXNlclxuICAgICAqIFJlbG9hZHMgc2VjdXJpdHkgY29uZmlnLCBtZXRhZGF0YVxuICAgICAqIFVwZGF0ZXMgdGhlIGxvZ2dlZEluVXNlclZhcmlhYmxlXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAgICovXG4gICAgcmVsb2FkQXBwRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZFNlY3VyaXR5Q29uZmlnKHRydWUpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZE1ldGFkYXRhKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlTG9nZ2VkSW5Vc2VyVmFyaWFibGUoKS50aGVuKChjb25maWcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmJlZm9yZUFwcFJlYWR5KCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBQcm9taXNlLnJlc29sdmUoY29uZmlnKSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9IFxuXG4gICAgbm9SZWRpcmVjdCh2YWx1ZT86IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX25vUmVkaXJlY3Q7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9ub1JlZGlyZWN0ID0gdmFsdWU7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub1JlZGlyZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGludm9rZXMgc2Vzc2lvbiBmYWlsdXJlIHJlcXVlc3RzXG4gICAgICovXG4gICAgZXhlY3V0ZVNlc3Npb25GYWlsdXJlUmVxdWVzdHMoKSB7XG4gICAgICAgIHRoaXMuJGh0dHAuZXhlY3V0ZVNlc3Npb25GYWlsdXJlUmVxdWVzdHMoKTtcbiAgICB9XG5cbiAgICBwdXNoVG9TZXNzaW9uRmFpbHVyZVJlcXVlc3RzKGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuJGh0dHAucHVzaFRvU2Vzc2lvbkZhaWx1cmVRdWV1ZShjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERlcGxveWVkVVJMKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kYXBwLmRlcGxveWVkVXJsID8gdGhpcy4kYXBwLmRlcGxveWVkVXJsIDogJHJvb3RTY29wZS5wcm9qZWN0LmRlcGxveWVkVXJsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZldGNoZXMgdGhlIGN1c3RvbXVybHNjaGVtZSBmb3IgYSBtb2JpbGUgYXBwXG4gICAgICogd2hpY2ggaXMgdXNlZCBmb3IgcmVkaXJlY3Rpb24gYmFjayB0byB0aGUgYXBwIGZyb20gYnJvd3NlciBpbiBpbXBsaWNpdCBvQXV0aCBmbG93XG4gICAgICogQHJldHVybnMge3N0cmluZ31cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q3VzdG9tVXJsU2NoZW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kYXBwLmN1c3RvbVVybFNjaGVtZTtcbiAgICB9XG5cbiAgICBub3RpZnkoZXZlbnROYW1lLCBkYXRhKSB7XG4gICAgICAgIHRoaXMuJGFwcC5ub3RpZnkoZXZlbnROYW1lLCBkYXRhKTtcbiAgICB9XG5cbiAgICBzdWJzY3JpYmUoZXZlbnROYW1lLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRhcHAuc3Vic2NyaWJlKGV2ZW50TmFtZSwgZGF0YSk7XG4gICAgfVxuXG4gICAgZ2V0QWN0aXZlUGFnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGFwcC5hY3RpdmVQYWdlO1xuICAgIH1cblxuICAgIGdldEFwcExvY2FsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGFwcC5hcHBMb2NhbGU7XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0ZWRMb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRpMThuLmdldFNlbGVjdGVkTG9jYWxlKCk7XG4gICAgfVxuXG4gICAgbm90aWZ5QXBwKHRlbXBsYXRlLCB0eXBlLCB0aXRsZT8pIHtcbiAgICAgICAgdGhpcy4kYXBwLm5vdGlmeUFwcCh0ZW1wbGF0ZSwgdHlwZSwgdGl0bGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXJzIHRoZSBvbkJlZm9yZVNlcnZpY2UgbWV0aG9kIGRlZmluZWQgaW4gYXBwLmpzIG9mIHRoZSBhcHBcbiAgICAgKiBAcGFyYW0gcmVxdWVzdFBhcmFtc1xuICAgICAqL1xuICAgIGFwcE9uQmVmb3JlU2VydmljZUNhbGwocmVxdWVzdFBhcmFtczogYW55KSB7XG4gICAgICAgIHJldHVybiB0cmlnZ2VyRm4odGhpcy4kYXBwLm9uQmVmb3JlU2VydmljZUNhbGwsIHJlcXVlc3RQYXJhbXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXJzIHRoZSBvblNlcnZpY2VTdWNjZXNzIG1ldGhvZCBkZWZpbmVkIGluIGFwcC5qcyBvZiB0aGUgYXBwXG4gICAgICogQHBhcmFtIGRhdGFcbiAgICAgKiBAcGFyYW0geGhyT2JqXG4gICAgICovXG4gICAgYXBwT25TZXJ2aWNlU3VjY2VzcyhkYXRhOiBhbnksIHhock9iajogYW55KSB7XG4gICAgICAgIHJldHVybiB0cmlnZ2VyRm4odGhpcy4kYXBwLm9uU2VydmljZVN1Y2Nlc3MsIGRhdGEsIHhock9iaik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlcnMgdGhlIG9uU2VydmljZUVycm9yIG1ldGhvZCBkZWZpbmVkIGluIGFwcC5qcyBvZiB0aGUgYXBwXG4gICAgICogQHBhcmFtIGRhdGFcbiAgICAgKiBAcGFyYW0geGhyT2JcbiAgICAgKi9cbiAgICBhcHBPblNlcnZpY2VFcnJvcihkYXRhOiBhbnksIHhock9iPzogYW55KSB7XG4gICAgICAgIHJldHVybiB0cmlnZ2VyRm4odGhpcy4kYXBwLm9uU2VydmljZUVycm9yLCBkYXRhLCB4aHJPYik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlcnMgdGhlIGFwcFZhcmlhYmxlc1JlYWR5IG1ldGhvZCBkZWZpbmVkIGluIGFwcC5qcyBvZiB0aGUgYXBwXG4gICAgICovXG4gICAgYXBwVmFyaWFibGVzUmVhZHkoKSB7XG4gICAgICAgIHRyaWdnZXJGbih0aGlzLiRhcHAub25BcHBWYXJpYWJsZXNSZWFkeSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlcnMgdGhlIG9uQmVmb3JlQXBwUmVhZHkgbWV0aG9kIGRlZmluZWQgaW4gYXBwLmpzIG9mIHRoZSBhcHBcbiAgICAgKi9cbiAgICBiZWZvcmVBcHBSZWFkeSgpIHtcbiAgICAgICAgcmV0dXJuIHRyaWdnZXJGbih0aGlzLiRhcHAub25CZWZvcmVBcHBSZWFkeSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcGlwZSBiYXNlZCBvbiB0aGUgaW5wdXRcbiAgICAgKi9cbiAgICBnZXRQaXBlKHBpcGUpIHtcbiAgICAgICAgaWYgKHBpcGUgPT09ICdkYXRlJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGRhdGVQaXBlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRMYW5kaW5nUGFnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHNlY3VyaXR5LmdldFBhZ2VCeUxvZ2dlZEluVXNlcigpLnRoZW4ocCA9PiB0aGlzLiRhcHAubGFuZGluZ1BhZ2VOYW1lID0gPHN0cmluZz4gcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJuIHRydWUgaWYgcHJlZmFiIHR5cGUgYXBwXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgaXNQcmVmYWJUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kYXBwLmlzUHJlZmFiVHlwZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm4gdHJ1ZSBpZiB0ZW1wbGF0ZSBidW5kbGUgdHlwZSBhcHBcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBpc1RlbXBsYXRlQnVuZGxlVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGFwcC5pc1RlbXBsYXRlQnVuZGxlVHlwZTtcbiAgICB9XG5cbiAgICBwb3N0TWVzc2FnZShjb250ZW50KSB7XG4gICAgICAgIHdpbmRvdy50b3AucG9zdE1lc3NhZ2UoY29udGVudCwgJyonKTtcbiAgICB9XG5cbiAgICBzaG93VGVtcGxhdGUoaWR4KSB7XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlID0gdGhpcy50ZW1wbGF0ZXNbaWR4XTtcbiAgICAgICAgLy8gc2NvcGUuYWN0aXZlVGVtcGxhdGVJbmRleCA9IGlkeDtcbiAgICAgICAgdGhpcy4kcm91dGVyLm5hdmlnYXRlKFt0ZW1wbGF0ZS5pZF0pO1xuICAgIH1cbiAgICBwb3N0VGVtcGxhdGVCdW5kbGVJbmZvKCkge1xuXG4gICAgICAgIHdpbmRvdy5vbm1lc3NhZ2UgPSAoZXZ0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtc2dEYXRhID0gZXZ0LmRhdGE7XG5cbiAgICAgICAgICAgIGlmICghaXNPYmplY3QobXNnRGF0YSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IG1zZ0RhdGEua2V5O1xuXG4gICAgICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgICAgIGNhc2UgUE9TVF9NRVNTQUdFUy5ISURFX1RFTVBMQVRFU19TSE9XX0NBU0U6XG4gICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlLmhpZGVTaG93Q2FzZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgUE9TVF9NRVNTQUdFUy5TRUxFQ1RfVEVNUExBVEU6XG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93VGVtcGxhdGUobXNnRGF0YS50ZW1wbGF0ZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBvc3RNZXNzYWdlKHtrZXk6IFBPU1RfTUVTU0FHRVMuT05fTE9BRH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmV0Y2hDb250ZW50KCdqc29uJywgJy4vY29uZmlnLmpzb24nLCB0cnVlLCByZXNwb25zZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlcyA9IFtdO1xuICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5lcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVzID0gcmVzcG9uc2UudGVtcGxhdGVzO1xuICAgICAgICAgICAgICAgIHRoaXMucG9zdE1lc3NhZ2UoeydrZXknOiBQT1NUX01FU1NBR0VTLlRFTVBMQVRFQlVORExFX0NPTkZJRywgJ2NvbmZpZyc6IHJlc3BvbnNlfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHBvc3RBcHBUeXBlSW5mbygpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNUZW1wbGF0ZUJ1bmRsZVR5cGUoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9zdFRlbXBsYXRlQnVuZGxlSW5mbygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdEFwcE1vZGVzKCk6IHZvaWQgeyAgICBcbiAgICAgICAgLy8gZ2V0IG1vZGVzIGZyb20gbG9jYWwgc3RvcmFnZVxuICAgICAgICBsZXQgc3RvcmVkTW9kZXMgPSBnZXRNb2Rlc0Zyb21Mb2NhbFN0b3JhZ2UoKTtcbiAgICAgICAgXG4gICAgICAgIC8vIEFwcGx5IHJlc3RvcmVkIG1vZGVzXG4gICAgICAgIHRoaXMuJGFwcC5zZXRNb2RlKHN0b3JlZE1vZGVzKTtcbiAgICBcbiAgICAgICAgLy8gTGlzdGVuZXIgZm9yIHBvc3RNZXNzYWdlLWJhc2VkIG1vZGUgY2hhbmdlc1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBrZXksIG1vZGVzLCBzaG91bGRQZXJzaXN0IH0gPSBldmVudC5kYXRhIHx8IHt9O1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ3N3aXRjaC1tb2RlJyAmJiBtb2Rlcykge1xuICAgICAgICAgICAgICAgIHRoaXMuJGFwcC5zZXRNb2RlKG1vZGVzLCAhc2hvdWxkUGVyc2lzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==