tango-app-ui-store-builder 1.2.16 → 1.2.18

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 (63) hide show
  1. package/esm2022/lib/components/access-denied/access-denied.component.mjs +31 -0
  2. package/esm2022/lib/components/collection-update-ai/collection-update-ai.component.mjs +3 -3
  3. package/esm2022/lib/components/collection-update-ai/find-replace-layout/prepare-template/prepare-template.component.mjs +3 -3
  4. package/esm2022/lib/components/collection-update-ai/find-replace-layout/review-replace/review-replace.component.mjs +3 -3
  5. package/esm2022/lib/components/fixture-template/template-assign-stores/preview-modal/preview-modal.component.mjs +3 -3
  6. package/esm2022/lib/components/fixture-template/template-assign-stores/template-assign-stores.component.mjs +3 -3
  7. package/esm2022/lib/components/fixture-template-table/find-and-replace/find-and-replace.component.mjs +3 -3
  8. package/esm2022/lib/components/fixture-template-table/fixture-template-table.component.mjs +25 -3
  9. package/esm2022/lib/components/fixture-template-tree/fixture-template-tree.component.mjs +3 -3
  10. package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +3 -3
  11. package/esm2022/lib/components/manage-store-plano/plano-rollout/plano-rollout.component.mjs +3 -3
  12. package/esm2022/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.mjs +9 -3
  13. package/esm2022/lib/components/manage-store-plano/zone-verification-feedback/zone-verification-feedback.component.mjs +9 -3
  14. package/esm2022/lib/components/onboard-store-plano/onboard-store-plano.component.mjs +133 -21
  15. package/esm2022/lib/components/plano-configurations/plano-configurations.component.mjs +25 -9
  16. package/esm2022/lib/components/plano-library/fixture-library/fixture-library.component.mjs +28 -5
  17. package/esm2022/lib/components/plano-tools/allow-edit/allow-edit.component.mjs +4 -3
  18. package/esm2022/lib/components/plano-tools/cad-files/cad-files.component.mjs +5 -4
  19. package/esm2022/lib/components/plano-tools/cad-render/cad-render.component.mjs +6 -5
  20. package/esm2022/lib/components/plano-tools/delete-floor/delete-floor.component.mjs +4 -3
  21. package/esm2022/lib/components/plano-tools/delete-task/delete-task.component.mjs +4 -3
  22. package/esm2022/lib/components/plano-tools/layout-touchup/layout-touchup.component.mjs +134 -0
  23. package/esm2022/lib/components/plano-tools/layout-touchup/touchup-editor/touchup-editor.component.mjs +5103 -0
  24. package/esm2022/lib/components/plano-tools/modify-fixture-numbers/modify-fixture-numbers.component.mjs +4 -3
  25. package/esm2022/lib/components/plano-tools/move-bucket/move-bucket.component.mjs +4 -3
  26. package/esm2022/lib/components/plano-tools/plano-data-export/plano-data-export.component.mjs +4 -3
  27. package/esm2022/lib/components/plano-tools/plano-migrate/plano-migrate.component.mjs +6 -5
  28. package/esm2022/lib/components/plano-tools/store-exports/store-exports.component.mjs +4 -3
  29. package/esm2022/lib/components/plano-tools/swap-template/swap-template.component.mjs +4 -3
  30. package/esm2022/lib/components/plano-tools/tool-page-header/tool-page-header.component.mjs +22 -0
  31. package/esm2022/lib/components/plano-tools/tools-parent/tools-parent.component.mjs +27 -8
  32. package/esm2022/lib/components/planogram/merch-compliance/merch-compliance.component.mjs +3 -3
  33. package/esm2022/lib/components/planogram/merch-compliance/product-locator/product-locator.component.mjs +3 -3
  34. package/esm2022/lib/components/planogram/plano-overview/plano-comparison/plano-comparison.component.mjs +3 -3
  35. package/esm2022/lib/components/planogram/plano-overview/plano-overview.component.mjs +3 -3
  36. package/esm2022/lib/components/popups/publish-plano-modal/publish-plano-modal.component.mjs +1 -1
  37. package/esm2022/lib/components/store-plano/store-plano-tree-view/store-plano-tree-view.component.mjs +3 -3
  38. package/esm2022/lib/components/store-plano/store-plano.component.mjs +3 -3
  39. package/esm2022/lib/functions/feature-access.guard.mjs +20 -0
  40. package/esm2022/lib/functions/plano.function.mjs +22 -1
  41. package/esm2022/lib/services/store-builder.service.mjs +24 -3
  42. package/esm2022/lib/tango-store-builder-routing.module.mjs +35 -55
  43. package/esm2022/lib/tango-store-builder.module.mjs +14 -2
  44. package/fesm2022/tango-app-ui-store-builder.mjs +5863 -376
  45. package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
  46. package/lib/components/access-denied/access-denied.component.d.ts +18 -0
  47. package/lib/components/fixture-template-table/fixture-template-table.component.d.ts +6 -0
  48. package/lib/components/manage-plano/rollout-table/rollout-table.component.d.ts +4 -4
  49. package/lib/components/manage-plano/verification-table/verification-table.component.d.ts +5 -5
  50. package/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.d.ts +1 -0
  51. package/lib/components/manage-store-plano/zone-verification-feedback/zone-verification-feedback.component.d.ts +1 -0
  52. package/lib/components/onboard-store-plano/onboard-store-plano.component.d.ts +8 -0
  53. package/lib/components/plano-configurations/plano-configurations.component.d.ts +9 -1
  54. package/lib/components/plano-library/fixture-library/fixture-library.component.d.ts +5 -1
  55. package/lib/components/plano-tools/layout-touchup/layout-touchup.component.d.ts +50 -0
  56. package/lib/components/plano-tools/layout-touchup/touchup-editor/touchup-editor.component.d.ts +331 -0
  57. package/lib/components/plano-tools/tool-page-header/tool-page-header.component.d.ts +8 -0
  58. package/lib/components/plano-tools/tools-parent/tools-parent.component.d.ts +4 -2
  59. package/lib/functions/feature-access.guard.d.ts +9 -0
  60. package/lib/functions/plano.function.d.ts +9 -0
  61. package/lib/services/store-builder.service.d.ts +16 -0
  62. package/lib/tango-store-builder.module.d.ts +62 -58
  63. package/package.json +1 -1
@@ -257,6 +257,15 @@ export class StoreBuilderService {
257
257
  updateStorePlano(data) {
258
258
  return this.http.post(`${this.storeBuilderApiUrl}/managePlano/updateStorePlano`, data);
259
259
  }
260
+ updateLayoutTouchup(data) {
261
+ return this.http.post(`${this.storeBuilderApiUrl}/managePlano/updateLayoutTouchup`, data);
262
+ }
263
+ getStoresForTouchup() {
264
+ return this.http.post(`${this.storeBuilderApiUrl}/managePlano/getStoresForTouchup`, {});
265
+ }
266
+ syncZoneResponseFromFixtures(data) {
267
+ return this.http.post(`${this.storeBuilderApiUrl}/managePlano/syncZoneResponseFromFixtures`, data);
268
+ }
260
269
  getStoreFeedback(data) {
261
270
  return this.http.post(`${this.storeBuilderApiUrl}/managePlano/getplanoFeedback`, data);
262
271
  }
@@ -643,12 +652,24 @@ export class StoreBuilderService {
643
652
  runVmPlacementQuery(data) {
644
653
  return this.http.post(`${this.storeBuilderApiUrl}/runVmPlacementQuery`, data);
645
654
  }
646
- // Look Plano Collections
655
+ // Feature access — email-gated route/tab visibility. Each returns
656
+ // { code, data: { allowed, email }, ... }; the UI branches on data.allowed.
657
+ /** Whether the current session user may access Find & Replace
658
+ * (email present in planostaticdatas `allowedFindReplaceUsers`). */
659
+ getFindReplaceAccess() {
660
+ return this.http.get(`${this.storeBuilderApiUrl}/featureAccess/findReplace`);
661
+ }
662
+ /** Whether the current session user may access the Fixture Library
663
+ * (email present in planostaticdatas `allowedFixtureLibraryUsers`). */
664
+ getFixtureLibraryAccess() {
665
+ return this.http.get(`${this.storeBuilderApiUrl}/featureAccess/fixtureLibrary`);
666
+ }
647
667
  /** Whether the current session user may access the Looks feature
648
668
  * (email present in planostaticdatas `allowedLookUsers`). */
649
669
  getLookAccess() {
650
- return this.http.get(`${this.storeBuilderApiUrl}/lookPlanoCollection/access`);
670
+ return this.http.get(`${this.storeBuilderApiUrl}/featureAccess/looks`);
651
671
  }
672
+ // Look Plano Collections
652
673
  getLookPlanoCollectionList(data) {
653
674
  return this.http.post(`${this.storeBuilderApiUrl}/lookPlanoCollection/getCollectionList`, data);
654
675
  }
@@ -685,4 +706,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
685
706
  providedIn: "root",
686
707
  }]
687
708
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.GlobalStateService }] });
688
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtYnVpbGRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL3NlcnZpY2VzL3N0b3JlLWJ1aWxkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRCxPQUFPLEtBQUssU0FBUyxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQzs7OztBQUU3QixNQUFNLFVBQVUsR0FDZCxpRkFBaUYsQ0FBQztBQUNwRixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUM7QUFLaEMsTUFBTSxPQUFPLG1CQUFtQjtJQVdwQjtJQUNBO0lBWFYsV0FBVyxDQUFTO0lBQ3BCLGtCQUFrQixDQUFTO0lBQzNCLGFBQWEsQ0FBUztJQUN0QixhQUFhLENBQVM7SUFFdEIsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTNCLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTFDLFlBQ1UsSUFBZ0IsRUFDaEIsRUFBc0I7UUFEdEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUU5QixJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ25FLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDO2dCQUM5QyxJQUFJLENBQUMsV0FBVyxHQUFH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Q0FBQztJQUNKLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxZQUFvQjtRQUM1QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUNyQixHQUFHLElBQUksQ0FBQyxrQkFBa0IseUNBQXlDLFlBQVksRUFBRSxDQUNsRixDQUFDO0lBQ0osQ0FBQztJQUVELDRCQUE0QixDQUFDLFlBQW9CO1FBQy9DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ25CLEdBQUcsSUFBSSxDQUFDLGtCQUFrQiwwQ0FBMEMsRUFDcEUsRUFBRSxZQUFZLEVBQUUsQ0FDakIsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQXAwQ1UsbUJBQW1COzRHQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1nbG9iYWxcIjtcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgKiBhcyBGaWxlU2F2ZXIgZnJvbSBcImZpbGUtc2F2ZXJcIjtcclxuaW1wb3J0ICogYXMgWExTWCBmcm9tIFwieGxzeFwiO1xyXG5cclxuY29uc3QgRVhDRUxfVFlQRSA9XHJcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDtjaGFyc2V0PVVURi04XCI7XHJcbmNvbnN0IEVYQ0VMX0VYVEVOU0lPTiA9IFwiLnhsc3hcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0b3JlQnVpbGRlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIHN0b3JlQXBpVXJsOiBzdHJpbmc7XHJcbiAgc3RvcmVCdWlsZGVyQXBpVXJsOiBzdHJpbmc7XHJcbiAgdHJhZmZpY0FwaVVybDogc3RyaW5nO1xyXG4gIHRpY2tldHNBcGlVcmw6IHN0cmluZztcclxuXHJcbiAgZHJvcERvd25UcmlnZ2VyID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgdGhpcy5ncy5lbnZpcm9ubWVudC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlbnYpID0+IHtcclxuICAgICAgaWYgKGVudikge1xyXG4gICAgICAgIHRoaXMuc3RvcmVCdWlsZGVyQXBpVXJsID0gZW52LnN0b3JlQnVpbGRlclVybDtcclxuICAgICAgICB0aGlzLnN0b3JlQXBpVXJsID0gZW52LnN0b3JlQXBpVXJsO1xyXG4gICAgICAgIHRoaXMudHJhZmZpY0FwaVVybCA9IGVudi50cmFmZmljQXBpVXJsO1xyXG4gICAgICAgIHRoaXMudGlja2V0c0FwaVVybCA9IGVudi50aWNrZXRzQXBpVXJsO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBleHBvcnRBc0V4Y2VsRmlsZShqc29uOiBhbnlbXSwgZXhjZWxGaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCB3b3Jrc2hlZXQ6IFhMU1guV29ya1NoZWV0ID0gWExTWC51dGlscy5qc29uX3RvX3NoZWV0KGpzb24pO1xyXG4gICAgY29uc3Qgd29ya2Jvb2s6IFhMU1guV29ya0Jvb2sgPSB7XHJcbiAgICAgIFNoZWV0czogeyBkYXRhOiB3b3Jrc2hlZXQgfSxcclxuICAgICAgU2hlZXROYW1lczogW1wiZGF0YVwiXSxcclxuICAgIH07XHJcbiAgICBjb25zdCBleGNlbEJ1ZmZlcjogYW55ID0gWExTWC53cml0ZSh3b3JrYm9vaywge1xyXG4gICAgICBib29rVHlwZTogXCJ4bHN4XCIsXHJcbiAgICAgIHR5cGU6IFwiYXJyYXlcIixcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zYXZlQXNFeGNlbEZpbGUoZXhjZWxCdWZmZXIsIGV4Y2VsRmlsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmVBc0V4Y2VsRmlsZShidWZmZXI6IGFueSwgZmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgZGF0YTogQmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7XHJcbiAgICAgIHR5cGU6IEVYQ0VMX1RZUEUsXHJcbiAgICB9KTtcclxuICAgIEZpbGVTYXZlci5zYXZlQXMoZGF0YSwgZmlsZU5hbWUgKyBcImxpc3RcIiArIEVYQ0VMX0VYVEVOU0lPTik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZUFzVGVtcGxhdGUoYnVmZmVyOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRhdGE6IEJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwge1xyXG4gICAgICB0eXBlOiBFWENFTF9UWVBFLFxyXG4gICAgfSk7XHJcbiAgICBGaWxlU2F2ZXIuc2F2ZUFzKGRhdGEsIGZpbGVOYW1lICsgRVhDRUxfRVhURU5TSU9OKTtcclxuICB9XHJcblxyXG4gIGxheW91dExpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3N0b3JlTGF5b3V0TGlzdGAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVMaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVBcGlVcmx9L3N0b3JlSW5mcmFMaXN0YCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVMYXlvdXQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2NyZWF0ZVN0b3JlTGF5b3V0YCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVBbmRTdWJtaXRMYXlvdXRUYXNrKHN0b3JlTmFtZTogc3RyaW5nLCBjbGllbnRJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3NjcmlwdC9jcmVhdGVMYXlvdXRgLCB7XHJcbiAgICAgIHN0b3JlTmFtZTogW3N0b3JlTmFtZV0sXHJcbiAgICAgIGNsaWVudElkLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBCdWxrVXBsb2FkKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS91cGxvYWRCdWxrU3RvcmVgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGdldFBsYW5vKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9zdG9yZUxheW91dGAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGxhbm9EZXRhaWxzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9zdG9yZUZpeHR1cmVzYCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVGbG9vcihkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZGVsZXRlRmxvb3JgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGdldEZsb29yRGVsZXRlSW1wYWN0KGRhdGE6IHsgZmxvb3JJZDogc3RyaW5nIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2dldEZsb29yRGVsZXRlSW1wYWN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVGbG9vckNhc2NhZGUoZGF0YTogeyBmbG9vcklkOiBzdHJpbmc7IGNvbmZpcm1MYXN0Rmxvb3I/OiBib29sZWFuIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2RlbGV0ZUZsb29yQ2FzY2FkZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYWRkRmxvb3IoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3VwZGF0ZUZsb29yYCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVGbG9vckxheW91dChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdXBkYXRlU3RvcmVMYXlvdXRgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGdldFN0b3JlRGV0YWlscyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vc3RvcmVEZXRhaWxzYCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRGaWxlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS91cGxvYWRGaWxlYCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVGaWxlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9yZW1vdmVGaWxlYCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQbGFub1N0YXR1cyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdXBkYXRlU3RhdHVzYCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVMYXlvdXQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2RlbGV0ZVN0b3JlTGF5b3V0LyR7ZGF0YX1gLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZURldGFpbGVkRGlzdGFuY2UoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS91cGRhdGVEZWF0YWlsZWREaXN0YW5jZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkZXJ0Rml4dHVyZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdXBzZXJ0Rml4dHVyZWAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLy8gRml4dHVyZSBMaWJyYXJ5XHJcbiAgY3JlYXRlRml4dHVyZUxpYnJhcnkoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvY3JlYXRlRml4dHVyZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rml4dHVyZUxpYnJhcnlEZXRhaWxzKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2ZpeHR1cmVEZXRhaWxzYCxcclxuICAgICAgeyBwYXJhbXM6IHsgZml4dHVyZUlkOiBpZCB9IH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rml4dHVyZVNpemVMaXN0KGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2ZpeHR1cmVTaXplTGlzdGAsXHJcbiAgICAgIHsgcGFyYW1zOiB7IGNsaWVudElkOiBpZCB9IH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rml4dHVyZUxpYnJhcnlMaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2ZpeHR1cmVMaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlTGlicmFyeUxpc3RUb0V4cG9ydChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9maXh0dXJlTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIHsgcmVzcG9uc2VUeXBlOiBcImFycmF5YnVmZmVyXCIgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVGaXh0dXJlTGlicmFyeShkYXRhOiBhbnksIGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS91cGRhdGVGaXh0dXJlLyR7aWR9YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkdXBsaWNhdGVGaXh0dXJlTGlicmFyeShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9kdXBsaWNhdGVGaXh0dXJlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVGaXh0dXJlTGlicmFyeShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9kZWxldGVGaXh0dXJlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBidWxrQWN0aW9uRml4dHVyZUxpYnJhcnkoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZml4dHVyZUJ1bGtVcGxvYWRgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpeHR1cmVOYW1lTGlzdChpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9maXh0dXJlTmFtZUxpc3RgLFxyXG4gICAgICB7IHBhcmFtczogeyBjbGllbnRJZDogaWQgfSB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpeHR1cmVMaWJOYW1lTGlzdChpZDogc3RyaW5nLCBzdGF0dXM/OiBzdHJpbmcsIGNvdW50cnk/OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2ZpeHR1cmVMaWJOYW1lTGlzdGAsXHJcbiAgICAgIHtcclxuICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgIGNsaWVudElkOiBpZCxcclxuICAgICAgICAgIC4uLihzdGF0dXMgPyB7IHN0YXR1cyB9IDoge30pLFxyXG4gICAgICAgICAgLi4uKGNvdW50cnkgPyB7IGNvdW50cnkgfSA6IHt9KSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIFZNIExpYnJhcnlcclxuICBnZXRWbUxpYnJhcnlEZXRhaWxzKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2dldFZtRGV0YWlsc2AsXHJcbiAgICAgIHtcclxuICAgICAgICBwYXJhbXM6IHsgdm1JZDogaWQgfSxcclxuICAgICAgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRWbUxpYnJhcnlMaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2dldFZtTGliTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Vm1MaWJyYXJ5TGlzdFRvRXhwb3J0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2dldFZtTGliTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIHsgcmVzcG9uc2VUeXBlOiBcImFycmF5YnVmZmVyXCIgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhZGRVcGRhdGVWbUxpYnJhcnkoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvYWRkVXBkYXRlVm1gLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGR1cGxpY2F0ZVZtTGlicmFyeShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9kdXBsaWNhdGVWbUxpYmAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlVm1MaWJyYXJ5KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2RlbGV0ZVZtTGliYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBidWxrQWN0aW9uVm1MaWJyYXJ5KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L3ZtQnVsa1VwbG9hZGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Vk1OYW1lTGlzdChpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L3ZtTmFtZUxpc3RgLCB7XHJcbiAgICAgIHBhcmFtczogeyBjbGllbnRJZDogaWQgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gIFZtVHlwZXNcclxuICBnZXRWbVR5cGVzTGlzdChpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9nZXRWbVR5cGVMaXN0YCxcclxuICAgICAge1xyXG4gICAgICAgIHBhcmFtczogeyBjbGllbnRJZDogaWQgfSxcclxuICAgICAgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBtYW5hZ2VWbVR5cGUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvYWRkVm1UeXBlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRWbVR5cGVJbWFnZShmb3JtRGF0YTogYW55LCBpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvdXBsb2FkVm10eXBlSW1hZ2UvJHtpZH1gLFxyXG4gICAgICBmb3JtRGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBCcmFuZCBsaXN0XHJcbiAgZ2V0QnJhbmRMaXN0KGlkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9nZXRCcmFuZExpc3RgLFxyXG4gICAgICB7XHJcbiAgICAgICAgY2xpZW50SWQ6IGlkLFxyXG4gICAgICB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGJyYW5kRXhwb3J0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2dldEJyYW5kTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIHsgcmVzcG9uc2VUeXBlOiBcImFycmF5YnVmZmVyXCIgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZUZpeHR1cmVzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9zdG9yZUZpeHR1cmVzVjJgLCB7XHJcbiAgICAgIC4uLmRhdGEsXHJcbiAgICAgIC8vIHN0YXR1czogW1wiY29tcGxldGVkXCJdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBnZXRPbmJvYXJkU3RvcmVGaXh0dXJlcyhkYXRhOiBhbnkpIHtcclxuICAvLyAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vc3RvcmVGaXh0dXJlc1YyYCwge1xyXG4gIC8vICAgICAuLi5kYXRhLFxyXG4gIC8vICAgICBzdGF0dXM6IFtcImRyYWZ0XCIsIFwiYWxsb2NhdGlvblBlbmRpbmdcIl0sXHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIC8vIEZpeHR1cmUgVGVtcGxhdGVzXHJcbiAgZ2V0Rml4dHVyZVRlbXBsYXRlTGlzdE9sZChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS9nZXRUZW1wbGF0ZUxpc3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpeHR1cmVUZW1wbGF0ZUxpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvbWFzdGVyVGVtcGxhdGVMaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRUZW1wbGF0ZUNoaWxkTGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS90ZW1wbGF0ZUNoaWxkTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rml4dHVyZVRlbXBsYXRlTGlzdFRvRXhwb3J0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL2dldFRlbXBsYXRlTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIHsgcmVzcG9uc2VUeXBlOiBcImFycmF5YnVmZmVyXCIgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlVGVtcGxhdGVEZXRhaWxzKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL2dldFRlbXBsYXRlRGV0YWlsc2AsXHJcbiAgICAgIHsgcGFyYW1zOiB7IHRlbXBsYXRlSWQ6IGlkIH0gfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVGaXh0dXJlVGVtcGxhdGUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvY3JlYXRlVGVtcGxhdGVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVwbGFjZUZpeHR1cmVEZXRhaWxzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL3JlcGxhY2VGaXh0dXJlRGV0YWlsc2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRml4dHVyZVRlbXBsYXRlKGRhdGE6IGFueSwgaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL3VwZGF0ZVRlbXBsYXRlLyR7aWR9YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkdXBsaWNhdGVGaXh0dXJlVGVtcGxhdGUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvZHVwbGljYXRlVGVtcGxhdGVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUZpeHR1cmVUZW1wbGF0ZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS9kZWxldGVUZW1wbGF0ZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRml4dHVyZVN0YXR1cyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL3VwZGF0ZUZpeHR1cmVTdGF0dXNgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUFwcHJvdmFsU3RhdHVzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vdXBkYXRlQXBwcm92YWxTdGF0dXNgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFN0b3JlRml4dHVyZXNmZWVkYmFjayhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL2dldFN0b3JlRml4dHVyZXNmZWVkYmFja2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlU3RvcmVQbGFubyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL3VwZGF0ZVN0b3JlUGxhbm9gLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFN0b3JlRmVlZGJhY2soZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby9nZXRwbGFub0ZlZWRiYWNrYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRSb2xsb3V0RmVlZGJhY2soZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby9nZXRSb2xsb3V0RmVlZGJhY2t2MmAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Wm9uZVZlcmlmaWNhdGlvbkZlZWRiYWNrKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vZ2V0Wm9uZVZlcmlmaWNhdGlvbkZlZWRiYWNrYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVab25lVmVyaWZpY2F0aW9uU3RhdHVzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vdXBkYXRlWm9uZVZlcmlmaWNhdGlvblN0YXR1c2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0SGVhZGVyc0xpc3Qoc3RvcmVJZD86IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3Rhc2svZ2V0SGVhZGVyTGlzdGAsIFxyXG4gICAgICAvLyB7ICAgICAgcGFyYW1zOiB7IHN0b3JlSWQ6IHN0b3JlSWQgPz8gXCJcIiB9ICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRQSURMaXN0KGhlYWRlcjogc3RyaW5nID0gXCJvdGhlcnNcIikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3Rhc2svZ2V0UElETGlzdGAsIHtcclxuICAgICAgcGFyYW1zOiB7IGhlYWRlciB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRUZW1wbGF0ZUdyb3VwTGlzdCgpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdGFzay9nZXRUZW1wbGF0ZUdyb3VwTGlzdGAsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRml4dHVyZUNvbXBsaWFuY2VTdGF0dXMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby91cGRhdGVGaXh0dXJlU3RhdHVzYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhZGRVcGRhdGVCcmFuZChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9hZGRVcGRhdGVCcmFuZGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkQnJhbmQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvdXBsb2FkQnJhbmRMaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRCcmFuZE1ldGFEYXRhKGNsaWVudElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9nZXRCcmFuZE1ldGFEYXRhYCxcclxuICAgICAgeyBjbGllbnRJZCB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUJyYW5kTWV0YURhdGEoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvdXBkYXRlQnJhbmRNZXRhRGF0YWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVGFzayhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS91cGRhdGVUYXNrY29uZmlnYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRUYXNrQ29uZmlnKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZ2V0VGFza0NvbmZpZz9jbGllbnRJZD0ke2RhdGF9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTdG9yZUZpeHR1cmUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby91cGRhdGVTdG9yZUZpeHR1cmVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIFN0b3JlXHJcbiAgZ2V0UGxhbm9MaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpc3RgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGdldE9uYm9hcmRQbGFub0xpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9vbmJvYXJkUGxhbm8vb25ib2FyZFBsYW5vTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGxhbm9MaXN0RXhwb3J0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpc3RgLCBkYXRhLCB7XHJcbiAgICAgIHJlc3BvbnNlVHlwZTogXCJhcnJheWJ1ZmZlclwiLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRPbmJvYXJkUGxhbm9MaXN0RXhwb3J0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vb25ib2FyZFBsYW5vL29uYm9hcmRQbGFub0xpc3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICB7XHJcbiAgICAgICAgcmVzcG9uc2VUeXBlOiBcImFycmF5YnVmZmVyXCIsXHJcbiAgICAgIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGxhbm9DYXJkcyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9DYXJkc2AsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGxhbm9Sb2xsb3V0TGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9Sb2xsb3V0TGlzdGAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Um9sbG91dExpc3RFeHBvcnQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vUm9sbG91dExpc3RgLCBkYXRhLCB7XHJcbiAgICAgIHJlc3BvbnNlVHlwZTogXCJhcnJheWJ1ZmZlclwiLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFub2dyYW1MaXN0RXhwb3J0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRQbGFub2dyYW1MaXN0YCwgZGF0YSwge1xyXG4gICAgICByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlVGFzayhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdGFzay9jcmVhdGVUYXNrYCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVHbG9iYWxDb21tZW50KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vdXBkYXRlR2xvYmFsQ29tbWVudGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsVGVtcGxhdGVzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL2dldEFsbFRlbXBsYXRlc2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuICBhc3NpZ2VkVGVtcGxhdGUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvYXNzaWdlZFRlbXBsYXRlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG4gIFRlbXBsYXRlU3RvcmVzTGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS9UZW1wbGF0ZVN0b3Jlc0xpc3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFRhc2tJbmZvKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS90YXNrRGV0YWlscz9wbGFub0lkPSR7ZGF0YS5wbGFub0lkfSZmbG9vcklkPSR7ZGF0YS5mbG9vcklkfWAsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rml4dHVyZVRlbXBsYXRlKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL2dldFRlbXBsYXRlYCxcclxuICAgICAgeyBwYXJhbXM6IHsgdGVtcGxhdGVJZDogaWQgfSB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFJvbGxvdXRUYXNrSW5mbyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZ2V0Um9sbG91dFRhc2tEZXRhaWxzP3BsYW5vSWQ9JHtkYXRhLnBsYW5vSWR9JmZsb29ySWQ9JHtkYXRhLmZsb29ySWR9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICByZXZva2VUYXNrKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS90YXNrL3Jldm9rZVRhc2tgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVJvbGxvdXRTdGF0dXMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby91cGRhdGVSb2xsb3V0U3RhdHVzYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRUZW1wbGF0ZUFzc2lnbkxpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvdGVtcGxhdGVBc3NpZ25MaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRUZW1wbGF0ZVRyZWVMaXN0KHBhcmFtczoge1xyXG4gICAgbWFzdGVySWQ/OiBzdHJpbmc7XHJcbiAgICBzdG9yZUlkPzogc3RyaW5nO1xyXG4gICAgY2xpZW50SWQ/OiBzdHJpbmc7XHJcbiAgICB0ZW1wbGF0ZUdyb3VwTmFtZXM/OiBzdHJpbmdbXTtcclxuICAgIGZpeHR1cmVOYW1lcz86IHN0cmluZ1tdO1xyXG4gICAgc3RvcmVOYW1lcz86IHN0cmluZ1tdO1xyXG4gIH0pIHtcclxuICAgIGxldCBxdWVyeVBhcnRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgaWYgKHBhcmFtcy5tYXN0ZXJJZCkgcXVlcnlQYXJ0cy5wdXNoKGBtYXN0ZXJJZD0ke3BhcmFtcy5tYXN0ZXJJZH1gKTtcclxuICAgIGVsc2UgaWYgKHBhcmFtcy5zdG9yZUlkKSBxdWVyeVBhcnRzLnB1c2goYHN0b3JlSWQ9JHtwYXJhbXMuc3RvcmVJZH1gKTtcclxuICAgIGVsc2UgaWYgKHBhcmFtcy5jbGllbnRJZCkgcXVlcnlQYXJ0cy5wdXNoKGBjbGllbnRJZD0ke3BhcmFtcy5jbGllbnRJZH1gKTtcclxuXHJcbiAgICBpZiAocGFyYW1zLnRlbXBsYXRlR3JvdXBOYW1lcz8ubGVuZ3RoKVxyXG4gICAgICBxdWVyeVBhcnRzLnB1c2goXHJcbiAgICAgICAgYHRlbXBsYXRlR3JvdXBOYW1lcz0ke3BhcmFtcy50ZW1wbGF0ZUdyb3VwTmFtZXMuam9pbihcIixcIil9YCxcclxuICAgICAgKTtcclxuICAgIGlmIChwYXJhbXMuZml4dHVyZU5hbWVzPy5sZW5ndGgpXHJcbiAgICAgIHF1ZXJ5UGFydHMucHVzaChgZml4dHVyZU5hbWVzPSR7cGFyYW1zLmZpeHR1cmVOYW1lcy5qb2luKFwiLFwiKX1gKTtcclxuICAgIGlmIChwYXJhbXMuc3RvcmVOYW1lcz8ubGVuZ3RoKVxyXG4gICAgICBxdWVyeVBhcnRzLnB1c2goYHN0b3JlTmFtZXM9JHtwYXJhbXMuc3RvcmVOYW1lcy5qb2luKFwiLFwiKX1gKTtcclxuXHJcbiAgICBsZXQgcXVlcnlTdHJpbmcgPSBxdWVyeVBhcnRzLmxlbmd0aCA/IGA/JHtxdWVyeVBhcnRzLmpvaW4oXCImXCIpfWAgOiBcIlwiO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL3RlbXBsYXRlVHJlZUxpc3Qke3F1ZXJ5U3RyaW5nfWAsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VHJlZUZpbHRlck9wdGlvbnMoY2xpZW50SWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvdHJlZUZpbHRlck9wdGlvbnM/Y2xpZW50SWQ9JHtjbGllbnRJZH1gLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFRlbXBsYXRlVmVyc2lvbkxpc3QodGVtcGxhdGVJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS90ZW1wbGF0ZVZlcnNpb25MaXN0P3RlbXBsYXRlSWQ9JHt0ZW1wbGF0ZUlkfWAsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rml4dHVyZUFpRGV0YWlscyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZ2V0Rml4dHVyZUFJRGV0YWlscz9maXh0dXJlSWQ9JHtkYXRhfWAsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rml4dHVyZVNoZWxmRGV0YWlscyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVTaGVsZkRldGFpbHN2MmAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGxhbm9ncmFtTGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZ2V0UGxhbm9ncmFtTGlzdGAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGxhbm9ncmFtQ29tcGxpYW5jZURldGFpbHMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9jYWxjdWxhdGVDb21wbGlhbmNlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQcm9kdWN0TWFwcGluZyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3VwZGF0ZVByb2R1Y3RNYXBwaW5nYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRDb3VudHJpZXMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmFmZmljQXBpVXJsfS9oZWFkZXJDb3VudHJ5X3YyYCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRSZWdpb25zKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJhZmZpY0FwaVVybH0vaGVhZGVyTG9jYXRpb25zX3YyYCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFub1N0b3JlVmlkZW9QYXJhbXMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby9nZXRQbGFub1N0b3JlVmlkZW9QYXJhbXNgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1Ymxpc2goZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby9jcmVhdGVSZXZpc2lvbmAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmV2aXNpb25MaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vZ2V0UmV2aXNpb25zYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZVBsYW5vKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vZ2V0UmV2aXNpb25EYXRhYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzZXRBY3RpdmVSZXZpc2lvbihkYXRhOiB7XHJcbiAgICByZXZpc2lvbklkOiBzdHJpbmc7XHJcbiAgICBwbGFub0lkOiBzdHJpbmc7XHJcbiAgICBmbG9vcklkOiBzdHJpbmc7XHJcbiAgICBzZW5kVmVyaWZpY2F0aW9uVGFzazogYm9vbGVhbjtcclxuICB9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby9zZXRBY3RpdmVSZXZpc2lvbmAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUmV2aXNpb25OYW1lKGRhdGE6IHsgcmV2aXNpb25JZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vdXBkYXRlUmV2aXNpb25OYW1lYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzZXRTdGFnaW5nRmxhZyhkYXRhOiB7IHJldmlzaW9uSWQ6IHN0cmluZzsgaXNTdGFnaW5nOiBib29sZWFuIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL3NldFN0YWdpbmdGbGFnYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRTaGVsZkRldGFpbHMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3NoZWxmUHJvZHVjdGAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGxhbm9TdG9yZUxpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2dldFBsYW5vU3RvcmVMaXN0P2NsaWVudElkPSR7ZGF0YX1gLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEFsbFN0b3JlcyhjbGllbnRJZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2dldEFsbFN0b3Jlcz9jbGllbnRJZD0ke2NsaWVudElkfWAsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVGbG9vcnNMaXN0KHN0b3JlSWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRTdG9yZUZsb29yc0xpc3Q/c3RvcmVJZD0ke3N0b3JlSWR9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVQbGFub0Zyb21DQUQoXHJcbiAgICBmaWxlOiBGaWxlLFxyXG4gICAgc3RvcmVJZDogc3RyaW5nLFxyXG4gICAgc3RvcmVOYW1lOiBzdHJpbmcsXHJcbiAgICBmbG9vck51bWJlcjogbnVtYmVyLFxyXG4gICkge1xyXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuXHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJmaWxlXCIsIGZpbGUpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKFwic3RvcmVJZFwiLCBzdG9yZUlkKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZChcImZsb29yTnVtYmVyXCIsIGZsb29yTnVtYmVyLnRvU3RyaW5nKCkpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKFwic3RvcmVOYW1lXCIsIHN0b3JlTmFtZSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vb25ib2FyZFBsYW5vL2NyZWF0ZVBsYW5vRnJvbUNBRGAsXHJcbiAgICAgIGZvcm1EYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUVtcHR5UGxhbm8oZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9vbmJvYXJkUGxhbm8vY3JlYXRlRW1wdHlQbGFub2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsUGxhbm9JZHMoY2xpZW50SWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9zY3JpcHQvZ2V0QWxsUGxhbm9JZHNNP2NsaWVudElkPSR7Y2xpZW50SWR9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBmaW5kRml4dHVyZUFpKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS9maW5kRml4dHVyZUFJYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBmaW5kRml4dHVyZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvZmluZEZpeHR1cmVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJlcGxhY2VGaXh0dXJlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS9yZXBsYWNlRml4dHVyZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVwbGFjZUJyYW5kTGlzdChjbGllbnRJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0FJL2dldFJlcGxhY2VCcmFuZExpc3RgLFxyXG4gICAgICB7IGNsaWVudElkIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVwbGFjZVZtTGlzdChjbGllbnRJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0FJL2dldFJlcGxhY2VWbUxpc3RgLFxyXG4gICAgICB7IGNsaWVudElkIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGxhbm9JZChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvZ2V0UGxhbm9JZGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRml4dHVyZURhdGEoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0FJL3VwZGF0ZUZpeHR1cmVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFwcHJvdmVQbGFub0xheW91dChmbG9vcklkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L29uYm9hcmRQbGFuby9hcHByb3ZlUGxhbm9MYXlvdXRgLFxyXG4gICAgICB7IGZsb29ySWQ6IGZsb29ySWQgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBleHBvcnRNQlFTaGVldChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3NjcmlwdC9nZXRQbGFub0V4Y2VsYCxcclxuICAgICAgZGF0YSxcclxuICAgICAgeyByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIiB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydFBsYW5vT3JkZXJTaGVldChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3NjcmlwdC9nZXRQbGFub09yZGVyRXhjZWxgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICB7IHJlc3BvbnNlVHlwZTogXCJhcnJheWJ1ZmZlclwiIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gQXN5bmMvUzMgdmFyaWFudHM6IHNlcnZlciBxdWV1ZXMgdGhlIGpvYiwgcmV0dXJucyAyMDIgd2l0aCB7IGpvYklkIH0sIGFuZFxyXG4gIC8vIHNhdmVzIHRoZSBFeGNlbCB0byBTMy4gVXNlIGdldFBsYW5vRXhwb3J0Sm9iKGpvYklkKSB0byBwb2xsIHN0YXR1cy5cclxuICBleHBvcnRNQlFTaGVldEFzeW5jKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vc2NyaXB0L2dldFBsYW5vRXhjZWxgLFxyXG4gICAgICB7IC4uLmRhdGEsIHNhdmVUb1MzOiB0cnVlIH0sXHJcbiAgICAgIHsgb2JzZXJ2ZTogXCJyZXNwb25zZVwiIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0UGxhbm9PcmRlclNoZWV0QXN5bmMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9zY3JpcHQvZ2V0UGxhbm9PcmRlckV4Y2VsYCxcclxuICAgICAgeyAuLi5kYXRhLCBzYXZlVG9TMzogdHJ1ZSB9LFxyXG4gICAgICB7IG9ic2VydmU6IFwicmVzcG9uc2VcIiB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFBsYW5vRXhwb3J0Sm9iKGpvYklkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vc2NyaXB0L2dldFBsYW5vRXhwb3J0Sm9iLyR7ZW5jb2RlVVJJQ29tcG9uZW50KFxyXG4gICAgICAgIGpvYklkLFxyXG4gICAgICApfWAsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcnVuQWxvY2F0aW9uKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vb25ib2FyZFBsYW5vL3J1bkFsb2NhdGlvbmAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcnVuTG9va3NBbGxvY2F0aW9uKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vb25ib2FyZFBsYW5vL3J1bkxvb2tzQWxsb2NhdGlvbmAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0SXZtQ29udmVyc2lvbkFsaWFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9vbmJvYXJkUGxhbm8vaXZtQ29udmVyc2lvbkFsaWFzYCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxGaW5kUmVwbGFjZURhdGEoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0FJL2dldEFsbEZpbmRSZXBsYWNlRGF0YWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmluZFJlcGxhY2VEYXRhQnlJZChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvZ2V0RmluZFJlcGxhY2VEYXRhQnlJZGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc2F2ZUFzRHJhZnQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0FJL3NhdmVBc0RyYWZ0YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZU9yQ2x1c3Rlckxpc3QoZGF0YTogeyBzZWFyY2hNb2RlOiBcInN0b3JlXCIgfCBcImNsdXN0ZXJcIiB9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0FJL2dldFN0b3JlT3JDbHVzdGVyTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYmF0Y2hGaW5kUmVwbGFjZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvYmF0Y2hGaW5kUmVwbGFjZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYXBwcm92ZVJlcGxhY2UoZGF0YToge1xyXG4gICAgZmluZFJlcGxhY2VJZDogc3RyaW5nO1xyXG4gICAgc3RvcmVzPzogYW55W107XHJcbiAgICBzY2hlZHVsZT86IGJvb2xlYW47XHJcbiAgICBzY2hlZHVsZURhdGU/OiBzdHJpbmcgfCBudWxsO1xyXG4gIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvYXBwcm92ZVJlcGxhY2VgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUJhdGNoUHJvZ3Jlc3MoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0FJL3VwZGF0ZUJhdGNoUHJvZ3Jlc3NgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNhbmNlbEZpbmRSZXBsYWNlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS9jYW5jZWxGaW5kUmVwbGFjZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlRmluZFJlcGxhY2VBaShkYXRhOiB7IGlkOiBzdHJpbmcgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS9kZWxldGVGaW5kUmVwbGFjZUFpYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICByZXZva2VGaW5kUmVwbGFjZShkYXRhOiB7IGZpbmRSZXBsYWNlSWQ6IHN0cmluZyB9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0FJL3Jldm9rZUZpbmRSZXBsYWNlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVTdG9yZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQXBpVXJsfS9jcmVhdGUtc3RvcmVgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIHNwb2NFbWFpbENoZWNrKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVBcGlVcmx9L3Nwb2NFbWFpbENoZWNrYCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVJbmZyYVRpY2tldChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRpY2tldHNBcGlVcmx9L2luZnJhL2NyZWF0ZVRpY2tldGAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rm9vdGZhbGxEZXRhaWxzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZ2V0Rml4dHVyZUZvb3RmYWxsYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRUb3BQZXJmb3JtaW5nWm9uZXMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRUb3BQZXJmb3JtaW5nWm9uZXNgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFN0b3JlRW5nYWdlcnMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2dldFN0b3JlRW5nYWdlcnNgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGdldFN0b3JlRml4dHVyZUVuZ2FnZXJzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZ2V0U3RvcmVGaXh0dXJlRW5nYWdlcnNgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFN0b3JlRml4dHVyZUZvb3RmYWxsKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZ2V0U3RvcmVGaXh0dXJlRm9vdGZhbGxgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIFZNIEFsbG9jYXRpb24gRW5naW5lXHJcbiAgZ2V0Vm1SdWxlTGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3ZtQWxsb2NhdGlvbkVuZ2luZS9nZXRSdWxlTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Vm1SdWxlRGV0YWlscyhydWxlSWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS92bUFsbG9jYXRpb25FbmdpbmUvZ2V0UnVsZURldGFpbHNgLFxyXG4gICAgICB7IHBhcmFtczogeyBydWxlSWQgfSB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVZtUnVsZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3ZtQWxsb2NhdGlvbkVuZ2luZS9jcmVhdGVSdWxlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVWbVJ1bGUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS92bUFsbG9jYXRpb25FbmdpbmUvdXBkYXRlUnVsZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlVm1SdWxlKHJ1bGVJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3ZtQWxsb2NhdGlvbkVuZ2luZS9kZWxldGVSdWxlLyR7cnVsZUlkfWAsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGVWbVJ1bGUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS92bUFsbG9jYXRpb25FbmdpbmUvYWN0aXZhdGVSdWxlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkZWFjdGl2YXRlVm1SdWxlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdm1BbGxvY2F0aW9uRW5naW5lL2RlYWN0aXZhdGVSdWxlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkdXBsaWNhdGVWbVJ1bGUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS92bUFsbG9jYXRpb25FbmdpbmUvZHVwbGljYXRlUnVsZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYXNzaWduVm1SdWxlU3RvcmVzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdm1BbGxvY2F0aW9uRW5naW5lL2Fzc2lnblN0b3Jlc2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWN0aXZlVm1SdWxlRm9yU3RvcmUoc3RvcmVJZDogc3RyaW5nLCBjbGllbnRJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3ZtQWxsb2NhdGlvbkVuZ2luZS9nZXRBY3RpdmVSdWxlRm9yU3RvcmVgLFxyXG4gICAgICB7IHBhcmFtczogeyBzdG9yZUlkLCBjbGllbnRJZCB9IH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rml4dHVyZU51bWJlcnNCeVN0b3JlKFxyXG4gICAgc3RvcmVOYW1lOiBzdHJpbmcsXHJcbiAgICBjbGllbnRJZDogc3RyaW5nLFxyXG4gICAgdGFza1R5cGU6IFwiZml4dHVyZVwiIHwgXCJ6b25lVmVyaWZpY2F0aW9uXCIgPSBcImZpeHR1cmVcIixcclxuICApIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdGFzay9nZXRGaXh0dXJlTnVtYmVyc0J5U3RvcmVgLFxyXG4gICAgICB7IHBhcmFtczogeyBzdG9yZU5hbWUsIGNsaWVudElkLCB0YXNrVHlwZSB9IH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYWxsb3dFZGl0V2l0aG91dFJlbW92aW5nUmVzcG9uc2UoZGF0YToge1xyXG4gICAgc3RvcmVOYW1lczogc3RyaW5nW107XHJcbiAgICBjbGllbnRJZDogc3RyaW5nO1xyXG4gICAgdGFza1R5cGU6IFwiZml4dHVyZVwiIHwgXCJ6b25lVmVyaWZpY2F0aW9uXCI7XHJcbiAgICBmaXh0dXJlTnVtYmVycz86IG51bWJlcltdO1xyXG4gIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3Rhc2svYWxsb3dFZGl0V2l0aG91dFJlbW92aW5nUmVzcG9uc2VgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpeHR1cmVEZXRhaWxzQnlTdG9yZShzdG9yZU5hbWU6IHN0cmluZywgY2xpZW50SWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS90YXNrL2dldEZpeHR1cmVEZXRhaWxzQnlTdG9yZWAsXHJcbiAgICAgIHsgcGFyYW1zOiB7IHN0b3JlTmFtZSwgY2xpZW50SWQgfSB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUZpeHR1cmVUeXBlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdGFzay91cGRhdGVGaXh0dXJlVHlwZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVGaXh0dXJlc0ZvclJlb3JkZXIoc3RvcmVOYW1lOiBzdHJpbmcsIGNsaWVudElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZ2V0U3RvcmVGaXh0dXJlc0ZvclJlb3JkZXJgLFxyXG4gICAgICB7IHBhcmFtczogeyBzdG9yZU5hbWUsIGNsaWVudElkIH0gfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICByZW9yZGVyU3RvcmVGaXh0dXJlTnVtYmVycyhkYXRhOiB7IHN0b3JlTmFtZTogc3RyaW5nOyBjbGllbnRJZDogc3RyaW5nIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3Jlb3JkZXJTdG9yZUZpeHR1cmVOdW1iZXJzYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVGaXh0dXJlTnVtYmVyTWFudWFsKGRhdGE6IHtcclxuICAgIGZpeHR1cmVJZDogc3RyaW5nO1xyXG4gICAgZml4dHVyZU51bWJlcj86IG51bWJlcjtcclxuICAgIGFzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlcj86IG51bWJlcjtcclxuICB9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS91cGRhdGVGaXh0dXJlTnVtYmVyTWFudWFsYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVUYXNrRm9yU3RvcmVzKGRhdGE6IHtcclxuICAgIHN0b3JlTmFtZXM6IHN0cmluZ1tdO1xyXG4gICAgdGFza1R5cGU6IFwiZml4dHVyZVwiIHwgXCJ6b25lVmVyaWZpY2F0aW9uXCI7XHJcbiAgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdGFzay9kZWxldGVUYXNrRm9yU3RvcmVzYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGbG9vcnNXaXRoU3RhdHVzKHN0b3JlTmFtZTogc3RyaW5nLCBjbGllbnRJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3Rhc2svZ2V0Rmxvb3JzV2l0aFN0YXR1c2AsXHJcbiAgICAgIHsgcGFyYW1zOiB7IHN0b3JlTmFtZSwgY2xpZW50SWQgfSB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG1vdmVTdG9yZUJ1Y2tldChkYXRhOiB7XHJcbiAgICBmbG9vcklkOiBzdHJpbmc7XHJcbiAgICB0YXJnZXRTdGF0dXM6IFwiZHJhZnRcIiB8IFwiYWxsb2NhdGlvblBlbmRpbmdcIiB8IFwiY29tcGxldGVkXCI7XHJcbiAgICBjbGVhckxheW91dFRhc2tzOiBib29sZWFuO1xyXG4gICAgY2xlYXJGaXh0dXJlVGFza3M6IGJvb2xlYW47XHJcbiAgICBjbGVhclpvbmVUYXNrczogYm9vbGVhbjtcclxuICB9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS90YXNrL21vdmVTdG9yZUJ1Y2tldGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc3dhcEZpeHR1cmVUZW1wbGF0ZShkYXRhOiB7XHJcbiAgICBkYXRhOiB7IHN0b3JlTmFtZTogc3RyaW5nOyBmaXh0dXJlTnVtYmVyOiBudW1iZXI7IHRlbXBsYXRlTmFtZTogc3RyaW5nIH1bXTtcclxuICB9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9zY3JpcHQvc3dhcEZpeHR1cmVUZW1wbGF0ZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGxhbm9EYXRhU2NoZW1hKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2dldFBsYW5vRGF0YVNjaGVtYWApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2FkRmlsZXMoc3RvcmVOYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9vbmJvYXJkUGxhbm8vY2FkRmlsZXNgLCB7XHJcbiAgICAgIHBhcmFtczogeyBzdG9yZU5hbWUgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcnVuUGxhbm9EYXRhUXVlcnkoZGF0YToge1xyXG4gICAgY2xpZW50SWQ6IHN0cmluZztcclxuICAgIHN0b3JlTmFtZXM6IHN0cmluZ1tdO1xyXG4gICAgZmlsdGVyczogeyBmaWVsZDogc3RyaW5nOyBvcGVyYXRvcjogc3RyaW5nOyB2YWx1ZTogYW55IH1bXTtcclxuICAgIGZpbHRlckNvbWJpbmF0b3I6IFwiQU5EXCIgfCBcIk9SXCI7XHJcbiAgICBzZWxlY3Rpb25Nb2RlOiBcImFsbFwiIHwgXCJmaXJzdE5cIjtcclxuICAgIGxpbWl0UGVyU3RvcmU/OiBudW1iZXI7XHJcbiAgICBjb2x1bW5zOiB7IGtleTogc3RyaW5nOyBsYWJlbD86IHN0cmluZyB9W107XHJcbiAgICBpbmNsdWRlTm90Rm91bmRSb3dzPzogYm9vbGVhbjtcclxuICB9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3J1blBsYW5vRGF0YVF1ZXJ5YCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBydW5WbVBsYWNlbWVudFF1ZXJ5KGRhdGE6IHtcclxuICAgIGNsaWVudElkOiBzdHJpbmc7XHJcbiAgICBzdG9yZU5hbWVzOiBzdHJpbmdbXTtcclxuICAgIHZtTmFtZTogc3RyaW5nO1xyXG4gIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3J1blZtUGxhY2VtZW50UXVlcnlgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIExvb2sgUGxhbm8gQ29sbGVjdGlvbnNcclxuICAvKiogV2hldGhlciB0aGUgY3VycmVudCBzZXNzaW9uIHVzZXIgbWF5IGFjY2VzcyB0aGUgTG9va3MgZmVhdHVyZVxyXG4gICAqICAoZW1haWwgcHJlc2VudCBpbiBwbGFub3N0YXRpY2RhdGFzIGBhbGxvd2VkTG9va1VzZXJzYCkuICovXHJcbiAgZ2V0TG9va0FjY2VzcygpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbG9va1BsYW5vQ29sbGVjdGlvbi9hY2Nlc3NgLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldExvb2tQbGFub0NvbGxlY3Rpb25MaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbG9va1BsYW5vQ29sbGVjdGlvbi9nZXRDb2xsZWN0aW9uTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9va1BsYW5vQ29sbGVjdGlvbkRldGFpbHMoY29sbGVjdGlvbklkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbG9va1BsYW5vQ29sbGVjdGlvbi9nZXRDb2xsZWN0aW9uRGV0YWlsc2AsXHJcbiAgICAgIHsgcGFyYW1zOiB7IGNvbGxlY3Rpb25JZCB9IH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqIE1CUSBidWNrZXQgLyBCcmFuZCAvIEZpeHR1cmUgSGVhZGVyIGRyb3Bkb3duIG9wdGlvbnMgKyBjb21iaW5hdGlvbnMsXHJcbiAgICogIHNlZWRlZCBpbnRvIHBsYW5vc3RhdGljZGF0YXMgKHR5cGU9J2xvb2tDb21ib09wdGlvbnMnKSBmcm9tIHRoZSBzaGVldC4gKi9cclxuICBnZXRMb29rQ29tYm9PcHRpb25zKGNsaWVudElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbG9va1BsYW5vQ29sbGVjdGlvbi9jb21ib09wdGlvbnNgLFxyXG4gICAgICB7IHBhcmFtczogeyBjbGllbnRJZCB9IH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlTG9va1BsYW5vQ29sbGVjdGlvbihkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2xvb2tQbGFub0NvbGxlY3Rpb24vY3JlYXRlQ29sbGVjdGlvbmAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTG9va1BsYW5vQ29sbGVjdGlvbihkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2xvb2tQbGFub0NvbGxlY3Rpb24vdXBkYXRlQ29sbGVjdGlvbmAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlTG9va1BsYW5vQ29sbGVjdGlvbihjb2xsZWN0aW9uSWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9sb29rUGxhbm9Db2xsZWN0aW9uL2RlbGV0ZUNvbGxlY3Rpb24vJHtjb2xsZWN0aW9uSWR9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkdXBsaWNhdGVMb29rUGxhbm9Db2xsZWN0aW9uKGNvbGxlY3Rpb25JZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9sb29rUGxhbm9Db2xsZWN0aW9uL2R1cGxpY2F0ZUNvbGxlY3Rpb25gLFxyXG4gICAgICB7IGNvbGxlY3Rpb25JZCB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
709
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtYnVpbGRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL3NlcnZpY2VzL3N0b3JlLWJ1aWxkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRCxPQUFPLEtBQUssU0FBUyxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQzs7OztBQUU3QixNQUFNLFVBQVUsR0FDZCxpRkFBaUYsQ0FBQztBQUNwRixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUM7QUFLaEMsTUFBTSxPQUFPLG1CQUFtQjtJQVdwQjtJQUNBO0lBWFYsV0FBVyxDQUFTO0lBQ3BCLGtCQUFrQixDQUFTO0lBQzNCLGFBQWEsQ0FBUztJQUN0QixhQUFhLENBQVM7SUFFdEIsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTNCLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTFDLFlBQ1UsSUFBZ0IsRUFDaEIsRUFBc0I7UUFEdEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUU5QixJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ25FLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDO2dCQUM5QyxJQUFJLENBQUMsV0FBVyxHQUFH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QUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7d0dBLzJDVSxtQkFBbUI7NEdBQW5CLG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLWdsb2JhbFwiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCAqIGFzIEZpbGVTYXZlciBmcm9tIFwiZmlsZS1zYXZlclwiO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gXCJ4bHN4XCI7XHJcblxyXG5jb25zdCBFWENFTF9UWVBFID1cclxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O2NoYXJzZXQ9VVRGLThcIjtcclxuY29uc3QgRVhDRUxfRVhURU5TSU9OID0gXCIueGxzeFwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RvcmVCdWlsZGVyU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgc3RvcmVBcGlVcmw6IHN0cmluZztcclxuICBzdG9yZUJ1aWxkZXJBcGlVcmw6IHN0cmluZztcclxuICB0cmFmZmljQXBpVXJsOiBzdHJpbmc7XHJcbiAgdGlja2V0c0FwaVVybDogc3RyaW5nO1xyXG5cclxuICBkcm9wRG93blRyaWdnZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmdzLmVudmlyb25tZW50LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGVudikgPT4ge1xyXG4gICAgICBpZiAoZW52KSB7XHJcbiAgICAgICAgdGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmwgPSBlbnYuc3RvcmVCdWlsZGVyVXJsO1xyXG4gICAgICAgIHRoaXMuc3RvcmVBcGlVcmwgPSBlbnYuc3RvcmVBcGlVcmw7XHJcbiAgICAgICAgdGhpcy50cmFmZmljQXBpVXJsID0gZW52LnRyYWZmaWNBcGlVcmw7XHJcbiAgICAgICAgdGhpcy50aWNrZXRzQXBpVXJsID0gZW52LnRpY2tldHNBcGlVcmw7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4cG9ydEFzRXhjZWxGaWxlKGpzb246IGFueVtdLCBleGNlbEZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IHdvcmtzaGVldDogWExTWC5Xb3JrU2hlZXQgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoanNvbik7XHJcbiAgICBjb25zdCB3b3JrYm9vazogWExTWC5Xb3JrQm9vayA9IHtcclxuICAgICAgU2hlZXRzOiB7IGRhdGE6IHdvcmtzaGVldCB9LFxyXG4gICAgICBTaGVldE5hbWVzOiBbXCJkYXRhXCJdLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IGV4Y2VsQnVmZmVyOiBhbnkgPSBYTFNYLndyaXRlKHdvcmtib29rLCB7XHJcbiAgICAgIGJvb2tUeXBlOiBcInhsc3hcIixcclxuICAgICAgdHlwZTogXCJhcnJheVwiLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNhdmVBc0V4Y2VsRmlsZShleGNlbEJ1ZmZlciwgZXhjZWxGaWxlTmFtZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZUFzRXhjZWxGaWxlKGJ1ZmZlcjogYW55LCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHtcclxuICAgICAgdHlwZTogRVhDRUxfVFlQRSxcclxuICAgIH0pO1xyXG4gICAgRmlsZVNhdmVyLnNhdmVBcyhkYXRhLCBmaWxlTmFtZSArIFwibGlzdFwiICsgRVhDRUxfRVhURU5TSU9OKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlQXNUZW1wbGF0ZShidWZmZXI6IGFueSwgZmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgZGF0YTogQmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7XHJcbiAgICAgIHR5cGU6IEVYQ0VMX1RZUEUsXHJcbiAgICB9KTtcclxuICAgIEZpbGVTYXZlci5zYXZlQXMoZGF0YSwgZmlsZU5hbWUgKyBFWENFTF9FWFRFTlNJT04pO1xyXG4gIH1cclxuXHJcbiAgbGF5b3V0TGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vc3RvcmVMYXlvdXRMaXN0YCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZUxpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUFwaVVybH0vc3RvcmVJbmZyYUxpc3RgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUxheW91dChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vY3JlYXRlU3RvcmVMYXlvdXRgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUFuZFN1Ym1pdExheW91dFRhc2soc3RvcmVOYW1lOiBzdHJpbmcsIGNsaWVudElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vc2NyaXB0L2NyZWF0ZUxheW91dGAsIHtcclxuICAgICAgc3RvcmVOYW1lOiBbc3RvcmVOYW1lXSxcclxuICAgICAgY2xpZW50SWQsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIEJ1bGtVcGxvYWQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3VwbG9hZEJ1bGtTdG9yZWAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGxhbm8oZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3N0b3JlTGF5b3V0YCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFub0RldGFpbHMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3N0b3JlRml4dHVyZXNgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUZsb29yKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9kZWxldGVGbG9vcmAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rmxvb3JEZWxldGVJbXBhY3QoZGF0YTogeyBmbG9vcklkOiBzdHJpbmcgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZ2V0Rmxvb3JEZWxldGVJbXBhY3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUZsb29yQ2FzY2FkZShkYXRhOiB7IGZsb29ySWQ6IHN0cmluZzsgY29uZmlybUxhc3RGbG9vcj86IGJvb2xlYW4gfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZGVsZXRlRmxvb3JDYXNjYWRlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhZGRGbG9vcihkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdXBkYXRlRmxvb3JgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUZsb29yTGF5b3V0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS91cGRhdGVTdG9yZUxheW91dGAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVEZXRhaWxzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9zdG9yZURldGFpbHNgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIHVwbG9hZEZpbGUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3VwbG9hZEZpbGVgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUZpbGUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3JlbW92ZUZpbGVgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVBsYW5vU3RhdHVzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS91cGRhdGVTdGF0dXNgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUxheW91dChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZGVsZXRlU3RvcmVMYXlvdXQvJHtkYXRhfWAsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGV0YWlsZWREaXN0YW5jZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3VwZGF0ZURlYXRhaWxlZERpc3RhbmNlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRlcnRGaXh0dXJlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS91cHNlcnRGaXh0dXJlYCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvLyBGaXh0dXJlIExpYnJhcnlcclxuICBjcmVhdGVGaXh0dXJlTGlicmFyeShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9jcmVhdGVGaXh0dXJlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlTGlicmFyeURldGFpbHMoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZml4dHVyZURldGFpbHNgLFxyXG4gICAgICB7IHBhcmFtczogeyBmaXh0dXJlSWQ6IGlkIH0gfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlU2l6ZUxpc3QoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZml4dHVyZVNpemVMaXN0YCxcclxuICAgICAgeyBwYXJhbXM6IHsgY2xpZW50SWQ6IGlkIH0gfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlTGlicmFyeUxpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZml4dHVyZUxpc3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpeHR1cmVMaWJyYXJ5TGlzdFRvRXhwb3J0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2ZpeHR1cmVMaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICAgeyByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIiB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUZpeHR1cmVMaWJyYXJ5KGRhdGE6IGFueSwgaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L3VwZGF0ZUZpeHR1cmUvJHtpZH1gLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGR1cGxpY2F0ZUZpeHR1cmVMaWJyYXJ5KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2R1cGxpY2F0ZUZpeHR1cmVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUZpeHR1cmVMaWJyYXJ5KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2RlbGV0ZUZpeHR1cmVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGJ1bGtBY3Rpb25GaXh0dXJlTGlicmFyeShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9maXh0dXJlQnVsa1VwbG9hZGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rml4dHVyZU5hbWVMaXN0KGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2ZpeHR1cmVOYW1lTGlzdGAsXHJcbiAgICAgIHsgcGFyYW1zOiB7IGNsaWVudElkOiBpZCB9IH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rml4dHVyZUxpYk5hbWVMaXN0KGlkOiBzdHJpbmcsIHN0YXR1cz86IHN0cmluZywgY291bnRyeT86IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZml4dHVyZUxpYk5hbWVMaXN0YCxcclxuICAgICAge1xyXG4gICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgY2xpZW50SWQ6IGlkLFxyXG4gICAgICAgICAgLi4uKHN0YXR1cyA/IHsgc3RhdHVzIH0gOiB7fSksXHJcbiAgICAgICAgICAuLi4oY291bnRyeSA/IHsgY291bnRyeSB9IDoge30pLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gVk0gTGlicmFyeVxyXG4gIGdldFZtTGlicmFyeURldGFpbHMoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZ2V0Vm1EZXRhaWxzYCxcclxuICAgICAge1xyXG4gICAgICAgIHBhcmFtczogeyB2bUlkOiBpZCB9LFxyXG4gICAgICB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFZtTGlicmFyeUxpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZ2V0Vm1MaWJMaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRWbUxpYnJhcnlMaXN0VG9FeHBvcnQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZ2V0Vm1MaWJMaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICAgeyByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIiB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFkZFVwZGF0ZVZtTGlicmFyeShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9hZGRVcGRhdGVWbWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZHVwbGljYXRlVm1MaWJyYXJ5KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2R1cGxpY2F0ZVZtTGliYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVWbUxpYnJhcnkoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZGVsZXRlVm1MaWJgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGJ1bGtBY3Rpb25WbUxpYnJhcnkoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvdm1CdWxrVXBsb2FkYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRWTU5hbWVMaXN0KGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvdm1OYW1lTGlzdGAsIHtcclxuICAgICAgcGFyYW1zOiB7IGNsaWVudElkOiBpZCB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyAgVm1UeXBlc1xyXG4gIGdldFZtVHlwZXNMaXN0KGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2dldFZtVHlwZUxpc3RgLFxyXG4gICAgICB7XHJcbiAgICAgICAgcGFyYW1zOiB7IGNsaWVudElkOiBpZCB9LFxyXG4gICAgICB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG1hbmFnZVZtVHlwZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9hZGRWbVR5cGVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwbG9hZFZtVHlwZUltYWdlKGZvcm1EYXRhOiBhbnksIGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS91cGxvYWRWbXR5cGVJbWFnZS8ke2lkfWAsXHJcbiAgICAgIGZvcm1EYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIEJyYW5kIGxpc3RcclxuICBnZXRCcmFuZExpc3QoaWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2dldEJyYW5kTGlzdGAsXHJcbiAgICAgIHtcclxuICAgICAgICBjbGllbnRJZDogaWQsXHJcbiAgICAgIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYnJhbmRFeHBvcnQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZ2V0QnJhbmRMaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICAgeyByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIiB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFN0b3JlRml4dHVyZXMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3N0b3JlRml4dHVyZXNWMmAsIHtcclxuICAgICAgLi4uZGF0YSxcclxuICAgICAgLy8gc3RhdHVzOiBbXCJjb21wbGV0ZWRcIl0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIGdldE9uYm9hcmRTdG9yZUZpeHR1cmVzKGRhdGE6IGFueSkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9zdG9yZUZpeHR1cmVzVjJgLCB7XHJcbiAgLy8gICAgIC4uLmRhdGEsXHJcbiAgLy8gICAgIHN0YXR1czogW1wiZHJhZnRcIiwgXCJhbGxvY2F0aW9uUGVuZGluZ1wiXSxcclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gRml4dHVyZSBUZW1wbGF0ZXNcclxuICBnZXRGaXh0dXJlVGVtcGxhdGVMaXN0T2xkKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL2dldFRlbXBsYXRlTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rml4dHVyZVRlbXBsYXRlTGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS9tYXN0ZXJUZW1wbGF0ZUxpc3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFRlbXBsYXRlQ2hpbGRMaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL3RlbXBsYXRlQ2hpbGRMaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlVGVtcGxhdGVMaXN0VG9FeHBvcnQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvZ2V0VGVtcGxhdGVMaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICAgeyByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIiB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpeHR1cmVUZW1wbGF0ZURldGFpbHMoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvZ2V0VGVtcGxhdGVEZXRhaWxzYCxcclxuICAgICAgeyBwYXJhbXM6IHsgdGVtcGxhdGVJZDogaWQgfSB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUZpeHR1cmVUZW1wbGF0ZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS9jcmVhdGVUZW1wbGF0ZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuICByZXBsYWNlRml4dHVyZURldGFpbHMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvcmVwbGFjZUZpeHR1cmVEZXRhaWxzYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVGaXh0dXJlVGVtcGxhdGUoZGF0YTogYW55LCBpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvdXBkYXRlVGVtcGxhdGUvJHtpZH1gLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGR1cGxpY2F0ZUZpeHR1cmVUZW1wbGF0ZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS9kdXBsaWNhdGVUZW1wbGF0ZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlRml4dHVyZVRlbXBsYXRlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL2RlbGV0ZVRlbXBsYXRlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVGaXh0dXJlU3RhdHVzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vdXBkYXRlRml4dHVyZVN0YXR1c2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQXBwcm92YWxTdGF0dXMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby91cGRhdGVBcHByb3ZhbFN0YXR1c2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVGaXh0dXJlc2ZlZWRiYWNrKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vZ2V0U3RvcmVGaXh0dXJlc2ZlZWRiYWNrYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTdG9yZVBsYW5vKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vdXBkYXRlU3RvcmVQbGFub2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTGF5b3V0VG91Y2h1cChkYXRhOiB7XHJcbiAgICBwbGFub0lkOiBzdHJpbmc7XHJcbiAgICBmbG9vcklkOiBzdHJpbmc7XHJcbiAgICBkYXRhOiBhbnk7XHJcbiAgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vdXBkYXRlTGF5b3V0VG91Y2h1cGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVzRm9yVG91Y2h1cCgpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL2dldFN0b3Jlc0ZvclRvdWNodXBgLFxyXG4gICAgICB7fSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzeW5jWm9uZVJlc3BvbnNlRnJvbUZpeHR1cmVzKGRhdGE6IHsgcGxhbm9JZDogc3RyaW5nOyBmbG9vcklkOiBzdHJpbmcgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vc3luY1pvbmVSZXNwb25zZUZyb21GaXh0dXJlc2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVGZWVkYmFjayhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL2dldHBsYW5vRmVlZGJhY2tgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFJvbGxvdXRGZWVkYmFjayhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL2dldFJvbGxvdXRGZWVkYmFja3YyYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRab25lVmVyaWZpY2F0aW9uRmVlZGJhY2soZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby9nZXRab25lVmVyaWZpY2F0aW9uRmVlZGJhY2tgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVpvbmVWZXJpZmljYXRpb25TdGF0dXMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby91cGRhdGVab25lVmVyaWZpY2F0aW9uU3RhdHVzYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRIZWFkZXJzTGlzdChzdG9yZUlkPzogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdGFzay9nZXRIZWFkZXJMaXN0YCwgXHJcbiAgICAgIC8vIHsgICAgICBwYXJhbXM6IHsgc3RvcmVJZDogc3RvcmVJZCA/PyBcIlwiIH0gICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFBJRExpc3QoaGVhZGVyOiBzdHJpbmcgPSBcIm90aGVyc1wiKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdGFzay9nZXRQSURMaXN0YCwge1xyXG4gICAgICBwYXJhbXM6IHsgaGVhZGVyIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFRlbXBsYXRlR3JvdXBMaXN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS90YXNrL2dldFRlbXBsYXRlR3JvdXBMaXN0YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVGaXh0dXJlQ29tcGxpYW5jZVN0YXR1cyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL3VwZGF0ZUZpeHR1cmVTdGF0dXNgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFkZFVwZGF0ZUJyYW5kKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2FkZFVwZGF0ZUJyYW5kYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRCcmFuZChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS91cGxvYWRCcmFuZExpc3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEJyYW5kTWV0YURhdGEoY2xpZW50SWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2dldEJyYW5kTWV0YURhdGFgLFxyXG4gICAgICB7IGNsaWVudElkIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQnJhbmRNZXRhRGF0YShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS91cGRhdGVCcmFuZE1ldGFEYXRhYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUYXNrKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L3VwZGF0ZVRhc2tjb25maWdgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFRhc2tDb25maWcoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9nZXRUYXNrQ29uZmlnP2NsaWVudElkPSR7ZGF0YX1gLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVN0b3JlRml4dHVyZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL3VwZGF0ZVN0b3JlRml4dHVyZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gU3RvcmVcclxuICBnZXRQbGFub0xpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlzdGAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0T25ib2FyZFBsYW5vTGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L29uYm9hcmRQbGFuby9vbmJvYXJkUGxhbm9MaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFub0xpc3RFeHBvcnQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlzdGAsIGRhdGEsIHtcclxuICAgICAgcmVzcG9uc2VUeXBlOiBcImFycmF5YnVmZmVyXCIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldE9uYm9hcmRQbGFub0xpc3RFeHBvcnQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9vbmJvYXJkUGxhbm8vb25ib2FyZFBsYW5vTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIHtcclxuICAgICAgICByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIixcclxuICAgICAgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFub0NhcmRzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0NhcmRzYCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFub1JvbGxvdXRMaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub1JvbGxvdXRMaXN0YCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRSb2xsb3V0TGlzdEV4cG9ydChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9Sb2xsb3V0TGlzdGAsIGRhdGEsIHtcclxuICAgICAgcmVzcG9uc2VUeXBlOiBcImFycmF5YnVmZmVyXCIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFBsYW5vZ3JhbUxpc3RFeHBvcnQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2dldFBsYW5vZ3JhbUxpc3RgLCBkYXRhLCB7XHJcbiAgICAgIHJlc3BvbnNlVHlwZTogXCJhcnJheWJ1ZmZlclwiLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVUYXNrKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS90YXNrL2NyZWF0ZVRhc2tgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUdsb2JhbENvbW1lbnQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby91cGRhdGVHbG9iYWxDb21tZW50YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxUZW1wbGF0ZXMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvZ2V0QWxsVGVtcGxhdGVzYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG4gIGFzc2lnZWRUZW1wbGF0ZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS9hc3NpZ2VkVGVtcGxhdGVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcbiAgVGVtcGxhdGVTdG9yZXNMaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL1RlbXBsYXRlU3RvcmVzTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGFza0luZm8oZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3Rhc2tEZXRhaWxzP3BsYW5vSWQ9JHtkYXRhLnBsYW5vSWR9JmZsb29ySWQ9JHtkYXRhLmZsb29ySWR9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlVGVtcGxhdGUoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvZ2V0VGVtcGxhdGVgLFxyXG4gICAgICB7IHBhcmFtczogeyB0ZW1wbGF0ZUlkOiBpZCB9IH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Um9sbG91dFRhc2tJbmZvKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRSb2xsb3V0VGFza0RldGFpbHM/cGxhbm9JZD0ke2RhdGEucGxhbm9JZH0mZmxvb3JJZD0ke2RhdGEuZmxvb3JJZH1gLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJldm9rZVRhc2soZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3Rhc2svcmV2b2tlVGFza2AsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUm9sbG91dFN0YXR1cyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL3VwZGF0ZVJvbGxvdXRTdGF0dXNgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFRlbXBsYXRlQXNzaWduTGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS90ZW1wbGF0ZUFzc2lnbkxpc3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFRlbXBsYXRlVHJlZUxpc3QocGFyYW1zOiB7XHJcbiAgICBtYXN0ZXJJZD86IHN0cmluZztcclxuICAgIHN0b3JlSWQ/OiBzdHJpbmc7XHJcbiAgICBjbGllbnRJZD86IHN0cmluZztcclxuICAgIHRlbXBsYXRlR3JvdXBOYW1lcz86IHN0cmluZ1tdO1xyXG4gICAgZml4dHVyZU5hbWVzPzogc3RyaW5nW107XHJcbiAgICBzdG9yZU5hbWVzPzogc3RyaW5nW107XHJcbiAgfSkge1xyXG4gICAgbGV0IHF1ZXJ5UGFydHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBpZiAocGFyYW1zLm1hc3RlcklkKSBxdWVyeVBhcnRzLnB1c2goYG1hc3RlcklkPSR7cGFyYW1zLm1hc3RlcklkfWApO1xyXG4gICAgZWxzZSBpZiAocGFyYW1zLnN0b3JlSWQpIHF1ZXJ5UGFydHMucHVzaChgc3RvcmVJZD0ke3BhcmFtcy5zdG9yZUlkfWApO1xyXG4gICAgZWxzZSBpZiAocGFyYW1zLmNsaWVudElkKSBxdWVyeVBhcnRzLnB1c2goYGNsaWVudElkPSR7cGFyYW1zLmNsaWVudElkfWApO1xyXG5cclxuICAgIGlmIChwYXJhbXMudGVtcGxhdGVHcm91cE5hbWVzPy5sZW5ndGgpXHJcbiAgICAgIHF1ZXJ5UGFydHMucHVzaChcclxuICAgICAgICBgdGVtcGxhdGVHcm91cE5hbWVzPSR7cGFyYW1zLnRlbXBsYXRlR3JvdXBOYW1lcy5qb2luKFwiLFwiKX1gLFxyXG4gICAgICApO1xyXG4gICAgaWYgKHBhcmFtcy5maXh0dXJlTmFtZXM/Lmxlbmd0aClcclxuICAgICAgcXVlcnlQYXJ0cy5wdXNoKGBmaXh0dXJlTmFtZXM9JHtwYXJhbXMuZml4dHVyZU5hbWVzLmpvaW4oXCIsXCIpfWApO1xyXG4gICAgaWYgKHBhcmFtcy5zdG9yZU5hbWVzPy5sZW5ndGgpXHJcbiAgICAgIHF1ZXJ5UGFydHMucHVzaChgc3RvcmVOYW1lcz0ke3BhcmFtcy5zdG9yZU5hbWVzLmpvaW4oXCIsXCIpfWApO1xyXG5cclxuICAgIGxldCBxdWVyeVN0cmluZyA9IHF1ZXJ5UGFydHMubGVuZ3RoID8gYD8ke3F1ZXJ5UGFydHMuam9pbihcIiZcIil9YCA6IFwiXCI7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvdGVtcGxhdGVUcmVlTGlzdCR7cXVlcnlTdHJpbmd9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRUcmVlRmlsdGVyT3B0aW9ucyhjbGllbnRJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS90cmVlRmlsdGVyT3B0aW9ucz9jbGllbnRJZD0ke2NsaWVudElkfWAsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGVtcGxhdGVWZXJzaW9uTGlzdCh0ZW1wbGF0ZUlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL3RlbXBsYXRlVmVyc2lvbkxpc3Q/dGVtcGxhdGVJZD0ke3RlbXBsYXRlSWR9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlQWlEZXRhaWxzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRGaXh0dXJlQUlEZXRhaWxzP2ZpeHR1cmVJZD0ke2RhdGF9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlU2hlbGZEZXRhaWxzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVNoZWxmRGV0YWlsc3YyYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFub2dyYW1MaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRQbGFub2dyYW1MaXN0YCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFub2dyYW1Db21wbGlhbmNlRGV0YWlscyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2NhbGN1bGF0ZUNvbXBsaWFuY2VgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVByb2R1Y3RNYXBwaW5nKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdXBkYXRlUHJvZHVjdE1hcHBpbmdgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldENvdW50cmllcyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYWZmaWNBcGlVcmx9L2hlYWRlckNvdW50cnlfdjJgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGdldFJlZ2lvbnMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmFmZmljQXBpVXJsfS9oZWFkZXJMb2NhdGlvbnNfdjJgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGdldFBsYW5vU3RvcmVWaWRlb1BhcmFtcyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL2dldFBsYW5vU3RvcmVWaWRlb1BhcmFtc2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGlzaChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL2NyZWF0ZVJldmlzaW9uYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRSZXZpc2lvbkxpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby9nZXRSZXZpc2lvbnNgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFN0b3JlUGxhbm8oZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby9nZXRSZXZpc2lvbkRhdGFgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNldEFjdGl2ZVJldmlzaW9uKGRhdGE6IHtcclxuICAgIHJldmlzaW9uSWQ6IHN0cmluZztcclxuICAgIHBsYW5vSWQ6IHN0cmluZztcclxuICAgIGZsb29ySWQ6IHN0cmluZztcclxuICAgIHNlbmRWZXJpZmljYXRpb25UYXNrOiBib29sZWFuO1xyXG4gIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL3NldEFjdGl2ZVJldmlzaW9uYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVSZXZpc2lvbk5hbWUoZGF0YTogeyByZXZpc2lvbklkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby91cGRhdGVSZXZpc2lvbk5hbWVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNldFN0YWdpbmdGbGFnKGRhdGE6IHsgcmV2aXNpb25JZDogc3RyaW5nOyBpc1N0YWdpbmc6IGJvb2xlYW4gfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vc2V0U3RhZ2luZ0ZsYWdgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFNoZWxmRGV0YWlscyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vc2hlbGZQcm9kdWN0YCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFub1N0b3JlTGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZ2V0UGxhbm9TdG9yZUxpc3Q/Y2xpZW50SWQ9JHtkYXRhfWAsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsU3RvcmVzKGNsaWVudElkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZ2V0QWxsU3RvcmVzP2NsaWVudElkPSR7Y2xpZW50SWR9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZUZsb29yc0xpc3Qoc3RvcmVJZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2dldFN0b3JlRmxvb3JzTGlzdD9zdG9yZUlkPSR7c3RvcmVJZH1gLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVBsYW5vRnJvbUNBRChcclxuICAgIGZpbGU6IEZpbGUsXHJcbiAgICBzdG9yZUlkOiBzdHJpbmcsXHJcbiAgICBzdG9yZU5hbWU6IHN0cmluZyxcclxuICAgIGZsb29yTnVtYmVyOiBudW1iZXIsXHJcbiAgKSB7XHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG5cclxuICAgIGZvcm1EYXRhLmFwcGVuZChcImZpbGVcIiwgZmlsZSk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJzdG9yZUlkXCIsIHN0b3JlSWQpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKFwiZmxvb3JOdW1iZXJcIiwgZmxvb3JOdW1iZXIudG9TdHJpbmcoKSk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJzdG9yZU5hbWVcIiwgc3RvcmVOYW1lKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9vbmJvYXJkUGxhbm8vY3JlYXRlUGxhbm9Gcm9tQ0FEYCxcclxuICAgICAgZm9ybURhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlRW1wdHlQbGFubyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L29uYm9hcmRQbGFuby9jcmVhdGVFbXB0eVBsYW5vYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxQbGFub0lkcyhjbGllbnRJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3NjcmlwdC9nZXRBbGxQbGFub0lkc00/Y2xpZW50SWQ9JHtjbGllbnRJZH1gLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGZpbmRGaXh0dXJlQWkoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0FJL2ZpbmRGaXh0dXJlQUlgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGZpbmRGaXh0dXJlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS9maW5kRml4dHVyZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcmVwbGFjZUZpeHR1cmUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0FJL3JlcGxhY2VGaXh0dXJlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRSZXBsYWNlQnJhbmRMaXN0KGNsaWVudElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvZ2V0UmVwbGFjZUJyYW5kTGlzdGAsXHJcbiAgICAgIHsgY2xpZW50SWQgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRSZXBsYWNlVm1MaXN0KGNsaWVudElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvZ2V0UmVwbGFjZVZtTGlzdGAsXHJcbiAgICAgIHsgY2xpZW50SWQgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFub0lkKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS9nZXRQbGFub0lkYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVGaXh0dXJlRGF0YShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvdXBkYXRlRml4dHVyZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYXBwcm92ZVBsYW5vTGF5b3V0KGZsb29ySWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vb25ib2FyZFBsYW5vL2FwcHJvdmVQbGFub0xheW91dGAsXHJcbiAgICAgIHsgZmxvb3JJZDogZmxvb3JJZCB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydE1CUVNoZWV0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vc2NyaXB0L2dldFBsYW5vRXhjZWxgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICB7IHJlc3BvbnNlVHlwZTogXCJhcnJheWJ1ZmZlclwiIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0UGxhbm9PcmRlclNoZWV0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vc2NyaXB0L2dldFBsYW5vT3JkZXJFeGNlbGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIHsgcmVzcG9uc2VUeXBlOiBcImFycmF5YnVmZmVyXCIgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBBc3luYy9TMyB2YXJpYW50czogc2VydmVyIHF1ZXVlcyB0aGUgam9iLCByZXR1cm5zIDIwMiB3aXRoIHsgam9iSWQgfSwgYW5kXHJcbiAgLy8gc2F2ZXMgdGhlIEV4Y2VsIHRvIFMzLiBVc2UgZ2V0UGxhbm9FeHBvcnRKb2Ioam9iSWQpIHRvIHBvbGwgc3RhdHVzLlxyXG4gIGV4cG9ydE1CUVNoZWV0QXN5bmMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9zY3JpcHQvZ2V0UGxhbm9FeGNlbGAsXHJcbiAgICAgIHsgLi4uZGF0YSwgc2F2ZVRvUzM6IHRydWUgfSxcclxuICAgICAgeyBvYnNlcnZlOiBcInJlc3BvbnNlXCIgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBleHBvcnRQbGFub09yZGVyU2hlZXRBc3luYyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3NjcmlwdC9nZXRQbGFub09yZGVyRXhjZWxgLFxyXG4gICAgICB7IC4uLmRhdGEsIHNhdmVUb1MzOiB0cnVlIH0sXHJcbiAgICAgIHsgb2JzZXJ2ZTogXCJyZXNwb25zZVwiIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGxhbm9FeHBvcnRKb2Ioam9iSWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9zY3JpcHQvZ2V0UGxhbm9FeHBvcnRKb2IvJHtlbmNvZGVVUklDb21wb25lbnQoXHJcbiAgICAgICAgam9iSWQsXHJcbiAgICAgICl9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBydW5BbG9jYXRpb24oZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9vbmJvYXJkUGxhbm8vcnVuQWxvY2F0aW9uYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBydW5Mb29rc0FsbG9jYXRpb24oZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9vbmJvYXJkUGxhbm8vcnVuTG9va3NBbGxvY2F0aW9uYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRJdm1Db252ZXJzaW9uQWxpYXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L29uYm9hcmRQbGFuby9pdm1Db252ZXJzaW9uQWxpYXNgLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEFsbEZpbmRSZXBsYWNlRGF0YShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvZ2V0QWxsRmluZFJlcGxhY2VEYXRhYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaW5kUmVwbGFjZURhdGFCeUlkKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS9nZXRGaW5kUmVwbGFjZURhdGFCeUlkYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzYXZlQXNEcmFmdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvc2F2ZUFzRHJhZnRgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFN0b3JlT3JDbHVzdGVyTGlzdChkYXRhOiB7IHNlYXJjaE1vZGU6IFwic3RvcmVcIiB8IFwiY2x1c3RlclwiIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvZ2V0U3RvcmVPckNsdXN0ZXJMaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBiYXRjaEZpbmRSZXBsYWNlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS9iYXRjaEZpbmRSZXBsYWNlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhcHByb3ZlUmVwbGFjZShkYXRhOiB7XHJcbiAgICBmaW5kUmVwbGFjZUlkOiBzdHJpbmc7XHJcbiAgICBzdG9yZXM/OiBhbnlbXTtcclxuICAgIHNjaGVkdWxlPzogYm9vbGVhbjtcclxuICAgIHNjaGVkdWxlRGF0ZT86IHN0cmluZyB8IG51bGw7XHJcbiAgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS9hcHByb3ZlUmVwbGFjZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQmF0Y2hQcm9ncmVzcyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvdXBkYXRlQmF0Y2hQcm9ncmVzc2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsRmluZFJlcGxhY2UoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0FJL2NhbmNlbEZpbmRSZXBsYWNlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVGaW5kUmVwbGFjZUFpKGRhdGE6IHsgaWQ6IHN0cmluZyB9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0FJL2RlbGV0ZUZpbmRSZXBsYWNlQWlgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJldm9rZUZpbmRSZXBsYWNlKGRhdGE6IHsgZmluZFJlcGxhY2VJZDogc3RyaW5nIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvcmV2b2tlRmluZFJlcGxhY2VgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVN0b3JlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVBcGlVcmx9L2NyZWF0ZS1zdG9yZWAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgc3BvY0VtYWlsQ2hlY2soZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUFwaVVybH0vc3BvY0VtYWlsQ2hlY2tgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUluZnJhVGlja2V0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudGlja2V0c0FwaVVybH0vaW5mcmEvY3JlYXRlVGlja2V0YCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRGb290ZmFsbERldGFpbHMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRGaXh0dXJlRm9vdGZhbGxgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFRvcFBlcmZvcm1pbmdab25lcyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2dldFRvcFBlcmZvcm1pbmdab25lc2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVFbmdhZ2VycyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZ2V0U3RvcmVFbmdhZ2Vyc2AsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVGaXh0dXJlRW5nYWdlcnMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRTdG9yZUZpeHR1cmVFbmdhZ2Vyc2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVGaXh0dXJlRm9vdGZhbGwoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRTdG9yZUZpeHR1cmVGb290ZmFsbGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gVk0gQWxsb2NhdGlvbiBFbmdpbmVcclxuICBnZXRWbVJ1bGVMaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdm1BbGxvY2F0aW9uRW5naW5lL2dldFJ1bGVMaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRWbVJ1bGVEZXRhaWxzKHJ1bGVJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3ZtQWxsb2NhdGlvbkVuZ2luZS9nZXRSdWxlRGV0YWlsc2AsXHJcbiAgICAgIHsgcGFyYW1zOiB7IHJ1bGVJZCB9IH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlVm1SdWxlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdm1BbGxvY2F0aW9uRW5naW5lL2NyZWF0ZVJ1bGVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVZtUnVsZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3ZtQWxsb2NhdGlvbkVuZ2luZS91cGRhdGVSdWxlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVWbVJ1bGUocnVsZUlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdm1BbGxvY2F0aW9uRW5naW5lL2RlbGV0ZVJ1bGUvJHtydWxlSWR9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhY3RpdmF0ZVZtUnVsZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3ZtQWxsb2NhdGlvbkVuZ2luZS9hY3RpdmF0ZVJ1bGVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRlYWN0aXZhdGVWbVJ1bGUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS92bUFsbG9jYXRpb25FbmdpbmUvZGVhY3RpdmF0ZVJ1bGVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGR1cGxpY2F0ZVZtUnVsZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3ZtQWxsb2NhdGlvbkVuZ2luZS9kdXBsaWNhdGVSdWxlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhc3NpZ25WbVJ1bGVTdG9yZXMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS92bUFsbG9jYXRpb25FbmdpbmUvYXNzaWduU3RvcmVzYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRBY3RpdmVWbVJ1bGVGb3JTdG9yZShzdG9yZUlkOiBzdHJpbmcsIGNsaWVudElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdm1BbGxvY2F0aW9uRW5naW5lL2dldEFjdGl2ZVJ1bGVGb3JTdG9yZWAsXHJcbiAgICAgIHsgcGFyYW1zOiB7IHN0b3JlSWQsIGNsaWVudElkIH0gfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlTnVtYmVyc0J5U3RvcmUoXHJcbiAgICBzdG9yZU5hbWU6IHN0cmluZyxcclxuICAgIGNsaWVudElkOiBzdHJpbmcsXHJcbiAgICB0YXNrVHlwZTogXCJmaXh0dXJlXCIgfCBcInpvbmVWZXJpZmljYXRpb25cIiA9IFwiZml4dHVyZVwiLFxyXG4gICkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS90YXNrL2dldEZpeHR1cmVOdW1iZXJzQnlTdG9yZWAsXHJcbiAgICAgIHsgcGFyYW1zOiB7IHN0b3JlTmFtZSwgY2xpZW50SWQsIHRhc2tUeXBlIH0gfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhbGxvd0VkaXRXaXRob3V0UmVtb3ZpbmdSZXNwb25zZShkYXRhOiB7XHJcbiAgICBzdG9yZU5hbWVzOiBzdHJpbmdbXTtcclxuICAgIGNsaWVudElkOiBzdHJpbmc7XHJcbiAgICB0YXNrVHlwZTogXCJmaXh0dXJlXCIgfCBcInpvbmVWZXJpZmljYXRpb25cIjtcclxuICAgIGZpeHR1cmVOdW1iZXJzPzogbnVtYmVyW107XHJcbiAgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdGFzay9hbGxvd0VkaXRXaXRob3V0UmVtb3ZpbmdSZXNwb25zZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rml4dHVyZURldGFpbHNCeVN0b3JlKHN0b3JlTmFtZTogc3RyaW5nLCBjbGllbnRJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3Rhc2svZ2V0Rml4dHVyZURldGFpbHNCeVN0b3JlYCxcclxuICAgICAgeyBwYXJhbXM6IHsgc3RvcmVOYW1lLCBjbGllbnRJZCB9IH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRml4dHVyZVR5cGUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS90YXNrL3VwZGF0ZUZpeHR1cmVUeXBlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZUZpeHR1cmVzRm9yUmVvcmRlcihzdG9yZU5hbWU6IHN0cmluZywgY2xpZW50SWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRTdG9yZUZpeHR1cmVzRm9yUmVvcmRlcmAsXHJcbiAgICAgIHsgcGFyYW1zOiB7IHN0b3JlTmFtZSwgY2xpZW50SWQgfSB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJlb3JkZXJTdG9yZUZpeHR1cmVOdW1iZXJzKGRhdGE6IHsgc3RvcmVOYW1lOiBzdHJpbmc7IGNsaWVudElkOiBzdHJpbmcgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcmVvcmRlclN0b3JlRml4dHVyZU51bWJlcnNgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUZpeHR1cmVOdW1iZXJNYW51YWwoZGF0YToge1xyXG4gICAgZml4dHVyZUlkOiBzdHJpbmc7XHJcbiAgICBmaXh0dXJlTnVtYmVyPzogbnVtYmVyO1xyXG4gICAgYXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyPzogbnVtYmVyO1xyXG4gIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3VwZGF0ZUZpeHR1cmVOdW1iZXJNYW51YWxgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVRhc2tGb3JTdG9yZXMoZGF0YToge1xyXG4gICAgc3RvcmVOYW1lczogc3RyaW5nW107XHJcbiAgICB0YXNrVHlwZTogXCJmaXh0dXJlXCIgfCBcInpvbmVWZXJpZmljYXRpb25cIjtcclxuICB9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS90YXNrL2RlbGV0ZVRhc2tGb3JTdG9yZXNgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZsb29yc1dpdGhTdGF0dXMoc3RvcmVOYW1lOiBzdHJpbmcsIGNsaWVudElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdGFzay9nZXRGbG9vcnNXaXRoU3RhdHVzYCxcclxuICAgICAgeyBwYXJhbXM6IHsgc3RvcmVOYW1lLCBjbGllbnRJZCB9IH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbW92ZVN0b3JlQnVja2V0KGRhdGE6IHtcclxuICAgIGZsb29ySWQ6IHN0cmluZztcclxuICAgIHRhcmdldFN0YXR1czogXCJkcmFmdFwiIHwgXCJhbGxvY2F0aW9uUGVuZGluZ1wiIHwgXCJjb21wbGV0ZWRcIjtcclxuICAgIGNsZWFyTGF5b3V0VGFza3M6IGJvb2xlYW47XHJcbiAgICBjbGVhckZpeHR1cmVUYXNrczogYm9vbGVhbjtcclxuICAgIGNsZWFyWm9uZVRhc2tzOiBib29sZWFuO1xyXG4gIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3Rhc2svbW92ZVN0b3JlQnVja2V0YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzd2FwRml4dHVyZVRlbXBsYXRlKGRhdGE6IHtcclxuICAgIGRhdGE6IHsgc3RvcmVOYW1lOiBzdHJpbmc7IGZpeHR1cmVOdW1iZXI6IG51bWJlcjsgdGVtcGxhdGVOYW1lOiBzdHJpbmcgfVtdO1xyXG4gIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3NjcmlwdC9zd2FwRml4dHVyZVRlbXBsYXRlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFub0RhdGFTY2hlbWEoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZ2V0UGxhbm9EYXRhU2NoZW1hYCk7XHJcbiAgfVxyXG5cclxuICBnZXRDYWRGaWxlcyhzdG9yZU5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L29uYm9hcmRQbGFuby9jYWRGaWxlc2AsIHtcclxuICAgICAgcGFyYW1zOiB7IHN0b3JlTmFtZSB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBydW5QbGFub0RhdGFRdWVyeShkYXRhOiB7XHJcbiAgICBjbGllbnRJZDogc3RyaW5nO1xyXG4gICAgc3RvcmVOYW1lczogc3RyaW5nW107XHJcbiAgICBmaWx0ZXJzOiB7IGZpZWxkOiBzdHJpbmc7IG9wZXJhdG9yOiBzdHJpbmc7IHZhbHVlOiBhbnkgfVtdO1xyXG4gICAgZmlsdGVyQ29tYmluYXRvcjogXCJBTkRcIiB8IFwiT1JcIjtcclxuICAgIHNlbGVjdGlvbk1vZGU6IFwiYWxsXCIgfCBcImZpcnN0TlwiO1xyXG4gICAgbGltaXRQZXJTdG9yZT86IG51bWJlcjtcclxuICAgIGNvbHVtbnM6IHsga2V5OiBzdHJpbmc7IGxhYmVsPzogc3RyaW5nIH1bXTtcclxuICAgIGluY2x1ZGVOb3RGb3VuZFJvd3M/OiBib29sZWFuO1xyXG4gIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcnVuUGxhbm9EYXRhUXVlcnlgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIHJ1blZtUGxhY2VtZW50UXVlcnkoZGF0YToge1xyXG4gICAgY2xpZW50SWQ6IHN0cmluZztcclxuICAgIHN0b3JlTmFtZXM6IHN0cmluZ1tdO1xyXG4gICAgdm1OYW1lOiBzdHJpbmc7XHJcbiAgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcnVuVm1QbGFjZW1lbnRRdWVyeWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gRmVhdHVyZSBhY2Nlc3Mg4oCUIGVtYWlsLWdhdGVkIHJvdXRlL3RhYiB2aXNpYmlsaXR5LiBFYWNoIHJldHVybnNcclxuICAvLyB7IGNvZGUsIGRhdGE6IHsgYWxsb3dlZCwgZW1haWwgfSwgLi4uIH07IHRoZSBVSSBicmFuY2hlcyBvbiBkYXRhLmFsbG93ZWQuXHJcbiAgLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgc2Vzc2lvbiB1c2VyIG1heSBhY2Nlc3MgRmluZCAmIFJlcGxhY2VcclxuICAgKiAgKGVtYWlsIHByZXNlbnQgaW4gcGxhbm9zdGF0aWNkYXRhcyBgYWxsb3dlZEZpbmRSZXBsYWNlVXNlcnNgKS4gKi9cclxuICBnZXRGaW5kUmVwbGFjZUFjY2VzcygpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZmVhdHVyZUFjY2Vzcy9maW5kUmVwbGFjZWAsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgc2Vzc2lvbiB1c2VyIG1heSBhY2Nlc3MgdGhlIEZpeHR1cmUgTGlicmFyeVxyXG4gICAqICAoZW1haWwgcHJlc2VudCBpbiBwbGFub3N0YXRpY2RhdGFzIGBhbGxvd2VkRml4dHVyZUxpYnJhcnlVc2Vyc2ApLiAqL1xyXG4gIGdldEZpeHR1cmVMaWJyYXJ5QWNjZXNzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9mZWF0dXJlQWNjZXNzL2ZpeHR1cmVMaWJyYXJ5YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKiogV2hldGhlciB0aGUgY3VycmVudCBzZXNzaW9uIHVzZXIgbWF5IGFjY2VzcyB0aGUgTG9va3MgZmVhdHVyZVxyXG4gICAqICAoZW1haWwgcHJlc2VudCBpbiBwbGFub3N0YXRpY2RhdGFzIGBhbGxvd2VkTG9va1VzZXJzYCkuICovXHJcbiAgZ2V0TG9va0FjY2VzcygpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZmVhdHVyZUFjY2Vzcy9sb29rc2AsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gTG9vayBQbGFubyBDb2xsZWN0aW9uc1xyXG4gIGdldExvb2tQbGFub0NvbGxlY3Rpb25MaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbG9va1BsYW5vQ29sbGVjdGlvbi9nZXRDb2xsZWN0aW9uTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9va1BsYW5vQ29sbGVjdGlvbkRldGFpbHMoY29sbGVjdGlvbklkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbG9va1BsYW5vQ29sbGVjdGlvbi9nZXRDb2xsZWN0aW9uRGV0YWlsc2AsXHJcbiAgICAgIHsgcGFyYW1zOiB7IGNvbGxlY3Rpb25JZCB9IH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqIE1CUSBidWNrZXQgLyBCcmFuZCAvIEZpeHR1cmUgSGVhZGVyIGRyb3Bkb3duIG9wdGlvbnMgKyBjb21iaW5hdGlvbnMsXHJcbiAgICogIHNlZWRlZCBpbnRvIHBsYW5vc3RhdGljZGF0YXMgKHR5cGU9J2xvb2tDb21ib09wdGlvbnMnKSBmcm9tIHRoZSBzaGVldC4gKi9cclxuICBnZXRMb29rQ29tYm9PcHRpb25zKGNsaWVudElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbG9va1BsYW5vQ29sbGVjdGlvbi9jb21ib09wdGlvbnNgLFxyXG4gICAgICB7IHBhcmFtczogeyBjbGllbnRJZCB9IH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlTG9va1BsYW5vQ29sbGVjdGlvbihkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2xvb2tQbGFub0NvbGxlY3Rpb24vY3JlYXRlQ29sbGVjdGlvbmAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTG9va1BsYW5vQ29sbGVjdGlvbihkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2xvb2tQbGFub0NvbGxlY3Rpb24vdXBkYXRlQ29sbGVjdGlvbmAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlTG9va1BsYW5vQ29sbGVjdGlvbihjb2xsZWN0aW9uSWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9sb29rUGxhbm9Db2xsZWN0aW9uL2RlbGV0ZUNvbGxlY3Rpb24vJHtjb2xsZWN0aW9uSWR9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkdXBsaWNhdGVMb29rUGxhbm9Db2xsZWN0aW9uKGNvbGxlY3Rpb25JZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9sb29rUGxhbm9Db2xsZWN0aW9uL2R1cGxpY2F0ZUNvbGxlY3Rpb25gLFxyXG4gICAgICB7IGNvbGxlY3Rpb25JZCB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=