@smarterplan/ngx-smarterplan-core 1.2.15 → 1.2.17

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 (93) hide show
  1. package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +2 -2
  2. package/esm2020/lib/services/matterport.service.mjs +75 -74
  3. package/esm2020/lib/services/models/equipment.service.mjs +2 -2
  4. package/esm2020/lib/services/models/measurement.service.mjs +2 -2
  5. package/esm2020/lib/services/models/poi.service.mjs +2 -2
  6. package/esm2020/lib/services/models/ticket.service.mjs +3 -3
  7. package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +80 -81
  8. package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  9. package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +80 -79
  10. package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  11. package/package.json +1 -1
  12. package/lib/components/csv-export/csv-export.component.d.ts.map +0 -1
  13. package/lib/components/loader/loader.component.d.ts.map +0 -1
  14. package/lib/components/menu-bar/avatar/avatar.component.d.ts.map +0 -1
  15. package/lib/components/menu-bar/menu-bar.component.d.ts.map +0 -1
  16. package/lib/components/menu-bar/navigation-bar/navigation-bar.component.d.ts.map +0 -1
  17. package/lib/components/menu-bar/range-date-picker/range-date-picker.component.d.ts.map +0 -1
  18. package/lib/components/modal-switch-visit/modal-switch-visit.component.d.ts.map +0 -1
  19. package/lib/components/search-bar/search-bar.component.d.ts.map +0 -1
  20. package/lib/components/support-modal/support-modal.component.d.ts.map +0 -1
  21. package/lib/config.d.ts.map +0 -1
  22. package/lib/helpers.service.d.ts.map +0 -1
  23. package/lib/matterport-extensions/hsl-loader/HlsLoader.d.ts.map +0 -1
  24. package/lib/matterport-extensions/nest-thermostat/CanvasImage.d.ts.map +0 -1
  25. package/lib/matterport-extensions/nest-thermostat/CanvasRenderer.d.ts.map +0 -1
  26. package/lib/matterport-extensions/nest-thermostat/NestThermostat.d.ts.map +0 -1
  27. package/lib/matterport-extensions/nest-thermostat/PlaneRenderer.d.ts.map +0 -1
  28. package/lib/matterport-extensions/scene-component/SceneComponent.d.ts.map +0 -1
  29. package/lib/matterport-extensions/security-camera/SecurityCamera.d.ts.map +0 -1
  30. package/lib/matterport-extensions/tv-player/TvPlayer.d.ts.map +0 -1
  31. package/lib/matterport-extensions/video-renderer/VideoRenderer.d.ts.map +0 -1
  32. package/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.d.ts.map +0 -1
  33. package/lib/mattertagData.d.ts.map +0 -1
  34. package/lib/ngx-smarterplan-core.module.d.ts.map +0 -1
  35. package/lib/ngx-smarterplan-core.service.d.ts.map +0 -1
  36. package/lib/pipes/duration-to-string.pipe.d.ts.map +0 -1
  37. package/lib/pipes/format-date-number-to-digits.pipe.d.ts.map +0 -1
  38. package/lib/pipes/hashtag-from-id.pipe.d.ts.map +0 -1
  39. package/lib/pipes/safe-url.pipe.d.ts.map +0 -1
  40. package/lib/pipes/time-date-to-local-string.pipe.d.ts.map +0 -1
  41. package/lib/pipes/username-from-id.pipe.d.ts.map +0 -1
  42. package/lib/services/amplify-cache.service.d.ts.map +0 -1
  43. package/lib/services/base-tab.service.d.ts.map +0 -1
  44. package/lib/services/baseVisibility.service.d.ts.map +0 -1
  45. package/lib/services/content.service.d.ts.map +0 -1
  46. package/lib/services/filter.service.d.ts.map +0 -1
  47. package/lib/services/intervention.service.d.ts.map +0 -1
  48. package/lib/services/locale.service.d.ts.map +0 -1
  49. package/lib/services/matterport-import.service.d.ts.map +0 -1
  50. package/lib/services/matterport.service.d.ts.map +0 -1
  51. package/lib/services/models/affectation.service.d.ts.map +0 -1
  52. package/lib/services/models/base-object.service.d.ts.map +0 -1
  53. package/lib/services/models/capture.service.d.ts.map +0 -1
  54. package/lib/services/models/comment.service.d.ts.map +0 -1
  55. package/lib/services/models/domain.service.d.ts.map +0 -1
  56. package/lib/services/models/equipment.service.d.ts.map +0 -1
  57. package/lib/services/models/event.service.d.ts.map +0 -1
  58. package/lib/services/models/feature.service.d.ts.map +0 -1
  59. package/lib/services/models/hashtag.service.d.ts.map +0 -1
  60. package/lib/services/models/layer.service.d.ts.map +0 -1
  61. package/lib/services/models/measurement.service.d.ts.map +0 -1
  62. package/lib/services/models/mission.service.d.ts.map +0 -1
  63. package/lib/services/models/navigation.service.d.ts.map +0 -1
  64. package/lib/services/models/node.service.d.ts.map +0 -1
  65. package/lib/services/models/object3D.service.d.ts.map +0 -1
  66. package/lib/services/models/operation.service.d.ts.map +0 -1
  67. package/lib/services/models/organisation.service.d.ts.map +0 -1
  68. package/lib/services/models/plan.service.d.ts.map +0 -1
  69. package/lib/services/models/poi.service.d.ts.map +0 -1
  70. package/lib/services/models/profile.service.d.ts.map +0 -1
  71. package/lib/services/models/property.service.d.ts.map +0 -1
  72. package/lib/services/models/space.service.d.ts.map +0 -1
  73. package/lib/services/models/template.service.d.ts.map +0 -1
  74. package/lib/services/models/ticket.service.d.ts.map +0 -1
  75. package/lib/services/models/visit.service.d.ts.map +0 -1
  76. package/lib/services/models/zone.service.d.ts.map +0 -1
  77. package/lib/services/navigator.service.d.ts.map +0 -1
  78. package/lib/services/s3.service.d.ts.map +0 -1
  79. package/lib/services/search.service.d.ts.map +0 -1
  80. package/lib/services/support.service.d.ts.map +0 -1
  81. package/lib/services/tag.service.d.ts.map +0 -1
  82. package/lib/services/user.service.d.ts.map +0 -1
  83. package/lib/services/validators.service.d.ts.map +0 -1
  84. package/lib/services/viewer.service.d.ts.map +0 -1
  85. package/lib/services/zone-drawer.service.d.ts.map +0 -1
  86. package/lib/services/zoneChange.service.d.ts.map +0 -1
  87. package/lib/types.service.d.ts.map +0 -1
  88. package/lib/validators/email.directive.d.ts.map +0 -1
  89. package/lib/validators/no-empty.directive.d.ts.map +0 -1
  90. package/lib/validators/number.directive.d.ts.map +0 -1
  91. package/lib/validators/text.directive.d.ts.map +0 -1
  92. package/public-api.d.ts.map +0 -1
  93. package/smarterplan-ngx-smarterplan-core.d.ts.map +0 -1
@@ -99,7 +99,7 @@ export class EquipmentService extends BaseObjectService {
99
99
  }
100
100
  async createEquipment(equip, imageFile, documentFile) {
101
101
  removeNullKeysFromObject(equip);
102
- if (!!this.awsKinesisAnalytics) {
102
+ if (!!this.awsKinesisAnalytics && this.awsKinesisAnalytics.record()) {
103
103
  this.awsKinesisAnalytics.getInstance().record(
104
104
  // @ts-ignore
105
105
  {
@@ -680,4 +680,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
680
680
  type: Inject,
681
681
  args: ['currentAwsKinesisAnalyticsService']
682
682
  }] }, { type: i1.PoiService }, { type: i2.NavigationService }, { type: i3.OperationService }, { type: i4.TicketsService }, { type: i5.NavigatorService }, { type: i6.FilterService }, { type: i7.BaseUserService }, { type: i8.ViewerService }, { type: i9.NgbModal }, { type: i10.ZoneChangeService }]; } });
683
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXF1aXBtZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL21vZGVscy9lcXVpcG1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUMsT0FBTyxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHdCQUF3QixHQUV6QixNQUFNLHVCQUF1QixDQUFDO0FBRS9CLE9BQU8sRUFNTCxRQUFRLEVBRVIsV0FBVyxFQUNYLFNBQVMsRUFHVCxPQUFPLEVBQ1AsVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUFHN0IsT0FBTyxFQUNMLFlBQVksRUFDWixhQUFhLEVBQ2IsNkJBQTZCLEVBQzdCLGNBQWMsR0FDZixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBVXhELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxpQkFBaUI7SUF5RHJELFlBQytCLFdBQWdCLEVBRTNDLDJCQUFnQyxFQUNsQyxVQUFzQixFQUN0QixpQkFBb0MsRUFDNUIsZ0JBQWtDLEVBQ2xDLGNBQThCLEVBQzlCLGdCQUFrQyxFQUNsQyxhQUE0QixFQUM1QixXQUE0QixFQUM1QixhQUE0QixFQUM1QixZQUFzQixFQUN0QixpQkFBb0M7UUFFNUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBVDdCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsa0JBQWEs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LENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDdkIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO29CQUN2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ25DO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFTCxJQUFJLENBQUMsZ0JBQWdCO2lCQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDOUIsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ3ZCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtvQkFDdkIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN6QztZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7NkdBcDBCVSxnQkFBZ0Isa0JBMERqQixtQkFBbUIsYUFDbkIsbUNBQW1DO2lIQTNEbEMsZ0JBQWdCLGNBRmYsTUFBTTsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkEyREksTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUMxQixNQUFNOzJCQUFDLG1DQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdiTW9kYWx9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7U3ViamVjdCwgdGFrZVVudGlsfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIG9wZW5Nb2RhbEZvclZpc2l0U3dpdGNoLFxuICByZW1vdmVOdWxsS2V5c0Zyb21PYmplY3QsXG4gIHdhaXRVbnRpbCxcbn0gZnJvbSAnLi4vLi4vaGVscGVycy5zZXJ2aWNlJztcbmltcG9ydCB7TWF0dGVydGFnRGF0YX0gZnJvbSAnLi4vLi4vbWF0dGVydGFnRGF0YSc7XG5pbXBvcnQge1xuICBOb3RlLFxuICBab25lLFxuICBFcXVpcG1lbnQsXG4gIEVxdWlwbWVudERvY3VtZW50LFxuICBUaWNrZXQsXG4gIFR5cGVOb3RlLFxuICBNaXNzaW9uLFxuICBFdmVudFN0YXR1cyxcbiAgRXZlbnRUeXBlLFxuICBPcGVyYXRpb24sXG4gIFBPSSxcbiAgUG9pVHlwZSxcbiAgUm9sZVN0YXR1cyxcbn0gZnJvbSAnLi4vLi4vdHlwZXMuc2VydmljZSc7XG5pbXBvcnQge0ZpbHRlclNlcnZpY2V9IGZyb20gJy4uL2ZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7TmF2aWdhdG9yU2VydmljZX0gZnJvbSAnLi4vbmF2aWdhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgZGVsZXRlRnJvbVMzLFxuICBnZXRTaWduZWRGaWxlLFxuICBnZXRTaWduZWRJbWFnZVVybEZvckVxdWlwbWVudCxcbiAgdXBsb2FkRmlsZVRvUzMsXG59IGZyb20gJy4uL3MzLnNlcnZpY2UnO1xuaW1wb3J0IHtCYXNlVXNlclNlcnZpY2V9IGZyb20gJy4uL3VzZXIuc2VydmljZSc7XG5pbXBvcnQge1ZpZXdlclNlcnZpY2V9IGZyb20gJy4uL3ZpZXdlci5zZXJ2aWNlJztcbmltcG9ydCB7QmFzZU9iamVjdFNlcnZpY2V9IGZyb20gJy4vYmFzZS1vYmplY3Quc2VydmljZSc7XG5pbXBvcnQge05hdmlnYXRpb25TZXJ2aWNlfSBmcm9tICcuL25hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQge09wZXJhdGlvblNlcnZpY2V9IGZyb20gJy4vb3BlcmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtQb2lTZXJ2aWNlfSBmcm9tICcuL3BvaS5zZXJ2aWNlJztcbmltcG9ydCB7VGlja2V0c1NlcnZpY2V9IGZyb20gJy4vdGlja2V0LnNlcnZpY2UnO1xuaW1wb3J0IHtab25lQ2hhbmdlU2VydmljZX0gZnJvbSBcIi4uL3pvbmVDaGFuZ2Uuc2VydmljZVwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRXF1aXBtZW50U2VydmljZSBleHRlbmRzIEJhc2VPYmplY3RTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBwcmVmaXggPSB7XG4gICAgdGVjaG5pY2FsOiAnZXF1aXBtZW50cy9ub3RlL3RlY2huaWNhbC8nLFxuICAgIGltYWdlOiAnZXF1aXBtZW50cy9ub3RlL2ltYWdlLycsXG4gICAgZmluYW5jaWFsOiAnZXF1aXBtZW50cy9ub3RlL2ZpbmFuY2lhbC8nLFxuICAgIGluZm9ybWF0aW9uOiAnZXF1aXBtZW50cy9ub3RlL2luZm9ybWF0aW9uLycsXG4gICAgb3RoZXI6ICdlcXVpcG1lbnRzL25vdGUvb3RoZXIvJyxcbiAgICBjb250cmFjdHVhbDogJ2VxdWlwbWVudHMvbm90ZS9jb250cmFjdHVhbC8nLFxuICB9O1xuXG4gIGVxdWlwbWVudHNVcGRhdGVkOiBTdWJqZWN0PHtcbiAgICBzcGFjZTogRXF1aXBtZW50W107XG4gICAgem9uZTogRXF1aXBtZW50W107XG4gIH0+ID0gbmV3IFN1YmplY3QoKTtcblxuICBjdXJyZW50RXF1aXBtZW50czoge1xuICAgIHNwYWNlOiBFcXVpcG1lbnRbXTtcbiAgICB6b25lc01hcDogTWFwPHN0cmluZywgRXF1aXBtZW50W10+O1xuICB9ID0ge1xuICAgIHNwYWNlOiBbXSxcbiAgICB6b25lc01hcDogbmV3IE1hcCgpLFxuICB9O1xuXG4gIGVxdWlwbWVudHNUYWdzOiBTdWJqZWN0PEVxdWlwbWVudFtdPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgem9uZUlERmlsdGVyOiBzdHJpbmc7XG5cbiAgY3VycmVudFpvbmU6IFpvbmU7XG5cbiAgY3VycmVudFNwYWNlSUQ6IHN0cmluZztcblxuICBmbG9vcnNQZXJTcGFjZTogWm9uZVtdID0gbnVsbDtcblxuICAvKiogTnVsbCBtZWFucyB3ZSBkbyBub3QgYXBwbHkgYSBmaWx0ZXIsIGVtcHR5IGFycmF5IChbXSksIG1lYW5zIHdlIHRoYXQgd2UgaGlkZSBhbGwgZXF1aXBtZW50ICovXG4gIGVxdWlwbWVudERvbWFpbkZpbHRlcjogc3RyaW5nW10gPSBudWxsO1xuXG4gIHVwZGF0aW5nOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcblxuICBjdXJyZW50bHlVcGRhdGluZyA9IGZhbHNlO1xuXG4gIGN1cnJlbnRTd2VlcDogc3RyaW5nO1xuXG4gIGRlbGV0ZU9ic2VydmFibGU6IFN1YmplY3Q8RXF1aXBtZW50PiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY3JlYXRlT2JzZXJ2YWJsZTogU3ViamVjdDxFcXVpcG1lbnQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICB1cGRhdGVPYnNlcnZhYmxlOiBTdWJqZWN0PEVxdWlwbWVudD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHNlbGVjdGVkRmxvb3I6IFpvbmUgPSBudWxsO1xuXG4gIEFQSTogYW55OyAvL0FXU1xuICBhd3NLaW5lc2lzQW5hbHl0aWNzOiBhbnk7IC8vQVdTXG5cbiAgaXNNdXNldW1Vc2VyID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCgnY3VycmVudEFQSVNlcnZpY2UnKSBhcGlJbmplY3RlZDogYW55LFxuICAgIEBJbmplY3QoJ2N1cnJlbnRBd3NLaW5lc2lzQW5hbHl0aWNzU2VydmljZScpXG4gICAgICBhd3NLaW5lc2lzQW5hbHl0aWNzSW5qZWN0ZWQ6IGFueSxcbiAgICBwb2lTZXJ2aWNlOiBQb2lTZXJ2aWNlLFxuICAgIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIG9wZXJhdGlvblNlcnZpY2U6IE9wZXJhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aWNrZXRzU2VydmljZTogVGlja2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBCYXNlVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB2aWV3ZXJTZXJ2aWNlOiBWaWV3ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcbiAgICBwcml2YXRlIHpvbmVDaGFuZ2VTZXJ2aWNlOiBab25lQ2hhbmdlU2VydmljZVxuICApIHtcbiAgICBzdXBlcihwb2lTZXJ2aWNlLCBuYXZpZ2F0aW9uU2VydmljZSk7XG5cbiAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xuICAgIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcyA9IGF3c0tpbmVzaXNBbmFseXRpY3NJbmplY3RlZDtcblxuICAgIHRoaXMuaXNNdXNldW1Vc2VyID0gdGhpcy51c2VyU2VydmljZS5oYXNPbmx5TXVzZXVtUm9sZSgpO1xuICAgIHRoaXMuaW5pdFN1YnNjcmlwdGlvbnMoKTtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLmlzQ2hhbmdlZC5zdWJzY3JpYmUoKGlzQ29ubmVjdGVkKSA9PiB7XG4gICAgICBpZiAoaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgdGhpcy5pc011c2V1bVVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmhhc09ubHlNdXNldW1Sb2xlKCk7XG4gICAgICAgIHRoaXMuaW5pdFN1YnNjcmlwdGlvbnMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2UuZmxvb3JIYXNDaGFuZ2VkLnN1YnNjcmliZSgoZmxvb3IpPT57XG4gICAgICBpZiAoZmxvb3Ipe1xuICAgICAgICB0aGlzLnNlbGVjdGVkRmxvb3IgPSBmbG9vcjtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlYWRFcXVpcG1lbnQoaWQ6IHN0cmluZyk6IFByb21pc2U8RXF1aXBtZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5HZXRFcXVpcG1lbnQoaWQpLnRoZW4oYXN5bmMgKHJlY2VpdmVkRXF1aXApID0+IHtcbiAgICAgIGxldCBlcXVpcDogRXF1aXBtZW50O1xuICAgICAgaWYgKHJlY2VpdmVkRXF1aXApIHtcbiAgICAgICAgZXF1aXAgPSByZWNlaXZlZEVxdWlwO1xuICAgICAgICBlcXVpcCA9IGF3YWl0IHRoaXMuZ2V0U2lnbmVkVXJsc0ZvckVxdWlwbWVudChyZWNlaXZlZEVxdWlwKTtcbiAgICAgICAgaWYgKGVxdWlwLmRvbWFpbikge1xuICAgICAgICAgIGlmIChlcXVpcC5kb21haW4ucGFyZW50SUQpIHtcbiAgICAgICAgICAgIGVxdWlwLmNoaWxkRG9tYWluID0gZXF1aXAuZG9tYWluO1xuICAgICAgICAgICAgZXF1aXAucGFyZW50RG9tYWluID0gZXF1aXAuZG9tYWluLnBhcmVudDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXF1aXAucGFyZW50RG9tYWluID0gZXF1aXAuZG9tYWluO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZXF1aXAuc3ViZXF1aXBtZW50c0lEcykge1xuICAgICAgICAgIGNvbnN0IHN1YkVxdWlwcyA9IFtdO1xuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgZXF1aXAuc3ViZXF1aXBtZW50c0lEcy5tYXAoYXN5bmMgKHN1YklkKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHN1YkVxdWlwID0gYXdhaXQgdGhpcy5BUEkuR2V0RXF1aXBtZW50KHN1YklkKTtcbiAgICAgICAgICAgICAgc3ViRXF1aXBzLnB1c2goc3ViRXF1aXApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICAgIGVxdWlwLnN1YkVxdWlwbWVudHMgPSBzdWJFcXVpcHM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBlcXVpcDtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUVxdWlwbWVudChcbiAgICBlcXVpcDogRXF1aXBtZW50LFxuICAgIGltYWdlRmlsZTogRmlsZSxcbiAgICBkb2N1bWVudEZpbGU6IEZpbGVcbiAgKTogUHJvbWlzZTxFcXVpcG1lbnQgfCB2b2lkPiB7XG4gICAgcmVtb3ZlTnVsbEtleXNGcm9tT2JqZWN0KGVxdWlwKTtcbiAgICBpZiAoISF0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MpIHtcbiAgICAgIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5nZXRJbnN0YW5jZSgpLnJlY29yZChcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZXZlbnRUeXBlOiAnT2JqZWN0IENyZWF0aW9uJyxcbiAgICAgICAgICAgIG9iamVjdFR5cGU6ICdlcXVpcG1lbnQnLFxuICAgICAgICAgICAgcG9pOiBlcXVpcCxcbiAgICAgICAgICAgIHVzZXI6IHRoaXMudXNlclNlcnZpY2UuY3UsXG4gICAgICAgICAgICBsb2NhdGlvbklkOiB0aGlzLmN1cnJlbnRTcGFjZUlELFxuICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgem9uZUlkOiB0aGlzLmN1cnJlbnRab25lLmlkLFxuICAgICAgICAgICAgZmxvb3JJZDogdGhpcy5zZWxlY3RlZEZsb29yPy5pZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0cmVhbU5hbWU6ICdzbWFydGVycGxhbktpbmVzaXMtYW5hbHl0aWNzJyxcbiAgICAgICAgICAvLyBwYXJ0aXRpb25LZXk6IFwiXCIsXG4gICAgICAgIH0sXG4gICAgICAgICdBV1NLaW5lc2lzJ1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuQVBJLkNyZWF0ZUVxdWlwbWVudChlcXVpcCkudGhlbihhc3luYyAocmVjZWl2ZWRFcXVpcG1lbnQpID0+IHtcbiAgICAgIGxldCBlcXVpcG1lbnQgPSByZWNlaXZlZEVxdWlwbWVudCBhcyBFcXVpcG1lbnQ7XG4gICAgICBpZiAoZXF1aXBtZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdlcXVpcG1lbnQgY3JlYXRlZDonLCBlcXVpcG1lbnQpO1xuICAgICAgICBpZiAoZG9jdW1lbnRGaWxlKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy51cGxvYWREb2MoZXF1aXBtZW50LCBkb2N1bWVudEZpbGUsIFR5cGVOb3RlLlRFQ0hOSUNBTCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGltYWdlRmlsZSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMudXBsb2FkSW1hZ2UoZXF1aXBtZW50LCBpbWFnZUZpbGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZXF1aXBtZW50O1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0U2lnbmVkVXJsc0ZvckVxdWlwbWVudChlcXVpcDogRXF1aXBtZW50KTogUHJvbWlzZTxFcXVpcG1lbnQ+IHtcbiAgICBjb25zdCBlcXVpcG1lbnQgPSB7Li4uZXF1aXB9O1xuICAgIGlmIChlcXVpcG1lbnQubm90ZXMuaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZG9jcyA9IFtdO1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGVxdWlwbWVudC5ub3Rlcy5pdGVtcy5tYXAoYXN5bmMgKG5vdGUpID0+IHtcbiAgICAgICAgICBlcXVpcG1lbnQuZG9jdW1lbnRhdGlvbkltYWdlVXJsU2lnbmVkID1cbiAgICAgICAgICAgIGF3YWl0IGdldFNpZ25lZEltYWdlVXJsRm9yRXF1aXBtZW50KGVxdWlwbWVudCk7XG4gICAgICAgICAgaWYgKG5vdGUuYXR0YWNobWVudCkge1xuICAgICAgICAgICAgY29uc3Qge2xlbmd0aH0gPSBub3RlLmF0dGFjaG1lbnQuc3BsaXQoJy8nKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gbm90ZS5hdHRhY2htZW50LnNwbGl0KCcvJylbbGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCBhdHRhY2htZW50ID0gYXdhaXQgZ2V0U2lnbmVkRmlsZShub3RlLmF0dGFjaG1lbnQpO1xuICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnQpIHtcbiAgICAgICAgICAgICAgZG9jcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBmaWxlbmFtZSxcbiAgICAgICAgICAgICAgICB1cmw6IG5vdGUuYXR0YWNobWVudCxcbiAgICAgICAgICAgICAgICB1cmxTaWduZWQ6IGF0dGFjaG1lbnQsXG4gICAgICAgICAgICAgICAgbm90ZUlEOiBub3RlLmlkLFxuICAgICAgICAgICAgICB9IGFzIEVxdWlwbWVudERvY3VtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgZXF1aXBtZW50LmRvY3VtZW50cyA9IGRvY3M7XG4gICAgICByZXR1cm4gZXF1aXBtZW50O1xuICAgIH1cbiAgICByZXR1cm4gZXF1aXBtZW50O1xuICB9XG5cbiAgYXN5bmMgZ2V0RXF1aXBtZW50c0ZvclRpY2tldCh0aWNrZXQ6IFRpY2tldCk6IFByb21pc2U8RXF1aXBtZW50W10+IHtcbiAgICBjb25zdCBvcGVyYXRpb25zID0gdGlja2V0Lm9wZXJhdGlvbnMuaXRlbXM7XG4gICAgaWYgKG9wZXJhdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgb3BlcmF0aW9ucy5zb3J0KFxuICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXG4gICAgICAgICAgbmV3IERhdGUoYi5jcmVhdGVkQXQpIC0gbmV3IERhdGUoYS5jcmVhdGVkQXQpXG4gICAgICApO1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIG9wZXJhdGlvbnMubWFwKGFzeW5jIChvcGVyYXRpb24pID0+IHtcbiAgICAgICAgICBvcGVyYXRpb24uZXF1aXBtZW50ID0gYXdhaXQgdGhpcy5yZWFkRXF1aXBtZW50KG9wZXJhdGlvbi5lcXVpcG1lbnRJRCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgICAvLyB0byBrZWVwIHRoZSBzb3J0aW5nIGJ5IGNyZWF0ZWRBdFxuICAgIHJldHVybiBvcGVyYXRpb25zLm1hcCgobykgPT4gby5lcXVpcG1lbnQpO1xuICB9XG5cbiAgYXN5bmMgZ2V0RXF1aXBtZW50c0ZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8RXF1aXBtZW50W10+IHtcbiAgICAvLyBzcGxpdCBieSAxMDBcbiAgICBjb25zdCBsaW1pdCA9IDEwMDtcbiAgICBsZXQgZXF1aXBzVG9rZW4gPSB7ZXF1aXBzOiBbXSwgbmV4dFRva2VuOiBudWxsfTtcbiAgICBkbyB7XG4gICAgICBlcXVpcHNUb2tlbiA9IGF3YWl0IHRoaXMubWVyZ2VFcXVpcG1lbnRzRm9yU3BhY2VXaXRoTmV4dFRva2VuV2l0aExpbWl0KFxuICAgICAgICBzcGFjZUlELFxuICAgICAgICBsaW1pdCxcbiAgICAgICAgZXF1aXBzVG9rZW5cbiAgICAgICk7XG4gICAgfSB3aGlsZSAoZXF1aXBzVG9rZW4ubmV4dFRva2VuKTtcbiAgICByZXR1cm4gZXF1aXBzVG9rZW4uZXF1aXBzO1xuICB9XG5cbiAgYXN5bmMgbWVyZ2VFcXVpcG1lbnRzRm9yU3BhY2VXaXRoTmV4dFRva2VuV2l0aExpbWl0KFxuICAgIHNwYWNlSUQ6IHN0cmluZyxcbiAgICBsaW1pdDogbnVtYmVyLFxuICAgIGVxdWlwc1Rva2VuOiB7IGVxdWlwczogRXF1aXBtZW50W107IG5leHRUb2tlbjogc3RyaW5nIHwgbnVsbCB9XG4gICk6IFByb21pc2U8eyBlcXVpcHM6IEVxdWlwbWVudFtdOyBuZXh0VG9rZW46IHN0cmluZyB8IG51bGwgfT4ge1xuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX19cbiAgICAgIC5FcXVpcG1lbnRzQnlTcGFjZShcbiAgICAgICAgc3BhY2VJRCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgJ0RFU0MnLFxuICAgICAgICBudWxsLFxuICAgICAgICBsaW1pdCxcbiAgICAgICAgZXF1aXBzVG9rZW4ubmV4dFRva2VuIC8vIG5leHRUb2tlblxuICAgICAgKVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGNvbnN0IGVxdWlwc0xpbWl0ID0gcmVzcG9uc2UuaXRlbXM7XG4gICAgICAgIGNvbnN0IGVxdWlwc09iamVjdCA9IHtcbiAgICAgICAgICBlcXVpcHM6IFsuLi5lcXVpcHNUb2tlbi5lcXVpcHMsIC4uLmVxdWlwc0xpbWl0XSxcbiAgICAgICAgICBuZXh0VG9rZW46IHJlc3BvbnNlLm5leHRUb2tlbixcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGVxdWlwc09iamVjdDtcbiAgICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXBsb2FkSW1hZ2VGb3JBbGxFcXVpcG1lbnRzKFxuICAgIGVxdWlwbWVudHM6IEVxdWlwbWVudFtdLFxuICAgIGltYWdlRmlsZTogRmlsZVxuICApOiBQcm9taXNlPEVxdWlwbWVudFtdPiB7XG4gICAgaWYgKGVxdWlwbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIHVwbG9hZEZpbGVUb1MzKHRoaXMucHJlZml4LmltYWdlLCBpbWFnZUZpbGUsICdCQVRDSCcpLnRoZW4oXG4gICAgICBhc3luYyAodXJsKSA9PiB7XG4gICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICBjb25zdCBlcXVpcHMgPSBbXTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGVxdWlwIG9mIGVxdWlwbWVudHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRNaXNzaW9uID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihcbiAgICAgICAgICAgICAgZXF1aXAuc3BhY2VJRFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVOb3RlKHtcbiAgICAgICAgICAgICAgYXR0YWNobWVudDogdXJsLFxuICAgICAgICAgICAgICB0eXBlOiBUeXBlTm90ZS5JTUFHRSxcbiAgICAgICAgICAgICAgZXF1aXBtZW50SUQ6IGVxdWlwLmlkLFxuICAgICAgICAgICAgICBvd25lck1pc3Npb25JRDogY3VycmVudE1pc3Npb24gPyBjdXJyZW50TWlzc2lvbi5pZCA6IG51bGwsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZSA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVFcXVpcG1lbnQoe1xuICAgICAgICAgICAgICBpZDogZXF1aXAuaWQsXG4gICAgICAgICAgICAgIHBob3RvOiB1cmwsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGVxdWlwcy5wdXNoKHVwZGF0ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBlcXVpcHM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBhc3luYyB1cGxvYWRJbWFnZShlcXVpcG1lbnQ6IEVxdWlwbWVudCwgaW1hZ2VGaWxlOiBGaWxlKTogUHJvbWlzZTxOb3RlPiB7XG4gICAgcmV0dXJuIHVwbG9hZEZpbGVUb1MzKHRoaXMucHJlZml4LmltYWdlLCBpbWFnZUZpbGUsIGVxdWlwbWVudC5pZCkudGhlbihcbiAgICAgIGFzeW5jICh1cmwpID0+IHtcbiAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRNaXNzaW9uID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihcbiAgICAgICAgICAgIGVxdWlwbWVudC5zcGFjZUlEXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBub3RlID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZU5vdGUoe1xuICAgICAgICAgICAgYXR0YWNobWVudDogdXJsLFxuICAgICAgICAgICAgdHlwZTogVHlwZU5vdGUuSU1BR0UsXG4gICAgICAgICAgICBlcXVpcG1lbnRJRDogZXF1aXBtZW50LmlkLFxuICAgICAgICAgICAgb3duZXJNaXNzaW9uSUQ6IGN1cnJlbnRNaXNzaW9uID8gY3VycmVudE1pc3Npb24uaWQgOiBudWxsLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVFcXVpcG1lbnQoe1xuICAgICAgICAgICAgaWQ6IGVxdWlwbWVudC5pZCxcbiAgICAgICAgICAgIHBob3RvOiB1cmwsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIG5vdGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZUVxdWlwbWVudChcbiAgICBlcXVpcDogYW55LFxuICAgIGZpbGU6IEZpbGUgPSBudWxsLFxuICAgIG5vdGVUeXBlOiBUeXBlTm90ZSA9IG51bGxcbiAgKTogUHJvbWlzZTxFcXVpcG1lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fXG4gICAgICAuVXBkYXRlRXF1aXBtZW50KGVxdWlwKVxuICAgICAgLnRoZW4oYXN5bmMgKHJlY2VpdmVkRXF1aXBtZW50KSA9PiB7XG4gICAgICAgIGxldCBlcXVpcG1lbnQgPSByZWNlaXZlZEVxdWlwbWVudCBhcyBFcXVpcG1lbnQ7XG4gICAgICAgIGlmIChlcXVpcG1lbnQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnZXF1aXBtZW50IHVwZGF0ZWQ6JywgZXF1aXBtZW50KTtcbiAgICAgICAgICBpZiAobm90ZVR5cGUpIHtcbiAgICAgICAgICAgIHN3aXRjaCAobm90ZVR5cGUpIHtcbiAgICAgICAgICAgICAgY2FzZSBUeXBlTm90ZS5JTUFHRTpcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnVwbG9hZEltYWdlKGVxdWlwbWVudCwgZmlsZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy51cGxvYWREb2MoZXF1aXBtZW50LCBmaWxlLCBub3RlVHlwZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlcXVpcG1lbnQ7XG4gICAgICB9KTtcbiAgfVxuXG4gIGdldFByZWZpeERvYyh0eXBlOiBUeXBlTm90ZSkge1xuICAgIGxldCBwcmVmaXg7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFR5cGVOb3RlLklORk9STUFUSU9OOlxuICAgICAgICBwcmVmaXggPSB0aGlzLnByZWZpeC5pbmZvcm1hdGlvbjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFR5cGVOb3RlLkZJTkFOQ0lBTDpcbiAgICAgICAgcHJlZml4ID0gdGhpcy5wcmVmaXguZmluYW5jaWFsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHlwZU5vdGUuQ09OVFJBQ1RVQUw6XG4gICAgICAgIHByZWZpeCA9IHRoaXMucHJlZml4LmNvbnRyYWN0dWFsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHlwZU5vdGUuT1RIRVI6XG4gICAgICAgIHByZWZpeCA9IHRoaXMucHJlZml4Lm90aGVyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHlwZU5vdGUuSU1BR0U6XG4gICAgICAgIHByZWZpeCA9IHRoaXMucHJlZml4LmltYWdlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHByZWZpeCA9IHRoaXMucHJlZml4LnRlY2huaWNhbDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBwcmVmaXg7XG4gIH1cblxuICBhc3luYyB1cGxvYWREb2NGb3JBbGxFcXVpcG1lbnRzKFxuICAgIGVxdWlwbWVudHM6IEVxdWlwbWVudFtdLFxuICAgIGRvY3VtZW50RmlsZTogRmlsZSxcbiAgICB0eXBlOiBUeXBlTm90ZVxuICApIHtcbiAgICBpZiAoZXF1aXBtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgcHJlZml4ID0gdGhpcy5nZXRQcmVmaXhEb2ModHlwZSk7XG4gICAgY29uc3QgdXJsID0gYXdhaXQgdXBsb2FkRmlsZVRvUzMocHJlZml4LCBkb2N1bWVudEZpbGUsICdCQVRDSCcpO1xuICAgIGlmICh1cmwpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZUxpc3QgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgZXF1aXAgb2YgZXF1aXBtZW50cykge1xuICAgICAgICBjb25zdCBtaXNzaW9uID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihlcXVpcC5zcGFjZUlEKTtcbiAgICAgICAgY29uc3QgbmV3RXF1aXAgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uQ3JlYXRlTm90ZSh7XG4gICAgICAgICAgYXR0YWNobWVudDogdXJsLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgZXF1aXBtZW50SUQ6IGVxdWlwLmlkLFxuICAgICAgICAgIG93bmVyTWlzc2lvbklEOiBtaXNzaW9uID8gbWlzc2lvbi5pZCA6IG51bGwsXG4gICAgICAgIH0pO1xuICAgICAgICB1cGRhdGVMaXN0LnB1c2gobmV3RXF1aXApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVwZGF0ZUxpc3Q7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGFzeW5jIHVwbG9hZERvYyhcbiAgICBlcXVpcG1lbnQ6IEVxdWlwbWVudCxcbiAgICBkb2N1bWVudEZpbGU6IEZpbGUsXG4gICAgdHlwZTogVHlwZU5vdGVcbiAgKTogUHJvbWlzZTxOb3RlPiB7XG4gICAgY29uc3QgcHJlZml4ID0gdGhpcy5nZXRQcmVmaXhEb2ModHlwZSk7XG4gICAgY29uc3QgbWlzc2lvbiA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb24oZXF1aXBtZW50LnNwYWNlSUQpO1xuICAgIHJldHVybiB1cGxvYWRGaWxlVG9TMyhwcmVmaXgsIGRvY3VtZW50RmlsZSwgZXF1aXBtZW50LmlkKS50aGVuKFxuICAgICAgYXN5bmMgKHVybCkgPT4ge1xuICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVOb3RlKHtcbiAgICAgICAgICAgIGF0dGFjaG1lbnQ6IHVybCxcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBlcXVpcG1lbnRJRDogZXF1aXBtZW50LmlkLFxuICAgICAgICAgICAgb3duZXJNaXNzaW9uSUQ6IG1pc3Npb24gPyBtaXNzaW9uLmlkIDogbnVsbCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlRXF1aXBtZW50KGVxdWlwOiBFcXVpcG1lbnQpOiBQcm9taXNlPEVxdWlwbWVudD4ge1xuICAgIGNvbnN0IGRlbGV0ZWQgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlRXF1aXBtZW50KHtpZDogZXF1aXAuaWR9KTtcbiAgICBjb25zb2xlLmxvZygnRGVsZXRlZCBlcXVpcG1lbnQnLCBkZWxldGVkKTtcblxuICAgIC8vIGRlbGV0ZSBQT0lcbiAgICBjb25zdCBbcG9pXSA9IGVxdWlwLnBvaXMuaXRlbXM7XG4gICAgaWYgKHBvaSkge1xuICAgICAgYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmRlbGV0ZVBvaShwb2kuaWQpO1xuICAgIH1cbiAgICAvLyBkZWxldGUgbm90ZXMgcmVsYXRlZFxuICAgIGlmIChlcXVpcC5ub3Rlcy5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgZXF1aXAubm90ZXMuaXRlbXMubWFwKGFzeW5jIChub3RlOiBOb3RlKSA9PiB7XG4gICAgICAgICAgLy8gZGVsZXRlIGZpbGVzIGZyb20gUzNcbiAgICAgICAgICAvKiogTm90IHNoYXJlZCB3aXRoIG90aGVyIGVxdWlwbWVudCAqL1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG5vdGUuYXR0YWNobWVudCAmJlxuICAgICAgICAgICAgIW5vdGUuYXR0YWNobWVudC5zcGxpdCgnLycpLnBvcCgpLnN0YXJ0c1dpdGgoJ0JBVENIXycpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBhd2FpdCBkZWxldGVGcm9tUzMobm90ZS5hdHRhY2htZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkRlbGV0ZU5vdGUoe2lkOiBub3RlLmlkfSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgICAvLyBkZWxldGUgb3BlcmF0aW9ucyAocmVtb3ZlIGZyb20gbGlua2VkIHRpY2tldHMpXG4gICAgYXdhaXQgdGhpcy5vcGVyYXRpb25TZXJ2aWNlLmRlbGV0ZU9wZXJhdGlvbnNGb3JFcXVpcG1lbnQoZXF1aXAuaWQpO1xuICAgIHJldHVybiBkZWxldGVkO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRXF1aXBtZW50TG9jYXRpb24oXG4gICAgZXF1aXA6IEVxdWlwbWVudCxcbiAgICB0YWdEYXRhOiBNYXR0ZXJ0YWdEYXRhXG4gICk6IFByb21pc2U8UE9JPiB7XG4gICAgY29uc3QgcG9pSW5wdXQgPSB7XG4gICAgICBjb29yZGluYXRlOiB0YWdEYXRhLmdldENvb3JkaW5hdGVTdHJpbmcoKSxcbiAgICAgIHR5cGU6IFBvaVR5cGUuRVFVSVBNRU5ULFxuICAgICAgZWxlbWVudElEOiBlcXVpcC5pZCxcbiAgICAgIG1ldGFkYXRhOiB0YWdEYXRhLmdldE1ldGFkYXRhU3RyaW5nKCksXG4gICAgICBtYXR0ZXJwb3J0U3dlZXBJRDogdGFnRGF0YS5nZXRTd2VlcElEKCksXG4gICAgfSBhcyBQT0k7XG4gICAgY29uc3QgcG9pID0gYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmNyZWF0ZVBPSUZvclNwYWNlSUQocG9pSW5wdXQpO1xuICAgIHJldHVybiBwb2k7XG4gIH1cblxuICBhc3luYyByZW1vdmVUaWNrZXRGcm9tRXF1aXBtZW50KFxuICAgIHRpY2tldDogVGlja2V0LFxuICAgIGVxdWlwOiBFcXVpcG1lbnRcbiAgKTogUHJvbWlzZTxPcGVyYXRpb24+IHtcbiAgICBjb25zdCBvcGVyYXRpb25FcXVpcCA9XG4gICAgICBhd2FpdCB0aGlzLm9wZXJhdGlvblNlcnZpY2UuZ2V0T3BlcmF0aW9uc0J5RXF1aXBtZW50SUQoZXF1aXAuaWQpO1xuICAgIGNvbnN0IG9wZXJhdGlvblRvRGVsZXRlID0gb3BlcmF0aW9uRXF1aXAuZmluZChcbiAgICAgIChvcCkgPT4gb3AudGlja2V0SUQgPT09IHRpY2tldC5pZFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMub3BlcmF0aW9uU2VydmljZVxuICAgICAgLmRlbGV0ZU9wZXJhdGlvbihvcGVyYXRpb25Ub0RlbGV0ZS5pZClcbiAgICAgIC50aGVuKChyZXMpID0+IHtcbiAgICAgICAgdGhpcy50aWNrZXRzU2VydmljZS5hZGRFdmVudFRvVGlja2V0KHRpY2tldCBhcyBUaWNrZXQsIHtcbiAgICAgICAgICB0aXRsZTogJ0VxdWlwZW1lbnQgcmV0aXLDqSBkdSB0aWNrZXQnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgRXF1aXBlbWVudCAke2VxdWlwLm5hbWV9IGEgw6l0w6kgcmV0aXLDqSBkdSB0aWNrZXRgLFxuICAgICAgICAgIHN0YXR1czogRXZlbnRTdGF0dXMuVU5MSU5LRURfRlJPTV9FUVVJUE1FTlQsXG4gICAgICAgICAgdHlwZTogRXZlbnRUeXBlLlRJQ0tFVCxcbiAgICAgICAgICB0cmFuc2xhdGlvblBhdGg6ICd0aWNrZXRFdmVudC50aWNrZXQudW5saW5rZWRGcm9tRXF1aXBtZW50JyxcbiAgICAgICAgICBtZXRhZGF0YTogSlNPTi5zdHJpbmdpZnkoe2VxdWlwbWVudDogZXF1aXAubmFtZX0pLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgaW5pdEVxdWlwcygpIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudFNwYWNlSUQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy51cGRhdGluZy5uZXh0KHRydWUpO1xuICAgIHRoaXMuY3VycmVudGx5VXBkYXRpbmcgPSB0cnVlO1xuXG4gICAgbGV0IGVxTGlzdCA9IGF3YWl0IHRoaXMuZ2V0RXF1aXBtZW50c0ZvclNwYWNlKHRoaXMuY3VycmVudFNwYWNlSUQpO1xuICAgIGVxTGlzdCA9IGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJFcXVpcG1lbnRzRm9yQ3VycmVudFVzZXJJblNwYWNlKFxuICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCxcbiAgICAgIGVxTGlzdFxuICAgICk7XG4gICAgLy8gY29uc29sZS5sb2coZXFMaXN0KTtcbiAgICBpZiAoZXFMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBmaWx0ZXJlZEVxdWlwcyA9IGVxTGlzdC5maWx0ZXIoXG4gICAgICAgIChlcXVpcG1lbnQpID0+ICF0aGlzLmlzQXJjaGl2ZWQoZXF1aXBtZW50KVxuICAgICAgKTtcblxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGZpbHRlcmVkRXF1aXBzLm1hcChhc3luYyAoZXF1aXApID0+IHtcbiAgICAgICAgICBlcXVpcC5kb2N1bWVudGF0aW9uSW1hZ2VVcmxTaWduZWQgPVxuICAgICAgICAgICAgYXdhaXQgZ2V0U2lnbmVkSW1hZ2VVcmxGb3JFcXVpcG1lbnQoZXF1aXApO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIGlmICh0aGlzLmVxdWlwbWVudERvbWFpbkZpbHRlcikge1xuICAgICAgICBmaWx0ZXJlZEVxdWlwcyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJFcXVpcG1lbnRzQnlEb21haW5MaXN0KFxuICAgICAgICAgIGZpbHRlcmVkRXF1aXBzLFxuICAgICAgICAgIHRoaXMuZXF1aXBtZW50RG9tYWluRmlsdGVyXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlID0gZmlsdGVyZWRFcXVpcHM7XG4gICAgICBpZiAodGhpcy56b25lSURGaWx0ZXIpIHtcbiAgICAgICAgZmlsdGVyZWRFcXVpcHMgPSAoYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck9iamVjdHNGb3Jab25lKFxuICAgICAgICAgIGZpbHRlcmVkRXF1aXBzLFxuICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyLFxuICAgICAgICAgIHRoaXMuY3VycmVudFpvbmVcbiAgICAgICAgKSkgYXMgRXF1aXBtZW50W107XG4gICAgICB9XG4gICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwLnNldCh0aGlzLnpvbmVJREZpbHRlciwgZmlsdGVyZWRFcXVpcHMpO1xuICAgICAgdGhpcy5lcXVpcG1lbnRzVGFncy5uZXh0KGZpbHRlcmVkRXF1aXBzKTsgLy8gYWRkaW5nIHRhZ3Mgb25seSBmb3IgdGhlIGN1cnJlbnQgem9uZVxuICAgICAgdGhpcy5lcXVpcG1lbnRzVXBkYXRlZC5uZXh0KHtcbiAgICAgICAgc3BhY2U6IHRoaXMuY3VycmVudEVxdWlwbWVudHMuc3BhY2UsXG4gICAgICAgIHpvbmU6IGZpbHRlcmVkRXF1aXBzLFxuICAgICAgfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuem9uZUlERmlsdGVyKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXAuc2V0KHRoaXMuem9uZUlERmlsdGVyLCBbXSk7XG4gICAgICB9XG4gICAgICB0aGlzLmVxdWlwbWVudHNVcGRhdGVkLm5leHQoe3NwYWNlOiBbXSwgem9uZTogW119KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxuICAgIH1cbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmN1cnJlbnRFcXVpcG1lbnRzKTtcbiAgICB0aGlzLnVwZGF0aW5nLm5leHQoZmFsc2UpO1xuICAgIHRoaXMuY3VycmVudGx5VXBkYXRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIGdldEVxdWlwbWVudHNGb3JDdXJyZW50VXNlckZvclNwYWNlKFxuICAgIHNwYWNlSUQsXG4gICAgbWlzc2lvbnM6IE1pc3Npb25bXVxuICApOiBQcm9taXNlPEVxdWlwbWVudFtdPiB7XG4gICAgbGV0IHJlc3VsdHMgPSBbXTtcblxuICAgIGNvbnN0IHNwYWNlTWlzc2lvbnMgPSBtaXNzaW9ucy5maWx0ZXIoKG0pID0+IG0uc3BhY2VJRCA9PT0gc3BhY2VJRCk7XG4gICAgaWYgKHNwYWNlTWlzc2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG4gICAgY29uc3QgY2FuU2VlRXF1aXBzID0gc3BhY2VNaXNzaW9ucy5zb21lKFxuICAgICAgKG0pID0+XG4gICAgICAgIHRoaXMudXNlclNlcnZpY2UubWFuYWdlcnMuaW5jbHVkZXMobS5yb2xlKSB8fFxuICAgICAgICBtLnJvbGUgPT09IFJvbGVTdGF0dXMuU0VSVklDRVxuICAgICk7XG4gICAgaWYgKCFjYW5TZWVFcXVpcHMpIHtcbiAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH1cbiAgICBsZXQgZG9tYWlucyA9IFtdO1xuICAgIGZvciAoY29uc3QgbSBvZiBzcGFjZU1pc3Npb25zKSB7XG4gICAgICBkb21haW5zID0gWy4uLmRvbWFpbnMsIG0uZG9tYWluc107XG4gICAgfVxuICAgIGlmIChkb21haW5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfVxuICAgIHJlc3VsdHMgPSBhd2FpdCB0aGlzLmdldEVxdWlwbWVudHNGb3JTcGFjZShzcGFjZUlEKTtcbiAgICAvLyByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckVxdWlwbWVudHNCeURvbWFpbkxpc3QoXG4gICAgLy8gICAgIHJlc3VsdHMsXG4gICAgLy8gICAgIGRvbWFpbnMsXG4gICAgLy8gKTtcbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZUljb25Gb3JBbGxFcXVpcG1lbnRzSW5TcGFjZShcbiAgICB0YWdJY29uOiBzdHJpbmcsXG4gICAgc3BhY2VJRDogc3RyaW5nLFxuICAgIGRvbWFpbklEOiBzdHJpbmcgPSBudWxsXG4gICk6IFByb21pc2U8eyBlcXVpcHM6IEVxdWlwbWVudFtdOyBwb2lzOiBQT0lbXSB9PiB7XG4gICAgbGV0IGVxdWlwcyA9IGF3YWl0IHRoaXMuZ2V0RXF1aXBtZW50c0ZvclNwYWNlKHNwYWNlSUQpO1xuICAgIGlmIChkb21haW5JRCkge1xuICAgICAgZXF1aXBzID0gZXF1aXBzLmZpbHRlcigoZXF1aXApID0+IGVxdWlwLmRvbWFpbklEID09PSBkb21haW5JRCk7XG4gICAgfVxuICAgIGNvbnN0IHBvaXMgPSBhd2FpdCB0aGlzLnVwZGF0ZUljb25Gb3JBbGxPYmplY3RzKGVxdWlwcywgdGFnSWNvbik7XG4gICAgcmV0dXJuIHtlcXVpcHMsIHBvaXN9O1xuICB9XG5cbiAgLyoqIFJldHVybiB0cnVlIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIGFyY2hpdmVkIHRoaXMgZXF1aXBtZW50ICovXG4gIGlzQXJjaGl2ZWQoZXF1aXBtZW50OiBFcXVpcG1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZXF1aXBtZW50LmFyY2hpdmVkRm9yTWlzc2lvbklEXG4gICAgICA/IGVxdWlwbWVudC5hcmNoaXZlZEZvck1pc3Npb25JRC5pbmNsdWRlcyhcbiAgICAgICAgdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihlcXVpcG1lbnQuc3BhY2VJRCkuaWRcbiAgICAgIClcbiAgICAgIDogZmFsc2U7XG4gIH1cblxuICBzZXRBcmNoaXZlZChlcXVpcG1lbnQ6IEVxdWlwbWVudCwgYXJjaGl2ZWQ6IGJvb2xlYW4pIHtcbiAgICBsZXQgYXJjaGl2ZWRMaXN0ID0gZXF1aXBtZW50LmFyY2hpdmVkRm9yTWlzc2lvbklEXG4gICAgICA/IGVxdWlwbWVudC5hcmNoaXZlZEZvck1pc3Npb25JRFxuICAgICAgOiBbXTtcbiAgICBjb25zdCBtaXNzaW9uSUQgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKGVxdWlwbWVudC5zcGFjZUlEKS5pZDtcblxuICAgIGFyY2hpdmVkTGlzdCA9IGFyY2hpdmVkTGlzdC5maWx0ZXIoKG0pID0+IG0gIT09IG1pc3Npb25JRCk7XG5cbiAgICBpZiAoYXJjaGl2ZWQpIHtcbiAgICAgIGFyY2hpdmVkTGlzdC5wdXNoKG1pc3Npb25JRCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudXBkYXRlRXF1aXBtZW50KHtcbiAgICAgIGlkOiBlcXVpcG1lbnQuaWQsXG4gICAgICBhcmNoaXZlZEZvck1pc3Npb25JRDogYXJjaGl2ZWRMaXN0LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlRmlsZShkb2N1bWVudF86IEVxdWlwbWVudERvY3VtZW50KSB7XG4gICAgYXdhaXQgZGVsZXRlRnJvbVMzKGRvY3VtZW50Xy51cmwpO1xuICAgIGF3YWl0IHRoaXMuQVBJLkRlbGV0ZU5vdGUoe2lkOiBkb2N1bWVudF8ubm90ZUlEfSk7XG4gIH1cblxuICBhc3luYyBuYXZpZ2F0ZVRvRXF1aXBtZW50SW4zRChcbiAgICBlcXVpcG1lbnQ6IEVxdWlwbWVudCxcbiAgICBmb3JjZVN3aXRjaFZpc2l0OiBib29sZWFuID0gZmFsc2VcbiAgKSB7XG4gICAgbGV0IHVybCA9IGB2aXNpdC8ke2VxdWlwbWVudC5zcGFjZUlEfWA7XG4gICAgaWYgKGZvcmNlU3dpdGNoVmlzaXQpIHtcbiAgICAgIHVybCArPSBgL2VxdWlwLyR7ZXF1aXBtZW50LmlkfWA7XG4gICAgfVxuICAgIGNvbnN0IGNhbkdvVG9UYWcgPSBhd2FpdCB0aGlzLnZpZXdlclNlcnZpY2UuYWN0aW9uX21vdmVfdG9fdGFnKFxuICAgICAgYCR7ZXF1aXBtZW50LmlkfWBcbiAgICApO1xuICAgIGlmIChjYW5Hb1RvVGFnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0TW9kZWwzZEFuZFN3ZWVwKGVxdWlwbWVudCk7XG5cbiAgICBpZiAoIXJlc3VsdCB8fCAhcmVzdWx0Lm1vZGVsM0QpIHtcbiAgICAgIGFsZXJ0KCdFcnJvciB3aGlsZSBnZXR0aW5nIHZpcnR1YWwgdmlzaXQgbW9kZWwnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFmb3JjZVN3aXRjaFZpc2l0KSB7XG4gICAgICAvLyBjaGVjayBpZiB3ZSBhcmUgbW92aW5nIHdpdGhpbiB0aGUgc2FtZSAzRCBtb2RlbFxuICAgICAgY29uc3QgY3VycmVudE1vZGVsID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21vZGVsM0QnKTtcbiAgICAgIGlmIChjdXJyZW50TW9kZWwgJiYgY3VycmVudE1vZGVsID09PSByZXN1bHQubW9kZWwzRCkge1xuICAgICAgICAvLyB3ZSBhZGQgdGFnIHRvIHRoZSB2aXNpdFxuICAgICAgICBjb25zdCBwb2kgPSBlcXVpcG1lbnQucG9pcy5pdGVtc1swXTtcbiAgICAgICAgaWYgKHBvaS5jb29yZGluYXRlKSB7XG4gICAgICAgICAgLy8gd2UgZm9yY2UgYWRkIGJlY2F1c2Ugd2UgbWlnaHQgYmUgaW4gYW4gYW5vdGhlciB6b25lXG4gICAgICAgICAgYXdhaXQgdGhpcy52aWV3ZXJTZXJ2aWNlLmFjdGlvbkFkZE9iamVjdEZyb21QT0koZXF1aXBtZW50LCBwb2kpO1xuICAgICAgICAgIGF3YWl0IHRoaXMudmlld2VyU2VydmljZS5hY3Rpb25fbW92ZV90b190YWcoZXF1aXBtZW50LmlkKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyoqIFNpIG9uIG5lIGZvcmNlIHBhcyBsYSB2aXNpdGUsIG9uIGRlbWFuZGUgc2kgb24gdmV1dCBldHJlIHN3aXRjaCAqL1xuICAgICAgICBvcGVuTW9kYWxGb3JWaXNpdFN3aXRjaChcbiAgICAgICAgICB0aGlzLm1vZGFsU2VydmljZSxcbiAgICAgICAgICByZXN1bHQubW9kZWwzRCxcbiAgICAgICAgICBlcXVpcG1lbnQuc3BhY2VJRCxcbiAgICAgICAgICB7c3dlZXBUb01vdmU6IHJlc3VsdC5zd2VlcCwgcm90YXRpb246IHJlc3VsdC5yb3RhdGlvbn1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLyoqIFNpIG9uIGZvcmNlIGxlIHN3aXRjaCBkZSBsYSB2aXNpdCAqL1xuICAgICAgd2luZG93Lm9wZW4oYCR7dXJsfT9tb2RlbDNEPSR7cmVzdWx0Lm1vZGVsM0R9JnN3ZWVwPXRydWVgLCAnX2JsYW5rJyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdXBkYXRlRXF1aXBzRm9yWm9uZSgpIHtcbiAgICB0aGlzLnVwZGF0aW5nLm5leHQodHJ1ZSk7XG4gICAgbGV0IGZpbHRlcmVkRXF1aXBzID0gW107XG4gICAgaWYgKHRoaXMuY3VycmVudEVxdWlwbWVudHMuc3BhY2UubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnpvbmVJREZpbHRlciAmJlxuICAgICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwLmhhcyh0aGlzLnpvbmVJREZpbHRlcilcbiAgICAgICkge1xuICAgICAgICBmaWx0ZXJlZEVxdWlwcyA9IHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXAuZ2V0KHRoaXMuem9uZUlERmlsdGVyKTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJpIGhhdmUgZXF1aXBzIGZvciB0aGlzIHpvbmVcIiwgZmlsdGVyZWRFcXVpcHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlsdGVyZWRFcXVpcHMgPSAoYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck9iamVjdHNGb3Jab25lKFxuICAgICAgICAgIHRoaXMuY3VycmVudEVxdWlwbWVudHMuc3BhY2UsXG4gICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIsXG4gICAgICAgICAgdGhpcy5jdXJyZW50Wm9uZVxuICAgICAgICApKSBhcyBFcXVpcG1lbnRbXTtcblxuICAgICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwLnNldCh0aGlzLnpvbmVJREZpbHRlciwgW1xuICAgICAgICAgIC4uLmZpbHRlcmVkRXF1aXBzLFxuICAgICAgICBdKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmVxdWlwbWVudERvbWFpbkZpbHRlcikge1xuICAgICAgICBmaWx0ZXJlZEVxdWlwcyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJFcXVpcG1lbnRzQnlEb21haW5MaXN0KFxuICAgICAgICAgIGZpbHRlcmVkRXF1aXBzLFxuICAgICAgICAgIHRoaXMuZXF1aXBtZW50RG9tYWluRmlsdGVyXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLmVxdWlwbWVudHNUYWdzLm5leHQoZmlsdGVyZWRFcXVpcHMpOyAvLyBhZGRpbmcgdGFncyBvbmx5IGZvciB0aGUgY3VycmVudCB6b25lXG4gICAgICB0aGlzLmVxdWlwbWVudHNVcGRhdGVkLm5leHQoe1xuICAgICAgICBzcGFjZTogdGhpcy5jdXJyZW50RXF1aXBtZW50cy5zcGFjZSxcbiAgICAgICAgem9uZTogZmlsdGVyZWRFcXVpcHMsXG4gICAgICB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVxdWlwbWVudHNVcGRhdGVkLm5leHQoe3NwYWNlOiBbXSwgem9uZTogW119KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxuICAgIH1cbiAgICB0aGlzLnVwZGF0aW5nLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgdXBkYXRlRHVlVG9EZWxldGUoZGVsZXRlZEVxdWlwbWVudDogRXF1aXBtZW50KSB7XG4gICAgLy8gY29uc29sZS5sb2coXCJ1cGRhdGUgZHVlIHRvIGRlbGV0ZVwiLCBkZWxldGVkRXF1aXBtZW50KTtcbiAgICBjb25zdCBlcXVpcCA9IHRoaXMuY3VycmVudEVxdWlwbWVudHMuc3BhY2UuZmluZChcbiAgICAgIChfZXF1aXApID0+IF9lcXVpcC5pZCA9PT0gZGVsZXRlZEVxdWlwbWVudC5pZFxuICAgICk7XG4gICAgaWYgKGVxdWlwKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuY3VycmVudEVxdWlwbWVudHMuc3BhY2UuaW5kZXhPZihlcXVpcCk7XG4gICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICAgIGZvciAoY29uc3Qgem9uZSBvZiB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwLmtleXMoKSkge1xuICAgICAgY29uc3QgZXF1aXBUb0RlbGV0ZSA9IHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXBcbiAgICAgICAgLmdldCh6b25lKVxuICAgICAgICAuZmluZCgoX2VxdWlwKSA9PiBfZXF1aXAuaWQgPT09IGRlbGV0ZWRFcXVpcG1lbnQuaWQpO1xuICAgICAgaWYgKGVxdWlwVG9EZWxldGUpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwXG4gICAgICAgICAgLmdldCh6b25lKVxuICAgICAgICAgIC5pbmRleE9mKGVxdWlwVG9EZWxldGUpO1xuICAgICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwLmdldCh6b25lKS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmVxdWlwbWVudHNVcGRhdGVkLm5leHQoe1xuICAgICAgc3BhY2U6IHRoaXMuY3VycmVudEVxdWlwbWVudHMuc3BhY2UsXG4gICAgICB6b25lOiB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwLmdldCh0aGlzLnpvbmVJREZpbHRlciksXG4gICAgfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcbiAgfVxuXG4gIHVwZGF0ZUR1ZVRvQ3JlYXRlKGNyZWF0ZWRFcXVpcDogRXF1aXBtZW50KSB7XG4gICAgdGhpcy5jdXJyZW50RXF1aXBtZW50cy5zcGFjZS51bnNoaWZ0KGNyZWF0ZWRFcXVpcCk7XG4gICAgdGhpcy5jdXJyZW50RXF1aXBtZW50cy56b25lc01hcFxuICAgICAgLmdldCh0aGlzLnpvbmVJREZpbHRlcilcbiAgICAgIC51bnNoaWZ0KGNyZWF0ZWRFcXVpcCk7XG4gICAgdGhpcy5lcXVpcG1lbnRzVXBkYXRlZC5uZXh0KHtcbiAgICAgIHNwYWNlOiB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLFxuICAgICAgem9uZTogdGhpcy5jdXJyZW50RXF1aXBtZW50cy56b25lc01hcC5nZXQodGhpcy56b25lSURGaWx0ZXIpLFxuICAgIH0pOyAvLyBmb3IgbGF0ZXJhbCBtZW51XG4gIH1cblxuICB1cGRhdGVEdWVUb0VxdWlwVXBkYXRlZCh1cGRhdGVkRXF1aXA6IEVxdWlwbWVudCkge1xuICAgIGNvbnN0IGVxdWlwID0gdGhpcy5jdXJyZW50RXF1aXBtZW50cy5zcGFjZS5maW5kKFxuICAgICAgKF9lcXVpcCkgPT4gX2VxdWlwLmlkID09PSB1cGRhdGVkRXF1aXAuaWRcbiAgICApO1xuICAgIGlmIChlcXVpcCkge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLmluZGV4T2YoZXF1aXApO1xuICAgICAgaWYgKHRoaXMuaXNBcmNoaXZlZChlcXVpcCkpIHtcbiAgICAgICAgLy8gd2UgcmVtb3ZlIGFyY2hpdmVkIGVxdWlwbWVudFxuICAgICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLnNwbGljZShpbmRleCwgMSwgdXBkYXRlZEVxdWlwKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCB6b25lIG9mIHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXAua2V5cygpKSB7XG4gICAgICBjb25zdCBlcXVpcFRvVXBkID0gdGhpcy5jdXJyZW50RXF1aXBtZW50cy56b25lc01hcFxuICAgICAgICAuZ2V0KHpvbmUpXG4gICAgICAgIC5maW5kKChfZXF1aXApID0+IF9lcXVpcC5pZCA9PT0gdXBkYXRlZEVxdWlwLmlkKTtcbiAgICAgIGlmIChlcXVpcFRvVXBkKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jdXJyZW50RXF1aXBtZW50cy56b25lc01hcFxuICAgICAgICAgIC5nZXQoem9uZSlcbiAgICAgICAgICAuaW5kZXhPZihlcXVpcFRvVXBkKTtcbiAgICAgICAgaWYgKHRoaXMuaXNBcmNoaXZlZChlcXVpcCkpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwLmdldCh6b25lKS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXBcbiAgICAgICAgICAgIC5nZXQoem9uZSlcbiAgICAgICAgICAgIC5zcGxpY2UoaW5kZXgsIDEsIHVwZGF0ZWRFcXVpcCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5lcXVpcG1lbnRzVXBkYXRlZC5uZXh0KHtcbiAgICAgIHNwYWNlOiB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLFxuICAgICAgem9uZTogdGhpcy5jdXJyZW50RXF1aXBtZW50cy56b25lc01hcC5nZXQodGhpcy56b25lSURGaWx0ZXIpLFxuICAgIH0pOyAvLyBmb3IgbGF0ZXJhbCBtZW51XG4gIH1cblxuICBpbml0U3Vic2NyaXB0aW9ucygpIHtcbiAgICBpZiAoIXRoaXMuaXNNdXNldW1Vc2VyKSB7XG4gICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVDaGFuZ2VcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKCh6b25lKSA9PiB7XG4gICAgICAgICAgaWYgKCF6b25lIHx8ICF0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudFNwYWNlSUQpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQgPSB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudFNwYWNlSUQ7XG4gICAgICAgICAgICB0aGlzLmVxdWlwbWVudHNUYWdzLm5leHQobnVsbCk7XG4gICAgICAgICAgICB0aGlzLmVxdWlwbWVudHNVcGRhdGVkLm5leHQoe3NwYWNlOiBbXSwgem9uZTogbnVsbH0pO1xuICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50RXF1aXBtZW50cyA9IHtcbiAgICAgICAgICAgICAgc3BhY2U6IFtdLFxuICAgICAgICAgICAgICB6b25lc01hcDogbmV3IE1hcCgpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHpvbmUuaWQgIT09IHRoaXMuem9uZUlERmlsdGVyKSB7XG4gICAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlciA9IHpvbmUuaWQ7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRab25lID0gem9uZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEID09PSB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudFNwYWNlSUQpIHtcbiAgICAgICAgICAgICAgLy8gc2FtZSBzcGFjZSwgIG9ubHkgem9uZSB1cGRhdGVcbiAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXG4gICAgICAgICAgICAgIC8vICAgICBcImdvaW5nIHRvIHVwZGF0ZSBlcXVpcHMgZm9yIHpvbmUgKHNhbWUgc3BhY2UpXCIsXG4gICAgICAgICAgICAgIC8vICAgICB6b25lLFxuICAgICAgICAgICAgICAvLyApO1xuXG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlRXF1aXBzRm9yWm9uZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50U3BhY2VJRDtcbiAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXG4gICAgICAgICAgICAgIC8vICAgICBcImdvaW5nIHRvIGluaXQgZXF1aXBzIGZvciB6b25lIGZvciBuZXcgc3BhY2VcIixcbiAgICAgICAgICAgICAgLy8gICAgIHRoaXMuY3VycmVudFNwYWNlSUQsXG4gICAgICAgICAgICAgIC8vICk7XG4gICAgICAgICAgICAgIHRoaXMuaW5pdEVxdWlwcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIHRoaXMuZGVsZXRlT2JzZXJ2YWJsZVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGVxdWlwbWVudCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUR1ZVRvRGVsZXRlKGVxdWlwbWVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgdGhpcy5jcmVhdGVPYnNlcnZhYmxlXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZXF1aXBtZW50KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRHVlVG9DcmVhdGUoZXF1aXBtZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLnVwZGF0ZU9ic2VydmFibGVcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKChlcXVpcG1lbnQpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U3BhY2VJRCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVEdWVUb0VxdWlwVXBkYXRlZChlcXVpcG1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdW5zdWJzY3JpYmUoKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
683
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXF1aXBtZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL21vZGVscy9lcXVpcG1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUMsT0FBTyxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHdCQUF3QixHQUV6QixNQUFNLHVCQUF1QixDQUFDO0FBRS9CLE9BQU8sRUFNTCxRQUFRLEVBRVIsV0FBVyxFQUNYLFNBQVMsRUFHVCxPQUFPLEVBQ1AsVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUFHN0IsT0FBTyxFQUNMLFlBQVksRUFDWixhQUFhLEVBQ2IsNkJBQTZCLEVBQzdCLGNBQWMsR0FDZixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBVXhELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxpQkFBaUI7SUF5RHJELFlBQytCLFdBQWdCLEVBRTNDLDJCQUFnQyxFQUNsQyxVQUFzQixFQUN0QixpQkFBb0MsRUFDNUIsZ0JBQWtDLEVBQ2xDLGNBQThCLEVBQzlCLGdCQUFrQyxFQUNsQyxhQUE0QixFQUM1QixXQUE0QixFQUM1QixhQUE0QixFQUM1QixZQUFzQixFQUN0QixpQkFBb0M7UUFFNUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBVDdCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsa0JBQWEs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LElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDOUIsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ3ZCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtvQkFDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUNuQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUwsSUFBSSxDQUFDLGdCQUFnQjtpQkFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzlCLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUN2QixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7b0JBQ3ZCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDekM7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7OzZHQXAwQlUsZ0JBQWdCLGtCQTBEakIsbUJBQW1CLGFBQ25CLG1DQUFtQztpSEEzRGxDLGdCQUFnQixjQUZmLE1BQU07MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBMkRJLE1BQU07MkJBQUMsbUJBQW1COzswQkFDMUIsTUFBTTsyQkFBQyxtQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIEluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nYk1vZGFsfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQge1N1YmplY3QsIHRha2VVbnRpbH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBvcGVuTW9kYWxGb3JWaXNpdFN3aXRjaCxcbiAgcmVtb3ZlTnVsbEtleXNGcm9tT2JqZWN0LFxuICB3YWl0VW50aWwsXG59IGZyb20gJy4uLy4uL2hlbHBlcnMuc2VydmljZSc7XG5pbXBvcnQge01hdHRlcnRhZ0RhdGF9IGZyb20gJy4uLy4uL21hdHRlcnRhZ0RhdGEnO1xuaW1wb3J0IHtcbiAgTm90ZSxcbiAgWm9uZSxcbiAgRXF1aXBtZW50LFxuICBFcXVpcG1lbnREb2N1bWVudCxcbiAgVGlja2V0LFxuICBUeXBlTm90ZSxcbiAgTWlzc2lvbixcbiAgRXZlbnRTdGF0dXMsXG4gIEV2ZW50VHlwZSxcbiAgT3BlcmF0aW9uLFxuICBQT0ksXG4gIFBvaVR5cGUsXG4gIFJvbGVTdGF0dXMsXG59IGZyb20gJy4uLy4uL3R5cGVzLnNlcnZpY2UnO1xuaW1wb3J0IHtGaWx0ZXJTZXJ2aWNlfSBmcm9tICcuLi9maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQge05hdmlnYXRvclNlcnZpY2V9IGZyb20gJy4uL25hdmlnYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIGRlbGV0ZUZyb21TMyxcbiAgZ2V0U2lnbmVkRmlsZSxcbiAgZ2V0U2lnbmVkSW1hZ2VVcmxGb3JFcXVpcG1lbnQsXG4gIHVwbG9hZEZpbGVUb1MzLFxufSBmcm9tICcuLi9zMy5zZXJ2aWNlJztcbmltcG9ydCB7QmFzZVVzZXJTZXJ2aWNlfSBmcm9tICcuLi91c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtWaWV3ZXJTZXJ2aWNlfSBmcm9tICcuLi92aWV3ZXIuc2VydmljZSc7XG5pbXBvcnQge0Jhc2VPYmplY3RTZXJ2aWNlfSBmcm9tICcuL2Jhc2Utb2JqZWN0LnNlcnZpY2UnO1xuaW1wb3J0IHtOYXZpZ2F0aW9uU2VydmljZX0gZnJvbSAnLi9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtPcGVyYXRpb25TZXJ2aWNlfSBmcm9tICcuL29wZXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7UG9pU2VydmljZX0gZnJvbSAnLi9wb2kuc2VydmljZSc7XG5pbXBvcnQge1RpY2tldHNTZXJ2aWNlfSBmcm9tICcuL3RpY2tldC5zZXJ2aWNlJztcbmltcG9ydCB7Wm9uZUNoYW5nZVNlcnZpY2V9IGZyb20gXCIuLi96b25lQ2hhbmdlLnNlcnZpY2VcIjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEVxdWlwbWVudFNlcnZpY2UgZXh0ZW5kcyBCYXNlT2JqZWN0U2VydmljZSB7XG4gIHByaXZhdGUgcHJlZml4ID0ge1xuICAgIHRlY2huaWNhbDogJ2VxdWlwbWVudHMvbm90ZS90ZWNobmljYWwvJyxcbiAgICBpbWFnZTogJ2VxdWlwbWVudHMvbm90ZS9pbWFnZS8nLFxuICAgIGZpbmFuY2lhbDogJ2VxdWlwbWVudHMvbm90ZS9maW5hbmNpYWwvJyxcbiAgICBpbmZvcm1hdGlvbjogJ2VxdWlwbWVudHMvbm90ZS9pbmZvcm1hdGlvbi8nLFxuICAgIG90aGVyOiAnZXF1aXBtZW50cy9ub3RlL290aGVyLycsXG4gICAgY29udHJhY3R1YWw6ICdlcXVpcG1lbnRzL25vdGUvY29udHJhY3R1YWwvJyxcbiAgfTtcblxuICBlcXVpcG1lbnRzVXBkYXRlZDogU3ViamVjdDx7XG4gICAgc3BhY2U6IEVxdWlwbWVudFtdO1xuICAgIHpvbmU6IEVxdWlwbWVudFtdO1xuICB9PiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY3VycmVudEVxdWlwbWVudHM6IHtcbiAgICBzcGFjZTogRXF1aXBtZW50W107XG4gICAgem9uZXNNYXA6IE1hcDxzdHJpbmcsIEVxdWlwbWVudFtdPjtcbiAgfSA9IHtcbiAgICBzcGFjZTogW10sXG4gICAgem9uZXNNYXA6IG5ldyBNYXAoKSxcbiAgfTtcblxuICBlcXVpcG1lbnRzVGFnczogU3ViamVjdDxFcXVpcG1lbnRbXT4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHpvbmVJREZpbHRlcjogc3RyaW5nO1xuXG4gIGN1cnJlbnRab25lOiBab25lO1xuXG4gIGN1cnJlbnRTcGFjZUlEOiBzdHJpbmc7XG5cbiAgZmxvb3JzUGVyU3BhY2U6IFpvbmVbXSA9IG51bGw7XG5cbiAgLyoqIE51bGwgbWVhbnMgd2UgZG8gbm90IGFwcGx5IGEgZmlsdGVyLCBlbXB0eSBhcnJheSAoW10pLCBtZWFucyB3ZSB0aGF0IHdlIGhpZGUgYWxsIGVxdWlwbWVudCAqL1xuICBlcXVpcG1lbnREb21haW5GaWx0ZXI6IHN0cmluZ1tdID0gbnVsbDtcblxuICB1cGRhdGluZzogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY3VycmVudGx5VXBkYXRpbmcgPSBmYWxzZTtcblxuICBjdXJyZW50U3dlZXA6IHN0cmluZztcblxuICBkZWxldGVPYnNlcnZhYmxlOiBTdWJqZWN0PEVxdWlwbWVudD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNyZWF0ZU9ic2VydmFibGU6IFN1YmplY3Q8RXF1aXBtZW50PiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgdXBkYXRlT2JzZXJ2YWJsZTogU3ViamVjdDxFcXVpcG1lbnQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBzZWxlY3RlZEZsb29yOiBab25lID0gbnVsbDtcblxuICBBUEk6IGFueTsgLy9BV1NcbiAgYXdzS2luZXNpc0FuYWx5dGljczogYW55OyAvL0FXU1xuXG4gIGlzTXVzZXVtVXNlciA9IGZhbHNlO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSxcbiAgICBASW5qZWN0KCdjdXJyZW50QXdzS2luZXNpc0FuYWx5dGljc1NlcnZpY2UnKVxuICAgICAgYXdzS2luZXNpc0FuYWx5dGljc0luamVjdGVkOiBhbnksXG4gICAgcG9pU2VydmljZTogUG9pU2VydmljZSxcbiAgICBuYXZpZ2F0aW9uU2VydmljZTogTmF2aWdhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcGVyYXRpb25TZXJ2aWNlOiBPcGVyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgdGlja2V0c1NlcnZpY2U6IFRpY2tldHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcbiAgICBwcml2YXRlIGZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmlld2VyU2VydmljZTogVmlld2VyU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXG4gICAgcHJpdmF0ZSB6b25lQ2hhbmdlU2VydmljZTogWm9uZUNoYW5nZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIocG9pU2VydmljZSwgbmF2aWdhdGlvblNlcnZpY2UpO1xuXG4gICAgdGhpcy5BUEkgPSBhcGlJbmplY3RlZDtcbiAgICB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MgPSBhd3NLaW5lc2lzQW5hbHl0aWNzSW5qZWN0ZWQ7XG5cbiAgICB0aGlzLmlzTXVzZXVtVXNlciA9IHRoaXMudXNlclNlcnZpY2UuaGFzT25seU11c2V1bVJvbGUoKTtcbiAgICB0aGlzLmluaXRTdWJzY3JpcHRpb25zKCk7XG4gICAgdGhpcy51c2VyU2VydmljZS5pc0NoYW5nZWQuc3Vic2NyaWJlKChpc0Nvbm5lY3RlZCkgPT4ge1xuICAgICAgaWYgKGlzQ29ubmVjdGVkKSB7XG4gICAgICAgIHRoaXMuaXNNdXNldW1Vc2VyID0gdGhpcy51c2VyU2VydmljZS5oYXNPbmx5TXVzZXVtUm9sZSgpO1xuICAgICAgICB0aGlzLmluaXRTdWJzY3JpcHRpb25zKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLmZsb29ySGFzQ2hhbmdlZC5zdWJzY3JpYmUoKGZsb29yKT0+e1xuICAgICAgaWYgKGZsb29yKXtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZsb29yID0gZmxvb3I7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyByZWFkRXF1aXBtZW50KGlkOiBzdHJpbmcpOiBQcm9taXNlPEVxdWlwbWVudD4ge1xuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uR2V0RXF1aXBtZW50KGlkKS50aGVuKGFzeW5jIChyZWNlaXZlZEVxdWlwKSA9PiB7XG4gICAgICBsZXQgZXF1aXA6IEVxdWlwbWVudDtcbiAgICAgIGlmIChyZWNlaXZlZEVxdWlwKSB7XG4gICAgICAgIGVxdWlwID0gcmVjZWl2ZWRFcXVpcDtcbiAgICAgICAgZXF1aXAgPSBhd2FpdCB0aGlzLmdldFNpZ25lZFVybHNGb3JFcXVpcG1lbnQocmVjZWl2ZWRFcXVpcCk7XG4gICAgICAgIGlmIChlcXVpcC5kb21haW4pIHtcbiAgICAgICAgICBpZiAoZXF1aXAuZG9tYWluLnBhcmVudElEKSB7XG4gICAgICAgICAgICBlcXVpcC5jaGlsZERvbWFpbiA9IGVxdWlwLmRvbWFpbjtcbiAgICAgICAgICAgIGVxdWlwLnBhcmVudERvbWFpbiA9IGVxdWlwLmRvbWFpbi5wYXJlbnQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVxdWlwLnBhcmVudERvbWFpbiA9IGVxdWlwLmRvbWFpbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVxdWlwLnN1YmVxdWlwbWVudHNJRHMpIHtcbiAgICAgICAgICBjb25zdCBzdWJFcXVpcHMgPSBbXTtcbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIGVxdWlwLnN1YmVxdWlwbWVudHNJRHMubWFwKGFzeW5jIChzdWJJZCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBzdWJFcXVpcCA9IGF3YWl0IHRoaXMuQVBJLkdldEVxdWlwbWVudChzdWJJZCk7XG4gICAgICAgICAgICAgIHN1YkVxdWlwcy5wdXNoKHN1YkVxdWlwKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICBlcXVpcC5zdWJFcXVpcG1lbnRzID0gc3ViRXF1aXBzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZXF1aXA7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVFcXVpcG1lbnQoXG4gICAgZXF1aXA6IEVxdWlwbWVudCxcbiAgICBpbWFnZUZpbGU6IEZpbGUsXG4gICAgZG9jdW1lbnRGaWxlOiBGaWxlXG4gICk6IFByb21pc2U8RXF1aXBtZW50IHwgdm9pZD4ge1xuICAgIHJlbW92ZU51bGxLZXlzRnJvbU9iamVjdChlcXVpcCk7XG4gICAgaWYgKCEhdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzICYmIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5yZWNvcmQoKSkge1xuICAgICAgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLmdldEluc3RhbmNlKCkucmVjb3JkKFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBldmVudFR5cGU6ICdPYmplY3QgQ3JlYXRpb24nLFxuICAgICAgICAgICAgb2JqZWN0VHlwZTogJ2VxdWlwbWVudCcsXG4gICAgICAgICAgICBwb2k6IGVxdWlwLFxuICAgICAgICAgICAgdXNlcjogdGhpcy51c2VyU2VydmljZS5jdSxcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6IHRoaXMuY3VycmVudFNwYWNlSUQsXG4gICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICB6b25lSWQ6IHRoaXMuY3VycmVudFpvbmUuaWQsXG4gICAgICAgICAgICBmbG9vcklkOiB0aGlzLnNlbGVjdGVkRmxvb3I/LmlkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RyZWFtTmFtZTogJ3NtYXJ0ZXJwbGFuS2luZXNpcy1hbmFseXRpY3MnLFxuICAgICAgICAgIC8vIHBhcnRpdGlvbktleTogXCJcIixcbiAgICAgICAgfSxcbiAgICAgICAgJ0FXU0tpbmVzaXMnXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5BUEkuQ3JlYXRlRXF1aXBtZW50KGVxdWlwKS50aGVuKGFzeW5jIChyZWNlaXZlZEVxdWlwbWVudCkgPT4ge1xuICAgICAgbGV0IGVxdWlwbWVudCA9IHJlY2VpdmVkRXF1aXBtZW50IGFzIEVxdWlwbWVudDtcbiAgICAgIGlmIChlcXVpcG1lbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ2VxdWlwbWVudCBjcmVhdGVkOicsIGVxdWlwbWVudCk7XG4gICAgICAgIGlmIChkb2N1bWVudEZpbGUpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnVwbG9hZERvYyhlcXVpcG1lbnQsIGRvY3VtZW50RmlsZSwgVHlwZU5vdGUuVEVDSE5JQ0FMKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW1hZ2VGaWxlKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy51cGxvYWRJbWFnZShlcXVpcG1lbnQsIGltYWdlRmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBlcXVpcG1lbnQ7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnZXRTaWduZWRVcmxzRm9yRXF1aXBtZW50KGVxdWlwOiBFcXVpcG1lbnQpOiBQcm9taXNlPEVxdWlwbWVudD4ge1xuICAgIGNvbnN0IGVxdWlwbWVudCA9IHsuLi5lcXVpcH07XG4gICAgaWYgKGVxdWlwbWVudC5ub3Rlcy5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBkb2NzID0gW107XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgZXF1aXBtZW50Lm5vdGVzLml0ZW1zLm1hcChhc3luYyAobm90ZSkgPT4ge1xuICAgICAgICAgIGVxdWlwbWVudC5kb2N1bWVudGF0aW9uSW1hZ2VVcmxTaWduZWQgPVxuICAgICAgICAgICAgYXdhaXQgZ2V0U2lnbmVkSW1hZ2VVcmxGb3JFcXVpcG1lbnQoZXF1aXBtZW50KTtcbiAgICAgICAgICBpZiAobm90ZS5hdHRhY2htZW50KSB7XG4gICAgICAgICAgICBjb25zdCB7bGVuZ3RofSA9IG5vdGUuYXR0YWNobWVudC5zcGxpdCgnLycpO1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBub3RlLmF0dGFjaG1lbnQuc3BsaXQoJy8nKVtsZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnQgPSBhd2FpdCBnZXRTaWduZWRGaWxlKG5vdGUuYXR0YWNobWVudCk7XG4gICAgICAgICAgICBpZiAoYXR0YWNobWVudCkge1xuICAgICAgICAgICAgICBkb2NzLnB1c2goe1xuICAgICAgICAgICAgICAgIGZpbGVuYW1lLFxuICAgICAgICAgICAgICAgIHVybDogbm90ZS5hdHRhY2htZW50LFxuICAgICAgICAgICAgICAgIHVybFNpZ25lZDogYXR0YWNobWVudCxcbiAgICAgICAgICAgICAgICBub3RlSUQ6IG5vdGUuaWQsXG4gICAgICAgICAgICAgIH0gYXMgRXF1aXBtZW50RG9jdW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICBlcXVpcG1lbnQuZG9jdW1lbnRzID0gZG9jcztcbiAgICAgIHJldHVybiBlcXVpcG1lbnQ7XG4gICAgfVxuICAgIHJldHVybiBlcXVpcG1lbnQ7XG4gIH1cblxuICBhc3luYyBnZXRFcXVpcG1lbnRzRm9yVGlja2V0KHRpY2tldDogVGlja2V0KTogUHJvbWlzZTxFcXVpcG1lbnRbXT4ge1xuICAgIGNvbnN0IG9wZXJhdGlvbnMgPSB0aWNrZXQub3BlcmF0aW9ucy5pdGVtcztcbiAgICBpZiAob3BlcmF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBvcGVyYXRpb25zLnNvcnQoXG4gICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJldHRpZXIvcHJldHRpZXJcbiAgICAgICAgICBuZXcgRGF0ZShiLmNyZWF0ZWRBdCkgLSBuZXcgRGF0ZShhLmNyZWF0ZWRBdClcbiAgICAgICk7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgb3BlcmF0aW9ucy5tYXAoYXN5bmMgKG9wZXJhdGlvbikgPT4ge1xuICAgICAgICAgIG9wZXJhdGlvbi5lcXVpcG1lbnQgPSBhd2FpdCB0aGlzLnJlYWRFcXVpcG1lbnQob3BlcmF0aW9uLmVxdWlwbWVudElEKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIC8vIHRvIGtlZXAgdGhlIHNvcnRpbmcgYnkgY3JlYXRlZEF0XG4gICAgcmV0dXJuIG9wZXJhdGlvbnMubWFwKChvKSA9PiBvLmVxdWlwbWVudCk7XG4gIH1cblxuICBhc3luYyBnZXRFcXVpcG1lbnRzRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxFcXVpcG1lbnRbXT4ge1xuICAgIC8vIHNwbGl0IGJ5IDEwMFxuICAgIGNvbnN0IGxpbWl0ID0gMTAwO1xuICAgIGxldCBlcXVpcHNUb2tlbiA9IHtlcXVpcHM6IFtdLCBuZXh0VG9rZW46IG51bGx9O1xuICAgIGRvIHtcbiAgICAgIGVxdWlwc1Rva2VuID0gYXdhaXQgdGhpcy5tZXJnZUVxdWlwbWVudHNGb3JTcGFjZVdpdGhOZXh0VG9rZW5XaXRoTGltaXQoXG4gICAgICAgIHNwYWNlSUQsXG4gICAgICAgIGxpbWl0LFxuICAgICAgICBlcXVpcHNUb2tlblxuICAgICAgKTtcbiAgICB9IHdoaWxlIChlcXVpcHNUb2tlbi5uZXh0VG9rZW4pO1xuICAgIHJldHVybiBlcXVpcHNUb2tlbi5lcXVpcHM7XG4gIH1cblxuICBhc3luYyBtZXJnZUVxdWlwbWVudHNGb3JTcGFjZVdpdGhOZXh0VG9rZW5XaXRoTGltaXQoXG4gICAgc3BhY2VJRDogc3RyaW5nLFxuICAgIGxpbWl0OiBudW1iZXIsXG4gICAgZXF1aXBzVG9rZW46IHsgZXF1aXBzOiBFcXVpcG1lbnRbXTsgbmV4dFRva2VuOiBzdHJpbmcgfCBudWxsIH1cbiAgKTogUHJvbWlzZTx7IGVxdWlwczogRXF1aXBtZW50W107IG5leHRUb2tlbjogc3RyaW5nIHwgbnVsbCB9PiB7XG4gICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fX1xuICAgICAgLkVxdWlwbWVudHNCeVNwYWNlKFxuICAgICAgICBzcGFjZUlELFxuICAgICAgICBudWxsLFxuICAgICAgICAnREVTQycsXG4gICAgICAgIG51bGwsXG4gICAgICAgIGxpbWl0LFxuICAgICAgICBlcXVpcHNUb2tlbi5uZXh0VG9rZW4gLy8gbmV4dFRva2VuXG4gICAgICApXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgY29uc3QgZXF1aXBzTGltaXQgPSByZXNwb25zZS5pdGVtcztcbiAgICAgICAgY29uc3QgZXF1aXBzT2JqZWN0ID0ge1xuICAgICAgICAgIGVxdWlwczogWy4uLmVxdWlwc1Rva2VuLmVxdWlwcywgLi4uZXF1aXBzTGltaXRdLFxuICAgICAgICAgIG5leHRUb2tlbjogcmVzcG9uc2UubmV4dFRva2VuLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZXF1aXBzT2JqZWN0O1xuICAgICAgfSk7XG4gIH1cblxuICBhc3luYyB1cGxvYWRJbWFnZUZvckFsbEVxdWlwbWVudHMoXG4gICAgZXF1aXBtZW50czogRXF1aXBtZW50W10sXG4gICAgaW1hZ2VGaWxlOiBGaWxlXG4gICk6IFByb21pc2U8RXF1aXBtZW50W10+IHtcbiAgICBpZiAoZXF1aXBtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXBsb2FkRmlsZVRvUzModGhpcy5wcmVmaXguaW1hZ2UsIGltYWdlRmlsZSwgJ0JBVENIJykudGhlbihcbiAgICAgIGFzeW5jICh1cmwpID0+IHtcbiAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgIGNvbnN0IGVxdWlwcyA9IFtdO1xuICAgICAgICAgIGZvciAoY29uc3QgZXF1aXAgb2YgZXF1aXBtZW50cykge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudE1pc3Npb24gPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKFxuICAgICAgICAgICAgICBlcXVpcC5zcGFjZUlEXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZU5vdGUoe1xuICAgICAgICAgICAgICBhdHRhY2htZW50OiB1cmwsXG4gICAgICAgICAgICAgIHR5cGU6IFR5cGVOb3RlLklNQUdFLFxuICAgICAgICAgICAgICBlcXVpcG1lbnRJRDogZXF1aXAuaWQsXG4gICAgICAgICAgICAgIG93bmVyTWlzc2lvbklEOiBjdXJyZW50TWlzc2lvbiA/IGN1cnJlbnRNaXNzaW9uLmlkIDogbnVsbCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLlVwZGF0ZUVxdWlwbWVudCh7XG4gICAgICAgICAgICAgIGlkOiBlcXVpcC5pZCxcbiAgICAgICAgICAgICAgcGhvdG86IHVybCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZXF1aXBzLnB1c2godXBkYXRlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGVxdWlwcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHVwbG9hZEltYWdlKGVxdWlwbWVudDogRXF1aXBtZW50LCBpbWFnZUZpbGU6IEZpbGUpOiBQcm9taXNlPE5vdGU+IHtcbiAgICByZXR1cm4gdXBsb2FkRmlsZVRvUzModGhpcy5wcmVmaXguaW1hZ2UsIGltYWdlRmlsZSwgZXF1aXBtZW50LmlkKS50aGVuKFxuICAgICAgYXN5bmMgKHVybCkgPT4ge1xuICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudE1pc3Npb24gPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKFxuICAgICAgICAgICAgZXF1aXBtZW50LnNwYWNlSURcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IG5vdGUgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uQ3JlYXRlTm90ZSh7XG4gICAgICAgICAgICBhdHRhY2htZW50OiB1cmwsXG4gICAgICAgICAgICB0eXBlOiBUeXBlTm90ZS5JTUFHRSxcbiAgICAgICAgICAgIGVxdWlwbWVudElEOiBlcXVpcG1lbnQuaWQsXG4gICAgICAgICAgICBvd25lck1pc3Npb25JRDogY3VycmVudE1pc3Npb24gPyBjdXJyZW50TWlzc2lvbi5pZCA6IG51bGwsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLlVwZGF0ZUVxdWlwbWVudCh7XG4gICAgICAgICAgICBpZDogZXF1aXBtZW50LmlkLFxuICAgICAgICAgICAgcGhvdG86IHVybCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gbm90ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRXF1aXBtZW50KFxuICAgIGVxdWlwOiBhbnksXG4gICAgZmlsZTogRmlsZSA9IG51bGwsXG4gICAgbm90ZVR5cGU6IFR5cGVOb3RlID0gbnVsbFxuICApOiBQcm9taXNlPEVxdWlwbWVudD4ge1xuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX19cbiAgICAgIC5VcGRhdGVFcXVpcG1lbnQoZXF1aXApXG4gICAgICAudGhlbihhc3luYyAocmVjZWl2ZWRFcXVpcG1lbnQpID0+IHtcbiAgICAgICAgbGV0IGVxdWlwbWVudCA9IHJlY2VpdmVkRXF1aXBtZW50IGFzIEVxdWlwbWVudDtcbiAgICAgICAgaWYgKGVxdWlwbWVudCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdlcXVpcG1lbnQgdXBkYXRlZDonLCBlcXVpcG1lbnQpO1xuICAgICAgICAgIGlmIChub3RlVHlwZSkge1xuICAgICAgICAgICAgc3dpdGNoIChub3RlVHlwZSkge1xuICAgICAgICAgICAgICBjYXNlIFR5cGVOb3RlLklNQUdFOlxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudXBsb2FkSW1hZ2UoZXF1aXBtZW50LCBmaWxlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnVwbG9hZERvYyhlcXVpcG1lbnQsIGZpbGUsIG5vdGVUeXBlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVxdWlwbWVudDtcbiAgICAgIH0pO1xuICB9XG5cbiAgZ2V0UHJlZml4RG9jKHR5cGU6IFR5cGVOb3RlKSB7XG4gICAgbGV0IHByZWZpeDtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgVHlwZU5vdGUuSU5GT1JNQVRJT046XG4gICAgICAgIHByZWZpeCA9IHRoaXMucHJlZml4LmluZm9ybWF0aW9uO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHlwZU5vdGUuRklOQU5DSUFMOlxuICAgICAgICBwcmVmaXggPSB0aGlzLnByZWZpeC5maW5hbmNpYWw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUeXBlTm90ZS5DT05UUkFDVFVBTDpcbiAgICAgICAgcHJlZml4ID0gdGhpcy5wcmVmaXguY29udHJhY3R1YWw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUeXBlTm90ZS5PVEhFUjpcbiAgICAgICAgcHJlZml4ID0gdGhpcy5wcmVmaXgub3RoZXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUeXBlTm90ZS5JTUFHRTpcbiAgICAgICAgcHJlZml4ID0gdGhpcy5wcmVmaXguaW1hZ2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcHJlZml4ID0gdGhpcy5wcmVmaXgudGVjaG5pY2FsO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHByZWZpeDtcbiAgfVxuXG4gIGFzeW5jIHVwbG9hZERvY0ZvckFsbEVxdWlwbWVudHMoXG4gICAgZXF1aXBtZW50czogRXF1aXBtZW50W10sXG4gICAgZG9jdW1lbnRGaWxlOiBGaWxlLFxuICAgIHR5cGU6IFR5cGVOb3RlXG4gICkge1xuICAgIGlmIChlcXVpcG1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBwcmVmaXggPSB0aGlzLmdldFByZWZpeERvYyh0eXBlKTtcbiAgICBjb25zdCB1cmwgPSBhd2FpdCB1cGxvYWRGaWxlVG9TMyhwcmVmaXgsIGRvY3VtZW50RmlsZSwgJ0JBVENIJyk7XG4gICAgaWYgKHVybCkge1xuICAgICAgY29uc3QgdXBkYXRlTGlzdCA9IFtdO1xuICAgICAgZm9yIChjb25zdCBlcXVpcCBvZiBlcXVpcG1lbnRzKSB7XG4gICAgICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKGVxdWlwLnNwYWNlSUQpO1xuICAgICAgICBjb25zdCBuZXdFcXVpcCA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVOb3RlKHtcbiAgICAgICAgICBhdHRhY2htZW50OiB1cmwsXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBlcXVpcG1lbnRJRDogZXF1aXAuaWQsXG4gICAgICAgICAgb3duZXJNaXNzaW9uSUQ6IG1pc3Npb24gPyBtaXNzaW9uLmlkIDogbnVsbCxcbiAgICAgICAgfSk7XG4gICAgICAgIHVwZGF0ZUxpc3QucHVzaChuZXdFcXVpcCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdXBkYXRlTGlzdDtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgYXN5bmMgdXBsb2FkRG9jKFxuICAgIGVxdWlwbWVudDogRXF1aXBtZW50LFxuICAgIGRvY3VtZW50RmlsZTogRmlsZSxcbiAgICB0eXBlOiBUeXBlTm90ZVxuICApOiBQcm9taXNlPE5vdGU+IHtcbiAgICBjb25zdCBwcmVmaXggPSB0aGlzLmdldFByZWZpeERvYyh0eXBlKTtcbiAgICBjb25zdCBtaXNzaW9uID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihlcXVpcG1lbnQuc3BhY2VJRCk7XG4gICAgcmV0dXJuIHVwbG9hZEZpbGVUb1MzKHByZWZpeCwgZG9jdW1lbnRGaWxlLCBlcXVpcG1lbnQuaWQpLnRoZW4oXG4gICAgICBhc3luYyAodXJsKSA9PiB7XG4gICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZU5vdGUoe1xuICAgICAgICAgICAgYXR0YWNobWVudDogdXJsLFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGVxdWlwbWVudElEOiBlcXVpcG1lbnQuaWQsXG4gICAgICAgICAgICBvd25lck1pc3Npb25JRDogbWlzc2lvbiA/IG1pc3Npb24uaWQgOiBudWxsLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBhc3luYyBkZWxldGVFcXVpcG1lbnQoZXF1aXA6IEVxdWlwbWVudCk6IFByb21pc2U8RXF1aXBtZW50PiB7XG4gICAgY29uc3QgZGVsZXRlZCA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5EZWxldGVFcXVpcG1lbnQoe2lkOiBlcXVpcC5pZH0pO1xuICAgIGNvbnNvbGUubG9nKCdEZWxldGVkIGVxdWlwbWVudCcsIGRlbGV0ZWQpO1xuXG4gICAgLy8gZGVsZXRlIFBPSVxuICAgIGNvbnN0IFtwb2ldID0gZXF1aXAucG9pcy5pdGVtcztcbiAgICBpZiAocG9pKSB7XG4gICAgICBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuZGVsZXRlUG9pKHBvaS5pZCk7XG4gICAgfVxuICAgIC8vIGRlbGV0ZSBub3RlcyByZWxhdGVkXG4gICAgaWYgKGVxdWlwLm5vdGVzLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBlcXVpcC5ub3Rlcy5pdGVtcy5tYXAoYXN5bmMgKG5vdGU6IE5vdGUpID0+IHtcbiAgICAgICAgICAvLyBkZWxldGUgZmlsZXMgZnJvbSBTM1xuICAgICAgICAgIC8qKiBOb3Qgc2hhcmVkIHdpdGggb3RoZXIgZXF1aXBtZW50ICovXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgbm90ZS5hdHRhY2htZW50ICYmXG4gICAgICAgICAgICAhbm90ZS5hdHRhY2htZW50LnNwbGl0KCcvJykucG9wKCkuc3RhcnRzV2l0aCgnQkFUQ0hfJylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGF3YWl0IGRlbGV0ZUZyb21TMyhub3RlLmF0dGFjaG1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlTm90ZSh7aWQ6IG5vdGUuaWR9KTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIC8vIGRlbGV0ZSBvcGVyYXRpb25zIChyZW1vdmUgZnJvbSBsaW5rZWQgdGlja2V0cylcbiAgICBhd2FpdCB0aGlzLm9wZXJhdGlvblNlcnZpY2UuZGVsZXRlT3BlcmF0aW9uc0ZvckVxdWlwbWVudChlcXVpcC5pZCk7XG4gICAgcmV0dXJuIGRlbGV0ZWQ7XG4gIH1cblxuICBhc3luYyB1cGRhdGVFcXVpcG1lbnRMb2NhdGlvbihcbiAgICBlcXVpcDogRXF1aXBtZW50LFxuICAgIHRhZ0RhdGE6IE1hdHRlcnRhZ0RhdGFcbiAgKTogUHJvbWlzZTxQT0k+IHtcbiAgICBjb25zdCBwb2lJbnB1dCA9IHtcbiAgICAgIGNvb3JkaW5hdGU6IHRhZ0RhdGEuZ2V0Q29vcmRpbmF0ZVN0cmluZygpLFxuICAgICAgdHlwZTogUG9pVHlwZS5FUVVJUE1FTlQsXG4gICAgICBlbGVtZW50SUQ6IGVxdWlwLmlkLFxuICAgICAgbWV0YWRhdGE6IHRhZ0RhdGEuZ2V0TWV0YWRhdGFTdHJpbmcoKSxcbiAgICAgIG1hdHRlcnBvcnRTd2VlcElEOiB0YWdEYXRhLmdldFN3ZWVwSUQoKSxcbiAgICB9IGFzIFBPSTtcbiAgICBjb25zdCBwb2kgPSBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuY3JlYXRlUE9JRm9yU3BhY2VJRChwb2lJbnB1dCk7XG4gICAgcmV0dXJuIHBvaTtcbiAgfVxuXG4gIGFzeW5jIHJlbW92ZVRpY2tldEZyb21FcXVpcG1lbnQoXG4gICAgdGlja2V0OiBUaWNrZXQsXG4gICAgZXF1aXA6IEVxdWlwbWVudFxuICApOiBQcm9taXNlPE9wZXJhdGlvbj4ge1xuICAgIGNvbnN0IG9wZXJhdGlvbkVxdWlwID1cbiAgICAgIGF3YWl0IHRoaXMub3BlcmF0aW9uU2VydmljZS5nZXRPcGVyYXRpb25zQnlFcXVpcG1lbnRJRChlcXVpcC5pZCk7XG4gICAgY29uc3Qgb3BlcmF0aW9uVG9EZWxldGUgPSBvcGVyYXRpb25FcXVpcC5maW5kKFxuICAgICAgKG9wKSA9PiBvcC50aWNrZXRJRCA9PT0gdGlja2V0LmlkXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25TZXJ2aWNlXG4gICAgICAuZGVsZXRlT3BlcmF0aW9uKG9wZXJhdGlvblRvRGVsZXRlLmlkKVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICB0aGlzLnRpY2tldHNTZXJ2aWNlLmFkZEV2ZW50VG9UaWNrZXQodGlja2V0IGFzIFRpY2tldCwge1xuICAgICAgICAgIHRpdGxlOiAnRXF1aXBlbWVudCByZXRpcsOpIGR1IHRpY2tldCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246IGBFcXVpcGVtZW50ICR7ZXF1aXAubmFtZX0gYSDDqXTDqSByZXRpcsOpIGR1IHRpY2tldGAsXG4gICAgICAgICAgc3RhdHVzOiBFdmVudFN0YXR1cy5VTkxJTktFRF9GUk9NX0VRVUlQTUVOVCxcbiAgICAgICAgICB0eXBlOiBFdmVudFR5cGUuVElDS0VULFxuICAgICAgICAgIHRyYW5zbGF0aW9uUGF0aDogJ3RpY2tldEV2ZW50LnRpY2tldC51bmxpbmtlZEZyb21FcXVpcG1lbnQnLFxuICAgICAgICAgIG1ldGFkYXRhOiBKU09OLnN0cmluZ2lmeSh7ZXF1aXBtZW50OiBlcXVpcC5uYW1lfSksXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfSk7XG4gIH1cblxuICBhc3luYyBpbml0RXF1aXBzKCkge1xuICAgIGlmICghdGhpcy5jdXJyZW50U3BhY2VJRCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0aW5nLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5jdXJyZW50bHlVcGRhdGluZyA9IHRydWU7XG5cbiAgICBsZXQgZXFMaXN0ID0gYXdhaXQgdGhpcy5nZXRFcXVpcG1lbnRzRm9yU3BhY2UodGhpcy5jdXJyZW50U3BhY2VJRCk7XG4gICAgZXFMaXN0ID0gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckVxdWlwbWVudHNGb3JDdXJyZW50VXNlckluU3BhY2UoXG4gICAgICB0aGlzLmN1cnJlbnRTcGFjZUlELFxuICAgICAgZXFMaXN0XG4gICAgKTtcbiAgICAvLyBjb25zb2xlLmxvZyhlcUxpc3QpO1xuICAgIGlmIChlcUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IGZpbHRlcmVkRXF1aXBzID0gZXFMaXN0LmZpbHRlcihcbiAgICAgICAgKGVxdWlwbWVudCkgPT4gIXRoaXMuaXNBcmNoaXZlZChlcXVpcG1lbnQpXG4gICAgICApO1xuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgZmlsdGVyZWRFcXVpcHMubWFwKGFzeW5jIChlcXVpcCkgPT4ge1xuICAgICAgICAgIGVxdWlwLmRvY3VtZW50YXRpb25JbWFnZVVybFNpZ25lZCA9XG4gICAgICAgICAgICBhd2FpdCBnZXRTaWduZWRJbWFnZVVybEZvckVxdWlwbWVudChlcXVpcCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgaWYgKHRoaXMuZXF1aXBtZW50RG9tYWluRmlsdGVyKSB7XG4gICAgICAgIGZpbHRlcmVkRXF1aXBzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckVxdWlwbWVudHNCeURvbWFpbkxpc3QoXG4gICAgICAgICAgZmlsdGVyZWRFcXVpcHMsXG4gICAgICAgICAgdGhpcy5lcXVpcG1lbnREb21haW5GaWx0ZXJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY3VycmVudEVxdWlwbWVudHMuc3BhY2UgPSBmaWx0ZXJlZEVxdWlwcztcbiAgICAgIGlmICh0aGlzLnpvbmVJREZpbHRlcikge1xuICAgICAgICBmaWx0ZXJlZEVxdWlwcyA9IChhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyT2JqZWN0c0ZvclpvbmUoXG4gICAgICAgICAgZmlsdGVyZWRFcXVpcHMsXG4gICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIsXG4gICAgICAgICAgdGhpcy5jdXJyZW50Wm9uZVxuICAgICAgICApKSBhcyBFcXVpcG1lbnRbXTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXAuc2V0KHRoaXMuem9uZUlERmlsdGVyLCBmaWx0ZXJlZEVxdWlwcyk7XG4gICAgICB0aGlzLmVxdWlwbWVudHNUYWdzLm5leHQoZmlsdGVyZWRFcXVpcHMpOyAvLyBhZGRpbmcgdGFncyBvbmx5IGZvciB0aGUgY3VycmVudCB6b25lXG4gICAgICB0aGlzLmVxdWlwbWVudHNVcGRhdGVkLm5leHQoe1xuICAgICAgICBzcGFjZTogdGhpcy5jdXJyZW50RXF1aXBtZW50cy5zcGFjZSxcbiAgICAgICAgem9uZTogZmlsdGVyZWRFcXVpcHMsXG4gICAgICB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy56b25lSURGaWx0ZXIpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50RXF1aXBtZW50cy56b25lc01hcC5zZXQodGhpcy56b25lSURGaWx0ZXIsIFtdKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZXF1aXBtZW50c1VwZGF0ZWQubmV4dCh7c3BhY2U6IFtdLCB6b25lOiBbXX0pOyAvLyBmb3IgbGF0ZXJhbCBtZW51XG4gICAgfVxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY3VycmVudEVxdWlwbWVudHMpO1xuICAgIHRoaXMudXBkYXRpbmcubmV4dChmYWxzZSk7XG4gICAgdGhpcy5jdXJyZW50bHlVcGRhdGluZyA9IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgZ2V0RXF1aXBtZW50c0ZvckN1cnJlbnRVc2VyRm9yU3BhY2UoXG4gICAgc3BhY2VJRCxcbiAgICBtaXNzaW9uczogTWlzc2lvbltdXG4gICk6IFByb21pc2U8RXF1aXBtZW50W10+IHtcbiAgICBsZXQgcmVzdWx0cyA9IFtdO1xuXG4gICAgY29uc3Qgc3BhY2VNaXNzaW9ucyA9IG1pc3Npb25zLmZpbHRlcigobSkgPT4gbS5zcGFjZUlEID09PSBzcGFjZUlEKTtcbiAgICBpZiAoc3BhY2VNaXNzaW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH1cbiAgICBjb25zdCBjYW5TZWVFcXVpcHMgPSBzcGFjZU1pc3Npb25zLnNvbWUoXG4gICAgICAobSkgPT5cbiAgICAgICAgdGhpcy51c2VyU2VydmljZS5tYW5hZ2Vycy5pbmNsdWRlcyhtLnJvbGUpIHx8XG4gICAgICAgIG0ucm9sZSA9PT0gUm9sZVN0YXR1cy5TRVJWSUNFXG4gICAgKTtcbiAgICBpZiAoIWNhblNlZUVxdWlwcykge1xuICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfVxuICAgIGxldCBkb21haW5zID0gW107XG4gICAgZm9yIChjb25zdCBtIG9mIHNwYWNlTWlzc2lvbnMpIHtcbiAgICAgIGRvbWFpbnMgPSBbLi4uZG9tYWlucywgbS5kb21haW5zXTtcbiAgICB9XG4gICAgaWYgKGRvbWFpbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG4gICAgcmVzdWx0cyA9IGF3YWl0IHRoaXMuZ2V0RXF1aXBtZW50c0ZvclNwYWNlKHNwYWNlSUQpO1xuICAgIC8vIHJlc3VsdHMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyRXF1aXBtZW50c0J5RG9tYWluTGlzdChcbiAgICAvLyAgICAgcmVzdWx0cyxcbiAgICAvLyAgICAgZG9tYWlucyxcbiAgICAvLyApO1xuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlSWNvbkZvckFsbEVxdWlwbWVudHNJblNwYWNlKFxuICAgIHRhZ0ljb246IHN0cmluZyxcbiAgICBzcGFjZUlEOiBzdHJpbmcsXG4gICAgZG9tYWluSUQ6IHN0cmluZyA9IG51bGxcbiAgKTogUHJvbWlzZTx7IGVxdWlwczogRXF1aXBtZW50W107IHBvaXM6IFBPSVtdIH0+IHtcbiAgICBsZXQgZXF1aXBzID0gYXdhaXQgdGhpcy5nZXRFcXVpcG1lbnRzRm9yU3BhY2Uoc3BhY2VJRCk7XG4gICAgaWYgKGRvbWFpbklEKSB7XG4gICAgICBlcXVpcHMgPSBlcXVpcHMuZmlsdGVyKChlcXVpcCkgPT4gZXF1aXAuZG9tYWluSUQgPT09IGRvbWFpbklEKTtcbiAgICB9XG4gICAgY29uc3QgcG9pcyA9IGF3YWl0IHRoaXMudXBkYXRlSWNvbkZvckFsbE9iamVjdHMoZXF1aXBzLCB0YWdJY29uKTtcbiAgICByZXR1cm4ge2VxdWlwcywgcG9pc307XG4gIH1cblxuICAvKiogUmV0dXJuIHRydWUgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgYXJjaGl2ZWQgdGhpcyBlcXVpcG1lbnQgKi9cbiAgaXNBcmNoaXZlZChlcXVpcG1lbnQ6IEVxdWlwbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlcXVpcG1lbnQuYXJjaGl2ZWRGb3JNaXNzaW9uSURcbiAgICAgID8gZXF1aXBtZW50LmFyY2hpdmVkRm9yTWlzc2lvbklELmluY2x1ZGVzKFxuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKGVxdWlwbWVudC5zcGFjZUlEKS5pZFxuICAgICAgKVxuICAgICAgOiBmYWxzZTtcbiAgfVxuXG4gIHNldEFyY2hpdmVkKGVxdWlwbWVudDogRXF1aXBtZW50LCBhcmNoaXZlZDogYm9vbGVhbikge1xuICAgIGxldCBhcmNoaXZlZExpc3QgPSBlcXVpcG1lbnQuYXJjaGl2ZWRGb3JNaXNzaW9uSURcbiAgICAgID8gZXF1aXBtZW50LmFyY2hpdmVkRm9yTWlzc2lvbklEXG4gICAgICA6IFtdO1xuICAgIGNvbnN0IG1pc3Npb25JRCA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb24oZXF1aXBtZW50LnNwYWNlSUQpLmlkO1xuXG4gICAgYXJjaGl2ZWRMaXN0ID0gYXJjaGl2ZWRMaXN0LmZpbHRlcigobSkgPT4gbSAhPT0gbWlzc2lvbklEKTtcblxuICAgIGlmIChhcmNoaXZlZCkge1xuICAgICAgYXJjaGl2ZWRMaXN0LnB1c2gobWlzc2lvbklEKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy51cGRhdGVFcXVpcG1lbnQoe1xuICAgICAgaWQ6IGVxdWlwbWVudC5pZCxcbiAgICAgIGFyY2hpdmVkRm9yTWlzc2lvbklEOiBhcmNoaXZlZExpc3QsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVGaWxlKGRvY3VtZW50XzogRXF1aXBtZW50RG9jdW1lbnQpIHtcbiAgICBhd2FpdCBkZWxldGVGcm9tUzMoZG9jdW1lbnRfLnVybCk7XG4gICAgYXdhaXQgdGhpcy5BUEkuRGVsZXRlTm90ZSh7aWQ6IGRvY3VtZW50Xy5ub3RlSUR9KTtcbiAgfVxuXG4gIGFzeW5jIG5hdmlnYXRlVG9FcXVpcG1lbnRJbjNEKFxuICAgIGVxdWlwbWVudDogRXF1aXBtZW50LFxuICAgIGZvcmNlU3dpdGNoVmlzaXQ6IGJvb2xlYW4gPSBmYWxzZVxuICApIHtcbiAgICBsZXQgdXJsID0gYHZpc2l0LyR7ZXF1aXBtZW50LnNwYWNlSUR9YDtcbiAgICBpZiAoZm9yY2VTd2l0Y2hWaXNpdCkge1xuICAgICAgdXJsICs9IGAvZXF1aXAvJHtlcXVpcG1lbnQuaWR9YDtcbiAgICB9XG4gICAgY29uc3QgY2FuR29Ub1RhZyA9IGF3YWl0IHRoaXMudmlld2VyU2VydmljZS5hY3Rpb25fbW92ZV90b190YWcoXG4gICAgICBgJHtlcXVpcG1lbnQuaWR9YFxuICAgICk7XG4gICAgaWYgKGNhbkdvVG9UYWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZXRNb2RlbDNkQW5kU3dlZXAoZXF1aXBtZW50KTtcblxuICAgIGlmICghcmVzdWx0IHx8ICFyZXN1bHQubW9kZWwzRCkge1xuICAgICAgYWxlcnQoJ0Vycm9yIHdoaWxlIGdldHRpbmcgdmlydHVhbCB2aXNpdCBtb2RlbCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWZvcmNlU3dpdGNoVmlzaXQpIHtcbiAgICAgIC8vIGNoZWNrIGlmIHdlIGFyZSBtb3Zpbmcgd2l0aGluIHRoZSBzYW1lIDNEIG1vZGVsXG4gICAgICBjb25zdCBjdXJyZW50TW9kZWwgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbW9kZWwzRCcpO1xuICAgICAgaWYgKGN1cnJlbnRNb2RlbCAmJiBjdXJyZW50TW9kZWwgPT09IHJlc3VsdC5tb2RlbDNEKSB7XG4gICAgICAgIC8vIHdlIGFkZCB0YWcgdG8gdGhlIHZpc2l0XG4gICAgICAgIGNvbnN0IHBvaSA9IGVxdWlwbWVudC5wb2lzLml0ZW1zWzBdO1xuICAgICAgICBpZiAocG9pLmNvb3JkaW5hdGUpIHtcbiAgICAgICAgICAvLyB3ZSBmb3JjZSBhZGQgYmVjYXVzZSB3ZSBtaWdodCBiZSBpbiBhbiBhbm90aGVyIHpvbmVcbiAgICAgICAgICBhd2FpdCB0aGlzLnZpZXdlclNlcnZpY2UuYWN0aW9uQWRkT2JqZWN0RnJvbVBPSShlcXVpcG1lbnQsIHBvaSk7XG4gICAgICAgICAgYXdhaXQgdGhpcy52aWV3ZXJTZXJ2aWNlLmFjdGlvbl9tb3ZlX3RvX3RhZyhlcXVpcG1lbnQuaWQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvKiogU2kgb24gbmUgZm9yY2UgcGFzIGxhIHZpc2l0ZSwgb24gZGVtYW5kZSBzaSBvbiB2ZXV0IGV0cmUgc3dpdGNoICovXG4gICAgICAgIG9wZW5Nb2RhbEZvclZpc2l0U3dpdGNoKFxuICAgICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLFxuICAgICAgICAgIHJlc3VsdC5tb2RlbDNELFxuICAgICAgICAgIGVxdWlwbWVudC5zcGFjZUlELFxuICAgICAgICAgIHtzd2VlcFRvTW92ZTogcmVzdWx0LnN3ZWVwLCByb3RhdGlvbjogcmVzdWx0LnJvdGF0aW9ufVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvKiogU2kgb24gZm9yY2UgbGUgc3dpdGNoIGRlIGxhIHZpc2l0ICovXG4gICAgICB3aW5kb3cub3BlbihgJHt1cmx9P21vZGVsM0Q9JHtyZXN1bHQubW9kZWwzRH0mc3dlZXA9dHJ1ZWAsICdfYmxhbmsnKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGRhdGVFcXVpcHNGb3Jab25lKCkge1xuICAgIHRoaXMudXBkYXRpbmcubmV4dCh0cnVlKTtcbiAgICBsZXQgZmlsdGVyZWRFcXVpcHMgPSBbXTtcbiAgICBpZiAodGhpcy5jdXJyZW50RXF1aXBtZW50cy5zcGFjZS5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuem9uZUlERmlsdGVyICYmXG4gICAgICAgIHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXAuaGFzKHRoaXMuem9uZUlERmlsdGVyKVxuICAgICAgKSB7XG4gICAgICAgIGZpbHRlcmVkRXF1aXBzID0gdGhpcy5jdXJyZW50RXF1aXBtZW50cy56b25lc01hcC5nZXQodGhpcy56b25lSURGaWx0ZXIpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcImkgaGF2ZSBlcXVpcHMgZm9yIHRoaXMgem9uZVwiLCBmaWx0ZXJlZEVxdWlwcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaWx0ZXJlZEVxdWlwcyA9IChhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyT2JqZWN0c0ZvclpvbmUoXG4gICAgICAgICAgdGhpcy5jdXJyZW50RXF1aXBtZW50cy5zcGFjZSxcbiAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlcixcbiAgICAgICAgICB0aGlzLmN1cnJlbnRab25lXG4gICAgICAgICkpIGFzIEVxdWlwbWVudFtdO1xuXG4gICAgICAgIHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXAuc2V0KHRoaXMuem9uZUlERmlsdGVyLCBbXG4gICAgICAgICAgLi4uZmlsdGVyZWRFcXVpcHMsXG4gICAgICAgIF0pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZXF1aXBtZW50RG9tYWluRmlsdGVyKSB7XG4gICAgICAgIGZpbHRlcmVkRXF1aXBzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckVxdWlwbWVudHNCeURvbWFpbkxpc3QoXG4gICAgICAgICAgZmlsdGVyZWRFcXVpcHMsXG4gICAgICAgICAgdGhpcy5lcXVpcG1lbnREb21haW5GaWx0ZXJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZXF1aXBtZW50c1RhZ3MubmV4dChmaWx0ZXJlZEVxdWlwcyk7IC8vIGFkZGluZyB0YWdzIG9ubHkgZm9yIHRoZSBjdXJyZW50IHpvbmVcbiAgICAgIHRoaXMuZXF1aXBtZW50c1VwZGF0ZWQubmV4dCh7XG4gICAgICAgIHNwYWNlOiB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLFxuICAgICAgICB6b25lOiBmaWx0ZXJlZEVxdWlwcyxcbiAgICAgIH0pOyAvLyBmb3IgbGF0ZXJhbCBtZW51XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXF1aXBtZW50c1VwZGF0ZWQubmV4dCh7c3BhY2U6IFtdLCB6b25lOiBbXX0pOyAvLyBmb3IgbGF0ZXJhbCBtZW51XG4gICAgfVxuICAgIHRoaXMudXBkYXRpbmcubmV4dChmYWxzZSk7XG4gIH1cblxuICB1cGRhdGVEdWVUb0RlbGV0ZShkZWxldGVkRXF1aXBtZW50OiBFcXVpcG1lbnQpIHtcbiAgICAvLyBjb25zb2xlLmxvZyhcInVwZGF0ZSBkdWUgdG8gZGVsZXRlXCIsIGRlbGV0ZWRFcXVpcG1lbnQpO1xuICAgIGNvbnN0IGVxdWlwID0gdGhpcy5jdXJyZW50RXF1aXBtZW50cy5zcGFjZS5maW5kKFxuICAgICAgKF9lcXVpcCkgPT4gX2VxdWlwLmlkID09PSBkZWxldGVkRXF1aXBtZW50LmlkXG4gICAgKTtcbiAgICBpZiAoZXF1aXApIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jdXJyZW50RXF1aXBtZW50cy5zcGFjZS5pbmRleE9mKGVxdWlwKTtcbiAgICAgIHRoaXMuY3VycmVudEVxdWlwbWVudHMuc3BhY2Uuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCB6b25lIG9mIHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXAua2V5cygpKSB7XG4gICAgICBjb25zdCBlcXVpcFRvRGVsZXRlID0gdGhpcy5jdXJyZW50RXF1aXBtZW50cy56b25lc01hcFxuICAgICAgICAuZ2V0KHpvbmUpXG4gICAgICAgIC5maW5kKChfZXF1aXApID0+IF9lcXVpcC5pZCA9PT0gZGVsZXRlZEVxdWlwbWVudC5pZCk7XG4gICAgICBpZiAoZXF1aXBUb0RlbGV0ZSkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXBcbiAgICAgICAgICAuZ2V0KHpvbmUpXG4gICAgICAgICAgLmluZGV4T2YoZXF1aXBUb0RlbGV0ZSk7XG4gICAgICAgIHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXAuZ2V0KHpvbmUpLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZXF1aXBtZW50c1VwZGF0ZWQubmV4dCh7XG4gICAgICBzcGFjZTogdGhpcy5jdXJyZW50RXF1aXBtZW50cy5zcGFjZSxcbiAgICAgIHpvbmU6IHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXAuZ2V0KHRoaXMuem9uZUlERmlsdGVyKSxcbiAgICB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxuICB9XG5cbiAgdXBkYXRlRHVlVG9DcmVhdGUoY3JlYXRlZEVxdWlwOiBFcXVpcG1lbnQpIHtcbiAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLnVuc2hpZnQoY3JlYXRlZEVxdWlwKTtcbiAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwXG4gICAgICAuZ2V0KHRoaXMuem9uZUlERmlsdGVyKVxuICAgICAgLnVuc2hpZnQoY3JlYXRlZEVxdWlwKTtcbiAgICB0aGlzLmVxdWlwbWVudHNVcGRhdGVkLm5leHQoe1xuICAgICAgc3BhY2U6IHRoaXMuY3VycmVudEVxdWlwbWVudHMuc3BhY2UsXG4gICAgICB6b25lOiB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwLmdldCh0aGlzLnpvbmVJREZpbHRlciksXG4gICAgfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcbiAgfVxuXG4gIHVwZGF0ZUR1ZVRvRXF1aXBVcGRhdGVkKHVwZGF0ZWRFcXVpcDogRXF1aXBtZW50KSB7XG4gICAgY29uc3QgZXF1aXAgPSB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLmZpbmQoXG4gICAgICAoX2VxdWlwKSA9PiBfZXF1aXAuaWQgPT09IHVwZGF0ZWRFcXVpcC5pZFxuICAgICk7XG4gICAgaWYgKGVxdWlwKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuY3VycmVudEVxdWlwbWVudHMuc3BhY2UuaW5kZXhPZihlcXVpcCk7XG4gICAgICBpZiAodGhpcy5pc0FyY2hpdmVkKGVxdWlwKSkge1xuICAgICAgICAvLyB3ZSByZW1vdmUgYXJjaGl2ZWQgZXF1aXBtZW50XG4gICAgICAgIHRoaXMuY3VycmVudEVxdWlwbWVudHMuc3BhY2Uuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY3VycmVudEVxdWlwbWVudHMuc3BhY2Uuc3BsaWNlKGluZGV4LCAxLCB1cGRhdGVkRXF1aXApO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IHpvbmUgb2YgdGhpcy5jdXJyZW50RXF1aXBtZW50cy56b25lc01hcC5rZXlzKCkpIHtcbiAgICAgIGNvbnN0IGVxdWlwVG9VcGQgPSB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwXG4gICAgICAgIC5nZXQoem9uZSlcbiAgICAgICAgLmZpbmQoKF9lcXVpcCkgPT4gX2VxdWlwLmlkID09PSB1cGRhdGVkRXF1aXAuaWQpO1xuICAgICAgaWYgKGVxdWlwVG9VcGQpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwXG4gICAgICAgICAgLmdldCh6b25lKVxuICAgICAgICAgIC5pbmRleE9mKGVxdWlwVG9VcGQpO1xuICAgICAgICBpZiAodGhpcy5pc0FyY2hpdmVkKGVxdWlwKSkge1xuICAgICAgICAgIHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXAuZ2V0KHpvbmUpLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50RXF1aXBtZW50cy56b25lc01hcFxuICAgICAgICAgICAgLmdldCh6b25lKVxuICAgICAgICAgICAgLnNwbGljZShpbmRleCwgMSwgdXBkYXRlZEVxdWlwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmVxdWlwbWVudHNVcGRhdGVkLm5leHQoe1xuICAgICAgc3BhY2U6IHRoaXMuY3VycmVudEVxdWlwbWVudHMuc3BhY2UsXG4gICAgICB6b25lOiB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwLmdldCh0aGlzLnpvbmVJREZpbHRlciksXG4gICAgfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcbiAgfVxuXG4gIGluaXRTdWJzY3JpcHRpb25zKCkge1xuICAgIGlmICghdGhpcy5pc011c2V1bVVzZXIpIHtcbiAgICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZUNoYW5nZVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHpvbmUpID0+IHtcbiAgICAgICAgICBpZiAoIXpvbmUgfHwgIXRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50U3BhY2VJRCkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50U3BhY2VJRDtcbiAgICAgICAgICAgIHRoaXMuZXF1aXBtZW50c1RhZ3MubmV4dChudWxsKTtcbiAgICAgICAgICAgIHRoaXMuZXF1aXBtZW50c1VwZGF0ZWQubmV4dCh7c3BhY2U6IFtdLCB6b25lOiBudWxsfSk7XG4gICAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzID0ge1xuICAgICAgICAgICAgICBzcGFjZTogW10sXG4gICAgICAgICAgICAgIHpvbmVzTWFwOiBuZXcgTWFwKCksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoem9uZS5pZCAhPT0gdGhpcy56b25lSURGaWx0ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyID0gem9uZS5pZDtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFpvbmUgPSB6b25lO1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQgPT09IHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50U3BhY2VJRCkge1xuICAgICAgICAgICAgICAvLyBzYW1lIHNwYWNlLCAgb25seSB6b25lIHVwZGF0ZVxuICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgLy8gICAgIFwiZ29pbmcgdG8gdXBkYXRlIGVxdWlwcyBmb3Igem9uZSAoc2FtZSBzcGFjZSlcIixcbiAgICAgICAgICAgICAgLy8gICAgIHpvbmUsXG4gICAgICAgICAgICAgIC8vICk7XG5cbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVFcXVpcHNGb3Jab25lKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmN1cnJlbnRTcGFjZUlEO1xuICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgLy8gICAgIFwiZ29pbmcgdG8gaW5pdCBlcXVpcHMgZm9yIHpvbmUgZm9yIG5ldyBzcGFjZVwiLFxuICAgICAgICAgICAgICAvLyAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCxcbiAgICAgICAgICAgICAgLy8gKTtcbiAgICAgICAgICAgICAgdGhpcy5pbml0RXF1aXBzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgdGhpcy5kZWxldGVPYnNlcnZhYmxlXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZXF1aXBtZW50KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRHVlVG9EZWxldGUoZXF1aXBtZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNyZWF0ZU9ic2VydmFibGVcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKChlcXVpcG1lbnQpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U3BhY2VJRCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVEdWVUb0NyZWF0ZShlcXVpcG1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIHRoaXMudXBkYXRlT2JzZXJ2YWJsZVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGVxdWlwbWVudCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUR1ZVRvRXF1aXBVcGRhdGVkKGVxdWlwbWVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB1bnN1YnNjcmliZSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
@@ -138,7 +138,7 @@ export class MeasurementService {
138
138
  comment,
139
139
  poi,
140
140
  };
141
- if (!!this.awsKinesisAnalytics) {
141
+ if (!!this.awsKinesisAnalytics && this.awsKinesisAnalytics.record()) {
142
142
  this.awsKinesisAnalytics.getInstance().record(
143
143
  // @ts-ignore
144
144
  {
@@ -196,4 +196,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
196
196
  type: Inject,
197
197
  args: ['currentAwsKinesisAnalyticsService']
198
198
  }] }, { type: i1.NavigatorService }, { type: i2.FilterService }, { type: i3.CommentService }, { type: i4.PoiService }, { type: i5.BaseUserService }, { type: i6.ZoneChangeService }, { type: i7.NavigationService }]; } });
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL21lYXN1cmVtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQWUsT0FBTyxFQUFzQixNQUFNLHFCQUFxQixDQUFDO0FBRy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFVN0QsTUFBTSxPQUFPLGtCQUFrQjtJQW1DN0IsWUFFRSwyQkFBZ0MsRUFDeEIsZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQzVCLGNBQThCLEVBQzlCLFVBQXNCLEVBQ3RCLFdBQTRCLEVBQzVCLGlCQUFvQyxFQUNwQyxpQkFBb0M7UUFOcEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBM0M5QyxTQUFJLEdBQUcsZUFBZSxDQUFDO1FBRXZCLHdCQUFtQixHQUdmLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFFNUIscUJBQWdCLEdBQXVCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFckQsd0JBQW1CLEdBR2QsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVFuQixz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OEIsQ0FDbEMsT0FBZTtRQUVmLElBQUksUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLHVDQUF1QyxDQUN6RSxPQUFPLEVBQ1AsUUFBUSxDQUNULENBQUM7UUFDRixJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN2QixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7Z0JBQzdCLE1BQU0sV0FBVyxHQUNmLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pFLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztTQUNIO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7OytHQS9PVSxrQkFBa0Isa0JBb0NuQixtQ0FBbUM7bUhBcENsQyxrQkFBa0IsY0FGakIsTUFBTTsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFxQ0ksTUFBTTsyQkFBQyxtQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgd2FpdFVudGlsIH0gZnJvbSAnLi4vLi4vaGVscGVycy5zZXJ2aWNlJztcbmltcG9ydCB7IE1lYXN1cmVtZW50LCBQb2lUeXBlLCBDb21tZW50LCBQT0ksIFpvbmUgfSBmcm9tICcuLi8uLi90eXBlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi9maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vbmF2aWdhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgZGVsZXRlRnJvbVMzLCB1cGxvYWRGaWxlVG9TMyB9IGZyb20gJy4uL3MzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9jb21tZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuL25hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQb2lTZXJ2aWNlIH0gZnJvbSAnLi9wb2kuc2VydmljZSc7XG5pbXBvcnQge1pvbmVDaGFuZ2VTZXJ2aWNlfSBmcm9tIFwiLi4vem9uZUNoYW5nZS5zZXJ2aWNlXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBNZWFzdXJlbWVudFNlcnZpY2Uge1xuICBwYXRoID0gJ21lYXN1cmVtZW50cy8nO1xuXG4gIGN1cnJlbnRNZWFzdXJlbWVudHM6IHtcbiAgICBzcGFjZTogTWVhc3VyZW1lbnRbXTtcbiAgICB6b25lOiBNZWFzdXJlbWVudFtdO1xuICB9ID0geyBzcGFjZTogW10sIHpvbmU6IFtdIH07XG5cbiAgbWVhc3VyZW1lbnRzVGFnczogU3ViamVjdDxDb21tZW50W10+ID0gbmV3IFN1YmplY3QoKTtcblxuICBtZWFzdXJlbWVudHNVcGRhdGVkOiBTdWJqZWN0PHtcbiAgICBzcGFjZTogTWVhc3VyZW1lbnRbXTtcbiAgICB6b25lOiBNZWFzdXJlbWVudFtdO1xuICB9PiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY3VycmVudFNwYWNlSUQ6IHN0cmluZztcblxuICB6b25lSURGaWx0ZXI6IHN0cmluZztcblxuICBkYXRlRmlsdGVyOiBEYXRlW107XG5cbiAgbWVhc3VyZW1lbnRGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTsgLy8gaWYgZmFsc2UgbWVhbnMgbm8gZmlsdGVyaW5nLCBldmVyeXRoaW5nIGlzIGFsbG93ZWRcblxuICB1cGRhdGVEb25lOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcblxuICB1cGRhdGluZzogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgYXdzS2luZXNpc0FuYWx5dGljczogYW55OyAvL0FXU1xuXG4gIGZsb29yc1BlclNwYWNlOiBab25lW10gPSBudWxsO1xuXG4gIHNlbGVjdGVkRmxvb3I6IFpvbmUgPSBudWxsO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ2N1cnJlbnRBd3NLaW5lc2lzQW5hbHl0aWNzU2VydmljZScpXG4gICAgYXdzS2luZXNpc0FuYWx5dGljc0luamVjdGVkOiBhbnksXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcbiAgICBwcml2YXRlIGNvbW1lbnRTZXJ2aWNlOiBDb21tZW50U2VydmljZSxcbiAgICBwcml2YXRlIHBvaVNlcnZpY2U6IFBvaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgem9uZUNoYW5nZVNlcnZpY2U6IFpvbmVDaGFuZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcyA9IGF3c0tpbmVzaXNBbmFseXRpY3NJbmplY3RlZDtcblxuICAgIGNvbnN0IGlzTXVzZXVtVXNlciA9IHRoaXMudXNlclNlcnZpY2UuaGFzT25seU11c2V1bVJvbGUoKTtcbiAgICBpZiAoIWlzTXVzZXVtVXNlcikge1xuICAgICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS56b25lQ2hhbmdlLnN1YnNjcmliZSgoem9uZSkgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmN1cnJlbnRTcGFjZUlEO1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFNwYWNlSUQpIHtcbiAgICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1RhZ3MubmV4dChudWxsKTtcbiAgICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1VwZGF0ZWQubmV4dCh7IHNwYWNlOiBbXSwgem9uZTogbnVsbCB9KTtcbiAgICAgICAgICB0aGlzLm1lYXN1cmVtZW50RmlsdGVyID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlciA9IG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAoem9uZS5pZCAhPT0gdGhpcy56b25lSURGaWx0ZXIpIHtcbiAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlciA9IHpvbmUuaWQ7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coXCJnb2luZyB0byBpbml0IG1lYXN1cmVtZW50cyBmcm9tIHpvbmVcIik7XG4gICAgICAgICAgdGhpcy5pbml0TWVhc3VyZW1lbnRzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnN1YnNjcmliZVRvRGF0YUZpbHRlclVwZGF0ZSgoZGF0ZVJhbmdlKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0ZUZpbHRlciA9IGRhdGVSYW5nZTtcbiAgICAgICAgdGhpcy5pbml0TWVhc3VyZW1lbnRzKCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZGF0ZUZpbHRlciA9IHRoaXMuZmlsdGVyU2VydmljZS5jdXJyZW50RGF0ZUZpbHRlcjtcbiAgICAgIHRoaXMudXBkYXRlRG9uZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5pbml0TWVhc3VyZW1lbnRzKCkpO1xuICAgIH1cblxuICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2UuZmxvb3JIYXNDaGFuZ2VkLnN1YnNjcmliZSgoZmxvb3IpPT57XG4gICAgICBpZiAoZmxvb3Ipe1xuICAgICAgICB0aGlzLnNlbGVjdGVkRmxvb3IgPSBmbG9vcjtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBhc3luYyBpbml0TWVhc3VyZW1lbnRzKCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XG4gICAgICB0aGlzLnVwZGF0aW5nLm5leHQodHJ1ZSk7XG4gICAgICBsZXQgbWVhc3VyZW1lbnRzID0gYXdhaXQgdGhpcy5nZXRNZWFzdXJlbWVudHNGb3JTcGFjZUZvclVzZXIoXG4gICAgICAgIHRoaXMuY3VycmVudFNwYWNlSURcbiAgICAgICk7XG4gICAgICBpZiAobWVhc3VyZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0ZUZpbHRlcikge1xuICAgICAgICAgIG1lYXN1cmVtZW50cyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJNZWFzdXJlbWVudHNGb3JEYXRlUmFuZ2UoXG4gICAgICAgICAgICBtZWFzdXJlbWVudHMsXG4gICAgICAgICAgICB0aGlzLmRhdGVGaWx0ZXJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1lYXN1cmVtZW50RmlsdGVyKSB7XG4gICAgICAgICAgbWVhc3VyZW1lbnRzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50TWVhc3VyZW1lbnRzLnNwYWNlID0gbWVhc3VyZW1lbnRzO1xuICAgICAgICAvLyBlbWl0IG9uIHRhZ3Mgc2hvdWxkIGJlIGFmdGVyIHNldHRpbmcgY3VycmVudC5zcGFjZSAhIVxuICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1RhZ3MubmV4dChtZWFzdXJlbWVudHMubWFwKChtKSA9PiBtLmNvbW1lbnQpKTtcblxuICAgICAgICBpZiAodGhpcy56b25lSURGaWx0ZXIpIHtcbiAgICAgICAgICBjb25zdCBjb21tZW50c1pvbmUgPSBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyT2JqZWN0c0ZvclpvbmUoXG4gICAgICAgICAgICBtZWFzdXJlbWVudHMubWFwKChtZWFzdXJlKSA9PiBtZWFzdXJlLmNvbW1lbnQpLFxuICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXJcbiAgICAgICAgICApO1xuICAgICAgICAgIG1lYXN1cmVtZW50cyA9IG1lYXN1cmVtZW50cy5maWx0ZXIoKG1lYXN1cmUpID0+XG4gICAgICAgICAgICBjb21tZW50c1pvbmUuaW5jbHVkZXMobWVhc3VyZS5jb21tZW50KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgbWVhc3VyZW1lbnRzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgbmV3IERhdGUoYi5jb21tZW50LmNyZWF0ZWRBdCkgLVxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgbmV3IERhdGUoYS5jb21tZW50LmNyZWF0ZWRBdClcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jdXJyZW50TWVhc3VyZW1lbnRzLnpvbmUgPSBtZWFzdXJlbWVudHM7XG4gICAgICAgIHRoaXMubWVhc3VyZW1lbnRzVXBkYXRlZC5uZXh0KHRoaXMuY3VycmVudE1lYXN1cmVtZW50cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmN1cnJlbnRNZWFzdXJlbWVudHMuc3BhY2UgPSBbXTtcbiAgICAgICAgdGhpcy5jdXJyZW50TWVhc3VyZW1lbnRzLnpvbmUgPSBbXTtcbiAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNVcGRhdGVkLm5leHQoeyBzcGFjZTogW10sIHpvbmU6IFtdIH0pOyAvLyBmb3IgbGF0ZXJhbCBtZW51XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWVhc3VyZW1lbnRzVGFncy5uZXh0KG51bGwpO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0aW5nLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlTWVhc3VyZW1lbnQobWVhc3VyZW1lbnQ6IE1lYXN1cmVtZW50KTogUHJvbWlzZTxDb21tZW50PiB7XG4gICAgY29uc3QgZGVsZXRlZENvbW1lbnQgPSBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmRlbGV0ZUNvbW1lbnQoXG4gICAgICBtZWFzdXJlbWVudC5jb21tZW50LmlkXG4gICAgKTtcbiAgICBpZiAoZGVsZXRlZENvbW1lbnQpIHtcbiAgICAgIGF3YWl0IHRoaXMucG9pU2VydmljZS5kZWxldGVQb2kobWVhc3VyZW1lbnQucG9pLmlkKTtcbiAgICAgIGNvbnN0IHByZWZpeCA9IGAke21lYXN1cmVtZW50LmNvbW1lbnQuaWQuc2xpY2UoMCwgOCl9X2A7XG4gICAgICBjb25zdCBwYXRoID0gYCR7dGhpcy5wYXRoICsgcHJlZml4fW1lc3VyZS5qcGVnYDtcbiAgICAgIGF3YWl0IGRlbGV0ZUZyb21TMyhwYXRoKTtcbiAgICB9XG4gICAgcmV0dXJuIGRlbGV0ZWRDb21tZW50O1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlTWVhc3VyZW1lbnRGb3JTcGFjZShcbiAgICBjb21tZW50SW5wdXQ6IENvbW1lbnQsXG4gICAgZGF0YU1lYXN1cmVtZW50czogeyBtZWFzdXJlOiBhbnlbXTsgc3dlZXA6IHN0cmluZyB9LFxuICAgIHNjcmVlbnNob3Q6IGFueSxcbiAgICBzcGFjZUlEOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxNZWFzdXJlbWVudD4ge1xuICAgIGNvbnN0IGxhc3RNZWFzdXJlID0gZGF0YU1lYXN1cmVtZW50cy5tZWFzdXJlO1xuICAgIGNvbnN0IHN3ZWVwSUQgPSBkYXRhTWVhc3VyZW1lbnRzLnN3ZWVwO1xuICAgIGNvbnN0IGxhc3RQb2ludCA9IGxhc3RNZWFzdXJlW2xhc3RNZWFzdXJlLmxlbmd0aCAtIDFdO1xuICAgIGxldCBjb21tZW50ID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5jcmVhdGVDb21tZW50KGNvbW1lbnRJbnB1dCk7XG4gICAgY29uc3QgcG9pSW5wdXQgPSB7XG4gICAgICBjb29yZGluYXRlOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHg6IGxhc3RQb2ludC54LFxuICAgICAgICB5OiBsYXN0UG9pbnQueSxcbiAgICAgICAgejogbGFzdFBvaW50LnosXG4gICAgICB9KSxcbiAgICAgIHR5cGU6IFBvaVR5cGUuTUVBU1VSRSxcbiAgICAgIGVsZW1lbnRJRDogY29tbWVudC5pZCxcbiAgICAgIG1hdHRlcnBvcnRTd2VlcElEOiBzd2VlcElELFxuICAgIH0gYXMgUE9JO1xuICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5jcmVhdGVQT0lGb3JTcGFjZUlEKHBvaUlucHV0KTtcbiAgICBjb25zdCBzY3JlZW4gPSBhd2FpdCBmZXRjaChzY3JlZW5zaG90KTtcbiAgICBjb25zdCBibG9iID0gYXdhaXQgc2NyZWVuLmJsb2IoKTtcbiAgICBjb25zdCBmaWxlID0gbmV3IEZpbGUoW2Jsb2JdLCAnbWVzdXJlLmpwZWcnLCB7IHR5cGU6ICdpbWFnZS9qcGVnJyB9KTtcbiAgICBjb25zdCB1cmwgPSBhd2FpdCB1cGxvYWRGaWxlVG9TMyh0aGlzLnBhdGgsIGZpbGUsIGNvbW1lbnQuaWQpO1xuICAgIGlmICh1cmwpIHtcbiAgICAgIGNvbW1lbnQgPSBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLnVwZGF0ZUNvbW1lbnQoe1xuICAgICAgICBpZDogY29tbWVudC5pZCxcbiAgICAgICAgYW5uZXhlOiB1cmwsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgbWVhc3VyZW1lbnQgPSB7XG4gICAgICBjb21tZW50LFxuICAgICAgcG9pLFxuICAgIH0gYXMgTWVhc3VyZW1lbnQ7XG5cbiAgICBpZiAoISF0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MpIHtcbiAgICAgIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5nZXRJbnN0YW5jZSgpLnJlY29yZChcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZXZlbnRUeXBlOiAnT2JqZWN0IENyZWF0aW9uJyxcbiAgICAgICAgICAgIG9iamVjdFR5cGU6ICdtZWFzdXJlbWVudCcsXG4gICAgICAgICAgICBtZWFzdXJlbWVudDogbWVhc3VyZW1lbnQsXG4gICAgICAgICAgICAvL3pvbmVJZDogc3BhY2VJRCxcbiAgICAgICAgICAgIHVzZXI6IHRoaXMudXNlclNlcnZpY2UuY3UsXG4gICAgICAgICAgICBsb2NhdGlvbklkOiB0aGlzLmN1cnJlbnRTcGFjZUlELFxuICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgem9uZUlkOiB0aGlzLnpvbmVJREZpbHRlcixcbiAgICAgICAgICAgIGZsb29ySWQ6IHRoaXMuc2VsZWN0ZWRGbG9vcj8uaWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdHJlYW1OYW1lOiAnc21hcnRlcnBsYW5LaW5lc2lzLWFuYWx5dGljcycsXG4gICAgICAgICAgLy8gcGFydGl0aW9uS2V5OiBcIlwiLFxuICAgICAgICB9LFxuICAgICAgICAnQVdTS2luZXNpcydcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lYXN1cmVtZW50O1xuICB9XG5cbiAgYXN5bmMgZ2V0TW9kZWwzREZvck1lYXN1cmVtZW50KG1lYXN1cmVtZW50OiBNZWFzdXJlbWVudCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcG9pID0gYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmdldFBvaUJ5RWxlbWVudElkKG1lYXN1cmVtZW50LmNvbW1lbnQuaWQpO1xuICAgIGlmIChwb2kgJiYgcG9pLm1hdHRlcnBvcnRTd2VlcElEKSB7XG4gICAgICBjb25zdCBuYXZpZ2F0aW9ucyA9XG4gICAgICAgIGF3YWl0IHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZ2V0TmF2aWdhdGlvbnNGb3JNYXR0ZXJwb3J0SURGb3JTcGFjZShcbiAgICAgICAgICBwb2kubWF0dGVycG9ydFN3ZWVwSUQsXG4gICAgICAgICAgbWVhc3VyZW1lbnQuY29tbWVudC5zcGFjZUlEXG4gICAgICAgICk7XG4gICAgICBjb25zdCBbcG9pTmF2aWdhdGlvbl0gPSBuYXZpZ2F0aW9ucztcbiAgICAgIHJldHVybiBwb2lOYXZpZ2F0aW9uLm5vZGUubW9kZWwzRDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhc3luYyBnZXRNZWFzdXJlbWVudHNGb3JTcGFjZUZvclVzZXIoXG4gICAgc3BhY2VJRDogc3RyaW5nXG4gICk6IFByb21pc2U8TWVhc3VyZW1lbnRbXT4ge1xuICAgIGxldCBjb21tZW50cyA9IGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UuZ2V0Q29tbWVudHNCeVNwYWNlSUQoc3BhY2VJRCk7XG4gICAgY29tbWVudHMgPSBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyTWVhc3VyZW1lbnRzRm9yQ3VycmVudFVzZXJJblNwYWNlKFxuICAgICAgc3BhY2VJRCxcbiAgICAgIGNvbW1lbnRzXG4gICAgKTtcbiAgICBsZXQgbWVhc3VyZW1lbnRzID0gW107XG4gICAgaWYgKGNvbW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBjb21tZW50cy5tYXAoYXN5bmMgKGNvbW1lbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBtZWFzdXJlbWVudCA9XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLnJlYWRDb21tZW50QXNNZWFzdXJlbWVudChjb21tZW50LmlkKTtcbiAgICAgICAgICBtZWFzdXJlbWVudHMucHVzaChtZWFzdXJlbWVudCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbWVhc3VyZW1lbnRzO1xuICB9XG5cbiAgdW5zdWJzY3JpYmUoKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL21lYXN1cmVtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQWUsT0FBTyxFQUFzQixNQUFNLHFCQUFxQixDQUFDO0FBRy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFVN0QsTUFBTSxPQUFPLGtCQUFrQjtJQW1DN0IsWUFFRSwyQkFBZ0MsRUFDeEIsZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQzVCLGNBQThCLEVBQzlCLFVBQXNCLEVBQ3RCLFdBQTRCLEVBQzVCLGlCQUFvQyxFQUNwQyxpQkFBb0M7UUFOcEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBM0M5QyxTQUFJLEdBQUcsZUFBZSxDQUFDO1FBRXZCLHdCQUFtQixHQUdmLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFFNUIscUJBQWdCLEdBQXVCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFckQsd0JBQW1CLEdBR2QsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVFuQixz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QUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsOEJBQThCLENBQ2xDLE9BQWU7UUFFZixJQUFJLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkUsUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyx1Q0FBdUMsQ0FDekUsT0FBTyxFQUNQLFFBQVEsQ0FDVCxDQUFDO1FBQ0YsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO2dCQUM3QixNQUFNLFdBQVcsR0FDZixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRSxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUNILENBQUM7U0FDSDtRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOzsrR0EvT1Usa0JBQWtCLGtCQW9DbkIsbUNBQW1DO21IQXBDbEMsa0JBQWtCLGNBRmpCLE1BQU07MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBcUNJLE1BQU07MkJBQUMsbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHdhaXRVbnRpbCB9IGZyb20gJy4uLy4uL2hlbHBlcnMuc2VydmljZSc7XG5pbXBvcnQgeyBNZWFzdXJlbWVudCwgUG9pVHlwZSwgQ29tbWVudCwgUE9JLCBab25lIH0gZnJvbSAnLi4vLi4vdHlwZXMuc2VydmljZSc7XG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJy4uL25hdmlnYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IGRlbGV0ZUZyb21TMywgdXBsb2FkRmlsZVRvUzMgfSBmcm9tICcuLi9zMy5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gJy4uL3VzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDb21tZW50U2VydmljZSB9IGZyb20gJy4vY29tbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9pU2VydmljZSB9IGZyb20gJy4vcG9pLnNlcnZpY2UnO1xuaW1wb3J0IHtab25lQ2hhbmdlU2VydmljZX0gZnJvbSBcIi4uL3pvbmVDaGFuZ2Uuc2VydmljZVwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTWVhc3VyZW1lbnRTZXJ2aWNlIHtcbiAgcGF0aCA9ICdtZWFzdXJlbWVudHMvJztcblxuICBjdXJyZW50TWVhc3VyZW1lbnRzOiB7XG4gICAgc3BhY2U6IE1lYXN1cmVtZW50W107XG4gICAgem9uZTogTWVhc3VyZW1lbnRbXTtcbiAgfSA9IHsgc3BhY2U6IFtdLCB6b25lOiBbXSB9O1xuXG4gIG1lYXN1cmVtZW50c1RhZ3M6IFN1YmplY3Q8Q29tbWVudFtdPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgbWVhc3VyZW1lbnRzVXBkYXRlZDogU3ViamVjdDx7XG4gICAgc3BhY2U6IE1lYXN1cmVtZW50W107XG4gICAgem9uZTogTWVhc3VyZW1lbnRbXTtcbiAgfT4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIGN1cnJlbnRTcGFjZUlEOiBzdHJpbmc7XG5cbiAgem9uZUlERmlsdGVyOiBzdHJpbmc7XG5cbiAgZGF0ZUZpbHRlcjogRGF0ZVtdO1xuXG4gIG1lYXN1cmVtZW50RmlsdGVyOiBib29sZWFuID0gZmFsc2U7IC8vIGlmIGZhbHNlIG1lYW5zIG5vIGZpbHRlcmluZywgZXZlcnl0aGluZyBpcyBhbGxvd2VkXG5cbiAgdXBkYXRlRG9uZTogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgdXBkYXRpbmc6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIGF3c0tpbmVzaXNBbmFseXRpY3M6IGFueTsgLy9BV1NcblxuICBmbG9vcnNQZXJTcGFjZTogWm9uZVtdID0gbnVsbDtcblxuICBzZWxlY3RlZEZsb29yOiBab25lID0gbnVsbDtcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdjdXJyZW50QXdzS2luZXNpc0FuYWx5dGljc1NlcnZpY2UnKVxuICAgIGF3c0tpbmVzaXNBbmFseXRpY3NJbmplY3RlZDogYW55LFxuICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcbiAgICBwcml2YXRlIGZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb21tZW50U2VydmljZTogQ29tbWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb2lTZXJ2aWNlOiBQb2lTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIHpvbmVDaGFuZ2VTZXJ2aWNlOiBab25lQ2hhbmdlU2VydmljZSxcbiAgICBwcml2YXRlIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZVxuICApIHtcbiAgICB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MgPSBhd3NLaW5lc2lzQW5hbHl0aWNzSW5qZWN0ZWQ7XG5cbiAgICBjb25zdCBpc011c2V1bVVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmhhc09ubHlNdXNldW1Sb2xlKCk7XG4gICAgaWYgKCFpc011c2V1bVVzZXIpIHtcbiAgICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZUNoYW5nZS5zdWJzY3JpYmUoKHpvbmUpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50U3BhY2VJRDtcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XG4gICAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNUYWdzLm5leHQobnVsbCk7XG4gICAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNVcGRhdGVkLm5leHQoeyBzcGFjZTogW10sIHpvbmU6IG51bGwgfSk7XG4gICAgICAgICAgdGhpcy5tZWFzdXJlbWVudEZpbHRlciA9IG51bGw7XG4gICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKHpvbmUuaWQgIT09IHRoaXMuem9uZUlERmlsdGVyKSB7XG4gICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSB6b25lLmlkO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiZ29pbmcgdG8gaW5pdCBtZWFzdXJlbWVudHMgZnJvbSB6b25lXCIpO1xuICAgICAgICAgIHRoaXMuaW5pdE1lYXN1cmVtZW50cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5zdWJzY3JpYmVUb0RhdGFGaWx0ZXJVcGRhdGUoKGRhdGVSYW5nZSkgPT4ge1xuICAgICAgICB0aGlzLmRhdGVGaWx0ZXIgPSBkYXRlUmFuZ2U7XG4gICAgICAgIHRoaXMuaW5pdE1lYXN1cmVtZW50cygpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmRhdGVGaWx0ZXIgPSB0aGlzLmZpbHRlclNlcnZpY2UuY3VycmVudERhdGVGaWx0ZXI7XG4gICAgICB0aGlzLnVwZGF0ZURvbmUuc3Vic2NyaWJlKCgpID0+IHRoaXMuaW5pdE1lYXN1cmVtZW50cygpKTtcbiAgICB9XG5cbiAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLmZsb29ySGFzQ2hhbmdlZC5zdWJzY3JpYmUoKGZsb29yKT0+e1xuICAgICAgaWYgKGZsb29yKXtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZsb29yID0gZmxvb3I7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgYXN5bmMgaW5pdE1lYXN1cmVtZW50cygpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50U3BhY2VJRCkge1xuICAgICAgdGhpcy51cGRhdGluZy5uZXh0KHRydWUpO1xuICAgICAgbGV0IG1lYXN1cmVtZW50cyA9IGF3YWl0IHRoaXMuZ2V0TWVhc3VyZW1lbnRzRm9yU3BhY2VGb3JVc2VyKFxuICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEXG4gICAgICApO1xuICAgICAgaWYgKG1lYXN1cmVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmICh0aGlzLmRhdGVGaWx0ZXIpIHtcbiAgICAgICAgICBtZWFzdXJlbWVudHMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyTWVhc3VyZW1lbnRzRm9yRGF0ZVJhbmdlKFxuICAgICAgICAgICAgbWVhc3VyZW1lbnRzLFxuICAgICAgICAgICAgdGhpcy5kYXRlRmlsdGVyXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tZWFzdXJlbWVudEZpbHRlcikge1xuICAgICAgICAgIG1lYXN1cmVtZW50cyA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudE1lYXN1cmVtZW50cy5zcGFjZSA9IG1lYXN1cmVtZW50cztcbiAgICAgICAgLy8gZW1pdCBvbiB0YWdzIHNob3VsZCBiZSBhZnRlciBzZXR0aW5nIGN1cnJlbnQuc3BhY2UgISFcbiAgICAgICAgdGhpcy5tZWFzdXJlbWVudHNUYWdzLm5leHQobWVhc3VyZW1lbnRzLm1hcCgobSkgPT4gbS5jb21tZW50KSk7XG5cbiAgICAgICAgaWYgKHRoaXMuem9uZUlERmlsdGVyKSB7XG4gICAgICAgICAgY29uc3QgY29tbWVudHNab25lID0gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck9iamVjdHNGb3Jab25lKFxuICAgICAgICAgICAgbWVhc3VyZW1lbnRzLm1hcCgobWVhc3VyZSkgPT4gbWVhc3VyZS5jb21tZW50KSxcbiAgICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyXG4gICAgICAgICAgKTtcbiAgICAgICAgICBtZWFzdXJlbWVudHMgPSBtZWFzdXJlbWVudHMuZmlsdGVyKChtZWFzdXJlKSA9PlxuICAgICAgICAgICAgY29tbWVudHNab25lLmluY2x1ZGVzKG1lYXN1cmUuY29tbWVudClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIG1lYXN1cmVtZW50cy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIG5ldyBEYXRlKGIuY29tbWVudC5jcmVhdGVkQXQpIC1cbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIG5ldyBEYXRlKGEuY29tbWVudC5jcmVhdGVkQXQpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY3VycmVudE1lYXN1cmVtZW50cy56b25lID0gbWVhc3VyZW1lbnRzO1xuICAgICAgICB0aGlzLm1lYXN1cmVtZW50c1VwZGF0ZWQubmV4dCh0aGlzLmN1cnJlbnRNZWFzdXJlbWVudHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jdXJyZW50TWVhc3VyZW1lbnRzLnNwYWNlID0gW107XG4gICAgICAgIHRoaXMuY3VycmVudE1lYXN1cmVtZW50cy56b25lID0gW107XG4gICAgICAgIHRoaXMubWVhc3VyZW1lbnRzVXBkYXRlZC5uZXh0KHsgc3BhY2U6IFtdLCB6b25lOiBbXSB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1lYXN1cmVtZW50c1RhZ3MubmV4dChudWxsKTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGluZy5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZU1lYXN1cmVtZW50KG1lYXN1cmVtZW50OiBNZWFzdXJlbWVudCk6IFByb21pc2U8Q29tbWVudD4ge1xuICAgIGNvbnN0IGRlbGV0ZWRDb21tZW50ID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5kZWxldGVDb21tZW50KFxuICAgICAgbWVhc3VyZW1lbnQuY29tbWVudC5pZFxuICAgICk7XG4gICAgaWYgKGRlbGV0ZWRDb21tZW50KSB7XG4gICAgICBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuZGVsZXRlUG9pKG1lYXN1cmVtZW50LnBvaS5pZCk7XG4gICAgICBjb25zdCBwcmVmaXggPSBgJHttZWFzdXJlbWVudC5jb21tZW50LmlkLnNsaWNlKDAsIDgpfV9gO1xuICAgICAgY29uc3QgcGF0aCA9IGAke3RoaXMucGF0aCArIHByZWZpeH1tZXN1cmUuanBlZ2A7XG4gICAgICBhd2FpdCBkZWxldGVGcm9tUzMocGF0aCk7XG4gICAgfVxuICAgIHJldHVybiBkZWxldGVkQ29tbWVudDtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZU1lYXN1cmVtZW50Rm9yU3BhY2UoXG4gICAgY29tbWVudElucHV0OiBDb21tZW50LFxuICAgIGRhdGFNZWFzdXJlbWVudHM6IHsgbWVhc3VyZTogYW55W107IHN3ZWVwOiBzdHJpbmcgfSxcbiAgICBzY3JlZW5zaG90OiBhbnksXG4gICAgc3BhY2VJRDogc3RyaW5nXG4gICk6IFByb21pc2U8TWVhc3VyZW1lbnQ+IHtcbiAgICBjb25zdCBsYXN0TWVhc3VyZSA9IGRhdGFNZWFzdXJlbWVudHMubWVhc3VyZTtcbiAgICBjb25zdCBzd2VlcElEID0gZGF0YU1lYXN1cmVtZW50cy5zd2VlcDtcbiAgICBjb25zdCBsYXN0UG9pbnQgPSBsYXN0TWVhc3VyZVtsYXN0TWVhc3VyZS5sZW5ndGggLSAxXTtcbiAgICBsZXQgY29tbWVudCA9IGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UuY3JlYXRlQ29tbWVudChjb21tZW50SW5wdXQpO1xuICAgIGNvbnN0IHBvaUlucHV0ID0ge1xuICAgICAgY29vcmRpbmF0ZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICB4OiBsYXN0UG9pbnQueCxcbiAgICAgICAgeTogbGFzdFBvaW50LnksXG4gICAgICAgIHo6IGxhc3RQb2ludC56LFxuICAgICAgfSksXG4gICAgICB0eXBlOiBQb2lUeXBlLk1FQVNVUkUsXG4gICAgICBlbGVtZW50SUQ6IGNvbW1lbnQuaWQsXG4gICAgICBtYXR0ZXJwb3J0U3dlZXBJRDogc3dlZXBJRCxcbiAgICB9IGFzIFBPSTtcbiAgICBjb25zdCBwb2kgPSBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuY3JlYXRlUE9JRm9yU3BhY2VJRChwb2lJbnB1dCk7XG4gICAgY29uc3Qgc2NyZWVuID0gYXdhaXQgZmV0Y2goc2NyZWVuc2hvdCk7XG4gICAgY29uc3QgYmxvYiA9IGF3YWl0IHNjcmVlbi5ibG9iKCk7XG4gICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgJ21lc3VyZS5qcGVnJywgeyB0eXBlOiAnaW1hZ2UvanBlZycgfSk7XG4gICAgY29uc3QgdXJsID0gYXdhaXQgdXBsb2FkRmlsZVRvUzModGhpcy5wYXRoLCBmaWxlLCBjb21tZW50LmlkKTtcbiAgICBpZiAodXJsKSB7XG4gICAgICBjb21tZW50ID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS51cGRhdGVDb21tZW50KHtcbiAgICAgICAgaWQ6IGNvbW1lbnQuaWQsXG4gICAgICAgIGFubmV4ZTogdXJsLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG1lYXN1cmVtZW50ID0ge1xuICAgICAgY29tbWVudCxcbiAgICAgIHBvaSxcbiAgICB9IGFzIE1lYXN1cmVtZW50O1xuXG4gICAgaWYgKCEhdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzICYmIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5yZWNvcmQoKSkge1xuICAgICAgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLmdldEluc3RhbmNlKCkucmVjb3JkKFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBldmVudFR5cGU6ICdPYmplY3QgQ3JlYXRpb24nLFxuICAgICAgICAgICAgb2JqZWN0VHlwZTogJ21lYXN1cmVtZW50JyxcbiAgICAgICAgICAgIG1lYXN1cmVtZW50OiBtZWFzdXJlbWVudCxcbiAgICAgICAgICAgIC8vem9uZUlkOiBzcGFjZUlELFxuICAgICAgICAgICAgdXNlcjogdGhpcy51c2VyU2VydmljZS5jdSxcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6IHRoaXMuY3VycmVudFNwYWNlSUQsXG4gICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICB6b25lSWQ6IHRoaXMuem9uZUlERmlsdGVyLFxuICAgICAgICAgICAgZmxvb3JJZDogdGhpcy5zZWxlY3RlZEZsb29yPy5pZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0cmVhbU5hbWU6ICdzbWFydGVycGxhbktpbmVzaXMtYW5hbHl0aWNzJyxcbiAgICAgICAgICAvLyBwYXJ0aXRpb25LZXk6IFwiXCIsXG4gICAgICAgIH0sXG4gICAgICAgICdBV1NLaW5lc2lzJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVhc3VyZW1lbnQ7XG4gIH1cblxuICBhc3luYyBnZXRNb2RlbDNERm9yTWVhc3VyZW1lbnQobWVhc3VyZW1lbnQ6IE1lYXN1cmVtZW50KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBwb2kgPSBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuZ2V0UG9pQnlFbGVtZW50SWQobWVhc3VyZW1lbnQuY29tbWVudC5pZCk7XG4gICAgaWYgKHBvaSAmJiBwb2kubWF0dGVycG9ydFN3ZWVwSUQpIHtcbiAgICAgIGNvbnN0IG5hdmlnYXRpb25zID1cbiAgICAgICAgYXdhaXQgdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5nZXROYXZpZ2F0aW9uc0Zvck1hdHRlcnBvcnRJREZvclNwYWNlKFxuICAgICAgICAgIHBvaS5tYXR0ZXJwb3J0U3dlZXBJRCxcbiAgICAgICAgICBtZWFzdXJlbWVudC5jb21tZW50LnNwYWNlSURcbiAgICAgICAgKTtcbiAgICAgIGNvbnN0IFtwb2lOYXZpZ2F0aW9uXSA9IG5hdmlnYXRpb25zO1xuICAgICAgcmV0dXJuIHBvaU5hdmlnYXRpb24ubm9kZS5tb2RlbDNEO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIGdldE1lYXN1cmVtZW50c0ZvclNwYWNlRm9yVXNlcihcbiAgICBzcGFjZUlEOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxNZWFzdXJlbWVudFtdPiB7XG4gICAgbGV0IGNvbW1lbnRzID0gYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5nZXRDb21tZW50c0J5U3BhY2VJRChzcGFjZUlEKTtcbiAgICBjb21tZW50cyA9IGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJNZWFzdXJlbWVudHNGb3JDdXJyZW50VXNlckluU3BhY2UoXG4gICAgICBzcGFjZUlELFxuICAgICAgY29tbWVudHNcbiAgICApO1xuICAgIGxldCBtZWFzdXJlbWVudHMgPSBbXTtcbiAgICBpZiAoY29tbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGNvbW1lbnRzLm1hcChhc3luYyAoY29tbWVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1lYXN1cmVtZW50ID1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UucmVhZENvbW1lbnRBc01lYXN1cmVtZW50KGNvbW1lbnQuaWQpO1xuICAgICAgICAgIG1lYXN1cmVtZW50cy5wdXNoKG1lYXN1cmVtZW50KTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBtZWFzdXJlbWVudHM7XG4gIH1cblxuICB1bnN1YnNjcmliZSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
@@ -46,7 +46,7 @@ export class PoiService {
46
46
  }
47
47
  async createPOIForSpaceID(poi) {
48
48
  removeNullKeysFromObject(poi);
49
- if (!!this.awsKinesisAnalytics) {
49
+ if (!!this.awsKinesisAnalytics && this.awsKinesisAnalytics.record()) {
50
50
  this.awsKinesisAnalytics.getInstance().record(
51
51
  // @ts-ignore
52
52
  {
@@ -100,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
100
100
  type: Inject,
101
101
  args: ['currentAwsKinesisAnalyticsService']
102
102
  }] }, { type: i1.BaseUserService }, { type: i2.ZoneChangeService }]; } });
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL21vZGVscy9wb2kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFDLE9BQU8sRUFBWSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUMsd0JBQXdCLEVBQVksTUFBTSx1QkFBdUIsQ0FBQzs7OztBQVExRSxNQUFNLE9BQU8sVUFBVTtJQVdyQixZQUMrQixXQUFnQixFQUUzQywyQkFBZ0MsRUFDMUIsV0FBNEIsRUFDNUIsaUJBQW9DLENBQUMsa0ZBQWtGOztRQUR2SCxnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQWI5QyxrQkFBYSxHQUFTLElBQUksQ0FBQztRQU1uQixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVMvQixJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztRQUN2QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsMkJBQTJCLENBQUM7UUFFdkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNuRCxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNULE9BQU87YUFDUjtZQUNELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQ3BDO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2FBQzFCO2lCQUFNLElBQUks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LEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOzt1R0F4R1UsVUFBVSxrQkFZWCxtQkFBbUIsYUFDbkIsbUNBQW1DOzJHQWJsQyxVQUFVLGNBRlQsTUFBTTsyRkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBYUksTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUMxQixNQUFNOzJCQUFDLG1DQUFtQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3ViamVjdCwgdGFrZVVudGlsfSBmcm9tICdyeGpzJztcbmltcG9ydCB7cmVtb3ZlTnVsbEtleXNGcm9tT2JqZWN0LCB3YWl0VW50aWx9IGZyb20gJy4uLy4uL2hlbHBlcnMuc2VydmljZSc7XG5pbXBvcnQge1BPSSwgUG9pVHlwZSwgWm9uZX0gZnJvbSAnLi4vLi4vdHlwZXMuc2VydmljZSc7XG5pbXBvcnQge1pvbmVDaGFuZ2VTZXJ2aWNlfSBmcm9tICcuLi96b25lQ2hhbmdlLnNlcnZpY2UnO1xuaW1wb3J0IHtCYXNlVXNlclNlcnZpY2V9IGZyb20gJy4uL3VzZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQb2lTZXJ2aWNlIHtcbiAgQVBJOiBhbnk7IC8vQVdTIEFQSVNlcnZpY2VcbiAgYXdzS2luZXNpc0FuYWx5dGljczogYW55OyAvL0FXU1xuICBzZWxlY3RlZEZsb29yOiBab25lID0gbnVsbDtcblxuICBjdXJyZW50U3BhY2VJRDogc3RyaW5nO1xuXG4gIHpvbmVJREZpbHRlcjogc3RyaW5nO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSxcbiAgICBASW5qZWN0KCdjdXJyZW50QXdzS2luZXNpc0FuYWx5dGljc1NlcnZpY2UnKVxuICAgICAgYXdzS2luZXNpc0FuYWx5dGljc0luamVjdGVkOiBhbnksXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgem9uZUNoYW5nZVNlcnZpY2U6IFpvbmVDaGFuZ2VTZXJ2aWNlIC8vIGluamVjdCBab25lQ2hhbmdlU2VydmljZSBpbnN0ZWFkIG9mIE5hdmlnYXRvclNlcnZpY2UgdG8gZml4IGNpcmN1bGFyIGRlcGVuZGFuY3lcbiAgKSB7XG4gICAgdGhpcy5BUEkgPSBhcGlJbmplY3RlZDtcbiAgICB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MgPSBhd3NLaW5lc2lzQW5hbHl0aWNzSW5qZWN0ZWQ7XG5cbiAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVDaGFuZ2Uuc3Vic2NyaWJlKCh6b25lKSA9PiB7XG4gICAgICBpZiAoIXpvbmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHpvbmUuc3BhY2VJRCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEID0gem9uZS5zcGFjZUlEO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XG4gICAgICAgIHRoaXMuem9uZUlERmlsdGVyID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAoem9uZS5pZCAhPT0gdGhpcy56b25lSURGaWx0ZXIpIHtcbiAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSB6b25lLmlkO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS5mbG9vckhhc0NoYW5nZWQuc3Vic2NyaWJlKChmbG9vcikgPT4ge1xuICAgICAgaWYgKGZsb29yKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGbG9vciA9IGZsb29yO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0UG9pQnlFbGVtZW50SWQoZWxlbWVudElkOiBzdHJpbmcpOiBQcm9taXNlPFBPSSB8IG51bGw+IHtcbiAgICBjb25zdCBwb2lzID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLlBvaXNCeUVsZW1lbnQoZWxlbWVudElkKTtcbiAgICBpZiAocG9pcyAmJiBwb2lzLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBwb2lzLml0ZW1zWzBdO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIGdldFBvaXNCeVR5cGUodHlwZTogUG9pVHlwZSk6IFByb21pc2U8W1BPSV0gfCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLlBvaXNCeVR5cGUodHlwZSkudGhlbigocG9pcykgPT4gcG9pcy5pdGVtcyk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVQT0lGb3JTcGFjZUlEKHBvaTogUE9JKTogUHJvbWlzZTxQT0k+IHtcbiAgICByZW1vdmVOdWxsS2V5c0Zyb21PYmplY3QocG9pKTtcbiAgICBpZiAoISF0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MpIHtcbiAgICAgIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5nZXRJbnN0YW5jZSgpLnJlY29yZChcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZXZlbnRUeXBlOiAnT2JqZWN0IENyZWF0aW9uJyxcbiAgICAgICAgICAgIG9iamVjdFR5cGU6ICdwb2knLFxuICAgICAgICAgICAgcG9pOiBwb2ksXG4gICAgICAgICAgICB1c2VyOiB0aGlzLnVzZXJTZXJ2aWNlLmN1LFxuICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgZmxvb3JJZDogdGhpcy5zZWxlY3RlZEZsb29yPy5pZCxcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6IHRoaXMuY3VycmVudFNwYWNlSUQsXG4gICAgICAgICAgICB6b25lSWQ6IHRoaXMuem9uZUlERmlsdGVyLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RyZWFtTmFtZTogJ3NtYXJ0ZXJwbGFuS2luZXNpcy1hbmFseXRpY3MnLFxuICAgICAgICAgIC8vIHBhcnRpdGlvbktleTogXCJcIixcbiAgICAgICAgfSxcbiAgICAgICAgJ0FXU0tpbmVzaXMnXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZVBPSShwb2kpO1xuICB9XG5cbiAgcG9pSXNWaXJ0dWFsKHBvaTogUE9JKTogYm9vbGVhbiB7XG4gICAgY29uc3Qge2Nvb3JkaW5hdGV9ID0gcG9pO1xuICAgIHJldHVybiAhY29vcmRpbmF0ZTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVBvaShwb2k6IHt9KTogUHJvbWlzZTxQT0k+IHtcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLlVwZGF0ZVBPSShwb2kpO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlUG9pKHBvaUlEOiBzdHJpbmcpOiBQcm9taXNlPFBPST4ge1xuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlUE9JKHtpZDogcG9pSUR9KTtcbiAgfVxuXG4gIGFzeW5jIGdldFBvaXNCeU1hdHRlcnBvcnRTd2VlcEJ5VHlwZShcbiAgICBzd2VlcDogc3RyaW5nLFxuICAgIHR5cGU6IFBvaVR5cGVcbiAgKTogUHJvbWlzZTxQT0lbXT4ge1xuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX19cbiAgICAgIC5MaXN0UE9Jcyh7bWF0dGVycG9ydFN3ZWVwSUQ6IHtlcTogc3dlZXB9fSwgMzAwKVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcy5maWx0ZXIoKHBvaSkgPT4gcG9pLnR5cGUgPT09IHR5cGUpKTtcbiAgfVxuXG4gIHVuc3Vic2NyaWJlKCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL21vZGVscy9wb2kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFDLE9BQU8sRUFBWSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUMsd0JBQXdCLEVBQVksTUFBTSx1QkFBdUIsQ0FBQzs7OztBQVExRSxNQUFNLE9BQU8sVUFBVTtJQVdyQixZQUMrQixXQUFnQixFQUUzQywyQkFBZ0MsRUFDMUIsV0FBNEIsRUFDNUIsaUJBQW9DLENBQUMsa0ZBQWtGOztRQUR2SCxnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQWI5QyxrQkFBYSxHQUFTLElBQUksQ0FBQztRQU1uQixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVMvQixJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztRQUN2QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsMkJBQTJCLENBQUM7UUFFdkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNuRCxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNULE9BQU87YUFDUjtZQUNELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQ3BDO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2FBQzFCO2lCQUFNLElBQUks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RyxDQUFDO2FBQy9DLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7dUdBeEdVLFVBQVUsa0JBWVgsbUJBQW1CLGFBQ25CLG1DQUFtQzsyR0FibEMsVUFBVSxjQUZULE1BQU07MkZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWFJLE1BQU07MkJBQUMsbUJBQW1COzswQkFDMUIsTUFBTTsyQkFBQyxtQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YmplY3QsIHRha2VVbnRpbH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3JlbW92ZU51bGxLZXlzRnJvbU9iamVjdCwgd2FpdFVudGlsfSBmcm9tICcuLi8uLi9oZWxwZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHtQT0ksIFBvaVR5cGUsIFpvbmV9IGZyb20gJy4uLy4uL3R5cGVzLnNlcnZpY2UnO1xuaW1wb3J0IHtab25lQ2hhbmdlU2VydmljZX0gZnJvbSAnLi4vem9uZUNoYW5nZS5zZXJ2aWNlJztcbmltcG9ydCB7QmFzZVVzZXJTZXJ2aWNlfSBmcm9tICcuLi91c2VyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUG9pU2VydmljZSB7XG4gIEFQSTogYW55OyAvL0FXUyBBUElTZXJ2aWNlXG4gIGF3c0tpbmVzaXNBbmFseXRpY3M6IGFueTsgLy9BV1NcbiAgc2VsZWN0ZWRGbG9vcjogWm9uZSA9IG51bGw7XG5cbiAgY3VycmVudFNwYWNlSUQ6IHN0cmluZztcblxuICB6b25lSURGaWx0ZXI6IHN0cmluZztcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdjdXJyZW50QVBJU2VydmljZScpIGFwaUluamVjdGVkOiBhbnksXG4gICAgQEluamVjdCgnY3VycmVudEF3c0tpbmVzaXNBbmFseXRpY3NTZXJ2aWNlJylcbiAgICAgIGF3c0tpbmVzaXNBbmFseXRpY3NJbmplY3RlZDogYW55LFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIHpvbmVDaGFuZ2VTZXJ2aWNlOiBab25lQ2hhbmdlU2VydmljZSAvLyBpbmplY3QgWm9uZUNoYW5nZVNlcnZpY2UgaW5zdGVhZCBvZiBOYXZpZ2F0b3JTZXJ2aWNlIHRvIGZpeCBjaXJjdWxhciBkZXBlbmRhbmN5XG4gICkge1xuICAgIHRoaXMuQVBJID0gYXBpSW5qZWN0ZWQ7XG4gICAgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzID0gYXdzS2luZXNpc0FuYWx5dGljc0luamVjdGVkO1xuXG4gICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS56b25lQ2hhbmdlLnN1YnNjcmliZSgoem9uZSkgPT4ge1xuICAgICAgaWYgKCF6b25lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh6b25lLnNwYWNlSUQpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCA9IHpvbmUuc3BhY2VJRDtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5jdXJyZW50U3BhY2VJRCkge1xuICAgICAgICB0aGlzLnpvbmVJREZpbHRlciA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKHpvbmUuaWQgIT09IHRoaXMuem9uZUlERmlsdGVyKSB7XG4gICAgICAgIHRoaXMuem9uZUlERmlsdGVyID0gem9uZS5pZDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2UuZmxvb3JIYXNDaGFuZ2VkLnN1YnNjcmliZSgoZmxvb3IpID0+IHtcbiAgICAgIGlmIChmbG9vcikge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRmxvb3IgPSBmbG9vcjtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGdldFBvaUJ5RWxlbWVudElkKGVsZW1lbnRJZDogc3RyaW5nKTogUHJvbWlzZTxQT0kgfCBudWxsPiB7XG4gICAgY29uc3QgcG9pcyA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5Qb2lzQnlFbGVtZW50KGVsZW1lbnRJZCk7XG4gICAgaWYgKHBvaXMgJiYgcG9pcy5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gcG9pcy5pdGVtc1swXTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhc3luYyBnZXRQb2lzQnlUeXBlKHR5cGU6IFBvaVR5cGUpOiBQcm9taXNlPFtQT0ldIHwgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5Qb2lzQnlUeXBlKHR5cGUpLnRoZW4oKHBvaXMpID0+IHBvaXMuaXRlbXMpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlUE9JRm9yU3BhY2VJRChwb2k6IFBPSSk6IFByb21pc2U8UE9JPiB7XG4gICAgcmVtb3ZlTnVsbEtleXNGcm9tT2JqZWN0KHBvaSk7XG4gICAgaWYgKCEhdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzICYmIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5yZWNvcmQoKSkge1xuICAgICAgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLmdldEluc3RhbmNlKCkucmVjb3JkKFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBldmVudFR5cGU6ICdPYmplY3QgQ3JlYXRpb24nLFxuICAgICAgICAgICAgb2JqZWN0VHlwZTogJ3BvaScsXG4gICAgICAgICAgICBwb2k6IHBvaSxcbiAgICAgICAgICAgIHVzZXI6IHRoaXMudXNlclNlcnZpY2UuY3UsXG4gICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICBmbG9vcklkOiB0aGlzLnNlbGVjdGVkRmxvb3I/LmlkLFxuICAgICAgICAgICAgbG9jYXRpb25JZDogdGhpcy5jdXJyZW50U3BhY2VJRCxcbiAgICAgICAgICAgIHpvbmVJZDogdGhpcy56b25lSURGaWx0ZXIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdHJlYW1OYW1lOiAnc21hcnRlcnBsYW5LaW5lc2lzLWFuYWx5dGljcycsXG4gICAgICAgICAgLy8gcGFydGl0aW9uS2V5OiBcIlwiLFxuICAgICAgICB9LFxuICAgICAgICAnQVdTS2luZXNpcydcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uQ3JlYXRlUE9JKHBvaSk7XG4gIH1cblxuICBwb2lJc1ZpcnR1YWwocG9pOiBQT0kpOiBib29sZWFuIHtcbiAgICBjb25zdCB7Y29vcmRpbmF0ZX0gPSBwb2k7XG4gICAgcmV0dXJuICFjb29yZGluYXRlO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlUG9pKHBvaToge30pOiBQcm9taXNlPFBPST4ge1xuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlUE9JKHBvaSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVQb2kocG9pSUQ6IHN0cmluZyk6IFByb21pc2U8UE9JPiB7XG4gICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5EZWxldGVQT0koe2lkOiBwb2lJRH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0UG9pc0J5TWF0dGVycG9ydFN3ZWVwQnlUeXBlKFxuICAgIHN3ZWVwOiBzdHJpbmcsXG4gICAgdHlwZTogUG9pVHlwZVxuICApOiBQcm9taXNlPFBPSVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fX1xuICAgICAgLkxpc3RQT0lzKHttYXR0ZXJwb3J0U3dlZXBJRDoge2VxOiBzd2VlcH19LCAzMDApXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLml0ZW1zLmZpbHRlcigocG9pKSA9PiBwb2kudHlwZSA9PT0gdHlwZSkpO1xuICB9XG5cbiAgdW5zdWJzY3JpYmUoKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19