@smarterplan/ngx-smarterplan-core 1.2.47 → 1.2.49

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 (69) hide show
  1. package/esm2020/lib/components/csv-export/csv-export.component.mjs +4 -4
  2. package/esm2020/lib/components/loader/loader.component.mjs +4 -4
  3. package/esm2020/lib/components/menu-bar/avatar/avatar.component.mjs +4 -4
  4. package/esm2020/lib/components/menu-bar/menu-bar.component.mjs +7 -5
  5. package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +16 -11
  6. package/esm2020/lib/components/menu-bar/range-date-picker/range-date-picker.component.mjs +4 -4
  7. package/esm2020/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +4 -4
  8. package/esm2020/lib/components/search-bar/search-bar.component.mjs +4 -4
  9. package/esm2020/lib/components/support-modal/support-modal.component.mjs +4 -4
  10. package/esm2020/lib/helpers.service.mjs +2 -2
  11. package/esm2020/lib/ngx-smarterplan-core.module.mjs +5 -5
  12. package/esm2020/lib/ngx-smarterplan-core.service.mjs +4 -4
  13. package/esm2020/lib/pipes/duration-to-string.pipe.mjs +4 -4
  14. package/esm2020/lib/pipes/format-date-number-to-digits.pipe.mjs +4 -4
  15. package/esm2020/lib/pipes/hashtag-from-id.pipe.mjs +4 -4
  16. package/esm2020/lib/pipes/safe-url.pipe.mjs +4 -4
  17. package/esm2020/lib/pipes/time-date-to-local-string.pipe.mjs +4 -4
  18. package/esm2020/lib/pipes/username-from-id.pipe.mjs +4 -4
  19. package/esm2020/lib/services/amplify-cache.service.mjs +4 -4
  20. package/esm2020/lib/services/base-tab.service.mjs +4 -4
  21. package/esm2020/lib/services/baseVisibility.service.mjs +4 -4
  22. package/esm2020/lib/services/content.service.mjs +4 -4
  23. package/esm2020/lib/services/filter.service.mjs +4 -4
  24. package/esm2020/lib/services/intervention.service.mjs +4 -4
  25. package/esm2020/lib/services/locale.service.mjs +4 -4
  26. package/esm2020/lib/services/matterport-import.service.mjs +4 -4
  27. package/esm2020/lib/services/matterport.service.mjs +4 -4
  28. package/esm2020/lib/services/models/affectation.service.mjs +4 -4
  29. package/esm2020/lib/services/models/base-object.service.mjs +4 -4
  30. package/esm2020/lib/services/models/capture.service.mjs +4 -4
  31. package/esm2020/lib/services/models/comment.service.mjs +4 -4
  32. package/esm2020/lib/services/models/domain.service.mjs +4 -4
  33. package/esm2020/lib/services/models/equipment.service.mjs +4 -4
  34. package/esm2020/lib/services/models/event.service.mjs +4 -4
  35. package/esm2020/lib/services/models/feature.service.mjs +4 -4
  36. package/esm2020/lib/services/models/hashtag.service.mjs +4 -4
  37. package/esm2020/lib/services/models/layer.service.mjs +4 -4
  38. package/esm2020/lib/services/models/measurement.service.mjs +4 -4
  39. package/esm2020/lib/services/models/mission.service.mjs +4 -4
  40. package/esm2020/lib/services/models/navigation.service.mjs +4 -4
  41. package/esm2020/lib/services/models/node.service.mjs +4 -4
  42. package/esm2020/lib/services/models/object3D.service.mjs +4 -4
  43. package/esm2020/lib/services/models/operation.service.mjs +4 -4
  44. package/esm2020/lib/services/models/organisation.service.mjs +4 -4
  45. package/esm2020/lib/services/models/plan.service.mjs +4 -4
  46. package/esm2020/lib/services/models/poi.service.mjs +4 -4
  47. package/esm2020/lib/services/models/profile.service.mjs +4 -4
  48. package/esm2020/lib/services/models/property.service.mjs +4 -4
  49. package/esm2020/lib/services/models/space.service.mjs +4 -4
  50. package/esm2020/lib/services/models/template.service.mjs +4 -4
  51. package/esm2020/lib/services/models/ticket.service.mjs +4 -4
  52. package/esm2020/lib/services/models/visit.service.mjs +4 -4
  53. package/esm2020/lib/services/models/zone.service.mjs +4 -4
  54. package/esm2020/lib/services/navigator.service.mjs +4 -4
  55. package/esm2020/lib/services/search.service.mjs +4 -4
  56. package/esm2020/lib/services/support.service.mjs +4 -4
  57. package/esm2020/lib/services/tag.service.mjs +4 -4
  58. package/esm2020/lib/services/user.service.mjs +4 -4
  59. package/esm2020/lib/services/validators.service.mjs +4 -4
  60. package/esm2020/lib/services/viewer.service.mjs +4 -4
  61. package/esm2020/lib/services/zoneChange.service.mjs +4 -4
  62. package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +192 -186
  63. package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  64. package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +192 -186
  65. package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  66. package/lib/components/menu-bar/menu-bar.component.d.ts +1 -0
  67. package/lib/components/menu-bar/navigation-bar/navigation-bar.component.d.ts +4 -1
  68. package/package.json +13 -13
  69. package/src/assets/vs-app.json +67 -0
@@ -225,12 +225,12 @@ export class InterventionService {
225
225
  return date;
226
226
  }
227
227
  }
228
- InterventionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: InterventionService, deps: [{ token: i1.EventService }, { token: i2.MissionService }], target: i0.ɵɵFactoryTarget.Injectable });
229
- InterventionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: InterventionService, providedIn: "root" });
230
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: InterventionService, decorators: [{
228
+ InterventionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: InterventionService, deps: [{ token: i1.EventService }, { token: i2.MissionService }], target: i0.ɵɵFactoryTarget.Injectable });
229
+ InterventionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: InterventionService, providedIn: "root" });
230
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: InterventionService, decorators: [{
231
231
  type: Injectable,
232
232
  args: [{
233
233
  providedIn: "root",
234
234
  }]
235
235
  }], ctorParameters: function () { return [{ type: i1.EventService }, { type: i2.MissionService }]; } });
236
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2ZW50aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL2ludGVydmVudGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBUyxXQUFXLEVBQUUsU0FBUyxFQUFlLGFBQWEsRUFBK0IsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQU8xSCxNQUFNLE9BQU8sbUJBQW1CO0lBUTVCLFlBQ1ksWUFBMEIsRUFDMUIsY0FBOEI7UUFEOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBVDFDLDJCQUFzQixHQUFHO1lBQ3JCLFNBQVMsQ0FBQyw0QkFBNEI7WUFDdEMsU0FBUyxDQUFDLHdCQUF3QjtZQUNsQyxTQUFTLENBQUMsU0FBUztZQUNuQixTQUFTLENBQUMsd0JBQXdCO1NBQ3JDLENBQUM7SUFLQyxDQUFDO0lBRUosS0FBSyxDQUFDLGdDQUFnQyxDQUNsQyxNQUFjO1FBRWQsTUFBTSxNQUFNLEdBQ1IsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLG1DQUFtQyxDQUN2RCxNQUFNLENBQUMsRUFBRSxDQUNaLENBQUM7UUFDTixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDM0MsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQ3BELENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUNwQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsd0JBQXdCLENBQ2pFLENBQUM7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Q0FBQyxpQkFBaUIsQ0FBQztnQkFDN0MsTUFBTTthQUNUO1NBQ0o7UUFDRCxPQUFPLGlCQUFpQixDQUFDO0lBQzdCLENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxNQUFlO1FBQ3hDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztRQUNoQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLDZCQUE2QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdFLEtBQUssTUFBTSxNQUFNLElBQUksWUFBWSxFQUFFO1lBQy9CLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRTtnQkFDeEIsSUFBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUM7Z0JBQzlCLE1BQU07YUFDVDtTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs7Z0hBcFRRLG1CQUFtQjtvSEFBbkIsbUJBQW1CLGNBRmhCLE1BQU07MkZBRVQsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEV2ZW50LCBFdmVudFN0YXR1cywgRXZlbnRUeXBlLCBQcmVzdGF0YWlyZSwgUHJvZmlsZUVudGl0eSwgUmVxdWVzdEludGVydmVudGlvbiwgVGlja2V0IH0gZnJvbSBcIi4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRXZlbnRTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL2V2ZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTWlzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvbWlzc2lvbi5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEludGVydmVudGlvblNlcnZpY2Uge1xyXG4gICAgaW50ZXJ2ZW50aW9uRXZlbnRUeXBlcyA9IFtcclxuICAgICAgICBFdmVudFR5cGUuTk9OX0NPTlRSQUNUVUFMX0lOVEVSVkVOVElPTixcclxuICAgICAgICBFdmVudFR5cGUuQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OLFxyXG4gICAgICAgIEV2ZW50VHlwZS5SRVBPUlRJTkcsXHJcbiAgICAgICAgRXZlbnRUeXBlLlJFUVVFU1RfRk9SX0lOVEVSVkVOVElPTixcclxuICAgIF07XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG1pc3Npb25TZXJ2aWNlOiBNaXNzaW9uU2VydmljZSxcclxuICAgICkge31cclxuXHJcbiAgICBhc3luYyBnZXRSZXF1ZXN0SW50ZXJ2ZW50aW9uRnJvbVRpY2tldChcclxuICAgICAgICB0aWNrZXQ6IFRpY2tldCxcclxuICAgICk6IFByb21pc2U8UmVxdWVzdEludGVydmVudGlvbj4ge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50cyA9XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZXZlbnRTZXJ2aWNlLmdldEV2ZW50c0J5VGlja2V0SURTb3J0ZWRCeURhdGVEZXNjKFxyXG4gICAgICAgICAgICAgICAgdGlja2V0LmlkLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IHJlbGF0ZWRFdmVudHMgPSBldmVudHMuZmlsdGVyKChldmVudF8pID0+XHJcbiAgICAgICAgICAgIHRoaXMuaW50ZXJ2ZW50aW9uRXZlbnRUeXBlcy5pbmNsdWRlcyhldmVudF8udHlwZSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBhbGxSZXF1ZXN0cyA9IHJlbGF0ZWRFdmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXZlbnRfKSA9PiBldmVudF8udHlwZSA9PT0gRXZlbnRUeXBlLlJFUVVFU1RfRk9SX0lOVEVSVkVOVElPTixcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChhbGxSZXF1ZXN0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vc3RSZWNlbnQgPSBhbGxSZXF1ZXN0c1swXTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvc2VkUmVxdWVzdCA9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50VG9SZXF1ZXN0SW50ZXJ2ZW50aW9uKG1vc3RSZWNlbnQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGNvbXBvc2VkUmVxdWVzdC5zdGF0dXMgPT09IEV2ZW50U3RhdHVzLkNBTkNFTExFRCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvc2VkUmVxdWVzdDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IGV2ZW50c0Zvck1vc3RSZWNlbnRSZXF1ZXN0ID0gcmVsYXRlZEV2ZW50cy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAoZXZlbnQpID0+IGV2ZW50Lmdyb3VwID09PSBjb21wb3NlZFJlcXVlc3QuaWQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGxldCBpbnRlcnZlbnRpb247XHJcbiAgICAgICAgICAgIGlmIChldmVudHNGb3JNb3N0UmVjZW50UmVxdWVzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIC8vIGJhY2sgY29tcGF0aWJpbGl0eVxyXG4gICAgICAgICAgICAgICAgZXZlbnRzRm9yTW9zdFJlY2VudFJlcXVlc3QgPSByZWxhdGVkRXZlbnRzO1xyXG4gICAgICAgICAgICAgICAgLy8gZ2V0IGludGVydmVudGlvblxyXG4gICAgICAgICAgICAgICAgaW50ZXJ2ZW50aW9uID0gdGhpcy5jb21wb3NlSW50ZXJ2ZW50aW9uRm9yUmVxdWVzdChcclxuICAgICAgICAgICAgICAgICAgICByZWxhdGVkRXZlbnRzLFxyXG4gICAgICAgICAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgLy8gc2V0IGR1cmF0aW9uXHJcbiAgICAgICAgICAgICAgICBjb21wb3NlZFJlcXVlc3QucmVhbER1cmF0aW9uID1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldER1cmF0aW9uRm9yUmVxdWVzdChcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZEV2ZW50cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaW50ZXJ2ZW50aW9uID0gdGhpcy5jb21wb3NlSW50ZXJ2ZW50aW9uRm9yUmVxdWVzdChcclxuICAgICAgICAgICAgICAgICAgICBldmVudHNGb3JNb3N0UmVjZW50UmVxdWVzdCxcclxuICAgICAgICAgICAgICAgICAgICBjb21wb3NlZFJlcXVlc3QuaWQsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgY29tcG9zZWRSZXF1ZXN0LnJlYWxEdXJhdGlvbiA9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREdXJhdGlvbkZvclJlcXVlc3QoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50c0Zvck1vc3RSZWNlbnRSZXF1ZXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NlZFJlcXVlc3QuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFjb21wb3NlZFJlcXVlc3QuZXN0aW1hdGVTdGFydERhdGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbXBvc2VkUmVxdWVzdC5lc3RpbWF0ZVN0YXJ0RGF0ZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRNb3N0UmVjZW50RXN0aW1hdGVTdGFydERhdGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50c0Zvck1vc3RSZWNlbnRSZXF1ZXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29tcG9zZWRSZXF1ZXN0LnJlYWxTdGFydERhdGUgPVxyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRFYXJsaWVzdFJlYWxTdGFydERhdGVGb3JSZXF1ZXN0KFxyXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRFdmVudHMsXHJcbiAgICAgICAgICAgICAgICAgICAgY29tcG9zZWRSZXF1ZXN0LmlkLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKCFjb21wb3NlZFJlcXVlc3QuZXN0aW1hdGVFbmREYXRlKSB7XHJcbiAgICAgICAgICAgICAgICBjb21wb3NlZFJlcXVlc3QuZXN0aW1hdGVFbmREYXRlID1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldE1vc3RSZWNlbnRFc3RpbWF0ZUVuZERhdGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50c0Zvck1vc3RSZWNlbnRSZXF1ZXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29tcG9zZWRSZXF1ZXN0LnJlYWxFbmREYXRlID1cclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TGF0ZXN0UmVhbEVuZERhdGVGb3JSZXF1ZXN0KFxyXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRFdmVudHMsXHJcbiAgICAgICAgICAgICAgICAgICAgY29tcG9zZWRSZXF1ZXN0LmlkLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNvbXBvc2VkUmVxdWVzdC5pbnRlcnZlbnRpb24gPSBpbnRlcnZlbnRpb247XHJcbiAgICAgICAgICAgIHJldHVybiBjb21wb3NlZFJlcXVlc3Q7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvc2VJbnRlcnZlbnRpb25Gb3JSZXF1ZXN0KFxyXG4gICAgICAgIHJlbGF0ZWRFdmVudHM6IEV2ZW50W10sXHJcbiAgICAgICAgcmVxdWVzdElEOiBzdHJpbmcsXHJcbiAgICApOiBFdmVudCB7XHJcbiAgICAgICAgY29uc3QgaW50ZXJ2ZW50aW9ucyA9IHJlcXVlc3RJRFxyXG4gICAgICAgICAgICA/IHJlbGF0ZWRFdmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGV2ZW50Xy50eXBlID09PSBFdmVudFR5cGUuTk9OX0NPTlRSQUNUVUFMX0lOVEVSVkVOVElPTiB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Xy50eXBlID09PSBFdmVudFR5cGUuQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnRfLmdyb3VwID09PSByZXF1ZXN0SUQsXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICA6IHJlbGF0ZWRFdmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnRfLnR5cGUgPT09IEV2ZW50VHlwZS5OT05fQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICBldmVudF8udHlwZSA9PT0gRXZlbnRUeXBlLkNPTlRSQUNUVUFMX0lOVEVSVkVOVElPTixcclxuICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAoaW50ZXJ2ZW50aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxhc3RJbnRlcnZlbnRpb24gPSBpbnRlcnZlbnRpb25zWzBdO1xyXG4gICAgICAgICAgICByZXR1cm4gbGFzdEludGVydmVudGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0UHJlc3RhdGFpcmVGb3JUaWNrZXQodGlja2V0OiBUaWNrZXQpOiBQcm9taXNlPFByZXN0YXRhaXJlPiB7XHJcbiAgICAgICAgaWYgKHRpY2tldC5hc3NpZ25lZXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBzb3J0ZWRBZmZlY3RhdGlvbnMgPSB0aWNrZXQuYXNzaWduZWVzLml0ZW1zLnNvcnQoXHJcbiAgICAgICAgICAgICAgICAoYSwgYikgPT5cclxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3IERhdGUoYi5jcmVhdGVkQXQpIC0gbmV3IERhdGUoYS5jcmVhdGVkQXQpLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBtaXNzaW9uSURwcmVzdGEgPSBzb3J0ZWRBZmZlY3RhdGlvbnNbMF0ubWlzc2lvbklEO1xyXG4gICAgICAgICAgICBjb25zdCBwcmVzdGFNaXNzaW9uID0gYXdhaXQgdGhpcy5taXNzaW9uU2VydmljZS5nZXRNaXNzaW9uKFxyXG4gICAgICAgICAgICAgICAgbWlzc2lvbklEcHJlc3RhLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCB1c2VyUHJlc3RhdGFpcmUgPSBuZXcgUHJvZmlsZUVudGl0eShwcmVzdGFNaXNzaW9uLnVzZXIpO1xyXG4gICAgICAgICAgICBjb25zdCBwcmVzdGF0YWlyZSA9IHtcclxuICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbjogcHJlc3RhTWlzc2lvbi5vcmdhbmlzYXRpb24sXHJcbiAgICAgICAgICAgICAgICBtaXNzaW9uOiBwcmVzdGFNaXNzaW9uLFxyXG4gICAgICAgICAgICAgICAgcHJvZmlsZTogdXNlclByZXN0YXRhaXJlLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogdXNlclByZXN0YXRhaXJlLmRpc3BsYXlOYW1lLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICByZXR1cm4gcHJlc3RhdGFpcmU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEVhcmxpZXN0UmVhbFN0YXJ0RGF0ZUZvclJlcXVlc3QoXHJcbiAgICAgICAgZXZlbnRzOiBFdmVudFtdLFxyXG4gICAgICAgIHJlcXVlc3RJRDogc3RyaW5nLFxyXG4gICAgKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICAgICAgbGV0IGRhdGUgPSBudWxsO1xyXG4gICAgICAgIGNvbnN0IGludGVydmVudGlvbnMgPSBldmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgKGV2ZW50Xy50eXBlID09PSBFdmVudFR5cGUuQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRfLnR5cGUgPT09IEV2ZW50VHlwZS5OT05fQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OKSAmJlxyXG4gICAgICAgICAgICAgICAgZXZlbnRfLmdyb3VwID09PSByZXF1ZXN0SUQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBzb3J0ZWRJbnRlcnZlbnRpb25zID1cclxuICAgICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2Uuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZUFzYyhpbnRlcnZlbnRpb25zKTtcclxuICAgICAgICBpZiAoc29ydGVkSW50ZXJ2ZW50aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgZXZlbnQgb2Ygc29ydGVkSW50ZXJ2ZW50aW9ucykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnJlYWxTdGFydERhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRlID0gZXZlbnQucmVhbFN0YXJ0RGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMYXRlc3RSZWFsRW5kRGF0ZUZvclJlcXVlc3QoXHJcbiAgICAgICAgZXZlbnRzOiBFdmVudFtdLFxyXG4gICAgICAgIHJlcXVlc3RJRDogc3RyaW5nLFxyXG4gICAgKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICAgICAgbGV0IGRhdGUgPSBudWxsO1xyXG4gICAgICAgIGNvbnN0IGludGVydmVudGlvbnMgPSBldmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgKGV2ZW50Xy50eXBlID09PSBFdmVudFR5cGUuQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRfLnR5cGUgPT09IEV2ZW50VHlwZS5OT05fQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OKSAmJlxyXG4gICAgICAgICAgICAgICAgZXZlbnRfLmdyb3VwID09PSByZXF1ZXN0SUQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBzb3J0ZWRJbnRlcnZlbnRpb25zID1cclxuICAgICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2Uuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZURlc2MoaW50ZXJ2ZW50aW9ucyk7XHJcbiAgICAgICAgaWYgKHNvcnRlZEludGVydmVudGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIHNvcnRlZEludGVydmVudGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChldmVudC5yZWFsRW5kRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGUgPSBldmVudC5yZWFsRW5kRGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREdXJhdGlvbkZvclJlcXVlc3QoZXZlbnRzOiBFdmVudFtdLCByZXF1ZXN0SUQ6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICAgICAgbGV0IGR1cmF0aW9uID0gMDsgLy8gaW4gbWlsaXNlY29uZHNcclxuICAgICAgICBjb25zdCBpbnRlcnZlbnRpb25zID0gcmVxdWVzdElEXHJcbiAgICAgICAgICAgID8gZXZlbnRzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgKGV2ZW50XykgPT5cclxuICAgICAgICAgICAgICAgICAgICAgIChldmVudF8udHlwZSA9PT0gRXZlbnRUeXBlLkNPTlRSQUNUVUFMX0lOVEVSVkVOVElPTiB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Xy50eXBlID09PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudFR5cGUuTk9OX0NPTlRSQUNUVUFMX0lOVEVSVkVOVElPTikgJiZcclxuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Xy5ncm91cCA9PT0gcmVxdWVzdElELFxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgOiBldmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnRfLnR5cGUgPT09IEV2ZW50VHlwZS5DT05UUkFDVFVBTF9JTlRFUlZFTlRJT04gfHxcclxuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Xy50eXBlID09PSBFdmVudFR5cGUuTk9OX0NPTlRSQUNUVUFMX0lOVEVSVkVOVElPTixcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgIGZvciAoY29uc3QgZXZlbnQgb2YgaW50ZXJ2ZW50aW9ucykge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQudGltZVNwZW50KSB7XHJcbiAgICAgICAgICAgICAgICBkdXJhdGlvbiArPSBldmVudC50aW1lU3BlbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGR1cmF0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEludGVydmVudGlvbihldmVudHMpOiBFdmVudCB8IG51bGwge1xyXG4gICAgICAgIGNvbnN0IGludGVydmVudGlvbnMgPSBldmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgZXZlbnRfLnR5cGUgPT09IEV2ZW50VHlwZS5OT05fQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OIHx8XHJcbiAgICAgICAgICAgICAgICBldmVudF8udHlwZSA9PT0gRXZlbnRUeXBlLkNPTlRSQUNUVUFMX0lOVEVSVkVOVElPTixcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChpbnRlcnZlbnRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgbGFzdEludGVydmVudGlvbiA9IGludGVydmVudGlvbnNbMF07XHJcbiAgICAgICAgICAgIHJldHVybiBsYXN0SW50ZXJ2ZW50aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBldmVudFRvUmVxdWVzdEludGVydmVudGlvbihldmVudDogRXZlbnQpOiBSZXF1ZXN0SW50ZXJ2ZW50aW9uIHtcclxuICAgICAgICBjb25zdCByZXF1ZXN0ID0ge1xyXG4gICAgICAgICAgICBpZDogZXZlbnQuZ3JvdXAgPT09IFwiZGVmYXVsdFwiID8gZXZlbnQuaWQgOiBldmVudC5ncm91cCxcclxuICAgICAgICAgICAgcmVhbEVuZERhdGU6IGV2ZW50LnJlYWxFbmREYXRlLFxyXG4gICAgICAgICAgICByZWFsU3RhcnREYXRlOiBldmVudC5yZWFsU3RhcnREYXRlLFxyXG4gICAgICAgICAgICBlc3RpbWF0ZVN0YXJ0RGF0ZTogZXZlbnQuZXN0aW1hdGVTdGFydERhdGUsXHJcbiAgICAgICAgICAgIGVzdGltYXRlRW5kRGF0ZTogZXZlbnQuZXN0aW1hdGVFbmREYXRlLFxyXG4gICAgICAgICAgICByZWFsRHVyYXRpb246IGV2ZW50LnRpbWVTcGVudCxcclxuICAgICAgICAgICAgdHlwZTogZXZlbnQudHlwZSxcclxuICAgICAgICAgICAgc3RhdHVzOiBldmVudC5zdGF0dXMsXHJcbiAgICAgICAgICAgIGNyZWF0ZWRBdDogZXZlbnQuY3JlYXRlZEF0LFxyXG4gICAgICAgICAgICB1cGRhdGVkQXQ6IGV2ZW50LnVwZGF0ZWRBdCxcclxuICAgICAgICAgICAgdGlja2V0SUQ6IGV2ZW50LnRpY2tldElELFxyXG4gICAgICAgIH0gYXMgUmVxdWVzdEludGVydmVudGlvbjtcclxuICAgICAgICByZXR1cm4gcmVxdWVzdDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRNb3N0UmVjZW50VGltZVNwZW50KGV2ZW50czogRXZlbnRbXSk6IG51bWJlciB8IG51bGwge1xyXG4gICAgICAgIGxldCB0aW1lU3BlbnQgPSBudWxsO1xyXG4gICAgICAgIGNvbnN0IHNvcnRlZEV2ZW50cyA9IHRoaXMuZ2V0QWxsRXZlbnRzQWZ0ZXJMYXN0Q3JlYXRlZChldmVudHMpO1xyXG4gICAgICAgIGZvciAoY29uc3QgZXZlbnRfIG9mIHNvcnRlZEV2ZW50cykge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnRfLnRpbWVTcGVudCkge1xyXG4gICAgICAgICAgICAgICAgdGltZVNwZW50ID0gZXZlbnRfLnRpbWVTcGVudDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aW1lU3BlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWxsRXZlbnRzQWZ0ZXJMYXN0Q3JlYXRlZChldmVudHM6IEV2ZW50W10pOiBFdmVudFtdIHtcclxuICAgICAgICBjb25zdCBldmVudHNBZnRlcjogRXZlbnRbXSA9IFtdO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbnRlcnZlbnRpb24gPSB0aGlzLmdldEN1cnJlbnRJbnRldmVudGlvbihldmVudHMpO1xyXG4gICAgICAgIGNvbnN0IHNvcnRlZEV2ZW50cyA9IHRoaXMuZXZlbnRTZXJ2aWNlLnNvcnRFdmVudHNCeUNyZWF0ZWRBdERhdGVEZXNjKGV2ZW50cyk7XHJcbiAgICAgICAgaWYgKHNvcnRlZEV2ZW50cy5sZW5ndGggPiAwICYmIGN1cnJlbnRJbnRlcnZlbnRpb24pIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBldmVudF8gb2Ygc29ydGVkRXZlbnRzKSB7XHJcbiAgICAgICAgICAgICAgICBldmVudHNBZnRlci5wdXNoKGV2ZW50Xyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnRfLmlkID09PSBjdXJyZW50SW50ZXJ2ZW50aW9uLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGV2ZW50c0FmdGVyO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEN1cnJlbnRJbnRldmVudGlvbihldmVudHM6IEV2ZW50W10pOiBFdmVudCB7XHJcbiAgICAgICAgY29uc3Qgc29ydGVkRXZlbnRzID0gdGhpcy5ldmVudFNlcnZpY2Uuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZURlc2MoZXZlbnRzKTtcclxuICAgICAgICBsZXQgY3VycmVudEludGVydmVudGlvbjtcclxuICAgICAgICBmb3IgKGNvbnN0IGV2ZW50XyBvZiBzb3J0ZWRFdmVudHMpIHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50Xy5zdGF0dXMgPT09IEV2ZW50U3RhdHVzLkNSRUFURUQpIHtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRJbnRlcnZlbnRpb24gPSBldmVudF87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGV2ZW50Xy5zdGF0dXMgIT09IEV2ZW50U3RhdHVzLkNSRUFURUQgJiYgY3VycmVudEludGVydmVudGlvbikge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRJbnRlcnZlbnRpb247XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TW9zdFJlY2VudEVzdGltYXRlU3RhcnREYXRlKGV2ZW50czogRXZlbnRbXSk6IG51bWJlciB8IG51bGwge1xyXG4gICAgICAgIGxldCBlc3RpbWF0ZVN0YXJ0RGF0ZSA9IG51bGw7XHJcbiAgICAgICAgLy8gY29uc3Qgc29ydGVkRXZlbnRzID0gdGhpcy5nZXRBbGxFdmVudHNBZnRlckxhc3RDcmVhdGVkKGV2ZW50cyk7XHJcbiAgICAgICAgY29uc3Qgc29ydGVkRXZlbnRzID0gdGhpcy5ldmVudFNlcnZpY2Uuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZURlc2MoZXZlbnRzKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGV2ZW50XyBvZiBzb3J0ZWRFdmVudHMpIHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50Xy5lc3RpbWF0ZVN0YXJ0RGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgZXN0aW1hdGVTdGFydERhdGUgPSBldmVudF8uZXN0aW1hdGVTdGFydERhdGU7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZXN0aW1hdGVTdGFydERhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TW9zdFJlY2VudEVzdGltYXRlRW5kRGF0ZShldmVudHM6IEV2ZW50W10pOiBudW1iZXIgfCBudWxsIHtcclxuICAgICAgICBsZXQgZGF0ZSA9IG51bGw7XHJcbiAgICAgICAgY29uc3Qgc29ydGVkRXZlbnRzID0gdGhpcy5ldmVudFNlcnZpY2Uuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZURlc2MoZXZlbnRzKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGV2ZW50XyBvZiBzb3J0ZWRFdmVudHMpIHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50Xy5lc3RpbWF0ZUVuZERhdGUpIHtcclxuICAgICAgICAgICAgICAgIGRhdGUgPSBldmVudF8uZXN0aW1hdGVFbmREYXRlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZ2V0TW9zdFJlY2VudFJlYWxTdGFydERhdGUoZXZlbnRzOiBFdmVudFtdKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICAvLyAgICAgbGV0IGRhdGUgPSBudWxsO1xyXG4gICAgLy8gICAgIC8vIGNvbnN0IHNvcnRlZEV2ZW50cyA9IHRoaXMuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZURlc2MoZXZlbnRzKTtcclxuICAgIC8vICAgICBjb25zdCBzb3J0ZWRFdmVudHMgPSB0aGlzLmdldEFsbEV2ZW50c0FmdGVyTGFzdENyZWF0ZWQoZXZlbnRzKTtcclxuICAgIC8vICAgICBmb3IgKGNvbnN0IGV2ZW50XyBvZiBzb3J0ZWRFdmVudHMpIHtcclxuICAgIC8vICAgICAgICAgaWYgKGV2ZW50Xy5yZWFsU3RhcnREYXRlKSB7XHJcbiAgICAvLyAgICAgICAgICAgICBkYXRlID0gZXZlbnRfLnJlYWxTdGFydERhdGU7XHJcbiAgICAvLyAgICAgICAgICAgICBicmVhaztcclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICByZXR1cm4gZGF0ZTtcclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyBnZXRNb3N0UmVjZW50UmVhbFN0YXJ0RGF0ZUdsb2JhbChldmVudHM6IEV2ZW50W10pOiBudW1iZXIgfCBudWxsIHtcclxuICAgIC8vICAgICBsZXQgZGF0ZSA9IG51bGw7XHJcbiAgICAvLyAgICAgLy8gY29uc3Qgc29ydGVkRXZlbnRzID0gdGhpcy5zb3J0RXZlbnRzQnlDcmVhdGVkQXREYXRlRGVzYyhldmVudHMpO1xyXG4gICAgLy8gICAgIGNvbnN0IHNvcnRlZEV2ZW50cyA9IHRoaXMuZ2V0QWxsRXZlbnRzQWZ0ZXJMYXN0Q3JlYXRlZChldmVudHMpO1xyXG4gICAgLy8gICAgIGlmIChzb3J0ZWRFdmVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICAgICAgICBmb3IgKGNvbnN0IGV2ZW50XyBvZiBzb3J0ZWRFdmVudHMpIHtcclxuICAgIC8vICAgICAgICAgICAgIGlmIChldmVudF8ucmVhbFN0YXJ0RGF0ZSkge1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIGRhdGUgPSBldmVudF8ucmVhbFN0YXJ0RGF0ZTtcclxuICAgIC8vICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgIC8vICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICByZXR1cm4gZGF0ZTtcclxuICAgIC8vIH1cclxufVxyXG4iXX0=
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2ZW50aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL2ludGVydmVudGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBUyxXQUFXLEVBQUUsU0FBUyxFQUFlLGFBQWEsRUFBK0IsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQU8xSCxNQUFNLE9BQU8sbUJBQW1CO0lBUTVCLFlBQ1ksWUFBMEIsRUFDMUIsY0FBOEI7UUFEOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBVDFDLDJCQUFzQixHQUFHO1lBQ3JCLFNBQVMsQ0FBQyw0QkFBNEI7WUFDdEMsU0FBUyxDQUFDLHdCQUF3QjtZQUNsQyxTQUFTLENBQUMsU0FBUztZQUNuQixTQUFTLENBQUMsd0JBQXdCO1NBQ3JDLENBQUM7SUFLQyxDQUFDO0lBRUosS0FBSyxDQUFDLGdDQUFnQyxDQUNsQyxNQUFjO1FBRWQsTUFBTSxNQUFNLEdBQ1IsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLG1DQUFtQyxDQUN2RCxNQUFNLENBQUMsRUFBRSxDQUNaLENBQUM7UUFDTixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDM0MsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQ3BELENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUNwQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsd0JBQXdCLENBQ2pFLENBQUM7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Q0FBQyxpQkFBaUIsQ0FBQztnQkFDN0MsTUFBTTthQUNUO1NBQ0o7UUFDRCxPQUFPLGlCQUFpQixDQUFDO0lBQzdCLENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxNQUFlO1FBQ3hDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztRQUNoQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLDZCQUE2QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdFLEtBQUssTUFBTSxNQUFNLElBQUksWUFBWSxFQUFFO1lBQy9CLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRTtnQkFDeEIsSUFBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUM7Z0JBQzlCLE1BQU07YUFDVDtTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs7aUhBcFRRLG1CQUFtQjtxSEFBbkIsbUJBQW1CLGNBRmhCLE1BQU07NEZBRVQsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEV2ZW50LCBFdmVudFN0YXR1cywgRXZlbnRUeXBlLCBQcmVzdGF0YWlyZSwgUHJvZmlsZUVudGl0eSwgUmVxdWVzdEludGVydmVudGlvbiwgVGlja2V0IH0gZnJvbSBcIi4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRXZlbnRTZXJ2aWNlIH0gZnJvbSBcIi4vbW9kZWxzL2V2ZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTWlzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvbWlzc2lvbi5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEludGVydmVudGlvblNlcnZpY2Uge1xyXG4gICAgaW50ZXJ2ZW50aW9uRXZlbnRUeXBlcyA9IFtcclxuICAgICAgICBFdmVudFR5cGUuTk9OX0NPTlRSQUNUVUFMX0lOVEVSVkVOVElPTixcclxuICAgICAgICBFdmVudFR5cGUuQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OLFxyXG4gICAgICAgIEV2ZW50VHlwZS5SRVBPUlRJTkcsXHJcbiAgICAgICAgRXZlbnRUeXBlLlJFUVVFU1RfRk9SX0lOVEVSVkVOVElPTixcclxuICAgIF07XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG1pc3Npb25TZXJ2aWNlOiBNaXNzaW9uU2VydmljZSxcclxuICAgICkge31cclxuXHJcbiAgICBhc3luYyBnZXRSZXF1ZXN0SW50ZXJ2ZW50aW9uRnJvbVRpY2tldChcclxuICAgICAgICB0aWNrZXQ6IFRpY2tldCxcclxuICAgICk6IFByb21pc2U8UmVxdWVzdEludGVydmVudGlvbj4ge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50cyA9XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZXZlbnRTZXJ2aWNlLmdldEV2ZW50c0J5VGlja2V0SURTb3J0ZWRCeURhdGVEZXNjKFxyXG4gICAgICAgICAgICAgICAgdGlja2V0LmlkLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IHJlbGF0ZWRFdmVudHMgPSBldmVudHMuZmlsdGVyKChldmVudF8pID0+XHJcbiAgICAgICAgICAgIHRoaXMuaW50ZXJ2ZW50aW9uRXZlbnRUeXBlcy5pbmNsdWRlcyhldmVudF8udHlwZSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBhbGxSZXF1ZXN0cyA9IHJlbGF0ZWRFdmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXZlbnRfKSA9PiBldmVudF8udHlwZSA9PT0gRXZlbnRUeXBlLlJFUVVFU1RfRk9SX0lOVEVSVkVOVElPTixcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChhbGxSZXF1ZXN0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vc3RSZWNlbnQgPSBhbGxSZXF1ZXN0c1swXTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvc2VkUmVxdWVzdCA9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50VG9SZXF1ZXN0SW50ZXJ2ZW50aW9uKG1vc3RSZWNlbnQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGNvbXBvc2VkUmVxdWVzdC5zdGF0dXMgPT09IEV2ZW50U3RhdHVzLkNBTkNFTExFRCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvc2VkUmVxdWVzdDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IGV2ZW50c0Zvck1vc3RSZWNlbnRSZXF1ZXN0ID0gcmVsYXRlZEV2ZW50cy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAoZXZlbnQpID0+IGV2ZW50Lmdyb3VwID09PSBjb21wb3NlZFJlcXVlc3QuaWQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGxldCBpbnRlcnZlbnRpb247XHJcbiAgICAgICAgICAgIGlmIChldmVudHNGb3JNb3N0UmVjZW50UmVxdWVzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIC8vIGJhY2sgY29tcGF0aWJpbGl0eVxyXG4gICAgICAgICAgICAgICAgZXZlbnRzRm9yTW9zdFJlY2VudFJlcXVlc3QgPSByZWxhdGVkRXZlbnRzO1xyXG4gICAgICAgICAgICAgICAgLy8gZ2V0IGludGVydmVudGlvblxyXG4gICAgICAgICAgICAgICAgaW50ZXJ2ZW50aW9uID0gdGhpcy5jb21wb3NlSW50ZXJ2ZW50aW9uRm9yUmVxdWVzdChcclxuICAgICAgICAgICAgICAgICAgICByZWxhdGVkRXZlbnRzLFxyXG4gICAgICAgICAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgLy8gc2V0IGR1cmF0aW9uXHJcbiAgICAgICAgICAgICAgICBjb21wb3NlZFJlcXVlc3QucmVhbER1cmF0aW9uID1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldER1cmF0aW9uRm9yUmVxdWVzdChcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZEV2ZW50cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaW50ZXJ2ZW50aW9uID0gdGhpcy5jb21wb3NlSW50ZXJ2ZW50aW9uRm9yUmVxdWVzdChcclxuICAgICAgICAgICAgICAgICAgICBldmVudHNGb3JNb3N0UmVjZW50UmVxdWVzdCxcclxuICAgICAgICAgICAgICAgICAgICBjb21wb3NlZFJlcXVlc3QuaWQsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgY29tcG9zZWRSZXF1ZXN0LnJlYWxEdXJhdGlvbiA9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREdXJhdGlvbkZvclJlcXVlc3QoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50c0Zvck1vc3RSZWNlbnRSZXF1ZXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NlZFJlcXVlc3QuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFjb21wb3NlZFJlcXVlc3QuZXN0aW1hdGVTdGFydERhdGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbXBvc2VkUmVxdWVzdC5lc3RpbWF0ZVN0YXJ0RGF0ZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRNb3N0UmVjZW50RXN0aW1hdGVTdGFydERhdGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50c0Zvck1vc3RSZWNlbnRSZXF1ZXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29tcG9zZWRSZXF1ZXN0LnJlYWxTdGFydERhdGUgPVxyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRFYXJsaWVzdFJlYWxTdGFydERhdGVGb3JSZXF1ZXN0KFxyXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRFdmVudHMsXHJcbiAgICAgICAgICAgICAgICAgICAgY29tcG9zZWRSZXF1ZXN0LmlkLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKCFjb21wb3NlZFJlcXVlc3QuZXN0aW1hdGVFbmREYXRlKSB7XHJcbiAgICAgICAgICAgICAgICBjb21wb3NlZFJlcXVlc3QuZXN0aW1hdGVFbmREYXRlID1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldE1vc3RSZWNlbnRFc3RpbWF0ZUVuZERhdGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50c0Zvck1vc3RSZWNlbnRSZXF1ZXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29tcG9zZWRSZXF1ZXN0LnJlYWxFbmREYXRlID1cclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TGF0ZXN0UmVhbEVuZERhdGVGb3JSZXF1ZXN0KFxyXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRFdmVudHMsXHJcbiAgICAgICAgICAgICAgICAgICAgY29tcG9zZWRSZXF1ZXN0LmlkLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNvbXBvc2VkUmVxdWVzdC5pbnRlcnZlbnRpb24gPSBpbnRlcnZlbnRpb247XHJcbiAgICAgICAgICAgIHJldHVybiBjb21wb3NlZFJlcXVlc3Q7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvc2VJbnRlcnZlbnRpb25Gb3JSZXF1ZXN0KFxyXG4gICAgICAgIHJlbGF0ZWRFdmVudHM6IEV2ZW50W10sXHJcbiAgICAgICAgcmVxdWVzdElEOiBzdHJpbmcsXHJcbiAgICApOiBFdmVudCB7XHJcbiAgICAgICAgY29uc3QgaW50ZXJ2ZW50aW9ucyA9IHJlcXVlc3RJRFxyXG4gICAgICAgICAgICA/IHJlbGF0ZWRFdmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGV2ZW50Xy50eXBlID09PSBFdmVudFR5cGUuTk9OX0NPTlRSQUNUVUFMX0lOVEVSVkVOVElPTiB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Xy50eXBlID09PSBFdmVudFR5cGUuQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnRfLmdyb3VwID09PSByZXF1ZXN0SUQsXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICA6IHJlbGF0ZWRFdmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnRfLnR5cGUgPT09IEV2ZW50VHlwZS5OT05fQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICBldmVudF8udHlwZSA9PT0gRXZlbnRUeXBlLkNPTlRSQUNUVUFMX0lOVEVSVkVOVElPTixcclxuICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAoaW50ZXJ2ZW50aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxhc3RJbnRlcnZlbnRpb24gPSBpbnRlcnZlbnRpb25zWzBdO1xyXG4gICAgICAgICAgICByZXR1cm4gbGFzdEludGVydmVudGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0UHJlc3RhdGFpcmVGb3JUaWNrZXQodGlja2V0OiBUaWNrZXQpOiBQcm9taXNlPFByZXN0YXRhaXJlPiB7XHJcbiAgICAgICAgaWYgKHRpY2tldC5hc3NpZ25lZXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBzb3J0ZWRBZmZlY3RhdGlvbnMgPSB0aWNrZXQuYXNzaWduZWVzLml0ZW1zLnNvcnQoXHJcbiAgICAgICAgICAgICAgICAoYSwgYikgPT5cclxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3IERhdGUoYi5jcmVhdGVkQXQpIC0gbmV3IERhdGUoYS5jcmVhdGVkQXQpLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBtaXNzaW9uSURwcmVzdGEgPSBzb3J0ZWRBZmZlY3RhdGlvbnNbMF0ubWlzc2lvbklEO1xyXG4gICAgICAgICAgICBjb25zdCBwcmVzdGFNaXNzaW9uID0gYXdhaXQgdGhpcy5taXNzaW9uU2VydmljZS5nZXRNaXNzaW9uKFxyXG4gICAgICAgICAgICAgICAgbWlzc2lvbklEcHJlc3RhLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCB1c2VyUHJlc3RhdGFpcmUgPSBuZXcgUHJvZmlsZUVudGl0eShwcmVzdGFNaXNzaW9uLnVzZXIpO1xyXG4gICAgICAgICAgICBjb25zdCBwcmVzdGF0YWlyZSA9IHtcclxuICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbjogcHJlc3RhTWlzc2lvbi5vcmdhbmlzYXRpb24sXHJcbiAgICAgICAgICAgICAgICBtaXNzaW9uOiBwcmVzdGFNaXNzaW9uLFxyXG4gICAgICAgICAgICAgICAgcHJvZmlsZTogdXNlclByZXN0YXRhaXJlLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogdXNlclByZXN0YXRhaXJlLmRpc3BsYXlOYW1lLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICByZXR1cm4gcHJlc3RhdGFpcmU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEVhcmxpZXN0UmVhbFN0YXJ0RGF0ZUZvclJlcXVlc3QoXHJcbiAgICAgICAgZXZlbnRzOiBFdmVudFtdLFxyXG4gICAgICAgIHJlcXVlc3RJRDogc3RyaW5nLFxyXG4gICAgKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICAgICAgbGV0IGRhdGUgPSBudWxsO1xyXG4gICAgICAgIGNvbnN0IGludGVydmVudGlvbnMgPSBldmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgKGV2ZW50Xy50eXBlID09PSBFdmVudFR5cGUuQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRfLnR5cGUgPT09IEV2ZW50VHlwZS5OT05fQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OKSAmJlxyXG4gICAgICAgICAgICAgICAgZXZlbnRfLmdyb3VwID09PSByZXF1ZXN0SUQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBzb3J0ZWRJbnRlcnZlbnRpb25zID1cclxuICAgICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2Uuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZUFzYyhpbnRlcnZlbnRpb25zKTtcclxuICAgICAgICBpZiAoc29ydGVkSW50ZXJ2ZW50aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgZXZlbnQgb2Ygc29ydGVkSW50ZXJ2ZW50aW9ucykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnJlYWxTdGFydERhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRlID0gZXZlbnQucmVhbFN0YXJ0RGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMYXRlc3RSZWFsRW5kRGF0ZUZvclJlcXVlc3QoXHJcbiAgICAgICAgZXZlbnRzOiBFdmVudFtdLFxyXG4gICAgICAgIHJlcXVlc3RJRDogc3RyaW5nLFxyXG4gICAgKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICAgICAgbGV0IGRhdGUgPSBudWxsO1xyXG4gICAgICAgIGNvbnN0IGludGVydmVudGlvbnMgPSBldmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgKGV2ZW50Xy50eXBlID09PSBFdmVudFR5cGUuQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRfLnR5cGUgPT09IEV2ZW50VHlwZS5OT05fQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OKSAmJlxyXG4gICAgICAgICAgICAgICAgZXZlbnRfLmdyb3VwID09PSByZXF1ZXN0SUQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBzb3J0ZWRJbnRlcnZlbnRpb25zID1cclxuICAgICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2Uuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZURlc2MoaW50ZXJ2ZW50aW9ucyk7XHJcbiAgICAgICAgaWYgKHNvcnRlZEludGVydmVudGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIHNvcnRlZEludGVydmVudGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChldmVudC5yZWFsRW5kRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGUgPSBldmVudC5yZWFsRW5kRGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREdXJhdGlvbkZvclJlcXVlc3QoZXZlbnRzOiBFdmVudFtdLCByZXF1ZXN0SUQ6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICAgICAgbGV0IGR1cmF0aW9uID0gMDsgLy8gaW4gbWlsaXNlY29uZHNcclxuICAgICAgICBjb25zdCBpbnRlcnZlbnRpb25zID0gcmVxdWVzdElEXHJcbiAgICAgICAgICAgID8gZXZlbnRzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgKGV2ZW50XykgPT5cclxuICAgICAgICAgICAgICAgICAgICAgIChldmVudF8udHlwZSA9PT0gRXZlbnRUeXBlLkNPTlRSQUNUVUFMX0lOVEVSVkVOVElPTiB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Xy50eXBlID09PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudFR5cGUuTk9OX0NPTlRSQUNUVUFMX0lOVEVSVkVOVElPTikgJiZcclxuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Xy5ncm91cCA9PT0gcmVxdWVzdElELFxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgOiBldmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnRfLnR5cGUgPT09IEV2ZW50VHlwZS5DT05UUkFDVFVBTF9JTlRFUlZFTlRJT04gfHxcclxuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Xy50eXBlID09PSBFdmVudFR5cGUuTk9OX0NPTlRSQUNUVUFMX0lOVEVSVkVOVElPTixcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgIGZvciAoY29uc3QgZXZlbnQgb2YgaW50ZXJ2ZW50aW9ucykge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQudGltZVNwZW50KSB7XHJcbiAgICAgICAgICAgICAgICBkdXJhdGlvbiArPSBldmVudC50aW1lU3BlbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGR1cmF0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEludGVydmVudGlvbihldmVudHMpOiBFdmVudCB8IG51bGwge1xyXG4gICAgICAgIGNvbnN0IGludGVydmVudGlvbnMgPSBldmVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZXZlbnRfKSA9PlxyXG4gICAgICAgICAgICAgICAgZXZlbnRfLnR5cGUgPT09IEV2ZW50VHlwZS5OT05fQ09OVFJBQ1RVQUxfSU5URVJWRU5USU9OIHx8XHJcbiAgICAgICAgICAgICAgICBldmVudF8udHlwZSA9PT0gRXZlbnRUeXBlLkNPTlRSQUNUVUFMX0lOVEVSVkVOVElPTixcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChpbnRlcnZlbnRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgbGFzdEludGVydmVudGlvbiA9IGludGVydmVudGlvbnNbMF07XHJcbiAgICAgICAgICAgIHJldHVybiBsYXN0SW50ZXJ2ZW50aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBldmVudFRvUmVxdWVzdEludGVydmVudGlvbihldmVudDogRXZlbnQpOiBSZXF1ZXN0SW50ZXJ2ZW50aW9uIHtcclxuICAgICAgICBjb25zdCByZXF1ZXN0ID0ge1xyXG4gICAgICAgICAgICBpZDogZXZlbnQuZ3JvdXAgPT09IFwiZGVmYXVsdFwiID8gZXZlbnQuaWQgOiBldmVudC5ncm91cCxcclxuICAgICAgICAgICAgcmVhbEVuZERhdGU6IGV2ZW50LnJlYWxFbmREYXRlLFxyXG4gICAgICAgICAgICByZWFsU3RhcnREYXRlOiBldmVudC5yZWFsU3RhcnREYXRlLFxyXG4gICAgICAgICAgICBlc3RpbWF0ZVN0YXJ0RGF0ZTogZXZlbnQuZXN0aW1hdGVTdGFydERhdGUsXHJcbiAgICAgICAgICAgIGVzdGltYXRlRW5kRGF0ZTogZXZlbnQuZXN0aW1hdGVFbmREYXRlLFxyXG4gICAgICAgICAgICByZWFsRHVyYXRpb246IGV2ZW50LnRpbWVTcGVudCxcclxuICAgICAgICAgICAgdHlwZTogZXZlbnQudHlwZSxcclxuICAgICAgICAgICAgc3RhdHVzOiBldmVudC5zdGF0dXMsXHJcbiAgICAgICAgICAgIGNyZWF0ZWRBdDogZXZlbnQuY3JlYXRlZEF0LFxyXG4gICAgICAgICAgICB1cGRhdGVkQXQ6IGV2ZW50LnVwZGF0ZWRBdCxcclxuICAgICAgICAgICAgdGlja2V0SUQ6IGV2ZW50LnRpY2tldElELFxyXG4gICAgICAgIH0gYXMgUmVxdWVzdEludGVydmVudGlvbjtcclxuICAgICAgICByZXR1cm4gcmVxdWVzdDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRNb3N0UmVjZW50VGltZVNwZW50KGV2ZW50czogRXZlbnRbXSk6IG51bWJlciB8IG51bGwge1xyXG4gICAgICAgIGxldCB0aW1lU3BlbnQgPSBudWxsO1xyXG4gICAgICAgIGNvbnN0IHNvcnRlZEV2ZW50cyA9IHRoaXMuZ2V0QWxsRXZlbnRzQWZ0ZXJMYXN0Q3JlYXRlZChldmVudHMpO1xyXG4gICAgICAgIGZvciAoY29uc3QgZXZlbnRfIG9mIHNvcnRlZEV2ZW50cykge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnRfLnRpbWVTcGVudCkge1xyXG4gICAgICAgICAgICAgICAgdGltZVNwZW50ID0gZXZlbnRfLnRpbWVTcGVudDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aW1lU3BlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWxsRXZlbnRzQWZ0ZXJMYXN0Q3JlYXRlZChldmVudHM6IEV2ZW50W10pOiBFdmVudFtdIHtcclxuICAgICAgICBjb25zdCBldmVudHNBZnRlcjogRXZlbnRbXSA9IFtdO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbnRlcnZlbnRpb24gPSB0aGlzLmdldEN1cnJlbnRJbnRldmVudGlvbihldmVudHMpO1xyXG4gICAgICAgIGNvbnN0IHNvcnRlZEV2ZW50cyA9IHRoaXMuZXZlbnRTZXJ2aWNlLnNvcnRFdmVudHNCeUNyZWF0ZWRBdERhdGVEZXNjKGV2ZW50cyk7XHJcbiAgICAgICAgaWYgKHNvcnRlZEV2ZW50cy5sZW5ndGggPiAwICYmIGN1cnJlbnRJbnRlcnZlbnRpb24pIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBldmVudF8gb2Ygc29ydGVkRXZlbnRzKSB7XHJcbiAgICAgICAgICAgICAgICBldmVudHNBZnRlci5wdXNoKGV2ZW50Xyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnRfLmlkID09PSBjdXJyZW50SW50ZXJ2ZW50aW9uLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGV2ZW50c0FmdGVyO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEN1cnJlbnRJbnRldmVudGlvbihldmVudHM6IEV2ZW50W10pOiBFdmVudCB7XHJcbiAgICAgICAgY29uc3Qgc29ydGVkRXZlbnRzID0gdGhpcy5ldmVudFNlcnZpY2Uuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZURlc2MoZXZlbnRzKTtcclxuICAgICAgICBsZXQgY3VycmVudEludGVydmVudGlvbjtcclxuICAgICAgICBmb3IgKGNvbnN0IGV2ZW50XyBvZiBzb3J0ZWRFdmVudHMpIHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50Xy5zdGF0dXMgPT09IEV2ZW50U3RhdHVzLkNSRUFURUQpIHtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRJbnRlcnZlbnRpb24gPSBldmVudF87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGV2ZW50Xy5zdGF0dXMgIT09IEV2ZW50U3RhdHVzLkNSRUFURUQgJiYgY3VycmVudEludGVydmVudGlvbikge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRJbnRlcnZlbnRpb247XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TW9zdFJlY2VudEVzdGltYXRlU3RhcnREYXRlKGV2ZW50czogRXZlbnRbXSk6IG51bWJlciB8IG51bGwge1xyXG4gICAgICAgIGxldCBlc3RpbWF0ZVN0YXJ0RGF0ZSA9IG51bGw7XHJcbiAgICAgICAgLy8gY29uc3Qgc29ydGVkRXZlbnRzID0gdGhpcy5nZXRBbGxFdmVudHNBZnRlckxhc3RDcmVhdGVkKGV2ZW50cyk7XHJcbiAgICAgICAgY29uc3Qgc29ydGVkRXZlbnRzID0gdGhpcy5ldmVudFNlcnZpY2Uuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZURlc2MoZXZlbnRzKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGV2ZW50XyBvZiBzb3J0ZWRFdmVudHMpIHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50Xy5lc3RpbWF0ZVN0YXJ0RGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgZXN0aW1hdGVTdGFydERhdGUgPSBldmVudF8uZXN0aW1hdGVTdGFydERhdGU7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZXN0aW1hdGVTdGFydERhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TW9zdFJlY2VudEVzdGltYXRlRW5kRGF0ZShldmVudHM6IEV2ZW50W10pOiBudW1iZXIgfCBudWxsIHtcclxuICAgICAgICBsZXQgZGF0ZSA9IG51bGw7XHJcbiAgICAgICAgY29uc3Qgc29ydGVkRXZlbnRzID0gdGhpcy5ldmVudFNlcnZpY2Uuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZURlc2MoZXZlbnRzKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGV2ZW50XyBvZiBzb3J0ZWRFdmVudHMpIHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50Xy5lc3RpbWF0ZUVuZERhdGUpIHtcclxuICAgICAgICAgICAgICAgIGRhdGUgPSBldmVudF8uZXN0aW1hdGVFbmREYXRlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZ2V0TW9zdFJlY2VudFJlYWxTdGFydERhdGUoZXZlbnRzOiBFdmVudFtdKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICAvLyAgICAgbGV0IGRhdGUgPSBudWxsO1xyXG4gICAgLy8gICAgIC8vIGNvbnN0IHNvcnRlZEV2ZW50cyA9IHRoaXMuc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZURlc2MoZXZlbnRzKTtcclxuICAgIC8vICAgICBjb25zdCBzb3J0ZWRFdmVudHMgPSB0aGlzLmdldEFsbEV2ZW50c0FmdGVyTGFzdENyZWF0ZWQoZXZlbnRzKTtcclxuICAgIC8vICAgICBmb3IgKGNvbnN0IGV2ZW50XyBvZiBzb3J0ZWRFdmVudHMpIHtcclxuICAgIC8vICAgICAgICAgaWYgKGV2ZW50Xy5yZWFsU3RhcnREYXRlKSB7XHJcbiAgICAvLyAgICAgICAgICAgICBkYXRlID0gZXZlbnRfLnJlYWxTdGFydERhdGU7XHJcbiAgICAvLyAgICAgICAgICAgICBicmVhaztcclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICByZXR1cm4gZGF0ZTtcclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyBnZXRNb3N0UmVjZW50UmVhbFN0YXJ0RGF0ZUdsb2JhbChldmVudHM6IEV2ZW50W10pOiBudW1iZXIgfCBudWxsIHtcclxuICAgIC8vICAgICBsZXQgZGF0ZSA9IG51bGw7XHJcbiAgICAvLyAgICAgLy8gY29uc3Qgc29ydGVkRXZlbnRzID0gdGhpcy5zb3J0RXZlbnRzQnlDcmVhdGVkQXREYXRlRGVzYyhldmVudHMpO1xyXG4gICAgLy8gICAgIGNvbnN0IHNvcnRlZEV2ZW50cyA9IHRoaXMuZ2V0QWxsRXZlbnRzQWZ0ZXJMYXN0Q3JlYXRlZChldmVudHMpO1xyXG4gICAgLy8gICAgIGlmIChzb3J0ZWRFdmVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICAgICAgICBmb3IgKGNvbnN0IGV2ZW50XyBvZiBzb3J0ZWRFdmVudHMpIHtcclxuICAgIC8vICAgICAgICAgICAgIGlmIChldmVudF8ucmVhbFN0YXJ0RGF0ZSkge1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIGRhdGUgPSBldmVudF8ucmVhbFN0YXJ0RGF0ZTtcclxuICAgIC8vICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgIC8vICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICByZXR1cm4gZGF0ZTtcclxuICAgIC8vIH1cclxufVxyXG4iXX0=
@@ -34,12 +34,12 @@ export class LocaleService {
34
34
  return lang.slice(1);
35
35
  }
36
36
  }
37
- LocaleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: LocaleService, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
38
- LocaleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: LocaleService, providedIn: "root" });
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: LocaleService, decorators: [{
37
+ LocaleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: LocaleService, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
38
+ LocaleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: LocaleService, providedIn: "root" });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: LocaleService, decorators: [{
40
40
  type: Injectable,
41
41
  args: [{
42
42
  providedIn: "root",
43
43
  }]
44
44
  }], ctorParameters: function () { return [{ type: i1.TranslateService }]; } });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL2xvY2FsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBSy9CLE1BQU0sT0FBTyxhQUFhO0lBUXRCLFlBQW1CLFNBQTJCO1FBQTNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBUDlDLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBRXJCLDRCQUE0QjtRQUNwQixvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFeEMsZUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFQSxDQUFDO0lBRWxELEtBQUs7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxNQUFNLENBQUMsSUFBWTtRQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLCtCQUErQjtJQUNuRSxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVztZQUNuQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXO1lBQzVCLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUNqQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekIsQ0FBQzs7MEdBbENRLGFBQWE7OEdBQWIsYUFBYSxjQUZWLE1BQU07MkZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbGVTZXJ2aWNlIHtcclxuICAgIGN1cnJlbnRMb2NhbGUgPSBcImVuXCI7XHJcblxyXG4gICAgLy8gT2JzZXJ2YWJsZSBzdHJpbmcgc291cmNlc1xyXG4gICAgcHJpdmF0ZSBzaG93TW9kYWxTb3VyY2UgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIHNob3dNb2RhbCQgPSB0aGlzLnNob3dNb2RhbFNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7fVxyXG5cclxuICAgIG1vZGFsKCkge1xyXG4gICAgICAgIHRoaXMuc2hvd01vZGFsU291cmNlLm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWxvYWQgdGhlIGFwcCB0byBhbm90aGVyIGxhbmd1YWdlLlxyXG4gICAgICpcclxuICAgICAqIE5hdmlnYXRpb24gaXMgcmVxdWlyZWQgYmVjYXVzZSBvZiB0aGUgd2F5IGFuZ3VsYXIgbG9jYWxpemVzOiBsb2NhbGVzIGFyZVxyXG4gICAgICogY29tcGxldGVseSBkaWZmZXJlbnQgY29tcGlsYXRpb24gYnVuZGxlcywgaW4gc2VwYXJhdGUgZGlyZWN0b3JpZXMsIGhlbmNlXHJcbiAgICAgKiB5b3UgbmVlZCB0byByZWxvYWQuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGxhbmdcclxuICAgICAqL1xyXG4gICAgY2hhbmdlKGxhbmc6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiU3dpdGNoaW5nIHRvXCIsIGxhbmcpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudExvY2FsZSA9IGxhbmc7XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGUudXNlKGBfJHtsYW5nfWApOyAvLyBiZWNhdXNlIGZpbGVzIGFyZSBcIl9lbi5qc29uXCJcclxuICAgIH1cclxuXHJcbiAgICBnZXRMb2NhbGUoKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBsYW5nID0gdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmdcclxuICAgICAgICAgICAgPyB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZ1xyXG4gICAgICAgICAgICA6IHRoaXMudHJhbnNsYXRlLmRlZmF1bHRMYW5nO1xyXG4gICAgICAgIHJldHVybiBsYW5nLnNsaWNlKDEpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL2xvY2FsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBSy9CLE1BQU0sT0FBTyxhQUFhO0lBUXRCLFlBQW1CLFNBQTJCO1FBQTNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBUDlDLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBRXJCLDRCQUE0QjtRQUNwQixvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFeEMsZUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFQSxDQUFDO0lBRWxELEtBQUs7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxNQUFNLENBQUMsSUFBWTtRQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLCtCQUErQjtJQUNuRSxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVztZQUNuQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXO1lBQzVCLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUNqQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekIsQ0FBQzs7MkdBbENRLGFBQWE7K0dBQWIsYUFBYSxjQUZWLE1BQU07NEZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbGVTZXJ2aWNlIHtcclxuICAgIGN1cnJlbnRMb2NhbGUgPSBcImVuXCI7XHJcblxyXG4gICAgLy8gT2JzZXJ2YWJsZSBzdHJpbmcgc291cmNlc1xyXG4gICAgcHJpdmF0ZSBzaG93TW9kYWxTb3VyY2UgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIHNob3dNb2RhbCQgPSB0aGlzLnNob3dNb2RhbFNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7fVxyXG5cclxuICAgIG1vZGFsKCkge1xyXG4gICAgICAgIHRoaXMuc2hvd01vZGFsU291cmNlLm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWxvYWQgdGhlIGFwcCB0byBhbm90aGVyIGxhbmd1YWdlLlxyXG4gICAgICpcclxuICAgICAqIE5hdmlnYXRpb24gaXMgcmVxdWlyZWQgYmVjYXVzZSBvZiB0aGUgd2F5IGFuZ3VsYXIgbG9jYWxpemVzOiBsb2NhbGVzIGFyZVxyXG4gICAgICogY29tcGxldGVseSBkaWZmZXJlbnQgY29tcGlsYXRpb24gYnVuZGxlcywgaW4gc2VwYXJhdGUgZGlyZWN0b3JpZXMsIGhlbmNlXHJcbiAgICAgKiB5b3UgbmVlZCB0byByZWxvYWQuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGxhbmdcclxuICAgICAqL1xyXG4gICAgY2hhbmdlKGxhbmc6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiU3dpdGNoaW5nIHRvXCIsIGxhbmcpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudExvY2FsZSA9IGxhbmc7XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGUudXNlKGBfJHtsYW5nfWApOyAvLyBiZWNhdXNlIGZpbGVzIGFyZSBcIl9lbi5qc29uXCJcclxuICAgIH1cclxuXHJcbiAgICBnZXRMb2NhbGUoKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBsYW5nID0gdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmdcclxuICAgICAgICAgICAgPyB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZ1xyXG4gICAgICAgICAgICA6IHRoaXMudHJhbnNsYXRlLmRlZmF1bHRMYW5nO1xyXG4gICAgICAgIHJldHVybiBsYW5nLnNsaWNlKDEpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -329,12 +329,12 @@ export class MatterportImportService {
329
329
  return this.layerService.createLayerForOrganisation(name, currentOrgId);
330
330
  }
331
331
  }
332
- MatterportImportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MatterportImportService, deps: [{ token: i1.NavigationService }, { token: i2.ZoneService }, { token: i3.ViewerService }, { token: i4.LayerService }, { token: i5.BaseUserService }, { token: i6.PlanService }], target: i0.ɵɵFactoryTarget.Injectable });
333
- MatterportImportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MatterportImportService, providedIn: 'root' });
334
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MatterportImportService, decorators: [{
332
+ MatterportImportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MatterportImportService, deps: [{ token: i1.NavigationService }, { token: i2.ZoneService }, { token: i3.ViewerService }, { token: i4.LayerService }, { token: i5.BaseUserService }, { token: i6.PlanService }], target: i0.ɵɵFactoryTarget.Injectable });
333
+ MatterportImportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MatterportImportService, providedIn: 'root' });
334
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MatterportImportService, decorators: [{
335
335
  type: Injectable,
336
336
  args: [{
337
337
  providedIn: 'root',
338
338
  }]
339
339
  }], ctorParameters: function () { return [{ type: i1.NavigationService }, { type: i2.ZoneService }, { type: i3.ViewerService }, { type: i4.LayerService }, { type: i5.BaseUserService }, { type: i6.PlanService }]; } });
340
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0dGVycG9ydC1pbXBvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbWF0dGVycG9ydC1pbXBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBYSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFDLHdCQUF3QixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RSxPQUFPLEVBQ0wsV0FBVyxHQU1aLE1BQU0sa0JBQWtCLENBQUM7QUFLMUIsT0FBTyxFQUNMLGNBQWMsRUFDZCxpQkFBaUIsRUFFakIsMEJBQTBCLEVBQzFCLGlCQUFpQixHQUNsQixNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7QUFhdEIsTUFBTSxPQUFPLHVCQUF1QjtJQXdDbEMsWUFDVSxpQkFBb0MsRUFDcEMsV0FBd0IsRUFDeEIsYUFBNEIsRUFDNUIsWUFBMEIsRUFDMUIsV0FBNEIsRUFDNUIsV0FBd0I7UUFMeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFmM0IsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUViLG9CQUFlLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7UUFFM0Qsd0JBQW1CLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7UUFFN0QscUJBQWdCLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7SUFXakUsQ0FBQztJQWpDRCxJ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LE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsNkJBQTZCLENBQ2xFLElBQUksRUFDSixZQUFZLENBQ2IsQ0FBQztRQUNGLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckIsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEI7UUFDRCxjQUFjO1FBQ2QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLDBCQUEwQixDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMxRSxDQUFDOztvSEE1YlUsdUJBQXVCO3dIQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTsyRkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtjYXRjaEVycm9yLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtyZW1vdmVOdWxsS2V5c0Zyb21PYmplY3QsIHdhaXQsIHdhaXRVbnRpbH0gZnJvbSAnLi4vaGVscGVycy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBMZXZlbFN0YXR1cyxcclxuICBMYXllcixcclxuICBOb2RlLFxyXG4gIFpvbmUsXHJcbiAgTmF2aWdhdGlvbixcclxuICBQbGFuLFxyXG59IGZyb20gJy4uL3R5cGVzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0xheWVyU2VydmljZX0gZnJvbSAnLi9tb2RlbHMvbGF5ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7TmF2aWdhdGlvblNlcnZpY2V9IGZyb20gJy4vbW9kZWxzL25hdmlnYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7UGxhblNlcnZpY2V9IGZyb20gJy4vbW9kZWxzL3BsYW4uc2VydmljZSc7XHJcbmltcG9ydCB7Wm9uZVNlcnZpY2V9IGZyb20gJy4vbW9kZWxzL3pvbmUuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgdXBsb2FkSnNvblRvUzMsXHJcbiAgdXBsb2FkQmFzZTY0SW1hZ2UsXHJcbiAgcmVtb3ZlQWxsRmlsZXNGcm9tRm9sZGVyUzMsXHJcbiAgdXBsb2FkQmFzZTY0SW1hZ2VXaXRoUmV0cnksXHJcbiAgbGlzdEZpbGVzSW5Gb2xkZXIsXHJcbn0gZnJvbSAnLi9zMy5zZXJ2aWNlJztcclxuaW1wb3J0IHtCYXNlVXNlclNlcnZpY2V9IGZyb20gJy4vdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtWaWV3ZXJTZXJ2aWNlfSBmcm9tICcuL3ZpZXdlci5zZXJ2aWNlJztcclxuXHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuICBpbnRlcmZhY2UgV2luZG93IHtcclxuICAgIE1QX1NESzogeyBjb25uZWN0OiBGdW5jdGlvbiB9O1xyXG4gIH1cclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlIHtcclxuICBwcml2YXRlIGN1cnJlbnRGcmFtZTtcclxuXHJcbiAgcHVibGljIHNkazogYW55O1xyXG5cclxuICBwcml2YXRlIHN3ZWVwczogT2JqZWN0O1xyXG5cclxuICBwdWJsaWMgZmxvb3JzOiBPYmplY3Q7XHJcblxyXG4gIHByaXZhdGUgY3VycmVudEZsb29yO1xyXG5cclxuICBwcml2YXRlIF9tb2RlbElEOiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgX3NwYWNlSUQ6IHN0cmluZztcclxuXHJcbiAgcHVibGljIGdldCBzcGFjZUlEKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3BhY2VJRDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgc3BhY2VJRCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9zcGFjZUlEID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG1vZGVsSUQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9tb2RlbElEO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBtb2RlbElEKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX21vZGVsSUQgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdG9wID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBpbXBvcnRpbmdJbWFnZXM6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICBwdWJsaWMgc3dlZXBQcm9jZXNzZWRDb3VudDogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xyXG5cclxuICBwdWJsaWMgdG90YWxTd2VlcHNDb3VudDogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgem9uZVNlcnZpY2U6IFpvbmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB2aWV3ZXJTZXJ2aWNlOiBWaWV3ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsYXllclNlcnZpY2U6IExheWVyU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgcGxhblNlcnZpY2U6IFBsYW5TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBhc3luYyBpbml0U2RrRm9yTW9kZWwobW9kZWxJRDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICB0aGlzLnN0b3AgPSBmYWxzZTtcclxuXHJcbiAgICAvLyBMb2FkIFNES1xyXG4gICAgY29uc29sZS5sb2coJ0xvYWRpbmcgTWF0dGVycG9ydCBTREsnKTtcclxuICAgIHRoaXMubW9kZWxJRCA9IG1vZGVsSUQ7XHJcbiAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcclxuICAgIGlmICghaWZyYW1lKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNyZWF0ZSBpZnJhbWUnKTtcclxuICAgIH1cclxuICAgIHRoaXMudmlld2VyU2VydmljZS5zZXRUb3VyVXJsKG1vZGVsSUQpO1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy52aWV3ZXJTZXJ2aWNlLmdldFRvdXJVcmwoKTtcclxuICAgIGlmcmFtZS5zZXRBdHRyaWJ1dGUoJ3NyYycsIHVybCk7XHJcbiAgICBpZnJhbWUuYWxsb3cgPSAneHItc3BhdGlhbC10cmFja2luZyc7XHJcbiAgICBpZnJhbWUuaGVpZ2h0ID0gJzEwMCUnO1xyXG4gICAgaWZyYW1lLndpZHRoID0gJzEwMCUnO1xyXG4gICAgaWZyYW1lLmlkID0gJ3ZpZXdlci1tb2R1bGUnO1xyXG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN2aWV3ZXItZnJhbWUnKTtcclxuICAgIGVsZW1lbnQuYXBwZW5kKGlmcmFtZSk7XHJcbiAgICB0aGlzLmN1cnJlbnRGcmFtZSA9IGlmcmFtZTtcclxuICAgIGNvbnN0IHNob3djYXNlV2luZG93ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7XHJcbiAgICAgIGlmcmFtZS5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICAgICdsb2FkJyxcclxuICAgICAgICBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB0aGlzLnNkayA9IGF3YWl0IHNob3djYXNlV2luZG93Lk1QX1NESy5jb25uZWN0KFxyXG4gICAgICAgICAgICAgIGlmcmFtZSxcclxuICAgICAgICAgICAgICAncW45d3Nhc3V5NWgyZnpyYnJuMW56cjBpZCcsXHJcbiAgICAgICAgICAgICAgJzMuMTEnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIC8vIFN1YnNjcmliZSB0byBGbG9vciBkYXRhXHJcbiAgICAgICAgICAgIHRoaXMuc2RrLkZsb29yLmRhdGEuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICBvbkNvbGxlY3Rpb25VcGRhdGVkOiBmdW5jdGlvbiB1cGQoY29sbGVjdGlvbjogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkZsb29yc1wiLCBjb2xsZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmxvb3JzID0gY29sbGVjdGlvbjtcclxuICAgICAgICAgICAgICB9LmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAvLyBTdWJzY3JpYmUgdG8gY3VycmVudCBGbG9vclxyXG4gICAgICAgICAgICB0aGlzLnNkay5GbG9vci5jdXJyZW50LnN1YnNjcmliZShcclxuICAgICAgICAgICAgICBmdW5jdGlvbiB1cGQoY3VycmVudEZsb29yKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRGbG9vciA9IGN1cnJlbnRGbG9vcjtcclxuICAgICAgICAgICAgICB9LmJpbmQodGhpcylcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIC8vIFN1YnNjcmliZSB0byBTd2VlcCBkYXRhXHJcbiAgICAgICAgICAgIHRoaXMuc2RrLlN3ZWVwLmRhdGEuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICBvbkNvbGxlY3Rpb25VcGRhdGVkOiBmdW5jdGlvbiB1cGQoY29sbGVjdGlvbikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3RoZSBlbnRpcmUgdXAtdG8tZGF0ZSBjb2xsZWN0aW9uJywgY29sbGVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN3ZWVwcyA9IGNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLy8gcmVtb3ZlIGxhYmVsc1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNkay5TZXR0aW5ncy51cGRhdGUoJ2xhYmVscycsIGZhbHNlKTtcclxuICAgICAgICAgICAgbGV0IHRpbWVvdXRFeHBpcmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIHN0YXJ0IHRpbWVvdXRcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiAodGltZW91dEV4cGlyZWQgPSB0cnVlKSwgNzAwMCk7XHJcbiAgICAgICAgICAgIGF3YWl0IHdhaXRVbnRpbChcclxuICAgICAgICAgICAgICAoKSA9PlxyXG4gICAgICAgICAgICAgICAgKHRoaXMuc3dlZXBzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5mbG9vcnMgIT09IHVuZGVmaW5lZCkgfHxcclxuICAgICAgICAgICAgICAgIHRpbWVvdXRFeHBpcmVkID09PSB0cnVlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmICh0aW1lb3V0RXhwaXJlZCkge1xyXG4gICAgICAgICAgICAgIC8vIHdlIGFyZSBsaWtlbHkgaW4gbWF0dGVycG9ydCBlcnJvciBjYXNlICh0aGF0IHdlIGNhbm5vdCBjYXRjaCEpXHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3RpbWVvdXQgaW50aXRpYWxpc2luZyBNYXR0ZXJwb3J0Jyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlaihuZXcgRXJyb3IoJ2Vycm9yIGluaXQgTWF0dGVycG9ydCcpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnaW5pdCBkb25lJyk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXModHJ1ZSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgICAgICAgIHJlaihuZXcgRXJyb3IoJ2Vycm9yIGluaXQgTWF0dGVycG9ydCcpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgaW1wb3J0RGF0YShcclxuICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgIHN1cmZhY2U6IG51bWJlcixcclxuICAgIHJlbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgbm9kZTogTm9kZSA9IG51bGwsXHJcbiAgICBvdmVycmlkZUV4aXN0aW5nID0gdHJ1ZVxyXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgaWYgKCF0aGlzLnN3ZWVwcykge1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdubyBzd2VlcHMgaW5pdGlhbGl6ZWQnKSk7XHJcbiAgICB9XHJcbiAgICBsZXQgYXBwSXNMb2FkZWQgPSBmYWxzZTtcclxuICAgIFxyXG5cclxuICAgIHRoaXMuc2RrLkFwcC5zdGF0ZS5zdWJzY3JpYmUoZnVuY3Rpb24gKGFwcFN0YXRlKSB7XHJcbiAgICAgIC8vIGFwcCBzdGF0ZSBoYXMgY2hhbmdlZFxyXG4gICAgICBjb25zb2xlLmxvZygnVGhlIGN1cnJlbnQgcGhhc2U6ICcsIGFwcFN0YXRlLnBoYXNlKTtcclxuICAgICAgaWYgKGFwcFN0YXRlLnBoYXNlID09PSAnYXBwcGhhc2UucGxheWluZycpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnVGhlIGFwcCBpcyBwbGF5aW5nJyk7XHJcbiAgICAgICAgYXBwSXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBhd2FpdCB3YWl0VW50aWwoKCkgPT4gYXBwSXNMb2FkZWQgPT09IHRydWUpO1xyXG5cclxuICAgIGlmIChyZWxvYWRpbmcpIHtcclxuICAgICAgLy8gcGVyZm9ybSBvbmx5IDM2MCBpbXBvcnQgc2luY2Ugd2UgYXJlIHJlbG9hZGluZ1xyXG4gICAgICBhd2FpdCB0aGlzLmltcG9ydDM2MGltYWdlcyhvdmVycmlkZUV4aXN0aW5nKTtcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNwYWNlSUQgPSBzcGFjZUlEO1xyXG4gICAgbGV0IGZsb29yWm9uZXM6IFpvbmVbXSA9IFtdO1xyXG4gICAgY29uc3Qgem9uZXMgPSBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmdldFpvbmVzQnlTcGFjZShzcGFjZUlEKTtcclxuICAgIGNvbnN0IG1haW5ab25lID0gem9uZXMuZmluZCgoeikgPT4gIXoucGFyZW50SUQpO1xyXG4gICAgaWYgKCFtYWluWm9uZSkge1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdtaXNzaW5nIGRhdGEgKG5vIG1haW4gQnVpbGRpbmcgWm9uZSknKSk7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZygnaW1wb3J0aW5nIGRhdGEgZnJvbSBtYXR0ZXJwb3J0Jyk7XHJcbiAgICAvLyBzYXZlIHN3ZWVwcyBkYXRhIGFzIGpzb25cclxuICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShPYmplY3QudmFsdWVzKHRoaXMuc3dlZXBzKSk7XHJcbiAgICBhd2FpdCB1cGxvYWRKc29uVG9TMyhcclxuICAgICAgYHZpc2l0cy8ke3RoaXMubW9kZWxJRH0vaW52ZW50b3J5L2AsXHJcbiAgICAgIGpzb24sXHJcbiAgICAgICdkYXRhLmpzb24nXHJcbiAgICApO1xyXG4gICAgLy8gY2hlY2sgbGF5ZXIgb2YgYnVpbGRpbmcgdHlwZVxyXG4gICAgY29uc3QgbGF5ZXJCdWlsZGluZyA9IGF3YWl0IHRoaXMuZ2V0TGF5ZXJCeU5hbWUoJ0JVSUxESU5HJyk7XHJcbiAgICBjb25zdCBjcmVhdGVkRGVmYXVsdFpvbmUgPSBhd2FpdCB0aGlzLmNyZWF0ZVpvbmUoXHJcbiAgICAgIG5vZGUubWV0YWRhdGEsXHJcbiAgICAgIGxheWVyQnVpbGRpbmcuaWQsXHJcbiAgICAgIHN1cmZhY2UsXHJcbiAgICAgIG1haW5ab25lLmlkLFxyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLnN3ZWVwcyksXHJcbiAgICAgIG5vZGVcclxuICAgICk7XHJcbiAgICBpZiAoIWNyZWF0ZWREZWZhdWx0Wm9uZSkge1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZsb29ycykge1xyXG4gICAgICBmbG9vclpvbmVzID0gYXdhaXQgdGhpcy5pbXBvcnRGbG9vckRhdGEoY3JlYXRlZERlZmF1bHRab25lLmlkLCBub2RlKTtcclxuICAgIH1cclxuICAgIC8vIGNvbnNvbGUubG9nKGZsb29yWm9uZXMpO1xyXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuc3dlZXBzKS5tYXAoYXN5bmMgKGtleSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHN3ZWVwSW5mbyA9IHRoaXMuc3dlZXBzW2tleV07XHJcbiAgICAgICAgY29uc3QgbmF2aWdhdGlvbklucHV0ID0ge1xyXG4gICAgICAgICAgbWF0dGVycG9ydFN3ZWVwSUQ6IHN3ZWVwSW5mby51dWlkLFxyXG4gICAgICAgICAgcG9zaXRpb246IEpTT04uc3RyaW5naWZ5KHN3ZWVwSW5mby5wb3NpdGlvbiksXHJcbiAgICAgICAgICByb3RhdGlvbjogSlNPTi5zdHJpbmdpZnkoc3dlZXBJbmZvLnJvdGF0aW9uKSxcclxuICAgICAgICAgIGxldmVsOiBMZXZlbFN0YXR1cy5MT1csXHJcbiAgICAgICAgICBub2RlSUQ6IG5vZGUuaWQsXHJcbiAgICAgICAgICBzcGFjZUlELFxyXG4gICAgICAgIH0gYXMgTmF2aWdhdGlvbjtcclxuICAgICAgICBjb25zdCBuYXYgPSBhd2FpdCB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmNyZWF0ZU5hdmlnYXRpb24oXHJcbiAgICAgICAgICBuYXZpZ2F0aW9uSW5wdXRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICghbmF2KSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnY291bGQgY3JlYXRlIG5hdmlnYXRpb24nLCBuYXZpZ2F0aW9uSW5wdXQuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBhd2FpdCB0aGlzLmltcG9ydDM2MGltYWdlcyhvdmVycmlkZUV4aXN0aW5nKTtcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBjcmVhdGVab25lKFxyXG4gICAgbmFtZTogc3RyaW5nLFxyXG4gICAgbGF5ZXJJRDogc3RyaW5nLFxyXG4gICAgc3VyZmFjZTogbnVtYmVyID0gbnVsbCxcclxuICAgIHBhcmVudElEOiBzdHJpbmcgPSBudWxsLFxyXG4gICAgc3dlZXBzOiBzdHJpbmdbXSA9IFtdLFxyXG4gICAgbm9kZTogTm9kZSA9IG51bGwsXHJcbiAgICBtZXRhZGF0YTogc3RyaW5nID0gbnVsbFxyXG4gICk6IFByb21pc2U8Wm9uZT4ge1xyXG4gICAgY29uc3Qgem9uZUlucHV0ID0ge1xyXG4gICAgICBuYW1lLFxyXG4gICAgICBzcGFjZUlEOiB0aGlzLnNwYWNlSUQsXHJcbiAgICAgIGxheWVySUQsXHJcbiAgICAgIHN3ZWVwSURzOiBzd2VlcHMsXHJcbiAgICAgIG5vZGVJRHM6IG5vZGUgPyBbbm9kZS5pZF0gOiBudWxsLFxyXG4gICAgfSBhcyBab25lO1xyXG4gICAgcmVtb3ZlTnVsbEtleXNGcm9tT2JqZWN0KHpvbmVJbnB1dCk7XHJcbiAgICBpZiAoc3VyZmFjZSkge1xyXG4gICAgICB6b25lSW5wdXQuc3VyZmFjZSA9IHN1cmZhY2U7XHJcbiAgICB9XHJcbiAgICBpZiAocGFyZW50SUQpIHtcclxuICAgICAgem9uZUlucHV0LnBhcmVudElEID0gcGFyZW50SUQ7XHJcbiAgICB9XHJcbiAgICBpZiAobWV0YWRhdGEpIHtcclxuICAgICAgem9uZUlucHV0Lm1ldGFkYXRhID0gbWV0YWRhdGE7XHJcbiAgICB9XHJcbiAgICBjb25zdCBuZXdMb2NhbCA9IGF3YWl0IHRoaXMuem9uZVNlcnZpY2UuY3JlYXRlKHpvbmVJbnB1dCk7XHJcbiAgICByZXR1cm4gbmV3TG9jYWw7XHJcbiAgfVxyXG5cclxuICBhc3luYyBpbXBvcnQzNjBpbWFnZXMob3ZlcnJpZGVFeGlzdGluZyA9IHRydWUpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGNvbnNvbGUubG9nKCdJbXBvcnRpbmcgMzYwIGltYWdlcycpO1xyXG4gICAgdGhpcy5pbXBvcnRpbmdJbWFnZXMubmV4dCh0cnVlKTtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBjb25zdCBzY2FucyA9IE9iamVjdC52YWx1ZXModGhpcy5zd2VlcHMpO1xyXG4gICAgICBjb25zdCBubWJTY2FucyA9IE9iamVjdC5rZXlzKHNjYW5zKS5sZW5ndGg7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLnRvdGFsU3dlZXBzQ291bnQubmV4dChubWJTY2Fucyk7XHJcblxyXG4gICAgICBjb25zdCBzdGFydCA9IG92ZXJyaWRlRXhpc3RpbmcgPyAwIDogYXdhaXQgdGhpcy5nZXRVcGxvYWRlZEltYWdlQ291bnQodGhpcy5tb2RlbElEKTtcclxuICAgIFxyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IHN0YXJ0OyBpbmRleCA8IG5tYlNjYW5zOyBpbmRleCArPSAxKSB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5zdG9wKSB7XHJcblxyXG4gICAgICAgICAgYXdhaXQgdGhpcy5zZGsuU3dlZXAubW92ZVRvKHNjYW5zW2luZGV4XS51dWlkLCB7cm90YXRpb24gOiB7eDogMCwgeTogMH0sIHRyYW5zaXRpb24gOiB0aGlzLnNkay5Td2VlcC5UcmFuc2l0aW9uLklOU1RBTlQsIHRyYW5zaXRpb25UaW1lOiAwfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGNvbnN0IGltZyA9IGF3YWl0IHRoaXMuc2RrLlJlbmRlcmVyLnRha2VFcXVpcmVjdGFuZ3VsYXIoXHJcbiAgICAgICAgICAgIHt3aWR0aDogMjA0OCwgaGVpZ2h0OiAxMDI0fSxcclxuICAgICAgICAgICAge21hdHRlcnRhZ3M6IGZhbHNlLCBzd2VlcHM6IHRydWV9XHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIC8qKlVwbG9hZCBvbiBTMyBhcmUgYXN5bmNocm9ub3VzLCBpbiBvcmRlciB0byBubyBzbG93IGRvd24gdGhlIHByb2Nlc3MqL1xyXG4gICAgICAgICAgdXBsb2FkQmFzZTY0SW1hZ2VXaXRoUmV0cnkoXHJcbiAgICAgICAgICAgIGltZyxcclxuICAgICAgICAgICAgc2NhbnNbaW5kZXhdLnV1aWQsXHJcbiAgICAgICAgICAgIGB2aXNpdHMvJHt0aGlzLm1vZGVsSUR9L3N3ZWVwcy9gLFxyXG4gICAgICAgICAgICAnc3dlZXAnLFxyXG4gICAgICAgICAgICA1XHJcbiAgICAgICAgICApLnRoZW4oKHIpID0+e1xyXG4gICAgICAgICAgICB0aGlzLnN3ZWVwUHJvY2Vzc2VkQ291bnQubmV4dChpbmRleCk7XHJcbiAgICAgICAgICAgIGlmKGluZGV4ID09PSBubWJTY2FucyAtIDEpe1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdJbXBvcnQgMzYwIGRvbmUnKTtcclxuICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVtb3ZlRnJhbWUoKTtcclxuICAgICAgICAgICAgICB0aGlzLnN0b3AgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KS5jYXRjaCgoZSk9PntcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJFcnJvciB1cGxvYWRpbmcgc2NhbiA6IFwiLCBlKTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdBYmFuZG9uaW5nIGltcG9ydCBiZWNhdXNlIGl0IHdhcyBjYW5jZWxsZWQnKTtcclxuICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVGcmFtZSgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICB0aGlzLnJlbW92ZUZyYW1lKCk7XHJcbiAgICAgIFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRVcGxvYWRlZEltYWdlQ291bnQobW9kZWxJRCl7XHJcbiAgICB0cnl7XHJcbiAgICAgIGNvbnN0IGltYWdlcyA9IGF3YWl0IGxpc3RGaWxlc0luRm9sZGVyKGB2aXNpdHMvJHttb2RlbElEfS9zd2VlcHMvYCk7XHJcbiAgICAgIHJldHVybiBpbWFnZXMubGVuZ3RoO1xyXG4gICAgfWNhdGNoKGUpe1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG1vdmVUb0Zsb29yKGZsb29yTmFtZTogc3RyaW5nLCBtYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZTogbnVtYmVyID0gbnVsbCkge1xyXG4gICAgaWYgKCF0aGlzLmZsb29ycykge1xyXG4gICAgICBjb25zb2xlLmxvZygnRmxvb3IgYXJlIG5vdCBsb2FkZWQgeWV0Jyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIGxvb2sgdXAgZm9yIHNlcXVlbmNlIG51bWJlciAodGhlIHNhZmVzdCBtZXRob2QpXHJcbiAgICBsZXQgZmxvb3JNYXR0ZXJwb3J0ID0gT2JqZWN0LnZhbHVlcyh0aGlzLmZsb29ycykuZmluZChcclxuICAgICAgKGZsb29yKSA9PiBmbG9vci5zZXF1ZW5jZSA9PT0gbWF0dGVycG9ydEZsb29yU2VxdWVuY2VcclxuICAgICk7XHJcbiAgICBpZiAoIWZsb29yTWF0dGVycG9ydCkge1xyXG4gICAgICBmbG9vck1hdHRlcnBvcnQgPSBPYmplY3QudmFsdWVzKHRoaXMuZmxvb3JzKS5maW5kKFxyXG4gICAgICAgIChmbG9vcikgPT4gZmxvb3JOYW1lLmluY2x1ZGVzKGZsb29yLm5hbWUpICYmIGZsb29yLm5hbWUgIT0gJydcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICghZmxvb3JNYXR0ZXJwb3J0KSB7XHJcbiAgICAgIGZsb29yTWF0dGVycG9ydCA9IE9iamVjdC52YWx1ZXModGhpcy5mbG9vcnMpLmZpbmQoKGZsb29yKSA9PlxyXG4gICAgICAgIGZsb29yTmFtZS5pbmNsdWRlcyhmbG9vci5pZClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIC8vIGNvbnNvbGUubG9nKGZsb29yTWF0dGVycG9ydClcclxuICAgIGlmIChmbG9vck1hdHRlcnBvcnQpIHtcclxuICAgICAgbGV0IHJldHJ5ID0gdHJ1ZTtcclxuICAgICAgd2hpbGUgKHJldHJ5KSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGNvbnN0IGZsb29ySW5kZXggPSBhd2FpdCB0aGlzLnNkay5GbG9vci5tb3ZlVG8oXHJcbiAgICAgICAgICAgIGZsb29yTWF0dGVycG9ydC5zZXF1ZW5jZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwibW92ZWQgdG8gZmxvb3JJbmRleFwiLCBmbG9vckluZGV4KTtcclxuICAgICAgICAgIHJldHJ5ID0gZmFsc2U7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdDYW5ub3QgbW92ZSB0byBGbG9vcicsIGVycm9yKTtcclxuICAgICAgICAgIGF3YWl0IHdhaXQoMTAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUud2FybignTm8gbWF0dGVycG9ydCBmbG9vciBmb3VuZCB0byBtb3ZlIHRvJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaW1wb3J0Rmxvb3JEYXRhKFxyXG4gICAgZGVmYXV0Wm9uZUlEOiBzdHJpbmcsXHJcbiAgICBub2RlOiBOb2RlXHJcbiAgKTogUHJvbWlzZTxab25lW10+IHtcclxuICAgIGNvbnN0IHpvbmVzID0gW107XHJcbiAgICBhd2FpdCB0aGlzLnNkay5Nb2RlLm1vdmVUbyh0aGlzLnNkay5Nb2RlLk1vZGUuRkxPT1JQTEFOKTtcclxuICAgIGNvbnN0IG5tYkZsb29ycyA9IE9iamVjdC5rZXlzKHRoaXMuZmxvb3JzKS5sZW5ndGg7XHJcbiAgICBjb25zb2xlLmxvZygnVG90YWwgbnVtYmVyIG9mIGZsb29ycycsIG5tYkZsb29ycyk7XHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbm1iRmxvb3JzOyBpbmRleCArPSAxKSB7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXHJcbiAgICAgIGNvbnNvbGUubG9nKCdJbXBvcnRpbmcgZmxvb3InLCBpbmRleCk7XHJcbiAgICAgIGF3YWl0IHRoaXMuc2RrLkZsb29yLm1vdmVUbyhpbmRleCkudGhlbihhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgYXdhaXQgd2FpdCg3MDApO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiYWJvdXQgdG8gc2F2ZSB0aGUgZmxvb3JcIiwgaW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IHpvbmUgPSBhd2FpdCB0aGlzLnNhdmVGbG9vcihkZWZhdXRab25lSUQsIG5vZGUpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwicmVjZWl2ZWQgZmxvb3Igem9uZVwiLCB6b25lKTtcclxuICAgICAgICB6b25lcy5wdXNoKHpvbmUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoem9uZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBzYXZlRmxvb3IoZGVmYXV0Wm9uZUlEOiBzdHJpbmcsIG5vZGU6IE5vZGUpOiBQcm9taXNlPFpvbmU+IHtcclxuICAgIGxldCBuYW1lID0gdGhpcy5jdXJyZW50Rmxvb3IuaWQ7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50Rmxvb3IubmFtZSAhPT0gJycpIHtcclxuICAgICAgbmFtZSA9IHRoaXMuY3VycmVudEZsb29yLm5hbWU7XHJcbiAgICB9XHJcbiAgICBjb25zdCBsYXllckZsb29yID0gYXdhaXQgdGhpcy5nZXRMYXllckJ5TmFtZSgnRkxPT1InKTtcclxuICAgIGNvbnN0IHN3ZWVwc0luZm8gPSBPYmplY3QudmFsdWVzKHRoaXMuc3dlZXBzKTtcclxuICAgIGNvbnN0IHN3ZWVwc0ZvckZsb29yID0gc3dlZXBzSW5mby5maWx0ZXIoXHJcbiAgICAgIChzd2VlcEluZm8pID0+IHN3ZWVwSW5mby5mbG9vckluZm8uaWQgPT09IHRoaXMuY3VycmVudEZsb29yLmlkXHJcbiAgICApO1xyXG4gICAgY29uc29sZS5sb2coJ2N1cnJlbnQgZmxvb3InLCB0aGlzLmN1cnJlbnRGbG9vcik7XHJcbiAgICBjb25zb2xlLmxvZygnc3dlZXBzIGZvciBmbG9vcicsIHN3ZWVwc0ZvckZsb29yLmxlbmd0aCk7XHJcbiAgICBjb25zdCBzd2VlcElEczogc3RyaW5nW10gPSBzd2VlcHNGb3JGbG9vci5tYXAoKHN3ZWVwKSA9PiBzd2VlcC51dWlkKTtcclxuICAgIGNvbnN0IHpvbmUgPSBhd2FpdCB0aGlzLmNyZWF0ZVpvbmUoXHJcbiAgICAgIGDDiXRhZ2UgJHtuYW1lfSAtICR7bm9kZS5tZXRhZGF0YX1gLFxyXG4gICAgICBsYXllckZsb29yLmlkLFxyXG4gICAgICBudWxsLFxyXG4gICAgICBkZWZhdXRab25lSUQsXHJcbiAgICAgIHN3ZWVwSURzLFxyXG4gICAgICBub2RlLFxyXG4gICAgICBKU09OLnN0cmluZ2lmeSh7bWF0dGVycG9ydEZsb29yU2VxdWVuY2U6IHRoaXMuY3VycmVudEZsb29yLnNlcXVlbmNlfSlcclxuICAgICk7XHJcbiAgICAvLyBUT0RPIGxpbmsgdG8gc2NhbnNcclxuICAgIGNvbnN0IGJhc2U2NCA9IGF3YWl0IHRoaXMuc2RrLlJlbmRlcmVyLnRha2VTY3JlZW5TaG90KHtcclxuICAgICAgd2lkdGg6IDQwOTYsXHJcbiAgICAgIGhlaWdodDogMjA0OCxcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgc3BhY2VJRHNob3J0ID0gdGhpcy5zcGFjZUlELnNsaWNlKDAsIDgpO1xyXG4gICAgYXdhaXQgdXBsb2FkQmFzZTY0SW1hZ2UoXHJcbiAgICAgIGJhc2U2NCxcclxuICAgICAgbnVsbCxcclxuICAgICAgYHZpc2l0cy8ke3RoaXMubW9kZWxJRH0vcGxhbnMvYCxcclxuICAgICAgYHBsYW5fZmxvb3JfJHt0aGlzLmN1cnJlbnRGbG9vci5pZH1fJHtzcGFjZUlEc2hvcnR9YFxyXG4gICAgKTtcclxuICAgIC8vIGNyZWF0ZSBQbGFuIG9iamVjdFxyXG4gICAgY29uc3QgcGxhbiA9IHtcclxuICAgICAgbmFtZTogYHBsYW5fZmxvb3JfJHt0aGlzLmN1cnJlbnRGbG9vci5pZH1gLFxyXG4gICAgICBhbm5leGU6IGB2aXNpdHMvJHt0aGlzLm1vZGVsSUR9L3BsYW5zL3BsYW5fZmxvb3JfJHt0aGlzLmN1cnJlbnRGbG9vci5pZH1fJHtzcGFjZUlEc2hvcnR9LmpwZWdgLFxyXG4gICAgICB6b25lSUQ6IHpvbmUuaWQsXHJcbiAgICAgIHNwYWNlSUQ6IHRoaXMuc3BhY2VJRCxcclxuICAgICAgaXNDdXJyZW50Rm9yWm9uZTogdHJ1ZSxcclxuICAgICAgaXNNb2RpZmllZDogZmFsc2UsXHJcbiAgICAgIGlzSW1wb3J0ZWRNYXR0ZXJwb3J0OiB0cnVlLFxyXG4gICAgfSBhcyBQbGFuO1xyXG4gICAgYXdhaXQgdGhpcy5wbGFuU2VydmljZS5jcmVhdGVQbGFuKHBsYW4pO1xyXG4gICAgLy8gY29uc29sZS5sb2coXCJmbG9vciBzYXZlZFwiKTtcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoem9uZSk7XHJcbiAgfVxyXG5cclxuICBhYmFuZG9uKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdhYmFuZG9ubmluZyBpbXBvcnQnKTtcclxuICAgICAgdGhpcy5zdG9wID0gdHJ1ZTtcclxuICAgICAgdGhpcy5yZW1vdmVGcmFtZSgpO1xyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUZyYW1lKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudEZyYW1lKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEZyYW1lLnJlbW92ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIGdldExheWVyQnlOYW1lKG5hbWU6IHN0cmluZyk6IFByb21pc2U8TGF5ZXI+IHtcclxuICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKHRoaXMuc3BhY2VJRCk7XHJcbiAgICBjb25zdCBjdXJyZW50T3JnSWQgPSBtaXNzaW9uLm9yZ2FuaXNhdGlvbklEO1xyXG4gICAgY29uc3QgbGF5ZXJzID0gYXdhaXQgdGhpcy5sYXllclNlcnZpY2UuZ2V0TGF5ZXJCeU5hbWVGb3JPcmdhbmlzYXRpb24oXHJcbiAgICAgIG5hbWUsXHJcbiAgICAgIGN1cnJlbnRPcmdJZFxyXG4gICAgKTtcclxuICAgIGlmIChsYXllcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICByZXR1cm4gbGF5ZXJzWzBdO1xyXG4gICAgfVxyXG4gICAgLy8gY3JlYXRlIHRoZW5cclxuICAgIHJldHVybiB0aGlzLmxheWVyU2VydmljZS5jcmVhdGVMYXllckZvck9yZ2FuaXNhdGlvbihuYW1lLCBjdXJyZW50T3JnSWQpO1xyXG4gIH1cclxufVxyXG4iXX0=
340
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0dGVycG9ydC1pbXBvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbWF0dGVycG9ydC1pbXBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBYSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFDLHdCQUF3QixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RSxPQUFPLEVBQ0wsV0FBVyxHQU1aLE1BQU0sa0JBQWtCLENBQUM7QUFLMUIsT0FBTyxFQUNMLGNBQWMsRUFDZCxpQkFBaUIsRUFFakIsMEJBQTBCLEVBQzFCLGlCQUFpQixHQUNsQixNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7QUFhdEIsTUFBTSxPQUFPLHVCQUF1QjtJQXdDbEMsWUFDVSxpQkFBb0MsRUFDcEMsV0FBd0IsRUFDeEIsYUFBNEIsRUFDNUIsWUFBMEIsRUFDMUIsV0FBNEIsRUFDNUIsV0FBd0I7UUFMeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFmM0IsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUViLG9CQUFlLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7UUFFM0Qsd0JBQW1CLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7UUFFN0QscUJBQWdCLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7SUFXakUsQ0FBQztJQWpDRCxJ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LE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsNkJBQTZCLENBQ2xFLElBQUksRUFDSixZQUFZLENBQ2IsQ0FBQztRQUNGLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckIsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEI7UUFDRCxjQUFjO1FBQ2QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLDBCQUEwQixDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMxRSxDQUFDOztxSEE1YlUsdUJBQXVCO3lIQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs0RkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtjYXRjaEVycm9yLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtyZW1vdmVOdWxsS2V5c0Zyb21PYmplY3QsIHdhaXQsIHdhaXRVbnRpbH0gZnJvbSAnLi4vaGVscGVycy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBMZXZlbFN0YXR1cyxcclxuICBMYXllcixcclxuICBOb2RlLFxyXG4gIFpvbmUsXHJcbiAgTmF2aWdhdGlvbixcclxuICBQbGFuLFxyXG59IGZyb20gJy4uL3R5cGVzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0xheWVyU2VydmljZX0gZnJvbSAnLi9tb2RlbHMvbGF5ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7TmF2aWdhdGlvblNlcnZpY2V9IGZyb20gJy4vbW9kZWxzL25hdmlnYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7UGxhblNlcnZpY2V9IGZyb20gJy4vbW9kZWxzL3BsYW4uc2VydmljZSc7XHJcbmltcG9ydCB7Wm9uZVNlcnZpY2V9IGZyb20gJy4vbW9kZWxzL3pvbmUuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgdXBsb2FkSnNvblRvUzMsXHJcbiAgdXBsb2FkQmFzZTY0SW1hZ2UsXHJcbiAgcmVtb3ZlQWxsRmlsZXNGcm9tRm9sZGVyUzMsXHJcbiAgdXBsb2FkQmFzZTY0SW1hZ2VXaXRoUmV0cnksXHJcbiAgbGlzdEZpbGVzSW5Gb2xkZXIsXHJcbn0gZnJvbSAnLi9zMy5zZXJ2aWNlJztcclxuaW1wb3J0IHtCYXNlVXNlclNlcnZpY2V9IGZyb20gJy4vdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtWaWV3ZXJTZXJ2aWNlfSBmcm9tICcuL3ZpZXdlci5zZXJ2aWNlJztcclxuXHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuICBpbnRlcmZhY2UgV2luZG93IHtcclxuICAgIE1QX1NESzogeyBjb25uZWN0OiBGdW5jdGlvbiB9O1xyXG4gIH1cclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hdHRlcnBvcnRJbXBvcnRTZXJ2aWNlIHtcclxuICBwcml2YXRlIGN1cnJlbnRGcmFtZTtcclxuXHJcbiAgcHVibGljIHNkazogYW55O1xyXG5cclxuICBwcml2YXRlIHN3ZWVwczogT2JqZWN0O1xyXG5cclxuICBwdWJsaWMgZmxvb3JzOiBPYmplY3Q7XHJcblxyXG4gIHByaXZhdGUgY3VycmVudEZsb29yO1xyXG5cclxuICBwcml2YXRlIF9tb2RlbElEOiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgX3NwYWNlSUQ6IHN0cmluZztcclxuXHJcbiAgcHVibGljIGdldCBzcGFjZUlEKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3BhY2VJRDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgc3BhY2VJRCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9zcGFjZUlEID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG1vZGVsSUQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9tb2RlbElEO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBtb2RlbElEKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX21vZGVsSUQgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdG9wID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBpbXBvcnRpbmdJbWFnZXM6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICBwdWJsaWMgc3dlZXBQcm9jZXNzZWRDb3VudDogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xyXG5cclxuICBwdWJsaWMgdG90YWxTd2VlcHNDb3VudDogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgem9uZVNlcnZpY2U6IFpvbmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB2aWV3ZXJTZXJ2aWNlOiBWaWV3ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsYXllclNlcnZpY2U6IExheWVyU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgcGxhblNlcnZpY2U6IFBsYW5TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBhc3luYyBpbml0U2RrRm9yTW9kZWwobW9kZWxJRDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICB0aGlzLnN0b3AgPSBmYWxzZTtcclxuXHJcbiAgICAvLyBMb2FkIFNES1xyXG4gICAgY29uc29sZS5sb2coJ0xvYWRpbmcgTWF0dGVycG9ydCBTREsnKTtcclxuICAgIHRoaXMubW9kZWxJRCA9IG1vZGVsSUQ7XHJcbiAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcclxuICAgIGlmICghaWZyYW1lKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNyZWF0ZSBpZnJhbWUnKTtcclxuICAgIH1cclxuICAgIHRoaXMudmlld2VyU2VydmljZS5zZXRUb3VyVXJsKG1vZGVsSUQpO1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy52aWV3ZXJTZXJ2aWNlLmdldFRvdXJVcmwoKTtcclxuICAgIGlmcmFtZS5zZXRBdHRyaWJ1dGUoJ3NyYycsIHVybCk7XHJcbiAgICBpZnJhbWUuYWxsb3cgPSAneHItc3BhdGlhbC10cmFja2luZyc7XHJcbiAgICBpZnJhbWUuaGVpZ2h0ID0gJzEwMCUnO1xyXG4gICAgaWZyYW1lLndpZHRoID0gJzEwMCUnO1xyXG4gICAgaWZyYW1lLmlkID0gJ3ZpZXdlci1tb2R1bGUnO1xyXG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN2aWV3ZXItZnJhbWUnKTtcclxuICAgIGVsZW1lbnQuYXBwZW5kKGlmcmFtZSk7XHJcbiAgICB0aGlzLmN1cnJlbnRGcmFtZSA9IGlmcmFtZTtcclxuICAgIGNvbnN0IHNob3djYXNlV2luZG93ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7XHJcbiAgICAgIGlmcmFtZS5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICAgICdsb2FkJyxcclxuICAgICAgICBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB0aGlzLnNkayA9IGF3YWl0IHNob3djYXNlV2luZG93Lk1QX1NESy5jb25uZWN0KFxyXG4gICAgICAgICAgICAgIGlmcmFtZSxcclxuICAgICAgICAgICAgICAncW45d3Nhc3V5NWgyZnpyYnJuMW56cjBpZCcsXHJcbiAgICAgICAgICAgICAgJzMuMTEnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIC8vIFN1YnNjcmliZSB0byBGbG9vciBkYXRhXHJcbiAgICAgICAgICAgIHRoaXMuc2RrLkZsb29yLmRhdGEuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICBvbkNvbGxlY3Rpb25VcGRhdGVkOiBmdW5jdGlvbiB1cGQoY29sbGVjdGlvbjogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkZsb29yc1wiLCBjb2xsZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmxvb3JzID0gY29sbGVjdGlvbjtcclxuICAgICAgICAgICAgICB9LmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAvLyBTdWJzY3JpYmUgdG8gY3VycmVudCBGbG9vclxyXG4gICAgICAgICAgICB0aGlzLnNkay5GbG9vci5jdXJyZW50LnN1YnNjcmliZShcclxuICAgICAgICAgICAgICBmdW5jdGlvbiB1cGQoY3VycmVudEZsb29yKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRGbG9vciA9IGN1cnJlbnRGbG9vcjtcclxuICAgICAgICAgICAgICB9LmJpbmQodGhpcylcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIC8vIFN1YnNjcmliZSB0byBTd2VlcCBkYXRhXHJcbiAgICAgICAgICAgIHRoaXMuc2RrLlN3ZWVwLmRhdGEuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICBvbkNvbGxlY3Rpb25VcGRhdGVkOiBmdW5jdGlvbiB1cGQoY29sbGVjdGlvbikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3RoZSBlbnRpcmUgdXAtdG8tZGF0ZSBjb2xsZWN0aW9uJywgY29sbGVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN3ZWVwcyA9IGNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLy8gcmVtb3ZlIGxhYmVsc1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNkay5TZXR0aW5ncy51cGRhdGUoJ2xhYmVscycsIGZhbHNlKTtcclxuICAgICAgICAgICAgbGV0IHRpbWVvdXRFeHBpcmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIHN0YXJ0IHRpbWVvdXRcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiAodGltZW91dEV4cGlyZWQgPSB0cnVlKSwgNzAwMCk7XHJcbiAgICAgICAgICAgIGF3YWl0IHdhaXRVbnRpbChcclxuICAgICAgICAgICAgICAoKSA9PlxyXG4gICAgICAgICAgICAgICAgKHRoaXMuc3dlZXBzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5mbG9vcnMgIT09IHVuZGVmaW5lZCkgfHxcclxuICAgICAgICAgICAgICAgIHRpbWVvdXRFeHBpcmVkID09PSB0cnVlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmICh0aW1lb3V0RXhwaXJlZCkge1xyXG4gICAgICAgICAgICAgIC8vIHdlIGFyZSBsaWtlbHkgaW4gbWF0dGVycG9ydCBlcnJvciBjYXNlICh0aGF0IHdlIGNhbm5vdCBjYXRjaCEpXHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3RpbWVvdXQgaW50aXRpYWxpc2luZyBNYXR0ZXJwb3J0Jyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlaihuZXcgRXJyb3IoJ2Vycm9yIGluaXQgTWF0dGVycG9ydCcpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnaW5pdCBkb25lJyk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXModHJ1ZSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgICAgICAgIHJlaihuZXcgRXJyb3IoJ2Vycm9yIGluaXQgTWF0dGVycG9ydCcpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgaW1wb3J0RGF0YShcclxuICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgIHN1cmZhY2U6IG51bWJlcixcclxuICAgIHJlbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgbm9kZTogTm9kZSA9IG51bGwsXHJcbiAgICBvdmVycmlkZUV4aXN0aW5nID0gdHJ1ZVxyXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgaWYgKCF0aGlzLnN3ZWVwcykge1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdubyBzd2VlcHMgaW5pdGlhbGl6ZWQnKSk7XHJcbiAgICB9XHJcbiAgICBsZXQgYXBwSXNMb2FkZWQgPSBmYWxzZTtcclxuICAgIFxyXG5cclxuICAgIHRoaXMuc2RrLkFwcC5zdGF0ZS5zdWJzY3JpYmUoZnVuY3Rpb24gKGFwcFN0YXRlKSB7XHJcbiAgICAgIC8vIGFwcCBzdGF0ZSBoYXMgY2hhbmdlZFxyXG4gICAgICBjb25zb2xlLmxvZygnVGhlIGN1cnJlbnQgcGhhc2U6ICcsIGFwcFN0YXRlLnBoYXNlKTtcclxuICAgICAgaWYgKGFwcFN0YXRlLnBoYXNlID09PSAnYXBwcGhhc2UucGxheWluZycpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnVGhlIGFwcCBpcyBwbGF5aW5nJyk7XHJcbiAgICAgICAgYXBwSXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBhd2FpdCB3YWl0VW50aWwoKCkgPT4gYXBwSXNMb2FkZWQgPT09IHRydWUpO1xyXG5cclxuICAgIGlmIChyZWxvYWRpbmcpIHtcclxuICAgICAgLy8gcGVyZm9ybSBvbmx5IDM2MCBpbXBvcnQgc2luY2Ugd2UgYXJlIHJlbG9hZGluZ1xyXG4gICAgICBhd2FpdCB0aGlzLmltcG9ydDM2MGltYWdlcyhvdmVycmlkZUV4aXN0aW5nKTtcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNwYWNlSUQgPSBzcGFjZUlEO1xyXG4gICAgbGV0IGZsb29yWm9uZXM6IFpvbmVbXSA9IFtdO1xyXG4gICAgY29uc3Qgem9uZXMgPSBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmdldFpvbmVzQnlTcGFjZShzcGFjZUlEKTtcclxuICAgIGNvbnN0IG1haW5ab25lID0gem9uZXMuZmluZCgoeikgPT4gIXoucGFyZW50SUQpO1xyXG4gICAgaWYgKCFtYWluWm9uZSkge1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdtaXNzaW5nIGRhdGEgKG5vIG1haW4gQnVpbGRpbmcgWm9uZSknKSk7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZygnaW1wb3J0aW5nIGRhdGEgZnJvbSBtYXR0ZXJwb3J0Jyk7XHJcbiAgICAvLyBzYXZlIHN3ZWVwcyBkYXRhIGFzIGpzb25cclxuICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShPYmplY3QudmFsdWVzKHRoaXMuc3dlZXBzKSk7XHJcbiAgICBhd2FpdCB1cGxvYWRKc29uVG9TMyhcclxuICAgICAgYHZpc2l0cy8ke3RoaXMubW9kZWxJRH0vaW52ZW50b3J5L2AsXHJcbiAgICAgIGpzb24sXHJcbiAgICAgICdkYXRhLmpzb24nXHJcbiAgICApO1xyXG4gICAgLy8gY2hlY2sgbGF5ZXIgb2YgYnVpbGRpbmcgdHlwZVxyXG4gICAgY29uc3QgbGF5ZXJCdWlsZGluZyA9IGF3YWl0IHRoaXMuZ2V0TGF5ZXJCeU5hbWUoJ0JVSUxESU5HJyk7XHJcbiAgICBjb25zdCBjcmVhdGVkRGVmYXVsdFpvbmUgPSBhd2FpdCB0aGlzLmNyZWF0ZVpvbmUoXHJcbiAgICAgIG5vZGUubWV0YWRhdGEsXHJcbiAgICAgIGxheWVyQnVpbGRpbmcuaWQsXHJcbiAgICAgIHN1cmZhY2UsXHJcbiAgICAgIG1haW5ab25lLmlkLFxyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLnN3ZWVwcyksXHJcbiAgICAgIG5vZGVcclxuICAgICk7XHJcbiAgICBpZiAoIWNyZWF0ZWREZWZhdWx0Wm9uZSkge1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZsb29ycykge1xyXG4gICAgICBmbG9vclpvbmVzID0gYXdhaXQgdGhpcy5pbXBvcnRGbG9vckRhdGEoY3JlYXRlZERlZmF1bHRab25lLmlkLCBub2RlKTtcclxuICAgIH1cclxuICAgIC8vIGNvbnNvbGUubG9nKGZsb29yWm9uZXMpO1xyXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuc3dlZXBzKS5tYXAoYXN5bmMgKGtleSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHN3ZWVwSW5mbyA9IHRoaXMuc3dlZXBzW2tleV07XHJcbiAgICAgICAgY29uc3QgbmF2aWdhdGlvbklucHV0ID0ge1xyXG4gICAgICAgICAgbWF0dGVycG9ydFN3ZWVwSUQ6IHN3ZWVwSW5mby51dWlkLFxyXG4gICAgICAgICAgcG9zaXRpb246IEpTT04uc3RyaW5naWZ5KHN3ZWVwSW5mby5wb3NpdGlvbiksXHJcbiAgICAgICAgICByb3RhdGlvbjogSlNPTi5zdHJpbmdpZnkoc3dlZXBJbmZvLnJvdGF0aW9uKSxcclxuICAgICAgICAgIGxldmVsOiBMZXZlbFN0YXR1cy5MT1csXHJcbiAgICAgICAgICBub2RlSUQ6IG5vZGUuaWQsXHJcbiAgICAgICAgICBzcGFjZUlELFxyXG4gICAgICAgIH0gYXMgTmF2aWdhdGlvbjtcclxuICAgICAgICBjb25zdCBuYXYgPSBhd2FpdCB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmNyZWF0ZU5hdmlnYXRpb24oXHJcbiAgICAgICAgICBuYXZpZ2F0aW9uSW5wdXRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICghbmF2KSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnY291bGQgY3JlYXRlIG5hdmlnYXRpb24nLCBuYXZpZ2F0aW9uSW5wdXQuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBhd2FpdCB0aGlzLmltcG9ydDM2MGltYWdlcyhvdmVycmlkZUV4aXN0aW5nKTtcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBjcmVhdGVab25lKFxyXG4gICAgbmFtZTogc3RyaW5nLFxyXG4gICAgbGF5ZXJJRDogc3RyaW5nLFxyXG4gICAgc3VyZmFjZTogbnVtYmVyID0gbnVsbCxcclxuICAgIHBhcmVudElEOiBzdHJpbmcgPSBudWxsLFxyXG4gICAgc3dlZXBzOiBzdHJpbmdbXSA9IFtdLFxyXG4gICAgbm9kZTogTm9kZSA9IG51bGwsXHJcbiAgICBtZXRhZGF0YTogc3RyaW5nID0gbnVsbFxyXG4gICk6IFByb21pc2U8Wm9uZT4ge1xyXG4gICAgY29uc3Qgem9uZUlucHV0ID0ge1xyXG4gICAgICBuYW1lLFxyXG4gICAgICBzcGFjZUlEOiB0aGlzLnNwYWNlSUQsXHJcbiAgICAgIGxheWVySUQsXHJcbiAgICAgIHN3ZWVwSURzOiBzd2VlcHMsXHJcbiAgICAgIG5vZGVJRHM6IG5vZGUgPyBbbm9kZS5pZF0gOiBudWxsLFxyXG4gICAgfSBhcyBab25lO1xyXG4gICAgcmVtb3ZlTnVsbEtleXNGcm9tT2JqZWN0KHpvbmVJbnB1dCk7XHJcbiAgICBpZiAoc3VyZmFjZSkge1xyXG4gICAgICB6b25lSW5wdXQuc3VyZmFjZSA9IHN1cmZhY2U7XHJcbiAgICB9XHJcbiAgICBpZiAocGFyZW50SUQpIHtcclxuICAgICAgem9uZUlucHV0LnBhcmVudElEID0gcGFyZW50SUQ7XHJcbiAgICB9XHJcbiAgICBpZiAobWV0YWRhdGEpIHtcclxuICAgICAgem9uZUlucHV0Lm1ldGFkYXRhID0gbWV0YWRhdGE7XHJcbiAgICB9XHJcbiAgICBjb25zdCBuZXdMb2NhbCA9IGF3YWl0IHRoaXMuem9uZVNlcnZpY2UuY3JlYXRlKHpvbmVJbnB1dCk7XHJcbiAgICByZXR1cm4gbmV3TG9jYWw7XHJcbiAgfVxyXG5cclxuICBhc3luYyBpbXBvcnQzNjBpbWFnZXMob3ZlcnJpZGVFeGlzdGluZyA9IHRydWUpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGNvbnNvbGUubG9nKCdJbXBvcnRpbmcgMzYwIGltYWdlcycpO1xyXG4gICAgdGhpcy5pbXBvcnRpbmdJbWFnZXMubmV4dCh0cnVlKTtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBjb25zdCBzY2FucyA9IE9iamVjdC52YWx1ZXModGhpcy5zd2VlcHMpO1xyXG4gICAgICBjb25zdCBubWJTY2FucyA9IE9iamVjdC5rZXlzKHNjYW5zKS5sZW5ndGg7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLnRvdGFsU3dlZXBzQ291bnQubmV4dChubWJTY2Fucyk7XHJcblxyXG4gICAgICBjb25zdCBzdGFydCA9IG92ZXJyaWRlRXhpc3RpbmcgPyAwIDogYXdhaXQgdGhpcy5nZXRVcGxvYWRlZEltYWdlQ291bnQodGhpcy5tb2RlbElEKTtcclxuICAgIFxyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IHN0YXJ0OyBpbmRleCA8IG5tYlNjYW5zOyBpbmRleCArPSAxKSB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5zdG9wKSB7XHJcblxyXG4gICAgICAgICAgYXdhaXQgdGhpcy5zZGsuU3dlZXAubW92ZVRvKHNjYW5zW2luZGV4XS51dWlkLCB7cm90YXRpb24gOiB7eDogMCwgeTogMH0sIHRyYW5zaXRpb24gOiB0aGlzLnNkay5Td2VlcC5UcmFuc2l0aW9uLklOU1RBTlQsIHRyYW5zaXRpb25UaW1lOiAwfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGNvbnN0IGltZyA9IGF3YWl0IHRoaXMuc2RrLlJlbmRlcmVyLnRha2VFcXVpcmVjdGFuZ3VsYXIoXHJcbiAgICAgICAgICAgIHt3aWR0aDogMjA0OCwgaGVpZ2h0OiAxMDI0fSxcclxuICAgICAgICAgICAge21hdHRlcnRhZ3M6IGZhbHNlLCBzd2VlcHM6IHRydWV9XHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIC8qKlVwbG9hZCBvbiBTMyBhcmUgYXN5bmNocm9ub3VzLCBpbiBvcmRlciB0byBubyBzbG93IGRvd24gdGhlIHByb2Nlc3MqL1xyXG4gICAgICAgICAgdXBsb2FkQmFzZTY0SW1hZ2VXaXRoUmV0cnkoXHJcbiAgICAgICAgICAgIGltZyxcclxuICAgICAgICAgICAgc2NhbnNbaW5kZXhdLnV1aWQsXHJcbiAgICAgICAgICAgIGB2aXNpdHMvJHt0aGlzLm1vZGVsSUR9L3N3ZWVwcy9gLFxyXG4gICAgICAgICAgICAnc3dlZXAnLFxyXG4gICAgICAgICAgICA1XHJcbiAgICAgICAgICApLnRoZW4oKHIpID0+e1xyXG4gICAgICAgICAgICB0aGlzLnN3ZWVwUHJvY2Vzc2VkQ291bnQubmV4dChpbmRleCk7XHJcbiAgICAgICAgICAgIGlmKGluZGV4ID09PSBubWJTY2FucyAtIDEpe1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdJbXBvcnQgMzYwIGRvbmUnKTtcclxuICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVtb3ZlRnJhbWUoKTtcclxuICAgICAgICAgICAgICB0aGlzLnN0b3AgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KS5jYXRjaCgoZSk9PntcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJFcnJvciB1cGxvYWRpbmcgc2NhbiA6IFwiLCBlKTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdBYmFuZG9uaW5nIGltcG9ydCBiZWNhdXNlIGl0IHdhcyBjYW5jZWxsZWQnKTtcclxuICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVGcmFtZSgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICB0aGlzLnJlbW92ZUZyYW1lKCk7XHJcbiAgICAgIFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRVcGxvYWRlZEltYWdlQ291bnQobW9kZWxJRCl7XHJcbiAgICB0cnl7XHJcbiAgICAgIGNvbnN0IGltYWdlcyA9IGF3YWl0IGxpc3RGaWxlc0luRm9sZGVyKGB2aXNpdHMvJHttb2RlbElEfS9zd2VlcHMvYCk7XHJcbiAgICAgIHJldHVybiBpbWFnZXMubGVuZ3RoO1xyXG4gICAgfWNhdGNoKGUpe1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG1vdmVUb0Zsb29yKGZsb29yTmFtZTogc3RyaW5nLCBtYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZTogbnVtYmVyID0gbnVsbCkge1xyXG4gICAgaWYgKCF0aGlzLmZsb29ycykge1xyXG4gICAgICBjb25zb2xlLmxvZygnRmxvb3IgYXJlIG5vdCBsb2FkZWQgeWV0Jyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIGxvb2sgdXAgZm9yIHNlcXVlbmNlIG51bWJlciAodGhlIHNhZmVzdCBtZXRob2QpXHJcbiAgICBsZXQgZmxvb3JNYXR0ZXJwb3J0ID0gT2JqZWN0LnZhbHVlcyh0aGlzLmZsb29ycykuZmluZChcclxuICAgICAgKGZsb29yKSA9PiBmbG9vci5zZXF1ZW5jZSA9PT0gbWF0dGVycG9ydEZsb29yU2VxdWVuY2VcclxuICAgICk7XHJcbiAgICBpZiAoIWZsb29yTWF0dGVycG9ydCkge1xyXG4gICAgICBmbG9vck1hdHRlcnBvcnQgPSBPYmplY3QudmFsdWVzKHRoaXMuZmxvb3JzKS5maW5kKFxyXG4gICAgICAgIChmbG9vcikgPT4gZmxvb3JOYW1lLmluY2x1ZGVzKGZsb29yLm5hbWUpICYmIGZsb29yLm5hbWUgIT0gJydcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICghZmxvb3JNYXR0ZXJwb3J0KSB7XHJcbiAgICAgIGZsb29yTWF0dGVycG9ydCA9IE9iamVjdC52YWx1ZXModGhpcy5mbG9vcnMpLmZpbmQoKGZsb29yKSA9PlxyXG4gICAgICAgIGZsb29yTmFtZS5pbmNsdWRlcyhmbG9vci5pZClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIC8vIGNvbnNvbGUubG9nKGZsb29yTWF0dGVycG9ydClcclxuICAgIGlmIChmbG9vck1hdHRlcnBvcnQpIHtcclxuICAgICAgbGV0IHJldHJ5ID0gdHJ1ZTtcclxuICAgICAgd2hpbGUgKHJldHJ5KSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGNvbnN0IGZsb29ySW5kZXggPSBhd2FpdCB0aGlzLnNkay5GbG9vci5tb3ZlVG8oXHJcbiAgICAgICAgICAgIGZsb29yTWF0dGVycG9ydC5zZXF1ZW5jZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwibW92ZWQgdG8gZmxvb3JJbmRleFwiLCBmbG9vckluZGV4KTtcclxuICAgICAgICAgIHJldHJ5ID0gZmFsc2U7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdDYW5ub3QgbW92ZSB0byBGbG9vcicsIGVycm9yKTtcclxuICAgICAgICAgIGF3YWl0IHdhaXQoMTAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUud2FybignTm8gbWF0dGVycG9ydCBmbG9vciBmb3VuZCB0byBtb3ZlIHRvJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaW1wb3J0Rmxvb3JEYXRhKFxyXG4gICAgZGVmYXV0Wm9uZUlEOiBzdHJpbmcsXHJcbiAgICBub2RlOiBOb2RlXHJcbiAgKTogUHJvbWlzZTxab25lW10+IHtcclxuICAgIGNvbnN0IHpvbmVzID0gW107XHJcbiAgICBhd2FpdCB0aGlzLnNkay5Nb2RlLm1vdmVUbyh0aGlzLnNkay5Nb2RlLk1vZGUuRkxPT1JQTEFOKTtcclxuICAgIGNvbnN0IG5tYkZsb29ycyA9IE9iamVjdC5rZXlzKHRoaXMuZmxvb3JzKS5sZW5ndGg7XHJcbiAgICBjb25zb2xlLmxvZygnVG90YWwgbnVtYmVyIG9mIGZsb29ycycsIG5tYkZsb29ycyk7XHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbm1iRmxvb3JzOyBpbmRleCArPSAxKSB7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXHJcbiAgICAgIGNvbnNvbGUubG9nKCdJbXBvcnRpbmcgZmxvb3InLCBpbmRleCk7XHJcbiAgICAgIGF3YWl0IHRoaXMuc2RrLkZsb29yLm1vdmVUbyhpbmRleCkudGhlbihhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgYXdhaXQgd2FpdCg3MDApO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiYWJvdXQgdG8gc2F2ZSB0aGUgZmxvb3JcIiwgaW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IHpvbmUgPSBhd2FpdCB0aGlzLnNhdmVGbG9vcihkZWZhdXRab25lSUQsIG5vZGUpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwicmVjZWl2ZWQgZmxvb3Igem9uZVwiLCB6b25lKTtcclxuICAgICAgICB6b25lcy5wdXNoKHpvbmUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoem9uZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBzYXZlRmxvb3IoZGVmYXV0Wm9uZUlEOiBzdHJpbmcsIG5vZGU6IE5vZGUpOiBQcm9taXNlPFpvbmU+IHtcclxuICAgIGxldCBuYW1lID0gdGhpcy5jdXJyZW50Rmxvb3IuaWQ7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50Rmxvb3IubmFtZSAhPT0gJycpIHtcclxuICAgICAgbmFtZSA9IHRoaXMuY3VycmVudEZsb29yLm5hbWU7XHJcbiAgICB9XHJcbiAgICBjb25zdCBsYXllckZsb29yID0gYXdhaXQgdGhpcy5nZXRMYXllckJ5TmFtZSgnRkxPT1InKTtcclxuICAgIGNvbnN0IHN3ZWVwc0luZm8gPSBPYmplY3QudmFsdWVzKHRoaXMuc3dlZXBzKTtcclxuICAgIGNvbnN0IHN3ZWVwc0ZvckZsb29yID0gc3dlZXBzSW5mby5maWx0ZXIoXHJcbiAgICAgIChzd2VlcEluZm8pID0+IHN3ZWVwSW5mby5mbG9vckluZm8uaWQgPT09IHRoaXMuY3VycmVudEZsb29yLmlkXHJcbiAgICApO1xyXG4gICAgY29uc29sZS5sb2coJ2N1cnJlbnQgZmxvb3InLCB0aGlzLmN1cnJlbnRGbG9vcik7XHJcbiAgICBjb25zb2xlLmxvZygnc3dlZXBzIGZvciBmbG9vcicsIHN3ZWVwc0ZvckZsb29yLmxlbmd0aCk7XHJcbiAgICBjb25zdCBzd2VlcElEczogc3RyaW5nW10gPSBzd2VlcHNGb3JGbG9vci5tYXAoKHN3ZWVwKSA9PiBzd2VlcC51dWlkKTtcclxuICAgIGNvbnN0IHpvbmUgPSBhd2FpdCB0aGlzLmNyZWF0ZVpvbmUoXHJcbiAgICAgIGDDiXRhZ2UgJHtuYW1lfSAtICR7bm9kZS5tZXRhZGF0YX1gLFxyXG4gICAgICBsYXllckZsb29yLmlkLFxyXG4gICAgICBudWxsLFxyXG4gICAgICBkZWZhdXRab25lSUQsXHJcbiAgICAgIHN3ZWVwSURzLFxyXG4gICAgICBub2RlLFxyXG4gICAgICBKU09OLnN0cmluZ2lmeSh7bWF0dGVycG9ydEZsb29yU2VxdWVuY2U6IHRoaXMuY3VycmVudEZsb29yLnNlcXVlbmNlfSlcclxuICAgICk7XHJcbiAgICAvLyBUT0RPIGxpbmsgdG8gc2NhbnNcclxuICAgIGNvbnN0IGJhc2U2NCA9IGF3YWl0IHRoaXMuc2RrLlJlbmRlcmVyLnRha2VTY3JlZW5TaG90KHtcclxuICAgICAgd2lkdGg6IDQwOTYsXHJcbiAgICAgIGhlaWdodDogMjA0OCxcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgc3BhY2VJRHNob3J0ID0gdGhpcy5zcGFjZUlELnNsaWNlKDAsIDgpO1xyXG4gICAgYXdhaXQgdXBsb2FkQmFzZTY0SW1hZ2UoXHJcbiAgICAgIGJhc2U2NCxcclxuICAgICAgbnVsbCxcclxuICAgICAgYHZpc2l0cy8ke3RoaXMubW9kZWxJRH0vcGxhbnMvYCxcclxuICAgICAgYHBsYW5fZmxvb3JfJHt0aGlzLmN1cnJlbnRGbG9vci5pZH1fJHtzcGFjZUlEc2hvcnR9YFxyXG4gICAgKTtcclxuICAgIC8vIGNyZWF0ZSBQbGFuIG9iamVjdFxyXG4gICAgY29uc3QgcGxhbiA9IHtcclxuICAgICAgbmFtZTogYHBsYW5fZmxvb3JfJHt0aGlzLmN1cnJlbnRGbG9vci5pZH1gLFxyXG4gICAgICBhbm5leGU6IGB2aXNpdHMvJHt0aGlzLm1vZGVsSUR9L3BsYW5zL3BsYW5fZmxvb3JfJHt0aGlzLmN1cnJlbnRGbG9vci5pZH1fJHtzcGFjZUlEc2hvcnR9LmpwZWdgLFxyXG4gICAgICB6b25lSUQ6IHpvbmUuaWQsXHJcbiAgICAgIHNwYWNlSUQ6IHRoaXMuc3BhY2VJRCxcclxuICAgICAgaXNDdXJyZW50Rm9yWm9uZTogdHJ1ZSxcclxuICAgICAgaXNNb2RpZmllZDogZmFsc2UsXHJcbiAgICAgIGlzSW1wb3J0ZWRNYXR0ZXJwb3J0OiB0cnVlLFxyXG4gICAgfSBhcyBQbGFuO1xyXG4gICAgYXdhaXQgdGhpcy5wbGFuU2VydmljZS5jcmVhdGVQbGFuKHBsYW4pO1xyXG4gICAgLy8gY29uc29sZS5sb2coXCJmbG9vciBzYXZlZFwiKTtcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoem9uZSk7XHJcbiAgfVxyXG5cclxuICBhYmFuZG9uKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdhYmFuZG9ubmluZyBpbXBvcnQnKTtcclxuICAgICAgdGhpcy5zdG9wID0gdHJ1ZTtcclxuICAgICAgdGhpcy5yZW1vdmVGcmFtZSgpO1xyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUZyYW1lKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudEZyYW1lKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEZyYW1lLnJlbW92ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIGdldExheWVyQnlOYW1lKG5hbWU6IHN0cmluZyk6IFByb21pc2U8TGF5ZXI+IHtcclxuICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKHRoaXMuc3BhY2VJRCk7XHJcbiAgICBjb25zdCBjdXJyZW50T3JnSWQgPSBtaXNzaW9uLm9yZ2FuaXNhdGlvbklEO1xyXG4gICAgY29uc3QgbGF5ZXJzID0gYXdhaXQgdGhpcy5sYXllclNlcnZpY2UuZ2V0TGF5ZXJCeU5hbWVGb3JPcmdhbmlzYXRpb24oXHJcbiAgICAgIG5hbWUsXHJcbiAgICAgIGN1cnJlbnRPcmdJZFxyXG4gICAgKTtcclxuICAgIGlmIChsYXllcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICByZXR1cm4gbGF5ZXJzWzBdO1xyXG4gICAgfVxyXG4gICAgLy8gY3JlYXRlIHRoZW5cclxuICAgIHJldHVybiB0aGlzLmxheWVyU2VydmljZS5jcmVhdGVMYXllckZvck9yZ2FuaXNhdGlvbihuYW1lLCBjdXJyZW50T3JnSWQpO1xyXG4gIH1cclxufVxyXG4iXX0=