@smarterplan/ngx-smarterplan-core 1.4.21 → 1.4.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/README.md +24 -24
  2. package/esm2022/lib/components/csv-export/csv-export.component.mjs +3 -3
  3. package/esm2022/lib/components/loader/loader.component.mjs +3 -3
  4. package/esm2022/lib/components/menu-bar/avatar/avatar.component.mjs +1 -1
  5. package/esm2022/lib/components/menu-bar/menu-bar.component.mjs +3 -3
  6. package/esm2022/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +3 -3
  7. package/esm2022/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +3 -3
  8. package/esm2022/lib/components/search-bar/search-bar.component.mjs +3 -3
  9. package/esm2022/lib/components/splat-viewer/splat-viewer.component.mjs +361 -0
  10. package/esm2022/lib/components/support-modal/support-modal.component.mjs +3 -3
  11. package/esm2022/lib/config.mjs +1 -1
  12. package/esm2022/lib/helpers.service.mjs +1 -1
  13. package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +1 -1
  14. package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +1 -1
  15. package/esm2022/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +1 -1
  16. package/esm2022/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +1 -1
  17. package/esm2022/lib/matterport-extensions/scene-component/SceneComponent.mjs +1 -1
  18. package/esm2022/lib/matterport-extensions/security-camera/SecurityCamera.mjs +22 -22
  19. package/esm2022/lib/matterport-extensions/tv-player/TvPlayer.mjs +1 -1
  20. package/esm2022/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +22 -22
  21. package/esm2022/lib/mattertagData.mjs +1 -1
  22. package/esm2022/lib/ngx-smarterplan-core.module.mjs +9 -4
  23. package/esm2022/lib/ngx-smarterplan-core.service.mjs +1 -1
  24. package/esm2022/lib/pipes/duration-to-string.pipe.mjs +1 -1
  25. package/esm2022/lib/pipes/format-date-number-to-digits.pipe.mjs +1 -1
  26. package/esm2022/lib/pipes/hashtag-from-id.pipe.mjs +1 -1
  27. package/esm2022/lib/pipes/safe-url.pipe.mjs +1 -1
  28. package/esm2022/lib/pipes/time-date-to-local-string.pipe.mjs +1 -1
  29. package/esm2022/lib/pipes/username-from-id.pipe.mjs +1 -1
  30. package/esm2022/lib/services/amplify-cache.service.mjs +1 -1
  31. package/esm2022/lib/services/base-tab.service.mjs +1 -1
  32. package/esm2022/lib/services/baseVisibility.service.mjs +1 -1
  33. package/esm2022/lib/services/content.service.mjs +1 -1
  34. package/esm2022/lib/services/filter.service.mjs +1 -1
  35. package/esm2022/lib/services/intervention.service.mjs +1 -1
  36. package/esm2022/lib/services/locale.service.mjs +1 -1
  37. package/esm2022/lib/services/matterport-import.service.mjs +1 -1
  38. package/esm2022/lib/services/matterport-measurement.service.mjs +1 -1
  39. package/esm2022/lib/services/matterport-navigation.service.mjs +1 -1
  40. package/esm2022/lib/services/matterport-pointer.service.mjs +6 -6
  41. package/esm2022/lib/services/matterport-tag-copy.service.mjs +1 -1
  42. package/esm2022/lib/services/matterport-tag.service.mjs +12 -7
  43. package/esm2022/lib/services/matterport.service.mjs +17 -17
  44. package/esm2022/lib/services/models/affectation.service.mjs +1 -1
  45. package/esm2022/lib/services/models/base-object.service.mjs +1 -1
  46. package/esm2022/lib/services/models/capture.service.mjs +1 -1
  47. package/esm2022/lib/services/models/comment.service.mjs +1 -1
  48. package/esm2022/lib/services/models/domain.service.mjs +1 -1
  49. package/esm2022/lib/services/models/equipment.service.mjs +1 -1
  50. package/esm2022/lib/services/models/event.service.mjs +1 -1
  51. package/esm2022/lib/services/models/feature.service.mjs +1 -1
  52. package/esm2022/lib/services/models/hashtag.service.mjs +1 -1
  53. package/esm2022/lib/services/models/layer.service.mjs +1 -1
  54. package/esm2022/lib/services/models/measurement.service.mjs +1 -1
  55. package/esm2022/lib/services/models/mission.service.mjs +1 -1
  56. package/esm2022/lib/services/models/navigation.service.mjs +1 -1
  57. package/esm2022/lib/services/models/node.service.mjs +1 -1
  58. package/esm2022/lib/services/models/object3D.service.mjs +1 -1
  59. package/esm2022/lib/services/models/operation.service.mjs +1 -1
  60. package/esm2022/lib/services/models/organisation.service.mjs +1 -1
  61. package/esm2022/lib/services/models/plan.service.mjs +1 -1
  62. package/esm2022/lib/services/models/poi.service.mjs +27 -27
  63. package/esm2022/lib/services/models/profile.service.mjs +1 -1
  64. package/esm2022/lib/services/models/property.service.mjs +1 -1
  65. package/esm2022/lib/services/models/space.service.mjs +1 -1
  66. package/esm2022/lib/services/models/template.service.mjs +1 -1
  67. package/esm2022/lib/services/models/ticket.service.mjs +1 -1
  68. package/esm2022/lib/services/models/visit.service.mjs +1 -1
  69. package/esm2022/lib/services/models/zone.service.mjs +1 -1
  70. package/esm2022/lib/services/navigator.service.mjs +1 -1
  71. package/esm2022/lib/services/obj-to-glb.mjs +649 -0
  72. package/esm2022/lib/services/s3.service.mjs +43 -3
  73. package/esm2022/lib/services/search.service.mjs +1 -1
  74. package/esm2022/lib/services/support.service.mjs +1 -1
  75. package/esm2022/lib/services/sweep-locator.service.mjs +1 -1
  76. package/esm2022/lib/services/tag.service.mjs +16 -16
  77. package/esm2022/lib/services/threejs-import.service.mjs +6 -4
  78. package/esm2022/lib/services/threejs.service.mjs +867 -95
  79. package/esm2022/lib/services/user.service.mjs +1 -1
  80. package/esm2022/lib/services/utils/matterport-transform.util.mjs +1 -1
  81. package/esm2022/lib/services/validators.service.mjs +1 -1
  82. package/esm2022/lib/services/viewer.service.mjs +189 -7
  83. package/esm2022/lib/services/zone-drawer.service.mjs +1 -1
  84. package/esm2022/lib/services/zoneChange.service.mjs +1 -1
  85. package/esm2022/lib/tokens/matterport-sdk-key.token.mjs +1 -1
  86. package/esm2022/lib/validators/email.directive.mjs +1 -1
  87. package/esm2022/lib/validators/no-empty.directive.mjs +1 -1
  88. package/esm2022/lib/validators/number.directive.mjs +1 -1
  89. package/esm2022/lib/validators/text.directive.mjs +1 -1
  90. package/esm2022/public-api.mjs +3 -1
  91. package/fesm2022/smarterplan-ngx-smarterplan-core.mjs +2239 -233
  92. package/fesm2022/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  93. package/lib/components/splat-viewer/splat-viewer.component.d.ts +98 -0
  94. package/lib/ngx-smarterplan-core.module.d.ts +7 -6
  95. package/lib/services/matterport-tag.service.d.ts +5 -5
  96. package/lib/services/obj-to-glb.d.ts +66 -0
  97. package/lib/services/s3.service.d.ts +7 -0
  98. package/lib/services/threejs.service.d.ts +336 -16
  99. package/lib/services/viewer.service.d.ts +110 -8
  100. package/package.json +1 -1
  101. package/public-api.d.ts +2 -0
  102. package/src/assets/viewers/splat/chunk-BYLI4YBI.js +17037 -0
  103. package/src/assets/viewers/splat/chunk-LDV6YPMG.js +1 -0
  104. package/src/assets/viewers/splat/chunk-WZ5Z4TU3.js +105719 -0
  105. package/src/assets/viewers/splat/convert-4DRLH77X.js +1 -0
  106. package/src/assets/viewers/splat/convert.html +11 -0
  107. package/src/assets/viewers/splat/converter-SLBB5MHG.js +1 -0
  108. package/src/assets/viewers/splat/index.html +90 -0
  109. package/src/assets/viewers/splat/spz-DEYRea_v-QE6YSGIB.js +5292 -0
  110. package/src/assets/viewers/splat/viewer-W4X3FWQJ.js +2704 -0
  111. package/src/assets/viewers/splat/viewer.css +1096 -0
  112. package/src/assets/viewers/splat/webp.wasm +0 -0
  113. package/src/assets/viewers/splat/worker.mjs +1383 -0
  114. package/src/assets/vs-app.json +67 -67
@@ -509,4 +509,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
509
509
  type: Inject,
510
510
  args: ['SPModule']
511
511
  }] }] });
512
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy91c2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkvQixPQUFPLEVBQUUsV0FBVyxFQUFrQyxhQUFhLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQVksTUFBTSxrQkFBa0IsQ0FBQztBQUNqSixPQUFPLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLDBCQUEwQixFQUFFLHlCQUF5QixFQUFFLGNBQWMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSXhLLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7O0FBVW5DOztHQUVHO0FBSUgsTUFBTSxPQUFPLGVBQWU7SUF3Qlo7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUE1QlosU0FBUyxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO0lBRXJELFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFakIsUUFBUSxHQUFHO1FBQ1AsVUFBVSxDQUFDLEtBQUs7UUFDaEIsVUFBVSxDQUFDLE9BQU87UUFDbEIsVUFBVSxDQUFDLEtBQUs7UUFDaEIsVUFBVSxDQUFDLFlBQVk7S0FDMUIsQ0FBQztJQUVGLGVBQWUsQ0FBWTtJQUUzQixrQkFBa0IsQ0FBVTtJQUU1QixrQkFBa0IsQ0FBVTtJQUU1QixFQUFFLEdBQWtCLElBQUksQ0FBQztJQUV6QixRQUFRLENBQVc7SUFFbkIsWUFDWSxjQUE4QixFQUM5QixjQUE4QixF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RkFFVCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBZ0NRLE1BQU07MkJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQgeyBMZXZlbFN0YXR1cywgTWlzc2lvbiwgT3JnYW5pc2F0aW9uLCBQcm9maWxlLCBQcm9maWxlRW50aXR5LCBQcm9maWxlU3RhdHVzLCBQcm9wZXJ0eVR5cGUsIFJvbGVTdGF0dXMsIFNwTW9kdWxlIH0gZnJvbSBcIi4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgZW51bVRvQXJyYXksIGZpbHRlclVuaXF1ZUFycmF5QnlJRCwgZ2V0SGlnaGVzdExldmVsRm9yTWlzc2lvbnMsIGdldEhpZ2hlc3RSb2xlRm9yTWlzc2lvbnMsIGdldExldmVsc0JlbG93LCBnZXRSb2xlc0JlbG93Rm9yTWFuYWdlciB9IGZyb20gXCIuLi9oZWxwZXJzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUHJvZmlsZVNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvcHJvZmlsZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE1pc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL21pc3Npb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBQcm9wZXJ0eVNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvcHJvcGVydHkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gXCJsdXhvblwiO1xyXG5pbXBvcnQgeyBBdXRoIH0gZnJvbSBcImF3cy1hbXBsaWZ5XCI7XHJcblxyXG5pbnRlcmZhY2UgQ3JlYXRlVXNlciB7XHJcbiAgICBlbWFpbDogc3RyaW5nO1xyXG4gICAgcGhvbmU/OiBzdHJpbmc7XHJcbiAgICBsYXN0TmFtZTogc3RyaW5nO1xyXG4gICAgZmlyc3ROYW1lOiBzdHJpbmc7XHJcbiAgICBwYXNzd29yZD86IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIFVzZXJTZXJ2aWNlIGhhbmRsZXMgdXNlcidzIGxpZmVjeWNsZSwgZnJvbSBjcmVhdGlvbiB0byBkZWxldGlvblxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXNlVXNlclNlcnZpY2Uge1xyXG5cclxuICAgIGlzQ2hhbmdlZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcblxyXG4gICAgdXBkYXRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICBtYW5hZ2VycyA9IFtcclxuICAgICAgICBSb2xlU3RhdHVzLkFETUlOLFxyXG4gICAgICAgIFJvbGVTdGF0dXMuTUFOQUdFUixcclxuICAgICAgICBSb2xlU3RhdHVzLk9XTkVSLFxyXG4gICAgICAgIFJvbGVTdGF0dXMuR1VJREVfTVVTRVVNLFxyXG4gICAgXTtcclxuXHJcbiAgICBjdXJyZW50TWlzc2lvbnM6IE1pc3Npb25bXTtcclxuXHJcbiAgICBsYXN0RXhwaXJlZE1pc3Npb246IE1pc3Npb247XHJcblxyXG4gICAgbmV4dE1pc3Npb25Ub1N0YXJ0OiBNaXNzaW9uO1xyXG5cclxuICAgIGN1OiBQcm9maWxlRW50aXR5ID0gbnVsbDtcclxuXHJcbiAgICBzcE1vZHVsZTogU3BNb2R1bGU7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBwcm9maWxlU2VydmljZTogUHJvZmlsZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBtaXNzaW9uU2VydmljZTogTWlzc2lvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBwcm9wZXJ0eVNlcnZpY2U6IFByb3BlcnR5U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxyXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXHJcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgQEluamVjdCgnU1BNb2R1bGUnKSBzcE1vZHVsZUluamVjdGVkOiBTcE1vZHVsZSxcclxuICAgICkge1xyXG4gICAgICAgIC8vIHRoaXMuY2hlY2tDb25uZWN0ZWRBV1NVc2VyKCk7XHJcbiAgICAgICAgdGhpcy5taXNzaW9uU2VydmljZS5jdXJyZW50TWlzc2lvbnNVcGRhdGVkLnN1YnNjcmliZShhc3luYyAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRNaXNzaW9ucyA9XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm1pc3Npb25TZXJ2aWNlLmluc3RhbnRNaXNzaW9uc09mQ3VycmVudCh0aGlzLmN1LmlkKTtcclxuICAgICAgICAgICAgdGhpcy5pc0NoYW5nZWQubmV4dCh0cnVlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNwTW9kdWxlID0gc3BNb2R1bGVJbmplY3RlZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyBpZiBBV1MgdXNlciBpcyBjb25uZWN0ZWQgYW5kIGFzc2lnbmcgaXQgdG8gY3VycmVudCB1c2VyICh0aGlzLmN1KVxyXG4gICAgKiovXHJcbiAgICBhc3luYyBjaGVja0Nvbm5lY3RlZEFXU1VzZXIoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1KSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiY2hlY2sgQVdTIHVzZXJcIik7XHJcbiAgICAgICAgICAgIGxldCBjYXUgPSBudWxsO1xyXG4gICAgICAgICAgICBsZXQgdXNlciA9IG51bGw7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudXBkYXRpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXUgPSBhd2FpdCBBdXRoLmN1cnJlbnRBdXRoZW50aWNhdGVkVXNlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiY29ubmVjdGVkXCIsIGNhdSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdXNlciA9IGF3YWl0IHRoaXMuY3VycmVudChjYXUpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiY3VycmVudCBvZiB1c2VyU2VydmljZVwiLCB1c2VyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cclxuICAgICAgICAgICAgaWYgKCF1c2VyICYmICF0aGlzLnVwZGF0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIm5vIHVzZXIgaW4gY2hlY2sgY29ubmVjdGVkIGF3cyB1c2VyXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiYXV0aFwiXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBjcmVhdGVVc2VyIHNwYXducyBhIG5ldyBVc2VyLCBhbG9uZyB3aXRoOlxyXG4gICAgICogLSBhIHByb3BlciBBV1NDb2duaXRvIHNpZ251cFxyXG4gICAgICogLSBhIFByb2ZpbGUgZW50cnkgaG9sZGluZyB0aGUgQVdTQ29nbml0byBJRFxyXG4gICAgICogLSBhIE1pc3Npb24gZW50cnkgaG9sZGluZyB0aGUgT3JnYW5pc2F0aW9uIElEXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSAxNzRcclxuICAgICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmFtcGxpZnkuYXdzL2xpYi9hdXRoL2VtYWlscGFzc3dvcmQvcS9wbGF0Zm9ybS9qcyNzaWduLXVwXHJcbiAgICAgKiBAdG9kbyB3b25kZXIgaWYgd2UgY2FuIG1hc2ggdG9nZXRoZXIgUHJvZmlsZSwgTWlzc2lvbiBhbmQgVXNlciBlbnRyaWVzXHJcbiAgICAgKiBAcGFyYW0gdSBVc2VyIHRvIGJlIGNyZWF0ZWRcclxuICAgICAqL1xyXG4gICAgYXN5bmMgY3JlYXRlVXNlckFXU2FuZFByb2ZpbGUoXHJcbiAgICAgICAgdToge1xyXG4gICAgICAgICAgICBlbWFpbDogc3RyaW5nO1xyXG4gICAgICAgICAgICBwaG9uZTogc3RyaW5nO1xyXG4gICAgICAgICAgICBsYXN0TmFtZTogc3RyaW5nO1xyXG4gICAgICAgICAgICBmaXJzdE5hbWU6IHN0cmluZztcclxuICAgICAgICAgICAgcGFzc3dvcmQ/OiBzdHJpbmc7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBwcmV2YWxpZGF0ZWQ6IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgICk6IFByb21pc2U8UHJvZmlsZT4ge1xyXG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB7XHJcbiAgICAgICAgICAgIGVtYWlsOiB1LmVtYWlsLnRyaW0oKSxcclxuICAgICAgICAgICAgZ2l2ZW5fbmFtZTogdS5maXJzdE5hbWUsXHJcbiAgICAgICAgICAgIGZhbWlseV9uYW1lOiB1Lmxhc3ROYW1lLFxyXG4gICAgICAgICAgICB6b25laW5mbzogXCJmclwiLCAvLyBAdG9kbyBkZWFsIHdpdGggem9uZWluZm8gYW5kIGxvY2FsZVxyXG4gICAgICAgICAgICBsb2NhbGU6IFwiZnJcIixcclxuICAgICAgICAgICAgXCJjdXN0b206cHJldmFsaWRhdGVkXCI6IFwiZmFsc2VcIixcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChwcmV2YWxpZGF0ZWQpIHtcclxuICAgICAgICAgICAgYXR0cmlidXRlc1tcImN1c3RvbTpwcmV2YWxpZGF0ZWRcIl0gPSBcInRydWVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gQVdTQ29nbml0b1xyXG4gICAgICAgIGNvbnN0IHBhc3N3b3JkID0gdS5wYXNzd29yZCA/IHUucGFzc3dvcmQgOiBcInRlbXBvcmFyeXBcIjtcclxuICAgICAgICBsZXQgZXJyb3I7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgeyB1c2VyU3ViIH0gPSBhd2FpdCBBdXRoLnNpZ25VcCh7XHJcbiAgICAgICAgICAgICAgICB1c2VybmFtZTogdS5lbWFpbCwgLy8gdXNlcm5hbWUgc2hvdWxkIGJlIGFuIGVtYWlsIHRoZXkgc2F5XHJcbiAgICAgICAgICAgICAgICBwYXNzd29yZCxcclxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMsXHJcbiAgICAgICAgICAgICAgICBjbGllbnRNZXRhZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgIHBob25lOiB1LnBob25lLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmICh1c2VyU3ViKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVQcm9maWxlKHVzZXJTdWIsIHUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3JfOiBhbnkpIHtcclxuICAgICAgICAgICAgc3dpdGNoIChlcnJvcl8uY29kZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcIkludmFsaWRQYXNzd29yZEV4Y2VwdGlvblwiOlxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0gXCJhdXRoLmVycm9yLndyb25nX3Bhc3N3b3JkXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiVXNlck5vdENvbmZpcm1lZEV4Y2VwdGlvblwiOlxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0gXCJhdXRoLmVycm9yLnVzZXJfbm90X2NvbmZpcm1lZFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcIkludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb25cIjpcclxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IFwiYXV0aC5lcnJvci5pbnZhbGlkX3BhcmFtZXRlclwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGVycm9yXy5tZXNzYWdlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBV1MgU2lnbiBVUCBlcnJvciA6ICR7ZXJyb3J9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAtIENyZWF0ZXMgQVdTIHVzZXIgaW4gQ29nbml0byBmb3IgSG90ZWwgVXNlciBQb29sIFNjaGVtYSAob25seSBlbWFpbCBpcyByZXF1aXJlZClcclxuICAgICAqIC0gQ3JlYXRlcyBQcm9maWxlIGluIER5bmFtb0RCXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHUgVXNlciB0byBiZSBjcmVhdGVkXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGNyZWF0ZUhvdGVsVXNlckFXU2FuZFByb2ZpbGUoXHJcbiAgICAgICAgdXNlcjoge1xyXG4gICAgICAgICAgICBlbWFpbDogc3RyaW5nO1xyXG4gICAgICAgICAgICBsYXN0TmFtZTogc3RyaW5nO1xyXG4gICAgICAgICAgICBmaXJzdE5hbWU6IHN0cmluZztcclxuICAgICAgICB9LFxyXG4gICAgKTogUHJvbWlzZTxQcm9maWxlPiB7XHJcbiAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHtcclxuICAgICAgICAgICAgZW1haWw6IHVzZXIuZW1haWwudHJpbSgpXHJcbiAgICAgICAgfTtcclxuICAgICAgICAvLyBBV1NDb2duaXRvXHJcbiAgICAgICAgY29uc3QgcGFzc3dvcmQgPSBcInRlbXBvcmFyeXBcIjtcclxuICAgICAgICBsZXQgZXJyb3I7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgeyB1c2VyU3ViIH0gPSBhd2FpdCBBdXRoLnNpZ25VcCh7XHJcbiAgICAgICAgICAgICAgICB1c2VybmFtZTogdXNlci5lbWFpbC50cmltKCksXHJcbiAgICAgICAgICAgICAgICBwYXNzd29yZCxcclxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAodXNlclN1Yikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUHJvZmlsZSh1c2VyU3ViLCB1c2VyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yXzogYW55KSB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAoZXJyb3JfLmNvZGUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJJbnZhbGlkUGFzc3dvcmRFeGNlcHRpb25cIjpcclxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IFwiYXV0aC5lcnJvci53cm9uZ19wYXNzd29yZFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcIlVzZXJOb3RDb25maXJtZWRFeGNlcHRpb25cIjpcclxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IFwiYXV0aC5lcnJvci51c2VyX25vdF9jb25maXJtZWRcIjtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJJbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBcImF1dGguZXJyb3IuaW52YWxpZF9wYXJhbWV0ZXJcIjtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBlcnJvcl8ubWVzc2FnZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgQVdTIFNpZ24gVVAgZXJyb3IgOiAke2Vycm9yfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNyZWF0ZVByb2ZpbGUoXHJcbiAgICAgICAgYXdzVXNlcklEOiBzdHJpbmcsXHJcbiAgICAgICAgdTogQ3JlYXRlVXNlcixcclxuICAgICk6IFByb21pc2U8UHJvZmlsZT4ge1xyXG4gICAgICAgIGNvbnN0IHByb2ZpbGUgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmNyZWF0ZVByb2ZpbGUoe1xyXG4gICAgICAgICAgICB1c2VySUQ6IGF3c1VzZXJJRCxcclxuICAgICAgICAgICAgbWV0YWRhdGE6IEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgIGVtYWlsOiB1LmVtYWlsLFxyXG4gICAgICAgICAgICAgICAgcGhvbmU6IHUucGhvbmUsXHJcbiAgICAgICAgICAgICAgICBsYXN0TmFtZTogdS5sYXN0TmFtZSxcclxuICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogdS5maXJzdE5hbWUsXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBzdGF0dXM6IFByb2ZpbGVTdGF0dXMuV0FJVElOR19GT1JfQUNUSVZBVElPTixcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcHJvZmlsZTtcclxuICAgIH1cclxuXHJcbiAgICBjdXJyZW50T3JnYW5pc2F0aW9uKHNwYWNlSUQ6IHN0cmluZyA9IG51bGwpOiBPcmdhbmlzYXRpb24ge1xyXG4gICAgICAgIGlmICh0aGlzLmN1KSB7XHJcbiAgICAgICAgICAgIGlmICghc3BhY2VJRCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1pc3Npb25zWzBdLm9yZ2FuaXNhdGlvbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TWlzc2lvbihzcGFjZUlEKS5vcmdhbmlzYXRpb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGN1cnJlbnQoXHJcbiAgICAgICAgdXNlcixcclxuICAgICAgICBmYXN0Q29ubmVjdDogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgKTogUHJvbWlzZTxQcm9maWxlRW50aXR5IHwgbnVsbD4ge1xyXG4gICAgICAgIGlmICghdGhpcy5jdSAmJiAhdGhpcy51cGRhdGluZykge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0aW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jdSA9IGF3YWl0IHRoaXMudXNlckZyb21BV1NJRCh1c2VyLnVzZXJuYW1lKTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmN1ICYmIHVzZXIuYXR0cmlidXRlcy5lbWFpbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgICAgICAgICAgYE5vIHByb2ZpbGUgZm9yIHVzZXJJRCDwn5SqICR7dXNlci5hdHRyaWJ1dGVzLmVtYWlsfWAsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgLy8gVGhlcmUncyBubyBwcm9maWxlcywgcHJvZmlsZXMuaXRlbXMubGVuZ3RoID09PSAwXHJcbiAgICAgICAgICAgICAgICAvLyBJdCdzIG1heWJlIHRoZSDwn6SuIGNhc2Ugd2hlcmUgdGhlIHByb2ZpbGUgaGFzIGJlZW4gc2F2ZWQgd2l0aCBhbiBlbWFpbFxyXG4gICAgICAgICAgICAgICAgLy8gaW5zdGVhZCBvZiBhbiBoYXNoZWQgaWRcclxuICAgICAgICAgICAgICAgIC8vIElmIGZvdW5kLCB3ZSBuZWVkIHRvIHJlcGxhY2UgdGhlIGlkIGluIGJvdGggdGhlIFByb2ZpbGVcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVtYWlsUHJvZmlsZSA9IGF3YWl0IHRoaXMudXNlckZyb21BV1NJRChcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmF0dHJpYnV0ZXMuZW1haWwsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVtYWlsUHJvZmlsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBg8J+RjyBkb2luZyB0aGUgc3BhY2VoaXAgcmV2ZXJzYWwgZW1haWwgb24gJHt1c2VyLmF0dHJpYnV0ZXMuZW1haWx9YCxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3UgPSBhd2FpdCB0aGlzLnVzZXJGcm9tQVdTSUQodXNlci51c2VybmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCF0aGlzLmN1KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBBdXRoLnNpZ25PdXQoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IG1pc3Npb25zID0gYXdhaXQgdGhpcy5taXNzaW9uU2VydmljZS5pbnN0YW50TWlzc2lvbnNPZkN1cnJlbnQoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1LmlkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1pc3Npb25zID0gbWlzc2lvbnM7XHJcbiAgICAgICAgICAgIGxldCBva1RvTG9naW4gPSB0cnVlO1xyXG4gICAgICAgICAgICBpZiAoIWZhc3RDb25uZWN0ICYmICF0aGlzLmhhc01hbmFnZXJSb2xlSW5BbnlNaXNzaW9uKCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNoZWNrIGFjY2VzcyB0b2tlbiBpZiBub3QgRmFzdCBjb25uZWN0IChmYXN0IGNvbm5lY3QgaXMgZm9yIHRoZSBndWVzdCBjb25uZWN0aW9uIHZpYSBsaW5rKC9yZWRpcmVjdD91c2VyPSkpXHJcbiAgICAgICAgICAgICAgICAvLyBjaGVja3MgdmlzaXRvcnMobXVzZXVtIG9yIG5vdCksIG9jY3VwYW50cywgc2VydmljZVxyXG4gICAgICAgICAgICAgICAgb2tUb0xvZ2luID0gYXdhaXQgdGhpcy5jaGVja0FjY2Vzc1Rva2VuKFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZXIuc2lnbkluVXNlclNlc3Npb24uYWNjZXNzVG9rZW4uand0VG9rZW4sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghb2tUb0xvZ2luKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE1pc3Npb25zID0gW107XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBBdXRoLnNpZ25PdXQoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UudXBkYXRlUHJvZmlsZSh7XHJcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5jdS5pZCxcclxuICAgICAgICAgICAgICAgIGxhc3RDb25uZWN0ZWRBdDogRGF0ZS5ub3coKSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmICghbWlzc2lvbnMgJiYgdGhpcy5sb2NhdGlvbi5wYXRoKCkgIT09IFwiL25vLW1pc3Npb25cIikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvbm8tbWlzc2lvblwiXSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInVzZXIgaXMgY2hhbmdlZCBlbWl0dGluZ1wiKTtcclxuICAgICAgICAgICAgdGhpcy5pc0NoYW5nZWQubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5jdTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1c2VyRnJvbUFXU0lEKHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxQcm9maWxlRW50aXR5IHwgbnVsbD4ge1xyXG4gICAgICAgIGNvbnN0IHByb2ZpbGUgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFByb2ZpbGVGcm9tQVdTSUQodXNlcklkKTtcclxuICAgICAgICBpZiAocHJvZmlsZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb2ZpbGVFbnRpdHkocHJvZmlsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVzZXJGcm9tVXNlcklEKHVzZXJJRDogc3RyaW5nKTogUHJvbWlzZTxQcm9maWxlRW50aXR5IHwgbnVsbD4ge1xyXG4gICAgICAgIGNvbnN0IHByb2ZpbGUgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFByb2ZpbGUodXNlcklEKTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb2ZpbGVFbnRpdHkocHJvZmlsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY3VycmVudE1pc3Npb24oc3BhY2VJRDogc3RyaW5nKTogTWlzc2lvbiB7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbiA9IHRoaXMuZ2V0TWlzc2lvbkZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIHJldHVybiBtaXNzaW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTWFuYWdlcihzcGFjZUlEOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBtaXNzaW9uID0gdGhpcy5nZXRNaXNzaW9uRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgaWYgKG1pc3Npb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFuYWdlcnMuaW5jbHVkZXMobWlzc2lvbi5yb2xlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlzU2VydmljZShzcGFjZUlEOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBtaXNzaW9uID0gdGhpcy5nZXRNaXNzaW9uRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgaWYgKG1pc3Npb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1pc3Npb24ucm9sZSA9PT0gUm9sZVN0YXR1cy5TRVJWSUNFO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaXNBZG1pbihzcGFjZUlEOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBtaXNzaW9uID0gdGhpcy5nZXRNaXNzaW9uRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgaWYgKG1pc3Npb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1pc3Npb24ucm9sZSA9PT0gUm9sZVN0YXR1cy5BRE1JTjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlzU21hcnRlclBsYW4oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHNwTWlzc2lvbnMgPSB0aGlzLmN1cnJlbnRNaXNzaW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChtKSA9PlxyXG4gICAgICAgICAgICAgICAgbS5vcmdhbmlzYXRpb25JRCA9PT0gXCI2ZTI4MjAxZi00Njc5LTRjMjktOWQyZC04YTMyNWY1N2NlZTlcIiAmJlxyXG4gICAgICAgICAgICAgICAgdGhpcy5tYW5hZ2Vycy5pbmNsdWRlcyhtLnJvbGUpLFxyXG4gICAgICAgICk7IC8vIElEIG9mIFNtYXJ0ZXJQbGFuXHJcbiAgICAgICAgcmV0dXJuIHNwTWlzc2lvbnMubGVuZ3RoID4gMDtcclxuICAgIH1cclxuXHJcbiAgICBpc1NQQWRtaW4oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHNwTWlzc2lvbnMgPSB0aGlzLmN1cnJlbnRNaXNzaW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChtKSA9PlxyXG4gICAgICAgICAgICAgICAgbS5vcmdhbmlzYXRpb25JRCA9PT0gXCI2ZTI4MjAxZi00Njc5LTRjMjktOWQyZC04YTMyNWY1N2NlZTlcIiAmJlxyXG4gICAgICAgICAgICAgICAgbS5yb2xlID09PSBSb2xlU3RhdHVzLkFETUlOLFxyXG4gICAgICAgICk7IC8vIElEIG9mIFNtYXJ0ZXJQbGFuXHJcbiAgICAgICAgcmV0dXJuIHNwTWlzc2lvbnMubGVuZ3RoID4gMDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRNaXNzaW9uRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogTWlzc2lvbiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1pc3Npb25zLmZpbmQoKG0pID0+IG0uc3BhY2VJRCA9PT0gc3BhY2VJRCk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFzTWFuYWdlclJvbGVJbkFueU1pc3Npb24oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRNaXNzaW9ucy5zb21lKChtaXMpID0+XHJcbiAgICAgICAgICAgIHRoaXMubWFuYWdlcnMuaW5jbHVkZXMobWlzLnJvbGUpLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFzU2VydmljZVJvbGVJbkFueU1pc3Npb24oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRNaXNzaW9ucy5zb21lKFxyXG4gICAgICAgICAgICAobWlzKSA9PiBtaXMucm9sZSA9PT0gUm9sZVN0YXR1cy5TRVJWSUNFLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFzQWRtaW5Sb2xlSW5BbnlNaXNzaW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TWlzc2lvbnMuc29tZShcclxuICAgICAgICAgICAgKG1pcykgPT4gbWlzLnJvbGUgPT09IFJvbGVTdGF0dXMuQURNSU4sXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjcmVhdGVPclVwZGF0ZU1pc3Npb25Gb3JPcmdXaXRoUHJvcGVydHkoXHJcbiAgICAgICAgbWlzc2lvbklucHV0OiBNaXNzaW9uLFxyXG4gICAgICAgIG9yZ0lEOiBzdHJpbmcsXHJcbiAgICAgICAgY3JlYXRlOiBib29sZWFuID0gdHJ1ZSxcclxuICAgICk6IFByb21pc2U8TWlzc2lvbj4ge1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb24gPSBhd2FpdCAoY3JlYXRlXHJcbiAgICAgICAgICAgID8gdGhpcy5taXNzaW9uU2VydmljZS5jcmVhdGUobWlzc2lvbklucHV0KVxyXG4gICAgICAgICAgICA6IHRoaXMubWlzc2lvblNlcnZpY2UudXBkYXRlKG1pc3Npb25JbnB1dCkpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5tYW5hZ2Vycy5pbmNsdWRlcyhtaXNzaW9uLnJvbGUpICYmIG1pc3Npb24uc3BhY2VJRCkge1xyXG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID1cclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvcGVydHlTZXJ2aWNlLmdldFByb3BlcnRpZXNGb3JPcmdhbmlzYXRpb24ob3JnSUQpO1xyXG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eVNwYWNlSURzID0gcHJvcGVydGllcy5tYXAoXHJcbiAgICAgICAgICAgICAgICAocHJvcGVydHlfKSA9PiBwcm9wZXJ0eV8uc3BhY2VJRCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKHByb3BlcnR5U3BhY2VJRHMuaW5jbHVkZXMobWlzc2lvbi5zcGFjZUlEKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1pc3Npb247XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gd2UgZGVsZWdhdGUgdGhlIHJpZ2h0cyBvZiB0aGUgc3BhY2VcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9wZXJ0eVNlcnZpY2UuY3JlYXRlUHJvcGVydHkoe1xyXG4gICAgICAgICAgICAgICAgc3BhY2VJRDogbWlzc2lvbi5zcGFjZUlELFxyXG4gICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uSUQ6IG9yZ0lELFxyXG4gICAgICAgICAgICAgICAgdHlwZTogUHJvcGVydHlUeXBlLlNIQVJFRCxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtaXNzaW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNvZnREZWxldGVVc2VyKHVzZXJJRDogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbnMgPSBhd2FpdCB0aGlzLm1pc3Npb25TZXJ2aWNlLmdldE1pc3Npb25zRnJvbVVzZXJJRCh1c2VySUQpO1xyXG4gICAgICAgIGlmIChtaXNzaW9ucy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS51cGRhdGVQcm9maWxlKHsgaWQ6IHVzZXJJRCwgZGVsZXRlZEF0OiBEYXRlLm5vdygpIH0pO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIlByb2ZpbGUgc29mdCBkZWxldGVkXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIGlmIHRoZSBQcm9maWxlIChieSBpZCkgY2FuIGJlIHJlbW92ZWQgY29tcGxldGVseSBmcm9tIHRoZSBEQiAobm8gbWlzc2lvbnMgaW4gdGhlIERCKVxyXG4gICAgICogQHBhcmFtIHByb2ZpbGVJRFxyXG4gICAgICogQHJldHVybnMgYm9vbGVhblxyXG4gICAgICovXHJcbiAgICBhc3luYyBjYW5IYXJkRGVsZXRlVXNlcihwcm9maWxlSUQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25zID0gKGF3YWl0IHRoaXMubWlzc2lvblNlcnZpY2UuZ2V0TWlzc2lvbnNGcm9tVXNlcklEKHByb2ZpbGVJRCkpO1xyXG4gICAgICAgIHJldHVybiBtaXNzaW9ucy5sZW5ndGggPT09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaGFyZERlbGV0ZVVzZXIodXNlcklEOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBkZWxldGVkID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5kZWxldGVQcm9maWxlKHVzZXJJRCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJQcm9maWxlIGhhcmQgZGVsZXRlZFwiKTtcclxuICAgICAgICByZXR1cm4gZGVsZXRlZDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRNYW5hZ2VyTWlzc2lvbnMoKTogTWlzc2lvbltdIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1pc3Npb25zLmZpbHRlcigobWlzKSA9PlxyXG4gICAgICAgICAgICB0aGlzLm1hbmFnZXJzLmluY2x1ZGVzKG1pcy5yb2xlKSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEF2YWxhYmxlTGV2ZWxzRm9yQ3VycmVudFVzZXIoKTogTGV2ZWxTdGF0dXNbXSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm4gW0xldmVsU3RhdHVzLk1JTklNVU1dO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBsZXZlbHMgPSBlbnVtVG9BcnJheShMZXZlbFN0YXR1cyk7XHJcbiAgICAgICAgY29uc3QgaGlnaGVzdExldmVsID0gZ2V0SGlnaGVzdExldmVsRm9yTWlzc2lvbnModGhpcy5jdXJyZW50TWlzc2lvbnMpO1xyXG5cclxuICAgICAgICByZXR1cm4gbGV2ZWxzLmZpbHRlcigobGV2ZWwpID0+XHJcbiAgICAgICAgICAgIGdldExldmVsc0JlbG93KGhpZ2hlc3RMZXZlbCkuaW5jbHVkZXMobGV2ZWwpLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QXZhaWxhYmxlUm9sZXNGb3JDdXJyZW50VXNlcigpOiBSb2xlU3RhdHVzW10ge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtSb2xlU3RhdHVzLlZJU0lUT1JdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByb2xlcyA9IGVudW1Ub0FycmF5KFJvbGVTdGF0dXMpO1xyXG4gICAgICAgIGNvbnN0IGhpZ2hlc3RSb2xlID0gZ2V0SGlnaGVzdFJvbGVGb3JNaXNzaW9ucyh0aGlzLmN1cnJlbnRNaXNzaW9ucyk7XHJcbiAgICAgICAgcmV0dXJuIHJvbGVzLmZpbHRlcigocm9sZSkgPT5cclxuICAgICAgICAgICAgZ2V0Um9sZXNCZWxvd0Zvck1hbmFnZXIoaGlnaGVzdFJvbGUpLmluY2x1ZGVzKHJvbGUpLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFRlc3QgaWYgdGhlIHVzZXIgaGF2ZSB0aGUgcm9sZSBnaXZlbiBpbiBwYXJhbWV0ZXIgOiBcInJvbGVTdGF0dXNcIiAqL1xyXG4gICAgaXNSb2xlKHJvbGVTdGF0dXM6IFJvbGVTdGF0dXMpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1pc3Npb25zLnNvbWUoKG0pID0+IG0ucm9sZSA9PT0gcm9sZVN0YXR1cyk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNHdWlkZShzcGFjZUlEOiBzdHJpbmcgPSBudWxsKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHNwYWNlSUQpIHtcclxuICAgICAgICAgICAgY29uc3QgbWlzc2lvbiA9IHRoaXMuZ2V0TWlzc2lvbkZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgICAgICBpZiAobWlzc2lvbikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1pc3Npb24ucm9sZSA9PT0gUm9sZVN0YXR1cy5HVUlERV9NVVNFVU07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNSb2xlKFJvbGVTdGF0dXMuR1VJREVfTVVTRVVNKTtcclxuICAgIH1cclxuXHJcbiAgICBpc011c2V1bVZpc2l0b3Ioc3BhY2VJRDogc3RyaW5nID0gbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChzcGFjZUlEKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLmdldE1pc3Npb25Gb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICAgICAgaWYgKG1pc3Npb24pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBtaXNzaW9uLnJvbGUgPT09IFJvbGVTdGF0dXMuVklTSVRPUl9NVVNFVU07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNSb2xlKFJvbGVTdGF0dXMuVklTSVRPUl9NVVNFVU0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlzT2NjdXBhbnQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNSb2xlKFJvbGVTdGF0dXMuT0NDVVBBTlQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzVmlzaXRvcihzcGFjZUlEOiBzdHJpbmcgPSBudWxsKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHNwYWNlSUQpIHtcclxuICAgICAgICAgICAgY29uc3QgbWlzc2lvbiA9IHRoaXMuZ2V0TWlzc2lvbkZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgICAgICBpZiAobWlzc2lvbikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1pc3Npb24ucm9sZSA9PT0gUm9sZVN0YXR1cy5WSVNJVE9SO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmlzUm9sZShSb2xlU3RhdHVzLlZJU0lUT1IpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTXVzZXVtVXNlcihzcGFjZUlEOiBzdHJpbmcgPSBudWxsKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNHdWlkZShzcGFjZUlEKSB8fCB0aGlzLmlzTXVzZXVtVmlzaXRvcihzcGFjZUlEKTtcclxuICAgIH1cclxuXHJcbiAgICBoYXNPbmx5TXVzZXVtUm9sZSgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1pc3Npb25zLmV2ZXJ5KFxyXG4gICAgICAgICAgICAgICAgKG0pID0+XHJcbiAgICAgICAgICAgICAgICAgICAgbS5yb2xlID09PSBSb2xlU3RhdHVzLkdVSURFX01VU0VVTSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIG0ucm9sZSA9PT0gUm9sZVN0YXR1cy5WSVNJVE9SX01VU0VVTSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHByb2ZpbGVGb3JNYWlsKG1haWw6IHN0cmluZyk6IFByb21pc2U8UHJvZmlsZT4ge1xyXG4gICAgICAgIGNvbnN0IHVzZXJzV2l0aE1haWwgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFVzZXJzRm9yTWFpbChtYWlsKTtcclxuICAgICAgICByZXR1cm4gdXNlcnNXaXRoTWFpbC5sZW5ndGggPiAwID8gdXNlcnNXaXRoTWFpbFswXSA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY3VycmVudE9yZGVyZWRPcmdMaXN0KCk6IE9yZ2FuaXNhdGlvbltdIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgb3JkZXJlZE9yZ0xpc3QgPSB0aGlzLmN1cnJlbnRNaXNzaW9ucy5tYXAoXHJcbiAgICAgICAgICAgIChtaXMpID0+IG1pcy5vcmRlcmVkT3JnYW5pc2F0aW9uLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIGZpbHRlclVuaXF1ZUFycmF5QnlJRChvcmRlcmVkT3JnTGlzdCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXNlckhhc0FjY2Vzc1RvQWxsWm9uZXNJblNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25zRm9yU3BhY2UgPSB0aGlzLmN1cnJlbnRNaXNzaW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChtaXMpID0+IG1pcy5zcGFjZUlEID09PSBzcGFjZUlELFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIG1pc3Npb25zRm9yU3BhY2Uuc29tZShcclxuICAgICAgICAgICAgKG1pc3Npb24pID0+XHJcbiAgICAgICAgICAgICAgICAhbWlzc2lvbi56b25lSUQgfHwgKG1pc3Npb24uem9uZSAmJiAhbWlzc2lvbi56b25lLnBhcmVudElEKSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxvZ291dEN1cnJlbnRBbmRTaWduT3V0QXV0aCgpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLnVwZGF0ZVByb2ZpbGUoe1xyXG4gICAgICAgICAgICBpZDogdGhpcy5jdS5pZCxcclxuICAgICAgICAgICAgdG9rZW46IG51bGwsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jdSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TWlzc2lvbnMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuaXNDaGFuZ2VkLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIGF3YWl0IEF1dGguc2lnbk91dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxvZ291dEN1cnJlbnRXaWh0b3V0QXV0aCgpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLnVwZGF0ZVByb2ZpbGUoe1xyXG4gICAgICAgICAgICBpZDogdGhpcy5jdS5pZCxcclxuICAgICAgICAgICAgdG9rZW46IG51bGwsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jdSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TWlzc2lvbnMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuaXNDaGFuZ2VkLm5leHQoZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNoZWNrQWNjZXNzVG9rZW4oand0VG9rZW46IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGVUaW1lLmxvY2FsKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuY3UudG9rZW4gJiYgdGhpcy5jdS50b2tlbkV4cGlyZWRBdCA+IG5vdy50b01pbGxpcygpKSB7XHJcbiAgICAgICAgICAgIC8vIGNoZWNrIHRva2VuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmN1LnRva2VuID09PSBqd3RUb2tlbikge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJzYW1lIGF3cyB0b2tlblwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGFsZXJ0KHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJhdXRoLmVycm9yLmFjdGl2ZVRva2VuXCIpKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLnVwZGF0ZVByb2ZpbGUoe1xyXG4gICAgICAgICAgICBpZDogdGhpcy5jdS5pZCxcclxuICAgICAgICAgICAgdG9rZW5FeHBpcmVkQXQ6IG5vdy5wbHVzKHsgbWludXRlczogNSB9KS50b01pbGxpcygpLFxyXG4gICAgICAgICAgICB0b2tlbjogand0VG9rZW4sXHJcbiAgICAgICAgICAgIHN0YXR1czogUHJvZmlsZVN0YXR1cy5BQ1RJVkUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2xlYXJVc2VyVG9rZW4oaWQpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLnVwZGF0ZVByb2ZpbGUoe1xyXG4gICAgICAgICAgICBpZDogaWQsXHJcbiAgICAgICAgICAgIHRva2VuOiBudWxsLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUN1cnJlbnRVc2VyKHByb2ZpbGU6IFByb2ZpbGUpIHtcclxuICAgICAgICB0aGlzLmN1ID0gbmV3IFByb2ZpbGVFbnRpdHkocHJvZmlsZSk7XHJcbiAgICAgICAgdGhpcy5pc0NoYW5nZWQubmV4dCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTcE1vZHVsZSgpOiBTcE1vZHVsZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3BNb2R1bGU7XHJcbiAgICB9XHJcbn1cclxuIl19
512
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy91c2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkvQixPQUFPLEVBQUUsV0FBVyxFQUFrQyxhQUFhLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQVksTUFBTSxrQkFBa0IsQ0FBQztBQUNqSixPQUFPLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLDBCQUEwQixFQUFFLHlCQUF5QixFQUFFLGNBQWMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSXhLLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7O0FBVW5DOztHQUVHO0FBSUgsTUFBTSxPQUFPLGVBQWU7SUF3Qlo7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUE1QlosU0FBUyxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO0lBRXJELFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFakIsUUFBUSxHQUFHO1FBQ1AsVUFBVSxDQUFDLEtBQUs7UUFDaEIsVUFBVSxDQUFDLE9BQU87UUFDbEIsVUFBVSxDQUFDLEtBQUs7UUFDaEIsVUFBVSxDQUFDLFlBQVk7S0FDMUIsQ0FBQztJQUVGLGVBQWUsQ0FBWTtJQUUzQixrQkFBa0IsQ0FBVTtJQUU1QixrQkFBa0IsQ0FBVTtJQUU1QixFQUFFLEdBQWtCLElBQUksQ0FBQztJQUV6QixRQUFRLENBQVc7SUFFbkIsWUFDWSxjQUE4QixFQUM5QixjQUE4QixF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RkFFVCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBZ0NRLE1BQU07MkJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IExldmVsU3RhdHVzLCBNaXNzaW9uLCBPcmdhbmlzYXRpb24sIFByb2ZpbGUsIFByb2ZpbGVFbnRpdHksIFByb2ZpbGVTdGF0dXMsIFByb3BlcnR5VHlwZSwgUm9sZVN0YXR1cywgU3BNb2R1bGUgfSBmcm9tIFwiLi4vdHlwZXMuc2VydmljZVwiO1xuaW1wb3J0IHsgZW51bVRvQXJyYXksIGZpbHRlclVuaXF1ZUFycmF5QnlJRCwgZ2V0SGlnaGVzdExldmVsRm9yTWlzc2lvbnMsIGdldEhpZ2hlc3RSb2xlRm9yTWlzc2lvbnMsIGdldExldmVsc0JlbG93LCBnZXRSb2xlc0JlbG93Rm9yTWFuYWdlciB9IGZyb20gXCIuLi9oZWxwZXJzLnNlcnZpY2VcIjtcbmltcG9ydCB7IFByb2ZpbGVTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL3Byb2ZpbGUuc2VydmljZVwiO1xuaW1wb3J0IHsgTWlzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvbWlzc2lvbi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBQcm9wZXJ0eVNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvcHJvcGVydHkuc2VydmljZVwiO1xuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tIFwibHV4b25cIjtcbmltcG9ydCB7IEF1dGggfSBmcm9tIFwiYXdzLWFtcGxpZnlcIjtcblxuaW50ZXJmYWNlIENyZWF0ZVVzZXIge1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgcGhvbmU/OiBzdHJpbmc7XG4gICAgbGFzdE5hbWU6IHN0cmluZztcbiAgICBmaXJzdE5hbWU6IHN0cmluZztcbiAgICBwYXNzd29yZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBVc2VyU2VydmljZSBoYW5kbGVzIHVzZXIncyBsaWZlY3ljbGUsIGZyb20gY3JlYXRpb24gdG8gZGVsZXRpb25cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBCYXNlVXNlclNlcnZpY2Uge1xuXG4gICAgaXNDaGFuZ2VkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIHVwZGF0aW5nID0gZmFsc2U7XG5cbiAgICBtYW5hZ2VycyA9IFtcbiAgICAgICAgUm9sZVN0YXR1cy5BRE1JTixcbiAgICAgICAgUm9sZVN0YXR1cy5NQU5BR0VSLFxuICAgICAgICBSb2xlU3RhdHVzLk9XTkVSLFxuICAgICAgICBSb2xlU3RhdHVzLkdVSURFX01VU0VVTSxcbiAgICBdO1xuXG4gICAgY3VycmVudE1pc3Npb25zOiBNaXNzaW9uW107XG5cbiAgICBsYXN0RXhwaXJlZE1pc3Npb246IE1pc3Npb247XG5cbiAgICBuZXh0TWlzc2lvblRvU3RhcnQ6IE1pc3Npb247XG5cbiAgICBjdTogUHJvZmlsZUVudGl0eSA9IG51bGw7XG5cbiAgICBzcE1vZHVsZTogU3BNb2R1bGU7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBwcm9maWxlU2VydmljZTogUHJvZmlsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbWlzc2lvblNlcnZpY2U6IE1pc3Npb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHByb3BlcnR5U2VydmljZTogUHJvcGVydHlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoJ1NQTW9kdWxlJykgc3BNb2R1bGVJbmplY3RlZDogU3BNb2R1bGUsXG4gICAgKSB7XG4gICAgICAgIC8vIHRoaXMuY2hlY2tDb25uZWN0ZWRBV1NVc2VyKCk7XG4gICAgICAgIHRoaXMubWlzc2lvblNlcnZpY2UuY3VycmVudE1pc3Npb25zVXBkYXRlZC5zdWJzY3JpYmUoYXN5bmMgKGRhdGEpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1pc3Npb25zID1cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm1pc3Npb25TZXJ2aWNlLmluc3RhbnRNaXNzaW9uc09mQ3VycmVudCh0aGlzLmN1LmlkKTtcbiAgICAgICAgICAgIHRoaXMuaXNDaGFuZ2VkLm5leHQodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNwTW9kdWxlID0gc3BNb2R1bGVJbmplY3RlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgQVdTIHVzZXIgaXMgY29ubmVjdGVkIGFuZCBhc3NpZ25nIGl0IHRvIGN1cnJlbnQgdXNlciAodGhpcy5jdSlcbiAgICAqKi9cbiAgICBhc3luYyBjaGVja0Nvbm5lY3RlZEFXU1VzZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5jdSkge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJjaGVjayBBV1MgdXNlclwiKTtcbiAgICAgICAgICAgIGxldCBjYXUgPSBudWxsO1xuICAgICAgICAgICAgbGV0IHVzZXIgPSBudWxsO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudXBkYXRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgY2F1ID0gYXdhaXQgQXV0aC5jdXJyZW50QXV0aGVudGljYXRlZFVzZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJjb25uZWN0ZWRcIiwgY2F1KTtcbiAgICAgICAgICAgICAgICAgICAgdXNlciA9IGF3YWl0IHRoaXMuY3VycmVudChjYXUpO1xuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImN1cnJlbnQgb2YgdXNlclNlcnZpY2VcIiwgdXNlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cbiAgICAgICAgICAgIGlmICghdXNlciAmJiAhdGhpcy51cGRhdGluZykge1xuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwibm8gdXNlciBpbiBjaGVjayBjb25uZWN0ZWQgYXdzIHVzZXJcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiYXV0aFwiXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjcmVhdGVVc2VyIHNwYXducyBhIG5ldyBVc2VyLCBhbG9uZyB3aXRoOlxuICAgICAqIC0gYSBwcm9wZXIgQVdTQ29nbml0byBzaWdudXBcbiAgICAgKiAtIGEgUHJvZmlsZSBlbnRyeSBob2xkaW5nIHRoZSBBV1NDb2duaXRvIElEXG4gICAgICogLSBhIE1pc3Npb24gZW50cnkgaG9sZGluZyB0aGUgT3JnYW5pc2F0aW9uIElEXG4gICAgICpcbiAgICAgKiBAc2VlIDE3NFxuICAgICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmFtcGxpZnkuYXdzL2xpYi9hdXRoL2VtYWlscGFzc3dvcmQvcS9wbGF0Zm9ybS9qcyNzaWduLXVwXG4gICAgICogQHRvZG8gd29uZGVyIGlmIHdlIGNhbiBtYXNoIHRvZ2V0aGVyIFByb2ZpbGUsIE1pc3Npb24gYW5kIFVzZXIgZW50cmllc1xuICAgICAqIEBwYXJhbSB1IFVzZXIgdG8gYmUgY3JlYXRlZFxuICAgICAqL1xuICAgIGFzeW5jIGNyZWF0ZVVzZXJBV1NhbmRQcm9maWxlKFxuICAgICAgICB1OiB7XG4gICAgICAgICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgICAgICAgcGhvbmU6IHN0cmluZztcbiAgICAgICAgICAgIGxhc3ROYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICBmaXJzdE5hbWU6IHN0cmluZztcbiAgICAgICAgICAgIHBhc3N3b3JkPzogc3RyaW5nO1xuICAgICAgICB9LFxuICAgICAgICBwcmV2YWxpZGF0ZWQ6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICApOiBQcm9taXNlPFByb2ZpbGU+IHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHtcbiAgICAgICAgICAgIGVtYWlsOiB1LmVtYWlsLnRyaW0oKSxcbiAgICAgICAgICAgIGdpdmVuX25hbWU6IHUuZmlyc3ROYW1lLFxuICAgICAgICAgICAgZmFtaWx5X25hbWU6IHUubGFzdE5hbWUsXG4gICAgICAgICAgICB6b25laW5mbzogXCJmclwiLCAvLyBAdG9kbyBkZWFsIHdpdGggem9uZWluZm8gYW5kIGxvY2FsZVxuICAgICAgICAgICAgbG9jYWxlOiBcImZyXCIsXG4gICAgICAgICAgICBcImN1c3RvbTpwcmV2YWxpZGF0ZWRcIjogXCJmYWxzZVwiLFxuICAgICAgICB9O1xuICAgICAgICBpZiAocHJldmFsaWRhdGVkKSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzW1wiY3VzdG9tOnByZXZhbGlkYXRlZFwiXSA9IFwidHJ1ZVwiO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFXU0NvZ25pdG9cbiAgICAgICAgY29uc3QgcGFzc3dvcmQgPSB1LnBhc3N3b3JkID8gdS5wYXNzd29yZCA6IFwidGVtcG9yYXJ5cFwiO1xuICAgICAgICBsZXQgZXJyb3I7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB7IHVzZXJTdWIgfSA9IGF3YWl0IEF1dGguc2lnblVwKHtcbiAgICAgICAgICAgICAgICB1c2VybmFtZTogdS5lbWFpbCwgLy8gdXNlcm5hbWUgc2hvdWxkIGJlIGFuIGVtYWlsIHRoZXkgc2F5XG4gICAgICAgICAgICAgICAgcGFzc3dvcmQsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICBjbGllbnRNZXRhZGF0YToge1xuICAgICAgICAgICAgICAgICAgICBwaG9uZTogdS5waG9uZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAodXNlclN1Yikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVByb2ZpbGUodXNlclN1YiwgdSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yXzogYW55KSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGVycm9yXy5jb2RlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcIkludmFsaWRQYXNzd29yZEV4Y2VwdGlvblwiOlxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IFwiYXV0aC5lcnJvci53cm9uZ19wYXNzd29yZFwiO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiVXNlck5vdENvbmZpcm1lZEV4Y2VwdGlvblwiOlxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IFwiYXV0aC5lcnJvci51c2VyX25vdF9jb25maXJtZWRcIjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIkludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb25cIjpcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBcImF1dGguZXJyb3IuaW52YWxpZF9wYXJhbWV0ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBlcnJvcl8ubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBV1MgU2lnbiBVUCBlcnJvciA6ICR7ZXJyb3J9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAtIENyZWF0ZXMgQVdTIHVzZXIgaW4gQ29nbml0byBmb3IgSG90ZWwgVXNlciBQb29sIFNjaGVtYSAob25seSBlbWFpbCBpcyByZXF1aXJlZClcbiAgICAgKiAtIENyZWF0ZXMgUHJvZmlsZSBpbiBEeW5hbW9EQlxuICAgICAqXG4gICAgICogQHBhcmFtIHUgVXNlciB0byBiZSBjcmVhdGVkXG4gICAgICovXG4gICAgYXN5bmMgY3JlYXRlSG90ZWxVc2VyQVdTYW5kUHJvZmlsZShcbiAgICAgICAgdXNlcjoge1xuICAgICAgICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgICAgICAgIGxhc3ROYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICBmaXJzdE5hbWU6IHN0cmluZztcbiAgICAgICAgfSxcbiAgICApOiBQcm9taXNlPFByb2ZpbGU+IHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHtcbiAgICAgICAgICAgIGVtYWlsOiB1c2VyLmVtYWlsLnRyaW0oKVxuICAgICAgICB9O1xuICAgICAgICAvLyBBV1NDb2duaXRvXG4gICAgICAgIGNvbnN0IHBhc3N3b3JkID0gXCJ0ZW1wb3JhcnlwXCI7XG4gICAgICAgIGxldCBlcnJvcjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHsgdXNlclN1YiB9ID0gYXdhaXQgQXV0aC5zaWduVXAoe1xuICAgICAgICAgICAgICAgIHVzZXJuYW1lOiB1c2VyLmVtYWlsLnRyaW0oKSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZCxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAodXNlclN1Yikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVByb2ZpbGUodXNlclN1YiwgdXNlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yXzogYW55KSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGVycm9yXy5jb2RlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcIkludmFsaWRQYXNzd29yZEV4Y2VwdGlvblwiOlxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IFwiYXV0aC5lcnJvci53cm9uZ19wYXNzd29yZFwiO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiVXNlck5vdENvbmZpcm1lZEV4Y2VwdGlvblwiOlxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IFwiYXV0aC5lcnJvci51c2VyX25vdF9jb25maXJtZWRcIjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIkludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb25cIjpcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBcImF1dGguZXJyb3IuaW52YWxpZF9wYXJhbWV0ZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBlcnJvcl8ubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBV1MgU2lnbiBVUCBlcnJvciA6ICR7ZXJyb3J9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICB9XG5cbiAgICBhc3luYyBjcmVhdGVQcm9maWxlKFxuICAgICAgICBhd3NVc2VySUQ6IHN0cmluZyxcbiAgICAgICAgdTogQ3JlYXRlVXNlcixcbiAgICApOiBQcm9taXNlPFByb2ZpbGU+IHtcbiAgICAgICAgY29uc3QgcHJvZmlsZSA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuY3JlYXRlUHJvZmlsZSh7XG4gICAgICAgICAgICB1c2VySUQ6IGF3c1VzZXJJRCxcbiAgICAgICAgICAgIG1ldGFkYXRhOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW1haWw6IHUuZW1haWwsXG4gICAgICAgICAgICAgICAgcGhvbmU6IHUucGhvbmUsXG4gICAgICAgICAgICAgICAgbGFzdE5hbWU6IHUubGFzdE5hbWUsXG4gICAgICAgICAgICAgICAgZmlyc3ROYW1lOiB1LmZpcnN0TmFtZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc3RhdHVzOiBQcm9maWxlU3RhdHVzLldBSVRJTkdfRk9SX0FDVElWQVRJT04sXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcHJvZmlsZTtcbiAgICB9XG5cbiAgICBjdXJyZW50T3JnYW5pc2F0aW9uKHNwYWNlSUQ6IHN0cmluZyA9IG51bGwpOiBPcmdhbmlzYXRpb24ge1xuICAgICAgICBpZiAodGhpcy5jdSkge1xuICAgICAgICAgICAgaWYgKCFzcGFjZUlEKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1pc3Npb25zWzBdLm9yZ2FuaXNhdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRNaXNzaW9uKHNwYWNlSUQpLm9yZ2FuaXNhdGlvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBhc3luYyBjdXJyZW50KFxuICAgICAgICB1c2VyLFxuICAgICAgICBmYXN0Q29ubmVjdDogYm9vbGVhbiA9IGZhbHNlLFxuICAgICk6IFByb21pc2U8UHJvZmlsZUVudGl0eSB8IG51bGw+IHtcbiAgICAgICAgaWYgKCF0aGlzLmN1ICYmICF0aGlzLnVwZGF0aW5nKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY3UgPSBhd2FpdCB0aGlzLnVzZXJGcm9tQVdTSUQodXNlci51c2VybmFtZSk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuY3UgJiYgdXNlci5hdHRyaWJ1dGVzLmVtYWlsKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICAgIGBObyBwcm9maWxlIGZvciB1c2VySUQg8J+UqiAke3VzZXIuYXR0cmlidXRlcy5lbWFpbH1gLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgLy8gVGhlcmUncyBubyBwcm9maWxlcywgcHJvZmlsZXMuaXRlbXMubGVuZ3RoID09PSAwXG4gICAgICAgICAgICAgICAgLy8gSXQncyBtYXliZSB0aGUg8J+kriBjYXNlIHdoZXJlIHRoZSBwcm9maWxlIGhhcyBiZWVuIHNhdmVkIHdpdGggYW4gZW1haWxcbiAgICAgICAgICAgICAgICAvLyBpbnN0ZWFkIG9mIGFuIGhhc2hlZCBpZFxuICAgICAgICAgICAgICAgIC8vIElmIGZvdW5kLCB3ZSBuZWVkIHRvIHJlcGxhY2UgdGhlIGlkIGluIGJvdGggdGhlIFByb2ZpbGVcbiAgICAgICAgICAgICAgICBjb25zdCBlbWFpbFByb2ZpbGUgPSBhd2FpdCB0aGlzLnVzZXJGcm9tQVdTSUQoXG4gICAgICAgICAgICAgICAgICAgIHVzZXIuYXR0cmlidXRlcy5lbWFpbCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChlbWFpbFByb2ZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICAgICAgICBg8J+RjyBkb2luZyB0aGUgc3BhY2VoaXAgcmV2ZXJzYWwgZW1haWwgb24gJHt1c2VyLmF0dHJpYnV0ZXMuZW1haWx9YCxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdSA9IGF3YWl0IHRoaXMudXNlckZyb21BV1NJRCh1c2VyLnVzZXJuYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuY3UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYXdhaXQgQXV0aC5zaWduT3V0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBtaXNzaW9ucyA9IGF3YWl0IHRoaXMubWlzc2lvblNlcnZpY2UuaW5zdGFudE1pc3Npb25zT2ZDdXJyZW50KFxuICAgICAgICAgICAgICAgIHRoaXMuY3UuaWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRNaXNzaW9ucyA9IG1pc3Npb25zO1xuICAgICAgICAgICAgbGV0IG9rVG9Mb2dpbiA9IHRydWU7XG4gICAgICAgICAgICBpZiAoIWZhc3RDb25uZWN0ICYmICF0aGlzLmhhc01hbmFnZXJSb2xlSW5BbnlNaXNzaW9uKCkpIHtcbiAgICAgICAgICAgICAgICAvLyBjaGVjayBhY2Nlc3MgdG9rZW4gaWYgbm90IEZhc3QgY29ubmVjdCAoZmFzdCBjb25uZWN0IGlzIGZvciB0aGUgZ3Vlc3QgY29ubmVjdGlvbiB2aWEgbGluaygvcmVkaXJlY3Q/dXNlcj0pKVxuICAgICAgICAgICAgICAgIC8vIGNoZWNrcyB2aXNpdG9ycyhtdXNldW0gb3Igbm90KSwgb2NjdXBhbnRzLCBzZXJ2aWNlXG4gICAgICAgICAgICAgICAgb2tUb0xvZ2luID0gYXdhaXQgdGhpcy5jaGVja0FjY2Vzc1Rva2VuKFxuICAgICAgICAgICAgICAgICAgICB1c2VyLnNpZ25JblVzZXJTZXNzaW9uLmFjY2Vzc1Rva2VuLmp3dFRva2VuLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW9rVG9Mb2dpbikge1xuICAgICAgICAgICAgICAgIHRoaXMuY3UgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE1pc3Npb25zID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGF3YWl0IEF1dGguc2lnbk91dCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS51cGRhdGVQcm9maWxlKHtcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5jdS5pZCxcbiAgICAgICAgICAgICAgICBsYXN0Q29ubmVjdGVkQXQ6IERhdGUubm93KCksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICghbWlzc2lvbnMgJiYgdGhpcy5sb2NhdGlvbi5wYXRoKCkgIT09IFwiL25vLW1pc3Npb25cIikge1xuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9uby1taXNzaW9uXCJdKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwidXNlciBpcyBjaGFuZ2VkIGVtaXR0aW5nXCIpO1xuICAgICAgICAgICAgdGhpcy5pc0NoYW5nZWQubmV4dCh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jdTtcbiAgICB9XG5cbiAgICBhc3luYyB1c2VyRnJvbUFXU0lEKHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxQcm9maWxlRW50aXR5IHwgbnVsbD4ge1xuICAgICAgICBjb25zdCBwcm9maWxlID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRQcm9maWxlRnJvbUFXU0lEKHVzZXJJZCk7XG4gICAgICAgIGlmIChwcm9maWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb2ZpbGVFbnRpdHkocHJvZmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgYXN5bmMgdXNlckZyb21Vc2VySUQodXNlcklEOiBzdHJpbmcpOiBQcm9taXNlPFByb2ZpbGVFbnRpdHkgfCBudWxsPiB7XG4gICAgICAgIGNvbnN0IHByb2ZpbGUgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFByb2ZpbGUodXNlcklEKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9maWxlRW50aXR5KHByb2ZpbGUpO1xuICAgIH1cblxuICAgIGN1cnJlbnRNaXNzaW9uKHNwYWNlSUQ6IHN0cmluZyk6IE1pc3Npb24ge1xuICAgICAgICBjb25zdCBtaXNzaW9uID0gdGhpcy5nZXRNaXNzaW9uRm9yU3BhY2Uoc3BhY2VJRCk7XG4gICAgICAgIHJldHVybiBtaXNzaW9uO1xuICAgIH1cblxuICAgIGlzTWFuYWdlcihzcGFjZUlEOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgbWlzc2lvbiA9IHRoaXMuZ2V0TWlzc2lvbkZvclNwYWNlKHNwYWNlSUQpO1xuICAgICAgICBpZiAobWlzc2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFuYWdlcnMuaW5jbHVkZXMobWlzc2lvbi5yb2xlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaXNTZXJ2aWNlKHNwYWNlSUQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBtaXNzaW9uID0gdGhpcy5nZXRNaXNzaW9uRm9yU3BhY2Uoc3BhY2VJRCk7XG4gICAgICAgIGlmIChtaXNzaW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gbWlzc2lvbi5yb2xlID09PSBSb2xlU3RhdHVzLlNFUlZJQ0U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlzQWRtaW4oc3BhY2VJRDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLmdldE1pc3Npb25Gb3JTcGFjZShzcGFjZUlEKTtcbiAgICAgICAgaWYgKG1pc3Npb24pIHtcbiAgICAgICAgICAgIHJldHVybiBtaXNzaW9uLnJvbGUgPT09IFJvbGVTdGF0dXMuQURNSU47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlzU21hcnRlclBsYW4oKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzcE1pc3Npb25zID0gdGhpcy5jdXJyZW50TWlzc2lvbnMuZmlsdGVyKFxuICAgICAgICAgICAgKG0pID0+XG4gICAgICAgICAgICAgICAgbS5vcmdhbmlzYXRpb25JRCA9PT0gXCI2ZTI4MjAxZi00Njc5LTRjMjktOWQyZC04YTMyNWY1N2NlZTlcIiAmJlxuICAgICAgICAgICAgICAgIHRoaXMubWFuYWdlcnMuaW5jbHVkZXMobS5yb2xlKSxcbiAgICAgICAgKTsgLy8gSUQgb2YgU21hcnRlclBsYW5cbiAgICAgICAgcmV0dXJuIHNwTWlzc2lvbnMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBpc1NQQWRtaW4oKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzcE1pc3Npb25zID0gdGhpcy5jdXJyZW50TWlzc2lvbnMuZmlsdGVyKFxuICAgICAgICAgICAgKG0pID0+XG4gICAgICAgICAgICAgICAgbS5vcmdhbmlzYXRpb25JRCA9PT0gXCI2ZTI4MjAxZi00Njc5LTRjMjktOWQyZC04YTMyNWY1N2NlZTlcIiAmJlxuICAgICAgICAgICAgICAgIG0ucm9sZSA9PT0gUm9sZVN0YXR1cy5BRE1JTixcbiAgICAgICAgKTsgLy8gSUQgb2YgU21hcnRlclBsYW5cbiAgICAgICAgcmV0dXJuIHNwTWlzc2lvbnMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBnZXRNaXNzaW9uRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogTWlzc2lvbiB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRNaXNzaW9ucy5maW5kKChtKSA9PiBtLnNwYWNlSUQgPT09IHNwYWNlSUQpO1xuICAgIH1cblxuICAgIGhhc01hbmFnZXJSb2xlSW5BbnlNaXNzaW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1pc3Npb25zLnNvbWUoKG1pcykgPT5cbiAgICAgICAgICAgIHRoaXMubWFuYWdlcnMuaW5jbHVkZXMobWlzLnJvbGUpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGhhc1NlcnZpY2VSb2xlSW5BbnlNaXNzaW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1pc3Npb25zLnNvbWUoXG4gICAgICAgICAgICAobWlzKSA9PiBtaXMucm9sZSA9PT0gUm9sZVN0YXR1cy5TRVJWSUNFLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGhhc0FkbWluUm9sZUluQW55TWlzc2lvbigpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRNaXNzaW9ucy5zb21lKFxuICAgICAgICAgICAgKG1pcykgPT4gbWlzLnJvbGUgPT09IFJvbGVTdGF0dXMuQURNSU4sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYXN5bmMgY3JlYXRlT3JVcGRhdGVNaXNzaW9uRm9yT3JnV2l0aFByb3BlcnR5KFxuICAgICAgICBtaXNzaW9uSW5wdXQ6IE1pc3Npb24sXG4gICAgICAgIG9yZ0lEOiBzdHJpbmcsXG4gICAgICAgIGNyZWF0ZTogYm9vbGVhbiA9IHRydWUsXG4gICAgKTogUHJvbWlzZTxNaXNzaW9uPiB7XG4gICAgICAgIGNvbnN0IG1pc3Npb24gPSBhd2FpdCAoY3JlYXRlXG4gICAgICAgICAgICA/IHRoaXMubWlzc2lvblNlcnZpY2UuY3JlYXRlKG1pc3Npb25JbnB1dClcbiAgICAgICAgICAgIDogdGhpcy5taXNzaW9uU2VydmljZS51cGRhdGUobWlzc2lvbklucHV0KSk7XG5cbiAgICAgICAgaWYgKHRoaXMubWFuYWdlcnMuaW5jbHVkZXMobWlzc2lvbi5yb2xlKSAmJiBtaXNzaW9uLnNwYWNlSUQpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPVxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvcGVydHlTZXJ2aWNlLmdldFByb3BlcnRpZXNGb3JPcmdhbmlzYXRpb24ob3JnSUQpO1xuICAgICAgICAgICAgY29uc3QgcHJvcGVydHlTcGFjZUlEcyA9IHByb3BlcnRpZXMubWFwKFxuICAgICAgICAgICAgICAgIChwcm9wZXJ0eV8pID0+IHByb3BlcnR5Xy5zcGFjZUlELFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eVNwYWNlSURzLmluY2x1ZGVzKG1pc3Npb24uc3BhY2VJRCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWlzc2lvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHdlIGRlbGVnYXRlIHRoZSByaWdodHMgb2YgdGhlIHNwYWNlXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb3BlcnR5U2VydmljZS5jcmVhdGVQcm9wZXJ0eSh7XG4gICAgICAgICAgICAgICAgc3BhY2VJRDogbWlzc2lvbi5zcGFjZUlELFxuICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbklEOiBvcmdJRCxcbiAgICAgICAgICAgICAgICB0eXBlOiBQcm9wZXJ0eVR5cGUuU0hBUkVELFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pc3Npb247XG4gICAgfVxuXG4gICAgYXN5bmMgc29mdERlbGV0ZVVzZXIodXNlcklEOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgbWlzc2lvbnMgPSBhd2FpdCB0aGlzLm1pc3Npb25TZXJ2aWNlLmdldE1pc3Npb25zRnJvbVVzZXJJRCh1c2VySUQpO1xuICAgICAgICBpZiAobWlzc2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLnVwZGF0ZVByb2ZpbGUoeyBpZDogdXNlcklELCBkZWxldGVkQXQ6IERhdGUubm93KCkgfSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIlByb2ZpbGUgc29mdCBkZWxldGVkXCIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgUHJvZmlsZSAoYnkgaWQpIGNhbiBiZSByZW1vdmVkIGNvbXBsZXRlbHkgZnJvbSB0aGUgREIgKG5vIG1pc3Npb25zIGluIHRoZSBEQilcbiAgICAgKiBAcGFyYW0gcHJvZmlsZUlEXG4gICAgICogQHJldHVybnMgYm9vbGVhblxuICAgICAqL1xuICAgIGFzeW5jIGNhbkhhcmREZWxldGVVc2VyKHByb2ZpbGVJRDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IG1pc3Npb25zID0gKGF3YWl0IHRoaXMubWlzc2lvblNlcnZpY2UuZ2V0TWlzc2lvbnNGcm9tVXNlcklEKHByb2ZpbGVJRCkpO1xuICAgICAgICByZXR1cm4gbWlzc2lvbnMubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIGFzeW5jIGhhcmREZWxldGVVc2VyKHVzZXJJRDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGRlbGV0ZWQgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmRlbGV0ZVByb2ZpbGUodXNlcklEKTtcbiAgICAgICAgY29uc29sZS5sb2coXCJQcm9maWxlIGhhcmQgZGVsZXRlZFwiKTtcbiAgICAgICAgcmV0dXJuIGRlbGV0ZWQ7XG4gICAgfVxuXG4gICAgZ2V0TWFuYWdlck1pc3Npb25zKCk6IE1pc3Npb25bXSB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TWlzc2lvbnMuZmlsdGVyKChtaXMpID0+XG4gICAgICAgICAgICB0aGlzLm1hbmFnZXJzLmluY2x1ZGVzKG1pcy5yb2xlKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRBdmFsYWJsZUxldmVsc0ZvckN1cnJlbnRVc2VyKCk6IExldmVsU3RhdHVzW10ge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gW0xldmVsU3RhdHVzLk1JTklNVU1dO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxldmVscyA9IGVudW1Ub0FycmF5KExldmVsU3RhdHVzKTtcbiAgICAgICAgY29uc3QgaGlnaGVzdExldmVsID0gZ2V0SGlnaGVzdExldmVsRm9yTWlzc2lvbnModGhpcy5jdXJyZW50TWlzc2lvbnMpO1xuXG4gICAgICAgIHJldHVybiBsZXZlbHMuZmlsdGVyKChsZXZlbCkgPT5cbiAgICAgICAgICAgIGdldExldmVsc0JlbG93KGhpZ2hlc3RMZXZlbCkuaW5jbHVkZXMobGV2ZWwpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldEF2YWlsYWJsZVJvbGVzRm9yQ3VycmVudFVzZXIoKTogUm9sZVN0YXR1c1tdIHtcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIFtSb2xlU3RhdHVzLlZJU0lUT1JdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJvbGVzID0gZW51bVRvQXJyYXkoUm9sZVN0YXR1cyk7XG4gICAgICAgIGNvbnN0IGhpZ2hlc3RSb2xlID0gZ2V0SGlnaGVzdFJvbGVGb3JNaXNzaW9ucyh0aGlzLmN1cnJlbnRNaXNzaW9ucyk7XG4gICAgICAgIHJldHVybiByb2xlcy5maWx0ZXIoKHJvbGUpID0+XG4gICAgICAgICAgICBnZXRSb2xlc0JlbG93Rm9yTWFuYWdlcihoaWdoZXN0Um9sZSkuaW5jbHVkZXMocm9sZSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIFRlc3QgaWYgdGhlIHVzZXIgaGF2ZSB0aGUgcm9sZSBnaXZlbiBpbiBwYXJhbWV0ZXIgOiBcInJvbGVTdGF0dXNcIiAqL1xuICAgIGlzUm9sZShyb2xlU3RhdHVzOiBSb2xlU3RhdHVzKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50TWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TWlzc2lvbnMuc29tZSgobSkgPT4gbS5yb2xlID09PSByb2xlU3RhdHVzKTtcbiAgICB9XG5cbiAgICBpc0d1aWRlKHNwYWNlSUQ6IHN0cmluZyA9IG51bGwpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHNwYWNlSUQpIHtcbiAgICAgICAgICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLmdldE1pc3Npb25Gb3JTcGFjZShzcGFjZUlEKTtcbiAgICAgICAgICAgIGlmIChtaXNzaW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1pc3Npb24ucm9sZSA9PT0gUm9sZVN0YXR1cy5HVUlERV9NVVNFVU07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuaXNSb2xlKFJvbGVTdGF0dXMuR1VJREVfTVVTRVVNKTtcbiAgICB9XG5cbiAgICBpc011c2V1bVZpc2l0b3Ioc3BhY2VJRDogc3RyaW5nID0gbnVsbCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoc3BhY2VJRCkge1xuICAgICAgICAgICAgY29uc3QgbWlzc2lvbiA9IHRoaXMuZ2V0TWlzc2lvbkZvclNwYWNlKHNwYWNlSUQpO1xuICAgICAgICAgICAgaWYgKG1pc3Npb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWlzc2lvbi5yb2xlID09PSBSb2xlU3RhdHVzLlZJU0lUT1JfTVVTRVVNO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmlzUm9sZShSb2xlU3RhdHVzLlZJU0lUT1JfTVVTRVVNKTtcbiAgICB9XG5cbiAgICBpc09jY3VwYW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1JvbGUoUm9sZVN0YXR1cy5PQ0NVUEFOVCk7XG4gICAgfVxuXG4gICAgaXNWaXNpdG9yKHNwYWNlSUQ6IHN0cmluZyA9IG51bGwpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHNwYWNlSUQpIHtcbiAgICAgICAgICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLmdldE1pc3Npb25Gb3JTcGFjZShzcGFjZUlEKTtcbiAgICAgICAgICAgIGlmIChtaXNzaW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1pc3Npb24ucm9sZSA9PT0gUm9sZVN0YXR1cy5WSVNJVE9SO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmlzUm9sZShSb2xlU3RhdHVzLlZJU0lUT1IpO1xuICAgIH1cblxuICAgIGlzTXVzZXVtVXNlcihzcGFjZUlEOiBzdHJpbmcgPSBudWxsKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzR3VpZGUoc3BhY2VJRCkgfHwgdGhpcy5pc011c2V1bVZpc2l0b3Ioc3BhY2VJRCk7XG4gICAgfVxuXG4gICAgaGFzT25seU11c2V1bVJvbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRNaXNzaW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1pc3Npb25zLmV2ZXJ5KFxuICAgICAgICAgICAgICAgIChtKSA9PlxuICAgICAgICAgICAgICAgICAgICBtLnJvbGUgPT09IFJvbGVTdGF0dXMuR1VJREVfTVVTRVVNIHx8XG4gICAgICAgICAgICAgICAgICAgIG0ucm9sZSA9PT0gUm9sZVN0YXR1cy5WSVNJVE9SX01VU0VVTSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGFzeW5jIHByb2ZpbGVGb3JNYWlsKG1haWw6IHN0cmluZyk6IFByb21pc2U8UHJvZmlsZT4ge1xuICAgICAgICBjb25zdCB1c2Vyc1dpdGhNYWlsID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRVc2Vyc0Zvck1haWwobWFpbCk7XG4gICAgICAgIHJldHVybiB1c2Vyc1dpdGhNYWlsLmxlbmd0aCA+IDAgPyB1c2Vyc1dpdGhNYWlsWzBdIDogbnVsbDtcbiAgICB9XG5cbiAgICBjdXJyZW50T3JkZXJlZE9yZ0xpc3QoKTogT3JnYW5pc2F0aW9uW10ge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE1pc3Npb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JkZXJlZE9yZ0xpc3QgPSB0aGlzLmN1cnJlbnRNaXNzaW9ucy5tYXAoXG4gICAgICAgICAgICAobWlzKSA9PiBtaXMub3JkZXJlZE9yZ2FuaXNhdGlvbixcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGZpbHRlclVuaXF1ZUFycmF5QnlJRChvcmRlcmVkT3JnTGlzdCk7XG4gICAgfVxuXG4gICAgdXNlckhhc0FjY2Vzc1RvQWxsWm9uZXNJblNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBtaXNzaW9uc0ZvclNwYWNlID0gdGhpcy5jdXJyZW50TWlzc2lvbnMuZmlsdGVyKFxuICAgICAgICAgICAgKG1pcykgPT4gbWlzLnNwYWNlSUQgPT09IHNwYWNlSUQsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBtaXNzaW9uc0ZvclNwYWNlLnNvbWUoXG4gICAgICAgICAgICAobWlzc2lvbikgPT5cbiAgICAgICAgICAgICAgICAhbWlzc2lvbi56b25lSUQgfHwgKG1pc3Npb24uem9uZSAmJiAhbWlzc2lvbi56b25lLnBhcmVudElEKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhc3luYyBsb2dvdXRDdXJyZW50QW5kU2lnbk91dEF1dGgoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UudXBkYXRlUHJvZmlsZSh7XG4gICAgICAgICAgICBpZDogdGhpcy5jdS5pZCxcbiAgICAgICAgICAgIHRva2VuOiBudWxsLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jdSA9IG51bGw7XG4gICAgICAgIHRoaXMuY3VycmVudE1pc3Npb25zID0gbnVsbDtcbiAgICAgICAgdGhpcy5pc0NoYW5nZWQubmV4dChmYWxzZSk7XG4gICAgICAgIGF3YWl0IEF1dGguc2lnbk91dCgpO1xuICAgIH1cblxuICAgIGFzeW5jIGxvZ291dEN1cnJlbnRXaWh0b3V0QXV0aCgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS51cGRhdGVQcm9maWxlKHtcbiAgICAgICAgICAgIGlkOiB0aGlzLmN1LmlkLFxuICAgICAgICAgICAgdG9rZW46IG51bGwsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmN1ID0gbnVsbDtcbiAgICAgICAgdGhpcy5jdXJyZW50TWlzc2lvbnMgPSBudWxsO1xuICAgICAgICB0aGlzLmlzQ2hhbmdlZC5uZXh0KGZhbHNlKTtcbiAgICB9XG5cbiAgICBhc3luYyBjaGVja0FjY2Vzc1Rva2VuKGp3dFRva2VuOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZVRpbWUubG9jYWwoKTtcbiAgICAgICAgaWYgKHRoaXMuY3UudG9rZW4gJiYgdGhpcy5jdS50b2tlbkV4cGlyZWRBdCA+IG5vdy50b01pbGxpcygpKSB7XG4gICAgICAgICAgICAvLyBjaGVjayB0b2tlblxuICAgICAgICAgICAgaWYgKHRoaXMuY3UudG9rZW4gPT09IGp3dFRva2VuKSB7XG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJzYW1lIGF3cyB0b2tlblwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFsZXJ0KHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXCJhdXRoLmVycm9yLmFjdGl2ZVRva2VuXCIpKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLnVwZGF0ZVByb2ZpbGUoe1xuICAgICAgICAgICAgaWQ6IHRoaXMuY3UuaWQsXG4gICAgICAgICAgICB0b2tlbkV4cGlyZWRBdDogbm93LnBsdXMoeyBtaW51dGVzOiA1IH0pLnRvTWlsbGlzKCksXG4gICAgICAgICAgICB0b2tlbjogand0VG9rZW4sXG4gICAgICAgICAgICBzdGF0dXM6IFByb2ZpbGVTdGF0dXMuQUNUSVZFLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYXN5bmMgY2xlYXJVc2VyVG9rZW4oaWQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS51cGRhdGVQcm9maWxlKHtcbiAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgIHRva2VuOiBudWxsLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB1cGRhdGVDdXJyZW50VXNlcihwcm9maWxlOiBQcm9maWxlKSB7XG4gICAgICAgIHRoaXMuY3UgPSBuZXcgUHJvZmlsZUVudGl0eShwcm9maWxlKTtcbiAgICAgICAgdGhpcy5pc0NoYW5nZWQubmV4dCh0cnVlKTtcbiAgICB9XG5cbiAgICBnZXRTcE1vZHVsZSgpOiBTcE1vZHVsZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNwTW9kdWxlO1xuICAgIH1cbn1cbiJdfQ==
@@ -62,4 +62,4 @@ export function applyRigidTransformToDirection(v, t) {
62
62
  z: v.x * sin + v.z * cos
63
63
  };
64
64
  }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0dGVycG9ydC10cmFuc2Zvcm0udXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvdXRpbHMvbWF0dGVycG9ydC10cmFuc2Zvcm0udXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFVL0I7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNqQyxPQUFhLEVBQUUsT0FBYSxFQUM1QixPQUFhLEVBQUUsT0FBYTtJQUU1QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3ZFLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFdkUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXJELE9BQU87UUFDSCxZQUFZLEVBQUUsV0FBVyxHQUFHLFdBQVc7UUFDdkMsU0FBUyxFQUFFLE9BQU87UUFDbEIsU0FBUyxFQUFFLE9BQU87S0FDckIsQ0FBQztBQUNOLENBQUM7QUFFRCw4REFBOEQ7QUFDOUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLENBQU8sRUFBRSxDQUFpQjtJQUNqRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFckMsT0FBTztRQUNILENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUN4QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsK0JBQStCO1FBQ3pFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQztLQUMzQyxDQUFDO0FBQ04sQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsaUNBQWlDLENBQUMsWUFBb0IsRUFBRSxDQUFpQjtJQUNyRixJQUFJLFlBQVksS0FBSyxJQUFJLElBQUksWUFBWSxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDNUYsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUNELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUMzQyxDQUFDO0FBRUQsa0ZBQWtGO0FBQ2xGLE1BQU0sVUFBVSxRQUFRLENBQUMsQ0FBTyxFQUFFLENBQU87SUFDckMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBQ0Q7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLDhCQUE4QixDQUFDLENBQU8sRUFBRSxDQUFpQjtJQUNyRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUVyQyxPQUFPO1FBQ0gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRztRQUN4QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSwrQkFBK0I7UUFDdkMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRztLQUMzQixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIG1hdHRlcnBvcnQtdHJhbnNmb3JtLnV0aWwudHNcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVmVjMyB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXI7IH1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmlnaWRUcmFuc2Zvcm0ge1xyXG4gICAgcm90YXRpb25ZUmFkOiBudW1iZXI7ICAgLy8gcm90YXRpb24gYXJvdW5kIHRoZSB2ZXJ0aWNhbCAoWSkgYXhpcywgaW4gcmFkaWFuc1xyXG4gICAgcmVmU291cmNlOiBWZWMzOyAgICAgICAgLy8gbGFuZG1hcmsgQSBwb3NpdGlvbiwgaW4gU09VUkNFIG1vZGVsIGNvb3JkaW5hdGVzXHJcbiAgICByZWZUYXJnZXQ6IFZlYzM7ICAgICAgICAvLyBsYW5kbWFyayBBIHBvc2l0aW9uLCBpbiBUQVJHRVQgbW9kZWwgY29vcmRpbmF0ZXNcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbXB1dGVzIHRoZSByaWdpZCB0cmFuc2Zvcm0gKFktYXhpcyByb3RhdGlvbiArIHRyYW5zbGF0aW9uKSBiZXR3ZWVuIHR3b1xyXG4gKiBjb29yZGluYXRlIGZyYW1lcywgZnJvbSAyIHBhaXJzIG9mIHBvaW50cyByZXByZXNlbnRpbmcgdGhlIHNhbWUgcGh5c2ljYWwgc3BvdC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlUmlnaWRUcmFuc2Zvcm0oXHJcbiAgICBzb3VyY2VBOiBWZWMzLCB0YXJnZXRBOiBWZWMzLFxyXG4gICAgc291cmNlQjogVmVjMywgdGFyZ2V0QjogVmVjM1xyXG4pOiBSaWdpZFRyYW5zZm9ybSB7XHJcbiAgICBjb25zdCB2U291cmNlID0geyB4OiBzb3VyY2VCLnggLSBzb3VyY2VBLngsIHo6IHNvdXJjZUIueiAtIHNvdXJjZUEueiB9O1xyXG4gICAgY29uc3QgdlRhcmdldCA9IHsgeDogdGFyZ2V0Qi54IC0gdGFyZ2V0QS54LCB6OiB0YXJnZXRCLnogLSB0YXJnZXRBLnogfTtcclxuXHJcbiAgICBjb25zdCBhbmdsZVNvdXJjZSA9IE1hdGguYXRhbjIodlNvdXJjZS56LCB2U291cmNlLngpO1xyXG4gICAgY29uc3QgYW5nbGVUYXJnZXQgPSBNYXRoLmF0YW4yKHZUYXJnZXQueiwgdlRhcmdldC54KTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHJvdGF0aW9uWVJhZDogYW5nbGVUYXJnZXQgLSBhbmdsZVNvdXJjZSxcclxuICAgICAgICByZWZTb3VyY2U6IHNvdXJjZUEsXHJcbiAgICAgICAgcmVmVGFyZ2V0OiB0YXJnZXRBXHJcbiAgICB9O1xyXG59XHJcblxyXG4vKiogQXBwbGllcyB0aGUgcmlnaWQgdHJhbnNmb3JtIHRvIGEgM0QgcG9zaXRpb24gKHgsIHksIHopLiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlSaWdpZFRyYW5zZm9ybVRvUG9pbnQocDogVmVjMywgdDogUmlnaWRUcmFuc2Zvcm0pOiBWZWMzIHtcclxuICAgIGNvbnN0IGR4ID0gcC54IC0gdC5yZWZTb3VyY2UueDtcclxuICAgIGNvbnN0IGR6ID0gcC56IC0gdC5yZWZTb3VyY2UuejtcclxuICAgIGNvbnN0IGNvcyA9IE1hdGguY29zKHQucm90YXRpb25ZUmFkKTtcclxuICAgIGNvbnN0IHNpbiA9IE1hdGguc2luKHQucm90YXRpb25ZUmFkKTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHg6IHQucmVmVGFyZ2V0LnggKyAoZHggKiBjb3MgLSBkeiAqIHNpbiksXHJcbiAgICAgICAgeTogdC5yZWZUYXJnZXQueSArIChwLnkgLSB0LnJlZlNvdXJjZS55KSwgLy8gdmVydGljYWwgYXhpcyBpcyBub3Qgcm90YXRlZFxyXG4gICAgICAgIHo6IHQucmVmVGFyZ2V0LnogKyAoZHggKiBzaW4gKyBkeiAqIGNvcylcclxuICAgIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBcHBsaWVzIHRoZSBZIHJvdGF0aW9uIChpbiBkZWdyZWVzKSB0byBhbiBvcmllbnRhdGlvbiBhbmdsZSAoYSBwb3NlJ3MgeVJvdGF0aW9uKS5cclxuICogQSBudWxsL3VuZGVmaW5lZC9ub24tbnVtZXJpYyBhbmdsZSBpcyByZXR1cm5lZCB1bnRvdWNoZWQ6IFwibm8gb3JpZW50YXRpb24gc3RvcmVkXCJcclxuICogbXVzdCBzdGF5IFwibm8gb3JpZW50YXRpb24gc3RvcmVkXCIsIG5vdCBiZWNvbWUgdGhlIHJhdyByb3RhdGlvbiBkZWx0YS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBhcHBseVJpZ2lkVHJhbnNmb3JtVG9ZUm90YXRpb25EZWcoeVJvdGF0aW9uRGVnOiBudW1iZXIsIHQ6IFJpZ2lkVHJhbnNmb3JtKTogbnVtYmVyIHtcclxuICAgIGlmICh5Um90YXRpb25EZWcgPT09IG51bGwgfHwgeVJvdGF0aW9uRGVnID09PSB1bmRlZmluZWQgfHwgTnVtYmVyLmlzTmFOKE51bWJlcih5Um90YXRpb25EZWcpKSkge1xyXG4gICAgICAgIHJldHVybiB5Um90YXRpb25EZWc7XHJcbiAgICB9XHJcbiAgICBjb25zdCBkZWx0YURlZyA9IHQucm90YXRpb25ZUmFkICogKDE4MCAvIE1hdGguUEkpO1xyXG4gICAgcmV0dXJuIE51bWJlcih5Um90YXRpb25EZWcpICsgZGVsdGFEZWc7XHJcbn1cclxuXHJcbi8qKiBFdWNsaWRlYW4gZGlzdGFuY2UgYmV0d2VlbiB0d28gcG9pbnRzLCB1c2VmdWwgdG8gdmFsaWRhdGUgbGFuZG1hcmsgcXVhbGl0eS4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlKGE6IFZlYzMsIGI6IFZlYzMpOiBudW1iZXIge1xyXG4gICAgY29uc3QgZHggPSBhLnggLSBiLngsIGR5ID0gYS55IC0gYi55LCBkeiA9IGEueiAtIGIuejtcclxuICAgIHJldHVybiBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkgKyBkeiAqIGR6KTtcclxufVxyXG4vKipcclxuICogQXBwbGllcyBPTkxZIHRoZSByb3RhdGlvbiBwYXJ0IG9mIHRoZSB0cmFuc2Zvcm0gdG8gYSBkaXJlY3Rpb24gdmVjdG9yXHJcbiAqIChhIG5vcm1hbCwgYSBzdGVtIHZlY3RvciwgLi4uKS5cclxuICpcclxuICogQSBkaXJlY3Rpb24gaGFzIG5vIG9yaWdpbiwgc28gdGhlIHRyYW5zbGF0aW9uIG11c3QgTk9UIGJlIGFwcGxpZWQgdG8gaXQg4oCUXHJcbiAqIGRvaW5nIHNvIHdvdWxkIHR1cm4gYSB1bml0IG5vcm1hbCBpbnRvIGEgcG9pbnQgc29tZXdoZXJlIGluIHRoZSB0YXJnZXQgbW9kZWwuXHJcbiAqIFVzZWQgZm9yIGEgUE9JJ3MgYG1ldGFkYXRhLm5vcm1hbGAsIHdoaWNoIGRyaXZlcyB0aGUgb3JpZW50YXRpb24gb2YgdGhlIHRhZydzXHJcbiAqIHN0ZW06IHdpdGhvdXQgdGhpcyByb3RhdGlvbiwgYSBwYXN0aWxsZSBjb3BpZWQgaW50byBhIHNwYWNlIHdob3NlIG1vZGVsIGlzXHJcbiAqIHJvdGF0ZWQgcmVsYXRpdmUgdG8gdGhlIHNvdXJjZSBlbmRzIHVwIHBvaW50aW5nIGludG8gdGhlIHdhbGwgaXQgaXMgc3R1Y2sgb24uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlSaWdpZFRyYW5zZm9ybVRvRGlyZWN0aW9uKHY6IFZlYzMsIHQ6IFJpZ2lkVHJhbnNmb3JtKTogVmVjMyB7XHJcbiAgICBjb25zdCBjb3MgPSBNYXRoLmNvcyh0LnJvdGF0aW9uWVJhZCk7XHJcbiAgICBjb25zdCBzaW4gPSBNYXRoLnNpbih0LnJvdGF0aW9uWVJhZCk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB4OiB2LnggKiBjb3MgLSB2LnogKiBzaW4sXHJcbiAgICAgICAgeTogdi55LCAvLyB2ZXJ0aWNhbCBheGlzIGlzIG5vdCByb3RhdGVkXHJcbiAgICAgICAgejogdi54ICogc2luICsgdi56ICogY29zXHJcbiAgICB9O1xyXG59XHJcbiJdfQ==
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0dGVycG9ydC10cmFuc2Zvcm0udXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvdXRpbHMvbWF0dGVycG9ydC10cmFuc2Zvcm0udXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFVL0I7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNqQyxPQUFhLEVBQUUsT0FBYSxFQUM1QixPQUFhLEVBQUUsT0FBYTtJQUU1QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3ZFLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFdkUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXJELE9BQU87UUFDSCxZQUFZLEVBQUUsV0FBVyxHQUFHLFdBQVc7UUFDdkMsU0FBUyxFQUFFLE9BQU87UUFDbEIsU0FBUyxFQUFFLE9BQU87S0FDckIsQ0FBQztBQUNOLENBQUM7QUFFRCw4REFBOEQ7QUFDOUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLENBQU8sRUFBRSxDQUFpQjtJQUNqRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFckMsT0FBTztRQUNILENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUN4QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsK0JBQStCO1FBQ3pFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQztLQUMzQyxDQUFDO0FBQ04sQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsaUNBQWlDLENBQUMsWUFBb0IsRUFBRSxDQUFpQjtJQUNyRixJQUFJLFlBQVksS0FBSyxJQUFJLElBQUksWUFBWSxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDNUYsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUNELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUMzQyxDQUFDO0FBRUQsa0ZBQWtGO0FBQ2xGLE1BQU0sVUFBVSxRQUFRLENBQUMsQ0FBTyxFQUFFLENBQU87SUFDckMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBQ0Q7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLDhCQUE4QixDQUFDLENBQU8sRUFBRSxDQUFpQjtJQUNyRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUVyQyxPQUFPO1FBQ0gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRztRQUN4QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSwrQkFBK0I7UUFDdkMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRztLQUMzQixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIG1hdHRlcnBvcnQtdHJhbnNmb3JtLnV0aWwudHNcblxuZXhwb3J0IGludGVyZmFjZSBWZWMzIHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlcjsgfVxuXG5leHBvcnQgaW50ZXJmYWNlIFJpZ2lkVHJhbnNmb3JtIHtcbiAgICByb3RhdGlvbllSYWQ6IG51bWJlcjsgICAvLyByb3RhdGlvbiBhcm91bmQgdGhlIHZlcnRpY2FsIChZKSBheGlzLCBpbiByYWRpYW5zXG4gICAgcmVmU291cmNlOiBWZWMzOyAgICAgICAgLy8gbGFuZG1hcmsgQSBwb3NpdGlvbiwgaW4gU09VUkNFIG1vZGVsIGNvb3JkaW5hdGVzXG4gICAgcmVmVGFyZ2V0OiBWZWMzOyAgICAgICAgLy8gbGFuZG1hcmsgQSBwb3NpdGlvbiwgaW4gVEFSR0VUIG1vZGVsIGNvb3JkaW5hdGVzXG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIHJpZ2lkIHRyYW5zZm9ybSAoWS1heGlzIHJvdGF0aW9uICsgdHJhbnNsYXRpb24pIGJldHdlZW4gdHdvXG4gKiBjb29yZGluYXRlIGZyYW1lcywgZnJvbSAyIHBhaXJzIG9mIHBvaW50cyByZXByZXNlbnRpbmcgdGhlIHNhbWUgcGh5c2ljYWwgc3BvdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVSaWdpZFRyYW5zZm9ybShcbiAgICBzb3VyY2VBOiBWZWMzLCB0YXJnZXRBOiBWZWMzLFxuICAgIHNvdXJjZUI6IFZlYzMsIHRhcmdldEI6IFZlYzNcbik6IFJpZ2lkVHJhbnNmb3JtIHtcbiAgICBjb25zdCB2U291cmNlID0geyB4OiBzb3VyY2VCLnggLSBzb3VyY2VBLngsIHo6IHNvdXJjZUIueiAtIHNvdXJjZUEueiB9O1xuICAgIGNvbnN0IHZUYXJnZXQgPSB7IHg6IHRhcmdldEIueCAtIHRhcmdldEEueCwgejogdGFyZ2V0Qi56IC0gdGFyZ2V0QS56IH07XG5cbiAgICBjb25zdCBhbmdsZVNvdXJjZSA9IE1hdGguYXRhbjIodlNvdXJjZS56LCB2U291cmNlLngpO1xuICAgIGNvbnN0IGFuZ2xlVGFyZ2V0ID0gTWF0aC5hdGFuMih2VGFyZ2V0LnosIHZUYXJnZXQueCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICByb3RhdGlvbllSYWQ6IGFuZ2xlVGFyZ2V0IC0gYW5nbGVTb3VyY2UsXG4gICAgICAgIHJlZlNvdXJjZTogc291cmNlQSxcbiAgICAgICAgcmVmVGFyZ2V0OiB0YXJnZXRBXG4gICAgfTtcbn1cblxuLyoqIEFwcGxpZXMgdGhlIHJpZ2lkIHRyYW5zZm9ybSB0byBhIDNEIHBvc2l0aW9uICh4LCB5LCB6KS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVJpZ2lkVHJhbnNmb3JtVG9Qb2ludChwOiBWZWMzLCB0OiBSaWdpZFRyYW5zZm9ybSk6IFZlYzMge1xuICAgIGNvbnN0IGR4ID0gcC54IC0gdC5yZWZTb3VyY2UueDtcbiAgICBjb25zdCBkeiA9IHAueiAtIHQucmVmU291cmNlLno7XG4gICAgY29uc3QgY29zID0gTWF0aC5jb3ModC5yb3RhdGlvbllSYWQpO1xuICAgIGNvbnN0IHNpbiA9IE1hdGguc2luKHQucm90YXRpb25ZUmFkKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIHg6IHQucmVmVGFyZ2V0LnggKyAoZHggKiBjb3MgLSBkeiAqIHNpbiksXG4gICAgICAgIHk6IHQucmVmVGFyZ2V0LnkgKyAocC55IC0gdC5yZWZTb3VyY2UueSksIC8vIHZlcnRpY2FsIGF4aXMgaXMgbm90IHJvdGF0ZWRcbiAgICAgICAgejogdC5yZWZUYXJnZXQueiArIChkeCAqIHNpbiArIGR6ICogY29zKVxuICAgIH07XG59XG5cbi8qKlxuICogQXBwbGllcyB0aGUgWSByb3RhdGlvbiAoaW4gZGVncmVlcykgdG8gYW4gb3JpZW50YXRpb24gYW5nbGUgKGEgcG9zZSdzIHlSb3RhdGlvbikuXG4gKiBBIG51bGwvdW5kZWZpbmVkL25vbi1udW1lcmljIGFuZ2xlIGlzIHJldHVybmVkIHVudG91Y2hlZDogXCJubyBvcmllbnRhdGlvbiBzdG9yZWRcIlxuICogbXVzdCBzdGF5IFwibm8gb3JpZW50YXRpb24gc3RvcmVkXCIsIG5vdCBiZWNvbWUgdGhlIHJhdyByb3RhdGlvbiBkZWx0YS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UmlnaWRUcmFuc2Zvcm1Ub1lSb3RhdGlvbkRlZyh5Um90YXRpb25EZWc6IG51bWJlciwgdDogUmlnaWRUcmFuc2Zvcm0pOiBudW1iZXIge1xuICAgIGlmICh5Um90YXRpb25EZWcgPT09IG51bGwgfHwgeVJvdGF0aW9uRGVnID09PSB1bmRlZmluZWQgfHwgTnVtYmVyLmlzTmFOKE51bWJlcih5Um90YXRpb25EZWcpKSkge1xuICAgICAgICByZXR1cm4geVJvdGF0aW9uRGVnO1xuICAgIH1cbiAgICBjb25zdCBkZWx0YURlZyA9IHQucm90YXRpb25ZUmFkICogKDE4MCAvIE1hdGguUEkpO1xuICAgIHJldHVybiBOdW1iZXIoeVJvdGF0aW9uRGVnKSArIGRlbHRhRGVnO1xufVxuXG4vKiogRXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gdHdvIHBvaW50cywgdXNlZnVsIHRvIHZhbGlkYXRlIGxhbmRtYXJrIHF1YWxpdHkuICovXG5leHBvcnQgZnVuY3Rpb24gZGlzdGFuY2UoYTogVmVjMywgYjogVmVjMyk6IG51bWJlciB7XG4gICAgY29uc3QgZHggPSBhLnggLSBiLngsIGR5ID0gYS55IC0gYi55LCBkeiA9IGEueiAtIGIuejtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5ICsgZHogKiBkeik7XG59XG4vKipcbiAqIEFwcGxpZXMgT05MWSB0aGUgcm90YXRpb24gcGFydCBvZiB0aGUgdHJhbnNmb3JtIHRvIGEgZGlyZWN0aW9uIHZlY3RvclxuICogKGEgbm9ybWFsLCBhIHN0ZW0gdmVjdG9yLCAuLi4pLlxuICpcbiAqIEEgZGlyZWN0aW9uIGhhcyBubyBvcmlnaW4sIHNvIHRoZSB0cmFuc2xhdGlvbiBtdXN0IE5PVCBiZSBhcHBsaWVkIHRvIGl0IOKAlFxuICogZG9pbmcgc28gd291bGQgdHVybiBhIHVuaXQgbm9ybWFsIGludG8gYSBwb2ludCBzb21ld2hlcmUgaW4gdGhlIHRhcmdldCBtb2RlbC5cbiAqIFVzZWQgZm9yIGEgUE9JJ3MgYG1ldGFkYXRhLm5vcm1hbGAsIHdoaWNoIGRyaXZlcyB0aGUgb3JpZW50YXRpb24gb2YgdGhlIHRhZydzXG4gKiBzdGVtOiB3aXRob3V0IHRoaXMgcm90YXRpb24sIGEgcGFzdGlsbGUgY29waWVkIGludG8gYSBzcGFjZSB3aG9zZSBtb2RlbCBpc1xuICogcm90YXRlZCByZWxhdGl2ZSB0byB0aGUgc291cmNlIGVuZHMgdXAgcG9pbnRpbmcgaW50byB0aGUgd2FsbCBpdCBpcyBzdHVjayBvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UmlnaWRUcmFuc2Zvcm1Ub0RpcmVjdGlvbih2OiBWZWMzLCB0OiBSaWdpZFRyYW5zZm9ybSk6IFZlYzMge1xuICAgIGNvbnN0IGNvcyA9IE1hdGguY29zKHQucm90YXRpb25ZUmFkKTtcbiAgICBjb25zdCBzaW4gPSBNYXRoLnNpbih0LnJvdGF0aW9uWVJhZCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB4OiB2LnggKiBjb3MgLSB2LnogKiBzaW4sXG4gICAgICAgIHk6IHYueSwgLy8gdmVydGljYWwgYXhpcyBpcyBub3Qgcm90YXRlZFxuICAgICAgICB6OiB2LnggKiBzaW4gKyB2LnogKiBjb3NcbiAgICB9O1xufVxuIl19
@@ -47,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
47
47
  providedIn: 'root'
48
48
  }]
49
49
  }], ctorParameters: () => [] });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy92YWxpZGF0b3JzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixnQkFBZ0IsQ0FBQztJQUVqQjs7OztPQUlHO0lBQ0ksY0FBYyxDQUFDLE9BQU87UUFDM0IsT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FBQyxPQUFPO1FBQ3JCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxvQkFBb0IsQ0FBQztZQUM5QixDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUMzQixPQUFPLG1CQUFtQixDQUFDO1lBQzdCLENBQUM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3hCLE9BQU8sZ0JBQWdCLENBQUM7WUFDMUIsQ0FBQztZQUNELElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxpQkFBaUIsQ0FBQztZQUMzQixDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUM3QixPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzFCLE9BQU8sa0JBQWtCLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7d0dBekNVLGlCQUFpQjs0R0FBakIsaUJBQWlCLGNBRmhCLE1BQU07OzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWYWxpZGF0b3JzU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHJldHVybiBpZiBjb250cm9sIGFzIGVycm9yXHJcbiAgICogQHBhcmFtIGNvbnRyb2wgXHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgcHVibGljIGlzQ29udHJvbEVycm9yKGNvbnRyb2wpIHtcclxuICAgIHJldHVybiAoY29udHJvbCAmJiBjb250cm9sLmludmFsaWQgJiYgY29udHJvbC50b3VjaGVkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHJldHVybiBlcnJvciBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2wgXHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgcHVibGljIGdldEVycm9yKGNvbnRyb2wpIHtcclxuICAgIGlmIChjb250cm9sLmVycm9ycykge1xyXG4gICAgICBpZiAoY29udHJvbC5lcnJvcnMucmVxdWlyZWQpIHtcclxuICAgICAgICByZXR1cm4gJ2Vycm9yRm9ybS5yZXF1aXJlZCc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbnRyb2wuZXJyb3JzLmlzRW1wdHkpIHtcclxuICAgICAgICByZXR1cm4gJ2Vycm9yRm9ybS5pc0VtcHR5JztcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29udHJvbC5lcnJvcnMudGV4dCkge1xyXG4gICAgICAgIHJldHVybiAnZXJyb3JGb3JtLnRleHQnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb250cm9sLmVycm9ycy5lbWFpbCkge1xyXG4gICAgICAgIHJldHVybiAnZXJyb3JGb3JtLmVtYWlsJztcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29udHJvbC5lcnJvcnMubWF4bGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuICdlcnJvckZvcm0ubWF4TGVuZ3RoJztcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29udHJvbC5lcnJvcnMubnVtYmVyKSB7XHJcbiAgICAgICAgcmV0dXJuICdlcnJvckZvcm0ubnVtYmVyJztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG5cclxufVxyXG4iXX0=
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy92YWxpZGF0b3JzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixnQkFBZ0IsQ0FBQztJQUVqQjs7OztPQUlHO0lBQ0ksY0FBYyxDQUFDLE9BQU87UUFDM0IsT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FBQyxPQUFPO1FBQ3JCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxvQkFBb0IsQ0FBQztZQUM5QixDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUMzQixPQUFPLG1CQUFtQixDQUFDO1lBQzdCLENBQUM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3hCLE9BQU8sZ0JBQWdCLENBQUM7WUFDMUIsQ0FBQztZQUNELElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxpQkFBaUIsQ0FBQztZQUMzQixDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUM3QixPQUFPLHFCQUFxQixDQUFDO1lBQy9CLENBQUM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzFCLE9BQU8sa0JBQWtCLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7d0dBekNVLGlCQUFpQjs0R0FBakIsaUJBQWlCLGNBRmhCLE1BQU07OzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFZhbGlkYXRvcnNTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIC8qKlxuICAgKiByZXR1cm4gaWYgY29udHJvbCBhcyBlcnJvclxuICAgKiBAcGFyYW0gY29udHJvbCBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBwdWJsaWMgaXNDb250cm9sRXJyb3IoY29udHJvbCkge1xuICAgIHJldHVybiAoY29udHJvbCAmJiBjb250cm9sLmludmFsaWQgJiYgY29udHJvbC50b3VjaGVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm4gZXJyb3Igb2YgY29udHJvbFxuICAgKiBAcGFyYW0gY29udHJvbCBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBwdWJsaWMgZ2V0RXJyb3IoY29udHJvbCkge1xuICAgIGlmIChjb250cm9sLmVycm9ycykge1xuICAgICAgaWYgKGNvbnRyb2wuZXJyb3JzLnJlcXVpcmVkKSB7XG4gICAgICAgIHJldHVybiAnZXJyb3JGb3JtLnJlcXVpcmVkJztcbiAgICAgIH1cbiAgICAgIGlmIChjb250cm9sLmVycm9ycy5pc0VtcHR5KSB7XG4gICAgICAgIHJldHVybiAnZXJyb3JGb3JtLmlzRW1wdHknO1xuICAgICAgfVxuICAgICAgaWYgKGNvbnRyb2wuZXJyb3JzLnRleHQpIHtcbiAgICAgICAgcmV0dXJuICdlcnJvckZvcm0udGV4dCc7XG4gICAgICB9XG4gICAgICBpZiAoY29udHJvbC5lcnJvcnMuZW1haWwpIHtcbiAgICAgICAgcmV0dXJuICdlcnJvckZvcm0uZW1haWwnO1xuICAgICAgfVxuICAgICAgaWYgKGNvbnRyb2wuZXJyb3JzLm1heGxlbmd0aCkge1xuICAgICAgICByZXR1cm4gJ2Vycm9yRm9ybS5tYXhMZW5ndGgnO1xuICAgICAgfVxuICAgICAgaWYgKGNvbnRyb2wuZXJyb3JzLm51bWJlcikge1xuICAgICAgICByZXR1cm4gJ2Vycm9yRm9ybS5udW1iZXInO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxuXG5cbn1cbiJdfQ==