@bnsights/bbsf-admin-portal 1.0.12 → 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/bnsights-bbsf-admin-portal-1.0.13.tgz +0 -0
  2. package/bundles/bnsights-bbsf-admin-portal.umd.js +479 -307
  3. package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
  4. package/esm2015/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.js +2 -2
  5. package/esm2015/lib/Pages/anonymouslayout/activation/activation.component.js +4 -2
  6. package/esm2015/lib/Pages/anonymouslayout/anonymouslayout-routing.module.js +3 -1
  7. package/esm2015/lib/Pages/anonymouslayout/anonymouslayout.module.js +9 -5
  8. package/esm2015/lib/Pages/anonymouslayout/error/error.component.js +52 -0
  9. package/esm2015/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.js +3 -2
  10. package/esm2015/lib/Pages/anonymouslayout/rest-password/rest-password.component.js +4 -2
  11. package/esm2015/lib/Pages/anonymouslayout/upload-license/upload-license.component.js +4 -2
  12. package/esm2015/lib/Pages/configurations/configuration/configuration.component.js +109 -85
  13. package/esm2015/lib/Pages/core/authentication/admin.guard.js +5 -5
  14. package/esm2015/lib/Pages/core/authentication/auth.guard.js +17 -7
  15. package/esm2015/lib/Pages/departments/department/department.component.js +4 -2
  16. package/esm2015/lib/Pages/departments/department-info/department-info.component.js +2 -2
  17. package/esm2015/lib/Pages/helpCenter/help-center/help-center.component.js +2 -2
  18. package/esm2015/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.js +2 -2
  19. package/esm2015/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.js +2 -2
  20. package/esm2015/lib/Pages/license/license/license.component.js +8 -2
  21. package/esm2015/lib/Pages/localizations/localizations.component.js +20 -3
  22. package/esm2015/lib/Pages/lookups/lookup/lookup.component.js +2 -2
  23. package/esm2015/lib/Pages/lookups/lookup-group/lookup-group.component.js +2 -2
  24. package/esm2015/lib/Pages/lookups/lookup-item/lookup-item.component.js +2 -2
  25. package/esm2015/lib/Pages/notifications/master-layouts/master-layouts.component.js +2 -2
  26. package/esm2015/lib/Pages/notifications/templates/templates.component.js +2 -2
  27. package/esm2015/lib/Pages/providers/provider/provider.component.js +2 -2
  28. package/esm2015/lib/Pages/publicHolidays/public-holiday/public-holiday.component.js +4 -2
  29. package/esm2015/lib/Pages/roles/permission-set-info/permission-set-info.component.js +2 -2
  30. package/esm2015/lib/Pages/roles/permissions/permissions.component.js +2 -2
  31. package/esm2015/lib/Pages/roles/permissionsets/permissionsets.component.js +2 -2
  32. package/esm2015/lib/Pages/sectors/department-info/department-info.component.js +2 -2
  33. package/esm2015/lib/Pages/sectors/sector/sector.component.js +4 -2
  34. package/esm2015/lib/Pages/sectors/sector-info/sector-info.component.js +2 -2
  35. package/esm2015/lib/Pages/shared/Services/HttpErrorInterceptor.service.js +1 -2
  36. package/esm2015/lib/Pages/shared/Services/localizationsService.service .js +5 -2
  37. package/esm2015/lib/Pages/shared/Services/userService.service.js +2 -2
  38. package/esm2015/lib/Pages/users/users.component.js +13 -19
  39. package/esm2015/lib/Pages/workflows/tabs/tabs.component.js +3 -3
  40. package/esm2015/lib/Pages/workflows/workflow/workflow.component.js +2 -3
  41. package/fesm2015/bnsights-bbsf-admin-portal.js +452 -281
  42. package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
  43. package/lib/Pages/anonymouslayout/anonymouslayout.module.d.ts +10 -8
  44. package/lib/Pages/anonymouslayout/error/error.component.d.ts +23 -0
  45. package/lib/Pages/configurations/configuration/configuration.component.d.ts +1 -2
  46. package/lib/Pages/core/authentication/admin.guard.d.ts +2 -2
  47. package/lib/Pages/core/authentication/auth.guard.d.ts +3 -2
  48. package/lib/Pages/license/license/license.component.d.ts +1 -0
  49. package/lib/Pages/localizations/localizations.component.d.ts +1 -0
  50. package/lib/Pages/shared/Services/localizationsService.service .d.ts +1 -0
  51. package/lib/Pages/users/users.component.d.ts +1 -1
  52. package/lib/Pages/workflows/tabs/tabs.component.d.ts +0 -1
  53. package/lib/Pages/workflows/workflow/workflow.component.d.ts +0 -1
  54. package/package.json +3 -3
  55. package/src/lib/assets/css/anonymousBundle-Dark-RTL.css +3 -0
  56. package/src/lib/assets/css/anonymousBundle-Dark.css +4 -0
  57. package/src/lib/assets/css/anonymousBundle-light-RTL.css +4 -0
  58. package/src/lib/assets/css/anonymousBundle-light.css +3 -0
  59. package/bnsights-bbsf-admin-portal-1.0.12.tgz +0 -0
@@ -292,7 +292,6 @@ export class ConfigurationComponent {
292
292
  this.utilityService.stopBlockUI();
293
293
  });
294
294
  }
295
- //Required Functions for Add
296
295
  ChangeTypeValue(key) {
297
296
  this.resetConfigurationFlags();
298
297
  this.removeFormControls();
@@ -392,29 +391,65 @@ export class ConfigurationComponent {
392
391
  this.AddConfigurationForm.removeControl("SourceFuncValue");
393
392
  this.AddConfigurationForm.removeControl("SourceFuncDefaultValue");
394
393
  }
395
- ChangeLookup(key) {
394
+ ChangeLookup(key, isAdd) {
396
395
  this.ConfigurationsService.loadLookupItems(key).subscribe((result) => {
397
396
  let Result = result;
398
397
  this.LookupItemsList = Result.lookupItems;
399
- this.LookupValue = new DropdownOptions();
400
- this.LookupValue.Name = "LookupValue";
401
- this.LookupValue.LabelKey = "Value";
402
- this.LookupValue.SelectedItems = null;
403
- this.LookupValue.DataSource = this.LookupItemsList;
404
- this.LookupValue.SingleSelection = true;
405
- this.LookupValue.AllowSearchFilter = true;
406
- this.LookupValue.IsRequired = true;
407
- this.LookupValue.ShowAsterisk = true;
408
- this.LookupDefaultValue = new DropdownOptions();
409
- this.LookupDefaultValue.Name = "LookupDefaultValue";
410
- this.LookupDefaultValue.LabelKey = "DefaultValue";
411
- this.LookupDefaultValue.SelectedItems = null;
412
- this.LookupDefaultValue.DataSource = this.LookupItemsList;
413
- this.LookupDefaultValue.SingleSelection = true;
414
- this.LookupDefaultValue.AllowSearchFilter = true;
415
- this.LookupDefaultValue.IsRequired = true;
416
- this.ShowLookupItemsList = true;
417
- }, (error) => {
398
+ if (this.ShowLookupItemsList) {
399
+ if (isAdd) {
400
+ this.LookupValue.SelectedItems = null;
401
+ this.LookupDefaultValue.SelectedItems = null;
402
+ this.LookupValue.DataSource = this.LookupItemsList;
403
+ this.LookupDefaultValue.DataSource = this.LookupItemsList;
404
+ }
405
+ else {
406
+ this.EditLookupValue.SelectedItems = null;
407
+ this.EditLookupDefaultValue.SelectedItems = null;
408
+ this.EditLookupValue.DataSource = this.LookupItemsList;
409
+ this.EditLookupDefaultValue.DataSource = this.LookupItemsList;
410
+ }
411
+ }
412
+ else {
413
+ if (isAdd) {
414
+ this.LookupValue = new DropdownOptions();
415
+ this.LookupValue.Name = "LookupValue";
416
+ this.LookupValue.LabelKey = "Value";
417
+ this.LookupValue.SelectedItems = null;
418
+ this.LookupValue.DataSource = this.LookupItemsList;
419
+ this.LookupValue.SingleSelection = true;
420
+ this.LookupValue.AllowSearchFilter = true;
421
+ this.LookupValue.IsRequired = true;
422
+ this.LookupValue.ShowAsterisk = true;
423
+ this.LookupDefaultValue = new DropdownOptions();
424
+ this.LookupDefaultValue.Name = "LookupDefaultValue";
425
+ this.LookupDefaultValue.LabelKey = "DefaultValue";
426
+ this.LookupDefaultValue.SelectedItems = null;
427
+ this.LookupDefaultValue.DataSource = this.LookupItemsList;
428
+ this.LookupDefaultValue.SingleSelection = true;
429
+ this.LookupDefaultValue.AllowSearchFilter = true;
430
+ this.LookupDefaultValue.IsRequired = true;
431
+ }
432
+ else {
433
+ this.ShowLookupItemsList = false;
434
+ this.EditLookupValue = new DropdownOptions();
435
+ this.EditLookupValue.Name = "EditLookupValue";
436
+ this.EditLookupValue.LabelKey = "Value";
437
+ this.EditLookupValue.SelectedItems = null;
438
+ this.EditLookupValue.DataSource = this.LookupItemsList;
439
+ this.EditLookupValue.SingleSelection = true;
440
+ this.EditLookupValue.AllowSearchFilter = true;
441
+ this.EditLookupValue.IsRequired = true;
442
+ this.EditLookupDefaultValue = new DropdownOptions();
443
+ this.EditLookupDefaultValue.Name = "EditLookupDefaultValue";
444
+ this.EditLookupDefaultValue.LabelKey = "DefaultValue";
445
+ this.EditLookupDefaultValue.SelectedItems = null;
446
+ this.EditLookupDefaultValue.DataSource = this.LookupItemsList;
447
+ this.EditLookupDefaultValue.SingleSelection = true;
448
+ this.EditLookupDefaultValue.AllowSearchFilter = true;
449
+ this.EditLookupDefaultValue.IsRequired = true;
450
+ }
451
+ this.ShowLookupItemsList = true;
452
+ }
418
453
  });
419
454
  }
420
455
  //Edit configuration
@@ -592,32 +627,6 @@ export class ConfigurationComponent {
592
627
  this.modalService.open(EditConfigurationModal);
593
628
  });
594
629
  }
595
- ChangeEditLookup(key) {
596
- this.ShowLookupItemsList = false;
597
- this.ConfigurationsService.loadLookupItems(key).subscribe((result) => {
598
- let Result = result;
599
- let LookupItemsListEdit = Result.lookupItems;
600
- //Resinitialize lookup values and default values
601
- this.EditLookupValue = new DropdownOptions();
602
- this.EditLookupValue.Name = "EditLookupValue";
603
- this.EditLookupValue.LabelKey = "Value";
604
- this.EditLookupValue.SelectedItems = null;
605
- this.EditLookupValue.DataSource = LookupItemsListEdit;
606
- this.EditLookupValue.SingleSelection = true;
607
- this.EditLookupValue.AllowSearchFilter = true;
608
- this.EditLookupValue.IsRequired = true;
609
- this.EditLookupDefaultValue = new DropdownOptions();
610
- this.EditLookupDefaultValue.Name = "EditLookupDefaultValue";
611
- this.EditLookupDefaultValue.LabelKey = "DefaultValue";
612
- this.EditLookupDefaultValue.SelectedItems = null;
613
- this.EditLookupDefaultValue.DataSource = LookupItemsListEdit;
614
- this.EditLookupDefaultValue.SingleSelection = true;
615
- this.EditLookupDefaultValue.AllowSearchFilter = true;
616
- this.EditLookupDefaultValue.IsRequired = true;
617
- this.ShowLookupItemsList = true;
618
- }, (error) => {
619
- });
620
- }
621
630
  //Add,Edit required functions
622
631
  ChangeScopeValue(key) {
623
632
  switch (Number(key)) {
@@ -657,47 +666,62 @@ export class ConfigurationComponent {
657
666
  let functionName = isAdd ? ResultModel.FunctionSourcePath : ResultModel.EditFunctionSourcePath;
658
667
  this.ConfigurationsService.loadSourceFunctionDropDownItems(functionName).subscribe((result) => {
659
668
  this.showFunctionNotFoundError = false;
660
- this.ShowSourceFunctionData = false;
661
- if (isAdd) {
662
- this.AddConfigurationForm.removeControl("SourceFuncValue");
663
- this.AddConfigurationForm.removeControl("SourceFuncDefaultValue");
664
- this.SourceFuncValue = new DropdownOptions();
665
- this.SourceFuncValue.Name = "SourceFuncValue";
666
- this.SourceFuncValue.LabelKey = "Value";
667
- this.SourceFuncValue.DataSource = result;
668
- this.SourceFuncValue.SingleSelection = true;
669
- this.SourceFuncValue.AllowSearchFilter = true;
670
- this.SourceFuncValue.IsRequired = true;
671
- this.SourceFuncDefaultValue = new DropdownOptions();
672
- this.SourceFuncDefaultValue.Name = "SourceFuncDefaultValue";
673
- this.SourceFuncDefaultValue.LabelKey = "DefaultValue";
674
- this.SourceFuncDefaultValue.DataSource = result;
675
- this.SourceFuncDefaultValue.SingleSelection = true;
676
- this.SourceFuncDefaultValue.AllowSearchFilter = true;
677
- this.SourceFuncDefaultValue.IsRequired = true;
669
+ if (this.ShowSourceFunctionData) {
670
+ if (isAdd) {
671
+ this.SourceFuncValue.SelectedItems = null;
672
+ this.SourceFuncDefaultValue.SelectedItems = null;
673
+ this.SourceFuncValue.DataSource = result;
674
+ this.SourceFuncDefaultValue.DataSource = result;
675
+ }
676
+ else {
677
+ this.EditSourceFuncValue.SelectedItems = null;
678
+ this.EditSourceFuncDefaultValue.SelectedItems = null;
679
+ this.EditSourceFuncValue.DataSource = result;
680
+ this.EditSourceFuncDefaultValue.DataSource = result;
681
+ }
678
682
  }
679
683
  else {
680
- this.EditConfigurationForm.removeControl("EditSourceFuncValue");
681
- this.EditConfigurationForm.removeControl("EditSourceFuncDefaultValue");
682
- this.EditSourceFuncValue = new DropdownOptions();
683
- this.EditSourceFuncValue.Name = "EditSourceFuncValue";
684
- this.EditSourceFuncValue.LabelKey = "Value";
685
- this.EditSourceFuncValue.DataSource = result;
686
- this.EditSourceFuncValue.SingleSelection = true;
687
- this.EditSourceFuncValue.AllowSearchFilter = true;
688
- this.EditSourceFuncValue.IsRequired = true;
689
- this.EditSourceFuncDefaultValue = new DropdownOptions();
690
- this.EditSourceFuncDefaultValue.Name = "EditSourceFuncDefaultValue";
691
- this.EditSourceFuncDefaultValue.LabelKey = "DefaultValue";
692
- this.EditSourceFuncDefaultValue.DataSource = result;
693
- this.EditSourceFuncDefaultValue.SingleSelection = true;
694
- this.EditSourceFuncDefaultValue.AllowSearchFilter = true;
695
- this.EditSourceFuncDefaultValue.IsRequired = true;
684
+ if (isAdd) {
685
+ this.SourceFuncValue = new DropdownOptions();
686
+ this.SourceFuncValue.Name = "SourceFuncValue";
687
+ this.SourceFuncValue.LabelKey = "Value";
688
+ this.SourceFuncValue.DataSource = result;
689
+ this.SourceFuncValue.SingleSelection = true;
690
+ this.SourceFuncValue.AllowSearchFilter = true;
691
+ this.SourceFuncValue.IsRequired = true;
692
+ this.SourceFuncDefaultValue = new DropdownOptions();
693
+ this.SourceFuncDefaultValue.Name = "SourceFuncDefaultValue";
694
+ this.SourceFuncDefaultValue.LabelKey = "DefaultValue";
695
+ this.SourceFuncDefaultValue.DataSource = result;
696
+ this.SourceFuncDefaultValue.SingleSelection = true;
697
+ this.SourceFuncDefaultValue.AllowSearchFilter = true;
698
+ this.SourceFuncDefaultValue.IsRequired = true;
699
+ }
700
+ else {
701
+ this.EditSourceFuncValue = new DropdownOptions();
702
+ this.EditSourceFuncValue.Name = "EditSourceFuncValue";
703
+ this.EditSourceFuncValue.LabelKey = "Value";
704
+ this.EditSourceFuncValue.DataSource = result;
705
+ this.EditSourceFuncValue.SingleSelection = true;
706
+ this.EditSourceFuncValue.AllowSearchFilter = true;
707
+ this.EditSourceFuncValue.IsRequired = true;
708
+ this.EditSourceFuncDefaultValue = new DropdownOptions();
709
+ this.EditSourceFuncDefaultValue.Name = "EditSourceFuncDefaultValue";
710
+ this.EditSourceFuncDefaultValue.LabelKey = "DefaultValue";
711
+ this.EditSourceFuncDefaultValue.DataSource = result;
712
+ this.EditSourceFuncDefaultValue.SingleSelection = true;
713
+ this.EditSourceFuncDefaultValue.AllowSearchFilter = true;
714
+ this.EditSourceFuncDefaultValue.IsRequired = true;
715
+ }
716
+ this.ShowSourceFunctionData = true;
696
717
  }
697
718
  this.sourceFunctionDataNotLoaded = false;
698
- this.ShowSourceFunctionData = true;
699
719
  }, (error) => {
700
- if (error.status == 404) {
720
+ if (error.status == 500) {
721
+ this.utilityService.stopBlockUI();
722
+ this.utilityService.notifyErrorMessage(error);
723
+ }
724
+ else { //404
701
725
  this.utilityService.stopBlockUI();
702
726
  this.showFunctionNotFoundError = true;
703
727
  this.ShowSourceFunctionData = false;
@@ -730,7 +754,7 @@ export class ConfigurationComponent {
730
754
  }
731
755
  }
732
756
  ConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ConfigurationComponent, deps: [{ token: i1.AuthService }, { token: i2.PageInfoService }, { token: i1.UtilityService }, { token: i1.BBSFTranslateService }, { token: i1.EnvironmentService }, { token: i3.ConfigurationsService }, { token: i4.NgbModal }, { token: i1.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component });
733
- ConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ConfigurationComponent, selector: "lib-configuration", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["ConfigurationPagingViewElement"], descendants: true }, { propertyName: "ConfirmationModalControl", first: true, predicate: ["ConfirmationModalControl"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n<!-- Page Content -->\r\n<div class=\"container-fluid\">\r\n\r\n <div *ngIf=\"ShowPageContent\">\r\n <!-- begin::Header -->\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"IsFilterLoaded\">\r\n <form [formGroup]=\"ConfigurationForm\">\r\n <BBSF-TextBox (OnChange)=\"searchClientSide($event)\" [options]=\"searchTextBox\" [group]=\"ConfigurationForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <!-- begin::Menu -->\r\n <button type=\"button\" class=\"btn btn-sm btn-primary\" title=\"Add\" (click)=\"showAddConfigurationModal(AddConfigurationModal)\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n <!-- end::Menu -->\r\n </div>\r\n </div>\r\n <!-- end::Header -->\r\n <!-- begin::Body -->\r\n <div class=\"card-body py-3\">\r\n <!-- begin::Table container -->\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Key\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Value\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Type\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Scope\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"UserPermissionSet\")}}</th>\r\n <th class=\"min-w-50px\">{{utilityService.getResourceValue(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let Configuration of clientSidePagingResult\">\r\n\r\n <td class=\"text-dark\">{{Configuration.key}}</td>\r\n <td>{{Configuration.value}}</td>\r\n <td> {{Configuration.valueTypeNameStr}}</td>\r\n <td>{{Configuration.scopeName}}</td>\r\n <td>{{Configuration.permissionSetName}}{{Configuration.userName}}</td>\r\n <td>\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"config\" class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu #config=\"matMenu\">\r\n <button class=\"drop-item px-3\" ngbDropdownItem\r\n (click)=\"showEditConfigurationModal(Configuration.id,Configuration.idEncrypted, EditConfigurationModal)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Edit\")}}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"drop-item px-3\" id=\"btnResetPass\"\r\n (click)=\"showDeleteConfigurationModal(Configuration.idEncrypted)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Delete\")}}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"6\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!-- end::Table -->\r\n </div>\r\n <!-- end::Table container -->\r\n\r\n </div>\r\n <!-- begin paging-->\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setConfigurationListResult($event)\" *ngIf=\"IsFilterLoaded\"\r\n [options]=\"ConfigurationPaging\" [group]=\"ConfigurationForm\" #ConfigurationPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n <!-- End paging-->\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n<!-- Add Modal -->\r\n<ng-template #AddConfigurationModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"AddConfiguration\")}}</h1>\r\n </div>\r\n\r\n <BBSF-Form [options]=\"AddConfigurationFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"Key\" [group]=\"AddConfigurationForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Category\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Scope\" (OnChange)=\"ChangeScopeValue($event)\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"PermissionSet\" *ngIf=\"ShowPermissionList\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"User\" *ngIf=\"ShowUsersList\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Type\" (OnChange)=\"ChangeTypeValue($event)\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"Value\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"AddConfigurationForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"DefaultValue\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"AddConfigurationForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"ValueToggel\" *ngIf=\"ShowValueToggleAndDefaultValue\" [group]=\"AddConfigurationForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"DefaultValueToggel\" *ngIf=\"ShowValueToggleAndDefaultValue\" [group]=\"AddConfigurationForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Source\" *ngIf=\"ShowDropDownSource\" (OnChange)=\"ChangeSource($event)\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"ShowSourceFunctionPath\">\r\n <div class=\"row\">\r\n <div class=\"col-md-9\">\r\n <BBSF-TextBox [options]=\"FunctionSourcePath\" [group]=\"AddConfigurationForm\" (OnChange)=\"changeSourceFunction()\">\r\n </BBSF-TextBox>\r\n <div *ngIf=\"showFunctionNotFoundError\" class=\"text-danger\">{{utilityService.getResourceValue(\"SourceFunctionNotFound\")}}</div>\r\n </div>\r\n <div class=\"col-md-3 d-flex justify-content-end align-items-center mb-4\">\r\n <button type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"SearchForFunction(true)\">\r\n <span class=\"float-right\"><i class=\"fas fa-search\"></i>{{utilityService.getResourceValue(\"Search\")}}</span>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"SourceFuncValue\" *ngIf=\"ShowSourceFunctionData\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"SourceFuncDefaultValue\" *ngIf=\"ShowSourceFunctionData\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"ShowLookupList\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Lookup\" (OnChange)=\"ChangeLookup($event)\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"LookupValue\" *ngIf=\"ShowLookupItemsList\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"LookupDefaultValue\" *ngIf=\"ShowLookupItemsList\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"text-center pt-7\">\r\n <button #CloseConfigurationModal id=\"CloseConfigurationModal\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\" [disabled]=\"sourceFunctionDataNotLoaded\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n<!--Edit Modal-->\r\n<ng-template #EditConfigurationModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"Edit\")}} {{utilityService.getResourceValue(\"Configuration\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditConfigurationFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditKey\" [group]=\"EditConfigurationForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditPermissionSet\" *ngIf=\"ShowPermissionList\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditUser\" *ngIf=\"ShowUsersList\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditTextValue\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"EditConfigurationForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditTextDefaultValue\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"EditConfigurationForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"EditValueToggele\" *ngIf=\"ShowValueToggleAndDefaultValue\" [group]=\"EditConfigurationForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"EditDefaultValueToggele\" *ngIf=\"ShowValueToggleAndDefaultValue\" [group]=\"EditConfigurationForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"ShowSourceFunctionPath\">\r\n <div class=\"col-md-9\">\r\n <BBSF-TextBox [options]=\"EditFunctionSourcePath\" [group]=\"EditConfigurationForm\" (OnChange)=\"changeSourceFunction()\">\r\n </BBSF-TextBox>\r\n <div *ngIf=\"showFunctionNotFoundError\" class=\"text-danger\">{{utilityService.getResourceValue(\"SourceFunctionNotFound\")}}</div>\r\n </div>\r\n <div class=\"col-md-3 d-flex justify-content-end align-items-center mb-4\">\r\n <button type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"SearchForFunction(false)\">\r\n <span class=\"float-right\"><i class=\"fas fa-search\"></i>{{utilityService.getResourceValue(\"Search\")}}</span>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditSourceFuncValue\" *ngIf=\"ShowSourceFunctionData\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditSourceFuncDefaultValue\" *ngIf=\"ShowSourceFunctionData\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLookup\" *ngIf=\"ShowLookupList\" (OnChange)=\"ChangeEditLookup($event)\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLookupValue\" *ngIf=\"ShowLookupItemsList\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLookupDefaultValue\" *ngIf=\"ShowLookupItemsList\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditConfigurationModal id=\"CloseEditConfigurationModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\" [disabled]=\"sourceFunctionDataNotLoaded\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!--deleted Modal-->\r\n<BBSF-ConfirmationModal *ngIf=\"deleteControlLoaded\" [options]=\"DeleteConfirmationOptions\" id=\"ConfirmationModalControl\" #ConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n", components: [{ type: i5.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { type: i6.ɵd, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i7.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }, { type: i6.ɵs, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { type: i6.ɵv, selector: "BBSF-Form", inputs: ["options"] }, { type: i6.ɵh, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { type: i6.ɵj, selector: "BBSF-Toggleslide", inputs: ["group", "options"] }, { type: i6.ɵw, selector: "BBSF-ConfirmationModal", inputs: ["options"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["matMenuTriggerRestoreFocus", "mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { type: i4.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { type: i11.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] });
757
+ ConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ConfigurationComponent, selector: "lib-configuration", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["ConfigurationPagingViewElement"], descendants: true }, { propertyName: "ConfirmationModalControl", first: true, predicate: ["ConfirmationModalControl"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n<!-- Page Content -->\r\n<div class=\"container-fluid\">\r\n <div *ngIf=\"ShowPageContent\">\r\n\r\n <!-- begin::Header -->\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"IsFilterLoaded\">\r\n <form [formGroup]=\"ConfigurationForm\">\r\n <!--(OnChange)=\"searchClientSide($event)\" -->\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"ConfigurationForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <!-- begin::Menu -->\r\n <button type=\"button\" class=\"btn btn-sm btn-primary\" title=\"Add\" (click)=\"showAddConfigurationModal(AddConfigurationModal)\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n <!-- end::Menu -->\r\n </div>\r\n </div>\r\n <!-- end::Header -->\r\n <!-- begin::Body -->\r\n <div class=\"card-body py-3\">\r\n <!-- begin::Table container -->\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Key\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Value\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Type\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Scope\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"UserPermissionSet\")}}</th>\r\n <th class=\"min-w-50px\">{{utilityService.getResourceValue(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let Configuration of clientSidePagingResult\">\r\n\r\n <td class=\"text-dark\">{{Configuration.key}}</td>\r\n <td>{{Configuration.value}}</td>\r\n <td> {{Configuration.valueTypeNameStr}}</td>\r\n <td>{{Configuration.scopeName}}</td>\r\n <td>{{Configuration.permissionSetName}}{{Configuration.userName}}</td>\r\n <td>\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"config\" class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu #config=\"matMenu\">\r\n <button class=\"drop-item px-3\" ngbDropdownItem\r\n (click)=\"showEditConfigurationModal(Configuration.id,Configuration.idEncrypted, EditConfigurationModal)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Edit\")}}</span>\r\n </button>\r\n <button ngbDropdownItem class=\"drop-item px-3\" id=\"btnResetPass\"\r\n (click)=\"showDeleteConfigurationModal(Configuration.idEncrypted)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Delete\")}}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"6\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <!-- end::Table -->\r\n </div>\r\n <!-- end::Table container -->\r\n\r\n </div>\r\n <!-- begin paging-->\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setConfigurationListResult($event)\" *ngIf=\"IsFilterLoaded\"\r\n [options]=\"ConfigurationPaging\" [group]=\"ConfigurationForm\" #ConfigurationPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n <!-- End paging-->\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n\r\n<!-- Add Modal -->\r\n<ng-template #AddConfigurationModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"AddConfiguration\")}}</h1>\r\n </div>\r\n\r\n <BBSF-Form [options]=\"AddConfigurationFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"Key\" [group]=\"AddConfigurationForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Category\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Scope\" (OnChange)=\"ChangeScopeValue($event)\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"PermissionSet\" *ngIf=\"ShowPermissionList\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"User\" *ngIf=\"ShowUsersList\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Type\" (OnChange)=\"ChangeTypeValue($event)\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"Value\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"AddConfigurationForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"DefaultValue\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"AddConfigurationForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"ValueToggel\" *ngIf=\"ShowValueToggleAndDefaultValue\" [group]=\"AddConfigurationForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"DefaultValueToggel\" *ngIf=\"ShowValueToggleAndDefaultValue\" [group]=\"AddConfigurationForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Source\" *ngIf=\"ShowDropDownSource\" (OnChange)=\"ChangeSource($event)\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"ShowSourceFunctionPath\">\r\n <div class=\"row\">\r\n <div class=\"col-md-9\">\r\n <BBSF-TextBox [options]=\"FunctionSourcePath\" [group]=\"AddConfigurationForm\" (OnChange)=\"changeSourceFunction()\">\r\n </BBSF-TextBox>\r\n <div *ngIf=\"showFunctionNotFoundError\" class=\"text-danger\">{{utilityService.getResourceValue(\"SourceFunctionNotFound\")}}</div>\r\n </div>\r\n <div class=\"col-md-3 d-flex justify-content-end align-items-center mb-4\">\r\n <button type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"SearchForFunction(true)\">\r\n <span class=\"float-right\"><i class=\"fas fa-search\"></i>{{utilityService.getResourceValue(\"Search\")}}</span>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"SourceFuncValue\" *ngIf=\"ShowSourceFunctionData\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"SourceFuncDefaultValue\" *ngIf=\"ShowSourceFunctionData\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"ShowLookupList\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Lookup\" (OnChange)=\"ChangeLookup($event,true)\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"LookupValue\" *ngIf=\"ShowLookupItemsList\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"LookupDefaultValue\" *ngIf=\"ShowLookupItemsList\" [group]=\"AddConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"text-center pt-7\">\r\n <button #CloseConfigurationModal id=\"CloseConfigurationModal\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\" [disabled]=\"sourceFunctionDataNotLoaded\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n<!--Edit Modal-->\r\n<ng-template #EditConfigurationModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"Edit\")}} {{utilityService.getResourceValue(\"Configuration\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditConfigurationFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditKey\" [group]=\"EditConfigurationForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditPermissionSet\" *ngIf=\"ShowPermissionList\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditUser\" *ngIf=\"ShowUsersList\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditTextValue\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"EditConfigurationForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditTextDefaultValue\" *ngIf=\"ShowValueAndDefaultValue\" [group]=\"EditConfigurationForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"EditValueToggele\" *ngIf=\"ShowValueToggleAndDefaultValue\" [group]=\"EditConfigurationForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"EditDefaultValueToggele\" *ngIf=\"ShowValueToggleAndDefaultValue\" [group]=\"EditConfigurationForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"ShowSourceFunctionPath\">\r\n <div class=\"col-md-9\">\r\n <BBSF-TextBox [options]=\"EditFunctionSourcePath\" [group]=\"EditConfigurationForm\" (OnChange)=\"changeSourceFunction()\">\r\n </BBSF-TextBox>\r\n <div *ngIf=\"showFunctionNotFoundError\" class=\"text-danger\">{{utilityService.getResourceValue(\"SourceFunctionNotFound\")}}</div>\r\n </div>\r\n <div class=\"col-md-3 d-flex justify-content-end align-items-center mb-4\">\r\n <button type=\"button\" class=\"btn btn-sm btn-secondary\" (click)=\"SearchForFunction(false)\">\r\n <span class=\"float-right\"><i class=\"fas fa-search\"></i>{{utilityService.getResourceValue(\"Search\")}}</span>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditSourceFuncValue\" *ngIf=\"ShowSourceFunctionData\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditSourceFuncDefaultValue\" *ngIf=\"ShowSourceFunctionData\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLookup\" *ngIf=\"ShowLookupList\" (OnChange)=\"ChangeLookup($event,false)\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"ShowLookupItemsList\" >\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLookupValue\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"ShowLookupItemsList\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLookupDefaultValue\" [group]=\"EditConfigurationForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditConfigurationModal id=\"CloseEditConfigurationModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\" [disabled]=\"sourceFunctionDataNotLoaded\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!--deleted Modal-->\r\n<BBSF-ConfirmationModal *ngIf=\"deleteControlLoaded\" [options]=\"DeleteConfirmationOptions\" id=\"ConfirmationModalControl\" #ConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n", components: [{ type: i5.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { type: i6.ɵd, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i7.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }, { type: i6.ɵs, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { type: i6.ɵv, selector: "BBSF-Form", inputs: ["options"] }, { type: i6.ɵh, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { type: i6.ɵj, selector: "BBSF-Toggleslide", inputs: ["group", "options"] }, { type: i6.ɵw, selector: "BBSF-ConfirmationModal", inputs: ["options"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["matMenuTriggerRestoreFocus", "mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { type: i4.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { type: i11.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] });
734
758
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ConfigurationComponent, decorators: [{
735
759
  type: Component,
736
760
  args: [{
@@ -744,4 +768,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
744
768
  type: ViewChild,
745
769
  args: ['ConfirmationModalControl', { static: false }]
746
770
  }] } });
747
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2NvbmZpZ3VyYXRpb25zL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2NvbmZpZ3VyYXRpb25zL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFeE4sT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFFaEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBS3JGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBTXZGLE1BQU0sT0FBTyxzQkFBc0I7SUE2RmpDLFlBQW9CLFdBQXdCLEVBQVUsZUFBZ0MsRUFDN0UsY0FBOEIsRUFBVSxvQkFBMEMsRUFD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LENBQUMscUJBQXFCLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUMsQ0FBQzs7b0hBcnpCVSxzQkFBc0I7d0dBQXRCLHNCQUFzQixpVENuQm5DLCtzZ0JBdVdBOzRGRHBWYSxzQkFBc0I7a0JBSmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsV0FBVyxFQUFFLGdDQUFnQztpQkFDOUM7Z1VBZWlFLGFBQWE7c0JBQTVFLFNBQVM7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQTZFSix3QkFBd0I7c0JBQWpGLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbnRyb2xMYXlvdXQsIEZpbHRlckl0ZW0sIEZpbHRlclR5cGUsIElucHV0VHlwZSwgUGFnaW5nT3B0aW9ucywgVGV4dEJveE9wdGlvbnMsIERyb3Bkb3duT3B0aW9ucywgVG9nZ2xlU2xpZGVPcHRpb25zLCBGb3JtT3B0aW9ucywgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zLCBQYWdpbmdBY3Rpb25Nb2RlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvQ29uZmlndXJhdGlvbnNTZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL0NvbmZpZ3VyYXRpb25Nb2RlbHMvQ29uZmlndXJhdGlvbk1vZGVsJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXRyb25pYy9jb3JlL3NlcnZpY2VzL3BhZ2UtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlLCBCQlNGVHJhbnNsYXRlU2VydmljZSwgRW52aXJvbm1lbnRTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBQYWdpbmdDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvUGFnaW5nL1BhZ2luZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMvbGliL2NvbnRyb2xzL0NvbmZpcm1hdGlvbk1vZGFsL0NvbmZpcm1hdGlvbk1vZGFsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25UeXBlcyB9IGZyb20gJy4uLy4uL3NoYXJlZC9FbnVtcy9Db25maWd1cmF0aW9uVHlwZSc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25TY29wZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9FbnVtcy9Db25maWd1cmF0aW9uU2NvcGUnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uVmFsdWVTb3VyY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvRW51bXMvQ29uZmlndXJhdGlvblZhbHVlU291cmNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNvbmZpZ3VyYXRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIFNob3dQYWdlQ29udGVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEFwaVVybCA9IFwiL2FwaS9hZG1pbi9Db25maWd1cmF0aW9uL1wiO1xyXG4gIFByb2R1Y3Rpb25Nb2RlOiBib29sZWFuO1xyXG5cclxuICAvL0ZpbHRlciBhbmQgcGFnaW5nIGNvbXBvbmVudHNcclxuICBDb25maWd1cmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIHNlYXJjaFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIFRleHRJbnB1dEZpbHRlcjogRmlsdGVySXRlbTtcclxuICBDb25maWd1cmF0aW9uUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIGNsaWVudFNpZGVQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgQ29uZmlndXJhdGlvblBhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBJc0ZpbHRlckxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0NvbmZpZ3VyYXRpb25QYWdpbmdWaWV3RWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwYWdpbmdFbGVtZW50OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuXHJcbiAgLy9SZXF1aXJlZCBsaXN0c1xyXG4gIFNjb3Blc0xpc3Q6IGFueVtdID0gW107XHJcbiAgUGVybWlzc2lvbkxpc3Q6IGFueVtdID0gW107XHJcbiAgVXNlcnNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIExvb2t1cHNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIExvb2t1cEl0ZW1zTGlzdDogYW55W10gPSBbXTtcclxuICBWYWx1ZVR5cGVMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIFZhbHVlU291cmNlTGlzdDogYW55W10gPSBbXTtcclxuICBDYXRlZ29yeUxpc3Q6IGFueVtdID0gW107XHJcblxyXG5cclxuICAvL0FkZCxFZGl0IHJlcXVpcmVkIGZsYWdzXHJcbiAgU2hvd1Blcm1pc3Npb25MaXN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2hvd1VzZXJzTGlzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFNob3dMb29rdXBMaXN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2hvd1ZhbHVlQW5kRGVmYXVsdFZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2hvd1ZhbHVlVG9nZ2xlQW5kRGVmYXVsdFZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2hvd1NvdXJjZUZ1bmN0aW9uUGF0aDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFNob3dEcm9wRG93blNvdXJjZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFNob3dMb29rdXBJdGVtc0xpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBTaG93U291cmNlRnVuY3Rpb25EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd0Z1bmN0aW9uTm90Rm91bmRFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNvdXJjZUZ1bmN0aW9uRGF0YU5vdExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvL0FkZCBNb2RlbCBDb250cm9sc1xyXG4gIEFkZENvbmZpZ3VyYXRpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgQWRkQ29uZmlndXJhdGlvbkZvcm1PcHRpb25zOiBGb3JtT3B0aW9uc1xyXG4gIEtleTogVGV4dEJveE9wdGlvbnM7XHJcbiAgVmFsdWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIERlZmF1bHRWYWx1ZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgRnVuY3Rpb25Tb3VyY2VQYXRoOiBUZXh0Qm94T3B0aW9ucztcclxuICBTb3VyY2VGdW5jVmFsdWU6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBTb3VyY2VGdW5jRGVmYXVsdFZhbHVlOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgVmFsdWVUb2dnZWw6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBEZWZhdWx0VmFsdWVUb2dnZWw6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBTY29wZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIFR5cGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBDYXRlZ29yeTogRHJvcGRvd25PcHRpb25zO1xyXG4gIFBlcm1pc3Npb25TZXQ6IERyb3Bkb3duT3B0aW9ucztcclxuICBVc2VyOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgU291cmNlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgTG9va3VwOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgTG9va3VwVmFsdWU6IERyb3Bkb3duT3B0aW9ucztcclxuICBMb29rdXBEZWZhdWx0VmFsdWU6IERyb3Bkb3duT3B0aW9ucztcclxuXHJcbiAgLy9FZGl0IE1vZGVsIENvbnRyb2xzXHJcbiAgRWRpdENvbmZpZ3VyYXRpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgRWRpdENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9uczogRm9ybU9wdGlvbnNcclxuICBFZGl0S2V5OiBUZXh0Qm94T3B0aW9ucyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gIEVkaXRUZXh0VmFsdWU6IFRleHRCb3hPcHRpb25zID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgRWRpdFRleHREZWZhdWx0VmFsdWU6IFRleHRCb3hPcHRpb25zID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgRWRpdFNvdXJjZVBhdGg6IFRleHRCb3hPcHRpb25zID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgRWRpdEZ1bmN0aW9uU291cmNlUGF0aDogVGV4dEJveE9wdGlvbnMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICBFZGl0VmFsdWVUb2dnZWxlOiBUb2dnbGVTbGlkZU9wdGlvbnMgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGU6IFRvZ2dsZVNsaWRlT3B0aW9ucyA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICBFZGl0U2NvcGU6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBFZGl0VHlwZTogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIEVkaXRQZXJtaXNzaW9uU2V0OiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgRWRpdFVzZXI6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBFZGl0U291cmNlOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgRWRpdExvb2t1cDogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIEVkaXRMb29rdXBWYWx1ZTogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIEVkaXRMb29rdXBEZWZhdWx0VmFsdWU6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBFZGl0U291cmNlRnVuY1ZhbHVlOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWU6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBDb25maWd1cmF0aW9uSWQ6IG51bWJlcjtcclxuICBDb25maWd1cmF0aW9uVmFsdWVUeXBlOiBudW1iZXI7XHJcbiAgRWRpdENvbmZpZ3VyYXRpb25TY29wZUlEOiBudW1iZXI7XHJcbiAgRWRpdENvbmZpZ3VyYXRpb25UeXBlSUQ6IG51bWJlcjtcclxuICBFZGl0Q29uZmlndXJhdGlvbkRETFNvdXJjZUlEOiBudW1iZXI7XHJcblxyXG4gIC8vZGVsZXRlICBNb2RlbCBDb250cm9sc1xyXG4gIGRlbGV0ZUNvbmZpZ3VyYXRpb25JZDogc3RyaW5nO1xyXG4gIERlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnM6IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucztcclxuICBkZWxldGVDb250cm9sTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnQ29uZmlybWF0aW9uTW9kYWxDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLFxyXG4gICAgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVudmlyb25tZW50U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLCBwcml2YXRlIENvbmZpZ3VyYXRpb25zU2VydmljZTogQ29uZmlndXJhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLCBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuU2hvd1BhZ2VDb250ZW50ID0gdHJ1ZTtcclxuICAgIC8vUGFnZSBoZWFkZXIgKGJyZWFkY3J1bWIgYW5kIHRpdGxlKVxyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZT10aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDb25maWd1cmF0aW9uXCIpXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzPVtcclxuICAgICAgIHt0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSAsIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlfSxcclxuICAgICAgIHt0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlfVxyXG5cclxuICAgIF07XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuXHJcbiAgICAvL29uIGxhbmcgY2hhbmdlZFxyXG4gICAgdGhpcy5iYnNmVHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCk9PntcclxuICAgICAgdGhpcy5TaG93UGFnZUNvbnRlbnQ9ZmFsc2U7XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLlByb2R1Y3Rpb25Nb2RlID0gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0UHJvZHVjdGlvbk1vZGUoKTtcclxuXHJcbiAgICAvL2luaXRpYWxpemUgcGFnZVxyXG4gICAgdGhpcy5pbml0aWFsaXplUGFnZSgpO1xyXG4gIH1cclxuICBpbml0aWFsaXplUGFnZSgpIHtcclxuICAgIC8vIFRleHRCb3ggaW5pdFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guTmFtZSA9IFwic2VhcmNoVGV4dEJveFwiXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guVHlwZSA9IElucHV0VHlwZS5UZXh0XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guUGxhY2Vob2xkZXIgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZWFyY2hCeU5hbWVcIilcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5IaWRlTGFiZWwgPSB0cnVlXHJcblxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcInNlYXJjaFRleHRcIlxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3hcclxuXHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25QYWdpbmcgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uUGFnaW5nLkFjdGlvblBvc3RVUkwgPSB0aGlzLkFwaVVybCArICdHZXRDb25maWd1cmF0aW9uc0J5RmlsdGVyJztcclxuICAgIHRoaXMuQ29uZmlndXJhdGlvblBhZ2luZy5PbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcInNlYXJjaFRleHRCb3hcIl1cclxuICAgIHRoaXMuQ29uZmlndXJhdGlvblBhZ2luZy5GaWx0ZXJzID0gW3RoaXMuVGV4dElucHV0RmlsdGVyXVxyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uUGFnaW5nLlZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKClcclxuICAgIHRoaXMuSXNGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy9QYWdpbmcgZnVuY3Rpb25zXHJcbiAgc2V0Q29uZmlndXJhdGlvbkxpc3RSZXN1bHQocmVzdWx0KSB7XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25QYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLlNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgfVxyXG4gIHNlYXJjaENsaWVudFNpZGUoc2VhcmNoVmFsdWUpIHtcclxuICAgIGlmIChzZWFyY2hWYWx1ZSlcclxuICAgICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0LmZpbHRlcihcclxuICAgICAgICBmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgcmV0dXJuIGl0ZW0ua2V5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgfSlcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gdGhpcy5Db25maWd1cmF0aW9uUGFnaW5nUmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy9BZGQgY29uZmlndXJhdGlvblxyXG4gIHNob3dBZGRDb25maWd1cmF0aW9uTW9kYWwoQWRkQ29uZmlndXJhdGlvbk1vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG5cclxuICAgIHRoaXMuU2hvd1Blcm1pc3Npb25MaXN0ID0gZmFsc2U7XHJcbiAgICB0aGlzLlNob3dVc2Vyc0xpc3QgPSBmYWxzZTtcclxuICAgIHRoaXMuU2hvd0xvb2t1cExpc3QgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLnJlc2V0Q29uZmlndXJhdGlvbkZsYWdzKCk7XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5sb2FkQWRkRHJvcGRvd25zKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgLy9MaXN0cyBsb2FkaW5nXHJcbiAgICAgIGxldCByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICB0aGlzLlNjb3Blc0xpc3QgPSByZXN1bHRPYmouc2NvcGVzO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25MaXN0ID0gcmVzdWx0T2JqLnBlcm1pc3Npb25MaXN0O1xyXG4gICAgICB0aGlzLlVzZXJzTGlzdCA9IHJlc3VsdE9iai51c2VycztcclxuICAgICAgdGhpcy5Mb29rdXBzTGlzdCA9IHJlc3VsdE9iai5sb29rdXBzO1xyXG4gICAgICB0aGlzLlZhbHVlVHlwZUxpc3QgPSByZXN1bHRPYmoudmFsdWVUeXBlO1xyXG4gICAgICB0aGlzLlZhbHVlU291cmNlTGlzdCA9IHJlc3VsdE9iai52YWx1ZVNvdXJjZTtcclxuICAgICAgdGhpcy5DYXRlZ29yeUxpc3QgPSByZXN1bHRPYmouY2F0ZWdvcnk7XHJcblxyXG5cclxuICAgICAgLy9Gb3JtIGFuZCBjb250cm9scyByZWluaXRpYWxpemVcclxuICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG5cclxuICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybVxyXG4gICAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRDb25maWd1cmF0aW9uTW9kZWw7XHJcbiAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkQ29uZmlndXJhdGlvbkZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnRcclxuXHJcbiAgICAgIC8vU3RhdGljIGNvbnRyb2xzXHJcbiAgICAgIHRoaXMuS2V5ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuS2V5Lk5hbWUgPSBcIktleVwiO1xyXG4gICAgICB0aGlzLktleS5MYWJlbEtleSA9IFwiS2V5XCI7XHJcbiAgICAgIHRoaXMuS2V5LlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5LZXkuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuS2V5LlZhbHVlID0gbnVsbDtcclxuXHJcbiAgICAgIHRoaXMuU2NvcGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuU2NvcGUuTmFtZSA9IFwiU2NvcGVcIjtcclxuICAgICAgdGhpcy5TY29wZS5MYWJlbEtleSA9IFwiU2NvcGVcIjtcclxuICAgICAgdGhpcy5TY29wZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgdGhpcy5TY29wZS5EYXRhU291cmNlID0gdGhpcy5TY29wZXNMaXN0O1xyXG4gICAgICB0aGlzLlNjb3BlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuU2NvcGUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLlNjb3BlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5UeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlR5cGUuTmFtZSA9IFwiVHlwZVwiO1xyXG4gICAgICB0aGlzLlR5cGUuTGFiZWxLZXkgPSBcIlR5cGVcIjtcclxuICAgICAgdGhpcy5UeXBlLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB0aGlzLlR5cGUuRGF0YVNvdXJjZSA9IHRoaXMuVmFsdWVUeXBlTGlzdDtcclxuICAgICAgdGhpcy5UeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuVHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuVHlwZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuQ2F0ZWdvcnkgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQ2F0ZWdvcnkuTmFtZSA9IFwiQ2F0ZWdvcnlcIjtcclxuICAgICAgdGhpcy5DYXRlZ29yeS5MYWJlbEtleSA9IFwiQ2F0ZWdvcnlcIjtcclxuICAgICAgdGhpcy5DYXRlZ29yeS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgdGhpcy5DYXRlZ29yeS5EYXRhU291cmNlID0gdGhpcy5DYXRlZ29yeUxpc3Q7XHJcbiAgICAgIHRoaXMuQ2F0ZWdvcnkuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5DYXRlZ29yeS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuQ2F0ZWdvcnkuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXQgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuUGVybWlzc2lvblNldC5OYW1lID0gXCJQZXJtaXNzaW9uU2V0XCI7XHJcbiAgICAgIHRoaXMuUGVybWlzc2lvblNldC5MYWJlbEtleSA9IFwiUGVybWlzc2lvblNldFwiO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXQuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuUGVybWlzc2lvblNldC5EYXRhU291cmNlID0gdGhpcy5QZXJtaXNzaW9uTGlzdDtcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0LlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuUGVybWlzc2lvblNldC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuUGVybWlzc2lvblNldC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuVXNlciA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5Vc2VyLk5hbWUgPSBcIlVzZXJcIjtcclxuICAgICAgdGhpcy5Vc2VyLkxhYmVsS2V5ID0gXCJVc2VyXCI7XHJcbiAgICAgIHRoaXMuVXNlci5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgdGhpcy5Vc2VyLkRhdGFTb3VyY2UgPSB0aGlzLlVzZXJzTGlzdDtcclxuICAgICAgdGhpcy5Vc2VyLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuVXNlci5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuVXNlci5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oQWRkQ29uZmlndXJhdGlvbk1vZGFsKTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgLy9SZXF1aXJlZCBGdW5jdGlvbnMgZm9yIEFkZFxyXG4gIENoYW5nZVR5cGVWYWx1ZShrZXkpIHtcclxuICAgIHRoaXMucmVzZXRDb25maWd1cmF0aW9uRmxhZ3MoKTtcclxuICAgIHRoaXMucmVtb3ZlRm9ybUNvbnRyb2xzKCk7XHJcbiAgICBzd2l0Y2ggKE51bWJlcihrZXkpKSB7XHJcbiAgICAgIGNhc2UgQ29uZmlndXJhdGlvblR5cGVzLlRleHQ6XHJcbiAgICAgICAgdGhpcy5WYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuVmFsdWUuTmFtZSA9IFwiVmFsdWVcIjtcclxuICAgICAgICB0aGlzLlZhbHVlLkxhYmVsS2V5ID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgIHRoaXMuVmFsdWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIHRoaXMuVmFsdWUuVmFsdWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuVmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWUuTmFtZSA9IFwiRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWUuTGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICB0aGlzLkRlZmF1bHRWYWx1ZS5WYWx1ZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuU2hvd1ZhbHVlQW5kRGVmYXVsdFZhbHVlID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25maWd1cmF0aW9uVHlwZXMuVG9nZ2xlOlxyXG4gICAgICAgIHRoaXMuVmFsdWVUb2dnZWwgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5WYWx1ZVRvZ2dlbC5OYW1lID0gXCJWYWx1ZVRvZ2dlbFwiO1xyXG4gICAgICAgIHRoaXMuVmFsdWVUb2dnZWwuTGFiZWxLZXkgPSBcIlZhbHVlXCI7XHJcbiAgICAgICAgdGhpcy5WYWx1ZVRvZ2dlbC5WYWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuVmFsdWVUb2dnZWwuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcblxyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlVG9nZ2VsID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlVG9nZ2VsLk5hbWUgPSBcIkRlZmF1bHRWYWx1ZVRvZ2dlbFwiO1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlVG9nZ2VsLkxhYmVsS2V5ID0gXCJEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICB0aGlzLkRlZmF1bHRWYWx1ZVRvZ2dlbC5WYWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlVG9nZ2VsLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG5cclxuICAgICAgICB0aGlzLlNob3dWYWx1ZVRvZ2dsZUFuZERlZmF1bHRWYWx1ZSA9IHRydWU7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbmZpZ3VyYXRpb25UeXBlcy5EREw6XHJcbiAgICAgICAgdGhpcy5Tb3VyY2UgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5Tb3VyY2UuTmFtZSA9IFwiU291cmNlXCI7XHJcbiAgICAgICAgdGhpcy5Tb3VyY2UuTGFiZWxLZXkgPSBcIlNvdXJjZVwiO1xyXG4gICAgICAgIHRoaXMuU291cmNlLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuU291cmNlLkRhdGFTb3VyY2UgPSB0aGlzLlZhbHVlU291cmNlTGlzdDtcclxuICAgICAgICB0aGlzLlNvdXJjZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU291cmNlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNvdXJjZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5TaG93RHJvcERvd25Tb3VyY2UgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQ2hhbmdlU291cmNlKGtleSkge1xyXG4gICAgc3dpdGNoIChOdW1iZXIoa2V5KSkge1xyXG4gICAgICBjYXNlIENvbmZpZ3VyYXRpb25WYWx1ZVNvdXJjZS5Mb29rdXA6XHJcbiAgICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiRnVuY3Rpb25Tb3VyY2VQYXRoXCIpO1xyXG4gICAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlNvdXJjZUZ1bmNWYWx1ZVwiKTtcclxuICAgICAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJTb3VyY2VGdW5jRGVmYXVsdFZhbHVlXCIpO1xyXG4gICAgICAgIHRoaXMuTG9va3VwID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuTG9va3VwLk5hbWUgPSBcIkxvb2t1cFwiO1xyXG4gICAgICAgIHRoaXMuTG9va3VwLkxhYmVsS2V5ID0gXCJMb29rdXBcIjtcclxuICAgICAgICB0aGlzLkxvb2t1cC5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICB0aGlzLkxvb2t1cC5EYXRhU291cmNlID0gdGhpcy5Mb29rdXBzTGlzdDtcclxuICAgICAgICB0aGlzLkxvb2t1cC5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuTG9va3VwLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLkxvb2t1cC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5TaG93TG9va3VwTGlzdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25QYXRoID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zb3VyY2VGdW5jdGlvbkRhdGFOb3RMb2FkZWQgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25maWd1cmF0aW9uVmFsdWVTb3VyY2UuRnVuY3Rpb246XHJcbiAgICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiTG9va3VwXCIpO1xyXG4gICAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkxvb2t1cFZhbHVlXCIpO1xyXG4gICAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkxvb2t1cERlZmF1bHRWYWx1ZVwiKTtcclxuICAgICAgICB0aGlzLkZ1bmN0aW9uU291cmNlUGF0aCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuRnVuY3Rpb25Tb3VyY2VQYXRoLk5hbWUgPSBcIkZ1bmN0aW9uU291cmNlUGF0aFwiO1xyXG4gICAgICAgIHRoaXMuRnVuY3Rpb25Tb3VyY2VQYXRoLkxhYmVsVmFsdWUgPSBcIlNvdXJjZVBhdGhcIjtcclxuICAgICAgICB0aGlzLkZ1bmN0aW9uU291cmNlUGF0aC5MYWJlbEtleSA9IFwiU291cmNlUGF0aFwiO1xyXG4gICAgICAgIHRoaXMuRnVuY3Rpb25Tb3VyY2VQYXRoLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICB0aGlzLkZ1bmN0aW9uU291cmNlUGF0aC5WYWx1ZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5GdW5jdGlvblNvdXJjZVBhdGguSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuU2hvd1NvdXJjZUZ1bmN0aW9uUGF0aCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zb3VyY2VGdW5jdGlvbkRhdGFOb3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU2hvd0xvb2t1cExpc3QgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlNob3dMb29rdXBJdGVtc0xpc3QgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUZvcm1Db250cm9scygpIHtcclxuICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlZhbHVlXCIpO1xyXG4gICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiRGVmYXVsdFZhbHVlXCIpO1xyXG4gICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiVmFsdWVUb2dnZWxcIik7XHJcbiAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJEZWZhdWx0VmFsdWVUb2dnZWxcIik7XHJcbiAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJTb3VyY2VcIik7XHJcbiAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJMb29rdXBcIik7XHJcbiAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJMb29rdXBWYWx1ZVwiKTtcclxuICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkxvb2t1cERlZmF1bHRWYWx1ZVwiKTtcclxuICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkZ1bmN0aW9uU291cmNlUGF0aFwiKTtcclxuICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlNvdXJjZUZ1bmNWYWx1ZVwiKTtcclxuICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWVcIik7XHJcbiAgfVxyXG5cclxuICBDaGFuZ2VMb29rdXAoa2V5KSB7XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5sb2FkTG9va3VwSXRlbXMoa2V5KS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgUmVzdWx0ID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdGhpcy5Mb29rdXBJdGVtc0xpc3QgPSBSZXN1bHQubG9va3VwSXRlbXM7XHJcbiAgICAgIHRoaXMuTG9va3VwVmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuTG9va3VwVmFsdWUuTmFtZSA9IFwiTG9va3VwVmFsdWVcIjtcclxuICAgICAgdGhpcy5Mb29rdXBWYWx1ZS5MYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgdGhpcy5Mb29rdXBWYWx1ZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgdGhpcy5Mb29rdXBWYWx1ZS5EYXRhU291cmNlID0gdGhpcy5Mb29rdXBJdGVtc0xpc3Q7XHJcbiAgICAgIHRoaXMuTG9va3VwVmFsdWUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5Mb29rdXBWYWx1ZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuTG9va3VwVmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuTG9va3VwVmFsdWUuU2hvd0FzdGVyaXNrID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuTG9va3VwRGVmYXVsdFZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkxvb2t1cERlZmF1bHRWYWx1ZS5OYW1lID0gXCJMb29rdXBEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgdGhpcy5Mb29rdXBEZWZhdWx0VmFsdWUuTGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICB0aGlzLkxvb2t1cERlZmF1bHRWYWx1ZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgdGhpcy5Mb29rdXBEZWZhdWx0VmFsdWUuRGF0YVNvdXJjZSA9IHRoaXMuTG9va3VwSXRlbXNMaXN0O1xyXG4gICAgICB0aGlzLkxvb2t1cERlZmF1bHRWYWx1ZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkxvb2t1cERlZmF1bHRWYWx1ZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuTG9va3VwRGVmYXVsdFZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLlNob3dMb29rdXBJdGVtc0xpc3QgPSB0cnVlO1xyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEFkZENvbmZpZ3VyYXRpb25Nb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS52YWx1ZTtcclxuICAgIGxldCBBZGRNb2RlbDogQ29uZmlndXJhdGlvbk1vZGVsID0gbmV3IENvbmZpZ3VyYXRpb25Nb2RlbCgpO1xyXG4gICAgQWRkTW9kZWwuS2V5ID0gUmVzdWx0TW9kZWwuS2V5O1xyXG4gICAgQWRkTW9kZWwuU2NvcGVJZCA9IE51bWJlcihSZXN1bHRNb2RlbC5TY29wZSk7XHJcbiAgICBBZGRNb2RlbC5WYWx1ZVR5cGUgPSBOdW1iZXIoUmVzdWx0TW9kZWwuVHlwZSk7XHJcbiAgICBBZGRNb2RlbC5DYXRlZ29yeUlkPSBOdW1iZXIoUmVzdWx0TW9kZWwuQ2F0ZWdvcnkpO1xyXG4gICAgQWRkTW9kZWwuVGV4dFZhbHVlID0gUmVzdWx0TW9kZWwuVmFsdWU7XHJcbiAgICBBZGRNb2RlbC5EZWZhdWx0VGV4dFZhbHVlID0gUmVzdWx0TW9kZWwuRGVmYXVsdFZhbHVlO1xyXG4gICAgQWRkTW9kZWwuQm9vbFZhbHVlID0gUmVzdWx0TW9kZWwuVmFsdWVUb2dnZWw7XHJcbiAgICBBZGRNb2RlbC5EZWZhdWx0Qm9vbFZhbHVlID0gUmVzdWx0TW9kZWwuRGVmYXVsdFZhbHVlVG9nZ2VsO1xyXG4gICAgQWRkTW9kZWwuU291cmNlRnVuY3Rpb25OYW1lID0gUmVzdWx0TW9kZWwuRnVuY3Rpb25Tb3VyY2VQYXRoO1xyXG4gICAgQWRkTW9kZWwuVXNlcklEID0gTnVtYmVyKFJlc3VsdE1vZGVsLlVzZXIpO1xyXG4gICAgQWRkTW9kZWwuU2VsZWN0ZWRMb29rdXBJRCA9IE51bWJlcihSZXN1bHRNb2RlbC5Mb29rdXApO1xyXG4gICAgQWRkTW9kZWwuVmFsdWUgPSBSZXN1bHRNb2RlbC5Mb29rdXBWYWx1ZTtcclxuICAgIEFkZE1vZGVsLkRlZmF1bHRWYWx1ZSA9IFJlc3VsdE1vZGVsLkxvb2t1cERlZmF1bHRWYWx1ZTtcclxuXHJcbiAgICBBZGRNb2RlbC5QZXJtaXNzaW9uU2V0SUQgPSBOdW1iZXIoUmVzdWx0TW9kZWwuUGVybWlzc2lvblNldCk7XHJcbiAgICBBZGRNb2RlbC5WYWx1ZVNvdXJjZSA9IE51bWJlcihSZXN1bHRNb2RlbC5Tb3VyY2UpO1xyXG5cclxuICAgIGxldCBzb3VyY2VJdGVtID0gdGhpcy5WYWx1ZVNvdXJjZUxpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBwYXJzZUludChpdGVtLmtleSkgPT0gQWRkTW9kZWwuVmFsdWVTb3VyY2U7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbSlbMF07XHJcbiAgICBpZiAoc291cmNlSXRlbSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgbGV0IENvbmZpZ3VyYXRpb25ERExTb3VyY2VOYW1lID0gc291cmNlSXRlbS52YWx1ZTtcclxuICAgICAgaWYgKENvbmZpZ3VyYXRpb25ERExTb3VyY2VOYW1lID09IFwiRnVuY3Rpb25cIikge1xyXG4gICAgICAgIEFkZE1vZGVsLlZhbHVlID0gUmVzdWx0TW9kZWwuU291cmNlRnVuY1ZhbHVlO1xyXG4gICAgICAgIEFkZE1vZGVsLkRlZmF1bHRWYWx1ZSA9IFJlc3VsdE1vZGVsLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goQWRkTW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRBZGRDb25maWd1cmF0aW9uRnVuY3Rpb24gPSAoQWRkTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQ29uZmlndXJhdGlvbnNTZXJ2aWNlLmFkZENvbmZpZ3VyYXRpb24oQWRkTW9kZWwpXHJcbiAgfVxyXG5cclxuICAvL0VkaXQgY29uZmlndXJhdGlvblxyXG4gIHNob3dFZGl0Q29uZmlndXJhdGlvbk1vZGFsKGNvbmZpZ3VyYXRpb25JZDogbnVtYmVyLCBjb25maWd1cmF0aW9uSURFbmM6IHN0cmluZywgRWRpdENvbmZpZ3VyYXRpb25Nb2RhbCkge1xyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uSWQgPSBjb25maWd1cmF0aW9uSWQ7XHJcbiAgICB0aGlzLnJlc2V0Q29uZmlndXJhdGlvbkZsYWdzKCk7XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5nZXRFZGl0Q29uZmlndXJhdGlvbkRhdGEoY29uZmlndXJhdGlvbklERW5jKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICAvL0VkaXQgbW9kZWxcclxuICAgICAgbGV0IGNvbmZpZ3VyYXRpb24gPSByZXN1bHRPYmoubW9kZWw7XHJcbiAgICAgIC8vTG9hZCBsb29rdXBzIGxpc3RcclxuICAgICAgdGhpcy5Mb29rdXBzTGlzdCA9IHJlc3VsdE9iai5sb29rdXBzO1xyXG4gICAgICAvL0xvYWQgbG9va3VwSXRlbXMgbGlzdFxyXG4gICAgICBsZXQgbG9va3VwSXRlbXMgPSByZXN1bHRPYmoubG9va3VwSXRlbXNTb3VyY2U7XHJcbiAgICAgIC8vTG9hZCBwZXJtaXNzaW9uc2V0cyBsaXN0XHJcbiAgICAgIHRoaXMuUGVybWlzc2lvbkxpc3QgPSByZXN1bHRPYmoucGVybWlzc2lvblNldExpc3Q7XHJcbiAgICAgIC8vTG9hZCB1c2VycyBsaXN0XHJcbiAgICAgIHRoaXMuVXNlcnNMaXN0ID0gcmVzdWx0T2JqLnVzZXJzO1xyXG4gICAgICAvL0Zvcm0gYW5kIGNvbnRyb2xzIHJlaW5pdGlhbGl6ZVxyXG4gICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pXHJcbiAgICAgIHRoaXMuRWRpdENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5FZGl0Q29uZmlndXJhdGlvbkZvcm1cclxuICAgICAgdGhpcy5FZGl0Q29uZmlndXJhdGlvbkZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEVkaXRDb25maWd1cmF0aW9uTW9kZWw7XHJcbiAgICAgIHRoaXMuRWRpdENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEVkaXRDb25maWd1cmF0aW9uRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuRWRpdENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnRcclxuICAgICAgdGhpcy5FZGl0Q29uZmlndXJhdGlvbkZvcm1PcHRpb25zLlBhZ2luZ0FjdGlvbk1vZGUgPSBQYWdpbmdBY3Rpb25Nb2RlLlVwZGF0ZVxyXG5cclxuICAgICAgdGhpcy5Db25maWd1cmF0aW9uVmFsdWVUeXBlID0gY29uZmlndXJhdGlvbi52YWx1ZVR5cGU7XHJcbiAgICAgIHRoaXMuRWRpdENvbmZpZ3VyYXRpb25TY29wZUlEID0gY29uZmlndXJhdGlvbi5zY29wZUlkO1xyXG4gICAgICB0aGlzLkVkaXRLZXkgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0S2V5Lk5hbWUgPSBcIkVkaXRLZXlcIjtcclxuICAgICAgdGhpcy5FZGl0S2V5LkxhYmVsS2V5ID0gXCJLZXlcIjtcclxuICAgICAgdGhpcy5FZGl0S2V5LlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5FZGl0S2V5LklzUmVxdWlyZWQgPSAhdGhpcy5Qcm9kdWN0aW9uTW9kZTtcclxuICAgICAgdGhpcy5FZGl0S2V5LlZhbHVlID0gY29uZmlndXJhdGlvbi5rZXk7XHJcbiAgICAgIHRoaXMuRWRpdEtleS5NYXhMZW5ndGggPSAyNTY7XHJcbiAgICAgIHRoaXMuRWRpdEtleS5Jc0Rpc2FibGVkID0gdGhpcy5Qcm9kdWN0aW9uTW9kZTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdENvbmZpZ3VyYXRpb25UeXBlSUQgPSBjb25maWd1cmF0aW9uLnZhbHVlVHlwZTtcclxuICAgICAgc3dpdGNoICh0aGlzLkVkaXRDb25maWd1cmF0aW9uVHlwZUlEKSB7XHJcbiAgICAgICAgY2FzZSBDb25maWd1cmF0aW9uVHlwZXMuVGV4dDpcclxuICAgICAgICAgIHRoaXMuU2hvd1ZhbHVlQW5kRGVmYXVsdFZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHRWYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dFZhbHVlLk5hbWUgPSBcIkVkaXRUZXh0VmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHRWYWx1ZS5MYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHRWYWx1ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0VmFsdWUuVmFsdWUgPSBjb25maWd1cmF0aW9uLnRleHRWYWx1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHRWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcblxyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dERlZmF1bHRWYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dERlZmF1bHRWYWx1ZS5OYW1lID0gXCJFZGl0VGV4dERlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dERlZmF1bHRWYWx1ZS5MYWJlbEtleSA9IFwiRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0RGVmYXVsdFZhbHVlLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHREZWZhdWx0VmFsdWUuVmFsdWUgPSBjb25maWd1cmF0aW9uLmRlZmF1bHRUZXh0VmFsdWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0RGVmYXVsdFZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25maWd1cmF0aW9uVHlwZXMuVG9nZ2xlOlxyXG4gICAgICAgICAgdGhpcy5TaG93VmFsdWVUb2dnbGVBbmREZWZhdWx0VmFsdWUgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VmFsdWVUb2dnZWxlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VmFsdWVUb2dnZWxlLk5hbWUgPSBcIkVkaXRWYWx1ZVRvZ2dlbGVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFZhbHVlVG9nZ2VsZS5MYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFZhbHVlVG9nZ2VsZS5WYWx1ZSA9IGNvbmZpZ3VyYXRpb24uYm9vbFZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VmFsdWVUb2dnZWxlLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG5cclxuICAgICAgICAgIHRoaXMuRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkVkaXREZWZhdWx0VmFsdWVUb2dnZWxlLk5hbWUgPSBcIkVkaXREZWZhdWx0VmFsdWVUb2dnZWxlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXREZWZhdWx0VmFsdWVUb2dnZWxlLkxhYmVsS2V5ID0gXCJEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGUuVmFsdWUgPSBjb25maWd1cmF0aW9uLmRlZmF1bHRCb29sVmFsdWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXREZWZhdWx0VmFsdWVUb2dnZWxlLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25maWd1cmF0aW9uVHlwZXMuRERMOlxyXG4gICAgICAgICAgdGhpcy5FZGl0Q29uZmlndXJhdGlvbkRETFNvdXJjZUlEID0gY29uZmlndXJhdGlvbi52YWx1ZVNvdXJjZTtcclxuICAgICAgICAgIHN3aXRjaCAodGhpcy5FZGl0Q29uZmlndXJhdGlvbkRETFNvdXJjZUlEKSB7XHJcbiAgICAgICAgICAgIGNhc2UgQ29uZmlndXJhdGlvblZhbHVlU291cmNlLkxvb2t1cDpcclxuICAgICAgICAgICAgICB0aGlzLlNob3dMb29rdXBMaXN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLlNob3dMb29rdXBJdGVtc0xpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGxldCBzZWxlY3RlZExvb2t1cCA9IHRoaXMuTG9va3Vwc0xpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleSA9PSBjb25maWd1cmF0aW9uLnNlbGVjdGVkTG9va3VwSUQ7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXAgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwLk5hbWUgPSBcIkVkaXRMb29rdXBcIjtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXAuTGFiZWxLZXkgPSBcIkxvb2t1cFwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cC5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXAuRGF0YVNvdXJjZSA9IHRoaXMuTG9va3Vwc0xpc3Q7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXAuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwLlNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZExvb2t1cDtcclxuXHJcbiAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkTG9va3VwVmFsdWUgPSBsb29rdXBJdGVtcy5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IGNvbmZpZ3VyYXRpb24udmFsdWU7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLk5hbWUgPSBcIkVkaXRMb29rdXBWYWx1ZVwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLkxhYmVsS2V5ID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLkRhdGFTb3VyY2UgPSBsb29rdXBJdGVtcztcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5TZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRMb29rdXBWYWx1ZTtcclxuXHJcbiAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkTG9va3VwRGVmYXVsdFZhbHVlID0gbG9va3VwSXRlbXMuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleSA9PSBjb25maWd1cmF0aW9uLmRlZmF1bHRWYWx1ZTsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5OYW1lID0gXCJFZGl0TG9va3VwRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLkxhYmVsS2V5ID0gXCJEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuRGF0YVNvdXJjZSA9IGxvb2t1cEl0ZW1zO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5TZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRMb29rdXBEZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgQ29uZmlndXJhdGlvblZhbHVlU291cmNlLkZ1bmN0aW9uOlxyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdEZ1bmN0aW9uU291cmNlUGF0aCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdEZ1bmN0aW9uU291cmNlUGF0aC5OYW1lID0gXCJFZGl0RnVuY3Rpb25Tb3VyY2VQYXRoXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0RnVuY3Rpb25Tb3VyY2VQYXRoLkxhYmVsS2V5ID0gXCJTb3VyY2VQYXRoXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0RnVuY3Rpb25Tb3VyY2VQYXRoLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRGdW5jdGlvblNvdXJjZVBhdGguVmFsdWUgPSBjb25maWd1cmF0aW9uLnNvdXJjZUZ1bmN0aW9uTmFtZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRGdW5jdGlvblNvdXJjZVBhdGguSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG5cclxuICAgICAgICAgICAgICB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5sb2FkU291cmNlRnVuY3Rpb25Ecm9wRG93bkl0ZW1zKGNvbmZpZ3VyYXRpb24uc291cmNlRnVuY3Rpb25OYW1lKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRTb3VyY2VGdW5jVmFsdWUgPSByZXN1bHQuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleSA9PSBjb25maWd1cmF0aW9uLnZhbHVlOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5OYW1lID0gXCJFZGl0U291cmNlRnVuY1ZhbHVlXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuTGFiZWxLZXkgPSBcIlZhbHVlXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuRGF0YVNvdXJjZSA9IHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5TZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRTb3VyY2VGdW5jVmFsdWU7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkU291cmNlRnVuY0RlZmF1bHRWYWx1ZSA9IHJlc3VsdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IGNvbmZpZ3VyYXRpb24uZGVmYXVsdFZhbHVlOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLk5hbWUgPSBcIkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLkxhYmVsS2V5ID0gXCJEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuRGF0YVNvdXJjZSA9IHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuU2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkU291cmNlRnVuY0RlZmF1bHRWYWx1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuU2hvd1NvdXJjZUZ1bmN0aW9uUGF0aCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlNob3dTb3VyY2VGdW5jdGlvbkRhdGEgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uU2NvcGVJRCA9IGNvbmZpZ3VyYXRpb24uc2NvcGVJZDtcclxuXHJcbiAgICAgIC8vcmVzZXQgc2NvcGVcclxuICAgICAgdGhpcy5TaG93UGVybWlzc2lvbkxpc3QgPSBmYWxzZTtcclxuICAgICAgdGhpcy5TaG93VXNlcnNMaXN0ID0gZmFsc2U7XHJcbiAgICAgIC8vY29uc29sZS5sb2coc2NvcEl0ZW0pO1xyXG4gICAgICBzd2l0Y2ggKHRoaXMuRWRpdENvbmZpZ3VyYXRpb25TY29wZUlEKSB7XHJcbiAgICAgICAgY2FzZSBDb25maWd1cmF0aW9uU2NvcGUuUGVybWlzc2lvblNldDpcclxuICAgICAgICAgIHRoaXMuU2hvd1Blcm1pc3Npb25MaXN0ID0gdHJ1ZTtcclxuICAgICAgICAgIGxldCBzZWxlY3RlZFBlcm1pc3Npb25TZXQgPSB0aGlzLlBlcm1pc3Npb25MaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gaXRlbS5rZXkgPT0gY29uZmlndXJhdGlvbi5wZXJtaXNzaW9uU2V0SUQ7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXQuTmFtZSA9IFwiRWRpdFBlcm1pc3Npb25TZXRcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXQuTGFiZWxLZXkgPSBcIlBlcm1pc3Npb25TZXRcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXQuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0LkRhdGFTb3VyY2UgPSB0aGlzLlBlcm1pc3Npb25MaXN0O1xyXG4gICAgICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldC5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0LklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldC5TZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRQZXJtaXNzaW9uU2V0O1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25maWd1cmF0aW9uU2NvcGUuVXNlcjpcclxuICAgICAgICAgIHRoaXMuU2hvd1VzZXJzTGlzdCA9IHRydWU7XHJcbiAgICAgICAgICBsZXQgc2VsZWN0ZWRVc2VyID0gdGhpcy5Vc2Vyc0xpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleSA9PSBjb25maWd1cmF0aW9uLnVzZXJJRDsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07XHJcbiAgICAgICAgICB0aGlzLkVkaXRVc2VyID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VXNlci5OYW1lID0gXCJFZGl0VXNlclwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VXNlci5MYWJlbEtleSA9IFwiVXNlclwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VXNlci5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuRWRpdFVzZXIuRGF0YVNvdXJjZSA9IHRoaXMuVXNlcnNMaXN0O1xyXG4gICAgICAgICAgdGhpcy5FZGl0VXNlci5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VXNlci5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRVc2VyLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VXNlci5TZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRVc2VyO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oRWRpdENvbmZpZ3VyYXRpb25Nb2RhbCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdENvbmZpZ3VyYXRpb25Nb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5FZGl0Q29uZmlndXJhdGlvbkZvcm0udmFsdWU7XHJcbiAgICBjb25zb2xlLmxvZyhSZXN1bHRNb2RlbCk7XHJcbiAgICBsZXQgRWRpdE1vZGVsOiBDb25maWd1cmF0aW9uTW9kZWwgPSBuZXcgQ29uZmlndXJhdGlvbk1vZGVsKCk7XHJcbiAgICBFZGl0TW9kZWwuSUQgPSB0aGlzLkNvbmZpZ3VyYXRpb25JZDtcclxuICAgIEVkaXRNb2RlbC5WYWx1ZVR5cGUgPSB0aGlzLkNvbmZpZ3VyYXRpb25WYWx1ZVR5cGU7XHJcbiAgICBFZGl0TW9kZWwuU2NvcGVJZCA9IHRoaXMuRWRpdENvbmZpZ3VyYXRpb25TY29wZUlEO1xyXG4gICAgRWRpdE1vZGVsLktleSA9IFJlc3VsdE1vZGVsLkVkaXRLZXk7XHJcbiAgICBcclxuICAgIHN3aXRjaCAodGhpcy5FZGl0Q29uZmlndXJhdGlvblR5cGVJRCkge1xyXG4gICAgICBjYXNlIENvbmZpZ3VyYXRpb25UeXBlcy5UZXh0OlxyXG4gICAgICAgIEVkaXRNb2RlbC5UZXh0VmFsdWUgPSBSZXN1bHRNb2RlbC5FZGl0VGV4dFZhbHVlO1xyXG4gICAgICAgIEVkaXRNb2RlbC5EZWZhdWx0VGV4dFZhbHVlID0gUmVzdWx0TW9kZWwuRWRpdFRleHREZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uZmlndXJhdGlvblR5cGVzLlRvZ2dsZTpcclxuICAgICAgICBFZGl0TW9kZWwuQm9vbFZhbHVlID0gUmVzdWx0TW9kZWwuRWRpdFZhbHVlVG9nZ2VsZTtcclxuICAgICAgICBFZGl0TW9kZWwuRGVmYXVsdEJvb2xWYWx1ZSA9IFJlc3VsdE1vZGVsLkVkaXREZWZhdWx0VmFsdWVUb2dnZWxlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbmZpZ3VyYXRpb25UeXBlcy5EREw6XHJcbiAgICAgICAgaWYgKHRoaXMuRWRpdENvbmZpZ3VyYXRpb25ERExTb3VyY2VJRCA9PSBDb25maWd1cmF0aW9uVmFsdWVTb3VyY2UuTG9va3VwKSB7XHJcbiAgICAgICAgICBFZGl0TW9kZWwuU2VsZWN0ZWRMb29rdXBJRCA9IE51bWJlcihSZXN1bHRNb2RlbC5FZGl0TG9va3VwKTtcclxuICAgICAgICAgIEVkaXRNb2RlbC5WYWx1ZSA9IFJlc3VsdE1vZGVsLkVkaXRMb29rdXBWYWx1ZSBhcyBzdHJpbmc7XHJcbiAgICAgICAgICBFZGl0TW9kZWwuRGVmYXVsdFZhbHVlID0gUmVzdWx0TW9kZWwuRWRpdExvb2t1cERlZmF1bHRWYWx1ZSBhcyBzdHJpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuRWRpdENvbmZpZ3VyYXRpb25ERExTb3VyY2VJRCA9PSBDb25maWd1cmF0aW9uVmFsdWVTb3VyY2UuRnVuY3Rpb24pIHtcclxuICAgICAgICAgIEVkaXRNb2RlbC5Tb3VyY2VGdW5jdGlvbk5hbWUgPSBSZXN1bHRNb2RlbC5FZGl0RnVuY3Rpb25Tb3VyY2VQYXRoO1xyXG4gICAgICAgICAgRWRpdE1vZGVsLlZhbHVlID0gUmVzdWx0TW9kZWwuRWRpdFNvdXJjZUZ1bmNWYWx1ZTtcclxuICAgICAgICAgIEVkaXRNb2RlbC5EZWZhdWx0VmFsdWUgPSBSZXN1bHRNb2RlbC5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuRWRpdENvbmZpZ3VyYXRpb25TY29wZUlEID09IENvbmZpZ3VyYXRpb25TY29wZS5Vc2VyKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKE51bWJlcihSZXN1bHRNb2RlbC5FZGl0VXNlcikpO1xyXG4gICAgICBFZGl0TW9kZWwuVXNlcklEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkVkaXRVc2VyKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuRWRpdENvbmZpZ3VyYXRpb25TY29wZUlEID09IENvbmZpZ3VyYXRpb25TY29wZS5QZXJtaXNzaW9uU2V0KVxyXG4gICAgICBFZGl0TW9kZWwuUGVybWlzc2lvblNldElEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkVkaXRQZXJtaXNzaW9uU2V0KTtcclxuICAgIHBhcmFtQXJyYXkucHVzaChFZGl0TW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0Q29uZmlndXJhdGlvbkZ1bmN0aW9uID0gKEVkaXRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5Db25maWd1cmF0aW9uc1NlcnZpY2UuZWRpdENvbmZpZ3VyYXRpb24oRWRpdE1vZGVsKVxyXG4gIH1cclxuXHJcbiAgQ2hhbmdlRWRpdExvb2t1cChrZXkpIHtcclxuICAgIHRoaXMuU2hvd0xvb2t1cEl0ZW1zTGlzdCA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuQ29uZmlndXJhdGlvbnNTZXJ2aWNlLmxvYWRMb29rdXBJdGVtcyhrZXkpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBSZXN1bHQgPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICBsZXQgTG9va3VwSXRlbXNMaXN0RWRpdCA9IFJlc3VsdC5sb29rdXBJdGVtcztcclxuICAgICAgLy9SZXNpbml0aWFsaXplIGxvb2t1cCB2YWx1ZXMgYW5kIGRlZmF1bHQgdmFsdWVzXHJcblxyXG4gICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuTmFtZSA9IFwiRWRpdExvb2t1cFZhbHVlXCI7XHJcbiAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLkxhYmVsS2V5ID0gXCJWYWx1ZVwiO1xyXG4gICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuRGF0YVNvdXJjZSA9IExvb2t1cEl0ZW1zTGlzdEVkaXQ7XHJcbiAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5OYW1lID0gXCJFZGl0TG9va3VwRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5MYWJlbEtleSA9IFwiRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLkRhdGFTb3VyY2UgPSBMb29rdXBJdGVtc0xpc3RFZGl0O1xyXG4gICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5TaG93TG9va3VwSXRlbXNMaXN0ID0gdHJ1ZTtcclxuXHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vQWRkLEVkaXQgcmVxdWlyZWQgZnVuY3Rpb25zXHJcbiAgQ2hhbmdlU2NvcGVWYWx1ZShrZXkpIHtcclxuICAgIHN3aXRjaCAoTnVtYmVyKGtleSkpIHtcclxuICAgICAgY2FzZSBDb25maWd1cmF0aW9uU2NvcGUuQXBwOlxyXG4gICAgICAgIHRoaXMuU2hvd1Blcm1pc3Npb25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5TaG93VXNlcnNMaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiVXNlclwiKVxyXG4gICAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlBlcm1pc3Npb25TZXRcIilcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uZmlndXJhdGlvblNjb3BlLlBlcm1pc3Npb25TZXQ6XHJcbiAgICAgICAgdGhpcy5TaG93UGVybWlzc2lvbkxpc3QgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU2hvd1VzZXJzTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlVzZXJcIilcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uZmlndXJhdGlvblNjb3BlLlVzZXI6XHJcbiAgICAgICAgdGhpcy5TaG93UGVybWlzc2lvbkxpc3QgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlNob3dVc2Vyc0xpc3QgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlBlcm1pc3Npb25TZXRcIilcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlc2V0Q29uZmlndXJhdGlvbkZsYWdzKCkge1xyXG4gICAgdGhpcy5TaG93TG9va3VwTGlzdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5TaG93VmFsdWVBbmREZWZhdWx0VmFsdWUgPSBmYWxzZTtcclxuICAgIHRoaXMuU2hvd1ZhbHVlVG9nZ2xlQW5kRGVmYXVsdFZhbHVlID0gZmFsc2U7XHJcbiAgICB0aGlzLlNob3dTb3VyY2VGdW5jdGlvblBhdGggPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0Z1bmN0aW9uTm90Rm91bmRFcnJvciA9IGZhbHNlO1xyXG4gICAgdGhpcy5TaG93RHJvcERvd25Tb3VyY2UgPSBmYWxzZTtcclxuICAgIHRoaXMuU2hvd0xvb2t1cEl0ZW1zTGlzdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25EYXRhID0gZmFsc2U7XHJcbiAgICB0aGlzLnNvdXJjZUZ1bmN0aW9uRGF0YU5vdExvYWRlZCA9IGZhbHNlO1xyXG4gIH1cclxuICBTZWFyY2hGb3JGdW5jdGlvbihpc0FkZDogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IGlzQWRkID8gdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS52YWx1ZSA6IHRoaXMuRWRpdENvbmZpZ3VyYXRpb25Gb3JtLnZhbHVlO1xyXG4gICAgbGV0IGZ1bmN0aW9uTmFtZSA9IGlzQWRkID8gUmVzdWx0TW9kZWwuRnVuY3Rpb25Tb3VyY2VQYXRoOiBSZXN1bHRNb2RlbC5FZGl0RnVuY3Rpb25Tb3VyY2VQYXRoO1xyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uc1NlcnZpY2UubG9hZFNvdXJjZUZ1bmN0aW9uRHJvcERvd25JdGVtcyhmdW5jdGlvbk5hbWUpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zaG93RnVuY3Rpb25Ob3RGb3VuZEVycm9yID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YSA9IGZhbHNlO1xyXG4gICAgICBpZiAoaXNBZGQpIHtcclxuICAgICAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJTb3VyY2VGdW5jVmFsdWVcIik7XHJcbiAgICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiU291cmNlRnVuY0RlZmF1bHRWYWx1ZVwiKTtcclxuXHJcbiAgICAgICAgdGhpcy5Tb3VyY2VGdW5jVmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5Tb3VyY2VGdW5jVmFsdWUuTmFtZSA9IFwiU291cmNlRnVuY1ZhbHVlXCI7XHJcbiAgICAgICAgdGhpcy5Tb3VyY2VGdW5jVmFsdWUuTGFiZWxLZXkgPSBcIlZhbHVlXCI7XHJcbiAgICAgICAgdGhpcy5Tb3VyY2VGdW5jVmFsdWUuRGF0YVNvdXJjZSA9IHJlc3VsdDtcclxuICAgICAgICB0aGlzLlNvdXJjZUZ1bmNWYWx1ZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU291cmNlRnVuY1ZhbHVlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNvdXJjZUZ1bmNWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5Tb3VyY2VGdW5jRGVmYXVsdFZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuU291cmNlRnVuY0RlZmF1bHRWYWx1ZS5OYW1lID0gXCJTb3VyY2VGdW5jRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgdGhpcy5Tb3VyY2VGdW5jRGVmYXVsdFZhbHVlLkxhYmVsS2V5ID0gXCJEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICB0aGlzLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuRGF0YVNvdXJjZSA9IHJlc3VsdDtcclxuICAgICAgICB0aGlzLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU291cmNlRnVuY0RlZmF1bHRWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiRWRpdFNvdXJjZUZ1bmNWYWx1ZVwiKTtcclxuICAgICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWVcIik7XHJcblxyXG4gICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuTmFtZSA9IFwiRWRpdFNvdXJjZUZ1bmNWYWx1ZVwiO1xyXG4gICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5MYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuRGF0YVNvdXJjZSA9IHJlc3VsdDtcclxuICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLk5hbWUgPSBcIkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5MYWJlbEtleSA9IFwiRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5EYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc291cmNlRnVuY3Rpb25EYXRhTm90TG9hZGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YSA9IHRydWU7XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDQpIHtcclxuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgICAgdGhpcy5zaG93RnVuY3Rpb25Ob3RGb3VuZEVycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNob3dTb3VyY2VGdW5jdGlvbkRhdGEgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNvdXJjZUZ1bmN0aW9uRGF0YU5vdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIFxyXG4gICAgfSlcclxuICB9XHJcbiAgY2hhbmdlU291cmNlRnVuY3Rpb24oKSB7XHJcbiAgICB0aGlzLlNob3dTb3VyY2VGdW5jdGlvbkRhdGEgPSBmYWxzZTtcclxuICAgIHRoaXMuc291cmNlRnVuY3Rpb25EYXRhTm90TG9hZGVkID0gdHJ1ZTtcclxuICB9XHJcbiAgLy9EZWxldGUgY29uZmlndXJhdGlvblxyXG4gIHNob3dEZWxldGVDb25maWd1cmF0aW9uTW9kYWwoY29uZmlndXJhdGlvbklEOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGVsZXRlQ29uZmlndXJhdGlvbklkID0gY29uZmlndXJhdGlvbklEO1xyXG5cclxuICAgIC8vYXJyYXkgc2VudCB0byBzZXJ2aWNlIGZ1bmN0aW9uXHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIHBhcmFtQXJyYXkucHVzaCh0aGlzLmRlbGV0ZUNvbmZpZ3VyYXRpb25JZCk7XHJcblxyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zID0gbmV3IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucygpO1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZGVsZXRlQ29uZmlndXJhdGlvbjtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5TZXJ2aWNlU3VibWl0TW9kZWwgPSBwYXJhbUFycmF5O1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuICAgIHRoaXMuZGVsZXRlQ29udHJvbExvYWRlZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5Db25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd01vZGFsKCk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlQ29uZmlndXJhdGlvbiA9IChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5kZWxldGVDb25maWd1cmF0aW9uKGlkKTtcclxuICB9XHJcblxyXG4gIC8vT24gZGVzdHJveVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0SGFuZGxlclNlcnZpY2UuZGVzdHJveUhhbmRsZXIoKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxibG9jay11aT48L2Jsb2NrLXVpPlxyXG48IS0tIFBhZ2UgQ29udGVudCAtLT5cclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwiU2hvd1BhZ2VDb250ZW50XCI+XHJcbiAgICA8IS0tIGJlZ2luOjpIZWFkZXIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWN1c3RvbS1oXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCI+XHJcbiAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIkNvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggKE9uQ2hhbmdlKT1cInNlYXJjaENsaWVudFNpZGUoJGV2ZW50KVwiIFtvcHRpb25zXT1cInNlYXJjaFRleHRCb3hcIiBbZ3JvdXBdPVwiQ29uZmlndXJhdGlvbkZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICA8IS0tIGJlZ2luOjpNZW51IC0tPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCIgdGl0bGU9XCJBZGRcIiAoY2xpY2spPVwic2hvd0FkZENvbmZpZ3VyYXRpb25Nb2RhbChBZGRDb25maWd1cmF0aW9uTW9kYWwpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXMgbWUtMVwiPjwvaT5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPCEtLSBlbmQ6Ok1lbnUgLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIGVuZDo6SGVhZGVyIC0tPlxyXG4gICAgICA8IS0tIGJlZ2luOjpCb2R5IC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSBjb250YWluZXIgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIktleVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVmFsdWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlR5cGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNjb3BlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJVc2VyUGVybWlzc2lvblNldFwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3Rpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgPHRib2R5IGlkPVwibGlzdGluZ0NvbnRhaW5lclwiIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBDb25maWd1cmF0aW9uIG9mIGNsaWVudFNpZGVQYWdpbmdSZXN1bHRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWRhcmtcIj57e0NvbmZpZ3VyYXRpb24ua2V5fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPnt7Q29uZmlndXJhdGlvbi52YWx1ZX19PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD4ge3tDb25maWd1cmF0aW9uLnZhbHVlVHlwZU5hbWVTdHJ9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQ+e3tDb25maWd1cmF0aW9uLnNjb3BlTmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD57e0NvbmZpZ3VyYXRpb24ucGVybWlzc2lvblNldE5hbWV9fXt7Q29uZmlndXJhdGlvbi51c2VyTmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImNvbmZpZ1wiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVsbGlwc2lzLWhcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNjb25maWc9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIiBuZ2JEcm9wZG93bkl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dFZGl0Q29uZmlndXJhdGlvbk1vZGFsKENvbmZpZ3VyYXRpb24uaWQsQ29uZmlndXJhdGlvbi5pZEVuY3J5cHRlZCwgRWRpdENvbmZpZ3VyYXRpb25Nb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVkaXRcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiIGlkPVwiYnRuUmVzZXRQYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dEZWxldGVDb25maWd1cmF0aW9uTW9kYWwoQ29uZmlndXJhdGlvbi5pZEVuY3J5cHRlZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlbGV0ZVwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI2XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwhLS0gZW5kOjpUYWJsZSAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIGVuZDo6VGFibGUgY29udGFpbmVyIC0tPlxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0gYmVnaW4gcGFnaW5nLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0Q29uZmlndXJhdGlvbkxpc3RSZXN1bHQoJGV2ZW50KVwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJDb25maWd1cmF0aW9uUGFnaW5nXCIgW2dyb3VwXT1cIkNvbmZpZ3VyYXRpb25Gb3JtXCIgI0NvbmZpZ3VyYXRpb25QYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBFbmQgcGFnaW5nLS0+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG5cclxuXHJcblxyXG5cclxuPCEtLSBBZGQgTW9kYWwgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjQWRkQ29uZmlndXJhdGlvbk1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRDb25maWd1cmF0aW9uXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJBZGRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiS2V5XCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkNhdGVnb3J5XCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiU2NvcGVcIiAoT25DaGFuZ2UpPVwiQ2hhbmdlU2NvcGVWYWx1ZSgkZXZlbnQpXCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJQZXJtaXNzaW9uU2V0XCIgKm5nSWY9XCJTaG93UGVybWlzc2lvbkxpc3RcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIlVzZXJcIiAqbmdJZj1cIlNob3dVc2Vyc0xpc3RcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIlR5cGVcIiAoT25DaGFuZ2UpPVwiQ2hhbmdlVHlwZVZhbHVlKCRldmVudClcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiVmFsdWVcIiAqbmdJZj1cIlNob3dWYWx1ZUFuZERlZmF1bHRWYWx1ZVwiIFtncm91cF09XCJBZGRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiRGVmYXVsdFZhbHVlXCIgKm5nSWY9XCJTaG93VmFsdWVBbmREZWZhdWx0VmFsdWVcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJWYWx1ZVRvZ2dlbFwiICpuZ0lmPVwiU2hvd1ZhbHVlVG9nZ2xlQW5kRGVmYXVsdFZhbHVlXCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cIkRlZmF1bHRWYWx1ZVRvZ2dlbFwiICpuZ0lmPVwiU2hvd1ZhbHVlVG9nZ2xlQW5kRGVmYXVsdFZhbHVlXCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJTb3VyY2VcIiAqbmdJZj1cIlNob3dEcm9wRG93blNvdXJjZVwiIChPbkNoYW5nZSk9XCJDaGFuZ2VTb3VyY2UoJGV2ZW50KVwiIFtncm91cF09XCJBZGRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiU2hvd1NvdXJjZUZ1bmN0aW9uUGF0aFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkZ1bmN0aW9uU291cmNlUGF0aFwiIFtncm91cF09XCJBZGRDb25maWd1cmF0aW9uRm9ybVwiIChPbkNoYW5nZSk9XCJjaGFuZ2VTb3VyY2VGdW5jdGlvbigpXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0Z1bmN0aW9uTm90Rm91bmRFcnJvclwiIGNsYXNzPVwidGV4dC1kYW5nZXJcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTb3VyY2VGdW5jdGlvbk5vdEZvdW5kXCIpfX08L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlciBtYi00XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIlNlYXJjaEZvckZ1bmN0aW9uKHRydWUpXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbG9hdC1yaWdodFwiPjxpIGNsYXNzPVwiZmFzIGZhLXNlYXJjaFwiPjwvaT57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZWFyY2hcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJTb3VyY2VGdW5jVmFsdWVcIiAqbmdJZj1cIlNob3dTb3VyY2VGdW5jdGlvbkRhdGFcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWVcIiAqbmdJZj1cIlNob3dTb3VyY2VGdW5jdGlvbkRhdGFcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgKm5nSWY9XCJTaG93TG9va3VwTGlzdFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkxvb2t1cFwiIChPbkNoYW5nZSk9XCJDaGFuZ2VMb29rdXAoJGV2ZW50KVwiIFtncm91cF09XCJBZGRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiTG9va3VwVmFsdWVcIiAqbmdJZj1cIlNob3dMb29rdXBJdGVtc0xpc3RcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkxvb2t1cERlZmF1bHRWYWx1ZVwiICpuZ0lmPVwiU2hvd0xvb2t1cEl0ZW1zTGlzdFwiIFtncm91cF09XCJBZGRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiAjQ2xvc2VDb25maWd1cmF0aW9uTW9kYWwgaWQ9XCJDbG9zZUNvbmZpZ3VyYXRpb25Nb2RhbFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIFtkaXNhYmxlZF09XCJzb3VyY2VGdW5jdGlvbkRhdGFOb3RMb2FkZWRcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tRWRpdCBNb2RhbC0tPlxyXG48bmctdGVtcGxhdGUgI0VkaXRDb25maWd1cmF0aW9uTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVkaXRcIil9fSB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDb25maWd1cmF0aW9uXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiRWRpdEtleVwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0UGVybWlzc2lvblNldFwiICpuZ0lmPVwiU2hvd1Blcm1pc3Npb25MaXN0XCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRVc2VyXCIgKm5nSWY9XCJTaG93VXNlcnNMaXN0XCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRUZXh0VmFsdWVcIiAqbmdJZj1cIlNob3dWYWx1ZUFuZERlZmF1bHRWYWx1ZVwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRUZXh0RGVmYXVsdFZhbHVlXCIgKm5nSWY9XCJTaG93VmFsdWVBbmREZWZhdWx0VmFsdWVcIiBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiRWRpdFZhbHVlVG9nZ2VsZVwiICpuZ0lmPVwiU2hvd1ZhbHVlVG9nZ2xlQW5kRGVmYXVsdFZhbHVlXCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJFZGl0RGVmYXVsdFZhbHVlVG9nZ2VsZVwiICpuZ0lmPVwiU2hvd1ZhbHVlVG9nZ2xlQW5kRGVmYXVsdFZhbHVlXCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiU2hvd1NvdXJjZUZ1bmN0aW9uUGF0aFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJFZGl0RnVuY3Rpb25Tb3VyY2VQYXRoXCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiIChPbkNoYW5nZSk9XCJjaGFuZ2VTb3VyY2VGdW5jdGlvbigpXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RnVuY3Rpb25Ob3RGb3VuZEVycm9yXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNvdXJjZUZ1bmN0aW9uTm90Rm91bmRcIil9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItNFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnlcIiAoY2xpY2spPVwiU2VhcmNoRm9yRnVuY3Rpb24oZmFsc2UpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxvYXQtcmlnaHRcIj48aSBjbGFzcz1cImZhcyBmYS1zZWFyY2hcIj48L2k+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoXCIpfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdFNvdXJjZUZ1bmNWYWx1ZVwiICpuZ0lmPVwiU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YVwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlXCIgKm5nSWY9XCJTaG93U291cmNlRnVuY3Rpb25EYXRhXCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdExvb2t1cFwiICpuZ0lmPVwiU2hvd0xvb2t1cExpc3RcIiAoT25DaGFuZ2UpPVwiQ2hhbmdlRWRpdExvb2t1cCgkZXZlbnQpXCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdExvb2t1cFZhbHVlXCIgKm5nSWY9XCJTaG93TG9va3VwSXRlbXNMaXN0XCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdExvb2t1cERlZmF1bHRWYWx1ZVwiICpuZ0lmPVwiU2hvd0xvb2t1cEl0ZW1zTGlzdFwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUVkaXRDb25maWd1cmF0aW9uTW9kYWwgaWQ9XCJDbG9zZUVkaXRDb25maWd1cmF0aW9uTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gIG1lLTNcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiBbZGlzYWJsZWRdPVwic291cmNlRnVuY3Rpb25EYXRhTm90TG9hZGVkXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS1kZWxldGVkIE1vZGFsLS0+XHJcbjxCQlNGLUNvbmZpcm1hdGlvbk1vZGFsICpuZ0lmPVwiZGVsZXRlQ29udHJvbExvYWRlZFwiIFtvcHRpb25zXT1cIkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnNcIiBpZD1cIkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbFwiICNDb25maXJtYXRpb25Nb2RhbENvbnRyb2w+PC9CQlNGLUNvbmZpcm1hdGlvbk1vZGFsPlxyXG5cclxuIl19
771
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2NvbmZpZ3VyYXRpb25zL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2NvbmZpZ3VyYXRpb25zL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFeE4sT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFFaEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBS3JGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBTXZGLE1BQU0sT0FBTyxzQkFBc0I7SUE2RmpDLFlBQW9CLFdBQXdCLEVBQVUsZUFBZ0MsRUFDN0UsY0FBOEIsRUFBVSxvQkFBMEMsRUFD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TSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb250cm9sTGF5b3V0LCBGaWx0ZXJJdGVtLCBGaWx0ZXJUeXBlLCBJbnB1dFR5cGUsIFBhZ2luZ09wdGlvbnMsIFRleHRCb3hPcHRpb25zLCBEcm9wZG93bk9wdGlvbnMsIFRvZ2dsZVNsaWRlT3B0aW9ucywgRm9ybU9wdGlvbnMsIENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucywgUGFnaW5nQWN0aW9uTW9kZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL0NvbmZpZ3VyYXRpb25zU2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9Db25maWd1cmF0aW9uTW9kZWxzL0NvbmZpZ3VyYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBVdGlsaXR5U2VydmljZSwgQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIEVudmlyb25tZW50U2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgUGFnaW5nQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMvbGliL2NvbnRyb2xzL1BhZ2luZy9QYWdpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzL2xpYi9jb250cm9scy9Db25maXJtYXRpb25Nb2RhbC9Db25maXJtYXRpb25Nb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uVHlwZXMgfSBmcm9tICcuLi8uLi9zaGFyZWQvRW51bXMvQ29uZmlndXJhdGlvblR5cGUnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uU2NvcGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvRW51bXMvQ29uZmlndXJhdGlvblNjb3BlJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvblZhbHVlU291cmNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL0VudW1zL0NvbmZpZ3VyYXRpb25WYWx1ZVNvdXJjZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jb25maWd1cmF0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8vUGFnZSByZXF1aXJlbWVudHNcclxuICBTaG93UGFnZUNvbnRlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBBcGlVcmwgPSBcIi9hcGkvYWRtaW4vQ29uZmlndXJhdGlvbi9cIjtcclxuICBQcm9kdWN0aW9uTW9kZTogYm9vbGVhbjtcclxuXHJcbiAgLy9GaWx0ZXIgYW5kIHBhZ2luZyBjb21wb25lbnRzXHJcbiAgQ29uZmlndXJhdGlvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgQ29uZmlndXJhdGlvblBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBjbGllbnRTaWRlUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIENvbmZpZ3VyYXRpb25QYWdpbmc6IFBhZ2luZ09wdGlvbnM7XHJcbiAgSXNGaWx0ZXJMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdDb25maWd1cmF0aW9uUGFnaW5nVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcGFnaW5nRWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcblxyXG4gIC8vUmVxdWlyZWQgbGlzdHNcclxuICBTY29wZXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIFBlcm1pc3Npb25MaXN0OiBhbnlbXSA9IFtdO1xyXG4gIFVzZXJzTGlzdDogYW55W10gPSBbXTtcclxuICBMb29rdXBzTGlzdDogYW55W10gPSBbXTtcclxuICBMb29rdXBJdGVtc0xpc3Q6IGFueVtdID0gW107XHJcbiAgVmFsdWVUeXBlTGlzdDogYW55W10gPSBbXTtcclxuICBWYWx1ZVNvdXJjZUxpc3Q6IGFueVtdID0gW107XHJcbiAgQ2F0ZWdvcnlMaXN0OiBhbnlbXSA9IFtdO1xyXG5cclxuXHJcbiAgLy9BZGQsRWRpdCByZXF1aXJlZCBmbGFnc1xyXG4gIFNob3dQZXJtaXNzaW9uTGlzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFNob3dVc2Vyc0xpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBTaG93TG9va3VwTGlzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFNob3dWYWx1ZUFuZERlZmF1bHRWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFNob3dWYWx1ZVRvZ2dsZUFuZERlZmF1bHRWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFNob3dTb3VyY2VGdW5jdGlvblBhdGg6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBTaG93RHJvcERvd25Tb3VyY2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBTaG93TG9va3VwSXRlbXNMaXN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dGdW5jdGlvbk5vdEZvdW5kRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzb3VyY2VGdW5jdGlvbkRhdGFOb3RMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy9BZGQgTW9kZWwgQ29udHJvbHNcclxuICBBZGRDb25maWd1cmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEFkZENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9uczogRm9ybU9wdGlvbnNcclxuICBLZXk6IFRleHRCb3hPcHRpb25zO1xyXG4gIFZhbHVlOiBUZXh0Qm94T3B0aW9ucztcclxuICBEZWZhdWx0VmFsdWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIEZ1bmN0aW9uU291cmNlUGF0aDogVGV4dEJveE9wdGlvbnM7XHJcbiAgU291cmNlRnVuY1ZhbHVlOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgU291cmNlRnVuY0RlZmF1bHRWYWx1ZTogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIFZhbHVlVG9nZ2VsOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgRGVmYXVsdFZhbHVlVG9nZ2VsOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgU2NvcGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBUeXBlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgQ2F0ZWdvcnk6IERyb3Bkb3duT3B0aW9ucztcclxuICBQZXJtaXNzaW9uU2V0OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgVXNlcjogRHJvcGRvd25PcHRpb25zO1xyXG4gIFNvdXJjZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIExvb2t1cDogRHJvcGRvd25PcHRpb25zO1xyXG4gIExvb2t1cFZhbHVlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgTG9va3VwRGVmYXVsdFZhbHVlOiBEcm9wZG93bk9wdGlvbnM7XHJcblxyXG4gIC8vRWRpdCBNb2RlbCBDb250cm9sc1xyXG4gIEVkaXRDb25maWd1cmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEVkaXRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnM6IEZvcm1PcHRpb25zXHJcbiAgRWRpdEtleTogVGV4dEJveE9wdGlvbnMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICBFZGl0VGV4dFZhbHVlOiBUZXh0Qm94T3B0aW9ucyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gIEVkaXRUZXh0RGVmYXVsdFZhbHVlOiBUZXh0Qm94T3B0aW9ucyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gIEVkaXRTb3VyY2VQYXRoOiBUZXh0Qm94T3B0aW9ucyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gIEVkaXRGdW5jdGlvblNvdXJjZVBhdGg6IFRleHRCb3hPcHRpb25zID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgRWRpdFZhbHVlVG9nZ2VsZTogVG9nZ2xlU2xpZGVPcHRpb25zID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gIEVkaXREZWZhdWx0VmFsdWVUb2dnZWxlOiBUb2dnbGVTbGlkZU9wdGlvbnMgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgRWRpdFNjb3BlOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgRWRpdFR5cGU6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBFZGl0UGVybWlzc2lvblNldDogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIEVkaXRVc2VyOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgRWRpdFNvdXJjZTogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIEVkaXRMb29rdXA6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBFZGl0TG9va3VwVmFsdWU6IERyb3Bkb3duT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICBFZGl0TG9va3VwRGVmYXVsdFZhbHVlOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgRWRpdFNvdXJjZUZ1bmNWYWx1ZTogRHJvcGRvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gIEVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlOiBEcm9wZG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgQ29uZmlndXJhdGlvbklkOiBudW1iZXI7XHJcbiAgQ29uZmlndXJhdGlvblZhbHVlVHlwZTogbnVtYmVyO1xyXG4gIEVkaXRDb25maWd1cmF0aW9uU2NvcGVJRDogbnVtYmVyO1xyXG4gIEVkaXRDb25maWd1cmF0aW9uVHlwZUlEOiBudW1iZXI7XHJcbiAgRWRpdENvbmZpZ3VyYXRpb25ERExTb3VyY2VJRDogbnVtYmVyO1xyXG5cclxuICAvL2RlbGV0ZSAgTW9kZWwgQ29udHJvbHNcclxuICBkZWxldGVDb25maWd1cmF0aW9uSWQ6IHN0cmluZztcclxuICBEZWxldGVDb25maXJtYXRpb25PcHRpb25zOiBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnM7XHJcbiAgZGVsZXRlQ29udHJvbExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBDb25maXJtYXRpb25Nb2RhbENvbnRyb2w6IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcHJpdmF0ZSBwYWdlSW5mb1NlcnZpY2U6IFBhZ2VJbmZvU2VydmljZSxcclxuICAgIHB1YmxpYyB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgYmJzZlRyYW5zbGF0ZVNlcnZpY2U6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSwgcHJpdmF0ZSBDb25maWd1cmF0aW9uc1NlcnZpY2U6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSByZXF1ZXN0SGFuZGxlclNlcnZpY2U6IFJlcXVlc3RIYW5kbGVyU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLlNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICAvL1BhZ2UgaGVhZGVyIChicmVhZGNydW1iIGFuZCB0aXRsZSlcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGU9dGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ29uZmlndXJhdGlvblwiKVxyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VCcmVhZGNydW1icz1bXHJcbiAgICAgICB7dGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIikgLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZX0sXHJcbiAgICAgICB7dGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZX1cclxuXHJcbiAgICBdO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcblxyXG4gICAgLy9vbiBsYW5nIGNoYW5nZWRcclxuICAgIHRoaXMuYmJzZlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpPT57XHJcbiAgICAgIHRoaXMuU2hvd1BhZ2VDb250ZW50PWZhbHNlO1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5Qcm9kdWN0aW9uTW9kZSA9IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldFByb2R1Y3Rpb25Nb2RlKCk7XHJcblxyXG4gICAgLy9pbml0aWFsaXplIHBhZ2VcclxuICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2UoKTtcclxuICB9XHJcbiAgaW5pdGlhbGl6ZVBhZ2UoKSB7XHJcbiAgICAvLyBUZXh0Qm94IGluaXRcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94Lk5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlR5cGUgPSBJbnB1dFR5cGUuVGV4dFxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lXCIpXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guSGlkZUxhYmVsID0gdHJ1ZVxyXG5cclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwic2VhcmNoVGV4dEJveFwiXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJzZWFyY2hUZXh0XCJcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uUGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMuQ29uZmlndXJhdGlvblBhZ2luZy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5BcGlVcmwgKyAnR2V0Q29uZmlndXJhdGlvbnNCeUZpbHRlcic7XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25QYWdpbmcuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJzZWFyY2hUZXh0Qm94XCJdXHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25QYWdpbmcuRmlsdGVycyA9IFt0aGlzLlRleHRJbnB1dEZpbHRlcl1cclxuICAgIHRoaXMuQ29uZmlndXJhdGlvblBhZ2luZy5WYWxpZGF0aW9uVG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpXHJcbiAgICB0aGlzLklzRmlsdGVyTG9hZGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vUGFnaW5nIGZ1bmN0aW9uc1xyXG4gIHNldENvbmZpZ3VyYXRpb25MaXN0UmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uUGFnaW5nUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgdGhpcy5TaG93UGFnZUNvbnRlbnQgPSB0cnVlO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gIH1cclxuICBzZWFyY2hDbGllbnRTaWRlKHNlYXJjaFZhbHVlKSB7XHJcbiAgICBpZiAoc2VhcmNoVmFsdWUpXHJcbiAgICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdC5maWx0ZXIoXHJcbiAgICAgICAgZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICAgIHJldHVybiBpdGVtLmtleS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgIH0pXHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHRoaXMuQ29uZmlndXJhdGlvblBhZ2luZ1Jlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vQWRkIGNvbmZpZ3VyYXRpb25cclxuICBzaG93QWRkQ29uZmlndXJhdGlvbk1vZGFsKEFkZENvbmZpZ3VyYXRpb25Nb2RhbCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuXHJcbiAgICB0aGlzLlNob3dQZXJtaXNzaW9uTGlzdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5TaG93VXNlcnNMaXN0ID0gZmFsc2U7XHJcbiAgICB0aGlzLlNob3dMb29rdXBMaXN0ID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5yZXNldENvbmZpZ3VyYXRpb25GbGFncygpO1xyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uc1NlcnZpY2UubG9hZEFkZERyb3Bkb3ducygpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIC8vTGlzdHMgbG9hZGluZ1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdGhpcy5TY29wZXNMaXN0ID0gcmVzdWx0T2JqLnNjb3BlcztcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uTGlzdCA9IHJlc3VsdE9iai5wZXJtaXNzaW9uTGlzdDtcclxuICAgICAgdGhpcy5Vc2Vyc0xpc3QgPSByZXN1bHRPYmoudXNlcnM7XHJcbiAgICAgIHRoaXMuTG9va3Vwc0xpc3QgPSByZXN1bHRPYmoubG9va3VwcztcclxuICAgICAgdGhpcy5WYWx1ZVR5cGVMaXN0ID0gcmVzdWx0T2JqLnZhbHVlVHlwZTtcclxuICAgICAgdGhpcy5WYWx1ZVNvdXJjZUxpc3QgPSByZXN1bHRPYmoudmFsdWVTb3VyY2U7XHJcbiAgICAgIHRoaXMuQ2F0ZWdvcnlMaXN0ID0gcmVzdWx0T2JqLmNhdGVnb3J5O1xyXG5cclxuXHJcbiAgICAgIC8vRm9ybSBhbmQgY29udHJvbHMgcmVpbml0aWFsaXplXHJcbiAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuXHJcbiAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm1cclxuICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkQ29uZmlndXJhdGlvbk1vZGVsO1xyXG4gICAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEFkZENvbmZpZ3VyYXRpb25GdW5jdGlvbjtcclxuICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50XHJcblxyXG4gICAgICAvL1N0YXRpYyBjb250cm9sc1xyXG4gICAgICB0aGlzLktleSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLktleS5OYW1lID0gXCJLZXlcIjtcclxuICAgICAgdGhpcy5LZXkuTGFiZWxLZXkgPSBcIktleVwiO1xyXG4gICAgICB0aGlzLktleS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuS2V5LklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLktleS5WYWx1ZSA9IG51bGw7XHJcblxyXG4gICAgICB0aGlzLlNjb3BlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlNjb3BlLk5hbWUgPSBcIlNjb3BlXCI7XHJcbiAgICAgIHRoaXMuU2NvcGUuTGFiZWxLZXkgPSBcIlNjb3BlXCI7XHJcbiAgICAgIHRoaXMuU2NvcGUuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuU2NvcGUuRGF0YVNvdXJjZSA9IHRoaXMuU2NvcGVzTGlzdDtcclxuICAgICAgdGhpcy5TY29wZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLlNjb3BlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5TY29wZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuVHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5UeXBlLk5hbWUgPSBcIlR5cGVcIjtcclxuICAgICAgdGhpcy5UeXBlLkxhYmVsS2V5ID0gXCJUeXBlXCI7XHJcbiAgICAgIHRoaXMuVHlwZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgdGhpcy5UeXBlLkRhdGFTb3VyY2UgPSB0aGlzLlZhbHVlVHlwZUxpc3Q7XHJcbiAgICAgIHRoaXMuVHlwZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLlR5cGUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLlR5cGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkNhdGVnb3J5ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkNhdGVnb3J5Lk5hbWUgPSBcIkNhdGVnb3J5XCI7XHJcbiAgICAgIHRoaXMuQ2F0ZWdvcnkuTGFiZWxLZXkgPSBcIkNhdGVnb3J5XCI7XHJcbiAgICAgIHRoaXMuQ2F0ZWdvcnkuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuQ2F0ZWdvcnkuRGF0YVNvdXJjZSA9IHRoaXMuQ2F0ZWdvcnlMaXN0O1xyXG4gICAgICB0aGlzLkNhdGVnb3J5LlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuQ2F0ZWdvcnkuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkNhdGVnb3J5LklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXQuTmFtZSA9IFwiUGVybWlzc2lvblNldFwiO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXQuTGFiZWxLZXkgPSBcIlBlcm1pc3Npb25TZXRcIjtcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uU2V0LlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXQuRGF0YVNvdXJjZSA9IHRoaXMuUGVybWlzc2lvbkxpc3Q7XHJcbiAgICAgIHRoaXMuUGVybWlzc2lvblNldC5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXQuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLlBlcm1pc3Npb25TZXQuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLlVzZXIgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuVXNlci5OYW1lID0gXCJVc2VyXCI7XHJcbiAgICAgIHRoaXMuVXNlci5MYWJlbEtleSA9IFwiVXNlclwiO1xyXG4gICAgICB0aGlzLlVzZXIuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuVXNlci5EYXRhU291cmNlID0gdGhpcy5Vc2Vyc0xpc3Q7XHJcbiAgICAgIHRoaXMuVXNlci5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLlVzZXIuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLlVzZXIuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEFkZENvbmZpZ3VyYXRpb25Nb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIENoYW5nZVR5cGVWYWx1ZShrZXkpIHtcclxuICAgIHRoaXMucmVzZXRDb25maWd1cmF0aW9uRmxhZ3MoKTtcclxuICAgIHRoaXMucmVtb3ZlRm9ybUNvbnRyb2xzKCk7XHJcbiAgICBzd2l0Y2ggKE51bWJlcihrZXkpKSB7XHJcbiAgICAgIGNhc2UgQ29uZmlndXJhdGlvblR5cGVzLlRleHQ6XHJcbiAgICAgICAgdGhpcy5WYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuVmFsdWUuTmFtZSA9IFwiVmFsdWVcIjtcclxuICAgICAgICB0aGlzLlZhbHVlLkxhYmVsS2V5ID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgIHRoaXMuVmFsdWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIHRoaXMuVmFsdWUuVmFsdWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuVmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWUuTmFtZSA9IFwiRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWUuTGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICB0aGlzLkRlZmF1bHRWYWx1ZS5WYWx1ZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuU2hvd1ZhbHVlQW5kRGVmYXVsdFZhbHVlID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25maWd1cmF0aW9uVHlwZXMuVG9nZ2xlOlxyXG4gICAgICAgIHRoaXMuVmFsdWVUb2dnZWwgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5WYWx1ZVRvZ2dlbC5OYW1lID0gXCJWYWx1ZVRvZ2dlbFwiO1xyXG4gICAgICAgIHRoaXMuVmFsdWVUb2dnZWwuTGFiZWxLZXkgPSBcIlZhbHVlXCI7XHJcbiAgICAgICAgdGhpcy5WYWx1ZVRvZ2dlbC5WYWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuVmFsdWVUb2dnZWwuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcblxyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlVG9nZ2VsID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlVG9nZ2VsLk5hbWUgPSBcIkRlZmF1bHRWYWx1ZVRvZ2dlbFwiO1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlVG9nZ2VsLkxhYmVsS2V5ID0gXCJEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICB0aGlzLkRlZmF1bHRWYWx1ZVRvZ2dlbC5WYWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlVG9nZ2VsLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG5cclxuICAgICAgICB0aGlzLlNob3dWYWx1ZVRvZ2dsZUFuZERlZmF1bHRWYWx1ZSA9IHRydWU7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbmZpZ3VyYXRpb25UeXBlcy5EREw6XHJcbiAgICAgICAgdGhpcy5Tb3VyY2UgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5Tb3VyY2UuTmFtZSA9IFwiU291cmNlXCI7XHJcbiAgICAgICAgdGhpcy5Tb3VyY2UuTGFiZWxLZXkgPSBcIlNvdXJjZVwiO1xyXG4gICAgICAgIHRoaXMuU291cmNlLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuU291cmNlLkRhdGFTb3VyY2UgPSB0aGlzLlZhbHVlU291cmNlTGlzdDtcclxuICAgICAgICB0aGlzLlNvdXJjZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU291cmNlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNvdXJjZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5TaG93RHJvcERvd25Tb3VyY2UgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQ2hhbmdlU291cmNlKGtleSkge1xyXG4gICAgc3dpdGNoIChOdW1iZXIoa2V5KSkge1xyXG4gICAgICBjYXNlIENvbmZpZ3VyYXRpb25WYWx1ZVNvdXJjZS5Mb29rdXA6XHJcbiAgICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiRnVuY3Rpb25Tb3VyY2VQYXRoXCIpO1xyXG4gICAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlNvdXJjZUZ1bmNWYWx1ZVwiKTtcclxuICAgICAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJTb3VyY2VGdW5jRGVmYXVsdFZhbHVlXCIpO1xyXG4gICAgICAgIHRoaXMuTG9va3VwID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuTG9va3VwLk5hbWUgPSBcIkxvb2t1cFwiO1xyXG4gICAgICAgIHRoaXMuTG9va3VwLkxhYmVsS2V5ID0gXCJMb29rdXBcIjtcclxuICAgICAgICB0aGlzLkxvb2t1cC5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICB0aGlzLkxvb2t1cC5EYXRhU291cmNlID0gdGhpcy5Mb29rdXBzTGlzdDtcclxuICAgICAgICB0aGlzLkxvb2t1cC5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuTG9va3VwLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLkxvb2t1cC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5TaG93TG9va3VwTGlzdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25QYXRoID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zb3VyY2VGdW5jdGlvbkRhdGFOb3RMb2FkZWQgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25maWd1cmF0aW9uVmFsdWVTb3VyY2UuRnVuY3Rpb246XHJcbiAgICAgICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiTG9va3VwXCIpO1xyXG4gICAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkxvb2t1cFZhbHVlXCIpO1xyXG4gICAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkxvb2t1cERlZmF1bHRWYWx1ZVwiKTtcclxuICAgICAgICB0aGlzLkZ1bmN0aW9uU291cmNlUGF0aCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuRnVuY3Rpb25Tb3VyY2VQYXRoLk5hbWUgPSBcIkZ1bmN0aW9uU291cmNlUGF0aFwiO1xyXG4gICAgICAgIHRoaXMuRnVuY3Rpb25Tb3VyY2VQYXRoLkxhYmVsVmFsdWUgPSBcIlNvdXJjZVBhdGhcIjtcclxuICAgICAgICB0aGlzLkZ1bmN0aW9uU291cmNlUGF0aC5MYWJlbEtleSA9IFwiU291cmNlUGF0aFwiO1xyXG4gICAgICAgIHRoaXMuRnVuY3Rpb25Tb3VyY2VQYXRoLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICB0aGlzLkZ1bmN0aW9uU291cmNlUGF0aC5WYWx1ZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5GdW5jdGlvblNvdXJjZVBhdGguSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuU2hvd1NvdXJjZUZ1bmN0aW9uUGF0aCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zb3VyY2VGdW5jdGlvbkRhdGFOb3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuU2hvd0xvb2t1cExpc3QgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlNob3dMb29rdXBJdGVtc0xpc3QgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUZvcm1Db250cm9scygpIHtcclxuICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlZhbHVlXCIpO1xyXG4gICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiRGVmYXVsdFZhbHVlXCIpO1xyXG4gICAgdGhpcy5BZGRDb25maWd1cmF0aW9uRm9ybS5yZW1vdmVDb250cm9sKFwiVmFsdWVUb2dnZWxcIik7XHJcbiAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJEZWZhdWx0VmFsdWVUb2dnZWxcIik7XHJcbiAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJTb3VyY2VcIik7XHJcbiAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJMb29rdXBcIik7XHJcbiAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJMb29rdXBWYWx1ZVwiKTtcclxuICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkxvb2t1cERlZmF1bHRWYWx1ZVwiKTtcclxuICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIkZ1bmN0aW9uU291cmNlUGF0aFwiKTtcclxuICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlNvdXJjZUZ1bmNWYWx1ZVwiKTtcclxuICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWVcIik7XHJcbiAgfVxyXG5cclxuICBDaGFuZ2VMb29rdXAoa2V5LCBpc0FkZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5Db25maWd1cmF0aW9uc1NlcnZpY2UubG9hZExvb2t1cEl0ZW1zKGtleSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IFJlc3VsdCA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIHRoaXMuTG9va3VwSXRlbXNMaXN0ID0gUmVzdWx0Lmxvb2t1cEl0ZW1zO1xyXG4gICAgICBpZiAodGhpcy5TaG93TG9va3VwSXRlbXNMaXN0KSB7XHJcbiAgICAgICAgaWYgKGlzQWRkKSB7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cFZhbHVlLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBEZWZhdWx0VmFsdWUuU2VsZWN0ZWRJdGVtcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cFZhbHVlLkRhdGFTb3VyY2UgPSB0aGlzLkxvb2t1cEl0ZW1zTGlzdDtcclxuICAgICAgICAgIHRoaXMuTG9va3VwRGVmYXVsdFZhbHVlLkRhdGFTb3VyY2UgPSB0aGlzLkxvb2t1cEl0ZW1zTGlzdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLkRhdGFTb3VyY2UgPSB0aGlzLkxvb2t1cEl0ZW1zTGlzdDtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5EYXRhU291cmNlID0gdGhpcy5Mb29rdXBJdGVtc0xpc3Q7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChpc0FkZCkge1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuTG9va3VwVmFsdWUuTmFtZSA9IFwiTG9va3VwVmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuTG9va3VwVmFsdWUuTGFiZWxLZXkgPSBcIlZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cFZhbHVlLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBWYWx1ZS5EYXRhU291cmNlID0gdGhpcy5Mb29rdXBJdGVtc0xpc3Q7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cFZhbHVlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cFZhbHVlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuTG9va3VwVmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cFZhbHVlLlNob3dBc3RlcmlzayA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5Mb29rdXBEZWZhdWx0VmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkxvb2t1cERlZmF1bHRWYWx1ZS5OYW1lID0gXCJMb29rdXBEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuTG9va3VwRGVmYXVsdFZhbHVlLkxhYmVsS2V5ID0gXCJEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuTG9va3VwRGVmYXVsdFZhbHVlLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBEZWZhdWx0VmFsdWUuRGF0YVNvdXJjZSA9IHRoaXMuTG9va3VwSXRlbXNMaXN0O1xyXG4gICAgICAgICAgdGhpcy5Mb29rdXBEZWZhdWx0VmFsdWUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuTG9va3VwRGVmYXVsdFZhbHVlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuTG9va3VwRGVmYXVsdFZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuU2hvd0xvb2t1cEl0ZW1zTGlzdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuTmFtZSA9IFwiRWRpdExvb2t1cFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBWYWx1ZS5MYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuRGF0YVNvdXJjZSA9IHRoaXMuTG9va3VwSXRlbXNMaXN0O1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5OYW1lID0gXCJFZGl0TG9va3VwRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuTGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLkRhdGFTb3VyY2UgPSB0aGlzLkxvb2t1cEl0ZW1zTGlzdDtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5TaG93TG9va3VwSXRlbXNMaXN0ID0gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWRkQ29uZmlndXJhdGlvbk1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnZhbHVlO1xyXG4gICAgbGV0IEFkZE1vZGVsOiBDb25maWd1cmF0aW9uTW9kZWwgPSBuZXcgQ29uZmlndXJhdGlvbk1vZGVsKCk7XHJcbiAgICBBZGRNb2RlbC5LZXkgPSBSZXN1bHRNb2RlbC5LZXk7XHJcbiAgICBBZGRNb2RlbC5TY29wZUlkID0gTnVtYmVyKFJlc3VsdE1vZGVsLlNjb3BlKTtcclxuICAgIEFkZE1vZGVsLlZhbHVlVHlwZSA9IE51bWJlcihSZXN1bHRNb2RlbC5UeXBlKTtcclxuICAgIEFkZE1vZGVsLkNhdGVnb3J5SWQ9IE51bWJlcihSZXN1bHRNb2RlbC5DYXRlZ29yeSk7XHJcbiAgICBBZGRNb2RlbC5UZXh0VmFsdWUgPSBSZXN1bHRNb2RlbC5WYWx1ZTtcclxuICAgIEFkZE1vZGVsLkRlZmF1bHRUZXh0VmFsdWUgPSBSZXN1bHRNb2RlbC5EZWZhdWx0VmFsdWU7XHJcbiAgICBBZGRNb2RlbC5Cb29sVmFsdWUgPSBSZXN1bHRNb2RlbC5WYWx1ZVRvZ2dlbDtcclxuICAgIEFkZE1vZGVsLkRlZmF1bHRCb29sVmFsdWUgPSBSZXN1bHRNb2RlbC5EZWZhdWx0VmFsdWVUb2dnZWw7XHJcbiAgICBBZGRNb2RlbC5Tb3VyY2VGdW5jdGlvbk5hbWUgPSBSZXN1bHRNb2RlbC5GdW5jdGlvblNvdXJjZVBhdGg7XHJcbiAgICBBZGRNb2RlbC5Vc2VySUQgPSBOdW1iZXIoUmVzdWx0TW9kZWwuVXNlcik7XHJcbiAgICBBZGRNb2RlbC5TZWxlY3RlZExvb2t1cElEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkxvb2t1cCk7XHJcbiAgICBBZGRNb2RlbC5WYWx1ZSA9IFJlc3VsdE1vZGVsLkxvb2t1cFZhbHVlO1xyXG4gICAgQWRkTW9kZWwuRGVmYXVsdFZhbHVlID0gUmVzdWx0TW9kZWwuTG9va3VwRGVmYXVsdFZhbHVlO1xyXG5cclxuICAgIEFkZE1vZGVsLlBlcm1pc3Npb25TZXRJRCA9IE51bWJlcihSZXN1bHRNb2RlbC5QZXJtaXNzaW9uU2V0KTtcclxuICAgIEFkZE1vZGVsLlZhbHVlU291cmNlID0gTnVtYmVyKFJlc3VsdE1vZGVsLlNvdXJjZSk7XHJcblxyXG4gICAgbGV0IHNvdXJjZUl0ZW0gPSB0aGlzLlZhbHVlU291cmNlTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIHBhcnNlSW50KGl0ZW0ua2V5KSA9PSBBZGRNb2RlbC5WYWx1ZVNvdXJjZTsgfSkubWFwKChpdGVtKSA9PiBpdGVtKVswXTtcclxuICAgIGlmIChzb3VyY2VJdGVtICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBsZXQgQ29uZmlndXJhdGlvbkRETFNvdXJjZU5hbWUgPSBzb3VyY2VJdGVtLnZhbHVlO1xyXG4gICAgICBpZiAoQ29uZmlndXJhdGlvbkRETFNvdXJjZU5hbWUgPT0gXCJGdW5jdGlvblwiKSB7XHJcbiAgICAgICAgQWRkTW9kZWwuVmFsdWUgPSBSZXN1bHRNb2RlbC5Tb3VyY2VGdW5jVmFsdWU7XHJcbiAgICAgICAgQWRkTW9kZWwuRGVmYXVsdFZhbHVlID0gUmVzdWx0TW9kZWwuU291cmNlRnVuY0RlZmF1bHRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHBhcmFtQXJyYXkucHVzaChBZGRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldEFkZENvbmZpZ3VyYXRpb25GdW5jdGlvbiA9IChBZGRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5Db25maWd1cmF0aW9uc1NlcnZpY2UuYWRkQ29uZmlndXJhdGlvbihBZGRNb2RlbClcclxuICB9XHJcblxyXG4gIC8vRWRpdCBjb25maWd1cmF0aW9uXHJcbiAgc2hvd0VkaXRDb25maWd1cmF0aW9uTW9kYWwoY29uZmlndXJhdGlvbklkOiBudW1iZXIsIGNvbmZpZ3VyYXRpb25JREVuYzogc3RyaW5nLCBFZGl0Q29uZmlndXJhdGlvbk1vZGFsKSB7XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25JZCA9IGNvbmZpZ3VyYXRpb25JZDtcclxuICAgIHRoaXMucmVzZXRDb25maWd1cmF0aW9uRmxhZ3MoKTtcclxuICAgIHRoaXMuQ29uZmlndXJhdGlvbnNTZXJ2aWNlLmdldEVkaXRDb25maWd1cmF0aW9uRGF0YShjb25maWd1cmF0aW9uSURFbmMpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgbGV0IHJlc3VsdE9iaiA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIC8vRWRpdCBtb2RlbFxyXG4gICAgICBsZXQgY29uZmlndXJhdGlvbiA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgLy9Mb2FkIGxvb2t1cHMgbGlzdFxyXG4gICAgICB0aGlzLkxvb2t1cHNMaXN0ID0gcmVzdWx0T2JqLmxvb2t1cHM7XHJcbiAgICAgIC8vTG9hZCBsb29rdXBJdGVtcyBsaXN0XHJcbiAgICAgIGxldCBsb29rdXBJdGVtcyA9IHJlc3VsdE9iai5sb29rdXBJdGVtc1NvdXJjZTtcclxuICAgICAgLy9Mb2FkIHBlcm1pc3Npb25zZXRzIGxpc3RcclxuICAgICAgdGhpcy5QZXJtaXNzaW9uTGlzdCA9IHJlc3VsdE9iai5wZXJtaXNzaW9uU2V0TGlzdDtcclxuICAgICAgLy9Mb2FkIHVzZXJzIGxpc3RcclxuICAgICAgdGhpcy5Vc2Vyc0xpc3QgPSByZXN1bHRPYmoudXNlcnM7XHJcbiAgICAgIC8vRm9ybSBhbmQgY29udHJvbHMgcmVpbml0aWFsaXplXHJcbiAgICAgIHRoaXMuRWRpdENvbmZpZ3VyYXRpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgICAgdGhpcy5FZGl0Q29uZmlndXJhdGlvbkZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdENvbmZpZ3VyYXRpb25Gb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybVxyXG4gICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdENvbmZpZ3VyYXRpb25Nb2RlbDtcclxuICAgICAgdGhpcy5FZGl0Q29uZmlndXJhdGlvbkZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdENvbmZpZ3VyYXRpb25GdW5jdGlvbjtcclxuICAgICAgdGhpcy5FZGl0Q29uZmlndXJhdGlvbkZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudFxyXG4gICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnMuUGFnaW5nQWN0aW9uTW9kZSA9IFBhZ2luZ0FjdGlvbk1vZGUuVXBkYXRlXHJcblxyXG4gICAgICB0aGlzLkNvbmZpZ3VyYXRpb25WYWx1ZVR5cGUgPSBjb25maWd1cmF0aW9uLnZhbHVlVHlwZTtcclxuICAgICAgdGhpcy5FZGl0Q29uZmlndXJhdGlvblNjb3BlSUQgPSBjb25maWd1cmF0aW9uLnNjb3BlSWQ7XHJcbiAgICAgIHRoaXMuRWRpdEtleSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRLZXkuTmFtZSA9IFwiRWRpdEtleVwiO1xyXG4gICAgICB0aGlzLkVkaXRLZXkuTGFiZWxLZXkgPSBcIktleVwiO1xyXG4gICAgICB0aGlzLkVkaXRLZXkuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkVkaXRLZXkuSXNSZXF1aXJlZCA9ICF0aGlzLlByb2R1Y3Rpb25Nb2RlO1xyXG4gICAgICB0aGlzLkVkaXRLZXkuVmFsdWUgPSBjb25maWd1cmF0aW9uLmtleTtcclxuICAgICAgdGhpcy5FZGl0S2V5Lk1heExlbmd0aCA9IDI1NjtcclxuICAgICAgdGhpcy5FZGl0S2V5LklzRGlzYWJsZWQgPSB0aGlzLlByb2R1Y3Rpb25Nb2RlO1xyXG5cclxuICAgICAgdGhpcy5FZGl0Q29uZmlndXJhdGlvblR5cGVJRCA9IGNvbmZpZ3VyYXRpb24udmFsdWVUeXBlO1xyXG4gICAgICBzd2l0Y2ggKHRoaXMuRWRpdENvbmZpZ3VyYXRpb25UeXBlSUQpIHtcclxuICAgICAgICBjYXNlIENvbmZpZ3VyYXRpb25UeXBlcy5UZXh0OlxyXG4gICAgICAgICAgdGhpcy5TaG93VmFsdWVBbmREZWZhdWx0VmFsdWUgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dFZhbHVlID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0VmFsdWUuTmFtZSA9IFwiRWRpdFRleHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dFZhbHVlLkxhYmVsS2V5ID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dFZhbHVlLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHRWYWx1ZS5WYWx1ZSA9IGNvbmZpZ3VyYXRpb24udGV4dFZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dFZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuXHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0RGVmYXVsdFZhbHVlID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0RGVmYXVsdFZhbHVlLk5hbWUgPSBcIkVkaXRUZXh0RGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRUZXh0RGVmYXVsdFZhbHVlLkxhYmVsS2V5ID0gXCJEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHREZWZhdWx0VmFsdWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgdGhpcy5FZGl0VGV4dERlZmF1bHRWYWx1ZS5WYWx1ZSA9IGNvbmZpZ3VyYXRpb24uZGVmYXVsdFRleHRWYWx1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFRleHREZWZhdWx0VmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbmZpZ3VyYXRpb25UeXBlcy5Ub2dnbGU6XHJcbiAgICAgICAgICB0aGlzLlNob3dWYWx1ZVRvZ2dsZUFuZERlZmF1bHRWYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRWYWx1ZVRvZ2dlbGUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkVkaXRWYWx1ZVRvZ2dlbGUuTmFtZSA9IFwiRWRpdFZhbHVlVG9nZ2VsZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VmFsdWVUb2dnZWxlLkxhYmVsS2V5ID0gXCJWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VmFsdWVUb2dnZWxlLlZhbHVlID0gY29uZmlndXJhdGlvbi5ib29sVmFsdWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRWYWx1ZVRvZ2dlbGUuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcblxyXG4gICAgICAgICAgdGhpcy5FZGl0RGVmYXVsdFZhbHVlVG9nZ2VsZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGUuTmFtZSA9IFwiRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGUuTGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0RGVmYXVsdFZhbHVlVG9nZ2VsZS5WYWx1ZSA9IGNvbmZpZ3VyYXRpb24uZGVmYXVsdEJvb2xWYWx1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGUuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbmZpZ3VyYXRpb25UeXBlcy5EREw6XHJcbiAgICAgICAgICB0aGlzLkVkaXRDb25maWd1cmF0aW9uRERMU291cmNlSUQgPSBjb25maWd1cmF0aW9uLnZhbHVlU291cmNlO1xyXG4gICAgICAgICAgc3dpdGNoICh0aGlzLkVkaXRDb25maWd1cmF0aW9uRERMU291cmNlSUQpIHtcclxuICAgICAgICAgICAgY2FzZSBDb25maWd1cmF0aW9uVmFsdWVTb3VyY2UuTG9va3VwOlxyXG4gICAgICAgICAgICAgIHRoaXMuU2hvd0xvb2t1cExpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuU2hvd0xvb2t1cEl0ZW1zTGlzdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkTG9va3VwID0gdGhpcy5Mb29rdXBzTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IGNvbmZpZ3VyYXRpb24uc2VsZWN0ZWRMb29rdXBJRDsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXAuTmFtZSA9IFwiRWRpdExvb2t1cFwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cC5MYWJlbEtleSA9IFwiTG9va3VwXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cC5EYXRhU291cmNlID0gdGhpcy5Mb29rdXBzTGlzdDtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXAuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXAuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXAuU2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkTG9va3VwO1xyXG5cclxuICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRMb29rdXBWYWx1ZSA9IGxvb2t1cEl0ZW1zLmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gaXRlbS5rZXkgPT0gY29uZmlndXJhdGlvbi52YWx1ZTsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuTmFtZSA9IFwiRWRpdExvb2t1cFZhbHVlXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuTGFiZWxLZXkgPSBcIlZhbHVlXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuRGF0YVNvdXJjZSA9IGxvb2t1cEl0ZW1zO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwVmFsdWUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cFZhbHVlLlNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZExvb2t1cFZhbHVlO1xyXG5cclxuICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRMb29rdXBEZWZhdWx0VmFsdWUgPSBsb29rdXBJdGVtcy5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IGNvbmZpZ3VyYXRpb24uZGVmYXVsdFZhbHVlOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLk5hbWUgPSBcIkVkaXRMb29rdXBEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuTGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdExvb2t1cERlZmF1bHRWYWx1ZS5EYXRhU291cmNlID0gbG9va3VwSXRlbXM7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRMb29rdXBEZWZhdWx0VmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0TG9va3VwRGVmYXVsdFZhbHVlLlNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZExvb2t1cERlZmF1bHRWYWx1ZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBDb25maWd1cmF0aW9uVmFsdWVTb3VyY2UuRnVuY3Rpb246XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0RnVuY3Rpb25Tb3VyY2VQYXRoID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5FZGl0RnVuY3Rpb25Tb3VyY2VQYXRoLk5hbWUgPSBcIkVkaXRGdW5jdGlvblNvdXJjZVBhdGhcIjtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRGdW5jdGlvblNvdXJjZVBhdGguTGFiZWxLZXkgPSBcIlNvdXJjZVBhdGhcIjtcclxuICAgICAgICAgICAgICB0aGlzLkVkaXRGdW5jdGlvblNvdXJjZVBhdGguVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdEZ1bmN0aW9uU291cmNlUGF0aC5WYWx1ZSA9IGNvbmZpZ3VyYXRpb24uc291cmNlRnVuY3Rpb25OYW1lO1xyXG4gICAgICAgICAgICAgIHRoaXMuRWRpdEZ1bmN0aW9uU291cmNlUGF0aC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuQ29uZmlndXJhdGlvbnNTZXJ2aWNlLmxvYWRTb3VyY2VGdW5jdGlvbkRyb3BEb3duSXRlbXMoY29uZmlndXJhdGlvbi5zb3VyY2VGdW5jdGlvbk5hbWUpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZFNvdXJjZUZ1bmNWYWx1ZSA9IHJlc3VsdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IGNvbmZpZ3VyYXRpb24udmFsdWU7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLk5hbWUgPSBcIkVkaXRTb3VyY2VGdW5jVmFsdWVcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5MYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5EYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLlNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZFNvdXJjZUZ1bmNWYWx1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlID0gcmVzdWx0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gaXRlbS5rZXkgPT0gY29uZmlndXJhdGlvbi5kZWZhdWx0VmFsdWU7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuTmFtZSA9IFwiRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuTGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5EYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5TZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25QYXRoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YSA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuRWRpdENvbmZpZ3VyYXRpb25TY29wZUlEID0gY29uZmlndXJhdGlvbi5zY29wZUlkO1xyXG5cclxuICAgICAgLy9yZXNldCBzY29wZVxyXG4gICAgICB0aGlzLlNob3dQZXJtaXNzaW9uTGlzdCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLlNob3dVc2Vyc0xpc3QgPSBmYWxzZTtcclxuICAgICAgLy9jb25zb2xlLmxvZyhzY29wSXRlbSk7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5FZGl0Q29uZmlndXJhdGlvblNjb3BlSUQpIHtcclxuICAgICAgICBjYXNlIENvbmZpZ3VyYXRpb25TY29wZS5QZXJtaXNzaW9uU2V0OlxyXG4gICAgICAgICAgdGhpcy5TaG93UGVybWlzc2lvbkxpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgbGV0IHNlbGVjdGVkUGVybWlzc2lvblNldCA9IHRoaXMuUGVybWlzc2lvbkxpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleSA9PSBjb25maWd1cmF0aW9uLnBlcm1pc3Npb25TZXRJRDsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07XHJcbiAgICAgICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldC5OYW1lID0gXCJFZGl0UGVybWlzc2lvblNldFwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldC5MYWJlbEtleSA9IFwiUGVybWlzc2lvblNldFwiO1xyXG4gICAgICAgICAgdGhpcy5FZGl0UGVybWlzc2lvblNldC5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXQuRGF0YVNvdXJjZSA9IHRoaXMuUGVybWlzc2lvbkxpc3Q7XHJcbiAgICAgICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0LlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFBlcm1pc3Npb25TZXQuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRQZXJtaXNzaW9uU2V0LlNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZFBlcm1pc3Npb25TZXQ7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbmZpZ3VyYXRpb25TY29wZS5Vc2VyOlxyXG4gICAgICAgICAgdGhpcy5TaG93VXNlcnNMaXN0ID0gdHJ1ZTtcclxuICAgICAgICAgIGxldCBzZWxlY3RlZFVzZXIgPSB0aGlzLlVzZXJzTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IGNvbmZpZ3VyYXRpb24udXNlcklEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgICAgIHRoaXMuRWRpdFVzZXIgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkVkaXRVc2VyLk5hbWUgPSBcIkVkaXRVc2VyXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRVc2VyLkxhYmVsS2V5ID0gXCJVc2VyXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRVc2VyLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5FZGl0VXNlci5EYXRhU291cmNlID0gdGhpcy5Vc2Vyc0xpc3Q7XHJcbiAgICAgICAgICB0aGlzLkVkaXRVc2VyLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRVc2VyLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFVzZXIuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRVc2VyLlNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZFVzZXI7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihFZGl0Q29uZmlndXJhdGlvbk1vZGFsKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXRFZGl0Q29uZmlndXJhdGlvbk1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybS52YWx1ZTtcclxuICAgIGNvbnNvbGUubG9nKFJlc3VsdE1vZGVsKTtcclxuICAgIGxldCBFZGl0TW9kZWw6IENvbmZpZ3VyYXRpb25Nb2RlbCA9IG5ldyBDb25maWd1cmF0aW9uTW9kZWwoKTtcclxuICAgIEVkaXRNb2RlbC5JRCA9IHRoaXMuQ29uZmlndXJhdGlvbklkO1xyXG4gICAgRWRpdE1vZGVsLlZhbHVlVHlwZSA9IHRoaXMuQ29uZmlndXJhdGlvblZhbHVlVHlwZTtcclxuICAgIEVkaXRNb2RlbC5TY29wZUlkID0gdGhpcy5FZGl0Q29uZmlndXJhdGlvblNjb3BlSUQ7XHJcbiAgICBFZGl0TW9kZWwuS2V5ID0gUmVzdWx0TW9kZWwuRWRpdEtleTtcclxuICAgIFxyXG4gICAgc3dpdGNoICh0aGlzLkVkaXRDb25maWd1cmF0aW9uVHlwZUlEKSB7XHJcbiAgICAgIGNhc2UgQ29uZmlndXJhdGlvblR5cGVzLlRleHQ6XHJcbiAgICAgICAgRWRpdE1vZGVsLlRleHRWYWx1ZSA9IFJlc3VsdE1vZGVsLkVkaXRUZXh0VmFsdWU7XHJcbiAgICAgICAgRWRpdE1vZGVsLkRlZmF1bHRUZXh0VmFsdWUgPSBSZXN1bHRNb2RlbC5FZGl0VGV4dERlZmF1bHRWYWx1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25maWd1cmF0aW9uVHlwZXMuVG9nZ2xlOlxyXG4gICAgICAgIEVkaXRNb2RlbC5Cb29sVmFsdWUgPSBSZXN1bHRNb2RlbC5FZGl0VmFsdWVUb2dnZWxlO1xyXG4gICAgICAgIEVkaXRNb2RlbC5EZWZhdWx0Qm9vbFZhbHVlID0gUmVzdWx0TW9kZWwuRWRpdERlZmF1bHRWYWx1ZVRvZ2dlbGU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uZmlndXJhdGlvblR5cGVzLkRETDpcclxuICAgICAgICBpZiAodGhpcy5FZGl0Q29uZmlndXJhdGlvbkRETFNvdXJjZUlEID09IENvbmZpZ3VyYXRpb25WYWx1ZVNvdXJjZS5Mb29rdXApIHtcclxuICAgICAgICAgIEVkaXRNb2RlbC5TZWxlY3RlZExvb2t1cElEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkVkaXRMb29rdXApO1xyXG4gICAgICAgICAgRWRpdE1vZGVsLlZhbHVlID0gUmVzdWx0TW9kZWwuRWRpdExvb2t1cFZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICAgIEVkaXRNb2RlbC5EZWZhdWx0VmFsdWUgPSBSZXN1bHRNb2RlbC5FZGl0TG9va3VwRGVmYXVsdFZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5FZGl0Q29uZmlndXJhdGlvbkRETFNvdXJjZUlEID09IENvbmZpZ3VyYXRpb25WYWx1ZVNvdXJjZS5GdW5jdGlvbikge1xyXG4gICAgICAgICAgRWRpdE1vZGVsLlNvdXJjZUZ1bmN0aW9uTmFtZSA9IFJlc3VsdE1vZGVsLkVkaXRGdW5jdGlvblNvdXJjZVBhdGg7XHJcbiAgICAgICAgICBFZGl0TW9kZWwuVmFsdWUgPSBSZXN1bHRNb2RlbC5FZGl0U291cmNlRnVuY1ZhbHVlO1xyXG4gICAgICAgICAgRWRpdE1vZGVsLkRlZmF1bHRWYWx1ZSA9IFJlc3VsdE1vZGVsLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5FZGl0Q29uZmlndXJhdGlvblNjb3BlSUQgPT0gQ29uZmlndXJhdGlvblNjb3BlLlVzZXIpIHtcclxuICAgICAgY29uc29sZS5sb2coTnVtYmVyKFJlc3VsdE1vZGVsLkVkaXRVc2VyKSk7XHJcbiAgICAgIEVkaXRNb2RlbC5Vc2VySUQgPSBOdW1iZXIoUmVzdWx0TW9kZWwuRWRpdFVzZXIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5FZGl0Q29uZmlndXJhdGlvblNjb3BlSUQgPT0gQ29uZmlndXJhdGlvblNjb3BlLlBlcm1pc3Npb25TZXQpXHJcbiAgICAgIEVkaXRNb2RlbC5QZXJtaXNzaW9uU2V0SUQgPSBOdW1iZXIoUmVzdWx0TW9kZWwuRWRpdFBlcm1pc3Npb25TZXQpO1xyXG4gICAgcGFyYW1BcnJheS5wdXNoKEVkaXRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldEVkaXRDb25maWd1cmF0aW9uRnVuY3Rpb24gPSAoRWRpdE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5lZGl0Q29uZmlndXJhdGlvbihFZGl0TW9kZWwpXHJcbiAgfVxyXG5cclxuICAvL0FkZCxFZGl0IHJlcXVpcmVkIGZ1bmN0aW9uc1xyXG4gIENoYW5nZVNjb3BlVmFsdWUoa2V5KSB7XHJcbiAgICBzd2l0Y2ggKE51bWJlcihrZXkpKSB7XHJcbiAgICAgIGNhc2UgQ29uZmlndXJhdGlvblNjb3BlLkFwcDpcclxuICAgICAgICB0aGlzLlNob3dQZXJtaXNzaW9uTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuU2hvd1VzZXJzTGlzdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0ucmVtb3ZlQ29udHJvbChcIlVzZXJcIilcclxuICAgICAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJQZXJtaXNzaW9uU2V0XCIpXHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbmZpZ3VyYXRpb25TY29wZS5QZXJtaXNzaW9uU2V0OlxyXG4gICAgICAgIHRoaXMuU2hvd1Blcm1pc3Npb25MaXN0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNob3dVc2Vyc0xpc3QgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJVc2VyXCIpXHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbmZpZ3VyYXRpb25TY29wZS5Vc2VyOlxyXG4gICAgICAgIHRoaXMuU2hvd1Blcm1pc3Npb25MaXN0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5TaG93VXNlcnNMaXN0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLkFkZENvbmZpZ3VyYXRpb25Gb3JtLnJlbW92ZUNvbnRyb2woXCJQZXJtaXNzaW9uU2V0XCIpXHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXNldENvbmZpZ3VyYXRpb25GbGFncygpIHtcclxuICAgIHRoaXMuU2hvd0xvb2t1cExpc3QgPSBmYWxzZTtcclxuICAgIHRoaXMuU2hvd1ZhbHVlQW5kRGVmYXVsdFZhbHVlID0gZmFsc2U7XHJcbiAgICB0aGlzLlNob3dWYWx1ZVRvZ2dsZUFuZERlZmF1bHRWYWx1ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25QYXRoID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dGdW5jdGlvbk5vdEZvdW5kRXJyb3IgPSBmYWxzZTtcclxuICAgIHRoaXMuU2hvd0Ryb3BEb3duU291cmNlID0gZmFsc2U7XHJcbiAgICB0aGlzLlNob3dMb29rdXBJdGVtc0xpc3QgPSBmYWxzZTtcclxuICAgIHRoaXMuU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zb3VyY2VGdW5jdGlvbkRhdGFOb3RMb2FkZWQgPSBmYWxzZTtcclxuICB9XHJcbiAgU2VhcmNoRm9yRnVuY3Rpb24oaXNBZGQ6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSBpc0FkZCA/IHRoaXMuQWRkQ29uZmlndXJhdGlvbkZvcm0udmFsdWUgOiB0aGlzLkVkaXRDb25maWd1cmF0aW9uRm9ybS52YWx1ZTtcclxuICAgIGxldCBmdW5jdGlvbk5hbWUgPSBpc0FkZCA/IFJlc3VsdE1vZGVsLkZ1bmN0aW9uU291cmNlUGF0aDogUmVzdWx0TW9kZWwuRWRpdEZ1bmN0aW9uU291cmNlUGF0aDtcclxuICAgIHRoaXMuQ29uZmlndXJhdGlvbnNTZXJ2aWNlLmxvYWRTb3VyY2VGdW5jdGlvbkRyb3BEb3duSXRlbXMoZnVuY3Rpb25OYW1lKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc2hvd0Z1bmN0aW9uTm90Rm91bmRFcnJvciA9IGZhbHNlO1xyXG4gICAgICBpZiAodGhpcy5TaG93U291cmNlRnVuY3Rpb25EYXRhKSB7XHJcbiAgICAgICAgaWYgKGlzQWRkKSB7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNWYWx1ZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY0RlZmF1bHRWYWx1ZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuXHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNWYWx1ZS5EYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jRGVmYXVsdFZhbHVlLkRhdGFTb3VyY2UgPSByZXN1bHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5TZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuXHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuRGF0YVNvdXJjZSA9IHJlc3VsdDtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuRGF0YVNvdXJjZSA9IHJlc3VsdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKGlzQWRkKSB7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY1ZhbHVlLk5hbWUgPSBcIlNvdXJjZUZ1bmNWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jVmFsdWUuTGFiZWxLZXkgPSBcIlZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNWYWx1ZS5EYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jVmFsdWUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY1ZhbHVlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY1ZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY0RlZmF1bHRWYWx1ZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY0RlZmF1bHRWYWx1ZS5OYW1lID0gXCJTb3VyY2VGdW5jRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuTGFiZWxLZXkgPSBcIkRlZmF1bHRWYWx1ZVwiO1xyXG4gICAgICAgICAgdGhpcy5Tb3VyY2VGdW5jRGVmYXVsdFZhbHVlLkRhdGFTb3VyY2UgPSByZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuU291cmNlRnVuY0RlZmF1bHRWYWx1ZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLk5hbWUgPSBcIkVkaXRTb3VyY2VGdW5jVmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5MYWJlbEtleSA9IFwiVmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNWYWx1ZS5EYXRhU291cmNlID0gcmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jVmFsdWUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY1ZhbHVlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLk5hbWUgPSBcIkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlXCI7XHJcbiAgICAgICAgICB0aGlzLkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlLkxhYmVsS2V5ID0gXCJEZWZhdWx0VmFsdWVcIjtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuRGF0YVNvdXJjZSA9IHJlc3VsdDtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuRWRpdFNvdXJjZUZ1bmNEZWZhdWx0VmFsdWUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5FZGl0U291cmNlRnVuY0RlZmF1bHRWYWx1ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5TaG93U291cmNlRnVuY3Rpb25EYXRhID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNvdXJjZUZ1bmN0aW9uRGF0YU5vdExvYWRlZCA9IGZhbHNlO1xyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNTAwKSB7XHJcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5RXJyb3JNZXNzYWdlKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHsgLy80MDRcclxuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgICAgdGhpcy5zaG93RnVuY3Rpb25Ob3RGb3VuZEVycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLlNob3dTb3VyY2VGdW5jdGlvbkRhdGEgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNvdXJjZUZ1bmN0aW9uRGF0YU5vdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIFxyXG4gICAgfSlcclxuICB9XHJcbiAgY2hhbmdlU291cmNlRnVuY3Rpb24oKSB7XHJcbiAgICB0aGlzLlNob3dTb3VyY2VGdW5jdGlvbkRhdGEgPSBmYWxzZTtcclxuICAgIHRoaXMuc291cmNlRnVuY3Rpb25EYXRhTm90TG9hZGVkID0gdHJ1ZTtcclxuICB9XHJcbiAgLy9EZWxldGUgY29uZmlndXJhdGlvblxyXG4gIHNob3dEZWxldGVDb25maWd1cmF0aW9uTW9kYWwoY29uZmlndXJhdGlvbklEOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGVsZXRlQ29uZmlndXJhdGlvbklkID0gY29uZmlndXJhdGlvbklEO1xyXG5cclxuICAgIC8vYXJyYXkgc2VudCB0byBzZXJ2aWNlIGZ1bmN0aW9uXHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIHBhcmFtQXJyYXkucHVzaCh0aGlzLmRlbGV0ZUNvbmZpZ3VyYXRpb25JZCk7XHJcblxyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zID0gbmV3IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucygpO1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZGVsZXRlQ29uZmlndXJhdGlvbjtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5TZXJ2aWNlU3VibWl0TW9kZWwgPSBwYXJhbUFycmF5O1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuICAgIHRoaXMuZGVsZXRlQ29udHJvbExvYWRlZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5Db25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd01vZGFsKCk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlQ29uZmlndXJhdGlvbiA9IChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5kZWxldGVDb25maWd1cmF0aW9uKGlkKTtcclxuICB9XHJcblxyXG4gIC8vT24gZGVzdHJveVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0SGFuZGxlclNlcnZpY2UuZGVzdHJveUhhbmRsZXIoKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxibG9jay11aT48L2Jsb2NrLXVpPlxyXG48IS0tIFBhZ2UgQ29udGVudCAtLT5cclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gIDxkaXYgKm5nSWY9XCJTaG93UGFnZUNvbnRlbnRcIj5cclxuXHJcbiAgICA8IS0tIGJlZ2luOjpIZWFkZXIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWN1c3RvbS1oXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCI+XHJcbiAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIkNvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICAgIDwhLS0oT25DaGFuZ2UpPVwic2VhcmNoQ2xpZW50U2lkZSgkZXZlbnQpXCIgLS0+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggIFtvcHRpb25zXT1cInNlYXJjaFRleHRCb3hcIiBbZ3JvdXBdPVwiQ29uZmlndXJhdGlvbkZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICA8IS0tIGJlZ2luOjpNZW51IC0tPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCIgdGl0bGU9XCJBZGRcIiAoY2xpY2spPVwic2hvd0FkZENvbmZpZ3VyYXRpb25Nb2RhbChBZGRDb25maWd1cmF0aW9uTW9kYWwpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXMgbWUtMVwiPjwvaT5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPCEtLSBlbmQ6Ok1lbnUgLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIGVuZDo6SGVhZGVyIC0tPlxyXG4gICAgICA8IS0tIGJlZ2luOjpCb2R5IC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSBjb250YWluZXIgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIktleVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVmFsdWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlR5cGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNjb3BlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJVc2VyUGVybWlzc2lvblNldFwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3Rpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgPHRib2R5IGlkPVwibGlzdGluZ0NvbnRhaW5lclwiIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBDb25maWd1cmF0aW9uIG9mIGNsaWVudFNpZGVQYWdpbmdSZXN1bHRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWRhcmtcIj57e0NvbmZpZ3VyYXRpb24ua2V5fX08L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPnt7Q29uZmlndXJhdGlvbi52YWx1ZX19PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD4ge3tDb25maWd1cmF0aW9uLnZhbHVlVHlwZU5hbWVTdHJ9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQ+e3tDb25maWd1cmF0aW9uLnNjb3BlTmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD57e0NvbmZpZ3VyYXRpb24ucGVybWlzc2lvblNldE5hbWV9fXt7Q29uZmlndXJhdGlvbi51c2VyTmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImNvbmZpZ1wiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVsbGlwc2lzLWhcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNjb25maWc9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIiBuZ2JEcm9wZG93bkl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dFZGl0Q29uZmlndXJhdGlvbk1vZGFsKENvbmZpZ3VyYXRpb24uaWQsQ29uZmlndXJhdGlvbi5pZEVuY3J5cHRlZCwgRWRpdENvbmZpZ3VyYXRpb25Nb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVkaXRcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiIGlkPVwiYnRuUmVzZXRQYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dEZWxldGVDb25maWd1cmF0aW9uTW9kYWwoQ29uZmlndXJhdGlvbi5pZEVuY3J5cHRlZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlbGV0ZVwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI2XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwhLS0gZW5kOjpUYWJsZSAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIGVuZDo6VGFibGUgY29udGFpbmVyIC0tPlxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0gYmVnaW4gcGFnaW5nLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0Q29uZmlndXJhdGlvbkxpc3RSZXN1bHQoJGV2ZW50KVwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJDb25maWd1cmF0aW9uUGFnaW5nXCIgW2dyb3VwXT1cIkNvbmZpZ3VyYXRpb25Gb3JtXCIgI0NvbmZpZ3VyYXRpb25QYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgICA8L0JCU0YtUGFnaW5nPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBFbmQgcGFnaW5nLS0+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG5cclxuXHJcblxyXG48IS0tIEFkZCBNb2RhbCAtLT5cclxuPG5nLXRlbXBsYXRlICNBZGRDb25maWd1cmF0aW9uTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcblxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRDb25maWd1cmF0aW9uXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJBZGRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiS2V5XCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkNhdGVnb3J5XCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiU2NvcGVcIiAoT25DaGFuZ2UpPVwiQ2hhbmdlU2NvcGVWYWx1ZSgkZXZlbnQpXCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJQZXJtaXNzaW9uU2V0XCIgKm5nSWY9XCJTaG93UGVybWlzc2lvbkxpc3RcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIlVzZXJcIiAqbmdJZj1cIlNob3dVc2Vyc0xpc3RcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIlR5cGVcIiAoT25DaGFuZ2UpPVwiQ2hhbmdlVHlwZVZhbHVlKCRldmVudClcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiVmFsdWVcIiAqbmdJZj1cIlNob3dWYWx1ZUFuZERlZmF1bHRWYWx1ZVwiIFtncm91cF09XCJBZGRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiRGVmYXVsdFZhbHVlXCIgKm5nSWY9XCJTaG93VmFsdWVBbmREZWZhdWx0VmFsdWVcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJWYWx1ZVRvZ2dlbFwiICpuZ0lmPVwiU2hvd1ZhbHVlVG9nZ2xlQW5kRGVmYXVsdFZhbHVlXCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cIkRlZmF1bHRWYWx1ZVRvZ2dlbFwiICpuZ0lmPVwiU2hvd1ZhbHVlVG9nZ2xlQW5kRGVmYXVsdFZhbHVlXCIgW2dyb3VwXT1cIkFkZENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJTb3VyY2VcIiAqbmdJZj1cIlNob3dEcm9wRG93blNvdXJjZVwiIChPbkNoYW5nZSk9XCJDaGFuZ2VTb3VyY2UoJGV2ZW50KVwiIFtncm91cF09XCJBZGRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiU2hvd1NvdXJjZUZ1bmN0aW9uUGF0aFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkZ1bmN0aW9uU291cmNlUGF0aFwiIFtncm91cF09XCJBZGRDb25maWd1cmF0aW9uRm9ybVwiIChPbkNoYW5nZSk9XCJjaGFuZ2VTb3VyY2VGdW5jdGlvbigpXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0Z1bmN0aW9uTm90Rm91bmRFcnJvclwiIGNsYXNzPVwidGV4dC1kYW5nZXJcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTb3VyY2VGdW5jdGlvbk5vdEZvdW5kXCIpfX08L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlciBtYi00XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIlNlYXJjaEZvckZ1bmN0aW9uKHRydWUpXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbG9hdC1yaWdodFwiPjxpIGNsYXNzPVwiZmFzIGZhLXNlYXJjaFwiPjwvaT57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZWFyY2hcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJTb3VyY2VGdW5jVmFsdWVcIiAqbmdJZj1cIlNob3dTb3VyY2VGdW5jdGlvbkRhdGFcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIlNvdXJjZUZ1bmNEZWZhdWx0VmFsdWVcIiAqbmdJZj1cIlNob3dTb3VyY2VGdW5jdGlvbkRhdGFcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiU2hvd0xvb2t1cExpc3RcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJMb29rdXBcIiAoT25DaGFuZ2UpPVwiQ2hhbmdlTG9va3VwKCRldmVudCx0cnVlKVwiIFtncm91cF09XCJBZGRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiTG9va3VwVmFsdWVcIiAqbmdJZj1cIlNob3dMb29rdXBJdGVtc0xpc3RcIiBbZ3JvdXBdPVwiQWRkQ29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkxvb2t1cERlZmF1bHRWYWx1ZVwiICpuZ0lmPVwiU2hvd0xvb2t1cEl0ZW1zTGlzdFwiIFtncm91cF09XCJBZGRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiAjQ2xvc2VDb25maWd1cmF0aW9uTW9kYWwgaWQ9XCJDbG9zZUNvbmZpZ3VyYXRpb25Nb2RhbFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIFtkaXNhYmxlZF09XCJzb3VyY2VGdW5jdGlvbkRhdGFOb3RMb2FkZWRcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tRWRpdCBNb2RhbC0tPlxyXG48bmctdGVtcGxhdGUgI0VkaXRDb25maWd1cmF0aW9uTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVkaXRcIil9fSB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDb25maWd1cmF0aW9uXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybU9wdGlvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiRWRpdEtleVwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0UGVybWlzc2lvblNldFwiICpuZ0lmPVwiU2hvd1Blcm1pc3Npb25MaXN0XCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRVc2VyXCIgKm5nSWY9XCJTaG93VXNlcnNMaXN0XCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRUZXh0VmFsdWVcIiAqbmdJZj1cIlNob3dWYWx1ZUFuZERlZmF1bHRWYWx1ZVwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRUZXh0RGVmYXVsdFZhbHVlXCIgKm5nSWY9XCJTaG93VmFsdWVBbmREZWZhdWx0VmFsdWVcIiBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiRWRpdFZhbHVlVG9nZ2VsZVwiICpuZ0lmPVwiU2hvd1ZhbHVlVG9nZ2xlQW5kRGVmYXVsdFZhbHVlXCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJFZGl0RGVmYXVsdFZhbHVlVG9nZ2VsZVwiICpuZ0lmPVwiU2hvd1ZhbHVlVG9nZ2xlQW5kRGVmYXVsdFZhbHVlXCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiU2hvd1NvdXJjZUZ1bmN0aW9uUGF0aFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJFZGl0RnVuY3Rpb25Tb3VyY2VQYXRoXCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiIChPbkNoYW5nZSk9XCJjaGFuZ2VTb3VyY2VGdW5jdGlvbigpXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RnVuY3Rpb25Ob3RGb3VuZEVycm9yXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNvdXJjZUZ1bmN0aW9uTm90Rm91bmRcIil9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItNFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1zZWNvbmRhcnlcIiAoY2xpY2spPVwiU2VhcmNoRm9yRnVuY3Rpb24oZmFsc2UpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxvYXQtcmlnaHRcIj48aSBjbGFzcz1cImZhcyBmYS1zZWFyY2hcIj48L2k+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoXCIpfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdFNvdXJjZUZ1bmNWYWx1ZVwiICpuZ0lmPVwiU2hvd1NvdXJjZUZ1bmN0aW9uRGF0YVwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRTb3VyY2VGdW5jRGVmYXVsdFZhbHVlXCIgKm5nSWY9XCJTaG93U291cmNlRnVuY3Rpb25EYXRhXCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgIFtvcHRpb25zXT1cIkVkaXRMb29rdXBcIiAqbmdJZj1cIlNob3dMb29rdXBMaXN0XCIgKE9uQ2hhbmdlKT1cIkNoYW5nZUxvb2t1cCgkZXZlbnQsZmFsc2UpXCIgW2dyb3VwXT1cIkVkaXRDb25maWd1cmF0aW9uRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cIlNob3dMb29rdXBJdGVtc0xpc3RcIiA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0ICBbb3B0aW9uc109XCJFZGl0TG9va3VwVmFsdWVcIiBbZ3JvdXBdPVwiRWRpdENvbmZpZ3VyYXRpb25Gb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICAqbmdJZj1cIlNob3dMb29rdXBJdGVtc0xpc3RcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdExvb2t1cERlZmF1bHRWYWx1ZVwiIFtncm91cF09XCJFZGl0Q29uZmlndXJhdGlvbkZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUVkaXRDb25maWd1cmF0aW9uTW9kYWwgaWQ9XCJDbG9zZUVkaXRDb25maWd1cmF0aW9uTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gIG1lLTNcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiBbZGlzYWJsZWRdPVwic291cmNlRnVuY3Rpb25EYXRhTm90TG9hZGVkXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS1kZWxldGVkIE1vZGFsLS0+XHJcbjxCQlNGLUNvbmZpcm1hdGlvbk1vZGFsICpuZ0lmPVwiZGVsZXRlQ29udHJvbExvYWRlZFwiIFtvcHRpb25zXT1cIkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnNcIiBpZD1cIkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbFwiICNDb25maXJtYXRpb25Nb2RhbENvbnRyb2w+PC9CQlNGLUNvbmZpcm1hdGlvbk1vZGFsPlxyXG5cclxuIl19