@smarterplan/ngx-smarterplan-core 1.4.21 → 1.4.22

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 (114) hide show
  1. package/README.md +24 -24
  2. package/esm2022/lib/components/csv-export/csv-export.component.mjs +3 -3
  3. package/esm2022/lib/components/loader/loader.component.mjs +3 -3
  4. package/esm2022/lib/components/menu-bar/avatar/avatar.component.mjs +1 -1
  5. package/esm2022/lib/components/menu-bar/menu-bar.component.mjs +3 -3
  6. package/esm2022/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +3 -3
  7. package/esm2022/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +3 -3
  8. package/esm2022/lib/components/search-bar/search-bar.component.mjs +3 -3
  9. package/esm2022/lib/components/splat-viewer/splat-viewer.component.mjs +361 -0
  10. package/esm2022/lib/components/support-modal/support-modal.component.mjs +3 -3
  11. package/esm2022/lib/config.mjs +1 -1
  12. package/esm2022/lib/helpers.service.mjs +1 -1
  13. package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +1 -1
  14. package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +1 -1
  15. package/esm2022/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +1 -1
  16. package/esm2022/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +1 -1
  17. package/esm2022/lib/matterport-extensions/scene-component/SceneComponent.mjs +1 -1
  18. package/esm2022/lib/matterport-extensions/security-camera/SecurityCamera.mjs +22 -22
  19. package/esm2022/lib/matterport-extensions/tv-player/TvPlayer.mjs +1 -1
  20. package/esm2022/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +22 -22
  21. package/esm2022/lib/mattertagData.mjs +1 -1
  22. package/esm2022/lib/ngx-smarterplan-core.module.mjs +9 -4
  23. package/esm2022/lib/ngx-smarterplan-core.service.mjs +1 -1
  24. package/esm2022/lib/pipes/duration-to-string.pipe.mjs +1 -1
  25. package/esm2022/lib/pipes/format-date-number-to-digits.pipe.mjs +1 -1
  26. package/esm2022/lib/pipes/hashtag-from-id.pipe.mjs +1 -1
  27. package/esm2022/lib/pipes/safe-url.pipe.mjs +1 -1
  28. package/esm2022/lib/pipes/time-date-to-local-string.pipe.mjs +1 -1
  29. package/esm2022/lib/pipes/username-from-id.pipe.mjs +1 -1
  30. package/esm2022/lib/services/amplify-cache.service.mjs +1 -1
  31. package/esm2022/lib/services/base-tab.service.mjs +1 -1
  32. package/esm2022/lib/services/baseVisibility.service.mjs +1 -1
  33. package/esm2022/lib/services/content.service.mjs +1 -1
  34. package/esm2022/lib/services/filter.service.mjs +1 -1
  35. package/esm2022/lib/services/intervention.service.mjs +1 -1
  36. package/esm2022/lib/services/locale.service.mjs +1 -1
  37. package/esm2022/lib/services/matterport-import.service.mjs +1 -1
  38. package/esm2022/lib/services/matterport-measurement.service.mjs +1 -1
  39. package/esm2022/lib/services/matterport-navigation.service.mjs +1 -1
  40. package/esm2022/lib/services/matterport-pointer.service.mjs +6 -6
  41. package/esm2022/lib/services/matterport-tag-copy.service.mjs +1 -1
  42. package/esm2022/lib/services/matterport-tag.service.mjs +12 -7
  43. package/esm2022/lib/services/matterport.service.mjs +17 -17
  44. package/esm2022/lib/services/models/affectation.service.mjs +1 -1
  45. package/esm2022/lib/services/models/base-object.service.mjs +1 -1
  46. package/esm2022/lib/services/models/capture.service.mjs +1 -1
  47. package/esm2022/lib/services/models/comment.service.mjs +1 -1
  48. package/esm2022/lib/services/models/domain.service.mjs +1 -1
  49. package/esm2022/lib/services/models/equipment.service.mjs +1 -1
  50. package/esm2022/lib/services/models/event.service.mjs +1 -1
  51. package/esm2022/lib/services/models/feature.service.mjs +1 -1
  52. package/esm2022/lib/services/models/hashtag.service.mjs +1 -1
  53. package/esm2022/lib/services/models/layer.service.mjs +1 -1
  54. package/esm2022/lib/services/models/measurement.service.mjs +1 -1
  55. package/esm2022/lib/services/models/mission.service.mjs +1 -1
  56. package/esm2022/lib/services/models/navigation.service.mjs +1 -1
  57. package/esm2022/lib/services/models/node.service.mjs +1 -1
  58. package/esm2022/lib/services/models/object3D.service.mjs +1 -1
  59. package/esm2022/lib/services/models/operation.service.mjs +1 -1
  60. package/esm2022/lib/services/models/organisation.service.mjs +1 -1
  61. package/esm2022/lib/services/models/plan.service.mjs +1 -1
  62. package/esm2022/lib/services/models/poi.service.mjs +27 -27
  63. package/esm2022/lib/services/models/profile.service.mjs +1 -1
  64. package/esm2022/lib/services/models/property.service.mjs +1 -1
  65. package/esm2022/lib/services/models/space.service.mjs +1 -1
  66. package/esm2022/lib/services/models/template.service.mjs +1 -1
  67. package/esm2022/lib/services/models/ticket.service.mjs +1 -1
  68. package/esm2022/lib/services/models/visit.service.mjs +1 -1
  69. package/esm2022/lib/services/models/zone.service.mjs +1 -1
  70. package/esm2022/lib/services/navigator.service.mjs +1 -1
  71. package/esm2022/lib/services/obj-to-glb.mjs +649 -0
  72. package/esm2022/lib/services/s3.service.mjs +43 -3
  73. package/esm2022/lib/services/search.service.mjs +1 -1
  74. package/esm2022/lib/services/support.service.mjs +1 -1
  75. package/esm2022/lib/services/sweep-locator.service.mjs +1 -1
  76. package/esm2022/lib/services/tag.service.mjs +16 -16
  77. package/esm2022/lib/services/threejs-import.service.mjs +6 -4
  78. package/esm2022/lib/services/threejs.service.mjs +867 -95
  79. package/esm2022/lib/services/user.service.mjs +1 -1
  80. package/esm2022/lib/services/utils/matterport-transform.util.mjs +1 -1
  81. package/esm2022/lib/services/validators.service.mjs +1 -1
  82. package/esm2022/lib/services/viewer.service.mjs +189 -7
  83. package/esm2022/lib/services/zone-drawer.service.mjs +1 -1
  84. package/esm2022/lib/services/zoneChange.service.mjs +1 -1
  85. package/esm2022/lib/tokens/matterport-sdk-key.token.mjs +1 -1
  86. package/esm2022/lib/validators/email.directive.mjs +1 -1
  87. package/esm2022/lib/validators/no-empty.directive.mjs +1 -1
  88. package/esm2022/lib/validators/number.directive.mjs +1 -1
  89. package/esm2022/lib/validators/text.directive.mjs +1 -1
  90. package/esm2022/public-api.mjs +3 -1
  91. package/fesm2022/smarterplan-ngx-smarterplan-core.mjs +2239 -233
  92. package/fesm2022/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  93. package/lib/components/splat-viewer/splat-viewer.component.d.ts +98 -0
  94. package/lib/ngx-smarterplan-core.module.d.ts +7 -6
  95. package/lib/services/matterport-tag.service.d.ts +5 -5
  96. package/lib/services/obj-to-glb.d.ts +66 -0
  97. package/lib/services/s3.service.d.ts +7 -0
  98. package/lib/services/threejs.service.d.ts +336 -16
  99. package/lib/services/viewer.service.d.ts +110 -8
  100. package/package.json +1 -1
  101. package/public-api.d.ts +2 -0
  102. package/src/assets/viewers/splat/chunk-BYLI4YBI.js +17037 -0
  103. package/src/assets/viewers/splat/chunk-LDV6YPMG.js +1 -0
  104. package/src/assets/viewers/splat/chunk-WZ5Z4TU3.js +105719 -0
  105. package/src/assets/viewers/splat/convert-4DRLH77X.js +1 -0
  106. package/src/assets/viewers/splat/convert.html +11 -0
  107. package/src/assets/viewers/splat/converter-SLBB5MHG.js +1 -0
  108. package/src/assets/viewers/splat/index.html +90 -0
  109. package/src/assets/viewers/splat/spz-DEYRea_v-QE6YSGIB.js +5292 -0
  110. package/src/assets/viewers/splat/viewer-W4X3FWQJ.js +2704 -0
  111. package/src/assets/viewers/splat/viewer.css +1096 -0
  112. package/src/assets/viewers/splat/webp.wasm +0 -0
  113. package/src/assets/viewers/splat/worker.mjs +1383 -0
  114. package/src/assets/vs-app.json +67 -67
@@ -392,11 +392,11 @@ export class NavigationBarComponent {
392
392
  this.baseVisibilityService.isChangePositionVisible.next(false);
393
393
  }
394
394
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NavigationBarComponent, deps: [{ token: 'currentAwsKinesisAnalyticsService' }, { token: i1.Router }, { token: i2.SpaceService }, { token: i3.BaseUserService }, { token: i4.ZoneService }, { token: i5.VisitService }, { token: i6.ViewerService }, { token: i7.NavigatorService }, { token: i8.ZoneChangeService }, { token: i9.BaseVisibilityService }], target: i0.ɵɵFactoryTarget.Component });
395
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NavigationBarComponent, selector: "lib-navigation-bar", viewQueries: [{ propertyName: "navbarSelectMenu", first: true, predicate: ["navbarSelectMenu"], descendants: true }], ngImport: i0, template: "<nav class=\"navbar navbar-expand-md navbar-dark navbar-inverse second-nav\">\r\n <div class=\"d-flex w-100\">\r\n <div #navbarSelectMenu class=\"w-100\" id=\"nav-item-container-blue\">\r\n <div class=\"d-flex flex-column flex-md-row p-1 mt-2\">\r\n <select class=\"form-control flex-fill flex-lg-fill-unset location select-menu\"\r\n [(ngModel)]=\"selectedLocation\" (ngModelChange)=\"onLocationClick()\">\r\n <option [ngValue]=\"null\" selected>{{ 'Location' | translate }}</option>\r\n <option *ngFor=\"let loc of locations; index as index\" [ngValue]=\"loc\"> {{ loc.name }}</option>\r\n </select>\r\n <select class=\"form-control flex-fill flex-lg-fill-unset select-menu\" (change)=\"onVisitClick($event)\"\r\n *ngIf=\"visitsPerSpace && visitsPerSpace.length > 1\">\r\n <option value=\"default\" selected disabled hidden>{{'Visit' | translate}}</option>\r\n <option *ngFor=\"let visit of visitsPerSpace; index as index\" value=\"{{index}}\">{{ visit.name}}\r\n </option>\r\n </select>\r\n <select class=\"form-control flex-fill flex-lg-fill-unset floor select-menu\" [(ngModel)]=\"selectedFloor\"\r\n (ngModelChange)=\"onFloorClick()\">\r\n <option [ngValue]=\"null\" selected>{{'Floor' | translate}}</option>\r\n <option *ngFor=\"let floor of floorsPerSpace\" [ngValue]=\"floor\">{{ floor.name}}</option>\r\n </select>\r\n <select class=\"form-control flex-fill flex-lg-fill-unset select-menu zone\" [(ngModel)]=\"selectedZone\"\r\n (ngModelChange)=\"onZoneClick()\">\r\n <option [ngValue]=\"null\" selected>{{'Zone' | translate}}</option>\r\n <option *ngFor=\"let zone of zonesPerFloor\" [ngValue]=\"zone\"><span\r\n *ngIf=\"zone.code_ref\">{{zone.code_ref}}_</span>{{zone.name}}</option>\r\n </select>\r\n <select class=\"form-control flex-fill flex-lg-fill-unset select-menu\" [(ngModel)]=\"selectedChildZone\"\r\n *ngIf=\"childrenZones && childrenZones.length>0\" (ngModelChange)=\"onChildZoneClick()\">\r\n <option [ngValue]=\"null\" selected disabled>{{'Zone' | translate}}</option>\r\n <option *ngFor=\"let zone of childrenZones\" [ngValue]=\"zone\">{{ zone.name}}</option>\r\n </select>\r\n <button (click)=\"goTo()\"\r\n class=\"btn btn-outline-primary rounded-pill mx-2 w-md-fit-content h-md-fit-content align-self-md-center btn-3d d-none d-lg-block\"\r\n [disabled]=\"!selectedLocation || !selectedModel3d || !canGo()\">\r\n <i class=\"icon-go-to-3d d-inline-block\"></i> {{'3D visit' | translate}}\r\n </button>\r\n </div>\r\n <div class=\"row align-items-center justify-content-center ml-0 p-1\" *ngIf=\"showLocation()\">\r\n <p class=\"fw-bold lh-base align-middle text-center\">\r\n {{ showLocation() }}\r\n </p>\r\n </div>\r\n <div class=\"row align-items-center justify-content-center ml-0 p-1 d-block d-lg-none\">\r\n <button (click)=\"goTo()\"\r\n class=\"btn btn-outline-primary rounded-pill w-25 mx-2 w-md-fit-content h-md-fit-content align-self-md-center btn-3d\"\r\n [disabled]=\"!selectedLocation || !selectedModel3d || !canGo()\">\r\n <i class=\"icon-go-to-3d d-inline-block\"></i> {{'3D visit' | translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</nav>", styles: [":host{position:sticky;top:0;height:123px}.navbar{z-index:200;padding:.4rem 1rem}.navbar.second-nav{z-index:199;background-color:var(--smarterplan-primary)}input,select{margin-right:15px}.select{background:transparent;border:none;color:#fff;margin:6px 20px 0}@media (min-width: 992px){.flex-lg-fill-unset{flex:unset!important}}.form-control{width:100%;min-width:80px;max-width:18%}.location{width:auto;max-width:35%}.floor,.zone{width:auto;max-width:30%}button{color:#fff;padding:5px 10px;font-size:1.1em}.navbar-toggler{margin-right:1em}.select-menu{max-width:inherit}.btn-3d .icon-go-to-3d{width:30px;height:30px;background:url('data:image/svg+xml,<?xml version=\"1.0\" encoding=\"utf-8\"?>%0D%0A<!-- Generator: Adobe Illustrator 25.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->%0D%0A<svg version=\"1.1\" id=\"Calque_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"%0D%0A%09 viewBox=\"0 0 60 60\" style=\"enable-background:new 0 0 60 60;\" xml:space=\"preserve\">%0D%0A<style type=\"text/css\">%0D%0A%09.st0{fill:%23565656;}%0D%0A<\\/style>%0D%0A<g>%0D%0A%09<path class=\"st0\" d=\"M43.9,32.1V17.7c0-0.4-0.2-0.7-0.5-0.9l-12.8-8c-0.2-0.1-0.4-0.2-0.6-0.2c-0.2,0-0.4,0.1-0.6,0.2l-12.8,8%0D%0A%09%09c-0.3,0.2-0.5,0.5-0.5,0.9v14.4c0,0.4,0.2,0.7,0.5,0.9l12.8,8c0.3,0.2,0.8,0.2,1.1,0l12.8-8C43.7,32.8,43.9,32.5,43.9,32.1z%0D%0A%09%09 M28.9,38.2l-10.7-6.7v-12l10.7,6.7V38.2z M30,24.4l-10.8-6.8L30,10.9l10.8,6.8L30,24.4z M41.8,31.5l-10.7,6.7v-12l10.7-6.7V31.5z\"%0D%0A%09%09/>%0D%0A%09<path class=\"st0\" d=\"M56.1,29.3l-10.3-6.8v2l1.4,1v0l0.8,0.5l0,0l7,4.8c0.3,0.2,0.4,0.5,0.4,0.8c0,0.3-0.2,0.6-0.4,0.8l-6.8,4.7%0D%0A%09%09l0,0l-0.9,0.7v0l-2.9,2v0l-13.8,9.6c-0.3,0.2-0.8,0.2-1.1,0l-14.2-9.8l-2.6-1.8v0L5,32.4c-0.3-0.2-0.4-0.5-0.4-0.8%0D%0A%09%09c0-0.3,0.2-0.6,0.4-0.8l0,0l7.3-5l0,0l0.5-0.3v0l1.4-1v-2L3.9,29.3c-0.8,0.5-1.2,1.4-1.2,2.4c0,0.9,0.5,1.8,1.2,2.4l8.8,6.1v0%0D%0A%09%09l4.5,3.1l11.2,7.7c1,0.7,2.3,0.7,3.3,0l13.7-9.5l1.9-1.3v0l8.8-6.1c0.8-0.5,1.2-1.4,1.2-2.4S56.9,29.8,56.1,29.3z\"/>%0D%0A</g>%0D%0A</svg>%0D%0A');border:none;vertical-align:middle;fill:var(--smarterplan-primary)}.btn-3d:hover:enabled .icon-go-to-3d{background:url('data:image/svg+xml,<?xml version=\"1.0\" encoding=\"utf-8\"?>%0D%0A<!-- Generator: Adobe Illustrator 25.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->%0D%0A<svg version=\"1.1\" id=\"Calque_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"%0D%0A%09 viewBox=\"0 0 60 60\" style=\"enable-background:new 0 0 60 60;\" xml:space=\"preserve\">%0D%0A<style type=\"text/css\">%0D%0A%09.st0{fill:%23FFFFFF;}%0D%0A<\\/style>%0D%0A<g>%0D%0A%09<path class=\"st0\" d=\"M43.9,32.1V17.7c0-0.4-0.2-0.7-0.5-0.9l-12.8-8c-0.2-0.1-0.4-0.2-0.6-0.2c-0.2,0-0.4,0.1-0.6,0.2l-12.8,8%0D%0A%09%09c-0.3,0.2-0.5,0.5-0.5,0.9v14.4c0,0.4,0.2,0.7,0.5,0.9l12.8,8c0.3,0.2,0.8,0.2,1.1,0l12.8-8C43.7,32.8,43.9,32.5,43.9,32.1z%0D%0A%09%09 M28.9,38.2l-10.7-6.7v-12l10.7,6.7V38.2z M30,24.4l-10.8-6.8L30,10.9l10.8,6.8L30,24.4z M41.8,31.5l-10.7,6.7v-12l10.7-6.7V31.5z\"%0D%0A%09%09/>%0D%0A%09<path class=\"st0\" d=\"M56.1,29.3l-10.3-6.8v2l1.4,1v0l0.8,0.5l0,0l7,4.8c0.3,0.2,0.4,0.5,0.4,0.8c0,0.3-0.2,0.6-0.4,0.8l-6.8,4.7%0D%0A%09%09l0,0l-0.9,0.7v0l-2.9,2v0l-13.8,9.6c-0.3,0.2-0.8,0.2-1.1,0l-14.2-9.8l-2.6-1.8v0L5,32.4c-0.3-0.2-0.4-0.5-0.4-0.8%0D%0A%09%09c0-0.3,0.2-0.6,0.4-0.8l0,0l7.3-5l0,0l0.5-0.3v0l1.4-1v-2L3.9,29.3c-0.8,0.5-1.2,1.4-1.2,2.4c0,0.9,0.5,1.8,1.2,2.4l8.8,6.1v0%0D%0A%09%09l4.5,3.1l11.2,7.7c1,0.7,2.3,0.7,3.3,0l13.7-9.5l1.9-1.3v0l8.8-6.1c0.8-0.5,1.2-1.4,1.2-2.4S56.9,29.8,56.1,29.3z\"/>%0D%0A</g>%0D%0A</svg>%0D%0A')}.btn-3d[disabled]:hover .icon-go-to-3d{fill:var(--smarterplan-primary)}.outer_circle{background-color:#ebebeb;border-radius:50%;width:32px;height:32px;padding:1px}@media (max-width: 767px){.navbar{padding:.2rem .5rem}.form-control,.location,.floor,.zone{max-width:100%;margin-bottom:15px}input,select{margin-right:0;margin-bottom:15px}}\n"], dependencies: [{ kind: "directive", type: i10.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i10.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i10.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }] });
395
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NavigationBarComponent, selector: "lib-navigation-bar", viewQueries: [{ propertyName: "navbarSelectMenu", first: true, predicate: ["navbarSelectMenu"], descendants: true }], ngImport: i0, template: "<nav class=\"navbar navbar-expand-md navbar-dark navbar-inverse second-nav\">\n <div class=\"d-flex w-100\">\n <div #navbarSelectMenu class=\"w-100\" id=\"nav-item-container-blue\">\n <div class=\"d-flex flex-column flex-md-row p-1 mt-2\">\n <select class=\"form-control flex-fill flex-lg-fill-unset location select-menu\"\n [(ngModel)]=\"selectedLocation\" (ngModelChange)=\"onLocationClick()\">\n <option [ngValue]=\"null\" selected>{{ 'Location' | translate }}</option>\n <option *ngFor=\"let loc of locations; index as index\" [ngValue]=\"loc\"> {{ loc.name }}</option>\n </select>\n <select class=\"form-control flex-fill flex-lg-fill-unset select-menu\" (change)=\"onVisitClick($event)\"\n *ngIf=\"visitsPerSpace && visitsPerSpace.length > 1\">\n <option value=\"default\" selected disabled hidden>{{'Visit' | translate}}</option>\n <option *ngFor=\"let visit of visitsPerSpace; index as index\" value=\"{{index}}\">{{ visit.name}}\n </option>\n </select>\n <select class=\"form-control flex-fill flex-lg-fill-unset floor select-menu\" [(ngModel)]=\"selectedFloor\"\n (ngModelChange)=\"onFloorClick()\">\n <option [ngValue]=\"null\" selected>{{'Floor' | translate}}</option>\n <option *ngFor=\"let floor of floorsPerSpace\" [ngValue]=\"floor\">{{ floor.name}}</option>\n </select>\n <select class=\"form-control flex-fill flex-lg-fill-unset select-menu zone\" [(ngModel)]=\"selectedZone\"\n (ngModelChange)=\"onZoneClick()\">\n <option [ngValue]=\"null\" selected>{{'Zone' | translate}}</option>\n <option *ngFor=\"let zone of zonesPerFloor\" [ngValue]=\"zone\"><span\n *ngIf=\"zone.code_ref\">{{zone.code_ref}}_</span>{{zone.name}}</option>\n </select>\n <select class=\"form-control flex-fill flex-lg-fill-unset select-menu\" [(ngModel)]=\"selectedChildZone\"\n *ngIf=\"childrenZones && childrenZones.length>0\" (ngModelChange)=\"onChildZoneClick()\">\n <option [ngValue]=\"null\" selected disabled>{{'Zone' | translate}}</option>\n <option *ngFor=\"let zone of childrenZones\" [ngValue]=\"zone\">{{ zone.name}}</option>\n </select>\n <button (click)=\"goTo()\"\n class=\"btn btn-outline-primary rounded-pill mx-2 w-md-fit-content h-md-fit-content align-self-md-center btn-3d d-none d-lg-block\"\n [disabled]=\"!selectedLocation || !selectedModel3d || !canGo()\">\n <i class=\"icon-go-to-3d d-inline-block\"></i> {{'3D visit' | translate}}\n </button>\n </div>\n <div class=\"row align-items-center justify-content-center ml-0 p-1\" *ngIf=\"showLocation()\">\n <p class=\"fw-bold lh-base align-middle text-center\">\n {{ showLocation() }}\n </p>\n </div>\n <div class=\"row align-items-center justify-content-center ml-0 p-1 d-block d-lg-none\">\n <button (click)=\"goTo()\"\n class=\"btn btn-outline-primary rounded-pill w-25 mx-2 w-md-fit-content h-md-fit-content align-self-md-center btn-3d\"\n [disabled]=\"!selectedLocation || !selectedModel3d || !canGo()\">\n <i class=\"icon-go-to-3d d-inline-block\"></i> {{'3D visit' | translate}}\n </button>\n </div>\n </div>\n </div>\n</nav>", styles: [":host{position:sticky;top:0;height:123px}.navbar{z-index:200;padding:.4rem 1rem}.navbar.second-nav{z-index:199;background-color:var(--smarterplan-primary)}input,select{margin-right:15px}.select{background:transparent;border:none;color:#fff;margin:6px 20px 0}@media (min-width: 992px){.flex-lg-fill-unset{flex:unset!important}}.form-control{width:100%;min-width:80px;max-width:18%}.location{width:auto;max-width:35%}.floor,.zone{width:auto;max-width:30%}button{color:#fff;padding:5px 10px;font-size:1.1em}.navbar-toggler{margin-right:1em}.select-menu{max-width:inherit}.btn-3d .icon-go-to-3d{width:30px;height:30px;background:url('data:image/svg+xml,<?xml version=\"1.0\" encoding=\"utf-8\"?>%0A<!-- Generator: Adobe Illustrator 25.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->%0A<svg version=\"1.1\" id=\"Calque_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"%0A%09 viewBox=\"0 0 60 60\" style=\"enable-background:new 0 0 60 60;\" xml:space=\"preserve\">%0A<style type=\"text/css\">%0A%09.st0{fill:%23565656;}%0A<\\/style>%0A<g>%0A%09<path class=\"st0\" d=\"M43.9,32.1V17.7c0-0.4-0.2-0.7-0.5-0.9l-12.8-8c-0.2-0.1-0.4-0.2-0.6-0.2c-0.2,0-0.4,0.1-0.6,0.2l-12.8,8%0A%09%09c-0.3,0.2-0.5,0.5-0.5,0.9v14.4c0,0.4,0.2,0.7,0.5,0.9l12.8,8c0.3,0.2,0.8,0.2,1.1,0l12.8-8C43.7,32.8,43.9,32.5,43.9,32.1z%0A%09%09 M28.9,38.2l-10.7-6.7v-12l10.7,6.7V38.2z M30,24.4l-10.8-6.8L30,10.9l10.8,6.8L30,24.4z M41.8,31.5l-10.7,6.7v-12l10.7-6.7V31.5z\"%0A%09%09/>%0A%09<path class=\"st0\" d=\"M56.1,29.3l-10.3-6.8v2l1.4,1v0l0.8,0.5l0,0l7,4.8c0.3,0.2,0.4,0.5,0.4,0.8c0,0.3-0.2,0.6-0.4,0.8l-6.8,4.7%0A%09%09l0,0l-0.9,0.7v0l-2.9,2v0l-13.8,9.6c-0.3,0.2-0.8,0.2-1.1,0l-14.2-9.8l-2.6-1.8v0L5,32.4c-0.3-0.2-0.4-0.5-0.4-0.8%0A%09%09c0-0.3,0.2-0.6,0.4-0.8l0,0l7.3-5l0,0l0.5-0.3v0l1.4-1v-2L3.9,29.3c-0.8,0.5-1.2,1.4-1.2,2.4c0,0.9,0.5,1.8,1.2,2.4l8.8,6.1v0%0A%09%09l4.5,3.1l11.2,7.7c1,0.7,2.3,0.7,3.3,0l13.7-9.5l1.9-1.3v0l8.8-6.1c0.8-0.5,1.2-1.4,1.2-2.4S56.9,29.8,56.1,29.3z\"/>%0A</g>%0A</svg>%0A');border:none;vertical-align:middle;fill:var(--smarterplan-primary)}.btn-3d:hover:enabled .icon-go-to-3d{background:url('data:image/svg+xml,<?xml version=\"1.0\" encoding=\"utf-8\"?>%0A<!-- Generator: Adobe Illustrator 25.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->%0A<svg version=\"1.1\" id=\"Calque_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"%0A%09 viewBox=\"0 0 60 60\" style=\"enable-background:new 0 0 60 60;\" xml:space=\"preserve\">%0A<style type=\"text/css\">%0A%09.st0{fill:%23FFFFFF;}%0A<\\/style>%0A<g>%0A%09<path class=\"st0\" d=\"M43.9,32.1V17.7c0-0.4-0.2-0.7-0.5-0.9l-12.8-8c-0.2-0.1-0.4-0.2-0.6-0.2c-0.2,0-0.4,0.1-0.6,0.2l-12.8,8%0A%09%09c-0.3,0.2-0.5,0.5-0.5,0.9v14.4c0,0.4,0.2,0.7,0.5,0.9l12.8,8c0.3,0.2,0.8,0.2,1.1,0l12.8-8C43.7,32.8,43.9,32.5,43.9,32.1z%0A%09%09 M28.9,38.2l-10.7-6.7v-12l10.7,6.7V38.2z M30,24.4l-10.8-6.8L30,10.9l10.8,6.8L30,24.4z M41.8,31.5l-10.7,6.7v-12l10.7-6.7V31.5z\"%0A%09%09/>%0A%09<path class=\"st0\" d=\"M56.1,29.3l-10.3-6.8v2l1.4,1v0l0.8,0.5l0,0l7,4.8c0.3,0.2,0.4,0.5,0.4,0.8c0,0.3-0.2,0.6-0.4,0.8l-6.8,4.7%0A%09%09l0,0l-0.9,0.7v0l-2.9,2v0l-13.8,9.6c-0.3,0.2-0.8,0.2-1.1,0l-14.2-9.8l-2.6-1.8v0L5,32.4c-0.3-0.2-0.4-0.5-0.4-0.8%0A%09%09c0-0.3,0.2-0.6,0.4-0.8l0,0l7.3-5l0,0l0.5-0.3v0l1.4-1v-2L3.9,29.3c-0.8,0.5-1.2,1.4-1.2,2.4c0,0.9,0.5,1.8,1.2,2.4l8.8,6.1v0%0A%09%09l4.5,3.1l11.2,7.7c1,0.7,2.3,0.7,3.3,0l13.7-9.5l1.9-1.3v0l8.8-6.1c0.8-0.5,1.2-1.4,1.2-2.4S56.9,29.8,56.1,29.3z\"/>%0A</g>%0A</svg>%0A')}.btn-3d[disabled]:hover .icon-go-to-3d{fill:var(--smarterplan-primary)}.outer_circle{background-color:#ebebeb;border-radius:50%;width:32px;height:32px;padding:1px}@media (max-width: 767px){.navbar{padding:.2rem .5rem}.form-control,.location,.floor,.zone{max-width:100%;margin-bottom:15px}input,select{margin-right:0;margin-bottom:15px}}\n"], dependencies: [{ kind: "directive", type: i10.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i10.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i10.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }] });
396
396
  }
397
397
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NavigationBarComponent, decorators: [{
398
398
  type: Component,
399
- args: [{ selector: 'lib-navigation-bar', template: "<nav class=\"navbar navbar-expand-md navbar-dark navbar-inverse second-nav\">\r\n <div class=\"d-flex w-100\">\r\n <div #navbarSelectMenu class=\"w-100\" id=\"nav-item-container-blue\">\r\n <div class=\"d-flex flex-column flex-md-row p-1 mt-2\">\r\n <select class=\"form-control flex-fill flex-lg-fill-unset location select-menu\"\r\n [(ngModel)]=\"selectedLocation\" (ngModelChange)=\"onLocationClick()\">\r\n <option [ngValue]=\"null\" selected>{{ 'Location' | translate }}</option>\r\n <option *ngFor=\"let loc of locations; index as index\" [ngValue]=\"loc\"> {{ loc.name }}</option>\r\n </select>\r\n <select class=\"form-control flex-fill flex-lg-fill-unset select-menu\" (change)=\"onVisitClick($event)\"\r\n *ngIf=\"visitsPerSpace && visitsPerSpace.length > 1\">\r\n <option value=\"default\" selected disabled hidden>{{'Visit' | translate}}</option>\r\n <option *ngFor=\"let visit of visitsPerSpace; index as index\" value=\"{{index}}\">{{ visit.name}}\r\n </option>\r\n </select>\r\n <select class=\"form-control flex-fill flex-lg-fill-unset floor select-menu\" [(ngModel)]=\"selectedFloor\"\r\n (ngModelChange)=\"onFloorClick()\">\r\n <option [ngValue]=\"null\" selected>{{'Floor' | translate}}</option>\r\n <option *ngFor=\"let floor of floorsPerSpace\" [ngValue]=\"floor\">{{ floor.name}}</option>\r\n </select>\r\n <select class=\"form-control flex-fill flex-lg-fill-unset select-menu zone\" [(ngModel)]=\"selectedZone\"\r\n (ngModelChange)=\"onZoneClick()\">\r\n <option [ngValue]=\"null\" selected>{{'Zone' | translate}}</option>\r\n <option *ngFor=\"let zone of zonesPerFloor\" [ngValue]=\"zone\"><span\r\n *ngIf=\"zone.code_ref\">{{zone.code_ref}}_</span>{{zone.name}}</option>\r\n </select>\r\n <select class=\"form-control flex-fill flex-lg-fill-unset select-menu\" [(ngModel)]=\"selectedChildZone\"\r\n *ngIf=\"childrenZones && childrenZones.length>0\" (ngModelChange)=\"onChildZoneClick()\">\r\n <option [ngValue]=\"null\" selected disabled>{{'Zone' | translate}}</option>\r\n <option *ngFor=\"let zone of childrenZones\" [ngValue]=\"zone\">{{ zone.name}}</option>\r\n </select>\r\n <button (click)=\"goTo()\"\r\n class=\"btn btn-outline-primary rounded-pill mx-2 w-md-fit-content h-md-fit-content align-self-md-center btn-3d d-none d-lg-block\"\r\n [disabled]=\"!selectedLocation || !selectedModel3d || !canGo()\">\r\n <i class=\"icon-go-to-3d d-inline-block\"></i> {{'3D visit' | translate}}\r\n </button>\r\n </div>\r\n <div class=\"row align-items-center justify-content-center ml-0 p-1\" *ngIf=\"showLocation()\">\r\n <p class=\"fw-bold lh-base align-middle text-center\">\r\n {{ showLocation() }}\r\n </p>\r\n </div>\r\n <div class=\"row align-items-center justify-content-center ml-0 p-1 d-block d-lg-none\">\r\n <button (click)=\"goTo()\"\r\n class=\"btn btn-outline-primary rounded-pill w-25 mx-2 w-md-fit-content h-md-fit-content align-self-md-center btn-3d\"\r\n [disabled]=\"!selectedLocation || !selectedModel3d || !canGo()\">\r\n <i class=\"icon-go-to-3d d-inline-block\"></i> {{'3D visit' | translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</nav>", styles: [":host{position:sticky;top:0;height:123px}.navbar{z-index:200;padding:.4rem 1rem}.navbar.second-nav{z-index:199;background-color:var(--smarterplan-primary)}input,select{margin-right:15px}.select{background:transparent;border:none;color:#fff;margin:6px 20px 0}@media (min-width: 992px){.flex-lg-fill-unset{flex:unset!important}}.form-control{width:100%;min-width:80px;max-width:18%}.location{width:auto;max-width:35%}.floor,.zone{width:auto;max-width:30%}button{color:#fff;padding:5px 10px;font-size:1.1em}.navbar-toggler{margin-right:1em}.select-menu{max-width:inherit}.btn-3d .icon-go-to-3d{width:30px;height:30px;background:url('data:image/svg+xml,<?xml version=\"1.0\" encoding=\"utf-8\"?>%0D%0A<!-- Generator: Adobe Illustrator 25.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->%0D%0A<svg version=\"1.1\" id=\"Calque_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"%0D%0A%09 viewBox=\"0 0 60 60\" style=\"enable-background:new 0 0 60 60;\" xml:space=\"preserve\">%0D%0A<style type=\"text/css\">%0D%0A%09.st0{fill:%23565656;}%0D%0A<\\/style>%0D%0A<g>%0D%0A%09<path class=\"st0\" d=\"M43.9,32.1V17.7c0-0.4-0.2-0.7-0.5-0.9l-12.8-8c-0.2-0.1-0.4-0.2-0.6-0.2c-0.2,0-0.4,0.1-0.6,0.2l-12.8,8%0D%0A%09%09c-0.3,0.2-0.5,0.5-0.5,0.9v14.4c0,0.4,0.2,0.7,0.5,0.9l12.8,8c0.3,0.2,0.8,0.2,1.1,0l12.8-8C43.7,32.8,43.9,32.5,43.9,32.1z%0D%0A%09%09 M28.9,38.2l-10.7-6.7v-12l10.7,6.7V38.2z M30,24.4l-10.8-6.8L30,10.9l10.8,6.8L30,24.4z M41.8,31.5l-10.7,6.7v-12l10.7-6.7V31.5z\"%0D%0A%09%09/>%0D%0A%09<path class=\"st0\" d=\"M56.1,29.3l-10.3-6.8v2l1.4,1v0l0.8,0.5l0,0l7,4.8c0.3,0.2,0.4,0.5,0.4,0.8c0,0.3-0.2,0.6-0.4,0.8l-6.8,4.7%0D%0A%09%09l0,0l-0.9,0.7v0l-2.9,2v0l-13.8,9.6c-0.3,0.2-0.8,0.2-1.1,0l-14.2-9.8l-2.6-1.8v0L5,32.4c-0.3-0.2-0.4-0.5-0.4-0.8%0D%0A%09%09c0-0.3,0.2-0.6,0.4-0.8l0,0l7.3-5l0,0l0.5-0.3v0l1.4-1v-2L3.9,29.3c-0.8,0.5-1.2,1.4-1.2,2.4c0,0.9,0.5,1.8,1.2,2.4l8.8,6.1v0%0D%0A%09%09l4.5,3.1l11.2,7.7c1,0.7,2.3,0.7,3.3,0l13.7-9.5l1.9-1.3v0l8.8-6.1c0.8-0.5,1.2-1.4,1.2-2.4S56.9,29.8,56.1,29.3z\"/>%0D%0A</g>%0D%0A</svg>%0D%0A');border:none;vertical-align:middle;fill:var(--smarterplan-primary)}.btn-3d:hover:enabled .icon-go-to-3d{background:url('data:image/svg+xml,<?xml version=\"1.0\" encoding=\"utf-8\"?>%0D%0A<!-- Generator: Adobe Illustrator 25.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->%0D%0A<svg version=\"1.1\" id=\"Calque_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"%0D%0A%09 viewBox=\"0 0 60 60\" style=\"enable-background:new 0 0 60 60;\" xml:space=\"preserve\">%0D%0A<style type=\"text/css\">%0D%0A%09.st0{fill:%23FFFFFF;}%0D%0A<\\/style>%0D%0A<g>%0D%0A%09<path class=\"st0\" d=\"M43.9,32.1V17.7c0-0.4-0.2-0.7-0.5-0.9l-12.8-8c-0.2-0.1-0.4-0.2-0.6-0.2c-0.2,0-0.4,0.1-0.6,0.2l-12.8,8%0D%0A%09%09c-0.3,0.2-0.5,0.5-0.5,0.9v14.4c0,0.4,0.2,0.7,0.5,0.9l12.8,8c0.3,0.2,0.8,0.2,1.1,0l12.8-8C43.7,32.8,43.9,32.5,43.9,32.1z%0D%0A%09%09 M28.9,38.2l-10.7-6.7v-12l10.7,6.7V38.2z M30,24.4l-10.8-6.8L30,10.9l10.8,6.8L30,24.4z M41.8,31.5l-10.7,6.7v-12l10.7-6.7V31.5z\"%0D%0A%09%09/>%0D%0A%09<path class=\"st0\" d=\"M56.1,29.3l-10.3-6.8v2l1.4,1v0l0.8,0.5l0,0l7,4.8c0.3,0.2,0.4,0.5,0.4,0.8c0,0.3-0.2,0.6-0.4,0.8l-6.8,4.7%0D%0A%09%09l0,0l-0.9,0.7v0l-2.9,2v0l-13.8,9.6c-0.3,0.2-0.8,0.2-1.1,0l-14.2-9.8l-2.6-1.8v0L5,32.4c-0.3-0.2-0.4-0.5-0.4-0.8%0D%0A%09%09c0-0.3,0.2-0.6,0.4-0.8l0,0l7.3-5l0,0l0.5-0.3v0l1.4-1v-2L3.9,29.3c-0.8,0.5-1.2,1.4-1.2,2.4c0,0.9,0.5,1.8,1.2,2.4l8.8,6.1v0%0D%0A%09%09l4.5,3.1l11.2,7.7c1,0.7,2.3,0.7,3.3,0l13.7-9.5l1.9-1.3v0l8.8-6.1c0.8-0.5,1.2-1.4,1.2-2.4S56.9,29.8,56.1,29.3z\"/>%0D%0A</g>%0D%0A</svg>%0D%0A')}.btn-3d[disabled]:hover .icon-go-to-3d{fill:var(--smarterplan-primary)}.outer_circle{background-color:#ebebeb;border-radius:50%;width:32px;height:32px;padding:1px}@media (max-width: 767px){.navbar{padding:.2rem .5rem}.form-control,.location,.floor,.zone{max-width:100%;margin-bottom:15px}input,select{margin-right:0;margin-bottom:15px}}\n"] }]
399
+ args: [{ selector: 'lib-navigation-bar', template: "<nav class=\"navbar navbar-expand-md navbar-dark navbar-inverse second-nav\">\n <div class=\"d-flex w-100\">\n <div #navbarSelectMenu class=\"w-100\" id=\"nav-item-container-blue\">\n <div class=\"d-flex flex-column flex-md-row p-1 mt-2\">\n <select class=\"form-control flex-fill flex-lg-fill-unset location select-menu\"\n [(ngModel)]=\"selectedLocation\" (ngModelChange)=\"onLocationClick()\">\n <option [ngValue]=\"null\" selected>{{ 'Location' | translate }}</option>\n <option *ngFor=\"let loc of locations; index as index\" [ngValue]=\"loc\"> {{ loc.name }}</option>\n </select>\n <select class=\"form-control flex-fill flex-lg-fill-unset select-menu\" (change)=\"onVisitClick($event)\"\n *ngIf=\"visitsPerSpace && visitsPerSpace.length > 1\">\n <option value=\"default\" selected disabled hidden>{{'Visit' | translate}}</option>\n <option *ngFor=\"let visit of visitsPerSpace; index as index\" value=\"{{index}}\">{{ visit.name}}\n </option>\n </select>\n <select class=\"form-control flex-fill flex-lg-fill-unset floor select-menu\" [(ngModel)]=\"selectedFloor\"\n (ngModelChange)=\"onFloorClick()\">\n <option [ngValue]=\"null\" selected>{{'Floor' | translate}}</option>\n <option *ngFor=\"let floor of floorsPerSpace\" [ngValue]=\"floor\">{{ floor.name}}</option>\n </select>\n <select class=\"form-control flex-fill flex-lg-fill-unset select-menu zone\" [(ngModel)]=\"selectedZone\"\n (ngModelChange)=\"onZoneClick()\">\n <option [ngValue]=\"null\" selected>{{'Zone' | translate}}</option>\n <option *ngFor=\"let zone of zonesPerFloor\" [ngValue]=\"zone\"><span\n *ngIf=\"zone.code_ref\">{{zone.code_ref}}_</span>{{zone.name}}</option>\n </select>\n <select class=\"form-control flex-fill flex-lg-fill-unset select-menu\" [(ngModel)]=\"selectedChildZone\"\n *ngIf=\"childrenZones && childrenZones.length>0\" (ngModelChange)=\"onChildZoneClick()\">\n <option [ngValue]=\"null\" selected disabled>{{'Zone' | translate}}</option>\n <option *ngFor=\"let zone of childrenZones\" [ngValue]=\"zone\">{{ zone.name}}</option>\n </select>\n <button (click)=\"goTo()\"\n class=\"btn btn-outline-primary rounded-pill mx-2 w-md-fit-content h-md-fit-content align-self-md-center btn-3d d-none d-lg-block\"\n [disabled]=\"!selectedLocation || !selectedModel3d || !canGo()\">\n <i class=\"icon-go-to-3d d-inline-block\"></i> {{'3D visit' | translate}}\n </button>\n </div>\n <div class=\"row align-items-center justify-content-center ml-0 p-1\" *ngIf=\"showLocation()\">\n <p class=\"fw-bold lh-base align-middle text-center\">\n {{ showLocation() }}\n </p>\n </div>\n <div class=\"row align-items-center justify-content-center ml-0 p-1 d-block d-lg-none\">\n <button (click)=\"goTo()\"\n class=\"btn btn-outline-primary rounded-pill w-25 mx-2 w-md-fit-content h-md-fit-content align-self-md-center btn-3d\"\n [disabled]=\"!selectedLocation || !selectedModel3d || !canGo()\">\n <i class=\"icon-go-to-3d d-inline-block\"></i> {{'3D visit' | translate}}\n </button>\n </div>\n </div>\n </div>\n</nav>", styles: [":host{position:sticky;top:0;height:123px}.navbar{z-index:200;padding:.4rem 1rem}.navbar.second-nav{z-index:199;background-color:var(--smarterplan-primary)}input,select{margin-right:15px}.select{background:transparent;border:none;color:#fff;margin:6px 20px 0}@media (min-width: 992px){.flex-lg-fill-unset{flex:unset!important}}.form-control{width:100%;min-width:80px;max-width:18%}.location{width:auto;max-width:35%}.floor,.zone{width:auto;max-width:30%}button{color:#fff;padding:5px 10px;font-size:1.1em}.navbar-toggler{margin-right:1em}.select-menu{max-width:inherit}.btn-3d .icon-go-to-3d{width:30px;height:30px;background:url('data:image/svg+xml,<?xml version=\"1.0\" encoding=\"utf-8\"?>%0A<!-- Generator: Adobe Illustrator 25.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->%0A<svg version=\"1.1\" id=\"Calque_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"%0A%09 viewBox=\"0 0 60 60\" style=\"enable-background:new 0 0 60 60;\" xml:space=\"preserve\">%0A<style type=\"text/css\">%0A%09.st0{fill:%23565656;}%0A<\\/style>%0A<g>%0A%09<path class=\"st0\" d=\"M43.9,32.1V17.7c0-0.4-0.2-0.7-0.5-0.9l-12.8-8c-0.2-0.1-0.4-0.2-0.6-0.2c-0.2,0-0.4,0.1-0.6,0.2l-12.8,8%0A%09%09c-0.3,0.2-0.5,0.5-0.5,0.9v14.4c0,0.4,0.2,0.7,0.5,0.9l12.8,8c0.3,0.2,0.8,0.2,1.1,0l12.8-8C43.7,32.8,43.9,32.5,43.9,32.1z%0A%09%09 M28.9,38.2l-10.7-6.7v-12l10.7,6.7V38.2z M30,24.4l-10.8-6.8L30,10.9l10.8,6.8L30,24.4z M41.8,31.5l-10.7,6.7v-12l10.7-6.7V31.5z\"%0A%09%09/>%0A%09<path class=\"st0\" d=\"M56.1,29.3l-10.3-6.8v2l1.4,1v0l0.8,0.5l0,0l7,4.8c0.3,0.2,0.4,0.5,0.4,0.8c0,0.3-0.2,0.6-0.4,0.8l-6.8,4.7%0A%09%09l0,0l-0.9,0.7v0l-2.9,2v0l-13.8,9.6c-0.3,0.2-0.8,0.2-1.1,0l-14.2-9.8l-2.6-1.8v0L5,32.4c-0.3-0.2-0.4-0.5-0.4-0.8%0A%09%09c0-0.3,0.2-0.6,0.4-0.8l0,0l7.3-5l0,0l0.5-0.3v0l1.4-1v-2L3.9,29.3c-0.8,0.5-1.2,1.4-1.2,2.4c0,0.9,0.5,1.8,1.2,2.4l8.8,6.1v0%0A%09%09l4.5,3.1l11.2,7.7c1,0.7,2.3,0.7,3.3,0l13.7-9.5l1.9-1.3v0l8.8-6.1c0.8-0.5,1.2-1.4,1.2-2.4S56.9,29.8,56.1,29.3z\"/>%0A</g>%0A</svg>%0A');border:none;vertical-align:middle;fill:var(--smarterplan-primary)}.btn-3d:hover:enabled .icon-go-to-3d{background:url('data:image/svg+xml,<?xml version=\"1.0\" encoding=\"utf-8\"?>%0A<!-- Generator: Adobe Illustrator 25.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->%0A<svg version=\"1.1\" id=\"Calque_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"%0A%09 viewBox=\"0 0 60 60\" style=\"enable-background:new 0 0 60 60;\" xml:space=\"preserve\">%0A<style type=\"text/css\">%0A%09.st0{fill:%23FFFFFF;}%0A<\\/style>%0A<g>%0A%09<path class=\"st0\" d=\"M43.9,32.1V17.7c0-0.4-0.2-0.7-0.5-0.9l-12.8-8c-0.2-0.1-0.4-0.2-0.6-0.2c-0.2,0-0.4,0.1-0.6,0.2l-12.8,8%0A%09%09c-0.3,0.2-0.5,0.5-0.5,0.9v14.4c0,0.4,0.2,0.7,0.5,0.9l12.8,8c0.3,0.2,0.8,0.2,1.1,0l12.8-8C43.7,32.8,43.9,32.5,43.9,32.1z%0A%09%09 M28.9,38.2l-10.7-6.7v-12l10.7,6.7V38.2z M30,24.4l-10.8-6.8L30,10.9l10.8,6.8L30,24.4z M41.8,31.5l-10.7,6.7v-12l10.7-6.7V31.5z\"%0A%09%09/>%0A%09<path class=\"st0\" d=\"M56.1,29.3l-10.3-6.8v2l1.4,1v0l0.8,0.5l0,0l7,4.8c0.3,0.2,0.4,0.5,0.4,0.8c0,0.3-0.2,0.6-0.4,0.8l-6.8,4.7%0A%09%09l0,0l-0.9,0.7v0l-2.9,2v0l-13.8,9.6c-0.3,0.2-0.8,0.2-1.1,0l-14.2-9.8l-2.6-1.8v0L5,32.4c-0.3-0.2-0.4-0.5-0.4-0.8%0A%09%09c0-0.3,0.2-0.6,0.4-0.8l0,0l7.3-5l0,0l0.5-0.3v0l1.4-1v-2L3.9,29.3c-0.8,0.5-1.2,1.4-1.2,2.4c0,0.9,0.5,1.8,1.2,2.4l8.8,6.1v0%0A%09%09l4.5,3.1l11.2,7.7c1,0.7,2.3,0.7,3.3,0l13.7-9.5l1.9-1.3v0l8.8-6.1c0.8-0.5,1.2-1.4,1.2-2.4S56.9,29.8,56.1,29.3z\"/>%0A</g>%0A</svg>%0A')}.btn-3d[disabled]:hover .icon-go-to-3d{fill:var(--smarterplan-primary)}.outer_circle{background-color:#ebebeb;border-radius:50%;width:32px;height:32px;padding:1px}@media (max-width: 767px){.navbar{padding:.2rem .5rem}.form-control,.location,.floor,.zone{max-width:100%;margin-bottom:15px}input,select{margin-right:0;margin-bottom:15px}}\n"] }]
400
400
  }], ctorParameters: () => [{ type: undefined, decorators: [{
401
401
  type: Inject,
402
402
  args: ['currentAwsKinesisAnalyticsService']
@@ -404,4 +404,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
404
404
  type: ViewChild,
405
405
  args: ['navbarSelectMenu']
406
406
  }] } });
407
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL21lbnUtYmFyL25hdmlnYXRpb24tYmFyL25hdmlnYXRpb24tYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9tZW51LWJhci9uYXZpZ2F0aW9uLWJhci9uYXZpZ2F0aW9uLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQWdCckQsTUFBTSxPQUFPLHNCQUFzQjtJQTBDdkI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBakRWLG1CQUFtQixDQUFNLENBQUMsS0FBSztJQUVBLGdCQUFnQixDQUFPO0lBRXRELFNBQVMsQ0FBVTtJQUVuQixpQkFBaUIsQ0FBUztJQUUxQixjQUFjLENBQVM7SUFFdkIsZ0JBQWdCLEdBQVUsSUFBSSxDQUFDO0lBRS9CLGVBQWUsQ0FBUztJQUV4QixhQUFhLEdBQVMsSUFBSSxDQUFDO0lBRTNCLFlBQVksR0FBUyxJQUFJLENBQUM7SUFFMUIsaUJBQWlCLEdBQVMsSUFBSSxDQUFDO0lBRS9CLGNBQWMsR0FBWSxJQUFJLENBQUM7SUFFL0IsY0FBYyxHQUFXLElBQUksQ0FBQztJQUU5QixhQUFhLEdBQVcsSUFBSSxDQUFDO0lBRTdCLGFBQWEsR0FB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QztRQUNwQyxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxxQkFBcUIsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakUsQ0FBQzt3R0F0Y1Usc0JBQXNCLGtCQXdDdkIsbUNBQW1DOzRGQXhDbEMsc0JBQXNCLGdMQ25CbkMsZ3pIQW1ETTs7NEZEaENPLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxvQkFBb0I7OzBCQTRDM0IsTUFBTTsyQkFBQyxtQ0FBbUM7MlNBckNkLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHdhaXRVbnRpbCB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMuc2VydmljZSc7XHJcbmltcG9ydCB7IFNwYWNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZGVscy9zcGFjZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmlzaXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9kZWxzL3Zpc2l0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBab25lU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZGVscy96b25lLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBWaWV3ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdmlld2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTcGFjZSwgVmlzaXQsIFpvbmUgfSBmcm9tICcuLi8uLi8uLi90eXBlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWm9uZUNoYW5nZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvem9uZUNoYW5nZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEJhc2VWaXNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Jhc2VWaXNpYmlsaXR5LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItbmF2aWdhdGlvbi1iYXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uYXZpZ2F0aW9uLWJhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbmF2aWdhdGlvbi1iYXIuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdmlnYXRpb25CYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGF3c0tpbmVzaXNBbmFseXRpY3M6IGFueTsgLy9BV1NcclxuXHJcbiAgQFZpZXdDaGlsZCgnbmF2YmFyU2VsZWN0TWVudScpIG5hdmJhclNlbGVjdE1lbnUhOiBhbnk7XHJcblxyXG4gIGxvY2F0aW9uczogU3BhY2VbXTtcclxuXHJcbiAgY3VycmVudExvY2F0aW9uSUQ6IHN0cmluZztcclxuXHJcbiAgY3VycmVudE1vZGVsM2Q6IHN0cmluZztcclxuXHJcbiAgc2VsZWN0ZWRMb2NhdGlvbjogU3BhY2UgPSBudWxsO1xyXG5cclxuICBzZWxlY3RlZE1vZGVsM2Q6IHN0cmluZztcclxuXHJcbiAgc2VsZWN0ZWRGbG9vcjogWm9uZSA9IG51bGw7XHJcblxyXG4gIHNlbGVjdGVkWm9uZTogWm9uZSA9IG51bGw7XHJcblxyXG4gIHNlbGVjdGVkQ2hpbGRab25lOiBab25lID0gbnVsbDtcclxuXHJcbiAgdmlzaXRzUGVyU3BhY2U6IFZpc2l0W10gPSBudWxsO1xyXG5cclxuICBmbG9vcnNQZXJTcGFjZTogWm9uZVtdID0gbnVsbDtcclxuXHJcbiAgem9uZXNQZXJTcGFjZTogWm9uZVtdID0gbnVsbDtcclxuXHJcbiAgem9uZXNQZXJGbG9vcjogWm9uZVtdID0gbnVsbDtcclxuXHJcbiAgY2hpbGRyZW5ab25lczogWm9uZVtdID0gbnVsbDtcclxuXHJcbiAgc3dlZXBUb0dvOiBzdHJpbmc7XHJcblxyXG4gIGZsb29yVG9HbzogWm9uZTtcclxuXHJcbiAgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBuYXZFdmVudHM6IE9ic2VydmFibGU8TmF2aWdhdGlvbkVuZD47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnY3VycmVudEF3c0tpbmVzaXNBbmFseXRpY3NTZXJ2aWNlJylcclxuICAgIGF3c0tpbmVzaXNBbmFseXRpY3NJbmplY3RlZDogYW55LFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgc3BhY2VTZXJ2aWNlOiBTcGFjZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBCYXNlVXNlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpvbmVTZXJ2aWNlOiBab25lU2VydmljZSxcclxuICAgIHByaXZhdGUgdmlzaXRTZXJ2aWNlOiBWaXNpdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHZpZXdlclNlcnZpY2U6IFZpZXdlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5hdmlnYXRvclNlcnZpY2U6IE5hdmlnYXRvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpvbmVDaGFuZ2VTZXJ2aWNlOiBab25lQ2hhbmdlU2VydmljZSxcclxuICAgIHByaXZhdGUgYmFzZVZpc2liaWxpdHlTZXJ2aWNlOiBCYXNlVmlzaWJpbGl0eVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcyA9IGF3c0tpbmVzaXNBbmFseXRpY3NJbmplY3RlZDtcclxuICAgIHRoaXMuc3BhY2VTZXJ2aWNlLmxvY2F0aW9uVXBkYXRlZFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGxvY3MpID0+IHtcclxuICAgICAgICB0aGlzLmxvY2F0aW9ucyA9IGxvY3M7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhdGlvbikge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9uID0gdGhpcy5maW5kTG9jYXRpb25CeUlEKFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTG9jYXRpb24uaWRcclxuICAgICAgICAgICk7IC8vIFVwZGF0ZSBPYmplY3QgKG9iamVjdCBhZGRyZXNzIHdpbGwgY2hhbmdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy52aWV3ZXJTZXJ2aWNlLnZpZXdlcklzT25cclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIChkYXRhOiB7IHNwYWNlSUQ6IHN0cmluZzsgbW9kZWwzRDogc3RyaW5nOyBzd2VlcDogc3RyaW5nIHwgbnVsbCB9KSA9PiB7XHJcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnbWVudSBuYXZpZ2F0aW9uIHJlY2VpdmVkIHVwZGF0ZScsIGRhdGEpO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50TG9jYXRpb25JRCA9IGRhdGEuc3BhY2VJRDtcclxuICAgICAgICAgIHRoaXMuY3VycmVudE1vZGVsM2QgPSBkYXRhLm1vZGVsM0Q7XHJcbiAgICAgICAgICBpZiAoIWRhdGEuc3BhY2VJRCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTG9jYXRpb24gPSBudWxsO1xyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbG9jYXRpb25JZCcpO1xyXG4gICAgICAgICAgICB0aGlzLnNlbmRVcGRhdGVMb2NhdGlvbkV2ZW50KCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgKCF0aGlzLnNlbGVjdGVkTG9jYXRpb24gfHxcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTG9jYXRpb24uaWQgIT09IGRhdGEuc3BhY2VJRCkgJiZcclxuICAgICAgICAgICAgdGhpcy5sb2NhdGlvbnNcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTG9jYXRpb24gPSB0aGlzLmZpbmRMb2NhdGlvbkJ5SUQoZGF0YS5zcGFjZUlEKTtcclxuICAgICAgICAgICAgdGhpcy5zZW5kVXBkYXRlTG9jYXRpb25FdmVudCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdlIGxpc3RlbiBmb3IgTG9jYXRpb24gY2hhbmdlIGV2ZW50XHJcbiAgICAgKi9cclxuICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5sb2NhdGlvbklEQ2hhbmdlXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoaWQ6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIHRoaXMuY2xlYXJEYXRhKCk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TG9jYXRpb25JRCA9IGlkO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbiA9IHRoaXMuZmluZExvY2F0aW9uQnlJRChpZCk7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmN1cnJlbnROYXZCYXJMb2NhdGlvbklEID0gaWQ7XHJcbiAgICAgICAgdGhpcy5vblNlbGVjdGVkTG9jYXRpb25DaGFuZ2VkKCkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUubWVzc2FnZSkpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVzRm9yVXNlckNoYW5nZVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHpvbmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHpvbmVzKSB7XHJcbiAgICAgICAgICBhd2FpdCB3YWl0VW50aWwoKCkgPT4gdGhpcy5mbG9vcnNQZXJTcGFjZSAhPT0gbnVsbCk7XHJcbiAgICAgICAgICBjb25zdCBmbG9vclpvbmUgPSB6b25lcy5maW5kKFxyXG4gICAgICAgICAgICAoem9uZSkgPT4gem9uZS5sYXllciAmJiB6b25lLmxheWVyLm5hbWUgPT09ICdGTE9PUidcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAoZmxvb3Jab25lKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGbG9vciA9IHRoaXMuZmxvb3JzUGVyU3BhY2UuZmluZChcclxuICAgICAgICAgICAgICAoZikgPT4gZi5pZCA9PT0gZmxvb3Jab25lLmlkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIC8vIEVtaXQgZXZlbnQgdG8gZGlzcGF0Y2ggdmFsdWUgb2YgIHRoaXMuc2VsZWN0ZWRGbG9vciBpbiBhbGwgcG9pL3RpY2tldC9lcXVpcG1lbnQvbWVhc3VyZSBzZXJ2aWNlc1xyXG4gICAgICAgICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLmZsb29ySGFzQ2hhbmdlZC5lbWl0KHRoaXMuc2VsZWN0ZWRGbG9vcik7XHJcbiAgICAgICAgICAgIHRoaXMub25GbG9vckNsaWNrKGZhbHNlKS5jYXRjaCgoZSkgPT4gY29uc29sZS5sb2coZS5tZXNzYWdlKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgYXdhaXQgdGhpcy5pbml0TG9jYXRpb25zKCk7XHJcbiAgICB0aGlzLmhhbmRsZVN0YXJ0VXJsKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIC8vIENhcHR1cmUgdGhlIFwiaWRcIiBpbiBsb2NhbGlzYXRpb24vOmlkIHJvdXRlc1xyXG4gIGhhbmRsZVN0YXJ0VXJsKCkge1xyXG4gICAgaWYgKHRoaXMucm91dGVyLnVybC5pbmNsdWRlcygnbG9jYWxpc2F0aW9uLycpKSB7XHJcbiAgICAgIGNvbnN0IHBhdGhzID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJyk7IC8vIC9kYXNoYm9hcmQvbG9jYWxpc2F0aW9uL2ZjMGFhZGI3LTNjODktNDM0OS1hZDFmLWJmZTliNDQ5MTZjMFxyXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcclxuICAgICAgY29uc3QgbG9jSUQgPSBwYXRoc1szXTtcclxuICAgICAgaWYgKHRoaXMuY3VycmVudExvY2F0aW9uSUQgIT09IGxvY0lEKSB7XHJcbiAgICAgICAgdGhpcy5jbGVhckRhdGEoKTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRMb2NhdGlvbklEID0gbG9jSUQ7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9uID0gdGhpcy5maW5kTG9jYXRpb25CeUlEKGxvY0lEKTtcclxuICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudE5hdkJhckxvY2F0aW9uSUQgPSBsb2NJRDtcclxuICAgICAgICB0aGlzLm9uU2VsZWN0ZWRMb2NhdGlvbkNoYW5nZWQoKS5jYXRjaCgoZSkgPT4gY29uc29sZS5sb2coZS5tZXNzYWdlKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGluaXRMb2NhdGlvbnMoKSB7XHJcbiAgICB0aGlzLmxvY2F0aW9ucyA9IHRoaXMuc3BhY2VTZXJ2aWNlLmxvY2F0aW9uc0ZvclVzZXI7XHJcbiAgICBpZiAodGhpcy5sb2NhdGlvbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMubG9jYXRpb25zID0gYXdhaXQgdGhpcy5zcGFjZVNlcnZpY2UuZ2V0TG9jYXRpb25zRm9yQ3VycmVudFVzZXIoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmN1cnJlbnRMb2NhdGlvbklEICYmIHRoaXMubG9jYXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9uID0gdGhpcy5maW5kTG9jYXRpb25CeUlEKHRoaXMuY3VycmVudExvY2F0aW9uSUQpO1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZExvY2F0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5zZW5kVXBkYXRlTG9jYXRpb25FdmVudCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaW5kIGEgbG9jYXRpb24gd2l0aCBhIGdpdmVuIElEXHJcbiAgICogQHBhcmFtIGlkIElEIGZvciB0aGUgbG9jYXRpb25cclxuICAgKiBAcmV0dXJucyBUaGUgbG9jYXRpb24gb3IgbnVsbCBpZiBubyBsb2NhdGlvbiB3ZXJlIGZvdW5kXHJcbiAgICovXHJcbiAgZmluZExvY2F0aW9uQnlJRChpZDogc3RyaW5nKTogU3BhY2Uge1xyXG4gICAgY29uc3Qgc3BhY2UgPSB0aGlzLmxvY2F0aW9ucy5maW5kKChsb2MpID0+IGxvYy5pZCA9PT0gaWQpO1xyXG4gICAgcmV0dXJuIHNwYWNlIHx8IG51bGw7IC8qKiBDb252ZXJ0IHRvIG51bGwgaWYgdW5kZWZpbmVkICovXHJcbiAgfVxyXG5cclxuICBjbGVhckRhdGEoY2xlYXJWaXNpdHM6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICB0aGlzLmZsb29yc1BlclNwYWNlID0gbnVsbDtcclxuICAgIHRoaXMuc2VsZWN0ZWRGbG9vciA9IG51bGw7XHJcbiAgICB0aGlzLnpvbmVzUGVyRmxvb3IgPSBudWxsO1xyXG4gICAgdGhpcy5jaGlsZHJlblpvbmVzID0gbnVsbDtcclxuICAgIHRoaXMuc2VsZWN0ZWRNb2RlbDNkID0gbnVsbDtcclxuICAgIHRoaXMuc3dlZXBUb0dvID0gbnVsbDtcclxuICAgIHRoaXMuZmxvb3JUb0dvID0gbnVsbDtcclxuICAgIHRoaXMuc2VsZWN0ZWRab25lID0gbnVsbDtcclxuICAgIHRoaXMuc2VsZWN0ZWRDaGlsZFpvbmUgPSBudWxsO1xyXG4gICAgaWYgKGNsZWFyVmlzaXRzKSB7XHJcbiAgICAgIHRoaXMudmlzaXRzUGVyU3BhY2UgPSBudWxsO1xyXG4gICAgICB0aGlzLnpvbmVzUGVyU3BhY2UgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2xvY2F0aW9uSWQnKTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdmbG9vcklkJyk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnem9uZUlkJyk7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnY2hpbGRab25lSWQnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZW4gdGhlIHNlbGVjdGVkTG9jYXRpb24gY2hhbmdlc1xyXG4gICAqIFNlbmQgYSBldmVudCB0byBsb2NhdGlvbklEQ2hhbmdlIGZyb20gTmF2aWdhdG9yU2VydmljZVxyXG4gICAqIFRoZSBldmVudCB3aWxsIGJlIGNhdGNoIGJ5IHRoaXMgY29tcG9uZW50IGFuZCB0aGUgZmlsdGVyIGJhciB3aWxsIGJlIHVwZGF0ZVxyXG4gICAqL1xyXG4gIHNlbmRVcGRhdGVMb2NhdGlvbkV2ZW50KCkge1xyXG4gICAgY29uc3QgbG9jYXRpb25JRCA9IHRoaXMuc2VsZWN0ZWRMb2NhdGlvbiA/IHRoaXMuc2VsZWN0ZWRMb2NhdGlvbi5pZCA6IG51bGw7XHJcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UubG9jYXRpb25JRENoYW5nZS5uZXh0KGxvY2F0aW9uSUQpO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhdGlvbikge1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbG9jYXRpb25JZCcsIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbi5pZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbG9jYXRpb25JZCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25TZWxlY3RlZExvY2F0aW9uQ2hhbmdlZCgpIHtcclxuICAgIGlmICghdGhpcy5zZWxlY3RlZExvY2F0aW9uKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMudmlzaXRzUGVyU3BhY2UgPSBhd2FpdCB0aGlzLnZpc2l0U2VydmljZS5nZXRWaXNpdHNGb3JTcGFjZUZvclVzZXIoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9uLmlkXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuem9uZXNQZXJTcGFjZSA9IGF3YWl0IHRoaXMuem9uZVNlcnZpY2UuZ2V0Wm9uZXNCeVNwYWNlRm9yVXNlcihcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTG9jYXRpb24uaWRcclxuICAgICAgKTtcclxuICAgICAgaWYgKHRoaXMudmlzaXRzUGVyU3BhY2UubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1vZGVsM2QgPSB0aGlzLnZpc2l0c1BlclNwYWNlWzBdLm1vZGVsM2Q7XHJcbiAgICAgICAgdGhpcy5mbG9vcnNQZXJTcGFjZSA9IHRoaXMuem9uZXNQZXJTcGFjZS5maWx0ZXIoXHJcbiAgICAgICAgICAoem9uZSkgPT4gem9uZS5sYXllciAmJiB6b25lLmxheWVyLm5hbWUuaW5jbHVkZXMoJ0ZMT09SJylcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIHNvcnQgZnJvbSBoaWdoZXN0IGZsb29yIHRvIGxvd2VzdFxyXG4gICAgICAgIHRoaXMuZmxvb3JzUGVyU3BhY2Uuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgaWYgKGEubWV0YWRhdGEgJiYgYi5tZXRhZGF0YSkge1xyXG4gICAgICAgICAgICBjb25zdCBtZXRhZGF0YUEgPSBKU09OLnBhcnNlKGEubWV0YWRhdGEpO1xyXG4gICAgICAgICAgICBjb25zdCBtZXRhZGF0YUIgPSBKU09OLnBhcnNlKGIubWV0YWRhdGEpO1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIG1ldGFkYXRhQi5tYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZSAtXHJcbiAgICAgICAgICAgICAgbWV0YWRhdGFBLm1hdHRlcnBvcnRGbG9vclNlcXVlbmNlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCBtdWx0aUZsb29yWm9uZXMgPSB0aGlzLnpvbmVzUGVyU3BhY2UuZmlsdGVyKFxyXG4gICAgICAgICAgKHpvbmUpID0+IHpvbmUuaXNNdWx0aXBsZUZsb29yWm9uZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gc29ydCBhbHBoYWJldGljYWxseVxyXG4gICAgICAgIG11bHRpRmxvb3Jab25lcy5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKTtcclxuICAgICAgICAvLyBtZXJnZSBtdWx0aUZsb29yIGFuZCBGbG9vcnNcclxuICAgICAgICB0aGlzLmZsb29yc1BlclNwYWNlID0gWy4uLnRoaXMuZmxvb3JzUGVyU3BhY2UsIC4uLm11bHRpRmxvb3Jab25lc107XHJcbiAgICAgICAgaWYgKHRoaXMuZmxvb3JzUGVyU3BhY2UubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICBbdGhpcy5zZWxlY3RlZEZsb29yXSA9IHRoaXMuZmxvb3JzUGVyU3BhY2U7XHJcbiAgICAgICAgICB0aGlzLm9uRmxvb3JDbGljayhmYWxzZSkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUubWVzc2FnZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5sb2coJ2Vycm9yIG9uQ2hvc2VuTG9jYXRpb24nLCBlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkxvY2F0aW9uQ2xpY2soKSB7XHJcbiAgICB0aGlzLmNsZWFyRGF0YSgpO1xyXG4gICAgdGhpcy5zZW5kVXBkYXRlTG9jYXRpb25FdmVudCgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25GbG9vckNsaWNrKGVtaXRFdmVudCA9IHRydWUpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRmxvb3IpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Zsb29ySWQnLCB0aGlzLnNlbGVjdGVkRmxvb3IuaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2Zsb29ySWQnKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRmxvb3IgJiYgdGhpcy5zZWxlY3RlZEZsb29yLmlzTXVsdGlwbGVGbG9vclpvbmUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFpvbmUgPSB0aGlzLnNlbGVjdGVkRmxvb3I7XHJcbiAgICAgIHRoaXMub25ab25lQ2xpY2soKS5jYXRjaCgoZSkgPT4gY29uc29sZS5sb2coZS5tZXNzYWdlKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub25ab25lQ2xpY2soKS5jYXRjaCgoZSkgPT4gY29uc29sZS5sb2coZS5tZXNzYWdlKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN3ZWVwVG9HbyA9IG51bGw7XHJcbiAgICB0aGlzLnNlbGVjdGVkWm9uZSA9IG51bGw7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2hpbGRab25lID0gbnVsbDtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd6b25lSWQnKTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdjaGlsZFpvbmVJZCcpO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGbG9vciA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UubmF2QmFyWm9uZUlEQ2hhbmdlLm5leHQobnVsbCk7XHJcbiAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50TmF2QmFyWm9uZUlEID0gbnVsbDtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGVtaXRFdmVudCkge1xyXG4gICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UubmF2QmFyWm9uZUlEQ2hhbmdlLm5leHQodGhpcy5zZWxlY3RlZEZsb29yLmlkKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudE5hdkJhclpvbmVJRCA9IHRoaXMuc2VsZWN0ZWRGbG9vci5pZDtcclxuICAgIGF3YWl0IHdhaXRVbnRpbChcclxuICAgICAgKCkgPT4gdGhpcy56b25lc1BlclNwYWNlICE9PSBudWxsICYmIHRoaXMuem9uZXNQZXJTcGFjZSAhPT0gdW5kZWZpbmVkXHJcbiAgICApO1xyXG4gICAgdGhpcy56b25lc1BlckZsb29yID0gdGhpcy56b25lc1BlclNwYWNlLmZpbHRlcihcclxuICAgICAgKHpvbmUpID0+XHJcbiAgICAgICAgLy8gem9uZS5pZCA9PT0gdGhpcy5zZWxlY3RlZEZsb29yLmlkIHx8XHJcbiAgICAgICAgem9uZS5wYXJlbnRJRCA9PT0gdGhpcy5zZWxlY3RlZEZsb29yLmlkXHJcbiAgICApO1xyXG4gICAgdGhpcy56b25lc1BlckZsb29yLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgY29uc3QgQ29sbGF0b3IgPSBuZXcgSW50bC5Db2xsYXRvcih1bmRlZmluZWQsIHtcclxuICAgICAgICBudW1lcmljOiB0cnVlLFxyXG4gICAgICAgIHNlbnNpdGl2aXR5OiAnYWNjZW50JyxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgQ29sbGF0b3IuY29tcGFyZShhLmNvZGVfcmVmLCBiLmNvZGVfcmVmKSB8fFxyXG4gICAgICAgIENvbGxhdG9yLmNvbXBhcmUoYS5uYW1lLCBiLm5hbWUpXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uWm9uZUNsaWNrKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENoaWxkWm9uZSA9IG51bGw7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnY2hpbGRab25lSWQnKTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkWm9uZSkge1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnem9uZUlkJywgdGhpcy5zZWxlY3RlZFpvbmUuaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3pvbmVJZCcpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRab25lID09PSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmxvb3IgPT09IG51bGwpIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UubmF2QmFyWm9uZUlEQ2hhbmdlLm5leHQobnVsbCk7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmN1cnJlbnROYXZCYXJab25lSUQgPSBudWxsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5uYXZCYXJab25lSURDaGFuZ2UubmV4dCh0aGlzLnNlbGVjdGVkRmxvb3IuaWQpO1xyXG4gICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50TmF2QmFyWm9uZUlEID0gdGhpcy5zZWxlY3RlZEZsb29yLmlkO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2VuZEtpbmVzaXNBbmFseXRpY3NFdmVudEZvclpvbmUoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFpvbmU/LmlkLFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRab25lPy5uYW1lXHJcbiAgICAgICkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUubWVzc2FnZSkpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoaWxkcmVuWm9uZXMgPSB0aGlzLnpvbmVzUGVyU3BhY2UuZmlsdGVyKFxyXG4gICAgICAoem9uZSkgPT4gem9uZS5wYXJlbnRJRCA9PT0gdGhpcy5zZWxlY3RlZFpvbmUuaWRcclxuICAgICk7XHJcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UubmF2QmFyWm9uZUlEQ2hhbmdlLm5leHQodGhpcy5zZWxlY3RlZFpvbmUuaWQpO1xyXG4gICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmN1cnJlbnROYXZCYXJab25lSUQgPSB0aGlzLnNlbGVjdGVkWm9uZS5pZDtcclxuICAgIHRoaXMuc2VuZEtpbmVzaXNBbmFseXRpY3NFdmVudEZvclpvbmUoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRab25lPy5pZCxcclxuICAgICAgdGhpcy5zZWxlY3RlZFpvbmU/Lm5hbWVcclxuICAgICkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUubWVzc2FnZSkpO1xyXG4gIH1cclxuXHJcbiAgb25DaGlsZFpvbmVDbGljaygpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkQ2hpbGRab25lKSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjaGlsZFpvbmVJZCcsIHRoaXMuc2VsZWN0ZWRDaGlsZFpvbmU/LmlkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdjaGlsZFpvbmVJZCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2VuZEtpbmVzaXNBbmFseXRpY3NFdmVudEZvclpvbmUoXHJcbiAgICB6b25lSWQ6IHN0cmluZyxcclxuICAgIHpvbmVOYW1lOiBzdHJpbmdcclxuICApOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghIXRoaXMuYXdzS2luZXNpc0FuYWx5dGljcyAmJiAhIXRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5yZWNvcmQgJiYgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLnJlY29yZCgpKSB7XHJcbiAgICAgIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5nZXRJbnN0YW5jZSgpLnJlY29yZChcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBldmVudFR5cGU6ICdab25lIENoYW5nZScsXHJcbiAgICAgICAgICAgIHpvbmVJZDogem9uZUlkLFxyXG4gICAgICAgICAgICB6b25lTmFtZTogem9uZU5hbWUsXHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6IHRoaXMuc2VsZWN0ZWRMb2NhdGlvbj8uaWQsXHJcbiAgICAgICAgICAgIGxvY2F0aW9uTmFtZTogdGhpcy5zZWxlY3RlZExvY2F0aW9uPy5uYW1lLFxyXG4gICAgICAgICAgICB1c2VyOiB0aGlzLnVzZXJTZXJ2aWNlPy5jdSxcclxuICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxyXG4gICAgICAgICAgICBmbG9vcklkOiB0aGlzLnNlbGVjdGVkRmxvb3I/LmlkLFxyXG4gICAgICAgICAgICBjaGlsZFpvbmVJZDogdGhpcy5zZWxlY3RlZENoaWxkWm9uZT8uaWQsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc3RyZWFtTmFtZTogJ3NtYXJ0ZXJwbGFuS2luZXNpcy1hbmFseXRpY3MnLFxyXG4gICAgICAgICAgLy8gcGFydGl0aW9uS2V5OiBcIlwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgJ0FXU0tpbmVzaXMnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBvblZpc2l0Q2xpY2soZXZlbnQpIHtcclxuICAgIHRoaXMuY2xlYXJEYXRhKGZhbHNlKTtcclxuICAgIGNvbnN0IGluZGV4ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgY29uc3QgdmlzaXQgPSB0aGlzLnZpc2l0c1BlclNwYWNlW2luZGV4XTtcclxuICAgIHRoaXMuc2VsZWN0ZWRNb2RlbDNkID0gdmlzaXQubW9kZWwzZDtcclxuICAgIGNvbnN0IHBhcmVudFpvbmVGb3JWaXNpdCA9IGF3YWl0IHRoaXMudmlzaXRTZXJ2aWNlLmdldERlZmF1bHRab25lRm9yVmlzaXQoXHJcbiAgICAgIHZpc2l0XHJcbiAgICApO1xyXG4gICAgdGhpcy5mbG9vcnNQZXJTcGFjZSA9IHRoaXMuem9uZXNQZXJTcGFjZS5maWx0ZXIoXHJcbiAgICAgICh6b25lKSA9PlxyXG4gICAgICAgIHpvbmUubGF5ZXIgJiZcclxuICAgICAgICB6b25lLmxheWVyLm5hbWUuaW5jbHVkZXMoJ0ZMT09SJykgJiZcclxuICAgICAgICB6b25lLnBhcmVudElEID09PSBwYXJlbnRab25lRm9yVmlzaXQuaWRcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnb1RvKCkge1xyXG4gICAgdGhpcy52aWV3ZXJTZXJ2aWNlLmdvVG9UcmlnZ2VyZWQubmV4dCgpO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRab25lICYmICF0aGlzLnNlbGVjdGVkWm9uZS52aXJ0dWFsKSB7XHJcbiAgICAgIHRoaXMuc3dlZXBUb0dvID0gdGhpcy5zZWxlY3RlZFpvbmUuc3RhcnRTd2VlcElEXHJcbiAgICAgICAgPyB0aGlzLnNlbGVjdGVkWm9uZS5zdGFydFN3ZWVwSURcclxuICAgICAgICA6IHRoaXMuc2VsZWN0ZWRab25lLnN3ZWVwSURzWzBdO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGbG9vciAmJiAhdGhpcy5zZWxlY3RlZFpvbmUpIHtcclxuICAgICAgdGhpcy5mbG9vclRvR28gPSB0aGlzLnNlbGVjdGVkRmxvb3I7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pc1dpdGhpblNhbWVWaXNpdCgpKSB7XHJcbiAgICAgIHRoaXMuZ29Ub1N3ZWVwT3JGbG9vcigpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuc3dlZXBUb0dvKSB7XHJcbiAgICAgICAgdGhpcy52aWV3ZXJTZXJ2aWNlLnNldFN3ZWVwVG9Nb3ZlKHRoaXMuc3dlZXBUb0dvKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5mbG9vclRvR28gJiYgdGhpcy5mbG9vcnNQZXJTcGFjZS5sZW5ndGggIT09IDEpIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuZmxvb3JUb0dvID0gdGhpcy5mbG9vclRvR287XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yb3V0ZXJcclxuICAgICAgICAubmF2aWdhdGUoWyd2aXNpdCcsIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbi5pZF0sIHtcclxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IG1vZGVsM0Q6IHRoaXMuc2VsZWN0ZWRNb2RlbDNkIH0sXHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUubWVzc2FnZSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNXaXRoaW5TYW1lVmlzaXQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmN1cnJlbnRMb2NhdGlvbklEID09PSB0aGlzLnNlbGVjdGVkTG9jYXRpb24uaWQgJiZcclxuICAgICAgdGhpcy5zZWxlY3RlZE1vZGVsM2QgPT09IHRoaXMuY3VycmVudE1vZGVsM2RcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnb1RvU3dlZXBPckZsb29yKCkge1xyXG4gICAgaWYgKHRoaXMuc3dlZXBUb0dvKSB7XHJcbiAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5nb1RvU3dlZXBXaXRoUm90YXRpb24odGhpcy5zd2VlcFRvR28pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZmxvb3JUb0dvKSB7XHJcbiAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5nb1RvRmxvb3IodGhpcy5mbG9vclRvR28pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gaGFzSGlzdG9yeSgpOiBib29sZWFuIHtcclxuICAvLyAgICAgcmV0dXJuIHRoaXMubmF2aWdhdG9yU2VydmljZS5tb2RlbEhhc0hpc3RvcnkodGhpcy5zZWxlY3RlZE1vZGVsM2QpO1xyXG4gIC8vIH1cclxuXHJcbiAgY2FuR28oKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB2aWV3ZXJJc1JlYWR5ID1cclxuICAgICAgdGhpcy52aWV3ZXJTZXJ2aWNlLmlzTG9hZGVkICYmIHRoaXMudmlld2VyU2VydmljZS5zaG93aW5nVmlld2VyO1xyXG4gICAgY29uc3Qgbm9WaWV3ZXIgPSAhdGhpcy52aWV3ZXJTZXJ2aWNlLnNob3dpbmdWaWV3ZXI7XHJcbiAgICByZXR1cm4gdmlld2VySXNSZWFkeSB8fCBub1ZpZXdlcjtcclxuICB9XHJcblxyXG4gIHNob3dMb2NhdGlvbigpOiBzdHJpbmcge1xyXG4gICAgaWYgKFxyXG4gICAgICB3aW5kb3cuaW5uZXJXaWR0aCA8IDk5MiAmJlxyXG4gICAgICB0aGlzLm5hdmJhclNlbGVjdE1lbnUgJiZcclxuICAgICAgdGhpcy5uYXZiYXJTZWxlY3RNZW51Lm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lLnNlYXJjaCgnc2hvdycpID09PSAtMSAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGVkTG9jYXRpb25cclxuICAgICkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZExvY2F0aW9uLm5hbWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBvbkhpZGVDbGljaygpIHtcclxuICAgIHRoaXMuYmFzZVZpc2liaWxpdHlTZXJ2aWNlLmlzQ2hhbmdlUG9zaXRpb25WaXNpYmxlLm5leHQoZmFsc2UpO1xyXG4gIH1cclxufVxyXG4iLCI8bmF2IGNsYXNzPVwibmF2YmFyIG5hdmJhci1leHBhbmQtbWQgbmF2YmFyLWRhcmsgbmF2YmFyLWludmVyc2Ugc2Vjb25kLW5hdlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCB3LTEwMFwiPlxyXG4gICAgICAgIDxkaXYgI25hdmJhclNlbGVjdE1lbnUgY2xhc3M9XCJ3LTEwMFwiIGlkPVwibmF2LWl0ZW0tY29udGFpbmVyLWJsdWVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LW1kLXJvdyBwLTEgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmbGV4LWZpbGwgZmxleC1sZy1maWxsLXVuc2V0IGxvY2F0aW9uIHNlbGVjdC1tZW51XCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTG9jYXRpb25cIiAobmdNb2RlbENoYW5nZSk9XCJvbkxvY2F0aW9uQ2xpY2soKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwibnVsbFwiIHNlbGVjdGVkPnt7ICdMb2NhdGlvbicgfCB0cmFuc2xhdGUgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBsb2Mgb2YgbG9jYXRpb25zOyBpbmRleCBhcyBpbmRleFwiIFtuZ1ZhbHVlXT1cImxvY1wiPiB7eyBsb2MubmFtZSB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZsZXgtZmlsbCBmbGV4LWxnLWZpbGwtdW5zZXQgc2VsZWN0LW1lbnVcIiAoY2hhbmdlKT1cIm9uVmlzaXRDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZpc2l0c1BlclNwYWNlICYmIHZpc2l0c1BlclNwYWNlLmxlbmd0aCA+IDFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZGVmYXVsdFwiIHNlbGVjdGVkIGRpc2FibGVkIGhpZGRlbj57eydWaXNpdCcgfCB0cmFuc2xhdGV9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHZpc2l0IG9mIHZpc2l0c1BlclNwYWNlOyBpbmRleCBhcyBpbmRleFwiIHZhbHVlPVwie3tpbmRleH19XCI+e3sgdmlzaXQubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZmxleC1maWxsIGZsZXgtbGctZmlsbC11bnNldCBmbG9vciBzZWxlY3QtbWVudVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRGbG9vclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25GbG9vckNsaWNrKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIiBzZWxlY3RlZD57eydGbG9vcicgfCB0cmFuc2xhdGV9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGZsb29yIG9mIGZsb29yc1BlclNwYWNlXCIgW25nVmFsdWVdPVwiZmxvb3JcIj57eyBmbG9vci5uYW1lfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmbGV4LWZpbGwgZmxleC1sZy1maWxsLXVuc2V0IHNlbGVjdC1tZW51IHpvbmVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkWm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25ab25lQ2xpY2soKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwibnVsbFwiIHNlbGVjdGVkPnt7J1pvbmUnIHwgdHJhbnNsYXRlfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB6b25lIG9mIHpvbmVzUGVyRmxvb3JcIiBbbmdWYWx1ZV09XCJ6b25lXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiem9uZS5jb2RlX3JlZlwiPnt7em9uZS5jb2RlX3JlZn19Xzwvc3Bhbj57e3pvbmUubmFtZX19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZmxleC1maWxsIGZsZXgtbGctZmlsbC11bnNldCBzZWxlY3QtbWVudVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRDaGlsZFpvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2hpbGRyZW5ab25lcyAmJiBjaGlsZHJlblpvbmVzLmxlbmd0aD4wXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGlsZFpvbmVDbGljaygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJudWxsXCIgc2VsZWN0ZWQgZGlzYWJsZWQ+e3snWm9uZScgfCB0cmFuc2xhdGV9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHpvbmUgb2YgY2hpbGRyZW5ab25lc1wiIFtuZ1ZhbHVlXT1cInpvbmVcIj57eyB6b25lLm5hbWV9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJnb1RvKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIG14LTIgdy1tZC1maXQtY29udGVudCBoLW1kLWZpdC1jb250ZW50IGFsaWduLXNlbGYtbWQtY2VudGVyIGJ0bi0zZCBkLW5vbmUgZC1sZy1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFzZWxlY3RlZExvY2F0aW9uIHx8ICFzZWxlY3RlZE1vZGVsM2QgfHwgIWNhbkdvKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24tZ28tdG8tM2QgZC1pbmxpbmUtYmxvY2tcIj48L2k+IHt7JzNEIHZpc2l0JyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbWwtMCBwLTFcIiAqbmdJZj1cInNob3dMb2NhdGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZ3LWJvbGQgbGgtYmFzZSBhbGlnbi1taWRkbGUgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBzaG93TG9jYXRpb24oKSB9fVxyXG4gICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtbC0wIHAtMSBkLWJsb2NrIGQtbGctbm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZ29UbygpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbCB3LTI1IG14LTIgdy1tZC1maXQtY29udGVudCBoLW1kLWZpdC1jb250ZW50IGFsaWduLXNlbGYtbWQtY2VudGVyIGJ0bi0zZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFzZWxlY3RlZExvY2F0aW9uIHx8ICFzZWxlY3RlZE1vZGVsM2QgfHwgIWNhbkdvKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24tZ28tdG8tM2QgZC1pbmxpbmUtYmxvY2tcIj48L2k+IHt7JzNEIHZpc2l0JyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uYXY+Il19
407
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL21lbnUtYmFyL25hdmlnYXRpb24tYmFyL25hdmlnYXRpb24tYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9tZW51LWJhci9uYXZpZ2F0aW9uLWJhci9uYXZpZ2F0aW9uLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQWdCckQsTUFBTSxPQUFPLHNCQUFzQjtJQTBDdkI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBakRWLG1CQUFtQixDQUFNLENBQUMsS0FBSztJQUVBLGdCQUFnQixDQUFPO0lBRXRELFNBQVMsQ0FBVTtJQUVuQixpQkFBaUIsQ0FBUztJQUUxQixjQUFjLENBQVM7SUFFdkIsZ0JBQWdCLEdBQVUsSUFBSSxDQUFDO0lBRS9CLGVBQWUsQ0FBUztJQUV4QixhQUFhLEdBQVMsSUFBSSxDQUFDO0lBRTNCLFlBQVksR0FBUyxJQUFJLENBQUM7SUFFMUIsaUJBQWlCLEdBQVMsSUFBSSxDQUFDO0lBRS9CLGNBQWMsR0FBWSxJQUFJLENBQUM7SUFFL0IsY0FBYyxHQUFXLElBQUksQ0FBQztJQUU5QixhQUFhLEdBQVcsSUFBSSxDQUFDO0lBRTdCLGFBQWEsR0FB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QztRQUNwQyxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxxQkFBcUIsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakUsQ0FBQzt3R0F0Y1Usc0JBQXNCLGtCQXdDdkIsbUNBQW1DOzRGQXhDbEMsc0JBQXNCLGdMQ25CbkMsMHNIQW1ETTs7NEZEaENPLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxvQkFBb0I7OzBCQTRDM0IsTUFBTTsyQkFBQyxtQ0FBbUM7MlNBckNkLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHdhaXRVbnRpbCB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMuc2VydmljZSc7XG5pbXBvcnQgeyBTcGFjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2RlbHMvc3BhY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBWaXNpdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2RlbHMvdmlzaXQuc2VydmljZSc7XG5pbXBvcnQgeyBab25lU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZGVscy96b25lLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFZpZXdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy92aWV3ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTcGFjZSwgVmlzaXQsIFpvbmUgfSBmcm9tICcuLi8uLi8uLi90eXBlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBab25lQ2hhbmdlU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy96b25lQ2hhbmdlLnNlcnZpY2VcIjtcbmltcG9ydCB7IEJhc2VWaXNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Jhc2VWaXNpYmlsaXR5LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItbmF2aWdhdGlvbi1iYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbmF2aWdhdGlvbi1iYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9uYXZpZ2F0aW9uLWJhci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uQmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgYXdzS2luZXNpc0FuYWx5dGljczogYW55OyAvL0FXU1xuXG4gIEBWaWV3Q2hpbGQoJ25hdmJhclNlbGVjdE1lbnUnKSBuYXZiYXJTZWxlY3RNZW51ITogYW55O1xuXG4gIGxvY2F0aW9uczogU3BhY2VbXTtcblxuICBjdXJyZW50TG9jYXRpb25JRDogc3RyaW5nO1xuXG4gIGN1cnJlbnRNb2RlbDNkOiBzdHJpbmc7XG5cbiAgc2VsZWN0ZWRMb2NhdGlvbjogU3BhY2UgPSBudWxsO1xuXG4gIHNlbGVjdGVkTW9kZWwzZDogc3RyaW5nO1xuXG4gIHNlbGVjdGVkRmxvb3I6IFpvbmUgPSBudWxsO1xuXG4gIHNlbGVjdGVkWm9uZTogWm9uZSA9IG51bGw7XG5cbiAgc2VsZWN0ZWRDaGlsZFpvbmU6IFpvbmUgPSBudWxsO1xuXG4gIHZpc2l0c1BlclNwYWNlOiBWaXNpdFtdID0gbnVsbDtcblxuICBmbG9vcnNQZXJTcGFjZTogWm9uZVtdID0gbnVsbDtcblxuICB6b25lc1BlclNwYWNlOiBab25lW10gPSBudWxsO1xuXG4gIHpvbmVzUGVyRmxvb3I6IFpvbmVbXSA9IG51bGw7XG5cbiAgY2hpbGRyZW5ab25lczogWm9uZVtdID0gbnVsbDtcblxuICBzd2VlcFRvR286IHN0cmluZztcblxuICBmbG9vclRvR286IFpvbmU7XG5cbiAgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIG5hdkV2ZW50czogT2JzZXJ2YWJsZTxOYXZpZ2F0aW9uRW5kPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdjdXJyZW50QXdzS2luZXNpc0FuYWx5dGljc1NlcnZpY2UnKVxuICAgIGF3c0tpbmVzaXNBbmFseXRpY3NJbmplY3RlZDogYW55LFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBzcGFjZVNlcnZpY2U6IFNwYWNlU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBCYXNlVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB6b25lU2VydmljZTogWm9uZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB2aXNpdFNlcnZpY2U6IFZpc2l0U2VydmljZSxcbiAgICBwcml2YXRlIHZpZXdlclNlcnZpY2U6IFZpZXdlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgem9uZUNoYW5nZVNlcnZpY2U6IFpvbmVDaGFuZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFzZVZpc2liaWxpdHlTZXJ2aWNlOiBCYXNlVmlzaWJpbGl0eVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzID0gYXdzS2luZXNpc0FuYWx5dGljc0luamVjdGVkO1xuICAgIHRoaXMuc3BhY2VTZXJ2aWNlLmxvY2F0aW9uVXBkYXRlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgobG9jcykgPT4ge1xuICAgICAgICB0aGlzLmxvY2F0aW9ucyA9IGxvY3M7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYXRpb24pIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTG9jYXRpb24gPSB0aGlzLmZpbmRMb2NhdGlvbkJ5SUQoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTG9jYXRpb24uaWRcbiAgICAgICAgICApOyAvLyBVcGRhdGUgT2JqZWN0IChvYmplY3QgYWRkcmVzcyB3aWxsIGNoYW5nZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIHRoaXMudmlld2VyU2VydmljZS52aWV3ZXJJc09uXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoZGF0YTogeyBzcGFjZUlEOiBzdHJpbmc7IG1vZGVsM0Q6IHN0cmluZzsgc3dlZXA6IHN0cmluZyB8IG51bGwgfSkgPT4ge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdtZW51IG5hdmlnYXRpb24gcmVjZWl2ZWQgdXBkYXRlJywgZGF0YSk7XG4gICAgICAgICAgdGhpcy5jdXJyZW50TG9jYXRpb25JRCA9IGRhdGEuc3BhY2VJRDtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRNb2RlbDNkID0gZGF0YS5tb2RlbDNEO1xuICAgICAgICAgIGlmICghZGF0YS5zcGFjZUlEKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTG9jYXRpb24gPSBudWxsO1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2xvY2F0aW9uSWQnKTtcbiAgICAgICAgICAgIHRoaXMuc2VuZFVwZGF0ZUxvY2F0aW9uRXZlbnQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgKCF0aGlzLnNlbGVjdGVkTG9jYXRpb24gfHxcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9uLmlkICE9PSBkYXRhLnNwYWNlSUQpICYmXG4gICAgICAgICAgICB0aGlzLmxvY2F0aW9uc1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9uID0gdGhpcy5maW5kTG9jYXRpb25CeUlEKGRhdGEuc3BhY2VJRCk7XG4gICAgICAgICAgICB0aGlzLnNlbmRVcGRhdGVMb2NhdGlvbkV2ZW50KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgLyoqXG4gICAgICogV2UgbGlzdGVuIGZvciBMb2NhdGlvbiBjaGFuZ2UgZXZlbnRcbiAgICAgKi9cbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UubG9jYXRpb25JRENoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmNsZWFyRGF0YSgpO1xuICAgICAgICB0aGlzLmN1cnJlbnRMb2NhdGlvbklEID0gaWQ7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbiA9IHRoaXMuZmluZExvY2F0aW9uQnlJRChpZCk7XG4gICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50TmF2QmFyTG9jYXRpb25JRCA9IGlkO1xuICAgICAgICB0aGlzLm9uU2VsZWN0ZWRMb2NhdGlvbkNoYW5nZWQoKS5jYXRjaCgoZSkgPT4gY29uc29sZS5sb2coZS5tZXNzYWdlKSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZXNGb3JVc2VyQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jICh6b25lcykgPT4ge1xuICAgICAgICBpZiAoem9uZXMpIHtcbiAgICAgICAgICBhd2FpdCB3YWl0VW50aWwoKCkgPT4gdGhpcy5mbG9vcnNQZXJTcGFjZSAhPT0gbnVsbCk7XG4gICAgICAgICAgY29uc3QgZmxvb3Jab25lID0gem9uZXMuZmluZChcbiAgICAgICAgICAgICh6b25lKSA9PiB6b25lLmxheWVyICYmIHpvbmUubGF5ZXIubmFtZSA9PT0gJ0ZMT09SJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGZsb29yWm9uZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZsb29yID0gdGhpcy5mbG9vcnNQZXJTcGFjZS5maW5kKFxuICAgICAgICAgICAgICAoZikgPT4gZi5pZCA9PT0gZmxvb3Jab25lLmlkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgLy8gRW1pdCBldmVudCB0byBkaXNwYXRjaCB2YWx1ZSBvZiAgdGhpcy5zZWxlY3RlZEZsb29yIGluIGFsbCBwb2kvdGlja2V0L2VxdWlwbWVudC9tZWFzdXJlIHNlcnZpY2VzXG4gICAgICAgICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLmZsb29ySGFzQ2hhbmdlZC5lbWl0KHRoaXMuc2VsZWN0ZWRGbG9vcik7XG4gICAgICAgICAgICB0aGlzLm9uRmxvb3JDbGljayhmYWxzZSkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUubWVzc2FnZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBhd2FpdCB0aGlzLmluaXRMb2NhdGlvbnMoKTtcbiAgICB0aGlzLmhhbmRsZVN0YXJ0VXJsKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLy8gQ2FwdHVyZSB0aGUgXCJpZFwiIGluIGxvY2FsaXNhdGlvbi86aWQgcm91dGVzXG4gIGhhbmRsZVN0YXJ0VXJsKCkge1xuICAgIGlmICh0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoJ2xvY2FsaXNhdGlvbi8nKSkge1xuICAgICAgY29uc3QgcGF0aHMgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJy8nKTsgLy8gL2Rhc2hib2FyZC9sb2NhbGlzYXRpb24vZmMwYWFkYjctM2M4OS00MzQ5LWFkMWYtYmZlOWI0NDkxNmMwXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcbiAgICAgIGNvbnN0IGxvY0lEID0gcGF0aHNbM107XG4gICAgICBpZiAodGhpcy5jdXJyZW50TG9jYXRpb25JRCAhPT0gbG9jSUQpIHtcbiAgICAgICAgdGhpcy5jbGVhckRhdGEoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50TG9jYXRpb25JRCA9IGxvY0lEO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTG9jYXRpb24gPSB0aGlzLmZpbmRMb2NhdGlvbkJ5SUQobG9jSUQpO1xuICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudE5hdkJhckxvY2F0aW9uSUQgPSBsb2NJRDtcbiAgICAgICAgdGhpcy5vblNlbGVjdGVkTG9jYXRpb25DaGFuZ2VkKCkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUubWVzc2FnZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGluaXRMb2NhdGlvbnMoKSB7XG4gICAgdGhpcy5sb2NhdGlvbnMgPSB0aGlzLnNwYWNlU2VydmljZS5sb2NhdGlvbnNGb3JVc2VyO1xuICAgIGlmICh0aGlzLmxvY2F0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMubG9jYXRpb25zID0gYXdhaXQgdGhpcy5zcGFjZVNlcnZpY2UuZ2V0TG9jYXRpb25zRm9yQ3VycmVudFVzZXIoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY3VycmVudExvY2F0aW9uSUQgJiYgdGhpcy5sb2NhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9uID0gdGhpcy5maW5kTG9jYXRpb25CeUlEKHRoaXMuY3VycmVudExvY2F0aW9uSUQpO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhdGlvbikge1xuICAgICAgICB0aGlzLnNlbmRVcGRhdGVMb2NhdGlvbkV2ZW50KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYSBsb2NhdGlvbiB3aXRoIGEgZ2l2ZW4gSURcbiAgICogQHBhcmFtIGlkIElEIGZvciB0aGUgbG9jYXRpb25cbiAgICogQHJldHVybnMgVGhlIGxvY2F0aW9uIG9yIG51bGwgaWYgbm8gbG9jYXRpb24gd2VyZSBmb3VuZFxuICAgKi9cbiAgZmluZExvY2F0aW9uQnlJRChpZDogc3RyaW5nKTogU3BhY2Uge1xuICAgIGNvbnN0IHNwYWNlID0gdGhpcy5sb2NhdGlvbnMuZmluZCgobG9jKSA9PiBsb2MuaWQgPT09IGlkKTtcbiAgICByZXR1cm4gc3BhY2UgfHwgbnVsbDsgLyoqIENvbnZlcnQgdG8gbnVsbCBpZiB1bmRlZmluZWQgKi9cbiAgfVxuXG4gIGNsZWFyRGF0YShjbGVhclZpc2l0czogYm9vbGVhbiA9IHRydWUpIHtcbiAgICB0aGlzLmZsb29yc1BlclNwYWNlID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdGVkRmxvb3IgPSBudWxsO1xuICAgIHRoaXMuem9uZXNQZXJGbG9vciA9IG51bGw7XG4gICAgdGhpcy5jaGlsZHJlblpvbmVzID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdGVkTW9kZWwzZCA9IG51bGw7XG4gICAgdGhpcy5zd2VlcFRvR28gPSBudWxsO1xuICAgIHRoaXMuZmxvb3JUb0dvID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdGVkWm9uZSA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3RlZENoaWxkWm9uZSA9IG51bGw7XG4gICAgaWYgKGNsZWFyVmlzaXRzKSB7XG4gICAgICB0aGlzLnZpc2l0c1BlclNwYWNlID0gbnVsbDtcbiAgICAgIHRoaXMuem9uZXNQZXJTcGFjZSA9IG51bGw7XG4gICAgfVxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdsb2NhdGlvbklkJyk7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2Zsb29ySWQnKTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnem9uZUlkJyk7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2NoaWxkWm9uZUlkJyk7XG4gIH1cblxuICAvKipcbiAgICogV2hlbiB0aGUgc2VsZWN0ZWRMb2NhdGlvbiBjaGFuZ2VzXG4gICAqIFNlbmQgYSBldmVudCB0byBsb2NhdGlvbklEQ2hhbmdlIGZyb20gTmF2aWdhdG9yU2VydmljZVxuICAgKiBUaGUgZXZlbnQgd2lsbCBiZSBjYXRjaCBieSB0aGlzIGNvbXBvbmVudCBhbmQgdGhlIGZpbHRlciBiYXIgd2lsbCBiZSB1cGRhdGVcbiAgICovXG4gIHNlbmRVcGRhdGVMb2NhdGlvbkV2ZW50KCkge1xuICAgIGNvbnN0IGxvY2F0aW9uSUQgPSB0aGlzLnNlbGVjdGVkTG9jYXRpb24gPyB0aGlzLnNlbGVjdGVkTG9jYXRpb24uaWQgOiBudWxsO1xuICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5sb2NhdGlvbklEQ2hhbmdlLm5leHQobG9jYXRpb25JRCk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhdGlvbikge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xvY2F0aW9uSWQnLCB0aGlzLnNlbGVjdGVkTG9jYXRpb24uaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbG9jYXRpb25JZCcpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uU2VsZWN0ZWRMb2NhdGlvbkNoYW5nZWQoKSB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkTG9jYXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudmlzaXRzUGVyU3BhY2UgPSBhd2FpdCB0aGlzLnZpc2l0U2VydmljZS5nZXRWaXNpdHNGb3JTcGFjZUZvclVzZXIoXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbi5pZFxuICAgICAgKTtcbiAgICAgIHRoaXMuem9uZXNQZXJTcGFjZSA9IGF3YWl0IHRoaXMuem9uZVNlcnZpY2UuZ2V0Wm9uZXNCeVNwYWNlRm9yVXNlcihcbiAgICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9uLmlkXG4gICAgICApO1xuICAgICAgaWYgKHRoaXMudmlzaXRzUGVyU3BhY2UubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbDNkID0gdGhpcy52aXNpdHNQZXJTcGFjZVswXS5tb2RlbDNkO1xuICAgICAgICB0aGlzLmZsb29yc1BlclNwYWNlID0gdGhpcy56b25lc1BlclNwYWNlLmZpbHRlcihcbiAgICAgICAgICAoem9uZSkgPT4gem9uZS5sYXllciAmJiB6b25lLmxheWVyLm5hbWUuaW5jbHVkZXMoJ0ZMT09SJylcbiAgICAgICAgKTtcbiAgICAgICAgLy8gc29ydCBmcm9tIGhpZ2hlc3QgZmxvb3IgdG8gbG93ZXN0XG4gICAgICAgIHRoaXMuZmxvb3JzUGVyU3BhY2Uuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgIGlmIChhLm1ldGFkYXRhICYmIGIubWV0YWRhdGEpIHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGFkYXRhQSA9IEpTT04ucGFyc2UoYS5tZXRhZGF0YSk7XG4gICAgICAgICAgICBjb25zdCBtZXRhZGF0YUIgPSBKU09OLnBhcnNlKGIubWV0YWRhdGEpO1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgbWV0YWRhdGFCLm1hdHRlcnBvcnRGbG9vclNlcXVlbmNlIC1cbiAgICAgICAgICAgICAgbWV0YWRhdGFBLm1hdHRlcnBvcnRGbG9vclNlcXVlbmNlXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IG11bHRpRmxvb3Jab25lcyA9IHRoaXMuem9uZXNQZXJTcGFjZS5maWx0ZXIoXG4gICAgICAgICAgKHpvbmUpID0+IHpvbmUuaXNNdWx0aXBsZUZsb29yWm9uZVxuICAgICAgICApO1xuICAgICAgICAvLyBzb3J0IGFscGhhYmV0aWNhbGx5XG4gICAgICAgIG11bHRpRmxvb3Jab25lcy5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKTtcbiAgICAgICAgLy8gbWVyZ2UgbXVsdGlGbG9vciBhbmQgRmxvb3JzXG4gICAgICAgIHRoaXMuZmxvb3JzUGVyU3BhY2UgPSBbLi4udGhpcy5mbG9vcnNQZXJTcGFjZSwgLi4ubXVsdGlGbG9vclpvbmVzXTtcbiAgICAgICAgaWYgKHRoaXMuZmxvb3JzUGVyU3BhY2UubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgW3RoaXMuc2VsZWN0ZWRGbG9vcl0gPSB0aGlzLmZsb29yc1BlclNwYWNlO1xuICAgICAgICAgIHRoaXMub25GbG9vckNsaWNrKGZhbHNlKS5jYXRjaCgoZSkgPT4gY29uc29sZS5sb2coZS5tZXNzYWdlKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coJ2Vycm9yIG9uQ2hvc2VuTG9jYXRpb24nLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgb25Mb2NhdGlvbkNsaWNrKCkge1xuICAgIHRoaXMuY2xlYXJEYXRhKCk7XG4gICAgdGhpcy5zZW5kVXBkYXRlTG9jYXRpb25FdmVudCgpO1xuICB9XG5cbiAgYXN5bmMgb25GbG9vckNsaWNrKGVtaXRFdmVudCA9IHRydWUpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZsb29yKSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZmxvb3JJZCcsIHRoaXMuc2VsZWN0ZWRGbG9vci5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdmbG9vcklkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkRmxvb3IgJiYgdGhpcy5zZWxlY3RlZEZsb29yLmlzTXVsdGlwbGVGbG9vclpvbmUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRab25lID0gdGhpcy5zZWxlY3RlZEZsb29yO1xuICAgICAgdGhpcy5vblpvbmVDbGljaygpLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlLm1lc3NhZ2UpKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vblpvbmVDbGljaygpLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlLm1lc3NhZ2UpKTtcbiAgICB9XG4gICAgdGhpcy5zd2VlcFRvR28gPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRab25lID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdGVkQ2hpbGRab25lID0gbnVsbDtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnem9uZUlkJyk7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2NoaWxkWm9uZUlkJyk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGbG9vciA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLm5hdkJhclpvbmVJRENoYW5nZS5uZXh0KG51bGwpO1xuICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmN1cnJlbnROYXZCYXJab25lSUQgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZW1pdEV2ZW50KSB7XG4gICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UubmF2QmFyWm9uZUlEQ2hhbmdlLm5leHQodGhpcy5zZWxlY3RlZEZsb29yLmlkKTtcbiAgICB9XG5cbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudE5hdkJhclpvbmVJRCA9IHRoaXMuc2VsZWN0ZWRGbG9vci5pZDtcbiAgICBhd2FpdCB3YWl0VW50aWwoXG4gICAgICAoKSA9PiB0aGlzLnpvbmVzUGVyU3BhY2UgIT09IG51bGwgJiYgdGhpcy56b25lc1BlclNwYWNlICE9PSB1bmRlZmluZWRcbiAgICApO1xuICAgIHRoaXMuem9uZXNQZXJGbG9vciA9IHRoaXMuem9uZXNQZXJTcGFjZS5maWx0ZXIoXG4gICAgICAoem9uZSkgPT5cbiAgICAgICAgLy8gem9uZS5pZCA9PT0gdGhpcy5zZWxlY3RlZEZsb29yLmlkIHx8XG4gICAgICAgIHpvbmUucGFyZW50SUQgPT09IHRoaXMuc2VsZWN0ZWRGbG9vci5pZFxuICAgICk7XG4gICAgdGhpcy56b25lc1BlckZsb29yLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IENvbGxhdG9yID0gbmV3IEludGwuQ29sbGF0b3IodW5kZWZpbmVkLCB7XG4gICAgICAgIG51bWVyaWM6IHRydWUsXG4gICAgICAgIHNlbnNpdGl2aXR5OiAnYWNjZW50JyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgQ29sbGF0b3IuY29tcGFyZShhLmNvZGVfcmVmLCBiLmNvZGVfcmVmKSB8fFxuICAgICAgICBDb2xsYXRvci5jb21wYXJlKGEubmFtZSwgYi5uYW1lKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG9uWm9uZUNsaWNrKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRDaGlsZFpvbmUgPSBudWxsO1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdjaGlsZFpvbmVJZCcpO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkWm9uZSkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3pvbmVJZCcsIHRoaXMuc2VsZWN0ZWRab25lLmlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3pvbmVJZCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZFpvbmUgPT09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmxvb3IgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLm5hdkJhclpvbmVJRENoYW5nZS5uZXh0KG51bGwpO1xuICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudE5hdkJhclpvbmVJRCA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UubmF2QmFyWm9uZUlEQ2hhbmdlLm5leHQodGhpcy5zZWxlY3RlZEZsb29yLmlkKTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmN1cnJlbnROYXZCYXJab25lSUQgPSB0aGlzLnNlbGVjdGVkRmxvb3IuaWQ7XG4gICAgICB9XG4gICAgICB0aGlzLnNlbmRLaW5lc2lzQW5hbHl0aWNzRXZlbnRGb3Jab25lKFxuICAgICAgICB0aGlzLnNlbGVjdGVkWm9uZT8uaWQsXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRab25lPy5uYW1lXG4gICAgICApLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlLm1lc3NhZ2UpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jaGlsZHJlblpvbmVzID0gdGhpcy56b25lc1BlclNwYWNlLmZpbHRlcihcbiAgICAgICh6b25lKSA9PiB6b25lLnBhcmVudElEID09PSB0aGlzLnNlbGVjdGVkWm9uZS5pZFxuICAgICk7XG4gICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLm5hdkJhclpvbmVJRENoYW5nZS5uZXh0KHRoaXMuc2VsZWN0ZWRab25lLmlkKTtcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudE5hdkJhclpvbmVJRCA9IHRoaXMuc2VsZWN0ZWRab25lLmlkO1xuICAgIHRoaXMuc2VuZEtpbmVzaXNBbmFseXRpY3NFdmVudEZvclpvbmUoXG4gICAgICB0aGlzLnNlbGVjdGVkWm9uZT8uaWQsXG4gICAgICB0aGlzLnNlbGVjdGVkWm9uZT8ubmFtZVxuICAgICkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUubWVzc2FnZSkpO1xuICB9XG5cbiAgb25DaGlsZFpvbmVDbGljaygpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZENoaWxkWm9uZSkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NoaWxkWm9uZUlkJywgdGhpcy5zZWxlY3RlZENoaWxkWm9uZT8uaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnY2hpbGRab25lSWQnKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzZW5kS2luZXNpc0FuYWx5dGljc0V2ZW50Rm9yWm9uZShcbiAgICB6b25lSWQ6IHN0cmluZyxcbiAgICB6b25lTmFtZTogc3RyaW5nXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghIXRoaXMuYXdzS2luZXNpc0FuYWx5dGljcyAmJiAhIXRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5yZWNvcmQgJiYgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLnJlY29yZCgpKSB7XG4gICAgICB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MuZ2V0SW5zdGFuY2UoKS5yZWNvcmQoXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGV2ZW50VHlwZTogJ1pvbmUgQ2hhbmdlJyxcbiAgICAgICAgICAgIHpvbmVJZDogem9uZUlkLFxuICAgICAgICAgICAgem9uZU5hbWU6IHpvbmVOYW1lLFxuICAgICAgICAgICAgbG9jYXRpb25JZDogdGhpcy5zZWxlY3RlZExvY2F0aW9uPy5pZCxcbiAgICAgICAgICAgIGxvY2F0aW9uTmFtZTogdGhpcy5zZWxlY3RlZExvY2F0aW9uPy5uYW1lLFxuICAgICAgICAgICAgdXNlcjogdGhpcy51c2VyU2VydmljZT8uY3UsXG4gICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICBmbG9vcklkOiB0aGlzLnNlbGVjdGVkRmxvb3I/LmlkLFxuICAgICAgICAgICAgY2hpbGRab25lSWQ6IHRoaXMuc2VsZWN0ZWRDaGlsZFpvbmU/LmlkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RyZWFtTmFtZTogJ3NtYXJ0ZXJwbGFuS2luZXNpcy1hbmFseXRpY3MnLFxuICAgICAgICAgIC8vIHBhcnRpdGlvbktleTogXCJcIixcbiAgICAgICAgfSxcbiAgICAgICAgJ0FXU0tpbmVzaXMnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uVmlzaXRDbGljayhldmVudCkge1xuICAgIHRoaXMuY2xlYXJEYXRhKGZhbHNlKTtcbiAgICBjb25zdCBpbmRleCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICBjb25zdCB2aXNpdCA9IHRoaXMudmlzaXRzUGVyU3BhY2VbaW5kZXhdO1xuICAgIHRoaXMuc2VsZWN0ZWRNb2RlbDNkID0gdmlzaXQubW9kZWwzZDtcbiAgICBjb25zdCBwYXJlbnRab25lRm9yVmlzaXQgPSBhd2FpdCB0aGlzLnZpc2l0U2VydmljZS5nZXREZWZhdWx0Wm9uZUZvclZpc2l0KFxuICAgICAgdmlzaXRcbiAgICApO1xuICAgIHRoaXMuZmxvb3JzUGVyU3BhY2UgPSB0aGlzLnpvbmVzUGVyU3BhY2UuZmlsdGVyKFxuICAgICAgKHpvbmUpID0+XG4gICAgICAgIHpvbmUubGF5ZXIgJiZcbiAgICAgICAgem9uZS5sYXllci5uYW1lLmluY2x1ZGVzKCdGTE9PUicpICYmXG4gICAgICAgIHpvbmUucGFyZW50SUQgPT09IHBhcmVudFpvbmVGb3JWaXNpdC5pZFxuICAgICk7XG4gIH1cblxuICBhc3luYyBnb1RvKCkge1xuICAgIHRoaXMudmlld2VyU2VydmljZS5nb1RvVHJpZ2dlcmVkLm5leHQoKTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFpvbmUgJiYgIXRoaXMuc2VsZWN0ZWRab25lLnZpcnR1YWwpIHtcbiAgICAgIHRoaXMuc3dlZXBUb0dvID0gdGhpcy5zZWxlY3RlZFpvbmUuc3RhcnRTd2VlcElEXG4gICAgICAgID8gdGhpcy5zZWxlY3RlZFpvbmUuc3RhcnRTd2VlcElEXG4gICAgICAgIDogdGhpcy5zZWxlY3RlZFpvbmUuc3dlZXBJRHNbMF07XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkRmxvb3IgJiYgIXRoaXMuc2VsZWN0ZWRab25lKSB7XG4gICAgICB0aGlzLmZsb29yVG9HbyA9IHRoaXMuc2VsZWN0ZWRGbG9vcjtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNXaXRoaW5TYW1lVmlzaXQoKSkge1xuICAgICAgdGhpcy5nb1RvU3dlZXBPckZsb29yKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnN3ZWVwVG9Hbykge1xuICAgICAgICB0aGlzLnZpZXdlclNlcnZpY2Uuc2V0U3dlZXBUb01vdmUodGhpcy5zd2VlcFRvR28pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZmxvb3JUb0dvICYmIHRoaXMuZmxvb3JzUGVyU3BhY2UubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5mbG9vclRvR28gPSB0aGlzLmZsb29yVG9HbztcbiAgICAgIH1cbiAgICAgIHRoaXMucm91dGVyXG4gICAgICAgIC5uYXZpZ2F0ZShbJ3Zpc2l0JywgdGhpcy5zZWxlY3RlZExvY2F0aW9uLmlkXSwge1xuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IG1vZGVsM0Q6IHRoaXMuc2VsZWN0ZWRNb2RlbDNkIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZSkgPT4gY29uc29sZS5sb2coZS5tZXNzYWdlKSk7XG4gICAgfVxuICB9XG5cbiAgaXNXaXRoaW5TYW1lVmlzaXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY3VycmVudExvY2F0aW9uSUQgPT09IHRoaXMuc2VsZWN0ZWRMb2NhdGlvbi5pZCAmJlxuICAgICAgdGhpcy5zZWxlY3RlZE1vZGVsM2QgPT09IHRoaXMuY3VycmVudE1vZGVsM2RcbiAgICApO1xuICB9XG5cbiAgZ29Ub1N3ZWVwT3JGbG9vcigpIHtcbiAgICBpZiAodGhpcy5zd2VlcFRvR28pIHtcbiAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5nb1RvU3dlZXBXaXRoUm90YXRpb24odGhpcy5zd2VlcFRvR28pO1xuICAgIH1cbiAgICBpZiAodGhpcy5mbG9vclRvR28pIHtcbiAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5nb1RvRmxvb3IodGhpcy5mbG9vclRvR28pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGhhc0hpc3RvcnkoKTogYm9vbGVhbiB7XG4gIC8vICAgICByZXR1cm4gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLm1vZGVsSGFzSGlzdG9yeSh0aGlzLnNlbGVjdGVkTW9kZWwzZCk7XG4gIC8vIH1cblxuICBjYW5HbygpOiBib29sZWFuIHtcbiAgICBjb25zdCB2aWV3ZXJJc1JlYWR5ID1cbiAgICAgIHRoaXMudmlld2VyU2VydmljZS5pc0xvYWRlZCAmJiB0aGlzLnZpZXdlclNlcnZpY2Uuc2hvd2luZ1ZpZXdlcjtcbiAgICBjb25zdCBub1ZpZXdlciA9ICF0aGlzLnZpZXdlclNlcnZpY2Uuc2hvd2luZ1ZpZXdlcjtcbiAgICByZXR1cm4gdmlld2VySXNSZWFkeSB8fCBub1ZpZXdlcjtcbiAgfVxuXG4gIHNob3dMb2NhdGlvbigpOiBzdHJpbmcge1xuICAgIGlmIChcbiAgICAgIHdpbmRvdy5pbm5lcldpZHRoIDwgOTkyICYmXG4gICAgICB0aGlzLm5hdmJhclNlbGVjdE1lbnUgJiZcbiAgICAgIHRoaXMubmF2YmFyU2VsZWN0TWVudS5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZS5zZWFyY2goJ3Nob3cnKSA9PT0gLTEgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhdGlvblxuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbi5uYW1lO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBvbkhpZGVDbGljaygpIHtcbiAgICB0aGlzLmJhc2VWaXNpYmlsaXR5U2VydmljZS5pc0NoYW5nZVBvc2l0aW9uVmlzaWJsZS5uZXh0KGZhbHNlKTtcbiAgfVxufVxuIiwiPG5hdiBjbGFzcz1cIm5hdmJhciBuYXZiYXItZXhwYW5kLW1kIG5hdmJhci1kYXJrIG5hdmJhci1pbnZlcnNlIHNlY29uZC1uYXZcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IHctMTAwXCI+XG4gICAgICAgIDxkaXYgI25hdmJhclNlbGVjdE1lbnUgY2xhc3M9XCJ3LTEwMFwiIGlkPVwibmF2LWl0ZW0tY29udGFpbmVyLWJsdWVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZmxleC1tZC1yb3cgcC0xIG10LTJcIj5cbiAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZsZXgtZmlsbCBmbGV4LWxnLWZpbGwtdW5zZXQgbG9jYXRpb24gc2VsZWN0LW1lbnVcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTG9jYXRpb25cIiAobmdNb2RlbENoYW5nZSk9XCJvbkxvY2F0aW9uQ2xpY2soKVwiPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIiBzZWxlY3RlZD57eyAnTG9jYXRpb24nIHwgdHJhbnNsYXRlIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGxvYyBvZiBsb2NhdGlvbnM7IGluZGV4IGFzIGluZGV4XCIgW25nVmFsdWVdPVwibG9jXCI+IHt7IGxvYy5uYW1lIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmbGV4LWZpbGwgZmxleC1sZy1maWxsLXVuc2V0IHNlbGVjdC1tZW51XCIgKGNoYW5nZSk9XCJvblZpc2l0Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidmlzaXRzUGVyU3BhY2UgJiYgdmlzaXRzUGVyU3BhY2UubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZGVmYXVsdFwiIHNlbGVjdGVkIGRpc2FibGVkIGhpZGRlbj57eydWaXNpdCcgfCB0cmFuc2xhdGV9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB2aXNpdCBvZiB2aXNpdHNQZXJTcGFjZTsgaW5kZXggYXMgaW5kZXhcIiB2YWx1ZT1cInt7aW5kZXh9fVwiPnt7IHZpc2l0Lm5hbWV9fVxuICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZsZXgtZmlsbCBmbGV4LWxnLWZpbGwtdW5zZXQgZmxvb3Igc2VsZWN0LW1lbnVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRmxvb3JcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkZsb29yQ2xpY2soKVwiPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIiBzZWxlY3RlZD57eydGbG9vcicgfCB0cmFuc2xhdGV9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBmbG9vciBvZiBmbG9vcnNQZXJTcGFjZVwiIFtuZ1ZhbHVlXT1cImZsb29yXCI+e3sgZmxvb3IubmFtZX19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmbGV4LWZpbGwgZmxleC1sZy1maWxsLXVuc2V0IHNlbGVjdC1tZW51IHpvbmVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkWm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uWm9uZUNsaWNrKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJudWxsXCIgc2VsZWN0ZWQ+e3snWm9uZScgfCB0cmFuc2xhdGV9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB6b25lIG9mIHpvbmVzUGVyRmxvb3JcIiBbbmdWYWx1ZV09XCJ6b25lXCI+PHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInpvbmUuY29kZV9yZWZcIj57e3pvbmUuY29kZV9yZWZ9fV88L3NwYW4+e3t6b25lLm5hbWV9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZmxleC1maWxsIGZsZXgtbGctZmlsbC11bnNldCBzZWxlY3QtbWVudVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRDaGlsZFpvbmVcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNoaWxkcmVuWm9uZXMgJiYgY2hpbGRyZW5ab25lcy5sZW5ndGg+MFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hpbGRab25lQ2xpY2soKVwiPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIiBzZWxlY3RlZCBkaXNhYmxlZD57eydab25lJyB8IHRyYW5zbGF0ZX19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHpvbmUgb2YgY2hpbGRyZW5ab25lc1wiIFtuZ1ZhbHVlXT1cInpvbmVcIj57eyB6b25lLm5hbWV9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImdvVG8oKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIG14LTIgdy1tZC1maXQtY29udGVudCBoLW1kLWZpdC1jb250ZW50IGFsaWduLXNlbGYtbWQtY2VudGVyIGJ0bi0zZCBkLW5vbmUgZC1sZy1ibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2VsZWN0ZWRMb2NhdGlvbiB8fCAhc2VsZWN0ZWRNb2RlbDNkIHx8ICFjYW5HbygpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbi1nby10by0zZCBkLWlubGluZS1ibG9ja1wiPjwvaT4ge3snM0QgdmlzaXQnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtbC0wIHAtMVwiICpuZ0lmPVwic2hvd0xvY2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZ3LWJvbGQgbGgtYmFzZSBhbGlnbi1taWRkbGUgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgc2hvd0xvY2F0aW9uKCkgfX1cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbWwtMCBwLTEgZC1ibG9jayBkLWxnLW5vbmVcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJnb1RvKClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbCB3LTI1IG14LTIgdy1tZC1maXQtY29udGVudCBoLW1kLWZpdC1jb250ZW50IGFsaWduLXNlbGYtbWQtY2VudGVyIGJ0bi0zZFwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2VsZWN0ZWRMb2NhdGlvbiB8fCAhc2VsZWN0ZWRNb2RlbDNkIHx8ICFjYW5HbygpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbi1nby10by0zZCBkLWlubGluZS1ibG9ja1wiPjwvaT4ge3snM0QgdmlzaXQnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmF2PiJdfQ==
@@ -30,11 +30,11 @@ export class ModalSwitchVisitComponent {
30
30
  });
31
31
  }
32
32
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModalSwitchVisitComponent, deps: [{ token: i1.NgbActiveModal }, { token: i2.Router }, { token: i3.ViewerService }], target: i0.ɵɵFactoryTarget.Component });
33
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModalSwitchVisitComponent, selector: "lib-modal-switch-visit", inputs: { content: "content", model3D: "model3D", spaceID: "spaceID", dataToMove: "dataToMove" }, ngImport: i0, template: "<div class=\"modal-container\">\r\n <p>{{content}}</p>\r\n <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"switchVisit()\">{{'Yes, switch visit' | translate }}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill\"(click)=\"activeModal.close()\">{{'No, stay here' | translate }}</button>\r\n</div>\r\n", styles: [".modal-container{margin:10px}button{margin-right:8px}\n"], dependencies: [{ kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
33
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModalSwitchVisitComponent, selector: "lib-modal-switch-visit", inputs: { content: "content", model3D: "model3D", spaceID: "spaceID", dataToMove: "dataToMove" }, ngImport: i0, template: "<div class=\"modal-container\">\n <p>{{content}}</p>\n <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"switchVisit()\">{{'Yes, switch visit' | translate }}</button>\n <button class=\"btn btn-outline-primary rounded-pill\"(click)=\"activeModal.close()\">{{'No, stay here' | translate }}</button>\n</div>\n", styles: [".modal-container{margin:10px}button{margin-right:8px}\n"], dependencies: [{ kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
34
34
  }
35
35
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModalSwitchVisitComponent, decorators: [{
36
36
  type: Component,
37
- args: [{ selector: 'lib-modal-switch-visit', template: "<div class=\"modal-container\">\r\n <p>{{content}}</p>\r\n <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"switchVisit()\">{{'Yes, switch visit' | translate }}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill\"(click)=\"activeModal.close()\">{{'No, stay here' | translate }}</button>\r\n</div>\r\n", styles: [".modal-container{margin:10px}button{margin-right:8px}\n"] }]
37
+ args: [{ selector: 'lib-modal-switch-visit', template: "<div class=\"modal-container\">\n <p>{{content}}</p>\n <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"switchVisit()\">{{'Yes, switch visit' | translate }}</button>\n <button class=\"btn btn-outline-primary rounded-pill\"(click)=\"activeModal.close()\">{{'No, stay here' | translate }}</button>\n</div>\n", styles: [".modal-container{margin:10px}button{margin-right:8px}\n"] }]
38
38
  }], ctorParameters: () => [{ type: i1.NgbActiveModal }, { type: i2.Router }, { type: i3.ViewerService }], propDecorators: { content: [{
39
39
  type: Input
40
40
  }], model3D: [{
@@ -44,4 +44,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
44
44
  }], dataToMove: [{
45
45
  type: Input
46
46
  }] } });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtc3dpdGNoLXZpc2l0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9tb2RhbC1zd2l0Y2gtdmlzaXQvbW9kYWwtc3dpdGNoLXZpc2l0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9tb2RhbC1zd2l0Y2gtdmlzaXQvbW9kYWwtc3dpdGNoLXZpc2l0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFVekQsTUFBTSxPQUFPLHlCQUF5QjtJQUtmO0lBQXFDO0lBQXdCO0lBSnZFLE9BQU8sQ0FBUztJQUNoQixPQUFPLENBQVM7SUFDaEIsT0FBTyxDQUFTO0lBQ2hCLFVBQVUsQ0FBMEM7SUFDN0QsWUFBbUIsV0FBMkIsRUFBVSxNQUFjLEVBQVUsYUFBNEI7UUFBekYsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBRXhHLENBQUM7SUFFTCxRQUFRLEtBQVcsQ0FBQztJQUVwQixXQUFXO1FBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQ0QscUZBQXFGO1FBQ3JGLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMxQyxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRTtTQUN6QyxDQUFDLENBQUM7SUFDUCxDQUFDO3dHQXJCUSx5QkFBeUI7NEZBQXpCLHlCQUF5QixnS0NWdEMsc1ZBS0E7OzRGREthLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDSSx3QkFBd0I7b0lBS3pCLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTmdiQWN0aXZlTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFZpZXdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92aWV3ZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLW1vZGFsLXN3aXRjaC12aXNpdCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwtc3dpdGNoLXZpc2l0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL21vZGFsLXN3aXRjaC12aXNpdC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNb2RhbFN3aXRjaFZpc2l0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBJbnB1dCgpIGNvbnRlbnQ6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIG1vZGVsM0Q6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHNwYWNlSUQ6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGRhdGFUb01vdmU6IHsgc3dlZXBUb01vdmU6IHN0cmluZywgcm90YXRpb246IGFueTsgfTtcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBhY3RpdmVNb2RhbDogTmdiQWN0aXZlTW9kYWwsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgdmlld2VyU2VydmljZTogVmlld2VyU2VydmljZSxcclxuICAgICAgICAvLyBwcml2YXRlIG9iamVjdFN1YlNlcnZpY2U6IE9iamVjdFN1YnNjcmlwdGlvblNlcnZpY2VcclxuICAgICkgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7IH1cclxuXHJcbiAgICBzd2l0Y2hWaXNpdCgpIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YVRvTW92ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdlclNlcnZpY2Uuc2V0U3dlZXBUb01vdmUodGhpcy5kYXRhVG9Nb3ZlLnN3ZWVwVG9Nb3ZlKTtcclxuICAgICAgICAgICAgdGhpcy52aWV3ZXJTZXJ2aWNlLnNldFJvdGF0aW9uVG9Nb3ZlKHRoaXMuZGF0YVRvTW92ZS5yb3RhdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHRoaXMub2JqZWN0U3ViU2VydmljZS5mb3JjZVJlbW92ZSA9IHRydWU7IC8vIHdlIHJlc2V0IHRoZSB0YWdzIHdoZW4gY2hhbmdpbmcgdmlzaXRcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJ2aXNpdFwiLCB0aGlzLnNwYWNlSURdLCB7XHJcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IG1vZGVsM0Q6IHRoaXMubW9kZWwzRCB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibW9kYWwtY29udGFpbmVyXCI+XHJcbiAgICA8cD57e2NvbnRlbnR9fTwvcD5cclxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGxcIiAoY2xpY2spPVwic3dpdGNoVmlzaXQoKVwiPnt7J1llcywgc3dpdGNoIHZpc2l0JyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbFwiKGNsaWNrKT1cImFjdGl2ZU1vZGFsLmNsb3NlKClcIj57eydObywgc3RheSBoZXJlJyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxyXG48L2Rpdj5cclxuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtc3dpdGNoLXZpc2l0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9tb2RhbC1zd2l0Y2gtdmlzaXQvbW9kYWwtc3dpdGNoLXZpc2l0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9tb2RhbC1zd2l0Y2gtdmlzaXQvbW9kYWwtc3dpdGNoLXZpc2l0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFVekQsTUFBTSxPQUFPLHlCQUF5QjtJQUtmO0lBQXFDO0lBQXdCO0lBSnZFLE9BQU8sQ0FBUztJQUNoQixPQUFPLENBQVM7SUFDaEIsT0FBTyxDQUFTO0lBQ2hCLFVBQVUsQ0FBMEM7SUFDN0QsWUFBbUIsV0FBMkIsRUFBVSxNQUFjLEVBQVUsYUFBNEI7UUFBekYsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBRXhHLENBQUM7SUFFTCxRQUFRLEtBQVcsQ0FBQztJQUVwQixXQUFXO1FBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQ0QscUZBQXFGO1FBQ3JGLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMxQyxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRTtTQUN6QyxDQUFDLENBQUM7SUFDUCxDQUFDO3dHQXJCUSx5QkFBeUI7NEZBQXpCLHlCQUF5QixnS0NWdEMsNFVBS0E7OzRGREthLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDSSx3QkFBd0I7b0lBS3pCLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBOZ2JBY3RpdmVNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IFZpZXdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92aWV3ZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLW1vZGFsLXN3aXRjaC12aXNpdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLXN3aXRjaC12aXNpdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbW9kYWwtc3dpdGNoLXZpc2l0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTW9kYWxTd2l0Y2hWaXNpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgY29udGVudDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG1vZGVsM0Q6IHN0cmluZztcbiAgICBASW5wdXQoKSBzcGFjZUlEOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZGF0YVRvTW92ZTogeyBzd2VlcFRvTW92ZTogc3RyaW5nLCByb3RhdGlvbjogYW55OyB9O1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBhY3RpdmVNb2RhbDogTmdiQWN0aXZlTW9kYWwsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgdmlld2VyU2VydmljZTogVmlld2VyU2VydmljZSxcbiAgICAgICAgLy8gcHJpdmF0ZSBvYmplY3RTdWJTZXJ2aWNlOiBPYmplY3RTdWJzY3JpcHRpb25TZXJ2aWNlXG4gICAgKSB7IH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQgeyB9XG5cbiAgICBzd2l0Y2hWaXNpdCgpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xuICAgICAgICBpZiAodGhpcy5kYXRhVG9Nb3ZlKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdlclNlcnZpY2Uuc2V0U3dlZXBUb01vdmUodGhpcy5kYXRhVG9Nb3ZlLnN3ZWVwVG9Nb3ZlKTtcbiAgICAgICAgICAgIHRoaXMudmlld2VyU2VydmljZS5zZXRSb3RhdGlvblRvTW92ZSh0aGlzLmRhdGFUb01vdmUucm90YXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoaXMub2JqZWN0U3ViU2VydmljZS5mb3JjZVJlbW92ZSA9IHRydWU7IC8vIHdlIHJlc2V0IHRoZSB0YWdzIHdoZW4gY2hhbmdpbmcgdmlzaXRcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1widmlzaXRcIiwgdGhpcy5zcGFjZUlEXSwge1xuICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHsgbW9kZWwzRDogdGhpcy5tb2RlbDNEIH0sXG4gICAgICAgIH0pO1xuICAgIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRhaW5lclwiPlxuICAgIDxwPnt7Y29udGVudH19PC9wPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGxcIiAoY2xpY2spPVwic3dpdGNoVmlzaXQoKVwiPnt7J1llcywgc3dpdGNoIHZpc2l0JyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGxcIihjbGljayk9XCJhY3RpdmVNb2RhbC5jbG9zZSgpXCI+e3snTm8sIHN0YXkgaGVyZScgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cbjwvZGl2PlxuIl19
@@ -52,11 +52,11 @@ export class SearchBarComponent {
52
52
  this.searchEvent.emit(results);
53
53
  }
54
54
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchBarComponent, deps: [{ token: i1.SearchService }], target: i0.ɵɵFactoryTarget.Component });
55
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SearchBarComponent, selector: "lib-search-bar", inputs: { searchable: "searchable", objectType: "objectType" }, outputs: { searchEvent: "searchEvent" }, ngImport: i0, template: "<div class=\"col-md-8 searchbar\">\r\n <div class=\"row depend\">\r\n <div class=\"col-md-5\">\r\n <input id=\"searchbar\" type=\"text\" class=\"form-control\" placeholder=\"keyword\" />\r\n </div>\r\n <div class=\"col-md-5\">\r\n <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"onSubmit()\">{{ 'Search' |\r\n translate}}</button>\r\n </div>\r\n </div>\r\n</div>", styles: [".searchbar{margin-bottom:10px}\n"], dependencies: [{ kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
55
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SearchBarComponent, selector: "lib-search-bar", inputs: { searchable: "searchable", objectType: "objectType" }, outputs: { searchEvent: "searchEvent" }, ngImport: i0, template: "<div class=\"col-md-8 searchbar\">\n <div class=\"row depend\">\n <div class=\"col-md-5\">\n <input id=\"searchbar\" type=\"text\" class=\"form-control\" placeholder=\"keyword\" />\n </div>\n <div class=\"col-md-5\">\n <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"onSubmit()\">{{ 'Search' |\n translate}}</button>\n </div>\n </div>\n</div>", styles: [".searchbar{margin-bottom:10px}\n"], dependencies: [{ kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
56
56
  }
57
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchBarComponent, decorators: [{
58
58
  type: Component,
59
- args: [{ selector: 'lib-search-bar', template: "<div class=\"col-md-8 searchbar\">\r\n <div class=\"row depend\">\r\n <div class=\"col-md-5\">\r\n <input id=\"searchbar\" type=\"text\" class=\"form-control\" placeholder=\"keyword\" />\r\n </div>\r\n <div class=\"col-md-5\">\r\n <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"onSubmit()\">{{ 'Search' |\r\n translate}}</button>\r\n </div>\r\n </div>\r\n</div>", styles: [".searchbar{margin-bottom:10px}\n"] }]
59
+ args: [{ selector: 'lib-search-bar', template: "<div class=\"col-md-8 searchbar\">\n <div class=\"row depend\">\n <div class=\"col-md-5\">\n <input id=\"searchbar\" type=\"text\" class=\"form-control\" placeholder=\"keyword\" />\n </div>\n <div class=\"col-md-5\">\n <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"onSubmit()\">{{ 'Search' |\n translate}}</button>\n </div>\n </div>\n</div>", styles: [".searchbar{margin-bottom:10px}\n"] }]
60
60
  }], ctorParameters: () => [{ type: i1.SearchService }], propDecorators: { searchable: [{
61
61
  type: Input
62
62
  }], objectType: [{
@@ -64,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
64
64
  }], searchEvent: [{
65
65
  type: Output
66
66
  }] } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoLWJhci9zZWFyY2gtYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2gtYmFyL3NlYXJjaC1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVEvRSxNQUFNLE9BQU8sa0JBQWtCO0lBK0JQO0lBN0JYLFVBQVUsQ0FBTTtJQUVoQixVQUFVLENBQW1CO0lBRTVCLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRXBDLEtBQUssQ0FBTTtJQUVsQix3REFBd0Q7SUFFeEQsMERBQTBEO0lBQzFELGlDQUFpQztJQUNqQyxPQUFPO0lBQ1Asa0JBQWtCO0lBQ2xCLDZCQUE2QjtJQUM3QixrQ0FBa0M7SUFDbEMsd0JBQXdCO0lBQ3hCLDBCQUEwQjtJQUMxQix1QkFBdUI7SUFDdkIsb0NBQW9DO0lBQ3BDLHFDQUFxQztJQUNyQyx3RUFBd0U7SUFDeEUsd0JBQXdCO0lBQ3hCLHFDQUFxQztJQUNyQyxhQUFhO0lBQ2IsU0FBUztJQUVULDBDQUEwQztJQUUxQyxZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUFJLENBQUM7SUFFckQsUUFBUTtRQUNKLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFxQixDQUFDO1FBQ3ZFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7WUFDMUMsSUFBSSxHQUFHLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsUUFBUTtRQUNKLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFxQixDQUFDO1FBQ3ZFLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUMsSUFBSSxXQUFXLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QixDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFZO1FBQ3JCLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FDOUQsSUFBSSxFQUNKLElBQUksQ0FBQyxVQUFVLEVBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FDbEIsQ0FBQztRQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7d0dBM0RRLGtCQUFrQjs0RkFBbEIsa0JBQWtCLCtKQ1IvQixvY0FVTTs7NEZERk8sa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGdCQUFnQjtrRkFNZixVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2VhcmNoT2JqZWN0VHlwZSwgU2VhcmNoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NlYXJjaC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXNlYXJjaC1iYXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtYmFyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNlYXJjaEJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gICAgQElucHV0KCkgc2VhcmNoYWJsZTogYW55O1xyXG5cclxuICAgIEBJbnB1dCgpIG9iamVjdFR5cGU6IFNlYXJjaE9iamVjdFR5cGU7XHJcblxyXG4gICAgQE91dHB1dCgpIHNlYXJjaEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIHB1YmxpYyBtb2RlbDogYW55O1xyXG5cclxuICAgIC8vIGZvcm1hdHRlciA9IChyZXN1bHQ6IHN0cmluZykgPT4gcmVzdWx0LnRvVXBwZXJDYXNlKCk7XHJcblxyXG4gICAgLy8gc2VhcmNoOiBPcGVyYXRvckZ1bmN0aW9uPHN0cmluZywgcmVhZG9ubHkgc3RyaW5nW10+ID0gKFxyXG4gICAgLy8gICAgIHRleHQkOiBPYnNlcnZhYmxlPHN0cmluZz4sXHJcbiAgICAvLyApID0+XHJcbiAgICAvLyAgICAgdGV4dCQucGlwZShcclxuICAgIC8vICAgICAgICAgZGVib3VuY2VUaW1lKDIwMCksXHJcbiAgICAvLyAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAvLyAgICAgICAgIG1hcCgodGVybSkgPT5cclxuICAgIC8vICAgICAgICAgICAgIHRlcm0gPT09IFwiXCJcclxuICAgIC8vICAgICAgICAgICAgICAgICA/IFtdXHJcbiAgICAvLyAgICAgICAgICAgICAgICAgOiB0aGlzLnNlYXJjaGFibGVcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigodikgPT5cclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIHYudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtLnRvTG93ZXJDYXNlKCkpLFxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIC5zbGljZSgwLCAxMCksXHJcbiAgICAvLyAgICAgICAgICksXHJcbiAgICAvLyAgICAgKTtcclxuXHJcbiAgICAvLyBmaWx0ZXIgPSAoaW5wdXQ6IHN0cmluZ1tdKSA9PiBzdHJpbmdbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UpIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzZWFyY2hiYXJcIikgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCAoeyBrZXkgfSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoa2V5ID09PSBcIkVudGVyXCIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMub25TdWJtaXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU3VibWl0KCkge1xyXG4gICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzZWFyY2hiYXJcIikgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgICAgICBjb25zdCBzZWFyY2hWYWx1ZSA9IGlucHV0LnZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKHNlYXJjaFZhbHVlICE9PSBcIlwiKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyKHNlYXJjaFZhbHVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaEV2ZW50LmVtaXQobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGZpbHRlcih0ZXJtOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaEZvclRlcm1Gb3JUeXBlSW5NYXAoXHJcbiAgICAgICAgICAgIHRlcm0sXHJcbiAgICAgICAgICAgIHRoaXMub2JqZWN0VHlwZSxcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hhYmxlLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hFdmVudC5lbWl0KHJlc3VsdHMpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb2wtbWQtOCBzZWFyY2hiYXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgZGVwZW5kXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBpZD1cInNlYXJjaGJhclwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBwbGFjZWhvbGRlcj1cImtleXdvcmRcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsXCIgKGNsaWNrKT1cIm9uU3VibWl0KClcIj57eyAnU2VhcmNoJyB8XHJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoLWJhci9zZWFyY2gtYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2gtYmFyL3NlYXJjaC1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVEvRSxNQUFNLE9BQU8sa0JBQWtCO0lBK0JQO0lBN0JYLFVBQVUsQ0FBTTtJQUVoQixVQUFVLENBQW1CO0lBRTVCLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRXBDLEtBQUssQ0FBTTtJQUVsQix3REFBd0Q7SUFFeEQsMERBQTBEO0lBQzFELGlDQUFpQztJQUNqQyxPQUFPO0lBQ1Asa0JBQWtCO0lBQ2xCLDZCQUE2QjtJQUM3QixrQ0FBa0M7SUFDbEMsd0JBQXdCO0lBQ3hCLDBCQUEwQjtJQUMxQix1QkFBdUI7SUFDdkIsb0NBQW9DO0lBQ3BDLHFDQUFxQztJQUNyQyx3RUFBd0U7SUFDeEUsd0JBQXdCO0lBQ3hCLHFDQUFxQztJQUNyQyxhQUFhO0lBQ2IsU0FBUztJQUVULDBDQUEwQztJQUUxQyxZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUFJLENBQUM7SUFFckQsUUFBUTtRQUNKLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFxQixDQUFDO1FBQ3ZFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7WUFDMUMsSUFBSSxHQUFHLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsUUFBUTtRQUNKLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFxQixDQUFDO1FBQ3ZFLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUMsSUFBSSxXQUFXLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QixDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFZO1FBQ3JCLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FDOUQsSUFBSSxFQUNKLElBQUksQ0FBQyxVQUFVLEVBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FDbEIsQ0FBQztRQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7d0dBM0RRLGtCQUFrQjs0RkFBbEIsa0JBQWtCLCtKQ1IvQixnYkFVTTs7NEZERk8sa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGdCQUFnQjtrRkFNZixVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlYXJjaE9iamVjdFR5cGUsIFNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zZWFyY2guc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1zZWFyY2gtYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1iYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtYmFyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoQmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIEBJbnB1dCgpIHNlYXJjaGFibGU6IGFueTtcblxuICAgIEBJbnB1dCgpIG9iamVjdFR5cGU6IFNlYXJjaE9iamVjdFR5cGU7XG5cbiAgICBAT3V0cHV0KCkgc2VhcmNoRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgbW9kZWw6IGFueTtcblxuICAgIC8vIGZvcm1hdHRlciA9IChyZXN1bHQ6IHN0cmluZykgPT4gcmVzdWx0LnRvVXBwZXJDYXNlKCk7XG5cbiAgICAvLyBzZWFyY2g6IE9wZXJhdG9yRnVuY3Rpb248c3RyaW5nLCByZWFkb25seSBzdHJpbmdbXT4gPSAoXG4gICAgLy8gICAgIHRleHQkOiBPYnNlcnZhYmxlPHN0cmluZz4sXG4gICAgLy8gKSA9PlxuICAgIC8vICAgICB0ZXh0JC5waXBlKFxuICAgIC8vICAgICAgICAgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgLy8gICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIC8vICAgICAgICAgbWFwKCh0ZXJtKSA9PlxuICAgIC8vICAgICAgICAgICAgIHRlcm0gPT09IFwiXCJcbiAgICAvLyAgICAgICAgICAgICAgICAgPyBbXVxuICAgIC8vICAgICAgICAgICAgICAgICA6IHRoaXMuc2VhcmNoYWJsZVxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigodikgPT5cbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB2LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybS50b0xvd2VyQ2FzZSgpKSxcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIClcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIC5zbGljZSgwLCAxMCksXG4gICAgLy8gICAgICAgICApLFxuICAgIC8vICAgICApO1xuXG4gICAgLy8gZmlsdGVyID0gKGlucHV0OiBzdHJpbmdbXSkgPT4gc3RyaW5nW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UpIHsgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzZWFyY2hiYXJcIikgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgKHsga2V5IH0pID0+IHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgICAgICAgICAgIHRoaXMub25TdWJtaXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25TdWJtaXQoKSB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzZWFyY2hiYXJcIikgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgY29uc3Qgc2VhcmNoVmFsdWUgPSBpbnB1dC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoc2VhcmNoVmFsdWUgIT09IFwiXCIpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyKHNlYXJjaFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoRXZlbnQuZW1pdChudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZpbHRlcih0ZXJtOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2hGb3JUZXJtRm9yVHlwZUluTWFwKFxuICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgIHRoaXMub2JqZWN0VHlwZSxcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoYWJsZSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZWFyY2hFdmVudC5lbWl0KHJlc3VsdHMpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb2wtbWQtOCBzZWFyY2hiYXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGRlcGVuZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cbiAgICAgICAgICAgIDxpbnB1dCBpZD1cInNlYXJjaGJhclwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBwbGFjZWhvbGRlcj1cImtleXdvcmRcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsXCIgKGNsaWNrKT1cIm9uU3VibWl0KClcIj57eyAnU2VhcmNoJyB8XG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlfX08L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=