aril 1.0.39 → 1.0.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/esm2022/http/src/serviceStateMethods.mjs +6 -2
  2. package/esm2022/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.mjs +211 -0
  3. package/esm2022/theme/layout/app/favorite-pages/favorite-pages.service.mjs +55 -0
  4. package/esm2022/theme/layout/app/favorite-pages/modals/add-edit-favorite-modal/add-edit-favorite-modal.component.mjs +129 -0
  5. package/esm2022/theme/layout/app/history/history-sidebar.component.mjs +128 -0
  6. package/esm2022/theme/layout/app/history/history.service.mjs +146 -0
  7. package/esm2022/theme/layout/app/layout/app.layout.component.mjs +9 -3
  8. package/esm2022/theme/layout/app/profileSidebar/app.profilesidebar.component.mjs +100 -8
  9. package/esm2022/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.mjs +142 -0
  10. package/esm2022/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.mjs +123 -0
  11. package/esm2022/theme/layout/app/profileSidebar/profile.service.mjs +42 -0
  12. package/esm2022/theme/layout/app/site-map/site-map-sidebar.component.mjs +161 -0
  13. package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +23 -5
  14. package/esm2022/theme/layout/service/app.layout.service.mjs +13 -1
  15. package/fesm2022/aril-http.mjs +5 -1
  16. package/fesm2022/aril-http.mjs.map +1 -1
  17. package/fesm2022/aril-theme-layout.mjs +1197 -75
  18. package/fesm2022/aril-theme-layout.mjs.map +1 -1
  19. package/package.json +84 -83
  20. package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.d.ts +42 -0
  21. package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.html +106 -0
  22. package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.scss +181 -0
  23. package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.ts +253 -0
  24. package/theme/layout/app/favorite-pages/favorite-pages.service.d.ts +54 -0
  25. package/theme/layout/app/favorite-pages/favorite-pages.service.ts +87 -0
  26. package/theme/layout/app/favorite-pages/modals/add-edit-favorite-modal/add-edit-favorite-modal.component.d.ts +36 -0
  27. package/theme/layout/app/favorite-pages/modals/add-edit-favorite-modal/add-edit-favorite-modal.component.html +27 -0
  28. package/theme/layout/app/favorite-pages/modals/add-edit-favorite-modal/add-edit-favorite-modal.component.ts +165 -0
  29. package/theme/layout/app/history/history-sidebar.component.d.ts +30 -0
  30. package/theme/layout/app/history/history-sidebar.component.html +88 -0
  31. package/theme/layout/app/history/history-sidebar.component.scss +191 -0
  32. package/theme/layout/app/history/history-sidebar.component.ts +139 -0
  33. package/theme/layout/app/history/history.service.d.ts +36 -0
  34. package/theme/layout/app/history/history.service.ts +182 -0
  35. package/theme/layout/app/layout/app.layout.component.html +3 -0
  36. package/theme/layout/app/layout/app.layout.component.ts +7 -1
  37. package/theme/layout/app/profileSidebar/app.profilesidebar.component.d.ts +17 -2
  38. package/theme/layout/app/profileSidebar/app.profilesidebar.component.html +107 -135
  39. package/theme/layout/app/profileSidebar/app.profilesidebar.component.scss +152 -0
  40. package/theme/layout/app/profileSidebar/app.profilesidebar.component.ts +114 -7
  41. package/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.d.ts +30 -0
  42. package/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.html +46 -0
  43. package/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.scss +28 -0
  44. package/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.ts +178 -0
  45. package/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.d.ts +27 -0
  46. package/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.html +76 -0
  47. package/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.ts +141 -0
  48. package/theme/layout/app/profileSidebar/profile.service.d.ts +67 -0
  49. package/theme/layout/app/profileSidebar/profile.service.ts +89 -0
  50. package/theme/layout/app/site-map/site-map-sidebar.component.d.ts +37 -0
  51. package/theme/layout/app/site-map/site-map-sidebar.component.html +118 -0
  52. package/theme/layout/app/site-map/site-map-sidebar.component.scss +189 -0
  53. package/theme/layout/app/site-map/site-map-sidebar.component.ts +189 -0
  54. package/theme/layout/app/topbar/app.topbar.component.d.ts +7 -1
  55. package/theme/layout/app/topbar/app.topbar.component.html +37 -17
  56. package/theme/layout/app/topbar/app.topbar.component.scss +188 -12
  57. package/theme/layout/app/topbar/app.topbar.component.ts +29 -7
  58. package/theme/layout/service/app.layout.service.d.ts +6 -0
  59. package/theme/layout/service/app.layout.service.ts +19 -1
@@ -87,11 +87,15 @@ export const errorState = async (states, serviceName, error, translocoService, m
87
87
  }
88
88
  if (error.error?.details && Array.isArray(error.error.details) && error.error.details.length > 0) {
89
89
  error.error.details.forEach((detail) => {
90
+ const key = 'fields.' + detail.fieldName;
91
+ const translatedField = translocoService.translate(key);
92
+ const text = translatedField === key ? detail.fieldName : translatedField;
93
+ const detailText = (detail.fieldName ? text + ' - ' : '') + detail.reason;
90
94
  messageService.add({
91
95
  key: 'toast-root',
92
96
  severity: 'error',
93
97
  summary: error?.error?.message,
94
- detail: (detail.fieldName !== null ? detail.fieldName + ' - ' : '') + detail.reason
98
+ detail: detailText
95
99
  });
96
100
  });
97
101
  }
@@ -158,4 +162,4 @@ const getTranslatedMessage = (messageCode, translocoService, response) => {
158
162
  }
159
163
  return translatedMessage;
160
164
  };
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZVN0YXRlTWV0aG9kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvaHR0cC9zcmMvc2VydmljZVN0YXRlTWV0aG9kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFnQyxFQUFFLFdBQWdCLEVBQVEsRUFBRTtJQUNyRixNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUc7UUFDckIsYUFBYSxFQUFFLElBQUk7UUFDbkIsa0JBQWtCLEVBQUUsSUFBSTtRQUN4QixrQkFBa0IsRUFBRSxLQUFLO1FBQ3pCLGlCQUFpQixFQUFFLEtBQUs7S0FDeEIsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUMzQixNQUFnQyxFQUNoQyxXQUFnQixFQUNoQixnQkFBa0MsRUFDbEMsY0FBOEIsRUFDOUIsT0FBOEMsRUFDOUMsUUFBYyxFQUNQLEVBQUU7SUFDVCxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUc7UUFDckIsYUFBYSxFQUFFLElBQUk7UUFDbkIsa0JBQWtCLEVBQUUsS0FBSztRQUN6QixrQkFBa0IsRUFBRSxJQUFJO1FBQ3hCLGlCQUFpQixFQUFFLEtBQUs7S0FDeEIsQ0FBQztJQUVGLElBQUksT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLGNBQWMsQ0FBQyxHQUFHLENBQUM7WUFDbEIsR0FBRyxFQUFFLFlBQVk7WUFDakIsUUFBUSxFQUFFLFNBQVM7WUFDbkIsT0FBTyxFQUFFLG9CQUFvQixDQUFTLE9BQU8sQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDO1NBQ2xGLENBQUMsQ0FBQztJQUNKLENBQUM7QUFDRixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsS0FBSyxFQUM5QixNQUFnQyxFQUNoQyxXQUFnQixFQUNoQixLQUF3QixFQUN4Qixn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RSxJQUFJLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDOUQsSUFBSSxRQUFRLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFFakcsZ0RBQWdEO1lBQ2hELElBQUksWUFBWSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkMsSUFBSSxVQUFVLENBQUM7WUFFZixLQUFLLElBQUksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUM5QixVQUFVLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzRCxDQUFDO1lBRUQsSUFBSSxjQUFjLEdBQUcsR0FBRyxnQkFBZ0IsR0FBRyxRQUFRLEdBQUcsY0FBYyxFQUFFLENBQUM7WUFDdkUsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMzRSxDQUFDLFFBQVEsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7SUFDeEQsQ0FBQztJQUVELE9BQU8saUJBQWlCLENBQUM7QUFDMUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuaW1wb3J0IHsgS2V5Y2xvYWtTZXJ2aWNlIH0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XHJcblxyXG5pbXBvcnQgeyBFcnJvckRldGFpbCwgU2VydmljZUNhbGxTdGF0ZU1hcCB9IGZyb20gJy4uL2xpYi9pbnRlcmZhY2VzJztcclxuXHJcbmV4cG9ydCBjb25zdCBjYWxsU3RhdGUgPSAoc3RhdGVzOiBTZXJ2aWNlQ2FsbFN0YXRlTWFwPGFueT4sIHNlcnZpY2VOYW1lOiBhbnkpOiB2b2lkID0+IHtcclxuXHRzdGF0ZXNbc2VydmljZU5hbWVdID0ge1xyXG5cdFx0c2VydmljZUNhbGxlZDogdHJ1ZSxcclxuXHRcdHdhaXRpbmdGb3JSZXNwb25zZTogdHJ1ZSxcclxuXHRcdHJlc3BvbnNlSXNSZWNpZXZlZDogZmFsc2UsXHJcblx0XHRzZXJ2aWNlQ2FsbEZhaWxlZDogZmFsc2VcclxuXHR9O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHN1Y2Nlc3NTdGF0ZSA9IChcclxuXHRzdGF0ZXM6IFNlcnZpY2VDYWxsU3RhdGVNYXA8YW55PixcclxuXHRzZXJ2aWNlTmFtZTogYW55LFxyXG5cdHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2UsXHJcblx0bWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG5cdG1lc3NhZ2U/OiB7IHN1Y2Nlc3M/OiBzdHJpbmc7IGVycm9yPzogc3RyaW5nIH0sXHJcblx0cmVzcG9uc2U/OiBhbnlcclxuKTogdm9pZCA9PiB7XHJcblx0c3RhdGVzW3NlcnZpY2VOYW1lXSA9IHtcclxuXHRcdHNlcnZpY2VDYWxsZWQ6IHRydWUsXHJcblx0XHR3YWl0aW5nRm9yUmVzcG9uc2U6IGZhbHNlLFxyXG5cdFx0cmVzcG9uc2VJc1JlY2lldmVkOiB0cnVlLFxyXG5cdFx0c2VydmljZUNhbGxGYWlsZWQ6IGZhbHNlXHJcblx0fTtcclxuXHJcblx0aWYgKG1lc3NhZ2U/LnN1Y2Nlc3MpIHtcclxuXHRcdG1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdGtleTogJ3RvYXN0LXJvb3QnLFxyXG5cdFx0XHRzZXZlcml0eTogJ3N1Y2Nlc3MnLFxyXG5cdFx0XHRzdW1tYXJ5OiBnZXRUcmFuc2xhdGVkTWVzc2FnZSg8c3RyaW5nPm1lc3NhZ2Uuc3VjY2VzcywgdHJhbnNsb2NvU2VydmljZSwgcmVzcG9uc2UpXHJcblx0XHR9KTtcclxuXHR9XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZXJyb3JTdGF0ZSA9IGFzeW5jIChcclxuXHRzdGF0ZXM6IFNlcnZpY2VDYWxsU3RhdGVNYXA8YW55PixcclxuXHRzZXJ2aWNlTmFtZTogYW55LFxyXG5cdGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSxcclxuXHR0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLFxyXG5cdG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuXHRrZXljbG9ha1NlcnZpY2U6IEtleWNsb2FrU2VydmljZSxcclxuXHRtZXNzYWdlPzogeyBzdWNjZXNzPzogc3RyaW5nOyBlcnJvcj86IHN0cmluZzsgZGlzcGxheT86IHN0cmluZyB9XHJcbik6IFByb21pc2U8dm9pZD4gPT4ge1xyXG5cdHN0YXRlc1tzZXJ2aWNlTmFtZV0gPSB7XHJcblx0XHRzZXJ2aWNlQ2FsbGVkOiB0cnVlLFxyXG5cdFx0d2FpdGluZ0ZvclJlc3BvbnNlOiBmYWxzZSxcclxuXHRcdHJlc3BvbnNlSXNSZWNpZXZlZDogdHJ1ZSxcclxuXHRcdHNlcnZpY2VDYWxsRmFpbGVkOiB0cnVlXHJcblx0fTtcclxuXHJcblx0bGV0IGh0dHBFcnJvcjogc3RyaW5nO1xyXG5cclxuXHRzd2l0Y2ggKGVycm9yLnN0YXR1cykge1xyXG5cdFx0Y2FzZSA0MDA6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdIYXRhbMSxIMSwc3Rlayc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDE6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdZZXRraXNpeiBFcmnFn2ltJztcclxuXHRcdFx0YXdhaXQga2V5Y2xvYWtTZXJ2aWNlLmxvZ2luKHsgcmVkaXJlY3RVcmk6IHdpbmRvdy5sb2NhdGlvbi5ocmVmIH0pO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNDAzOlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnRXJpxZ9pbSBFbmdlbGxlbmRpJztcclxuXHRcdFx0aWYgKGtleWNsb2FrU2VydmljZS5pc1Rva2VuRXhwaXJlZCgpKSBhd2FpdCBrZXljbG9ha1NlcnZpY2UubG9naW4oeyByZWRpcmVjdFVyaTogd2luZG93LmxvY2F0aW9uLmhyZWYgfSk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDQ6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdLYXluYWsgQnVsdW5hbWFkxLEnO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNDA1OlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnxLB6aW4gVmVyaWxtZXllbiBNZXRvZCc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDY6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdLYWJ1bCBFZGlsZW1leiBCYcWfbMSxayc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDg6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdaYW1hbiBBxZ/EsW3EsSc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDk6XHJcblx0XHRcdGh0dHBFcnJvciA9ICfDh2FrxLHFn21hJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwMDpcclxuXHRcdFx0aHR0cEVycm9yID0gJ1N1bnVjdSBIYXRhc8SxJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwMTpcclxuXHRcdFx0aHR0cEVycm9yID0gJ1N1bnVjdSBZYXDEsWxhbmTEsXJtYSBIYXRhc8SxJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwMjpcclxuXHRcdFx0aHR0cEVycm9yID0gJ0dlw6dlcnNpeiBBxJ8gR2XDp2lkaSc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA1MDM6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdTdW51Y3UgSGl6bWV0IFZlcm1peW9yJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwNDpcclxuXHRcdFx0aHR0cEVycm9yID0gJ0HEnyBHZcOnaWRpIFphbWFuIEHFn8SxbcSxJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwNTpcclxuXHRcdFx0aHR0cEVycm9yID0gJ0hUVFAgUHJvdG9rb2wgRGVzdGVrbGVubWl5b3InO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNTExOlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnQcSfIEtpbWxpayBEb8SfcnVsYW1hc8SxIEdlcmVrbGknO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNTk5OlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnQcSfIEJhxJ9sYW50xLFzxLEgWmFtYW4gQcWfxLFtxLEnO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGRlZmF1bHQ6XHJcblx0XHRcdGh0dHBFcnJvciA9IGVycm9yPy5lcnJvcj8ubWVzc2FnZTtcclxuXHRcdFx0YnJlYWs7XHJcblx0fVxyXG5cclxuXHRpZiAoZXJyb3IuZXJyb3I/LmRldGFpbHMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5lcnJvci5kZXRhaWxzKSAmJiBlcnJvci5lcnJvci5kZXRhaWxzLmxlbmd0aCA+IDApIHtcclxuXHRcdGVycm9yLmVycm9yLmRldGFpbHMuZm9yRWFjaCgoZGV0YWlsOiBFcnJvckRldGFpbCkgPT4ge1xyXG5cdFx0XHRtZXNzYWdlU2VydmljZS5hZGQoe1xyXG5cdFx0XHRcdGtleTogJ3RvYXN0LXJvb3QnLFxyXG5cdFx0XHRcdHNldmVyaXR5OiAnZXJyb3InLFxyXG5cdFx0XHRcdHN1bW1hcnk6IGVycm9yPy5lcnJvcj8ubWVzc2FnZSxcclxuXHRcdFx0XHRkZXRhaWw6IChkZXRhaWwuZmllbGROYW1lICE9PSBudWxsID8gZGV0YWlsLmZpZWxkTmFtZSArICcgLSAnIDogJycpICsgZGV0YWlsLnJlYXNvblxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH0gZWxzZSB7XHJcblx0XHRtZXNzYWdlU2VydmljZS5hZGQoe1xyXG5cdFx0XHRrZXk6ICd0b2FzdC1yb290JyxcclxuXHRcdFx0c2V2ZXJpdHk6ICdlcnJvcicsXHJcblx0XHRcdHN1bW1hcnk6IGh0dHBFcnJvcixcclxuXHRcdFx0ZGV0YWlsOiBlcnJvcj8uZXJyb3I/Lm1lc3NhZ2VcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0aWYgKG1lc3NhZ2U/LmVycm9yKSB7XHJcblx0XHRtZXNzYWdlU2VydmljZS5hZGQoe1xyXG5cdFx0XHRrZXk6ICd0b2FzdC1yb290JyxcclxuXHRcdFx0c2V2ZXJpdHk6ICdlcnJvcicsXHJcblx0XHRcdHN1bW1hcnk6XHJcblx0XHRcdFx0ZXJyb3I/LmVycm9yPy5tZXNzYWdlID8gZXJyb3I/LmVycm9yPy5tZXNzYWdlIDogZ2V0VHJhbnNsYXRlZE1lc3NhZ2UoPHN0cmluZz5tZXNzYWdlLmVycm9yLCB0cmFuc2xvY29TZXJ2aWNlKVxyXG5cdFx0fSk7XHJcblx0fVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHdhcm5pbmdTdGF0ZSA9IChcclxuXHRzdGF0ZXM6IFNlcnZpY2VDYWxsU3RhdGVNYXA8YW55PixcclxuXHRzZXJ2aWNlTmFtZTogYW55LFxyXG5cdHJlc3BvbnNlOiBhbnksXHJcblx0bWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXHJcbik6IHZvaWQgPT4ge1xyXG5cdHN0YXRlc1tzZXJ2aWNlTmFtZV0gPSB7XHJcblx0XHRzZXJ2aWNlQ2FsbGVkOiB0cnVlLFxyXG5cdFx0d2FpdGluZ0ZvclJlc3BvbnNlOiBmYWxzZSxcclxuXHRcdHJlc3BvbnNlSXNSZWNpZXZlZDogdHJ1ZSxcclxuXHRcdHNlcnZpY2VDYWxsRmFpbGVkOiB0cnVlXHJcblx0fTtcclxuXHJcblx0aWYgKHJlc3BvbnNlPy5kZXRhaWxzICYmIEFycmF5LmlzQXJyYXkocmVzcG9uc2UuZGV0YWlscykgJiYgcmVzcG9uc2UuZGV0YWlscy5sZW5ndGggPiAwKSB7XHJcblx0XHRyZXNwb25zZS5kZXRhaWxzLmZvckVhY2goKGRldGFpbDogRXJyb3JEZXRhaWwpID0+IHtcclxuXHRcdFx0bWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuXHRcdFx0XHRrZXk6ICd0b2FzdC1yb290JyxcclxuXHRcdFx0XHRzZXZlcml0eTogJ3dhcm4nLFxyXG5cdFx0XHRcdHN1bW1hcnk6IHJlc3BvbnNlPy5tZXNzYWdlLFxyXG5cdFx0XHRcdGRldGFpbDogKGRldGFpbC5maWVsZE5hbWUgIT09IG51bGwgPyBkZXRhaWwuZmllbGROYW1lICsgJyAtICcgOiAnJykgKyBkZXRhaWwucmVhc29uXHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fSBlbHNlIHtcclxuXHRcdG1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdGtleTogJ3RvYXN0LXJvb3QnLFxyXG5cdFx0XHRzZXZlcml0eTogJ3dhcm4nLFxyXG5cdFx0XHRkZXRhaWw6IHJlc3BvbnNlPy5tZXNzYWdlXHJcblx0XHR9KTtcclxuXHR9XHJcbn07XHJcblxyXG5jb25zdCBnZXRUcmFuc2xhdGVkTWVzc2FnZSA9IChtZXNzYWdlQ29kZTogc3RyaW5nLCB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLCByZXNwb25zZT86IGFueSk6IHN0cmluZyA9PiB7XHJcblx0Y29uc3QgdHJhbnNsYXRlT2JqZWN0ID0gdHJhbnNsb2NvU2VydmljZS5nZXRUcmFuc2xhdGlvbigpLmdldCh0cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKSk7XHJcblx0bGV0IHRyYW5zbGF0ZWRNZXNzYWdlID0gdHJhbnNsYXRlT2JqZWN0Py5bbWVzc2FnZUNvZGVdID8/IG1lc3NhZ2VDb2RlO1xyXG5cclxuXHRjb25zdCBwYXJhbVN0YXJ0U3ltYm9sID0gJ3t7JztcclxuXHRjb25zdCBwYXJhbUVuZFN5bWJvbCA9ICd9fSc7XHJcblxyXG5cdGlmIChyZXNwb25zZSAmJiB0cmFuc2xhdGVkTWVzc2FnZS5pbmNsdWRlcyhwYXJhbVN0YXJ0U3ltYm9sKSAmJiB0cmFuc2xhdGVkTWVzc2FnZS5pbmNsdWRlcyhwYXJhbUVuZFN5bWJvbCkpIHtcclxuXHRcdGRvIHtcclxuXHRcdFx0bGV0IHBhcmFtU3RhcnRJbmRleCA9IHRyYW5zbGF0ZWRNZXNzYWdlLmluZGV4T2YocGFyYW1TdGFydFN5bWJvbCk7XHJcblx0XHRcdGxldCBwYXJhbUVuZEluZGV4ID0gdHJhbnNsYXRlZE1lc3NhZ2UuaW5kZXhPZihwYXJhbUVuZFN5bWJvbCk7XHJcblx0XHRcdGxldCBwYXJhbUtleSA9IHRyYW5zbGF0ZWRNZXNzYWdlLnNsaWNlKHBhcmFtU3RhcnRJbmRleCArIHBhcmFtU3RhcnRTeW1ib2wubGVuZ3RoLCBwYXJhbUVuZEluZGV4KTtcclxuXHJcblx0XHRcdC8vIFNwbGl0dGluZyB0aGUga2V5IHRvIGdldCBuZXN0ZWQgb2JqZWN0IHZhbHVlc1xyXG5cdFx0XHRsZXQgcGFyYW1LZXlMaXN0ID0gcGFyYW1LZXkuc3BsaXQoJy4nKTtcclxuXHRcdFx0bGV0IHBhcmFtVmFsdWU7XHJcblxyXG5cdFx0XHRmb3IgKGxldCBrZXkgb2YgcGFyYW1LZXlMaXN0KSB7XHJcblx0XHRcdFx0cGFyYW1WYWx1ZSA9IHBhcmFtVmFsdWUgPyBwYXJhbVZhbHVlW2tleV0gOiByZXNwb25zZVtrZXldO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRsZXQgcmVwbGFjZVBhdHRlcm4gPSBgJHtwYXJhbVN0YXJ0U3ltYm9sfSR7cGFyYW1LZXl9JHtwYXJhbUVuZFN5bWJvbH1gO1xyXG5cdFx0XHR0cmFuc2xhdGVkTWVzc2FnZSA9IHRyYW5zbGF0ZWRNZXNzYWdlLnJlcGxhY2UocmVwbGFjZVBhdHRlcm4sIHBhcmFtVmFsdWUpO1xyXG5cdFx0fSB3aGlsZSAodHJhbnNsYXRlZE1lc3NhZ2UuaW5jbHVkZXMocGFyYW1TdGFydFN5bWJvbCkpO1xyXG5cdH1cclxuXHJcblx0cmV0dXJuIHRyYW5zbGF0ZWRNZXNzYWdlO1xyXG59O1xyXG4iXX0=
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZVN0YXRlTWV0aG9kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvaHR0cC9zcmMvc2VydmljZVN0YXRlTWV0aG9kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFnQyxFQUFFLFdBQWdCLEVBQVEsRUFBRTtJQUNyRixNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUc7UUFDckIsYUFBYSxFQUFFLElBQUk7UUFDbkIsa0JBQWtCLEVBQUUsSUFBSTtRQUN4QixrQkFBa0IsRUFBRSxLQUFLO1FBQ3pCLGlCQUFpQixFQUFFLEtBQUs7S0FDeEIsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUMzQixNQUFnQyxFQUNoQyxXQUFnQixFQUNoQixnQkFBa0MsRUFDbEMsY0FBOEIsRUFDOUIsT0FBOEMsRUFDOUMsUUFBYyxFQUNQLEVBQUU7SUFDVCxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUc7UUFDckIsYUFBYSxFQUFFLElBQUk7UUFDbkIsa0JBQWtCLEVBQUUsS0FBSztRQUN6QixrQkFBa0IsRUFBRSxJQUFJO1FBQ3hCLGlCQUFpQixFQUFFLEtBQUs7S0FDeEIsQ0FBQztJQUVGLElBQUksT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLGNBQWMsQ0FBQyxHQUFHLENBQUM7WUFDbEIsR0FBRyxFQUFFLFlBQVk7WUFDakIsUUFBUSxFQUFFLFNBQVM7WUFDbkIsT0FBTyxFQUFFLG9CQUFvQixDQUFTLE9BQU8sQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDO1NBQ2xGLENBQUMsQ0FBQztJQUNKLENBQUM7QUFDRixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsS0FBSyxFQUM5QixNQUFnQyxFQUNoQyxXQUFnQixFQUNoQixLQUF3QixFQUN4Qixn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QUM5QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFFNUIsSUFBSSxRQUFRLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDNUcsR0FBRyxDQUFDO1lBQ0gsSUFBSSxlQUFlLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDbEUsSUFBSSxhQUFhLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzlELElBQUksUUFBUSxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBRWpHLGdEQUFnRDtZQUNoRCxJQUFJLFlBQVksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksVUFBVSxDQUFDO1lBRWYsS0FBSyxJQUFJLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDOUIsVUFBVSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0QsQ0FBQztZQUVELElBQUksY0FBYyxHQUFHLEdBQUcsZ0JBQWdCLEdBQUcsUUFBUSxHQUFHLGNBQWMsRUFBRSxDQUFDO1lBQ3ZFLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDM0UsQ0FBQyxRQUFRLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO0lBQ3hELENBQUM7SUFFRCxPQUFPLGlCQUFpQixDQUFDO0FBQzFCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcbmltcG9ydCB7IEtleWNsb2FrU2VydmljZSB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5cclxuaW1wb3J0IHsgRXJyb3JEZXRhaWwsIFNlcnZpY2VDYWxsU3RhdGVNYXAgfSBmcm9tICcuLi9saWIvaW50ZXJmYWNlcyc7XHJcblxyXG5leHBvcnQgY29uc3QgY2FsbFN0YXRlID0gKHN0YXRlczogU2VydmljZUNhbGxTdGF0ZU1hcDxhbnk+LCBzZXJ2aWNlTmFtZTogYW55KTogdm9pZCA9PiB7XHJcblx0c3RhdGVzW3NlcnZpY2VOYW1lXSA9IHtcclxuXHRcdHNlcnZpY2VDYWxsZWQ6IHRydWUsXHJcblx0XHR3YWl0aW5nRm9yUmVzcG9uc2U6IHRydWUsXHJcblx0XHRyZXNwb25zZUlzUmVjaWV2ZWQ6IGZhbHNlLFxyXG5cdFx0c2VydmljZUNhbGxGYWlsZWQ6IGZhbHNlXHJcblx0fTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBzdWNjZXNzU3RhdGUgPSAoXHJcblx0c3RhdGVzOiBTZXJ2aWNlQ2FsbFN0YXRlTWFwPGFueT4sXHJcblx0c2VydmljZU5hbWU6IGFueSxcclxuXHR0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLFxyXG5cdG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuXHRtZXNzYWdlPzogeyBzdWNjZXNzPzogc3RyaW5nOyBlcnJvcj86IHN0cmluZyB9LFxyXG5cdHJlc3BvbnNlPzogYW55XHJcbik6IHZvaWQgPT4ge1xyXG5cdHN0YXRlc1tzZXJ2aWNlTmFtZV0gPSB7XHJcblx0XHRzZXJ2aWNlQ2FsbGVkOiB0cnVlLFxyXG5cdFx0d2FpdGluZ0ZvclJlc3BvbnNlOiBmYWxzZSxcclxuXHRcdHJlc3BvbnNlSXNSZWNpZXZlZDogdHJ1ZSxcclxuXHRcdHNlcnZpY2VDYWxsRmFpbGVkOiBmYWxzZVxyXG5cdH07XHJcblxyXG5cdGlmIChtZXNzYWdlPy5zdWNjZXNzKSB7XHJcblx0XHRtZXNzYWdlU2VydmljZS5hZGQoe1xyXG5cdFx0XHRrZXk6ICd0b2FzdC1yb290JyxcclxuXHRcdFx0c2V2ZXJpdHk6ICdzdWNjZXNzJyxcclxuXHRcdFx0c3VtbWFyeTogZ2V0VHJhbnNsYXRlZE1lc3NhZ2UoPHN0cmluZz5tZXNzYWdlLnN1Y2Nlc3MsIHRyYW5zbG9jb1NlcnZpY2UsIHJlc3BvbnNlKVxyXG5cdFx0fSk7XHJcblx0fVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGVycm9yU3RhdGUgPSBhc3luYyAoXHJcblx0c3RhdGVzOiBTZXJ2aWNlQ2FsbFN0YXRlTWFwPGFueT4sXHJcblx0c2VydmljZU5hbWU6IGFueSxcclxuXHRlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UsXHJcblx0dHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZSxcclxuXHRtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcblx0a2V5Y2xvYWtTZXJ2aWNlOiBLZXljbG9ha1NlcnZpY2UsXHJcblx0bWVzc2FnZT86IHsgc3VjY2Vzcz86IHN0cmluZzsgZXJyb3I/OiBzdHJpbmc7IGRpc3BsYXk/OiBzdHJpbmcgfVxyXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcclxuXHRzdGF0ZXNbc2VydmljZU5hbWVdID0ge1xyXG5cdFx0c2VydmljZUNhbGxlZDogdHJ1ZSxcclxuXHRcdHdhaXRpbmdGb3JSZXNwb25zZTogZmFsc2UsXHJcblx0XHRyZXNwb25zZUlzUmVjaWV2ZWQ6IHRydWUsXHJcblx0XHRzZXJ2aWNlQ2FsbEZhaWxlZDogdHJ1ZVxyXG5cdH07XHJcblxyXG5cdGxldCBodHRwRXJyb3I6IHN0cmluZztcclxuXHJcblx0c3dpdGNoIChlcnJvci5zdGF0dXMpIHtcclxuXHRcdGNhc2UgNDAwOlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnSGF0YWzEsSDEsHN0ZWsnO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNDAxOlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnWWV0a2lzaXogRXJpxZ9pbSc7XHJcblx0XHRcdGF3YWl0IGtleWNsb2FrU2VydmljZS5sb2dpbih7IHJlZGlyZWN0VXJpOiB3aW5kb3cubG9jYXRpb24uaHJlZiB9KTtcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDQwMzpcclxuXHRcdFx0aHR0cEVycm9yID0gJ0VyacWfaW0gRW5nZWxsZW5kaSc7XHJcblx0XHRcdGlmIChrZXljbG9ha1NlcnZpY2UuaXNUb2tlbkV4cGlyZWQoKSkgYXdhaXQga2V5Y2xvYWtTZXJ2aWNlLmxvZ2luKHsgcmVkaXJlY3RVcmk6IHdpbmRvdy5sb2NhdGlvbi5ocmVmIH0pO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNDA0OlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnS2F5bmFrIEJ1bHVuYW1hZMSxJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDQwNTpcclxuXHRcdFx0aHR0cEVycm9yID0gJ8SwemluIFZlcmlsbWV5ZW4gTWV0b2QnO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNDA2OlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnS2FidWwgRWRpbGVtZXogQmHFn2zEsWsnO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNDA4OlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnWmFtYW4gQcWfxLFtxLEnO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNDA5OlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnw4dha8SxxZ9tYSc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA1MDA6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdTdW51Y3UgSGF0YXPEsSc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA1MDE6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdTdW51Y3UgWWFwxLFsYW5kxLFybWEgSGF0YXPEsSc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA1MDI6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdHZcOnZXJzaXogQcSfIEdlw6dpZGknO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNTAzOlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnU3VudWN1IEhpem1ldCBWZXJtaXlvcic7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA1MDQ6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdBxJ8gR2XDp2lkaSBaYW1hbiBBxZ/EsW3EsSc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA1MDU6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdIVFRQIFByb3Rva29sIERlc3Rla2xlbm1peW9yJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUxMTpcclxuXHRcdFx0aHR0cEVycm9yID0gJ0HEnyBLaW1saWsgRG/En3J1bGFtYXPEsSBHZXJla2xpJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDU5OTpcclxuXHRcdFx0aHR0cEVycm9yID0gJ0HEnyBCYcSfbGFudMSxc8SxIFphbWFuIEHFn8SxbcSxJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRkZWZhdWx0OlxyXG5cdFx0XHRodHRwRXJyb3IgPSBlcnJvcj8uZXJyb3I/Lm1lc3NhZ2U7XHJcblx0XHRcdGJyZWFrO1xyXG5cdH1cclxuXHJcblx0aWYgKGVycm9yLmVycm9yPy5kZXRhaWxzICYmIEFycmF5LmlzQXJyYXkoZXJyb3IuZXJyb3IuZGV0YWlscykgJiYgZXJyb3IuZXJyb3IuZGV0YWlscy5sZW5ndGggPiAwKSB7XHJcblx0XHRlcnJvci5lcnJvci5kZXRhaWxzLmZvckVhY2goKGRldGFpbDogRXJyb3JEZXRhaWwpID0+IHtcclxuXHRcdFx0Y29uc3Qga2V5ID0gJ2ZpZWxkcy4nICsgZGV0YWlsLmZpZWxkTmFtZTtcclxuXHRcdFx0Y29uc3QgdHJhbnNsYXRlZEZpZWxkID0gdHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoa2V5KTtcclxuXHRcdFx0Y29uc3QgdGV4dCA9IHRyYW5zbGF0ZWRGaWVsZCA9PT0ga2V5ID8gZGV0YWlsLmZpZWxkTmFtZSA6IHRyYW5zbGF0ZWRGaWVsZDtcclxuXHJcblx0XHRcdGNvbnN0IGRldGFpbFRleHQgPSAoZGV0YWlsLmZpZWxkTmFtZSA/IHRleHQgKyAnIC0gJyA6ICcnKSArIGRldGFpbC5yZWFzb247XHJcblxyXG5cdFx0XHRtZXNzYWdlU2VydmljZS5hZGQoe1xyXG5cdFx0XHRcdGtleTogJ3RvYXN0LXJvb3QnLFxyXG5cdFx0XHRcdHNldmVyaXR5OiAnZXJyb3InLFxyXG5cdFx0XHRcdHN1bW1hcnk6IGVycm9yPy5lcnJvcj8ubWVzc2FnZSxcclxuXHRcdFx0XHRkZXRhaWw6IGRldGFpbFRleHRcclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHR9IGVsc2Uge1xyXG5cdFx0bWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuXHRcdFx0a2V5OiAndG9hc3Qtcm9vdCcsXHJcblx0XHRcdHNldmVyaXR5OiAnZXJyb3InLFxyXG5cdFx0XHRzdW1tYXJ5OiBodHRwRXJyb3IsXHJcblx0XHRcdGRldGFpbDogZXJyb3I/LmVycm9yPy5tZXNzYWdlXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGlmIChtZXNzYWdlPy5lcnJvcikge1xyXG5cdFx0bWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuXHRcdFx0a2V5OiAndG9hc3Qtcm9vdCcsXHJcblx0XHRcdHNldmVyaXR5OiAnZXJyb3InLFxyXG5cdFx0XHRzdW1tYXJ5OlxyXG5cdFx0XHRcdGVycm9yPy5lcnJvcj8ubWVzc2FnZSA/IGVycm9yPy5lcnJvcj8ubWVzc2FnZSA6IGdldFRyYW5zbGF0ZWRNZXNzYWdlKDxzdHJpbmc+bWVzc2FnZS5lcnJvciwgdHJhbnNsb2NvU2VydmljZSlcclxuXHRcdH0pO1xyXG5cdH1cclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCB3YXJuaW5nU3RhdGUgPSAoXHJcblx0c3RhdGVzOiBTZXJ2aWNlQ2FsbFN0YXRlTWFwPGFueT4sXHJcblx0c2VydmljZU5hbWU6IGFueSxcclxuXHRyZXNwb25zZTogYW55LFxyXG5cdG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZVxyXG4pOiB2b2lkID0+IHtcclxuXHRzdGF0ZXNbc2VydmljZU5hbWVdID0ge1xyXG5cdFx0c2VydmljZUNhbGxlZDogdHJ1ZSxcclxuXHRcdHdhaXRpbmdGb3JSZXNwb25zZTogZmFsc2UsXHJcblx0XHRyZXNwb25zZUlzUmVjaWV2ZWQ6IHRydWUsXHJcblx0XHRzZXJ2aWNlQ2FsbEZhaWxlZDogdHJ1ZVxyXG5cdH07XHJcblxyXG5cdGlmIChyZXNwb25zZT8uZGV0YWlscyAmJiBBcnJheS5pc0FycmF5KHJlc3BvbnNlLmRldGFpbHMpICYmIHJlc3BvbnNlLmRldGFpbHMubGVuZ3RoID4gMCkge1xyXG5cdFx0cmVzcG9uc2UuZGV0YWlscy5mb3JFYWNoKChkZXRhaWw6IEVycm9yRGV0YWlsKSA9PiB7XHJcblx0XHRcdG1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdFx0a2V5OiAndG9hc3Qtcm9vdCcsXHJcblx0XHRcdFx0c2V2ZXJpdHk6ICd3YXJuJyxcclxuXHRcdFx0XHRzdW1tYXJ5OiByZXNwb25zZT8ubWVzc2FnZSxcclxuXHRcdFx0XHRkZXRhaWw6IChkZXRhaWwuZmllbGROYW1lICE9PSBudWxsID8gZGV0YWlsLmZpZWxkTmFtZSArICcgLSAnIDogJycpICsgZGV0YWlsLnJlYXNvblxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH0gZWxzZSB7XHJcblx0XHRtZXNzYWdlU2VydmljZS5hZGQoe1xyXG5cdFx0XHRrZXk6ICd0b2FzdC1yb290JyxcclxuXHRcdFx0c2V2ZXJpdHk6ICd3YXJuJyxcclxuXHRcdFx0ZGV0YWlsOiByZXNwb25zZT8ubWVzc2FnZVxyXG5cdFx0fSk7XHJcblx0fVxyXG59O1xyXG5cclxuY29uc3QgZ2V0VHJhbnNsYXRlZE1lc3NhZ2UgPSAobWVzc2FnZUNvZGU6IHN0cmluZywgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZSwgcmVzcG9uc2U/OiBhbnkpOiBzdHJpbmcgPT4ge1xyXG5cdGNvbnN0IHRyYW5zbGF0ZU9iamVjdCA9IHRyYW5zbG9jb1NlcnZpY2UuZ2V0VHJhbnNsYXRpb24oKS5nZXQodHJhbnNsb2NvU2VydmljZS5nZXRBY3RpdmVMYW5nKCkpO1xyXG5cdGxldCB0cmFuc2xhdGVkTWVzc2FnZSA9IHRyYW5zbGF0ZU9iamVjdD8uW21lc3NhZ2VDb2RlXSA/PyBtZXNzYWdlQ29kZTtcclxuXHJcblx0Y29uc3QgcGFyYW1TdGFydFN5bWJvbCA9ICd7eyc7XHJcblx0Y29uc3QgcGFyYW1FbmRTeW1ib2wgPSAnfX0nO1xyXG5cclxuXHRpZiAocmVzcG9uc2UgJiYgdHJhbnNsYXRlZE1lc3NhZ2UuaW5jbHVkZXMocGFyYW1TdGFydFN5bWJvbCkgJiYgdHJhbnNsYXRlZE1lc3NhZ2UuaW5jbHVkZXMocGFyYW1FbmRTeW1ib2wpKSB7XHJcblx0XHRkbyB7XHJcblx0XHRcdGxldCBwYXJhbVN0YXJ0SW5kZXggPSB0cmFuc2xhdGVkTWVzc2FnZS5pbmRleE9mKHBhcmFtU3RhcnRTeW1ib2wpO1xyXG5cdFx0XHRsZXQgcGFyYW1FbmRJbmRleCA9IHRyYW5zbGF0ZWRNZXNzYWdlLmluZGV4T2YocGFyYW1FbmRTeW1ib2wpO1xyXG5cdFx0XHRsZXQgcGFyYW1LZXkgPSB0cmFuc2xhdGVkTWVzc2FnZS5zbGljZShwYXJhbVN0YXJ0SW5kZXggKyBwYXJhbVN0YXJ0U3ltYm9sLmxlbmd0aCwgcGFyYW1FbmRJbmRleCk7XHJcblxyXG5cdFx0XHQvLyBTcGxpdHRpbmcgdGhlIGtleSB0byBnZXQgbmVzdGVkIG9iamVjdCB2YWx1ZXNcclxuXHRcdFx0bGV0IHBhcmFtS2V5TGlzdCA9IHBhcmFtS2V5LnNwbGl0KCcuJyk7XHJcblx0XHRcdGxldCBwYXJhbVZhbHVlO1xyXG5cclxuXHRcdFx0Zm9yIChsZXQga2V5IG9mIHBhcmFtS2V5TGlzdCkge1xyXG5cdFx0XHRcdHBhcmFtVmFsdWUgPSBwYXJhbVZhbHVlID8gcGFyYW1WYWx1ZVtrZXldIDogcmVzcG9uc2Vba2V5XTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0bGV0IHJlcGxhY2VQYXR0ZXJuID0gYCR7cGFyYW1TdGFydFN5bWJvbH0ke3BhcmFtS2V5fSR7cGFyYW1FbmRTeW1ib2x9YDtcclxuXHRcdFx0dHJhbnNsYXRlZE1lc3NhZ2UgPSB0cmFuc2xhdGVkTWVzc2FnZS5yZXBsYWNlKHJlcGxhY2VQYXR0ZXJuLCBwYXJhbVZhbHVlKTtcclxuXHRcdH0gd2hpbGUgKHRyYW5zbGF0ZWRNZXNzYWdlLmluY2x1ZGVzKHBhcmFtU3RhcnRTeW1ib2wpKTtcclxuXHR9XHJcblxyXG5cdHJldHVybiB0cmFuc2xhdGVkTWVzc2FnZTtcclxufTtcclxuIl19
@@ -0,0 +1,211 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, effect, signal } from '@angular/core';
3
+ import { toSignal } from '@angular/core/rxjs-interop';
4
+ import { ConfirmationService } from 'primeng/api';
5
+ import { ConfirmDialogModule } from 'primeng/confirmdialog';
6
+ import { DialogService, DynamicDialogModule } from 'primeng/dynamicdialog';
7
+ import { PaginatorModule } from 'primeng/paginator';
8
+ import { ScrollPanelModule } from 'primeng/scrollpanel';
9
+ import { SidebarModule } from 'primeng/sidebar';
10
+ import { TooltipModule } from 'primeng/tooltip';
11
+ import { TranslocoModule } from '@ngneat/transloco';
12
+ import { Subject, switchMap } from 'rxjs';
13
+ import { ButtonComponent } from 'aril/ui/button';
14
+ import { AddEditFavoriteModalComponent } from './modals/add-edit-favorite-modal/add-edit-favorite-modal.component';
15
+ import * as i0 from "@angular/core";
16
+ import * as i1 from "../../service/app.layout.service";
17
+ import * as i2 from "./favorite-pages.service";
18
+ import * as i3 from "primeng/api";
19
+ import * as i4 from "primeng/dynamicdialog";
20
+ import * as i5 from "@ngneat/transloco";
21
+ import * as i6 from "primeng/sidebar";
22
+ import * as i7 from "primeng/scrollpanel";
23
+ import * as i8 from "primeng/confirmdialog";
24
+ import * as i9 from "primeng/paginator";
25
+ import * as i10 from "primeng/tooltip";
26
+ export class FavoritePagesSidebarComponent {
27
+ constructor(layoutService, favoritePagesService, confirmationService, messageService, dialogService, translocoService) {
28
+ this.layoutService = layoutService;
29
+ this.favoritePagesService = favoritePagesService;
30
+ this.confirmationService = confirmationService;
31
+ this.messageService = messageService;
32
+ this.dialogService = dialogService;
33
+ this.translocoService = translocoService;
34
+ this.favoritePages = signal([]);
35
+ this.allFavoritePages = signal([]);
36
+ this.isCurrentPageFavorited = signal(false);
37
+ this.currentPage = signal(1);
38
+ this.pageSize = signal(10);
39
+ this.totalItems = signal(0);
40
+ this.totalPages = signal(0);
41
+ this.subjects = {
42
+ loadAllFavorites: new Subject(),
43
+ deleteFavorite: new Subject()
44
+ };
45
+ this.loadAllFavoritesService = toSignal(this.subjects.loadAllFavorites.pipe(switchMap(() => this.favoritePagesService.filterFavoritePages({
46
+ pageSize: 1000,
47
+ pageNumber: 1,
48
+ sortFieldName: 'label',
49
+ sortDirection: 1
50
+ }))));
51
+ this.deleteFavoriteService = toSignal(this.subjects.deleteFavorite.pipe(switchMap((id) => this.favoritePagesService.deleteFavoritePage(id))));
52
+ this.initializeEffects();
53
+ }
54
+ ngOnInit() {
55
+ this.loadFavoritePages();
56
+ this.checkCurrentPageStatus();
57
+ }
58
+ initializeEffects() {
59
+ effect(() => {
60
+ const service = this.loadAllFavoritesService();
61
+ if (service?.response) {
62
+ this.allFavoritePages.set(service.response.result);
63
+ this.totalItems.set(service.response.result.length);
64
+ this.updateClientSidePagination();
65
+ this.checkCurrentPageStatus();
66
+ }
67
+ }, { allowSignalWrites: true });
68
+ effect(() => {
69
+ const service = this.deleteFavoriteService();
70
+ if (service?.response) {
71
+ this.loadFavoritePages();
72
+ this.messageService.add({
73
+ severity: 'success',
74
+ summary: this.translocoService.translate('favoritePages.success'),
75
+ detail: this.translocoService.translate('favoritePages.deletedSuccessfully'),
76
+ key: 'toast-root'
77
+ });
78
+ }
79
+ }, { allowSignalWrites: true });
80
+ }
81
+ get visible() {
82
+ return this.layoutService.state.favoritePagesSidebarVisible;
83
+ }
84
+ set visible(value) {
85
+ this.layoutService.state.favoritePagesSidebarVisible = value;
86
+ if (value) {
87
+ this.checkCurrentPageStatus();
88
+ }
89
+ }
90
+ loadFavoritePages() {
91
+ this.subjects.loadAllFavorites.next();
92
+ }
93
+ updateClientSidePagination() {
94
+ const allFavorites = this.allFavoritePages();
95
+ const totalItems = allFavorites.length;
96
+ const pageSize = this.pageSize();
97
+ const currentPage = this.currentPage();
98
+ const totalPages = Math.ceil(totalItems / pageSize);
99
+ this.totalPages.set(totalPages);
100
+ const startIndex = (currentPage - 1) * pageSize;
101
+ const endIndex = Math.min(startIndex + pageSize, totalItems);
102
+ const currentPageData = allFavorites.slice(startIndex, endIndex);
103
+ this.favoritePages.set(currentPageData);
104
+ }
105
+ checkCurrentPageStatus() {
106
+ const currentPath = this.favoritePagesService.getCurrentRoutePath();
107
+ const allFavorites = this.allFavoritePages();
108
+ const isFound = allFavorites.some((fav) => fav.url === currentPath);
109
+ this.isCurrentPageFavorited.set(isFound);
110
+ }
111
+ addCurrentPageToFavorites() {
112
+ const currentPath = this.favoritePagesService.getCurrentRoutePath();
113
+ const ref = this.dialogService.open(AddEditFavoriteModalComponent, {
114
+ header: this.translocoService.translate('favoritePages.addToFavorites'),
115
+ width: '500px',
116
+ modal: true,
117
+ closable: true,
118
+ data: {
119
+ mode: 'add',
120
+ url: currentPath
121
+ }
122
+ });
123
+ ref.onClose.subscribe((result) => {
124
+ if (result?.status === 'success') {
125
+ this.loadFavoritePages();
126
+ }
127
+ });
128
+ }
129
+ removeCurrentPageFromFavorites() {
130
+ const currentPath = this.favoritePagesService.getCurrentRoutePath();
131
+ const favorites = this.favoritePages();
132
+ const currentFavorite = favorites.find((fav) => fav.url === currentPath);
133
+ if (currentFavorite) {
134
+ this.confirmationService.confirm({
135
+ message: this.translocoService.translate('favoritePages.confirmDelete'),
136
+ header: this.translocoService.translate('favoritePages.deleteConfirmTitle'),
137
+ icon: 'pi pi-info-circle',
138
+ acceptLabel: this.translocoService.translate('acceptButtonLabel'),
139
+ rejectLabel: this.translocoService.translate('rejectButtonLabel'),
140
+ acceptButtonStyleClass: 'p-button-success',
141
+ rejectButtonStyleClass: 'p-button-danger p-button-outlined',
142
+ accept: () => {
143
+ this.subjects.deleteFavorite.next(currentFavorite.id);
144
+ }
145
+ });
146
+ }
147
+ }
148
+ editFavorite(favorite, event) {
149
+ event.stopPropagation();
150
+ const ref = this.dialogService.open(AddEditFavoriteModalComponent, {
151
+ header: this.translocoService.translate('favoritePages.editFavorite'),
152
+ width: '500px',
153
+ modal: true,
154
+ closable: true,
155
+ data: {
156
+ mode: 'edit',
157
+ favorite: favorite
158
+ }
159
+ });
160
+ ref.onClose.subscribe((result) => {
161
+ if (result?.status === 'success') {
162
+ this.loadFavoritePages();
163
+ }
164
+ });
165
+ }
166
+ deleteFavorite(favorite, event) {
167
+ event.stopPropagation();
168
+ this.confirmationService.confirm({
169
+ target: event.target,
170
+ message: this.translocoService.translate('favoritePages.confirmDelete', { label: favorite.label }),
171
+ header: this.translocoService.translate('favoritePages.deleteConfirmTitle'),
172
+ icon: 'pi pi-info-circle',
173
+ acceptLabel: this.translocoService.translate('acceptButtonLabel'),
174
+ rejectLabel: this.translocoService.translate('rejectButtonLabel'),
175
+ acceptButtonStyleClass: 'p-button-success',
176
+ rejectButtonStyleClass: 'p-button-danger p-button-outlined',
177
+ accept: () => {
178
+ this.subjects.deleteFavorite.next(favorite.id);
179
+ }
180
+ });
181
+ }
182
+ navigateToFavorite(favorite) {
183
+ this.favoritePagesService.navigateToFavoritePage(favorite);
184
+ this.visible = false;
185
+ }
186
+ trackByFavoriteId(index, favorite) {
187
+ return favorite.id;
188
+ }
189
+ onPageChange(event) {
190
+ this.currentPage.set(event.page + 1);
191
+ this.pageSize.set(event.rows);
192
+ this.updateClientSidePagination(); // Update pagination client-side, no API call
193
+ }
194
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FavoritePagesSidebarComponent, deps: [{ token: i1.LayoutService }, { token: i2.FavoritePagesService }, { token: i3.ConfirmationService }, { token: i3.MessageService }, { token: i4.DialogService }, { token: i5.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
195
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: FavoritePagesSidebarComponent, isStandalone: true, selector: "app-favorite-pages-sidebar", providers: [ConfirmationService, DialogService], ngImport: i0, template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-favorite-pages-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'favoritePages'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center\">\r\n\t\t\t\t<i class=\"pi pi-heart text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('favoritePages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"favorite-pages-content\">\r\n\t\t@if (isCurrentPageFavorited()) {\r\n\t\t\t<div class=\"current-favorited-message\">\r\n\t\t\t\t<div class=\"message-content\">\r\n\t\t\t\t\t<i class=\"pi pi-check-circle text-green-500\"></i>\r\n\t\t\t\t\t<span>{{ t('currentPageFavorited') }}</span>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<div class=\"add-section\">\r\n\t\t\t@if (!isCurrentPageFavorited()) {\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('addCurrentPage')\"\r\n\t\t\t\t\ticon=\"PLUS\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t(clickEvent)=\"addCurrentPageToFavorites()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t} @else {\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('removeCurrentPage')\"\r\n\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\tcolor=\"danger\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t(clickEvent)=\"removeCurrentPageFromFavorites()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t@if (favoritePages().length > 0) {\r\n\t\t\t<div class=\"favorites-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"favorites-items\">\r\n\t\t\t\t\t\t@for (favorite of favoritePages(); track trackByFavoriteId($index, favorite)) {\r\n\t\t\t\t\t\t\t<div class=\"favorite-item\" [class.default-item]=\"favorite.id < 0\" (click)=\"navigateToFavorite(favorite)\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-external-link text-primary mr-2\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"title-text\">{{ favorite.label }}</span>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\ticon=\"PENCIL\"\r\n\t\t\t\t\t\t\t\t\t\t\tcolor=\"warning\"\r\n\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"mr-1\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('editFavorite')\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"editFavorite(favorite, $event)\">\r\n\t\t\t\t\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\t\t\t\t\t\t\tcolor=\"danger\"\r\n\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('deleteFavorite')\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"deleteFavorite(favorite, $event)\">\r\n\t\t\t\t\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-heart empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noFavorites') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('startAddingFavorites') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t\t<div>\r\n\t\t\t<p-paginator\r\n\t\t\t\t[first]=\"(currentPage() - 1) * pageSize()\"\r\n\t\t\t\t[rows]=\"pageSize()\"\r\n\t\t\t\t[totalRecords]=\"totalItems()\"\r\n\t\t\t\t[showCurrentPageReport]=\"true\"\r\n\t\t\t\t[currentPageReportTemplate]=\"t('paginatorTemplate')\"\r\n\t\t\t\t[showFirstLastIcon]=\"false\"\r\n\t\t\t\t[showPageLinks]=\"false\"\r\n\t\t\t\t(onPageChange)=\"onPageChange($event)\">\r\n\t\t\t</p-paginator>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-favorite-pages-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-favorite-pages-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);border-bottom:1px solid var(--primary-600);padding:1rem 1.5rem}:host ::ng-deep .layout-favorite-pages-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}.favorite-pages-content{display:flex;flex-direction:column;height:92vh;background:var(--surface-0)}.current-favorited-message{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--green-50)}.current-favorited-message .message-content{display:flex;align-items:center;gap:.5rem;color:var(--green-700);font-size:.9rem;font-weight:500}.add-section{display:flex;align-items:center;gap:.5rem;padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.favorites-list{flex:1;overflow:hidden}.favorites-items{padding:.5rem}.favorite-item{background:var(--surface-0);border:1px solid var(--surface-border);border-radius:8px;margin-bottom:.5rem;cursor:pointer;transition:all .2s ease;position:relative;overflow:hidden}.favorite-item:hover{border-color:var(--primary-200);background:var(--primary-50);transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.favorite-item:hover .action-btn{opacity:1}.favorite-item:last-child{margin-bottom:0}.favorite-item.default-item{background:var(--blue-50);border-left:3px solid var(--blue-500)}.favorite-item.default-item:hover{background:var(--blue-100);border-color:var(--blue-300)}.favorite-item.default-item .title-text{font-weight:600;color:var(--blue-700)}.item-content{padding:.5rem .75rem}.item-header{display:flex;align-items:center;justify-content:space-between}.item-title{display:flex;align-items:center;flex:1;min-width:0}.item-title .title-text{font-weight:600;color:var(--text-color);font-size:1rem;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-content .empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-content .empty-title{font-size:1.1rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-content .empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}@media (max-width: 768px){.add-section{padding:.75rem}.add-section .button-label{font-size:.8rem}.item-content{padding:.5rem}.item-title .title-text{font-size:.85rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i7.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: ConfirmDialogModule }, { kind: "component", type: i8.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "ngmodule", type: PaginatorModule }, { kind: "component", type: i9.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "appendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { kind: "ngmodule", type: DynamicDialogModule }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "outlined", "badge", "size", "icon", "color"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i10.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] }); }
196
+ }
197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FavoritePagesSidebarComponent, decorators: [{
198
+ type: Component,
199
+ args: [{ standalone: true, selector: 'app-favorite-pages-sidebar', imports: [
200
+ CommonModule,
201
+ SidebarModule,
202
+ ScrollPanelModule,
203
+ ConfirmDialogModule,
204
+ PaginatorModule,
205
+ DynamicDialogModule,
206
+ ButtonComponent,
207
+ TranslocoModule,
208
+ TooltipModule
209
+ ], providers: [ConfirmationService, DialogService], template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-favorite-pages-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'favoritePages'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center\">\r\n\t\t\t\t<i class=\"pi pi-heart text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('favoritePages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"favorite-pages-content\">\r\n\t\t@if (isCurrentPageFavorited()) {\r\n\t\t\t<div class=\"current-favorited-message\">\r\n\t\t\t\t<div class=\"message-content\">\r\n\t\t\t\t\t<i class=\"pi pi-check-circle text-green-500\"></i>\r\n\t\t\t\t\t<span>{{ t('currentPageFavorited') }}</span>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<div class=\"add-section\">\r\n\t\t\t@if (!isCurrentPageFavorited()) {\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('addCurrentPage')\"\r\n\t\t\t\t\ticon=\"PLUS\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t(clickEvent)=\"addCurrentPageToFavorites()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t} @else {\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('removeCurrentPage')\"\r\n\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\tcolor=\"danger\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t(clickEvent)=\"removeCurrentPageFromFavorites()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t@if (favoritePages().length > 0) {\r\n\t\t\t<div class=\"favorites-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"favorites-items\">\r\n\t\t\t\t\t\t@for (favorite of favoritePages(); track trackByFavoriteId($index, favorite)) {\r\n\t\t\t\t\t\t\t<div class=\"favorite-item\" [class.default-item]=\"favorite.id < 0\" (click)=\"navigateToFavorite(favorite)\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-external-link text-primary mr-2\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"title-text\">{{ favorite.label }}</span>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\ticon=\"PENCIL\"\r\n\t\t\t\t\t\t\t\t\t\t\tcolor=\"warning\"\r\n\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"mr-1\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('editFavorite')\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"editFavorite(favorite, $event)\">\r\n\t\t\t\t\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\t\t\t\t\t\t\tcolor=\"danger\"\r\n\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('deleteFavorite')\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t(clickEvent)=\"deleteFavorite(favorite, $event)\">\r\n\t\t\t\t\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-heart empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noFavorites') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('startAddingFavorites') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t\t<div>\r\n\t\t\t<p-paginator\r\n\t\t\t\t[first]=\"(currentPage() - 1) * pageSize()\"\r\n\t\t\t\t[rows]=\"pageSize()\"\r\n\t\t\t\t[totalRecords]=\"totalItems()\"\r\n\t\t\t\t[showCurrentPageReport]=\"true\"\r\n\t\t\t\t[currentPageReportTemplate]=\"t('paginatorTemplate')\"\r\n\t\t\t\t[showFirstLastIcon]=\"false\"\r\n\t\t\t\t[showPageLinks]=\"false\"\r\n\t\t\t\t(onPageChange)=\"onPageChange($event)\">\r\n\t\t\t</p-paginator>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-favorite-pages-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-favorite-pages-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);border-bottom:1px solid var(--primary-600);padding:1rem 1.5rem}:host ::ng-deep .layout-favorite-pages-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}.favorite-pages-content{display:flex;flex-direction:column;height:92vh;background:var(--surface-0)}.current-favorited-message{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--green-50)}.current-favorited-message .message-content{display:flex;align-items:center;gap:.5rem;color:var(--green-700);font-size:.9rem;font-weight:500}.add-section{display:flex;align-items:center;gap:.5rem;padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.favorites-list{flex:1;overflow:hidden}.favorites-items{padding:.5rem}.favorite-item{background:var(--surface-0);border:1px solid var(--surface-border);border-radius:8px;margin-bottom:.5rem;cursor:pointer;transition:all .2s ease;position:relative;overflow:hidden}.favorite-item:hover{border-color:var(--primary-200);background:var(--primary-50);transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.favorite-item:hover .action-btn{opacity:1}.favorite-item:last-child{margin-bottom:0}.favorite-item.default-item{background:var(--blue-50);border-left:3px solid var(--blue-500)}.favorite-item.default-item:hover{background:var(--blue-100);border-color:var(--blue-300)}.favorite-item.default-item .title-text{font-weight:600;color:var(--blue-700)}.item-content{padding:.5rem .75rem}.item-header{display:flex;align-items:center;justify-content:space-between}.item-title{display:flex;align-items:center;flex:1;min-width:0}.item-title .title-text{font-weight:600;color:var(--text-color);font-size:1rem;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-content .empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-content .empty-title{font-size:1.1rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-content .empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}@media (max-width: 768px){.add-section{padding:.75rem}.add-section .button-label{font-size:.8rem}.item-content{padding:.5rem}.item-title .title-text{font-size:.85rem}}\n"] }]
210
+ }], ctorParameters: () => [{ type: i1.LayoutService }, { type: i2.FavoritePagesService }, { type: i3.ConfirmationService }, { type: i3.MessageService }, { type: i4.DialogService }, { type: i5.TranslocoService }] });
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmF2b3JpdGUtcGFnZXMtc2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvZmF2b3JpdGUtcGFnZXMvZmF2b3JpdGUtcGFnZXMtc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9hcHAvZmF2b3JpdGUtcGFnZXMvZmF2b3JpdGUtcGFnZXMtc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQWtCLE1BQU0sYUFBYSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLG1CQUFtQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxlQUFlLEVBQUUs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QUFTO2lDQUNHLElBQUksWUFDTiw0QkFBNEIsV0FDN0I7d0JBQ1IsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGFBQWE7cUJBQ2IsYUFHVSxDQUFDLG1CQUFtQixFQUFFLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBlZmZlY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuXHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBDb25maXJtRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jb25maXJtZGlhbG9nJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSwgRHluYW1pY0RpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IFBhZ2luYXRvck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgU2Nyb2xsUGFuZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Njcm9sbHBhbmVsJztcclxuaW1wb3J0IHsgU2lkZWJhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2lkZWJhcic7XHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvTW9kdWxlLCBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvYnV0dG9uJztcclxuXHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2FwcC5sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IEZhdm9yaXRlUGFnZVJlc3BvbnNlRFRPLCBGYXZvcml0ZVBhZ2VzU2VydmljZSB9IGZyb20gJy4vZmF2b3JpdGUtcGFnZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IEFkZEVkaXRGYXZvcml0ZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9tb2RhbHMvYWRkLWVkaXQtZmF2b3JpdGUtbW9kYWwvYWRkLWVkaXQtZmF2b3JpdGUtbW9kYWwuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdhcHAtZmF2b3JpdGUtcGFnZXMtc2lkZWJhcicsXHJcblx0aW1wb3J0czogW1xyXG5cdFx0Q29tbW9uTW9kdWxlLFxyXG5cdFx0U2lkZWJhck1vZHVsZSxcclxuXHRcdFNjcm9sbFBhbmVsTW9kdWxlLFxyXG5cdFx0Q29uZmlybURpYWxvZ01vZHVsZSxcclxuXHRcdFBhZ2luYXRvck1vZHVsZSxcclxuXHRcdER5bmFtaWNEaWFsb2dNb2R1bGUsXHJcblx0XHRCdXR0b25Db21wb25lbnQsXHJcblx0XHRUcmFuc2xvY29Nb2R1bGUsXHJcblx0XHRUb29sdGlwTW9kdWxlXHJcblx0XSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vZmF2b3JpdGUtcGFnZXMtc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vZmF2b3JpdGUtcGFnZXMtc2lkZWJhci5jb21wb25lbnQuc2NzcyddLFxyXG5cdHByb3ZpZGVyczogW0NvbmZpcm1hdGlvblNlcnZpY2UsIERpYWxvZ1NlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGYXZvcml0ZVBhZ2VzU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0ZmF2b3JpdGVQYWdlcyA9IHNpZ25hbDxGYXZvcml0ZVBhZ2VSZXNwb25zZURUT1tdPihbXSk7XHJcblx0YWxsRmF2b3JpdGVQYWdlcyA9IHNpZ25hbDxGYXZvcml0ZVBhZ2VSZXNwb25zZURUT1tdPihbXSk7XHJcblx0aXNDdXJyZW50UGFnZUZhdm9yaXRlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG5cdGN1cnJlbnRQYWdlID0gc2lnbmFsPG51bWJlcj4oMSk7XHJcblx0cGFnZVNpemUgPSBzaWduYWw8bnVtYmVyPigxMCk7XHJcblx0dG90YWxJdGVtcyA9IHNpZ25hbDxudW1iZXI+KDApO1xyXG5cdHRvdGFsUGFnZXMgPSBzaWduYWw8bnVtYmVyPigwKTtcclxuXHJcblx0cHJpdmF0ZSBzdWJqZWN0cyA9IHtcclxuXHRcdGxvYWRBbGxGYXZvcml0ZXM6IG5ldyBTdWJqZWN0PHZvaWQ+KCksXHJcblx0XHRkZWxldGVGYXZvcml0ZTogbmV3IFN1YmplY3Q8bnVtYmVyPigpXHJcblx0fTtcclxuXHJcblx0bG9hZEFsbEZhdm9yaXRlc1NlcnZpY2UgPSB0b1NpZ25hbChcclxuXHRcdHRoaXMuc3ViamVjdHMubG9hZEFsbEZhdm9yaXRlcy5waXBlKFxyXG5cdFx0XHRzd2l0Y2hNYXAoKCkgPT5cclxuXHRcdFx0XHR0aGlzLmZhdm9yaXRlUGFnZXNTZXJ2aWNlLmZpbHRlckZhdm9yaXRlUGFnZXMoe1xyXG5cdFx0XHRcdFx0cGFnZVNpemU6IDEwMDAsXHJcblx0XHRcdFx0XHRwYWdlTnVtYmVyOiAxLFxyXG5cdFx0XHRcdFx0c29ydEZpZWxkTmFtZTogJ2xhYmVsJyxcclxuXHRcdFx0XHRcdHNvcnREaXJlY3Rpb246IDFcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHQpXHJcblx0XHQpXHJcblx0KTtcclxuXHJcblx0ZGVsZXRlRmF2b3JpdGVTZXJ2aWNlID0gdG9TaWduYWwoXHJcblx0XHR0aGlzLnN1YmplY3RzLmRlbGV0ZUZhdm9yaXRlLnBpcGUoc3dpdGNoTWFwKChpZCkgPT4gdGhpcy5mYXZvcml0ZVBhZ2VzU2VydmljZS5kZWxldGVGYXZvcml0ZVBhZ2UoaWQpKSlcclxuXHQpO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHB1YmxpYyBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBmYXZvcml0ZVBhZ2VzU2VydmljZTogRmF2b3JpdGVQYWdlc1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcblx0XHRwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuXHRcdHByaXZhdGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuXHRcdHByaXZhdGUgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZVxyXG5cdCkge1xyXG5cdFx0dGhpcy5pbml0aWFsaXplRWZmZWN0cygpO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmxvYWRGYXZvcml0ZVBhZ2VzKCk7XHJcblx0XHR0aGlzLmNoZWNrQ3VycmVudFBhZ2VTdGF0dXMoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgaW5pdGlhbGl6ZUVmZmVjdHMoKTogdm9pZCB7XHJcblx0XHRlZmZlY3QoXHJcblx0XHRcdCgpID0+IHtcclxuXHRcdFx0XHRjb25zdCBzZXJ2aWNlID0gdGhpcy5sb2FkQWxsRmF2b3JpdGVzU2VydmljZSgpO1xyXG5cdFx0XHRcdGlmIChzZXJ2aWNlPy5yZXNwb25zZSkge1xyXG5cdFx0XHRcdFx0dGhpcy5hbGxGYXZvcml0ZVBhZ2VzLnNldChzZXJ2aWNlLnJlc3BvbnNlLnJlc3VsdCk7XHJcblx0XHRcdFx0XHR0aGlzLnRvdGFsSXRlbXMuc2V0KHNlcnZpY2UucmVzcG9uc2UucmVzdWx0Lmxlbmd0aCk7XHJcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZUNsaWVudFNpZGVQYWdpbmF0aW9uKCk7XHJcblx0XHRcdFx0XHR0aGlzLmNoZWNrQ3VycmVudFBhZ2VTdGF0dXMoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxyXG5cdFx0KTtcclxuXHJcblx0XHRlZmZlY3QoXHJcblx0XHRcdCgpID0+IHtcclxuXHRcdFx0XHRjb25zdCBzZXJ2aWNlID0gdGhpcy5kZWxldGVGYXZvcml0ZVNlcnZpY2UoKTtcclxuXHRcdFx0XHRpZiAoc2VydmljZT8ucmVzcG9uc2UpIHtcclxuXHRcdFx0XHRcdHRoaXMubG9hZEZhdm9yaXRlUGFnZXMoKTtcclxuXHRcdFx0XHRcdHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuXHRcdFx0XHRcdFx0c2V2ZXJpdHk6ICdzdWNjZXNzJyxcclxuXHRcdFx0XHRcdFx0c3VtbWFyeTogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnZmF2b3JpdGVQYWdlcy5zdWNjZXNzJyksXHJcblx0XHRcdFx0XHRcdGRldGFpbDogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnZmF2b3JpdGVQYWdlcy5kZWxldGVkU3VjY2Vzc2Z1bGx5JyksXHJcblx0XHRcdFx0XHRcdGtleTogJ3RvYXN0LXJvb3QnXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMubGF5b3V0U2VydmljZS5zdGF0ZS5mYXZvcml0ZVBhZ2VzU2lkZWJhclZpc2libGU7XHJcblx0fVxyXG5cclxuXHRzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xyXG5cdFx0dGhpcy5sYXlvdXRTZXJ2aWNlLnN0YXRlLmZhdm9yaXRlUGFnZXNTaWRlYmFyVmlzaWJsZSA9IHZhbHVlO1xyXG5cdFx0aWYgKHZhbHVlKSB7XHJcblx0XHRcdHRoaXMuY2hlY2tDdXJyZW50UGFnZVN0YXR1cygpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBsb2FkRmF2b3JpdGVQYWdlcygpOiB2b2lkIHtcclxuXHRcdHRoaXMuc3ViamVjdHMubG9hZEFsbEZhdm9yaXRlcy5uZXh0KCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHVwZGF0ZUNsaWVudFNpZGVQYWdpbmF0aW9uKCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgYWxsRmF2b3JpdGVzID0gdGhpcy5hbGxGYXZvcml0ZVBhZ2VzKCk7XHJcblx0XHRjb25zdCB0b3RhbEl0ZW1zID0gYWxsRmF2b3JpdGVzLmxlbmd0aDtcclxuXHRcdGNvbnN0IHBhZ2VTaXplID0gdGhpcy5wYWdlU2l6ZSgpO1xyXG5cdFx0Y29uc3QgY3VycmVudFBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlKCk7XHJcblxyXG5cdFx0Y29uc3QgdG90YWxQYWdlcyA9IE1hdGguY2VpbCh0b3RhbEl0ZW1zIC8gcGFnZVNpemUpO1xyXG5cdFx0dGhpcy50b3RhbFBhZ2VzLnNldCh0b3RhbFBhZ2VzKTtcclxuXHJcblx0XHRjb25zdCBzdGFydEluZGV4ID0gKGN1cnJlbnRQYWdlIC0gMSkgKiBwYWdlU2l6ZTtcclxuXHRcdGNvbnN0IGVuZEluZGV4ID0gTWF0aC5taW4oc3RhcnRJbmRleCArIHBhZ2VTaXplLCB0b3RhbEl0ZW1zKTtcclxuXHJcblx0XHRjb25zdCBjdXJyZW50UGFnZURhdGEgPSBhbGxGYXZvcml0ZXMuc2xpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xyXG5cdFx0dGhpcy5mYXZvcml0ZVBhZ2VzLnNldChjdXJyZW50UGFnZURhdGEpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBjaGVja0N1cnJlbnRQYWdlU3RhdHVzKCk6IHZvaWQge1xyXG5cdFx0Y29uc3QgY3VycmVudFBhdGggPSB0aGlzLmZhdm9yaXRlUGFnZXNTZXJ2aWNlLmdldEN1cnJlbnRSb3V0ZVBhdGgoKTtcclxuXHRcdGNvbnN0IGFsbEZhdm9yaXRlcyA9IHRoaXMuYWxsRmF2b3JpdGVQYWdlcygpO1xyXG5cdFx0Y29uc3QgaXNGb3VuZCA9IGFsbEZhdm9yaXRlcy5zb21lKChmYXYpID0+IGZhdi51cmwgPT09IGN1cnJlbnRQYXRoKTtcclxuXHJcblx0XHR0aGlzLmlzQ3VycmVudFBhZ2VGYXZvcml0ZWQuc2V0KGlzRm91bmQpO1xyXG5cdH1cclxuXHJcblx0YWRkQ3VycmVudFBhZ2VUb0Zhdm9yaXRlcygpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGN1cnJlbnRQYXRoID0gdGhpcy5mYXZvcml0ZVBhZ2VzU2VydmljZS5nZXRDdXJyZW50Um91dGVQYXRoKCk7XHJcblxyXG5cdFx0Y29uc3QgcmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQWRkRWRpdEZhdm9yaXRlTW9kYWxDb21wb25lbnQsIHtcclxuXHRcdFx0aGVhZGVyOiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdmYXZvcml0ZVBhZ2VzLmFkZFRvRmF2b3JpdGVzJyksXHJcblx0XHRcdHdpZHRoOiAnNTAwcHgnLFxyXG5cdFx0XHRtb2RhbDogdHJ1ZSxcclxuXHRcdFx0Y2xvc2FibGU6IHRydWUsXHJcblx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRtb2RlOiAnYWRkJyxcclxuXHRcdFx0XHR1cmw6IGN1cnJlbnRQYXRoXHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdHJlZi5vbkNsb3NlLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcblx0XHRcdGlmIChyZXN1bHQ/LnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XHJcblx0XHRcdFx0dGhpcy5sb2FkRmF2b3JpdGVQYWdlcygpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHJlbW92ZUN1cnJlbnRQYWdlRnJvbUZhdm9yaXRlcygpOiB2b2lkIHtcclxuXHRcdGNvbnN0IGN1cnJlbnRQYXRoID0gdGhpcy5mYXZvcml0ZVBhZ2VzU2VydmljZS5nZXRDdXJyZW50Um91dGVQYXRoKCk7XHJcblx0XHRjb25zdCBmYXZvcml0ZXMgPSB0aGlzLmZhdm9yaXRlUGFnZXMoKTtcclxuXHRcdGNvbnN0IGN1cnJlbnRGYXZvcml0ZSA9IGZhdm9yaXRlcy5maW5kKChmYXYpID0+IGZhdi51cmwgPT09IGN1cnJlbnRQYXRoKTtcclxuXHJcblx0XHRpZiAoY3VycmVudEZhdm9yaXRlKSB7XHJcblx0XHRcdHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcclxuXHRcdFx0XHRtZXNzYWdlOiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdmYXZvcml0ZVBhZ2VzLmNvbmZpcm1EZWxldGUnKSxcclxuXHRcdFx0XHRoZWFkZXI6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ2Zhdm9yaXRlUGFnZXMuZGVsZXRlQ29uZmlybVRpdGxlJyksXHJcblx0XHRcdFx0aWNvbjogJ3BpIHBpLWluZm8tY2lyY2xlJyxcclxuXHRcdFx0XHRhY2NlcHRMYWJlbDogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnYWNjZXB0QnV0dG9uTGFiZWwnKSxcclxuXHRcdFx0XHRyZWplY3RMYWJlbDogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgncmVqZWN0QnV0dG9uTGFiZWwnKSxcclxuXHRcdFx0XHRhY2NlcHRCdXR0b25TdHlsZUNsYXNzOiAncC1idXR0b24tc3VjY2VzcycsXHJcblx0XHRcdFx0cmVqZWN0QnV0dG9uU3R5bGVDbGFzczogJ3AtYnV0dG9uLWRhbmdlciBwLWJ1dHRvbi1vdXRsaW5lZCcsXHJcblx0XHRcdFx0YWNjZXB0OiAoKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnN1YmplY3RzLmRlbGV0ZUZhdm9yaXRlLm5leHQoY3VycmVudEZhdm9yaXRlLmlkKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0ZWRpdEZhdm9yaXRlKGZhdm9yaXRlOiBGYXZvcml0ZVBhZ2VSZXNwb25zZURUTywgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcblx0XHRjb25zdCByZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihBZGRFZGl0RmF2b3JpdGVNb2RhbENvbXBvbmVudCwge1xyXG5cdFx0XHRoZWFkZXI6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ2Zhdm9yaXRlUGFnZXMuZWRpdEZhdm9yaXRlJyksXHJcblx0XHRcdHdpZHRoOiAnNTAwcHgnLFxyXG5cdFx0XHRtb2RhbDogdHJ1ZSxcclxuXHRcdFx0Y2xvc2FibGU6IHRydWUsXHJcblx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRtb2RlOiAnZWRpdCcsXHJcblx0XHRcdFx0ZmF2b3JpdGU6IGZhdm9yaXRlXHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdHJlZi5vbkNsb3NlLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcblx0XHRcdGlmIChyZXN1bHQ/LnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XHJcblx0XHRcdFx0dGhpcy5sb2FkRmF2b3JpdGVQYWdlcygpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGRlbGV0ZUZhdm9yaXRlKGZhdm9yaXRlOiBGYXZvcml0ZVBhZ2VSZXNwb25zZURUTywgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcblx0XHR0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcblx0XHRcdHRhcmdldDogZXZlbnQudGFyZ2V0IGFzIEV2ZW50VGFyZ2V0LFxyXG5cdFx0XHRtZXNzYWdlOiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdmYXZvcml0ZVBhZ2VzLmNvbmZpcm1EZWxldGUnLCB7IGxhYmVsOiBmYXZvcml0ZS5sYWJlbCB9KSxcclxuXHRcdFx0aGVhZGVyOiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdmYXZvcml0ZVBhZ2VzLmRlbGV0ZUNvbmZpcm1UaXRsZScpLFxyXG5cdFx0XHRpY29uOiAncGkgcGktaW5mby1jaXJjbGUnLFxyXG5cdFx0XHRhY2NlcHRMYWJlbDogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnYWNjZXB0QnV0dG9uTGFiZWwnKSxcclxuXHRcdFx0cmVqZWN0TGFiZWw6IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ3JlamVjdEJ1dHRvbkxhYmVsJyksXHJcblx0XHRcdGFjY2VwdEJ1dHRvblN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi1zdWNjZXNzJyxcclxuXHRcdFx0cmVqZWN0QnV0dG9uU3R5bGVDbGFzczogJ3AtYnV0dG9uLWRhbmdlciBwLWJ1dHRvbi1vdXRsaW5lZCcsXHJcblx0XHRcdGFjY2VwdDogKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuc3ViamVjdHMuZGVsZXRlRmF2b3JpdGUubmV4dChmYXZvcml0ZS5pZCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0bmF2aWdhdGVUb0Zhdm9yaXRlKGZhdm9yaXRlOiBGYXZvcml0ZVBhZ2VSZXNwb25zZURUTyk6IHZvaWQge1xyXG5cdFx0dGhpcy5mYXZvcml0ZVBhZ2VzU2VydmljZS5uYXZpZ2F0ZVRvRmF2b3JpdGVQYWdlKGZhdm9yaXRlKTtcclxuXHRcdHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG5cdH1cclxuXHJcblx0dHJhY2tCeUZhdm9yaXRlSWQoaW5kZXg6IG51bWJlciwgZmF2b3JpdGU6IEZhdm9yaXRlUGFnZVJlc3BvbnNlRFRPKTogbnVtYmVyIHtcclxuXHRcdHJldHVybiBmYXZvcml0ZS5pZDtcclxuXHR9XHJcblxyXG5cdG9uUGFnZUNoYW5nZShldmVudDogYW55KTogdm9pZCB7XHJcblx0XHR0aGlzLmN1cnJlbnRQYWdlLnNldChldmVudC5wYWdlICsgMSk7XHJcblx0XHR0aGlzLnBhZ2VTaXplLnNldChldmVudC5yb3dzKTtcclxuXHRcdHRoaXMudXBkYXRlQ2xpZW50U2lkZVBhZ2luYXRpb24oKTsgLy8gVXBkYXRlIHBhZ2luYXRpb24gY2xpZW50LXNpZGUsIG5vIEFQSSBjYWxsXHJcblx0fVxyXG59XHJcbiIsIjxwLXNpZGViYXJcclxuXHRbKHZpc2libGUpXT1cInZpc2libGVcIlxyXG5cdHBvc2l0aW9uPVwicmlnaHRcIlxyXG5cdFt0cmFuc2l0aW9uT3B0aW9uc109XCInLjNzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJ1wiXHJcblx0c3R5bGVDbGFzcz1cImxheW91dC1mYXZvcml0ZS1wYWdlcy1zaWRlYmFyIHctZnVsbCBzbTp3LTMwcmVtXCJcclxuXHQqdHJhbnNsb2NvPVwibGV0IHQ7IHJlYWQ6ICdmYXZvcml0ZVBhZ2VzJ1wiPlxyXG5cdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB3LWZ1bGxcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcblx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1oZWFydCB0ZXh0LXByaW1hcnkgdGV4dC14bFwiPjwvaT5cclxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWxnXCI+e3sgdCgnZmF2b3JpdGVQYWdlcycpIH19PC9zcGFuPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJmYXZvcml0ZS1wYWdlcy1jb250ZW50XCI+XHJcblx0XHRAaWYgKGlzQ3VycmVudFBhZ2VGYXZvcml0ZWQoKSkge1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY3VycmVudC1mYXZvcml0ZWQtbWVzc2FnZVwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJtZXNzYWdlLWNvbnRlbnRcIj5cclxuXHRcdFx0XHRcdDxpIGNsYXNzPVwicGkgcGktY2hlY2stY2lyY2xlIHRleHQtZ3JlZW4tNTAwXCI+PC9pPlxyXG5cdFx0XHRcdFx0PHNwYW4+e3sgdCgnY3VycmVudFBhZ2VGYXZvcml0ZWQnKSB9fTwvc3Bhbj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHR9XHJcblxyXG5cdFx0PGRpdiBjbGFzcz1cImFkZC1zZWN0aW9uXCI+XHJcblx0XHRcdEBpZiAoIWlzQ3VycmVudFBhZ2VGYXZvcml0ZWQoKSkge1xyXG5cdFx0XHRcdDxhcmlsLWJ1dHRvblxyXG5cdFx0XHRcdFx0W2xhYmVsXT1cInQoJ2FkZEN1cnJlbnRQYWdlJylcIlxyXG5cdFx0XHRcdFx0aWNvbj1cIlBMVVNcIlxyXG5cdFx0XHRcdFx0Y29sb3I9XCJwcmltYXJ5XCJcclxuXHRcdFx0XHRcdHNpemU9XCJzbVwiXHJcblx0XHRcdFx0XHQoY2xpY2tFdmVudCk9XCJhZGRDdXJyZW50UGFnZVRvRmF2b3JpdGVzKClcIj5cclxuXHRcdFx0XHQ8L2FyaWwtYnV0dG9uPlxyXG5cdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0XHQ8YXJpbC1idXR0b25cclxuXHRcdFx0XHRcdFtsYWJlbF09XCJ0KCdyZW1vdmVDdXJyZW50UGFnZScpXCJcclxuXHRcdFx0XHRcdGljb249XCJUSU1FU1wiXHJcblx0XHRcdFx0XHRjb2xvcj1cImRhbmdlclwiXHJcblx0XHRcdFx0XHRzaXplPVwic21cIlxyXG5cdFx0XHRcdFx0KGNsaWNrRXZlbnQpPVwicmVtb3ZlQ3VycmVudFBhZ2VGcm9tRmF2b3JpdGVzKClcIj5cclxuXHRcdFx0XHQ8L2FyaWwtYnV0dG9uPlxyXG5cdFx0XHR9XHJcblx0XHQ8L2Rpdj5cclxuXHJcblx0XHRAaWYgKGZhdm9yaXRlUGFnZXMoKS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJmYXZvcml0ZXMtbGlzdFwiPlxyXG5cdFx0XHRcdDxwLXNjcm9sbFBhbmVsIFtzdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScsIGhlaWdodDogJzEwMCUnIH1cIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmYXZvcml0ZXMtaXRlbXNcIj5cclxuXHRcdFx0XHRcdFx0QGZvciAoZmF2b3JpdGUgb2YgZmF2b3JpdGVQYWdlcygpOyB0cmFjayB0cmFja0J5RmF2b3JpdGVJZCgkaW5kZXgsIGZhdm9yaXRlKSkge1xyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmYXZvcml0ZS1pdGVtXCIgW2NsYXNzLmRlZmF1bHQtaXRlbV09XCJmYXZvcml0ZS5pZCA8IDBcIiAoY2xpY2spPVwibmF2aWdhdGVUb0Zhdm9yaXRlKGZhdm9yaXRlKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cIml0ZW0tY29udGVudFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaXRlbS1oZWFkZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaXRlbS10aXRsZVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJwaSBwaS1leHRlcm5hbC1saW5rIHRleHQtcHJpbWFyeSBtci0yXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJ0aXRsZS10ZXh0XCI+e3sgZmF2b3JpdGUubGFiZWwgfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpY29uPVwiUEVOQ0lMXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbG9yPVwid2FybmluZ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzaXplPVwic21cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJtci0xXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJ0KCdlZGl0RmF2b3JpdGUnKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJsZWZ0XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChjbGlja0V2ZW50KT1cImVkaXRGYXZvcml0ZShmYXZvcml0ZSwgJGV2ZW50KVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvYXJpbC1idXR0b24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpY29uPVwiVElNRVNcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29sb3I9XCJkYW5nZXJcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2l6ZT1cInNtXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJ0KCdkZWxldGVGYXZvcml0ZScpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cImxlZnRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrRXZlbnQpPVwiZGVsZXRlRmF2b3JpdGUoZmF2b3JpdGUsICRldmVudClcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2FyaWwtYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8L3Atc2Nyb2xsUGFuZWw+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0fSBAZWxzZSB7XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJlbXB0eS1jb250ZW50XCI+XHJcblx0XHRcdFx0XHQ8aSBjbGFzcz1cInBpIHBpLWhlYXJ0IGVtcHR5LWljb25cIj48L2k+XHJcblx0XHRcdFx0XHQ8aDMgY2xhc3M9XCJlbXB0eS10aXRsZVwiPnt7IHQoJ25vRmF2b3JpdGVzJykgfX08L2gzPlxyXG5cdFx0XHRcdFx0PHAgY2xhc3M9XCJlbXB0eS1tZXNzYWdlXCI+e3sgdCgnc3RhcnRBZGRpbmdGYXZvcml0ZXMnKSB9fTwvcD5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHR9XHJcblx0XHQ8ZGl2PlxyXG5cdFx0XHQ8cC1wYWdpbmF0b3JcclxuXHRcdFx0XHRbZmlyc3RdPVwiKGN1cnJlbnRQYWdlKCkgLSAxKSAqIHBhZ2VTaXplKClcIlxyXG5cdFx0XHRcdFtyb3dzXT1cInBhZ2VTaXplKClcIlxyXG5cdFx0XHRcdFt0b3RhbFJlY29yZHNdPVwidG90YWxJdGVtcygpXCJcclxuXHRcdFx0XHRbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIlxyXG5cdFx0XHRcdFtjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlXT1cInQoJ3BhZ2luYXRvclRlbXBsYXRlJylcIlxyXG5cdFx0XHRcdFtzaG93Rmlyc3RMYXN0SWNvbl09XCJmYWxzZVwiXHJcblx0XHRcdFx0W3Nob3dQYWdlTGlua3NdPVwiZmFsc2VcIlxyXG5cdFx0XHRcdChvblBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIj5cclxuXHRcdFx0PC9wLXBhZ2luYXRvcj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8cC1jb25maXJtRGlhbG9nPjwvcC1jb25maXJtRGlhbG9nPlxyXG48L3Atc2lkZWJhcj5cclxuIl19
@@ -0,0 +1,55 @@
1
+ import { __decorate } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import { Observable } from 'rxjs';
4
+ import { HTTPMethods, ProxyTypes, RestClient, ServiceCall } from 'aril/http';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/router";
7
+ // API Endpoints
8
+ export const favoritePageEndpoints = {
9
+ filter: 'favorite-pages/filter',
10
+ favorite: 'favorite-pages'
11
+ };
12
+ export class FavoritePagesService extends RestClient {
13
+ constructor(router) {
14
+ super();
15
+ this.router = router;
16
+ this.states = {};
17
+ }
18
+ getCurrentRoutePath() {
19
+ return this.router.url;
20
+ }
21
+ navigateToFavoritePage(favorite) {
22
+ this.router.navigate([favorite.url]);
23
+ }
24
+ filterFavoritePages(post) {
25
+ return new Observable();
26
+ }
27
+ saveFavoritePage(post) {
28
+ return new Observable();
29
+ }
30
+ updateFavoritePage(id, post) {
31
+ return new Observable();
32
+ }
33
+ deleteFavoritePage(id) {
34
+ return new Observable();
35
+ }
36
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FavoritePagesService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
37
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FavoritePagesService, providedIn: 'root' }); }
38
+ }
39
+ __decorate([
40
+ ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, favoritePageEndpoints.filter)
41
+ ], FavoritePagesService.prototype, "filterFavoritePages", null);
42
+ __decorate([
43
+ ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, favoritePageEndpoints.favorite)
44
+ ], FavoritePagesService.prototype, "saveFavoritePage", null);
45
+ __decorate([
46
+ ServiceCall(HTTPMethods.PUT, ProxyTypes.ClientSide, favoritePageEndpoints.favorite)
47
+ ], FavoritePagesService.prototype, "updateFavoritePage", null);
48
+ __decorate([
49
+ ServiceCall(HTTPMethods.DELETE, ProxyTypes.ClientSide, favoritePageEndpoints.favorite)
50
+ ], FavoritePagesService.prototype, "deleteFavoritePage", null);
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FavoritePagesService, decorators: [{
52
+ type: Injectable,
53
+ args: [{ providedIn: 'root' }]
54
+ }], ctorParameters: () => [{ type: i1.Router }], propDecorators: { filterFavoritePages: [], saveFavoritePage: [], updateFavoritePage: [], deleteFavoritePage: [] } });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmF2b3JpdGUtcGFnZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdGhlbWUvbGF5b3V0L2FwcC9mYXZvcml0ZS1wYWdlcy9mYXZvcml0ZS1wYWdlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBd0MsTUFBTSxXQUFXLENBQUM7OztBQXdDbkgsZ0JBQWdCO0FBQ2hCLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHO0lBQ3BDLE1BQU0sRUFBRSx1QkFBdUI7SUFDL0IsUUFBUSxFQUFFLGdCQUFnQjtDQUMxQixDQUFDO0FBR0YsTUFBTSxPQUFPLG9CQUFxQixTQUFRLFVBQVU7SUFHbkQsWUFBb0IsTUFBYztRQUNqQyxLQUFLLEVBQUUsQ0FBQztRQURXLFdBQU0sR0FBTixNQUFNLENBQVE7UUFGekIsV0FBTSxHQUE4QyxFQUFFLENBQUM7SUFJaEUsQ0FBQztJQUVELG1CQUFtQjtRQUNsQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxRQUFpQztRQUN2RCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFHRCxtQkFBbUIsQ0FBQyxJQUFrQztRQUNyRCxPQUFPLElBQUksVUFBVSxFQUE2RCxDQUFDO0lBQ3BGLENBQUM7SUFHRCxnQkFBZ0IsQ0FBQyxJQUFnQztRQUNoRCxPQUFPLElBQUksVUFBVSxFQUE0QyxDQUFDO0lBQ25FLENBQUM7SUFHRCxrQkFBa0IsQ0FBQyxFQUFVLEVBQUUsSUFBa0M7UUFDaEUsT0FBTyxJQUFJLFVBQVUsRUFBNEMsQ0FBQztJQUNuRSxDQUFDO0lBR0Qsa0JBQWtCLENBQUMsRUFBVTtRQUM1QixPQUFPLElBQUksVUFBVSxFQUE0QixDQUFDO0lBQ25ELENBQUM7OEdBakNXLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGNBRFAsTUFBTTs7QUFpQi9CO0lBREMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRSxxQkFBcUIsQ0FBQyxNQUFNLENBQUM7K0RBR2xGO0FBR0Q7SUFEQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsVUFBVSxFQUFFLHFCQUFxQixDQUFDLFFBQVEsQ0FBQzs0REFHcEY7QUFHRDtJQURDLFdBQVcsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxVQUFVLEVBQUUscUJBQXFCLENBQUMsUUFBUSxDQUFDOzhEQUduRjtBQUdEO0lBREMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRSxxQkFBcUIsQ0FBQyxRQUFRLENBQUM7OERBR3RGOzJGQWpDVyxvQkFBb0I7a0JBRGhDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzJFQWlCakMsbUJBQW1CLE1BS25CLGdCQUFnQixNQUtoQixrQkFBa0IsTUFLbEIsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgSFRUUE1ldGhvZHMsIFByb3h5VHlwZXMsIFJlc3RDbGllbnQsIFNlcnZpY2VDYWxsLCBTZXJ2aWNlQ2FsbFN0YXRlTWFwLCBTZXJ2aWNlUmVzcG9uc2UgfSBmcm9tICdhcmlsL2h0dHAnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGYXZvcml0ZVBhZ2VSZXNwb25zZURUTyB7XHJcblx0aWQ6IG51bWJlcjtcclxuXHRjcmVhdG9yOiBzdHJpbmc7XHJcblx0Y3JlYXRlZDogbnVtYmVyO1xyXG5cdHVwZGF0ZXI6IHN0cmluZztcclxuXHR1cGRhdGVkOiBudW1iZXI7XHJcblx0dmVyc2lvbjogbnVtYmVyO1xyXG5cdHVzZXJuYW1lOiBzdHJpbmc7XHJcblx0dXJsOiBzdHJpbmc7XHJcblx0bGFiZWw6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGYXZvcml0ZVBhZ2VTYXZlUmVxdWVzdERUTyB7XHJcblx0dXJsOiBzdHJpbmc7XHJcblx0bGFiZWw6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGYXZvcml0ZVBhZ2VVcGRhdGVSZXF1ZXN0RFRPIHtcclxuXHRsYWJlbDogc3RyaW5nO1xyXG5cdHZlcnNpb246IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGYXZvcml0ZVBhZ2VGaWx0ZXJSZXF1ZXN0RFRPIHtcclxuXHRwYWdlU2l6ZT86IG51bWJlcjtcclxuXHRwYWdlTnVtYmVyPzogbnVtYmVyO1xyXG5cdHNvcnRGaWVsZE5hbWU/OiBzdHJpbmc7XHJcblx0c29ydERpcmVjdGlvbj86IG51bWJlcjsgLy8gMT1BU0MsIDI9REVTQ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaFJlc3VsdERUTzxUPiB7XHJcblx0cmVzdWx0SW5mbzoge1xyXG5cdFx0dG90YWxQYWdlOiBudW1iZXI7XHJcblx0XHR0b3RhbEl0ZW06IG51bWJlcjtcclxuXHR9O1xyXG5cdHJlc3VsdDogVFtdO1xyXG5cdHNlYXJjaEFmdGVyVmFsdWVzOiBhbnlbXTtcclxufVxyXG5cclxuLy8gQVBJIEVuZHBvaW50c1xyXG5leHBvcnQgY29uc3QgZmF2b3JpdGVQYWdlRW5kcG9pbnRzID0ge1xyXG5cdGZpbHRlcjogJ2Zhdm9yaXRlLXBhZ2VzL2ZpbHRlcicsXHJcblx0ZmF2b3JpdGU6ICdmYXZvcml0ZS1wYWdlcydcclxufTtcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBGYXZvcml0ZVBhZ2VzU2VydmljZSBleHRlbmRzIFJlc3RDbGllbnQge1xyXG5cdG92ZXJyaWRlIHN0YXRlczogU2VydmljZUNhbGxTdGF0ZU1hcDxGYXZvcml0ZVBhZ2VzU2VydmljZT4gPSB7fTtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xyXG5cdFx0c3VwZXIoKTtcclxuXHR9XHJcblxyXG5cdGdldEN1cnJlbnRSb3V0ZVBhdGgoKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiB0aGlzLnJvdXRlci51cmw7XHJcblx0fVxyXG5cclxuXHRuYXZpZ2F0ZVRvRmF2b3JpdGVQYWdlKGZhdm9yaXRlOiBGYXZvcml0ZVBhZ2VSZXNwb25zZURUTyk6IHZvaWQge1xyXG5cdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Zhdm9yaXRlLnVybF0pO1xyXG5cdH1cclxuXHJcblx0QFNlcnZpY2VDYWxsKEhUVFBNZXRob2RzLlBPU1QsIFByb3h5VHlwZXMuQ2xpZW50U2lkZSwgZmF2b3JpdGVQYWdlRW5kcG9pbnRzLmZpbHRlcilcclxuXHRmaWx0ZXJGYXZvcml0ZVBhZ2VzKHBvc3Q6IEZhdm9yaXRlUGFnZUZpbHRlclJlcXVlc3REVE8pIHtcclxuXHRcdHJldHVybiBuZXcgT2JzZXJ2YWJsZTxTZXJ2aWNlUmVzcG9uc2U8U2VhcmNoUmVzdWx0RFRPPEZhdm9yaXRlUGFnZVJlc3BvbnNlRFRPPj4+KCk7XHJcblx0fVxyXG5cclxuXHRAU2VydmljZUNhbGwoSFRUUE1ldGhvZHMuUE9TVCwgUHJveHlUeXBlcy5DbGllbnRTaWRlLCBmYXZvcml0ZVBhZ2VFbmRwb2ludHMuZmF2b3JpdGUpXHJcblx0c2F2ZUZhdm9yaXRlUGFnZShwb3N0OiBGYXZvcml0ZVBhZ2VTYXZlUmVxdWVzdERUTykge1xyXG5cdFx0cmV0dXJuIG5ldyBPYnNlcnZhYmxlPFNlcnZpY2VSZXNwb25zZTxGYXZvcml0ZVBhZ2VSZXNwb25zZURUTz4+KCk7XHJcblx0fVxyXG5cclxuXHRAU2VydmljZUNhbGwoSFRUUE1ldGhvZHMuUFVULCBQcm94eVR5cGVzLkNsaWVudFNpZGUsIGZhdm9yaXRlUGFnZUVuZHBvaW50cy5mYXZvcml0ZSlcclxuXHR1cGRhdGVGYXZvcml0ZVBhZ2UoaWQ6IG51bWJlciwgcG9zdDogRmF2b3JpdGVQYWdlVXBkYXRlUmVxdWVzdERUTykge1xyXG5cdFx0cmV0dXJuIG5ldyBPYnNlcnZhYmxlPFNlcnZpY2VSZXNwb25zZTxGYXZvcml0ZVBhZ2VSZXNwb25zZURUTz4+KCk7XHJcblx0fVxyXG5cclxuXHRAU2VydmljZUNhbGwoSFRUUE1ldGhvZHMuREVMRVRFLCBQcm94eVR5cGVzLkNsaWVudFNpZGUsIGZhdm9yaXRlUGFnZUVuZHBvaW50cy5mYXZvcml0ZSlcclxuXHRkZWxldGVGYXZvcml0ZVBhZ2UoaWQ6IG51bWJlcikge1xyXG5cdFx0cmV0dXJuIG5ldyBPYnNlcnZhYmxlPFNlcnZpY2VSZXNwb25zZTxib29sZWFuPj4oKTtcclxuXHR9XHJcbn1cclxuIl19