@senior-agronegocio/angular-components 0.0.9882 → 0.0.9883

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.
@@ -82,7 +82,6 @@ export declare class EventControlBoardComponent implements OnInit, OnDestroy, On
82
82
  private createStep;
83
83
  private determineStepState;
84
84
  private getEventLabel;
85
- private getEventOperationSubLocalLabel;
86
85
  private formatSubtitle;
87
86
  onGridChange(event: any): void;
88
87
  getPageSize(): any;
@@ -1,5 +1,8 @@
1
- import { CommonModule, CurrencyPipe, DatePipe, DecimalPipe } from '@angular/common';
2
- import { LocalizedDatePipe } from '@seniorsistemas/angular-components';
1
+ import { LibTranslationModule } from '../../lib-translation.module';
2
+ import { CurrencyPipe, DatePipe, DecimalPipe } from '@angular/common';
3
+ import { LocaleModule, LocalizedDatePipe } from '@seniorsistemas/angular-components';
3
4
  import { KilogramPipe } from '../../pipe/kilogram';
4
- export declare const imports: (typeof CommonModule | import("@angular/compiler/src/core").ModuleWithProviders)[];
5
- export declare const providers: (typeof KilogramPipe | typeof DecimalPipe | typeof DatePipe | typeof LocalizedDatePipe | typeof CurrencyPipe)[];
5
+ export declare const imports: (typeof LibTranslationModule | (import("@angular/compiler/src/core").ModuleWithProviders & {
6
+ ngModule: LocaleModule;
7
+ }))[];
8
+ export declare const providers: (typeof KilogramPipe | typeof DecimalPipe | typeof CurrencyPipe | typeof DatePipe | typeof LocalizedDatePipe)[];
@@ -306,6 +306,7 @@ let EventControlBoardComponent = class EventControlBoardComponent {
306
306
  return lastActive;
307
307
  }
308
308
  createStep(detail, item, detailIndex) {
309
+ console.log('Detail:', detail);
309
310
  return {
310
311
  item: detail,
311
312
  controlCode: item.controlCode,
@@ -332,20 +333,12 @@ let EventControlBoardComponent = class EventControlBoardComponent {
332
333
  if (eventLabel) {
333
334
  return this.translate.instant(eventLabel);
334
335
  }
335
- const localLabel = this.getEventOperationSubLocalLabel(detail);
336
+ const localLabel = this.translate.instant("agro.angular_components." + detail.eventOperation);
336
337
  if (localLabel) {
337
338
  return localLabel;
338
339
  }
339
340
  return detail.eventOperation;
340
341
  }
341
- getEventOperationSubLocalLabel(detail) {
342
- const translationKey = "agro.angular_components." + detail.eventOperation;
343
- const translation = this.translate.instant(translationKey);
344
- if (translation !== translationKey) {
345
- return translation;
346
- }
347
- return null;
348
- }
349
342
  formatSubtitle(detail) {
350
343
  var _a;
351
344
  const { eventOperation, subTitle } = detail;
@@ -601,4 +594,4 @@ EventControlBoardComponent = __decorate([
601
594
  })
602
595
  ], EventControlBoardComponent);
603
596
  export { EventControlBoardComponent };
604
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtY29udHJvbC1ib2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZXZlbnQtY29udHJvbC1ib2FyZC9ldmVudC1jb250cm9sLWJvYXJkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxRQUFRLE1BQU0sNEJBQTRCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBZ0MsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUMvSCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFRLFNBQVMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hILE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFNUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDbEcsT0FB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QUM7O0tBQ3pELENBQUM7R0FDVywwQkFBMEIsQ0EwbkJ0QztTQTFuQlksMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVnaXN0ZXJMb2NhbGVEYXRhIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgbG9jYWxlUHQgZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL3B0XCI7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgTE9DQUxFX0lELCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IEJhZGdlQ29sb3JzLCBCdXR0b25Qcmlvcml0eSwgRmllbGRUeXBlLCBGb3JtRmllbGQsIFN0ZXAsIFN0ZXBTdGF0ZSB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzXCI7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcInByaW1lbmdcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBBR1JPX05VTUJFUlMgfSBmcm9tIFwiLi4vLi4vZW51bXMvYWdyby1udW1iZXJzLmVudW1cIjtcclxuaW1wb3J0IHsgTGliVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2xpYi10cmFuc2xhdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFByb2R1Y2VySW52b2ljZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcHJvZHVjZXItaW52b2ljZVwiO1xyXG5pbXBvcnQgeyBXZWJzb2NrZXRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3dlYnNvY2tldFwiO1xyXG5pbXBvcnQgeyBDYW5jZWxFdmVudERpYWxvZ0NvbmZpZyB9IGZyb20gXCIuLi9jYW5jZWwtZXZlbnQtZGlhbG9nL2NhbmNlbC1ldmVudC1kaWFsb2ctY29uZmlnXCI7XHJcbmltcG9ydCB7IENhbmNlbEV2ZW50RGlhbG9nQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NhbmNlbC1ldmVudC1kaWFsb2cvY2FuY2VsLWV2ZW50LWRpYWxvZy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgZXZlbnRJdGVtIH0gZnJvbSBcIi4vY29tbW9uL2V2ZW50LWNvbnRyb2wtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IEV2ZW50T3BlcmF0aW9uIH0gZnJvbSBcIi4vY29tbW9uL2V2ZW50LW9wZXJhdGlvblwiO1xyXG5pbXBvcnQgeyBFdmVudE9yaWdpbiB9IGZyb20gXCIuL2NvbW1vbi9ldmVudC1vcmlnaW5cIjtcclxuaW1wb3J0IHsgRXZlbnRTdGF0dXMgfSBmcm9tIFwiLi9jb21tb24vZXZlbnQtc3RhdHVzXCI7XHJcbmltcG9ydCB7IGludm9pY2VUeXBlVHJhbnNsYXRlIH0gZnJvbSBcIi4vY29tbW9uL2lucHV0LWZpZWxkcy10cmFuc2xhdGVcIjtcclxuaW1wb3J0IHsgTG9va3VwRXJyb3JNZXNzYWdlcyB9IGZyb20gXCIuL2NvbW1vbi9sb29rdXAtZXJyb3ItbWVzc2FnZS5jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgRTA3MEVtcCB9IGZyb20gXCIuL3NlcnZpY2UvZTA3MGVtcC9lMDcwZW1wXCI7XHJcbmltcG9ydCB7IEUwNzBGaWwgfSBmcm9tIFwiLi9zZXJ2aWNlL2UwNzBmaWwvZTA3MGZpbFwiO1xyXG5pbXBvcnQgeyBFdmVudENvbnRyb2xJdGVtIH0gZnJvbSBcIi4vc2VydmljZS9ldmVudC1jb250cm9sLWl0ZW0vZXZlbnQtY29udHJvbC1pdGVtXCI7XHJcbmltcG9ydCB7IEV2ZW50Q29udHJvbEl0ZW1TZXJ2aWNlLCBSZXByb2Nlc3NGYWlsZWRFdmVudCB9IGZyb20gXCIuL3NlcnZpY2UvZXZlbnQtY29udHJvbC1pdGVtL2V2ZW50LWNvbnRyb2wtaXRlbS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEV2ZW50Q29udHJvbCB9IGZyb20gXCIuL3NlcnZpY2UvZXZlbnQtY29udHJvbC9ldmVudC1jb250cm9sXCI7XHJcbmltcG9ydCB7IEV2ZW50Q29udHJvbFNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlL2V2ZW50LWNvbnRyb2wvZXZlbnQtY29udHJvbC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRvclN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZS9wYWdpbmF0b3Itc3RvcmFnZS5zZXJ2aWNlXCI7XHJcbmNvbnN0IG1vbWVudCA9IHJlcXVpcmUoXCJtb21lbnRcIik7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImV2ZW50LWNvbnRyb2wtYm9hcmRcIixcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vZXZlbnQtY29udHJvbC1ib2FyZC5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL2V2ZW50LWNvbnRyb2wtYm9hcmQuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IExPQ0FMRV9JRCwgdXNlVmFsdWU6IFwicHQtQlJcIiB9XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEV2ZW50Q29udHJvbEJvYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcbiAgICBASW5wdXQoKSBjb21wYW55ITogRTA3MEVtcDtcclxuICAgIEBJbnB1dCgpIGJyYW5jaCE6IEUwNzBGaWw7XHJcbiAgICBASW5wdXQoKSBjb250cm9sQ29kZSE6IHN0cmluZ1tdO1xyXG4gICAgQElucHV0KCkgZXZlbnRPcmlnaW4hOiBFdmVudE9yaWdpbjtcclxuICAgIEBJbnB1dCgpIGV2ZW50U3RhdHVzITogRXZlbnRTdGF0dXM7XHJcbiAgICBASW5wdXQoKSBleHRlcm5hbElkITogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgY3JlYXRlZERhdGUhOiBEYXRlO1xyXG4gICAgQElucHV0KCkgc3RhbmRhbG9uZSE6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBzaG93Q2FuY2VsQnV0dG9uITogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGNhbmNlbEV2ZW50RGlhbG9nQ29uZmlnITogQ2FuY2VsRXZlbnREaWFsb2dDb25maWc7XHJcbiAgICBAT3V0cHV0KCkgcHJvY2Vzc2VkRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgcHVibGljIHByb2R1Y2VySW52b2ljZSE6IGFueTtcclxuXHJcbiAgICBwdWJsaWMgc3RlcHM6IFN0ZXBbXSA9IFtdO1xyXG4gICAgcHVibGljIHNlbGVjdGVkU3RlcDogYW55O1xyXG4gICAgcHVibGljIGV2ZW50SWQhOiBcIlwiO1xyXG4gICAgcHVibGljIHNob3dTaWRlYmFyID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgc2hvd1JlcHJvY2Vzc0J1dHRvbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHNpZGViYXJUaXRsZSE6IHN0cmluZztcclxuICAgIHB1YmxpYyBzaWRlYmFyTG9hZGluZyE6IGJvb2xlYW47XHJcblxyXG4gICAgcHVibGljIGZpbHRlckZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcclxuICAgIHB1YmxpYyBmaWx0ZXJGaWVsZHMhOiBGb3JtRmllbGRbXTtcclxuXHJcbiAgICBwdWJsaWMgZ3JpZERhdGEhOiBhbnlbXTtcclxuICAgIHB1YmxpYyBncmlkRGF0YVJlc29sdmVkITogYW55W107XHJcbiAgICBwdWJsaWMgZ3JpZENvbHVtbnMhOiBhbnlbXTtcclxuICAgIHB1YmxpYyBncmlkVG90YWxSZWNvcmRzID0gQUdST19OVU1CRVJTLlpFUk87XHJcbiAgICBwdWJsaWMgZ3JpZExvYWRpbmcgPSBmYWxzZTtcclxuICAgIHB1YmxpYyBkaXNwbGF5TW9kYWwgPSBmYWxzZTtcclxuXHJcbiAgICBwdWJsaWMgQnV0dG9uUHJpb3JpdHkgPSBCdXR0b25Qcmlvcml0eTtcclxuICAgIHB1YmxpYyBCYWRnZUNvbG9ycyA9IEJhZGdlQ29sb3JzO1xyXG5cclxuICAgIHB1YmxpYyBwZXJtaXNzaW9uczogYW55ID0ge307XHJcbiAgICBwdWJsaWMgbG9jYWxlQ29uZmlnOiBhbnkgPSB7fTtcclxuXHJcbiAgICBwdWJsaWMgY3VycmVudExpc3RQYXJhbXM6IGFueSA9IHtcclxuICAgICAgICBwYWdlOiBBR1JPX05VTUJFUlMuWkVSTyxcclxuICAgICAgICBzaXplOiBBR1JPX05VTUJFUlMuVEVOLFxyXG4gICAgICAgIGRpc3BsYXlGaWVsZHM6IHRoaXMuZ2V0RGlzcGxheUZpZWxkcygpLFxyXG4gICAgICAgIHNvcnQ6IFtdLFxyXG4gICAgICAgIGZpbHRlckRhdGE6IHt9XHJcbiAgICB9O1xyXG5cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50SXRlbSA9IGV2ZW50SXRlbTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW52b2ljZVR5cGVUcmFuc2xhdGUgPSBpbnZvaWNlVHlwZVRyYW5zbGF0ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogTGliVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgd2Vic29ja2V0U2VydmljZTogV2Vic29ja2V0U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50Q29udHJvbFNlcnZpY2U6IEV2ZW50Q29udHJvbFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwYWdpbmF0b3JTdG9yYWdlU2VydmljZTogUGFnaW5hdG9yU3RvcmFnZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBldmVudENvbnRyb2xJdGVtU2VydmljZTogRXZlbnRDb250cm9sSXRlbVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwcm9kdWNlckludm9pY2VTZXJ2aWNlOiBQcm9kdWNlckludm9pY2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZVB0KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5ncmlkQ29sdW1ucyA9IHRoaXMuc2V0R3JpZENvbHVtbnMoKTtcclxuICAgICAgICB0aGlzLmNhbGxXZWJzb2NrZXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmICghdGhpcy5maWx0ZXJGb3JtR3JvdXApIHtcclxuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplRm9ybUdyb3VwKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVDb21wYW55QW5kQnJhbmNoRm9ybUZpZWxkcyhjaGFuZ2VzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUV2ZW50T3JpZ2luQW5kQ29udHJvbENvZGVGb3JtRmllbGRzKGNoYW5nZXMpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRXZlbnRTdGF0dXNBbmRDcmVhdGVkRGF0ZUZvcm1GaWVsZHMoY2hhbmdlcyk7XHJcbiAgICAgICAgdGhpcy5vblNlYXJjaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlQ29tcGFueUFuZEJyYW5jaEZvcm1GaWVsZHMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzLmNvbXBhbnkgJiYgY2hhbmdlcy5jb21wYW55LmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlcy5jb21wYW55LnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KFwiY29tcGFueVwiKT8uc2V0VmFsdWUoY2hhbmdlcy5jb21wYW55LmN1cnJlbnRWYWx1ZSA/PyBudWxsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzLmJyYW5jaCAmJiBjaGFuZ2VzLmJyYW5jaC5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXMuYnJhbmNoLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KFwiYnJhbmNoXCIpPy5zZXRWYWx1ZShjaGFuZ2VzLmJyYW5jaC5jdXJyZW50VmFsdWUgPz8gbnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlRXZlbnRPcmlnaW5BbmRDb250cm9sQ29kZUZvcm1GaWVsZHMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzLmV2ZW50T3JpZ2luICYmIGNoYW5nZXMuZXZlbnRPcmlnaW4uY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLmV2ZW50T3JpZ2luLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KFwiZXZlbnRPcmlnaW5cIik/LnNldFZhbHVlKGNoYW5nZXMuZXZlbnRPcmlnaW4uY3VycmVudFZhbHVlID8/IG51bGwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXMuY29udHJvbENvZGUgJiYgY2hhbmdlcy5jb250cm9sQ29kZS5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXMuY29udHJvbENvZGUucHJldmlvdXNWYWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXQoXCJjb250cm9sQ29kZVwiKT8uc2V0VmFsdWUoY2hhbmdlcy5jb250cm9sQ29kZS5jdXJyZW50VmFsdWUgPz8gbnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlRXZlbnRTdGF0dXNBbmRDcmVhdGVkRGF0ZUZvcm1GaWVsZHMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzLmV2ZW50U3RhdHVzICYmIGNoYW5nZXMuZXZlbnRTdGF0dXMuY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLmV2ZW50U3RhdHVzLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KFwic3RhdHVzXCIpPy5zZXRWYWx1ZShjaGFuZ2VzLmV2ZW50U3RhdHVzLmN1cnJlbnRWYWx1ZSA/PyBudWxsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzLmNyZWF0ZWREYXRlICYmIGNoYW5nZXMuY3JlYXRlZERhdGUuY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLmNyZWF0ZWREYXRlLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KFwiY3JlYXRlZERhdGVcIik/LnNldFZhbHVlKGNoYW5nZXMuY3JlYXRlZERhdGUuY3VycmVudFZhbHVlID8/IG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRpYWxpemVGb3JtR3JvdXAoKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICAgICAgY29tcGFueTogW3sgdmFsdWU6IHRoaXMuY29tcGFueSA/PyBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV0sXHJcbiAgICAgICAgICAgIGJyYW5jaDogW3sgdmFsdWU6IHRoaXMuYnJhbmNoID8/IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXSxcclxuICAgICAgICAgICAgY29udHJvbENvZGU6IFt7IHZhbHVlOiB0aGlzLmNvbnRyb2xDb2RlID8/IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXSxcclxuICAgICAgICAgICAgZXh0ZXJuYWxJZDogW3sgdmFsdWU6IHRoaXMuZXh0ZXJuYWxJZCA/PyBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV0sXHJcbiAgICAgICAgICAgIGV2ZW50T3JpZ2luOiBbeyB2YWx1ZTogdGhpcy5ldmVudE9yaWdpbiA/PyBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV0sXHJcbiAgICAgICAgICAgIHN0YXR1czogW3sgdmFsdWU6IHRoaXMuZXZlbnRTdGF0dXMgPz8gbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbXSldLFxyXG4gICAgICAgICAgICBjcmVhdGVkRGF0ZTogW3sgdmFsdWU6IHRoaXMuY3JlYXRlZERhdGUgPz8gbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbXSldLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0Rm9ybUZpZWxkcygpIHtcclxuICAgICAgICB0aGlzLmZpbHRlckZpZWxkcyA9IFtcclxuICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcImNvbXBhbnlcIixcclxuICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5DaGlwcyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJicmFuY2hcIixcclxuICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5DaGlwcyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJjb250cm9sQ29kZVwiLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkNoaXBzLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcImV4dGVybmFsSWRcIixcclxuICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5TdHJpbmcsXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiZXZlbnRPcmlnaW5cIixcclxuICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcInN0YXR1c1wiLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiY3JlYXRlZERhdGVcIixcclxuICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5EYXRlLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0R3JpZENvbHVtbnMoKSB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgeyBmaWVsZDogXCJjb21wYW55XCIsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmNvbXBhbnlcIikgfSxcclxuICAgICAgICAgICAgeyBmaWVsZDogXCJicmFuY2hcIiwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubGFiZWxfYnJhbmNoXCIpIH0sXHJcbiAgICAgICAgICAgIHsgZmllbGQ6IFwiZXZlbnRPcmlnaW5cIiwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXZlbnRfb3JpZ2luX2xhYmVsXCIpIH0sXHJcbiAgICAgICAgICAgIHsgZmllbGQ6IFwiY29udHJvbENvZGVcIiwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuY29udHJvbF9jb2RlXCIpIH0sXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICAgICAgICB0aGlzLndlYnNvY2tldFNlcnZpY2UuZGlzY29ubmVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjYWxsV2Vic29ja2V0KCkge1xyXG4gICAgICAgIHRoaXMud2Vic29ja2V0U2VydmljZVxyXG4gICAgICAgICAgICAub25FdmVudDxhbnk+KHtcclxuICAgICAgICAgICAgICAgIGRvbWFpbjogXCJhZ3JvXCIsXHJcbiAgICAgICAgICAgICAgICBzZXJ2aWNlOiBcImFncm9fZXZlbnRzXCIsXHJcbiAgICAgICAgICAgICAgICBwcmltaXRpdmU6IFwicHJvY2Vzc2VkRXZlbnRcIixcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4dGVybmFsSWQgPSBtZXNzYWdlPy5kYXRhPy5leHRlcm5hbElkO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyRGF0YSA9IHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWV4dGVybmFsSWQgfHwgdGhpcy5leHRlcm5hbElkID09PSBleHRlcm5hbElkIHx8IHRoaXMuZ3JpZERhdGE/LnNvbWUoKGl0ZW06IGFueSkgPT4gaXRlbS5leHRlcm5hbElkID09PSBleHRlcm5hbElkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlR3JpZCh7IGZpbHRlckRhdGEgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzZWRFdmVudC5lbWl0KG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy53ZWJzb2NrZXRTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5vbkV2ZW50PGFueT4oe1xyXG4gICAgICAgICAgICAgICAgZG9tYWluOiBcInBsYXRmb3JtXCIsXHJcbiAgICAgICAgICAgICAgICBzZXJ2aWNlOiBcIm5vdGlmaWNhdGlvbnNcIixcclxuICAgICAgICAgICAgICAgIHByaW1pdGl2ZTogXCJ1c2VyTm90aWZpZWRcIixcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyRGF0YSA9IHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUdyaWQoeyBmaWx0ZXJEYXRhIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25TZWFyY2goKSB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyRGF0YSA9IHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XHJcbiAgICAgICAgdGhpcy5ncmlkTG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZXNldEdyaWQoeyBmaWx0ZXJEYXRhIH0pO1xyXG4gICAgICAgIHRoaXMudXBkYXRlR3JpZCh7IGZpbHRlckRhdGEgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlc2V0R3JpZChsaXN0UGFyYW1zPzogYW55KSB7XHJcbiAgICAgICAgaWYgKGxpc3RQYXJhbXMpIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50TGlzdFBhcmFtcyA9IHsgLi4udGhpcy5jdXJyZW50TGlzdFBhcmFtcywgLi4ubGlzdFBhcmFtcyB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnBhZ2UgPSBBR1JPX05VTUJFUlMuWkVSTztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZUdyaWQobGlzdFBhcmFtczogYW55ID0ge30pIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zID0geyAuLi50aGlzLmN1cnJlbnRMaXN0UGFyYW1zLCAuLi5saXN0UGFyYW1zIH07XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnNvcnQ/Lmxlbmd0aCA8PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudExpc3RQYXJhbXMuc29ydCA9IHRoaXMuc3RhbmRhbG9uZSA/XHJcbiAgICAgICAgICAgICAgICBbeyBmaWVsZDogXCJjcmVhdGVkRGF0ZVwiLCBvcmRlcjogMSB9XSA6XHJcbiAgICAgICAgICAgICAgICBbeyBmaWVsZDogXCJsYXN0TW9kaWZpZWREYXRlXCIsIG9yZGVyOiAtMSB9XTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY3VycmVudExpc3RQYXJhbXMuZmlsdGVyUXVlcnkgPSB0aGlzLmdldEZpbHRlcigpO1xyXG5cclxuICAgICAgICB0aGlzLmV2ZW50Q29udHJvbFNlcnZpY2VcclxuICAgICAgICAgICAgLmxpc3QodGhpcy5jdXJyZW50TGlzdFBhcmFtcylcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgobGlzdDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWREYXRhID0gbGlzdC5jb250ZW50cztcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFRvdGFsUmVjb3JkcyA9IGxpc3QudG90YWxFbGVtZW50cztcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5ncmlkRGF0YSB8fCB0aGlzLmdyaWREYXRhLmxlbmd0aCA8PSBBR1JPX05VTUJFUlMuWkVSTykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NFdmVudENvbnRyb2xJdGVtcygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldEZpbHRlcigpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHsgZmlsdGVyRGF0YSB9ID0gdGhpcy5jdXJyZW50TGlzdFBhcmFtcztcclxuICAgICAgICBjb25zdCBmaWx0ZXJzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAoZmlsdGVyRGF0YVtcImNvbXBhbnlcIl0/LmlkKSB7XHJcbiAgICAgICAgICAgIGZpbHRlcnMucHVzaChgZTA3MGVtcC5pZCBlcSAnJHtmaWx0ZXJEYXRhW1wiY29tcGFueVwiXS5pZH0nYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZmlsdGVyRGF0YVtcImJyYW5jaFwiXT8uaWQpIHtcclxuICAgICAgICAgICAgZmlsdGVycy5wdXNoKGBlMDcwZmlsLmlkIGVxICcke2ZpbHRlckRhdGFbXCJicmFuY2hcIl0uaWR9J2ApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY29udHJvbENvZGUgPSBmaWx0ZXJEYXRhW1wiY29udHJvbENvZGVcIl07XHJcbiAgICAgICAgaWYgKGNvbnRyb2xDb2RlICYmIEFycmF5LmlzQXJyYXkoY29udHJvbENvZGUpICYmIGNvbnRyb2xDb2RlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgY29kZXMgPSBjb250cm9sQ29kZS5tYXAoKGNvZGU6IHN0cmluZykgPT4gcGFyc2VJbnQoY29kZSwgMTApKS5qb2luKFwiLFwiKTtcclxuICAgICAgICAgICAgZmlsdGVycy5wdXNoKGBjb250cm9sQ29kZSBpbiAoJHtjb2Rlc30pYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZmlsdGVyRGF0YVtcImV4dGVybmFsSWRcIl0pIHtcclxuICAgICAgICAgICAgZmlsdGVycy5wdXNoKGBleHRlcm5hbElkIGVxICcke2ZpbHRlckRhdGFbXCJleHRlcm5hbElkXCJdfSdgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChmaWx0ZXJEYXRhW1wiZXZlbnRPcmlnaW5cIl0pIHtcclxuICAgICAgICAgICAgZmlsdGVycy5wdXNoKGBldmVudE9yaWdpbiBlcSAnJHtmaWx0ZXJEYXRhW1wiZXZlbnRPcmlnaW5cIl19J2ApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGZpbHRlckRhdGFbXCJzdGF0dXNcIl0pIHtcclxuICAgICAgICAgICAgZmlsdGVycy5wdXNoKGBldmVudENvbnRyb2xJdGVtLnN0YXR1cyBlcSAnJHtmaWx0ZXJEYXRhW1wic3RhdHVzXCJdfSdgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChmaWx0ZXJEYXRhW1wiY3JlYXRlZERhdGVcIl0pIHtcclxuICAgICAgICAgICAgZmlsdGVycy5wdXNoKGBjcmVhdGVkRGF0ZSBnZSAnJHt0aGlzLmdldFN0YXJ0RGF0ZShmaWx0ZXJEYXRhW1wiY3JlYXRlZERhdGVcIl0pfSdgKTtcclxuICAgICAgICAgICAgZmlsdGVycy5wdXNoKGBjcmVhdGVkRGF0ZSBsZSAnJHt0aGlzLmdldEVuZERhdGUoZmlsdGVyRGF0YVtcImNyZWF0ZWREYXRlXCJdKX0nYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmlsdGVycy5qb2luKFwiIGFuZCBcIik7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRFbmREYXRlKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGVuZERhdGUgPSBtb21lbnQodmFsdWUpLmVuZE9mKFwiZGF5XCIpLmZvcm1hdChcIllZWVktTU0tRERUSEg6bW06c3NcIikgKyBcIlpcIjtcclxuICAgICAgICByZXR1cm4gZW5kRGF0ZTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgZ2V0U3RhcnREYXRlKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG1vbWVudCh2YWx1ZSkuc3RhcnRPZihcImRheVwiKS5mb3JtYXQoXCJZWVlZLU1NLUREVEhIOm1tOnNzXCIpICsgXCJaXCI7XHJcbiAgICAgICAgcmV0dXJuIHN0YXJ0RGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldERpc3BsYXlGaWVsZHMoKTogc3RyaW5nW10ge1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICcqJyxcclxuICAgICAgICAgICAgJ2NvbXBhbnkuKicsXHJcbiAgICAgICAgICAgICdicmFuY2guKicsXHJcbiAgICAgICAgICAgICdldmVudENvbnRyb2xJdGVtLmV2ZW50RG9tYWluJyxcclxuICAgICAgICAgICAgJ2V2ZW50Q29udHJvbEl0ZW0uaWQnLFxyXG4gICAgICAgICAgICAnZXZlbnRDb250cm9sSXRlbS5ldmVudERvbWFpbicsXHJcbiAgICAgICAgICAgICdldmVudENvbnRyb2xJdGVtLmV2ZW50U2VydmljZScsXHJcbiAgICAgICAgICAgICdldmVudENvbnRyb2xJdGVtLmV2ZW50UHJpbWl0aXZlJyxcclxuICAgICAgICAgICAgJ2V2ZW50Q29udHJvbEl0ZW0uZXZlbnRDb250cm9sJyxcclxuICAgICAgICAgICAgJ2V2ZW50Q29udHJvbEl0ZW0uZXZlbnRHcm91cCcsXHJcbiAgICAgICAgICAgICdldmVudENvbnRyb2xJdGVtLnNlcXVlbmNlJyxcclxuICAgICAgICAgICAgJ2V2ZW50Q29udHJvbEl0ZW0uZXZlbnRPcGVyYXRpb24nLFxyXG4gICAgICAgICAgICAnZXZlbnRDb250cm9sSXRlbS5vdXRwdXQnLFxyXG4gICAgICAgICAgICAnZXZlbnRDb250cm9sSXRlbS5pbnB1dCcsXHJcbiAgICAgICAgICAgICdldmVudENvbnRyb2xJdGVtLnN0YXR1cycsXHJcbiAgICAgICAgICAgICdldmVudENvbnRyb2xJdGVtLnN1YlRpdGxlJyxcclxuICAgICAgICAgICAgJ2V2ZW50Q29udHJvbEl0ZW0ubWVzc2FnZScsXHJcbiAgICAgICAgICAgICdldmVudENvbnRyb2xJdGVtLmNyZWF0ZWRCeScsXHJcbiAgICAgICAgICAgICdldmVudENvbnRyb2xJdGVtLmNyZWF0ZWREYXRlJyxcclxuICAgICAgICAgICAgJ2V2ZW50Q29udHJvbEl0ZW0ubGFzdE1vZGlmaWVkQnknLFxyXG4gICAgICAgICAgICAnZXZlbnRDb250cm9sSXRlbS5sYXN0TW9kaWZpZWREYXRlJyxcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcHJvY2Vzc0V2ZW50Q29udHJvbEl0ZW1zKCkge1xyXG4gICAgICAgIHRoaXMuZ3JpZERhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzb3J0ZWRJdGVtcyA9IGl0ZW0uZXZlbnRDb250cm9sSXRlbS5zb3J0KChhOiBFdmVudENvbnRyb2xJdGVtLCBiOiBFdmVudENvbnRyb2xJdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYS5zZXF1ZW5jZSAtIGIuc2VxdWVuY2U7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBzdGVwcyA9IHNvcnRlZEl0ZW1zLm1hcCgoZGV0YWlsOiBFdmVudENvbnRyb2xJdGVtLCBpbmRleDogbnVtYmVyKSA9PiB0aGlzLmNyZWF0ZVN0ZXAoZGV0YWlsLCBpdGVtLCBpbmRleCkpO1xyXG4gICAgICAgICAgICBjb25zdCBhY3RpdmVJbmRleCA9IHRoaXMuY2FsY3VsYXRlQWN0aXZlSW5kZXgoc29ydGVkSXRlbXMpO1xyXG4gICAgICAgICAgICBpdGVtLmdyb3VwcyA9IFt7IHN0ZXBzLCBhY3RpdmVJbmRleCB9XTtcclxuICAgICAgICAgICAgaXRlbS5hY3RpdmVJbmRleCA9IGFjdGl2ZUluZGV4O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZ3JpZERhdGFSZXNvbHZlZCA9IHRoaXMuZ3JpZERhdGE7XHJcbiAgICAgICAgdGhpcy5ncmlkTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2FsY3VsYXRlQWN0aXZlSW5kZXgoZGV0YWlsczogRXZlbnRDb250cm9sSXRlbVtdKTogbnVtYmVyIHtcclxuICAgICAgICBjb25zdCBsYXN0QWN0aXZlID0gZGV0YWlscy5yZWR1Y2UoXHJcbiAgICAgICAgICAgIChsYXN0SW5kZXgsIGRldGFpbCwgY3VycmVudEluZGV4KSA9PiAoZGV0YWlsLnN0YXR1cyAhPT0gRXZlbnRTdGF0dXMuUEVORElORyA/IGN1cnJlbnRJbmRleCA6IGxhc3RJbmRleCksXHJcbiAgICAgICAgICAgIC0xXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAobGFzdEFjdGl2ZSAhPT0gLTEgJiYgZGV0YWlsc1tsYXN0QWN0aXZlXS5zdGF0dXMgPT09IEV2ZW50U3RhdHVzLlNVQ0NFU1MpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGxhc3RBY3RpdmUgKyAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbGFzdEFjdGl2ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNyZWF0ZVN0ZXAoZGV0YWlsOiBFdmVudENvbnRyb2xJdGVtLCBpdGVtOiBFdmVudENvbnRyb2wsIGRldGFpbEluZGV4OiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpdGVtOiBkZXRhaWwsXHJcbiAgICAgICAgICAgIGNvbnRyb2xDb2RlOiBpdGVtLmNvbnRyb2xDb2RlLFxyXG4gICAgICAgICAgICBldmVudFR5cGU6IGl0ZW0uZXZlbnRPcmlnaW4sXHJcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLmdldEV2ZW50TGFiZWwoZGV0YWlsKSxcclxuICAgICAgICAgICAgc3ViTGFiZWw6IHRoaXMuZm9ybWF0U3VidGl0bGUoZGV0YWlsKSxcclxuICAgICAgICAgICAgZGlzYWJsZWQ6IGRldGFpbC5zdGF0dXMgPT09IEV2ZW50U3RhdHVzLlBFTkRJTkcgJiYgZGV0YWlsSW5kZXggIT09IHRoaXMuY2FsY3VsYXRlQWN0aXZlSW5kZXgoaXRlbS5ldmVudENvbnRyb2xJdGVtKSxcclxuICAgICAgICAgICAgdG9vbHRpcDogdGhpcy5nZXRFdmVudExhYmVsKGRldGFpbCksXHJcbiAgICAgICAgICAgIHN0YXRlOiB0aGlzLmRldGVybWluZVN0ZXBTdGF0ZShkZXRhaWwpLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkZXRlcm1pbmVTdGVwU3RhdGUoZGV0YWlsOiB7IHN0YXR1czogRXZlbnRTdGF0dXMgfSk6IFN0ZXBTdGF0ZSB7XHJcbiAgICAgICAgaWYgKGRldGFpbC5zdGF0dXMgPT09IEV2ZW50U3RhdHVzLlNVQ0NFU1MpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFN0ZXBTdGF0ZS5TdWNjZXNzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGV0YWlsLnN0YXR1cyA9PT0gRXZlbnRTdGF0dXMuRkFJTEVEKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBTdGVwU3RhdGUuV2FybmluZztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFN0ZXBTdGF0ZS5EZWZhdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0RXZlbnRMYWJlbChkZXRhaWw6IGFueSk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgZXZlbnRMYWJlbCA9IHRoaXMuZXZlbnRJdGVtLmZpbmQoKGUpID0+IGUudmFsdWUgPT09IGRldGFpbC5ldmVudE9wZXJhdGlvbik/LmxhYmVsO1xyXG4gICAgICAgIGlmIChldmVudExhYmVsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGV2ZW50TGFiZWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBsb2NhbExhYmVsID0gdGhpcy5nZXRFdmVudE9wZXJhdGlvblN1YkxvY2FsTGFiZWwoZGV0YWlsKTtcclxuICAgICAgICBpZiAobG9jYWxMYWJlbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbG9jYWxMYWJlbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRldGFpbC5ldmVudE9wZXJhdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldEV2ZW50T3BlcmF0aW9uU3ViTG9jYWxMYWJlbChkZXRhaWw6IEV2ZW50Q29udHJvbEl0ZW0pOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbktleSA9IFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuXCIgKyBkZXRhaWwuZXZlbnRPcGVyYXRpb247XHJcbiAgICAgICAgY29uc3QgdHJhbnNsYXRpb24gPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRyYW5zbGF0aW9uS2V5KTtcclxuICAgICAgICBpZiAodHJhbnNsYXRpb24gIT09IHRyYW5zbGF0aW9uS2V5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmb3JtYXRTdWJ0aXRsZShkZXRhaWw6IEV2ZW50Q29udHJvbEl0ZW0pOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBjb25zdCB7IGV2ZW50T3BlcmF0aW9uLCBzdWJUaXRsZSB9ID0gZGV0YWlsO1xyXG5cclxuICAgICAgICBjb25zdCBpbnZvaWNlT3BlcmF0aW9ucyA9IFtcclxuICAgICAgICAgICAgRXZlbnRPcGVyYXRpb24uQ1JFQVRFX0lOVk9JQ0VfRklYQVRJT04sXHJcbiAgICAgICAgICAgIEV2ZW50T3BlcmF0aW9uLkNBTkNFTF9JTlZPSUNFX0ZJWEFUSU9OLFxyXG4gICAgICAgICAgICBFdmVudE9wZXJhdGlvbi5PUklHSU5BVElPTl9DUkVBVEVfSU5WT0lDRVxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIGNvbnN0IG51bWJlclByZWZpeE9wZXJhdGlvbnMgPSBbXHJcbiAgICAgICAgICAgIEV2ZW50T3BlcmF0aW9uLkNMT1NFX0lOVk9JQ0VfRklYQVRJT04sXHJcbiAgICAgICAgICAgIEV2ZW50T3BlcmF0aW9uLlJFT1BFTl9JTlZPSUNFX0ZJWEFUSU9OXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgY29uc3QgcHJlc2NyaXB0aW9uT3BlcmF0aW9ucyA9IFtcclxuICAgICAgICAgICAgRXZlbnRPcGVyYXRpb24uUFJFU0NSSVBUSU9OX0RBVEFfTE9BRF9QUk9EVUNUX1RZUEUsXHJcbiAgICAgICAgICAgIEV2ZW50T3BlcmF0aW9uLlBSRVNDUklQVElPTl9EQVRBX0xPQURfQUNUSVZFX1BSSU5DSVBMRSxcclxuICAgICAgICAgICAgRXZlbnRPcGVyYXRpb24uUFJFU0NSSVBUSU9OX0RBVEFfTE9BRF9GT1JNVUxBVElPTixcclxuICAgICAgICAgICAgRXZlbnRPcGVyYXRpb24uUFJFU0NSSVBUSU9OX0RBVEFfTE9BRF9CVUxMRVRJTixcclxuICAgICAgICAgICAgRXZlbnRPcGVyYXRpb24uUFJFU0NSSVBUSU9OX0RBVEFfTE9BRF9BUFBMSUNBVElPTl9VTklULFxyXG4gICAgICAgICAgICBFdmVudE9wZXJhdGlvbi5QUkVTQ1JJUFRJT05fREFUQV9MT0FEX1NQRUNJRSxcclxuICAgICAgICAgICAgRXZlbnRPcGVyYXRpb24uUFJFU0NSSVBUSU9OX0RBVEFfTE9BRF9BUFBMSUNBVElPTl9UWVBFLFxyXG4gICAgICAgICAgICBFdmVudE9wZXJhdGlvbi5QUkVTQ1JJUFRJT05fREFUQV9MT0FEX1BST0JMRU1TLFxyXG4gICAgICAgICAgICBFdmVudE9wZXJhdGlvbi5QUkVTQ1JJUFRJT05fREFUQV9MT0FEX0FQUExJQ0FUSU9OXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgbGV0IGZvcm1hdHRlZFN1YnRpdGxlID0gc3ViVGl0bGU7XHJcbiAgICAgICAgaWYgKGludm9pY2VPcGVyYXRpb25zLmluY2x1ZGVzKGV2ZW50T3BlcmF0aW9uKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMuaW52b2ljZVR5cGVUcmFuc2xhdGUuZmluZCgoZSkgPT4gZS52YWx1ZSA9PT0gc3ViVGl0bGUpPy5sYWJlbDtcclxuICAgICAgICAgICAgZm9ybWF0dGVkU3VidGl0bGUgPSBsYWJlbCA/IHRoaXMudHJhbnNsYXRlLmluc3RhbnQobGFiZWwpIDogc3ViVGl0bGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobnVtYmVyUHJlZml4T3BlcmF0aW9ucy5pbmNsdWRlcyhldmVudE9wZXJhdGlvbikpIHtcclxuICAgICAgICAgICAgZm9ybWF0dGVkU3VidGl0bGUgPSBzdWJUaXRsZSA/IGBuwrAgJHtzdWJUaXRsZX1gIDogc3ViVGl0bGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocHJlc2NyaXB0aW9uT3BlcmF0aW9ucy5pbmNsdWRlcyhldmVudE9wZXJhdGlvbikpIHtcclxuICAgICAgICAgICAgZm9ybWF0dGVkU3VidGl0bGUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5uZXdfcHJlc2NyaXB0aW9uX3BhZ2UnLCB7IGNvdW50OiBzdWJUaXRsZSB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWRTdWJ0aXRsZTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHB1YmxpYyBvbkdyaWRDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSBldmVudD8ucm93cztcclxuICAgICAgICBjb25zdCBwYWdlID0gZXZlbnQ/LmZpcnN0IC8gc2l6ZTtcclxuICAgICAgICBjb25zdCBzb3J0ID0gZXZlbnQubXVsdGlTb3J0TWV0YTtcclxuICAgICAgICB0aGlzLmdyaWRMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICBpZiAoc2l6ZSAhPT0gQUdST19OVU1CRVJTLlRFTiB8fCBwYWdlICE9PSBBR1JPX05VTUJFUlMuWkVSTyB8fCAoc29ydCAmJiBzb3J0Lmxlbmd0aCA+IEFHUk9fTlVNQkVSUy5aRVJPKSkge1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRvclN0b3JhZ2VTZXJ2aWNlLnN0b3JlUGFnaW5hdG9yKFwiRXZlbnRDb250cm9sQm9hcmRQYWdpbmF0b3JcIiwgeyBwYWdlLCBzaXplLCBzb3J0IH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlR3JpZCh7IHBhZ2UsIHNpemUsIHNvcnQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFBhZ2VTaXplKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFJvd0luZGV4KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnBhZ2UgKiB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNvcnRGaWVsZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudExpc3RQYXJhbXMuc29ydCB8fCB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnNvcnQubGVuZ3RoIDw9IEFHUk9fTlVNQkVSUy5aRVJPKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdyaWRDb2x1bW5zW0FHUk9fTlVNQkVSUy5aRVJPXS5maWVsZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudExpc3RQYXJhbXMuc29ydFtBR1JPX05VTUJFUlMuWkVST10uZmllbGQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNvcnRPcmRlcigpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudExpc3RQYXJhbXMuc29ydCB8fCB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnNvcnQubGVuZ3RoIDw9IEFHUk9fTlVNQkVSUy5aRVJPKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBBR1JPX05VTUJFUlMuT05FO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudExpc3RQYXJhbXMuc29ydFtBR1JPX05VTUJFUlMuWkVST10ub3JkZXI7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEVycm9yTWVzc2FnZXMoKSB7XHJcbiAgICAgICAgY29uc3QgdHJhbnNsYXRlZEVycm9yTWVzc2FnZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBMb29rdXBFcnJvck1lc3NhZ2VzKSB7XHJcbiAgICAgICAgICAgIGlmIChMb29rdXBFcnJvck1lc3NhZ2VzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmdldChMb29rdXBFcnJvck1lc3NhZ2VzW2tleV0pLnN1YnNjcmliZSgocmVzOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVkRXJyb3JNZXNzYWdlc1trZXldID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZWRFcnJvck1lc3NhZ2VzO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb2R1Y2VySW52b2ljZUlkRnJvbVBhcmFtcyhwYXJhbTogYW55KTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKCFwYXJhbSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIHBhcmFtLnByb2R1Y2VySW52b2ljZUlkcz8uWzBdLFxyXG4gICAgICAgICAgICBwYXJhbS5pbnZvaWNlPy5nZW5lcmFsRGF0YT8udHJhbnNhY3Rpb25hbElkLFxyXG4gICAgICAgICAgICBwYXJhbS5wcm9kdWNlckludm9pY2VJZCxcclxuICAgICAgICAgICAgcGFyYW0uZXh0ZXJuYWxJZCxcclxuICAgICAgICAgICAgcGFyYW0uZXh0ZXJuYWxJbnZvaWNlSWRzPy5bMF0sXHJcbiAgICAgICAgXS5maW5kKChpZCkgPT4gaWQpID8/IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvZHVjZXJCYWxhbmNlRW50cnlDb250cm9sSWRGcm9tUGFyYW1zKHBhcmFtOiBhbnkpIHtcclxuICAgICAgICBjb25zdCB7IHByb2R1Y2VyQmFsYW5jZUVudHJ5Q29udHJvbElkIH0gPSBwYXJhbTtcclxuICAgICAgICByZXR1cm4gcHJvZHVjZXJCYWxhbmNlRW50cnlDb250cm9sSWQgPyBwcm9kdWNlckJhbGFuY2VFbnRyeUNvbnRyb2xJZCA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0ZXBTZWxlY3RlZChldmVudDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFN0ZXAgPSBldmVudC5zdGVwO1xyXG4gICAgICAgIHRoaXMuYXBwbHlTaWRlYmFyVGl0bGUoXCJcIik7XHJcblxyXG4gICAgICAgIHN3aXRjaCAodGhpcy5zZWxlY3RlZFN0ZXAuZXZlbnRUeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgRXZlbnRPcmlnaW4uQkFMQU5DRV9FTlRSWV9DT05UUk9MOlxyXG4gICAgICAgICAgICBjYXNlIEV2ZW50T3JpZ2luLlRJQ0tFVDpcclxuICAgICAgICAgICAgY2FzZSBFdmVudE9yaWdpbi5JTlZPSUNFOlxyXG4gICAgICAgICAgICBjYXNlIEV2ZW50T3JpZ2luLkNSRUFURV9JTlZPSUNFOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaWRlYmFyTG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW0gPSBKU09OLnBhcnNlKHRoaXMuc2VsZWN0ZWRTdGVwLml0ZW0uaW5wdXQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2R1Y2VySW52b2ljZUlkID0gdGhpcy5nZXRQcm9kdWNlckludm9pY2VJZEZyb21QYXJhbXMocGFyYW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWx0ZXJRdWVyeSA9IFwiXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcHJvZHVjZXJJbnZvaWNlSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvZHVjZXJCYWxhbmNlRW50cnlDb250cm9sSWQgPSB0aGlzLmdldFByb2R1Y2VyQmFsYW5jZUVudHJ5Q29udHJvbElkRnJvbVBhcmFtcyhwYXJhbSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2R1Y2VyQmFsYW5jZUVudHJ5Q29udHJvbElkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpZGViYXJMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclF1ZXJ5ID0gYHByb2R1Y2VyQmFsYW5jZUVudHJ5Q29udHJvbC5pZCBlcSAnJHtwcm9kdWNlckJhbGFuY2VFbnRyeUNvbnRyb2xJZH0nYDtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJRdWVyeSA9IGBpZCBlcSAnJHtwcm9kdWNlckludm9pY2VJZH0nYDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjZXJJbnZvaWNlU2VydmljZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAubGlzdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGRzOiBbXCIqXCIsIFwicHJvZHVjZXJCYWxhbmNlRW50cnlDb250cm9sLipcIiwgXCJwcm9kdWNlckJhbGFuY2VFbnRyeUNvbnRyb2wucHJvZHVjZXIuKlwiXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclF1ZXJ5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9kdWNlckludm9pY2UgPSByZXN1bHQ/LmNvbnRlbnRzWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjZXJJbnZvaWNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2lkZWJhckxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5U2lkZWJhclRpdGxlKHRoaXMuZ2V0UHJvZHVjZXJJbnZvaWNlTnVtYmVyQW5kU2VyaWUoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2lkZWJhckxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEV2ZW50T3JpZ2luLkZJWEFUSU9OOlxyXG4gICAgICAgICAgICBjYXNlIEV2ZW50T3JpZ2luLkNBTkNFTF9GSVhBVElPTjpcclxuICAgICAgICAgICAgY2FzZSBFdmVudE9yaWdpbi5DSEFOR0VfUkVRVUVTVDpcclxuICAgICAgICAgICAgY2FzZSBFdmVudE9yaWdpbi5UUkFOU0ZFUjpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zaG93UmVwcm9jZXNzQnV0dG9uID0gZXZlbnQuc3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLldhcm5pbmc7XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd1NpZGViYXIgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXBwbHlTaWRlYmFyVGl0bGUodGl0bGU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuc2lkZWJhclRpdGxlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmV2ZW50X3NpZGViYXJfdGl0bGVcIiwgeyBldmVudE51bWJlcjogdGl0bGUgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRQcm9kdWNlckludm9pY2VOdW1iZXJBbmRTZXJpZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0aGlzLnByb2R1Y2VySW52b2ljZT8ubnVtYmVyICYmIHRoaXMucHJvZHVjZXJJbnZvaWNlPy5zZXJpZXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMucHJvZHVjZXJJbnZvaWNlLm51bWJlcn0gLSAke3RoaXMucHJvZHVjZXJJbnZvaWNlLnNlcmllc31gO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVwcm9jZXNzRXZlbnQoKSB7XHJcbiAgICAgICAgY29uc3QgcmVwcm9jZXNzRXZlbnRPYmo6IFJlcHJvY2Vzc0ZhaWxlZEV2ZW50ID0ge1xyXG4gICAgICAgICAgICBldmVudENvbnRyb2xJdGVtSWQ6IHRoaXMuc2VsZWN0ZWRTdGVwLml0ZW0uaWQsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmV2ZW50Q29udHJvbEl0ZW1TZXJ2aWNlXHJcbiAgICAgICAgICAgIC5yZXByb2Nlc3NGYWlsZWRFdmVudChyZXByb2Nlc3NFdmVudE9iailcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRNZXNzYWdlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImluZm9cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5yZXByb2Nlc3NpbmdfZXZlbnRfbWVzc2FnZV90aXRsZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnJlcHJvY2Vzc2luZ19ldmVudF9tZXNzYWdlX2Rlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZXJyb3JcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5lcnJvcl9yZXByb2Nlc3NpbmdfZXZlbnRfbWVzc2FnZV90aXRsZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX3JlcHJvY2Vzc2luZ19ldmVudF9tZXNzYWdlX2Rlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkTWVzc2FnZShzZXZlcml0eTogc3RyaW5nLCBzdW1tYXJ5OiBzdHJpbmcsIGRldGFpbDogc3RyaW5nLCBsaWZlID0gQUdST19OVU1CRVJTLkZJVkVfU0VDT05EUykge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHksXHJcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoc3VtbWFyeSksXHJcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChkZXRhaWwpLFxyXG4gICAgICAgICAgICBsaWZlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvcGVuTW9kYWwoKSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5TW9kYWwgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd1NpZGViYXIgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgb3BlbkNhbmNlbE1vZGFsKCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuY2FuY2VsRXZlbnREaWFsb2dDb25maWcuYmVmb3JlT3Blbj8uKCk7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQ2FuY2VsRXZlbnREaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgaGVhZGVyOiB0aGlzLmNhbmNlbEV2ZW50RGlhbG9nQ29uZmlnPy5oZWFkZXIsXHJcbiAgICAgICAgICAgIGNvbnRlbnRTdHlsZTogeyBoZWlnaHQ6IFwiMTAwJVwiIH0sXHJcbiAgICAgICAgICAgIGNsb3NhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBjbG9zZU9uRXNjYXBlOiBmYWxzZSxcclxuICAgICAgICAgICAgZGF0YTogeyBjYW5jZWxFdmVudERpYWxvZ0NvbmZpZzogdGhpcy5jYW5jZWxFdmVudERpYWxvZ0NvbmZpZyB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjb25maXJtTW9kYWwoKSB7XHJcbiAgICAgICAgdGhpcy5yZXByb2Nlc3NFdmVudCgpO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheU1vZGFsID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNhbmNlbE1vZGFsKCkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheU1vZGFsID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsb3NlU2lkZWJhcigpIHtcclxuICAgICAgICB0aGlzLnNob3dTaWRlYmFyID0gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuIl19
597
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtY29udHJvbC1ib2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZXZlbnQtY29udHJvbC1ib2FyZC9ldmVudC1jb250cm9sLWJvYXJkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxRQUFRLE1BQU0sNEJBQTRCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBZ0MsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUMvSCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFRLFNBQVMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hILE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFNUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDbEcsT0FB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ZixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRU0sWUFBWTtRQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7Q0FDSixDQUFBOztZQTlqQm1DLHFCQUFxQjtZQUNuQixXQUFXO1lBQ04sZ0JBQWdCO1lBQ2IsbUJBQW1CO1lBQ2YsdUJBQXVCO1lBQ3ZCLHVCQUF1QjtZQUN4QixzQkFBc0I7WUFDOUIsY0FBYztZQUNmLGFBQWE7O0FBM0R4QztJQUFSLEtBQUssRUFBRTsyREFBbUI7QUFDbEI7SUFBUixLQUFLLEVBQUU7MERBQWtCO0FBQ2pCO0lBQVIsS0FBSyxFQUFFOytEQUF3QjtBQUN2QjtJQUFSLEtBQUssRUFBRTsrREFBMkI7QUFDMUI7SUFBUixLQUFLLEVBQUU7K0RBQTJCO0FBQzFCO0lBQVIsS0FBSyxFQUFFOzhEQUFxQjtBQUNwQjtJQUFSLEtBQUssRUFBRTsrREFBb0I7QUFDbkI7SUFBUixLQUFLLEVBQUU7OERBQXNCO0FBQ3JCO0lBQVIsS0FBSyxFQUFFO29FQUE0QjtBQUMzQjtJQUFSLEtBQUssRUFBRTsyRUFBbUQ7QUFDakQ7SUFBVCxNQUFNLEVBQUU7a0VBQTZEO0FBWDdELDBCQUEwQjtJQU50QyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUscUJBQXFCO1FBQy9CLG9raUJBQW1EO1FBRW5ELFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUM7O0tBQ3pELENBQUM7R0FDVywwQkFBMEIsQ0FrbkJ0QztTQWxuQlksMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVnaXN0ZXJMb2NhbGVEYXRhIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgbG9jYWxlUHQgZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL3B0XCI7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgTE9DQUxFX0lELCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IEJhZGdlQ29sb3JzLCBCdXR0b25Qcmlvcml0eSwgRmllbGRUeXBlLCBGb3JtRmllbGQsIFN0ZXAsIFN0ZXBTdGF0ZSB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzXCI7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcInByaW1lbmdcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBBR1JPX05VTUJFUlMgfSBmcm9tIFwiLi4vLi4vZW51bXMvYWdyby1udW1iZXJzLmVudW1cIjtcclxuaW1wb3J0IHsgTGliVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2xpYi10cmFuc2xhdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFByb2R1Y2VySW52b2ljZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcHJvZHVjZXItaW52b2ljZVwiO1xyXG5pbXBvcnQgeyBXZWJzb2NrZXRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3dlYnNvY2tldFwiO1xyXG5pbXBvcnQgeyBDYW5jZWxFdmVudERpYWxvZ0NvbmZpZyB9IGZyb20gXCIuLi9jYW5jZWwtZXZlbnQtZGlhbG9nL2NhbmNlbC1ldmVudC1kaWFsb2ctY29uZmlnXCI7XHJcbmltcG9ydCB7IENhbmNlbEV2ZW50RGlhbG9nQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NhbmNlbC1ldmVudC1kaWFsb2cvY2FuY2VsLWV2ZW50LWRpYWxvZy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgZXZlbnRJdGVtIH0gZnJvbSBcIi4vY29tbW9uL2V2ZW50LWNvbnRyb2wtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IEV2ZW50T3BlcmF0aW9uIH0gZnJvbSBcIi4vY29tbW9uL2V2ZW50LW9wZXJhdGlvblwiO1xyXG5pbXBvcnQgeyBFdmVudE9yaWdpbiB9IGZyb20gXCIuL2NvbW1vbi9ldmVudC1vcmlnaW5cIjtcclxuaW1wb3J0IHsgRXZlbnRTdGF0dXMgfSBmcm9tIFwiLi9jb21tb24vZXZlbnQtc3RhdHVzXCI7XHJcbmltcG9ydCB7IGludm9pY2VUeXBlVHJhbnNsYXRlIH0gZnJvbSBcIi4vY29tbW9uL2lucHV0LWZpZWxkcy10cmFuc2xhdGVcIjtcclxuaW1wb3J0IHsgTG9va3VwRXJyb3JNZXNzYWdlcyB9IGZyb20gXCIuL2NvbW1vbi9sb29rdXAtZXJyb3ItbWVzc2FnZS5jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgRTA3MEVtcCB9IGZyb20gXCIuL3NlcnZpY2UvZTA3MGVtcC9lMDcwZW1wXCI7XHJcbmltcG9ydCB7IEUwNzBGaWwgfSBmcm9tIFwiLi9zZXJ2aWNlL2UwNzBmaWwvZTA3MGZpbFwiO1xyXG5pbXBvcnQgeyBFdmVudENvbnRyb2xJdGVtIH0gZnJvbSBcIi4vc2VydmljZS9ldmVudC1jb250cm9sLWl0ZW0vZXZlbnQtY29udHJvbC1pdGVtXCI7XHJcbmltcG9ydCB7IEV2ZW50Q29udHJvbEl0ZW1TZXJ2aWNlLCBSZXByb2Nlc3NGYWlsZWRFdmVudCB9IGZyb20gXCIuL3NlcnZpY2UvZXZlbnQtY29udHJvbC1pdGVtL2V2ZW50LWNvbnRyb2wtaXRlbS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEV2ZW50Q29udHJvbCB9IGZyb20gXCIuL3NlcnZpY2UvZXZlbnQtY29udHJvbC9ldmVudC1jb250cm9sXCI7XHJcbmltcG9ydCB7IEV2ZW50Q29udHJvbFNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlL2V2ZW50LWNvbnRyb2wvZXZlbnQtY29udHJvbC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRvclN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZS9wYWdpbmF0b3Itc3RvcmFnZS5zZXJ2aWNlXCI7XHJcbmNvbnN0IG1vbWVudCA9IHJlcXVpcmUoXCJtb21lbnRcIik7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImV2ZW50LWNvbnRyb2wtYm9hcmRcIixcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vZXZlbnQtY29udHJvbC1ib2FyZC5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL2V2ZW50LWNvbnRyb2wtYm9hcmQuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IExPQ0FMRV9JRCwgdXNlVmFsdWU6IFwicHQtQlJcIiB9XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEV2ZW50Q29udHJvbEJvYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcbiAgICBASW5wdXQoKSBjb21wYW55ITogRTA3MEVtcDtcclxuICAgIEBJbnB1dCgpIGJyYW5jaCE6IEUwNzBGaWw7XHJcbiAgICBASW5wdXQoKSBjb250cm9sQ29kZSE6IHN0cmluZ1tdO1xyXG4gICAgQElucHV0KCkgZXZlbnRPcmlnaW4hOiBFdmVudE9yaWdpbjtcclxuICAgIEBJbnB1dCgpIGV2ZW50U3RhdHVzITogRXZlbnRTdGF0dXM7XHJcbiAgICBASW5wdXQoKSBleHRlcm5hbElkITogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgY3JlYXRlZERhdGUhOiBEYXRlO1xyXG4gICAgQElucHV0KCkgc3RhbmRhbG9uZSE6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBzaG93Q2FuY2VsQnV0dG9uITogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGNhbmNlbEV2ZW50RGlhbG9nQ29uZmlnITogQ2FuY2VsRXZlbnREaWFsb2dDb25maWc7XHJcbiAgICBAT3V0cHV0KCkgcHJvY2Vzc2VkRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgcHVibGljIHByb2R1Y2VySW52b2ljZSE6IGFueTtcclxuXHJcbiAgICBwdWJsaWMgc3RlcHM6IFN0ZXBbXSA9IFtdO1xyXG4gICAgcHVibGljIHNlbGVjdGVkU3RlcDogYW55O1xyXG4gICAgcHVibGljIGV2ZW50SWQhOiBcIlwiO1xyXG4gICAgcHVibGljIHNob3dTaWRlYmFyID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgc2hvd1JlcHJvY2Vzc0J1dHRvbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHNpZGViYXJUaXRsZSE6IHN0cmluZztcclxuICAgIHB1YmxpYyBzaWRlYmFyTG9hZGluZyE6IGJvb2xlYW47XHJcblxyXG4gICAgcHVibGljIGZpbHRlckZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcclxuICAgIHB1YmxpYyBmaWx0ZXJGaWVsZHMhOiBGb3JtRmllbGRbXTtcclxuXHJcbiAgICBwdWJsaWMgZ3JpZERhdGEhOiBhbnlbXTtcclxuICAgIHB1YmxpYyBncmlkRGF0YVJlc29sdmVkITogYW55W107XHJcbiAgICBwdWJsaWMgZ3JpZENvbHVtbnMhOiBhbnlbXTtcclxuICAgIHB1YmxpYyBncmlkVG90YWxSZWNvcmRzID0gQUdST19OVU1CRVJTLlpFUk87XHJcbiAgICBwdWJsaWMgZ3JpZExvYWRpbmcgPSBmYWxzZTtcclxuICAgIHB1YmxpYyBkaXNwbGF5TW9kYWwgPSBmYWxzZTtcclxuXHJcbiAgICBwdWJsaWMgQnV0dG9uUHJpb3JpdHkgPSBCdXR0b25Qcmlvcml0eTtcclxuICAgIHB1YmxpYyBCYWRnZUNvbG9ycyA9IEJhZGdlQ29sb3JzO1xyXG5cclxuICAgIHB1YmxpYyBwZXJtaXNzaW9uczogYW55ID0ge307XHJcbiAgICBwdWJsaWMgbG9jYWxlQ29uZmlnOiBhbnkgPSB7fTtcclxuXHJcbiAgICBwdWJsaWMgY3VycmVudExpc3RQYXJhbXM6IGFueSA9IHtcclxuICAgICAgICBwYWdlOiBBR1JPX05VTUJFUlMuWkVSTyxcclxuICAgICAgICBzaXplOiBBR1JPX05VTUJFUlMuVEVOLFxyXG4gICAgICAgIGRpc3BsYXlGaWVsZHM6IHRoaXMuZ2V0RGlzcGxheUZpZWxkcygpLFxyXG4gICAgICAgIHNvcnQ6IFtdLFxyXG4gICAgICAgIGZpbHRlckRhdGE6IHt9XHJcbiAgICB9O1xyXG5cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50SXRlbSA9IGV2ZW50SXRlbTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW52b2ljZVR5cGVUcmFuc2xhdGUgPSBpbnZvaWNlVHlwZVRyYW5zbGF0ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogTGliVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgd2Vic29ja2V0U2VydmljZTogV2Vic29ja2V0U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50Q29udHJvbFNlcnZpY2U6IEV2ZW50Q29udHJvbFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwYWdpbmF0b3JTdG9yYWdlU2VydmljZTogUGFnaW5hdG9yU3RvcmFnZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBldmVudENvbnRyb2xJdGVtU2VydmljZTogRXZlbnRDb250cm9sSXRlbVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwcm9kdWNlckludm9pY2VTZXJ2aWNlOiBQcm9kdWNlckludm9pY2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZVB0KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5ncmlkQ29sdW1ucyA9IHRoaXMuc2V0R3JpZENvbHVtbnMoKTtcclxuICAgICAgICB0aGlzLmNhbGxXZWJzb2NrZXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmICghdGhpcy5maWx0ZXJGb3JtR3JvdXApIHtcclxuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplRm9ybUdyb3VwKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVDb21wYW55QW5kQnJhbmNoRm9ybUZpZWxkcyhjaGFuZ2VzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUV2ZW50T3JpZ2luQW5kQ29udHJvbENvZGVGb3JtRmllbGRzKGNoYW5nZXMpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRXZlbnRTdGF0dXNBbmRDcmVhdGVkRGF0ZUZvcm1GaWVsZHMoY2hhbmdlcyk7XHJcbiAgICAgICAgdGhpcy5vblNlYXJjaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlQ29tcGFueUFuZEJyYW5jaEZvcm1GaWVsZHMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzLmNvbXBhbnkgJiYgY2hhbmdlcy5jb21wYW55LmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlcy5jb21wYW55LnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KFwiY29tcGFueVwiKT8uc2V0VmFsdWUoY2hhbmdlcy5jb21wYW55LmN1cnJlbnRWYWx1ZSA/PyBudWxsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzLmJyYW5jaCAmJiBjaGFuZ2VzLmJyYW5jaC5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXMuYnJhbmNoLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KFwiYnJhbmNoXCIpPy5zZXRWYWx1ZShjaGFuZ2VzLmJyYW5jaC5jdXJyZW50VmFsdWUgPz8gbnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlRXZlbnRPcmlnaW5BbmRDb250cm9sQ29kZUZvcm1GaWVsZHMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzLmV2ZW50T3JpZ2luICYmIGNoYW5nZXMuZXZlbnRPcmlnaW4uY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLmV2ZW50T3JpZ2luLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KFwiZXZlbnRPcmlnaW5cIik/LnNldFZhbHVlKGNoYW5nZXMuZXZlbnRPcmlnaW4uY3VycmVudFZhbHVlID8/IG51bGwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXMuY29udHJvbENvZGUgJiYgY2hhbmdlcy5jb250cm9sQ29kZS5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXMuY29udHJvbENvZGUucHJldmlvdXNWYWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXQoXCJjb250cm9sQ29kZVwiKT8uc2V0VmFsdWUoY2hhbmdlcy5jb250cm9sQ29kZS5jdXJyZW50VmFsdWUgPz8gbnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlRXZlbnRTdGF0dXNBbmRDcmVhdGVkRGF0ZUZvcm1GaWVsZHMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzLmV2ZW50U3RhdHVzICYmIGNoYW5nZXMuZXZlbnRTdGF0dXMuY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLmV2ZW50U3RhdHVzLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KFwic3RhdHVzXCIpPy5zZXRWYWx1ZShjaGFuZ2VzLmV2ZW50U3RhdHVzLmN1cnJlbnRWYWx1ZSA/PyBudWxsKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzLmNyZWF0ZWREYXRlICYmIGNoYW5nZXMuY3JlYXRlZERhdGUuY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLmNyZWF0ZWREYXRlLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAuZ2V0KFwiY3JlYXRlZERhdGVcIik/LnNldFZhbHVlKGNoYW5nZXMuY3JlYXRlZERhdGUuY3VycmVudFZhbHVlID8/IG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRpYWxpemVGb3JtR3JvdXAoKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICAgICAgY29tcGFueTogW3sgdmFsdWU6IHRoaXMuY29tcGFueSA/PyBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV0sXHJcbiAgICAgICAgICAgIGJyYW5jaDogW3sgdmFsdWU6IHRoaXMuYnJhbmNoID8/IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXSxcclxuICAgICAgICAgICAgY29udHJvbENvZGU6IFt7IHZhbHVlOiB0aGlzLmNvbnRyb2xDb2RlID8/IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXSxcclxuICAgICAgICAgICAgZXh0ZXJuYWxJZDogW3sgdmFsdWU6IHRoaXMuZXh0ZXJuYWxJZCA/PyBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV0sXHJcbiAgICAgICAgICAgIGV2ZW50T3JpZ2luOiBbeyB2YWx1ZTogdGhpcy5ldmVudE9yaWdpbiA/PyBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV0sXHJcbiAgICAgICAgICAgIHN0YXR1czogW3sgdmFsdWU6IHRoaXMuZXZlbnRTdGF0dXMgPz8gbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbXSldLFxyXG4gICAgICAgICAgICBjcmVhdGVkRGF0ZTogW3sgdmFsdWU6IHRoaXMuY3JlYXRlZERhdGUgPz8gbnVsbCwgZGlzYWJsZWQ6IGZhbHNlIH0sIFZhbGlkYXRvcnMuY29tcG9zZShbXSldLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0Rm9ybUZpZWxkcygpIHtcclxuICAgICAgICB0aGlzLmZpbHRlckZpZWxkcyA9IFtcclxuICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcImNvbXBhbnlcIixcclxuICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5DaGlwcyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJicmFuY2hcIixcclxuICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5DaGlwcyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJjb250cm9sQ29kZVwiLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkNoaXBzLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcImV4dGVybmFsSWRcIixcclxuICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5TdHJpbmcsXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiZXZlbnRPcmlnaW5cIixcclxuICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcInN0YXR1c1wiLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkVudW0sXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiY3JlYXRlZERhdGVcIixcclxuICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5EYXRlLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0R3JpZENvbHVtbnMoKSB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgeyBmaWVsZDogXCJjb21wYW55XCIsIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmNvbXBhbnlcIikgfSxcclxuICAgICAgICAgICAgeyBmaWVsZDogXCJicmFuY2hcIiwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubGFiZWxfYnJhbmNoXCIpIH0sXHJcbiAgICAgICAgICAgIHsgZmllbGQ6IFwiZXZlbnRPcmlnaW5cIiwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuZXZlbnRfb3JpZ2luX2xhYmVsXCIpIH0sXHJcbiAgICAgICAgICAgIHsgZmllbGQ6IFwiY29udHJvbENvZGVcIiwgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYWdyby5hbmd1bGFyX2NvbXBvbmVudHMuY29udHJvbF9jb2RlXCIpIH0sXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICAgICAgICB0aGlzLndlYnNvY2tldFNlcnZpY2UuZGlzY29ubmVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjYWxsV2Vic29ja2V0KCkge1xyXG4gICAgICAgIHRoaXMud2Vic29ja2V0U2VydmljZVxyXG4gICAgICAgICAgICAub25FdmVudDxhbnk+KHtcclxuICAgICAgICAgICAgICAgIGRvbWFpbjogXCJhZ3JvXCIsXHJcbiAgICAgICAgICAgICAgICBzZXJ2aWNlOiBcImFncm9fZXZlbnRzXCIsXHJcbiAgICAgICAgICAgICAgICBwcmltaXRpdmU6IFwicHJvY2Vzc2VkRXZlbnRcIixcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4dGVybmFsSWQgPSBtZXNzYWdlPy5kYXRhPy5leHRlcm5hbElkO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyRGF0YSA9IHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWV4dGVybmFsSWQgfHwgdGhpcy5leHRlcm5hbElkID09PSBleHRlcm5hbElkIHx8IHRoaXMuZ3JpZERhdGE/LnNvbWUoKGl0ZW06IGFueSkgPT4gaXRlbS5leHRlcm5hbElkID09PSBleHRlcm5hbElkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlR3JpZCh7IGZpbHRlckRhdGEgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzZWRFdmVudC5lbWl0KG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy53ZWJzb2NrZXRTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5vbkV2ZW50PGFueT4oe1xyXG4gICAgICAgICAgICAgICAgZG9tYWluOiBcInBsYXRmb3JtXCIsXHJcbiAgICAgICAgICAgICAgICBzZXJ2aWNlOiBcIm5vdGlmaWNhdGlvbnNcIixcclxuICAgICAgICAgICAgICAgIHByaW1pdGl2ZTogXCJ1c2VyTm90aWZpZWRcIixcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyRGF0YSA9IHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUdyaWQoeyBmaWx0ZXJEYXRhIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25TZWFyY2goKSB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyRGF0YSA9IHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XHJcbiAgICAgICAgdGhpcy5ncmlkTG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZXNldEdyaWQoeyBmaWx0ZXJEYXRhIH0pO1xyXG4gICAgICAgIHRoaXMudXBkYXRlR3JpZCh7IGZpbHRlckRhdGEgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlc2V0R3JpZChsaXN0UGFyYW1zPzogYW55KSB7XHJcbiAgICAgICAgaWYgKGxpc3RQYXJhbXMpIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50TGlzdFBhcmFtcyA9IHsgLi4udGhpcy5jdXJyZW50TGlzdFBhcmFtcywgLi4ubGlzdFBhcmFtcyB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnBhZ2UgPSBBR1JPX05VTUJFUlMuWkVSTztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZUdyaWQobGlzdFBhcmFtczogYW55ID0ge30pIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zID0geyAuLi50aGlzLmN1cnJlbnRMaXN0UGFyYW1zLCAuLi5saXN0UGFyYW1zIH07XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnNvcnQ/Lmxlbmd0aCA8PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudExpc3RQYXJhbXMuc29ydCA9IHRoaXMuc3RhbmRhbG9uZSA/XHJcbiAgICAgICAgICAgICAgICBbeyBmaWVsZDogXCJjcmVhdGVkRGF0ZVwiLCBvcmRlcjogMSB9XSA6XHJcbiAgICAgICAgICAgICAgICBbeyBmaWVsZDogXCJsYXN0TW9kaWZpZWREYXRlXCIsIG9yZGVyOiAtMSB9XTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY3VycmVudExpc3RQYXJhbXMuZmlsdGVyUXVlcnkgPSB0aGlzLmdldEZpbHRlcigpO1xyXG5cclxuICAgICAgICB0aGlzLmV2ZW50Q29udHJvbFNlcnZpY2VcclxuICAgICAgICAgICAgLmxpc3QodGhpcy5jdXJyZW50TGlzdFBhcmFtcylcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgobGlzdDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWREYXRhID0gbGlzdC5jb250ZW50cztcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFRvdGFsUmVjb3JkcyA9IGxpc3QudG90YWxFbGVtZW50cztcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5ncmlkRGF0YSB8fCB0aGlzLmdyaWREYXRhLmxlbmd0aCA8PSBBR1JPX05VTUJFUlMuWkVSTykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NFdmVudENvbnRyb2xJdGVtcygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldEZpbHRlcigpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHsgZmlsdGVyRGF0YSB9ID0gdGhpcy5jdXJyZW50TGlzdFBhcmFtcztcclxuICAgICAgICBjb25zdCBmaWx0ZXJzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAoZmlsdGVyRGF0YVtcImNvbXBhbnlcIl0/LmlkKSB7XHJcbiAgICAgICAgICAgIGZpbHRlcnMucHVzaChgZTA3MGVtcC5pZCBlcSAnJHtmaWx0ZXJEYXRhW1wiY29tcGFueVwiXS5pZH0nYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZmlsdGVyRGF0YVtcImJyYW5jaFwiXT8uaWQpIHtcclxuICAgICAgICAgICAgZmlsdGVycy5wdXNoKGBlMDcwZmlsLmlkIGVxICcke2ZpbHRlckRhdGFbXCJicmFuY2hcIl0uaWR9J2ApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY29udHJvbENvZGUgPSBmaWx0ZXJEYXRhW1wiY29udHJvbENvZGVcIl07XHJcbiAgICAgICAgaWYgKGNvbnRyb2xDb2RlICYmIEFycmF5LmlzQXJyYXkoY29udHJvbENvZGUpICYmIGNvbnRyb2xDb2RlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgY29kZXMgPSBjb250cm9sQ29kZS5tYXAoKGNvZGU6IHN0cmluZykgPT4gcGFyc2VJbnQoY29kZSwgMTApKS5qb2luKFwiLFwiKTtcclxuICAgICAgICAgICAgZmlsdGVycy5wdXNoKGBjb250cm9sQ29kZSBpbiAoJHtjb2Rlc30pYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZmlsdGVyRGF0YVtcImV4dGVybmFsSWRcIl0pIHtcclxuICAgICAgICAgICAgZmlsdGVycy5wdXNoKGBleHRlcm5hbElkIGVxICcke2ZpbHRlckRhdGFbXCJleHRlcm5hbElkXCJdfSdgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChmaWx0ZXJEYXRhW1wiZXZlbnRPcmlnaW5cIl0pIHtcclxuICAgICAgICAgICAgZmlsdGVycy5wdXNoKGBldmVudE9yaWdpbiBlcSAnJHtmaWx0ZXJEYXRhW1wiZXZlbnRPcmlnaW5cIl19J2ApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGZpbHRlckRhdGFbXCJzdGF0dXNcIl0pIHtcclxuICAgICAgICAgICAgZmlsdGVycy5wdXNoKGBldmVudENvbnRyb2xJdGVtLnN0YXR1cyBlcSAnJHtmaWx0ZXJEYXRhW1wic3RhdHVzXCJdfSdgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChmaWx0ZXJEYXRhW1wiY3JlYXRlZERhdGVcIl0pIHtcclxuICAgICAgICAgICAgZmlsdGVycy5wdXNoKGBjcmVhdGVkRGF0ZSBnZSAnJHt0aGlzLmdldFN0YXJ0RGF0ZShmaWx0ZXJEYXRhW1wiY3JlYXRlZERhdGVcIl0pfSdgKTtcclxuICAgICAgICAgICAgZmlsdGVycy5wdXNoKGBjcmVhdGVkRGF0ZSBsZSAnJHt0aGlzLmdldEVuZERhdGUoZmlsdGVyRGF0YVtcImNyZWF0ZWREYXRlXCJdKX0nYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmlsdGVycy5qb2luKFwiIGFuZCBcIik7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRFbmREYXRlKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGVuZERhdGUgPSBtb21lbnQodmFsdWUpLmVuZE9mKFwiZGF5XCIpLmZvcm1hdChcIllZWVktTU0tRERUSEg6bW06c3NcIikgKyBcIlpcIjtcclxuICAgICAgICByZXR1cm4gZW5kRGF0ZTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgZ2V0U3RhcnREYXRlKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG1vbWVudCh2YWx1ZSkuc3RhcnRPZihcImRheVwiKS5mb3JtYXQoXCJZWVlZLU1NLUREVEhIOm1tOnNzXCIpICsgXCJaXCI7XHJcbiAgICAgICAgcmV0dXJuIHN0YXJ0RGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldERpc3BsYXlGaWVsZHMoKTogc3RyaW5nW10ge1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICcqJyxcclxuICAgICAgICAgICAgJ2NvbXBhbnkuKicsXHJcbiAgICAgICAgICAgICdicmFuY2guKicsXHJcbiAgICAgICAgICAgICdldmVudENvbnRyb2xJdGVtLmV2ZW50RG9tYWluJyxcclxuICAgICAgICAgICAgJ2V2ZW50Q29udHJvbEl0ZW0uaWQnLFxyXG4gICAgICAgICAgICAnZXZlbnRDb250cm9sSXRlbS5ldmVudERvbWFpbicsXHJcbiAgICAgICAgICAgICdldmVudENvbnRyb2xJdGVtLmV2ZW50U2VydmljZScsXHJcbiAgICAgICAgICAgICdldmVudENvbnRyb2xJdGVtLmV2ZW50UHJpbWl0aXZlJyxcclxuICAgICAgICAgICAgJ2V2ZW50Q29udHJvbEl0ZW0uZXZlbnRDb250cm9sJyxcclxuICAgICAgICAgICAgJ2V2ZW50Q29udHJvbEl0ZW0uZXZlbnRHcm91cCcsXHJcbiAgICAgICAgICAgICdldmVudENvbnRyb2xJdGVtLnNlcXVlbmNlJyxcclxuICAgICAgICAgICAgJ2V2ZW50Q29udHJvbEl0ZW0uZXZlbnRPcGVyYXRpb24nLFxyXG4gICAgICAgICAgICAnZXZlbnRDb250cm9sSXRlbS5vdXRwdXQnLFxyXG4gICAgICAgICAgICAnZXZlbnRDb250cm9sSXRlbS5pbnB1dCcsXHJcbiAgICAgICAgICAgICdldmVudENvbnRyb2xJdGVtLnN0YXR1cycsXHJcbiAgICAgICAgICAgICdldmVudENvbnRyb2xJdGVtLnN1YlRpdGxlJyxcclxuICAgICAgICAgICAgJ2V2ZW50Q29udHJvbEl0ZW0ubWVzc2FnZScsXHJcbiAgICAgICAgICAgICdldmVudENvbnRyb2xJdGVtLmNyZWF0ZWRCeScsXHJcbiAgICAgICAgICAgICdldmVudENvbnRyb2xJdGVtLmNyZWF0ZWREYXRlJyxcclxuICAgICAgICAgICAgJ2V2ZW50Q29udHJvbEl0ZW0ubGFzdE1vZGlmaWVkQnknLFxyXG4gICAgICAgICAgICAnZXZlbnRDb250cm9sSXRlbS5sYXN0TW9kaWZpZWREYXRlJyxcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcHJvY2Vzc0V2ZW50Q29udHJvbEl0ZW1zKCkge1xyXG4gICAgICAgIHRoaXMuZ3JpZERhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzb3J0ZWRJdGVtcyA9IGl0ZW0uZXZlbnRDb250cm9sSXRlbS5zb3J0KChhOiBFdmVudENvbnRyb2xJdGVtLCBiOiBFdmVudENvbnRyb2xJdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYS5zZXF1ZW5jZSAtIGIuc2VxdWVuY2U7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBzdGVwcyA9IHNvcnRlZEl0ZW1zLm1hcCgoZGV0YWlsOiBFdmVudENvbnRyb2xJdGVtLCBpbmRleDogbnVtYmVyKSA9PiB0aGlzLmNyZWF0ZVN0ZXAoZGV0YWlsLCBpdGVtLCBpbmRleCkpO1xyXG4gICAgICAgICAgICBjb25zdCBhY3RpdmVJbmRleCA9IHRoaXMuY2FsY3VsYXRlQWN0aXZlSW5kZXgoc29ydGVkSXRlbXMpO1xyXG4gICAgICAgICAgICBpdGVtLmdyb3VwcyA9IFt7IHN0ZXBzLCBhY3RpdmVJbmRleCB9XTtcclxuICAgICAgICAgICAgaXRlbS5hY3RpdmVJbmRleCA9IGFjdGl2ZUluZGV4O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZ3JpZERhdGFSZXNvbHZlZCA9IHRoaXMuZ3JpZERhdGE7XHJcbiAgICAgICAgdGhpcy5ncmlkTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2FsY3VsYXRlQWN0aXZlSW5kZXgoZGV0YWlsczogRXZlbnRDb250cm9sSXRlbVtdKTogbnVtYmVyIHtcclxuICAgICAgICBjb25zdCBsYXN0QWN0aXZlID0gZGV0YWlscy5yZWR1Y2UoXHJcbiAgICAgICAgICAgIChsYXN0SW5kZXgsIGRldGFpbCwgY3VycmVudEluZGV4KSA9PiAoZGV0YWlsLnN0YXR1cyAhPT0gRXZlbnRTdGF0dXMuUEVORElORyA/IGN1cnJlbnRJbmRleCA6IGxhc3RJbmRleCksXHJcbiAgICAgICAgICAgIC0xXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAobGFzdEFjdGl2ZSAhPT0gLTEgJiYgZGV0YWlsc1tsYXN0QWN0aXZlXS5zdGF0dXMgPT09IEV2ZW50U3RhdHVzLlNVQ0NFU1MpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGxhc3RBY3RpdmUgKyAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbGFzdEFjdGl2ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNyZWF0ZVN0ZXAoZGV0YWlsOiBFdmVudENvbnRyb2xJdGVtLCBpdGVtOiBFdmVudENvbnRyb2wsIGRldGFpbEluZGV4OiBudW1iZXIpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnRGV0YWlsOicsIGRldGFpbCk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaXRlbTogZGV0YWlsLFxyXG4gICAgICAgICAgICBjb250cm9sQ29kZTogaXRlbS5jb250cm9sQ29kZSxcclxuICAgICAgICAgICAgZXZlbnRUeXBlOiBpdGVtLmV2ZW50T3JpZ2luLFxyXG4gICAgICAgICAgICBsYWJlbDogdGhpcy5nZXRFdmVudExhYmVsKGRldGFpbCksXHJcbiAgICAgICAgICAgIHN1YkxhYmVsOiB0aGlzLmZvcm1hdFN1YnRpdGxlKGRldGFpbCksXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiBkZXRhaWwuc3RhdHVzID09PSBFdmVudFN0YXR1cy5QRU5ESU5HICYmIGRldGFpbEluZGV4ICE9PSB0aGlzLmNhbGN1bGF0ZUFjdGl2ZUluZGV4KGl0ZW0uZXZlbnRDb250cm9sSXRlbSksXHJcbiAgICAgICAgICAgIHRvb2x0aXA6IHRoaXMuZ2V0RXZlbnRMYWJlbChkZXRhaWwpLFxyXG4gICAgICAgICAgICBzdGF0ZTogdGhpcy5kZXRlcm1pbmVTdGVwU3RhdGUoZGV0YWlsKSxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZGV0ZXJtaW5lU3RlcFN0YXRlKGRldGFpbDogeyBzdGF0dXM6IEV2ZW50U3RhdHVzIH0pOiBTdGVwU3RhdGUge1xyXG4gICAgICAgIGlmIChkZXRhaWwuc3RhdHVzID09PSBFdmVudFN0YXR1cy5TVUNDRVNTKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBTdGVwU3RhdGUuU3VjY2VzcztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRldGFpbC5zdGF0dXMgPT09IEV2ZW50U3RhdHVzLkZBSUxFRCkge1xyXG4gICAgICAgICAgICByZXR1cm4gU3RlcFN0YXRlLldhcm5pbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBTdGVwU3RhdGUuRGVmYXVsdDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldEV2ZW50TGFiZWwoZGV0YWlsOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50TGFiZWwgPSB0aGlzLmV2ZW50SXRlbS5maW5kKChlKSA9PiBlLnZhbHVlID09PSBkZXRhaWwuZXZlbnRPcGVyYXRpb24pPy5sYWJlbDtcclxuICAgICAgICBpZiAoZXZlbnRMYWJlbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChldmVudExhYmVsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbG9jYWxMYWJlbCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5cIiArIGRldGFpbC5ldmVudE9wZXJhdGlvbik7XHJcbiAgICAgICAgaWYgKGxvY2FsTGFiZWwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGxvY2FsTGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkZXRhaWwuZXZlbnRPcGVyYXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmb3JtYXRTdWJ0aXRsZShkZXRhaWw6IEV2ZW50Q29udHJvbEl0ZW0pOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBjb25zdCB7IGV2ZW50T3BlcmF0aW9uLCBzdWJUaXRsZSB9ID0gZGV0YWlsO1xyXG5cclxuICAgICAgICBjb25zdCBpbnZvaWNlT3BlcmF0aW9ucyA9IFtcclxuICAgICAgICAgICAgRXZlbnRPcGVyYXRpb24uQ1JFQVRFX0lOVk9JQ0VfRklYQVRJT04sXHJcbiAgICAgICAgICAgIEV2ZW50T3BlcmF0aW9uLkNBTkNFTF9JTlZPSUNFX0ZJWEFUSU9OLFxyXG4gICAgICAgICAgICBFdmVudE9wZXJhdGlvbi5PUklHSU5BVElPTl9DUkVBVEVfSU5WT0lDRVxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIGNvbnN0IG51bWJlclByZWZpeE9wZXJhdGlvbnMgPSBbXHJcbiAgICAgICAgICAgIEV2ZW50T3BlcmF0aW9uLkNMT1NFX0lOVk9JQ0VfRklYQVRJT04sXHJcbiAgICAgICAgICAgIEV2ZW50T3BlcmF0aW9uLlJFT1BFTl9JTlZPSUNFX0ZJWEFUSU9OXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgY29uc3QgcHJlc2NyaXB0aW9uT3BlcmF0aW9ucyA9IFtcclxuICAgICAgICAgICAgRXZlbnRPcGVyYXRpb24uUFJFU0NSSVBUSU9OX0RBVEFfTE9BRF9QUk9EVUNUX1RZUEUsXHJcbiAgICAgICAgICAgIEV2ZW50T3BlcmF0aW9uLlBSRVNDUklQVElPTl9EQVRBX0xPQURfQUNUSVZFX1BSSU5DSVBMRSxcclxuICAgICAgICAgICAgRXZlbnRPcGVyYXRpb24uUFJFU0NSSVBUSU9OX0RBVEFfTE9BRF9GT1JNVUxBVElPTixcclxuICAgICAgICAgICAgRXZlbnRPcGVyYXRpb24uUFJFU0NSSVBUSU9OX0RBVEFfTE9BRF9CVUxMRVRJTixcclxuICAgICAgICAgICAgRXZlbnRPcGVyYXRpb24uUFJFU0NSSVBUSU9OX0RBVEFfTE9BRF9BUFBMSUNBVElPTl9VTklULFxyXG4gICAgICAgICAgICBFdmVudE9wZXJhdGlvbi5QUkVTQ1JJUFRJT05fREFUQV9MT0FEX1NQRUNJRSxcclxuICAgICAgICAgICAgRXZlbnRPcGVyYXRpb24uUFJFU0NSSVBUSU9OX0RBVEFfTE9BRF9BUFBMSUNBVElPTl9UWVBFLFxyXG4gICAgICAgICAgICBFdmVudE9wZXJhdGlvbi5QUkVTQ1JJUFRJT05fREFUQV9MT0FEX1BST0JMRU1TLFxyXG4gICAgICAgICAgICBFdmVudE9wZXJhdGlvbi5QUkVTQ1JJUFRJT05fREFUQV9MT0FEX0FQUExJQ0FUSU9OXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgbGV0IGZvcm1hdHRlZFN1YnRpdGxlID0gc3ViVGl0bGU7XHJcbiAgICAgICAgaWYgKGludm9pY2VPcGVyYXRpb25zLmluY2x1ZGVzKGV2ZW50T3BlcmF0aW9uKSkge1xyXG4gICAgICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMuaW52b2ljZVR5cGVUcmFuc2xhdGUuZmluZCgoZSkgPT4gZS52YWx1ZSA9PT0gc3ViVGl0bGUpPy5sYWJlbDtcclxuICAgICAgICAgICAgZm9ybWF0dGVkU3VidGl0bGUgPSBsYWJlbCA/IHRoaXMudHJhbnNsYXRlLmluc3RhbnQobGFiZWwpIDogc3ViVGl0bGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobnVtYmVyUHJlZml4T3BlcmF0aW9ucy5pbmNsdWRlcyhldmVudE9wZXJhdGlvbikpIHtcclxuICAgICAgICAgICAgZm9ybWF0dGVkU3VidGl0bGUgPSBzdWJUaXRsZSA/IGBuwrAgJHtzdWJUaXRsZX1gIDogc3ViVGl0bGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocHJlc2NyaXB0aW9uT3BlcmF0aW9ucy5pbmNsdWRlcyhldmVudE9wZXJhdGlvbikpIHtcclxuICAgICAgICAgICAgZm9ybWF0dGVkU3VidGl0bGUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5uZXdfcHJlc2NyaXB0aW9uX3BhZ2UnLCB7IGNvdW50OiBzdWJUaXRsZSB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWRTdWJ0aXRsZTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHB1YmxpYyBvbkdyaWRDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSBldmVudD8ucm93cztcclxuICAgICAgICBjb25zdCBwYWdlID0gZXZlbnQ/LmZpcnN0IC8gc2l6ZTtcclxuICAgICAgICBjb25zdCBzb3J0ID0gZXZlbnQubXVsdGlTb3J0TWV0YTtcclxuICAgICAgICB0aGlzLmdyaWRMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICBpZiAoc2l6ZSAhPT0gQUdST19OVU1CRVJTLlRFTiB8fCBwYWdlICE9PSBBR1JPX05VTUJFUlMuWkVSTyB8fCAoc29ydCAmJiBzb3J0Lmxlbmd0aCA+IEFHUk9fTlVNQkVSUy5aRVJPKSkge1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRvclN0b3JhZ2VTZXJ2aWNlLnN0b3JlUGFnaW5hdG9yKFwiRXZlbnRDb250cm9sQm9hcmRQYWdpbmF0b3JcIiwgeyBwYWdlLCBzaXplLCBzb3J0IH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlR3JpZCh7IHBhZ2UsIHNpemUsIHNvcnQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFBhZ2VTaXplKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFJvd0luZGV4KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnBhZ2UgKiB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNvcnRGaWVsZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudExpc3RQYXJhbXMuc29ydCB8fCB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnNvcnQubGVuZ3RoIDw9IEFHUk9fTlVNQkVSUy5aRVJPKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdyaWRDb2x1bW5zW0FHUk9fTlVNQkVSUy5aRVJPXS5maWVsZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudExpc3RQYXJhbXMuc29ydFtBR1JPX05VTUJFUlMuWkVST10uZmllbGQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNvcnRPcmRlcigpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudExpc3RQYXJhbXMuc29ydCB8fCB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zLnNvcnQubGVuZ3RoIDw9IEFHUk9fTlVNQkVSUy5aRVJPKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBBR1JPX05VTUJFUlMuT05FO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudExpc3RQYXJhbXMuc29ydFtBR1JPX05VTUJFUlMuWkVST10ub3JkZXI7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEVycm9yTWVzc2FnZXMoKSB7XHJcbiAgICAgICAgY29uc3QgdHJhbnNsYXRlZEVycm9yTWVzc2FnZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBMb29rdXBFcnJvck1lc3NhZ2VzKSB7XHJcbiAgICAgICAgICAgIGlmIChMb29rdXBFcnJvck1lc3NhZ2VzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmdldChMb29rdXBFcnJvck1lc3NhZ2VzW2tleV0pLnN1YnNjcmliZSgocmVzOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVkRXJyb3JNZXNzYWdlc1trZXldID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZWRFcnJvck1lc3NhZ2VzO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb2R1Y2VySW52b2ljZUlkRnJvbVBhcmFtcyhwYXJhbTogYW55KTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKCFwYXJhbSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIHBhcmFtLnByb2R1Y2VySW52b2ljZUlkcz8uWzBdLFxyXG4gICAgICAgICAgICBwYXJhbS5pbnZvaWNlPy5nZW5lcmFsRGF0YT8udHJhbnNhY3Rpb25hbElkLFxyXG4gICAgICAgICAgICBwYXJhbS5wcm9kdWNlckludm9pY2VJZCxcclxuICAgICAgICAgICAgcGFyYW0uZXh0ZXJuYWxJZCxcclxuICAgICAgICAgICAgcGFyYW0uZXh0ZXJuYWxJbnZvaWNlSWRzPy5bMF0sXHJcbiAgICAgICAgXS5maW5kKChpZCkgPT4gaWQpID8/IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvZHVjZXJCYWxhbmNlRW50cnlDb250cm9sSWRGcm9tUGFyYW1zKHBhcmFtOiBhbnkpIHtcclxuICAgICAgICBjb25zdCB7IHByb2R1Y2VyQmFsYW5jZUVudHJ5Q29udHJvbElkIH0gPSBwYXJhbTtcclxuICAgICAgICByZXR1cm4gcHJvZHVjZXJCYWxhbmNlRW50cnlDb250cm9sSWQgPyBwcm9kdWNlckJhbGFuY2VFbnRyeUNvbnRyb2xJZCA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0ZXBTZWxlY3RlZChldmVudDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFN0ZXAgPSBldmVudC5zdGVwO1xyXG4gICAgICAgIHRoaXMuYXBwbHlTaWRlYmFyVGl0bGUoXCJcIik7XHJcblxyXG4gICAgICAgIHN3aXRjaCAodGhpcy5zZWxlY3RlZFN0ZXAuZXZlbnRUeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgRXZlbnRPcmlnaW4uQkFMQU5DRV9FTlRSWV9DT05UUk9MOlxyXG4gICAgICAgICAgICBjYXNlIEV2ZW50T3JpZ2luLlRJQ0tFVDpcclxuICAgICAgICAgICAgY2FzZSBFdmVudE9yaWdpbi5JTlZPSUNFOlxyXG4gICAgICAgICAgICBjYXNlIEV2ZW50T3JpZ2luLkNSRUFURV9JTlZPSUNFOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaWRlYmFyTG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW0gPSBKU09OLnBhcnNlKHRoaXMuc2VsZWN0ZWRTdGVwLml0ZW0uaW5wdXQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2R1Y2VySW52b2ljZUlkID0gdGhpcy5nZXRQcm9kdWNlckludm9pY2VJZEZyb21QYXJhbXMocGFyYW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWx0ZXJRdWVyeSA9IFwiXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcHJvZHVjZXJJbnZvaWNlSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvZHVjZXJCYWxhbmNlRW50cnlDb250cm9sSWQgPSB0aGlzLmdldFByb2R1Y2VyQmFsYW5jZUVudHJ5Q29udHJvbElkRnJvbVBhcmFtcyhwYXJhbSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2R1Y2VyQmFsYW5jZUVudHJ5Q29udHJvbElkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpZGViYXJMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclF1ZXJ5ID0gYHByb2R1Y2VyQmFsYW5jZUVudHJ5Q29udHJvbC5pZCBlcSAnJHtwcm9kdWNlckJhbGFuY2VFbnRyeUNvbnRyb2xJZH0nYDtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJRdWVyeSA9IGBpZCBlcSAnJHtwcm9kdWNlckludm9pY2VJZH0nYDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjZXJJbnZvaWNlU2VydmljZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAubGlzdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGRzOiBbXCIqXCIsIFwicHJvZHVjZXJCYWxhbmNlRW50cnlDb250cm9sLipcIiwgXCJwcm9kdWNlckJhbGFuY2VFbnRyeUNvbnRyb2wucHJvZHVjZXIuKlwiXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclF1ZXJ5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9kdWNlckludm9pY2UgPSByZXN1bHQ/LmNvbnRlbnRzWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjZXJJbnZvaWNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2lkZWJhckxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5U2lkZWJhclRpdGxlKHRoaXMuZ2V0UHJvZHVjZXJJbnZvaWNlTnVtYmVyQW5kU2VyaWUoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2lkZWJhckxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEV2ZW50T3JpZ2luLkZJWEFUSU9OOlxyXG4gICAgICAgICAgICBjYXNlIEV2ZW50T3JpZ2luLkNBTkNFTF9GSVhBVElPTjpcclxuICAgICAgICAgICAgY2FzZSBFdmVudE9yaWdpbi5DSEFOR0VfUkVRVUVTVDpcclxuICAgICAgICAgICAgY2FzZSBFdmVudE9yaWdpbi5UUkFOU0ZFUjpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zaG93UmVwcm9jZXNzQnV0dG9uID0gZXZlbnQuc3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLldhcm5pbmc7XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd1NpZGViYXIgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXBwbHlTaWRlYmFyVGl0bGUodGl0bGU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuc2lkZWJhclRpdGxlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmV2ZW50X3NpZGViYXJfdGl0bGVcIiwgeyBldmVudE51bWJlcjogdGl0bGUgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRQcm9kdWNlckludm9pY2VOdW1iZXJBbmRTZXJpZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0aGlzLnByb2R1Y2VySW52b2ljZT8ubnVtYmVyICYmIHRoaXMucHJvZHVjZXJJbnZvaWNlPy5zZXJpZXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMucHJvZHVjZXJJbnZvaWNlLm51bWJlcn0gLSAke3RoaXMucHJvZHVjZXJJbnZvaWNlLnNlcmllc31gO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVwcm9jZXNzRXZlbnQoKSB7XHJcbiAgICAgICAgY29uc3QgcmVwcm9jZXNzRXZlbnRPYmo6IFJlcHJvY2Vzc0ZhaWxlZEV2ZW50ID0ge1xyXG4gICAgICAgICAgICBldmVudENvbnRyb2xJdGVtSWQ6IHRoaXMuc2VsZWN0ZWRTdGVwLml0ZW0uaWQsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmV2ZW50Q29udHJvbEl0ZW1TZXJ2aWNlXHJcbiAgICAgICAgICAgIC5yZXByb2Nlc3NGYWlsZWRFdmVudChyZXByb2Nlc3NFdmVudE9iailcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRNZXNzYWdlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImluZm9cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5yZXByb2Nlc3NpbmdfZXZlbnRfbWVzc2FnZV90aXRsZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLnJlcHJvY2Vzc2luZ19ldmVudF9tZXNzYWdlX2Rlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZXJyb3JcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5lcnJvcl9yZXByb2Nlc3NpbmdfZXZlbnRfbWVzc2FnZV90aXRsZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImFncm8uYW5ndWxhcl9jb21wb25lbnRzLmVycm9yX3JlcHJvY2Vzc2luZ19ldmVudF9tZXNzYWdlX2Rlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkTWVzc2FnZShzZXZlcml0eTogc3RyaW5nLCBzdW1tYXJ5OiBzdHJpbmcsIGRldGFpbDogc3RyaW5nLCBsaWZlID0gQUdST19OVU1CRVJTLkZJVkVfU0VDT05EUykge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHksXHJcbiAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoc3VtbWFyeSksXHJcbiAgICAgICAgICAgIGRldGFpbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChkZXRhaWwpLFxyXG4gICAgICAgICAgICBsaWZlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvcGVuTW9kYWwoKSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5TW9kYWwgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd1NpZGViYXIgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgb3BlbkNhbmNlbE1vZGFsKCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuY2FuY2VsRXZlbnREaWFsb2dDb25maWcuYmVmb3JlT3Blbj8uKCk7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQ2FuY2VsRXZlbnREaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgaGVhZGVyOiB0aGlzLmNhbmNlbEV2ZW50RGlhbG9nQ29uZmlnPy5oZWFkZXIsXHJcbiAgICAgICAgICAgIGNvbnRlbnRTdHlsZTogeyBoZWlnaHQ6IFwiMTAwJVwiIH0sXHJcbiAgICAgICAgICAgIGNsb3NhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBjbG9zZU9uRXNjYXBlOiBmYWxzZSxcclxuICAgICAgICAgICAgZGF0YTogeyBjYW5jZWxFdmVudERpYWxvZ0NvbmZpZzogdGhpcy5jYW5jZWxFdmVudERpYWxvZ0NvbmZpZyB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjb25maXJtTW9kYWwoKSB7XHJcbiAgICAgICAgdGhpcy5yZXByb2Nlc3NFdmVudCgpO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheU1vZGFsID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNhbmNlbE1vZGFsKCkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheU1vZGFsID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsb3NlU2lkZWJhcigpIHtcclxuICAgICAgICB0aGlzLnNob3dTaWRlYmFyID0gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuIl19