@c8y/ngx-components 1021.22.60 → 1021.22.61

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.
@@ -1 +1 @@
1
- {"version":3,"file":"context-dashboard.component.d.ts","sourceRoot":"","sources":["../../context-dashboard/context-dashboard.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-dashboard.component.d.ts","sourceRoot":"","sources":["../../context-dashboard/context-dashboard.component.ts"],"names":[],"mappings":"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"}
@@ -45,7 +45,7 @@ export declare class ContextDashboardService {
45
45
  activateDashboards(route: ActivatedRouteSnapshot, types: ContextDashboardType[]): Observable<boolean | Tab[]>;
46
46
  getNamedDashboardOrCreate(name: string, defaultWidgets: Widget[], context?: ContextData): Observable<ContextDashboardManagedObject>;
47
47
  updateNavigatorItem(mo: IManagedObject): void;
48
- navigateToDashboard(dashboardMO: ContextDashboardManagedObject): Promise<void>;
48
+ navigateToDashboard(dashboardMO: ContextDashboardManagedObject, isNewDashboard?: boolean): Promise<void>;
49
49
  /**
50
50
  * Checks if user is able to edit dashboard according to his roles and dashboard ownership.
51
51
  *
@@ -1 +1 @@
1
- {"version":3,"file":"context-dashboard.service.d.ts","sourceRoot":"","sources":["../../context-dashboard/context-dashboard.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-dashboard.service.d.ts","sourceRoot":"","sources":["../../context-dashboard/context-dashboard.service.ts"],"names":[],"mappings":"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"}
@@ -177,5 +177,5 @@ export type DashboardCopyPermission = {
177
177
  state: false;
178
178
  reason: (typeof CopyDashboardDisabledReason)[keyof typeof CopyDashboardDisabledReason];
179
179
  };
180
- export declare const NEW_DASHBOARD_QUERY_PARAM = "newDashboard";
180
+ export declare const NEW_DASHBOARD_ROUTER_STATE_PROP = "newDashboard";
181
181
  //# sourceMappingURL=dashboard.model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.model.d.ts","sourceRoot":"","sources":["../../../core/dashboard/dashboard.model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard.model.d.ts","sourceRoot":"","sources":["../../../core/dashboard/dashboard.model.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { EventEmitter, SimpleChanges } from '@angular/core';
2
- import { ActivatedRoute } from '@angular/router';
2
+ import { ActivatedRoute, Router } from '@angular/router';
3
3
  import { BreadcrumbItem } from '../breadcrumb/breadcrumb.model';
4
4
  import { DashboardComponent } from './dashboard.component';
5
5
  import { DashboardChange, DashboardSettings, Widget, WidgetChange, DashboardCopyPermission } from './dashboard.model';
@@ -17,6 +17,7 @@ export declare class WidgetsDashboardComponent {
17
17
  private route;
18
18
  private modal;
19
19
  private widgetGlobalAutoRefresh;
20
+ private router;
20
21
  set widgets(value: Widget[]);
21
22
  get widgets(): Widget[];
22
23
  context: any;
@@ -60,7 +61,7 @@ export declare class WidgetsDashboardComponent {
60
61
  private _widgets;
61
62
  private isLoading$;
62
63
  private isExecutingResolvers$;
63
- constructor(dynamic: DynamicComponentService, translateService: TranslateService, route: ActivatedRoute, modal: ModalService, widgetGlobalAutoRefresh: WidgetGlobalAutoRefreshService);
64
+ constructor(dynamic: DynamicComponentService, translateService: TranslateService, route: ActivatedRoute, modal: ModalService, widgetGlobalAutoRefresh: WidgetGlobalAutoRefreshService, router: Router);
64
65
  ngOnChanges({ isCopyDisabled }: SimpleChanges): void;
65
66
  canDeactivate(omitConfirm?: boolean): Promise<boolean>;
66
67
  toggleFullscreen(hasWidget?: boolean): void;
@@ -1 +1 @@
1
- {"version":3,"file":"widgets-dashboard.component.d.ts","sourceRoot":"","sources":["../../../core/dashboard/widgets-dashboard.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"widgets-dashboard.component.d.ts","sourceRoot":"","sources":["../../../core/dashboard/widgets-dashboard.component.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { Component, HostBinding, HostListener, Inject, Input, Renderer2, ViewChild } from '@angular/core';
3
3
  import { ActivatedRoute, Router } from '@angular/router';
4
- import { ActionBarService, AlertService, CopyDashboardDisabledReason, DashboardChildChange, GainsightService, gettext, memoize, ModalService, NEW_DASHBOARD_QUERY_PARAM, Status, WidgetsDashboardComponent } from '@c8y/ngx-components';
4
+ import { ActionBarService, AlertService, CopyDashboardDisabledReason, DashboardChildChange, GainsightService, gettext, memoize, ModalService, Status, WidgetsDashboardComponent } from '@c8y/ngx-components';
5
5
  import { TranslateService } from '@ngx-translate/core';
6
6
  import { cloneDeep, every, findIndex, kebabCase, keyBy, omit, some } from 'lodash-es';
7
7
  import { BsModalService } from 'ngx-bootstrap/modal';
@@ -95,12 +95,6 @@ export class ContextDashboardComponent {
95
95
  if (this.dataSub) {
96
96
  this.dataSub.unsubscribe();
97
97
  }
98
- const isNewDashboard = this.route.snapshot.queryParams[NEW_DASHBOARD_QUERY_PARAM];
99
- if (isNewDashboard) {
100
- this.router.navigate([], {
101
- queryParams: null
102
- });
103
- }
104
98
  }
105
99
  /**
106
100
  * Guards component from unintended navigation away or closing tab without saving changes.
@@ -712,4 +706,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
712
706
  type: HostListener,
713
707
  args: ['window:beforeunload', ['$event']]
714
708
  }], convertStringToHash: [] } });
715
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1kYXNoYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvY29udGV4dC1kYXNoYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvY29udGV4dC1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLFNBQVMsRUFDVCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFlBQVksRUFFWiwyQkFBMkIsRUFFM0Isb0JBQW9CLEVBSXBCLGdCQUFnQixFQUNoQixPQUFPLEVBQ1AsT0FBTyxFQUNQLFlBQVksRUFDWix5QkFBeUIsRUFFekIsTUFBTSxFQUdOLHlCQUF5QixFQUMxQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE9BQU8sRUFFTCx3QkFBd0IsRUFJeEIsNkJBQTZCLEVBRzdCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDdEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIs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QUNFLHVCQUF1QixRQUUzQjt3QkFDSixLQUFLLEVBQUU7O0tBRU47d0JBQ0QsS0FBSyxFQUFFLDhCQUE4QjtxQkFDdEM7OzBCQWdFRSxNQUFNOzJCQUFDLHdCQUF3QjtpUUE1RGxDLElBQUk7c0JBREgsS0FBSztnQkFHTixlQUFlO3NCQURkLEtBQUs7Z0JBR04sT0FBTztzQkFETixLQUFLO2dCQUdOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixjQUFjO3NCQURiLEtBQUs7Z0JBR04sUUFBUTtzQkFEUCxLQUFLO3VCQUFDLFNBQVM7Z0JBR2hCLFNBQVM7c0JBRFIsS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUs7Z0JBR04sa0JBQWtCO3NCQURqQixLQUFLO2dCQUdOLHFCQUFxQjtzQkFEcEIsS0FBSztnQkFHRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBS04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sS0FBSztzQkFESixXQUFXO3VCQUFDLE9BQU87Z0JBR21DLGdCQUFnQjtzQkFBdEUsU0FBUzt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRXJELGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLHlCQUF5QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkErQ2hELG1CQUFtQjtzQkFEeEIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkE4cEJqQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQWN0aW9uQmFyU2VydmljZSxcbiAgQWxlcnRTZXJ2aWNlLFxuICBCcmVhZGNydW1iSXRlbSxcbiAgQ29weURhc2hib2FyZERpc2FibGVkUmVhc29uLFxuICBEYXNoYm9hcmRDaGFuZ2UsXG4gIERhc2hib2FyZENoaWxkQ2hhbmdlLFxuICBEYXNoYm9hcmRDaGlsZENvbXBvbmVudCxcbiAgRGFzaGJvYXJkQ29weVBlcm1pc3Npb24sXG4gIER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uLFxuICBHYWluc2lnaHRTZXJ2aWNlLFxuICBnZXR0ZXh0LFxuICBtZW1vaXplLFxuICBNb2RhbFNlcnZpY2UsXG4gIE5FV19EQVNIQk9BUkRfUVVFUllfUEFSQU0sXG4gIFJldmVydENoYW5nZVR5cGUsXG4gIFN0YXR1cyxcbiAgV2lkZ2V0LFxuICBXaWRnZXRDaGFuZ2UsXG4gIFdpZGdldHNEYXNoYm9hcmRDb21wb25lbnRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGV2ZXJ5LCBmaW5kSW5kZXgsIGtlYmFiQ2FzZSwga2V5QnksIG9taXQsIHNvbWUgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQ2FuRGVhY3RpdmF0ZUNvbXBvbmVudCxcbiAgQ09OVEVYVF9EQVNIQk9BUkRfQ09ORklHLFxuICBDb250ZXh0RGFzaGJvYXJkLFxuICBDb250ZXh0RGFzaGJvYXJkQ29uZmlnLFxuICBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCxcbiAgREFTSEJPQVJEX0NISUxEUkVOX1NUQVRFX05BTUUsXG4gIERhc2hib2FyZENoaWxkcmVuU3RhdGUsXG4gIERhc2hib2FyZEhpc3RvcnlEZXNjcmlwdGlvbixcbiAgUFJPRFVDVF9FWFBFUklFTkNFLFxuICBXSURHRVRfSEVBREVSX0NMQVNTRVNcbn0gZnJvbSAnLi9jb250ZXh0LWRhc2hib2FyZC5tb2RlbCc7XG5pbXBvcnQgeyBDb250ZXh0RGFzaGJvYXJkU2VydmljZSB9IGZyb20gJy4vY29udGV4dC1kYXNoYm9hcmQuc2VydmljZSc7XG5pbXBvcnQgeyBEYXNoYm9hcmREZXRhaWxDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZC1kZXRhaWwuY29tcG9uZW50JztcbmltcG9ydCB7IFdpZGdldENvbmZpZ0NvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0LWNvbmZpZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2lkZ2V0U2VydmljZSB9IGZyb20gJy4vd2lkZ2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGFzaGJvYXJkRWRpdE1vZGVTZXJ2aWNlIH0gZnJvbSAnLi9tZW1lbnRvL2Rhc2hib2FyZC1lZGl0LW1vZGUuc2VydmljZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuLyoqXG4gKiBUaGUgY29udGV4dCBkYXNoYm9hcmQgaXMgYSBkYXNoYm9hcmQgd2hpY2ggcmVzb2x2ZXMgaXQgZGF0YSBmcm9tIHRoZSBjdXJyZW50IGNvbnRleHQgKGRldmljZSBvciBncm91cClcbiAqIGl0IGlzIGRpc3BsYXllZCBvbi4gSXQgdXN1YWxseSB1c2VzIHRoZSByb3V0ZS5kYXRhIGZvciBpdCwgYnV0IHlvdSBjYW4gcGFzc1xuICogYSBkaWZmZXJlbnQgbWFuYWdlZE9iamVjdCB0byB0aGUgW21vXSBpbnB1dCBwYXJhbWV0ZXIgdG8gY2hhbmdlIHRoYXQgYmVoYXZpb3IuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1jb250ZXh0LWRhc2hib2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250ZXh0LWRhc2hib2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHtcbiAgICBzdHlsZTogYFxuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgYCxcbiAgICBjbGFzczogJ2Rhc2hib2FyZCBjOHktZ3JpZC1kYXNoYm9hcmQnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgQ29udGV4dERhc2hib2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDYW5EZWFjdGl2YXRlQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgbmFtZTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBjaGlsZHJlbkNsYXNzZXMgPSAnJztcbiAgQElucHV0KClcbiAgY29udGV4dDogYW55O1xuICBASW5wdXQoKVxuICBzZXRUaXRsZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGRlZmF1bHRXaWRnZXRzOiBXaWRnZXRbXSA9IFtdO1xuICBASW5wdXQoJ2NhbkNvcHknKVxuICBfY2FuQ29weSA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIGNhbkRlbGV0ZSA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIGlzTG9hZGluZyA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIGJyZWFkY3J1bWJTZXR0aW5nczogQnJlYWRjcnVtYkl0ZW07XG4gIEBJbnB1dCgpXG4gIHNob3dDb250ZXh0SGVscEJ1dHRvbiA9IHRydWU7XG4gIC8qKiBXaGV0aGVyIHRvIHRyYW5zbGF0ZSB3aWRnZXQgdGl0bGVzLiBIb3dldmVyLCBkYXNoYm9hcmQncyBvd24gc2V0dGluZyB0YWtlcyBwcmVjZWRlbmNlLiBJdCBkb2VzIG5vdCBvdmVycmlkZSBkYXNoYm9hcmQncyBzZXR0aW5nICovXG4gIEBJbnB1dCgpIHRyYW5zbGF0ZVdpZGdldFRpdGxlOiBib29sZWFuO1xuICAvKipcbiAgICogSGlkZXMgZGFzaGJvYXJkIGF2YWlsYWJpbGl0eSBzZWxlY3Rpb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBoaWRlQXZhaWxhYmlsaXR5ID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGNsYXNzID0gJyc7XG5cbiAgQFZpZXdDaGlsZChEYXNoYm9hcmREZXRhaWxDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIGRhc2hib2FyZERldGFpbHM6IERhc2hib2FyZERldGFpbENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChXaWRnZXRzRGFzaGJvYXJkQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICB3aWRnZXRzRGFzaGJvYXJkOiBXaWRnZXRzRGFzaGJvYXJkQ29tcG9uZW50O1xuXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaGFzUGVybWlzc2lvblRvRWRpdERhc2hib2FyZCB8fCAhdGhpcy5kYXNoYm9hcmREZXRhaWxzPy5pc0NvbGxhcHNlZDtcbiAgfVxuXG4gIHdpZGdldHM6IFdpZGdldFtdID0gW107XG4gIG1vOiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdDtcbiAgZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkO1xuICB0aXRsZTogc3RyaW5nO1xuICBpc0NvcHlEaXNhYmxlZDogRGFzaGJvYXJkQ29weVBlcm1pc3Npb247XG4gIGlzUmVwb3J0OiBib29sZWFuO1xuICBjYW5Db3B5ID0gdHJ1ZTtcbiAgcmVhZG9ubHkgZGFzaGJvYXJkVHlwZUxhYmVsID0gZ2V0dGV4dCgnRGFzaGJvYXJkIGZvciBcInt7IGRhc2hib2FyZFR5cGUgfX1cIicpO1xuICByZWFkb25seSBkYXNoYm9hcmRUeXBlUG9wb3ZlciA9IGdldHRleHQoYFxuICBUaGUgbGF5b3V0IGFuZCBjb25maWd1cmF0aW9uIG9mIHRoaXMgZGFzaGJvYXJkIGlzIHVzZWQgYnkgYWxsIG90aGVyIGFzc2V0cyBvZiBtb2RlbCB0eXBlXG4gIDxzdHJvbmc+e3sgZGFzaGJvYXJkVHlwZSB9fTwvc3Ryb25nPi4gQW55IGNoYW5nZXMgbWFkZSB0byB0aGlzIGRhc2hib2FyZCBpbnN0YW5jZSB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsXG4gIG90aGVyIGluc3RhbmNlcy5gKTtcbiAgcHJpdmF0ZSBkYXRhU3ViOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgaGFzUGVybWlzc2lvblRvRWRpdERhc2hib2FyZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBjb250ZXh0RGFzaGJvYXJkU2VydmljZTogQ29udGV4dERhc2hib2FyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydDogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBASW5qZWN0KENPTlRFWFRfREFTSEJPQVJEX0NPTkZJRykgcHVibGljIG1vZHVsZUNvbmZpZzogQ29udGV4dERhc2hib2FyZENvbmZpZyxcbiAgICBwcml2YXRlIHdpZGdldFNlcnZpY2U6IFdpZGdldFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBic01vZGFsOiBCc01vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3Rpb25CYXJTZXJ2aWNlOiBBY3Rpb25CYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsOiBNb2RhbFNlcnZpY2UsXG4gICAgcHVibGljIGVkaXRNb2RlU2VydmljZTogRGFzaGJvYXJkRWRpdE1vZGVTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMubmFtZSkge1xuICAgICAgdGhpcy5sb2FkQ29udGV4dERhc2hib2FyZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmxvYWROYW1lZERhc2hib2FyZCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmJlZm9yZXVubG9hZCcsIFsnJGV2ZW50J10pXG4gIGFzeW5jIGJlZm9yZVVubG9hZEhhbmRsZXIoJGV2ZW50OiBCZWZvcmVVbmxvYWRFdmVudCkge1xuICAgIGNvbnN0IGNhbkRlYWN0aXZhdGUgPSBhd2FpdCB0aGlzLmNhbkRlYWN0aXZhdGUodHJ1ZSk7XG4gICAgaWYgKCFjYW5EZWFjdGl2YXRlKSB7XG4gICAgICAkZXZlbnQucmV0dXJuVmFsdWUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSBjdXJyZW50IGNvbnRleHQgdG8gdGhlIHdpZGdldFxuICAgKiBAcGFyYW0gd2lkZ2V0IFRoZSB3aWRnZXQgdG8gYXBwbHkgdGhlIGNvbnRleHQgdG8uXG4gICAqL1xuICBhcHBseURldmljZVRhcmdldCh3aWRnZXQpIHtcbiAgICBpZiAod2lkZ2V0LmNvbmZpZy5kZXZpY2UpIHtcbiAgICAgIHdpZGdldC5jb25maWcuZGV2aWNlID0geyBpZDogdGhpcy5jb250ZXh0LmlkLCBuYW1lOiB0aGlzLmNvbnRleHQubmFtZSB9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSByb3V0ZSBsaXN0ZW5lci5cbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGFTdWIpIHtcbiAgICAgIHRoaXMuZGF0YVN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBjb25zdCBpc05ld0Rhc2hib2FyZCA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbTkVXX0RBU0hCT0FSRF9RVUVSWV9QQVJBTV07XG4gICAgaWYgKGlzTmV3RGFzaGJvYXJkKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgICBxdWVyeVBhcmFtczogbnVsbFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBHdWFyZHMgY29tcG9uZW50IGZyb20gdW5pbnRlbmRlZCBuYXZpZ2F0aW9uIGF3YXkgb3IgY2xvc2luZyB0YWIgd2l0aG91dCBzYXZpbmcgY2hhbmdlcy5cbiAgICogTmF2aWdhdGlvbiBjb250aW51ZXMgaWYgdHJ1ZSBpcyByZXR1cm5lZCwgYW5kIG5hdmlnYXRpb24gaXMgY2FuY2VsbGVkIGlmIHJldHVybmVkIHZhbHVlIGlzIGZhbHNlLlxuICAgKiBAcGFyYW0gb21pdENvbmZpcm0gT21pdHMgY29uZmlybSBjYWxscyBpbnNpZGUgbWV0aG9kIGJvZHkgKHdpdGhvdXQgdGhpcyBwYXJhbSwgd2hlbiBtZXRob2QgaXMgdXNlZCBpblxuICAgKiBvbiAnYmVmb3JldW5sb2FkJyBldmVudCBoYW5kbGVyLCBlcnJvciBpcyB0aHJvd24gaW4gY29uc29sZSBiZWNhdXNlIGNvbmZpcm0gaXMgYmxvY2tlZCBieSBicm93c2VyIGFueXdheSBhbmQgcmV0dXJucyBmYWxzZSlcbiAgICovXG4gIGFzeW5jIGNhbkRlYWN0aXZhdGUob21pdENvbmZpcm0gPSBmYWxzZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGNhbkRlYWN0aXZhdGUgPVxuICAgICAgKGF3YWl0IHRoaXMuZGFzaGJvYXJkRGV0YWlscy5jYW5EZWFjdGl2YXRlKG9taXRDb25maXJtKSkgJiZcbiAgICAgIChhd2FpdCB0aGlzLndpZGdldHNEYXNoYm9hcmQuY2FuRGVhY3RpdmF0ZShvbWl0Q29uZmlybSkpO1xuXG4gICAgLy8gTmVlZGVkIGluIG9yZGVyIHRvIHJlc2V0IGVkaXQgbW9kZSwgb3RoZXJ3aXNlIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gZGFzaGJvYXJkcywgdGhlIGVkaXQgbW9kZSBpcyBzdGlsbCBlbmFibGVkLlxuICAgIGlmIChjYW5EZWFjdGl2YXRlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNhbmNlbEVkaXRNb2RlKHRydWUpO1xuICAgIH1cbiAgICByZXR1cm4gY2FuRGVhY3RpdmF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0b3JlcyB0aGUgZGFzaGJvYXJkIHdpZGdldHMgdG8gdGhlIGRlZmF1bHQgd2lkZ2V0cy5cbiAgICovXG4gIGFzeW5jIHJlc3RvcmUoKSB7XG4gICAgY29uc3QgbWVzZyA9IGdldHRleHQoXG4gICAgICAnWW91IGFyZSBhYm91dCB0byByZXNldCB0aGUgd2lkZ2V0cyBvZiB0aGlzIGRhc2hib2FyZC4gQWxsIGNoYW5nZXMgdG8gdGhlIGRhc2hib2FyZCB3aWRnZXRzIHdpbGwgZ2V0IGxvc3QgYW5kIGNhbm5vdCBiZSByZWNvdmVyZWQuIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/J1xuICAgICk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5tb2RhbC5jb25maXJtKGdldHRleHQoJ1Jlc2V0IHdpZGdldHMnKSwgbWVzZywgU3RhdHVzLldBUk5JTkcsIHtcbiAgICAgICAgb2s6IGdldHRleHQoJ1Jlc2V0YGRhc2hib2FyZGAnKSxcbiAgICAgICAgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMubW8uYzh5X0Rhc2hib2FyZC5jaGlsZHJlbiA9IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UubWFwV2lkZ2V0cyh0aGlzLmRlZmF1bHRXaWRnZXRzKTtcbiAgICAgIHRoaXMubW8uYzh5X0Rhc2hib2FyZC5oaXN0b3J5RGVzY3JpcHRpb24gPSB7XG4gICAgICAgIGNoYW5nZVR5cGU6ICdyZXNldCdcbiAgICAgIH07XG4gICAgICBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZSh0aGlzLm1vKTtcbiAgICAgIGF3YWl0IHRoaXMub25Mb2FkKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aGlzLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZXJyb3IpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogTWV0aG9kIGNhbGxlZCBvbiBldmVyeSB3aWRnZXRzIGRpbWVuc2lvbnMgb3IgcG9zaXRpb24gY2hhbmdlIGJ1dCBhbHNvIGZvciBhZGRpbmcgbmV3IHdpZGdldCAoYmVjYXVzZSBhZGRpbmdcbiAgICogd2lkZ2V0IGNhdXNlcyBsYXlvdXQgY2hhbmdlcykuIEl0IHJlY29nbml6ZXMgd2hhdCB0eXBlIG9mIGNoYW5nZSBoYXMgYmVlbiBkb25lIGFuZCB1cGRhdGVzIGN1cnJlbnQgd2lkZ2V0cyBzdGF0ZVxuICAgKiBhY2NvcmRpbmdseS5cbiAgICogQHBhcmFtIGNoaWxkIENoYW5nZSBvYmplY3QuXG4gICAqL1xuICBwb3NpdGlvbk9yV2lkZ2V0RGltZW5zaW9uQ2hhbmdlKGNoaWxkOiBEYXNoYm9hcmRDaGlsZENoYW5nZSB8IERhc2hib2FyZENoYW5nZSk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IHRoaXMuZWRpdE1vZGVTZXJ2aWNlLmdldEN1cnJlbnRTdGF0ZSgpPy5jaGlsZHJlbiB8fCB7fTtcbiAgICBjb25zdCBkZXNjcmlwdGlvblByb3A6IGtleW9mIERhc2hib2FyZEhpc3RvcnlEZXNjcmlwdGlvblsnd2lkZ2V0Q2hhbmdlcyddID1cbiAgICAgIGNoaWxkLmNoaWxkcmVuLmxlbmd0aCA9PT0gT2JqZWN0LnZhbHVlcyhjdXJyZW50U3RhdGUpLmxlbmd0aCA/ICdhcnJhbmdlbWVudCcgOiAnYWRkZWQnO1xuICAgIGxldCBjaGFuZ2VOYW1lOiBEYXNoYm9hcmRDaGlsZHJlblN0YXRlWyduYW1lJ107XG4gICAgbGV0IHdpZGdldHNDaGFuZ2VkOiBXaWRnZXRbXTtcbiAgICBpZiAoZGVzY3JpcHRpb25Qcm9wID09PSAnYWRkZWQnKSB7XG4gICAgICBjaGFuZ2VOYW1lID0gREFTSEJPQVJEX0NISUxEUkVOX1NUQVRFX05BTUUuYWRkZWQ7XG4gICAgICBjb25zdCBhZGRlZFdpZGdldCA9IGNoaWxkLmNoaWxkcmVuLmZpbmQoYyA9PiAhY3VycmVudFN0YXRlW2MuZGF0YS5pZF0pO1xuICAgICAgd2lkZ2V0c0NoYW5nZWQgPSBbYWRkZWRXaWRnZXQuZGF0YV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNoYW5nZU5hbWUgPSBEQVNIQk9BUkRfQ0hJTERSRU5fU1RBVEVfTkFNRS5hcnJhbmdlbWVudDtcbiAgICAgIHdpZGdldHNDaGFuZ2VkID0gY2hpbGQuY2hpbGRyZW5cbiAgICAgICAgLm1hcChjID0+IHtcbiAgICAgICAgICBjb25zdCBsYXN0U3RhdGVDaGlsZCA9IGN1cnJlbnRTdGF0ZVtjLmRhdGEuaWRdO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGMueCAhPSBsYXN0U3RhdGVDaGlsZC5feCB8fFxuICAgICAgICAgICAgYy55ICE9IGxhc3RTdGF0ZUNoaWxkLl95IHx8XG4gICAgICAgICAgICBjLndpZHRoICE9IGxhc3RTdGF0ZUNoaWxkLl93aWR0aCB8fFxuICAgICAgICAgICAgYy5oZWlnaHQgIT0gbGFzdFN0YXRlQ2hpbGQuX2hlaWdodFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGMuZGF0YTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVEYXNoYm9hcmRDaGlsZHJlbihjaGlsZCwgY2hhbmdlTmFtZSwgZGVzY3JpcHRpb25Qcm9wLCB3aWRnZXRzQ2hhbmdlZCk7XG4gIH1cblxuICBhc3luYyByZXZlcnRDaGFuZ2UocmV2ZXJ0VHlwZTogUmV2ZXJ0Q2hhbmdlVHlwZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCBkYXNoYm9hcmRDaGlsZHJlbjogQ29udGV4dERhc2hib2FyZFsnY2hpbGRyZW4nXTtcbiAgICBpZiAocmV2ZXJ0VHlwZSA9PT0gJ3VuZG8nKSB7XG4gICAgICBkYXNoYm9hcmRDaGlsZHJlbiA9IHRoaXMuZWRpdE1vZGVTZXJ2aWNlLnVuZG8oKS5jaGlsZHJlbjtcbiAgICB9IGVsc2Uge1xuICAgICAgZGFzaGJvYXJkQ2hpbGRyZW4gPSB0aGlzLmVkaXRNb2RlU2VydmljZS5yZWRvKCkuY2hpbGRyZW47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuc2V0V2lkZ2V0cyhkYXNoYm9hcmRDaGlsZHJlbik7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBhbGwgZGFzaGJvYXJkcyBjaGlsZHJlbidzLiBVc2VmdWwgZm9yIHBvc2l0aW9uIGNoYW5nZXMgb24gdGhlIGRhc2hib2FyZC5cbiAgICogQHBhcmFtIGNoaWxkIFRoZSBjaGlsZCB0byBjaGFuZ2UuXG4gICAqIEBwYXJhbSBjaGFuZ2VOYW1lIE5hbWUgb2YgdGhlIGNoYW5nZSB0byBpbmRpY2F0ZSBpdCBvbiB1bmRvL3JlZG8gYnV0dG9uLlxuICAgKiBAcGFyYW0gZGVzY3JpcHRpb25Qcm9wIFByb3BlcnR5IHRvIGFkZCB0byBkYXNoYm9hcmQgY2hhbmdlIGhpc3RvcnkuXG4gICAqIEBwYXJhbSB3aWRnZXRzQ2hhbmdlZCBMaXN0IG9mIGNoYW5nZWQgd2lkZ2V0cy5cbiAgICovXG4gIHVwZGF0ZURhc2hib2FyZENoaWxkcmVuKFxuICAgIGNoaWxkOiBEYXNoYm9hcmRDaGlsZENoYW5nZSB8IERhc2hib2FyZENoYW5nZSxcbiAgICBjaGFuZ2VOYW1lOiBEYXNoYm9hcmRDaGlsZHJlblN0YXRlWyduYW1lJ10sXG4gICAgZGVzY3JpcHRpb25Qcm9wOiBrZXlvZiBEYXNoYm9hcmRIaXN0b3J5RGVzY3JpcHRpb25bJ3dpZGdldENoYW5nZXMnXSxcbiAgICB3aWRnZXRzQ2hhbmdlZDogV2lkZ2V0W11cbiAgKTogdm9pZCB7XG4gICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gY2hpbGQ7XG4gICAgY29uc3QgbWFwcGVkQ2hpbGRyZW46IHsgW2lkOiBzdHJpbmddOiBXaWRnZXQgfSA9IGtleUJ5KFxuICAgICAgY2hpbGRyZW4ubWFwKGMgPT4gdGhpcy5jb21wb25lbnRUb1dpZGdldChjKSksXG4gICAgICAnaWQnXG4gICAgKTtcbiAgICB0aGlzLnNldE5ld1N0YXRlKFxuICAgICAgeyBuYW1lOiBjaGFuZ2VOYW1lLCBjaGlsZHJlbjogbWFwcGVkQ2hpbGRyZW4gfSxcbiAgICAgIGRlc2NyaXB0aW9uUHJvcCxcbiAgICAgIHdpZGdldHNDaGFuZ2VkXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3BpZXMgdGhlIGRhc2hib2FyZCBhbmQgY3VycmVudCBjb250ZXh0IHRvIGEgY2xpcGJvYXJkLlxuICAgKi9cbiAgYXN5bmMgY29weURhc2hib2FyZCgpIHtcbiAgICBjb25zdCB2aWV3Q29udGV4dCA9IHRoaXMucm91dGUucGFyZW50LnNuYXBzaG90LmRhdGE/LmNvbnRleHQ7XG5cbiAgICB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmNvcHlDbGlwYm9hcmQgPSB7XG4gICAgICBkYXNoYm9hcmRJZDogdGhpcy5tby5pZCxcbiAgICAgIGRhc2hib2FyZDogY2xvbmVEZWVwKHRoaXMubW8uYzh5X0Rhc2hib2FyZCksXG4gICAgICBjb250ZXh0OiBjbG9uZURlZXAoe1xuICAgICAgICBjb250ZXh0OiB2aWV3Q29udGV4dCxcbiAgICAgICAgY29udGV4dERhdGE6IHRoaXMuY29udGV4dFxuICAgICAgfSlcbiAgICB9O1xuXG4gICAgaWYgKHZpZXdDb250ZXh0KSB7XG4gICAgICBjb25zdCBjdHggPSB2aWV3Q29udGV4dC5zcGxpdCgnLycpLnNoaWZ0KCk7XG4gICAgICBjb25zdCBtc2cgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgJ0Rhc2hib2FyZCBjb3BpZWQuIE5hdmlnYXRlIHRvIHRoZSBkZXNpcmVkIHt7IGN0eCB9fSBhbmQgc2VsZWN0IFwiUGFzdGUgZGFzaGJvYXJkXCInLFxuICAgICAgICB7IGN0eCB9XG4gICAgICApO1xuICAgICAgdGhpcy5hbGVydC5zdWNjZXNzKG1zZyk7XG4gICAgfVxuICAgIHRoaXMuYWN0aW9uQmFyU2VydmljZS5yZWZyZXNoKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHRoZSBjb21wbGV0ZSBkYXNoYm9hcmQgYW5kIG5hdmlnYXRlIGF3YXkuXG4gICAqL1xuICBhc3luYyBkZWxldGVEYXNoYm9hcmQoKSB7XG4gICAgYXdhaXQgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5kZWxldGUodGhpcy5tbyk7XG4gICAgaWYgKHRoaXMucm91dGUucGFyZW50KSB7XG4gICAgICBjb25zdCByb3V0ZSA9IHRoaXMucm91dGUucGFyZW50LnNuYXBzaG90LnVybC5tYXAoc2VnbWVudCA9PiBzZWdtZW50LnBhdGgpLmpvaW4oJy8nKTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocm91dGUpO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLm9uRGVsZXRlR1NFdmVudCgpO1xuICB9XG5cbiAgZ2V0IGlzRGV2aWNlVHlwZURhc2hib2FyZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmRhc2hib2FyZD8uZGV2aWNlVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFZGl0cyBhIHdpZGdldCBvbiB0aGUgZGFzaGJvYXJkLlxuICAgKiBAcGFyYW0gY2hhbmdlIFRoZSB3aWRnZXQgY2hhbmdlIGV2ZW50LlxuICAgKi9cbiAgYXN5bmMgZWRpdFdpZGdldChjaGFuZ2U6IFdpZGdldENoYW5nZSkge1xuICAgIGNvbnN0IHsgeCwgeSwgd2lkdGgsIGhlaWdodCB9ID0gY2hhbmdlLnNvdXJjZTtcbiAgICBjb25zdCBjb21wb25lbnQgPSBhd2FpdCB0aGlzLndpZGdldFNlcnZpY2UuZ2V0V2lkZ2V0RGVmaW5pdGlvbihcbiAgICAgIGNoYW5nZS53aWRnZXQubmFtZSB8fCBjaGFuZ2Uud2lkZ2V0LmNvbXBvbmVudElkXG4gICAgKTtcbiAgICBpZiAoIWNvbXBvbmVudCkge1xuICAgICAgdGhpcy5hZGRXaWRnZXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5hZGRXaWRnZXQoe1xuICAgICAgLi4uY29tcG9uZW50LFxuICAgICAgZGF0YTogeyAuLi5jb21wb25lbnQuZGF0YSwgLi4uY2hhbmdlLndpZGdldCwgX3g6IHgsIF95OiB5LCBfd2lkdGg6IHdpZHRoLCBfaGVpZ2h0OiBoZWlnaHQgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB3aWRnZXQgdG8gdGhlIGRhc2hib2FyZC5cbiAgICogQHBhcmFtIHNlbGVjdGVkIERlZmluZSBhIHNlbGVjdGVkIGNvbXBvbmVudCB0byBzd2l0Y2ggdG8gZWRpdCBtb2RlIGRpcmVjdGx5LlxuICAgKi9cbiAgYXN5bmMgYWRkV2lkZ2V0KHNlbGVjdGVkPzogRHluYW1pY0NvbXBvbmVudERlZmluaXRpb24pIHtcbiAgICBjb25zdCBwYXJ0aWFsQ2xvbmVTZWxlY3RlZCA9IHNlbGVjdGVkXG4gICAgICA/IHtcbiAgICAgICAgICAuLi5zZWxlY3RlZCxcbiAgICAgICAgICBkYXRhOiBjbG9uZURlZXAoc2VsZWN0ZWQuZGF0YSlcbiAgICAgICAgfVxuICAgICAgOiBzZWxlY3RlZDtcblxuICAgIGNvbnN0IGFjdGl2ZUNvbnRleHQgPSB0aGlzLmNvbnRleHQuY29udGV4dERhdGEgPyB0aGlzLmNvbnRleHQuY29udGV4dERhdGEgOiB0aGlzLmNvbnRleHQ7XG4gICAgY29uc3QgaW5pdGlhbFN0YXRlOiBQYXJ0aWFsPFdpZGdldENvbmZpZ0NvbXBvbmVudD4gPSB7XG4gICAgICBtbzogdGhpcy5tbyxcbiAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dC5jOHlfUmVwb3J0ID8ge30gOiBhY3RpdmVDb250ZXh0LFxuICAgICAgc2VsZWN0ZWQ6IHBhcnRpYWxDbG9uZVNlbGVjdGVkXG4gICAgfTtcblxuICAgIGNvbnN0IG1vZGFsID0gdGhpcy5ic01vZGFsLnNob3coV2lkZ2V0Q29uZmlnQ29tcG9uZW50LCB7XG4gICAgICBjbGFzczogJ21vZGFsLWxnJyxcbiAgICAgIGFyaWFEZXNjcmliZWRieTogJ21vZGFsLWJvZHknLFxuICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZScsXG4gICAgICBpbml0aWFsU3RhdGUsXG4gICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlLFxuICAgICAga2V5Ym9hcmQ6IGZhbHNlXG4gICAgfSkuY29udGVudCBhcyBXaWRnZXRDb25maWdDb21wb25lbnQ7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbmV3V2lkZ2V0ID0gYXdhaXQgbW9kYWwucmVzdWx0O1xuICAgICAgaWYgKCF0aGlzLm1vLmM4eV9EYXNoYm9hcmQuY2hpbGRyZW4pIHtcbiAgICAgICAgdGhpcy5tby5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuID0ge307XG4gICAgICB9XG4gICAgICBuZXdXaWRnZXQuY2xhc3NlcyA9IHRoaXMubWVyZ2VXaWRnZXRDbGFzc2VzKG5ld1dpZGdldCk7XG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZVdpZGdldChuZXdXaWRnZXQpO1xuICAgICAgLy8gTmV3IHN0YXRlIGluIGVkaXQgbW9kZSBpcyBhZGRlZCBvbmx5IGZvciB3aWRnZXQgdXBkYXRlLiBXaGVuIGFkZGluZyB3aWRnZXQsIGxheW91dCBjaGFuZ2UgaXMgYWx3YXlzIHRyaWdnZXJlZCxcbiAgICAgIC8vIHNvIGl0J3MgZWFzaWVyIHRvIHNldCBuZXcgc3RhdGUgb24gbGF5b3V0IGNoYW5nZSBvbmx5XG4gICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSB7XG4gICAgICAgICAgLi4udGhpcy5lZGl0TW9kZVNlcnZpY2UuZ2V0Q3VycmVudFN0YXRlKCkuY2hpbGRyZW4sXG4gICAgICAgICAgW25ld1dpZGdldC5pZF06IG5ld1dpZGdldFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNldE5ld1N0YXRlKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IERBU0hCT0FSRF9DSElMRFJFTl9TVEFURV9OQU1FLmNvbmZpZyxcbiAgICAgICAgICAgIGNoaWxkcmVuXG4gICAgICAgICAgfSxcbiAgICAgICAgICAnY29uZmlnJyxcbiAgICAgICAgICBbbmV3V2lkZ2V0XVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgbW9kYWwuY2xvc2UoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgLy8gaW50ZW5kZWQgZW1wdHlcbiAgICB9XG4gIH1cblxuICBhc3luYyBzYXZlV2lkZ2V0c1RvRGFzaGJvYXJkKCkge1xuICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IHRoaXMuZWRpdE1vZGVTZXJ2aWNlLmdldEN1cnJlbnRTdGF0ZSgpO1xuICAgIHRoaXMubW8uYzh5X0Rhc2hib2FyZC5jaGlsZHJlbiA9IGN1cnJlbnRTdGF0ZS5jaGlsZHJlbjtcblxuICAgIHRoaXMubW8uYzh5X0Rhc2hib2FyZC5oaXN0b3J5RGVzY3JpcHRpb24gPSB7XG4gICAgICBjaGFuZ2VUeXBlOiAndXBkYXRlJyxcbiAgICAgIHdpZGdldENoYW5nZXM6IHRoaXMubWFwU3RhdGVUb0hpc3RvcnlEZXNjcmlwdGlvbihjdXJyZW50U3RhdGUuY2hhbmdlSGlzdG9yeSlcbiAgICB9O1xuICAgIGF3YWl0IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UudXBkYXRlKHRoaXMubW8pO1xuICAgIHRoaXMuZWRpdE1vZGVTZXJ2aWNlLnJlc2V0KCk7XG4gICAgdGhpcy5lZGl0TW9kZVNlcnZpY2UuaW5pdCh7XG4gICAgICBuYW1lOiBEQVNIQk9BUkRfQ0hJTERSRU5fU1RBVEVfTkFNRS5pbml0aWFsLFxuICAgICAgY2hpbGRyZW46IHRoaXMubW8uYzh5X0Rhc2hib2FyZC5jaGlsZHJlbixcbiAgICAgIGNoYW5nZUhpc3Rvcnk6IHt9XG4gICAgfSk7XG5cbiAgICB0aGlzLmlzQ29weURpc2FibGVkID0gdGhpcy5nZXREYXNoYm9hcmRDb3B5UGVybWlzc2lvblN0YXRlKCk7XG4gIH1cblxuICBhc3luYyBjYW5jZWxFZGl0TW9kZShvbkRlYWN0aXZhdGUgPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGRhc2hib2FyZENoaWxkcmVuID0gdGhpcy5lZGl0TW9kZVNlcnZpY2UucmVzZXQoKTtcbiAgICBpZiAodGhpcy5kYXNoYm9hcmQpIHtcbiAgICAgIHRoaXMuZGFzaGJvYXJkLmhpc3RvcnlEZXNjcmlwdGlvbiA9IHt9O1xuICAgIH1cbiAgICB0aGlzLndpZGdldHNEYXNoYm9hcmQuZWRpdE1vZGUkLm5leHQoZmFsc2UpO1xuICAgIGlmICghb25EZWFjdGl2YXRlKSB7XG4gICAgICAvLyB3aGVuIHNldFdpZGdldHMgaXMgY2FsbGVkIGR1cmluZyBuYXZpZ2F0aW9uIGZyb20gZGV2aWNlIHRvIGRldmljZSwgbmF2aWdhdGlvbiBmYWlsc1xuICAgICAgYXdhaXQgdGhpcy5zZXRXaWRnZXRzKGRhc2hib2FyZENoaWxkcmVuLmNoaWxkcmVuKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBhIHdpZGdldCBvciBhZGRzIGEgbmV3IG9uZSBpZiBpdCBkb2Vzbid0IGV4aXN0IG9uXG4gICAqIHRoZSBkYXNoYm9hcmQuXG4gICAqIEBwYXJhbSB3aWRnZXQgVGhlIG5ldyB3aWRnZXRcbiAgICovXG4gIGFzeW5jIHVwZGF0ZVdpZGdldCh3aWRnZXQpIHtcbiAgICBjb25zdCBpbmRleCA9IGZpbmRJbmRleCh0aGlzLndpZGdldHMsIHsgaWQ6IHdpZGdldC5pZCB9KTtcbiAgICBjb25zdCBpc05ldyA9IGluZGV4ID09PSAtMTtcbiAgICBjb25zdCBtYXBwZWRXaWRnZXQgPSBhd2FpdCB0aGlzLndpZGdldFNlcnZpY2UubWFwTGVnYWN5KHdpZGdldCk7XG4gICAgaWYgKGlzTmV3KSB7XG4gICAgICB0aGlzLndpZGdldHMucHVzaChtYXBwZWRXaWRnZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndpZGdldHMuc3BsaWNlKGluZGV4LCAxLCBtYXBwZWRXaWRnZXQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgd2lkZ2V0IGFuZCByZWFycmFuZ2VzIHRoZSByZW1haW5pbmcgb25lc1xuICAgKiBpZiBuZWNlc3NhcnkuXG4gICAqIEBwYXJhbSBjaGFuZ2UgVGhlIGNoYW5nZSBldmVudC5cbiAgICovXG4gIGFzeW5jIGRlbGV0ZVdpZGdldChjaGFuZ2U6IFdpZGdldENoYW5nZSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IHdpZGdldCwgc291cmNlIH0gPSBjaGFuZ2U7XG4gICAgICBjb25zdCByZW1vdmVkID0gdGhpcy53aWRnZXRzLmZpbmQoKHsgaWQgfSkgPT4gaWQgPT09IHdpZGdldC5pZCk7XG4gICAgICB0aGlzLndpZGdldHMuc3BsaWNlKHRoaXMud2lkZ2V0cy5pbmRleE9mKHJlbW92ZWQpLCAxKTtcblxuICAgICAgY29uc3QgeyBkYXNoYm9hcmQgfSA9IHNvdXJjZTtcbiAgICAgIGRhc2hib2FyZC5jaGlsZHJlbiA9IGRhc2hib2FyZC5jaGlsZHJlbi5maWx0ZXIoYyA9PiBjLmRhdGEuaWQgIT09IHdpZGdldC5pZCk7XG5cbiAgICAgIC8vIHVzaW5nIHNldFRpbWVvdXQgdG8gZ2l2ZSB0aGUgY29tcG9uZW50IHRoZSBjaGFuY2UgdG8gcmVtb3ZlIGl0LlxuICAgICAgY29uc3Qgc2xlZXAgPSB0aW1lb3V0ID0+IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCB0aW1lb3V0KSk7XG4gICAgICBhd2FpdCBzbGVlcCgwKTtcblxuICAgICAgY29uc3QgY2hpbGQgPSBuZXcgRGFzaGJvYXJkQ2hpbGRDaGFuZ2Uoc291cmNlKTtcbiAgICAgIGNoaWxkLmNvbGxhcHNlVXBBbGwoKTtcbiAgICAgIHRoaXMudXBkYXRlRGFzaGJvYXJkQ2hpbGRyZW4oY2hpbGQsIERBU0hCT0FSRF9DSElMRFJFTl9TVEFURV9OQU1FLnJlbW92ZWQsICdyZW1vdmVkJywgW1xuICAgICAgICB3aWRnZXRcbiAgICAgIF0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuYWxlcnQuYWRkU2VydmVyRmFpbHVyZShlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyBhIHdvcmthcm91bmQgdG8gZW5zdXJlIHRoYXQgdGhlIGRyYWdnZWQtZWxlbWVudFxuICAgKiAod2hpY2ggaXMgYXR0YWNoZWQgdG8gdGhlIGJvZHkpIGhhcyB0aGUgcmlnaHQgc3R5bGluZy5cbiAgICovXG4gIGFkZERhc2hib2FyZENsYXNzVG9Cb2R5KCkge1xuICAgIHRoaXMuY2xhc3Muc3BsaXQoJyAnKS5mb3JFYWNoKGNzc0NsYXNzID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoZG9jdW1lbnQuYm9keSwgY3NzQ2xhc3MpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYSB3b3JrYXJvdW5kIHRvIGVuc3VyZSB0aGF0IHRoZSBkcmFnZ2VkLWVsZW1lbnRcbiAgICogKHdoaWNoIGlzIGF0dGFjaGVkIHRvIHRoZSBib2R5KSBoYXMgdGhlIHJpZ2h0IHN0eWxpbmcuXG4gICAqL1xuICByZW1vdmVEYXNoYm9hcmRDbGFzc0Zyb21Cb2R5KCkge1xuICAgIHRoaXMuY2xhc3Muc3BsaXQoJyAnKS5mb3JFYWNoKGNzc0NsYXNzID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwgY3NzQ2xhc3MpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgb25Mb2FkKHRyYWNrRXhwZXJpZW5jZT86IGJvb2xlYW4pIHtcbiAgICB0aGlzLmhhc1Blcm1pc3Npb25Ub0VkaXREYXNoYm9hcmQgPSB0aGlzLmRhc2hib2FyZFxuICAgICAgPyBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmNhbkVkaXREYXNoYm9hcmQodGhpcy5tbylcbiAgICAgIDogZmFsc2U7XG4gICAgdGhpcy5jYW5Db3B5ID1cbiAgICAgIHRoaXMuX2NhbkNvcHkgJiZcbiAgICAgICh0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmlzRGV2aWNlRGFzaGJvYXJkKHRoaXMubW8pIHx8XG4gICAgICAgIHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuaXNEZXZpY2VUeXBlKHRoaXMubW8pIHx8XG4gICAgICAgIHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuaXNHcm91cERhc2hib2FyZCh0aGlzLm1vKSk7XG4gICAgY29uc3QgZGFzaGJvYXJkQ2hpbGRyZW46IENvbnRleHREYXNoYm9hcmRbJ2NoaWxkcmVuJ10gPSBjbG9uZURlZXAoXG4gICAgICB0aGlzLm1vLmM4eV9EYXNoYm9hcmQ/LmNoaWxkcmVuXG4gICAgKTtcbiAgICBjb25zdCBkYXNoYm9hcmRDbGFzc2VzID0ge1xuICAgICAgJ2M4eS1ncmlkLWRhc2hib2FyZCc6IHRydWUsXG4gICAgICBkYXNoYm9hcmQ6IHRydWUsXG4gICAgICAuLi50aGlzLmRhc2hib2FyZD8uY2xhc3Nlc1xuICAgIH07XG4gICAgdGhpcy5pc0NvcHlEaXNhYmxlZCA9IHRoaXMuZGFzaGJvYXJkXG4gICAgICA/IHRoaXMuZ2V0RGFzaGJvYXJkQ29weVBlcm1pc3Npb25TdGF0ZSgpXG4gICAgICA6IHsgc3RhdGU6IGZhbHNlLCByZWFzb246IG51bGwgfTtcbiAgICB0aGlzLmVkaXRNb2RlU2VydmljZS5pbml0KHtcbiAgICAgIG5hbWU6IGdldHRleHQoJ0luaXRpYWwgc3RhdGUnKSxcbiAgICAgIGNoaWxkcmVuOiBkYXNoYm9hcmRDaGlsZHJlbixcbiAgICAgIGNoYW5nZUhpc3Rvcnk6IHt9XG4gICAgfSk7XG5cbiAgICBhd2FpdCB0aGlzLnNldFdpZGdldHMoZGFzaGJvYXJkQ2hpbGRyZW4sIHRyYWNrRXhwZXJpZW5jZSk7XG4gICAgdGhpcy5jbGFzcyA9IE9iamVjdC5rZXlzKGRhc2hib2FyZENsYXNzZXMpLmpvaW4oJyAnKTtcbiAgICBpZiAodGhpcy5pc1JlcG9ydCkge1xuICAgICAgdGhpcy5hZGRSZXBvcnREYXNoYm9hcmRTZXR0aW5ncygpO1xuICAgIH1cbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgaWYgKCF0aGlzLmRhc2hib2FyZCkge1xuICAgICAgdGhpcy5kYXNoYm9hcmREZXRhaWxzLnNob3coZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLm9uTG9hZEdTRXZlbnQoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkYXNoYm9hcmRQcmV2aWV3KGxheW91dENoYW5nZXM6IENvbnRleHREYXNoYm9hcmQpIHtcbiAgICBpZiAobGF5b3V0Q2hhbmdlcz8uY2xhc3Nlcykge1xuICAgICAgY29uc3QgZGFzaGJvYXJkQ2xhc3NlcyA9IHtcbiAgICAgICAgJ2M4eS1ncmlkLWRhc2hib2FyZCc6IHRydWUsXG4gICAgICAgIGRhc2hib2FyZDogdHJ1ZSxcbiAgICAgICAgLi4ubGF5b3V0Q2hhbmdlcy5jbGFzc2VzXG4gICAgICB9O1xuICAgICAgdGhpcy5jbGFzcyA9IE9iamVjdC5rZXlzKGRhc2hib2FyZENsYXNzZXMpLmpvaW4oJyAnKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGFzaGJvYXJkKSB7XG4gICAgICB0aGlzLmRhc2hib2FyZC53aWRnZXRDbGFzc2VzID0ge1xuICAgICAgICAuLi50aGlzLmRhc2hib2FyZC53aWRnZXRDbGFzc2VzLFxuICAgICAgICAuLi5sYXlvdXRDaGFuZ2VzLndpZGdldENsYXNzZXNcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVsb2FkRGFzaGJvYXJkKGRhc2hib2FyZE1vOiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCkge1xuICAgIHRoaXMuZGFzaGJvYXJkID0gZGFzaGJvYXJkTW8uYzh5X0Rhc2hib2FyZDtcbiAgICB0aGlzLm1vID0gZGFzaGJvYXJkTW87XG4gICAgYXdhaXQgdGhpcy5vbkxvYWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2V0V2lkZ2V0cyhcbiAgICBkYXNoYm9hcmRDaGlsZHJlbjogQ29udGV4dERhc2hib2FyZFsnY2hpbGRyZW4nXSxcbiAgICB0cmFja0V4cGVyaWVuY2UgPSBmYWxzZVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBpc0RldmljZVR5cGUgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmlzRGV2aWNlVHlwZSh0aGlzLm1vKTtcbiAgICB0aGlzLndpZGdldHMgPSBhd2FpdCBQcm9taXNlLmFsbDxXaWRnZXQ+KFxuICAgICAgT2JqZWN0LnZhbHVlcyhkYXNoYm9hcmRDaGlsZHJlbiB8fCB7fSkubWFwKHdpZGdldCA9PiB7XG4gICAgICAgIHdpZGdldC5jbGFzc2VzID0gdGhpcy5tZXJnZVdpZGdldENsYXNzZXMod2lkZ2V0KTtcbiAgICAgICAgaWYgKGlzRGV2aWNlVHlwZSkge1xuICAgICAgICAgIHRoaXMuYXBwbHlEZXZpY2VUYXJnZXQod2lkZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHJhY2tFeHBlcmllbmNlKSB7XG4gICAgICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudCgnbG9hZFdpZGdldCcsIHtcbiAgICAgICAgICAgIHdpZGdldE5hbWU6IHdpZGdldC5jb21wb25lbnRJZCB8fCB3aWRnZXQubmFtZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldFNlcnZpY2UubWFwTGVnYWN5KHdpZGdldCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRDb250ZXh0RGFzaGJvYXJkKCkge1xuICAgIHRoaXMuZGF0YVN1YiA9IHRoaXMucm91dGUuZGF0YS5zdWJzY3JpYmUoKHsgZGFzaGJvYXJkLCBpc1JlcG9ydCB9KSA9PiB7XG4gICAgICB0aGlzLmNvbnRleHQgPSB0aGlzLnJvdXRlLnBhcmVudC5zbmFwc2hvdC5kYXRhLmNvbnRleHREYXRhIHx8IHt9O1xuICAgICAgdGhpcy50aXRsZSA9IHRoaXMuY29udGV4dD8ubmFtZTtcbiAgICAgIHRoaXMubW8gPSBkYXNoYm9hcmQ7XG4gICAgICB0aGlzLmRhc2hib2FyZCA9IHRoaXMubW8uYzh5X0Rhc2hib2FyZDtcbiAgICAgIHRoaXMuaXNSZXBvcnQgPSBpc1JlcG9ydCB8fCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmlzUmVwb3J0KHRoaXMubW8pO1xuICAgICAgaWYgKHRoaXMuaXNSZXBvcnQgJiYgdGhpcy5kYXNoYm9hcmQgJiYgIXRoaXMuZGFzaGJvYXJkPy5uYW1lKSB7XG4gICAgICAgIHRoaXMuZGFzaGJvYXJkLm5hbWUgPSB0aGlzLnRpdGxlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNSZXBvcnQgJiYgdGhpcy5kYXNoYm9hcmQpIHtcbiAgICAgICAgdGhpcy5kYXNoYm9hcmQuYzh5X0lzTmF2aWdhdG9yTm9kZSA9IHRoaXMuY29udGV4dC5jOHlfSXNOYXZpZ2F0b3JOb2RlO1xuICAgICAgfVxuICAgICAgdGhpcy5wYXRjaFNlbnNvclBob25lRGFzaGJvYXJkKHRoaXMuZGFzaGJvYXJkLCB0aGlzLm1vLm93bmVyLCB0aGlzLmNvbnRleHQ/LnR5cGUpO1xuICAgICAgdGhpcy5vbkxvYWQodHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVG8gZW5hYmxlIHRyYW5zbGF0aW9uIGZvciB3aWRnZXRzIHdpdGhpbiB0aGUgZGFzaGJvYXJkLCB0aGUgXCJ0cmFuc2xhdGVXaWRnZXRUaXRsZVwiIGZsYWcgbXVzdCBiZSBlbmFibGVkLlxuICAgKiBUaGUgcHJvcGVydHkgbmVlZHMgdG8gYmUgcGF0Y2hlZCwgYXMgdGhlIFwiU2Vuc29yIEFwcFwiIGRvZXMgbm90IHByb3ZpZGUgdGhpcyBzZXR0aW5nLlxuICAgKi9cbiAgcHJpdmF0ZSBwYXRjaFNlbnNvclBob25lRGFzaGJvYXJkKGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZCwgb3duZXI6IHN0cmluZywgdHlwZTogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGUgPT09ICdjOHlfU2Vuc29yUGhvbmUnICYmIG93bmVyPy5pbmNsdWRlcygnZGV2aWNlX3Bob25lJykpIHtcbiAgICAgIGRhc2hib2FyZC50cmFuc2xhdGVXaWRnZXRUaXRsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkTmFtZWREYXNoYm9hcmQoKSB7XG4gICAgdGhpcy5kYXRhU3ViID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZVxuICAgICAgLmdldE5hbWVkRGFzaGJvYXJkT3JDcmVhdGUodGhpcy5uYW1lLCB0aGlzLmRlZmF1bHRXaWRnZXRzLCB0aGlzLmNvbnRleHQpXG4gICAgICAuc3Vic2NyaWJlKG1vID0+IHtcbiAgICAgICAgdGhpcy5jb250ZXh0ID0gdGhpcy5jb250ZXh0IHx8IHt9O1xuICAgICAgICB0aGlzLm1vID0gbW87XG4gICAgICAgIHRoaXMuZGFzaGJvYXJkID0gdGhpcy5tby5jOHlfRGFzaGJvYXJkO1xuICAgICAgICB0aGlzLm9uTG9hZCh0cnVlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZVdpZGdldENsYXNzZXMod2lkZ2V0OiBXaWRnZXQpOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiB7XG4gICAgY29uc3QgaGFzSGVhZGVyQ2xhc3MgPSBXSURHRVRfSEVBREVSX0NMQVNTRVMuZmluZChcbiAgICAgIGVsID0+IHdpZGdldC5jbGFzc2VzICYmIHdpZGdldC5jbGFzc2VzW2VsLmNsYXNzXVxuICAgICk7XG4gICAgY29uc3Qgd2lkZ2V0Q2xhc3NlcyA9IGhhc0hlYWRlckNsYXNzXG4gICAgICA/IHsgLi4ud2lkZ2V0LmNsYXNzZXMgfVxuICAgICAgOiB7IC4uLnRoaXMuZGFzaGJvYXJkLndpZGdldENsYXNzZXMsIC4uLndpZGdldC5jbGFzc2VzIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIGNhcmQ6IHRydWUsXG4gICAgICAnY2FyZC1kYXNoYm9hcmQnOiB0cnVlLFxuICAgICAgW2tlYmFiQ2FzZSh3aWRnZXQuY29tcG9uZW50SWQgfHwgd2lkZ2V0Lm5hbWUpXTogdHJ1ZSxcbiAgICAgIC4uLndpZGdldENsYXNzZXNcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wb25lbnRUb1dpZGdldChjaGlsZDogRGFzaGJvYXJkQ2hpbGRDb21wb25lbnQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ub21pdChjaGlsZC5kYXRhLCBbJ2NvbXBvbmVudFRyYW5zZm9ybUNvbmZpZ1dpdGhDb250ZXh0JywgJ3RyYW5zZm9ybUNvbmZpZ1dpdGhDb250ZXh0J10pLCAvLyByZW1vdmUgbGVnYWN5XG4gICAgICAuLi4oe1xuICAgICAgICBfeDogY2hpbGQueCxcbiAgICAgICAgX3k6IGNoaWxkLnksXG4gICAgICAgIF93aWR0aDogY2hpbGQud2lkdGgsXG4gICAgICAgIF9oZWlnaHQ6IGNoaWxkLmhlaWdodFxuICAgICAgfSBhcyBXaWRnZXQpXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkUmVwb3J0RGFzaGJvYXJkU2V0dGluZ3MoKSB7XG4gICAgdGhpcy5zZXRUaXRsZSA9IHRydWU7XG4gICAgdGhpcy50aXRsZSA9IHRoaXMuY29udGV4dD8ubmFtZSB8fCBnZXR0ZXh0KCdOZXcgcmVwb3J0Jyk7XG4gICAgdGhpcy5icmVhZGNydW1iU2V0dGluZ3MgPSB7XG4gICAgICBpY29uOiAndGgnLFxuICAgICAgbGFiZWw6ICdSZXBvcnRzJyxcbiAgICAgIHBhdGg6ICdyZXBvcnRzJ1xuICAgIH07XG4gICAgdGhpcy5jYW5EZWxldGUgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGFzaGJvYXJkQ29weVBlcm1pc3Npb25TdGF0ZSgpOiBEYXNoYm9hcmRDb3B5UGVybWlzc2lvbiB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmhhc1Blcm1pc3Npb25zVG9Db3B5RGFzaGJvYXJkKCkpIHtcbiAgICAgIHJldHVybiB7IHN0YXRlOiBmYWxzZSwgcmVhc29uOiBDb3B5RGFzaGJvYXJkRGlzYWJsZWRSZWFzb24uUEVSTUlTU0lPTlMgfTtcbiAgICB9XG4gICAgY29uc3QgYWxsRGFzaGJvYXJkQ2hpbGRyZW5BcmVWYWxpZCA9IGV2ZXJ5KHRoaXMubW8uYzh5X0Rhc2hib2FyZC5jaGlsZHJlbiwgY2hpbGQgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gY2hpbGQuY29uZmlnIHx8IHt9O1xuICAgICAgY29uc3QgZGF0YVBvaW50cyA9IGNvbmZpZy5kYXRhcG9pbnRzIHx8IFtdO1xuICAgICAgcmV0dXJuICEoXG4gICAgICAgIChjb25maWcuZGV2aWNlICYmIGNvbmZpZy5kZXZpY2UuaWQgIT09IHRoaXMuY29udGV4dC5pZCkgfHxcbiAgICAgICAgc29tZShkYXRhUG9pbnRzLCBkYXRhUG9pbnQgPT4gZGF0YVBvaW50Ll9fdGFyZ2V0Py5pZCAhPT0gdGhpcy5jb250ZXh0LmlkKVxuICAgICAgKTtcbiAgICB9KTtcbiAgICBpZiAoIWFsbERhc2hib2FyZENoaWxkcmVuQXJlVmFsaWQpIHtcbiAgICAgIHJldHVybiB7IHN0YXRlOiBmYWxzZSwgcmVhc29uOiBDb3B5RGFzaGJvYXJkRGlzYWJsZWRSZWFzb24uV1JPTkdfUkVGRVJFTkNFIH07XG4gICAgfVxuICAgIHJldHVybiB7IHN0YXRlOiB0cnVlIH07XG4gIH1cblxuICBwcml2YXRlIHNldE5ld1N0YXRlKFxuICAgIHN0YXRlOiBQaWNrPERhc2hib2FyZENoaWxkcmVuU3RhdGUsICduYW1lJyB8ICdjaGlsZHJlbic+LFxuICAgIGRlc2NyaXB0aW9uUHJvcDoga2V5b2YgRGFzaGJvYXJkSGlzdG9yeURlc2NyaXB0aW9uWyd3aWRnZXRDaGFuZ2VzJ10sXG4gICAgd2lkZ2V0c0NoYW5nZWQ6IFdpZGdldFtdXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5nZXREZXNjcmlwdGlvbkZvck5ld1N0YXRlKGRlc2NyaXB0aW9uUHJvcCwgd2lkZ2V0c0NoYW5nZWQpO1xuICAgIHRoaXMuZWRpdE1vZGVTZXJ2aWNlLm5ld1N0YXRlKHsgLi4uc3RhdGUsIGNoYW5nZUhpc3Rvcnk6IGRlc2NyaXB0aW9uIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZXNjcmlwdGlvbkZvck5ld1N0YXRlKFxuICAgIGRlc2NyaXB0aW9uUHJvcDoga2V5b2YgRGFzaGJvYXJkSGlzdG9yeURlc2NyaXB0aW9uWyd3aWRnZXRDaGFuZ2VzJ10sXG4gICAgd2lkZ2V0c0NoYW5nZWQ6IFdpZGdldFtdXG4gICk6IERhc2hib2FyZENoaWxkcmVuU3RhdGVbJ2NoYW5nZUhpc3RvcnknXSB7XG4gICAgY29uc3QgY2hhbmdlSGlzdG9yeSA9IHRoaXMuZWRpdE1vZGVTZXJ2aWNlLmdldEN1cnJlbnRTdGF0ZSgpLmNoYW5nZUhpc3Rvcnk7XG4gICAgaWYgKCFjaGFuZ2VIaXN0b3J5W2Rlc2NyaXB0aW9uUHJvcF0pIHtcbiAgICAgIGNoYW5nZUhpc3RvcnlbZGVzY3JpcHRpb25Qcm9wXSA9IHt9O1xuICAgIH1cbiAgICB3aWRnZXRzQ2hhbmdlZC5mb3JFYWNoKHcgPT4ge1xuICAgICAgaWYgKGRlc2NyaXB0aW9uUHJvcCA9PT0gJ3JlbW92ZWQnICYmIGNoYW5nZUhpc3RvcnkuYWRkZWQ/Llt3LmlkXSkge1xuICAgICAgICAvLyBpZiB3aWRnZXQgd2FzIGFkZGVkIGR1cmluZyBjdXJyZW50IGVkaXQgc2Vzc2lvbiBhbmQgdGhlbiByZW1vdmVkLCBpdCBzaG91bGQgbm90IGJlIGF0IGRlc2NyaXB0aW9uIGF0IGFsbFxuICAgICAgICBkZWxldGUgY2hhbmdlSGlzdG9yeS5hZGRlZFt3LmlkXTtcbiAgICAgICAgaWYgKGNoYW5nZUhpc3RvcnkuY29uZmlnPy5bdy5pZF0pIHtcbiAgICAgICAgICBkZWxldGUgY2hhbmdlSGlzdG9yeS5jb25maWdbdy5pZF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZUhpc3RvcnkuYXJyYW5nZW1lbnQ/Llt3LmlkXSkge1xuICAgICAgICAgIGRlbGV0ZSBjaGFuZ2VIaXN0b3J5Py5hcnJhbmdlbWVudFt3LmlkXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgKGRlc2NyaXB0aW9uUHJvcCA9PT0gJ2NvbmZpZycgfHwgZGVzY3JpcHRpb25Qcm9wID09PSAnYXJyYW5nZW1lbnQnKSAmJlxuICAgICAgICBjaGFuZ2VIaXN0b3J5LmFkZGVkPy5bdy5pZF1cbiAgICAgICkge1xuICAgICAgICAvLyBpZiB3aWRnZXQgd2FzIGFkZGVkIGFuZCB0aGVuIG1vZGlmaWVkIGluIGN1cnJlbnQgZWRpdCBzZXNzaW9uLCBpdCBzaG91bGQgb25seSBiZSBpbmRpY2F0ZWQgYXMgYWRkZWRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoYW5nZUhpc3RvcnlbZGVzY3JpcHRpb25Qcm9wXVt3LmlkXSA9IHc7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2hhbmdlSGlzdG9yeTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwU3RhdGVUb0hpc3RvcnlEZXNjcmlwdGlvbihcbiAgICBkZXNjcmlwdGlvbjogRGFzaGJvYXJkQ2hpbGRyZW5TdGF0ZVsnY2hhbmdlSGlzdG9yeSddXG4gICk6IERhc2hib2FyZEhpc3RvcnlEZXNjcmlwdGlvblsnd2lkZ2V0Q2hhbmdlcyddIHtcbiAgICBjb25zdCBoaXN0b3J5RGVzY3JpcHRpb246IERhc2hib2FyZEhpc3RvcnlEZXNjcmlwdGlvblsnd2lkZ2V0Q2hhbmdlcyddID0ge307XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZGVzY3JpcHRpb24pKSB7XG4gICAgICBjb25zdCB3aWRnZXRzID0gT2JqZWN0LnZhbHVlcyh2YWx1ZSk7XG4gICAgICBpZiAoIXdpZGdldHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaGlzdG9yeURlc2NyaXB0aW9uW2tleV0gPSBPYmplY3QudmFsdWVzKHZhbHVlKS5tYXAod2lkZ2V0ID0+IHdpZGdldC50aXRsZSk7XG4gICAgfVxuICAgIHJldHVybiBoaXN0b3J5RGVzY3JpcHRpb247XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9uRGVsZXRlR1NFdmVudCgpIHtcbiAgICBjb25zdCBwYXJlbnROYW1lID0gYXdhaXQgdGhpcy5jb252ZXJ0U3RyaW5nVG9IYXNoKHRoaXMuY29udGV4dD8ubmFtZSk7XG4gICAgY29uc3QgZGFzaGJvYXJkTmFtZSA9IGF3YWl0IHRoaXMuY29udmVydFN0cmluZ1RvSGFzaCh0aGlzLmRhc2hib2FyZD8ubmFtZSk7XG5cbiAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuRVZFTlRTLkRBU0hCT0FSRFMsIHtcbiAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5DT01QT05FTlRTLkRFTEVURV9EQVNIQk9BUkQsXG4gICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQUNUSU9OUy5ERUxFVEUsXG4gICAgICBuYW1lOiBkYXNoYm9hcmROYW1lLFxuICAgICAgaWQ6IHRoaXMubW8uaWQsXG4gICAgICBuYW1lSWQ6IGAke2Rhc2hib2FyZE5hbWV9XyR7dGhpcy5tby5pZH1gLFxuICAgICAgcGFyZW50QXNzZXRJZDogdGhpcy5jb250ZXh0Py5pZCA/IHRoaXMuY29udGV4dC5pZCA6ICdub0NvbnRleHQnLFxuICAgICAgcGFyZW50QXNzZXROYW1lOiB0aGlzLmNvbnRleHQ/LmlkID8gcGFyZW50TmFtZSA6ICdub0NvbnRleHQnLFxuICAgICAgcGFyZW50QXNzZXRUeXBlOiB0aGlzLmNvbnRleHQ/LmlkID8gdGhpcy5jb250ZXh0LnR5cGUgOiAnbm9Db250ZXh0JyxcbiAgICAgIHBhcmVudEFzc2V0TmFtZUlkOiB0aGlzLmNvbnRleHQ/LmlkID8gYCR7cGFyZW50TmFtZX1fJHt0aGlzLmNvbnRleHQuaWR9YCA6ICdub0NvbnRleHQnLFxuICAgICAgcGFyZW50QXNzZXROYW1lRGFzaGJvYXJkTmFtZTogdGhpcy5jb250ZXh0Py5pZFxuICAgICAgICA/IGAke3BhcmVudE5hbWV9XyR7ZGFzaGJvYXJkTmFtZX1gXG4gICAgICAgIDogJ25vQ29udGV4dCcsXG4gICAgICBwYXJlbnRBc3NldElkRGFzaGJvYXJkSWQ6IHRoaXMuY29udGV4dD8uaWQgPyBgJHt0aGlzLmNvbnRleHQuaWR9XyR7dGhpcy5tby5pZH1gIDogJ25vQ29udGV4dCcsXG4gICAgICBwYXJlbnRBc3NldE5hbWVEYXNoYm9hcmRJZDogdGhpcy5jb250ZXh0Py5pZCA/IGAke3BhcmVudE5hbWV9XyR7dGhpcy5tby5pZH1gIDogJ25vQ29udGV4dCcsXG4gICAgICBwYXJlbnRBc3NldE5hbWVJZERhc2hib2FyZE5hbWVJZDogdGhpcy5jb250ZXh0Py5pZFxuICAgICAgICA/IGAke3BhcmVudE5hbWV9XyR7dGhpcy5jb250ZXh0LmlkfV8ke2Rhc2hib2FyZE5hbWV9XyR7dGhpcy5tby5pZH1gXG4gICAgICAgIDogJ25vQ29udGV4dCcsXG4gICAgICBkYXNoYm9hcmRUeXBlOiB0aGlzLmRhc2hib2FyZC5kZXZpY2VUeXBlID8gdGhpcy5kYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlIDogbnVsbCxcbiAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuZ2V0Q29udGV4dEZvckdTKHRoaXMuY29udGV4dClcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgb25Mb2FkR1NFdmVudCgpIHtcbiAgICBjb25zdCBwYXJlbnROYW1lID0gYXdhaXQgdGhpcy5jb252ZXJ0U3RyaW5nVG9IYXNoKHRoaXMuY29udGV4dD8ubmFtZSk7XG4gICAgY29uc3QgZGFzaGJvYXJkTmFtZSA9XG4gICAgICAoYXdhaXQgdGhpcy5jb252ZXJ0U3RyaW5nVG9IYXNoKHRoaXMuZGFzaGJvYXJkPy5uYW1lKSkgPz9cbiAgICAgIHRoaXMuZXh0cmFjdERlZmF1bHREYXNoYm9hcmROYW1lKHRoaXMubW8pID8/XG4gICAgICAnbm9uZSc7XG5cbiAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFxuICAgICAgdGhpcy5pc1JlcG9ydFxuICAgICAgICA/IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuRVZFTlRTLlJFUE9SVFNcbiAgICAgICAgOiBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkVWRU5UUy5EQVNIQk9BUkRTLFxuICAgICAge1xuICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQ09NUE9ORU5UUy5EQVNIQk9BUkRfVklFVyxcbiAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkFDVElPTlMuTE9BRCxcbiAgICAgICAgbmFtZTogZGFzaGJvYXJkTmFtZSxcbiAgICAgICAgaWQ6IHRoaXMubW8uaWQsXG4gICAgICAgIG5hbWVJZDogYCR7ZGFzaGJvYXJkTmFtZX1fJHt0aGlzLm1vLmlkfWAsXG4gICAgICAgIHBhcmVudEFzc2V0SWQ6IHRoaXMuY29udGV4dD8uaWQgPyB0aGlzLmNvbnRleHQuaWQgOiAnbm9Db250ZXh0JyxcbiAgICAgICAgcGFyZW50QXNzZXROYW1lOiB0aGlzLmNvbnRleHQ/LmlkID8gcGFyZW50TmFtZSA6ICdub0NvbnRleHQnLFxuICAgICAgICBwYXJlbnRBc3NldFR5cGU6IHRoaXMuY29udGV4dD8uaWQgPyB0aGlzLmNvbnRleHQudHlwZSA6ICdub0NvbnRleHQnLFxuICAgICAgICBwYXJlbnRBc3NldE5hbWVJZDogdGhpcy5jb250ZXh0Py5pZCA/IGAke3BhcmVudE5hbWV9XyR7dGhpcy5jb250ZXh0LmlkfWAgOiAnbm9Db250ZXh0JyxcbiAgICAgICAgcGFyZW50QXNzZXROYW1lRGFzaGJvYXJkTmFtZTogdGhpcy5jb250ZXh0Py5pZFxuICAgICAgICAgID8gYCR7cGFyZW50TmFtZX1fJHtkYXNoYm9hcmROYW1lfWBcbiAgICAgICAgICA6ICdub0NvbnRleHQnLFxuICAgICAgICBwYXJlbnRBc3NldElkRGFzaGJvYXJkSWQ6IHRoaXMuY29udGV4dD8uaWRcbiAgICAgICAgICA/IGAke3RoaXMuY29udGV4dC5pZH1fJHt0aGlzLm1vLmlkfWBcbiAgICAgICAgICA6ICdub0NvbnRleHQnLFxuICAgICAgICBwYXJlbnRBc3NldE5hbWVEYXNoYm9hcmRJZDogdGhpcy5jb250ZXh0Py5pZCA/IGAke3BhcmVudE5hbWV9XyR7dGhpcy5tby5pZH1gIDogJ25vQ29udGV4dCcsXG4gICAgICAgIHBhcmVudEFzc2V0TmFtZUlkRGFzaGJvYXJkTmFtZUlkOiB0aGlzLmNvbnRleHQ/LmlkXG4gICAgICAgICAgPyBgJHtwYXJlbnROYW1lfV8ke3RoaXMuY29udGV4dC5pZH1fJHtkYXNoYm9hcmROYW1lfV8ke3RoaXMubW8uaWR9YFxuICAgICAgICAgIDogJ25vQ29udGV4dCcsXG4gICAgICAgIGRhc2hib2FyZFR5cGU6IHRoaXMuZGFzaGJvYXJkLmRldmljZVR5cGUgPyB0aGlzLmRhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWUgOiBudWxsLFxuICAgICAgICBjb250ZXh0OiB0aGlzLmlzUmVwb3J0XG4gICAgICAgICAgPyBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkNPTlRFWFQuUkVQT1JUXG4gICAgICAgICAgOiB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmdldENvbnRleHRGb3JHUyh0aGlzLmNvbnRleHQpXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdERlZmF1bHREYXNoYm9hcmROYW1lKG9iajogSU1hbmFnZWRPYmplY3QpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBuYW1lS2V5ID0gT2JqZWN0LmtleXMob2JqKS5maW5kKGtleSA9PiBrZXkuc3RhcnRzV2l0aCgnYzh5X0Rhc2hib2FyZCFuYW1lIScpKTtcbiAgICBpZiAobmFtZUtleSkge1xuICAgICAgcmV0dXJuIG5hbWVLZXkuc3BsaXQoJyEnKS5wb3AoKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBAbWVtb2l6ZSgpXG4gIHByaXZhdGUgYXN5bmMgY29udmVydFN0cmluZ1RvSGFzaChzdHI6IHN0cmluZykge1xuICAgIGlmICghc3RyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmdhaW5zaWdodFNlcnZpY2Uuc2hvdWxkU2VuZFBpaURhdGEoKSlcbiAgICAgID8gc3RyXG4gICAgICA6IHRoaXMuZ2FpbnNpZ2h0U2VydmljZS5oYXNoR3JvdXBOYW1lKHN0cik7XG4gIH1cbn1cbiIsIjxjOHktdGl0bGUgKm5nSWY9XCJ0aXRsZVwiPlxuICB7eyB0aXRsZSB9fVxuPC9jOHktdGl0bGU+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiXG4gIFtwcmlvcml0eV09XCIxMDAwMFwiXG4gICpuZ0lmPVwiZGFzaGJvYXJkPy5kZXZpY2VUeXBlICYmIGRhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWVcIlxuPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4tY2xlYW4gYnRuLWxpbmtcIlxuICAgIHBvcG92ZXJUaXRsZT1cInt7ICdEYXNoYm9hcmQgdGVtcGxhdGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3BvcG92ZXJdPVwiZGFzaGJvYXJkVHlwZVBvcG92ZXJSZWZcIlxuICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gID5cbiAgICA8c3BhbiBjbGFzcz1cInRhZyB0YWctLWluZm8gdGV4dC0xMlwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJkYXNoYm9hcmQtdGVtcGxhdGUtbWFya2VyXCI+PC9zcGFuPlxuICAgICAge3sgZGFzaGJvYXJkVHlwZUxhYmVsIHwgdHJhbnNsYXRlOiB7IGRhc2hib2FyZFR5cGU6IGRhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWUgfSB9fVxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG4gIDxuZy10ZW1wbGF0ZSAjZGFzaGJvYXJkVHlwZVBvcG92ZXJSZWY+XG4gICAgPGRpdlxuICAgICAgW2lubmVySFRNTF09XCJkYXNoYm9hcmRUeXBlUG9wb3ZlciB8IHRyYW5zbGF0ZTogeyBkYXNoYm9hcmRUeXBlOiBkYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlIH1cIlxuICAgID48L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCIncmlnaHQnXCJcbiAgW3ByaW9yaXR5XT1cIi0xXCJcbiAgKm5nSWY9XCJkZWZhdWx0V2lkZ2V0cy5sZW5ndGggPiAwXCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0aXRsZT1cInt7ICdSZXNldCB3aWRnZXRzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgcHgtZXZlbnQ9XCJSZXNldCBkYXNoYm9hcmRcIlxuICAgIChjbGljayk9XCJyZXN0b3JlKClcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCAod2lkZ2V0c0Rhc2hib2FyZD8uZWRpdE1vZGUkIHwgYXN5bmMpXCJcbiAgICBkYXRhLWN5PVwiY29udGV4dC1kYXNoYm9hcmQtLWJ1dHRvbi1yZXNldC1kYXNoYm9hcmRcIlxuICA+XG4gICAgPGlcbiAgICAgIGNsYXNzPVwibS1yLTRcIlxuICAgICAgYzh5SWNvbj1cInJlc2V0XCJcbiAgICA+PC9pPlxuICAgIDxzcGFuIGNsYXNzPVwidmlzaWJsZS14cy1pbmxpbmUgaGlkZGVuLXNtIHZpc2libGUtbWQtaW5saW5lIHZpc2libGUtbGctaW5saW5lXCI+XG4gICAgICB7eyAnUmVzZXQgd2lkZ2V0cycgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWhlbHBcbiAgc3JjPVwiL2RvY3MvY29ja3BpdC93b3JraW5nLXdpdGgtZGFzaGJvYXJkcy8jd29ya2luZy13aXRoLWRhc2hib2FyZHNcIlxuICAqbmdJZj1cInNob3dDb250ZXh0SGVscEJ1dHRvblwiXG4+PC9jOHktaGVscD5cblxuPGM4eS1kYXNoYm9hcmQtZGV0YWlsXG4gIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gIFtpc1JlcG9ydF09XCJpc1JlcG9ydFwiXG4gIFtkYXNoYm9hcmRdPVwiZGFzaGJvYXJkXCJcbiAgW21vXT1cIm1vXCJcbiAgW2NvbnRleHRdPVwiY29udGV4dFwiXG4gIFtkZXZpY2VUeXBlXT1cImNvbnRleHQ/LnR5cGVcIlxuICBbaGlkZUF2YWlsYWJpbGl0eV09XCJoaWRlQXZhaWxhYmlsaXR5XCJcbiAgKGRhc2hib2FyZFNhdmVkKT1cInJlbG9hZERhc2hib2FyZCgkZXZlbnQpXCJcbiAgKHByZXZpZXdDaGFuZ2VkKT1cImRhc2hib2FyZFByZXZpZXcoJGV2ZW50KVwiXG4+PC9jOHktZGFzaGJvYXJkLWRldGFpbD5cblxuPGM4eS13aWRnZXRzLWRhc2hib2FyZFxuICBbY29udGV4dF09XCJjb250ZXh0XCJcbiAgW2NvbnRleHREYXNoYm9hcmRdPVwiZGFzaGJvYXJkXCJcbiAgW3dpZGdldHNdPVwid2lkZ2V0c1wiXG4gIFtpc0NvcHlEaXNhYmxlZF09XCJpc0NvcHlEaXNhYmxlZFwiXG4gIFtzZXR0aW5nc109XCJ7XG4gICAgaXNMb2FkaW5nOiBpc0xvYWRpbmcsXG4gICAgaXNEaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgY2FuRGVsZXRlOiBjYW5EZWxldGUgJiYgISFkYXNoYm9hcmQsXG4gICAgdHJhbnNsYXRlV2lkZ2V0VGl0bGU6IGRhc2hib2FyZD8udHJhbnNsYXRlV2lkZ2V0VGl0bGUgPz8gdHJhbnNsYXRlV2lkZ2V0VGl0bGUsXG4gICAgYWxsb3dGdWxsc2NyZWVuOiBtb2R1bGVDb25maWcuYWxsb3dGdWxsc2NyZWVuLFxuICAgIHRpdGxlOiBzZXRUaXRsZSA/IGRhc2hib2FyZD8ubmFtZSB8fCB0aXRsZSA6IHVuZGVmaW5lZCxcbiAgICB3aWRnZXRNYXJnaW46IGRhc2hib2FyZD8ud2lkZ2V0TWFyZ2luLFxuICAgIGNhbkNvcHk6IGNhbkNvcHkgJiYgISFkYXNoYm9hcmQsXG4gICAgZGVmYXVsdFdpZHRoOiBkYXNoYm9hcmQ/LmNvbHVtbnMgPj0gMjQgPyA4IDogNCxcbiAgICBjb2x1bW5zOiBkYXNoYm9hcmQ/LmNvbHVtbnMgfHwgMTJcbiAgfVwiXG4gIFticmVhZGNydW1iXT1cImJyZWFkY3J1bWJTZXR0aW5nc1wiXG4gIFtlZGl0TW9kZUJ1dHRvbnNdPVwie1xuICAgIHVuZG9CdXR0b25EaXNhYmxlZDogZWRpdE1vZGVTZXJ2aWNlLnVuZG9CdXR0b25EaXNhYmxlZCxcbiAgICBjaGFuZ2VUb1VuZG9OYW1lOiBlZGl0TW9kZVNlcnZpY2UuY2hhbmdlVG9VbmRvTmFtZSxcbiAgICByZWRvQnV0dG9uRGlzYWJsZWQ6ICFlZGl0TW9kZVNlcnZpY2UucmVkb1N0YWNrTGFzdEl0ZW0sXG4gICAgY2hhbmdlVG9SZWRvTmFtZTogZWRpdE1vZGVTZXJ2aWNlLnJlZG9TdGFja0xhc3RJdGVtPy5uYW1lXG4gIH1cIlxuICAob25DaGFuZ2VEYXNoYm9hcmQpPVwicG9zaXRpb25PcldpZGdldERpbWVuc2lvbkNoYW5nZSgkZXZlbnQpXCJcbiAgKG9uQWRkV2lkZ2V0KT1cImFkZFdpZGdldCgpXCJcbiAgKG9uRWRpdFdpZGdldCk9XCJlZGl0V2lkZ2V0KCRldmVudClcIlxuICAob25EZWxldGVXaWRnZXQpPVwiZGVsZXRlV2lkZ2V0KCRldmVudClcIlxuICAob25TYXZlRGFzaGJvYXJkKT1cInNhdmVXaWRnZXRzVG9EYXNoYm9hcmQoKVwiXG4gIChvbkNhbmNlbERhc2hib2FyZCk9XCJjYW5jZWxFZGl0TW9kZSgpXCJcbiAgKHJldmVydENoYW5nZSk9XCJyZXZlcnRDaGFuZ2UoJGV2ZW50KVwiXG4gIChvbkNoYW5nZVN0YXJ0KT1cImFkZERhc2hib2FyZENsYXNzVG9Cb2R5KClcIlxuICAob25DaGFuZ2VFbmQpPVwicmVtb3ZlRGFzaGJvYXJkQ2xhc3NGcm9tQm9keSgpXCJcbiAgKG9uRWRpdERhc2hib2FyZCk9XCJkYXNoYm9hcmREZXRhaWxzLnNob3codHJ1ZSlcIlxuICAob25Db3B5RGFzaGJvYXJkKT1cImNvcHlEYXNoYm9hcmQoKVwiXG4gIChvbkRlbGV0ZURhc2hib2FyZCk9XCJkZWxldGVEYXNoYm9hcmQoKVwiXG4+PC9jOHktd2lkZ2V0cy1kYXNoYm9hcmQ+XG4iXX0=
709
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1kYXNoYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvY29udGV4dC1kYXNoYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvY29udGV4dC1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLFNBQVMsRUFDVCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFlBQVksRUFFWiwyQkFBMkIsRUFFM0Isb0JBQW9CLEVBSXBCLGdCQUFnQixFQUNoQixPQUFPLEVBQ1AsT0FBTyxFQUNQLFlBQVksRUFFWixNQUFNLEVBR04seUJBQXlCLEVBQzFCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFckQsT0FBTyxFQUVMLHdCQUF3QixFQUl4Qiw2QkFBNkIsRUFHN0Isa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUN0QixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9B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R04sUUFBUTtzQkFEUCxLQUFLO3VCQUFDLFNBQVM7Z0JBR2hCLFNBQVM7c0JBRFIsS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUs7Z0JBR04sa0JBQWtCO3NCQURqQixLQUFLO2dCQUdOLHFCQUFxQjtzQkFEcEIsS0FBSztnQkFHRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBS04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sS0FBSztzQkFESixXQUFXO3VCQUFDLE9BQU87Z0JBR21DLGdCQUFnQjtzQkFBdEUsU0FBUzt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRXJELGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLHlCQUF5QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkErQ2hELG1CQUFtQjtzQkFEeEIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkF3cEJqQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgQWN0aW9uQmFyU2VydmljZSxcbiAgQWxlcnRTZXJ2aWNlLFxuICBCcmVhZGNydW1iSXRlbSxcbiAgQ29weURhc2hib2FyZERpc2FibGVkUmVhc29uLFxuICBEYXNoYm9hcmRDaGFuZ2UsXG4gIERhc2hib2FyZENoaWxkQ2hhbmdlLFxuICBEYXNoYm9hcmRDaGlsZENvbXBvbmVudCxcbiAgRGFzaGJvYXJkQ29weVBlcm1pc3Npb24sXG4gIER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uLFxuICBHYWluc2lnaHRTZXJ2aWNlLFxuICBnZXR0ZXh0LFxuICBtZW1vaXplLFxuICBNb2RhbFNlcnZpY2UsXG4gIFJldmVydENoYW5nZVR5cGUsXG4gIFN0YXR1cyxcbiAgV2lkZ2V0LFxuICBXaWRnZXRDaGFuZ2UsXG4gIFdpZGdldHNEYXNoYm9hcmRDb21wb25lbnRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGV2ZXJ5LCBmaW5kSW5kZXgsIGtlYmFiQ2FzZSwga2V5QnksIG9taXQsIHNvbWUgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQ2FuRGVhY3RpdmF0ZUNvbXBvbmVudCxcbiAgQ09OVEVYVF9EQVNIQk9BUkRfQ09ORklHLFxuICBDb250ZXh0RGFzaGJvYXJkLFxuICBDb250ZXh0RGFzaGJvYXJkQ29uZmlnLFxuICBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCxcbiAgREFTSEJPQVJEX0NISUxEUkVOX1NUQVRFX05BTUUsXG4gIERhc2hib2FyZENoaWxkcmVuU3RhdGUsXG4gIERhc2hib2FyZEhpc3RvcnlEZXNjcmlwdGlvbixcbiAgUFJPRFVDVF9FWFBFUklFTkNFLFxuICBXSURHRVRfSEVBREVSX0NMQVNTRVNcbn0gZnJvbSAnLi9jb250ZXh0LWRhc2hib2FyZC5tb2RlbCc7XG5pbXBvcnQgeyBDb250ZXh0RGFzaGJvYXJkU2VydmljZSB9IGZyb20gJy4vY29udGV4dC1kYXNoYm9hcmQuc2VydmljZSc7XG5pbXBvcnQgeyBEYXNoYm9hcmREZXRhaWxDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZC1kZXRhaWwuY29tcG9uZW50JztcbmltcG9ydCB7IFdpZGdldENvbmZpZ0NvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0LWNvbmZpZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2lkZ2V0U2VydmljZSB9IGZyb20gJy4vd2lkZ2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGFzaGJvYXJkRWRpdE1vZGVTZXJ2aWNlIH0gZnJvbSAnLi9tZW1lbnRvL2Rhc2hib2FyZC1lZGl0LW1vZGUuc2VydmljZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuLyoqXG4gKiBUaGUgY29udGV4dCBkYXNoYm9hcmQgaXMgYSBkYXNoYm9hcmQgd2hpY2ggcmVzb2x2ZXMgaXQgZGF0YSBmcm9tIHRoZSBjdXJyZW50IGNvbnRleHQgKGRldmljZSBvciBncm91cClcbiAqIGl0IGlzIGRpc3BsYXllZCBvbi4gSXQgdXN1YWxseSB1c2VzIHRoZSByb3V0ZS5kYXRhIGZvciBpdCwgYnV0IHlvdSBjYW4gcGFzc1xuICogYSBkaWZmZXJlbnQgbWFuYWdlZE9iamVjdCB0byB0aGUgW21vXSBpbnB1dCBwYXJhbWV0ZXIgdG8gY2hhbmdlIHRoYXQgYmVoYXZpb3IuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1jb250ZXh0LWRhc2hib2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250ZXh0LWRhc2hib2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHtcbiAgICBzdHlsZTogYFxuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgYCxcbiAgICBjbGFzczogJ2Rhc2hib2FyZCBjOHktZ3JpZC1kYXNoYm9hcmQnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgQ29udGV4dERhc2hib2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDYW5EZWFjdGl2YXRlQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgbmFtZTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBjaGlsZHJlbkNsYXNzZXMgPSAnJztcbiAgQElucHV0KClcbiAgY29udGV4dDogYW55O1xuICBASW5wdXQoKVxuICBzZXRUaXRsZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGRlZmF1bHRXaWRnZXRzOiBXaWRnZXRbXSA9IFtdO1xuICBASW5wdXQoJ2NhbkNvcHknKVxuICBfY2FuQ29weSA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIGNhbkRlbGV0ZSA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIGlzTG9hZGluZyA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIGJyZWFkY3J1bWJTZXR0aW5nczogQnJlYWRjcnVtYkl0ZW07XG4gIEBJbnB1dCgpXG4gIHNob3dDb250ZXh0SGVscEJ1dHRvbiA9IHRydWU7XG4gIC8qKiBXaGV0aGVyIHRvIHRyYW5zbGF0ZSB3aWRnZXQgdGl0bGVzLiBIb3dldmVyLCBkYXNoYm9hcmQncyBvd24gc2V0dGluZyB0YWtlcyBwcmVjZWRlbmNlLiBJdCBkb2VzIG5vdCBvdmVycmlkZSBkYXNoYm9hcmQncyBzZXR0aW5nICovXG4gIEBJbnB1dCgpIHRyYW5zbGF0ZVdpZGdldFRpdGxlOiBib29sZWFuO1xuICAvKipcbiAgICogSGlkZXMgZGFzaGJvYXJkIGF2YWlsYWJpbGl0eSBzZWxlY3Rpb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBoaWRlQXZhaWxhYmlsaXR5ID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGNsYXNzID0gJyc7XG5cbiAgQFZpZXdDaGlsZChEYXNoYm9hcmREZXRhaWxDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIGRhc2hib2FyZERldGFpbHM6IERhc2hib2FyZERldGFpbENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChXaWRnZXRzRGFzaGJvYXJkQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICB3aWRnZXRzRGFzaGJvYXJkOiBXaWRnZXRzRGFzaGJvYXJkQ29tcG9uZW50O1xuXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaGFzUGVybWlzc2lvblRvRWRpdERhc2hib2FyZCB8fCAhdGhpcy5kYXNoYm9hcmREZXRhaWxzPy5pc0NvbGxhcHNlZDtcbiAgfVxuXG4gIHdpZGdldHM6IFdpZGdldFtdID0gW107XG4gIG1vOiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdDtcbiAgZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkO1xuICB0aXRsZTogc3RyaW5nO1xuICBpc0NvcHlEaXNhYmxlZDogRGFzaGJvYXJkQ29weVBlcm1pc3Npb247XG4gIGlzUmVwb3J0OiBib29sZWFuO1xuICBjYW5Db3B5ID0gdHJ1ZTtcbiAgcmVhZG9ubHkgZGFzaGJvYXJkVHlwZUxhYmVsID0gZ2V0dGV4dCgnRGFzaGJvYXJkIGZvciBcInt7IGRhc2hib2FyZFR5cGUgfX1cIicpO1xuICByZWFkb25seSBkYXNoYm9hcmRUeXBlUG9wb3ZlciA9IGdldHRleHQoYFxuICBUaGUgbGF5b3V0IGFuZCBjb25maWd1cmF0aW9uIG9mIHRoaXMgZGFzaGJvYXJkIGlzIHVzZWQgYnkgYWxsIG90aGVyIGFzc2V0cyBvZiBtb2RlbCB0eXBlXG4gIDxzdHJvbmc+e3sgZGFzaGJvYXJkVHlwZSB9fTwvc3Ryb25nPi4gQW55IGNoYW5nZXMgbWFkZSB0byB0aGlzIGRhc2hib2FyZCBpbnN0YW5jZSB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsXG4gIG90aGVyIGluc3RhbmNlcy5gKTtcbiAgcHJpdmF0ZSBkYXRhU3ViOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgaGFzUGVybWlzc2lvblRvRWRpdERhc2hib2FyZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBjb250ZXh0RGFzaGJvYXJkU2VydmljZTogQ29udGV4dERhc2hib2FyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydDogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBASW5qZWN0KENPTlRFWFRfREFTSEJPQVJEX0NPTkZJRykgcHVibGljIG1vZHVsZUNvbmZpZzogQ29udGV4dERhc2hib2FyZENvbmZpZyxcbiAgICBwcml2YXRlIHdpZGdldFNlcnZpY2U6IFdpZGdldFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBic01vZGFsOiBCc01vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3Rpb25CYXJTZXJ2aWNlOiBBY3Rpb25CYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsOiBNb2RhbFNlcnZpY2UsXG4gICAgcHVibGljIGVkaXRNb2RlU2VydmljZTogRGFzaGJvYXJkRWRpdE1vZGVTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMubmFtZSkge1xuICAgICAgdGhpcy5sb2FkQ29udGV4dERhc2hib2FyZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmxvYWROYW1lZERhc2hib2FyZCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmJlZm9yZXVubG9hZCcsIFsnJGV2ZW50J10pXG4gIGFzeW5jIGJlZm9yZVVubG9hZEhhbmRsZXIoJGV2ZW50OiBCZWZvcmVVbmxvYWRFdmVudCkge1xuICAgIGNvbnN0IGNhbkRlYWN0aXZhdGUgPSBhd2FpdCB0aGlzLmNhbkRlYWN0aXZhdGUodHJ1ZSk7XG4gICAgaWYgKCFjYW5EZWFjdGl2YXRlKSB7XG4gICAgICAkZXZlbnQucmV0dXJuVmFsdWUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSBjdXJyZW50IGNvbnRleHQgdG8gdGhlIHdpZGdldFxuICAgKiBAcGFyYW0gd2lkZ2V0IFRoZSB3aWRnZXQgdG8gYXBwbHkgdGhlIGNvbnRleHQgdG8uXG4gICAqL1xuICBhcHBseURldmljZVRhcmdldCh3aWRnZXQpIHtcbiAgICBpZiAod2lkZ2V0LmNvbmZpZy5kZXZpY2UpIHtcbiAgICAgIHdpZGdldC5jb25maWcuZGV2aWNlID0geyBpZDogdGhpcy5jb250ZXh0LmlkLCBuYW1lOiB0aGlzLmNvbnRleHQubmFtZSB9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSByb3V0ZSBsaXN0ZW5lci5cbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGFTdWIpIHtcbiAgICAgIHRoaXMuZGF0YVN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogR3VhcmRzIGNvbXBvbmVudCBmcm9tIHVuaW50ZW5kZWQgbmF2aWdhdGlvbiBhd2F5IG9yIGNsb3NpbmcgdGFiIHdpdGhvdXQgc2F2aW5nIGNoYW5nZXMuXG4gICAqIE5hdmlnYXRpb24gY29udGludWVzIGlmIHRydWUgaXMgcmV0dXJuZWQsIGFuZCBuYXZpZ2F0aW9uIGlzIGNhbmNlbGxlZCBpZiByZXR1cm5lZCB2YWx1ZSBpcyBmYWxzZS5cbiAgICogQHBhcmFtIG9taXRDb25maXJtIE9taXRzIGNvbmZpcm0gY2FsbHMgaW5zaWRlIG1ldGhvZCBib2R5ICh3aXRob3V0IHRoaXMgcGFyYW0sIHdoZW4gbWV0aG9kIGlzIHVzZWQgaW5cbiAgICogb24gJ2JlZm9yZXVubG9hZCcgZXZlbnQgaGFuZGxlciwgZXJyb3IgaXMgdGhyb3duIGluIGNvbnNvbGUgYmVjYXVzZSBjb25maXJtIGlzIGJsb2NrZWQgYnkgYnJvd3NlciBhbnl3YXkgYW5kIHJldHVybnMgZmFsc2UpXG4gICAqL1xuICBhc3luYyBjYW5EZWFjdGl2YXRlKG9taXRDb25maXJtID0gZmFsc2UpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBjYW5EZWFjdGl2YXRlID1cbiAgICAgIChhd2FpdCB0aGlzLmRhc2hib2FyZERldGFpbHMuY2FuRGVhY3RpdmF0ZShvbWl0Q29uZmlybSkpICYmXG4gICAgICAoYXdhaXQgdGhpcy53aWRnZXRzRGFzaGJvYXJkLmNhbkRlYWN0aXZhdGUob21pdENvbmZpcm0pKTtcblxuICAgIC8vIE5lZWRlZCBpbiBvcmRlciB0byByZXNldCBlZGl0IG1vZGUsIG90aGVyd2lzZSB3aGVuIHN3aXRjaGluZyBiZXR3ZWVuIGRhc2hib2FyZHMsIHRoZSBlZGl0IG1vZGUgaXMgc3RpbGwgZW5hYmxlZC5cbiAgICBpZiAoY2FuRGVhY3RpdmF0ZSkge1xuICAgICAgYXdhaXQgdGhpcy5jYW5jZWxFZGl0TW9kZSh0cnVlKTtcbiAgICB9XG4gICAgcmV0dXJuIGNhbkRlYWN0aXZhdGU7XG4gIH1cblxuICAvKipcbiAgICogUmVzdG9yZXMgdGhlIGRhc2hib2FyZCB3aWRnZXRzIHRvIHRoZSBkZWZhdWx0IHdpZGdldHMuXG4gICAqL1xuICBhc3luYyByZXN0b3JlKCkge1xuICAgIGNvbnN0IG1lc2cgPSBnZXR0ZXh0KFxuICAgICAgJ1lvdSBhcmUgYWJvdXQgdG8gcmVzZXQgdGhlIHdpZGdldHMgb2YgdGhpcyBkYXNoYm9hcmQuIEFsbCBjaGFuZ2VzIHRvIHRoZSBkYXNoYm9hcmQgd2lkZ2V0cyB3aWxsIGdldCBsb3N0IGFuZCBjYW5ub3QgYmUgcmVjb3ZlcmVkLiBEbyB5b3Ugd2FudCB0byBwcm9jZWVkPydcbiAgICApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMubW9kYWwuY29uZmlybShnZXR0ZXh0KCdSZXNldCB3aWRnZXRzJyksIG1lc2csIFN0YXR1cy5XQVJOSU5HLCB7XG4gICAgICAgIG9rOiBnZXR0ZXh0KCdSZXNldGBkYXNoYm9hcmRgJyksXG4gICAgICAgIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJylcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLm1vLmM4eV9EYXNoYm9hcmQuY2hpbGRyZW4gPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLm1hcFdpZGdldHModGhpcy5kZWZhdWx0V2lkZ2V0cyk7XG4gICAgICB0aGlzLm1vLmM4eV9EYXNoYm9hcmQuaGlzdG9yeURlc2NyaXB0aW9uID0ge1xuICAgICAgICBjaGFuZ2VUeXBlOiAncmVzZXQnXG4gICAgICB9O1xuICAgICAgYXdhaXQgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS51cGRhdGUodGhpcy5tbyk7XG4gICAgICBhd2FpdCB0aGlzLm9uTG9hZCgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGVycm9yKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIE1ldGhvZCBjYWxsZWQgb24gZXZlcnkgd2lkZ2V0cyBkaW1lbnNpb25zIG9yIHBvc2l0aW9uIGNoYW5nZSBidXQgYWxzbyBmb3IgYWRkaW5nIG5ldyB3aWRnZXQgKGJlY2F1c2UgYWRkaW5nXG4gICAqIHdpZGdldCBjYXVzZXMgbGF5b3V0IGNoYW5nZXMpLiBJdCByZWNvZ25pemVzIHdoYXQgdHlwZSBvZiBjaGFuZ2UgaGFzIGJlZW4gZG9uZSBhbmQgdXBkYXRlcyBjdXJyZW50IHdpZGdldHMgc3RhdGVcbiAgICogYWNjb3JkaW5nbHkuXG4gICAqIEBwYXJhbSBjaGlsZCBDaGFuZ2Ugb2JqZWN0LlxuICAgKi9cbiAgcG9zaXRpb25PcldpZGdldERpbWVuc2lvbkNoYW5nZShjaGlsZDogRGFzaGJvYXJkQ2hpbGRDaGFuZ2UgfCBEYXNoYm9hcmRDaGFuZ2UpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLmVkaXRNb2RlU2VydmljZS5nZXRDdXJyZW50U3RhdGUoKT8uY2hpbGRyZW4gfHwge307XG4gICAgY29uc3QgZGVzY3JpcHRpb25Qcm9wOiBrZXlvZiBEYXNoYm9hcmRIaXN0b3J5RGVzY3JpcHRpb25bJ3dpZGdldENoYW5nZXMnXSA9XG4gICAgICBjaGlsZC5jaGlsZHJlbi5sZW5ndGggPT09IE9iamVjdC52YWx1ZXMoY3VycmVudFN0YXRlKS5sZW5ndGggPyAnYXJyYW5nZW1lbnQnIDogJ2FkZGVkJztcbiAgICBsZXQgY2hhbmdlTmFtZTogRGFzaGJvYXJkQ2hpbGRyZW5TdGF0ZVsnbmFtZSddO1xuICAgIGxldCB3aWRnZXRzQ2hhbmdlZDogV2lkZ2V0W107XG4gICAgaWYgKGRlc2NyaXB0aW9uUHJvcCA9PT0gJ2FkZGVkJykge1xuICAgICAgY2hhbmdlTmFtZSA9IERBU0hCT0FSRF9DSElMRFJFTl9TVEFURV9OQU1FLmFkZGVkO1xuICAgICAgY29uc3QgYWRkZWRXaWRnZXQgPSBjaGlsZC5jaGlsZHJlbi5maW5kKGMgPT4gIWN1cnJlbnRTdGF0ZVtjLmRhdGEuaWRdKTtcbiAgICAgIHdpZGdldHNDaGFuZ2VkID0gW2FkZGVkV2lkZ2V0LmRhdGFdO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGFuZ2VOYW1lID0gREFTSEJPQVJEX0NISUxEUkVOX1NUQVRFX05BTUUuYXJyYW5nZW1lbnQ7XG4gICAgICB3aWRnZXRzQ2hhbmdlZCA9IGNoaWxkLmNoaWxkcmVuXG4gICAgICAgIC5tYXAoYyA9PiB7XG4gICAgICAgICAgY29uc3QgbGFzdFN0YXRlQ2hpbGQgPSBjdXJyZW50U3RhdGVbYy5kYXRhLmlkXTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBjLnggIT0gbGFzdFN0YXRlQ2hpbGQuX3ggfHxcbiAgICAgICAgICAgIGMueSAhPSBsYXN0U3RhdGVDaGlsZC5feSB8fFxuICAgICAgICAgICAgYy53aWR0aCAhPSBsYXN0U3RhdGVDaGlsZC5fd2lkdGggfHxcbiAgICAgICAgICAgIGMuaGVpZ2h0ICE9IGxhc3RTdGF0ZUNoaWxkLl9oZWlnaHRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBjLmRhdGE7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlRGFzaGJvYXJkQ2hpbGRyZW4oY2hpbGQsIGNoYW5nZU5hbWUsIGRlc2NyaXB0aW9uUHJvcCwgd2lkZ2V0c0NoYW5nZWQpO1xuICB9XG5cbiAgYXN5bmMgcmV2ZXJ0Q2hhbmdlKHJldmVydFR5cGU6IFJldmVydENoYW5nZVR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgZGFzaGJvYXJkQ2hpbGRyZW46IENvbnRleHREYXNoYm9hcmRbJ2NoaWxkcmVuJ107XG4gICAgaWYgKHJldmVydFR5cGUgPT09ICd1bmRvJykge1xuICAgICAgZGFzaGJvYXJkQ2hpbGRyZW4gPSB0aGlzLmVkaXRNb2RlU2VydmljZS51bmRvKCkuY2hpbGRyZW47XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhc2hib2FyZENoaWxkcmVuID0gdGhpcy5lZGl0TW9kZVNlcnZpY2UucmVkbygpLmNoaWxkcmVuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnNldFdpZGdldHMoZGFzaGJvYXJkQ2hpbGRyZW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgYWxsIGRhc2hib2FyZHMgY2hpbGRyZW4ncy4gVXNlZnVsIGZvciBwb3NpdGlvbiBjaGFuZ2VzIG9uIHRoZSBkYXNoYm9hcmQuXG4gICAqIEBwYXJhbSBjaGlsZCBUaGUgY2hpbGQgdG8gY2hhbmdlLlxuICAgKiBAcGFyYW0gY2hhbmdlTmFtZSBOYW1lIG9mIHRoZSBjaGFuZ2UgdG8gaW5kaWNhdGUgaXQgb24gdW5kby9yZWRvIGJ1dHRvbi5cbiAgICogQHBhcmFtIGRlc2NyaXB0aW9uUHJvcCBQcm9wZXJ0eSB0byBhZGQgdG8gZGFzaGJvYXJkIGNoYW5nZSBoaXN0b3J5LlxuICAgKiBAcGFyYW0gd2lkZ2V0c0NoYW5nZWQgTGlzdCBvZiBjaGFuZ2VkIHdpZGdldHMuXG4gICAqL1xuICB1cGRhdGVEYXNoYm9hcmRDaGlsZHJlbihcbiAgICBjaGlsZDogRGFzaGJvYXJkQ2hpbGRDaGFuZ2UgfCBEYXNoYm9hcmRDaGFuZ2UsXG4gICAgY2hhbmdlTmFtZTogRGFzaGJvYXJkQ2hpbGRyZW5TdGF0ZVsnbmFtZSddLFxuICAgIGRlc2NyaXB0aW9uUHJvcDoga2V5b2YgRGFzaGJvYXJkSGlzdG9yeURlc2NyaXB0aW9uWyd3aWRnZXRDaGFuZ2VzJ10sXG4gICAgd2lkZ2V0c0NoYW5nZWQ6IFdpZGdldFtdXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IGNoaWxkO1xuICAgIGNvbnN0IG1hcHBlZENoaWxkcmVuOiB7IFtpZDogc3RyaW5nXTogV2lkZ2V0IH0gPSBrZXlCeShcbiAgICAgIGNoaWxkcmVuLm1hcChjID0+IHRoaXMuY29tcG9uZW50VG9XaWRnZXQoYykpLFxuICAgICAgJ2lkJ1xuICAgICk7XG4gICAgdGhpcy5zZXROZXdTdGF0ZShcbiAgICAgIHsgbmFtZTogY2hhbmdlTmFtZSwgY2hpbGRyZW46IG1hcHBlZENoaWxkcmVuIH0sXG4gICAgICBkZXNjcmlwdGlvblByb3AsXG4gICAgICB3aWRnZXRzQ2hhbmdlZFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ29waWVzIHRoZSBkYXNoYm9hcmQgYW5kIGN1cnJlbnQgY29udGV4dCB0byBhIGNsaXBib2FyZC5cbiAgICovXG4gIGFzeW5jIGNvcHlEYXNoYm9hcmQoKSB7XG4gICAgY29uc3Qgdmlld0NvbnRleHQgPSB0aGlzLnJvdXRlLnBhcmVudC5zbmFwc2hvdC5kYXRhPy5jb250ZXh0O1xuXG4gICAgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5jb3B5Q2xpcGJvYXJkID0ge1xuICAgICAgZGFzaGJvYXJkSWQ6IHRoaXMubW8uaWQsXG4gICAgICBkYXNoYm9hcmQ6IGNsb25lRGVlcCh0aGlzLm1vLmM4eV9EYXNoYm9hcmQpLFxuICAgICAgY29udGV4dDogY2xvbmVEZWVwKHtcbiAgICAgICAgY29udGV4dDogdmlld0NvbnRleHQsXG4gICAgICAgIGNvbnRleHREYXRhOiB0aGlzLmNvbnRleHRcbiAgICAgIH0pXG4gICAgfTtcblxuICAgIGlmICh2aWV3Q29udGV4dCkge1xuICAgICAgY29uc3QgY3R4ID0gdmlld0NvbnRleHQuc3BsaXQoJy8nKS5zaGlmdCgpO1xuICAgICAgY29uc3QgbXNnID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICdEYXNoYm9hcmQgY29waWVkLiBOYXZpZ2F0ZSB0byB0aGUgZGVzaXJlZCB7eyBjdHggfX0gYW5kIHNlbGVjdCBcIlBhc3RlIGRhc2hib2FyZFwiJyxcbiAgICAgICAgeyBjdHggfVxuICAgICAgKTtcbiAgICAgIHRoaXMuYWxlcnQuc3VjY2Vzcyhtc2cpO1xuICAgIH1cbiAgICB0aGlzLmFjdGlvbkJhclNlcnZpY2UucmVmcmVzaCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgY29tcGxldGUgZGFzaGJvYXJkIGFuZCBuYXZpZ2F0ZSBhd2F5LlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlRGFzaGJvYXJkKCkge1xuICAgIGF3YWl0IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuZGVsZXRlKHRoaXMubW8pO1xuICAgIGlmICh0aGlzLnJvdXRlLnBhcmVudCkge1xuICAgICAgY29uc3Qgcm91dGUgPSB0aGlzLnJvdXRlLnBhcmVudC5zbmFwc2hvdC51cmwubWFwKHNlZ21lbnQgPT4gc2VnbWVudC5wYXRoKS5qb2luKCcvJyk7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHJvdXRlKTtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5vbkRlbGV0ZUdTRXZlbnQoKTtcbiAgfVxuXG4gIGdldCBpc0RldmljZVR5cGVEYXNoYm9hcmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5kYXNoYm9hcmQ/LmRldmljZVR5cGU7XG4gIH1cblxuICAvKipcbiAgICogRWRpdHMgYSB3aWRnZXQgb24gdGhlIGRhc2hib2FyZC5cbiAgICogQHBhcmFtIGNoYW5nZSBUaGUgd2lkZ2V0IGNoYW5nZSBldmVudC5cbiAgICovXG4gIGFzeW5jIGVkaXRXaWRnZXQoY2hhbmdlOiBXaWRnZXRDaGFuZ2UpIHtcbiAgICBjb25zdCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSA9IGNoYW5nZS5zb3VyY2U7XG4gICAgY29uc3QgY29tcG9uZW50ID0gYXdhaXQgdGhpcy53aWRnZXRTZXJ2aWNlLmdldFdpZGdldERlZmluaXRpb24oXG4gICAgICBjaGFuZ2Uud2lkZ2V0Lm5hbWUgfHwgY2hhbmdlLndpZGdldC5jb21wb25lbnRJZFxuICAgICk7XG4gICAgaWYgKCFjb21wb25lbnQpIHtcbiAgICAgIHRoaXMuYWRkV2lkZ2V0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuYWRkV2lkZ2V0KHtcbiAgICAgIC4uLmNvbXBvbmVudCxcbiAgICAgIGRhdGE6IHsgLi4uY29tcG9uZW50LmRhdGEsIC4uLmNoYW5nZS53aWRnZXQsIF94OiB4LCBfeTogeSwgX3dpZHRoOiB3aWR0aCwgX2hlaWdodDogaGVpZ2h0IH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgd2lkZ2V0IHRvIHRoZSBkYXNoYm9hcmQuXG4gICAqIEBwYXJhbSBzZWxlY3RlZCBEZWZpbmUgYSBzZWxlY3RlZCBjb21wb25lbnQgdG8gc3dpdGNoIHRvIGVkaXQgbW9kZSBkaXJlY3RseS5cbiAgICovXG4gIGFzeW5jIGFkZFdpZGdldChzZWxlY3RlZD86IER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uKSB7XG4gICAgY29uc3QgcGFydGlhbENsb25lU2VsZWN0ZWQgPSBzZWxlY3RlZFxuICAgICAgPyB7XG4gICAgICAgICAgLi4uc2VsZWN0ZWQsXG4gICAgICAgICAgZGF0YTogY2xvbmVEZWVwKHNlbGVjdGVkLmRhdGEpXG4gICAgICAgIH1cbiAgICAgIDogc2VsZWN0ZWQ7XG5cbiAgICBjb25zdCBhY3RpdmVDb250ZXh0ID0gdGhpcy5jb250ZXh0LmNvbnRleHREYXRhID8gdGhpcy5jb250ZXh0LmNvbnRleHREYXRhIDogdGhpcy5jb250ZXh0O1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZTogUGFydGlhbDxXaWRnZXRDb25maWdDb21wb25lbnQ+ID0ge1xuICAgICAgbW86IHRoaXMubW8sXG4gICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHQuYzh5X1JlcG9ydCA/IHt9IDogYWN0aXZlQ29udGV4dCxcbiAgICAgIHNlbGVjdGVkOiBwYXJ0aWFsQ2xvbmVTZWxlY3RlZFxuICAgIH07XG5cbiAgICBjb25zdCBtb2RhbCA9IHRoaXMuYnNNb2RhbC5zaG93KFdpZGdldENvbmZpZ0NvbXBvbmVudCwge1xuICAgICAgY2xhc3M6ICdtb2RhbC1sZycsXG4gICAgICBhcmlhRGVzY3JpYmVkYnk6ICdtb2RhbC1ib2R5JyxcbiAgICAgIGFyaWFMYWJlbGxlZEJ5OiAnbW9kYWwtdGl0bGUnLFxuICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZSxcbiAgICAgIGtleWJvYXJkOiBmYWxzZVxuICAgIH0pLmNvbnRlbnQgYXMgV2lkZ2V0Q29uZmlnQ29tcG9uZW50O1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG5ld1dpZGdldCA9IGF3YWl0IG1vZGFsLnJlc3VsdDtcbiAgICAgIGlmICghdGhpcy5tby5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuKSB7XG4gICAgICAgIHRoaXMubW8uYzh5X0Rhc2hib2FyZC5jaGlsZHJlbiA9IHt9O1xuICAgICAgfVxuICAgICAgbmV3V2lkZ2V0LmNsYXNzZXMgPSB0aGlzLm1lcmdlV2lkZ2V0Q2xhc3NlcyhuZXdXaWRnZXQpO1xuICAgICAgYXdhaXQgdGhpcy51cGRhdGVXaWRnZXQobmV3V2lkZ2V0KTtcbiAgICAgIC8vIE5ldyBzdGF0ZSBpbiBlZGl0IG1vZGUgaXMgYWRkZWQgb25seSBmb3Igd2lkZ2V0IHVwZGF0ZS4gV2hlbiBhZGRpbmcgd2lkZ2V0LCBsYXlvdXQgY2hhbmdlIGlzIGFsd2F5cyB0cmlnZ2VyZWQsXG4gICAgICAvLyBzbyBpdCdzIGVhc2llciB0byBzZXQgbmV3IHN0YXRlIG9uIGxheW91dCBjaGFuZ2Ugb25seVxuICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0ge1xuICAgICAgICAgIC4uLnRoaXMuZWRpdE1vZGVTZXJ2aWNlLmdldEN1cnJlbnRTdGF0ZSgpLmNoaWxkcmVuLFxuICAgICAgICAgIFtuZXdXaWRnZXQuaWRdOiBuZXdXaWRnZXRcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZXROZXdTdGF0ZShcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBEQVNIQk9BUkRfQ0hJTERSRU5fU1RBVEVfTkFNRS5jb25maWcsXG4gICAgICAgICAgICBjaGlsZHJlblxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ2NvbmZpZycsXG4gICAgICAgICAgW25ld1dpZGdldF1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIG1vZGFsLmNsb3NlKCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIC8vIGludGVuZGVkIGVtcHR5XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2F2ZVdpZGdldHNUb0Rhc2hib2FyZCgpIHtcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLmVkaXRNb2RlU2VydmljZS5nZXRDdXJyZW50U3RhdGUoKTtcbiAgICB0aGlzLm1vLmM4eV9EYXNoYm9hcmQuY2hpbGRyZW4gPSBjdXJyZW50U3RhdGUuY2hpbGRyZW47XG5cbiAgICB0aGlzLm1vLmM4eV9EYXNoYm9hcmQuaGlzdG9yeURlc2NyaXB0aW9uID0ge1xuICAgICAgY2hhbmdlVHlwZTogJ3VwZGF0ZScsXG4gICAgICB3aWRnZXRDaGFuZ2VzOiB0aGlzLm1hcFN0YXRlVG9IaXN0b3J5RGVzY3JpcHRpb24oY3VycmVudFN0YXRlLmNoYW5nZUhpc3RvcnkpXG4gICAgfTtcbiAgICBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZSh0aGlzLm1vKTtcbiAgICB0aGlzLmVkaXRNb2RlU2VydmljZS5yZXNldCgpO1xuICAgIHRoaXMuZWRpdE1vZGVTZXJ2aWNlLmluaXQoe1xuICAgICAgbmFtZTogREFTSEJPQVJEX0NISUxEUkVOX1NUQVRFX05BTUUuaW5pdGlhbCxcbiAgICAgIGNoaWxkcmVuOiB0aGlzLm1vLmM4eV9EYXNoYm9hcmQuY2hpbGRyZW4sXG4gICAgICBjaGFuZ2VIaXN0b3J5OiB7fVxuICAgIH0pO1xuXG4gICAgdGhpcy5pc0NvcHlEaXNhYmxlZCA9IHRoaXMuZ2V0RGFzaGJvYXJkQ29weVBlcm1pc3Npb25TdGF0ZSgpO1xuICB9XG5cbiAgYXN5bmMgY2FuY2VsRWRpdE1vZGUob25EZWFjdGl2YXRlID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkYXNoYm9hcmRDaGlsZHJlbiA9IHRoaXMuZWRpdE1vZGVTZXJ2aWNlLnJlc2V0KCk7XG4gICAgaWYgKHRoaXMuZGFzaGJvYXJkKSB7XG4gICAgICB0aGlzLmRhc2hib2FyZC5oaXN0b3J5RGVzY3JpcHRpb24gPSB7fTtcbiAgICB9XG4gICAgdGhpcy53aWRnZXRzRGFzaGJvYXJkLmVkaXRNb2RlJC5uZXh0KGZhbHNlKTtcbiAgICBpZiAoIW9uRGVhY3RpdmF0ZSkge1xuICAgICAgLy8gd2hlbiBzZXRXaWRnZXRzIGlzIGNhbGxlZCBkdXJpbmcgbmF2aWdhdGlvbiBmcm9tIGRldmljZSB0byBkZXZpY2UsIG5hdmlnYXRpb24gZmFpbHNcbiAgICAgIGF3YWl0IHRoaXMuc2V0V2lkZ2V0cyhkYXNoYm9hcmRDaGlsZHJlbi5jaGlsZHJlbik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgYSB3aWRnZXQgb3IgYWRkcyBhIG5ldyBvbmUgaWYgaXQgZG9lc24ndCBleGlzdCBvblxuICAgKiB0aGUgZGFzaGJvYXJkLlxuICAgKiBAcGFyYW0gd2lkZ2V0IFRoZSBuZXcgd2lkZ2V0XG4gICAqL1xuICBhc3luYyB1cGRhdGVXaWRnZXQod2lkZ2V0KSB7XG4gICAgY29uc3QgaW5kZXggPSBmaW5kSW5kZXgodGhpcy53aWRnZXRzLCB7IGlkOiB3aWRnZXQuaWQgfSk7XG4gICAgY29uc3QgaXNOZXcgPSBpbmRleCA9PT0gLTE7XG4gICAgY29uc3QgbWFwcGVkV2lkZ2V0ID0gYXdhaXQgdGhpcy53aWRnZXRTZXJ2aWNlLm1hcExlZ2FjeSh3aWRnZXQpO1xuICAgIGlmIChpc05ldykge1xuICAgICAgdGhpcy53aWRnZXRzLnB1c2gobWFwcGVkV2lkZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53aWRnZXRzLnNwbGljZShpbmRleCwgMSwgbWFwcGVkV2lkZ2V0KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIHdpZGdldCBhbmQgcmVhcnJhbmdlcyB0aGUgcmVtYWluaW5nIG9uZXNcbiAgICogaWYgbmVjZXNzYXJ5LlxuICAgKiBAcGFyYW0gY2hhbmdlIFRoZSBjaGFuZ2UgZXZlbnQuXG4gICAqL1xuICBhc3luYyBkZWxldGVXaWRnZXQoY2hhbmdlOiBXaWRnZXRDaGFuZ2UpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyB3aWRnZXQsIHNvdXJjZSB9ID0gY2hhbmdlO1xuICAgICAgY29uc3QgcmVtb3ZlZCA9IHRoaXMud2lkZ2V0cy5maW5kKCh7IGlkIH0pID0+IGlkID09PSB3aWRnZXQuaWQpO1xuICAgICAgdGhpcy53aWRnZXRzLnNwbGljZSh0aGlzLndpZGdldHMuaW5kZXhPZihyZW1vdmVkKSwgMSk7XG5cbiAgICAgIGNvbnN0IHsgZGFzaGJvYXJkIH0gPSBzb3VyY2U7XG4gICAgICBkYXNoYm9hcmQuY2hpbGRyZW4gPSBkYXNoYm9hcmQuY2hpbGRyZW4uZmlsdGVyKGMgPT4gYy5kYXRhLmlkICE9PSB3aWRnZXQuaWQpO1xuXG4gICAgICAvLyB1c2luZyBzZXRUaW1lb3V0IHRvIGdpdmUgdGhlIGNvbXBvbmVudCB0aGUgY2hhbmNlIHRvIHJlbW92ZSBpdC5cbiAgICAgIGNvbnN0IHNsZWVwID0gdGltZW91dCA9PiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgdGltZW91dCkpO1xuICAgICAgYXdhaXQgc2xlZXAoMCk7XG5cbiAgICAgIGNvbnN0IGNoaWxkID0gbmV3IERhc2hib2FyZENoaWxkQ2hhbmdlKHNvdXJjZSk7XG4gICAgICBjaGlsZC5jb2xsYXBzZVVwQWxsKCk7XG4gICAgICB0aGlzLnVwZGF0ZURhc2hib2FyZENoaWxkcmVuKGNoaWxkLCBEQVNIQk9BUkRfQ0hJTERSRU5fU1RBVEVfTkFNRS5yZW1vdmVkLCAncmVtb3ZlZCcsIFtcbiAgICAgICAgd2lkZ2V0XG4gICAgICBdKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYSB3b3JrYXJvdW5kIHRvIGVuc3VyZSB0aGF0IHRoZSBkcmFnZ2VkLWVsZW1lbnRcbiAgICogKHdoaWNoIGlzIGF0dGFjaGVkIHRvIHRoZSBib2R5KSBoYXMgdGhlIHJpZ2h0IHN0eWxpbmcuXG4gICAqL1xuICBhZGREYXNoYm9hcmRDbGFzc1RvQm9keSgpIHtcbiAgICB0aGlzLmNsYXNzLnNwbGl0KCcgJykuZm9yRWFjaChjc3NDbGFzcyA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGRvY3VtZW50LmJvZHksIGNzc0NsYXNzKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgd29ya2Fyb3VuZCB0byBlbnN1cmUgdGhhdCB0aGUgZHJhZ2dlZC1lbGVtZW50XG4gICAqICh3aGljaCBpcyBhdHRhY2hlZCB0byB0aGUgYm9keSkgaGFzIHRoZSByaWdodCBzdHlsaW5nLlxuICAgKi9cbiAgcmVtb3ZlRGFzaGJvYXJkQ2xhc3NGcm9tQm9keSgpIHtcbiAgICB0aGlzLmNsYXNzLnNwbGl0KCcgJykuZm9yRWFjaChjc3NDbGFzcyA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGRvY3VtZW50LmJvZHksIGNzc0NsYXNzKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG9uTG9hZCh0cmFja0V4cGVyaWVuY2U/OiBib29sZWFuKSB7XG4gICAgdGhpcy5oYXNQZXJtaXNzaW9uVG9FZGl0RGFzaGJvYXJkID0gdGhpcy5kYXNoYm9hcmRcbiAgICAgID8gYXdhaXQgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5jYW5FZGl0RGFzaGJvYXJkKHRoaXMubW8pXG4gICAgICA6IGZhbHNlO1xuICAgIHRoaXMuY2FuQ29weSA9XG4gICAgICB0aGlzLl9jYW5Db3B5ICYmXG4gICAgICAodGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5pc0RldmljZURhc2hib2FyZCh0aGlzLm1vKSB8fFxuICAgICAgICB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmlzRGV2aWNlVHlwZSh0aGlzLm1vKSB8fFxuICAgICAgICB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmlzR3JvdXBEYXNoYm9hcmQodGhpcy5tbykpO1xuICAgIGNvbnN0IGRhc2hib2FyZENoaWxkcmVuOiBDb250ZXh0RGFzaGJvYXJkWydjaGlsZHJlbiddID0gY2xvbmVEZWVwKFxuICAgICAgdGhpcy5tby5jOHlfRGFzaGJvYXJkPy5jaGlsZHJlblxuICAgICk7XG4gICAgY29uc3QgZGFzaGJvYXJkQ2xhc3NlcyA9IHtcbiAgICAgICdjOHktZ3JpZC1kYXNoYm9hcmQnOiB0cnVlLFxuICAgICAgZGFzaGJvYXJkOiB0cnVlLFxuICAgICAgLi4udGhpcy5kYXNoYm9hcmQ/LmNsYXNzZXNcbiAgICB9O1xuICAgIHRoaXMuaXNDb3B5RGlzYWJsZWQgPSB0aGlzLmRhc2hib2FyZFxuICAgICAgPyB0aGlzLmdldERhc2hib2FyZENvcHlQZXJtaXNzaW9uU3RhdGUoKVxuICAgICAgOiB7IHN0YXRlOiBmYWxzZSwgcmVhc29uOiBudWxsIH07XG4gICAgdGhpcy5lZGl0TW9kZVNlcnZpY2UuaW5pdCh7XG4gICAgICBuYW1lOiBnZXR0ZXh0KCdJbml0aWFsIHN0YXRlJyksXG4gICAgICBjaGlsZHJlbjogZGFzaGJvYXJkQ2hpbGRyZW4sXG4gICAgICBjaGFuZ2VIaXN0b3J5OiB7fVxuICAgIH0pO1xuXG4gICAgYXdhaXQgdGhpcy5zZXRXaWRnZXRzKGRhc2hib2FyZENoaWxkcmVuLCB0cmFja0V4cGVyaWVuY2UpO1xuICAgIHRoaXMuY2xhc3MgPSBPYmplY3Qua2V5cyhkYXNoYm9hcmRDbGFzc2VzKS5qb2luKCcgJyk7XG4gICAgaWYgKHRoaXMuaXNSZXBvcnQpIHtcbiAgICAgIHRoaXMuYWRkUmVwb3J0RGFzaGJvYXJkU2V0dGluZ3MoKTtcbiAgICB9XG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcblxuICAgIGlmICghdGhpcy5kYXNoYm9hcmQpIHtcbiAgICAgIHRoaXMuZGFzaGJvYXJkRGV0YWlscy5zaG93KGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5vbkxvYWRHU0V2ZW50KCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGFzaGJvYXJkUHJldmlldyhsYXlvdXRDaGFuZ2VzOiBDb250ZXh0RGFzaGJvYXJkKSB7XG4gICAgaWYgKGxheW91dENoYW5nZXM/LmNsYXNzZXMpIHtcbiAgICAgIGNvbnN0IGRhc2hib2FyZENsYXNzZXMgPSB7XG4gICAgICAgICdjOHktZ3JpZC1kYXNoYm9hcmQnOiB0cnVlLFxuICAgICAgICBkYXNoYm9hcmQ6IHRydWUsXG4gICAgICAgIC4uLmxheW91dENoYW5nZXMuY2xhc3Nlc1xuICAgICAgfTtcbiAgICAgIHRoaXMuY2xhc3MgPSBPYmplY3Qua2V5cyhkYXNoYm9hcmRDbGFzc2VzKS5qb2luKCcgJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRhc2hib2FyZCkge1xuICAgICAgdGhpcy5kYXNoYm9hcmQud2lkZ2V0Q2xhc3NlcyA9IHtcbiAgICAgICAgLi4udGhpcy5kYXNoYm9hcmQud2lkZ2V0Q2xhc3NlcyxcbiAgICAgICAgLi4ubGF5b3V0Q2hhbmdlcy53aWRnZXRDbGFzc2VzXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlbG9hZERhc2hib2FyZChkYXNoYm9hcmRNbzogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QpIHtcbiAgICB0aGlzLmRhc2hib2FyZCA9IGRhc2hib2FyZE1vLmM4eV9EYXNoYm9hcmQ7XG4gICAgdGhpcy5tbyA9IGRhc2hib2FyZE1vO1xuICAgIGF3YWl0IHRoaXMub25Mb2FkKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNldFdpZGdldHMoXG4gICAgZGFzaGJvYXJkQ2hpbGRyZW46IENvbnRleHREYXNoYm9hcmRbJ2NoaWxkcmVuJ10sXG4gICAgdHJhY2tFeHBlcmllbmNlID0gZmFsc2VcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaXNEZXZpY2VUeXBlID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5pc0RldmljZVR5cGUodGhpcy5tbyk7XG4gICAgdGhpcy53aWRnZXRzID0gYXdhaXQgUHJvbWlzZS5hbGw8V2lkZ2V0PihcbiAgICAgIE9iamVjdC52YWx1ZXMoZGFzaGJvYXJkQ2hpbGRyZW4gfHwge30pLm1hcCh3aWRnZXQgPT4ge1xuICAgICAgICB3aWRnZXQuY2xhc3NlcyA9IHRoaXMubWVyZ2VXaWRnZXRDbGFzc2VzKHdpZGdldCk7XG4gICAgICAgIGlmIChpc0RldmljZVR5cGUpIHtcbiAgICAgICAgICB0aGlzLmFwcGx5RGV2aWNlVGFyZ2V0KHdpZGdldCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRyYWNrRXhwZXJpZW5jZSkge1xuICAgICAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoJ2xvYWRXaWRnZXQnLCB7XG4gICAgICAgICAgICB3aWRnZXROYW1lOiB3aWRnZXQuY29tcG9uZW50SWQgfHwgd2lkZ2V0Lm5hbWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy53aWRnZXRTZXJ2aWNlLm1hcExlZ2FjeSh3aWRnZXQpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkQ29udGV4dERhc2hib2FyZCgpIHtcbiAgICB0aGlzLmRhdGFTdWIgPSB0aGlzLnJvdXRlLmRhdGEuc3Vic2NyaWJlKCh7IGRhc2hib2FyZCwgaXNSZXBvcnQgfSkgPT4ge1xuICAgICAgdGhpcy5jb250ZXh0ID0gdGhpcy5yb3V0ZS5wYXJlbnQuc25hcHNob3QuZGF0YS5jb250ZXh0RGF0YSB8fCB7fTtcbiAgICAgIHRoaXMudGl0bGUgPSB0aGlzLmNvbnRleHQ/Lm5hbWU7XG4gICAgICB0aGlzLm1vID0gZGFzaGJvYXJkO1xuICAgICAgdGhpcy5kYXNoYm9hcmQgPSB0aGlzLm1vLmM4eV9EYXNoYm9hcmQ7XG4gICAgICB0aGlzLmlzUmVwb3J0ID0gaXNSZXBvcnQgfHwgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5pc1JlcG9ydCh0aGlzLm1vKTtcbiAgICAgIGlmICh0aGlzLmlzUmVwb3J0ICYmIHRoaXMuZGFzaGJvYXJkICYmICF0aGlzLmRhc2hib2FyZD8ubmFtZSkge1xuICAgICAgICB0aGlzLmRhc2hib2FyZC5uYW1lID0gdGhpcy50aXRsZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzUmVwb3J0ICYmIHRoaXMuZGFzaGJvYXJkKSB7XG4gICAgICAgIHRoaXMuZGFzaGJvYXJkLmM4eV9Jc05hdmlnYXRvck5vZGUgPSB0aGlzLmNvbnRleHQuYzh5X0lzTmF2aWdhdG9yTm9kZTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGF0Y2hTZW5zb3JQaG9uZURhc2hib2FyZCh0aGlzLmRhc2hib2FyZCwgdGhpcy5tby5vd25lciwgdGhpcy5jb250ZXh0Py50eXBlKTtcbiAgICAgIHRoaXMub25Mb2FkKHRydWUpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvIGVuYWJsZSB0cmFuc2xhdGlvbiBmb3Igd2lkZ2V0cyB3aXRoaW4gdGhlIGRhc2hib2FyZCwgdGhlIFwidHJhbnNsYXRlV2lkZ2V0VGl0bGVcIiBmbGFnIG11c3QgYmUgZW5hYmxlZC5cbiAgICogVGhlIHByb3BlcnR5IG5lZWRzIHRvIGJlIHBhdGNoZWQsIGFzIHRoZSBcIlNlbnNvciBBcHBcIiBkb2VzIG5vdCBwcm92aWRlIHRoaXMgc2V0dGluZy5cbiAgICovXG4gIHByaXZhdGUgcGF0Y2hTZW5zb3JQaG9uZURhc2hib2FyZChkYXNoYm9hcmQ6IENvbnRleHREYXNoYm9hcmQsIG93bmVyOiBzdHJpbmcsIHR5cGU6IHN0cmluZykge1xuICAgIGlmICh0eXBlID09PSAnYzh5X1NlbnNvclBob25lJyAmJiBvd25lcj8uaW5jbHVkZXMoJ2RldmljZV9waG9uZScpKSB7XG4gICAgICBkYXNoYm9hcmQudHJhbnNsYXRlV2lkZ2V0VGl0bGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9hZE5hbWVkRGFzaGJvYXJkKCkge1xuICAgIHRoaXMuZGF0YVN1YiA9IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2VcbiAgICAgIC5nZXROYW1lZERhc2hib2FyZE9yQ3JlYXRlKHRoaXMubmFtZSwgdGhpcy5kZWZhdWx0V2lkZ2V0cywgdGhpcy5jb250ZXh0KVxuICAgICAgLnN1YnNjcmliZShtbyA9PiB7XG4gICAgICAgIHRoaXMuY29udGV4dCA9IHRoaXMuY29udGV4dCB8fCB7fTtcbiAgICAgICAgdGhpcy5tbyA9IG1vO1xuICAgICAgICB0aGlzLmRhc2hib2FyZCA9IHRoaXMubW8uYzh5X0Rhc2hib2FyZDtcbiAgICAgICAgdGhpcy5vbkxvYWQodHJ1ZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2VXaWRnZXRDbGFzc2VzKHdpZGdldDogV2lkZ2V0KTogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4ge1xuICAgIGNvbnN0IGhhc0hlYWRlckNsYXNzID0gV0lER0VUX0hFQURFUl9DTEFTU0VTLmZpbmQoXG4gICAgICBlbCA9PiB3aWRnZXQuY2xhc3NlcyAmJiB3aWRnZXQuY2xhc3Nlc1tlbC5jbGFzc11cbiAgICApO1xuICAgIGNvbnN0IHdpZGdldENsYXNzZXMgPSBoYXNIZWFkZXJDbGFzc1xuICAgICAgPyB7IC4uLndpZGdldC5jbGFzc2VzIH1cbiAgICAgIDogeyAuLi50aGlzLmRhc2hib2FyZC53aWRnZXRDbGFzc2VzLCAuLi53aWRnZXQuY2xhc3NlcyB9O1xuICAgIHJldHVybiB7XG4gICAgICBjYXJkOiB0cnVlLFxuICAgICAgJ2NhcmQtZGFzaGJvYXJkJzogdHJ1ZSxcbiAgICAgIFtrZWJhYkNhc2Uod2lkZ2V0LmNvbXBvbmVudElkIHx8IHdpZGdldC5uYW1lKV06IHRydWUsXG4gICAgICAuLi53aWRnZXRDbGFzc2VzXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcG9uZW50VG9XaWRnZXQoY2hpbGQ6IERhc2hib2FyZENoaWxkQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm9taXQoY2hpbGQuZGF0YSwgWydjb21wb25lbnRUcmFuc2Zvcm1Db25maWdXaXRoQ29udGV4dCcsICd0cmFuc2Zvcm1Db25maWdXaXRoQ29udGV4dCddKSwgLy8gcmVtb3ZlIGxlZ2FjeVxuICAgICAgLi4uKHtcbiAgICAgICAgX3g6IGNoaWxkLngsXG4gICAgICAgIF95OiBjaGlsZC55LFxuICAgICAgICBfd2lkdGg6IGNoaWxkLndpZHRoLFxuICAgICAgICBfaGVpZ2h0OiBjaGlsZC5oZWlnaHRcbiAgICAgIH0gYXMgV2lkZ2V0KVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFkZFJlcG9ydERhc2hib2FyZFNldHRpbmdzKCkge1xuICAgIHRoaXMuc2V0VGl0bGUgPSB0cnVlO1xuICAgIHRoaXMudGl0bGUgPSB0aGlzLmNvbnRleHQ/Lm5hbWUgfHwgZ2V0dGV4dCgnTmV3IHJlcG9ydCcpO1xuICAgIHRoaXMuYnJlYWRjcnVtYlNldHRpbmdzID0ge1xuICAgICAgaWNvbjogJ3RoJyxcbiAgICAgIGxhYmVsOiAnUmVwb3J0cycsXG4gICAgICBwYXRoOiAncmVwb3J0cydcbiAgICB9O1xuICAgIHRoaXMuY2FuRGVsZXRlID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGdldERhc2hib2FyZENvcHlQZXJtaXNzaW9uU3RhdGUoKTogRGFzaGJvYXJkQ29weVBlcm1pc3Npb24ge1xuICAgIGlmICghdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5oYXNQZXJtaXNzaW9uc1RvQ29weURhc2hib2FyZCgpKSB7XG4gICAgICByZXR1cm4geyBzdGF0ZTogZmFsc2UsIHJlYXNvbjogQ29weURhc2hib2FyZERpc2FibGVkUmVhc29uLlBFUk1JU1NJT05TIH07XG4gICAgfVxuICAgIGNvbnN0IGFsbERhc2hib2FyZENoaWxkcmVuQXJlVmFsaWQgPSBldmVyeSh0aGlzLm1vLmM4eV9EYXNoYm9hcmQuY2hpbGRyZW4sIGNoaWxkID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGNoaWxkLmNvbmZpZyB8fCB7fTtcbiAgICAgIGNvbnN0IGRhdGFQb2ludHMgPSBjb25maWcuZGF0YXBvaW50cyB8fCBbXTtcbiAgICAgIHJldHVybiAhKFxuICAgICAgICAoY29uZmlnLmRldmljZSAmJiBjb25maWcuZGV2aWNlLmlkICE9PSB0aGlzLmNvbnRleHQuaWQpIHx8XG4gICAgICAgIHNvbWUoZGF0YVBvaW50cywgZGF0YVBvaW50ID0+IGRhdGFQb2ludC5fX3RhcmdldD8uaWQgIT09IHRoaXMuY29udGV4dC5pZClcbiAgICAgICk7XG4gICAgfSk7XG4gICAgaWYgKCFhbGxEYXNoYm9hcmRDaGlsZHJlbkFyZVZhbGlkKSB7XG4gICAgICByZXR1cm4geyBzdGF0ZTogZmFsc2UsIHJlYXNvbjogQ29weURhc2hib2FyZERpc2FibGVkUmVhc29uLldST05HX1JFRkVSRU5DRSB9O1xuICAgIH1cbiAgICByZXR1cm4geyBzdGF0ZTogdHJ1ZSB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXROZXdTdGF0ZShcbiAgICBzdGF0ZTogUGljazxEYXNoYm9hcmRDaGlsZHJlblN0YXRlLCAnbmFtZScgfCAnY2hpbGRyZW4nPixcbiAgICBkZXNjcmlwdGlvblByb3A6IGtleW9mIERhc2hib2FyZEhpc3RvcnlEZXNjcmlwdGlvblsnd2lkZ2V0Q2hhbmdlcyddLFxuICAgIHdpZGdldHNDaGFuZ2VkOiBXaWRnZXRbXVxuICApOiB2b2lkIHtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHRoaXMuZ2V0RGVzY3JpcHRpb25Gb3JOZXdTdGF0ZShkZXNjcmlwdGlvblByb3AsIHdpZGdldHNDaGFuZ2VkKTtcbiAgICB0aGlzLmVkaXRNb2RlU2VydmljZS5uZXdTdGF0ZSh7IC4uLnN0YXRlLCBjaGFuZ2VIaXN0b3J5OiBkZXNjcmlwdGlvbiB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVzY3JpcHRpb25Gb3JOZXdTdGF0ZShcbiAgICBkZXNjcmlwdGlvblByb3A6IGtleW9mIERhc2hib2FyZEhpc3RvcnlEZXNjcmlwdGlvblsnd2lkZ2V0Q2hhbmdlcyddLFxuICAgIHdpZGdldHNDaGFuZ2VkOiBXaWRnZXRbXVxuICApOiBEYXNoYm9hcmRDaGlsZHJlblN0YXRlWydjaGFuZ2VIaXN0b3J5J10ge1xuICAgIGNvbnN0IGNoYW5nZUhpc3RvcnkgPSB0aGlzLmVkaXRNb2RlU2VydmljZS5nZXRDdXJyZW50U3RhdGUoKS5jaGFuZ2VIaXN0b3J5O1xuICAgIGlmICghY2hhbmdlSGlzdG9yeVtkZXNjcmlwdGlvblByb3BdKSB7XG4gICAgICBjaGFuZ2VIaXN0b3J5W2Rlc2NyaXB0aW9uUHJvcF0gPSB7fTtcbiAgICB9XG4gICAgd2lkZ2V0c0NoYW5nZWQuZm9yRWFjaCh3ID0+IHtcbiAgICAgIGlmIChkZXNjcmlwdGlvblByb3AgPT09ICdyZW1vdmVkJyAmJiBjaGFuZ2VIaXN0b3J5LmFkZGVkPy5bdy5pZF0pIHtcbiAgICAgICAgLy8gaWYgd2lkZ2V0IHdhcyBhZGRlZCBkdXJpbmcgY3VycmVudCBlZGl0IHNlc3Npb24gYW5kIHRoZW4gcmVtb3ZlZCwgaXQgc2hvdWxkIG5vdCBiZSBhdCBkZXNjcmlwdGlvbiBhdCBhbGxcbiAgICAgICAgZGVsZXRlIGNoYW5nZUhpc3RvcnkuYWRkZWRbdy5pZF07XG4gICAgICAgIGlmIChjaGFuZ2VIaXN0b3J5LmNvbmZpZz8uW3cuaWRdKSB7XG4gICAgICAgICAgZGVsZXRlIGNoYW5nZUhpc3RvcnkuY29uZmlnW3cuaWRdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VIaXN0b3J5LmFycmFuZ2VtZW50Py5bdy5pZF0pIHtcbiAgICAgICAgICBkZWxldGUgY2hhbmdlSGlzdG9yeT8uYXJyYW5nZW1lbnRbdy5pZF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIChkZXNjcmlwdGlvblByb3AgPT09ICdjb25maWcnIHx8IGRlc2NyaXB0aW9uUHJvcCA9PT0gJ2FycmFuZ2VtZW50JykgJiZcbiAgICAgICAgY2hhbmdlSGlzdG9yeS5hZGRlZD8uW3cuaWRdXG4gICAgICApIHtcbiAgICAgICAgLy8gaWYgd2lkZ2V0IHdhcyBhZGRlZCBhbmQgdGhlbiBtb2RpZmllZCBpbiBjdXJyZW50IGVkaXQgc2Vzc2lvbiwgaXQgc2hvdWxkIG9ubHkgYmUgaW5kaWNhdGVkIGFzIGFkZGVkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGFuZ2VIaXN0b3J5W2Rlc2NyaXB0aW9uUHJvcF1bdy5pZF0gPSB3O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNoYW5nZUhpc3Rvcnk7XG4gIH1cblxuICBwcml2YXRlIG1hcFN0YXRlVG9IaXN0b3J5RGVzY3JpcHRpb24oXG4gICAgZGVzY3JpcHRpb246IERhc2hib2FyZENoaWxkcmVuU3RhdGVbJ2NoYW5nZUhpc3RvcnknXVxuICApOiBEYXNoYm9hcmRIaXN0b3J5RGVzY3JpcHRpb25bJ3dpZGdldENoYW5nZXMnXSB7XG4gICAgY29uc3QgaGlzdG9yeURlc2NyaXB0aW9uOiBEYXNoYm9hcmRIaXN0b3J5RGVzY3JpcHRpb25bJ3dpZGdldENoYW5nZXMnXSA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGRlc2NyaXB0aW9uKSkge1xuICAgICAgY29uc3Qgd2lkZ2V0cyA9IE9iamVjdC52YWx1ZXModmFsdWUpO1xuICAgICAgaWYgKCF3aWRnZXRzLmxlbmd0aCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGhpc3RvcnlEZXNjcmlwdGlvbltrZXldID0gT2JqZWN0LnZhbHVlcyh2YWx1ZSkubWFwKHdpZGdldCA9PiB3aWRnZXQudGl0bGUpO1xuICAgIH1cbiAgICByZXR1cm4gaGlzdG9yeURlc2NyaXB0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvbkRlbGV0ZUdTRXZlbnQoKSB7XG4gICAgY29uc3QgcGFyZW50TmFtZSA9IGF3YWl0IHRoaXMuY29udmVydFN0cmluZ1RvSGFzaCh0aGlzLmNvbnRleHQ/Lm5hbWUpO1xuICAgIGNvbnN0IGRhc2hib2FyZE5hbWUgPSBhd2FpdCB0aGlzLmNvbnZlcnRTdHJpbmdUb0hhc2godGhpcy5kYXNoYm9hcmQ/Lm5hbWUpO1xuXG4gICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkVWRU5UUy5EQVNIQk9BUkRTLCB7XG4gICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQ09NUE9ORU5UUy5ERUxFVEVfREFTSEJPQVJELFxuICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkFDVElPTlMuREVMRVRFLFxuICAgICAgbmFtZTogZGFzaGJvYXJkTmFtZSxcbiAgICAgIGlkOiB0aGlzLm1vLmlkLFxuICAgICAgbmFtZUlkOiBgJHtkYXNoYm9hcmROYW1lfV8ke3RoaXMubW8uaWR9YCxcbiAgICAgIHBhcmVudEFzc2V0SWQ6IHRoaXMuY29udGV4dD8uaWQgPyB0aGlzLmNvbnRleHQuaWQgOiAnbm9Db250ZXh0JyxcbiAgICAgIHBhcmVudEFzc2V0TmFtZTogdGhpcy5jb250ZXh0Py5pZCA/IHBhcmVudE5hbWUgOiAnbm9Db250ZXh0JyxcbiAgICAgIHBhcmVudEFzc2V0VHlwZTogdGhpcy5jb250ZXh0Py5pZCA/IHRoaXMuY29udGV4dC50eXBlIDogJ25vQ29udGV4dCcsXG4gICAgICBwYXJlbnRBc3NldE5hbWVJZDogdGhpcy5jb250ZXh0Py5pZCA/IGAke3BhcmVudE5hbWV9XyR7dGhpcy5jb250ZXh0LmlkfWAgOiAnbm9Db250ZXh0JyxcbiAgICAgIHBhcmVudEFzc2V0TmFtZURhc2hib2FyZE5hbWU6IHRoaXMuY29udGV4dD8uaWRcbiAgICAgICAgPyBgJHtwYXJlbnROYW1lfV8ke2Rhc2hib2FyZE5hbWV9YFxuICAgICAgICA6ICdub0NvbnRleHQnLFxuICAgICAgcGFyZW50QXNzZXRJZERhc2hib2FyZElkOiB0aGlzLmNvbnRleHQ/LmlkID8gYCR7dGhpcy5jb250ZXh0LmlkfV8ke3RoaXMubW8uaWR9YCA6ICdub0NvbnRleHQnLFxuICAgICAgcGFyZW50QXNzZXROYW1lRGFzaGJvYXJkSWQ6IHRoaXMuY29udGV4dD8uaWQgPyBgJHtwYXJlbnROYW1lfV8ke3RoaXMubW8uaWR9YCA6ICdub0NvbnRleHQnLFxuICAgICAgcGFyZW50QXNzZXROYW1lSWREYXNoYm9hcmROYW1lSWQ6IHRoaXMuY29udGV4dD8uaWRcbiAgICAgICAgPyBgJHtwYXJlbnROYW1lfV8ke3RoaXMuY29udGV4dC5pZH1fJHtkYXNoYm9hcmROYW1lfV8ke3RoaXMubW8uaWR9YFxuICAgICAgICA6ICdub0NvbnRleHQnLFxuICAgICAgZGFzaGJvYXJkVHlwZTogdGhpcy5kYXNoYm9hcmQuZGV2aWNlVHlwZSA/IHRoaXMuZGFzaGJvYXJkLmRldmljZVR5cGVWYWx1ZSA6IG51bGwsXG4gICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmdldENvbnRleHRGb3JHUyh0aGlzLmNvbnRleHQpXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9uTG9hZEdTRXZlbnQoKSB7XG4gICAgY29uc3QgcGFyZW50TmFtZSA9IGF3YWl0IHRoaXMuY29udmVydFN0cmluZ1RvSGFzaCh0aGlzLmNvbnRleHQ/Lm5hbWUpO1xuICAgIGNvbnN0IGRhc2hib2FyZE5hbWUgPVxuICAgICAgKGF3YWl0IHRoaXMuY29udmVydFN0cmluZ1RvSGFzaCh0aGlzLmRhc2hib2FyZD8ubmFtZSkpID8/XG4gICAgICB0aGlzLmV4dHJhY3REZWZhdWx0RGFzaGJvYXJkTmFtZSh0aGlzLm1vKSA/P1xuICAgICAgJ25vbmUnO1xuXG4gICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChcbiAgICAgIHRoaXMuaXNSZXBvcnRcbiAgICAgICAgPyBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkVWRU5UUy5SRVBPUlRTXG4gICAgICAgIDogUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5FVkVOVFMuREFTSEJPQVJEUyxcbiAgICAgIHtcbiAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkNPTVBPTkVOVFMuREFTSEJPQVJEX1ZJRVcsXG4gICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5BQ1RJT05TLkxPQUQsXG4gICAgICAgIG5hbWU6IGRhc2hib2FyZE5hbWUsXG4gICAgICAgIGlkOiB0aGlzLm1vLmlkLFxuICAgICAgICBuYW1lSWQ6IGAke2Rhc2hib2FyZE5hbWV9XyR7dGhpcy5tby5pZH1gLFxuICAgICAgICBwYXJlbnRBc3NldElkOiB0aGlzLmNvbnRleHQ/LmlkID8gdGhpcy5jb250ZXh0LmlkIDogJ25vQ29udGV4dCcsXG4gICAgICAgIHBhcmVudEFzc2V0TmFtZTogdGhpcy5jb250ZXh0Py5pZCA/IHBhcmVudE5hbWUgOiAnbm9Db250ZXh0JyxcbiAgICAgICAgcGFyZW50QXNzZXRUeXBlOiB0aGlzLmNvbnRleHQ/LmlkID8gdGhpcy5jb250ZXh0LnR5cGUgOiAnbm9Db250ZXh0JyxcbiAgICAgICAgcGFyZW50QXNzZXROYW1lSWQ6IHRoaXMuY29udGV4dD8uaWQgPyBgJHtwYXJlbnROYW1lfV8ke3RoaXMuY29udGV4dC5pZH1gIDogJ25vQ29udGV4dCcsXG4gICAgICAgIHBhcmVudEFzc2V0TmFtZURhc2hib2FyZE5hbWU6IHRoaXMuY29udGV4dD8uaWRcbiAgICAgICAgICA/IGAke3BhcmVudE5hbWV9XyR7ZGFzaGJvYXJkTmFtZX1gXG4gICAgICAgICAgOiAnbm9Db250ZXh0JyxcbiAgICAgICAgcGFyZW50QXNzZXRJZERhc2hib2FyZElkOiB0aGlzLmNvbnRleHQ/LmlkXG4gICAgICAgICAgPyBgJHt0aGlzLmNvbnRleHQuaWR9XyR7dGhpcy5tby5pZH1gXG4gICAgICAgICAgOiAnbm9Db250ZXh0JyxcbiAgICAgICAgcGFyZW50QXNzZXROYW1lRGFzaGJvYXJkSWQ6IHRoaXMuY29udGV4dD8uaWQgPyBgJHtwYXJlbnROYW1lfV8ke3RoaXMubW8uaWR9YCA6ICdub0NvbnRleHQnLFxuICAgICAgICBwYXJlbnRBc3NldE5hbWVJZERhc2hib2FyZE5hbWVJZDogdGhpcy5jb250ZXh0Py5pZFxuICAgICAgICAgID8gYCR7cGFyZW50TmFtZX1fJHt0aGlzLmNvbnRleHQuaWR9XyR7ZGFzaGJvYXJkTmFtZX1fJHt0aGlzLm1vLmlkfWBcbiAgICAgICAgICA6ICdub0NvbnRleHQnLFxuICAgICAgICBkYXNoYm9hcmRUeXBlOiB0aGlzLmRhc2hib2FyZC5kZXZpY2VUeXBlID8gdGhpcy5kYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlIDogbnVsbCxcbiAgICAgICAgY29udGV4dDogdGhpcy5pc1JlcG9ydFxuICAgICAgICAgID8gUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5DT05URVhULlJFUE9SVFxuICAgICAgICAgIDogdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5nZXRDb250ZXh0Rm9yR1ModGhpcy5jb250ZXh0KVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3REZWZhdWx0RGFzaGJvYXJkTmFtZShvYmo6IElNYW5hZ2VkT2JqZWN0KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgbmFtZUtleSA9IE9iamVjdC5rZXlzKG9iaikuZmluZChrZXkgPT4ga2V5LnN0YXJ0c1dpdGgoJ2M4eV9EYXNoYm9hcmQhbmFtZSEnKSk7XG4gICAgaWYgKG5hbWVLZXkpIHtcbiAgICAgIHJldHVybiBuYW1lS2V5LnNwbGl0KCchJykucG9wKCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgQG1lbW9pemUoKVxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRTdHJpbmdUb0hhc2goc3RyOiBzdHJpbmcpIHtcbiAgICBpZiAoIXN0cikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiAoYXdhaXQgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnNob3VsZFNlbmRQaWlEYXRhKCkpXG4gICAgICA/IHN0clxuICAgICAgOiB0aGlzLmdhaW5zaWdodFNlcnZpY2UuaGFzaEdyb3VwTmFtZShzdHIpO1xuICB9XG59XG4iLCI8Yzh5LXRpdGxlICpuZ0lmPVwidGl0bGVcIj5cbiAge3sgdGl0bGUgfX1cbjwvYzh5LXRpdGxlPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbVxuICBbcGxhY2VtZW50XT1cIidyaWdodCdcIlxuICBbcHJpb3JpdHldPVwiMTAwMDBcIlxuICAqbmdJZj1cImRhc2hib2FyZD8uZGV2aWNlVHlwZSAmJiBkYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlXCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuLWNsZWFuIGJ0bi1saW5rXCJcbiAgICBwb3BvdmVyVGl0bGU9XCJ7eyAnRGFzaGJvYXJkIHRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgIFtwb3BvdmVyXT1cImRhc2hib2FyZFR5cGVQb3BvdmVyUmVmXCJcbiAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPHNwYW4gY2xhc3M9XCJ0YWcgdGFnLS1pbmZvIHRleHQtMTJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZGFzaGJvYXJkLXRlbXBsYXRlLW1hcmtlclwiPjwvc3Bhbj5cbiAgICAgIHt7IGRhc2hib2FyZFR5cGVMYWJlbCB8IHRyYW5zbGF0ZTogeyBkYXNoYm9hcmRUeXBlOiBkYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlIH0gfX1cbiAgICA8L3NwYW4+XG4gIDwvYnV0dG9uPlxuICA8bmctdGVtcGxhdGUgI2Rhc2hib2FyZFR5cGVQb3BvdmVyUmVmPlxuICAgIDxkaXZcbiAgICAgIFtpbm5lckhUTUxdPVwiZGFzaGJvYXJkVHlwZVBvcG92ZXIgfCB0cmFuc2xhdGU6IHsgZGFzaGJvYXJkVHlwZTogZGFzaGJvYXJkLmRldmljZVR5cGVWYWx1ZSB9XCJcbiAgICA+PC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiXG4gIFtwcmlvcml0eV09XCItMVwiXG4gICpuZ0lmPVwiZGVmYXVsdFdpZGdldHMubGVuZ3RoID4gMFwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgdGl0bGU9XCJ7eyAnUmVzZXQgd2lkZ2V0cycgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIHB4LWV2ZW50PVwiUmVzZXQgZGFzaGJvYXJkXCJcbiAgICAoY2xpY2spPVwicmVzdG9yZSgpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgKHdpZGdldHNEYXNoYm9hcmQ/LmVkaXRNb2RlJCB8IGFzeW5jKVwiXG4gICAgZGF0YS1jeT1cImNvbnRleHQtZGFzaGJvYXJkLS1idXR0b24tcmVzZXQtZGFzaGJvYXJkXCJcbiAgPlxuICAgIDxpXG4gICAgICBjbGFzcz1cIm0tci00XCJcbiAgICAgIGM4eUljb249XCJyZXNldFwiXG4gICAgPjwvaT5cbiAgICA8c3BhbiBjbGFzcz1cInZpc2libGUteHMtaW5saW5lIGhpZGRlbi1zbSB2aXNpYmxlLW1kLWlubGluZSB2aXNpYmxlLWxnLWlubGluZVwiPlxuICAgICAge3sgJ1Jlc2V0IHdpZGdldHMnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1oZWxwXG4gIHNyYz1cIi9kb2NzL2NvY2twaXQvd29ya2luZy13aXRoLWRhc2hib2FyZHMvI3dvcmtpbmctd2l0aC1kYXNoYm9hcmRzXCJcbiAgKm5nSWY9XCJzaG93Q29udGV4dEhlbHBCdXR0b25cIlxuPjwvYzh5LWhlbHA+XG5cbjxjOHktZGFzaGJvYXJkLWRldGFpbFxuICBjbGFzcz1cImQtY29udGVudHNcIlxuICBbaXNSZXBvcnRdPVwiaXNSZXBvcnRcIlxuICBbZGFzaGJvYXJkXT1cImRhc2hib2FyZFwiXG4gIFttb109XCJtb1wiXG4gIFtjb250ZXh0XT1cImNvbnRleHRcIlxuICBbZGV2aWNlVHlwZV09XCJjb250ZXh0Py50eXBlXCJcbiAgW2hpZGVBdmFpbGFiaWxpdHldPVwiaGlkZUF2YWlsYWJpbGl0eVwiXG4gIChkYXNoYm9hcmRTYXZlZCk9XCJyZWxvYWREYXNoYm9hcmQoJGV2ZW50KVwiXG4gIChwcmV2aWV3Q2hhbmdlZCk9XCJkYXNoYm9hcmRQcmV2aWV3KCRldmVudClcIlxuPjwvYzh5LWRhc2hib2FyZC1kZXRhaWw+XG5cbjxjOHktd2lkZ2V0cy1kYXNoYm9hcmRcbiAgW2NvbnRleHRdPVwiY29udGV4dFwiXG4gIFtjb250ZXh0RGFzaGJvYXJkXT1cImRhc2hib2FyZFwiXG4gIFt3aWRnZXRzXT1cIndpZGdldHNcIlxuICBbaXNDb3B5RGlzYWJsZWRdPVwiaXNDb3B5RGlzYWJsZWRcIlxuICBbc2V0dGluZ3NdPVwie1xuICAgIGlzTG9hZGluZzogaXNMb2FkaW5nLFxuICAgIGlzRGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgIGNhbkRlbGV0ZTogY2FuRGVsZXRlICYmICEhZGFzaGJvYXJkLFxuICAgIHRyYW5zbGF0ZVdpZGdldFRpdGxlOiBkYXNoYm9hcmQ/LnRyYW5zbGF0ZVdpZGdldFRpdGxlID8/IHRyYW5zbGF0ZVdpZGdldFRpdGxlLFxuICAgIGFsbG93RnVsbHNjcmVlbjogbW9kdWxlQ29uZmlnLmFsbG93RnVsbHNjcmVlbixcbiAgICB0aXRsZTogc2V0VGl0bGUgPyBkYXNoYm9hcmQ/Lm5hbWUgfHwgdGl0bGUgOiB1bmRlZmluZWQsXG4gICAgd2lkZ2V0TWFyZ2luOiBkYXNoYm9hcmQ/LndpZGdldE1hcmdpbixcbiAgICBjYW5Db3B5OiBjYW5Db3B5ICYmICEhZGFzaGJvYXJkLFxuICAgIGRlZmF1bHRXaWR0aDogZGFzaGJvYXJkPy5jb2x1bW5zID49IDI0ID8gOCA6IDQsXG4gICAgY29sdW1uczogZGFzaGJvYXJkPy5jb2x1bW5zIHx8IDEyXG4gIH1cIlxuICBbYnJlYWRjcnVtYl09XCJicmVhZGNydW1iU2V0dGluZ3NcIlxuICBbZWRpdE1vZGVCdXR0b25zXT1cIntcbiAgICB1bmRvQnV0dG9uRGlzYWJsZWQ6IGVkaXRNb2RlU2VydmljZS51bmRvQnV0dG9uRGlzYWJsZWQsXG4gICAgY2hhbmdlVG9VbmRvTmFtZTogZWRpdE1vZGVTZXJ2aWNlLmNoYW5nZVRvVW5kb05hbWUsXG4gICAgcmVkb0J1dHRvbkRpc2FibGVkOiAhZWRpdE1vZGVTZXJ2aWNlLnJlZG9TdGFja0xhc3RJdGVtLFxuICAgIGNoYW5nZVRvUmVkb05hbWU6IGVkaXRNb2RlU2VydmljZS5yZWRvU3RhY2tMYXN0SXRlbT8ubmFtZVxuICB9XCJcbiAgKG9uQ2hhbmdlRGFzaGJvYXJkKT1cInBvc2l0aW9uT3JXaWRnZXREaW1lbnNpb25DaGFuZ2UoJGV2ZW50KVwiXG4gIChvbkFkZFdpZGdldCk9XCJhZGRXaWRnZXQoKVwiXG4gIChvbkVkaXRXaWRnZXQpPVwiZWRpdFdpZGdldCgkZXZlbnQpXCJcbiAgKG9uRGVsZXRlV2lkZ2V0KT1cImRlbGV0ZVdpZGdldCgkZXZlbnQpXCJcbiAgKG9uU2F2ZURhc2hib2FyZCk9XCJzYXZlV2lkZ2V0c1RvRGFzaGJvYXJkKClcIlxuICAob25DYW5jZWxEYXNoYm9hcmQpPVwiY2FuY2VsRWRpdE1vZGUoKVwiXG4gIChyZXZlcnRDaGFuZ2UpPVwicmV2ZXJ0Q2hhbmdlKCRldmVudClcIlxuICAob25DaGFuZ2VTdGFydCk9XCJhZGREYXNoYm9hcmRDbGFzc1RvQm9keSgpXCJcbiAgKG9uQ2hhbmdlRW5kKT1cInJlbW92ZURhc2hib2FyZENsYXNzRnJvbUJvZHkoKVwiXG4gIChvbkVkaXREYXNoYm9hcmQpPVwiZGFzaGJvYXJkRGV0YWlscy5zaG93KHRydWUpXCJcbiAgKG9uQ29weURhc2hib2FyZCk9XCJjb3B5RGFzaGJvYXJkKClcIlxuICAob25EZWxldGVEYXNoYm9hcmQpPVwiZGVsZXRlRGFzaGJvYXJkKClcIlxuPjwvYzh5LXdpZGdldHMtZGFzaGJvYXJkPlxuIl19