@openziti/ziti-console-lib 0.5.0 → 0.5.1

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 (59) hide show
  1. package/assets/styles/global.scss +126 -1
  2. package/assets/styles/ziti.css +7 -0
  3. package/esm2022/lib/features/custom-tags/custom-tags.component.mjs +5 -2
  4. package/esm2022/lib/features/data-table/column-headers/table-column-default/table-column-default.component.mjs +2 -2
  5. package/esm2022/lib/features/data-table/data-table.component.mjs +7 -7
  6. package/esm2022/lib/features/data-table/data-table.service.mjs +5 -5
  7. package/esm2022/lib/features/preview-list/preview-list.component.mjs +3 -3
  8. package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +12 -9
  9. package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +1 -2
  10. package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.mjs +13 -11
  11. package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +7 -8
  12. package/esm2022/lib/features/projectable-forms/projectable-form.class.mjs +8 -1
  13. package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +83 -23
  14. package/esm2022/lib/features/projectable-forms/service/service-form.service.mjs +32 -11
  15. package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.mjs +13 -11
  16. package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +14 -12
  17. package/esm2022/lib/features/wrappers/zac-wrapper-service.class.mjs +4 -1
  18. package/esm2022/lib/features/wrappers/zac-wrapper.component.mjs +5 -4
  19. package/esm2022/lib/features/wrappers/zac-wrapper.service.mjs +3 -3
  20. package/esm2022/lib/models/config.mjs +2 -1
  21. package/esm2022/lib/models/edge-router-policy.mjs +2 -1
  22. package/esm2022/lib/models/service-edge-router-policy.mjs +2 -1
  23. package/esm2022/lib/models/service-policy.mjs +2 -1
  24. package/esm2022/lib/services/settings-service.class.mjs +2 -2
  25. package/esm2022/lib/shared/list-page-component.class.mjs +2 -2
  26. package/fesm2022/openziti-ziti-console-lib.mjs +158 -62
  27. package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
  28. package/lib/features/custom-tags/custom-tags.component.d.ts +3 -2
  29. package/lib/features/custom-tags/custom-tags.component.d.ts.map +1 -1
  30. package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +1 -1
  31. package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts +0 -1
  32. package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts.map +1 -1
  33. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts +0 -1
  34. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts.map +1 -1
  35. package/lib/features/projectable-forms/identity/identity-form.component.d.ts +0 -1
  36. package/lib/features/projectable-forms/identity/identity-form.component.d.ts.map +1 -1
  37. package/lib/features/projectable-forms/projectable-form.class.d.ts +7 -0
  38. package/lib/features/projectable-forms/projectable-form.class.d.ts.map +1 -1
  39. package/lib/features/projectable-forms/service/service-form.component.d.ts +3 -1
  40. package/lib/features/projectable-forms/service/service-form.component.d.ts.map +1 -1
  41. package/lib/features/projectable-forms/service/service-form.service.d.ts +5 -1
  42. package/lib/features/projectable-forms/service/service-form.service.d.ts.map +1 -1
  43. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts +0 -1
  44. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts.map +1 -1
  45. package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts +0 -1
  46. package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts.map +1 -1
  47. package/lib/features/wrappers/zac-wrapper-service.class.d.ts.map +1 -1
  48. package/lib/features/wrappers/zac-wrapper.component.d.ts.map +1 -1
  49. package/lib/features/wrappers/zac-wrapper.service.d.ts +1 -0
  50. package/lib/features/wrappers/zac-wrapper.service.d.ts.map +1 -1
  51. package/lib/models/config.d.ts +1 -0
  52. package/lib/models/config.d.ts.map +1 -1
  53. package/lib/models/edge-router-policy.d.ts +1 -0
  54. package/lib/models/edge-router-policy.d.ts.map +1 -1
  55. package/lib/models/service-edge-router-policy.d.ts +1 -0
  56. package/lib/models/service-edge-router-policy.d.ts.map +1 -1
  57. package/lib/models/service-policy.d.ts +1 -0
  58. package/lib/models/service-policy.d.ts.map +1 -1
  59. package/package.json +3 -3
@@ -62,7 +62,6 @@ class IdentityFormComponent extends ProjectableForm {
62
62
  this.servicesLoading = false;
63
63
  this.servicePoliciesLoading = false;
64
64
  this.authPolicies = [];
65
- this.showMore = false;
66
65
  this.formView = 'simple';
67
66
  this.enrollmentType = 'ott';
68
67
  this.enrollmentUPDB = '';
@@ -273,12 +272,12 @@ class IdentityFormComponent extends ProjectableForm {
273
272
  type: this.formData?.type?.name || this.formData?.type || '',
274
273
  appData: this.formData?.appData || '',
275
274
  isAdmin: this.formData?.isAdmin || '',
276
- roleAttributes: this.formData.roleAttributes || '',
277
- authPolicyId: this.formData.authPolicyId || '',
278
- externalId: this.formData.externalId || '',
279
- defaultHostingCost: this.formData.defaultHostingCost || '0',
280
- defaultHostingPrecedence: this.formData.defaultHostingPrecedence || 'defaultHostingPrecedence',
281
- tags: this.formData.tags || ''
275
+ roleAttributes: this.formData?.roleAttributes || '',
276
+ authPolicyId: this.formData?.authPolicyId || '',
277
+ externalId: this.formData?.externalId || '',
278
+ defaultHostingCost: this.formData?.defaultHostingCost || '0',
279
+ defaultHostingPrecedence: this.formData?.defaultHostingPrecedence || 'defaultHostingPrecedence',
280
+ tags: this.formData?.tags
282
281
  };
283
282
  if (!this.isEditing) {
284
283
  data.enrollment = this.formData.enrollment || { ott: true };
@@ -352,4 +351,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
352
351
  }], close: [{
353
352
  type: Output
354
353
  }] } });
355
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvaWRlbnRpdHkvaWRlbnRpdHktZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvaWRlbnRpdHkvaWRlbnRpdHktZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBSU4sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQWtCLE1BQU0sb0NBQW9DLENBQUM7QUFFckYsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxpQkFBaUIsRUFBa0IsTUFBTSxxQ0FBcUMsQ0FBQztBQUV2RixPQUFPLEVBQUMsMEJBQTBCLEVBQXNCLE1BQU0seUJBQXlCLENBQUM7QUFDeEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBSXRELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHbEQsTUFXYSxxQkFBc0IsU0FBUSxlQUFlO0lBOEJ4RCxZQUNxQyxlQUFnQyxFQUMxRCxHQUF3QixFQUN4QixpQkFBd0MsRUFDWCxX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TUFBTTsyQkFBQyxpQkFBaUI7OzBCQUV4QixNQUFNOzJCQUFDLDBCQUEwQjtxSEFuQzdCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgSW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQcm9qZWN0YWJsZUZvcm19IGZyb20gXCIuLi9wcm9qZWN0YWJsZS1mb3JtLmNsYXNzXCI7XG5pbXBvcnQge1NFVFRJTkdTX1NFUlZJQ0UsIFNldHRpbmdzU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3NldHRpbmdzLnNlcnZpY2VcIjtcblxuaW1wb3J0IHtpc0VtcHR5LCBpc05pbCwgZm9yT3duLCBjbG9uZURlZXAsIHNldCwgdW5zZXR9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1pJVElfREFUQV9TRVJWSUNFLCBaaXRpRGF0YVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy96aXRpLWRhdGEuc2VydmljZVwiO1xuaW1wb3J0IHtHcm93bGVyU2VydmljZX0gZnJvbSBcIi4uLy4uL21lc3NhZ2luZy9ncm93bGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7SURFTlRJVFlfRVhURU5TSU9OX1NFUlZJQ0UsIElkZW50aXR5Rm9ybVNlcnZpY2V9IGZyb20gJy4vaWRlbnRpdHktZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7TWF0RGlhbG9nUmVmfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XG5pbXBvcnQge0lkZW50aXRpZXNQYWdlU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3BhZ2VzL2lkZW50aXRpZXMvaWRlbnRpdGllcy1wYWdlLnNlcnZpY2VcIjtcbmltcG9ydCB7RXh0ZW5zaW9uU2VydmljZX0gZnJvbSBcIi4uLy4uL2V4dGVuZGFibGUvZXh0ZW5zaW9ucy1ub29wLnNlcnZpY2VcIjtcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHtJZGVudGl0eX0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9pZGVudGl0eVwiO1xuaW1wb3J0IHtMb2NhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItaWRlbnRpdHktZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9pZGVudGl0eS1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaWRlbnRpdHktZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNYXREaWFsb2dSZWYsXG4gICAgICB1c2VWYWx1ZToge31cbiAgICB9XG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIElkZW50aXR5Rm9ybUNvbXBvbmVudCBleHRlbmRzIFByb2plY3RhYmxlRm9ybSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgZm9ybURhdGE6IGFueSA9IHt9O1xuICBASW5wdXQoKSBpZGVudGl0eVJvbGVBdHRyaWJ1dGVzOiBhbnlbXSA9IFtdO1xuICBAT3V0cHV0KCkgY2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgb3ZlcnJpZGUgZW50aXR5VHlwZSA9ICdpZGVudGl0aWVzJztcbiAgb3ZlcnJpZGUgZW50aXR5Q2xhc3MgPSBJZGVudGl0eTtcblxuICBpc0VkaXRpbmcgPSBmYWxzZTtcbiAgZW5yb2xsbWVudEV4cGlyYXRpb246IGFueTtcbiAgand0OiBhbnk7XG4gIGFzc29jaWF0ZWRTZXJ2aWNlUG9saWNpZXM6IGFueSA9IFtdO1xuICBhc3NvY2lhdGVkU2VydmljZVBvbGljeU5hbWVzOiBhbnkgPSBbXTtcbiAgYXNzb2NpYXRlZFNlcnZpY2VzOiBhbnkgPSBbXTtcbiAgYXNzb2NpYXRlZFNlcnZpY2VOYW1lczogYW55ID0gW107XG4gIHNlcnZpY2VzTG9hZGluZyA9IGZhbHNlO1xuICBzZXJ2aWNlUG9saWNpZXNMb2FkaW5nID0gZmFsc2U7XG4gIGF1dGhQb2xpY2llczogYW55ID0gW107XG5cbiAgc2hvd01vcmUgPSBmYWxzZTtcbiAgZm9ybVZpZXcgPSAnc2ltcGxlJztcbiAgZW5yb2xsbWVudFR5cGUgPSAnb3R0JztcbiAgZW5yb2xsbWVudENBO1xuICBlbnJvbGxtZW50VVBEQiA9ICcnO1xuICBzZXR0aW5nczogYW55ID0ge307XG4gIHRlc3RSZXN1bHQ6IHN0cmluZyA9ICcnO1xuICB0ZXN0UmVzdWx0T3BlbiA9IGZhbHNlO1xuXG4gIGNhcyA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgQEluamVjdChTRVRUSU5HU19TRVJWSUNFKSBwdWJsaWMgc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgICBwdWJsaWMgc3ZjOiBJZGVudGl0eUZvcm1TZXJ2aWNlLFxuICAgICAgcHVibGljIGlkZW50aXRpZXNTZXJ2aWNlOiBJZGVudGl0aWVzUGFnZVNlcnZpY2UsXG4gICAgICBASW5qZWN0KFpJVElfREFUQV9TRVJWSUNFKSBvdmVycmlkZSB6aXRpU2VydmljZTogWml0aURhdGFTZXJ2aWNlLFxuICAgICAgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlLFxuICAgICAgQEluamVjdChJREVOVElUWV9FWFRFTlNJT05fU0VSVklDRSkgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgIHByb3RlY3RlZCBvdmVycmlkZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgIHByb3RlY3RlZCBvdmVycmlkZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICBsb2NhdGlvbjogTG9jYXRpb25cbiAgKSB7XG4gICAgc3VwZXIoZ3Jvd2xlclNlcnZpY2UsIGV4dFNlcnZpY2UsIHppdGlTZXJ2aWNlLCByb3V0ZXIsIHJvdXRlLCBsb2NhdGlvbik7XG4gICAgdGhpcy5pZGVudGl0eVJvbGVBdHRyaWJ1dGVzID0gW107XG4gIH1cblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzQ2hhbmdlLnN1YnNjcmliZSgocmVzdWx0czphbnkpID0+IHtcbiAgICAgIHRoaXMuc2V0dGluZ3MgPSByZXN1bHRzO1xuICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgIHRoaXMubmFtZUZpZWxkSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIHRoaXMucmVzZXRUYWdzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgdGhpcy5pc0VkaXRpbmcgPSAhaXNFbXB0eSh0aGlzLmZvcm1EYXRhLmlkKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGVudGl0eVVwZGF0ZWQoKSB7XG4gICAgaWYgKHRoaXMuZm9ybURhdGEuaWQpIHtcbiAgICAgIHRoaXMuZm9ybURhdGEuYmFkZ2VzID0gW107XG4gICAgICBpZiAodGhpcy5mb3JtRGF0YS5oYXNBcGlTZXNzaW9uIHx8IHRoaXMuZm9ybURhdGEuaGFzRWRnZVJvdXRlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgdGhpcy5mb3JtRGF0YS5iYWRnZXMucHVzaCh7bGFiZWw6ICdPbmxpbmUnLCBjbGFzczogJ29ubGluZScsIGNpcmNsZTogJ3RydWUnfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZvcm1EYXRhLmJhZGdlcy5wdXNoKHtsYWJlbDogJ09mZmxpbmUnLCBjbGFzczogJ29mZmxpbmUnLCBjaXJjbGU6ICdmYWxzZSd9KTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZvcm1EYXRhLmVucm9sbG1lbnQ/Lm90dCkge1xuICAgICAgICB0aGlzLmZvcm1EYXRhLmJhZGdlcy5wdXNoKHtsYWJlbDogJ1VucmVnaXN0ZXJlZCcsIGNsYXNzOiAndW5yZWcnfSk7XG4gICAgICB9XG4gICAgICB0aGlzLmp3dCA9IHRoaXMuaWRlbnRpdGllc1NlcnZpY2UuZ2V0SldUKHRoaXMuZm9ybURhdGEpO1xuICAgICAgdGhpcy5lbnJvbGxtZW50RXhwaXJhdGlvbiA9IHRoaXMuaWRlbnRpdGllc1NlcnZpY2UuZ2V0RW5yb2xsbWVudEV4cGlyYXRpb24odGhpcy5mb3JtRGF0YSk7XG4gICAgfVxuICAgIHRoaXMuaW5pdEVucm9sbG1lbnRUeXBlKCk7XG4gICAgdGhpcy5nZXRJZGVudGl0eVJvbGVBdHRyaWJ1dGVzKCk7XG4gICAgdGhpcy5nZXRBc3NvY2lhdGVkU2VydmljZXMoKTtcbiAgICB0aGlzLmdldEFzc29jaWF0ZWRTZXJ2aWNlUG9saWNpZXMoKTtcbiAgICB0aGlzLmdldEF1dGhQb2xpY2llcygpO1xuICAgIHRoaXMuZ2V0Q2VydGlmaWNhdGVBdXRob3JpdGllcygpO1xuICAgIHRoaXMubG9hZFRhZ3MoKTtcbiAgICB1bnNldCh0aGlzLmZvcm1EYXRhLCAnX2xpbmtzJyk7XG4gICAgdGhpcy5pbml0RGF0YSA9IGNsb25lRGVlcCh0aGlzLmZvcm1EYXRhKTtcbiAgICB0aGlzLmV4dFNlcnZpY2UudXBkYXRlRm9ybURhdGEodGhpcy5mb3JtRGF0YSk7XG4gIH1cblxuICByZWZyZXNoSWRlbnRpdHkoKSB7XG4gICAgdGhpcy5zdmMucmVmcmVzaElkZW50aXR5KHRoaXMuZm9ybURhdGEuaWQpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgIHRoaXMuZm9ybURhdGEgPSByZXN1bHQuZGF0YTtcbiAgICAgIHRoaXMuaW5pdERhdGEgPSBjbG9uZURlZXAodGhpcy5mb3JtRGF0YSk7XG4gICAgICB0aGlzLmVucm9sbG1lbnRFeHBpcmF0aW9uID0gdGhpcy5pZGVudGl0aWVzU2VydmljZS5nZXRFbnJvbGxtZW50RXhwaXJhdGlvbih0aGlzLmZvcm1EYXRhKTtcbiAgICAgIHRoaXMuand0ID0gdGhpcy5pZGVudGl0aWVzU2VydmljZS5nZXRKV1QodGhpcy5mb3JtRGF0YSk7XG4gICAgICB0aGlzLmV4dFNlcnZpY2UudXBkYXRlRm9ybURhdGEodGhpcy5mb3JtRGF0YSk7XG4gICAgfSlcbiAgfVxuXG4gIGluaXRFbnJvbGxtZW50VHlwZSgpIHtcbiAgICBpZiAodGhpcy5mb3JtRGF0YT8uZW5yb2xsbWVudD8ub3R0KSB7XG4gICAgICB0aGlzLmVucm9sbG1lbnRUeXBlID0gJ290dCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZvcm1EYXRhPy5lbnJvbGxtZW50Py51cGRiKSB7XG4gICAgICB0aGlzLmVucm9sbG1lbnRUeXBlID0gJ3VwZGInO1xuICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtRGF0YT8uZW5yb2xsbWVudD8ub3R0Y2EpIHtcbiAgICAgIHRoaXMuZW5yb2xsbWVudFR5cGUgPSAnQ0EnO1xuICAgIH1cbiAgfVxuXG4gIGdldElkZW50aXR5Um9sZUF0dHJpYnV0ZXMoKSB7XG4gICAgICB0aGlzLmdldFJvbGVBdHRyaWJ1dGVzKCdpZGVudGl0eS1yb2xlLWF0dHJpYnV0ZXMnKS50aGVuKChhdHRyaWJ1dGVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5pZGVudGl0eVJvbGVBdHRyaWJ1dGVzID0gYXR0cmlidXRlcztcbiAgICAgIH0pO1xuICB9XG5cbiAgZ2V0QXNzb2NpYXRlZFNlcnZpY2VzKCkge1xuICAgIHRoaXMueml0aVNlcnZpY2UuZ2V0U3ViZGF0YSgnaWRlbnRpdGllcycsIHRoaXMuZm9ybURhdGEuaWQsICdzZXJ2aWNlcycpLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlcyA9IHJlc3VsdC5kYXRhO1xuICAgICAgdGhpcy5hc3NvY2lhdGVkU2VydmljZU5hbWVzID0gdGhpcy5hc3NvY2lhdGVkU2VydmljZXMubWFwKChzdmMpID0+IHtcbiAgICAgICAgcmV0dXJuIHN2Yy5uYW1lO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRBc3NvY2lhdGVkU2VydmljZVBvbGljaWVzKCkge1xuICAgIHRoaXMueml0aVNlcnZpY2UuZ2V0U3ViZGF0YSgnaWRlbnRpdGllcycsIHRoaXMuZm9ybURhdGEuaWQsICdzZXJ2aWNlLXBvbGljaWVzJykudGhlbigocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuYXNzb2NpYXRlZFNlcnZpY2VQb2xpY2llcyA9IHJlc3VsdC5kYXRhO1xuICAgICAgdGhpcy5hc3NvY2lhdGVkU2VydmljZVBvbGljeU5hbWVzID0gdGhpcy5hc3NvY2lhdGVkU2VydmljZVBvbGljaWVzLm1hcCgocG9saWN5KSA9PiB7XG4gICAgICAgIHJldHVybiBwb2xpY3kubmFtZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q2VydGlmaWNhdGVBdXRob3JpdGllcygpIHtcbiAgICBjb25zdCBwYWdpbmcgPSB7XG4gICAgICBmaWx0ZXI6IFwiXCIsXG4gICAgICBub1NlYXJjaDogdHJ1ZSxcbiAgICAgIG9yZGVyOiBcImFzY1wiLFxuICAgICAgcGFnZTogMSxcbiAgICAgIHNlYXJjaE9uOiBcIm5hbWVcIixcbiAgICAgIHNvcnQ6IFwibmFtZVwiLFxuICAgICAgdG90YWw6IDEwMFxuICAgIH1cbiAgICB0aGlzLnppdGlTZXJ2aWNlLmdldCgnY2FzJywgcGFnaW5nLCBbXSkudGhlbigocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuY2FzID0gWy4uLnJlc3VsdC5kYXRhXTtcbiAgICAgIGlmICh0aGlzLmNhcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuZW5yb2xsbWVudENBID0gdGhpcy5jYXNbMF0uaWQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRBdXRoUG9saWNpZXMoKSB7XG4gICAgY29uc3QgcGFnaW5nID0ge1xuICAgICAgZmlsdGVyOiBcIlwiLFxuICAgICAgbm9TZWFyY2g6IHRydWUsXG4gICAgICBvcmRlcjogXCJhc2NcIixcbiAgICAgIHBhZ2U6IDEsXG4gICAgICBzZWFyY2hPbjogXCJuYW1lXCIsXG4gICAgICBzb3J0OiBcIm5hbWVcIixcbiAgICAgIHRvdGFsOiAxMDBcbiAgICB9XG4gICAgdGhpcy56aXRpU2VydmljZS5nZXQoJ2F1dGgtcG9saWNpZXMnLCBwYWdpbmcsIFtdKS50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy5hdXRoUG9saWNpZXMgPSBbLi4ucmVzdWx0LmRhdGFdO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGhhc0F1dGhlbnRpY2F0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpdGllc1NlcnZpY2UuaGFzQXV0aGVudGljYXRvcih0aGlzLmZvcm1EYXRhKTtcbiAgfVxuXG4gIGdldCBoYXNFbnJvbG1lbnRUb2tlbigpIHtcbiAgICByZXR1cm4gdGhpcy5pZGVudGl0aWVzU2VydmljZS5oYXNFbnJvbG1lbnRUb2tlbih0aGlzLmZvcm1EYXRhKTtcbiAgfVxuXG4gIGdldCBqd3RFeHBpcmVkKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGhlYWRlckFjdGlvblJlcXVlc3RlZChhY3Rpb24pIHtcbiAgICBzd2l0Y2goYWN0aW9uLm5hbWUpIHtcbiAgICAgIGNhc2UgJ3NhdmUnOlxuICAgICAgICB0aGlzLnNhdmUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjbG9zZSc6XG4gICAgICAgIHRoaXMuY2xvc2VGb3JtKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9nZ2xlLXZpZXcnOlxuICAgICAgICB0aGlzLmZvcm1WaWV3ID0gYWN0aW9uLmRhdGE7XG4gICAgICAgIHRoaXMucmVzZXRUYWdzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUVucm9sbG1lbnQoKSB7XG4gICAgc3dpdGNoICh0aGlzLmVucm9sbG1lbnRUeXBlKSB7XG4gICAgICBjYXNlICdvdHQnOlxuICAgICAgICB0aGlzLmZvcm1EYXRhLmVucm9sbG1lbnQgPSB7b3R0OiB0cnVlfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NBJzpcbiAgICAgICAgdGhpcy5mb3JtRGF0YS5lbnJvbGxtZW50ID0ge290dGNhOiB0aGlzLmVucm9sbG1lbnRDQX07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndXBkYic6XG4gICAgICAgIHRoaXMuZm9ybURhdGEuZW5yb2xsbWVudCA9IHt1cGRiOiB0aGlzLmVucm9sbG1lbnRVUERCfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmZvcm1EYXRhLmVucm9sbG1lbnQgPSB7b3R0OiB0cnVlfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzYXZlKGV2ZW50Pykge1xuICAgIHRoaXMuZm9ybURhdGEubmFtZSA9IHRoaXMuZm9ybURhdGEubmFtZS50cmltKCk7XG4gICAgaWYoIXRoaXMudmFsaWRhdGUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0YWdWYWxzID0gdGhpcy5nZXRUYWdWYWx1ZXMoKTtcbiAgICBpZiAoIWlzRW1wdHkodGFnVmFscykpIHtcbiAgICAgIGZvck93bih0YWdWYWxzLCAodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICB0aGlzLmZvcm1EYXRhLnRhZ3Nba2V5XSA9IHZhbHVlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnN2Yy5zYXZlKHRoaXMuZm9ybURhdGEpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNNb2RhbCkge1xuICAgICAgICB0aGlzLmNsb3NlTW9kYWwodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW5pdERhdGEgPSB0aGlzLmZvcm1EYXRhO1xuICAgICAgdGhpcy5fZGF0YUNoYW5nZSA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXR1cm5Ub0xpc3RQYWdlKCk7XG4gICAgfSkuZmluYWxseSgoKSA9PiB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhpcy5lcnJvcnMgPSB7fTtcbiAgICBpZiAoaXNFbXB0eSh0aGlzLmZvcm1EYXRhLm5hbWUpKSB7XG4gICAgICB0aGlzLmVycm9yc1snbmFtZSddID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZW5yb2xsbWVudFR5cGUgPT09ICdDQScgJiYgKGlzRW1wdHkodGhpcy5lbnJvbGxtZW50Q0EpIHx8IGlzTmlsKHRoaXMuZW5yb2xsbWVudENBKSkpIHtcbiAgICAgIHRoaXMuZXJyb3JzWydlbnJvbGxtZW50Q0EnXSA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLmVucm9sbG1lbnRUeXBlID09PSAndXBkYicgJiYgKGlzRW1wdHkodGhpcy5lbnJvbGxtZW50VVBEQikgfHwgaXNOaWwodGhpcy5lbnJvbGxtZW50VVBEQikpKSB7XG4gICAgICB0aGlzLmVycm9yc1snZW5yb2xsbWVudFVQREInXSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBpc0VtcHR5KHRoaXMuZXJyb3JzKTtcbiAgfVxuXG4gIGdldCBlbnJvbGxtZW50VHlwZVRpdGxlKCkge1xuICAgIHJldHVybiB0aGlzLmVucm9sbG1lbnRUeXBlID09PSAnQ0EnID8gJ0NFUlRJRklDQVRFIEFVVEhPUklUWScgOiAodGhpcy5lbnJvbGxtZW50VHlwZSA9PT0gJ3VwZGInICYmICF0aGlzLmlzRWRpdGluZykgPyAnVVBEQiBVU0VSTkFNRScgOiB1bmRlZmluZWQ7XG4gIH1cbiAgZ2V0IGFwaUNhbGxVUkwoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Muc2VsZWN0ZWRFZGdlQ29udHJvbGxlciArICcvZWRnZS9tYW5hZ2VtZW50L3YxL2lkZW50aXRpZXMnICsgKHRoaXMuZm9ybURhdGEuaWQgPyBgLyR7dGhpcy5mb3JtRGF0YS5pZH1gIDogJycpO1xuICB9XG5cbiAgZ2V0IGFwaURhdGEoKSB7XG4gICAgY29uc3QgZGF0YTogYW55ID0ge1xuICAgICAgbmFtZTogdGhpcy5mb3JtRGF0YT8ubmFtZSB8fCAnJyxcbiAgICAgIHR5cGU6IHRoaXMuZm9ybURhdGE/LnR5cGU/Lm5hbWUgfHwgdGhpcy5mb3JtRGF0YT8udHlwZSB8fCAnJyxcbiAgICAgIGFwcERhdGE6IHRoaXMuZm9ybURhdGE/LmFwcERhdGEgfHwgJycsXG4gICAgICBpc0FkbWluOiB0aGlzLmZvcm1EYXRhPy5pc0FkbWluIHx8ICcnLFxuICAgICAgcm9sZUF0dHJpYnV0ZXM6IHRoaXMuZm9ybURhdGEucm9sZUF0dHJpYnV0ZXMgfHwgJycsXG4gICAgICBhdXRoUG9saWN5SWQ6IHRoaXMuZm9ybURhdGEuYXV0aFBvbGljeUlkIHx8ICcnLFxuICAgICAgZXh0ZXJuYWxJZDogdGhpcy5mb3JtRGF0YS5leHRlcm5hbElkIHx8ICcnLFxuICAgICAgZGVmYXVsdEhvc3RpbmdDb3N0OiB0aGlzLmZvcm1EYXRhLmRlZmF1bHRIb3N0aW5nQ29zdCB8fCAnMCcsXG4gICAgICBkZWZhdWx0SG9zdGluZ1ByZWNlZGVuY2U6IHRoaXMuZm9ybURhdGEuZGVmYXVsdEhvc3RpbmdQcmVjZWRlbmNlIHx8ICdkZWZhdWx0SG9zdGluZ1ByZWNlZGVuY2UnLFxuICAgICAgdGFnczogdGhpcy5mb3JtRGF0YS50YWdzIHx8ICcnXG4gICAgfTtcbiAgICBpZiAoIXRoaXMuaXNFZGl0aW5nKSB7XG4gICAgICBkYXRhLmVucm9sbG1lbnQgPSB0aGlzLmZvcm1EYXRhLmVucm9sbG1lbnQgfHwge290dDogdHJ1ZX07XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgX2FwaURhdGEgPSB7fTtcbiAgc2V0IGFwaURhdGEoZGF0YSkge1xuICAgIHRoaXMuX2FwaURhdGEgPSBkYXRhO1xuICB9XG5cbiAgc2VydmljZVNlbGVjdGVkKHNlcnZpY2VOYW1lKSB7XG4gICAgbGV0IHNlcnZpY2U6IGFueSA9IHt9O1xuICAgIHRoaXMuYXNzb2NpYXRlZFNlcnZpY2VzLmZvckVhY2goKHN2YykgPT4ge1xuICAgICAgaWYoc3ZjLm5hbWUgPT09IHNlcnZpY2VOYW1lKSB7XG4gICAgICAgIHNlcnZpY2UgPSBzdmM7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zdmMudGVzdFNlcnZpY2UodGhpcy5mb3JtRGF0YS5pZCwgc2VydmljZS5pZCkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICB0aGlzLnRlc3RSZXN1bHQgPSByZXN1bHQ7XG4gICAgICB0aGlzLnRlc3RSZXN1bHRPcGVuID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHRvZ2dsZUlzQWRtaW4oKSB7XG4gICAgdGhpcy5mb3JtRGF0YS5pc0FkbWluID0gIXRoaXMuZm9ybURhdGEuaXNBZG1pbjtcbiAgfVxuXG4gIGdldCBpZGVudGl0eVR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNFZGl0aW5nID8gdGhpcy5mb3JtRGF0YS50eXBlLm5hbWUgOiB0aGlzLmZvcm1EYXRhLnR5cGU7XG4gIH1cblxuICBzZXQgaWRlbnRpdHlUeXBlKHR5cGUpIHtcbiAgICBpZiAodGhpcy5pc0VkaXRpbmcpIHtcbiAgICAgIHNldCh0aGlzLmZvcm1EYXRhLCAndHlwZS5uYW1lJywgdHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldCh0aGlzLmZvcm1EYXRhLCAndHlwZScsIHR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlVGVzdFJlc3VsdCgpIHtcbiAgICB0aGlzLnRlc3RSZXN1bHRPcGVuID0gZmFsc2U7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInByb2plY3RhYmxlLWZvcm0td3JhcHBlclwiXG4gICAgIChrZXl1cC5lbnRlcik9XCJzYXZlKCRldmVudClcIlxuICAgICAoa2V5dXAuZXNjYXBlKT1cImNsb3NlTW9kYWwoZmFsc2UpXCJcbj5cbiAgICA8bGliLWZvcm0taGVhZGVyXG4gICAgICAgICAgICBbZGF0YV09XCJmb3JtRGF0YVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiZm9ybURhdGEuaWQgPyAnRWRpdCBJZGVudGl0eTogJyA6ICdDcmVhdGUgTmV3IElkZW50aXR5J1wiXG4gICAgICAgICAgICBbbW9yZUFjdGlvbnNdPVwibW9yZUFjdGlvbnNcIlxuICAgICAgICAgICAgKGFjdGlvblJlcXVlc3RlZCk9XCJoZWFkZXJBY3Rpb25SZXF1ZXN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbKGZvcm1WaWV3KV09XCJmb3JtVmlld1wiXG4gICAgPjwvbGliLWZvcm0taGVhZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJpZGVudGl0eS1mb3JtLWNvbnRhaW5lciBwcm9qZWN0YWJsZS1mb3JtLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvamVjdGFibGUtZm9ybS1tYWluLWNvbHVtbiBmb3JtLWdyb3VwLXJvd1wiICpuZ0lmPVwiZm9ybVZpZXcgPT09ICdzaW1wbGUnXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1jb2x1bW4gdGhyZWUtZmlmdGhzXCI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lciBbdGl0bGVdPVwiJ0lkZW50aXR5IE5hbWUnXCIgW2xhYmVsXT1cIidSRVFVSVJFRCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJOYW1lIHRoaXMgaWRlbnRpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2Vycm9yOiBlcnJvcnNbJ25hbWUnXX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtRGF0YS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9mb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgI25hbWVGaWVsZElucHV0XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidTZWxlY3Qgb3IgY3JlYXRlIElkZW50aXR5IGF0dHJpYnV0ZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInT1BUSU9OQUwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50U3R5bGVdPVwiJ3otaW5kZXg6IDk5OTk5OTk5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiJ0F0dHJpYnV0ZXMgYXJlIHRhZ3MgYXBwbGllZCB0byBhbiByZXNvdXJjZS4gQXBwbHkgdGhlIHNhbWUgdGFnIHRvIG90aGVyIElkZW50aXRpZXMgdG8gZm9ybSBhIGdyb3VwIG9mIElkZW50aXRpZXMuJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGliLXRhZy1zZWxlY3RvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoc2VsZWN0ZWRSb2xlQXR0cmlidXRlcyldPVwiZm9ybURhdGEucm9sZUF0dHJpYnV0ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdmFpbGFibGVSb2xlQXR0cmlidXRlc109XCJpZGVudGl0eVJvbGVBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0FkZCBhdHRyaWJ1dGVzIHRvIGdyb3VwIElkZW50aXRpZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbGliLXRhZy1zZWxlY3Rvcj5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0F1dGggUG9saWN5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09QVElPTkFMJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiJ0F1dGhlbnRpY2F0aW9uIFBvbGljaWVzIHJlc3RyaWN0IHRoZSBhdXRoZW50aWNhdGlvbiBtZXRob2RzIGF2YWlsYWJsZSB0byBpZGVudGl0aWVzLidcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9ybURhdGEuYXV0aFBvbGljeUlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImF1dGhQb2xpY3lJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBhbiBBdXRoZW50aWNhdGlvbiBQb2xpY3k8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcG9saWN5IG9mIGF1dGhQb2xpY2llc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInBvbGljeS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcG9saWN5Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1maWVsZC1pbnB1dFwiIHBsYWNlaG9sZGVyPVwiT3B0aW9uYWwgRXh0ZXJuYWwgSURcIiBbKG5nTW9kZWwpXT1cImZvcm1EYXRhLmV4dGVybmFsSWRcIi8+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLXRvZ2dsZSBbKHRvZ2dsZU9uKV09XCJzaG93TW9yZVwiICh0b2dnbGVPbkNoYW5nZSk9XCJzaG93TW9yZUNoYW5nZWQoJGV2ZW50KVwiIHN0eWxlPVwibWFyZ2luOiAwcHggMTBweFwiPjwvbGliLWZvcm0tZmllbGQtdG9nZ2xlPlxuICAgICAgICAgICAgICAgIDxkaXYgW2hpZGRlbl09XCIhc2hvd01vcmVcIiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInRW5yb2xsbWVudCBUeXBlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGUyXT1cImVucm9sbG1lbnRUeXBlVGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xheW91dF09XCIncm93J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtYWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJFbnJvbGxtZW50VHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6IGlzRWRpdGluZ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW5yb2xsbWVudFR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRW5yb2xsbWVudCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwib3R0XCI+T25lIFRpbWUgVG9rZW48L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQ0FcIj5DZXJ0aWZpY2F0ZSBBdXRob3JpdHk8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwidXBkYlwiPlVQREI8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiQ2VydEF1dGhvcml0aWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZW5yb2xsbWVudFR5cGUgPT09ICdDQSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntkaXNhYmxlZDogaXNFZGl0aW5nfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbnJvbGxtZW50Q0FcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntlcnJvcjogZXJyb3JzLmVucm9sbG1lbnRDQX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRW5yb2xsbWVudCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjYSBvZiBjYXNcIiBbdmFsdWVdPVwiY2EuaWRcIj57e2NhLm5hbWV9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVucm9sbG1lbnRUeXBlID09PSAndXBkYicgJiYgIWlzRWRpdGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2Rpc2FibGVkOiBpc0VkaXRpbmcsIGVycm9yOiBlcnJvcnMuZW5yb2xsbWVudFVQREJ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVucm9sbG1lbnRVUERCXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwidXBkYXRlRW5yb2xsbWVudCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiVVBEQk5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCI1MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgYSBuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FkbWluJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xheW91dF09XCIncm93J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWFkdmFuY2VkIGlzLWFkbWluLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctY29udGFpbmVyIHRvZ2dsZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZy1jb250YWluZXItbGFiZWxcIj5JUyBBRE1JTjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUlzQWRtaW4oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBvbjogZm9ybURhdGEuaXNBZG1pbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtoaWRkZW5dPVwiIWZvcm1EYXRhLmlzQWRtaW5cIiBjbGFzcz1cIm9uLWxhYmVsXCI+WUVTPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2hpZGRlbl09XCJmb3JtRGF0YS5pc0FkbWluXCIgY2xhc3M9XCJvZmYtbGFiZWxcIj5OTzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzd2l0Y2hcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0hvc3RpbmcgQ29zdCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZTJdPVwiJ1ByZWNlZGVuY2UnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGF5b3V0XT1cIidyb3cnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtYWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWZpZWxkLWlucHV0XCIgWyhuZ01vZGVsKV09XCJmb3JtRGF0YS5kZWZhdWx0SG9zdGluZ0Nvc3RcIiB0eXBlPVwibnVtYmVyXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9ybURhdGEuZGVmYXVsdEhvc3RpbmdQcmVjZWRlbmNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImhvc3RpbmdQcmVjZWRlbmNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkZWZhdWx0XCI+RGVmYXVsdDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJyZXF1aXJlZFwiPlJlcXVpcmVkPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImZhaWxlZFwiPkZhaWxlZDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWdFbGVtZW50IG9mIHRhZ0VsZW1lbnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwidGFnRWxlbWVudC5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidPUFRJT05BTCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1hZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJ0YWdFbGVtZW50LmNvbnRlbnQgfCBzYWZlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidDdXN0b20gVGFncydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInT1BUSU9OQUwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtYWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWhpZGVUYWdzXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1jdXN0b20tdGFncyBbKHRhZ3MpXT1cImZvcm1EYXRhLnRhZ3NcIj48L2xpYi1jdXN0b20tdGFncz5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FwcCBEYXRhJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidPUFRJT05BTCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1hZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItanNvbi12aWV3IFsoZGF0YSldPVwiZm9ybURhdGEuYXBwRGF0YVwiPjwvbGliLWpzb24tdmlldz5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwLWNvbHVtbiB0d28tZmlmdGhzXCI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNFbnJvbG1lbnRUb2tlbiB8fCBoYXNBdXRoZW50aWNhdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SGVhZGVyXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItcXItY29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkZW50aXR5XT1cImZvcm1EYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtqd3RdPVwiand0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtleHBpcmF0aW9uXT1cImVucm9sbG1lbnRFeHBpcmF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdXRoZW50aWNhdG9yc109XCJmb3JtRGF0YS5hdXRoZW50aWNhdG9yc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCInaWRlbnRpdHknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjYW5FeHBhbmRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoZG9SZWZyZXNoKT1cInJlZnJlc2hJZGVudGl0eSgpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbGliLXFyLWNvZGU+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmb3JtRGF0YS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0Fzc29jaWF0ZWQgU2VydmljZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb3VudF09XCJhc3NvY2lhdGVkU2VydmljZXMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCInaGlkZS1vdmVyZmxvdydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIidQcmV2aWV3IGxpc3Qgb2YgYWxsIHNlcnZpY2VzIHRoYXQgdGhpcyBJZGVudGl0eSBpcyBhc3NvY2lhdGVkIHdpdGguJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGliLXByZXZpZXctbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW1TZWxlY3RlZCk9XCJzZXJ2aWNlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xpY2thYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzTG9hZGluZ109XCJzZXJ2aWNlc0xvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FsbE5hbWVzXT1cImFzc29jaWF0ZWRTZXJ2aWNlTmFtZXNcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItcHJldmlldy1saXN0PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ZjLXRlc3QtcmVzdWx0XCIgW25nQ2xhc3NdPVwieyd0ZXN0LXJlc3VsdC1vcGVuJzogdGVzdFJlc3VsdE9wZW59XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xvc2UgaWNvbi1jbG9zZVwiIChjbGljayk9XCJjbG9zZVRlc3RSZXN1bHQoKVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1jb250YWluZXJcIiBbaW5uZXJIVE1MXT1cInRlc3RSZXN1bHRcIiA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9ybURhdGEuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBc3NvY2lhdGVkIFNlcnZpY2UgUG9saWNpZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb3VudF09XCJhc3NvY2lhdGVkU2VydmljZVBvbGljaWVzLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiJ1ByZXZpZXcgbGlzdCBvZiBhbGwgc2VydmljZSBwb2xpY2llcyB0aGF0IHRoaXMgSWRlbnRpdHkgaXMgYXNzb2NpYXRlZCB3aXRoLidcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1wcmV2aWV3LWxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtU2VsZWN0ZWQpPVwic2VydmljZVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsaWNrYWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNMb2FkaW5nXT1cInNlcnZpY2VQb2xpY2llc0xvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FsbE5hbWVzXT1cImFzc29jaWF0ZWRTZXJ2aWNlUG9saWN5TmFtZXNcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItcHJldmlldy1saXN0PlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQVBJIENhbGxzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJydcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWZpZWxkLWlucHV0XCIgW3ZhbHVlXT1cImFwaUNhbGxVUkxcIiByZWFkb25seS8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXJsLWNvcHkgaWNvbi1jb3B5IGNvcHlcIiAoY2xpY2spPVwiY29weVRvQ2xpcGJvYXJkKGFwaUNhbGxVUkwpXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bGliLWpzb24tdmlldyAqbmdJZj1cImZvcm1EYXRhXCIgWyhkYXRhKV09XCJhcGlEYXRhXCIgW3JlYWRPbmx5XT1cInRydWVcIiBbc2hvd0NvcHldPVwidHJ1ZVwiPjwvbGliLWpzb24tdmlldz5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uXCIgKm5nSWY9XCJmb3JtVmlldyA9PT0gJ3JhdydcIj5cbiAgICAgICAgICAgIDxsaWItanNvbi12aWV3ICpuZ0lmPVwiZm9ybURhdGFcIiBbKGRhdGEpXT1cImZvcm1EYXRhXCI+PC9saWItanNvbi12aWV3PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGxpYi1sb2FkaW5nLWluZGljYXRvciAqbmdJZj1cImlzTG9hZGluZ1wiIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nXCI+PC9saWItbG9hZGluZy1pbmRpY2F0b3I+Il19
354
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvaWRlbnRpdHkvaWRlbnRpdHktZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvcHJvamVjdGFibGUtZm9ybXMvaWRlbnRpdHkvaWRlbnRpdHktZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBSU4sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQWtCLE1BQU0sb0NBQW9DLENBQUM7QUFFckYsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxpQkFBaUIsRUFBa0IsTUFBTSxxQ0FBcUMsQ0FBQztBQUV2RixPQUFPLEVBQUMsMEJBQTBCLEVBQXNCLE1BQU0seUJBQXlCLENBQUM7QUFDeEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBSXRELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHbEQsTUFXYSxxQkFBc0IsU0FBUSxlQUFlO0lBNkJ4RCxZQUNxQyxlQUFnQyxFQUMxRCxHQUF3QixFQUN4QixpQkFBd0MsRUFDWCxX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LDBCQUEwQjtxSEFsQzdCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgSW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQcm9qZWN0YWJsZUZvcm19IGZyb20gXCIuLi9wcm9qZWN0YWJsZS1mb3JtLmNsYXNzXCI7XG5pbXBvcnQge1NFVFRJTkdTX1NFUlZJQ0UsIFNldHRpbmdzU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3NldHRpbmdzLnNlcnZpY2VcIjtcblxuaW1wb3J0IHtpc0VtcHR5LCBpc05pbCwgZm9yT3duLCBjbG9uZURlZXAsIHNldCwgdW5zZXR9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1pJVElfREFUQV9TRVJWSUNFLCBaaXRpRGF0YVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy96aXRpLWRhdGEuc2VydmljZVwiO1xuaW1wb3J0IHtHcm93bGVyU2VydmljZX0gZnJvbSBcIi4uLy4uL21lc3NhZ2luZy9ncm93bGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7SURFTlRJVFlfRVhURU5TSU9OX1NFUlZJQ0UsIElkZW50aXR5Rm9ybVNlcnZpY2V9IGZyb20gJy4vaWRlbnRpdHktZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7TWF0RGlhbG9nUmVmfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XG5pbXBvcnQge0lkZW50aXRpZXNQYWdlU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3BhZ2VzL2lkZW50aXRpZXMvaWRlbnRpdGllcy1wYWdlLnNlcnZpY2VcIjtcbmltcG9ydCB7RXh0ZW5zaW9uU2VydmljZX0gZnJvbSBcIi4uLy4uL2V4dGVuZGFibGUvZXh0ZW5zaW9ucy1ub29wLnNlcnZpY2VcIjtcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHtJZGVudGl0eX0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9pZGVudGl0eVwiO1xuaW1wb3J0IHtMb2NhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItaWRlbnRpdHktZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9pZGVudGl0eS1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaWRlbnRpdHktZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNYXREaWFsb2dSZWYsXG4gICAgICB1c2VWYWx1ZToge31cbiAgICB9XG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIElkZW50aXR5Rm9ybUNvbXBvbmVudCBleHRlbmRzIFByb2plY3RhYmxlRm9ybSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgZm9ybURhdGE6IGFueSA9IHt9O1xuICBASW5wdXQoKSBpZGVudGl0eVJvbGVBdHRyaWJ1dGVzOiBhbnlbXSA9IFtdO1xuICBAT3V0cHV0KCkgY2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgb3ZlcnJpZGUgZW50aXR5VHlwZSA9ICdpZGVudGl0aWVzJztcbiAgb3ZlcnJpZGUgZW50aXR5Q2xhc3MgPSBJZGVudGl0eTtcblxuICBpc0VkaXRpbmcgPSBmYWxzZTtcbiAgZW5yb2xsbWVudEV4cGlyYXRpb246IGFueTtcbiAgand0OiBhbnk7XG4gIGFzc29jaWF0ZWRTZXJ2aWNlUG9saWNpZXM6IGFueSA9IFtdO1xuICBhc3NvY2lhdGVkU2VydmljZVBvbGljeU5hbWVzOiBhbnkgPSBbXTtcbiAgYXNzb2NpYXRlZFNlcnZpY2VzOiBhbnkgPSBbXTtcbiAgYXNzb2NpYXRlZFNlcnZpY2VOYW1lczogYW55ID0gW107XG4gIHNlcnZpY2VzTG9hZGluZyA9IGZhbHNlO1xuICBzZXJ2aWNlUG9saWNpZXNMb2FkaW5nID0gZmFsc2U7XG4gIGF1dGhQb2xpY2llczogYW55ID0gW107XG5cbiAgZm9ybVZpZXcgPSAnc2ltcGxlJztcbiAgZW5yb2xsbWVudFR5cGUgPSAnb3R0JztcbiAgZW5yb2xsbWVudENBO1xuICBlbnJvbGxtZW50VVBEQiA9ICcnO1xuICBzZXR0aW5nczogYW55ID0ge307XG4gIHRlc3RSZXN1bHQ6IHN0cmluZyA9ICcnO1xuICB0ZXN0UmVzdWx0T3BlbiA9IGZhbHNlO1xuXG4gIGNhcyA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgQEluamVjdChTRVRUSU5HU19TRVJWSUNFKSBwdWJsaWMgc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgICBwdWJsaWMgc3ZjOiBJZGVudGl0eUZvcm1TZXJ2aWNlLFxuICAgICAgcHVibGljIGlkZW50aXRpZXNTZXJ2aWNlOiBJZGVudGl0aWVzUGFnZVNlcnZpY2UsXG4gICAgICBASW5qZWN0KFpJVElfREFUQV9TRVJWSUNFKSBvdmVycmlkZSB6aXRpU2VydmljZTogWml0aURhdGFTZXJ2aWNlLFxuICAgICAgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlLFxuICAgICAgQEluamVjdChJREVOVElUWV9FWFRFTlNJT05fU0VSVklDRSkgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgIHByb3RlY3RlZCBvdmVycmlkZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgIHByb3RlY3RlZCBvdmVycmlkZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICBsb2NhdGlvbjogTG9jYXRpb25cbiAgKSB7XG4gICAgc3VwZXIoZ3Jvd2xlclNlcnZpY2UsIGV4dFNlcnZpY2UsIHppdGlTZXJ2aWNlLCByb3V0ZXIsIHJvdXRlLCBsb2NhdGlvbik7XG4gICAgdGhpcy5pZGVudGl0eVJvbGVBdHRyaWJ1dGVzID0gW107XG4gIH1cblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzQ2hhbmdlLnN1YnNjcmliZSgocmVzdWx0czphbnkpID0+IHtcbiAgICAgIHRoaXMuc2V0dGluZ3MgPSByZXN1bHRzO1xuICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgIHRoaXMubmFtZUZpZWxkSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIHRoaXMucmVzZXRUYWdzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgdGhpcy5pc0VkaXRpbmcgPSAhaXNFbXB0eSh0aGlzLmZvcm1EYXRhLmlkKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGVudGl0eVVwZGF0ZWQoKSB7XG4gICAgaWYgKHRoaXMuZm9ybURhdGEuaWQpIHtcbiAgICAgIHRoaXMuZm9ybURhdGEuYmFkZ2VzID0gW107XG4gICAgICBpZiAodGhpcy5mb3JtRGF0YS5oYXNBcGlTZXNzaW9uIHx8IHRoaXMuZm9ybURhdGEuaGFzRWRnZVJvdXRlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgdGhpcy5mb3JtRGF0YS5iYWRnZXMucHVzaCh7bGFiZWw6ICdPbmxpbmUnLCBjbGFzczogJ29ubGluZScsIGNpcmNsZTogJ3RydWUnfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZvcm1EYXRhLmJhZGdlcy5wdXNoKHtsYWJlbDogJ09mZmxpbmUnLCBjbGFzczogJ29mZmxpbmUnLCBjaXJjbGU6ICdmYWxzZSd9KTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZvcm1EYXRhLmVucm9sbG1lbnQ/Lm90dCkge1xuICAgICAgICB0aGlzLmZvcm1EYXRhLmJhZGdlcy5wdXNoKHtsYWJlbDogJ1VucmVnaXN0ZXJlZCcsIGNsYXNzOiAndW5yZWcnfSk7XG4gICAgICB9XG4gICAgICB0aGlzLmp3dCA9IHRoaXMuaWRlbnRpdGllc1NlcnZpY2UuZ2V0SldUKHRoaXMuZm9ybURhdGEpO1xuICAgICAgdGhpcy5lbnJvbGxtZW50RXhwaXJhdGlvbiA9IHRoaXMuaWRlbnRpdGllc1NlcnZpY2UuZ2V0RW5yb2xsbWVudEV4cGlyYXRpb24odGhpcy5mb3JtRGF0YSk7XG4gICAgfVxuICAgIHRoaXMuaW5pdEVucm9sbG1lbnRUeXBlKCk7XG4gICAgdGhpcy5nZXRJZGVudGl0eVJvbGVBdHRyaWJ1dGVzKCk7XG4gICAgdGhpcy5nZXRBc3NvY2lhdGVkU2VydmljZXMoKTtcbiAgICB0aGlzLmdldEFzc29jaWF0ZWRTZXJ2aWNlUG9saWNpZXMoKTtcbiAgICB0aGlzLmdldEF1dGhQb2xpY2llcygpO1xuICAgIHRoaXMuZ2V0Q2VydGlmaWNhdGVBdXRob3JpdGllcygpO1xuICAgIHRoaXMubG9hZFRhZ3MoKTtcbiAgICB1bnNldCh0aGlzLmZvcm1EYXRhLCAnX2xpbmtzJyk7XG4gICAgdGhpcy5pbml0RGF0YSA9IGNsb25lRGVlcCh0aGlzLmZvcm1EYXRhKTtcbiAgICB0aGlzLmV4dFNlcnZpY2UudXBkYXRlRm9ybURhdGEodGhpcy5mb3JtRGF0YSk7XG4gIH1cblxuICByZWZyZXNoSWRlbnRpdHkoKSB7XG4gICAgdGhpcy5zdmMucmVmcmVzaElkZW50aXR5KHRoaXMuZm9ybURhdGEuaWQpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgIHRoaXMuZm9ybURhdGEgPSByZXN1bHQuZGF0YTtcbiAgICAgIHRoaXMuaW5pdERhdGEgPSBjbG9uZURlZXAodGhpcy5mb3JtRGF0YSk7XG4gICAgICB0aGlzLmVucm9sbG1lbnRFeHBpcmF0aW9uID0gdGhpcy5pZGVudGl0aWVzU2VydmljZS5nZXRFbnJvbGxtZW50RXhwaXJhdGlvbih0aGlzLmZvcm1EYXRhKTtcbiAgICAgIHRoaXMuand0ID0gdGhpcy5pZGVudGl0aWVzU2VydmljZS5nZXRKV1QodGhpcy5mb3JtRGF0YSk7XG4gICAgICB0aGlzLmV4dFNlcnZpY2UudXBkYXRlRm9ybURhdGEodGhpcy5mb3JtRGF0YSk7XG4gICAgfSlcbiAgfVxuXG4gIGluaXRFbnJvbGxtZW50VHlwZSgpIHtcbiAgICBpZiAodGhpcy5mb3JtRGF0YT8uZW5yb2xsbWVudD8ub3R0KSB7XG4gICAgICB0aGlzLmVucm9sbG1lbnRUeXBlID0gJ290dCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZvcm1EYXRhPy5lbnJvbGxtZW50Py51cGRiKSB7XG4gICAgICB0aGlzLmVucm9sbG1lbnRUeXBlID0gJ3VwZGInO1xuICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtRGF0YT8uZW5yb2xsbWVudD8ub3R0Y2EpIHtcbiAgICAgIHRoaXMuZW5yb2xsbWVudFR5cGUgPSAnQ0EnO1xuICAgIH1cbiAgfVxuXG4gIGdldElkZW50aXR5Um9sZUF0dHJpYnV0ZXMoKSB7XG4gICAgICB0aGlzLmdldFJvbGVBdHRyaWJ1dGVzKCdpZGVudGl0eS1yb2xlLWF0dHJpYnV0ZXMnKS50aGVuKChhdHRyaWJ1dGVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5pZGVudGl0eVJvbGVBdHRyaWJ1dGVzID0gYXR0cmlidXRlcztcbiAgICAgIH0pO1xuICB9XG5cbiAgZ2V0QXNzb2NpYXRlZFNlcnZpY2VzKCkge1xuICAgIHRoaXMueml0aVNlcnZpY2UuZ2V0U3ViZGF0YSgnaWRlbnRpdGllcycsIHRoaXMuZm9ybURhdGEuaWQsICdzZXJ2aWNlcycpLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICB0aGlzLmFzc29jaWF0ZWRTZXJ2aWNlcyA9IHJlc3VsdC5kYXRhO1xuICAgICAgdGhpcy5hc3NvY2lhdGVkU2VydmljZU5hbWVzID0gdGhpcy5hc3NvY2lhdGVkU2VydmljZXMubWFwKChzdmMpID0+IHtcbiAgICAgICAgcmV0dXJuIHN2Yy5uYW1lO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRBc3NvY2lhdGVkU2VydmljZVBvbGljaWVzKCkge1xuICAgIHRoaXMueml0aVNlcnZpY2UuZ2V0U3ViZGF0YSgnaWRlbnRpdGllcycsIHRoaXMuZm9ybURhdGEuaWQsICdzZXJ2aWNlLXBvbGljaWVzJykudGhlbigocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuYXNzb2NpYXRlZFNlcnZpY2VQb2xpY2llcyA9IHJlc3VsdC5kYXRhO1xuICAgICAgdGhpcy5hc3NvY2lhdGVkU2VydmljZVBvbGljeU5hbWVzID0gdGhpcy5hc3NvY2lhdGVkU2VydmljZVBvbGljaWVzLm1hcCgocG9saWN5KSA9PiB7XG4gICAgICAgIHJldHVybiBwb2xpY3kubmFtZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q2VydGlmaWNhdGVBdXRob3JpdGllcygpIHtcbiAgICBjb25zdCBwYWdpbmcgPSB7XG4gICAgICBmaWx0ZXI6IFwiXCIsXG4gICAgICBub1NlYXJjaDogdHJ1ZSxcbiAgICAgIG9yZGVyOiBcImFzY1wiLFxuICAgICAgcGFnZTogMSxcbiAgICAgIHNlYXJjaE9uOiBcIm5hbWVcIixcbiAgICAgIHNvcnQ6IFwibmFtZVwiLFxuICAgICAgdG90YWw6IDEwMFxuICAgIH1cbiAgICB0aGlzLnppdGlTZXJ2aWNlLmdldCgnY2FzJywgcGFnaW5nLCBbXSkudGhlbigocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuY2FzID0gWy4uLnJlc3VsdC5kYXRhXTtcbiAgICAgIGlmICh0aGlzLmNhcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuZW5yb2xsbWVudENBID0gdGhpcy5jYXNbMF0uaWQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRBdXRoUG9saWNpZXMoKSB7XG4gICAgY29uc3QgcGFnaW5nID0ge1xuICAgICAgZmlsdGVyOiBcIlwiLFxuICAgICAgbm9TZWFyY2g6IHRydWUsXG4gICAgICBvcmRlcjogXCJhc2NcIixcbiAgICAgIHBhZ2U6IDEsXG4gICAgICBzZWFyY2hPbjogXCJuYW1lXCIsXG4gICAgICBzb3J0OiBcIm5hbWVcIixcbiAgICAgIHRvdGFsOiAxMDBcbiAgICB9XG4gICAgdGhpcy56aXRpU2VydmljZS5nZXQoJ2F1dGgtcG9saWNpZXMnLCBwYWdpbmcsIFtdKS50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy5hdXRoUG9saWNpZXMgPSBbLi4ucmVzdWx0LmRhdGFdO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGhhc0F1dGhlbnRpY2F0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpdGllc1NlcnZpY2UuaGFzQXV0aGVudGljYXRvcih0aGlzLmZvcm1EYXRhKTtcbiAgfVxuXG4gIGdldCBoYXNFbnJvbG1lbnRUb2tlbigpIHtcbiAgICByZXR1cm4gdGhpcy5pZGVudGl0aWVzU2VydmljZS5oYXNFbnJvbG1lbnRUb2tlbih0aGlzLmZvcm1EYXRhKTtcbiAgfVxuXG4gIGdldCBqd3RFeHBpcmVkKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGhlYWRlckFjdGlvblJlcXVlc3RlZChhY3Rpb24pIHtcbiAgICBzd2l0Y2goYWN0aW9uLm5hbWUpIHtcbiAgICAgIGNhc2UgJ3NhdmUnOlxuICAgICAgICB0aGlzLnNhdmUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjbG9zZSc6XG4gICAgICAgIHRoaXMuY2xvc2VGb3JtKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9nZ2xlLXZpZXcnOlxuICAgICAgICB0aGlzLmZvcm1WaWV3ID0gYWN0aW9uLmRhdGE7XG4gICAgICAgIHRoaXMucmVzZXRUYWdzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUVucm9sbG1lbnQoKSB7XG4gICAgc3dpdGNoICh0aGlzLmVucm9sbG1lbnRUeXBlKSB7XG4gICAgICBjYXNlICdvdHQnOlxuICAgICAgICB0aGlzLmZvcm1EYXRhLmVucm9sbG1lbnQgPSB7b3R0OiB0cnVlfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0NBJzpcbiAgICAgICAgdGhpcy5mb3JtRGF0YS5lbnJvbGxtZW50ID0ge290dGNhOiB0aGlzLmVucm9sbG1lbnRDQX07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndXBkYic6XG4gICAgICAgIHRoaXMuZm9ybURhdGEuZW5yb2xsbWVudCA9IHt1cGRiOiB0aGlzLmVucm9sbG1lbnRVUERCfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmZvcm1EYXRhLmVucm9sbG1lbnQgPSB7b3R0OiB0cnVlfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzYXZlKGV2ZW50Pykge1xuICAgIHRoaXMuZm9ybURhdGEubmFtZSA9IHRoaXMuZm9ybURhdGEubmFtZS50cmltKCk7XG4gICAgaWYoIXRoaXMudmFsaWRhdGUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0YWdWYWxzID0gdGhpcy5nZXRUYWdWYWx1ZXMoKTtcbiAgICBpZiAoIWlzRW1wdHkodGFnVmFscykpIHtcbiAgICAgIGZvck93bih0YWdWYWxzLCAodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICB0aGlzLmZvcm1EYXRhLnRhZ3Nba2V5XSA9IHZhbHVlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnN2Yy5zYXZlKHRoaXMuZm9ybURhdGEpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNNb2RhbCkge1xuICAgICAgICB0aGlzLmNsb3NlTW9kYWwodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW5pdERhdGEgPSB0aGlzLmZvcm1EYXRhO1xuICAgICAgdGhpcy5fZGF0YUNoYW5nZSA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXR1cm5Ub0xpc3RQYWdlKCk7XG4gICAgfSkuZmluYWxseSgoKSA9PiB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhpcy5lcnJvcnMgPSB7fTtcbiAgICBpZiAoaXNFbXB0eSh0aGlzLmZvcm1EYXRhLm5hbWUpKSB7XG4gICAgICB0aGlzLmVycm9yc1snbmFtZSddID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZW5yb2xsbWVudFR5cGUgPT09ICdDQScgJiYgKGlzRW1wdHkodGhpcy5lbnJvbGxtZW50Q0EpIHx8IGlzTmlsKHRoaXMuZW5yb2xsbWVudENBKSkpIHtcbiAgICAgIHRoaXMuZXJyb3JzWydlbnJvbGxtZW50Q0EnXSA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLmVucm9sbG1lbnRUeXBlID09PSAndXBkYicgJiYgKGlzRW1wdHkodGhpcy5lbnJvbGxtZW50VVBEQikgfHwgaXNOaWwodGhpcy5lbnJvbGxtZW50VVBEQikpKSB7XG4gICAgICB0aGlzLmVycm9yc1snZW5yb2xsbWVudFVQREInXSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBpc0VtcHR5KHRoaXMuZXJyb3JzKTtcbiAgfVxuXG4gIGdldCBlbnJvbGxtZW50VHlwZVRpdGxlKCkge1xuICAgIHJldHVybiB0aGlzLmVucm9sbG1lbnRUeXBlID09PSAnQ0EnID8gJ0NFUlRJRklDQVRFIEFVVEhPUklUWScgOiAodGhpcy5lbnJvbGxtZW50VHlwZSA9PT0gJ3VwZGInICYmICF0aGlzLmlzRWRpdGluZykgPyAnVVBEQiBVU0VSTkFNRScgOiB1bmRlZmluZWQ7XG4gIH1cbiAgZ2V0IGFwaUNhbGxVUkwoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Muc2VsZWN0ZWRFZGdlQ29udHJvbGxlciArICcvZWRnZS9tYW5hZ2VtZW50L3YxL2lkZW50aXRpZXMnICsgKHRoaXMuZm9ybURhdGEuaWQgPyBgLyR7dGhpcy5mb3JtRGF0YS5pZH1gIDogJycpO1xuICB9XG5cbiAgZ2V0IGFwaURhdGEoKSB7XG4gICAgY29uc3QgZGF0YTogYW55ID0ge1xuICAgICAgbmFtZTogdGhpcy5mb3JtRGF0YT8ubmFtZSB8fCAnJyxcbiAgICAgIHR5cGU6IHRoaXMuZm9ybURhdGE/LnR5cGU/Lm5hbWUgfHwgdGhpcy5mb3JtRGF0YT8udHlwZSB8fCAnJyxcbiAgICAgIGFwcERhdGE6IHRoaXMuZm9ybURhdGE/LmFwcERhdGEgfHwgJycsXG4gICAgICBpc0FkbWluOiB0aGlzLmZvcm1EYXRhPy5pc0FkbWluIHx8ICcnLFxuICAgICAgcm9sZUF0dHJpYnV0ZXM6IHRoaXMuZm9ybURhdGE/LnJvbGVBdHRyaWJ1dGVzIHx8ICcnLFxuICAgICAgYXV0aFBvbGljeUlkOiB0aGlzLmZvcm1EYXRhPy5hdXRoUG9saWN5SWQgfHwgJycsXG4gICAgICBleHRlcm5hbElkOiB0aGlzLmZvcm1EYXRhPy5leHRlcm5hbElkIHx8ICcnLFxuICAgICAgZGVmYXVsdEhvc3RpbmdDb3N0OiB0aGlzLmZvcm1EYXRhPy5kZWZhdWx0SG9zdGluZ0Nvc3QgfHwgJzAnLFxuICAgICAgZGVmYXVsdEhvc3RpbmdQcmVjZWRlbmNlOiB0aGlzLmZvcm1EYXRhPy5kZWZhdWx0SG9zdGluZ1ByZWNlZGVuY2UgfHwgJ2RlZmF1bHRIb3N0aW5nUHJlY2VkZW5jZScsXG4gICAgICB0YWdzOiB0aGlzLmZvcm1EYXRhPy50YWdzXG4gICAgfTtcbiAgICBpZiAoIXRoaXMuaXNFZGl0aW5nKSB7XG4gICAgICBkYXRhLmVucm9sbG1lbnQgPSB0aGlzLmZvcm1EYXRhLmVucm9sbG1lbnQgfHwge290dDogdHJ1ZX07XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgX2FwaURhdGEgPSB7fTtcbiAgc2V0IGFwaURhdGEoZGF0YSkge1xuICAgIHRoaXMuX2FwaURhdGEgPSBkYXRhO1xuICB9XG5cbiAgc2VydmljZVNlbGVjdGVkKHNlcnZpY2VOYW1lKSB7XG4gICAgbGV0IHNlcnZpY2U6IGFueSA9IHt9O1xuICAgIHRoaXMuYXNzb2NpYXRlZFNlcnZpY2VzLmZvckVhY2goKHN2YykgPT4ge1xuICAgICAgaWYoc3ZjLm5hbWUgPT09IHNlcnZpY2VOYW1lKSB7XG4gICAgICAgIHNlcnZpY2UgPSBzdmM7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zdmMudGVzdFNlcnZpY2UodGhpcy5mb3JtRGF0YS5pZCwgc2VydmljZS5pZCkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICB0aGlzLnRlc3RSZXN1bHQgPSByZXN1bHQ7XG4gICAgICB0aGlzLnRlc3RSZXN1bHRPcGVuID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHRvZ2dsZUlzQWRtaW4oKSB7XG4gICAgdGhpcy5mb3JtRGF0YS5pc0FkbWluID0gIXRoaXMuZm9ybURhdGEuaXNBZG1pbjtcbiAgfVxuXG4gIGdldCBpZGVudGl0eVR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNFZGl0aW5nID8gdGhpcy5mb3JtRGF0YS50eXBlLm5hbWUgOiB0aGlzLmZvcm1EYXRhLnR5cGU7XG4gIH1cblxuICBzZXQgaWRlbnRpdHlUeXBlKHR5cGUpIHtcbiAgICBpZiAodGhpcy5pc0VkaXRpbmcpIHtcbiAgICAgIHNldCh0aGlzLmZvcm1EYXRhLCAndHlwZS5uYW1lJywgdHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldCh0aGlzLmZvcm1EYXRhLCAndHlwZScsIHR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlVGVzdFJlc3VsdCgpIHtcbiAgICB0aGlzLnRlc3RSZXN1bHRPcGVuID0gZmFsc2U7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInByb2plY3RhYmxlLWZvcm0td3JhcHBlclwiXG4gICAgIChrZXl1cC5lbnRlcik9XCJzYXZlKCRldmVudClcIlxuICAgICAoa2V5dXAuZXNjYXBlKT1cImNsb3NlTW9kYWwoZmFsc2UpXCJcbj5cbiAgICA8bGliLWZvcm0taGVhZGVyXG4gICAgICAgICAgICBbZGF0YV09XCJmb3JtRGF0YVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiZm9ybURhdGEuaWQgPyAnRWRpdCBJZGVudGl0eTogJyA6ICdDcmVhdGUgTmV3IElkZW50aXR5J1wiXG4gICAgICAgICAgICBbbW9yZUFjdGlvbnNdPVwibW9yZUFjdGlvbnNcIlxuICAgICAgICAgICAgKGFjdGlvblJlcXVlc3RlZCk9XCJoZWFkZXJBY3Rpb25SZXF1ZXN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbKGZvcm1WaWV3KV09XCJmb3JtVmlld1wiXG4gICAgPjwvbGliLWZvcm0taGVhZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJpZGVudGl0eS1mb3JtLWNvbnRhaW5lciBwcm9qZWN0YWJsZS1mb3JtLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvamVjdGFibGUtZm9ybS1tYWluLWNvbHVtbiBmb3JtLWdyb3VwLXJvd1wiICpuZ0lmPVwiZm9ybVZpZXcgPT09ICdzaW1wbGUnXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1jb2x1bW4gdGhyZWUtZmlmdGhzXCI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lciBbdGl0bGVdPVwiJ0lkZW50aXR5IE5hbWUnXCIgW2xhYmVsXT1cIidSRVFVSVJFRCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJOYW1lIHRoaXMgaWRlbnRpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2Vycm9yOiBlcnJvcnNbJ25hbWUnXX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtRGF0YS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9mb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgI25hbWVGaWVsZElucHV0XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidTZWxlY3Qgb3IgY3JlYXRlIElkZW50aXR5IGF0dHJpYnV0ZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInT1BUSU9OQUwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50U3R5bGVdPVwiJ3otaW5kZXg6IDk5OTk5OTk5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiJ0F0dHJpYnV0ZXMgYXJlIHRhZ3MgYXBwbGllZCB0byBhbiByZXNvdXJjZS4gQXBwbHkgdGhlIHNhbWUgdGFnIHRvIG90aGVyIElkZW50aXRpZXMgdG8gZm9ybSBhIGdyb3VwIG9mIElkZW50aXRpZXMuJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGliLXRhZy1zZWxlY3RvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoc2VsZWN0ZWRSb2xlQXR0cmlidXRlcyldPVwiZm9ybURhdGEucm9sZUF0dHJpYnV0ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdmFpbGFibGVSb2xlQXR0cmlidXRlc109XCJpZGVudGl0eVJvbGVBdHRyaWJ1dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0FkZCBhdHRyaWJ1dGVzIHRvIGdyb3VwIElkZW50aXRpZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbGliLXRhZy1zZWxlY3Rvcj5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0F1dGggUG9saWN5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ09QVElPTkFMJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiJ0F1dGhlbnRpY2F0aW9uIFBvbGljaWVzIHJlc3RyaWN0IHRoZSBhdXRoZW50aWNhdGlvbiBtZXRob2RzIGF2YWlsYWJsZSB0byBpZGVudGl0aWVzLidcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9ybURhdGEuYXV0aFBvbGljeUlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImF1dGhQb2xpY3lJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBhbiBBdXRoZW50aWNhdGlvbiBQb2xpY3k8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcG9saWN5IG9mIGF1dGhQb2xpY2llc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInBvbGljeS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcG9saWN5Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1maWVsZC1pbnB1dFwiIHBsYWNlaG9sZGVyPVwiT3B0aW9uYWwgRXh0ZXJuYWwgSURcIiBbKG5nTW9kZWwpXT1cImZvcm1EYXRhLmV4dGVybmFsSWRcIi8+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLXRvZ2dsZSBbKHRvZ2dsZU9uKV09XCJzaG93TW9yZVwiICh0b2dnbGVPbkNoYW5nZSk9XCJzaG93TW9yZUNoYW5nZWQoJGV2ZW50KVwiIHN0eWxlPVwibWFyZ2luOiAwcHggMTBweFwiPjwvbGliLWZvcm0tZmllbGQtdG9nZ2xlPlxuICAgICAgICAgICAgICAgIDxkaXYgW2hpZGRlbl09XCIhc2hvd01vcmVcIiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInRW5yb2xsbWVudCBUeXBlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGUyXT1cImVucm9sbG1lbnRUeXBlVGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xheW91dF09XCIncm93J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtYWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJFbnJvbGxtZW50VHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6IGlzRWRpdGluZ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZW5yb2xsbWVudFR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRW5yb2xsbWVudCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwib3R0XCI+T25lIFRpbWUgVG9rZW48L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQ0FcIj5DZXJ0aWZpY2F0ZSBBdXRob3JpdHk8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwidXBkYlwiPlVQREI8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiQ2VydEF1dGhvcml0aWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZW5yb2xsbWVudFR5cGUgPT09ICdDQSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntkaXNhYmxlZDogaXNFZGl0aW5nfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbnJvbGxtZW50Q0FcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntlcnJvcjogZXJyb3JzLmVucm9sbG1lbnRDQX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRW5yb2xsbWVudCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjYSBvZiBjYXNcIiBbdmFsdWVdPVwiY2EuaWRcIj57e2NhLm5hbWV9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVucm9sbG1lbnRUeXBlID09PSAndXBkYicgJiYgIWlzRWRpdGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2Rpc2FibGVkOiBpc0VkaXRpbmcsIGVycm9yOiBlcnJvcnMuZW5yb2xsbWVudFVQREJ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVucm9sbG1lbnRVUERCXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwidXBkYXRlRW5yb2xsbWVudCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiVVBEQk5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCI1MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgYSBuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FkbWluJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xheW91dF09XCIncm93J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLWFkdmFuY2VkIGlzLWFkbWluLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctY29udGFpbmVyIHRvZ2dsZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZy1jb250YWluZXItbGFiZWxcIj5JUyBBRE1JTjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUlzQWRtaW4oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBvbjogZm9ybURhdGEuaXNBZG1pbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtoaWRkZW5dPVwiIWZvcm1EYXRhLmlzQWRtaW5cIiBjbGFzcz1cIm9uLWxhYmVsXCI+WUVTPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2hpZGRlbl09XCJmb3JtRGF0YS5pc0FkbWluXCIgY2xhc3M9XCJvZmYtbGFiZWxcIj5OTzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzd2l0Y2hcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0hvc3RpbmcgQ29zdCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZTJdPVwiJ1ByZWNlZGVuY2UnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGF5b3V0XT1cIidyb3cnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtYWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWZpZWxkLWlucHV0XCIgWyhuZ01vZGVsKV09XCJmb3JtRGF0YS5kZWZhdWx0SG9zdGluZ0Nvc3RcIiB0eXBlPVwibnVtYmVyXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9ybURhdGEuZGVmYXVsdEhvc3RpbmdQcmVjZWRlbmNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImhvc3RpbmdQcmVjZWRlbmNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkZWZhdWx0XCI+RGVmYXVsdDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJyZXF1aXJlZFwiPlJlcXVpcmVkPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImZhaWxlZFwiPkZhaWxlZDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWdFbGVtZW50IG9mIHRhZ0VsZW1lbnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwidGFnRWxlbWVudC5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidPUFRJT05BTCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1hZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJ0YWdFbGVtZW50LmNvbnRlbnQgfCBzYWZlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bGliLWZvcm0tZmllbGQtY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidDdXN0b20gVGFncydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInT1BUSU9OQUwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZmllbGQtYWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWhpZGVUYWdzXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1jdXN0b20tdGFncyBbKHRhZ3MpXT1cImZvcm1EYXRhLnRhZ3NcIj48L2xpYi1jdXN0b20tdGFncz5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FwcCBEYXRhJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidPUFRJT05BTCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1hZHZhbmNlZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItanNvbi12aWV3IFsoZGF0YSldPVwiZm9ybURhdGEuYXBwRGF0YVwiPjwvbGliLWpzb24tdmlldz5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwLWNvbHVtbiB0d28tZmlmdGhzXCI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNFbnJvbG1lbnRUb2tlbiB8fCBoYXNBdXRoZW50aWNhdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SGVhZGVyXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItcXItY29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkZW50aXR5XT1cImZvcm1EYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtqd3RdPVwiand0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtleHBpcmF0aW9uXT1cImVucm9sbG1lbnRFeHBpcmF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdXRoZW50aWNhdG9yc109XCJmb3JtRGF0YS5hdXRoZW50aWNhdG9yc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCInaWRlbnRpdHknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjYW5FeHBhbmRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoZG9SZWZyZXNoKT1cInJlZnJlc2hJZGVudGl0eSgpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbGliLXFyLWNvZGU+XG4gICAgICAgICAgICAgICAgPC9saWItZm9ybS1maWVsZC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGxpYi1mb3JtLWZpZWxkLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmb3JtRGF0YS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0Fzc29jaWF0ZWQgU2VydmljZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb3VudF09XCJhc3NvY2lhdGVkU2VydmljZXMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCInaGlkZS1vdmVyZmxvdydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIidQcmV2aWV3IGxpc3Qgb2YgYWxsIHNlcnZpY2VzIHRoYXQgdGhpcyBJZGVudGl0eSBpcyBhc3NvY2lhdGVkIHdpdGguJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGliLXByZXZpZXctbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW1TZWxlY3RlZCk9XCJzZXJ2aWNlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xpY2thYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzTG9hZGluZ109XCJzZXJ2aWNlc0xvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FsbE5hbWVzXT1cImFzc29jaWF0ZWRTZXJ2aWNlTmFtZXNcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItcHJldmlldy1saXN0PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ZjLXRlc3QtcmVzdWx0XCIgW25nQ2xhc3NdPVwieyd0ZXN0LXJlc3VsdC1vcGVuJzogdGVzdFJlc3VsdE9wZW59XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xvc2UgaWNvbi1jbG9zZVwiIChjbGljayk9XCJjbG9zZVRlc3RSZXN1bHQoKVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1jb250YWluZXJcIiBbaW5uZXJIVE1MXT1cInRlc3RSZXN1bHRcIiA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9ybURhdGEuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBc3NvY2lhdGVkIFNlcnZpY2UgUG9saWNpZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb3VudF09XCJhc3NvY2lhdGVkU2VydmljZVBvbGljaWVzLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiJ1ByZXZpZXcgbGlzdCBvZiBhbGwgc2VydmljZSBwb2xpY2llcyB0aGF0IHRoaXMgSWRlbnRpdHkgaXMgYXNzb2NpYXRlZCB3aXRoLidcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1wcmV2aWV3LWxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtU2VsZWN0ZWQpPVwic2VydmljZVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsaWNrYWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNMb2FkaW5nXT1cInNlcnZpY2VQb2xpY2llc0xvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FsbE5hbWVzXT1cImFzc29jaWF0ZWRTZXJ2aWNlUG9saWN5TmFtZXNcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItcHJldmlldy1saXN0PlxuICAgICAgICAgICAgICAgIDwvbGliLWZvcm0tZmllbGQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxsaWItZm9ybS1maWVsZC1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQVBJIENhbGxzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJydcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWZpZWxkLWlucHV0XCIgW3ZhbHVlXT1cImFwaUNhbGxVUkxcIiByZWFkb25seS8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXJsLWNvcHkgaWNvbi1jb3B5IGNvcHlcIiAoY2xpY2spPVwiY29weVRvQ2xpcGJvYXJkKGFwaUNhbGxVUkwpXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bGliLWpzb24tdmlldyAqbmdJZj1cImZvcm1EYXRhXCIgWyhkYXRhKV09XCJhcGlEYXRhXCIgW3JlYWRPbmx5XT1cInRydWVcIiBbc2hvd0NvcHldPVwidHJ1ZVwiPjwvbGliLWpzb24tdmlldz5cbiAgICAgICAgICAgICAgICA8L2xpYi1mb3JtLWZpZWxkLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtY29sdW1uXCIgKm5nSWY9XCJmb3JtVmlldyA9PT0gJ3JhdydcIj5cbiAgICAgICAgICAgIDxsaWItanNvbi12aWV3ICpuZ0lmPVwiZm9ybURhdGFcIiBbKGRhdGEpXT1cImZvcm1EYXRhXCI+PC9saWItanNvbi12aWV3PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGxpYi1sb2FkaW5nLWluZGljYXRvciAqbmdJZj1cImlzTG9hZGluZ1wiIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nXCI+PC9saWItbG9hZGluZy1pbmRpY2F0b3I+Il19
@@ -30,6 +30,12 @@ import * as i4 from "../../services/ziti-data.service";
30
30
  const { context, tags, resources, service, app } = window;
31
31
  export class Entity {
32
32
  }
33
+ export const KEY_CODES = {
34
+ LEFT_ARROW: 37,
35
+ UP_ARROW: 38,
36
+ RIGHT_ARROW: 39,
37
+ DOWN_ARROW: 40
38
+ };
33
39
  class ProjectableForm extends ExtendableComponent {
34
40
  constructor(growlerService, extService, zitiService, router, route, location) {
35
41
  super();
@@ -53,6 +59,7 @@ class ProjectableForm extends ExtendableComponent {
53
59
  this._dataChange = false;
54
60
  this.apiOptions = [{ id: 'cli', label: 'Copy as CLI' }, { id: 'curl', label: 'Copy as CURL' }];
55
61
  this.basePath = '';
62
+ this.showMore = false;
56
63
  this.checkDataChangeDebounced = debounce(this.checkDataChange, 100, { maxWait: 100 });
57
64
  this.subscription = new Subscription();
58
65
  this.previousRoute = this.router.getCurrentNavigation().previousNavigation?.finalUrl?.toString();
@@ -297,4 +304,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
297
304
  type: ViewChild,
298
305
  args: ['nameFieldInput']
299
306
  }] } });
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdGFibGUtZm9ybS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9wcm9qZWN0YWJsZS1mb3Jtcy9wcm9qZWN0YWJsZS1mb3JtLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUNILFNBQVMsRUFHVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXFCLE1BQU0sUUFBUSxDQUFDO0FBQ2xJLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUV4RCxPQUFPLEVBQW1CLGlCQUFpQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFFMUYsT0FBTyxFQUFDLGlCQUFpQixFQUFrQixNQUFNLGtDQUFrQyxDQUFDO0FBQ3BGLE9BQU8sRUFBaUIsYUFBYSxFQUFTLE1BQU0saUJBQWlCLENBQUM7QUFDdEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBR2xDLGFBQWE7QUFDYixNQUFNLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBQyxHQUFHLE1BQU0sQ0FBQztBQUV4RCxNQUFNLE9BQU8sTUFBTTtDQUVsQjtBQUVELE1BSXNCLGVBQWdCLFNBQVEsbUJBQW1CO0lBNkI3RCxZQUNjLGNBQThCLEVBQ0gsVUFBNEIsRUFDNUIsV0FBNEIsRUFDdkQsTUFBZSxFQUNmLEtBQXNCLEVBQ3RCLFFBQW1CO1FBRTdCLEtBQUssRUFBRSxDQUFDO1FBUEUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ0gsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQ3ZELFdBQU0sR0FBTixNQUFNLENBQVM7UUFDZixVQUFLLEdBQUwsS0FBSyxDQUFpQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBbEN4QixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBSWYsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBTTNELFdBQU0sR0FBUSxFQUFFLENBQUM7UUFDZCxlQUFVLEdBQUcsWUFBWSxDQUFDO1FBQzFCLGdCQUFXLEdBQVEsTUFBTSxDQUFDO1FBQzFCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDNUIsZ0JBQVcsR0FBVSxFQUFFLENBQUM7UUFDeEIsZ0JBQVcsR0FBUSxFQUFFLENBQUM7UUFDdEIsWUFBTyxHQUFRLEVBQUUsQ0FBQztRQUNsQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBUSxFQUFFLENBQUM7UUFDbkIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsZUFBVSxHQUFHLENBQUMsRUFBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBQyxDQUFDLENBQUM7UUFDdEYsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUdkLDZCQUF3QixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRSxFQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDO1FBRS9FLGlCQUFZLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFXNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFvQixFQUFFLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDO1FBQ2pHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNqQixJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7YUFDdEI7UUFDTCxDQUFDLENBQUMsQ0FDTCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ2pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDbkMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssWUFBWSxhQUFhLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7b0JBQ3JDLE9BQU87aUJBQ1Y7Z0JBQ0QsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbkM7UUFDTCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVRLGVBQWU7UUFDcEIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDNUU7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDekMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNyQixPQUFPO2FBQ1Y7WUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQ2pGLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxFQUFFLElBQUksQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUMzQixDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxRQUFRO1FBQ3BCLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUM1QixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7SUFDcEIsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUUsS0FBSyxDQUFDO1FBQ3hELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLE9BQU87U0FDVjtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxVQUFVLENBQUMsT0FBTztRQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN0QixJQUFJLElBQUksQ0FBQztZQUNULElBQUksR0FBRyxDQUFDLE9BQU8sSUFBRSxLQUFLLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFFLENBQUMsRUFBRTtnQkFDL0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQztnQkFDeEMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQy9CLE1BQU0sS0FBSyxHQUFHO29CQUNWLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztvQkFDaEIsT0FBTyxFQUFFLElBQUk7aUJBQ2hCLENBQUE7Z0JBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7YUFDL0I7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxTQUFTO1FBQ0wsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixPQUFPO1NBQ1Y7UUFDRCxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFHO1FBQ2IsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxHQUFHLENBQUMsS0FBSyxJQUFFLFFBQVEsRUFBRTtZQUNyQixJQUFJLElBQUksaUJBQWlCLEdBQUMsR0FBRyxDQUFDLEVBQUUsR0FBQywwQkFBMEIsR0FBQyxHQUFHLENBQUMsRUFBRSxHQUFDLGlDQUFpQyxHQUFDLEdBQUcsQ0FBQyxXQUFXLEdBQUMsTUFBTSxDQUFDO1NBQy9IO2FBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxJQUFFLFNBQVMsRUFBRTtZQUM3QixJQUFJLElBQUksaUJBQWlCLEdBQUMsR0FBRyxDQUFDLEVBQUUsR0FBQyw4QkFBOEIsR0FBQyxHQUFHLENBQUMsRUFBRSxHQUFDLE1BQU0sQ0FBQztTQUNqRjthQUFNLElBQUksR0FBRyxDQUFDLEtBQUssSUFBRSxLQUFLLEVBQUU7WUFDekIsSUFBSSxJQUFJLGVBQWUsR0FBQyxHQUFHLENBQUMsRUFBRSxHQUFDLGtCQUFrQixHQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUMsc0JBQXNCLENBQUM7WUFDaEYsSUFBSSxJQUFJLGlCQUFpQixHQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUMsMEJBQTBCLEdBQUMsR0FBRyxDQUFDLEVBQUUsR0FBQyxpQ0FBaUMsR0FBQyxHQUFHLENBQUMsV0FBVyxHQUFDLE1BQU0sQ0FBQztTQUMvSDthQUFNLElBQUksR0FBRyxDQUFDLEtBQUssSUFBRSxRQUFRLEVBQUU7WUFDNUIsSUFBSSxJQUFJLHVCQUF1QixDQUFDO1lBQ2hDLElBQUksSUFBSSxlQUFlLEdBQUMsR0FBRyxDQUFDLEVBQUUsR0FBQyxhQUFhLEdBQUMsR0FBRyxDQUFDLEVBQUUsR0FBQyxnRUFBZ0UsR0FBQyxHQUFHLENBQUMsV0FBVyxHQUFDLGlDQUFpQyxHQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUMsa0NBQWtDLEdBQUMsR0FBRyxDQUFDLEVBQUUsR0FBQywrQkFBK0IsR0FBQyxHQUFHLENBQUMsRUFBRSxHQUFDLGtDQUFrQyxDQUFDO1lBQ3ZTLElBQUksSUFBSSxpQkFBaUIsR0FBQyxHQUFHLENBQUMsRUFBRSxHQUFDLG9CQUFvQixHQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUMsbUJBQW1CLENBQUM7WUFDakYsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEdBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDekQ7YUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFLLElBQUUsTUFBTSxFQUFFO1lBQzFCLElBQUksSUFBSSx1QkFBdUIsQ0FBQztZQUNoQyxJQUFJLElBQUksZUFBZSxHQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUMsYUFBYSxHQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUMsc0RBQXNELEdBQUMsR0FBRyxDQUFDLFdBQVcsR0FBQyxpQ0FBaUMsR0FBQyxHQUFHLENBQUMsT0FBTyxHQUFDLGtDQUFrQyxHQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUMsK0JBQStCLEdBQUMsR0FBRyxDQUFDLEVBQUUsR0FBQyxnQ0FBZ0MsQ0FBQztZQUMzUixJQUFJLElBQUksaUJBQWlCLEdBQUMsR0FBRyxDQUFDLEVBQUUsR0FBQyxvQkFBb0IsR0FBQyxHQUFHLENBQUMsRUFBRSxHQUFDLG1CQUFtQixDQUFDO1lBQ2pGLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxXQUFXLENBQUMsWUFBWSxHQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3pEO2FBQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxJQUFFLE9BQU8sRUFBRTtZQUMzQixJQUFJLElBQUksZUFBZSxHQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUMsbUJBQW1CLENBQUM7WUFDbkQsSUFBSSxJQUFJLGlCQUFpQixHQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUMsMEJBQTBCLEdBQUMsR0FBRyxDQUFDLEVBQUUsR0FBQyxnQkFBZ0IsR0FBQyxHQUFHLENBQUMsRUFBRSxHQUFDLGlDQUFpQyxHQUFDLEdBQUcsQ0FBQyxXQUFXLEdBQUMsTUFBTSxDQUFDO1NBQ3ZKO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFlBQVk7UUFDUixPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQU8sR0FBRyxJQUFJLEVBQUUsYUFBYSxHQUFHLEtBQUssRUFBRSxJQUFLLEVBQUUsS0FBTTtRQUMxRCxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLHlHQUF5RyxDQUFDLENBQUM7WUFDckksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDWixPQUFPO2FBQ1Y7U0FDSjtRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1NBQzNDO2FBQU07WUFDSCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUMzQjtJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRSxhQUFhLEdBQUcsS0FBSyxFQUFFLElBQUssRUFBRSxLQUFNO1FBQzNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7UUFDcEMsSUFBSSxLQUFLLEVBQUU7WUFDUCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN4QjthQUFNO1lBQ0gsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUNsRDtJQUNMLENBQUM7SUFFRCxTQUFTO1FBQ0wsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVTLGVBQWU7UUFDckIsSUFBSSxRQUFRLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxJQUFJLFFBQVEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNoRCxJQUFJLFVBQVUsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsR0FBRyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFNO1FBQ2hCLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDekIsSUFBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzNCLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDdEI7aUJBQU0sSUFBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDM0I7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFHO1FBQ2hCLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxlQUFlLENBQUMsR0FBRztRQUNmLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLE1BQU0sV0FBVyxHQUFHLElBQUksWUFBWSxDQUNoQyxTQUFTLEVBQ1QsU0FBUyxFQUNULGFBQWEsRUFDYixrQ0FBa0MsQ0FDckMsQ0FBQztRQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxhQUFhO1FBQzdCLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNsQixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBQyxFQUFFO1lBQ2pDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtnQkFDWCxRQUFRLElBQUksR0FBRyxDQUFDO2FBQ25CO1lBQ0QsUUFBUSxJQUFJLElBQUksQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxhQUFhO1FBQzlCLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNsQixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBQyxFQUFFO1lBQ2pDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtnQkFDWCxRQUFRLElBQUksSUFBSSxDQUFDO2FBQ3BCO1lBQ0QsUUFBUSxJQUFJLElBQUksSUFBSSxHQUFHLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxRQUFRLEdBQUcsSUFBSSxRQUFRLEdBQUcsQ0FBQztRQUMzQixPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQsYUFBYTtRQUNULElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixPQUFPLE9BQU8sQ0FBQyx5R0FBeUcsQ0FBQyxDQUFDO1NBQzdIO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVTLGFBQWE7UUFDbkIsT0FBTztJQUNYLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFZO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN2RCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQWxSaUIsZUFBZSxnREErQnJCLGlCQUFpQixhQUNqQixpQkFBaUI7bUdBaENYLGVBQWUsZ1VBSHZCLEVBQUU7O1NBR00sZUFBZTs0RkFBZixlQUFlO2tCQUpwQyxTQUFTOytCQUNJLEVBQUU7OzBCQWtDUCxNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQ3hCLE1BQU07MkJBQUMsaUJBQWlCO3FIQS9CcEIsT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ1ksUUFBUTtzQkFBekIsS0FBSztnQkFDYSxLQUFLO3NCQUF2QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ3NCLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgICBDb3B5cmlnaHQgTmV0Rm91bmRyeSBJbmMuXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IHtFeHRlbmRhYmxlQ29tcG9uZW50fSBmcm9tIFwiLi4vZXh0ZW5kYWJsZS9leHRlbmRhYmxlLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRG9DaGVjayxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7ZGVmZXIsIGlzRXF1YWwsIHVuc2V0LCBkZWJvdW5jZSwgY2xvbmVEZWVwLCBmb3JFYWNoLCBpc0FycmF5LCBpc0VtcHR5LCBpc09iamVjdCwgaXNOaWwsIG1hcCwgb21pdEJ5LCBzbGljZX0gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHtHcm93bGVyTW9kZWx9IGZyb20gXCIuLi9tZXNzYWdpbmcvZ3Jvd2xlci5tb2RlbFwiO1xuaW1wb3J0IHtHcm93bGVyU2VydmljZX0gZnJvbSBcIi4uL21lc3NhZ2luZy9ncm93bGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7RXh0ZW5zaW9uU2VydmljZSwgU0hBUkVEWl9FWFRFTlNJT059IGZyb20gXCIuLi9leHRlbmRhYmxlL2V4dGVuc2lvbnMtbm9vcC5zZXJ2aWNlXCI7XG5pbXBvcnQge0lkZW50aXR5fSBmcm9tIFwiLi4vLi4vbW9kZWxzL2lkZW50aXR5XCI7XG5pbXBvcnQge1pJVElfREFUQV9TRVJWSUNFLCBaaXRpRGF0YVNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy96aXRpLWRhdGEuc2VydmljZVwiO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgUm91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7TG9jYXRpb259IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcblxuLy8gQHRzLWlnbm9yZVxuY29uc3Qge2NvbnRleHQsIHRhZ3MsIHJlc291cmNlcywgc2VydmljZSwgYXBwfSA9IHdpbmRvdztcblxuZXhwb3J0IGNsYXNzIEVudGl0eSB7XG4gICAgbmFtZTogJydcbn1cblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIHN0eWxlVXJsczogWycuL3Byb2plY3RhYmxlLWZvcm0uY2xhc3Muc2NzcyddXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFByb2plY3RhYmxlRm9ybSBleHRlbmRzIEV4dGVuZGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBEb0NoZWNrLCBPbkluaXQge1xuICAgIEBJbnB1dCgpIGlzTW9kYWwgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBlbnRpdHlJZDogU3RyaW5nO1xuICAgIEBJbnB1dCgpIGFic3RyYWN0IGZvcm1EYXRhOiBhbnk7XG4gICAgQE91dHB1dCgpIGFic3RyYWN0IGNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgICBAT3V0cHV0KCkgZGF0YUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAVmlld0NoaWxkKCduYW1lRmllbGRJbnB1dCcpIG5hbWVGaWVsZElucHV0OiBFbGVtZW50UmVmO1xuXG4gICAgYWJzdHJhY3QgY2xlYXIoKTogdm9pZDtcbiAgICBhYnN0cmFjdCBzYXZlKCk6IHZvaWQ7XG5cbiAgICBwdWJsaWMgZXJyb3JzOiBhbnkgPSB7fTtcbiAgICBwcm90ZWN0ZWQgZW50aXR5VHlwZSA9ICdpZGVudGl0aWVzJztcbiAgICBwcm90ZWN0ZWQgZW50aXR5Q2xhc3M6IGFueSA9IEVudGl0eTtcbiAgICBwcm90ZWN0ZWQgaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgbW9yZUFjdGlvbnM6IGFueVtdID0gW107XG4gICAgdGFnRWxlbWVudHM6IGFueSA9IFtdO1xuICAgIHRhZ0RhdGE6IGFueSA9IFtdO1xuICAgIGhpZGVUYWdzID0gZmFsc2U7XG4gICAgaW5pdERhdGE6IGFueSA9IHt9O1xuICAgIF9kYXRhQ2hhbmdlID0gZmFsc2U7XG4gICAgYXBpT3B0aW9ucyA9IFt7aWQ6ICdjbGknLCBsYWJlbDogJ0NvcHkgYXMgQ0xJJ30sIHtpZDogJ2N1cmwnLCBsYWJlbDogJ0NvcHkgYXMgQ1VSTCd9XTtcbiAgICBiYXNlUGF0aCA9ICcnO1xuICAgIHByZXZpb3VzUm91dGU7XG5cbiAgICBjaGVja0RhdGFDaGFuZ2VEZWJvdW5jZWQgPSBkZWJvdW5jZSh0aGlzLmNoZWNrRGF0YUNoYW5nZSwgMTAwLCB7bWF4V2FpdDogMTAwfSk7XG5cbiAgICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGdyb3dsZXJTZXJ2aWNlOiBHcm93bGVyU2VydmljZSxcbiAgICAgICAgQEluamVjdChTSEFSRURaX0VYVEVOU0lPTikgcHJvdGVjdGVkIGV4dFNlcnZpY2U6IEV4dGVuc2lvblNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoWklUSV9EQVRBX1NFUlZJQ0UpIHByb3RlY3RlZCB6aXRpU2VydmljZTogWml0aURhdGFTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgcm91dGVyPzogUm91dGVyLFxuICAgICAgICBwcm90ZWN0ZWQgcm91dGU/OiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJvdGVjdGVkIGxvY2F0aW9uPzogTG9jYXRpb25cbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5wcmV2aW91c1JvdXRlID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKS5wcmV2aW91c05hdmlnYXRpb24/LmZpbmFsVXJsPy50b1N0cmluZygpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLnJvdXRlPy5wYXJhbXM/LnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gcGFyYW1zWydpZCddO1xuICAgICAgICAgICAgICAgIGlmICghaXNFbXB0eShpZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnRpdHlJZCA9IGlkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWV2ZW50Py5zbmFwc2hvdD8ucm91dGVDb25maWc/LnBhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoU2VnbWVudHMgPSBldmVudC5zbmFwc2hvdC5yb3V0ZUNvbmZpZy5wYXRoLnNwbGl0KCcvJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmFzZVBhdGggPSBwYXRoU2VnbWVudHNbMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICB0aGlzLmVycm9ycyA9IHt9O1xuICAgICAgICB0aGlzLm5hbWVGaWVsZElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgaWYgKHRoaXMuZXh0U2VydmljZT8ubW9yZUFjdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMubW9yZUFjdGlvbnMgPSBbLi4udGhpcy5tb3JlQWN0aW9ucywgLi4udGhpcy5leHRTZXJ2aWNlLm1vcmVBY3Rpb25zXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5lbnRpdHlJZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZW50aXR5SWQgPT09ICdjcmVhdGUnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtRGF0YSA9IG5ldyB0aGlzLmVudGl0eUNsYXNzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0RGF0YSA9IGNsb25lRGVlcCh0aGlzLmZvcm1EYXRhKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVudGl0eVVwZGF0ZWQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnppdGlTZXJ2aWNlLmdldFN1YmRhdGEodGhpcy5lbnRpdHlUeXBlLCB0aGlzLmVudGl0eUlkLCAnJykudGhlbigoZW50aXR5OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1EYXRhID0gZW50aXR5Py5kYXRhO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdERhdGEgPSBjbG9uZURlZXAodGhpcy5mb3JtRGF0YSk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRpdHlVcGRhdGVkKCk7XG4gICAgICAgICAgICB9KS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG93TW9yZUNoYW5nZWQoc2hvd01vcmUpIHtcbiAgICAgICAgaWYgKCFzaG93TW9yZSB8fCB0aGlzLmhpZGVUYWdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXNldFRhZ3MoKVxuICAgIH1cblxuICAgIGxvYWRUYWdzKCkge1xuICAgICAgICB0aGlzLmhpZGVUYWdzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoaWRlVGFnc1wiKT09XCJ5ZXNcIjtcbiAgICAgICAgaWYgKHRoaXMuaGlkZVRhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXJ2aWNlLmNhbGwoXCJ0YWdzXCIsIHt9LCB0aGlzLnRhZ3NMb2FkZWQuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgdGFnc0xvYWRlZChyZXN1bHRzKSB7XG4gICAgICAgIHRhZ3MuZGF0YSA9IHJlc3VsdHM7XG4gICAgICAgIGNvbnRleHQuc2V0KHRhZ3MubmFtZSwgdGFncy5kYXRhKTtcbiAgICAgICAgdGFncy50YWdEYXRhID0gW107XG4gICAgICAgIHRhZ3MuZGF0YS5mb3JFYWNoKCh0YWcpID0+IHtcbiAgICAgICAgICAgIGxldCBodG1sO1xuICAgICAgICAgICAgaWYgKHRhZy5vYmplY3RzPT1cImFsbFwiIHx8IHRhZy5vYmplY3RzLmluZGV4T2YodGhpcy5lbnRpdHlUeXBlKT49MCkge1xuICAgICAgICAgICAgICAgIHRhZ3MudGFnRGF0YVt0YWdzLnRhZ0RhdGEubGVuZ3RoXSA9IHRhZztcbiAgICAgICAgICAgICAgICBodG1sID0gdGhpcy5nZXRUYWdDb250ZW50KHRhZyk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFnRWwgPSB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0YWcubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGh0bWxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy50YWdFbGVtZW50cy5wdXNoKHRhZ0VsKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXNldFRhZ3MoKSB7XG4gICAgICAgIHVuc2V0KHRhZ3MsICdtYXAnKTtcbiAgICAgICAgaWYgKHRoaXMuaGlkZVRhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBkZWZlcigoKSA9PiB7XG4gICAgICAgICAgICB0YWdzLnJlc2V0KHRoaXMuZm9ybURhdGEpO1xuICAgICAgICAgICAgdGFncy5ldmVudHMoKTtcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBnZXRUYWdDb250ZW50KHRhZykge1xuICAgICAgICBsZXQgaHRtbCA9ICcnO1xuICAgICAgICBpZiAodGFnLnZhbHVlPT1cInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBodG1sICs9ICc8aW5wdXQgaWQ9XCJUYWdfJyt0YWcuaWQrJ1wiIHR5cGU9XCJ0ZXh0XCIgZGF0YS10YWc9XCInK3RhZy5pZCsnXCIgbWF4bGVuZ3RoPVwiNTAwXCIgcGxhY2Vob2xkZXI9XCInK3RhZy5kZXNjcmlwdGlvbisnXCIgLz4nO1xuICAgICAgICB9IGVsc2UgaWYgKHRhZy52YWx1ZT09XCJib29sZWFuXCIpIHtcbiAgICAgICAgICAgIGh0bWwgKz0gJzxpbnB1dCBpZD1cIlRhZ18nK3RhZy5pZCsnXCIgdHlwZT1cImNoZWNrYm94XCIgZGF0YS10YWc9XCInK3RhZy5pZCsnXCIgLz4nO1xuICAgICAgICB9IGVsc2UgaWYgKHRhZy52YWx1ZT09XCJtYXBcIikge1xuICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBpZD1cIlRhZ18nK3RhZy5pZCsnX01hcFwiIGRhdGEtbWFwPVwiJyt0YWcuaWQrJ1wiIGNsYXNzPVwibWFwXCI+PC9kaXY+JztcbiAgICAgICAgICAgIGh0bWwgKz0gJzxpbnB1dCBpZD1cIlRhZ18nK3RhZy5pZCsnXCIgdHlwZT1cInRleHRcIiBkYXRhLXRhZz1cIicrdGFnLmlkKydcIiBtYXhsZW5ndGg9XCI1MDBcIiBwbGFjZWhvbGRlcj1cIicrdGFnLmRlc2NyaXB0aW9uKydcIiAvPic7XG4gICAgICAgIH0gZWxzZSBpZiAodGFnLnZhbHVlPT1cImF2YXRhclwiKSB7XG4gICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPVwiZm9ybVJvd1wiPic7XG4gICAgICAgICAgICBodG1sICs9ICc8ZGl2IGlkPVwiVGFnXycrdGFnLmlkKydcIiBkYXRhLWlkPVwiJyt0YWcuaWQrJ1wiIGRhdGEtcmVzb3VyY2U9XCJhdmF0YXJcIiBjbGFzcz1cInJlc291cmNlIGljb24gcHJvZmlsZVwiIHRpdGxlPVwiJyt0YWcuZGVzY3JpcHRpb24rJ1wiIHN0eWxlPVwiYmFja2dyb3VuZC1pbWFnZTogdXJsKCcrdGFnLmRlZmF1bHQrJylcIj48L2Rpdj48ZGl2IGlkPVwiVGFnX1Jlc291cmNlc18nK3RhZy5pZCsnXCIgY2xhc3M9XCJyZXNvdXJjZXNcIiBkYXRhLWlkPVwiJyt0YWcuaWQrJ1wiIGRhdGEtcmVzb3VyY2VzPVwiYXZhdGFyXCI+PC9kaXY+JztcbiAgICAgICAgICAgIGh0bWwgKz0gJzxpbnB1dCBpZD1cIlRhZ18nK3RhZy5pZCsnX0hpZGVyXCIgZGF0YS10YWc9XCInK3RhZy5pZCsnXCIgdHlwZT1cImhpZGRlblwiLz4nO1xuICAgICAgICAgICAgcmVzb3VyY2VzLmdldCh0YWcuaWQpO1xuICAgICAgICAgICAgY29udGV4dC5hZGRMaXN0ZW5lcihcInJlc291cmNlcy1cIit0YWcuaWQsIHRhZ3MubG9hZGVkKTtcbiAgICAgICAgfSBlbHNlIGlmICh0YWcudmFsdWU9PVwiaWNvblwiKSB7XG4gICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPVwiZm9ybVJvd1wiPic7XG4gICAgICAgICAgICBodG1sICs9ICc8ZGl2IGlkPVwiVGFnXycrdGFnLmlkKydcIiBkYXRhLWlkPVwiJyt0YWcuaWQrJ1wiIGRhdGEtcmVzb3VyY2U9XCJpY29uXCIgY2xhc3M9XCJyZXNvdXJjZSBpY29uXCIgdGl0bGU9XCInK3RhZy5kZXNjcmlwdGlvbisnXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyt0YWcuZGVmYXVsdCsnKVwiPjwvZGl2PjxkaXYgaWQ9XCJUYWdfUmVzb3VyY2VzXycrdGFnLmlkKydcIiBjbGFzcz1cInJlc291cmNlc1wiIGRhdGEtaWQ9XCInK3RhZy5pZCsnXCIgZGF0YS1yZXNvdXJjZXM9XCJpY29uXCI+PC9kaXY+JztcbiAgICAgICAgICAgIGh0bWwgKz0gJzxpbnB1dCBpZD1cIlRhZ18nK3RhZy5pZCsnX0hpZGVyXCIgZGF0YS10YWc9XCInK3RhZy5pZCsnXCIgdHlwZT1cImhpZGRlblwiLz4nO1xuICAgICAgICAgICAgcmVzb3VyY2VzLmdldCh0YWcuaWQpO1xuICAgICAgICAgICAgY29udGV4dC5hZGRMaXN0ZW5lcihcInJlc291cmNlcy1cIit0YWcuaWQsIHRhZ3MubG9hZGVkKTtcbiAgICAgICAgfSBlbHNlIGlmICh0YWcudmFsdWU9PVwiYXJyYXlcIikge1xuICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBpZD1cIlRhZ18nK3RhZy5pZCsnX1NlbGVjdGVkXCI+PC9kaXY+JztcbiAgICAgICAgICAgIGh0bWwgKz0gJzxpbnB1dCBpZD1cIlRhZ18nK3RhZy5pZCsnXCIgdHlwZT1cInRleHRcIiBkYXRhLXRhZz1cIicrdGFnLmlkKydcIiBkYXRhLWFycmF5PVwiJyt0YWcuaWQrJ1wiIG1heGxlbmd0aD1cIjUwMFwiIHBsYWNlaG9sZGVyPVwiJyt0YWcuZGVzY3JpcHRpb24rJ1wiIC8+JztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaHRtbDtcbiAgICB9XG5cbiAgICBnZXRUYWdWYWx1ZXMoKSB7XG4gICAgICAgIHJldHVybiB0YWdzLnZhbCgpO1xuICAgIH1cblxuICAgIGNsb3NlRm9ybShyZWZyZXNoID0gdHJ1ZSwgaWdub3JlQ2hhbmdlcyA9IGZhbHNlLCBkYXRhPywgZXZlbnQ/KSB7XG4gICAgICAgIGlmICghaWdub3JlQ2hhbmdlcyAmJiB0aGlzLl9kYXRhQ2hhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCBjb25maXJtZWQgPSBjb25maXJtKCdZb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMuIERvIHlvdSB3YW50IHRvIGxlYXZlIHRoaXMgcGFnZSBhbmQgZGlzY2FyZCB5b3VyIGNoYW5nZXMgb3Igc3RheSBvbiB0aGlzIHBhZ2U/Jyk7XG4gICAgICAgICAgICBpZiAoIWNvbmZpcm1lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc01vZGFsKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlTW9kYWwocmVmcmVzaCwgaWdub3JlQ2hhbmdlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJldHVyblRvTGlzdFBhZ2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlTW9kYWwocmVmcmVzaCA9IHRydWUsIGlnbm9yZUNoYW5nZXMgPSBmYWxzZSwgZGF0YT8sIGV2ZW50Pyk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlLmVtaXQoe3JlZnJlc2g6IHJlZnJlc2h9KTtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVyblRvTGlzdFBhZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLmxvY2F0aW9uICYmIHRoaXMucHJldmlvdXNSb3V0ZSkge1xuICAgICAgICAgICAgdGhpcy5sb2NhdGlvbi5iYWNrKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlcj8ubmF2aWdhdGVCeVVybChgJHt0aGlzLmJhc2VQYXRofWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCkge1xuICAgICAgICB0aGlzLmNoZWNrRGF0YUNoYW5nZURlYm91bmNlZCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjaGVja0RhdGFDaGFuZ2UoKSB7XG4gICAgICAgIGxldCBpbml0RGF0YSA9IGNsb25lRGVlcCh0aGlzLmluaXREYXRhKTtcbiAgICAgICAgaW5pdERhdGEgPSB0aGlzLm9taXRFbXB0eURhdGEoaW5pdERhdGEpO1xuICAgICAgICBsZXQgZm9ybURhdGEgPSBjbG9uZURlZXAodGhpcy5mb3JtRGF0YSk7XG4gICAgICAgIGZvcm1EYXRhID0gdGhpcy5vbWl0RW1wdHlEYXRhKGZvcm1EYXRhKTtcbiAgICAgICAgY29uc3QgZGF0YUNoYW5nZSA9ICFpc0VxdWFsKGluaXREYXRhLCBmb3JtRGF0YSk7XG4gICAgICAgIGlmIChkYXRhQ2hhbmdlICE9PSB0aGlzLl9kYXRhQ2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFDaGFuZ2UuZW1pdChkYXRhQ2hhbmdlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kYXRhQ2hhbmdlID0gZGF0YUNoYW5nZTtcbiAgICAgICAgYXBwLmlzRGlydHkgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbWl0RW1wdHlEYXRhKG9iamVjdCkge1xuICAgICAgICBmb3JFYWNoKG9iamVjdCwgKHZhbCwga2V5KSA9PiB7XG4gICAgICAgICAgICBpZih0aGlzLm9taXREYXRhSXRlcmF0ZWUodmFsKSkge1xuICAgICAgICAgICAgICAgIHVuc2V0KG9iamVjdCwga2V5KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZihpc09iamVjdCh2YWwpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbWl0RW1wdHlEYXRhKHZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIG9taXREYXRhSXRlcmF0ZWUodmFsKSB7XG4gICAgICAgIHJldHVybiBpc05pbCh2YWwpIHx8IChpc0FycmF5KHZhbCkgJiYgaXNFbXB0eSh2YWwpKTtcbiAgICB9XG5cbiAgICBjb3B5VG9DbGlwYm9hcmQodmFsKSB7XG4gICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHZhbCk7XG4gICAgICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgICAgICdTdWNjZXNzJyxcbiAgICAgICAgICAgIGBUZXh0IENvcGllZGAsXG4gICAgICAgICAgICBgQVBJIGNhbGwgVVJMIGNvcGllZCB0byBjbGlwYm9hcmRgLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICAgIH1cblxuICAgIGdldFJvbGVzQ0xJVmFyaWFibGUoc2VsZWN0ZWRSb2xlcykge1xuICAgICAgICBsZXQgcm9sZXNWYXIgPSAnJztcbiAgICAgICAgc2VsZWN0ZWRSb2xlcy5mb3JFYWNoKChyb2xlLCBpbmRleCk9PiB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgcm9sZXNWYXIgKz0gJywnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm9sZXNWYXIgKz0gcm9sZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByb2xlc1ZhcjtcbiAgICB9XG5cbiAgICBnZXRSb2xlc0NVUkxWYXJpYWJsZShzZWxlY3RlZFJvbGVzKSB7XG4gICAgICAgIGxldCByb2xlc1ZhciA9ICcnO1xuICAgICAgICBzZWxlY3RlZFJvbGVzLmZvckVhY2goKHJvbGUsIGluZGV4KT0+IHtcbiAgICAgICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICByb2xlc1ZhciArPSAnLCAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm9sZXNWYXIgKz0gYFwiJHtyb2xlfVwiYDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJvbGVzVmFyID0gYFske3JvbGVzVmFyfV1gO1xuICAgICAgICByZXR1cm4gcm9sZXNWYXI7XG4gICAgfVxuXG4gICAgY2FuRGVhY3RpdmF0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGFDaGFuZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiBjb25maXJtKCdZb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMuIERvIHlvdSB3YW50IHRvIGxlYXZlIHRoaXMgcGFnZSBhbmQgZGlzY2FyZCB5b3VyIGNoYW5nZXMgb3Igc3RheSBvbiB0aGlzIHBhZ2U/Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGVudGl0eVVwZGF0ZWQoKSB7XG4gICAgICAgIC8vbm8tb3BcbiAgICB9XG5cbiAgICBnZXRSb2xlQXR0cmlidXRlcyh0eXBlOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueml0aVNlcnZpY2UuZ2V0KHR5cGUsIHt9LCBbXSkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHMuZGF0YTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
307
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdGFibGUtZm9ybS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9wcm9qZWN0YWJsZS1mb3Jtcy9wcm9qZWN0YWJsZS1mb3JtLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUNILFNBQVMsRUFHVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXFCLE1BQU0sUUFBUSxDQUFDO0FBQ2xJLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUV4RCxPQUFPLEVBQW1CLGlCQUFpQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFFMUYsT0FBTyxFQUFDLGlCQUFpQixFQUFrQixNQUFNLGtDQUFrQyxDQUFDO0FBQ3BGLE9BQU8sRUFBaUIsYUFBYSxFQUFTLE1BQU0saUJBQWlCLENBQUM7QUFDdEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBR2xDLGFBQWE7QUFDYixNQUFNLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBQyxHQUFHLE1BQU0sQ0FBQztBQUV4RCxNQUFNLE9BQU8sTUFBTTtDQUVsQjtBQUVELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUNyQixVQUFVLEVBQUUsRUFBRTtJQUNkLFFBQVEs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ZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7RXh0ZW5kYWJsZUNvbXBvbmVudH0gZnJvbSBcIi4uL2V4dGVuZGFibGUvZXh0ZW5kYWJsZS5jb21wb25lbnRcIjtcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIERvQ2hlY2ssXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQge2RlZmVyLCBpc0VxdWFsLCB1bnNldCwgZGVib3VuY2UsIGNsb25lRGVlcCwgZm9yRWFjaCwgaXNBcnJheSwgaXNFbXB0eSwgaXNPYmplY3QsIGlzTmlsLCBtYXAsIG9taXRCeSwgc2xpY2V9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7R3Jvd2xlck1vZGVsfSBmcm9tIFwiLi4vbWVzc2FnaW5nL2dyb3dsZXIubW9kZWxcIjtcbmltcG9ydCB7R3Jvd2xlclNlcnZpY2V9IGZyb20gXCIuLi9tZXNzYWdpbmcvZ3Jvd2xlci5zZXJ2aWNlXCI7XG5pbXBvcnQge0V4dGVuc2lvblNlcnZpY2UsIFNIQVJFRFpfRVhURU5TSU9OfSBmcm9tIFwiLi4vZXh0ZW5kYWJsZS9leHRlbnNpb25zLW5vb3Auc2VydmljZVwiO1xuaW1wb3J0IHtJZGVudGl0eX0gZnJvbSBcIi4uLy4uL21vZGVscy9pZGVudGl0eVwiO1xuaW1wb3J0IHtaSVRJX0RBVEFfU0VSVklDRSwgWml0aURhdGFTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMveml0aS1kYXRhLnNlcnZpY2VcIjtcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFJvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge0xvY2F0aW9ufSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IHtjb250ZXh0LCB0YWdzLCByZXNvdXJjZXMsIHNlcnZpY2UsIGFwcH0gPSB3aW5kb3c7XG5cbmV4cG9ydCBjbGFzcyBFbnRpdHkge1xuICAgIG5hbWU6ICcnXG59XG5cbmV4cG9ydCBjb25zdCBLRVlfQ09ERVMgPSB7XG4gICAgTEVGVF9BUlJPVzogMzcsXG4gICAgVVBfQVJST1c6IDM4LFxuICAgIFJJR0hUX0FSUk9XOiAzOSxcbiAgICBET1dOX0FSUk9XOiA0MFxufTtcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIHN0eWxlVXJsczogWycuL3Byb2plY3RhYmxlLWZvcm0uY2xhc3Muc2NzcyddXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFByb2plY3RhYmxlRm9ybSBleHRlbmRzIEV4dGVuZGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBEb0NoZWNrLCBPbkluaXQge1xuICAgIEBJbnB1dCgpIGlzTW9kYWwgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBlbnRpdHlJZDogU3RyaW5nO1xuICAgIEBJbnB1dCgpIGFic3RyYWN0IGZvcm1EYXRhOiBhbnk7XG4gICAgQE91dHB1dCgpIGFic3RyYWN0IGNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgICBAT3V0cHV0KCkgZGF0YUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAVmlld0NoaWxkKCduYW1lRmllbGRJbnB1dCcpIG5hbWVGaWVsZElucHV0OiBFbGVtZW50UmVmO1xuXG4gICAgYWJzdHJhY3QgY2xlYXIoKTogdm9pZDtcbiAgICBhYnN0cmFjdCBzYXZlKCk6IHZvaWQ7XG5cbiAgICBwdWJsaWMgZXJyb3JzOiBhbnkgPSB7fTtcbiAgICBwcm90ZWN0ZWQgZW50aXR5VHlwZSA9ICdpZGVudGl0aWVzJztcbiAgICBwcm90ZWN0ZWQgZW50aXR5Q2xhc3M6IGFueSA9IEVudGl0eTtcbiAgICBwcm90ZWN0ZWQgaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgbW9yZUFjdGlvbnM6IGFueVtdID0gW107XG4gICAgdGFnRWxlbWVudHM6IGFueSA9IFtdO1xuICAgIHRhZ0RhdGE6IGFueSA9IFtdO1xuICAgIGhpZGVUYWdzID0gZmFsc2U7XG4gICAgaW5pdERhdGE6IGFueSA9IHt9O1xuICAgIF9kYXRhQ2hhbmdlID0gZmFsc2U7XG4gICAgYXBpT3B0aW9ucyA9IFt7aWQ6ICdjbGknLCBsYWJlbDogJ0NvcHkgYXMgQ0xJJ30sIHtpZDogJ2N1cmwnLCBsYWJlbDogJ0NvcHkgYXMgQ1VSTCd9XTtcbiAgICBiYXNlUGF0aCA9ICcnO1xuICAgIHByZXZpb3VzUm91dGU7XG4gICAgc2hvd01vcmUgPSBmYWxzZTtcblxuICAgIGNoZWNrRGF0YUNoYW5nZURlYm91bmNlZCA9IGRlYm91bmNlKHRoaXMuY2hlY2tEYXRhQ2hhbmdlLCAxMDAsIHttYXhXYWl0OiAxMDB9KTtcblxuICAgIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFNIQVJFRFpfRVhURU5TSU9OKSBwcm90ZWN0ZWQgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgICAgQEluamVjdChaSVRJX0RBVEFfU0VSVklDRSkgcHJvdGVjdGVkIHppdGlTZXJ2aWNlOiBaaXRpRGF0YVNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCByb3V0ZXI/OiBSb3V0ZXIsXG4gICAgICAgIHByb3RlY3RlZCByb3V0ZT86IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcm90ZWN0ZWQgbG9jYXRpb24/OiBMb2NhdGlvblxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnByZXZpb3VzUm91dGUgPSB0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpLnByZXZpb3VzTmF2aWdhdGlvbj8uZmluYWxVcmw/LnRvU3RyaW5nKCk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHRoaXMucm91dGU/LnBhcmFtcz8uc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWQgPSBwYXJhbXNbJ2lkJ107XG4gICAgICAgICAgICAgICAgaWYgKCFpc0VtcHR5KGlkKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVudGl0eUlkID0gaWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgcm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQ/LnNuYXBzaG90Py5yb3V0ZUNvbmZpZz8ucGF0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IGV2ZW50LnNuYXBzaG90LnJvdXRlQ29uZmlnLnBhdGguc3BsaXQoJy8nKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXNlUGF0aCA9IHBhdGhTZWdtZW50c1swXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIHRoaXMuZXJyb3JzID0ge307XG4gICAgICAgIHRoaXMubmFtZUZpZWxkSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICBpZiAodGhpcy5leHRTZXJ2aWNlPy5tb3JlQWN0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5tb3JlQWN0aW9ucyA9IFsuLi50aGlzLm1vcmVBY3Rpb25zLCAuLi50aGlzLmV4dFNlcnZpY2UubW9yZUFjdGlvbnNdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmVudGl0eUlkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5lbnRpdHlJZCA9PT0gJ2NyZWF0ZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1EYXRhID0gbmV3IHRoaXMuZW50aXR5Q2xhc3MoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXREYXRhID0gY2xvbmVEZWVwKHRoaXMuZm9ybURhdGEpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW50aXR5VXBkYXRlZCgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMueml0aVNlcnZpY2UuZ2V0U3ViZGF0YSh0aGlzLmVudGl0eVR5cGUsIHRoaXMuZW50aXR5SWQsICcnKS50aGVuKChlbnRpdHk6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybURhdGEgPSBlbnRpdHk/LmRhdGE7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0RGF0YSA9IGNsb25lRGVlcCh0aGlzLmZvcm1EYXRhKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVudGl0eVVwZGF0ZWQoKTtcbiAgICAgICAgICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3dNb3JlQ2hhbmdlZChzaG93TW9yZSkge1xuICAgICAgICBpZiAoIXNob3dNb3JlIHx8IHRoaXMuaGlkZVRhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc2V0VGFncygpXG4gICAgfVxuXG4gICAgbG9hZFRhZ3MoKSB7XG4gICAgICAgIHRoaXMuaGlkZVRhZ3MgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhpZGVUYWdzXCIpPT1cInllc1wiO1xuICAgICAgICBpZiAodGhpcy5oaWRlVGFncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNlcnZpY2UuY2FsbChcInRhZ3NcIiwge30sIHRoaXMudGFnc0xvYWRlZC5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICB0YWdzTG9hZGVkKHJlc3VsdHMpIHtcbiAgICAgICAgdGFncy5kYXRhID0gcmVzdWx0cztcbiAgICAgICAgY29udGV4dC5zZXQodGFncy5uYW1lLCB0YWdzLmRhdGEpO1xuICAgICAgICB0YWdzLnRhZ0RhdGEgPSBbXTtcbiAgICAgICAgdGFncy5kYXRhLmZvckVhY2goKHRhZykgPT4ge1xuICAgICAgICAgICAgbGV0IGh0bWw7XG4gICAgICAgICAgICBpZiAodGFnLm9iamVjdHM9PVwiYWxsXCIgfHwgdGFnLm9iamVjdHMuaW5kZXhPZih0aGlzLmVudGl0eVR5cGUpPj0wKSB7XG4gICAgICAgICAgICAgICAgdGFncy50YWdEYXRhW3RhZ3MudGFnRGF0YS5sZW5ndGhdID0gdGFnO1xuICAgICAgICAgICAgICAgIGh0bWwgPSB0aGlzLmdldFRhZ0NvbnRlbnQodGFnKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YWdFbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRhZy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogaHRtbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnRhZ0VsZW1lbnRzLnB1c2godGFnRWwpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlc2V0VGFncygpIHtcbiAgICAgICAgdW5zZXQodGFncywgJ21hcCcpO1xuICAgICAgICBpZiAodGhpcy5oaWRlVGFncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGRlZmVyKCgpID0+IHtcbiAgICAgICAgICAgIHRhZ3MucmVzZXQodGhpcy5mb3JtRGF0YSk7XG4gICAgICAgICAgICB0YWdzLmV2ZW50cygpO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIGdldFRhZ0NvbnRlbnQodGFnKSB7XG4gICAgICAgIGxldCBodG1sID0gJyc7XG4gICAgICAgIGlmICh0YWcudmFsdWU9PVwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIGh0bWwgKz0gJzxpbnB1dCBpZD1cIlRhZ18nK3RhZy5pZCsnXCIgdHlwZT1cInRleHRcIiBkYXRhLXRhZz1cIicrdGFnLmlkKydcIiBtYXhsZW5ndGg9XCI1MDBcIiBwbGFjZWhvbGRlcj1cIicrdGFnLmRlc2NyaXB0aW9uKydcIiAvPic7XG4gICAgICAgIH0gZWxzZSBpZiAodGFnLnZhbHVlPT1cImJvb2xlYW5cIikge1xuICAgICAgICAgICAgaHRtbCArPSAnPGlucHV0IGlkPVwiVGFnXycrdGFnLmlkKydcIiB0eXBlPVwiY2hlY2tib3hcIiBkYXRhLXRhZz1cIicrdGFnLmlkKydcIiAvPic7XG4gICAgICAgIH0gZWxzZSBpZiAodGFnLnZhbHVlPT1cIm1hcFwiKSB7XG4gICAgICAgICAgICBodG1sICs9ICc8ZGl2IGlkPVwiVGFnXycrdGFnLmlkKydfTWFwXCIgZGF0YS1tYXA9XCInK3RhZy5pZCsnXCIgY2xhc3M9XCJtYXBcIj48L2Rpdj4nO1xuICAgICAgICAgICAgaHRtbCArPSAnPGlucHV0IGlkPVwiVGFnXycrdGFnLmlkKydcIiB0eXBlPVwidGV4dFwiIGRhdGEtdGFnPVwiJyt0YWcuaWQrJ1wiIG1heGxlbmd0aD1cIjUwMFwiIHBsYWNlaG9sZGVyPVwiJyt0YWcuZGVzY3JpcHRpb24rJ1wiIC8+JztcbiAgICAgICAgfSBlbHNlIGlmICh0YWcudmFsdWU9PVwiYXZhdGFyXCIpIHtcbiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9XCJmb3JtUm93XCI+JztcbiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgaWQ9XCJUYWdfJyt0YWcuaWQrJ1wiIGRhdGEtaWQ9XCInK3RhZy5pZCsnXCIgZGF0YS1yZXNvdXJjZT1cImF2YXRhclwiIGNsYXNzPVwicmVzb3VyY2UgaWNvbiBwcm9maWxlXCIgdGl0bGU9XCInK3RhZy5kZXNjcmlwdGlvbisnXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyt0YWcuZGVmYXVsdCsnKVwiPjwvZGl2PjxkaXYgaWQ9XCJUYWdfUmVzb3VyY2VzXycrdGFnLmlkKydcIiBjbGFzcz1cInJlc291cmNlc1wiIGRhdGEtaWQ9XCInK3RhZy5pZCsnXCIgZGF0YS1yZXNvdXJjZXM9XCJhdmF0YXJcIj48L2Rpdj4nO1xuICAgICAgICAgICAgaHRtbCArPSAnPGlucHV0IGlkPVwiVGFnXycrdGFnLmlkKydfSGlkZXJcIiBkYXRhLXRhZz1cIicrdGFnLmlkKydcIiB0eXBlPVwiaGlkZGVuXCIvPic7XG4gICAgICAgICAgICByZXNvdXJjZXMuZ2V0KHRhZy5pZCk7XG4gICAgICAgICAgICBjb250ZXh0LmFkZExpc3RlbmVyKFwicmVzb3VyY2VzLVwiK3RhZy5pZCwgdGFncy5sb2FkZWQpO1xuICAgICAgICB9IGVsc2UgaWYgKHRhZy52YWx1ZT09XCJpY29uXCIpIHtcbiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9XCJmb3JtUm93XCI+JztcbiAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgaWQ9XCJUYWdfJyt0YWcuaWQrJ1wiIGRhdGEtaWQ9XCInK3RhZy5pZCsnXCIgZGF0YS1yZXNvdXJjZT1cImljb25cIiBjbGFzcz1cInJlc291cmNlIGljb25cIiB0aXRsZT1cIicrdGFnLmRlc2NyaXB0aW9uKydcIiBzdHlsZT1cImJhY2tncm91bmQtaW1hZ2U6IHVybCgnK3RhZy5kZWZhdWx0KycpXCI+PC9kaXY+PGRpdiBpZD1cIlRhZ19SZXNvdXJjZXNfJyt0YWcuaWQrJ1wiIGNsYXNzPVwicmVzb3VyY2VzXCIgZGF0YS1pZD1cIicrdGFnLmlkKydcIiBkYXRhLXJlc291cmNlcz1cImljb25cIj48L2Rpdj4nO1xuICAgICAgICAgICAgaHRtbCArPSAnPGlucHV0IGlkPVwiVGFnXycrdGFnLmlkKydfSGlkZXJcIiBkYXRhLXRhZz1cIicrdGFnLmlkKydcIiB0eXBlPVwiaGlkZGVuXCIvPic7XG4gICAgICAgICAgICByZXNvdXJjZXMuZ2V0KHRhZy5pZCk7XG4gICAgICAgICAgICBjb250ZXh0LmFkZExpc3RlbmVyKFwicmVzb3VyY2VzLVwiK3RhZy5pZCwgdGFncy5sb2FkZWQpO1xuICAgICAgICB9IGVsc2UgaWYgKHRhZy52YWx1ZT09XCJhcnJheVwiKSB7XG4gICAgICAgICAgICBodG1sICs9ICc8ZGl2IGlkPVwiVGFnXycrdGFnLmlkKydfU2VsZWN0ZWRcIj48L2Rpdj4nO1xuICAgICAgICAgICAgaHRtbCArPSAnPGlucHV0IGlkPVwiVGFnXycrdGFnLmlkKydcIiB0eXBlPVwidGV4dFwiIGRhdGEtdGFnPVwiJyt0YWcuaWQrJ1wiIGRhdGEtYXJyYXk9XCInK3RhZy5pZCsnXCIgbWF4bGVuZ3RoPVwiNTAwXCIgcGxhY2Vob2xkZXI9XCInK3RhZy5kZXNjcmlwdGlvbisnXCIgLz4nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBodG1sO1xuICAgIH1cblxuICAgIGdldFRhZ1ZhbHVlcygpIHtcbiAgICAgICAgcmV0dXJuIHRhZ3MudmFsKCk7XG4gICAgfVxuXG4gICAgY2xvc2VGb3JtKHJlZnJlc2ggPSB0cnVlLCBpZ25vcmVDaGFuZ2VzID0gZmFsc2UsIGRhdGE/LCBldmVudD8pIHtcbiAgICAgICAgaWYgKCFpZ25vcmVDaGFuZ2VzICYmIHRoaXMuX2RhdGFDaGFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpcm1lZCA9IGNvbmZpcm0oJ1lvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcy4gRG8geW91IHdhbnQgdG8gbGVhdmUgdGhpcyBwYWdlIGFuZCBkaXNjYXJkIHlvdXIgY2hhbmdlcyBvciBzdGF5IG9uIHRoaXMgcGFnZT8nKTtcbiAgICAgICAgICAgIGlmICghY29uZmlybWVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzTW9kYWwpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VNb2RhbChyZWZyZXNoLCBpZ25vcmVDaGFuZ2VzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmV0dXJuVG9MaXN0UGFnZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvc2VNb2RhbChyZWZyZXNoID0gdHJ1ZSwgaWdub3JlQ2hhbmdlcyA9IGZhbHNlLCBkYXRhPywgZXZlbnQ/KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2UuZW1pdCh7cmVmcmVzaDogcmVmcmVzaH0pO1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuVG9MaXN0UGFnZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubG9jYXRpb24gJiYgdGhpcy5wcmV2aW91c1JvdXRlKSB7XG4gICAgICAgICAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyPy5uYXZpZ2F0ZUJ5VXJsKGAke3RoaXMuYmFzZVBhdGh9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0RvQ2hlY2soKSB7XG4gICAgICAgIHRoaXMuY2hlY2tEYXRhQ2hhbmdlRGVib3VuY2VkKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNoZWNrRGF0YUNoYW5nZSgpIHtcbiAgICAgICAgbGV0IGluaXREYXRhID0gY2xvbmVEZWVwKHRoaXMuaW5pdERhdGEpO1xuICAgICAgICBpbml0RGF0YSA9IHRoaXMub21pdEVtcHR5RGF0YShpbml0RGF0YSk7XG4gICAgICAgIGxldCBmb3JtRGF0YSA9IGNsb25lRGVlcCh0aGlzLmZvcm1EYXRhKTtcbiAgICAgICAgZm9ybURhdGEgPSB0aGlzLm9taXRFbXB0eURhdGEoZm9ybURhdGEpO1xuICAgICAgICBjb25zdCBkYXRhQ2hhbmdlID0gIWlzRXF1YWwoaW5pdERhdGEsIGZvcm1EYXRhKTtcbiAgICAgICAgaWYgKGRhdGFDaGFuZ2UgIT09IHRoaXMuX2RhdGFDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YUNoYW5nZS5lbWl0KGRhdGFDaGFuZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2RhdGFDaGFuZ2UgPSBkYXRhQ2hhbmdlO1xuICAgICAgICBhcHAuaXNEaXJ0eSA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9taXRFbXB0eURhdGEob2JqZWN0KSB7XG4gICAgICAgIGZvckVhY2gob2JqZWN0LCAodmFsLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGlmKHRoaXMub21pdERhdGFJdGVyYXRlZSh2YWwpKSB7XG4gICAgICAgICAgICAgICAgdW5zZXQob2JqZWN0LCBrZXkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmKGlzT2JqZWN0KHZhbCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9taXRFbXB0eURhdGEodmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgb21pdERhdGFJdGVyYXRlZSh2YWwpIHtcbiAgICAgICAgcmV0dXJuIGlzTmlsKHZhbCkgfHwgKGlzQXJyYXkodmFsKSAmJiBpc0VtcHR5KHZhbCkpO1xuICAgIH1cblxuICAgIGNvcHlUb0NsaXBib2FyZCh2YWwpIHtcbiAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodmFsKTtcbiAgICAgICAgY29uc3QgZ3Jvd2xlckRhdGEgPSBuZXcgR3Jvd2xlck1vZGVsKFxuICAgICAgICAgICAgJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgJ1N1Y2Nlc3MnLFxuICAgICAgICAgICAgYFRleHQgQ29waWVkYCxcbiAgICAgICAgICAgIGBBUEkgY2FsbCBVUkwgY29waWVkIHRvIGNsaXBib2FyZGAsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gICAgfVxuXG4gICAgZ2V0Um9sZXNDTElWYXJpYWJsZShzZWxlY3RlZFJvbGVzKSB7XG4gICAgICAgIGxldCByb2xlc1ZhciA9ICcnO1xuICAgICAgICBzZWxlY3RlZFJvbGVzLmZvckVhY2goKHJvbGUsIGluZGV4KT0+IHtcbiAgICAgICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICByb2xlc1ZhciArPSAnLCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByb2xlc1ZhciArPSByb2xlO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJvbGVzVmFyO1xuICAgIH1cblxuICAgIGdldFJvbGVzQ1VSTFZhcmlhYmxlKHNlbGVjdGVkUm9sZXMpIHtcbiAgICAgICAgbGV0IHJvbGVzVmFyID0gJyc7XG4gICAgICAgIHNlbGVjdGVkUm9sZXMuZm9yRWFjaCgocm9sZSwgaW5kZXgpPT4ge1xuICAgICAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgIHJvbGVzVmFyICs9ICcsICc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByb2xlc1ZhciArPSBgXCIke3JvbGV9XCJgO1xuICAgICAgICB9KTtcbiAgICAgICAgcm9sZXNWYXIgPSBgWyR7cm9sZXNWYXJ9XWA7XG4gICAgICAgIHJldHVybiByb2xlc1ZhcjtcbiAgICB9XG5cbiAgICBjYW5EZWFjdGl2YXRlKCkge1xuICAgICAgICBpZiAodGhpcy5fZGF0YUNoYW5nZSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbmZpcm0oJ1lvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcy4gRG8geW91IHdhbnQgdG8gbGVhdmUgdGhpcyBwYWdlIGFuZCBkaXNjYXJkIHlvdXIgY2hhbmdlcyBvciBzdGF5IG9uIHRoaXMgcGFnZT8nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZW50aXR5VXBkYXRlZCgpIHtcbiAgICAgICAgLy9uby1vcFxuICAgIH1cblxuICAgIGdldFJvbGVBdHRyaWJ1dGVzKHR5cGU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy56aXRpU2VydmljZS5nZXQodHlwZSwge30sIFtdKS50aGVuKChyZXN1bHRzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0cy5kYXRhO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=