@esolve/ng-esolve-connect 0.102.2 → 0.103.0

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 (65) hide show
  1. package/esm2022/lib/account/esolve-account.service.mjs +4 -4
  2. package/esm2022/lib/albums/services/esolve-albums.service.mjs +4 -4
  3. package/esm2022/lib/assets/esolve-assets.service.mjs +4 -4
  4. package/esm2022/lib/auth/esolve-auth-interceptor.service.mjs +4 -4
  5. package/esm2022/lib/auth/esolve-auth.service.mjs +4 -4
  6. package/esm2022/lib/auth/esolve-otp.service.mjs +4 -4
  7. package/esm2022/lib/banners/esolve-banner.service.mjs +4 -4
  8. package/esm2022/lib/cart/esolve-cart.service.mjs +4 -4
  9. package/esm2022/lib/category-tree/esolve-category-tree.service.mjs +4 -4
  10. package/esm2022/lib/competitions/services/esolve-competitions.service.mjs +4 -4
  11. package/esm2022/lib/core/esolve-config.service.mjs +4 -4
  12. package/esm2022/lib/coupons/esolve-coupons.service.mjs +4 -4
  13. package/esm2022/lib/deliveries/esolve-deliveries.service.mjs +4 -4
  14. package/esm2022/lib/device/esolve-device.service.mjs +4 -4
  15. package/esm2022/lib/enquiry/esolve-enquiry.service.mjs +4 -4
  16. package/esm2022/lib/geocoder/esolve-geocoder.service.mjs +4 -4
  17. package/esm2022/lib/images/directives/cdn-src.directive.mjs +4 -4
  18. package/esm2022/lib/locations/esolve-locations.service.mjs +4 -4
  19. package/esm2022/lib/manufacturers/esolve-manufacturers.service.mjs +4 -4
  20. package/esm2022/lib/menu/esolve-menu.service.mjs +4 -4
  21. package/esm2022/lib/news/esolve-news.service.mjs +4 -4
  22. package/esm2022/lib/ng-esolve-connect.module.mjs +8 -7
  23. package/esm2022/lib/payment/esolve-payment.service.mjs +4 -4
  24. package/esm2022/lib/ranges/esolve-ranges.service.mjs +4 -4
  25. package/esm2022/lib/reviews/services/esolve-reviews.service.mjs +4 -4
  26. package/esm2022/lib/seo/esolve-seo.service.mjs +4 -4
  27. package/esm2022/lib/session/esolve-session-metadata.service.mjs +4 -4
  28. package/esm2022/lib/session/esolve-session.service.mjs +4 -4
  29. package/esm2022/lib/shared/cookie/esolve-cookie.service.mjs +4 -4
  30. package/esm2022/lib/shared/errors/esolve-error-handler.service.mjs +4 -4
  31. package/esm2022/lib/shared/response/esolve-response-handler.service.mjs +4 -4
  32. package/esm2022/lib/shipping/esolve-shipping.service.mjs +4 -4
  33. package/esm2022/lib/specials/esolve-specials.service.mjs +4 -4
  34. package/esm2022/lib/stock/esolve-stock.service.mjs +4 -4
  35. package/esm2022/lib/suppliers/esolve-suppliers.service.mjs +4 -4
  36. package/esm2022/lib/tags/esolve-tags.service.mjs +4 -4
  37. package/esm2022/lib/topics/esolve-topic.service.mjs +4 -4
  38. package/esm2022/lib/transactions/esolve-transactions.service.mjs +4 -4
  39. package/esm2022/lib/vouchers/esolve-vouchers.service.mjs +4 -4
  40. package/esm2022/lib/wallet/esolve-wallet.service.mjs +4 -4
  41. package/esm2022/lib/wishlist/esolve-wishlist.service.mjs +4 -4
  42. package/esm2022/media/lib/components/media-layout/esolve-media-layout.component.mjs +5 -6
  43. package/esm2022/media/lib/components/media-section/esolve-media-section.component.mjs +5 -5
  44. package/esm2022/media/lib/interfaces/esolve-section-key-options.interface.mjs +2 -0
  45. package/esm2022/media/lib/interfaces/index.mjs +2 -1
  46. package/esm2022/media/lib/ng-esolve-connect-media.module.mjs +5 -5
  47. package/esm2022/media/lib/services/esolve-media-layout.service.mjs +4 -4
  48. package/esm2022/media/lib/services/esolve-media.service.mjs +4 -4
  49. package/esm2022/notifications/lib/services/esolve-notifications.service.mjs +4 -4
  50. package/esm2022/survey/lib/services/esolve-survey.service.mjs +4 -4
  51. package/fesm2022/esolve-ng-esolve-connect-media.mjs +20 -20
  52. package/fesm2022/esolve-ng-esolve-connect-media.mjs.map +1 -1
  53. package/fesm2022/esolve-ng-esolve-connect-notifications.mjs +3 -3
  54. package/fesm2022/esolve-ng-esolve-connect-notifications.mjs.map +1 -1
  55. package/fesm2022/esolve-ng-esolve-connect-survey.mjs +3 -3
  56. package/fesm2022/esolve-ng-esolve-connect-survey.mjs.map +1 -1
  57. package/fesm2022/esolve-ng-esolve-connect.mjs +128 -127
  58. package/fesm2022/esolve-ng-esolve-connect.mjs.map +1 -1
  59. package/lib/ng-esolve-connect.module.d.ts +1 -2
  60. package/lib/wishlist/classes/esolve-wishlist-item.model.d.ts +2 -2
  61. package/media/lib/components/media-layout/esolve-media-layout.component.d.ts +1 -2
  62. package/media/lib/components/media-section/esolve-media-section.component.d.ts +1 -2
  63. package/media/lib/interfaces/esolve-section-key-options.interface.d.ts +7 -0
  64. package/media/lib/interfaces/index.d.ts +1 -0
  65. package/package.json +6 -6
@@ -230,13 +230,13 @@ export class EsolveAuthService {
230
230
  }
231
231
  return throwError(() => error);
232
232
  }
233
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: EsolveAuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
234
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: EsolveAuthService, providedIn: 'root' }); }
233
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: EsolveAuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
234
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: EsolveAuthService, providedIn: 'root' }); }
235
235
  }
236
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: EsolveAuthService, decorators: [{
236
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: EsolveAuthService, decorators: [{
237
237
  type: Injectable,
238
238
  args: [{
239
239
  providedIn: 'root',
240
240
  }]
241
241
  }], ctorParameters: () => [] });
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9hdXRoL2Vzb2x2ZS1hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUNILFVBQVUsRUFDVixVQUFVLEVBRVYsV0FBVyxHQUNkLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLGNBQWMsRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXRELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFZbEQsTUFBTSxPQUFPLGlCQUFpQjtJQU0xQjtRQUxpQixXQUFNLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDckMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQixZQUFPLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdkMsaUJBQVksR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUc5RCxJQUFJLENBQUMsT0FBTzthQUNQLFlBQVksRUFBRTthQUNkLElBQUksQ0FDRCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsRUFDeEMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJ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RSxDQUFDO1lBQ2pDLEtBQUssQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUNyQyxDQUFDO1FBRUQsSUFBSSxRQUFRLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDM0IsS0FBSyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQzFDLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDOytHQWxVUSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZkLE1BQU07OzRGQUVULGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgSHR0cENsaWVudCxcbiAgICBIdHRwUGFyYW1zLFxuICAgIEh0dHBFcnJvclJlc3BvbnNlLFxuICAgIEh0dHBIZWFkZXJzLFxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwLCBjYXRjaEVycm9yLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRXNvbHZlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgRXNvbHZlRXJyb3JIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZCc7XG5cbmltcG9ydCB7IEVzb2x2ZVNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2Vzc2lvbic7XG5cbmltcG9ydCB7XG4gICAgRXNvbHZlQXV0aEdldFJlc3BvbnNlLFxuICAgIEVzb2x2ZUF1dGhDaGVja1Jlc3BvbnNlLFxuICAgIEVzb2x2ZUF1dGhSZXN1bHQsXG4gICAgRXNvbHZlTG9naW5SZXNwb25zZSxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEVzb2x2ZUF1dGhTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdChFc29sdmVDb25maWdTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uID0gaW5qZWN0KEVzb2x2ZVNlc3Npb25TZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVycm9ySGFuZGxlciA9IGluamVjdChFc29sdmVFcnJvckhhbmRsZXJTZXJ2aWNlKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnNlc3Npb25cbiAgICAgICAgICAgIC5vblNlc3Npb25FbmQoKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY2hlY2tBY2Nlc3NUb2tlbigpKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKG51bGwpKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBdXRoZW50aWNhdGlvbihyZXN1bHQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvbi5leHBpcmVTZXNzaW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zZXNzaW9uLm9uRXhwaXJlKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9nb3V0KCkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIERlYWwgd2l0aCBlcnJvciBncmFjZWZ1bGx5XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFjY2Vzc1Rva2VuKFxuICAgICAgICBlbWFpbDogc3RyaW5nLFxuICAgICAgICBwYXNzd29yZDogc3RyaW5nLFxuICAgICAgICBhbm9ueW1vdXMgPSBmYWxzZSxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZUF1dGhHZXRSZXNwb25zZT4ge1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcblxuICAgICAgICBpZiAoYW5vbnltb3VzKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdhbm9ueW1vdXMnLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbWFpbCAhPT0gJycpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2VtYWlsJywgZW1haWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhc3N3b3JkICE9PSAnJykge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncGFzc3dvcmQnLCBwYXNzd29yZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUF1dGhHZXRSZXNwb25zZT4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWFjY2Vzcy10b2tlbi5waHBgLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6ICcqJyxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudHlwZSA9PT0gJ2Vycm9yJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudHlwZSA9PT0gJ2V4Y2VwdGlvbidcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvciksXG4gICAgICAgICAgICAgICAgdGFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUF1dGhlbnRpY2F0aW9uKHJlc3BvbnNlLmFkZGl0aW9uYWxfZGF0YSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBbm9ueW1vdXNTZXNzaW9uKCk6IE9ic2VydmFibGU8RXNvbHZlQXV0aEdldFJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFjY2Vzc1Rva2VuKCcnLCAnJywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGF1dG9Mb2dpbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVzdG9yZSgpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QW5vbnltb3VzU2Vzc2lvbigpLFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXNwb25zZS5hZGRpdGlvbmFsX2RhdGE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQXV0aGVudGljYXRpb24ocmVzdWx0KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGxvZ2luKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgICAgICBjb25zdCBib2R5ID0ge1xuICAgICAgICAgICAgbG9naW46IHtcbiAgICAgICAgICAgICAgICBlbWFpbCxcbiAgICAgICAgICAgICAgICBwYXNzd29yZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLnBvc3Q8RXNvbHZlTG9naW5SZXNwb25zZT4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2V0LWxvZ2luLnBocGAsXG4gICAgICAgICAgICAgICAgYm9keSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlc3BvbnNlcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZXNwb25zZXMubGVuZ3RoIDw9IDBcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvZ2luX3Jlc3BvbnNlID0gcmVzcG9uc2UucmVzcG9uc2VzWzBdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSByZXNwb25zZS5hZGRpdGlvbmFsX2RhdGE7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9naW5fcmVzcG9uc2Uuc3RhdHVzLnN0YXRlICE9PSAnc3VjY2VzcycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2luX3Jlc3BvbnNlLnN0YXR1cy5zdGF0ZSAhPT0gJ3dhcm5pbmcnXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbG9naW5fcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlc3BvbnNlX2xvZyBvZiBsb2dpbl9yZXNwb25zZS5sb2cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZV9sb2cudHlwZSA9PT0gJ3N1Y2Nlc3MnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VfbG9nLm1lc3NhZ2VfY29kZSA9PT0gJ2xvZ2luX3N1Y2Nlc3MnXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1c2VyX2lkID0gK2xvZ2luX3Jlc3BvbnNlLmVzb2x2ZV9pZDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGxvZ2luJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBdXRoZW50aWNhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogcmVzdWx0LmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9pZDogcmVzdWx0LnVzZXJfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc19sZXZlbDogcmVzdWx0LmFjY2Vzc19sZXZlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25faWQ6IHJlc3VsdC5sb2NhdGlvbl9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzX2lkOiByZXN1bHQuYWRkcmVzc2VzX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlwcGluZ19pZDogcmVzdWx0LnNoaXBwaW5nX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBpcmVzOiByZXN1bHQuZXhwaXJlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwaXJ5X3RpbWU6IHJlc3VsdC5leHBpcnlfdGltZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhY2VfcGVyaW9kOiByZXN1bHQuZ3JhY2VfcGVyaW9kLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRzX2lkOiByZXN1bHQuY2xpZW50c19pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1c2VyX2lkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbG9naW5fcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NldC1sb2dpbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvclJlcyxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGxvZ291dCgpOiBQcm9taXNlPEVzb2x2ZUF1dGhHZXRSZXNwb25zZT4ge1xuICAgICAgICB0aGlzLnNlc3Npb24uc3RvcFRpbWVyKCk7XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgICAgIHRoaXMuZ2V0QWNjZXNzVG9rZW4oJycsICcnLCB0cnVlKSxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHZhbGlkYXRlQ2FjaGVkVG9rZW5zKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBsZXQgdmFsaWQgPSBmYWxzZTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbi5nZXRDYWNoZWRTZXNzaW9uKCk7XG5cbiAgICAgICAgICAgIGlmICghc2Vzc2lvbikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzZXNzaW9uJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY2hlY2tBY2Nlc3NUb2tlbihzZXNzaW9uKTtcblxuICAgICAgICAgICAgaWYgKCFyZXN1bHQua2V5KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGtleScpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YWxpZCA9IHRydWU7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLnNlc3Npb24ucmVzZXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWxpZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNoZWNrQWNjZXNzVG9rZW4oXG4gICAgICAgIHRva2VuID0gdGhpcy5zZXNzaW9uLmdldFRva2VuKCksXG4gICAgKTogUHJvbWlzZTxFc29sdmVBdXRoUmVzdWx0PiB7XG4gICAgICAgIGlmICh0b2tlbiA9PT0gJycpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBUb2tlbicpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgICAgIHRoaXMuaHR0cC5nZXQ8RXNvbHZlQXV0aENoZWNrUmVzcG9uc2U+KFxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1hY2Nlc3MtdG9rZW4ucGhwYCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogJyonLFxuICAgICAgICAgICAgICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAsXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChyZXNwb25zZS50eXBlID09PSAnZXJyb3InIHx8IHJlc3BvbnNlLnR5cGUgPT09ICdleGNlcHRpb24nKSB7XG4gICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFkZGl0aW9uYWxfZGF0YSA9IHJlc3BvbnNlLmFkZGl0aW9uYWxfZGF0YTtcblxuICAgICAgICBpZiAoIWFkZGl0aW9uYWxfZGF0YS5rZXlfb2theSkge1xuICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWRkaXRpb25hbF9kYXRhLmtleSkge1xuICAgICAgICAgICAgdG9rZW4gPSBhZGRpdGlvbmFsX2RhdGEua2V5O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0OiBFc29sdmVBdXRoUmVzdWx0ID0ge1xuICAgICAgICAgICAga2V5OiB0b2tlbixcbiAgICAgICAgICAgIGV4cGlyZXM6ICthZGRpdGlvbmFsX2RhdGEuZXhwaXJlcyxcbiAgICAgICAgICAgIGV4cGlyeV90aW1lOiArYWRkaXRpb25hbF9kYXRhLmV4cGlyeV90aW1lLFxuICAgICAgICAgICAgZ3JhY2VfcGVyaW9kOiArYWRkaXRpb25hbF9kYXRhLmdyYWNlX3BlcmlvZCxcbiAgICAgICAgICAgIGxvY2F0aW9uX2lkOiArYWRkaXRpb25hbF9kYXRhLmxvY2F0aW9uX2lkLFxuICAgICAgICAgICAgdXNlcl9pZDogK2FkZGl0aW9uYWxfZGF0YS51c2VyX2lkLFxuICAgICAgICAgICAgYWNjZXNzX2xldmVsOiArYWRkaXRpb25hbF9kYXRhLmFjY2Vzc19sZXZlbCxcbiAgICAgICAgICAgIGFkZHJlc3Nlc19pZDogK2FkZGl0aW9uYWxfZGF0YS5hZGRyZXNzZXNfaWQsXG4gICAgICAgICAgICBzaGlwcGluZ19pZDogK2FkZGl0aW9uYWxfZGF0YS5zaGlwcGluZ19pZCxcbiAgICAgICAgICAgIGNsaWVudHNfaWQ6ICthZGRpdGlvbmFsX2RhdGEuY2xpZW50c19pZCxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgcmVzdG9yZSgpOiBQcm9taXNlPEVzb2x2ZUF1dGhSZXN1bHQgfCBudWxsPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuc2Vzc2lvbi5nZXRDYWNoZWRTZXNzaW9uKCk7XG5cbiAgICAgICAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdG9rZW4nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jaGVja0FjY2Vzc1Rva2VuKHRva2VuKTtcblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuc2Vzc2lvbi5yZXNldCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlcnNcblxuICAgIHB1YmxpYyBoYW5kbGVFeHRlcm5hbEF1dGhlbnRpY2F0aW9uKHJlc3VsdDogRXNvbHZlQXV0aFJlc3VsdCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhbmRsZUF1dGhlbnRpY2F0aW9uKHJlc3VsdCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVBdXRoZW50aWNhdGlvbihyZXN1bHQ6IEVzb2x2ZUF1dGhSZXN1bHQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFyZXN1bHQua2V5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlc3Npb24uaGFuZGxlU2Vzc2lvbihcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0b2tlbjogcmVzdWx0LmtleSxcbiAgICAgICAgICAgICAgICB1c2VyX2lkOiArcmVzdWx0LnVzZXJfaWQsXG4gICAgICAgICAgICAgICAgYWNjZXNzX2xldmVsOiArcmVzdWx0LmFjY2Vzc19sZXZlbCxcbiAgICAgICAgICAgICAgICBsb2NhdGlvbl9pZDogK3Jlc3VsdC5sb2NhdGlvbl9pZCxcbiAgICAgICAgICAgICAgICBhZGRyZXNzZXNfaWQ6ICtyZXN1bHQuYWRkcmVzc2VzX2lkLFxuICAgICAgICAgICAgICAgIHNoaXBwaW5nX2lkOiArcmVzdWx0LnNoaXBwaW5nX2lkLFxuICAgICAgICAgICAgICAgIGNsaWVudHNfaWQ6ICtyZXN1bHQuY2xpZW50c19pZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICArcmVzdWx0LmV4cGlyeV90aW1lLFxuICAgICAgICAgICAgK3Jlc3VsdC5ncmFjZV9wZXJpb2QsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVFcnJvcihcbiAgICAgICAgZXJyb3JSZXM6IEVzb2x2ZUF1dGhHZXRSZXNwb25zZSB8IEVzb2x2ZUF1dGhDaGVja1Jlc3BvbnNlLFxuICAgICk6IE9ic2VydmFibGU8bmV2ZXI+IHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSB7XG4gICAgICAgICAgICBtZXNzYWdlOiAnQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCcsXG4gICAgICAgICAgICBkYXRhOiB7fSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoIWVycm9yUmVzLnR5cGUgfHwgIWVycm9yUmVzLnNlcnZpY2VfdHlwZSB8fCAhZXJyb3JSZXMubWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9yUmVzLm1lc3NhZ2UudHJpbSgpICE9PSAnJykge1xuICAgICAgICAgICAgZXJyb3IubWVzc2FnZSA9IGVycm9yUmVzLm1lc3NhZ2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXJyb3JSZXMuYWRkaXRpb25hbF9kYXRhKSB7XG4gICAgICAgICAgICBlcnJvci5kYXRhID0gZXJyb3JSZXMuYWRkaXRpb25hbF9kYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgIH1cbn1cbiJdfQ==
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9hdXRoL2Vzb2x2ZS1hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUNILFVBQVUsRUFDVixVQUFVLEVBRVYsV0FBVyxHQUNkLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLGNBQWMsRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXRELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFZbEQsTUFBTSxPQUFPLGlCQUFpQjtJQU0xQjtRQUxpQixXQUFNLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDckMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQixZQUFPLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdkMsaUJBQVksR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUc5RCxJQUFJLENBQUMsT0FBTzthQUNQLFlBQVksRUFBRTthQUNkLElBQUksQ0FDRCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsRUFDeEMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJ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RSxDQUFDO1lBQ2pDLEtBQUssQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUNyQyxDQUFDO1FBRUQsSUFBSSxRQUFRLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDM0IsS0FBSyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQzFDLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDOzhHQWxVUSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZkLE1BQU07OzJGQUVULGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgSHR0cENsaWVudCxcbiAgICBIdHRwUGFyYW1zLFxuICAgIEh0dHBFcnJvclJlc3BvbnNlLFxuICAgIEh0dHBIZWFkZXJzLFxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwLCBjYXRjaEVycm9yLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRXNvbHZlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgRXNvbHZlRXJyb3JIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZCc7XG5cbmltcG9ydCB7IEVzb2x2ZVNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2Vzc2lvbic7XG5cbmltcG9ydCB7XG4gICAgRXNvbHZlQXV0aEdldFJlc3BvbnNlLFxuICAgIEVzb2x2ZUF1dGhDaGVja1Jlc3BvbnNlLFxuICAgIEVzb2x2ZUF1dGhSZXN1bHQsXG4gICAgRXNvbHZlTG9naW5SZXNwb25zZSxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEVzb2x2ZUF1dGhTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdChFc29sdmVDb25maWdTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uID0gaW5qZWN0KEVzb2x2ZVNlc3Npb25TZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVycm9ySGFuZGxlciA9IGluamVjdChFc29sdmVFcnJvckhhbmRsZXJTZXJ2aWNlKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnNlc3Npb25cbiAgICAgICAgICAgIC5vblNlc3Npb25FbmQoKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY2hlY2tBY2Nlc3NUb2tlbigpKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKG51bGwpKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBdXRoZW50aWNhdGlvbihyZXN1bHQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvbi5leHBpcmVTZXNzaW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zZXNzaW9uLm9uRXhwaXJlKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9nb3V0KCkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIERlYWwgd2l0aCBlcnJvciBncmFjZWZ1bGx5XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFjY2Vzc1Rva2VuKFxuICAgICAgICBlbWFpbDogc3RyaW5nLFxuICAgICAgICBwYXNzd29yZDogc3RyaW5nLFxuICAgICAgICBhbm9ueW1vdXMgPSBmYWxzZSxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZUF1dGhHZXRSZXNwb25zZT4ge1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcblxuICAgICAgICBpZiAoYW5vbnltb3VzKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdhbm9ueW1vdXMnLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbWFpbCAhPT0gJycpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2VtYWlsJywgZW1haWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhc3N3b3JkICE9PSAnJykge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncGFzc3dvcmQnLCBwYXNzd29yZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUF1dGhHZXRSZXNwb25zZT4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWFjY2Vzcy10b2tlbi5waHBgLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6ICcqJyxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudHlwZSA9PT0gJ2Vycm9yJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudHlwZSA9PT0gJ2V4Y2VwdGlvbidcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvciksXG4gICAgICAgICAgICAgICAgdGFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUF1dGhlbnRpY2F0aW9uKHJlc3BvbnNlLmFkZGl0aW9uYWxfZGF0YSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBbm9ueW1vdXNTZXNzaW9uKCk6IE9ic2VydmFibGU8RXNvbHZlQXV0aEdldFJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFjY2Vzc1Rva2VuKCcnLCAnJywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGF1dG9Mb2dpbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVzdG9yZSgpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QW5vbnltb3VzU2Vzc2lvbigpLFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXNwb25zZS5hZGRpdGlvbmFsX2RhdGE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQXV0aGVudGljYXRpb24ocmVzdWx0KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGxvZ2luKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgICAgICBjb25zdCBib2R5ID0ge1xuICAgICAgICAgICAgbG9naW46IHtcbiAgICAgICAgICAgICAgICBlbWFpbCxcbiAgICAgICAgICAgICAgICBwYXNzd29yZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLnBvc3Q8RXNvbHZlTG9naW5SZXNwb25zZT4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2V0LWxvZ2luLnBocGAsXG4gICAgICAgICAgICAgICAgYm9keSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlc3BvbnNlcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZXNwb25zZXMubGVuZ3RoIDw9IDBcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvZ2luX3Jlc3BvbnNlID0gcmVzcG9uc2UucmVzcG9uc2VzWzBdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSByZXNwb25zZS5hZGRpdGlvbmFsX2RhdGE7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9naW5fcmVzcG9uc2Uuc3RhdHVzLnN0YXRlICE9PSAnc3VjY2VzcycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2luX3Jlc3BvbnNlLnN0YXR1cy5zdGF0ZSAhPT0gJ3dhcm5pbmcnXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbG9naW5fcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlc3BvbnNlX2xvZyBvZiBsb2dpbl9yZXNwb25zZS5sb2cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZV9sb2cudHlwZSA9PT0gJ3N1Y2Nlc3MnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VfbG9nLm1lc3NhZ2VfY29kZSA9PT0gJ2xvZ2luX3N1Y2Nlc3MnXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1c2VyX2lkID0gK2xvZ2luX3Jlc3BvbnNlLmVzb2x2ZV9pZDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGxvZ2luJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBdXRoZW50aWNhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogcmVzdWx0LmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9pZDogcmVzdWx0LnVzZXJfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc19sZXZlbDogcmVzdWx0LmFjY2Vzc19sZXZlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25faWQ6IHJlc3VsdC5sb2NhdGlvbl9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzX2lkOiByZXN1bHQuYWRkcmVzc2VzX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlwcGluZ19pZDogcmVzdWx0LnNoaXBwaW5nX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBpcmVzOiByZXN1bHQuZXhwaXJlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwaXJ5X3RpbWU6IHJlc3VsdC5leHBpcnlfdGltZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhY2VfcGVyaW9kOiByZXN1bHQuZ3JhY2VfcGVyaW9kLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRzX2lkOiByZXN1bHQuY2xpZW50c19pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1c2VyX2lkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbG9naW5fcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwUG9zdEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NldC1sb2dpbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvclJlcyxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGxvZ291dCgpOiBQcm9taXNlPEVzb2x2ZUF1dGhHZXRSZXNwb25zZT4ge1xuICAgICAgICB0aGlzLnNlc3Npb24uc3RvcFRpbWVyKCk7XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgICAgIHRoaXMuZ2V0QWNjZXNzVG9rZW4oJycsICcnLCB0cnVlKSxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHZhbGlkYXRlQ2FjaGVkVG9rZW5zKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBsZXQgdmFsaWQgPSBmYWxzZTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbi5nZXRDYWNoZWRTZXNzaW9uKCk7XG5cbiAgICAgICAgICAgIGlmICghc2Vzc2lvbikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzZXNzaW9uJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY2hlY2tBY2Nlc3NUb2tlbihzZXNzaW9uKTtcblxuICAgICAgICAgICAgaWYgKCFyZXN1bHQua2V5KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGtleScpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YWxpZCA9IHRydWU7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLnNlc3Npb24ucmVzZXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWxpZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNoZWNrQWNjZXNzVG9rZW4oXG4gICAgICAgIHRva2VuID0gdGhpcy5zZXNzaW9uLmdldFRva2VuKCksXG4gICAgKTogUHJvbWlzZTxFc29sdmVBdXRoUmVzdWx0PiB7XG4gICAgICAgIGlmICh0b2tlbiA9PT0gJycpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBUb2tlbicpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgICAgIHRoaXMuaHR0cC5nZXQ8RXNvbHZlQXV0aENoZWNrUmVzcG9uc2U+KFxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC1hY2Nlc3MtdG9rZW4ucGhwYCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogJyonLFxuICAgICAgICAgICAgICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAsXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChyZXNwb25zZS50eXBlID09PSAnZXJyb3InIHx8IHJlc3BvbnNlLnR5cGUgPT09ICdleGNlcHRpb24nKSB7XG4gICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFkZGl0aW9uYWxfZGF0YSA9IHJlc3BvbnNlLmFkZGl0aW9uYWxfZGF0YTtcblxuICAgICAgICBpZiAoIWFkZGl0aW9uYWxfZGF0YS5rZXlfb2theSkge1xuICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWRkaXRpb25hbF9kYXRhLmtleSkge1xuICAgICAgICAgICAgdG9rZW4gPSBhZGRpdGlvbmFsX2RhdGEua2V5O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0OiBFc29sdmVBdXRoUmVzdWx0ID0ge1xuICAgICAgICAgICAga2V5OiB0b2tlbixcbiAgICAgICAgICAgIGV4cGlyZXM6ICthZGRpdGlvbmFsX2RhdGEuZXhwaXJlcyxcbiAgICAgICAgICAgIGV4cGlyeV90aW1lOiArYWRkaXRpb25hbF9kYXRhLmV4cGlyeV90aW1lLFxuICAgICAgICAgICAgZ3JhY2VfcGVyaW9kOiArYWRkaXRpb25hbF9kYXRhLmdyYWNlX3BlcmlvZCxcbiAgICAgICAgICAgIGxvY2F0aW9uX2lkOiArYWRkaXRpb25hbF9kYXRhLmxvY2F0aW9uX2lkLFxuICAgICAgICAgICAgdXNlcl9pZDogK2FkZGl0aW9uYWxfZGF0YS51c2VyX2lkLFxuICAgICAgICAgICAgYWNjZXNzX2xldmVsOiArYWRkaXRpb25hbF9kYXRhLmFjY2Vzc19sZXZlbCxcbiAgICAgICAgICAgIGFkZHJlc3Nlc19pZDogK2FkZGl0aW9uYWxfZGF0YS5hZGRyZXNzZXNfaWQsXG4gICAgICAgICAgICBzaGlwcGluZ19pZDogK2FkZGl0aW9uYWxfZGF0YS5zaGlwcGluZ19pZCxcbiAgICAgICAgICAgIGNsaWVudHNfaWQ6ICthZGRpdGlvbmFsX2RhdGEuY2xpZW50c19pZCxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgcmVzdG9yZSgpOiBQcm9taXNlPEVzb2x2ZUF1dGhSZXN1bHQgfCBudWxsPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuc2Vzc2lvbi5nZXRDYWNoZWRTZXNzaW9uKCk7XG5cbiAgICAgICAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdG9rZW4nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jaGVja0FjY2Vzc1Rva2VuKHRva2VuKTtcblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuc2Vzc2lvbi5yZXNldCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlcnNcblxuICAgIHB1YmxpYyBoYW5kbGVFeHRlcm5hbEF1dGhlbnRpY2F0aW9uKHJlc3VsdDogRXNvbHZlQXV0aFJlc3VsdCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhbmRsZUF1dGhlbnRpY2F0aW9uKHJlc3VsdCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVBdXRoZW50aWNhdGlvbihyZXN1bHQ6IEVzb2x2ZUF1dGhSZXN1bHQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFyZXN1bHQua2V5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlc3Npb24uaGFuZGxlU2Vzc2lvbihcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0b2tlbjogcmVzdWx0LmtleSxcbiAgICAgICAgICAgICAgICB1c2VyX2lkOiArcmVzdWx0LnVzZXJfaWQsXG4gICAgICAgICAgICAgICAgYWNjZXNzX2xldmVsOiArcmVzdWx0LmFjY2Vzc19sZXZlbCxcbiAgICAgICAgICAgICAgICBsb2NhdGlvbl9pZDogK3Jlc3VsdC5sb2NhdGlvbl9pZCxcbiAgICAgICAgICAgICAgICBhZGRyZXNzZXNfaWQ6ICtyZXN1bHQuYWRkcmVzc2VzX2lkLFxuICAgICAgICAgICAgICAgIHNoaXBwaW5nX2lkOiArcmVzdWx0LnNoaXBwaW5nX2lkLFxuICAgICAgICAgICAgICAgIGNsaWVudHNfaWQ6ICtyZXN1bHQuY2xpZW50c19pZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICArcmVzdWx0LmV4cGlyeV90aW1lLFxuICAgICAgICAgICAgK3Jlc3VsdC5ncmFjZV9wZXJpb2QsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVFcnJvcihcbiAgICAgICAgZXJyb3JSZXM6IEVzb2x2ZUF1dGhHZXRSZXNwb25zZSB8IEVzb2x2ZUF1dGhDaGVja1Jlc3BvbnNlLFxuICAgICk6IE9ic2VydmFibGU8bmV2ZXI+IHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSB7XG4gICAgICAgICAgICBtZXNzYWdlOiAnQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCcsXG4gICAgICAgICAgICBkYXRhOiB7fSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoIWVycm9yUmVzLnR5cGUgfHwgIWVycm9yUmVzLnNlcnZpY2VfdHlwZSB8fCAhZXJyb3JSZXMubWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9yUmVzLm1lc3NhZ2UudHJpbSgpICE9PSAnJykge1xuICAgICAgICAgICAgZXJyb3IubWVzc2FnZSA9IGVycm9yUmVzLm1lc3NhZ2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXJyb3JSZXMuYWRkaXRpb25hbF9kYXRhKSB7XG4gICAgICAgICAgICBlcnJvci5kYXRhID0gZXJyb3JSZXMuYWRkaXRpb25hbF9kYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgIH1cbn1cbiJdfQ==
@@ -61,13 +61,13 @@ export class EsolveOtpService {
61
61
  return throwError(() => error);
62
62
  }
63
63
  }
64
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: EsolveOtpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
65
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: EsolveOtpService, providedIn: 'root' }); }
64
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: EsolveOtpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
65
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: EsolveOtpService, providedIn: 'root' }); }
66
66
  }
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: EsolveOtpService, decorators: [{
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: EsolveOtpService, decorators: [{
68
68
  type: Injectable,
69
69
  args: [{
70
70
  providedIn: 'root',
71
71
  }]
72
72
  }] });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLW90cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2F1dGgvZXNvbHZlLW90cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFOUQsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBSzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBSzFELE1BQU0sT0FBTyxnQkFBZ0I7SUFIN0I7UUFJcUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3JDLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0tBZ0ZyRDtJQTlFVSxNQUFNLENBQUMsZ0JBQXlCO1FBQ25DLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFFOUIsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ25CLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUVELElBQUksQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLElBQUk7aUJBQ1gsR0FBRyxDQUNBLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLGNBQWMsRUFDcEMsRUFBRSxNQUFNLEVBQUUsQ0FDYjtpQkFDQSxJQUFJLENBQ0QsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ2IsSUFDSSxRQUFRLENBQUMsT0FBTyxLQUFLLFNBQVM7b0JBQzlCLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUNqQyxDQUFDO29CQUNDLE1BQU0sUUFBUSxDQUFDO2dCQUNuQixDQUFDO2dCQUVELE9BQU8sSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNDLENBQUMsQ0FBQyxDQUNMLENBQUM7UUFDVixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDO0lBRU0sY0FBYyxDQUNqQixPQUFlLEVBQ2YsUUFBZ0IsRUFDaEIsYUFBOEIsRUFBRSxFQUNoQyxLQUFLLEdBQUcsRUFBRSxFQUNWLFVBQVUsR0FBRyxFQUFFO1FBRWYsSUFBSSxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSTtpQkFDWCxHQUFHLENBQ0EsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8seUJBQXlCLEVBQy9DO2dCQUNJLE1BQU0sRUFBRTtvQkFDSixPQUFPO29CQUNQLFFBQVE7b0JBQ1IsVUFBVTtvQkFDVixLQUFLO29CQUNMLFVBQVU7aUJBQ2I7YUFDSixDQUNKO2lCQUNBLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDYixJQUNJLFFBQVEsQ0FBQyxPQUFPLEtBQUssU0FBUztvQkFDOUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQ2pDLENBQUM7b0JBQ0MsTUFBTSxRQUFRLENBQUM7Z0JBQ25CLENBQUM7Z0JBRUQsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQztnQkFFakQsSUFDSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO29CQUMvQixlQUFlLENBQUMsR0FBRyxFQUNyQixDQUFDO29CQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQ2xDLGVBQWUsQ0FDbEIsQ0FBQztnQkFDTixDQUFDO2dCQUVELE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckQsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUNWLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNMLENBQUM7K0dBbEZRLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBRmIsTUFBTTs7NEZBRVQsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBFc29sdmVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZSc7XG5pbXBvcnQgeyBFc29sdmVHZXRSZXNwb25zZSB9IGZyb20gJy4uL3NoYXJlZCc7XG5cbmltcG9ydCB7IEVzb2x2ZU90cEFjdGlvbiwgRXNvbHZlVmFsaWRhdGVPdHBSZXNwb25zZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgRXNvbHZlT3RwUmVjb3JkIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEVzb2x2ZU90cCwgRXNvbHZlT3RwVmFsaWRhdGlvbiB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IEVzb2x2ZUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9lc29sdmUtYXV0aC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRXNvbHZlT3RwU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3QoRXNvbHZlQ29uZmlnU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXV0aCA9IGluamVjdChFc29sdmVBdXRoU2VydmljZSk7XG5cbiAgICBwdWJsaWMgZ2V0T3RwKHJlY2lwaWVudF9udW1iZXI/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEVzb2x2ZU90cD4ge1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcblxuICAgICAgICBpZiAocmVjaXBpZW50X251bWJlcikge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncmVjaXBpZW50X251bWJlcicsIHJlY2lwaWVudF9udW1iZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZU90cFJlY29yZD4+KFxuICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtb3RwLnBocGAsXG4gICAgICAgICAgICAgICAgICAgIHsgcGFyYW1zIH0sXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShyZXNwb25zZS5yZWNvcmRzKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlT3RwKHJlc3BvbnNlLnJlY29yZHMpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbGlkYXRlT3RwKFxuICAgICAgICBvdHBfa2V5OiBzdHJpbmcsXG4gICAgICAgIG90cF9jb2RlOiBzdHJpbmcsXG4gICAgICAgIG90cF9hY3Rpb246IEVzb2x2ZU90cEFjdGlvbiA9ICcnLFxuICAgICAgICBlbWFpbCA9ICcnLFxuICAgICAgICBjZWxsbnVtYmVyID0gJycsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVPdHBWYWxpZGF0aW9uPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAgICAgLmdldDxFc29sdmVWYWxpZGF0ZU90cFJlc3BvbnNlPihcbiAgICAgICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LW90cC12YWxpZGF0aW9uLnBocGAsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90cF9rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RwX2NvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RwX2FjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KHJlc3BvbnNlLnJlY29yZHMpXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWRkaXRpb25hbF9kYXRhID0gcmVzcG9uc2UuYWRkaXRpb25hbF9kYXRhO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkoYWRkaXRpb25hbF9kYXRhKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfZGF0YS5rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aC5oYW5kbGVFeHRlcm5hbEF1dGhlbnRpY2F0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2RhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVPdHBWYWxpZGF0aW9uKHJlc3BvbnNlLnJlY29yZHMpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLW90cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2F1dGgvZXNvbHZlLW90cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFOUQsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBSzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBSzFELE1BQU0sT0FBTyxnQkFBZ0I7SUFIN0I7UUFJcUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3JDLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0tBZ0ZyRDtJQTlFVSxNQUFNLENBQUMsZ0JBQXlCO1FBQ25DLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFFOUIsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ25CLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUVELElBQUksQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLElBQUk7aUJBQ1gsR0FBRyxDQUNBLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLGNBQWMsRUFDcEMsRUFBRSxNQUFNLEVBQUUsQ0FDYjtpQkFDQSxJQUFJLENBQ0QsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ2IsSUFDSSxRQUFRLENBQUMsT0FBTyxLQUFLLFNBQVM7b0JBQzlCLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUNqQyxDQUFDO29CQUNDLE1BQU0sUUFBUSxDQUFDO2dCQUNuQixDQUFDO2dCQUVELE9BQU8sSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNDLENBQUMsQ0FBQyxDQUNMLENBQUM7UUFDVixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDO0lBRU0sY0FBYyxDQUNqQixPQUFlLEVBQ2YsUUFBZ0IsRUFDaEIsYUFBOEIsRUFBRSxFQUNoQyxLQUFLLEdBQUcsRUFBRSxFQUNWLFVBQVUsR0FBRyxFQUFFO1FBRWYsSUFBSSxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSTtpQkFDWCxHQUFHLENBQ0EsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8seUJBQXlCLEVBQy9DO2dCQUNJLE1BQU0sRUFBRTtvQkFDSixPQUFPO29CQUNQLFFBQVE7b0JBQ1IsVUFBVTtvQkFDVixLQUFLO29CQUNMLFVBQVU7aUJBQ2I7YUFDSixDQUNKO2lCQUNBLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDYixJQUNJLFFBQVEsQ0FBQyxPQUFPLEtBQUssU0FBUztvQkFDOUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQ2pDLENBQUM7b0JBQ0MsTUFBTSxRQUFRLENBQUM7Z0JBQ25CLENBQUM7Z0JBRUQsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQztnQkFFakQsSUFDSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO29CQUMvQixlQUFlLENBQUMsR0FBRyxFQUNyQixDQUFDO29CQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQ2xDLGVBQWUsQ0FDbEIsQ0FBQztnQkFDTixDQUFDO2dCQUVELE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckQsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUNWLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNMLENBQUM7OEdBbEZRLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBRmIsTUFBTTs7MkZBRVQsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBFc29sdmVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZSc7XG5pbXBvcnQgeyBFc29sdmVHZXRSZXNwb25zZSB9IGZyb20gJy4uL3NoYXJlZCc7XG5cbmltcG9ydCB7IEVzb2x2ZU90cEFjdGlvbiwgRXNvbHZlVmFsaWRhdGVPdHBSZXNwb25zZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgRXNvbHZlT3RwUmVjb3JkIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEVzb2x2ZU90cCwgRXNvbHZlT3RwVmFsaWRhdGlvbiB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IEVzb2x2ZUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9lc29sdmUtYXV0aC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRXNvbHZlT3RwU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3QoRXNvbHZlQ29uZmlnU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXV0aCA9IGluamVjdChFc29sdmVBdXRoU2VydmljZSk7XG5cbiAgICBwdWJsaWMgZ2V0T3RwKHJlY2lwaWVudF9udW1iZXI/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEVzb2x2ZU90cD4ge1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcblxuICAgICAgICBpZiAocmVjaXBpZW50X251bWJlcikge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgncmVjaXBpZW50X251bWJlcicsIHJlY2lwaWVudF9udW1iZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZU90cFJlY29yZD4+KFxuICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtb3RwLnBocGAsXG4gICAgICAgICAgICAgICAgICAgIHsgcGFyYW1zIH0sXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShyZXNwb25zZS5yZWNvcmRzKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlT3RwKHJlc3BvbnNlLnJlY29yZHMpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbGlkYXRlT3RwKFxuICAgICAgICBvdHBfa2V5OiBzdHJpbmcsXG4gICAgICAgIG90cF9jb2RlOiBzdHJpbmcsXG4gICAgICAgIG90cF9hY3Rpb246IEVzb2x2ZU90cEFjdGlvbiA9ICcnLFxuICAgICAgICBlbWFpbCA9ICcnLFxuICAgICAgICBjZWxsbnVtYmVyID0gJycsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVPdHBWYWxpZGF0aW9uPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAgICAgLmdldDxFc29sdmVWYWxpZGF0ZU90cFJlc3BvbnNlPihcbiAgICAgICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LW90cC12YWxpZGF0aW9uLnBocGAsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90cF9rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RwX2NvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RwX2FjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KHJlc3BvbnNlLnJlY29yZHMpXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWRkaXRpb25hbF9kYXRhID0gcmVzcG9uc2UuYWRkaXRpb25hbF9kYXRhO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkoYWRkaXRpb25hbF9kYXRhKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfZGF0YS5rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aC5oYW5kbGVFeHRlcm5hbEF1dGhlbnRpY2F0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2RhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVPdHBWYWxpZGF0aW9uKHJlc3BvbnNlLnJlY29yZHMpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -87,13 +87,13 @@ export class EsolveBannerService {
87
87
  }
88
88
  return banners;
89
89
  }
90
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: EsolveBannerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
91
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: EsolveBannerService, providedIn: 'root' }); }
90
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: EsolveBannerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
91
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: EsolveBannerService, providedIn: 'root' }); }
92
92
  }
93
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: EsolveBannerService, decorators: [{
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: EsolveBannerService, decorators: [{
94
94
  type: Injectable,
95
95
  args: [{
96
96
  providedIn: 'root',
97
97
  }]
98
98
  }] });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWJhbm5lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2Jhbm5lcnMvZXNvbHZlLWJhbm5lci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUc5QyxPQUFPLEVBQ0gsWUFBWSxFQUNaLHdCQUF3QixFQUN4QixpQkFBaUIsR0FDcEIsTUFBTSxXQUFXLENBQUM7O0FBWW5CLE1BQU0sT0FBTyxtQkFBbUI7SUFIaEM7UUFJcUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3JDLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0EwSjlDO0lBeEpHOzs7O09BSUc7SUFDSSxVQUFVLENBQ2IsVUFBbUIsRUFDbkIsd0JBQWlDLEVBQ2pDLGtCQUFrQixHQUFHLEtBQUs7UUFFMUIsSUFBSSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUM7WUFDeEIsVUFBVSxFQUFFLEVBQUUsa0JBQWtCLEVBQUU7U0FDckMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNiLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBRUQsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO1lBQzNCLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUNmLDBCQUEwQixFQUMxQix3QkFBd0IsQ0FDM0Is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Q04sQ0FBQztnQkFFRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ3BCLFVBQVUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUNyQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFDakIsTUFBTSxDQUFDLElBQUksQ0FDZCxDQUFDO2dCQUNOLENBQUM7Z0JBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxZQUFZLENBQzNCLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFDVixNQUFNLENBQUMsd0JBQXdCLEVBQy9CLE1BQU0sQ0FBQyxVQUFVLEVBQ2pCLE1BQU0sQ0FBQyxJQUFJLEVBQ1gsTUFBTSxDQUFDLEtBQUssRUFDWixNQUFNLENBQUMsU0FBUyxFQUNoQixNQUFNLENBQUMsWUFBWSxFQUNuQixNQUFNLENBQUMsaUJBQWlCLEVBQ3hCLE1BQU0sQ0FBQyxjQUFjLEVBQ3JCLE1BQU0sQ0FBQyxPQUFPLEVBQ2QsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUNyQjtvQkFDSSxHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHO29CQUNwQixNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNO2lCQUM3QixFQUNELFVBQVUsQ0FDYixDQUFDO2dCQUVGLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDOytHQTNKUSxtQkFBbUI7bUhBQW5CLG1CQUFtQixjQUZoQixNQUFNOzs0RkFFVCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEVzb2x2ZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9jb3JlJztcbmltcG9ydCB7IEVzb2x2ZUdldFJlc3BvbnNlIH0gZnJvbSAnLi4vc2hhcmVkL3Jlc3BvbnNlJztcblxuaW1wb3J0IHtcbiAgICBFc29sdmVCYW5uZXIsXG4gICAgRXNvbHZlQmFubmVySW1hZ2VIb3RzcG90LFxuICAgIEVzb2x2ZUJhbm5lckltYWdlLFxufSBmcm9tICcuL2NsYXNzZXMnO1xuaW1wb3J0IHtcbiAgICBFc29sdmVCYW5uZXJSZWNvcmQsXG4gICAgRXNvbHZlQmFubmVySW1hZ2VIb3RzcG90UmVjb3JkLFxuICAgIEVzb2x2ZUJhbm5lckltYWdlUmVjb3JkLFxuICAgIEVzb2x2ZUJhbm5lckltYWdlU2V0LFxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRXNvbHZlQmFubmVyVHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBFc29sdmVCYW5uZXJTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdChFc29sdmVDb25maWdTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgYmFubmVycyByZWNvcmRzIGZyb20gZVNvbHZlIGluc3RhbmNlXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIGVTb2x2ZSBiYW5uZXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRCYW5uZXJzKFxuICAgICAgICBpZGVudGlmaWVyPzogc3RyaW5nLFxuICAgICAgICBiYW5uZXJfZGlzcGxheV9jb250YWluZXI/OiBzdHJpbmcsXG4gICAgICAgIGVuYWJsZV9kYXRlX2ZpbHRlciA9IGZhbHNlLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlQmFubmVyW10+IHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgICAgICAgIGZyb21PYmplY3Q6IHsgZW5hYmxlX2RhdGVfZmlsdGVyIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChpZGVudGlmaWVyKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdpZGVudGlmaWVyJywgaWRlbnRpZmllcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYmFubmVyX2Rpc3BsYXlfY29udGFpbmVyKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KFxuICAgICAgICAgICAgICAgICdiYW5uZXJfZGlzcGxheV9jb250YWluZXInLFxuICAgICAgICAgICAgICAgIGJhbm5lcl9kaXNwbGF5X2NvbnRhaW5lcixcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZUJhbm5lclJlY29yZFtdPj4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWJhbm5lcnMucGhwYCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NCYW5uZXJzKHJlc3BvbnNlLnJlY29yZHMpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NCYW5uZXJJbWFnZUhvdHNwb3RzKFxuICAgICAgICBob3RzcG90X3JlY29yZHM6IEVzb2x2ZUJhbm5lckltYWdlSG90c3BvdFJlY29yZFtdLFxuICAgICk6IEVzb2x2ZUJhbm5lckltYWdlSG90c3BvdFtdIHtcbiAgICAgICAgY29uc3QgaG90c3BvdHM6IEVzb2x2ZUJhbm5lckltYWdlSG90c3BvdFtdID0gW107XG5cbiAgICAgICAgaWYgKGhvdHNwb3RfcmVjb3Jkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGhvdHNwb3RfcmVjb3JkIG9mIGhvdHNwb3RfcmVjb3Jkcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhvdHNwb3QgPSBuZXcgRXNvbHZlQmFubmVySW1hZ2VIb3RzcG90KFxuICAgICAgICAgICAgICAgICAgICBob3RzcG90X3JlY29yZC51cmwsXG4gICAgICAgICAgICAgICAgICAgIGhvdHNwb3RfcmVjb3JkLnRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgaG90c3BvdF9yZWNvcmQuY29vcmRzLFxuICAgICAgICAgICAgICAgICAgICBob3RzcG90X3JlY29yZC5jb29yZHNfc3RyaW5nLFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBob3RzcG90cy5wdXNoKGhvdHNwb3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGhvdHNwb3RzO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc0Jhbm5lckltYWdlcyhcbiAgICAgICAgaW1hZ2VfcmVjb3JkczogRXNvbHZlQmFubmVySW1hZ2VSZWNvcmRbXSxcbiAgICAgICAgYmFubmVyX3R5cGU6IEVzb2x2ZUJhbm5lclR5cGUsXG4gICAgKTogRXNvbHZlQmFubmVySW1hZ2VbXSB7XG4gICAgICAgIGNvbnN0IGltYWdlczogRXNvbHZlQmFubmVySW1hZ2VbXSA9IFtdO1xuXG4gICAgICAgIGlmIChpbWFnZV9yZWNvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaW1hZ2VfcmVjb3JkIG9mIGltYWdlX3JlY29yZHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZSA9IG5ldyBFc29sdmVCYW5uZXJJbWFnZShcbiAgICAgICAgICAgICAgICAgICAgK2ltYWdlX3JlY29yZC5pZCxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VfcmVjb3JkLmltYWdlX3R5cGUsXG4gICAgICAgICAgICAgICAgICAgICtpbWFnZV9yZWNvcmQud2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICtpbWFnZV9yZWNvcmQuaGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICBpbWFnZV9yZWNvcmQuZmlsZW5hbWUsXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmIChiYW5uZXJfdHlwZSA9PT0gJ2hvdHNwb3QnICYmIGltYWdlX3JlY29yZC5ob3RzcG90cykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBob3RzcG90cyA9IHRoaXMucHJvY2Vzc0Jhbm5lckltYWdlSG90c3BvdHMoXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZV9yZWNvcmQuaG90c3BvdHMsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlLmhvdHNwb3RzID0gaG90c3BvdHM7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaW1hZ2VzLnB1c2goaW1hZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGltYWdlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzIGJhbm5lciByZWNvcmRzIGludG8gYmFubmVyIG9iamVjdHNcbiAgICAgKiBAcGFyYW0gcmVjb3JkcyBBcnJheSBvZiByZWNvcmRzXG4gICAgICogQHJldHVybnMgTGlzdCBvZiBiYW5uZXJzXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcm9jZXNzQmFubmVycyhyZWNvcmRzOiBFc29sdmVCYW5uZXJSZWNvcmRbXSk6IEVzb2x2ZUJhbm5lcltdIHtcbiAgICAgICAgY29uc3QgYmFubmVyczogRXNvbHZlQmFubmVyW10gPSBbXTtcblxuICAgICAgICBpZiAocmVjb3JkcyAmJiByZWNvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZV9zZXRzOiBFc29sdmVCYW5uZXJJbWFnZVNldCA9IHt9O1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlY29yZC5pbWFnZXMuZGVza3RvcCkge1xuICAgICAgICAgICAgICAgICAgICBpbWFnZV9zZXRzLmRlc2t0b3AgPSB0aGlzLnByb2Nlc3NCYW5uZXJJbWFnZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuaW1hZ2VzLmRlc2t0b3AsXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocmVjb3JkLmltYWdlcy5tb2JpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2Vfc2V0cy5tb2JpbGUgPSB0aGlzLnByb2Nlc3NCYW5uZXJJbWFnZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuaW1hZ2VzLm1vYmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC50eXBlLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChyZWNvcmQuaW1hZ2VzLnN1Yikge1xuICAgICAgICAgICAgICAgICAgICBpbWFnZV9zZXRzLnN1YiA9IHRoaXMucHJvY2Vzc0Jhbm5lckltYWdlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5pbWFnZXMuc3ViLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgYmFubmVyID0gbmV3IEVzb2x2ZUJhbm5lcihcbiAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5pZCxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmJhbm5lcl9kaXNwbGF5X2NvbnRhaW5lcixcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC50eXBlLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5zdWJfdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5jYXRjaF9waHJhc2UsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5iYWNrZ3JvdW5kX2NvbG91cixcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmJ1dHRvbl9jYXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuYXJ0aWNsZSxcbiAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5zb3J0X3ByaW9yaXR5LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHJlY29yZC5saW5rLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogcmVjb3JkLmxpbmsudGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBpbWFnZV9zZXRzLFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBiYW5uZXJzLnB1c2goYmFubmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBiYW5uZXJzO1xuICAgIH1cbn1cbiJdfQ==
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWJhbm5lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2Jhbm5lcnMvZXNvbHZlLWJhbm5lci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUc5QyxPQUFPLEVBQ0gsWUFBWSxFQUNaLHdCQUF3QixFQUN4QixpQkFBaUIsR0FDcEIsTUFBTSxXQUFXLENBQUM7O0FBWW5CLE1BQU0sT0FBTyxtQkFBbUI7SUFIaEM7UUFJcUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3JDLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0EwSjlDO0lBeEpHOzs7O09BSUc7SUFDSSxVQUFVLENBQ2IsVUFBbUIsRUFDbkIsd0JBQWlDLEVBQ2pDLGtCQUFrQixHQUFHLEtBQUs7UUFFMUIsSUFBSSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUM7WUFDeEIsVUFBVSxFQUFFLEVBQUUsa0JBQWtCLEVBQUU7U0FDckMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNiLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBRUQsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO1lBQzNCLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUNmLDBCQUEwQixFQUMxQix3QkFBd0IsQ0FDM0Is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Q04sQ0FBQztnQkFFRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ3BCLFVBQVUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUNyQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFDakIsTUFBTSxDQUFDLElBQUksQ0FDZCxDQUFDO2dCQUNOLENBQUM7Z0JBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxZQUFZLENBQzNCLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFDVixNQUFNLENBQUMsd0JBQXdCLEVBQy9CLE1BQU0sQ0FBQyxVQUFVLEVBQ2pCLE1BQU0sQ0FBQyxJQUFJLEVBQ1gsTUFBTSxDQUFDLEtBQUssRUFDWixNQUFNLENBQUMsU0FBUyxFQUNoQixNQUFNLENBQUMsWUFBWSxFQUNuQixNQUFNLENBQUMsaUJBQWlCLEVBQ3hCLE1BQU0sQ0FBQyxjQUFjLEVBQ3JCLE1BQU0sQ0FBQyxPQUFPLEVBQ2QsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUNyQjtvQkFDSSxHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHO29CQUNwQixNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNO2lCQUM3QixFQUNELFVBQVUsQ0FDYixDQUFDO2dCQUVGLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDOzhHQTNKUSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZoQixNQUFNOzsyRkFFVCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEVzb2x2ZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9jb3JlJztcbmltcG9ydCB7IEVzb2x2ZUdldFJlc3BvbnNlIH0gZnJvbSAnLi4vc2hhcmVkL3Jlc3BvbnNlJztcblxuaW1wb3J0IHtcbiAgICBFc29sdmVCYW5uZXIsXG4gICAgRXNvbHZlQmFubmVySW1hZ2VIb3RzcG90LFxuICAgIEVzb2x2ZUJhbm5lckltYWdlLFxufSBmcm9tICcuL2NsYXNzZXMnO1xuaW1wb3J0IHtcbiAgICBFc29sdmVCYW5uZXJSZWNvcmQsXG4gICAgRXNvbHZlQmFubmVySW1hZ2VIb3RzcG90UmVjb3JkLFxuICAgIEVzb2x2ZUJhbm5lckltYWdlUmVjb3JkLFxuICAgIEVzb2x2ZUJhbm5lckltYWdlU2V0LFxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRXNvbHZlQmFubmVyVHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBFc29sdmVCYW5uZXJTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdChFc29sdmVDb25maWdTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgYmFubmVycyByZWNvcmRzIGZyb20gZVNvbHZlIGluc3RhbmNlXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIGVTb2x2ZSBiYW5uZXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRCYW5uZXJzKFxuICAgICAgICBpZGVudGlmaWVyPzogc3RyaW5nLFxuICAgICAgICBiYW5uZXJfZGlzcGxheV9jb250YWluZXI/OiBzdHJpbmcsXG4gICAgICAgIGVuYWJsZV9kYXRlX2ZpbHRlciA9IGZhbHNlLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlQmFubmVyW10+IHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgICAgICAgIGZyb21PYmplY3Q6IHsgZW5hYmxlX2RhdGVfZmlsdGVyIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChpZGVudGlmaWVyKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdpZGVudGlmaWVyJywgaWRlbnRpZmllcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYmFubmVyX2Rpc3BsYXlfY29udGFpbmVyKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KFxuICAgICAgICAgICAgICAgICdiYW5uZXJfZGlzcGxheV9jb250YWluZXInLFxuICAgICAgICAgICAgICAgIGJhbm5lcl9kaXNwbGF5X2NvbnRhaW5lcixcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PEVzb2x2ZUdldFJlc3BvbnNlPEVzb2x2ZUJhbm5lclJlY29yZFtdPj4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWJhbm5lcnMucGhwYCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NCYW5uZXJzKHJlc3BvbnNlLnJlY29yZHMpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NCYW5uZXJJbWFnZUhvdHNwb3RzKFxuICAgICAgICBob3RzcG90X3JlY29yZHM6IEVzb2x2ZUJhbm5lckltYWdlSG90c3BvdFJlY29yZFtdLFxuICAgICk6IEVzb2x2ZUJhbm5lckltYWdlSG90c3BvdFtdIHtcbiAgICAgICAgY29uc3QgaG90c3BvdHM6IEVzb2x2ZUJhbm5lckltYWdlSG90c3BvdFtdID0gW107XG5cbiAgICAgICAgaWYgKGhvdHNwb3RfcmVjb3Jkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGhvdHNwb3RfcmVjb3JkIG9mIGhvdHNwb3RfcmVjb3Jkcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhvdHNwb3QgPSBuZXcgRXNvbHZlQmFubmVySW1hZ2VIb3RzcG90KFxuICAgICAgICAgICAgICAgICAgICBob3RzcG90X3JlY29yZC51cmwsXG4gICAgICAgICAgICAgICAgICAgIGhvdHNwb3RfcmVjb3JkLnRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgaG90c3BvdF9yZWNvcmQuY29vcmRzLFxuICAgICAgICAgICAgICAgICAgICBob3RzcG90X3JlY29yZC5jb29yZHNfc3RyaW5nLFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBob3RzcG90cy5wdXNoKGhvdHNwb3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGhvdHNwb3RzO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc0Jhbm5lckltYWdlcyhcbiAgICAgICAgaW1hZ2VfcmVjb3JkczogRXNvbHZlQmFubmVySW1hZ2VSZWNvcmRbXSxcbiAgICAgICAgYmFubmVyX3R5cGU6IEVzb2x2ZUJhbm5lclR5cGUsXG4gICAgKTogRXNvbHZlQmFubmVySW1hZ2VbXSB7XG4gICAgICAgIGNvbnN0IGltYWdlczogRXNvbHZlQmFubmVySW1hZ2VbXSA9IFtdO1xuXG4gICAgICAgIGlmIChpbWFnZV9yZWNvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaW1hZ2VfcmVjb3JkIG9mIGltYWdlX3JlY29yZHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZSA9IG5ldyBFc29sdmVCYW5uZXJJbWFnZShcbiAgICAgICAgICAgICAgICAgICAgK2ltYWdlX3JlY29yZC5pZCxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VfcmVjb3JkLmltYWdlX3R5cGUsXG4gICAgICAgICAgICAgICAgICAgICtpbWFnZV9yZWNvcmQud2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICtpbWFnZV9yZWNvcmQuaGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICBpbWFnZV9yZWNvcmQuZmlsZW5hbWUsXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmIChiYW5uZXJfdHlwZSA9PT0gJ2hvdHNwb3QnICYmIGltYWdlX3JlY29yZC5ob3RzcG90cykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBob3RzcG90cyA9IHRoaXMucHJvY2Vzc0Jhbm5lckltYWdlSG90c3BvdHMoXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZV9yZWNvcmQuaG90c3BvdHMsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlLmhvdHNwb3RzID0gaG90c3BvdHM7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaW1hZ2VzLnB1c2goaW1hZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGltYWdlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzIGJhbm5lciByZWNvcmRzIGludG8gYmFubmVyIG9iamVjdHNcbiAgICAgKiBAcGFyYW0gcmVjb3JkcyBBcnJheSBvZiByZWNvcmRzXG4gICAgICogQHJldHVybnMgTGlzdCBvZiBiYW5uZXJzXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcm9jZXNzQmFubmVycyhyZWNvcmRzOiBFc29sdmVCYW5uZXJSZWNvcmRbXSk6IEVzb2x2ZUJhbm5lcltdIHtcbiAgICAgICAgY29uc3QgYmFubmVyczogRXNvbHZlQmFubmVyW10gPSBbXTtcblxuICAgICAgICBpZiAocmVjb3JkcyAmJiByZWNvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZV9zZXRzOiBFc29sdmVCYW5uZXJJbWFnZVNldCA9IHt9O1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlY29yZC5pbWFnZXMuZGVza3RvcCkge1xuICAgICAgICAgICAgICAgICAgICBpbWFnZV9zZXRzLmRlc2t0b3AgPSB0aGlzLnByb2Nlc3NCYW5uZXJJbWFnZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuaW1hZ2VzLmRlc2t0b3AsXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocmVjb3JkLmltYWdlcy5tb2JpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2Vfc2V0cy5tb2JpbGUgPSB0aGlzLnByb2Nlc3NCYW5uZXJJbWFnZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuaW1hZ2VzLm1vYmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC50eXBlLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChyZWNvcmQuaW1hZ2VzLnN1Yikge1xuICAgICAgICAgICAgICAgICAgICBpbWFnZV9zZXRzLnN1YiA9IHRoaXMucHJvY2Vzc0Jhbm5lckltYWdlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5pbWFnZXMuc3ViLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgYmFubmVyID0gbmV3IEVzb2x2ZUJhbm5lcihcbiAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5pZCxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmJhbm5lcl9kaXNwbGF5X2NvbnRhaW5lcixcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC50eXBlLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5zdWJfdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5jYXRjaF9waHJhc2UsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZC5iYWNrZ3JvdW5kX2NvbG91cixcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmJ1dHRvbl9jYXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQuYXJ0aWNsZSxcbiAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5zb3J0X3ByaW9yaXR5LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHJlY29yZC5saW5rLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogcmVjb3JkLmxpbmsudGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBpbWFnZV9zZXRzLFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBiYW5uZXJzLnB1c2goYmFubmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBiYW5uZXJzO1xuICAgIH1cbn1cbiJdfQ==
@@ -296,13 +296,13 @@ export class EsolveCartService {
296
296
  processCartTotals(record) {
297
297
  return new EsolveCartTotals(record);
298
298
  }
299
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: EsolveCartService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
300
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: EsolveCartService, providedIn: 'root' }); }
299
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: EsolveCartService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
300
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: EsolveCartService, providedIn: 'root' }); }
301
301
  }
302
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: EsolveCartService, decorators: [{
302
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: EsolveCartService, decorators: [{
303
303
  type: Injectable,
304
304
  args: [{
305
305
  providedIn: 'root',
306
306
  }]
307
307
  }] });
308
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWNhcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9jYXJ0L2Vzb2x2ZS1jYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUNILFVBQVUsRUFFVixVQUFVLEdBQ2IsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxFQUlILDRCQUE0QixFQUM1QixvQkFBb0IsR0FFdkIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWxELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVwRCxPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQiw4QkFBOEIsR0FDakMsTUFBTSxXQUFXLENBQUM7O0FBd0JuQixNQUFNLE9BQU8saUJBQWlCO0lBSDlCO1FBSXFCLFdBQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNyQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFCLGlCQUFZ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WUFDN0MsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUMxQyx5QkFBeUIsRUFDekIsUUFBUSxDQUNYLENBQUM7UUFDTixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssV0FBVyxDQUFDLGlCQUF5QztRQUN6RCxNQUFNLFVBQVUsR0FBcUIsRUFBRSxDQUFDO1FBRXhDLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUNwQixLQUFLLE1BQU0sZ0JBQWdCLElBQUksaUJBQWlCLEVBQUUsQ0FBQztnQkFDL0MsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDMUQsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssdUJBQXVCLENBQzNCLE9BQXNDO1FBRXRDLE1BQU0sWUFBWSxHQUE4QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRTFELEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7WUFDM0IsWUFBWSxDQUFDLEdBQUcsQ0FDWixDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQ2YsSUFBSSxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FDcEMsQ0FBQztRQUNOLENBQUM7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxpQkFBaUIsQ0FDckIsTUFBOEI7UUFFOUIsT0FBTyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7K0dBM2NRLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBRmQsTUFBTTs7NEZBRVQsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICAgIEh0dHBDbGllbnQsXG4gICAgSHR0cEVycm9yUmVzcG9uc2UsXG4gICAgSHR0cFBhcmFtcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBpaWYsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRXNvbHZlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgRXNvbHZlRXJyb3JIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9lcnJvcnMnO1xuaW1wb3J0IHtcbiAgICBFc29sdmVEZWxldGVSZXNwb25zZSxcbiAgICBFc29sdmVHZXRSZXNwb25zZSxcbiAgICBFc29sdmVQb3N0UmVzcG9uc2VJdGVtLFxuICAgIEVzb2x2ZVJlc3BvbnNlSGFuZGxlclNlcnZpY2UsXG4gICAgRXNvbHZlUmVzcG9uc2VSZXN1bHQsXG4gICAgRXNvbHZlU2V0UmVzcG9uc2UsXG59IGZyb20gJy4uL3NoYXJlZC9yZXNwb25zZSc7XG5pbXBvcnQgeyBFc29sdmVSZXN1bHQgfSBmcm9tICcuLi9zaGFyZWQvZXNvbHZlLXJlc3VsdC5tb2RlbCc7XG5cbmltcG9ydCB7IEVzb2x2ZUNvdXBvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vY291cG9ucyc7XG5pbXBvcnQgeyBFc29sdmVUcmFuc2FjdGlvblR5cGUgfSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgRXNvbHZlVm91Y2hlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vdm91Y2hlcnMnO1xuXG5pbXBvcnQge1xuICAgIEVzb2x2ZUNhcnRBbHRlcm5hdGl2ZSxcbiAgICBFc29sdmVDYXJ0SXRlbSxcbiAgICBFc29sdmVDYXJ0VG90YWxzLFxuICAgIEVzb2x2ZUNoZWNrb3V0UmVzdWx0LFxuICAgIEVzb2x2ZUVtcHR5Q2FydFJlc3VsdCxcbiAgICBFc29sdmVUcmFuc2FjdGlvbkFuYWx5dGljc0RhdGEsXG59IGZyb20gJy4vY2xhc3Nlcyc7XG5pbXBvcnQge1xuICAgIEVzb2x2ZUFkZGl0aW9uYWxXaGVyZSxcbiAgICBFc29sdmVDYXJ0QWx0ZXJuYXRpdmVSZWNvcmQsXG4gICAgRXNvbHZlQ2FydEl0ZW1SZWNvcmQsXG4gICAgRXNvbHZlQ2FydEl0ZW1SZXNwb25zZSxcbiAgICBFc29sdmVDYXJ0U2V0SXRlbSxcbiAgICBFc29sdmVDYXJ0VG90YWxzUmVjb3JkLFxuICAgIEVzb2x2ZUNoZWNrb3V0Qm9keSxcbiAgICBFc29sdmVDaGVja291dFJlc3BvbnNlLFxuICAgIEVzb2x2ZVRpbWVTbG90Q2hlY2tvdXQsXG4gICAgRXNvbHZlVHJhY2tpbmdDb2RlLFxuICAgIEVzb2x2ZVRyYW5zYWN0aW9uQW5hbHl0aWNzRGF0YVJlY29yZCxcbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gICAgRXNvbHZlQ2FydCxcbiAgICBFc29sdmVDYXJ0U2V0QWN0aW9uLFxuICAgIEVzb2x2ZUNhcnRFbXB0eVJlc3BvbnNlLFxuICAgIEVzb2x2ZUNhcnRBbHRlcm5hdGl2ZXNNYXAsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBFc29sdmVDYXJ0U2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3QoRXNvbHZlQ29uZmlnU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JIYW5kbGVyID0gaW5qZWN0KEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzcG9uc2VIYW5kbGVyID0gaW5qZWN0KEVzb2x2ZVJlc3BvbnNlSGFuZGxlclNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY291cG9ucyA9IGluamVjdChFc29sdmVDb3Vwb25zU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB2b3VjaGVycyA9IGluamVjdChFc29sdmVWb3VjaGVyc1NlcnZpY2UpO1xuXG4gICAgcHJpdmF0ZSBfY2FjaGVkX3RyYWNraW5nID0gMDtcblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBjYXJ0XG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZWAgd2l0aCBhbiBhcnJheSBvZiBjYXJ0IGl0ZW1zXG4gICAgICovXG4gICAgcHVibGljIGdldENhcnQoKTogT2JzZXJ2YWJsZTxFc29sdmVDYXJ0PiB7XG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuXG4gICAgICAgIGNvbnN0IGNvdXBvbnMgPSB0aGlzLmNvdXBvbnMuZ2V0QXBwbGllZENvdXBvbktleXMoKTtcblxuICAgICAgICBpZiAoY291cG9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdjb3Vwb25zJywgY291cG9ucy5qb2luKCcsJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxcbiAgICAgICAgICAgICAgICBFc29sdmVHZXRSZXNwb25zZTxFc29sdmVDYXJ0SXRlbVJlY29yZFtdPlxuICAgICAgICAgICAgPihgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtY2FydC5waHBgLCB7IHBhcmFtcyB9KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NDYXJ0KHJlc3BvbnNlLnJlY29yZHMpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBjYXJ0IGJ5IHByZWZvcm1pbmcgdmFyaW91cyBhY3Rpb25zLCBzdWNoIGFzIGFkZGluZywgZWRpdGluZyBvciByZW1vdmluZyBpdGVtcyBmcm9tIHRoZSBjYXJ0LlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW1zIEFuIGFycmF5IG9mIG9wdGlvbnMgdG8gdXBkYXRlIHRoZSBjYXJ0XG4gICAgICogQHBhcmFtIGFjdGlvbiBUaGUgZGVmYXVsdCBhY3Rpb24gdG8gcHJlZm9ybVxuICAgICAqXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHdpdGggYW4gYXJyYXkgb2YgcmVzcG9uc2VzIHRoYXQgZ2l2ZXMgZmVlZGJhY2sgb24gdGhlIHJlcXVlc3RlZCBjaGFuZ2VzXG4gICAgICovXG4gICAgcHVibGljIHNldENhcnQoXG4gICAgICAgIGl0ZW1zOiBFc29sdmVDYXJ0U2V0SXRlbVtdLFxuICAgICAgICBhY3Rpb246IEVzb2x2ZUNhcnRTZXRBY3Rpb24gPSAnYWRkJyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZUNhcnRJdGVtUmVzcG9uc2VbXT4ge1xuICAgICAgICBjb25zdCBib2R5ID0ge1xuICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U8RXNvbHZlQ2FydEl0ZW1SZXNwb25zZT4+KFxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NldC1jYXJ0LWl0ZW0ucGhwYCxcbiAgICAgICAgICAgICAgICBib2R5LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlc3BvbnNlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5yZXNwb25zZXM7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRDYXJ0RW1wdHkoXG4gICAgICAgIHR5cGU6IEVzb2x2ZVRyYW5zYWN0aW9uVHlwZSxcbiAgICAgICAgYWRkaXRpb25hbF93aGVyZTogRXNvbHZlQWRkaXRpb25hbFdoZXJlW10sXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVFbXB0eUNhcnRSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYm9keSA9IHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBhZGRpdGlvbmFsX3doZXJlLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPEVzb2x2ZUNhcnRFbXB0eVJlc3BvbnNlPj4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2V0LWNhcnQtZW1wdHkucGhwYCxcbiAgICAgICAgICAgICAgICBib2R5LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZUhhbmRsZXIudmFsaWRhdGVTaW5nbGVIdHRwUmVzcG9uc2UoXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVkX3RyYWNraW5nID0gMDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlRW1wdHlDYXJ0UmVzdWx0KHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2V0LWNhcnQtZW1wdHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JSZXMsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgdG90YWxzIG9mIHRoZSBjYXJ0IHdpdGggYWxsIHRoZSB0b3RhbHMgY2FsY3VsYXRlZFxuICAgICAqXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHdpdGggYW4gb2JqZWN0IGNvbnRhaW5pbmcgY2FydCB0b3RhbHNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VG90YWxzKFxuICAgICAgICB0eXBlPzogRXNvbHZlVHJhbnNhY3Rpb25UeXBlLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlQ2FydFRvdGFscz4ge1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoe1xuICAgICAgICAgICAgZnJvbU9iamVjdDoge1xuICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUgPz8gJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB2b3VjaGVycyA9IHRoaXMudm91Y2hlcnMuZ2V0QXBwbGllZFZvdWNoZXJLZXlzKCk7XG5cbiAgICAgICAgaWYgKHZvdWNoZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3ZvdWNoZXJzJywgdm91Y2hlcnMuam9pbignLCcpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8XG4gICAgICAgICAgICAgICAgRXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlQ2FydFRvdGFsc1JlY29yZD5cbiAgICAgICAgICAgID4oYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWNhcnQtdG90YWxzLnBocGAsIHsgcGFyYW1zIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShyZXNwb25zZS5yZWNvcmRzKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0NhcnRUb3RhbHMocmVzcG9uc2UucmVjb3Jkcyk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyBhIHRyYWNraW5nIGNvZGUgZm9yIHRoZSBjYXJ0XG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZWAgd2l0aCB0aGUgY2FydCB0cmFja2luZyBjb2RlXG4gICAgICovXG4gICAgcHVibGljIGdldFRyYWNraW5nQ29kZSgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gaWlmKFxuICAgICAgICAgICAgKCkgPT4gdGhpcy5fY2FjaGVkX3RyYWNraW5nID4gMCxcbiAgICAgICAgICAgIG9mKHRoaXMuX2NhY2hlZF90cmFja2luZyksXG4gICAgICAgICAgICB0aGlzLmh0dHBcbiAgICAgICAgICAgICAgICAuZ2V0PFxuICAgICAgICAgICAgICAgICAgICBFc29sdmVHZXRSZXNwb25zZTxFc29sdmVUcmFja2luZ0NvZGU+XG4gICAgICAgICAgICAgICAgPihgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtY2hlY2tvdXQtdHJhY2tpbmcucGhwYClcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocmVzcG9uc2UucmVjb3JkcylcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZWRfdHJhY2tpbmcgPSByZXNwb25zZS5yZWNvcmRzLnRyYWNraW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UucmVjb3Jkcy50cmFja2luZztcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGRhdGEgb2YgdGhlIHRyYW5zYWN0aW9uIGZvciB0aGUgYW5hbHl0aWNzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHJhbnNhY3Rpb25faWQgSUQgb2YgdGhlIHRyYW5zYWN0aW9uIHVzZWQgaW4gZVNvbHZlXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZWAgd2l0aCB0aGUgYW5hbHl0aWNzIGRhdGFcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VHJhbnNhY3Rpb25BbmFseXRpY3NEYXRhPFQgPSBhbnk+KFxuICAgICAgICB0cmFuc2FjdGlvbl9pZDogbnVtYmVyLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlVHJhbnNhY3Rpb25BbmFseXRpY3NEYXRhPFQ+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlVHJhbnNhY3Rpb25BbmFseXRpY3NEYXRhUmVjb3JkPFQ+Pj4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LXRyYW5zYWN0aW9uLWFuYWx5dGljcy1kYXRhLnBocGAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uX2lkLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShyZXNwb25zZS5yZWNvcmRzKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVUcmFuc2FjdGlvbkFuYWx5dGljc0RhdGE8VD4oXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZXMgY2hlY2tvdXQgb2YgdGhlIGNhcnQgaXRlbXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSB0eXBlIFRoZSBjYXJ0IHR5cGUgdGhhdCBuZWVkcyB0byBiZSBjaGVja2VkIG91dFxuICAgICAqIEBwYXJhbSBhZGRyZXNzZXNfaWQgVGhlIElEIG9mIHRoZSBkZWxpdmVyeSBhZGRyZXNzXG4gICAgICogQHBhcmFtIHNoaXBwaW5nX2lkIFRoZSBJRCBvZiB0aGUgc2hpcHBpbmcgbWV0aG9kXG4gICAgICogQHBhcmFtIHBheW1lbnRfbWV0aG9kX2lkIFRoZSBJRCBvZiB0aGUgc2VsZWN0ZWQgcGF5bWVudCBtZXRob2RcbiAgICAgKiBAcGFyYW0gbG9jYXRpb25faWQgVGhlIElEIG9mIHRoZSBzZWxlY3RlZCBicmFuY2ggZnJvbSB3aXRoIHNoaXBwaW5nIG5lZWRzIHRvIGJlIGNhbGN1bGF0ZWRcbiAgICAgKiBAcGFyYW0gY29tbWVudHMgQWRkaXRpb25hbCBjb21tZW50cyBvbiB0aGUgY2FydFxuICAgICAqIEBwYXJhbSB0aW1lX3Nsb3QgVGhlIHRpbWUgc2xvdCB0byBiZSB1c2VkXG4gICAgICogQHBhcmFtIGFwcGx5X3dhbGxldCBXaGV0aGVyIHRvIGFwcGx5IHdhbGxldCB0byB0aGUgb3JkZXJcbiAgICAgKiBAcGFyYW0gcHVyY2hhc2Vfb3JkZXJfbnVtYmVyIEN1c3RvbSBwdXJjaGFzZSBvcmRlciB0byBhZGRlZCB0byB0cmFuc2FjdGlvblxuICAgICAqXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHdpdGggdGhlIHRyYW5zYWN0aW9uIElEXG4gICAgICovXG4gICAgcHVibGljIGNoZWNrb3V0KFxuICAgICAgICB0eXBlOiBFc29sdmVUcmFuc2FjdGlvblR5cGUsXG4gICAgICAgIGFkZHJlc3Nlc19pZDogbnVtYmVyLFxuICAgICAgICBzaGlwcGluZ19pZDogbnVtYmVyLFxuICAgICAgICBwYXltZW50X21ldGhvZF9pZCA9IDAsXG4gICAgICAgIGxvY2F0aW9uX2lkID0gMCxcbiAgICAgICAgY29tbWVudHMgPSAnJyxcbiAgICAgICAgdGltZV9zbG90PzogRXNvbHZlVGltZVNsb3RDaGVja291dCxcbiAgICAgICAgYXBwbHlfd2FsbGV0PzogYm9vbGVhbixcbiAgICAgICAgcHVyY2hhc2Vfb3JkZXJfbnVtYmVyPzogc3RyaW5nLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlQ2hlY2tvdXRSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYm9keTogRXNvbHZlQ2hlY2tvdXRCb2R5ID0ge1xuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGFkZHJlc3Nlc19pZCxcbiAgICAgICAgICAgIHNoaXBwaW5nX2lkLFxuICAgICAgICAgICAgcGF5bWVudF9tZXRob2RfaWQsXG4gICAgICAgICAgICBsb2NhdGlvbl9pZCxcbiAgICAgICAgICAgIGNvbW1lbnRzLFxuICAgICAgICAgICAgdHJhY2tpbmc6IDAsXG4gICAgICAgICAgICB0aW1lX3Nsb3QsXG4gICAgICAgICAgICBhcHBseV93YWxsZXQsXG4gICAgICAgICAgICBwdXJjaGFzZV9vcmRlcl9udW1iZXIsXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJhY2tpbmdDb2RlKCkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgodHJhY2tpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodHJhY2tpbmcgPD0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyB0cmFja2luZztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBib2R5LnRyYWNraW5nID0gdHJhY2tpbmc7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB2b3VjaGVyX2tleXMgPSB0aGlzLnZvdWNoZXJzLmdldEFwcGxpZWRWb3VjaGVyS2V5cygpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHZvdWNoZXJfa2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGJvZHkudm91Y2hlcnMgPSB2b3VjaGVyX2tleXM7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgICAgICAgICAucG9zdDxFc29sdmVTZXRSZXNwb25zZTxFc29sdmVDaGVja291dFJlc3BvbnNlPj4oXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXQtY2hlY2tvdXQucGhwYCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHksXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVNpbmdsZUh0dHBSZXNwb25zZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZWRfdHJhY2tpbmcgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb3Vwb25zLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZvdWNoZXJzLnJlc2V0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlQ2hlY2tvdXRSZXN1bHQocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZXQtY2hlY2tvdXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvclJlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q2FydEFsdGVybmF0aXZlcygpOiBPYnNlcnZhYmxlPEVzb2x2ZUNhcnRBbHRlcm5hdGl2ZXNNYXA+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxcbiAgICAgICAgICAgICAgICBFc29sdmVHZXRSZXNwb25zZTxFc29sdmVDYXJ0QWx0ZXJuYXRpdmVSZWNvcmRbXT5cbiAgICAgICAgICAgID4oYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWNhcnQtYWx0ZXJuYXRpdmVzLnBocGApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0NhcnRBbHRlcm5hdGl2ZXMocmVzcG9uc2UucmVjb3Jkcyk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBhbiBhbHRlcm5hdGl2ZSBzdG9jayBpdGVtIHRvIGN1cnJlbnQgY2FydCBpdGVtXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaWQgSXQgaXMgdXNlZCB0byBpZGVudGlmeSB0aGUgc3BlY2lmaWMgY2FydCBpdGVtIGZvciB3aGljaCB0aGUgYWx0ZXJuYXRpdmUgaXMgYmVpbmcgc2V0XG4gICAgICogQHBhcmFtIGFsdGVybmF0aXZlIFRoZSBhbHRlcm5hdGl2ZSB2YWx1ZSB0aGF0IHlvdSB3YW50IHRvIHNldCBmb3IgYSBzcGVjaWZpYyBjYXJ0IGl0ZW0uXG4gICAgICogQHJldHVybnMgYW4gT2JzZXJ2YWJsZSBvZiB0eXBlIEVzb2x2ZVJlc3BvbnNlUmVzdWx0LlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRDYXJ0QWx0ZXJuYXRpdmUoXG4gICAgICAgIGlkOiBudW1iZXIsXG4gICAgICAgIGFsdGVybmF0aXZlOiBzdHJpbmcsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVSZXNwb25zZVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAucG9zdDxFc29sdmVTZXRSZXNwb25zZTxFc29sdmVQb3N0UmVzcG9uc2VJdGVtPj4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2V0LWNhcnQtYWx0ZXJuYXRpdmVzLnBocGAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjYXJ0X2lkOiBpZCxcbiAgICAgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmU6IGFsdGVybmF0aXZlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChodHRwX3Jlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVNpbmdsZUh0dHBSZXNwb25zZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IG5ldyBFc29sdmVSZXNwb25zZVJlc3VsdChyZXNwb25zZSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2V0LWNhcnQtYWx0ZXJuYXRpdmVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yUmVzLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlQ2FydEFsdGVybmF0aXZlKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPEVzb2x2ZVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZGVsZXRlPEVzb2x2ZURlbGV0ZVJlc3BvbnNlPihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9kZWxldGUtY2FydC1hbHRlcm5hdGl2ZS5waHBgLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IGlkIH0sXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlc3VsdCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlc3VsdCA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZS5yZXN1bHQuc3RhdHVzICE9PSAnc3VjY2VzcydcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBodHRwX3Jlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVSZXN1bHQoXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlc3VsdC5zdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlc3VsdC5jb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZS5yZXN1bHQubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBEZWxldGVFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUtY2FydC1hbHRlcm5hdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvclJlcyxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIHRoZSBlU29sdmUgdHJlZSByZWNvcmRzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2FydF9pdGVtX3JlY29yZHMgUmVjb3JkcyB0byBwcm9jZXNzXG4gICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgcHJvY2Vzc2VkIGNhcnQgaXRlbXNcbiAgICAgKi9cbiAgICBwcml2YXRlIHByb2Nlc3NDYXJ0KGNhcnRfaXRlbV9yZWNvcmRzOiBFc29sdmVDYXJ0SXRlbVJlY29yZFtdKTogRXNvbHZlQ2FydCB7XG4gICAgICAgIGNvbnN0IGNhcnRfaXRlbXM6IEVzb2x2ZUNhcnRJdGVtW10gPSBbXTtcblxuICAgICAgICBpZiAoY2FydF9pdGVtX3JlY29yZHMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FydF9pdGVtX3JlY29yZCBvZiBjYXJ0X2l0ZW1fcmVjb3Jkcykge1xuICAgICAgICAgICAgICAgIGNhcnRfaXRlbXMucHVzaChuZXcgRXNvbHZlQ2FydEl0ZW0oY2FydF9pdGVtX3JlY29yZCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhcnRfaXRlbXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIHRoZSBlU29sdmUgY2FydCBhbHRlcm5hdGl2ZXMgcmVjb3Jkc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlY29yZHMgUmVjb3JkcyB0byBwcm9jZXNzXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBIGBNYXBgIG9mIHByb2Nlc3NlZCBjYXJ0IGFsdGVybmF0aXZlc1xuICAgICAqL1xuICAgIHByaXZhdGUgcHJvY2Vzc0NhcnRBbHRlcm5hdGl2ZXMoXG4gICAgICAgIHJlY29yZHM6IEVzb2x2ZUNhcnRBbHRlcm5hdGl2ZVJlY29yZFtdLFxuICAgICk6IEVzb2x2ZUNhcnRBbHRlcm5hdGl2ZXNNYXAge1xuICAgICAgICBjb25zdCBhbHRlcm5hdGl2ZXM6IEVzb2x2ZUNhcnRBbHRlcm5hdGl2ZXNNYXAgPSBuZXcgTWFwKCk7XG5cbiAgICAgICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xuICAgICAgICAgICAgYWx0ZXJuYXRpdmVzLnNldChcbiAgICAgICAgICAgICAgICArcmVjb3JkLml0ZW1faWQsXG4gICAgICAgICAgICAgICAgbmV3IEVzb2x2ZUNhcnRBbHRlcm5hdGl2ZShyZWNvcmQpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbHRlcm5hdGl2ZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIHRoZSBlU29sdmUgY2FydCB0b3RhbHNcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWNvcmQgRGF0YSB0byBwcm9jZXNzXG4gICAgICogQHJldHVybnMgUHJvY2Vzc2VkIGNhcnQgdG90YWxzXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcm9jZXNzQ2FydFRvdGFscyhcbiAgICAgICAgcmVjb3JkOiBFc29sdmVDYXJ0VG90YWxzUmVjb3JkLFxuICAgICk6IEVzb2x2ZUNhcnRUb3RhbHMge1xuICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZUNhcnRUb3RhbHMocmVjb3JkKTtcbiAgICB9XG59XG4iXX0=
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWNhcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9jYXJ0L2Vzb2x2ZS1jYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUNILFVBQVUsRUFFVixVQUFVLEdBQ2IsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxFQUlILDRCQUE0QixFQUM1QixvQkFBb0IsR0FFdkIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWxELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVwRCxPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQiw4QkFBOEIsR0FDakMsTUFBTSxXQUFXLENBQUM7O0FBd0JuQixNQUFNLE9BQU8saUJBQWlCO0lBSDlCO1FBSXFCLFdBQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNyQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFCLGlCQUFZ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WUFDN0MsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUMxQyx5QkFBeUIsRUFDekIsUUFBUSxDQUNYLENBQUM7UUFDTixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssV0FBVyxDQUFDLGlCQUF5QztRQUN6RCxNQUFNLFVBQVUsR0FBcUIsRUFBRSxDQUFDO1FBRXhDLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUNwQixLQUFLLE1BQU0sZ0JBQWdCLElBQUksaUJBQWlCLEVBQUUsQ0FBQztnQkFDL0MsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDMUQsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssdUJBQXVCLENBQzNCLE9BQXNDO1FBRXRDLE1BQU0sWUFBWSxHQUE4QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRTFELEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7WUFDM0IsWUFBWSxDQUFDLEdBQUcsQ0FDWixDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQ2YsSUFBSSxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FDcEMsQ0FBQztRQUNOLENBQUM7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxpQkFBaUIsQ0FDckIsTUFBOEI7UUFFOUIsT0FBTyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OEdBM2NRLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmQsTUFBTTs7MkZBRVQsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICAgIEh0dHBDbGllbnQsXG4gICAgSHR0cEVycm9yUmVzcG9uc2UsXG4gICAgSHR0cFBhcmFtcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBpaWYsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRXNvbHZlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgRXNvbHZlRXJyb3JIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9lcnJvcnMnO1xuaW1wb3J0IHtcbiAgICBFc29sdmVEZWxldGVSZXNwb25zZSxcbiAgICBFc29sdmVHZXRSZXNwb25zZSxcbiAgICBFc29sdmVQb3N0UmVzcG9uc2VJdGVtLFxuICAgIEVzb2x2ZVJlc3BvbnNlSGFuZGxlclNlcnZpY2UsXG4gICAgRXNvbHZlUmVzcG9uc2VSZXN1bHQsXG4gICAgRXNvbHZlU2V0UmVzcG9uc2UsXG59IGZyb20gJy4uL3NoYXJlZC9yZXNwb25zZSc7XG5pbXBvcnQgeyBFc29sdmVSZXN1bHQgfSBmcm9tICcuLi9zaGFyZWQvZXNvbHZlLXJlc3VsdC5tb2RlbCc7XG5cbmltcG9ydCB7IEVzb2x2ZUNvdXBvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vY291cG9ucyc7XG5pbXBvcnQgeyBFc29sdmVUcmFuc2FjdGlvblR5cGUgfSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgRXNvbHZlVm91Y2hlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vdm91Y2hlcnMnO1xuXG5pbXBvcnQge1xuICAgIEVzb2x2ZUNhcnRBbHRlcm5hdGl2ZSxcbiAgICBFc29sdmVDYXJ0SXRlbSxcbiAgICBFc29sdmVDYXJ0VG90YWxzLFxuICAgIEVzb2x2ZUNoZWNrb3V0UmVzdWx0LFxuICAgIEVzb2x2ZUVtcHR5Q2FydFJlc3VsdCxcbiAgICBFc29sdmVUcmFuc2FjdGlvbkFuYWx5dGljc0RhdGEsXG59IGZyb20gJy4vY2xhc3Nlcyc7XG5pbXBvcnQge1xuICAgIEVzb2x2ZUFkZGl0aW9uYWxXaGVyZSxcbiAgICBFc29sdmVDYXJ0QWx0ZXJuYXRpdmVSZWNvcmQsXG4gICAgRXNvbHZlQ2FydEl0ZW1SZWNvcmQsXG4gICAgRXNvbHZlQ2FydEl0ZW1SZXNwb25zZSxcbiAgICBFc29sdmVDYXJ0U2V0SXRlbSxcbiAgICBFc29sdmVDYXJ0VG90YWxzUmVjb3JkLFxuICAgIEVzb2x2ZUNoZWNrb3V0Qm9keSxcbiAgICBFc29sdmVDaGVja291dFJlc3BvbnNlLFxuICAgIEVzb2x2ZVRpbWVTbG90Q2hlY2tvdXQsXG4gICAgRXNvbHZlVHJhY2tpbmdDb2RlLFxuICAgIEVzb2x2ZVRyYW5zYWN0aW9uQW5hbHl0aWNzRGF0YVJlY29yZCxcbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gICAgRXNvbHZlQ2FydCxcbiAgICBFc29sdmVDYXJ0U2V0QWN0aW9uLFxuICAgIEVzb2x2ZUNhcnRFbXB0eVJlc3BvbnNlLFxuICAgIEVzb2x2ZUNhcnRBbHRlcm5hdGl2ZXNNYXAsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBFc29sdmVDYXJ0U2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3QoRXNvbHZlQ29uZmlnU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JIYW5kbGVyID0gaW5qZWN0KEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzcG9uc2VIYW5kbGVyID0gaW5qZWN0KEVzb2x2ZVJlc3BvbnNlSGFuZGxlclNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY291cG9ucyA9IGluamVjdChFc29sdmVDb3Vwb25zU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB2b3VjaGVycyA9IGluamVjdChFc29sdmVWb3VjaGVyc1NlcnZpY2UpO1xuXG4gICAgcHJpdmF0ZSBfY2FjaGVkX3RyYWNraW5nID0gMDtcblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBjYXJ0XG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZWAgd2l0aCBhbiBhcnJheSBvZiBjYXJ0IGl0ZW1zXG4gICAgICovXG4gICAgcHVibGljIGdldENhcnQoKTogT2JzZXJ2YWJsZTxFc29sdmVDYXJ0PiB7XG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuXG4gICAgICAgIGNvbnN0IGNvdXBvbnMgPSB0aGlzLmNvdXBvbnMuZ2V0QXBwbGllZENvdXBvbktleXMoKTtcblxuICAgICAgICBpZiAoY291cG9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdjb3Vwb25zJywgY291cG9ucy5qb2luKCcsJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxcbiAgICAgICAgICAgICAgICBFc29sdmVHZXRSZXNwb25zZTxFc29sdmVDYXJ0SXRlbVJlY29yZFtdPlxuICAgICAgICAgICAgPihgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtY2FydC5waHBgLCB7IHBhcmFtcyB9KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NDYXJ0KHJlc3BvbnNlLnJlY29yZHMpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBjYXJ0IGJ5IHByZWZvcm1pbmcgdmFyaW91cyBhY3Rpb25zLCBzdWNoIGFzIGFkZGluZywgZWRpdGluZyBvciByZW1vdmluZyBpdGVtcyBmcm9tIHRoZSBjYXJ0LlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW1zIEFuIGFycmF5IG9mIG9wdGlvbnMgdG8gdXBkYXRlIHRoZSBjYXJ0XG4gICAgICogQHBhcmFtIGFjdGlvbiBUaGUgZGVmYXVsdCBhY3Rpb24gdG8gcHJlZm9ybVxuICAgICAqXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHdpdGggYW4gYXJyYXkgb2YgcmVzcG9uc2VzIHRoYXQgZ2l2ZXMgZmVlZGJhY2sgb24gdGhlIHJlcXVlc3RlZCBjaGFuZ2VzXG4gICAgICovXG4gICAgcHVibGljIHNldENhcnQoXG4gICAgICAgIGl0ZW1zOiBFc29sdmVDYXJ0U2V0SXRlbVtdLFxuICAgICAgICBhY3Rpb246IEVzb2x2ZUNhcnRTZXRBY3Rpb24gPSAnYWRkJyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZUNhcnRJdGVtUmVzcG9uc2VbXT4ge1xuICAgICAgICBjb25zdCBib2R5ID0ge1xuICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U8RXNvbHZlQ2FydEl0ZW1SZXNwb25zZT4+KFxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L3NldC1jYXJ0LWl0ZW0ucGhwYCxcbiAgICAgICAgICAgICAgICBib2R5LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnJlc3BvbnNlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5yZXNwb25zZXM7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRDYXJ0RW1wdHkoXG4gICAgICAgIHR5cGU6IEVzb2x2ZVRyYW5zYWN0aW9uVHlwZSxcbiAgICAgICAgYWRkaXRpb25hbF93aGVyZTogRXNvbHZlQWRkaXRpb25hbFdoZXJlW10sXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVFbXB0eUNhcnRSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYm9keSA9IHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBhZGRpdGlvbmFsX3doZXJlLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPEVzb2x2ZUNhcnRFbXB0eVJlc3BvbnNlPj4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2V0LWNhcnQtZW1wdHkucGhwYCxcbiAgICAgICAgICAgICAgICBib2R5LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04OycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZUhhbmRsZXIudmFsaWRhdGVTaW5nbGVIdHRwUmVzcG9uc2UoXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVkX3RyYWNraW5nID0gMDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlRW1wdHlDYXJ0UmVzdWx0KHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2V0LWNhcnQtZW1wdHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JSZXMsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgdG90YWxzIG9mIHRoZSBjYXJ0IHdpdGggYWxsIHRoZSB0b3RhbHMgY2FsY3VsYXRlZFxuICAgICAqXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHdpdGggYW4gb2JqZWN0IGNvbnRhaW5pbmcgY2FydCB0b3RhbHNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VG90YWxzKFxuICAgICAgICB0eXBlPzogRXNvbHZlVHJhbnNhY3Rpb25UeXBlLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlQ2FydFRvdGFscz4ge1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoe1xuICAgICAgICAgICAgZnJvbU9iamVjdDoge1xuICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUgPz8gJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB2b3VjaGVycyA9IHRoaXMudm91Y2hlcnMuZ2V0QXBwbGllZFZvdWNoZXJLZXlzKCk7XG5cbiAgICAgICAgaWYgKHZvdWNoZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3ZvdWNoZXJzJywgdm91Y2hlcnMuam9pbignLCcpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8XG4gICAgICAgICAgICAgICAgRXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlQ2FydFRvdGFsc1JlY29yZD5cbiAgICAgICAgICAgID4oYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWNhcnQtdG90YWxzLnBocGAsIHsgcGFyYW1zIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShyZXNwb25zZS5yZWNvcmRzKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0NhcnRUb3RhbHMocmVzcG9uc2UucmVjb3Jkcyk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyBhIHRyYWNraW5nIGNvZGUgZm9yIHRoZSBjYXJ0XG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZWAgd2l0aCB0aGUgY2FydCB0cmFja2luZyBjb2RlXG4gICAgICovXG4gICAgcHVibGljIGdldFRyYWNraW5nQ29kZSgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gaWlmKFxuICAgICAgICAgICAgKCkgPT4gdGhpcy5fY2FjaGVkX3RyYWNraW5nID4gMCxcbiAgICAgICAgICAgIG9mKHRoaXMuX2NhY2hlZF90cmFja2luZyksXG4gICAgICAgICAgICB0aGlzLmh0dHBcbiAgICAgICAgICAgICAgICAuZ2V0PFxuICAgICAgICAgICAgICAgICAgICBFc29sdmVHZXRSZXNwb25zZTxFc29sdmVUcmFja2luZ0NvZGU+XG4gICAgICAgICAgICAgICAgPihgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtY2hlY2tvdXQtdHJhY2tpbmcucGhwYClcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocmVzcG9uc2UucmVjb3JkcylcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZWRfdHJhY2tpbmcgPSByZXNwb25zZS5yZWNvcmRzLnRyYWNraW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UucmVjb3Jkcy50cmFja2luZztcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGRhdGEgb2YgdGhlIHRyYW5zYWN0aW9uIGZvciB0aGUgYW5hbHl0aWNzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHJhbnNhY3Rpb25faWQgSUQgb2YgdGhlIHRyYW5zYWN0aW9uIHVzZWQgaW4gZVNvbHZlXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZWAgd2l0aCB0aGUgYW5hbHl0aWNzIGRhdGFcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VHJhbnNhY3Rpb25BbmFseXRpY3NEYXRhPFQgPSBhbnk+KFxuICAgICAgICB0cmFuc2FjdGlvbl9pZDogbnVtYmVyLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlVHJhbnNhY3Rpb25BbmFseXRpY3NEYXRhPFQ+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlVHJhbnNhY3Rpb25BbmFseXRpY3NEYXRhUmVjb3JkPFQ+Pj4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LXRyYW5zYWN0aW9uLWFuYWx5dGljcy1kYXRhLnBocGAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uX2lkLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShyZXNwb25zZS5yZWNvcmRzKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVUcmFuc2FjdGlvbkFuYWx5dGljc0RhdGE8VD4oXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZXMgY2hlY2tvdXQgb2YgdGhlIGNhcnQgaXRlbXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSB0eXBlIFRoZSBjYXJ0IHR5cGUgdGhhdCBuZWVkcyB0byBiZSBjaGVja2VkIG91dFxuICAgICAqIEBwYXJhbSBhZGRyZXNzZXNfaWQgVGhlIElEIG9mIHRoZSBkZWxpdmVyeSBhZGRyZXNzXG4gICAgICogQHBhcmFtIHNoaXBwaW5nX2lkIFRoZSBJRCBvZiB0aGUgc2hpcHBpbmcgbWV0aG9kXG4gICAgICogQHBhcmFtIHBheW1lbnRfbWV0aG9kX2lkIFRoZSBJRCBvZiB0aGUgc2VsZWN0ZWQgcGF5bWVudCBtZXRob2RcbiAgICAgKiBAcGFyYW0gbG9jYXRpb25faWQgVGhlIElEIG9mIHRoZSBzZWxlY3RlZCBicmFuY2ggZnJvbSB3aXRoIHNoaXBwaW5nIG5lZWRzIHRvIGJlIGNhbGN1bGF0ZWRcbiAgICAgKiBAcGFyYW0gY29tbWVudHMgQWRkaXRpb25hbCBjb21tZW50cyBvbiB0aGUgY2FydFxuICAgICAqIEBwYXJhbSB0aW1lX3Nsb3QgVGhlIHRpbWUgc2xvdCB0byBiZSB1c2VkXG4gICAgICogQHBhcmFtIGFwcGx5X3dhbGxldCBXaGV0aGVyIHRvIGFwcGx5IHdhbGxldCB0byB0aGUgb3JkZXJcbiAgICAgKiBAcGFyYW0gcHVyY2hhc2Vfb3JkZXJfbnVtYmVyIEN1c3RvbSBwdXJjaGFzZSBvcmRlciB0byBhZGRlZCB0byB0cmFuc2FjdGlvblxuICAgICAqXG4gICAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGVgIHdpdGggdGhlIHRyYW5zYWN0aW9uIElEXG4gICAgICovXG4gICAgcHVibGljIGNoZWNrb3V0KFxuICAgICAgICB0eXBlOiBFc29sdmVUcmFuc2FjdGlvblR5cGUsXG4gICAgICAgIGFkZHJlc3Nlc19pZDogbnVtYmVyLFxuICAgICAgICBzaGlwcGluZ19pZDogbnVtYmVyLFxuICAgICAgICBwYXltZW50X21ldGhvZF9pZCA9IDAsXG4gICAgICAgIGxvY2F0aW9uX2lkID0gMCxcbiAgICAgICAgY29tbWVudHMgPSAnJyxcbiAgICAgICAgdGltZV9zbG90PzogRXNvbHZlVGltZVNsb3RDaGVja291dCxcbiAgICAgICAgYXBwbHlfd2FsbGV0PzogYm9vbGVhbixcbiAgICAgICAgcHVyY2hhc2Vfb3JkZXJfbnVtYmVyPzogc3RyaW5nLFxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlQ2hlY2tvdXRSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYm9keTogRXNvbHZlQ2hlY2tvdXRCb2R5ID0ge1xuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGFkZHJlc3Nlc19pZCxcbiAgICAgICAgICAgIHNoaXBwaW5nX2lkLFxuICAgICAgICAgICAgcGF5bWVudF9tZXRob2RfaWQsXG4gICAgICAgICAgICBsb2NhdGlvbl9pZCxcbiAgICAgICAgICAgIGNvbW1lbnRzLFxuICAgICAgICAgICAgdHJhY2tpbmc6IDAsXG4gICAgICAgICAgICB0aW1lX3Nsb3QsXG4gICAgICAgICAgICBhcHBseV93YWxsZXQsXG4gICAgICAgICAgICBwdXJjaGFzZV9vcmRlcl9udW1iZXIsXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJhY2tpbmdDb2RlKCkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgodHJhY2tpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodHJhY2tpbmcgPD0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyB0cmFja2luZztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBib2R5LnRyYWNraW5nID0gdHJhY2tpbmc7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB2b3VjaGVyX2tleXMgPSB0aGlzLnZvdWNoZXJzLmdldEFwcGxpZWRWb3VjaGVyS2V5cygpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHZvdWNoZXJfa2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGJvZHkudm91Y2hlcnMgPSB2b3VjaGVyX2tleXM7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgICAgICAgICAucG9zdDxFc29sdmVTZXRSZXNwb25zZTxFc29sdmVDaGVja291dFJlc3BvbnNlPj4oXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXQtY2hlY2tvdXQucGhwYCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHksXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtODsnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVNpbmdsZUh0dHBSZXNwb25zZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZWRfdHJhY2tpbmcgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb3Vwb25zLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZvdWNoZXJzLnJlc2V0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNvbHZlQ2hlY2tvdXRSZXN1bHQocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXM6IEh0dHBFcnJvclJlc3BvbnNlIHwgYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZXQtY2hlY2tvdXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvclJlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q2FydEFsdGVybmF0aXZlcygpOiBPYnNlcnZhYmxlPEVzb2x2ZUNhcnRBbHRlcm5hdGl2ZXNNYXA+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxcbiAgICAgICAgICAgICAgICBFc29sdmVHZXRSZXNwb25zZTxFc29sdmVDYXJ0QWx0ZXJuYXRpdmVSZWNvcmRbXT5cbiAgICAgICAgICAgID4oYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWNhcnQtYWx0ZXJuYXRpdmVzLnBocGApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0NhcnRBbHRlcm5hdGl2ZXMocmVzcG9uc2UucmVjb3Jkcyk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBhbiBhbHRlcm5hdGl2ZSBzdG9jayBpdGVtIHRvIGN1cnJlbnQgY2FydCBpdGVtXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaWQgSXQgaXMgdXNlZCB0byBpZGVudGlmeSB0aGUgc3BlY2lmaWMgY2FydCBpdGVtIGZvciB3aGljaCB0aGUgYWx0ZXJuYXRpdmUgaXMgYmVpbmcgc2V0XG4gICAgICogQHBhcmFtIGFsdGVybmF0aXZlIFRoZSBhbHRlcm5hdGl2ZSB2YWx1ZSB0aGF0IHlvdSB3YW50IHRvIHNldCBmb3IgYSBzcGVjaWZpYyBjYXJ0IGl0ZW0uXG4gICAgICogQHJldHVybnMgYW4gT2JzZXJ2YWJsZSBvZiB0eXBlIEVzb2x2ZVJlc3BvbnNlUmVzdWx0LlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRDYXJ0QWx0ZXJuYXRpdmUoXG4gICAgICAgIGlkOiBudW1iZXIsXG4gICAgICAgIGFsdGVybmF0aXZlOiBzdHJpbmcsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVSZXNwb25zZVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAucG9zdDxFc29sdmVTZXRSZXNwb25zZTxFc29sdmVQb3N0UmVzcG9uc2VJdGVtPj4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2V0LWNhcnQtYWx0ZXJuYXRpdmVzLnBocGAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjYXJ0X2lkOiBpZCxcbiAgICAgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmU6IGFsdGVybmF0aXZlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7JyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChodHRwX3Jlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlSGFuZGxlci52YWxpZGF0ZVNpbmdsZUh0dHBSZXNwb25zZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBfcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IG5ldyBFc29sdmVSZXNwb25zZVJlc3VsdChyZXNwb25zZSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBQb3N0RXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2V0LWNhcnQtYWx0ZXJuYXRpdmVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yUmVzLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlQ2FydEFsdGVybmF0aXZlKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPEVzb2x2ZVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZGVsZXRlPEVzb2x2ZURlbGV0ZVJlc3BvbnNlPihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9kZWxldGUtY2FydC1hbHRlcm5hdGl2ZS5waHBgLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IGlkIH0sXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoaHR0cF9yZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlc3VsdCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlc3VsdCA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZS5yZXN1bHQuc3RhdHVzICE9PSAnc3VjY2VzcydcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBodHRwX3Jlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc29sdmVSZXN1bHQoXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlc3VsdC5zdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlc3VsdC5jb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cF9yZXNwb25zZS5yZXN1bHQubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBEZWxldGVFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUtY2FydC1hbHRlcm5hdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvclJlcyxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIHRoZSBlU29sdmUgdHJlZSByZWNvcmRzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2FydF9pdGVtX3JlY29yZHMgUmVjb3JkcyB0byBwcm9jZXNzXG4gICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgcHJvY2Vzc2VkIGNhcnQgaXRlbXNcbiAgICAgKi9cbiAgICBwcml2YXRlIHByb2Nlc3NDYXJ0KGNhcnRfaXRlbV9yZWNvcmRzOiBFc29sdmVDYXJ0SXRlbVJlY29yZFtdKTogRXNvbHZlQ2FydCB7XG4gICAgICAgIGNvbnN0IGNhcnRfaXRlbXM6IEVzb2x2ZUNhcnRJdGVtW10gPSBbXTtcblxuICAgICAgICBpZiAoY2FydF9pdGVtX3JlY29yZHMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FydF9pdGVtX3JlY29yZCBvZiBjYXJ0X2l0ZW1fcmVjb3Jkcykge1xuICAgICAgICAgICAgICAgIGNhcnRfaXRlbXMucHVzaChuZXcgRXNvbHZlQ2FydEl0ZW0oY2FydF9pdGVtX3JlY29yZCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhcnRfaXRlbXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIHRoZSBlU29sdmUgY2FydCBhbHRlcm5hdGl2ZXMgcmVjb3Jkc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlY29yZHMgUmVjb3JkcyB0byBwcm9jZXNzXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBIGBNYXBgIG9mIHByb2Nlc3NlZCBjYXJ0IGFsdGVybmF0aXZlc1xuICAgICAqL1xuICAgIHByaXZhdGUgcHJvY2Vzc0NhcnRBbHRlcm5hdGl2ZXMoXG4gICAgICAgIHJlY29yZHM6IEVzb2x2ZUNhcnRBbHRlcm5hdGl2ZVJlY29yZFtdLFxuICAgICk6IEVzb2x2ZUNhcnRBbHRlcm5hdGl2ZXNNYXAge1xuICAgICAgICBjb25zdCBhbHRlcm5hdGl2ZXM6IEVzb2x2ZUNhcnRBbHRlcm5hdGl2ZXNNYXAgPSBuZXcgTWFwKCk7XG5cbiAgICAgICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xuICAgICAgICAgICAgYWx0ZXJuYXRpdmVzLnNldChcbiAgICAgICAgICAgICAgICArcmVjb3JkLml0ZW1faWQsXG4gICAgICAgICAgICAgICAgbmV3IEVzb2x2ZUNhcnRBbHRlcm5hdGl2ZShyZWNvcmQpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbHRlcm5hdGl2ZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIHRoZSBlU29sdmUgY2FydCB0b3RhbHNcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWNvcmQgRGF0YSB0byBwcm9jZXNzXG4gICAgICogQHJldHVybnMgUHJvY2Vzc2VkIGNhcnQgdG90YWxzXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcm9jZXNzQ2FydFRvdGFscyhcbiAgICAgICAgcmVjb3JkOiBFc29sdmVDYXJ0VG90YWxzUmVjb3JkLFxuICAgICk6IEVzb2x2ZUNhcnRUb3RhbHMge1xuICAgICAgICByZXR1cm4gbmV3IEVzb2x2ZUNhcnRUb3RhbHMocmVjb3JkKTtcbiAgICB9XG59XG4iXX0=
@@ -141,13 +141,13 @@ export class EsolveCategoryTreeService {
141
141
  }
142
142
  return null;
143
143
  }
144
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: EsolveCategoryTreeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
145
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: EsolveCategoryTreeService, providedIn: 'root' }); }
144
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: EsolveCategoryTreeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
145
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: EsolveCategoryTreeService, providedIn: 'root' }); }
146
146
  }
147
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: EsolveCategoryTreeService, decorators: [{
147
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: EsolveCategoryTreeService, decorators: [{
148
148
  type: Injectable,
149
149
  args: [{
150
150
  providedIn: 'root',
151
151
  }]
152
152
  }] });
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWNhdGVnb3J5LXRyZWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9jYXRlZ29yeS10cmVlL2Vzb2x2ZS1jYXRlZ29yeS10cmVlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU5RCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sV0FBVyxDQUFDOztBQVluRCxNQUFNLE9BQU8seUJBQXlCO0lBSHRDO1FBSXFCLFdBQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNyQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBNE45QztJQTFORzs7T0FFRztJQUNJLGVBQWUsQ0FDbEIsVUFBbUI7UUFFbkIsSUFBSSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUU5QixJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsR0FBRyxDQUlGLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQ25ELElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxR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QUFDLENBQUM7WUFFNUMsT0FBTztnQkFDSCxJQUFJO2dCQUNKLFNBQVM7YUFDWixDQUFDO1FBQ04sQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7K0dBN05RLHlCQUF5QjttSEFBekIseUJBQXlCLGNBRnRCLE1BQU07OzRGQUVULHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRXNvbHZlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgRXNvbHZlR2V0UmVzcG9uc2UgfSBmcm9tICcuLi9zaGFyZWQvcmVzcG9uc2UnO1xuXG5pbXBvcnQgeyBFc29sdmVDYXRlZ29yeVRyZWVJdGVtIH0gZnJvbSAnLi9jbGFzc2VzJztcbmltcG9ydCB7XG4gICAgRXNvbHZlQ2F0ZWdvcnlSZWNvcmQsXG4gICAgRXNvbHZlU3ViY2F0ZWdvcnlSZWNvcmQsXG4gICAgRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbU9wdGlvbnMsXG4gICAgRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbVJlY29yZCxcbiAgICBFc29sdmVDYXRlZ29yeUlkZW50aWZpZXIsXG59IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEVzb2x2ZUNhdGVnb3J5VHJlZVNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KEVzb2x2ZUNvbmZpZ1NlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgY2F0ZWdvcnkgdHJlZSBmcm9tIGVTb2x2ZSBpbnN0YW5jZSBhbmQgY292ZXJ0cyBpdCB0byB0aGUgY29ycmVjdCBmb3JtYXQuXG4gICAgICovXG4gICAgcHVibGljIGdldENhdGVnb3J5VHJlZShcbiAgICAgICAgaWRlbnRpZmllcj86IHN0cmluZyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW1bXT4ge1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcblxuICAgICAgICBpZiAoaWRlbnRpZmllcikge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnaWRlbnRpZmllcicsIGlkZW50aWZpZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxcbiAgICAgICAgICAgICAgICBFc29sdmVHZXRSZXNwb25zZTxcbiAgICAgICAgICAgICAgICAgICAgKEVzb2x2ZUNhdGVnb3J5UmVjb3JkIHwgRXNvbHZlU3ViY2F0ZWdvcnlSZWNvcmQpW11cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA+KGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC10cmVlLnBocGAsIHsgcGFyYW1zIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1RyZWUocmVzcG9uc2UucmVjb3Jkcyk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlIHRoZSBzcGVjaWFsIHRyZWUgc3RydWN0dXJlIGZvciBhIHNwZWNpZmljIHNwZWNpYWwgZnJvbSB0aGUgZVNvbHZlXG4gICAgICogaW5zdGFuY2UgYW5kIGNvbnZlcnRzIGl0IGludG8gdGhlIGNvcnJlY3QgZm9ybWF0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3BlY2lhbF9pZCBJZCBvZiB0byBzcGVjaWFsIHRvIGdldCB0cmVlIGZvclxuICAgICAqXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBjb250YWluaW5nIHNwZWNpYWwgdHJlZSBkYXRhXG4gICAgICovXG4gICAgcHVibGljIGdldFNwZWNpYWxUcmVlKFxuICAgICAgICBzcGVjaWFsX2lkOiBudW1iZXIsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVDYXRlZ29yeVRyZWVJdGVtW10+IHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG5cbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc3BlY2lhbF9pZCcsIHNwZWNpYWxfaWQpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8XG4gICAgICAgICAgICAgICAgRXNvbHZlR2V0UmVzcG9uc2U8XG4gICAgICAgICAgICAgICAgICAgIChFc29sdmVDYXRlZ29yeVJlY29yZCB8IEVzb2x2ZVN1YmNhdGVnb3J5UmVjb3JkKVtdXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPihgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtc3BlY2lhbC10cmVlLnBocGAsIHsgcGFyYW1zIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1RyZWUocmVzcG9uc2UucmVjb3Jkcyk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlIHRoZSBkZXRhaWxzIG9mIGEgY2F0ZWdvcnkgdHJlZSBpdGVtIGZyb20gdGhlIGVTb2x2ZSBpbnN0YW5jZSBhbmRcbiAgICAgKiBjb252ZXJ0cyBpdCB0byB0aGUgY29ycmVjdCBmb3JtYXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBGaWx0ZXIgb3B0aW9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDYXRlZ29yeVRyZWVJdGVtKFxuICAgICAgICBvcHRpb25zOiBFc29sdmVDYXRlZ29yeVRyZWVJdGVtT3B0aW9ucyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW0+IHtcbiAgICAgICAgbGV0IHR5cGUhOiAnY2F0ZWdvcnknIHwgJ3N1YmNhdGVnb3J5JztcbiAgICAgICAgbGV0IGVzb2x2ZV9pZCE6IG51bWJlciB8IHN0cmluZztcbiAgICAgICAgbGV0IHNlZl9kZXNjcmlwdGlvbjtcblxuICAgICAgICBpZiAob3B0aW9ucy5pZCkge1xuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcnlJZGVudGlmaWVyID0gdGhpcy5wcm9jZXNzSUQob3B0aW9ucy5pZCk7XG5cbiAgICAgICAgICAgIGlmIChjYXRlZ29yeUlkZW50aWZpZXIpIHtcbiAgICAgICAgICAgICAgICB0eXBlID0gY2F0ZWdvcnlJZGVudGlmaWVyLnR5cGU7XG4gICAgICAgICAgICAgICAgZXNvbHZlX2lkID0gY2F0ZWdvcnlJZGVudGlmaWVyLmVzb2x2ZV9pZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnR5cGUpIHtcbiAgICAgICAgICAgIHR5cGUgPSBvcHRpb25zLnR5cGU7XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmVzb2x2ZV9pZCkge1xuICAgICAgICAgICAgICAgIGVzb2x2ZV9pZCA9IG9wdGlvbnMuZXNvbHZlX2lkO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnNlZl9kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIHNlZl9kZXNjcmlwdGlvbiA9IG9wdGlvbnMuc2VmX2Rlc2NyaXB0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGUgJiYgKGVzb2x2ZV9pZCB8fCBzZWZfZGVzY3JpcHRpb24pKSB7XG4gICAgICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcblxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgndHlwZScsIHR5cGUpO1xuXG4gICAgICAgICAgICBpZiAoZXNvbHZlX2lkKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnaWQnLCBlc29sdmVfaWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2VmX2Rlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc2VmX2Rlc2NyaXB0aW9uJywgc2VmX2Rlc2NyaXB0aW9uKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbVJlY29yZFtdPj4oXG4gICAgICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC10cmVlLWl0ZW0ucGhwYCxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMubGVuZ3RoIDw9IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzVHJlZUl0ZW0ocmVzcG9uc2UucmVjb3Jkc1swXSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiAnSW52YWxpZCBvcHRpb25zJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIHRoZSBlU29sdmUgdHJlZSByZWNvcmRzIGFuZCBjb252ZXJ0cyB0aGVtIGludG8gdGhlIGNvcnJlY3QgZm9ybWF0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHRyZWVfcmVjb3JkcyBSZWNvcmRzIHRvIHByb2Nlc3NcbiAgICAgKi9cbiAgICBwcml2YXRlIHByb2Nlc3NUcmVlKFxuICAgICAgICB0cmVlX3JlY29yZHM6IChFc29sdmVDYXRlZ29yeVJlY29yZCB8IEVzb2x2ZVN1YmNhdGVnb3J5UmVjb3JkKVtdLFxuICAgICk6IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IHRyZWVfaXRlbXM6IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGlmICh0cmVlX3JlY29yZHMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdHJlZV9yZWNvcmQgb2YgdHJlZV9yZWNvcmRzKSB7XG4gICAgICAgICAgICAgICAgbGV0IGVzb2x2ZV9pZDogc3RyaW5nIHwgbnVtYmVyID0gJyc7XG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudF9pZCA9ICcnO1xuICAgICAgICAgICAgICAgIGxldCBjaGlsZHJlbjogRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbVtdID0gW107XG5cbiAgICAgICAgICAgICAgICBpZiAodHJlZV9yZWNvcmQudHlwZSA9PT0gJ2NhdGVnb3J5Jykge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IHRoaXMucHJvY2Vzc1RyZWUodHJlZV9yZWNvcmQuY2hpbGRyZW4pO1xuICAgICAgICAgICAgICAgICAgICBlc29sdmVfaWQgPSB0cmVlX3JlY29yZC5tZW51X2lkO1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnRfaWQgPSB0cmVlX3JlY29yZC5vd25lcl9tZW51X2lkO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVzb2x2ZV9pZCA9IHRyZWVfcmVjb3JkLmlkO1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnRfaWQgPSB0cmVlX3JlY29yZC5tZW51X2lkO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRyZWVfaXRlbXMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW0oXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlX3JlY29yZC50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXNvbHZlX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50X2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZV9yZWNvcmQuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlX3JlY29yZC5zZWZfZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlX3JlY29yZC5zZW9fZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlX3JlY29yZC5zb3J0X3ByaW9yaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZV9yZWNvcmQuYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZV9yZWNvcmQuZGlzcGxheV9vbmx5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZV9yZWNvcmQuaW1hZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlX3JlY29yZC5zZW9fcGFnZV90aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVfcmVjb3JkLnNlb19rZXl3b3JkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVfcmVjb3JkLnNob3J0X2Rlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cmVlX2l0ZW1zO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1RyZWVJdGVtKFxuICAgICAgICByZWNvcmQ6IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW1SZWNvcmQsXG4gICAgKTogRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbSB7XG4gICAgICAgIHJldHVybiBuZXcgRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbShcbiAgICAgICAgICAgIHJlY29yZC50eXBlLFxuICAgICAgICAgICAgcmVjb3JkLmlkLFxuICAgICAgICAgICAgcmVjb3JkLnBhcmVudF9pZCxcbiAgICAgICAgICAgIHJlY29yZC5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHJlY29yZC5zZWZfZGVzY3JpcHRpb24sXG4gICAgICAgICAgICByZWNvcmQuc2hvcnRfZGVzY3JpcHRpb24sXG4gICAgICAgICAgICByZWNvcmQuc29ydF9wcmlvcml0eSxcbiAgICAgICAgICAgIHJlY29yZC5hY3RpdmUsXG4gICAgICAgICAgICByZWNvcmQuZGlzcGxheV9vbmx5LFxuICAgICAgICAgICAgcmVjb3JkLmltYWdlLFxuICAgICAgICAgICAgcmVjb3JkLnNlb19wYWdlX3RpdGxlLFxuICAgICAgICAgICAgcmVjb3JkLnNlb19rZXl3b3JkcyxcbiAgICAgICAgICAgIHJlY29yZC5zZW9fZGVzY3JpcHRpb24sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzSUQoaWQ6IHN0cmluZyk6IEVzb2x2ZUNhdGVnb3J5SWRlbnRpZmllciB8IG51bGwge1xuICAgICAgICBsZXQgdHlwZTogJ2NhdGVnb3J5JyB8ICdzdWJjYXRlZ29yeSc7XG4gICAgICAgIGxldCBlc29sdmVfaWQ6IG51bWJlciB8IHN0cmluZztcblxuICAgICAgICBjb25zdCB0eXBlX2NvZGVfcmVnZXggPSAvXjw8KENBVHxTVUIpPj4vZztcbiAgICAgICAgY29uc3QgbWF0Y2hfcmVzdWx0cyA9IGlkLm1hdGNoKHR5cGVfY29kZV9yZWdleCk7XG5cbiAgICAgICAgaWYgKG1hdGNoX3Jlc3VsdHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVfY29kZSA9IG1hdGNoX3Jlc3VsdHNbMF07XG5cbiAgICAgICAgICAgIHR5cGUgPSB0eXBlX2NvZGUgPT09ICc8PENBVD4+JyA/ICdjYXRlZ29yeScgOiAnc3ViY2F0ZWdvcnknO1xuICAgICAgICAgICAgZXNvbHZlX2lkID0gaWQucmVwbGFjZSh0eXBlX2NvZGVfcmVnZXgsICcnKTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAgIGVzb2x2ZV9pZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG4iXX0=
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWNhdGVnb3J5LXRyZWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9jYXRlZ29yeS10cmVlL2Vzb2x2ZS1jYXRlZ29yeS10cmVlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU5RCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sV0FBVyxDQUFDOztBQVluRCxNQUFNLE9BQU8seUJBQXlCO0lBSHRDO1FBSXFCLFdBQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNyQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBNE45QztJQTFORzs7T0FFRztJQUNJLGVBQWUsQ0FDbEIsVUFBbUI7UUFFbkIsSUFBSSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUU5QixJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsR0FBRyxDQUlGLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQ25ELElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxR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QUFDLENBQUM7WUFFNUMsT0FBTztnQkFDSCxJQUFJO2dCQUNKLFNBQVM7YUFDWixDQUFDO1FBQ04sQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7OEdBN05RLHlCQUF5QjtrSEFBekIseUJBQXlCLGNBRnRCLE1BQU07OzJGQUVULHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRXNvbHZlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgRXNvbHZlR2V0UmVzcG9uc2UgfSBmcm9tICcuLi9zaGFyZWQvcmVzcG9uc2UnO1xuXG5pbXBvcnQgeyBFc29sdmVDYXRlZ29yeVRyZWVJdGVtIH0gZnJvbSAnLi9jbGFzc2VzJztcbmltcG9ydCB7XG4gICAgRXNvbHZlQ2F0ZWdvcnlSZWNvcmQsXG4gICAgRXNvbHZlU3ViY2F0ZWdvcnlSZWNvcmQsXG4gICAgRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbU9wdGlvbnMsXG4gICAgRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbVJlY29yZCxcbiAgICBFc29sdmVDYXRlZ29yeUlkZW50aWZpZXIsXG59IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEVzb2x2ZUNhdGVnb3J5VHJlZVNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KEVzb2x2ZUNvbmZpZ1NlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgY2F0ZWdvcnkgdHJlZSBmcm9tIGVTb2x2ZSBpbnN0YW5jZSBhbmQgY292ZXJ0cyBpdCB0byB0aGUgY29ycmVjdCBmb3JtYXQuXG4gICAgICovXG4gICAgcHVibGljIGdldENhdGVnb3J5VHJlZShcbiAgICAgICAgaWRlbnRpZmllcj86IHN0cmluZyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW1bXT4ge1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcblxuICAgICAgICBpZiAoaWRlbnRpZmllcikge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnaWRlbnRpZmllcicsIGlkZW50aWZpZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldDxcbiAgICAgICAgICAgICAgICBFc29sdmVHZXRSZXNwb25zZTxcbiAgICAgICAgICAgICAgICAgICAgKEVzb2x2ZUNhdGVnb3J5UmVjb3JkIHwgRXNvbHZlU3ViY2F0ZWdvcnlSZWNvcmQpW11cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA+KGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC10cmVlLnBocGAsIHsgcGFyYW1zIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1RyZWUocmVzcG9uc2UucmVjb3Jkcyk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlIHRoZSBzcGVjaWFsIHRyZWUgc3RydWN0dXJlIGZvciBhIHNwZWNpZmljIHNwZWNpYWwgZnJvbSB0aGUgZVNvbHZlXG4gICAgICogaW5zdGFuY2UgYW5kIGNvbnZlcnRzIGl0IGludG8gdGhlIGNvcnJlY3QgZm9ybWF0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3BlY2lhbF9pZCBJZCBvZiB0byBzcGVjaWFsIHRvIGdldCB0cmVlIGZvclxuICAgICAqXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBjb250YWluaW5nIHNwZWNpYWwgdHJlZSBkYXRhXG4gICAgICovXG4gICAgcHVibGljIGdldFNwZWNpYWxUcmVlKFxuICAgICAgICBzcGVjaWFsX2lkOiBudW1iZXIsXG4gICAgKTogT2JzZXJ2YWJsZTxFc29sdmVDYXRlZ29yeVRyZWVJdGVtW10+IHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG5cbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc3BlY2lhbF9pZCcsIHNwZWNpYWxfaWQpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8XG4gICAgICAgICAgICAgICAgRXNvbHZlR2V0UmVzcG9uc2U8XG4gICAgICAgICAgICAgICAgICAgIChFc29sdmVDYXRlZ29yeVJlY29yZCB8IEVzb2x2ZVN1YmNhdGVnb3J5UmVjb3JkKVtdXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPihgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtc3BlY2lhbC10cmVlLnBocGAsIHsgcGFyYW1zIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1RyZWUocmVzcG9uc2UucmVjb3Jkcyk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlIHRoZSBkZXRhaWxzIG9mIGEgY2F0ZWdvcnkgdHJlZSBpdGVtIGZyb20gdGhlIGVTb2x2ZSBpbnN0YW5jZSBhbmRcbiAgICAgKiBjb252ZXJ0cyBpdCB0byB0aGUgY29ycmVjdCBmb3JtYXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBGaWx0ZXIgb3B0aW9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDYXRlZ29yeVRyZWVJdGVtKFxuICAgICAgICBvcHRpb25zOiBFc29sdmVDYXRlZ29yeVRyZWVJdGVtT3B0aW9ucyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW0+IHtcbiAgICAgICAgbGV0IHR5cGUhOiAnY2F0ZWdvcnknIHwgJ3N1YmNhdGVnb3J5JztcbiAgICAgICAgbGV0IGVzb2x2ZV9pZCE6IG51bWJlciB8IHN0cmluZztcbiAgICAgICAgbGV0IHNlZl9kZXNjcmlwdGlvbjtcblxuICAgICAgICBpZiAob3B0aW9ucy5pZCkge1xuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcnlJZGVudGlmaWVyID0gdGhpcy5wcm9jZXNzSUQob3B0aW9ucy5pZCk7XG5cbiAgICAgICAgICAgIGlmIChjYXRlZ29yeUlkZW50aWZpZXIpIHtcbiAgICAgICAgICAgICAgICB0eXBlID0gY2F0ZWdvcnlJZGVudGlmaWVyLnR5cGU7XG4gICAgICAgICAgICAgICAgZXNvbHZlX2lkID0gY2F0ZWdvcnlJZGVudGlmaWVyLmVzb2x2ZV9pZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnR5cGUpIHtcbiAgICAgICAgICAgIHR5cGUgPSBvcHRpb25zLnR5cGU7XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmVzb2x2ZV9pZCkge1xuICAgICAgICAgICAgICAgIGVzb2x2ZV9pZCA9IG9wdGlvbnMuZXNvbHZlX2lkO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnNlZl9kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIHNlZl9kZXNjcmlwdGlvbiA9IG9wdGlvbnMuc2VmX2Rlc2NyaXB0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGUgJiYgKGVzb2x2ZV9pZCB8fCBzZWZfZGVzY3JpcHRpb24pKSB7XG4gICAgICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcblxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgndHlwZScsIHR5cGUpO1xuXG4gICAgICAgICAgICBpZiAoZXNvbHZlX2lkKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnaWQnLCBlc29sdmVfaWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2VmX2Rlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc2VmX2Rlc2NyaXB0aW9uJywgc2VmX2Rlc2NyaXB0aW9uKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbVJlY29yZFtdPj4oXG4gICAgICAgICAgICAgICAgICAgIGAke3RoaXMuY29uZmlnLmFwaV91cmx9L2dldC10cmVlLWl0ZW0ucGhwYCxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMubGVuZ3RoIDw9IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzVHJlZUl0ZW0ocmVzcG9uc2UucmVjb3Jkc1swXSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiAnSW52YWxpZCBvcHRpb25zJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIHRoZSBlU29sdmUgdHJlZSByZWNvcmRzIGFuZCBjb252ZXJ0cyB0aGVtIGludG8gdGhlIGNvcnJlY3QgZm9ybWF0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHRyZWVfcmVjb3JkcyBSZWNvcmRzIHRvIHByb2Nlc3NcbiAgICAgKi9cbiAgICBwcml2YXRlIHByb2Nlc3NUcmVlKFxuICAgICAgICB0cmVlX3JlY29yZHM6IChFc29sdmVDYXRlZ29yeVJlY29yZCB8IEVzb2x2ZVN1YmNhdGVnb3J5UmVjb3JkKVtdLFxuICAgICk6IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IHRyZWVfaXRlbXM6IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGlmICh0cmVlX3JlY29yZHMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdHJlZV9yZWNvcmQgb2YgdHJlZV9yZWNvcmRzKSB7XG4gICAgICAgICAgICAgICAgbGV0IGVzb2x2ZV9pZDogc3RyaW5nIHwgbnVtYmVyID0gJyc7XG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudF9pZCA9ICcnO1xuICAgICAgICAgICAgICAgIGxldCBjaGlsZHJlbjogRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbVtdID0gW107XG5cbiAgICAgICAgICAgICAgICBpZiAodHJlZV9yZWNvcmQudHlwZSA9PT0gJ2NhdGVnb3J5Jykge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IHRoaXMucHJvY2Vzc1RyZWUodHJlZV9yZWNvcmQuY2hpbGRyZW4pO1xuICAgICAgICAgICAgICAgICAgICBlc29sdmVfaWQgPSB0cmVlX3JlY29yZC5tZW51X2lkO1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnRfaWQgPSB0cmVlX3JlY29yZC5vd25lcl9tZW51X2lkO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVzb2x2ZV9pZCA9IHRyZWVfcmVjb3JkLmlkO1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnRfaWQgPSB0cmVlX3JlY29yZC5tZW51X2lkO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRyZWVfaXRlbXMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW0oXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlX3JlY29yZC50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXNvbHZlX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50X2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZV9yZWNvcmQuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlX3JlY29yZC5zZWZfZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlX3JlY29yZC5zZW9fZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlX3JlY29yZC5zb3J0X3ByaW9yaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZV9yZWNvcmQuYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZV9yZWNvcmQuZGlzcGxheV9vbmx5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZV9yZWNvcmQuaW1hZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmVlX3JlY29yZC5zZW9fcGFnZV90aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVfcmVjb3JkLnNlb19rZXl3b3JkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVfcmVjb3JkLnNob3J0X2Rlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cmVlX2l0ZW1zO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1RyZWVJdGVtKFxuICAgICAgICByZWNvcmQ6IEVzb2x2ZUNhdGVnb3J5VHJlZUl0ZW1SZWNvcmQsXG4gICAgKTogRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbSB7XG4gICAgICAgIHJldHVybiBuZXcgRXNvbHZlQ2F0ZWdvcnlUcmVlSXRlbShcbiAgICAgICAgICAgIHJlY29yZC50eXBlLFxuICAgICAgICAgICAgcmVjb3JkLmlkLFxuICAgICAgICAgICAgcmVjb3JkLnBhcmVudF9pZCxcbiAgICAgICAgICAgIHJlY29yZC5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHJlY29yZC5zZWZfZGVzY3JpcHRpb24sXG4gICAgICAgICAgICByZWNvcmQuc2hvcnRfZGVzY3JpcHRpb24sXG4gICAgICAgICAgICByZWNvcmQuc29ydF9wcmlvcml0eSxcbiAgICAgICAgICAgIHJlY29yZC5hY3RpdmUsXG4gICAgICAgICAgICByZWNvcmQuZGlzcGxheV9vbmx5LFxuICAgICAgICAgICAgcmVjb3JkLmltYWdlLFxuICAgICAgICAgICAgcmVjb3JkLnNlb19wYWdlX3RpdGxlLFxuICAgICAgICAgICAgcmVjb3JkLnNlb19rZXl3b3JkcyxcbiAgICAgICAgICAgIHJlY29yZC5zZW9fZGVzY3JpcHRpb24sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzSUQoaWQ6IHN0cmluZyk6IEVzb2x2ZUNhdGVnb3J5SWRlbnRpZmllciB8IG51bGwge1xuICAgICAgICBsZXQgdHlwZTogJ2NhdGVnb3J5JyB8ICdzdWJjYXRlZ29yeSc7XG4gICAgICAgIGxldCBlc29sdmVfaWQ6IG51bWJlciB8IHN0cmluZztcblxuICAgICAgICBjb25zdCB0eXBlX2NvZGVfcmVnZXggPSAvXjw8KENBVHxTVUIpPj4vZztcbiAgICAgICAgY29uc3QgbWF0Y2hfcmVzdWx0cyA9IGlkLm1hdGNoKHR5cGVfY29kZV9yZWdleCk7XG5cbiAgICAgICAgaWYgKG1hdGNoX3Jlc3VsdHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVfY29kZSA9IG1hdGNoX3Jlc3VsdHNbMF07XG5cbiAgICAgICAgICAgIHR5cGUgPSB0eXBlX2NvZGUgPT09ICc8PENBVD4+JyA/ICdjYXRlZ29yeScgOiAnc3ViY2F0ZWdvcnknO1xuICAgICAgICAgICAgZXNvbHZlX2lkID0gaWQucmVwbGFjZSh0eXBlX2NvZGVfcmVnZXgsICcnKTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAgIGVzb2x2ZV9pZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG4iXX0=