@smarterplan/ngx-smarterplan-core 1.4.14 → 1.4.16

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 (105) 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/support-modal/support-modal.component.mjs +3 -3
  10. package/esm2022/lib/config.mjs +1 -1
  11. package/esm2022/lib/helpers.service.mjs +46 -1
  12. package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +1 -1
  13. package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +1 -1
  14. package/esm2022/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +1 -1
  15. package/esm2022/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +1 -1
  16. package/esm2022/lib/matterport-extensions/scene-component/SceneComponent.mjs +1 -1
  17. package/esm2022/lib/matterport-extensions/security-camera/SecurityCamera.mjs +22 -22
  18. package/esm2022/lib/matterport-extensions/tv-player/TvPlayer.mjs +1 -1
  19. package/esm2022/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +22 -22
  20. package/esm2022/lib/mattertagData.mjs +1 -1
  21. package/esm2022/lib/ngx-smarterplan-core.module.mjs +1 -1
  22. package/esm2022/lib/ngx-smarterplan-core.service.mjs +1 -1
  23. package/esm2022/lib/pipes/duration-to-string.pipe.mjs +1 -1
  24. package/esm2022/lib/pipes/format-date-number-to-digits.pipe.mjs +1 -1
  25. package/esm2022/lib/pipes/safe-url.pipe.mjs +1 -1
  26. package/esm2022/lib/pipes/time-date-to-local-string.pipe.mjs +1 -1
  27. package/esm2022/lib/pipes/username-from-id.pipe.mjs +1 -1
  28. package/esm2022/lib/services/amplify-cache.service.mjs +1 -1
  29. package/esm2022/lib/services/base-tab.service.mjs +1 -1
  30. package/esm2022/lib/services/baseVisibility.service.mjs +1 -1
  31. package/esm2022/lib/services/content.service.mjs +1 -1
  32. package/esm2022/lib/services/filter.service.mjs +1 -1
  33. package/esm2022/lib/services/intervention.service.mjs +1 -1
  34. package/esm2022/lib/services/locale.service.mjs +1 -1
  35. package/esm2022/lib/services/matterport-import.service.mjs +1 -1
  36. package/esm2022/lib/services/matterport-measurement.service.mjs +1 -1
  37. package/esm2022/lib/services/matterport-navigation.service.mjs +1 -1
  38. package/esm2022/lib/services/matterport-object3d.service.mjs +1 -1
  39. package/esm2022/lib/services/matterport-pointer.service.mjs +6 -6
  40. package/esm2022/lib/services/matterport-tag-copy.service.mjs +448 -62
  41. package/esm2022/lib/services/matterport-tag.service.mjs +1 -1
  42. package/esm2022/lib/services/matterport.service.mjs +17 -17
  43. package/esm2022/lib/services/models/affectation.service.mjs +1 -1
  44. package/esm2022/lib/services/models/base-object.service.mjs +1 -1
  45. package/esm2022/lib/services/models/capture.service.mjs +1 -1
  46. package/esm2022/lib/services/models/comment.service.mjs +1 -1
  47. package/esm2022/lib/services/models/domain.service.mjs +20 -1
  48. package/esm2022/lib/services/models/equipment.service.mjs +4 -2
  49. package/esm2022/lib/services/models/event.service.mjs +1 -1
  50. package/esm2022/lib/services/models/feature.service.mjs +1 -7
  51. package/esm2022/lib/services/models/hashtag.service.mjs +1 -1
  52. package/esm2022/lib/services/models/layer.service.mjs +1 -1
  53. package/esm2022/lib/services/models/measurement.service.mjs +1 -1
  54. package/esm2022/lib/services/models/mission.service.mjs +17 -1
  55. package/esm2022/lib/services/models/navigation.service.mjs +1 -1
  56. package/esm2022/lib/services/models/node.service.mjs +1 -1
  57. package/esm2022/lib/services/models/object3D.service.mjs +1 -1
  58. package/esm2022/lib/services/models/operation.service.mjs +1 -1
  59. package/esm2022/lib/services/models/organisation.service.mjs +1 -1
  60. package/esm2022/lib/services/models/plan.service.mjs +1 -1
  61. package/esm2022/lib/services/models/poi.service.mjs +27 -27
  62. package/esm2022/lib/services/models/profile.service.mjs +1 -1
  63. package/esm2022/lib/services/models/property.service.mjs +1 -1
  64. package/esm2022/lib/services/models/space.service.mjs +25 -6
  65. package/esm2022/lib/services/models/template.service.mjs +1 -1
  66. package/esm2022/lib/services/models/ticket.service.mjs +1 -1
  67. package/esm2022/lib/services/models/visit.service.mjs +17 -5
  68. package/esm2022/lib/services/models/zone.service.mjs +1 -1
  69. package/esm2022/lib/services/navigator.service.mjs +1 -1
  70. package/esm2022/lib/services/s3.service.mjs +18 -1
  71. package/esm2022/lib/services/search.service.mjs +1 -1
  72. package/esm2022/lib/services/support.service.mjs +1 -1
  73. package/esm2022/lib/services/tag.service.mjs +16 -16
  74. package/esm2022/lib/services/threejs-import.service.mjs +151 -0
  75. package/esm2022/lib/services/threejs.service.mjs +1306 -0
  76. package/esm2022/lib/services/user.service.mjs +1 -1
  77. package/esm2022/lib/services/utils/matterport-transform.util.mjs +1 -1
  78. package/esm2022/lib/services/validators.service.mjs +1 -1
  79. package/esm2022/lib/services/viewer.service.mjs +263 -5
  80. package/esm2022/lib/services/zone-drawer.service.mjs +1 -1
  81. package/esm2022/lib/services/zoneChange.service.mjs +1 -1
  82. package/esm2022/lib/tokens/matterport-sdk-key.token.mjs +1 -1
  83. package/esm2022/lib/types.service.mjs +2 -1
  84. package/esm2022/lib/validators/email.directive.mjs +1 -1
  85. package/esm2022/lib/validators/no-empty.directive.mjs +1 -1
  86. package/esm2022/lib/validators/number.directive.mjs +1 -1
  87. package/esm2022/lib/validators/text.directive.mjs +1 -1
  88. package/esm2022/public-api.mjs +3 -1
  89. package/fesm2022/smarterplan-ngx-smarterplan-core.mjs +2759 -551
  90. package/fesm2022/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  91. package/lib/helpers.service.d.ts +43 -0
  92. package/lib/services/matterport-tag-copy.service.d.ts +137 -17
  93. package/lib/services/models/domain.service.d.ts +8 -0
  94. package/lib/services/models/feature.service.d.ts +0 -6
  95. package/lib/services/models/mission.service.d.ts +5 -0
  96. package/lib/services/models/space.service.d.ts +15 -1
  97. package/lib/services/models/visit.service.d.ts +9 -1
  98. package/lib/services/s3.service.d.ts +8 -0
  99. package/lib/services/threejs-import.service.d.ts +31 -0
  100. package/lib/services/threejs.service.d.ts +423 -0
  101. package/lib/services/viewer.service.d.ts +114 -1
  102. package/lib/types.service.d.ts +7 -1
  103. package/package.json +1 -1
  104. package/public-api.d.ts +2 -0
  105. package/src/assets/vs-app.json +67 -67
@@ -224,4 +224,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
224
224
  type: Inject,
225
225
  args: ['currentAPIService']
226
226
  }] }, { type: i1.BaseUserService }] });
227
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvem9uZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBT25ELE1BQU0sT0FBTyxXQUFXO0lBS1o7SUFKVixHQUFHLENBQU0sQ0FBQyxnQkFBZ0I7SUFFMUIsWUFDK0IsV0FBZ0IsRUFDckMsV0FBNEI7UUFBNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBRXBDLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQWU7UUFDbkMsTUFBTSxJQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDdEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0QsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDL0IsTUFBTSxVQUFVLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBVSxDQUFDO29CQUN2QyxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO2FBQU0s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TTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUtJLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGJPYmplY3RUeXBlLCBab25lIH0gZnJvbSAnLi4vLi4vdHlwZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gJy4uL3VzZXIuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWm9uZVNlcnZpY2Uge1xyXG4gIEFQSTogYW55OyAvL0FXUyBBUElTZXJ2aWNlXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnY3VycmVudEFQSVNlcnZpY2UnKSBhcGlJbmplY3RlZDogYW55LFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0Wm9uZXNCeVNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8QXJyYXk8Wm9uZT4+IHtcclxuICAgIGNvbnN0IGxpc3Q6IFpvbmVbXSA9IFtdO1xyXG4gICAgaWYgKHRoaXMuQVBJLl9fcHJvdG9fXy5oYXNPd25Qcm9wZXJ0eSgnWm9uZXNCeVNwYWNlJykpIHtcclxuICAgICAgY29uc3Qgem9uZXMgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uWm9uZXNCeVNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICBpZiAoem9uZXMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IHpvbmUgb2Ygem9uZXMuaXRlbXMpIHtcclxuICAgICAgICAgIGNvbnN0IHpvbmVPYmplY3QgPSB7IC4uLnpvbmUgfSBhcyBab25lO1xyXG4gICAgICAgICAgem9uZU9iamVjdC52aXJ0dWFsID0gdGhpcy56b25lSXNWaXJ0dWFsKHpvbmUpO1xyXG4gICAgICAgICAgbGlzdC5wdXNoKHpvbmVPYmplY3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbGlzdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignWm9uZXNCeVNwYWNlIG5vdCBpbXBsZW1lbnRlZCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0Wm9uZXNCeVNwYWNlRm9yVXNlcihzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmVbXT4ge1xyXG4gICAgY29uc3QgbWlzc2lvbkZvckxvY2F0aW9uID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihzcGFjZUlEKTtcclxuICAgIGNvbnN0IGxpc3QgPSBbXTtcclxuICAgIGlmIChtaXNzaW9uRm9yTG9jYXRpb24gJiYgbWlzc2lvbkZvckxvY2F0aW9uLnpvbmVJRCkge1xyXG4gICAgICBjb25zdCBhbGxvd2VkWm9uZSA9IGF3YWl0IHRoaXMuZ2V0Wm9uZShtaXNzaW9uRm9yTG9jYXRpb24uem9uZUlEKTtcclxuICAgICAgYWxsb3dlZFpvbmUudmlydHVhbCA9IHRoaXMuem9uZUlzVmlydHVhbChhbGxvd2VkWm9uZSk7XHJcbiAgICAgIGlmICghYWxsb3dlZFpvbmUucGFyZW50KSB7XHJcbiAgICAgICAgLy8gdGhlIHdob2xlIGJ1aWxkaW5nIGlzIGF1dGhvcml6ZWRcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRab25lc0J5U3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgIH1cclxuICAgICAgbGlzdC5wdXNoKGFsbG93ZWRab25lKTtcclxuICAgICAgLy8gYWxsb3cgYWxsIGNoaWxkcmVuIHpvbmVzIG9mIGFuIGFsbG93ZWQgcGFyZW50XHJcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5ab25lc0J5Wm9uZShhbGxvd2VkWm9uZS5pZCkpXHJcbiAgICAgICAgLml0ZW1zO1xyXG4gICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcclxuICAgICAgICAgIGNvbnN0IGNoaWxkWm9uZSA9IHsgLi4uY2hpbGQgfSBhcyBab25lO1xyXG4gICAgICAgICAgY2hpbGRab25lLnZpcnR1YWwgPSB0aGlzLnpvbmVJc1ZpcnR1YWwoY2hpbGQpO1xyXG4gICAgICAgICAgbGlzdC5wdXNoKGNoaWxkWm9uZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIGFsbG93IHRoZSBwYXJlbnQgRmxvb3Igb2YgdGhlIGFsbG93ZWQgem9uZVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgYWxsb3dlZFpvbmUucGFyZW50LmxheWVyICYmXHJcbiAgICAgICAgYWxsb3dlZFpvbmUucGFyZW50LmxheWVyLm5hbWUgPT09ICdGTE9PUidcclxuICAgICAgKSB7XHJcbiAgICAgICAgbGlzdC5wdXNoKGFsbG93ZWRab25lLnBhcmVudCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldFpvbmVzQnlTcGFjZShzcGFjZUlEKTtcclxuICAgIH1cclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZmlsdGVyWm9uZXNJRHNGb3JVc2VyKHpvbmVzOiBab25lW10pOiBQcm9taXNlPFpvbmVbXT4ge1xyXG4gICAgY29uc3QgeyBzcGFjZUlEIH0gPSB6b25lc1swXTtcclxuICAgIGNvbnN0IHpvbmVJRHMgPSBuZXcgU2V0KHpvbmVzLm1hcCgoem9uZSkgPT4gem9uZS5pZCkpO1xyXG4gICAgY29uc3QgYWxsb3dlZFpvbmVzID0gYXdhaXQgdGhpcy5nZXRab25lc0J5U3BhY2VGb3JVc2VyKHNwYWNlSUQpO1xyXG4gICAgY29uc3QgZmlsdGVyZWRab25lcyA9IGFsbG93ZWRab25lcy5maWx0ZXIoKHpvbmUpID0+IHpvbmVJRHMuaGFzKHpvbmUuaWQpKTtcclxuICAgIHJldHVybiBmaWx0ZXJlZFpvbmVzO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZGVsZXRlWm9uZSh6b25lSUQ6IHN0cmluZyk6IFByb21pc2U8Wm9uZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5EZWxldGVab25lKHsgaWQ6IHpvbmVJRCB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFpvbmVzRm9yU3dlZXBGb3JTcGFjZShcclxuICAgIHN3ZWVwSUQ6IHN0cmluZyxcclxuICAgIHNwYWNlSUQ6IHN0cmluZ1xyXG4gICk6IFByb21pc2U8Wm9uZVtdPiB7XHJcbiAgICBjb25zdCB6b25lc1NwYWNlID0gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5ab25lc0J5U3BhY2Uoc3BhY2VJRCkpLml0ZW1zO1xyXG4gICAgcmV0dXJuIHpvbmVzU3BhY2UuZmlsdGVyKFxyXG4gICAgICAoem9uZSkgPT4gem9uZS5zd2VlcElEcyAmJiB6b25lLnN3ZWVwSURzLmluY2x1ZGVzKHN3ZWVwSUQpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcclxuICBzb3J0Wm9uZXNGcm9tQ2hpbGRUb1BhcmVudCh6b25lc1RvU29ydDogWm9uZVtdKSB7XHJcbiAgICAvLyBnZXQgZGVmYXVsdFxyXG4gICAgY29uc3QgZGVmYXVsdFpvbmUgPSB6b25lc1RvU29ydC5maW5kKCh6KSA9PiAhei5wYXJlbnRJRCk7XHJcbiAgICBpZiAoZGVmYXVsdFpvbmUpIHtcclxuICAgICAgY29uc3QgaW5kZXhPZiA9IHpvbmVzVG9Tb3J0LmluZGV4T2YoZGVmYXVsdFpvbmUpO1xyXG4gICAgICB6b25lc1RvU29ydC5zcGxpY2UoaW5kZXhPZiwgMSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB6b25lcyA9IHpvbmVzVG9Tb3J0LnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgaWYgKGEucGFyZW50SUQgPT09IGIuaWQpIHtcclxuICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9KTtcclxuICAgIC8vIHNvIGZhciBieSBudW1iZXIgb2YgbmF2aWdhdGlvbiBwb2ludHMgaW4gdGhlbVxyXG4gICAgLy8gY29uc3Qgem9uZXMgPSB6b25lc1RvU29ydC5zb3J0KFxyXG4gICAgLy8gICAgIChhLCBiKSA9PiBhLm5hdmlnYXRpb25zLml0ZW1zLmxlbmd0aCAtIGIubmF2aWdhdGlvbnMuaXRlbXMubGVuZ3RoLFxyXG4gICAgLy8gKTtcclxuICAgIGlmIChkZWZhdWx0Wm9uZSkge1xyXG4gICAgICB6b25lcy5wdXNoKGRlZmF1bHRab25lKTtcclxuICAgIH1cclxuICAgIHJldHVybiB6b25lcztcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFpvbmVzRm9yT2JqZWN0KG9iamVjdDogRGJPYmplY3RUeXBlKTogUHJvbWlzZTxab25lW10+IHtcclxuICAgIGlmIChvYmplY3QucG9pcy5pdGVtcyAmJiBvYmplY3QucG9pcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IFtwb2ldID0gb2JqZWN0LnBvaXMuaXRlbXM7XHJcbiAgICAgIGlmIChwb2kubWF0dGVycG9ydFN3ZWVwSUQpIHtcclxuICAgICAgICBjb25zdCB6b25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNGb3JTd2VlcEZvclNwYWNlKFxyXG4gICAgICAgICAgcG9pLm1hdHRlcnBvcnRTd2VlcElELFxyXG4gICAgICAgICAgb2JqZWN0LnNwYWNlSURcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiB6b25lcztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBhc3luYyBjcmVhdGVWaXJ0dWFsWm9uZSh6b25lSW5wdXQ6IFpvbmUpOiBQcm9taXNlPFpvbmU+IHtcclxuICAgIHpvbmVJbnB1dC5zd2VlcElEcyA9IFtdO1xyXG4gICAgY29uc3Qgem9uZSA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVab25lKHpvbmVJbnB1dCk7XHJcbiAgICBjb25zb2xlLmxvZygndmlydHVhbCB6b25lIGNyZWF0ZWQnLCB6b25lKTtcclxuICAgIHJldHVybiB6b25lO1xyXG4gIH1cclxuXHJcbiAgem9uZUlzVmlydHVhbCh6b25lOiBab25lKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXpvbmUuc3dlZXBJRHMpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgICh6b25lLnRhZ3MgJiYgem9uZS50YWdzLmluY2x1ZGVzKCd2aXJ0dWFsJykpIHx8XHJcbiAgICAgIHpvbmUuc3dlZXBJRHMubGVuZ3RoID09PSAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRNb2RlbDNERm9yWm9uZSh6b25lSUQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBjb25zdCB6b25lID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkdldFpvbmUoem9uZUlEKTtcclxuICAgIGlmICh6b25lLm5vZGVJRHMpIHtcclxuICAgICAgY29uc3Qgbm9kZSA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5HZXROb2RlKHpvbmUubm9kZUlEc1swXSk7XHJcbiAgICAgIHJldHVybiBub2RlLm1vZGVsM0Q7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFpvbmUoem9uZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmU+IHtcclxuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uR2V0Wm9uZSh6b25lSUQpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0RGVmYXVsdFpvbmVGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmU+IHtcclxuICAgIHJldHVybiB0aGlzLmdldFpvbmVzQnlTcGFjZShzcGFjZUlEKS50aGVuKGFzeW5jICh6b25lcykgPT4ge1xyXG4gICAgICBjb25zdCB6b25lc0J1aWxkaW5nID0gem9uZXMuZmlsdGVyKFxyXG4gICAgICAgICh6b25lKSA9PiB6b25lLmxheWVyICYmIHpvbmUubGF5ZXIubmFtZSA9PT0gJ0JVSUxESU5HJ1xyXG4gICAgICApO1xyXG4gICAgICBpZiAoem9uZXNCdWlsZGluZy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICByZXR1cm4gem9uZXNCdWlsZGluZ1swXTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBwYXJlbnRab25lID0gem9uZXMuZmluZCgoem9uZSkgPT4gIXpvbmUucGFyZW50SUQpO1xyXG4gICAgICByZXR1cm4gcGFyZW50Wm9uZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY3JlYXRlKGlucHV0OiBab25lKTogUHJvbWlzZTxab25lPiB7XHJcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZVpvbmUoaW5wdXQpO1xyXG4gIH1cclxuXHJcbiAgLy8gYXN5bmMgZ2V0U29ydGVkWm9uZXNGb3JTd2VlcEZvclVzZXIoXHJcbiAgLy8gICAgIHN3ZWVwOiBzdHJpbmcsXHJcbiAgLy8gICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAvLyApOiBQcm9taXNlPFpvbmVbXT4ge1xyXG4gIC8vICAgICBpZiAoIXNwYWNlSUQpIHtcclxuICAvLyAgICAgICAgIHJldHVybiBbXTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBjb25zdCB6b25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNGb3JTd2VlcEZvclNwYWNlKHN3ZWVwLCBzcGFjZUlEKTtcclxuICAvLyAgICAgaWYgKHpvbmVzLmxlbmd0aCA9PT0gMCkge1xyXG4gIC8vICAgICAgICAgcmV0dXJuIFtdO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGNvbnN0IGZpbHRlcmVkWm9uZXMgPSBhd2FpdCB0aGlzLmZpbHRlclpvbmVzSURzRm9yVXNlcih6b25lcyk7XHJcbiAgLy8gICAgIGlmIChmaWx0ZXJlZFpvbmVzLmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgICAgIGxldCB6b25lc1NvcnRlZCA9IHRoaXMuc29ydFpvbmVzRnJvbUNoaWxkVG9QYXJlbnQoZmlsdGVyZWRab25lcyk7XHJcbiAgLy8gICAgICAgICB6b25lc1NvcnRlZCA9IHpvbmVzU29ydGVkLmZpbHRlcigoem9uZSkgPT4gem9uZSAhPT0gdW5kZWZpbmVkKTtcclxuICAvLyAgICAgICAgIHJldHVybiB6b25lc1NvcnRlZDtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICByZXR1cm4gW107XHJcbiAgLy8gfVxyXG5cclxuICBhc3luYyB1cGRhdGVab25lKGlucHV0OiBhbnkpOiBQcm9taXNlPFpvbmU+IHtcclxuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlWm9uZShpbnB1dCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRab25lc0Zvck5vZGVGb3JTcGFjZShcclxuICAgIG5vZGVJRDogc3RyaW5nLFxyXG4gICAgc3BhY2VJRDogc3RyaW5nXHJcbiAgKTogUHJvbWlzZTxab25lW10+IHtcclxuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uWm9uZXNCeVNwYWNlKHNwYWNlSUQpLnRoZW4oYXN5bmMgKHpvbmVzKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbHRlcmVkWm9uZXMgPSB6b25lcy5pdGVtcy5maWx0ZXIoXHJcbiAgICAgICAgKHpvbmUpID0+IHpvbmUubm9kZUlEcyAmJiB6b25lLm5vZGVJRHMuaW5jbHVkZXMobm9kZUlEKVxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gZmlsdGVyZWRab25lcztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgWm9uZSAobGF5ZXIgRkxPT1IpIGZvciBhIG1hdHRlcnBvcnQgc3dlZXAgSUQgaW4gYSBnaXZlbiBTcGFjZVxyXG4gICAqIEBwYXJhbSBzd2VlcElEXHJcbiAgICogQHBhcmFtIHNwYWNlSURcclxuICAgKiBAcmV0dXJucyBab25lXHJcbiAgICovXHJcbiAgYXN5bmMgZ2V0Rmxvb3Jab25lRm9yU3dlZXBJblNwYWNlKFxyXG4gICAgc3dlZXBJRDogc3RyaW5nLFxyXG4gICAgc3BhY2VJRDogc3RyaW5nXHJcbiAgKTogUHJvbWlzZTxab25lPiB7XHJcbiAgICBjb25zdCB6b25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNGb3JTd2VlcEZvclNwYWNlKHN3ZWVwSUQsIHNwYWNlSUQpO1xyXG4gICAgY29uc3QgZmxvb3JzID0gem9uZXMuZmlsdGVyKFxyXG4gICAgICAoem9uZSkgPT4gem9uZS5sYXllciAmJiB6b25lLmxheWVyLm5hbWUuaW5jbHVkZXMoJ0ZMT09SJylcclxuICAgICk7XHJcbiAgICByZXR1cm4gZmxvb3JzLmxlbmd0aCA+IDAgPyBmbG9vcnNbMF0gOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHpvbmVzIHdpdGggYXVkaW8gdHJhY2sgZm9yIGVudGlyZSBzcGFjZVxyXG4gICAqIEBwYXJhbSBzcGFjZUlEXHJcbiAgICogQHJldHVybnMgIFByb21pc2U8Wm9uZVtdPlxyXG4gICAqL1xyXG4gIGFzeW5jIGdldEF1ZGlvWm9uZXNGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmVbXT4ge1xyXG4gICAgY29uc3QgYWxsWm9uZXMgPSBhd2FpdCB0aGlzLmdldFpvbmVzQnlTcGFjZShzcGFjZUlEKTtcclxuICAgIHJldHVybiBhbGxab25lcy5maWx0ZXIoKHpvbmUpID0+IHpvbmUuYXVkaW9JRCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgYXVkaW8gem9uZXMgZm9yIHVzZXIgKHdpdGhpbiBhbGxvd2VkIHpvbmVzKVxyXG4gICAqIEBwYXJhbSBzcGFjZUlEXHJcbiAgICogQHJldHVybnMgIFByb21pc2U8Wm9uZVtdPlxyXG4gICAqL1xyXG4gIGFzeW5jIGdldEF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxab25lW10+IHtcclxuICAgIGNvbnN0IHVzZXJab25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNCeVNwYWNlRm9yVXNlcihzcGFjZUlEKTtcclxuICAgIHJldHVybiB1c2VyWm9uZXMuZmlsdGVyKCh6b25lKSA9PiB6b25lLmF1ZGlvSUQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IFpvbmVzIGJ5IFBhcmVudCBab25lIElEXHJcbiAgICogQHBhcmFtIHBhcmVudFpvbmVJRCBzdHJpbmdcclxuICAgKiBAcmV0dXJucyBQcm9taXNlPFpvbmVbXT5cclxuICAgKi9cclxuICBhc3luYyBnZXRab25lc0J5UGFyZW50Wm9uZShwYXJlbnRab25lSUQ6IHN0cmluZyk6IFByb21pc2U8Wm9uZVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fXHJcbiAgICAgIC5ab25lc0J5Wm9uZShwYXJlbnRab25lSUQpXHJcbiAgICAgIC50aGVuKChyZXMpID0+IHJlcy5pdGVtcyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvem9uZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBT25ELE1BQU0sT0FBTyxXQUFXO0lBS1o7SUFKVixHQUFHLENBQU0sQ0FBQyxnQkFBZ0I7SUFFMUIsWUFDK0IsV0FBZ0IsRUFDckMsV0FBNEI7UUFBNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBRXBDLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQWU7UUFDbkMsTUFBTSxJQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDdEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0QsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDL0IsTUFBTSxVQUFVLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBVSxDQUFDO29CQUN2QyxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxPQUFlO1FBQzFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEUsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksa0JBQWtCLElBQUksa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xFLFdBQVcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN4QixtQ0FBbUM7Z0JBQ25DLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN2QixnREFBZ0Q7WUFDaEQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ3BFLEtBQUssQ0FBQztZQUNULElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsS0FBSyxNQUFNLEtBQUssSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDN0IsTUFBTSxTQUFTLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBVSxDQUFDO29CQUN2QyxTQUFTLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3ZCLENBQUM7WUFDSCxDQUFDO1lBQ0QsNkNBQTZDO1lBQzdDLElBQ0UsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLO2dCQUN4QixXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUN6QyxDQUFDO2dCQUNELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hDLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLHFCQUFxQixDQUFDLEtBQWE7UUFDdkMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0RCxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRSxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFFLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQWM7UUFDN0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsS0FBSyxDQUFDLHdCQUF3QixDQUM1QixPQUFlLEVBQ2YsT0FBZTtRQUVmLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDMUUsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUN0QixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FDM0QsQ0FBQztJQUNKLENBQUM7SUFFRCxxREFBcUQ7SUFDckQsMEJBQTBCLENBQUMsV0FBbUI7UUFDNUMsY0FBYztRQUNkLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pELElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNqRCxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN0QyxJQUFJLENBQUMsQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN4QixPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ1osQ0FBQztZQUNELE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDSCxnREFBZ0Q7UUFDaEQsa0NBQWtDO1FBQ2xDLHlFQUF5RTtRQUN6RSxLQUFLO1FBQ0wsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBb0I7UUFDMUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ2hDLElBQUksR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzFCLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUMvQyxHQUFHLENBQUMsaUJBQWlCLEVBQ3JCLE1BQU0sQ0FBQyxPQUFPLENBQ2YsQ0FBQztnQkFDRixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFNBQWU7UUFDckMsU0FBUyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDeEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBVTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQ0UsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFDMUIsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFjO1FBQ3BDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDdEIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBYztRQUMxQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsS0FBSyxDQUFDLHNCQUFzQixDQUFDLE9BQWU7UUFDMUMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDeEQsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDaEMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUN2RCxDQUFDO1lBQ0YsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMvQixPQUFPLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixDQUFDO1lBQ0QsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEQsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFXO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMscUJBQXFCO0lBQ3JCLHVCQUF1QjtJQUN2Qix1QkFBdUI7SUFDdkIsc0JBQXNCO0lBQ3RCLHFCQUFxQjtJQUNyQixRQUFRO0lBQ1IseUVBQXlFO0lBQ3pFLGdDQUFnQztJQUNoQyxxQkFBcUI7SUFDckIsUUFBUTtJQUNSLHFFQUFxRTtJQUNyRSxzQ0FBc0M7SUFDdEMsNEVBQTRFO0lBQzVFLDBFQUEwRTtJQUMxRSw4QkFBOEI7SUFDOUIsUUFBUTtJQUNSLGlCQUFpQjtJQUNqQixJQUFJO0lBRUosS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFVO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxLQUFLLENBQUMsdUJBQXVCLENBQzNCLE1BQWMsRUFDZCxPQUFlO1FBRWYsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNuRSxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDdEMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQ3hELENBQUM7WUFDRixPQUFPLGFBQWEsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQywyQkFBMkIsQ0FDL0IsT0FBZSxFQUNmLE9BQWU7UUFFZixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEUsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDekIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUMxRCxDQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMscUJBQXFCLENBQUMsT0FBZTtRQUN6QyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsNEJBQTRCLENBQUMsT0FBZTtRQUNoRCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3RCxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxZQUFvQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUzthQUN0QixXQUFXLENBQUMsWUFBWSxDQUFDO2FBQ3pCLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7d0dBN1BVLFdBQVcsa0JBSVosbUJBQW1COzRHQUpsQixXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUtJLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYk9iamVjdFR5cGUsIFpvbmUgfSBmcm9tICcuLi8uLi90eXBlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gJy4uL3VzZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBab25lU2VydmljZSB7XG4gIEFQSTogYW55OyAvL0FXUyBBUElTZXJ2aWNlXG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCgnY3VycmVudEFQSVNlcnZpY2UnKSBhcGlJbmplY3RlZDogYW55LFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZVxuICApIHtcbiAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xuICB9XG5cbiAgYXN5bmMgZ2V0Wm9uZXNCeVNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8QXJyYXk8Wm9uZT4+IHtcbiAgICBjb25zdCBsaXN0OiBab25lW10gPSBbXTtcbiAgICBpZiAodGhpcy5BUEkuX19wcm90b19fLmhhc093blByb3BlcnR5KCdab25lc0J5U3BhY2UnKSkge1xuICAgICAgY29uc3Qgem9uZXMgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uWm9uZXNCeVNwYWNlKHNwYWNlSUQpO1xuICAgICAgaWYgKHpvbmVzKSB7XG4gICAgICAgIGZvciAoY29uc3Qgem9uZSBvZiB6b25lcy5pdGVtcykge1xuICAgICAgICAgIGNvbnN0IHpvbmVPYmplY3QgPSB7IC4uLnpvbmUgfSBhcyBab25lO1xuICAgICAgICAgIHpvbmVPYmplY3QudmlydHVhbCA9IHRoaXMuem9uZUlzVmlydHVhbCh6b25lKTtcbiAgICAgICAgICBsaXN0LnB1c2goem9uZU9iamVjdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBsaXN0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1pvbmVzQnlTcGFjZSBub3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRab25lc0J5U3BhY2VGb3JVc2VyKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8Wm9uZVtdPiB7XG4gICAgY29uc3QgbWlzc2lvbkZvckxvY2F0aW9uID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihzcGFjZUlEKTtcbiAgICBjb25zdCBsaXN0ID0gW107XG4gICAgaWYgKG1pc3Npb25Gb3JMb2NhdGlvbiAmJiBtaXNzaW9uRm9yTG9jYXRpb24uem9uZUlEKSB7XG4gICAgICBjb25zdCBhbGxvd2VkWm9uZSA9IGF3YWl0IHRoaXMuZ2V0Wm9uZShtaXNzaW9uRm9yTG9jYXRpb24uem9uZUlEKTtcbiAgICAgIGFsbG93ZWRab25lLnZpcnR1YWwgPSB0aGlzLnpvbmVJc1ZpcnR1YWwoYWxsb3dlZFpvbmUpO1xuICAgICAgaWYgKCFhbGxvd2VkWm9uZS5wYXJlbnQpIHtcbiAgICAgICAgLy8gdGhlIHdob2xlIGJ1aWxkaW5nIGlzIGF1dGhvcml6ZWRcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Wm9uZXNCeVNwYWNlKHNwYWNlSUQpO1xuICAgICAgfVxuICAgICAgbGlzdC5wdXNoKGFsbG93ZWRab25lKTtcbiAgICAgIC8vIGFsbG93IGFsbCBjaGlsZHJlbiB6b25lcyBvZiBhbiBhbGxvd2VkIHBhcmVudFxuICAgICAgY29uc3QgY2hpbGRyZW4gPSAoYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLlpvbmVzQnlab25lKGFsbG93ZWRab25lLmlkKSlcbiAgICAgICAgLml0ZW1zO1xuICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgICAgIGNvbnN0IGNoaWxkWm9uZSA9IHsgLi4uY2hpbGQgfSBhcyBab25lO1xuICAgICAgICAgIGNoaWxkWm9uZS52aXJ0dWFsID0gdGhpcy56b25lSXNWaXJ0dWFsKGNoaWxkKTtcbiAgICAgICAgICBsaXN0LnB1c2goY2hpbGRab25lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gYWxsb3cgdGhlIHBhcmVudCBGbG9vciBvZiB0aGUgYWxsb3dlZCB6b25lXG4gICAgICBpZiAoXG4gICAgICAgIGFsbG93ZWRab25lLnBhcmVudC5sYXllciAmJlxuICAgICAgICBhbGxvd2VkWm9uZS5wYXJlbnQubGF5ZXIubmFtZSA9PT0gJ0ZMT09SJ1xuICAgICAgKSB7XG4gICAgICAgIGxpc3QucHVzaChhbGxvd2VkWm9uZS5wYXJlbnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRab25lc0J5U3BhY2Uoc3BhY2VJRCk7XG4gICAgfVxuICAgIHJldHVybiBsaXN0O1xuICB9XG5cbiAgYXN5bmMgZmlsdGVyWm9uZXNJRHNGb3JVc2VyKHpvbmVzOiBab25lW10pOiBQcm9taXNlPFpvbmVbXT4ge1xuICAgIGNvbnN0IHsgc3BhY2VJRCB9ID0gem9uZXNbMF07XG4gICAgY29uc3Qgem9uZUlEcyA9IG5ldyBTZXQoem9uZXMubWFwKCh6b25lKSA9PiB6b25lLmlkKSk7XG4gICAgY29uc3QgYWxsb3dlZFpvbmVzID0gYXdhaXQgdGhpcy5nZXRab25lc0J5U3BhY2VGb3JVc2VyKHNwYWNlSUQpO1xuICAgIGNvbnN0IGZpbHRlcmVkWm9uZXMgPSBhbGxvd2VkWm9uZXMuZmlsdGVyKCh6b25lKSA9PiB6b25lSURzLmhhcyh6b25lLmlkKSk7XG4gICAgcmV0dXJuIGZpbHRlcmVkWm9uZXM7XG4gIH1cblxuICBhc3luYyBkZWxldGVab25lKHpvbmVJRDogc3RyaW5nKTogUHJvbWlzZTxab25lPiB7XG4gICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5EZWxldGVab25lKHsgaWQ6IHpvbmVJRCB9KTtcbiAgfVxuXG4gIGFzeW5jIGdldFpvbmVzRm9yU3dlZXBGb3JTcGFjZShcbiAgICBzd2VlcElEOiBzdHJpbmcsXG4gICAgc3BhY2VJRDogc3RyaW5nXG4gICk6IFByb21pc2U8Wm9uZVtdPiB7XG4gICAgY29uc3Qgem9uZXNTcGFjZSA9IChhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uWm9uZXNCeVNwYWNlKHNwYWNlSUQpKS5pdGVtcztcbiAgICByZXR1cm4gem9uZXNTcGFjZS5maWx0ZXIoXG4gICAgICAoem9uZSkgPT4gem9uZS5zd2VlcElEcyAmJiB6b25lLnN3ZWVwSURzLmluY2x1ZGVzKHN3ZWVwSUQpXG4gICAgKTtcbiAgfVxuXG4gIC8vIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG4gIHNvcnRab25lc0Zyb21DaGlsZFRvUGFyZW50KHpvbmVzVG9Tb3J0OiBab25lW10pIHtcbiAgICAvLyBnZXQgZGVmYXVsdFxuICAgIGNvbnN0IGRlZmF1bHRab25lID0gem9uZXNUb1NvcnQuZmluZCgoeikgPT4gIXoucGFyZW50SUQpO1xuICAgIGlmIChkZWZhdWx0Wm9uZSkge1xuICAgICAgY29uc3QgaW5kZXhPZiA9IHpvbmVzVG9Tb3J0LmluZGV4T2YoZGVmYXVsdFpvbmUpO1xuICAgICAgem9uZXNUb1NvcnQuc3BsaWNlKGluZGV4T2YsIDEpO1xuICAgIH1cbiAgICBjb25zdCB6b25lcyA9IHpvbmVzVG9Tb3J0LnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGlmIChhLnBhcmVudElEID09PSBiLmlkKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAwO1xuICAgIH0pO1xuICAgIC8vIHNvIGZhciBieSBudW1iZXIgb2YgbmF2aWdhdGlvbiBwb2ludHMgaW4gdGhlbVxuICAgIC8vIGNvbnN0IHpvbmVzID0gem9uZXNUb1NvcnQuc29ydChcbiAgICAvLyAgICAgKGEsIGIpID0+IGEubmF2aWdhdGlvbnMuaXRlbXMubGVuZ3RoIC0gYi5uYXZpZ2F0aW9ucy5pdGVtcy5sZW5ndGgsXG4gICAgLy8gKTtcbiAgICBpZiAoZGVmYXVsdFpvbmUpIHtcbiAgICAgIHpvbmVzLnB1c2goZGVmYXVsdFpvbmUpO1xuICAgIH1cbiAgICByZXR1cm4gem9uZXM7XG4gIH1cblxuICBhc3luYyBnZXRab25lc0Zvck9iamVjdChvYmplY3Q6IERiT2JqZWN0VHlwZSk6IFByb21pc2U8Wm9uZVtdPiB7XG4gICAgaWYgKG9iamVjdC5wb2lzLml0ZW1zICYmIG9iamVjdC5wb2lzLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IFtwb2ldID0gb2JqZWN0LnBvaXMuaXRlbXM7XG4gICAgICBpZiAocG9pLm1hdHRlcnBvcnRTd2VlcElEKSB7XG4gICAgICAgIGNvbnN0IHpvbmVzID0gYXdhaXQgdGhpcy5nZXRab25lc0ZvclN3ZWVwRm9yU3BhY2UoXG4gICAgICAgICAgcG9pLm1hdHRlcnBvcnRTd2VlcElELFxuICAgICAgICAgIG9iamVjdC5zcGFjZUlEXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB6b25lcztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhc3luYyBjcmVhdGVWaXJ0dWFsWm9uZSh6b25lSW5wdXQ6IFpvbmUpOiBQcm9taXNlPFpvbmU+IHtcbiAgICB6b25lSW5wdXQuc3dlZXBJRHMgPSBbXTtcbiAgICBjb25zdCB6b25lID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZVpvbmUoem9uZUlucHV0KTtcbiAgICBjb25zb2xlLmxvZygndmlydHVhbCB6b25lIGNyZWF0ZWQnLCB6b25lKTtcbiAgICByZXR1cm4gem9uZTtcbiAgfVxuXG4gIHpvbmVJc1ZpcnR1YWwoem9uZTogWm9uZSk6IGJvb2xlYW4ge1xuICAgIGlmICghem9uZS5zd2VlcElEcykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChcbiAgICAgICh6b25lLnRhZ3MgJiYgem9uZS50YWdzLmluY2x1ZGVzKCd2aXJ0dWFsJykpIHx8XG4gICAgICB6b25lLnN3ZWVwSURzLmxlbmd0aCA9PT0gMFxuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIGdldE1vZGVsM0RGb3Jab25lKHpvbmVJRDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCB6b25lID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkdldFpvbmUoem9uZUlEKTtcbiAgICBpZiAoem9uZS5ub2RlSURzKSB7XG4gICAgICBjb25zdCBub2RlID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkdldE5vZGUoem9uZS5ub2RlSURzWzBdKTtcbiAgICAgIHJldHVybiBub2RlLm1vZGVsM0Q7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgZ2V0Wm9uZSh6b25lSUQ6IHN0cmluZyk6IFByb21pc2U8Wm9uZT4ge1xuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uR2V0Wm9uZSh6b25lSUQpO1xuICB9XG5cbiAgYXN5bmMgZ2V0RGVmYXVsdFpvbmVGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmU+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRab25lc0J5U3BhY2Uoc3BhY2VJRCkudGhlbihhc3luYyAoem9uZXMpID0+IHtcbiAgICAgIGNvbnN0IHpvbmVzQnVpbGRpbmcgPSB6b25lcy5maWx0ZXIoXG4gICAgICAgICh6b25lKSA9PiB6b25lLmxheWVyICYmIHpvbmUubGF5ZXIubmFtZSA9PT0gJ0JVSUxESU5HJ1xuICAgICAgKTtcbiAgICAgIGlmICh6b25lc0J1aWxkaW5nLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gem9uZXNCdWlsZGluZ1swXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcmVudFpvbmUgPSB6b25lcy5maW5kKCh6b25lKSA9PiAhem9uZS5wYXJlbnRJRCk7XG4gICAgICByZXR1cm4gcGFyZW50Wm9uZTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZShpbnB1dDogWm9uZSk6IFByb21pc2U8Wm9uZT4ge1xuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uQ3JlYXRlWm9uZShpbnB1dCk7XG4gIH1cblxuICAvLyBhc3luYyBnZXRTb3J0ZWRab25lc0ZvclN3ZWVwRm9yVXNlcihcbiAgLy8gICAgIHN3ZWVwOiBzdHJpbmcsXG4gIC8vICAgICBzcGFjZUlEOiBzdHJpbmcsXG4gIC8vICk6IFByb21pc2U8Wm9uZVtdPiB7XG4gIC8vICAgICBpZiAoIXNwYWNlSUQpIHtcbiAgLy8gICAgICAgICByZXR1cm4gW107XG4gIC8vICAgICB9XG4gIC8vICAgICBjb25zdCB6b25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNGb3JTd2VlcEZvclNwYWNlKHN3ZWVwLCBzcGFjZUlEKTtcbiAgLy8gICAgIGlmICh6b25lcy5sZW5ndGggPT09IDApIHtcbiAgLy8gICAgICAgICByZXR1cm4gW107XG4gIC8vICAgICB9XG4gIC8vICAgICBjb25zdCBmaWx0ZXJlZFpvbmVzID0gYXdhaXQgdGhpcy5maWx0ZXJab25lc0lEc0ZvclVzZXIoem9uZXMpO1xuICAvLyAgICAgaWYgKGZpbHRlcmVkWm9uZXMubGVuZ3RoID4gMCkge1xuICAvLyAgICAgICAgIGxldCB6b25lc1NvcnRlZCA9IHRoaXMuc29ydFpvbmVzRnJvbUNoaWxkVG9QYXJlbnQoZmlsdGVyZWRab25lcyk7XG4gIC8vICAgICAgICAgem9uZXNTb3J0ZWQgPSB6b25lc1NvcnRlZC5maWx0ZXIoKHpvbmUpID0+IHpvbmUgIT09IHVuZGVmaW5lZCk7XG4gIC8vICAgICAgICAgcmV0dXJuIHpvbmVzU29ydGVkO1xuICAvLyAgICAgfVxuICAvLyAgICAgcmV0dXJuIFtdO1xuICAvLyB9XG5cbiAgYXN5bmMgdXBkYXRlWm9uZShpbnB1dDogYW55KTogUHJvbWlzZTxab25lPiB7XG4gICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVab25lKGlucHV0KTtcbiAgfVxuXG4gIGFzeW5jIGdldFpvbmVzRm9yTm9kZUZvclNwYWNlKFxuICAgIG5vZGVJRDogc3RyaW5nLFxuICAgIHNwYWNlSUQ6IHN0cmluZ1xuICApOiBQcm9taXNlPFpvbmVbXT4ge1xuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uWm9uZXNCeVNwYWNlKHNwYWNlSUQpLnRoZW4oYXN5bmMgKHpvbmVzKSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJlZFpvbmVzID0gem9uZXMuaXRlbXMuZmlsdGVyKFxuICAgICAgICAoem9uZSkgPT4gem9uZS5ub2RlSURzICYmIHpvbmUubm9kZUlEcy5pbmNsdWRlcyhub2RlSUQpXG4gICAgICApO1xuICAgICAgcmV0dXJuIGZpbHRlcmVkWm9uZXM7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgWm9uZSAobGF5ZXIgRkxPT1IpIGZvciBhIG1hdHRlcnBvcnQgc3dlZXAgSUQgaW4gYSBnaXZlbiBTcGFjZVxuICAgKiBAcGFyYW0gc3dlZXBJRFxuICAgKiBAcGFyYW0gc3BhY2VJRFxuICAgKiBAcmV0dXJucyBab25lXG4gICAqL1xuICBhc3luYyBnZXRGbG9vclpvbmVGb3JTd2VlcEluU3BhY2UoXG4gICAgc3dlZXBJRDogc3RyaW5nLFxuICAgIHNwYWNlSUQ6IHN0cmluZ1xuICApOiBQcm9taXNlPFpvbmU+IHtcbiAgICBjb25zdCB6b25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNGb3JTd2VlcEZvclNwYWNlKHN3ZWVwSUQsIHNwYWNlSUQpO1xuICAgIGNvbnN0IGZsb29ycyA9IHpvbmVzLmZpbHRlcihcbiAgICAgICh6b25lKSA9PiB6b25lLmxheWVyICYmIHpvbmUubGF5ZXIubmFtZS5pbmNsdWRlcygnRkxPT1InKVxuICAgICk7XG4gICAgcmV0dXJuIGZsb29ycy5sZW5ndGggPiAwID8gZmxvb3JzWzBdIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgem9uZXMgd2l0aCBhdWRpbyB0cmFjayBmb3IgZW50aXJlIHNwYWNlXG4gICAqIEBwYXJhbSBzcGFjZUlEXG4gICAqIEByZXR1cm5zICBQcm9taXNlPFpvbmVbXT5cbiAgICovXG4gIGFzeW5jIGdldEF1ZGlvWm9uZXNGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmVbXT4ge1xuICAgIGNvbnN0IGFsbFpvbmVzID0gYXdhaXQgdGhpcy5nZXRab25lc0J5U3BhY2Uoc3BhY2VJRCk7XG4gICAgcmV0dXJuIGFsbFpvbmVzLmZpbHRlcigoem9uZSkgPT4gem9uZS5hdWRpb0lEKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYXVkaW8gem9uZXMgZm9yIHVzZXIgKHdpdGhpbiBhbGxvd2VkIHpvbmVzKVxuICAgKiBAcGFyYW0gc3BhY2VJRFxuICAgKiBAcmV0dXJucyAgUHJvbWlzZTxab25lW10+XG4gICAqL1xuICBhc3luYyBnZXRBdWRpb1pvbmVzRm9yVXNlckZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8Wm9uZVtdPiB7XG4gICAgY29uc3QgdXNlclpvbmVzID0gYXdhaXQgdGhpcy5nZXRab25lc0J5U3BhY2VGb3JVc2VyKHNwYWNlSUQpO1xuICAgIHJldHVybiB1c2VyWm9uZXMuZmlsdGVyKCh6b25lKSA9PiB6b25lLmF1ZGlvSUQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBab25lcyBieSBQYXJlbnQgWm9uZSBJRFxuICAgKiBAcGFyYW0gcGFyZW50Wm9uZUlEIHN0cmluZ1xuICAgKiBAcmV0dXJucyBQcm9taXNlPFpvbmVbXT5cbiAgICovXG4gIGFzeW5jIGdldFpvbmVzQnlQYXJlbnRab25lKHBhcmVudFpvbmVJRDogc3RyaW5nKTogUHJvbWlzZTxab25lW10+IHtcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fXG4gICAgICAuWm9uZXNCeVpvbmUocGFyZW50Wm9uZUlEKVxuICAgICAgLnRoZW4oKHJlcykgPT4gcmVzLml0ZW1zKTtcbiAgfVxufVxuIl19
@@ -236,4 +236,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
236
236
  providedIn: 'root',
237
237
  }]
238
238
  }], ctorParameters: () => [{ type: i1.MatterportService }, { type: i2.ViewerService }, { type: i3.ZoneService }, { type: i4.BaseUserService }, { type: i5.ZoneChangeService }, { type: i6.Router }, { type: i6.ActivatedRoute }] });
239
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBWXZDLE1BQU0sT0FBTyxnQkFBZ0I7SUF1Q2pCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBNUNWLFlBQVksQ0FBZ0I7SUFFNUIsV0FBVyxDQUFnQjtJQUUzQixjQUFjLENBQWtDO0lBRWhELGNBQWMsQ0FBZ0I7SUFFOUIsY0FBYyxDQUFnQjtJQUU5QixXQUFXLENBQWM7SUFFekIsaUJBQWlCLEdBQWtELElBQUksR0FBRyxFQUFFLENBQUM7SUFFN0UsU0FBUyxDQUFjO0lBRXZCLGdCQUFnQixHQUEyQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRXpELGtCQUFrQixHQUEyQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTNELGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7SUFFMUMsdUJBQXVCLENBQVM7SUFFaEMsbUJBQW1CLENBQVM7SUFFNUIsMEJBQTBCLENBQWdCO0lBRTFDLGdCQUFnQixHQUFvQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRWxELG9CQUFvQixDQUFnQjtJQUVwQyxpQkFBaUIsQ0FBUztJQUUxQix5QkFBeUIsQ0FBUztJQUdsQyxZQUNVLGlCQUFvQyxFQUNwQyxhQUE0QixFQUM1QixXQUF3QixFQUN4QixXQUE0QixFQUM1QixpQkFBb0MsRUFDcEMsTUFBYyxFQUNkLEtBQXFCO1FBTnJCLHNCQUFpQixHQUFqQixp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LGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFpvbmUgfSBmcm9tICcuLi90eXBlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0dGVycG9ydFNlcnZpY2UgfSBmcm9tICcuL21hdHRlcnBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFpvbmVTZXJ2aWNlIH0gZnJvbSAnLi9tb2RlbHMvem9uZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWm9uZUNoYW5nZVNlcnZpY2UgfSBmcm9tICcuL3pvbmVDaGFuZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gJy4vdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmlld2VyU2VydmljZSB9IGZyb20gJy4vdmlld2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0b3JTZXJ2aWNlIHtcclxuICBjdXJyZW50U3dlZXA6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIHRhcmdldFN3ZWVwOiBzdHJpbmcgfCBudWxsO1xyXG5cclxuICB0YXJnZXRSb3RhdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbDtcclxuXHJcbiAgY3VycmVudE1vZGVsM0Q6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIGN1cnJlbnRTcGFjZUlEOiBzdHJpbmcgfCBudWxsO1xyXG5cclxuICBjdXJyZW50Wm9uZTogWm9uZSB8IG51bGw7XHJcblxyXG4gIHZpc2l0TGFzdFBvc2l0aW9uOiBNYXA8c3RyaW5nLCB7IHN3ZWVwOiBzdHJpbmc7IHJvdGF0aW9uOiBhbnkgfT4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIGZsb29yVG9HbzogWm9uZSB8IG51bGw7XHJcblxyXG4gIGxvY2F0aW9uSURDaGFuZ2U6IFN1YmplY3Q8c3RyaW5nIHwgbnVsbD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBuYXZCYXJab25lSURDaGFuZ2U6IFN1YmplY3Q8c3RyaW5nIHwgbnVsbD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBpc1Zpc2libGVDaGFuZ2VkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuXHJcbiAgY3VycmVudE5hdkJhckxvY2F0aW9uSUQ6IHN0cmluZztcclxuXHJcbiAgY3VycmVudE5hdkJhclpvbmVJRDogc3RyaW5nO1xyXG5cclxuICB6b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcDogWm9uZVtdIHwgbnVsbDtcclxuXHJcbiAgYXVkaW9ab25lc0NoYW5nZTogU3ViamVjdDxab25lW10+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgem9uZXNGb3JVc2VyRm9yU3BhY2U6IFpvbmVbXSB8IG51bGw7XHJcblxyXG4gIGN1cnJlbnRBdWRpb1pvbmVzOiBab25lW107XHJcblxyXG4gIGF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2U6IFpvbmVbXTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtYXR0ZXJwb3J0U2VydmljZTogTWF0dGVycG9ydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHZpZXdlclNlcnZpY2U6IFZpZXdlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpvbmVTZXJ2aWNlOiBab25lU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgem9uZUNoYW5nZVNlcnZpY2U6IFpvbmVDaGFuZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICkge1xyXG4gICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5jdXJyZW50U3dlZXBcclxuICAgICAgLnBpcGUoZmlyc3QoKSkgLy8gIHRha2UgZmlyc3QgaW4gb3JkZXIgbm90IHRvIHdhaXQgMiBzZWMgYW4gZmlyc3QgbG9hZFxyXG4gICAgICAuc3Vic2NyaWJlKChzd2VlcDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3dlZXAgPSBzd2VlcDtcclxuICAgICAgICBpZiAodGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZSkge1xyXG4gICAgICAgICAgdGhpcy5zZXRab25lc0ZvckN1cnJlbnRTd2VlcCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmN1cnJlbnRTd2VlcFxyXG4gICAgICAvLy5waXBlKGRlYm91bmNlVGltZTxzdHJpbmc+KDE1MDApKSAvLyAgZGVsYXlzIHZhbHVlcyBlbWl0dGVkIGFuZCByZXR1cm4gb25seSB0aGUgbGF0ZXN0XHJcbiAgICAgIC5zdWJzY3JpYmUoKHN3ZWVwOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAoc3dlZXAgPT09IHRoaXMuY3VycmVudFN3ZWVwKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3VycmVudFN3ZWVwID0gc3dlZXA7XHJcbiAgICAgICAgaWYgKHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2UpIHtcclxuICAgICAgICAgIHRoaXMuc2V0Wm9uZXNGb3JDdXJyZW50U3dlZXAoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy52aWV3ZXJTZXJ2aWNlLnZpZXdlcklzT24uc3Vic2NyaWJlKFxyXG4gICAgICAoZGF0YToge1xyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyB8IG51bGw7XHJcbiAgICAgICAgbW9kZWwzRDogc3RyaW5nIHwgbnVsbDtcclxuICAgICAgICBzd2VlcDogc3RyaW5nIHwgbnVsbDtcclxuICAgICAgICByb3RhdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbDtcclxuICAgICAgfSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEICE9PSBkYXRhLnNwYWNlSUQpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQgPSBkYXRhLnNwYWNlSUQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghZGF0YS5zcGFjZUlEKSB7XHJcbiAgICAgICAgICB0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXAgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5hdWRpb1pvbmVzRm9yVXNlckZvclNwYWNlID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFpvbmUgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS56b25lQ2hhbmdlLm5leHQobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRTd2VlcCA9IG51bGw7XHJcbiAgICAgICAgICAvLyBzYXZlIGxhc3QgcG9zaXRpb25cclxuICAgICAgICAgIGNvbnN0IGxhc3RQb3NlID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5wb3NlQ2FtZXJhO1xyXG4gICAgICAgICAgaWYgKGxhc3RQb3NlICYmIHRoaXMuY3VycmVudE1vZGVsM0QgJiYgdGhpcy51c2VyU2VydmljZS5jdSkge1xyXG4gICAgICAgICAgICB0aGlzLnZpc2l0TGFzdFBvc2l0aW9uLnNldCh0aGlzLmN1cnJlbnRNb2RlbDNELCB7XHJcbiAgICAgICAgICAgICAgLyoqT3ZlcnJpZGUgc3dlZXAvcm90YXRpb24gaWYgZXhpc3QgKi9cclxuICAgICAgICAgICAgICBzd2VlcDogdGhpcy50YXJnZXRTd2VlcCA/PyBsYXN0UG9zZS5zd2VlcCxcclxuICAgICAgICAgICAgICByb3RhdGlvbjogdGhpcy50YXJnZXRSb3RhdGlvbiA/PyBsYXN0UG9zZS5yb3RhdGlvbixcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRNb2RlbDNEID0gZGF0YS5tb2RlbDNEO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRNb2RlbDNEID0gZGF0YS5tb2RlbDNEO1xyXG4gICAgICAgICAgLyoqT3ZlcnJpZGUgc3dlZXAvcm90YXRpb24gaWYgZXhpc3QuIFRhcmdldCBpcyByZXNldCBhZnRlciAobnVsbCkqL1xyXG4gICAgICAgICAgdGhpcy50YXJnZXRTd2VlcCA9IHRoaXMudGFyZ2V0U3dlZXAgPz8gZGF0YS5zd2VlcDtcclxuICAgICAgICAgIHRoaXMudGFyZ2V0Um90YXRpb24gPSB0aGlzLnRhcmdldFJvdGF0aW9uID8/IGRhdGEucm90YXRpb247XHJcbiAgICAgICAgICB0aGlzLm9uVmlld2VyTG9hZGVkKCkuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLmlzQ2hhbmdlZC5zdWJzY3JpYmUoKGlzQ29ubmVjdGVkKSA9PiB7XHJcbiAgICAgIGlmICghaXNDb25uZWN0ZWQpIHtcclxuICAgICAgICAvLyB1c2VyIGRpc2Nvbm5lY3RlZCwgY2xlYW4gTWFwXHJcbiAgICAgICAgdGhpcy52aXNpdExhc3RQb3NpdGlvbiA9IG5ldyBNYXAoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgY29uc3QgZGVlcFBhcmFtc0Jhc2U2NCA9IHBhcmFtc1snZGVlcFBhcmFtcyddO1xyXG4gICAgICBpZiAoZGVlcFBhcmFtc0Jhc2U2NCkge1xyXG4gICAgICAgIGNvbnN0IGRlZXBQYXJhbXM6IGFueSA9IEpTT04ucGFyc2UoYXRvYihkZWVwUGFyYW1zQmFzZTY0KSk7XHJcbiAgICAgICAgdGhpcy50YXJnZXRTd2VlcCA9IGRlZXBQYXJhbXMuc3dlZXBJRDtcclxuICAgICAgICB0aGlzLnRhcmdldFJvdGF0aW9uID0gZGVlcFBhcmFtcy5yb3RhdGlvbjtcclxuXHJcbiAgICAgICAgLyoqQ2xlYXIgdGhpcyBxdWVyeSBwYXJhbXMgKi9cclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xyXG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHsgZGVlcFBhcmFtczogbnVsbCB9LCBxdWVyeVBhcmFtc0hhbmRsaW5nOiBcIm1lcmdlXCJcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0RGVlcExpbmsoKTogc3RyaW5nIHtcclxuICAgIGxldCBkYXRhID0gbnVsbDtcclxuXHJcbiAgICBpZiAodGhpcy5jdXJyZW50U3dlZXApIHsgLyoqVG9kbyBjaGVjayBtYXR0ZXJwb3J0IG1vZCBhbmQgYWRhcHQgKi9cclxuICAgICAgZGF0YSA9IHtcclxuICAgICAgICBzd2VlcElEOiB0aGlzLmN1cnJlbnRTd2VlcCxcclxuICAgICAgICByb3RhdGlvbjogdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRDdXJyZW50Q2FtZXJhUG9zaXRpb24oKS5yb3RhdGlvblxyXG4gICAgICB9O1xyXG5cclxuICAgICAgZGF0YSA9IGJ0b2EoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG1vZGVsM0QgPSB0aGlzLmN1cnJlbnRNb2RlbDNEO1xyXG5cclxuICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoW10sIHtcclxuICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcclxuICAgICAgcXVlcnlQYXJhbXM6IHsgZGVlcFBhcmFtczogZGF0YSwgbW9kZWwzRCB9LFxyXG4gICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiBcIm1lcmdlXCJcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBgJHtsb2NhdGlvbi5vcmlnaW59JHt1cmwudG9TdHJpbmcoKX1gO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGFzdFBvc2l0aW9uRm9yTW9kZWwobW9kZWwzRDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy52aXNpdExhc3RQb3NpdGlvbi5nZXQobW9kZWwzRCk7XHJcbiAgfVxyXG5cclxuICBnb1RvU3dlZXBXaXRoUm90YXRpb24oXHJcbiAgICBzd2VlcDogc3RyaW5nLFxyXG4gICAgcm90YXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB8IG51bGwgPSBudWxsXHJcbiAgKSB7XHJcbiAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFjdGlvbl9nb190b19zd2VlcChzd2VlcCwgcm90YXRpb24pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ29Ub0Zsb29yKGZsb29yOiBab25lKSB7XHJcbiAgICBsZXQgbWF0dGVycG9ydEZsb29yU2VxdWVuY2UgPSBudWxsO1xyXG4gICAgaWYgKGZsb29yLm1ldGFkYXRhKSB7XHJcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gSlNPTi5wYXJzZShmbG9vci5tZXRhZGF0YSk7XHJcbiAgICAgIGlmIChtZXRhZGF0YS5tYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgbWF0dGVycG9ydEZsb29yU2VxdWVuY2UgPSBtZXRhZGF0YS5tYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hY3Rpb25fZ29fdG9fZmxvb3IoXHJcbiAgICAgIGZsb29yLm5hbWUsXHJcbiAgICAgIG1hdHRlcnBvcnRGbG9vclNlcXVlbmNlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25WaWV3ZXJMb2FkZWQoKSB7XHJcbiAgICBsZXQgc3dlZXBUb0dvOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAgIGxldCByb3RhdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbCA9IG51bGw7XHJcbiAgICBpZiAodGhpcy50YXJnZXRTd2VlcCkge1xyXG4gICAgICBzd2VlcFRvR28gPSB0aGlzLnRhcmdldFN3ZWVwO1xyXG4gICAgICByb3RhdGlvbiA9IHRoaXMudGFyZ2V0Um90YXRpb25cclxuICAgICAgICA/IHRoaXMudGFyZ2V0Um90YXRpb25cclxuICAgICAgICA6IHRoaXMuY2hlY2tSb3RhdGlvbkZvclN3ZWVwKHRoaXMudGFyZ2V0U3dlZXApO1xyXG4gICAgICAvKipSZXNldCAvIENvbnN1bWUgdGFyZ2V0ICovXHJcbiAgICAgIHRoaXMudGFyZ2V0Um90YXRpb24gPSBudWxsO1xyXG4gICAgICB0aGlzLnRhcmdldFN3ZWVwID0gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGxhc3RQb3N0aW9uID0gdGhpcy5nZXRMYXN0UG9zaXRpb25Gb3JNb2RlbCh0aGlzLmN1cnJlbnRNb2RlbDNEISk7XHJcbiAgICAgIGlmIChsYXN0UG9zdGlvbikge1xyXG4gICAgICAgIHN3ZWVwVG9HbyA9IGxhc3RQb3N0aW9uLnN3ZWVwO1xyXG4gICAgICAgIHJvdGF0aW9uID0gbGFzdFBvc3Rpb24ucm90YXRpb247XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLnRhcmdldFJvdGF0aW9uKSB7XHJcbiAgICAgIHJvdGF0aW9uID0gdGhpcy50YXJnZXRSb3RhdGlvbjtcclxuICAgIH1cclxuICAgIGlmIChzd2VlcFRvR28gJiYgIXRoaXMuZmxvb3JUb0dvKSB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwiZ28gdG8gc3dlZXBcIiwgc3dlZXBUb0dvKTtcclxuICAgICAgdGhpcy5nb1RvU3dlZXBXaXRoUm90YXRpb24oc3dlZXBUb0dvLCByb3RhdGlvbik7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5mbG9vclRvR28pIHtcclxuICAgICAgdGhpcy5nb1RvRmxvb3IodGhpcy5mbG9vclRvR28pO1xyXG4gICAgICB0aGlzLmZsb29yVG9HbyA9IG51bGw7XHJcbiAgICB9XHJcbiAgICAvLyBpZiBmaXJzdCBsb2FkIGFuZCB6b25lcyBhcmUgbm90IHNldFxyXG4gICAgdGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZSA9IGF3YWl0IHRoaXMuem9uZVNlcnZpY2UuZ2V0Wm9uZXNCeVNwYWNlRm9yVXNlcihcclxuICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRFxyXG4gICAgKTtcclxuICAgIHRoaXMuYXVkaW9ab25lc0ZvclVzZXJGb3JTcGFjZSA9IHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2UuZmlsdGVyKFxyXG4gICAgICAoem9uZSkgPT4gem9uZS5hdWRpb0lEXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2UgPSBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmdldFpvbmVzQnlTcGFjZUZvclVzZXIoXHJcbiAgICAgIHRoaXMuY3VycmVudFNwYWNlSURcclxuICAgICk7XHJcbiAgICB0aGlzLmF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2UgPSB0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlLmZpbHRlcihcclxuICAgICAgKHpvbmUpID0+IHpvbmUuYXVkaW9JRFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuY3VycmVudFN3ZWVwKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFN3ZWVwID0gdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5nZXRDdXJyZW50U3dlZXAoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNldFpvbmVzRm9yQ3VycmVudFN3ZWVwKCk7XHJcbiAgfVxyXG5cclxuICBjaGVja1JvdGF0aW9uRm9yU3dlZXAoc3dlZXA6IHN0cmluZyk6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB8IG51bGwge1xyXG4gICAgY29uc3QgbGFzdFBvc2l0aW9uID0gdGhpcy52aXNpdExhc3RQb3NpdGlvbi5nZXQodGhpcy5jdXJyZW50TW9kZWwzRCEpO1xyXG4gICAgaWYgKGxhc3RQb3NpdGlvbiAmJiBsYXN0UG9zaXRpb24uc3dlZXAgPT09IHN3ZWVwKSB7XHJcbiAgICAgIHJldHVybiBsYXN0UG9zaXRpb24ucm90YXRpb247XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHNldFpvbmVzRm9yQ3VycmVudFN3ZWVwKCkge1xyXG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTd2VlcCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY3VycmVudFN3ZWVwIGlzIGFscmVhZHkgYSB1dWlkICh0cmFuc2xhdGVkIGF0IHRoZSBzb3VyY2UgaW4gTWF0dGVycG9ydFNlcnZpY2UpLFxyXG4gICAgLy8gc28gaXQgbWF0Y2hlcyBkaXJlY3RseSBhZ2FpbnN0IHpvbmUuc3dlZXBJRHMgd2hpY2ggc3RvcmUgdXVpZHMgZnJvbSB0aGUgaW1wb3J0LlxyXG4gICAgbGV0IHpvbmVzRm9yU3dlZXAgPSB0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlPy5maWx0ZXIoXHJcbiAgICAgICh6b25lKSA9PiB6b25lLnN3ZWVwSURzICYmIHpvbmUuc3dlZXBJRHMuaW5jbHVkZXModGhpcy5jdXJyZW50U3dlZXApXHJcbiAgICApO1xyXG4gICAgY29uc3QgYXVkaW9ab25lcyA9IHRoaXMuYXVkaW9ab25lc0ZvclVzZXJGb3JTcGFjZT8uZmlsdGVyKFxyXG4gICAgICAoem9uZSkgPT4gem9uZS5zd2VlcElEcyAmJiB6b25lLnN3ZWVwSURzLmluY2x1ZGVzKHRoaXMuY3VycmVudFN3ZWVwKVxyXG4gICAgKTtcclxuICAgIHRoaXMuYXVkaW9ab25lc0NoYW5nZS5uZXh0KGF1ZGlvWm9uZXMpO1xyXG4gICAgdGhpcy5jdXJyZW50QXVkaW9ab25lcyA9IGF1ZGlvWm9uZXM7XHJcblxyXG4gICAgLy8gZmlsdGVyIG91dCBhdWRpbyB6b25lIChub3QgdG8gc2hvdyB0byB1c2VyIGl0J3MgbmFtZSlcclxuICAgIHpvbmVzRm9yU3dlZXAgPSB6b25lc0ZvclN3ZWVwLmZpbHRlcigoem9uZSkgPT4gIXpvbmUuYXVkaW8pO1xyXG4gICAgLy8gTElORSBCRUxPVyBJUyBDT01NRU5URUQgU0lOQ0UgQ1JFQVRFUyBJTkZJTklURSBTUElOTkVSIEZPUiBaT05FUyBXSVRIT1VUIEFVRElPLi4uXHJcbiAgICAvLyBpZiAoem9uZXNGb3JTd2VlcCAmJiB6b25lc0ZvclN3ZWVwLmxlbmd0aCA+IDApIHtcclxuICAgIHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXAgPSB6b25lc0ZvclN3ZWVwLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgaWYgKGEuc3dlZXBJRHMhLmxlbmd0aCA9PT0gYi5zd2VlcElEcyEubGVuZ3RoKSB7XHJcbiAgICAgICAgLy8gaWYgdGhlIHNhbWUgYW1vdW50IG9mIHN3ZWVwczogZmxvb3IgPT0gdGhlIHdob2xlIHNwYWNlXHJcbiAgICAgICAgaWYgKGEubGF5ZXIgJiYgYi5sYXllcikge1xyXG4gICAgICAgICAgLy8gcHV0IHR5cGUgQlVJTERJTkcgYXQgdGhlIGVuZFxyXG4gICAgICAgICAgcmV0dXJuIGEubGF5ZXIubmFtZSAhPT0gJ0JVSUxESU5HJ1xyXG4gICAgICAgICAgICA/IC0xXHJcbiAgICAgICAgICAgIDogYi5sYXllci5uYW1lICE9PSAnQlVJTERJTkcnXHJcbiAgICAgICAgICAgICAgPyAxXHJcbiAgICAgICAgICAgICAgOiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYS5wYXJlbnQ/LnN3ZWVwSURzID8gLTEgOiBiLnBhcmVudD8uc3dlZXBJRHMgPyAxIDogMDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYS5zd2VlcElEcyEubGVuZ3RoIC0gYi5zd2VlcElEcyEubGVuZ3RoO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVzRm9yVXNlckNoYW5nZS5uZXh0KFxyXG4gICAgICB0aGlzLnpvbmVzU29ydGVkRm9yQ3VycmVudFN3ZWVwXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcC5sZW5ndGggPiAwICYmXHJcbiAgICAgIHRoaXMuY3VycmVudFpvbmUgIT09IHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXBbMF1cclxuICAgICkge1xyXG4gICAgICBbdGhpcy5jdXJyZW50Wm9uZV0gPSB0aGlzLnpvbmVzU29ydGVkRm9yQ3VycmVudFN3ZWVwO1xyXG4gICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVDaGFuZ2UubmV4dCh0aGlzLmN1cnJlbnRab25lKTtcclxuICAgIH1cclxuICAgIC8vIH1cclxuICB9XHJcbn1cclxuIl19
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBWXZDLE1BQU0sT0FBTyxnQkFBZ0I7SUF1Q2pCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBNUNWLFlBQVksQ0FBZ0I7SUFFNUIsV0FBVyxDQUFnQjtJQUUzQixjQUFjLENBQWtDO0lBRWhELGNBQWMsQ0FBZ0I7SUFFOUIsY0FBYyxDQUFnQjtJQUU5QixXQUFXLENBQWM7SUFFekIsaUJBQWlCLEdBQWtELElBQUksR0FBRyxFQUFFLENBQUM7SUFFN0UsU0FBUyxDQUFjO0lBRXZCLGdCQUFnQixHQUEyQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRXpELGtCQUFrQixHQUEyQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTNELGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7SUFFMUMsdUJBQXVCLENBQVM7SUFFaEMsbUJBQW1CLENBQVM7SUFFNUIsMEJBQTBCLENBQWdCO0lBRTFDLGdCQUFnQixHQUFvQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRWxELG9CQUFvQixDQUFnQjtJQUVwQyxpQkFBaUIsQ0FBUztJQUUxQix5QkFBeUIsQ0FBUztJQUdsQyxZQUNVLGlCQUFvQyxFQUNwQyxhQUE0QixFQUM1QixXQUF3QixFQUN4QixXQUE0QixFQUM1QixpQkFBb0MsRUFDcEMsTUFBYyxFQUNkLEtBQXFCO1FBTnJCLHNCQUFpQixHQUFqQixp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LGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFpvbmUgfSBmcm9tICcuLi90eXBlcy5zZXJ2aWNlJztcbmltcG9ydCB7IE1hdHRlcnBvcnRTZXJ2aWNlIH0gZnJvbSAnLi9tYXR0ZXJwb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgWm9uZVNlcnZpY2UgfSBmcm9tICcuL21vZGVscy96b25lLnNlcnZpY2UnO1xuaW1wb3J0IHsgWm9uZUNoYW5nZVNlcnZpY2UgfSBmcm9tICcuL3pvbmVDaGFuZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tICcuL3VzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBWaWV3ZXJTZXJ2aWNlIH0gZnJvbSAnLi92aWV3ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE5hdmlnYXRvclNlcnZpY2Uge1xuICBjdXJyZW50U3dlZXA6IHN0cmluZyB8IG51bGw7XG5cbiAgdGFyZ2V0U3dlZXA6IHN0cmluZyB8IG51bGw7XG5cbiAgdGFyZ2V0Um90YXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB8IG51bGw7XG5cbiAgY3VycmVudE1vZGVsM0Q6IHN0cmluZyB8IG51bGw7XG5cbiAgY3VycmVudFNwYWNlSUQ6IHN0cmluZyB8IG51bGw7XG5cbiAgY3VycmVudFpvbmU6IFpvbmUgfCBudWxsO1xuXG4gIHZpc2l0TGFzdFBvc2l0aW9uOiBNYXA8c3RyaW5nLCB7IHN3ZWVwOiBzdHJpbmc7IHJvdGF0aW9uOiBhbnkgfT4gPSBuZXcgTWFwKCk7XG5cbiAgZmxvb3JUb0dvOiBab25lIHwgbnVsbDtcblxuICBsb2NhdGlvbklEQ2hhbmdlOiBTdWJqZWN0PHN0cmluZyB8IG51bGw+ID0gbmV3IFN1YmplY3QoKTtcblxuICBuYXZCYXJab25lSURDaGFuZ2U6IFN1YmplY3Q8c3RyaW5nIHwgbnVsbD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIGlzVmlzaWJsZUNoYW5nZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gIGN1cnJlbnROYXZCYXJMb2NhdGlvbklEOiBzdHJpbmc7XG5cbiAgY3VycmVudE5hdkJhclpvbmVJRDogc3RyaW5nO1xuXG4gIHpvbmVzU29ydGVkRm9yQ3VycmVudFN3ZWVwOiBab25lW10gfCBudWxsO1xuXG4gIGF1ZGlvWm9uZXNDaGFuZ2U6IFN1YmplY3Q8Wm9uZVtdPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgem9uZXNGb3JVc2VyRm9yU3BhY2U6IFpvbmVbXSB8IG51bGw7XG5cbiAgY3VycmVudEF1ZGlvWm9uZXM6IFpvbmVbXTtcblxuICBhdWRpb1pvbmVzRm9yVXNlckZvclNwYWNlOiBab25lW107XG5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1hdHRlcnBvcnRTZXJ2aWNlOiBNYXR0ZXJwb3J0U2VydmljZSxcbiAgICBwcml2YXRlIHZpZXdlclNlcnZpY2U6IFZpZXdlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB6b25lU2VydmljZTogWm9uZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgem9uZUNoYW5nZVNlcnZpY2U6IFpvbmVDaGFuZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICkge1xuICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuY3VycmVudFN3ZWVwXG4gICAgICAucGlwZShmaXJzdCgpKSAvLyAgdGFrZSBmaXJzdCBpbiBvcmRlciBub3QgdG8gd2FpdCAyIHNlYyBhbiBmaXJzdCBsb2FkXG4gICAgICAuc3Vic2NyaWJlKChzd2VlcDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudFN3ZWVwID0gc3dlZXA7XG4gICAgICAgIGlmICh0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlKSB7XG4gICAgICAgICAgdGhpcy5zZXRab25lc0ZvckN1cnJlbnRTd2VlcCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmN1cnJlbnRTd2VlcFxuICAgICAgLy8ucGlwZShkZWJvdW5jZVRpbWU8c3RyaW5nPigxNTAwKSkgLy8gIGRlbGF5cyB2YWx1ZXMgZW1pdHRlZCBhbmQgcmV0dXJuIG9ubHkgdGhlIGxhdGVzdFxuICAgICAgLnN1YnNjcmliZSgoc3dlZXA6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoc3dlZXAgPT09IHRoaXMuY3VycmVudFN3ZWVwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudFN3ZWVwID0gc3dlZXA7XG4gICAgICAgIGlmICh0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlKSB7XG4gICAgICAgICAgdGhpcy5zZXRab25lc0ZvckN1cnJlbnRTd2VlcCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB0aGlzLnZpZXdlclNlcnZpY2Uudmlld2VySXNPbi5zdWJzY3JpYmUoXG4gICAgICAoZGF0YToge1xuICAgICAgICBzcGFjZUlEOiBzdHJpbmcgfCBudWxsO1xuICAgICAgICBtb2RlbDNEOiBzdHJpbmcgfCBudWxsO1xuICAgICAgICBzd2VlcDogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgcm90YXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB8IG51bGw7XG4gICAgICB9KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEICE9PSBkYXRhLnNwYWNlSUQpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEID0gZGF0YS5zcGFjZUlEO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZGF0YS5zcGFjZUlEKSB7XG4gICAgICAgICAgdGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZSA9IG51bGw7XG4gICAgICAgICAgdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcCA9IG51bGw7XG4gICAgICAgICAgdGhpcy5hdWRpb1pvbmVzRm9yVXNlckZvclNwYWNlID0gbnVsbDtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRab25lID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVDaGFuZ2UubmV4dChudWxsKTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRTd2VlcCA9IG51bGw7XG4gICAgICAgICAgLy8gc2F2ZSBsYXN0IHBvc2l0aW9uXG4gICAgICAgICAgY29uc3QgbGFzdFBvc2UgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnBvc2VDYW1lcmE7XG4gICAgICAgICAgaWYgKGxhc3RQb3NlICYmIHRoaXMuY3VycmVudE1vZGVsM0QgJiYgdGhpcy51c2VyU2VydmljZS5jdSkge1xuICAgICAgICAgICAgdGhpcy52aXNpdExhc3RQb3NpdGlvbi5zZXQodGhpcy5jdXJyZW50TW9kZWwzRCwge1xuICAgICAgICAgICAgICAvKipPdmVycmlkZSBzd2VlcC9yb3RhdGlvbiBpZiBleGlzdCAqL1xuICAgICAgICAgICAgICBzd2VlcDogdGhpcy50YXJnZXRTd2VlcCA/PyBsYXN0UG9zZS5zd2VlcCxcbiAgICAgICAgICAgICAgcm90YXRpb246IHRoaXMudGFyZ2V0Um90YXRpb24gPz8gbGFzdFBvc2Uucm90YXRpb24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jdXJyZW50TW9kZWwzRCA9IGRhdGEubW9kZWwzRDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRNb2RlbDNEID0gZGF0YS5tb2RlbDNEO1xuICAgICAgICAgIC8qKk92ZXJyaWRlIHN3ZWVwL3JvdGF0aW9uIGlmIGV4aXN0LiBUYXJnZXQgaXMgcmVzZXQgYWZ0ZXIgKG51bGwpKi9cbiAgICAgICAgICB0aGlzLnRhcmdldFN3ZWVwID0gdGhpcy50YXJnZXRTd2VlcCA/PyBkYXRhLnN3ZWVwO1xuICAgICAgICAgIHRoaXMudGFyZ2V0Um90YXRpb24gPSB0aGlzLnRhcmdldFJvdGF0aW9uID8/IGRhdGEucm90YXRpb247XG4gICAgICAgICAgdGhpcy5vblZpZXdlckxvYWRlZCgpLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMudXNlclNlcnZpY2UuaXNDaGFuZ2VkLnN1YnNjcmliZSgoaXNDb25uZWN0ZWQpID0+IHtcbiAgICAgIGlmICghaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgLy8gdXNlciBkaXNjb25uZWN0ZWQsIGNsZWFuIE1hcFxuICAgICAgICB0aGlzLnZpc2l0TGFzdFBvc2l0aW9uID0gbmV3IE1hcCgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIGNvbnN0IGRlZXBQYXJhbXNCYXNlNjQgPSBwYXJhbXNbJ2RlZXBQYXJhbXMnXTtcbiAgICAgIGlmIChkZWVwUGFyYW1zQmFzZTY0KSB7XG4gICAgICAgIGNvbnN0IGRlZXBQYXJhbXM6IGFueSA9IEpTT04ucGFyc2UoYXRvYihkZWVwUGFyYW1zQmFzZTY0KSk7XG4gICAgICAgIHRoaXMudGFyZ2V0U3dlZXAgPSBkZWVwUGFyYW1zLnN3ZWVwSUQ7XG4gICAgICAgIHRoaXMudGFyZ2V0Um90YXRpb24gPSBkZWVwUGFyYW1zLnJvdGF0aW9uO1xuXG4gICAgICAgIC8qKkNsZWFyIHRoaXMgcXVlcnkgcGFyYW1zICovXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHsgZGVlcFBhcmFtczogbnVsbCB9LCBxdWVyeVBhcmFtc0hhbmRsaW5nOiBcIm1lcmdlXCJcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIGdldERlZXBMaW5rKCk6IHN0cmluZyB7XG4gICAgbGV0IGRhdGEgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudFN3ZWVwKSB7IC8qKlRvZG8gY2hlY2sgbWF0dGVycG9ydCBtb2QgYW5kIGFkYXB0ICovXG4gICAgICBkYXRhID0ge1xuICAgICAgICBzd2VlcElEOiB0aGlzLmN1cnJlbnRTd2VlcCxcbiAgICAgICAgcm90YXRpb246IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0Q3VycmVudENhbWVyYVBvc2l0aW9uKCkucm90YXRpb25cbiAgICAgIH07XG5cbiAgICAgIGRhdGEgPSBidG9hKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICB9XG5cbiAgICBjb25zdCBtb2RlbDNEID0gdGhpcy5jdXJyZW50TW9kZWwzRDtcblxuICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoW10sIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICBxdWVyeVBhcmFtczogeyBkZWVwUGFyYW1zOiBkYXRhLCBtb2RlbDNEIH0sXG4gICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiBcIm1lcmdlXCJcbiAgICB9KTtcblxuICAgIHJldHVybiBgJHtsb2NhdGlvbi5vcmlnaW59JHt1cmwudG9TdHJpbmcoKX1gO1xuICB9XG5cbiAgZ2V0TGFzdFBvc2l0aW9uRm9yTW9kZWwobW9kZWwzRDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaXRMYXN0UG9zaXRpb24uZ2V0KG1vZGVsM0QpO1xuICB9XG5cbiAgZ29Ub1N3ZWVwV2l0aFJvdGF0aW9uKFxuICAgIHN3ZWVwOiBzdHJpbmcsXG4gICAgcm90YXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB8IG51bGwgPSBudWxsXG4gICkge1xuICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uX2dvX3RvX3N3ZWVwKHN3ZWVwLCByb3RhdGlvbik7XG4gIH1cblxuICBhc3luYyBnb1RvRmxvb3IoZmxvb3I6IFpvbmUpIHtcbiAgICBsZXQgbWF0dGVycG9ydEZsb29yU2VxdWVuY2UgPSBudWxsO1xuICAgIGlmIChmbG9vci5tZXRhZGF0YSkge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSBKU09OLnBhcnNlKGZsb29yLm1ldGFkYXRhKTtcbiAgICAgIGlmIChtZXRhZGF0YS5tYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1hdHRlcnBvcnRGbG9vclNlcXVlbmNlID0gbWV0YWRhdGEubWF0dGVycG9ydEZsb29yU2VxdWVuY2U7XG4gICAgICB9XG4gICAgfVxuICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uX2dvX3RvX2Zsb29yKFxuICAgICAgZmxvb3IubmFtZSxcbiAgICAgIG1hdHRlcnBvcnRGbG9vclNlcXVlbmNlXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIG9uVmlld2VyTG9hZGVkKCkge1xuICAgIGxldCBzd2VlcFRvR286IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIGxldCByb3RhdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKHRoaXMudGFyZ2V0U3dlZXApIHtcbiAgICAgIHN3ZWVwVG9HbyA9IHRoaXMudGFyZ2V0U3dlZXA7XG4gICAgICByb3RhdGlvbiA9IHRoaXMudGFyZ2V0Um90YXRpb25cbiAgICAgICAgPyB0aGlzLnRhcmdldFJvdGF0aW9uXG4gICAgICAgIDogdGhpcy5jaGVja1JvdGF0aW9uRm9yU3dlZXAodGhpcy50YXJnZXRTd2VlcCk7XG4gICAgICAvKipSZXNldCAvIENvbnN1bWUgdGFyZ2V0ICovXG4gICAgICB0aGlzLnRhcmdldFJvdGF0aW9uID0gbnVsbDtcbiAgICAgIHRoaXMudGFyZ2V0U3dlZXAgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsYXN0UG9zdGlvbiA9IHRoaXMuZ2V0TGFzdFBvc2l0aW9uRm9yTW9kZWwodGhpcy5jdXJyZW50TW9kZWwzRCEpO1xuICAgICAgaWYgKGxhc3RQb3N0aW9uKSB7XG4gICAgICAgIHN3ZWVwVG9HbyA9IGxhc3RQb3N0aW9uLnN3ZWVwO1xuICAgICAgICByb3RhdGlvbiA9IGxhc3RQb3N0aW9uLnJvdGF0aW9uO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy50YXJnZXRSb3RhdGlvbikge1xuICAgICAgcm90YXRpb24gPSB0aGlzLnRhcmdldFJvdGF0aW9uO1xuICAgIH1cbiAgICBpZiAoc3dlZXBUb0dvICYmICF0aGlzLmZsb29yVG9Hbykge1xuICAgICAgLy8gY29uc29sZS5sb2coXCJnbyB0byBzd2VlcFwiLCBzd2VlcFRvR28pO1xuICAgICAgdGhpcy5nb1RvU3dlZXBXaXRoUm90YXRpb24oc3dlZXBUb0dvLCByb3RhdGlvbik7XG4gICAgfVxuICAgIGlmICh0aGlzLmZsb29yVG9Hbykge1xuICAgICAgdGhpcy5nb1RvRmxvb3IodGhpcy5mbG9vclRvR28pO1xuICAgICAgdGhpcy5mbG9vclRvR28gPSBudWxsO1xuICAgIH1cbiAgICAvLyBpZiBmaXJzdCBsb2FkIGFuZCB6b25lcyBhcmUgbm90IHNldFxuICAgIHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2UgPSBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmdldFpvbmVzQnlTcGFjZUZvclVzZXIoXG4gICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEXG4gICAgKTtcbiAgICB0aGlzLmF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2UgPSB0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlLmZpbHRlcihcbiAgICAgICh6b25lKSA9PiB6b25lLmF1ZGlvSURcbiAgICApO1xuXG4gICAgdGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZSA9IGF3YWl0IHRoaXMuem9uZVNlcnZpY2UuZ2V0Wm9uZXNCeVNwYWNlRm9yVXNlcihcbiAgICAgIHRoaXMuY3VycmVudFNwYWNlSURcbiAgICApO1xuICAgIHRoaXMuYXVkaW9ab25lc0ZvclVzZXJGb3JTcGFjZSA9IHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2UuZmlsdGVyKFxuICAgICAgKHpvbmUpID0+IHpvbmUuYXVkaW9JRFxuICAgICk7XG5cbiAgICBpZiAoIXRoaXMuY3VycmVudFN3ZWVwKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTd2VlcCA9IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0Q3VycmVudFN3ZWVwKCk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRab25lc0ZvckN1cnJlbnRTd2VlcCgpO1xuICB9XG5cbiAgY2hlY2tSb3RhdGlvbkZvclN3ZWVwKHN3ZWVwOiBzdHJpbmcpOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsIHtcbiAgICBjb25zdCBsYXN0UG9zaXRpb24gPSB0aGlzLnZpc2l0TGFzdFBvc2l0aW9uLmdldCh0aGlzLmN1cnJlbnRNb2RlbDNEISk7XG4gICAgaWYgKGxhc3RQb3NpdGlvbiAmJiBsYXN0UG9zaXRpb24uc3dlZXAgPT09IHN3ZWVwKSB7XG4gICAgICByZXR1cm4gbGFzdFBvc2l0aW9uLnJvdGF0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHNldFpvbmVzRm9yQ3VycmVudFN3ZWVwKCkge1xuICAgIGlmICghdGhpcy5jdXJyZW50U3dlZXApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBjdXJyZW50U3dlZXAgaXMgYWxyZWFkeSBhIHV1aWQgKHRyYW5zbGF0ZWQgYXQgdGhlIHNvdXJjZSBpbiBNYXR0ZXJwb3J0U2VydmljZSksXG4gICAgLy8gc28gaXQgbWF0Y2hlcyBkaXJlY3RseSBhZ2FpbnN0IHpvbmUuc3dlZXBJRHMgd2hpY2ggc3RvcmUgdXVpZHMgZnJvbSB0aGUgaW1wb3J0LlxuICAgIGxldCB6b25lc0ZvclN3ZWVwID0gdGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZT8uZmlsdGVyKFxuICAgICAgKHpvbmUpID0+IHpvbmUuc3dlZXBJRHMgJiYgem9uZS5zd2VlcElEcy5pbmNsdWRlcyh0aGlzLmN1cnJlbnRTd2VlcClcbiAgICApO1xuICAgIGNvbnN0IGF1ZGlvWm9uZXMgPSB0aGlzLmF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2U/LmZpbHRlcihcbiAgICAgICh6b25lKSA9PiB6b25lLnN3ZWVwSURzICYmIHpvbmUuc3dlZXBJRHMuaW5jbHVkZXModGhpcy5jdXJyZW50U3dlZXApXG4gICAgKTtcbiAgICB0aGlzLmF1ZGlvWm9uZXNDaGFuZ2UubmV4dChhdWRpb1pvbmVzKTtcbiAgICB0aGlzLmN1cnJlbnRBdWRpb1pvbmVzID0gYXVkaW9ab25lcztcblxuICAgIC8vIGZpbHRlciBvdXQgYXVkaW8gem9uZSAobm90IHRvIHNob3cgdG8gdXNlciBpdCdzIG5hbWUpXG4gICAgem9uZXNGb3JTd2VlcCA9IHpvbmVzRm9yU3dlZXAuZmlsdGVyKCh6b25lKSA9PiAhem9uZS5hdWRpbyk7XG4gICAgLy8gTElORSBCRUxPVyBJUyBDT01NRU5URUQgU0lOQ0UgQ1JFQVRFUyBJTkZJTklURSBTUElOTkVSIEZPUiBaT05FUyBXSVRIT1VUIEFVRElPLi4uXG4gICAgLy8gaWYgKHpvbmVzRm9yU3dlZXAgJiYgem9uZXNGb3JTd2VlcC5sZW5ndGggPiAwKSB7XG4gICAgdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcCA9IHpvbmVzRm9yU3dlZXAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgaWYgKGEuc3dlZXBJRHMhLmxlbmd0aCA9PT0gYi5zd2VlcElEcyEubGVuZ3RoKSB7XG4gICAgICAgIC8vIGlmIHRoZSBzYW1lIGFtb3VudCBvZiBzd2VlcHM6IGZsb29yID09IHRoZSB3aG9sZSBzcGFjZVxuICAgICAgICBpZiAoYS5sYXllciAmJiBiLmxheWVyKSB7XG4gICAgICAgICAgLy8gcHV0IHR5cGUgQlVJTERJTkcgYXQgdGhlIGVuZFxuICAgICAgICAgIHJldHVybiBhLmxheWVyLm5hbWUgIT09ICdCVUlMRElORydcbiAgICAgICAgICAgID8gLTFcbiAgICAgICAgICAgIDogYi5sYXllci5uYW1lICE9PSAnQlVJTERJTkcnXG4gICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICA6IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGEucGFyZW50Py5zd2VlcElEcyA/IC0xIDogYi5wYXJlbnQ/LnN3ZWVwSURzID8gMSA6IDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gYS5zd2VlcElEcyEubGVuZ3RoIC0gYi5zd2VlcElEcyEubGVuZ3RoO1xuICAgIH0pO1xuICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZXNGb3JVc2VyQ2hhbmdlLm5leHQoXG4gICAgICB0aGlzLnpvbmVzU29ydGVkRm9yQ3VycmVudFN3ZWVwXG4gICAgKTtcblxuICAgIGlmIChcbiAgICAgIHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXAubGVuZ3RoID4gMCAmJlxuICAgICAgdGhpcy5jdXJyZW50Wm9uZSAhPT0gdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcFswXVxuICAgICkge1xuICAgICAgW3RoaXMuY3VycmVudFpvbmVdID0gdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcDtcbiAgICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZUNoYW5nZS5uZXh0KHRoaXMuY3VycmVudFpvbmUpO1xuICAgIH1cbiAgICAvLyB9XG4gIH1cbn1cbiJdfQ==
@@ -17,6 +17,23 @@ export const uploadFileToS3 = async (path, file, objectId) => {
17
17
  return result.key;
18
18
  });
19
19
  };
20
+ /**
21
+ * Uploads a file, reporting progress as a 0-1 fraction.
22
+ *
23
+ * uploadFileToS3 above swallows progress, which is fine for a photo and unusable for a 3D model:
24
+ * these run to hundreds of megabytes, and an upload with no feedback is indistinguishable from a
25
+ * frozen page. Returns the stored key, which is what gets saved on the record.
26
+ */
27
+ export const uploadFileToS3WithProgress = async (path, file, onProgress) => {
28
+ return Storage.put(path + file.name, file, {
29
+ contentType: file.type || "application/octet-stream",
30
+ progressCallback(progress) {
31
+ if (onProgress && progress.total > 0) {
32
+ onProgress(progress.loaded / progress.total);
33
+ }
34
+ },
35
+ }).then((result) => result.key);
36
+ };
20
37
  export const getSignedImageUrlForEquipment = async (equip) => {
21
38
  if (!equip.photo) {
22
39
  return Promise.resolve(null);
@@ -173,4 +190,4 @@ export const copyFileInS3ViaDownload = async (sourceKey, destKey) => {
173
190
  });
174
191
  return result.key;
175
192
  };
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvczMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3RDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDdkMsTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztTQUMxQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDaEUsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDekUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFDL0IsSUFBWSxFQUNaLElBQVUsRUFDVixRQUF1QixFQUNSLEVBQUU7SUFDakIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMxRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtRQUNoRCxnQkFBZ0IsQ0FBQyxRQUFRO1lBQ3JCLHdDQUF3QztRQUM1QyxDQUFDO1FBQ0QsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJO0tBQ3pCLENBQUM7U0FDRyxJQUFJ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fSBmcm9tIFwiYXdzLWFtcGxpZnlcIjtcclxuaW1wb3J0IHsgRXF1aXBtZW50IH0gZnJvbSBcIi4uL3R5cGVzLnNlcnZpY2VcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBkZWxldGVGcm9tUzMgPSBhc3luYyAocGF0aCkgPT4ge1xyXG4gICAgYXdhaXQgU3RvcmFnZS5yZW1vdmUocGF0aCwgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxyXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IGNvbnNvbGUubG9nKFwiU3VjY2Vzc2Z1bGx5IGRlbGV0ZWQgPT5cIiwgcmVzdWx0KSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmxvZyhcIkRlbGV0aW5nIGZyb20gUzMgZXJyb3I6XCIsIGVycm9yKSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgdXBsb2FkRmlsZVRvUzMgPSBhc3luYyAoXHJcbiAgICBwYXRoOiBzdHJpbmcsXHJcbiAgICBmaWxlOiBGaWxlLFxyXG4gICAgb2JqZWN0SWQ6IHN0cmluZyB8IG51bGwsXHJcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XHJcbiAgICBjb25zdCBwcmVmaXggPSBvYmplY3RJZCA/IGAke29iamVjdElkLnNsaWNlKDAsIDgpfV9gIDogXCJcIjtcclxuICAgIHJldHVybiBTdG9yYWdlLnB1dChwYXRoICsgcHJlZml4ICsgZmlsZS5uYW1lLCBmaWxlLCB7XHJcbiAgICAgICAgcHJvZ3Jlc3NDYWxsYmFjayhwcm9ncmVzcykge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnVXBsb2FkZWQgOiAnLCBwcm9ncmVzcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb250ZW50VHlwZTogZmlsZS50eXBlLFxyXG4gICAgfSlcclxuICAgICAgICAudGhlbigocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJTdWNjZXNzID0+XCIsIHJlc3VsdCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQua2V5O1xyXG4gICAgICAgIH0pO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFNpZ25lZEltYWdlVXJsRm9yRXF1aXBtZW50ID0gYXN5bmMgKFxyXG4gICAgZXF1aXA6IEVxdWlwbWVudCxcclxuKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiA9PiB7XHJcbiAgICBpZiAoIWVxdWlwLnBob3RvKSB7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuICAgIH1cclxuICAgIHJldHVybiBTdG9yYWdlLmdldChlcXVpcC5waG90bywgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxyXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBzdHJpbmc7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3IgZmV0Y2hpbmcgZmlsZSBmcm9tIHMzID0+XCIsIGVycm9yKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSk7XHJcblxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFNpZ25lZEltYWdlVXJsRm9yUHJvZmlsZSA9IGFzeW5jIChcclxuICAgIHByb2ZpbGUsXHJcbik6IFByb21pc2U8c3RyaW5nIHwgdm9pZD4gPT4ge1xyXG4gICAgcmV0dXJuIFN0b3JhZ2UuZ2V0KHByb2ZpbGUuYXZhdGFyLCB7IGxldmVsOiBcInB1YmxpY1wiIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIHN0cmluZztcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvciBmZXRjaGluZyBmaWxlIGZyb20gczMgPT5cIiwgZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFNpZ25lZEltYWdlVXJsRm9yU3BhY2UgPSBhc3luYyAoXHJcbiAgICBzcGFjZSxcclxuKTogUHJvbWlzZTxzdHJpbmcgfCB2b2lkPiA9PiB7XHJcbiAgICByZXR1cm4gU3RvcmFnZS5nZXQoc3BhY2UuYW5uZXhlcywgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxyXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBzdHJpbmc7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3IgZmV0Y2hpbmcgZmlsZSBmcm9tIHMzID0+XCIsIGVycm9yKTtcclxuICAgICAgICB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCB1cGxvYWRCYXNlNjRJbWFnZSA9IGFzeW5jIChcclxuICAgIHVyaTogc3RyaW5nLFxyXG4gICAgb2JqZWN0SWQ6IHN0cmluZyB8IG51bGwsXHJcbiAgICBwYXRoOiBzdHJpbmcsXHJcbiAgICBmcmllbmRseUZpbGVOYW1lOiBzdHJpbmcsXHJcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XHJcbiAgICByZXR1cm4gZmV0Y2godXJpKVxyXG4gICAgICAgIC50aGVuKChyZXMpID0+IHJlcy5ibG9iKCkpXHJcbiAgICAgICAgLnRoZW4oKGJsb2IpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgYCR7ZnJpZW5kbHlGaWxlTmFtZX0uanBlZ2AsIHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwiaW1hZ2UvanBlZ1wiLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHVwbG9hZEZpbGVUb1MzKHBhdGgsIGZpbGUsIG9iamVjdElkKTtcclxuICAgICAgICB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCB1cGxvYWRCYXNlNjRJbWFnZVdpdGhSZXRyeSA9IGFzeW5jIChcclxuICAgIHVyaTogc3RyaW5nLFxyXG4gICAgb2JqZWN0SWQ6IHN0cmluZyB8IG51bGwsXHJcbiAgICBwYXRoOiBzdHJpbmcsXHJcbiAgICBmcmllbmRseUZpbGVOYW1lOiBzdHJpbmcsXHJcbiAgICByZXRyeTogbnVtYmVyXHJcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIHdoaWxlIChyZXRyeSA+IDApIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHIgPSBhd2FpdCB1cGxvYWRCYXNlNjRJbWFnZSh1cmksIG9iamVjdElkLCBwYXRoLCBmcmllbmRseUZpbGVOYW1lKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHJ5LS07XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBVcGxvYWQgZXJyb3IsIHJldHJ5IG7CsCAke3JldHJ5fSA6IGAsIGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmVqZWN0KFwiTWF4IHJldHJ5IGV4Y2VlZGVkXCIpO1xyXG4gICAgfSk7XHJcbn07XHJcblxyXG5cclxuZXhwb3J0IGNvbnN0IHJlbW92ZUFsbEZpbGVzRnJvbUZvbGRlclMzID0gYXN5bmMgKFxyXG4gICAgZm9sZGVyUGF0aDogc3RyaW5nLFxyXG4pOiBQcm9taXNlPGFueT4gPT4ge1xyXG4gICAgY29uc3QgYXJyYXlPZlByb21pc2VzID0gW107XHJcbiAgICBTdG9yYWdlLmxpc3QoZm9sZGVyUGF0aCwgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxyXG4gICAgICAgIC50aGVuKChyZXMpID0+IHtcclxuICAgICAgICAgICAgT2JqZWN0LmtleXMocmVzKS5tYXAoYXN5bmMgKGtleSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IHJlc1trZXldO1xyXG4gICAgICAgICAgICAgICAgYXJyYXlPZlByb21pc2VzLnB1c2goZGVsZXRlRnJvbVMzKGZpbGUua2V5KSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29uc29sZS5lcnJvcihcIkxpc3QgZmFpbHVyZVwiLCBlcnJvcikpO1xyXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKGFycmF5T2ZQcm9taXNlcyk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgbGlzdEZpbGVzSW5Gb2xkZXIgPSBhc3luYyAoZm9sZGVyUGF0aDogc3RyaW5nKTogUHJvbWlzZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiBTdG9yYWdlLmxpc3QoZm9sZGVyUGF0aCwgeyBsZXZlbDogXCJwdWJsaWNcIiwgcGFnZVNpemU6ICdBTEwnIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlcykgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzLnJlc3VsdHM7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKFwiTGlzdCBmYWlsdXJlXCIsIGVycm9yKSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0U2lnbmVkRmlsZSA9IGFzeW5jIChwYXRoKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiA9PiB7XHJcbiAgICByZXR1cm4gU3RvcmFnZS5nZXQocGF0aCwgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxyXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBzdHJpbmc7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3IgZmV0Y2hpbmcgZmlsZSBmcm9tIHMzID0+XCIsIGVycm9yKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSk7XHJcblxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGRvd25sb2FkRmlsZUFzT2JqZWN0ID0gYXN5bmMgKHBhdGgpOiBQcm9taXNlPE9iamVjdCB8IHZvaWQ+ID0+IHtcclxuICAgIHJldHVybiBTdG9yYWdlLmdldChwYXRoLCB7IGRvd25sb2FkOiB0cnVlLCBsZXZlbDogXCJwdWJsaWNcIiB9KVxyXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBPYmplY3Q7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3IgZmV0Y2hpbmcgZmlsZSBmcm9tIHMzID0+XCIsIGVycm9yKTtcclxuICAgICAgICB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRCdWZmZXJGb3JGaWxlRnJvbVMzID0gYXN5bmMgKHBhdGgpOiBQcm9taXNlPEFycmF5QnVmZmVyPiA9PiB7XHJcbiAgICBjb25zdCBvYmplY3QgPSBhd2FpdCBkb3dubG9hZEZpbGVBc09iamVjdChwYXRoKTtcclxuICAgIGlmIChvYmplY3QpIHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheUJ1ZmZlcihvYmplY3QuQm9keSwgXCJiaW5hcnlcIik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCB1cGxvYWRKc29uVG9TMyA9IGFzeW5jIChcclxuICAgIHBhdGg6IHN0cmluZyxcclxuICAgIGpzb246IHN0cmluZyxcclxuICAgIGZpbGVuYW1lOiBzdHJpbmcsXHJcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XHJcbiAgICByZXR1cm4gU3RvcmFnZS5wdXQocGF0aCArIGZpbGVuYW1lLCBqc29uLCB7XHJcbiAgICAgICAgY29udGVudFR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgfSlcclxuICAgICAgICAudGhlbigocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJTdWNjZXNzID0+XCIsIHJlc3VsdCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQua2V5O1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yID0+XCIsIGVycm9yKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSk7XHJcbn07XHJcblxyXG4vKipcclxuICogUGh5c2ljYWxseSBkdXBsaWNhdGVzIGFuIFMzIG9iamVjdCB0byBhIG5ldyBrZXkuIFVzZWQgd2hlbiBjb3B5aW5nIGF0dGFjaG1lbnRzXHJcbiAqIGJldHdlZW4gZmVhdHVyZXMvdGlja2V0cy9ldGMuIHNvIHRoZSBjb3B5IGlzIGZ1bGx5IGluZGVwZW5kZW50OiBkZWxldGluZyB0aGVcclxuICogb3JpZ2luYWwgZmlsZSBsYXRlciBtdXN0IG5vdCBhZmZlY3QgdGhlIGNvcHkuXHJcbiAqIElNUE9SVEFOVDogZG9lcyBOT1Qgc3dhbGxvdyBlcnJvcnMg4oCUIGNhbGxlcnMgbmVlZCB0aGUgcmVhbCBlcnJvciAoZS5nLiBOb1N1Y2hLZXkpXHJcbiAqIHRvIGRpc3Rpbmd1aXNoIGFuIG9ycGhhbmVkIERCIHJlZmVyZW5jZSBmcm9tIGEgZ2VudWluZSBjb3B5IGZhaWx1cmUuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgY29weUZpbGVJblMzID0gYXN5bmMgKFxyXG4gICAgc291cmNlS2V5OiBzdHJpbmcsXHJcbiAgICBkZXN0S2V5OiBzdHJpbmcsXHJcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IGFueSA9IGF3YWl0IFN0b3JhZ2UuY29weShcclxuICAgICAgICB7IGtleTogc291cmNlS2V5LCBsZXZlbDogXCJwdWJsaWNcIiB9LFxyXG4gICAgICAgIHsga2V5OiBkZXN0S2V5LCBsZXZlbDogXCJwdWJsaWNcIiB9LFxyXG4gICAgKTtcclxuICAgIHJldHVybiByZXN1bHQua2V5O1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEZhbGxiYWNrIGR1cGxpY2F0aW9uOiBkb3dubG9hZHMgdGhlIG9iamVjdCBhbmQgcmUtdXBsb2FkcyBpdCB1bmRlciB0aGUgbmV3IGtleS5cclxuICpcclxuICogU3RvcmFnZS5jb3B5KCkgYnVpbGRzIHRoZSBTMyBgeC1hbXotY29weS1zb3VyY2VgIGhlYWRlciBieSBwbGFpbiBzdHJpbmcgY29uY2F0ZW5hdGlvblxyXG4gKiAoc2VlIEBhd3MtYW1wbGlmeS9zdG9yYWdlIEFXU1MzUHJvdmlkZXIuY29weTogYCR7YnVja2V0fS8ke3NyY1ByZWZpeH0ke3NyY0tleX1gKSwgd2l0aCBub1xyXG4gKiBVUkwtZW5jb2Rpbmcgb2YgdGhlIGtleS4gQSBrZXkgaG9sZGluZyBhIHNwYWNlLCBhbiBhY2NlbnQgb3IgYSBwYXJlbnRoZXNpcyB0aGVyZWZvcmVcclxuICogeWllbGRzIGEgaGVhZGVyIHRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlIHNpZ25lZCBjYW5vbmljYWwgcmVxdWVzdCwgYW5kIFMzIGFuc3dlcnNcclxuICogXCJUaGUgcmVxdWVzdCBzaWduYXR1cmUgd2UgY2FsY3VsYXRlZCBkb2VzIG5vdCBtYXRjaCB0aGUgc2lnbmF0dXJlIHlvdSBwcm92aWRlZFwiLlxyXG4gKlxyXG4gKiBSb3VuZC10cmlwcGluZyB0aGUgYnl0ZXMgYXZvaWRzIHRoYXQgaGVhZGVyIGVudGlyZWx5IGFuZCB3b3JrcyBmb3IgYW55IGtleSwgYXQgdGhlIGNvc3RcclxuICogb2YgdHJhbnNmZXJyaW5nIHRoZSBmaWxlIHRocm91Z2ggdGhlIGJyb3dzZXIg4oCUIGhlbmNlIGl0cyB1c2UgYXMgYSBmYWxsYmFjayBvbmx5LlxyXG4gKiBJTVBPUlRBTlQ6IGxpa2UgY29weUZpbGVJblMzLCB0aGlzIG11c3QgTk9UIHN3YWxsb3cgZXJyb3JzLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGNvcHlGaWxlSW5TM1ZpYURvd25sb2FkID0gYXN5bmMgKFxyXG4gICAgc291cmNlS2V5OiBzdHJpbmcsXHJcbiAgICBkZXN0S2V5OiBzdHJpbmcsXHJcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XHJcbiAgICBjb25zdCBkb3dubG9hZGVkOiBhbnkgPSBhd2FpdCBTdG9yYWdlLmdldChzb3VyY2VLZXksIHtcclxuICAgICAgICBkb3dubG9hZDogdHJ1ZSxcclxuICAgICAgICBsZXZlbDogXCJwdWJsaWNcIixcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGJvZHkgPSBkb3dubG9hZGVkPy5Cb2R5O1xyXG4gICAgaWYgKCFib2R5KSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbXB0eSBkb3dubG9hZCBmb3IgXCIke3NvdXJjZUtleX1cIiwgY2Fubm90IGR1cGxpY2F0ZSBpdGApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJlc3VsdDogYW55ID0gYXdhaXQgU3RvcmFnZS5wdXQoZGVzdEtleSwgYm9keSwge1xyXG4gICAgICAgIGxldmVsOiBcInB1YmxpY1wiLFxyXG4gICAgICAgIGNvbnRlbnRUeXBlOiBkb3dubG9hZGVkLkNvbnRlbnRUeXBlIHx8IHVuZGVmaW5lZCxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3VsdC5rZXk7XHJcbn07XHJcblxyXG4iXX0=
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvczMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3RDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDdkMsTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztTQUMxQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDaEUsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDekUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFDL0IsSUFBWSxFQUNaLElBQVUsRUFDVixRQUF1QixFQUNSLEVBQUU7SUFDakIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMxRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtRQUNoRCxnQkFBZ0IsQ0FBQyxRQUFRO1lBQ3JCLHdDQUF3QztRQUM1QyxDQUFDO1FBQ0QsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJO0tBQ3pCLENBQUM7U0FDRyxJQUFJ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VUFBVSxHQUFRLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUU7UUFDakQsUUFBUSxFQUFFLElBQUk7UUFDZCxLQUFLLEVBQUUsUUFBUTtLQUNsQixDQUFDLENBQUM7SUFFSCxNQUFNLElBQUksR0FBRyxVQUFVLEVBQUUsSUFBSSxDQUFDO0lBQzlCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLFNBQVMsd0JBQXdCLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQVEsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7UUFDakQsS0FBSyxFQUFFLFFBQVE7UUFDZixXQUFXLEVBQUUsVUFBVSxDQUFDLFdBQVcsSUFBSSxTQUFTO0tBQ25ELENBQUMsQ0FBQztJQUNILE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUN0QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdG9yYWdlIH0gZnJvbSBcImF3cy1hbXBsaWZ5XCI7XG5pbXBvcnQgeyBFcXVpcG1lbnQgfSBmcm9tIFwiLi4vdHlwZXMuc2VydmljZVwiO1xuXG5leHBvcnQgY29uc3QgZGVsZXRlRnJvbVMzID0gYXN5bmMgKHBhdGgpID0+IHtcbiAgICBhd2FpdCBTdG9yYWdlLnJlbW92ZShwYXRoLCB7IGxldmVsOiBcInB1YmxpY1wiIH0pXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IGNvbnNvbGUubG9nKFwiU3VjY2Vzc2Z1bGx5IGRlbGV0ZWQgPT5cIiwgcmVzdWx0KSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29uc29sZS5sb2coXCJEZWxldGluZyBmcm9tIFMzIGVycm9yOlwiLCBlcnJvcikpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwbG9hZEZpbGVUb1MzID0gYXN5bmMgKFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBmaWxlOiBGaWxlLFxuICAgIG9iamVjdElkOiBzdHJpbmcgfCBudWxsLFxuKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgICBjb25zdCBwcmVmaXggPSBvYmplY3RJZCA/IGAke29iamVjdElkLnNsaWNlKDAsIDgpfV9gIDogXCJcIjtcbiAgICByZXR1cm4gU3RvcmFnZS5wdXQocGF0aCArIHByZWZpeCArIGZpbGUubmFtZSwgZmlsZSwge1xuICAgICAgICBwcm9ncmVzc0NhbGxiYWNrKHByb2dyZXNzKSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnVXBsb2FkZWQgOiAnLCBwcm9ncmVzcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRlbnRUeXBlOiBmaWxlLnR5cGUsXG4gICAgfSlcbiAgICAgICAgLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIlN1Y2Nlc3MgPT5cIiwgcmVzdWx0KTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQua2V5O1xuICAgICAgICB9KTtcbn07XG5cbi8qKlxuICogVXBsb2FkcyBhIGZpbGUsIHJlcG9ydGluZyBwcm9ncmVzcyBhcyBhIDAtMSBmcmFjdGlvbi5cbiAqXG4gKiB1cGxvYWRGaWxlVG9TMyBhYm92ZSBzd2FsbG93cyBwcm9ncmVzcywgd2hpY2ggaXMgZmluZSBmb3IgYSBwaG90byBhbmQgdW51c2FibGUgZm9yIGEgM0QgbW9kZWw6XG4gKiB0aGVzZSBydW4gdG8gaHVuZHJlZHMgb2YgbWVnYWJ5dGVzLCBhbmQgYW4gdXBsb2FkIHdpdGggbm8gZmVlZGJhY2sgaXMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBhXG4gKiBmcm96ZW4gcGFnZS4gUmV0dXJucyB0aGUgc3RvcmVkIGtleSwgd2hpY2ggaXMgd2hhdCBnZXRzIHNhdmVkIG9uIHRoZSByZWNvcmQuXG4gKi9cbmV4cG9ydCBjb25zdCB1cGxvYWRGaWxlVG9TM1dpdGhQcm9ncmVzcyA9IGFzeW5jIChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgZmlsZTogRmlsZSxcbiAgICBvblByb2dyZXNzPzogKGZyYWN0aW9uOiBudW1iZXIpID0+IHZvaWQsXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgIHJldHVybiBTdG9yYWdlLnB1dChwYXRoICsgZmlsZS5uYW1lLCBmaWxlLCB7XG4gICAgICAgIGNvbnRlbnRUeXBlOiBmaWxlLnR5cGUgfHwgXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIixcbiAgICAgICAgcHJvZ3Jlc3NDYWxsYmFjayhwcm9ncmVzczogeyBsb2FkZWQ6IG51bWJlcjsgdG90YWw6IG51bWJlciB9KSB7XG4gICAgICAgICAgICBpZiAob25Qcm9ncmVzcyAmJiBwcm9ncmVzcy50b3RhbCA+IDApIHtcbiAgICAgICAgICAgICAgICBvblByb2dyZXNzKHByb2dyZXNzLmxvYWRlZCAvIHByb2dyZXNzLnRvdGFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KS50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0LmtleSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2lnbmVkSW1hZ2VVcmxGb3JFcXVpcG1lbnQgPSBhc3luYyAoXG4gICAgZXF1aXA6IEVxdWlwbWVudCxcbik6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4gPT4ge1xuICAgIGlmICghZXF1aXAucGhvdG8pIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcbiAgICB9XG4gICAgcmV0dXJuIFN0b3JhZ2UuZ2V0KGVxdWlwLnBob3RvLCB7IGxldmVsOiBcInB1YmxpY1wiIH0pXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgYXMgc3RyaW5nO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yIGZldGNoaW5nIGZpbGUgZnJvbSBzMyA9PlwiLCBlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSk7XG5cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTaWduZWRJbWFnZVVybEZvclByb2ZpbGUgPSBhc3luYyAoXG4gICAgcHJvZmlsZSxcbik6IFByb21pc2U8c3RyaW5nIHwgdm9pZD4gPT4ge1xuICAgIHJldHVybiBTdG9yYWdlLmdldChwcm9maWxlLmF2YXRhciwgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIHN0cmluZztcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvciBmZXRjaGluZyBmaWxlIGZyb20gczMgPT5cIiwgZXJyb3IpO1xuICAgICAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTaWduZWRJbWFnZVVybEZvclNwYWNlID0gYXN5bmMgKFxuICAgIHNwYWNlLFxuKTogUHJvbWlzZTxzdHJpbmcgfCB2b2lkPiA9PiB7XG4gICAgcmV0dXJuIFN0b3JhZ2UuZ2V0KHNwYWNlLmFubmV4ZXMsIHsgbGV2ZWw6IFwicHVibGljXCIgfSlcbiAgICAgICAgLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBzdHJpbmc7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3IgZmV0Y2hpbmcgZmlsZSBmcm9tIHMzID0+XCIsIGVycm9yKTtcbiAgICAgICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBsb2FkQmFzZTY0SW1hZ2UgPSBhc3luYyAoXG4gICAgdXJpOiBzdHJpbmcsXG4gICAgb2JqZWN0SWQ6IHN0cmluZyB8IG51bGwsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGZyaWVuZGx5RmlsZU5hbWU6IHN0cmluZyxcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gICAgcmV0dXJuIGZldGNoKHVyaSlcbiAgICAgICAgLnRoZW4oKHJlcykgPT4gcmVzLmJsb2IoKSlcbiAgICAgICAgLnRoZW4oKGJsb2IpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbYmxvYl0sIGAke2ZyaWVuZGx5RmlsZU5hbWV9LmpwZWdgLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJpbWFnZS9qcGVnXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB1cGxvYWRGaWxlVG9TMyhwYXRoLCBmaWxlLCBvYmplY3RJZCk7XG4gICAgICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwbG9hZEJhc2U2NEltYWdlV2l0aFJldHJ5ID0gYXN5bmMgKFxuICAgIHVyaTogc3RyaW5nLFxuICAgIG9iamVjdElkOiBzdHJpbmcgfCBudWxsLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBmcmllbmRseUZpbGVOYW1lOiBzdHJpbmcsXG4gICAgcmV0cnk6IG51bWJlclxuKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgd2hpbGUgKHJldHJ5ID4gMCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCByID0gYXdhaXQgdXBsb2FkQmFzZTY0SW1hZ2UodXJpLCBvYmplY3RJZCwgcGF0aCwgZnJpZW5kbHlGaWxlTmFtZSk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0cnktLTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBVcGxvYWQgZXJyb3IsIHJldHJ5IG7CsCAke3JldHJ5fSA6IGAsIGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHJlamVjdChcIk1heCByZXRyeSBleGNlZWRlZFwiKTtcbiAgICB9KTtcbn07XG5cblxuZXhwb3J0IGNvbnN0IHJlbW92ZUFsbEZpbGVzRnJvbUZvbGRlclMzID0gYXN5bmMgKFxuICAgIGZvbGRlclBhdGg6IHN0cmluZyxcbik6IFByb21pc2U8YW55PiA9PiB7XG4gICAgY29uc3QgYXJyYXlPZlByb21pc2VzID0gW107XG4gICAgU3RvcmFnZS5saXN0KGZvbGRlclBhdGgsIHsgbGV2ZWw6IFwicHVibGljXCIgfSlcbiAgICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMocmVzKS5tYXAoYXN5bmMgKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSByZXNba2V5XTtcbiAgICAgICAgICAgICAgICBhcnJheU9mUHJvbWlzZXMucHVzaChkZWxldGVGcm9tUzMoZmlsZS5rZXkpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKFwiTGlzdCBmYWlsdXJlXCIsIGVycm9yKSk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKGFycmF5T2ZQcm9taXNlcyk7XG59O1xuXG5leHBvcnQgY29uc3QgbGlzdEZpbGVzSW5Gb2xkZXIgPSBhc3luYyAoZm9sZGVyUGF0aDogc3RyaW5nKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgICByZXR1cm4gU3RvcmFnZS5saXN0KGZvbGRlclBhdGgsIHsgbGV2ZWw6IFwicHVibGljXCIsIHBhZ2VTaXplOiAnQUxMJyB9KVxuICAgICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLnJlc3VsdHM7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoXCJMaXN0IGZhaWx1cmVcIiwgZXJyb3IpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTaWduZWRGaWxlID0gYXN5bmMgKHBhdGgpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+ID0+IHtcbiAgICByZXR1cm4gU3RvcmFnZS5nZXQocGF0aCwgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIHN0cmluZztcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvciBmZXRjaGluZyBmaWxlIGZyb20gczMgPT5cIiwgZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pO1xuXG59O1xuXG5leHBvcnQgY29uc3QgZG93bmxvYWRGaWxlQXNPYmplY3QgPSBhc3luYyAocGF0aCk6IFByb21pc2U8T2JqZWN0IHwgdm9pZD4gPT4ge1xuICAgIHJldHVybiBTdG9yYWdlLmdldChwYXRoLCB7IGRvd25sb2FkOiB0cnVlLCBsZXZlbDogXCJwdWJsaWNcIiB9KVxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIE9iamVjdDtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvciBmZXRjaGluZyBmaWxlIGZyb20gczMgPT5cIiwgZXJyb3IpO1xuICAgICAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCdWZmZXJGb3JGaWxlRnJvbVMzID0gYXN5bmMgKHBhdGgpOiBQcm9taXNlPEFycmF5QnVmZmVyPiA9PiB7XG4gICAgY29uc3Qgb2JqZWN0ID0gYXdhaXQgZG93bmxvYWRGaWxlQXNPYmplY3QocGF0aCk7XG4gICAgaWYgKG9iamVjdCkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBuZXcgQXJyYXlCdWZmZXIob2JqZWN0LkJvZHksIFwiYmluYXJ5XCIpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGxvYWRKc29uVG9TMyA9IGFzeW5jIChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAganNvbjogc3RyaW5nLFxuICAgIGZpbGVuYW1lOiBzdHJpbmcsXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgIHJldHVybiBTdG9yYWdlLnB1dChwYXRoICsgZmlsZW5hbWUsIGpzb24sIHtcbiAgICAgICAgY29udGVudFR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgIH0pXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJTdWNjZXNzID0+XCIsIHJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LmtleTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvciA9PlwiLCBlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSk7XG59O1xuXG4vKipcbiAqIFBoeXNpY2FsbHkgZHVwbGljYXRlcyBhbiBTMyBvYmplY3QgdG8gYSBuZXcga2V5LiBVc2VkIHdoZW4gY29weWluZyBhdHRhY2htZW50c1xuICogYmV0d2VlbiBmZWF0dXJlcy90aWNrZXRzL2V0Yy4gc28gdGhlIGNvcHkgaXMgZnVsbHkgaW5kZXBlbmRlbnQ6IGRlbGV0aW5nIHRoZVxuICogb3JpZ2luYWwgZmlsZSBsYXRlciBtdXN0IG5vdCBhZmZlY3QgdGhlIGNvcHkuXG4gKiBJTVBPUlRBTlQ6IGRvZXMgTk9UIHN3YWxsb3cgZXJyb3JzIOKAlCBjYWxsZXJzIG5lZWQgdGhlIHJlYWwgZXJyb3IgKGUuZy4gTm9TdWNoS2V5KVxuICogdG8gZGlzdGluZ3Vpc2ggYW4gb3JwaGFuZWQgREIgcmVmZXJlbmNlIGZyb20gYSBnZW51aW5lIGNvcHkgZmFpbHVyZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvcHlGaWxlSW5TMyA9IGFzeW5jIChcbiAgICBzb3VyY2VLZXk6IHN0cmluZyxcbiAgICBkZXN0S2V5OiBzdHJpbmcsXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgIGNvbnN0IHJlc3VsdDogYW55ID0gYXdhaXQgU3RvcmFnZS5jb3B5KFxuICAgICAgICB7IGtleTogc291cmNlS2V5LCBsZXZlbDogXCJwdWJsaWNcIiB9LFxuICAgICAgICB7IGtleTogZGVzdEtleSwgbGV2ZWw6IFwicHVibGljXCIgfSxcbiAgICApO1xuICAgIHJldHVybiByZXN1bHQua2V5O1xufTtcblxuLyoqXG4gKiBGYWxsYmFjayBkdXBsaWNhdGlvbjogZG93bmxvYWRzIHRoZSBvYmplY3QgYW5kIHJlLXVwbG9hZHMgaXQgdW5kZXIgdGhlIG5ldyBrZXkuXG4gKlxuICogU3RvcmFnZS5jb3B5KCkgYnVpbGRzIHRoZSBTMyBgeC1hbXotY29weS1zb3VyY2VgIGhlYWRlciBieSBwbGFpbiBzdHJpbmcgY29uY2F0ZW5hdGlvblxuICogKHNlZSBAYXdzLWFtcGxpZnkvc3RvcmFnZSBBV1NTM1Byb3ZpZGVyLmNvcHk6IGAke2J1Y2tldH0vJHtzcmNQcmVmaXh9JHtzcmNLZXl9YCksIHdpdGggbm9cbiAqIFVSTC1lbmNvZGluZyBvZiB0aGUga2V5LiBBIGtleSBob2xkaW5nIGEgc3BhY2UsIGFuIGFjY2VudCBvciBhIHBhcmVudGhlc2lzIHRoZXJlZm9yZVxuICogeWllbGRzIGEgaGVhZGVyIHRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlIHNpZ25lZCBjYW5vbmljYWwgcmVxdWVzdCwgYW5kIFMzIGFuc3dlcnNcbiAqIFwiVGhlIHJlcXVlc3Qgc2lnbmF0dXJlIHdlIGNhbGN1bGF0ZWQgZG9lcyBub3QgbWF0Y2ggdGhlIHNpZ25hdHVyZSB5b3UgcHJvdmlkZWRcIi5cbiAqXG4gKiBSb3VuZC10cmlwcGluZyB0aGUgYnl0ZXMgYXZvaWRzIHRoYXQgaGVhZGVyIGVudGlyZWx5IGFuZCB3b3JrcyBmb3IgYW55IGtleSwgYXQgdGhlIGNvc3RcbiAqIG9mIHRyYW5zZmVycmluZyB0aGUgZmlsZSB0aHJvdWdoIHRoZSBicm93c2VyIOKAlCBoZW5jZSBpdHMgdXNlIGFzIGEgZmFsbGJhY2sgb25seS5cbiAqIElNUE9SVEFOVDogbGlrZSBjb3B5RmlsZUluUzMsIHRoaXMgbXVzdCBOT1Qgc3dhbGxvdyBlcnJvcnMuXG4gKi9cbmV4cG9ydCBjb25zdCBjb3B5RmlsZUluUzNWaWFEb3dubG9hZCA9IGFzeW5jIChcbiAgICBzb3VyY2VLZXk6IHN0cmluZyxcbiAgICBkZXN0S2V5OiBzdHJpbmcsXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgIGNvbnN0IGRvd25sb2FkZWQ6IGFueSA9IGF3YWl0IFN0b3JhZ2UuZ2V0KHNvdXJjZUtleSwge1xuICAgICAgICBkb3dubG9hZDogdHJ1ZSxcbiAgICAgICAgbGV2ZWw6IFwicHVibGljXCIsXG4gICAgfSk7XG5cbiAgICBjb25zdCBib2R5ID0gZG93bmxvYWRlZD8uQm9keTtcbiAgICBpZiAoIWJvZHkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbXB0eSBkb3dubG9hZCBmb3IgXCIke3NvdXJjZUtleX1cIiwgY2Fubm90IGR1cGxpY2F0ZSBpdGApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogYW55ID0gYXdhaXQgU3RvcmFnZS5wdXQoZGVzdEtleSwgYm9keSwge1xuICAgICAgICBsZXZlbDogXCJwdWJsaWNcIixcbiAgICAgICAgY29udGVudFR5cGU6IGRvd25sb2FkZWQuQ29udGVudFR5cGUgfHwgdW5kZWZpbmVkLFxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQua2V5O1xufTtcblxuIl19
@@ -123,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
123
123
  providedIn: "root",
124
124
  }]
125
125
  }], ctorParameters: () => [{ type: i1.FilterService }, { type: i2.EquipmentService }] });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3NlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QyxzQ0FBc0M7QUFDdEMscUNBQXFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFLM0MsTUFBTSxDQUFOLElBQVksZ0JBT1g7QUFQRCxXQUFZLGdCQUFnQjtJQUN4QixpQ0FBYSxDQUFBO0lBQ2IsMkNBQXVCLENBQUE7SUFDdkIscUNBQWlCLENBQUE7SUFDakIseUNBQXFCLENBQUE7SUFDckIsdUNBQW1CLENBQUE7SUFDbkIseUNBQXFCLENBQUE7QUFDekIsQ0FBQyxFQVBXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFPM0I7QUFLRCxNQUFNLE9BQU8sYUFBYTtJQUVWO0lBQ0E7SUFGWixZQUNZLGFBQTRCLEVBQzVCLGdCQUFrQztRQURsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQzFDLENBQUM7SUFFTCxLQUFLLENBQUMseUJBQXlCLENBQzNCLElBQVksRUFDWixVQUE0QixFQUM1QixVQUFlO1FBRWYsSUFBSSxPQUFPLENBQUM7UUFDWixRQUFRLFVBQVUsRUFBRSxDQUFDO1lBQ2pCLEtBQUssZ0JBQWdCLENBQUMsU0FBUztnQkFDM0IsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztvQkFDakQsTUFBTSxjQUFjLEdBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQ3RDLE1BQU0sRUFDTixJQUFJLENBQ1AsQ0FBQztv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QUFFLENBQUM7d0JBQ3BCLE1BQU0sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO29CQUNoQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUNMLENBQUM7Z0JBQ0YsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQzdDLFVBQVUsRUFDVixJQUFJLENBQ1AsQ0FBQztnQkFDRixNQUFNO1lBQ1YsS0FBSyxnQkFBZ0IsQ0FBQyxRQUFRO2dCQUMxQixPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FDL0MsVUFBVSxFQUNWLElBQUksQ0FDUCxDQUFDO2dCQUNGLE1BQU07WUFDVixLQUFLLGdCQUFnQixDQUFDLE9BQU87Z0JBQ3pCLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUM5QyxVQUFVLEVBQ1YsSUFBSSxDQUNQLENBQUM7Z0JBQ0YsTUFBTTtZQUNWO2dCQUNJLE1BQU07UUFDZCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQzt3R0EvSlEsYUFBYTs0R0FBYixhQUFhLGNBRlYsTUFBTTs7NEZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNaXNzaW9uIH0gZnJvbSBcIi4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gXCIuL2ZpbHRlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEVxdWlwbWVudFNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvZXF1aXBtZW50LnNlcnZpY2VcIjtcclxuXHJcbmV4cG9ydCBlbnVtIFNlYXJjaE9iamVjdFR5cGUge1xyXG4gICAgVVNFUiA9IFwiVVNFUlwiLFxyXG4gICAgRVFVSVBNRU5UID0gXCJFUVVJUE1FTlRcIixcclxuICAgIFRJQ0tFVCA9IFwiVElDS0VUXCIsXHJcbiAgICBMT0NBVElPTiA9IFwiTE9DQVRJT05cIixcclxuICAgIEZFQVRVUkUgPSBcIkZFQVRVUkVcIixcclxuICAgIFRFTVBMQVRFID0gXCJURU1QTEFURVwiLFxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlYXJjaFNlcnZpY2Uge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZXF1aXBtZW50U2VydmljZTogRXF1aXBtZW50U2VydmljZSxcclxuICAgICkgeyB9XHJcblxyXG4gICAgYXN5bmMgc2VhcmNoRm9yVGVybUZvclR5cGVJbk1hcChcclxuICAgICAgICB0ZXJtOiBzdHJpbmcsXHJcbiAgICAgICAgb2JqZWN0VHlwZTogU2VhcmNoT2JqZWN0VHlwZSxcclxuICAgICAgICBzZWFyY2hhYmxlOiBhbnksXHJcbiAgICApOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGxldCByZXN1bHRzO1xyXG4gICAgICAgIHN3aXRjaCAob2JqZWN0VHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuRVFVSVBNRU5UOlxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IG5ldyBNYXAoKTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW3NwYWNlLCBlcXVpcHNdIG9mIHNlYXJjaGFibGUuZW50cmllcygpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRFcXVpcHMgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyRXF1aXBtZW50c0ZvclRlcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcXVpcHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuc2V0KHNwYWNlLCBmaWx0ZXJlZEVxdWlwcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLlRJQ0tFVDpcclxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBuZXcgTWFwKCk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtzcGFjZSwgdGlja2V0c10gb2Ygc2VhcmNoYWJsZS5lbnRyaWVzKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0cy5tYXAoYXN5bmMgKHRpY2tldCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXF1aXBzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmVxdWlwbWVudFNlcnZpY2UuZ2V0RXF1aXBtZW50c0ZvclRpY2tldChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXF1aXBzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQuZXF1aXBtZW50cyA9IGVxdWlwcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFRpY2tldHMgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyVGlja2V0c0ZvclRlcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnNldChzcGFjZSwgZmlsdGVyZWRUaWNrZXRzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuTE9DQVRJT046XHJcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckxvY2F0aW9uc0ZvclRlcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZSxcclxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuVVNFUjpcclxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgb3JnT2JqZWN0IG9mIHNlYXJjaGFibGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcmdSZXN1bHRzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck9yZ2FuaXNhdGlvbnNGb3JUZXJtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29yZ09iamVjdC5vcmddLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3JnUmVzdWx0cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvZmlsZXMgPSBvcmdPYmplY3QudXNlcnMubWFwKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9iamVjdCkgPT4gb2JqZWN0LnVzZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJSZXN1bHRzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJVc2Vyc0ZvclRlcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkVXNlck1pc3Npb25zID0gb3JnT2JqZWN0LnVzZXJzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvYmplY3QpID0+IHVzZXJSZXN1bHRzLmluY2x1ZGVzKG9iamVjdC51c2VyKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXJSZXN1bHRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnOiBvcmdPYmplY3Qub3JnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJzOiBmaWx0ZXJlZFVzZXJNaXNzaW9ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKG9yZ09iamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5GRUFUVVJFOlxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IG5ldyBNYXAoKTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW3NwYWNlLCBmZWF0dXJlc10gb2Ygc2VhcmNoYWJsZS5lbnRyaWVzKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEZlYXR1cmVzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckZlYXR1cmVzRm9yVGVybShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnNldChzcGFjZSwgZmlsdGVyZWRGZWF0dXJlcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLlRFTVBMQVRFOlxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IG5ldyBNYXAoKTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW3pvbmUsIHRlbXBsYXRlc10gb2Ygc2VhcmNoYWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBsYXRlUmVzdWx0cyA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJUZW1wbGF0ZXNGb3JUZXJtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVzIGFzIE1pc3Npb25bXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBsYXRlUmVzdWx0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuc2V0KHpvbmUsIHRlbXBsYXRlUmVzdWx0cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2VhcmNoRm9yVGVybUZvclR5cGVJbkxpc3QoXHJcbiAgICAgICAgdGVybTogc3RyaW5nLFxyXG4gICAgICAgIG9iamVjdFR5cGU6IFNlYXJjaE9iamVjdFR5cGUsXHJcbiAgICAgICAgc2VhcmNoYWJsZTogYW55W10sXHJcbiAgICApOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICAgICAgbGV0IHJlc3VsdHM7XHJcbiAgICAgICAgc3dpdGNoIChvYmplY3RUeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5FUVVJUE1FTlQ6XHJcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckVxdWlwbWVudHNGb3JUZXJtKFxyXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGUsXHJcbiAgICAgICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLlRJQ0tFVDpcclxuICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGUubWFwKGFzeW5jICh0aWNrZXQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXF1aXBzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZXF1aXBtZW50U2VydmljZS5nZXRFcXVpcG1lbnRzRm9yVGlja2V0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcXVpcHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0LmVxdWlwZW1lbnRzID0gZXF1aXBzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJUaWNrZXRzRm9yVGVybShcclxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxyXG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5MT0NBVElPTjpcclxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyTG9jYXRpb25zRm9yVGVybShcclxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxyXG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5GRUFUVVJFOlxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJGZWF0dXJlc0ZvclRlcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZSxcclxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHRzO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3NlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QyxzQ0FBc0M7QUFDdEMscUNBQXFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFLM0MsTUFBTSxDQUFOLElBQVksZ0JBT1g7QUFQRCxXQUFZLGdCQUFnQjtJQUN4QixpQ0FBYSxDQUFBO0lBQ2IsMkNBQXVCLENBQUE7SUFDdkIscUNBQWlCLENBQUE7SUFDakIseUNBQXFCLENBQUE7SUFDckIsdUNBQW1CLENBQUE7SUFDbkIseUNBQXFCLENBQUE7QUFDekIsQ0FBQyxFQVBXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFPM0I7QUFLRCxNQUFNLE9BQU8sYUFBYTtJQUVWO0lBQ0E7SUFGWixZQUNZLGFBQTRCLEVBQzVCLGdCQUFrQztRQURsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQzFDLENBQUM7SUFFTCxLQUFLLENBQUMseUJBQXlCLENBQzNCLElBQVksRUFDWixVQUE0QixFQUM1QixVQUFlO1FBRWYsSUFBSSxPQUFPLENBQUM7UUFDWixRQUFRLFVBQVUsRUFBRSxDQUFDO1lBQ2pCLEtBQUssZ0JBQWdCLENBQUMsU0FBUztnQkFDM0IsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztvQkFDakQsTUFBTSxjQUFjLEdBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQ3RDLE1BQU0sRUFDTixJQUFJLENBQ1AsQ0FBQztvQkFDTixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQztnQkFDdkMsQ0FBQztnQkFDRCxNQUFNO1lBQ1YsS0FBSyxnQkFBZ0IsQ0FBQyxNQUFNO2dCQUN4QixPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDcEIsS0FBSyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO29CQUNsRCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7d0JBQ3pCLE1BQU0sTUFBTSxHQUNSLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUM5QyxNQUFNLENBQ1QsQ0FBQzt3QkFDTixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7NEJBQ3BCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO3dCQUMvQixDQUFDO29CQUNMLENBQUMsQ0FBQyxDQUNMLENBQUM7b0JBQ0YsTUFBTSxlQUFlLEdBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQ25DLE9BQU8sRUFDUCxJQUFJLENBQ1AsQ0FBQztvQkFDTixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQztnQkFDeEMsQ0FBQztnQkFDRCxNQUFNO1lBQ1YsS0FBSyxnQkFBZ0IsQ0FBQyxRQUFRO2dCQUMxQixPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FDL0MsVUFBVSxFQUNWLElBQUksQ0FDUCxDQUFDO2dCQUNGLE1BQU07WUFDVixLQUFLLGdCQUFnQixDQUFDLElBQUk7Z0JBQ3RCLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2IsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDakMsTUFBTSxVQUFVLEdBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQywwQkFBMEIsQ0FDekMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQ2YsSUFBSSxDQUNQLENBQUM7b0JBQ04sSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUMxQixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FDaEMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzFCLENBQUM7d0JBQ0YsTUFBTSxXQUFXLEdBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FDakMsUUFBUSxFQUNSLElBQUksQ0FDUCxDQUFDO3dCQUNOLE1BQU0sb0JBQW9CLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQy9DLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDaEQsQ0FBQzt3QkFDRixJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7NEJBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0NBQ1QsR0FBRyxFQUFFLFNBQVMsQ0FBQyxHQUFHO2dDQUNsQixLQUFLLEVBQUUsb0JBQW9COzZCQUM5QixDQUFDLENBQUM7d0JBQ1AsQ0FBQztvQkFDTCxDQUFDO3lCQUFNLENBQUM7d0JBQ0osT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDNUIsQ0FBQztnQkFDTCxDQUFDO2dCQUNELE1BQU07WUFDVixLQUFLLGdCQUFnQixDQUFDLE9BQU87Z0JBQ3pCLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNwQixLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7b0JBQ25ELE1BQU0sZ0JBQWdCLEdBQ2xCLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FDMUMsUUFBUSxFQUNSLElBQUksQ0FDUCxDQUFDO29CQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3pDLENBQUM7Z0JBQ0QsTUFBTTtZQUNWLEtBQUssZ0JBQWdCLENBQUMsUUFBUTtnQkFDMUIsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDekMsTUFBTSxlQUFlLEdBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQ3JDLFNBQXNCLEVBQ3RCLElBQUksQ0FDUCxDQUFDO29CQUNOLElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUM7b0JBQ3ZDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxNQUFNO1lBQ1Y7Z0JBQ0ksTUFBTTtRQUNkLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLDBCQUEwQixDQUM1QixJQUFZLEVBQ1osVUFBNEIsRUFDNUIsVUFBaUI7UUFFakIsSUFBSSxPQUFPLENBQUM7UUFDWixRQUFRLFVBQVUsRUFBRSxDQUFDO1lBQ2pCLEtBQUssZ0JBQWdCLENBQUMsU0FBUztnQkFDM0IsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQ2hELFVBQVUsRUFDVixJQUFJLENBQ1AsQ0FBQztnQkFDRixNQUFNO1lBQ1YsS0FBSyxnQkFBZ0IsQ0FBQyxNQUFNO2dCQUN4QixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2IsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7b0JBQzVCLE1BQU0sTUFBTSxHQUNSLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUM5QyxNQUFNLENBQ1QsQ0FBQztvQkFDTixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQ3BCLE1BQU0sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO29CQUNoQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUNMLENBQUM7Z0JBQ0YsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQzdDLFVBQVUsRUFDVixJQUFJLENBQ1AsQ0FBQztnQkFDRixNQUFNO1lBQ1YsS0FBSyxnQkFBZ0IsQ0FBQyxRQUFRO2dCQUMxQixPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FDL0MsVUFBVSxFQUNWLElBQUksQ0FDUCxDQUFDO2dCQUNGLE1BQU07WUFDVixLQUFLLGdCQUFnQixDQUFDLE9BQU87Z0JBQ3pCLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUM5QyxVQUFVLEVBQ1YsSUFBSSxDQUNQLENBQUM7Z0JBQ0YsTUFBTTtZQUNWO2dCQUNJLE1BQU07UUFDZCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQzt3R0EvSlEsYUFBYTs0R0FBYixhQUFhLGNBRlYsTUFBTTs7NEZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTWlzc2lvbiB9IGZyb20gXCIuLi90eXBlcy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSBcIi4vZmlsdGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7IEVxdWlwbWVudFNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvZXF1aXBtZW50LnNlcnZpY2VcIjtcblxuZXhwb3J0IGVudW0gU2VhcmNoT2JqZWN0VHlwZSB7XG4gICAgVVNFUiA9IFwiVVNFUlwiLFxuICAgIEVRVUlQTUVOVCA9IFwiRVFVSVBNRU5UXCIsXG4gICAgVElDS0VUID0gXCJUSUNLRVRcIixcbiAgICBMT0NBVElPTiA9IFwiTE9DQVRJT05cIixcbiAgICBGRUFUVVJFID0gXCJGRUFUVVJFXCIsXG4gICAgVEVNUExBVEUgPSBcIlRFTVBMQVRFXCIsXG59XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBlcXVpcG1lbnRTZXJ2aWNlOiBFcXVpcG1lbnRTZXJ2aWNlLFxuICAgICkgeyB9XG5cbiAgICBhc3luYyBzZWFyY2hGb3JUZXJtRm9yVHlwZUluTWFwKFxuICAgICAgICB0ZXJtOiBzdHJpbmcsXG4gICAgICAgIG9iamVjdFR5cGU6IFNlYXJjaE9iamVjdFR5cGUsXG4gICAgICAgIHNlYXJjaGFibGU6IGFueSxcbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBsZXQgcmVzdWx0cztcbiAgICAgICAgc3dpdGNoIChvYmplY3RUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuRVFVSVBNRU5UOlxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbc3BhY2UsIGVxdWlwc10gb2Ygc2VhcmNoYWJsZS5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRFcXVpcHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckVxdWlwbWVudHNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdWlwcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5zZXQoc3BhY2UsIGZpbHRlcmVkRXF1aXBzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuVElDS0VUOlxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbc3BhY2UsIHRpY2tldHNdIG9mIHNlYXJjaGFibGUuZW50cmllcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0cy5tYXAoYXN5bmMgKHRpY2tldCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVxdWlwcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZXF1aXBtZW50U2VydmljZS5nZXRFcXVpcG1lbnRzRm9yVGlja2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcXVpcHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQuZXF1aXBtZW50cyA9IGVxdWlwcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRUaWNrZXRzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJUaWNrZXRzRm9yVGVybShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnNldChzcGFjZSwgZmlsdGVyZWRUaWNrZXRzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuTE9DQVRJT046XG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJMb2NhdGlvbnNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuVVNFUjpcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBvcmdPYmplY3Qgb2Ygc2VhcmNoYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcmdSZXN1bHRzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJPcmdhbmlzYXRpb25zRm9yVGVybShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3JnT2JqZWN0Lm9yZ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcmdSZXN1bHRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvZmlsZXMgPSBvcmdPYmplY3QudXNlcnMubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvYmplY3QpID0+IG9iamVjdC51c2VyLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJSZXN1bHRzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyVXNlcnNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRVc2VyTWlzc2lvbnMgPSBvcmdPYmplY3QudXNlcnMuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvYmplY3QpID0+IHVzZXJSZXN1bHRzLmluY2x1ZGVzKG9iamVjdC51c2VyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodXNlclJlc3VsdHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZzogb3JnT2JqZWN0Lm9yZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcnM6IGZpbHRlcmVkVXNlck1pc3Npb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKG9yZ09iamVjdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuRkVBVFVSRTpcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW3NwYWNlLCBmZWF0dXJlc10gb2Ygc2VhcmNoYWJsZS5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRGZWF0dXJlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyRmVhdHVyZXNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnNldChzcGFjZSwgZmlsdGVyZWRGZWF0dXJlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLlRFTVBMQVRFOlxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbem9uZSwgdGVtcGxhdGVzXSBvZiBzZWFyY2hhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBsYXRlUmVzdWx0cyA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyVGVtcGxhdGVzRm9yVGVybShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZXMgYXMgTWlzc2lvbltdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGVtcGxhdGVSZXN1bHRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuc2V0KHpvbmUsIHRlbXBsYXRlUmVzdWx0cyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH1cblxuICAgIGFzeW5jIHNlYXJjaEZvclRlcm1Gb3JUeXBlSW5MaXN0KFxuICAgICAgICB0ZXJtOiBzdHJpbmcsXG4gICAgICAgIG9iamVjdFR5cGU6IFNlYXJjaE9iamVjdFR5cGUsXG4gICAgICAgIHNlYXJjaGFibGU6IGFueVtdLFxuICAgICk6IFByb21pc2U8YW55W10+IHtcbiAgICAgICAgbGV0IHJlc3VsdHM7XG4gICAgICAgIHN3aXRjaCAob2JqZWN0VHlwZSkge1xuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLkVRVUlQTUVOVDpcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckVxdWlwbWVudHNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuVElDS0VUOlxuICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLm1hcChhc3luYyAodGlja2V0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcXVpcHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZXF1aXBtZW50U2VydmljZS5nZXRFcXVpcG1lbnRzRm9yVGlja2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcXVpcHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldC5lcXVpcGVtZW50cyA9IGVxdWlwcztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlclRpY2tldHNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuTE9DQVRJT046XG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJMb2NhdGlvbnNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuRkVBVFVSRTpcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckZlYXR1cmVzRm9yVGVybShcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZSxcbiAgICAgICAgICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG59XG4iXX0=
@@ -41,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
41
41
  providedIn: 'root'
42
42
  }]
43
43
  }], ctorParameters: () => [{ type: i1.NgbModal }] });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9zdXBwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUcsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFNbkMsTUFBTSxPQUFPLGNBQWM7SUFHTjtJQUZuQixjQUFjLENBQUM7SUFFZixZQUFtQixZQUFzQjtRQUF0QixpQkFBWSxHQUFaLFlBQVksQ0FBVTtJQUFJLENBQUM7SUFFOUM7O09BRUc7SUFDSCxlQUFlLENBQUMsYUFBYTtRQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMxRCxnQkFBZ0IsRUFBRSxlQUFlO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBUTtRQUN4QixPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUMsRUFBRTtZQUNsQyxNQUFNLFFBQVEsR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGlCQUFpQixFQUFFO2dCQUM5RCxJQUFJLEVBQUcsSUFBSTthQUNaLENBQUMsQ0FBQztZQUNILElBQUcsUUFBUSxDQUFDLEdBQUcsRUFBQyxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUNsQixDQUFDO2lCQUFJLENBQUM7Z0JBQ0osT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ2pCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7d0dBNUJVLGNBQWM7NEdBQWQsY0FBYyxjQUZiLE1BQU07OzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyAgQVBJIH0gZnJvbSBcImF3cy1hbXBsaWZ5XCI7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdXBwb3J0U2VydmljZSB7XHJcbiAgbW9kYWxSZWZlcmVuY2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbiB0aGUgc3VwcG9ydCBmb3JtXHJcbiAgICovXHJcbiAgb3BlblN1cHBvcnRGb3JtKGZvcm1Db21wb25lbnQpIHtcclxuICAgIHRoaXMubW9kYWxSZWZlcmVuY2UgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGZvcm1Db21wb25lbnQsIHtcclxuICAgICAgbW9kYWxEaWFsb2dDbGFzczogJ21vZGFsLXBhZGRpbmcnLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kIHN1cHBvcnQgcmVxdWVzdCB0byBqaXJhXHJcbiAgICovXHJcbiAgYXN5bmMgc2VuZFN1cHBvcnQoZGF0YTphbnkpOlByb21pc2U8c3RyaW5nPntcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSk9PntcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBBUEkucG9zdChcImhlbHBFbWFpbFwiLCBcIi9qaXJhLWVtYWlsL25ld1wiLCB7XHJcbiAgICAgICAgYm9keSA6IGRhdGEsXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZihyZXNwb25zZS5lcnIpe1xyXG4gICAgICAgIHJlc29sdmUoJ2Vycm9yJylcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgcmVzb2x2ZSgnc2VuZCcpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbiJdfQ==
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9zdXBwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUcsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFNbkMsTUFBTSxPQUFPLGNBQWM7SUFHTjtJQUZuQixjQUFjLENBQUM7SUFFZixZQUFtQixZQUFzQjtRQUF0QixpQkFBWSxHQUFaLFlBQVksQ0FBVTtJQUFJLENBQUM7SUFFOUM7O09BRUc7SUFDSCxlQUFlLENBQUMsYUFBYTtRQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMxRCxnQkFBZ0IsRUFBRSxlQUFlO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBUTtRQUN4QixPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUMsRUFBRTtZQUNsQyxNQUFNLFFBQVEsR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGlCQUFpQixFQUFFO2dCQUM5RCxJQUFJLEVBQUcsSUFBSTthQUNaLENBQUMsQ0FBQztZQUNILElBQUcsUUFBUSxDQUFDLEdBQUcsRUFBQyxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUNsQixDQUFDO2lCQUFJLENBQUM7Z0JBQ0osT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ2pCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7d0dBNUJVLGNBQWM7NEdBQWQsY0FBYyxjQUZiLE1BQU07OzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgIEFQSSB9IGZyb20gXCJhd3MtYW1wbGlmeVwiO1xuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3VwcG9ydFNlcnZpY2Uge1xuICBtb2RhbFJlZmVyZW5jZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCkgeyB9XG5cbiAgLyoqXG4gICAqIE9wZW4gdGhlIHN1cHBvcnQgZm9ybVxuICAgKi9cbiAgb3BlblN1cHBvcnRGb3JtKGZvcm1Db21wb25lbnQpIHtcbiAgICB0aGlzLm1vZGFsUmVmZXJlbmNlID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihmb3JtQ29tcG9uZW50LCB7XG4gICAgICBtb2RhbERpYWxvZ0NsYXNzOiAnbW9kYWwtcGFkZGluZycsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2VuZCBzdXBwb3J0IHJlcXVlc3QgdG8gamlyYVxuICAgKi9cbiAgYXN5bmMgc2VuZFN1cHBvcnQoZGF0YTphbnkpOlByb21pc2U8c3RyaW5nPntcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpPT57XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IEFQSS5wb3N0KFwiaGVscEVtYWlsXCIsIFwiL2ppcmEtZW1haWwvbmV3XCIsIHtcbiAgICAgICAgYm9keSA6IGRhdGEsXG4gICAgICB9KTtcbiAgICAgIGlmKHJlc3BvbnNlLmVycil7XG4gICAgICAgIHJlc29sdmUoJ2Vycm9yJylcbiAgICAgIH1lbHNle1xuICAgICAgICByZXNvbHZlKCdzZW5kJylcbiAgICAgIH1cbiAgICB9KVxuICB9XG59XG4iXX0=
@@ -56,27 +56,27 @@ export class BaseTagService {
56
56
  throw new Error('updatePoiMetadata is not implemented in the base class.');
57
57
  }*/
58
58
  async prepareEquipmentHtml(equip) {
59
- throw new Error(`prepareEquipmentHtml is not implemented in the base class.
59
+ throw new Error(`prepareEquipmentHtml is not implemented in the base class.
60
60
  Please override this method in your extended class.`);
61
61
  }
62
62
  async prepareTicketHtml(ticket) {
63
- throw new Error(`prepareTicketHtml is not implemented in the base class.
63
+ throw new Error(`prepareTicketHtml is not implemented in the base class.
64
64
  Please override this method in your extended class.`);
65
65
  }
66
66
  async prepareFeatureHtml(feature) {
67
- throw new Error(`prepareFeatureHtml is not implemented in the base class.
67
+ throw new Error(`prepareFeatureHtml is not implemented in the base class.
68
68
  Please override this method in your extended class.`);
69
69
  }
70
70
  async prepareMeasurementHtml(measure) {
71
- throw new Error(`prepareMeasurementHtml is not implemented in the base class.
71
+ throw new Error(`prepareMeasurementHtml is not implemented in the base class.
72
72
  Please override this method in your extended class.`);
73
73
  }
74
74
  async prepareDeskHtml(feature) {
75
- throw new Error(`prepareDeskHtml is not implemented in the base class.
75
+ throw new Error(`prepareDeskHtml is not implemented in the base class.
76
76
  Please override this method in your extended class.`);
77
77
  }
78
78
  async prepareIndicatorHtml(feature) {
79
- throw new Error(`prepareDeskHtml is not implemented in the base class.
79
+ throw new Error(`prepareDeskHtml is not implemented in the base class.
80
80
  Please override this method in your extended class.`);
81
81
  }
82
82
  async getSignedTagIconSource(tagIconSrc) {
@@ -85,15 +85,15 @@ export class BaseTagService {
85
85
  getIconTagImageForFeature(feature, poi) {
86
86
  // const tagIcon = JSON.parse(poi.tagIcon);
87
87
  // return tagIcon.src;
88
- throw new Error(`getIconTagImageForFeature is not implemented in the base class.
88
+ throw new Error(`getIconTagImageForFeature is not implemented in the base class.
89
89
  Please override this method in your extended class.`);
90
90
  }
91
91
  getScriptForTag(object, tagType) {
92
- throw new Error(`getScriptForTag is not implemented in the base class.
92
+ throw new Error(`getScriptForTag is not implemented in the base class.
93
93
  Please override this method in your extended class.`);
94
94
  }
95
95
  getAnnexeForCommentTypeInFeature(feature, commentType) {
96
- throw new Error(`getAnnexeForCommentTypeInFeature is not implemented in the base class.
96
+ throw new Error(`getAnnexeForCommentTypeInFeature is not implemented in the base class.
97
97
  Please override this method in your extended class.`);
98
98
  }
99
99
  getBillboardMediaToEmbed(object) {
@@ -102,27 +102,27 @@ export class BaseTagService {
102
102
  return { comment: null, tagDescription: '' };
103
103
  }
104
104
  onActionDetailClick(url) {
105
- throw new Error(`onActionDetailClick is not implemented in the base class.
105
+ throw new Error(`onActionDetailClick is not implemented in the base class.
106
106
  Please override this method in your extended class.`);
107
107
  }
108
108
  onActionAudioClick(audioCommentID) {
109
- throw new Error(`onActionDetailClick is not implemented in the base class.
109
+ throw new Error(`onActionDetailClick is not implemented in the base class.
110
110
  Please override this method in your extended class.`);
111
111
  }
112
112
  onActionVideoClick(url) {
113
- throw new Error(`onActionVideoClick is not implemented in the base class.
113
+ throw new Error(`onActionVideoClick is not implemented in the base class.
114
114
  Please override this method in your extended class.`);
115
115
  }
116
116
  onActionImageClick(imageCommentID) {
117
- throw new Error(`onActionImageClick is not implemented in the base class.
117
+ throw new Error(`onActionImageClick is not implemented in the base class.
118
118
  Please override this method in your extended class.`);
119
119
  }
120
120
  onActionDocClick(url) {
121
- throw new Error(`onActionDocClick is not implemented in the base class.
121
+ throw new Error(`onActionDocClick is not implemented in the base class.
122
122
  Please override this method in your extended class.`);
123
123
  }
124
124
  onActionYoutubeClick(url) {
125
- throw new Error(`onActionYoutubeClick is not implemented in the base class.
125
+ throw new Error(`onActionYoutubeClick is not implemented in the base class.
126
126
  Please override this method in your extended class.`);
127
127
  }
128
128
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseTagService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -134,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
134
134
  providedIn: 'root',
135
135
  }]
136
136
  }], ctorParameters: () => [] });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3RhZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QywyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBTUwsT0FBTyxHQUlSLE1BQU0sa0JBQWtCLENBQUM7O0FBTTFCLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLGdCQUFnQixDQUFDO0lBRWpCLGdGQUFnRjtJQUNoRixLQUFLLENBQUMsZUFBZSxDQUNuQixPQUFnQixFQUNoQixNQUFvQjtRQUVwQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFzQixFQUFFLE9BQWdCLEVBQUUsTUFBb0I7UUFDN0UsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1lBQzlDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ25ELFNBQVMsQ0FBQyxTQUFTLEdBQUcsaUdBQWlHLE9BQU8sUUFBUSxDQUFDO1lBQ3pJLENBQUM7aUJBQU0sQ0FBQztnQkFDTixTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUM3QixDQUFDO1FB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LGdEQUFnRDtRQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVELG1CQUFtQixDQUFDLEdBQVc7UUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQzs0REFDd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxjQUFzQjtRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDOzREQUN3QyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQVc7UUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQzs0REFDd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxjQUFzQjtRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDOzREQUN3QyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQVc7UUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQzs0REFDd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxHQUFXO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUM7NERBQ3dDLENBQUMsQ0FBQztJQUM1RCxDQUFDO3dHQXRKVSxjQUFjOzRHQUFkLGNBQWMsY0FIYixNQUFNOzs0RkFHUCxjQUFjO2tCQUoxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNhc2UtZGVjbGFyYXRpb25zICovXHJcbi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbW1lbnQsXHJcbiAgRGJPYmplY3RUeXBlLFxyXG4gIEVxdWlwbWVudCxcclxuICBGZWF0dXJlLFxyXG4gIFBPSSxcclxuICBQb2lUeXBlLFxyXG4gIFRhZ0FjdGlvbixcclxuICBUaWNrZXQsXHJcbiAgQ29tbWVudFR5cGUsXHJcbn0gZnJvbSAnLi4vdHlwZXMuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEJhc2VUYWdTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAvKiogQmFzZSBpbXBsZW1lbnRhdGlvbiBmb3IgZ2VuZXJhdGluZyB0YWcgSFRNTC4gT3ZlcnJpZGUgaW4gZGVyaXZlZCBjbGFzc2VzLiAqL1xyXG4gIGFzeW5jIGdldEh0bWxUb0luamVjdChcclxuICAgIHRhZ1R5cGU6IFBvaVR5cGUsXHJcbiAgICBvYmplY3Q6IERiT2JqZWN0VHlwZVxyXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIC8qKiBCYXNlIGltcGxlbWVudGF0aW9uIGZvciBpbmplY3RpbmcgSFRNTCBpbnRvIGEgdGFnIGNvbnRhaW5lci4gKi9cclxuICBhc3luYyBpbmplY3RIdG1sKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIHRhZ1R5cGU6IFBvaVR5cGUsIG9iamVjdDogRGJPYmplY3RUeXBlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIWNvbnRhaW5lcikge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ2luamVjdEh0bWw6IGNvbnRhaW5lciBpcyBudWxsJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGh0bWwgPSBhd2FpdCB0aGlzLmdldEh0bWxUb0luamVjdCh0YWdUeXBlLCBvYmplY3QpO1xyXG4gICAgICBpZiAoIWh0bWwgfHwgaHRtbC50cmltKCkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKGBFbXB0eSBIVE1MIHJldHVybmVkIGZvciAke3RhZ1R5cGV9YCk7XHJcbiAgICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9IGA8ZGl2IGNsYXNzPVwidGFnLWRpdlwiIHN0eWxlPVwiY29sb3I6IHdoaXRlOyBwYWRkaW5nOiAxMHB4O1wiPkJhc2UgaW1wbGVtZW50YXRpb246IE5vIGNvbnRlbnQgZm9yICR7dGFnVHlwZX08L2Rpdj5gO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBodG1sO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIGluamVjdEh0bWw6JywgZXJyb3IpO1xyXG4gICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gYDxkaXYgY2xhc3M9XCJ0YWctZGl2XCIgc3R5bGU9XCJjb2xvcjogd2hpdGU7IHBhZGRpbmc6IDEwcHg7XCI+RXJyb3I6ICR7ZXJyb3IubWVzc2FnZX08L2Rpdj5gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFJldHVybnMgdGhlIG5hdmlnYXRpb24gVVJMIGZvciB2aWV3aW5nIGRldGFpbHMgb2YgYSBzcGVjaWZpYyBvYmplY3QgdHlwZS4gKi9cclxuICBnZXRVcmxGb3JTZWVEZXRhaWxzKG9iamVjdDogRGJPYmplY3RUeXBlLCB0YWdUeXBlOiBQb2lUeXBlKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAodGFnVHlwZSkge1xyXG4gICAgICBjYXNlIFBvaVR5cGUuVElDS0VUOiB7XHJcbiAgICAgICAgcmV0dXJuIGB2aXNpdC8ke29iamVjdC5zcGFjZUlEfS9kZXRhaWwvJHtvYmplY3QuaWR9YDtcclxuICAgICAgfVxyXG4gICAgICBjYXNlIFBvaVR5cGUuRVFVSVBNRU5UOiB7XHJcbiAgICAgICAgcmV0dXJuIGB2aXNpdC8ke29iamVjdC5zcGFjZUlEfS9lcXVpcC8ke29iamVjdC5pZH1gO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgUG9pVHlwZS5NRUFTVVJFOiB7XHJcbiAgICAgICAgcmV0dXJuIGB2aXNpdC8ke29iamVjdC5zcGFjZUlEfS9tZWFzdXJlbWVudC8ke29iamVjdC5pZH1gO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgUG9pVHlwZS5EQVRBOiB7XHJcbiAgICAgICAgcmV0dXJuIGB2aXNpdC8ke29iamVjdC5zcGFjZUlEfS9mZWF0dXJlLyR7b2JqZWN0LmlkfWA7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBQb2lUeXBlLkRFU0s6IHtcclxuICAgICAgICByZXR1cm4gYHZpc2l0LyR7b2JqZWN0LnNwYWNlSUR9L2FkZF9ib29raW5nLyR7b2JqZWN0LmlkfWA7XHJcbiAgICAgIH1cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKmFzeW5jIHVwZGF0ZVBvaU1ldGFkYXRhKHBvaUlkOiBzdHJpbmcsIG1ldGFkYXRhOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcigndXBkYXRlUG9pTWV0YWRhdGEgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLicpO1xyXG4gIH0qL1xyXG5cclxuICBhc3luYyBwcmVwYXJlRXF1aXBtZW50SHRtbChlcXVpcDogRXF1aXBtZW50KTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgcHJlcGFyZUVxdWlwbWVudEh0bWwgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxyXG4gICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcHJlcGFyZVRpY2tldEh0bWwodGlja2V0OiBUaWNrZXQpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBwcmVwYXJlVGlja2V0SHRtbCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHByZXBhcmVGZWF0dXJlSHRtbChmZWF0dXJlOiBGZWF0dXJlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgcHJlcGFyZUZlYXR1cmVIdG1sIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcHJlcGFyZU1lYXN1cmVtZW50SHRtbChtZWFzdXJlOiBDb21tZW50KTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgcHJlcGFyZU1lYXN1cmVtZW50SHRtbCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHByZXBhcmVEZXNrSHRtbChmZWF0dXJlOiBGZWF0dXJlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgcHJlcGFyZURlc2tIdG1sIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcHJlcGFyZUluZGljYXRvckh0bWwoZmVhdHVyZTogRmVhdHVyZSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHByZXBhcmVEZXNrSHRtbCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFNpZ25lZFRhZ0ljb25Tb3VyY2UodGFnSWNvblNyYzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgIGBnZXRTaWduZWRUYWdJY29uU291cmNlIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy5gXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0SWNvblRhZ0ltYWdlRm9yRmVhdHVyZShmZWF0dXJlOiBEYk9iamVjdFR5cGUsIHBvaTogUE9JKTogc3RyaW5nIHtcclxuICAgIC8vIGNvbnN0IHRhZ0ljb24gPSBKU09OLnBhcnNlKHBvaS50YWdJY29uKTtcclxuICAgIC8vIHJldHVybiB0YWdJY29uLnNyYztcclxuICAgIHRocm93IG5ldyBFcnJvcihgZ2V0SWNvblRhZ0ltYWdlRm9yRmVhdHVyZSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcclxuICB9XHJcblxyXG4gIGdldFNjcmlwdEZvclRhZyhvYmplY3QsIHRhZ1R5cGU6IFBvaVR5cGUpOiBzdHJpbmcge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBnZXRTY3JpcHRGb3JUYWcgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxyXG4gICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuICBnZXRBbm5leGVGb3JDb21tZW50VHlwZUluRmVhdHVyZShcclxuICAgIGZlYXR1cmU6IEZlYXR1cmUsXHJcbiAgICBjb21tZW50VHlwZTogQ29tbWVudFR5cGVcclxuICApOiBzdHJpbmcge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBnZXRBbm5leGVGb3JDb21tZW50VHlwZUluRmVhdHVyZSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXHJcbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XHJcbiAgfVxyXG5cclxuICBnZXRCaWxsYm9hcmRNZWRpYVRvRW1iZWQob2JqZWN0OiBEYk9iamVjdFR5cGUpOiB7XHJcbiAgICBjb21tZW50OiBDb21tZW50O1xyXG4gICAgdGFnRGVzY3JpcHRpb246IHN0cmluZztcclxuICB9IHtcclxuICAgIC8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gdG8gcHJldmVudCBjcmFzaCBpZiBiYXNlIGNsYXNzIGlzIGluc3RhbnRpYXRlZCBkaXJlY3RseS5cclxuICAgIC8vIEV4dGVuZGVkIGNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRoaXMgbWV0aG9kLlxyXG4gICAgcmV0dXJuIHsgY29tbWVudDogbnVsbCwgdGFnRGVzY3JpcHRpb246ICcnIH07XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbkRldGFpbENsaWNrKHVybDogc3RyaW5nKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG9uQWN0aW9uRGV0YWlsQ2xpY2sgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxyXG4gICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuXHJcbiAgb25BY3Rpb25BdWRpb0NsaWNrKGF1ZGlvQ29tbWVudElEOiBzdHJpbmcpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgb25BY3Rpb25EZXRhaWxDbGljayBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXHJcbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvblZpZGVvQ2xpY2sodXJsOiBzdHJpbmcpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgb25BY3Rpb25WaWRlb0NsaWNrIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy5cclxuICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcclxuICB9XHJcblxyXG4gIG9uQWN0aW9uSW1hZ2VDbGljayhpbWFnZUNvbW1lbnRJRDogc3RyaW5nKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG9uQWN0aW9uSW1hZ2VDbGljayBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXHJcbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbkRvY0NsaWNrKHVybDogc3RyaW5nKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG9uQWN0aW9uRG9jQ2xpY2sgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxyXG4gICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxuXHJcbiAgb25BY3Rpb25Zb3V0dWJlQ2xpY2sodXJsOiBzdHJpbmcpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgb25BY3Rpb25Zb3V0dWJlQ2xpY2sgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxyXG4gICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xyXG4gIH1cclxufVxyXG4iXX0=
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3RhZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QywyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBTUwsT0FBTyxHQUlSLE1BQU0sa0JBQWtCLENBQUM7O0FBTTFCLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLGdCQUFnQixDQUFDO0lBRWpCLGdGQUFnRjtJQUNoRixLQUFLLENBQUMsZUFBZSxDQUNuQixPQUFnQixFQUNoQixNQUFvQjtRQUVwQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFzQixFQUFFLE9BQWdCLEVBQUUsTUFBb0I7UUFDN0UsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1lBQzlDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ25ELFNBQVMsQ0FBQyxTQUFTLEdBQUcsaUdBQWlHLE9BQU8sUUFBUSxDQUFDO1lBQ3pJLENBQUM7aUJBQU0sQ0FBQztnQkFDTixTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUM3QixDQUFDO1FB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LGdEQUFnRDtRQUNoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVELG1CQUFtQixDQUFDLEdBQVc7UUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQzs0REFDd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxjQUFzQjtRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDOzREQUN3QyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQVc7UUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQzs0REFDd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxjQUFzQjtRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDOzREQUN3QyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQVc7UUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQzs0REFDd0MsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxHQUFXO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUM7NERBQ3dDLENBQUMsQ0FBQztJQUM1RCxDQUFDO3dHQXRKVSxjQUFjOzRHQUFkLGNBQWMsY0FIYixNQUFNOzs0RkFHUCxjQUFjO2tCQUoxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNhc2UtZGVjbGFyYXRpb25zICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb21tZW50LFxuICBEYk9iamVjdFR5cGUsXG4gIEVxdWlwbWVudCxcbiAgRmVhdHVyZSxcbiAgUE9JLFxuICBQb2lUeXBlLFxuICBUYWdBY3Rpb24sXG4gIFRpY2tldCxcbiAgQ29tbWVudFR5cGUsXG59IGZyb20gJy4uL3R5cGVzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5cbmV4cG9ydCBjbGFzcyBCYXNlVGFnU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgLyoqIEJhc2UgaW1wbGVtZW50YXRpb24gZm9yIGdlbmVyYXRpbmcgdGFnIEhUTUwuIE92ZXJyaWRlIGluIGRlcml2ZWQgY2xhc3Nlcy4gKi9cbiAgYXN5bmMgZ2V0SHRtbFRvSW5qZWN0KFxuICAgIHRhZ1R5cGU6IFBvaVR5cGUsXG4gICAgb2JqZWN0OiBEYk9iamVjdFR5cGVcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIC8qKiBCYXNlIGltcGxlbWVudGF0aW9uIGZvciBpbmplY3RpbmcgSFRNTCBpbnRvIGEgdGFnIGNvbnRhaW5lci4gKi9cbiAgYXN5bmMgaW5qZWN0SHRtbChjb250YWluZXI6IEhUTUxFbGVtZW50LCB0YWdUeXBlOiBQb2lUeXBlLCBvYmplY3Q6IERiT2JqZWN0VHlwZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ2luamVjdEh0bWw6IGNvbnRhaW5lciBpcyBudWxsJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBodG1sID0gYXdhaXQgdGhpcy5nZXRIdG1sVG9JbmplY3QodGFnVHlwZSwgb2JqZWN0KTtcbiAgICAgIGlmICghaHRtbCB8fCBodG1sLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBFbXB0eSBIVE1MIHJldHVybmVkIGZvciAke3RhZ1R5cGV9YCk7XG4gICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBgPGRpdiBjbGFzcz1cInRhZy1kaXZcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZTsgcGFkZGluZzogMTBweDtcIj5CYXNlIGltcGxlbWVudGF0aW9uOiBObyBjb250ZW50IGZvciAke3RhZ1R5cGV9PC9kaXY+YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBodG1sO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIGluamVjdEh0bWw6JywgZXJyb3IpO1xuICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9IGA8ZGl2IGNsYXNzPVwidGFnLWRpdlwiIHN0eWxlPVwiY29sb3I6IHdoaXRlOyBwYWRkaW5nOiAxMHB4O1wiPkVycm9yOiAke2Vycm9yLm1lc3NhZ2V9PC9kaXY+YDtcbiAgICB9XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgbmF2aWdhdGlvbiBVUkwgZm9yIHZpZXdpbmcgZGV0YWlscyBvZiBhIHNwZWNpZmljIG9iamVjdCB0eXBlLiAqL1xuICBnZXRVcmxGb3JTZWVEZXRhaWxzKG9iamVjdDogRGJPYmplY3RUeXBlLCB0YWdUeXBlOiBQb2lUeXBlKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRhZ1R5cGUpIHtcbiAgICAgIGNhc2UgUG9pVHlwZS5USUNLRVQ6IHtcbiAgICAgICAgcmV0dXJuIGB2aXNpdC8ke29iamVjdC5zcGFjZUlEfS9kZXRhaWwvJHtvYmplY3QuaWR9YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgUG9pVHlwZS5FUVVJUE1FTlQ6IHtcbiAgICAgICAgcmV0dXJuIGB2aXNpdC8ke29iamVjdC5zcGFjZUlEfS9lcXVpcC8ke29iamVjdC5pZH1gO1xuICAgICAgfVxuICAgICAgY2FzZSBQb2lUeXBlLk1FQVNVUkU6IHtcbiAgICAgICAgcmV0dXJuIGB2aXNpdC8ke29iamVjdC5zcGFjZUlEfS9tZWFzdXJlbWVudC8ke29iamVjdC5pZH1gO1xuICAgICAgfVxuICAgICAgY2FzZSBQb2lUeXBlLkRBVEE6IHtcbiAgICAgICAgcmV0dXJuIGB2aXNpdC8ke29iamVjdC5zcGFjZUlEfS9mZWF0dXJlLyR7b2JqZWN0LmlkfWA7XG4gICAgICB9XG4gICAgICBjYXNlIFBvaVR5cGUuREVTSzoge1xuICAgICAgICByZXR1cm4gYHZpc2l0LyR7b2JqZWN0LnNwYWNlSUR9L2FkZF9ib29raW5nLyR7b2JqZWN0LmlkfWA7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgLyphc3luYyB1cGRhdGVQb2lNZXRhZGF0YShwb2lJZDogc3RyaW5nLCBtZXRhZGF0YTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1cGRhdGVQb2lNZXRhZGF0YSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuJyk7XG4gIH0qL1xuXG4gIGFzeW5jIHByZXBhcmVFcXVpcG1lbnRIdG1sKGVxdWlwOiBFcXVpcG1lbnQpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHRocm93IG5ldyBFcnJvcihgcHJlcGFyZUVxdWlwbWVudEh0bWwgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxuICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcbiAgfVxuXG4gIGFzeW5jIHByZXBhcmVUaWNrZXRIdG1sKHRpY2tldDogVGlja2V0KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHByZXBhcmVUaWNrZXRIdG1sIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy5cbiAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcbiAgfVxuXG4gIGFzeW5jIHByZXBhcmVGZWF0dXJlSHRtbChmZWF0dXJlOiBGZWF0dXJlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHByZXBhcmVGZWF0dXJlSHRtbCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXG4gICAgICAgICAgICAgICAgICAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XG4gIH1cblxuICBhc3luYyBwcmVwYXJlTWVhc3VyZW1lbnRIdG1sKG1lYXN1cmU6IENvbW1lbnQpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHRocm93IG5ldyBFcnJvcihgcHJlcGFyZU1lYXN1cmVtZW50SHRtbCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXG4gICAgICAgICAgICAgICAgICAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XG4gIH1cblxuICBhc3luYyBwcmVwYXJlRGVza0h0bWwoZmVhdHVyZTogRmVhdHVyZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBwcmVwYXJlRGVza0h0bWwgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxuICAgICAgICAgICAgICAgICAgICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xuICB9XG5cbiAgYXN5bmMgcHJlcGFyZUluZGljYXRvckh0bWwoZmVhdHVyZTogRmVhdHVyZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBwcmVwYXJlRGVza0h0bWwgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxuICAgICAgICAgICAgICAgICAgICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xuICB9XG5cbiAgYXN5bmMgZ2V0U2lnbmVkVGFnSWNvblNvdXJjZSh0YWdJY29uU3JjOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgZ2V0U2lnbmVkVGFnSWNvblNvdXJjZSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuYFxuICAgICk7XG4gIH1cblxuICBnZXRJY29uVGFnSW1hZ2VGb3JGZWF0dXJlKGZlYXR1cmU6IERiT2JqZWN0VHlwZSwgcG9pOiBQT0kpOiBzdHJpbmcge1xuICAgIC8vIGNvbnN0IHRhZ0ljb24gPSBKU09OLnBhcnNlKHBvaS50YWdJY29uKTtcbiAgICAvLyByZXR1cm4gdGFnSWNvbi5zcmM7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBnZXRJY29uVGFnSW1hZ2VGb3JGZWF0dXJlIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy5cbiAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcbiAgfVxuXG4gIGdldFNjcmlwdEZvclRhZyhvYmplY3QsIHRhZ1R5cGU6IFBvaVR5cGUpOiBzdHJpbmcge1xuICAgIHRocm93IG5ldyBFcnJvcihgZ2V0U2NyaXB0Rm9yVGFnIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy5cbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XG4gIH1cbiAgZ2V0QW5uZXhlRm9yQ29tbWVudFR5cGVJbkZlYXR1cmUoXG4gICAgZmVhdHVyZTogRmVhdHVyZSxcbiAgICBjb21tZW50VHlwZTogQ29tbWVudFR5cGVcbiAgKTogc3RyaW5nIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGdldEFubmV4ZUZvckNvbW1lbnRUeXBlSW5GZWF0dXJlIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy5cbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XG4gIH1cblxuICBnZXRCaWxsYm9hcmRNZWRpYVRvRW1iZWQob2JqZWN0OiBEYk9iamVjdFR5cGUpOiB7XG4gICAgY29tbWVudDogQ29tbWVudDtcbiAgICB0YWdEZXNjcmlwdGlvbjogc3RyaW5nO1xuICB9IHtcbiAgICAvLyBEZWZhdWx0IGltcGxlbWVudGF0aW9uIHRvIHByZXZlbnQgY3Jhc2ggaWYgYmFzZSBjbGFzcyBpcyBpbnN0YW50aWF0ZWQgZGlyZWN0bHkuXG4gICAgLy8gRXh0ZW5kZWQgY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QuXG4gICAgcmV0dXJuIHsgY29tbWVudDogbnVsbCwgdGFnRGVzY3JpcHRpb246ICcnIH07XG4gIH1cblxuICBvbkFjdGlvbkRldGFpbENsaWNrKHVybDogc3RyaW5nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBvbkFjdGlvbkRldGFpbENsaWNrIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZSBjbGFzcy5cbiAgICAgICAgUGxlYXNlIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIHlvdXIgZXh0ZW5kZWQgY2xhc3MuYCk7XG4gIH1cblxuICBvbkFjdGlvbkF1ZGlvQ2xpY2soYXVkaW9Db21tZW50SUQ6IHN0cmluZykge1xuICAgIHRocm93IG5ldyBFcnJvcihgb25BY3Rpb25EZXRhaWxDbGljayBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXG4gICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xuICB9XG5cbiAgb25BY3Rpb25WaWRlb0NsaWNrKHVybDogc3RyaW5nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBvbkFjdGlvblZpZGVvQ2xpY2sgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxuICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcbiAgfVxuXG4gIG9uQWN0aW9uSW1hZ2VDbGljayhpbWFnZUNvbW1lbnRJRDogc3RyaW5nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBvbkFjdGlvbkltYWdlQ2xpY2sgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxuICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcbiAgfVxuXG4gIG9uQWN0aW9uRG9jQ2xpY2sodXJsOiBzdHJpbmcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG9uQWN0aW9uRG9jQ2xpY2sgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBiYXNlIGNsYXNzLlxuICAgICAgICBQbGVhc2Ugb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4geW91ciBleHRlbmRlZCBjbGFzcy5gKTtcbiAgfVxuXG4gIG9uQWN0aW9uWW91dHViZUNsaWNrKHVybDogc3RyaW5nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBvbkFjdGlvbllvdXR1YmVDbGljayBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGJhc2UgY2xhc3MuXG4gICAgICAgIFBsZWFzZSBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGV4dGVuZGVkIGNsYXNzLmApO1xuICB9XG59XG4iXX0=