ngx-techlify-core 18.88.0 → 18.89.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 (235) hide show
  1. package/esm2022/lib/access-control-config/access-control-config-form/access-control-config-form.component.mjs +9 -10
  2. package/esm2022/lib/access-control-config/access-control-config.component.mjs +6 -7
  3. package/esm2022/lib/access-control-config/access-control-config.module.mjs +8 -40
  4. package/esm2022/lib/app-admin/admin-role/admin-role-list/admin-role-list.component.mjs +7 -8
  5. package/esm2022/lib/app-admin/admin-role/admin-role-list/admin-role-list.module.mjs +8 -43
  6. package/esm2022/lib/app-admin/admin-role/admin-role-permission-form/admin-role-permission-form.component.mjs +9 -10
  7. package/esm2022/lib/app-admin/admin-role/admin-role-permission-form/admin-role-permission-form.module.mjs +5 -46
  8. package/esm2022/lib/app-admin/app-admin-home/app-admin-home.component.mjs +2 -2
  9. package/esm2022/lib/audit-log/audit-log-for-model/audit-log-for-model.module.mjs +8 -16
  10. package/esm2022/lib/audit-log/audit-log-list/audit-log-list.component.mjs +9 -9
  11. package/esm2022/lib/audit-log/audit-log-list/audit-log-list.module.mjs +8 -31
  12. package/esm2022/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.mjs +6 -6
  13. package/esm2022/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.mjs +8 -24
  14. package/esm2022/lib/audit-log/audit-log-view/audit-log-view.module.mjs +8 -12
  15. package/esm2022/lib/audit-log/audit-log-view-model/audit-log-view-model.module.mjs +8 -12
  16. package/esm2022/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.mjs +1 -1
  17. package/esm2022/lib/base-model/techlify-list/techlify-list.component.mjs +42 -4
  18. package/esm2022/lib/change-password/change-password.component.mjs +4 -5
  19. package/esm2022/lib/change-password/change-password.module.mjs +5 -24
  20. package/esm2022/lib/column-selector/column-selector/column-selector.component.mjs +7 -8
  21. package/esm2022/lib/column-selector/column-selector.module.mjs +5 -53
  22. package/esm2022/lib/core/core.module.mjs +1 -1
  23. package/esm2022/lib/data-table/data-table.component.mjs +11 -13
  24. package/esm2022/lib/data-table/data-table.module.mjs +5 -17
  25. package/esm2022/lib/document-viewer/document-viewer.component.mjs +5 -6
  26. package/esm2022/lib/document-viewer/document-viewer.module.mjs +1 -5
  27. package/esm2022/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.mjs +5 -17
  28. package/esm2022/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.mjs +5 -6
  29. package/esm2022/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.mjs +5 -21
  30. package/esm2022/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.mjs +13 -14
  31. package/esm2022/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.mjs +5 -21
  32. package/esm2022/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.mjs +5 -6
  33. package/esm2022/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.mjs +5 -21
  34. package/esm2022/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.mjs +13 -14
  35. package/esm2022/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.mjs +5 -21
  36. package/esm2022/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.mjs +4 -5
  37. package/esm2022/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.mjs +5 -21
  38. package/esm2022/lib/entity-files/entity-file-form/entity-file-form.component.mjs +8 -8
  39. package/esm2022/lib/entity-files/entity-file-list/entity-file-list.component.mjs +19 -19
  40. package/esm2022/lib/entity-files/entity-file-list-widget/entity-file-list-widget.component.mjs +2 -4
  41. package/esm2022/lib/entity-files/entity-file-list.module.mjs +1 -13
  42. package/esm2022/lib/entity-files/entity-file.service.mjs +3 -3
  43. package/esm2022/lib/file-dragdrop-uploader/file-dragdrop-uploader/file-dragdrop-uploader.component.mjs +21 -8
  44. package/esm2022/lib/file-dragdrop-uploader/file-dragdrop-uploader.module.mjs +5 -21
  45. package/esm2022/lib/file-dropper/file-dropper.component.mjs +4 -6
  46. package/esm2022/lib/file-dropper/file-dropper.module.mjs +1 -5
  47. package/esm2022/lib/forgot-password/forgot-password.component.mjs +1 -1
  48. package/esm2022/lib/forgot-password/forgot-password.module.mjs +5 -13
  49. package/esm2022/lib/form-configuration/form-configuration-field-form/form-configuration-field-form.component.mjs +3 -4
  50. package/esm2022/lib/form-configuration/form-configuration-field-form/form-configuration-field-form.module.mjs +5 -17
  51. package/esm2022/lib/import-csv/field-mapping/field-mapping.component.mjs +5 -5
  52. package/esm2022/lib/import-csv/import-csv.component.mjs +6 -6
  53. package/esm2022/lib/import-csv/import-csv.module.mjs +8 -38
  54. package/esm2022/lib/import-csv/import-history-list/import-history-list.component.mjs +3 -3
  55. package/esm2022/lib/import-csv/import-success/import-success.component.mjs +5 -5
  56. package/esm2022/lib/ip-address-selector/ip-address-selector.module.mjs +5 -29
  57. package/esm2022/lib/ip-address-selector/ip-range-selector/ip-range-selector.component.mjs +7 -8
  58. package/esm2022/lib/locked-date/locked-date-form/locked-date-form.component.mjs +1 -1
  59. package/esm2022/lib/locked-date/locked-date.module.mjs +5 -32
  60. package/esm2022/lib/locked-date/locked-dates-list/locked-date-list.component.mjs +3 -3
  61. package/esm2022/lib/login/login-form-fields/login-form-fields.component.mjs +5 -8
  62. package/esm2022/lib/login/login.module.mjs +5 -29
  63. package/esm2022/lib/login-history-for-user/login-history-for-user.component.mjs +5 -6
  64. package/esm2022/lib/login-history-for-user/login-history-for-user.module.mjs +8 -28
  65. package/esm2022/lib/material.module.mjs +7 -3
  66. package/esm2022/lib/note/comment-form/comment-form.component.mjs +4 -8
  67. package/esm2022/lib/note/note-comment-list/note-comment-list.component.mjs +3 -4
  68. package/esm2022/lib/note/note-list/note-list.component.mjs +17 -18
  69. package/esm2022/lib/note/note.module.mjs +3 -7
  70. package/esm2022/lib/number-input-button/number-input-button/number-input-button.component.mjs +7 -7
  71. package/esm2022/lib/number-input-button/number-input-button.module.mjs +5 -13
  72. package/esm2022/lib/number-selector/number-selector.component.mjs +4 -6
  73. package/esm2022/lib/pdf-button/pdf-button.component.mjs +3 -3
  74. package/esm2022/lib/pdf-button/pdf-button.module.mjs +5 -13
  75. package/esm2022/lib/phone-number-selector/phone-number-selector.component.mjs +4 -4
  76. package/esm2022/lib/profile/profile-edit.component.mjs +1 -1
  77. package/esm2022/lib/profile/profile.module.mjs +5 -13
  78. package/esm2022/lib/read-more/read-more.module.mjs +3 -7
  79. package/esm2022/lib/reset-password/reset-password.component.mjs +4 -4
  80. package/esm2022/lib/reset-password/reset-password.module.mjs +5 -24
  81. package/esm2022/lib/restrictors/restrictor-level-selector/restrictor-level-selector/restrictor-level-selector.component.mjs +3 -3
  82. package/esm2022/lib/restrictors/restrictor-level-selector/restrictor-level-selector.module.mjs +5 -17
  83. package/esm2022/lib/restrictors/restrictor-status-selector/restrictor-status-selector/restrictor-status-selector.component.mjs +3 -3
  84. package/esm2022/lib/restrictors/restrictor-status-selector/restrictor-status-selector.module.mjs +5 -13
  85. package/esm2022/lib/restrictors/restrictor-type-selector/restrictor-type-selector/restrictor-type-selector.component.mjs +4 -4
  86. package/esm2022/lib/restrictors/restrictor-type-selector/restrictor-type-selector.module.mjs +5 -17
  87. package/esm2022/lib/restrictors/restrictors-form/restrictors-form.component.mjs +9 -10
  88. package/esm2022/lib/restrictors/restrictors-form-page/restrictors-form-page.component.mjs +6 -7
  89. package/esm2022/lib/restrictors/restrictors-list-page/restrictors-list-page.component.mjs +12 -13
  90. package/esm2022/lib/restrictors/restrictors.module.mjs +8 -60
  91. package/esm2022/lib/role/permission/permission.module.mjs +8 -23
  92. package/esm2022/lib/role/permission/permissions-management.component.mjs +6 -6
  93. package/esm2022/lib/role/role-form.component.mjs +1 -1
  94. package/esm2022/lib/role/role-list/role-list.component.mjs +8 -8
  95. package/esm2022/lib/role/role-view/role-view.module.mjs +8 -27
  96. package/esm2022/lib/role/role.module.mjs +8 -30
  97. package/esm2022/lib/searchable-selector/searchable-selector.component.mjs +6 -6
  98. package/esm2022/lib/searchable-selector/searchable-selector.module.mjs +1 -5
  99. package/esm2022/lib/shared.module.mjs +27 -3
  100. package/esm2022/lib/signup/signup.component.mjs +1 -1
  101. package/esm2022/lib/signup/signup.module.mjs +5 -13
  102. package/esm2022/lib/subscription/subscription-form/subscription-form.component.mjs +3 -4
  103. package/esm2022/lib/subscription/subscription-form/subscription-form.module.mjs +8 -24
  104. package/esm2022/lib/subscription/subscription-listing/subscription-listing.component.mjs +18 -19
  105. package/esm2022/lib/subscription/subscription-listing/subscription-listing.module.mjs +8 -35
  106. package/esm2022/lib/subscription/subscription-package-listing/subscription-package-listing.component.mjs +15 -16
  107. package/esm2022/lib/subscription/subscription-package-listing/subscription-package-listing.module.mjs +8 -32
  108. package/esm2022/lib/subscription/subscription-package-view/subscription-package-view.component.mjs +5 -6
  109. package/esm2022/lib/subscription/subscription-package-view/subscription-package-view.module.mjs +8 -16
  110. package/esm2022/lib/tag/techlify-tagger-tag-form/techlify-tagger-tag-form.component.mjs +12 -26
  111. package/esm2022/lib/tag/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.mjs +4 -4
  112. package/esm2022/lib/tag/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.mjs +5 -21
  113. package/esm2022/lib/tag/techlify-tagger-tag-list/techlify-tagger-tag-list.component.mjs +19 -37
  114. package/esm2022/lib/tag/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.mjs +1 -1
  115. package/esm2022/lib/tag/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.mjs +5 -29
  116. package/esm2022/lib/techlify-app-selector/techlify-app-selector.component.mjs +5 -6
  117. package/esm2022/lib/techlify-app-selector/techlify-app-selector.module.mjs +6 -13
  118. package/esm2022/lib/techlify-auto-complete-select/techlify-auto-complete-select.component.mjs +11 -22
  119. package/esm2022/lib/techlify-feature/on-off-switch/on-off-switch.component.mjs +1 -1
  120. package/esm2022/lib/techlify-feature/techlify-feature-listing.component.mjs +9 -10
  121. package/esm2022/lib/techlify-feature/techlify-feature.module.mjs +7 -30
  122. package/esm2022/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-for-user.component.mjs +3 -4
  123. package/esm2022/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-for-user.module.mjs +5 -17
  124. package/esm2022/lib/techlify-update/techlify-update-form/techlify-update-form.component.mjs +4 -5
  125. package/esm2022/lib/techlify-update/techlify-update-form/techlify-update-form.module.mjs +5 -17
  126. package/esm2022/lib/techlify-update/techlify-update-history/techlify-update-history.component.mjs +10 -11
  127. package/esm2022/lib/techlify-update/techlify-update-history/techlify-update-history.module.mjs +5 -29
  128. package/esm2022/lib/techlify-update/techlify-update.module.mjs +7 -31
  129. package/esm2022/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.mjs +10 -11
  130. package/esm2022/lib/techlify-update/techlify-updates-teaser/techlify-updates-teaser.component.mjs +7 -8
  131. package/esm2022/lib/techlify-update/techlify-updates-teaser/techlify-updates-teaser.module.mjs +5 -17
  132. package/esm2022/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.mjs +3 -4
  133. package/esm2022/lib/techlify-update/update-notifier/update-notifier.module.mjs +8 -20
  134. package/esm2022/lib/techlify-update/update-view/update-view.component.mjs +3 -4
  135. package/esm2022/lib/techlify-update/update-view/update-view.module.mjs +5 -13
  136. package/esm2022/lib/techlify-view/my-techlify-view-listing/my-techlify-view-listing.component.mjs +7 -9
  137. package/esm2022/lib/techlify-view/my-techlify-view-listing/my-techlify-view-listing.module.mjs +7 -15
  138. package/esm2022/lib/techlify-view/techlify-view-form/techlify-view-form.component.mjs +3 -4
  139. package/esm2022/lib/techlify-view/techlify-view-form/techlify-view-form.module.mjs +5 -24
  140. package/esm2022/lib/timeline-activity/timeline-activity-button/timeline-activity-button.module.mjs +6 -18
  141. package/esm2022/lib/timeline-activity/timeline-activity-list/timeline-activity-list.component.mjs +4 -5
  142. package/esm2022/lib/timeline-activity/timeline-activity-list/timeline-activity-list.module.mjs +8 -32
  143. package/esm2022/lib/timeline-filter/timeline-filter.component.mjs +10 -11
  144. package/esm2022/lib/timeline-filter/timeline-filter.module.mjs +1 -5
  145. package/esm2022/lib/user/app-admin-user-view/app-admin-user-view.module.mjs +1 -5
  146. package/esm2022/lib/user/user-enable-button-component/user-enable-button.module.mjs +5 -17
  147. package/esm2022/lib/user/user-explore.component.mjs +3 -4
  148. package/esm2022/lib/user/user-form/user-form.component.mjs +11 -15
  149. package/esm2022/lib/user/user-list/user-list.component.mjs +10 -21
  150. package/esm2022/lib/user/user-sessions/user-sessions/user-sessions.module.mjs +5 -13
  151. package/esm2022/lib/user/user.module.mjs +1 -9
  152. package/esm2022/lib/user-client-enable-disable-button/user-client-enable-disable-button.module.mjs +5 -13
  153. package/esm2022/lib/user-clients-list/user-clients-list.module.mjs +5 -13
  154. package/esm2022/lib/user-selector/user-selector.component.mjs +3 -3
  155. package/esm2022/lib/user-selector/user-selector.module.mjs +5 -17
  156. package/esm2022/lib/utility/utility.module.mjs +5 -9
  157. package/fesm2022/ngx-techlify-core.mjs +993 -1795
  158. package/fesm2022/ngx-techlify-core.mjs.map +1 -1
  159. package/lib/access-control-config/access-control-config.module.d.ts +3 -11
  160. package/lib/app-admin/admin-role/admin-role-list/admin-role-list.module.d.ts +3 -11
  161. package/lib/app-admin/admin-role/admin-role-permission-form/admin-role-permission-form.module.d.ts +2 -10
  162. package/lib/audit-log/audit-log-for-model/audit-log-for-model.module.d.ts +2 -4
  163. package/lib/audit-log/audit-log-list/audit-log-list.module.d.ts +3 -9
  164. package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.d.ts +2 -6
  165. package/lib/audit-log/audit-log-view/audit-log-view.module.d.ts +2 -3
  166. package/lib/audit-log/audit-log-view-model/audit-log-view-model.module.d.ts +2 -3
  167. package/lib/base-model/techlify-list/techlify-list.component.d.ts +20 -0
  168. package/lib/change-password/change-password.module.d.ts +3 -7
  169. package/lib/column-selector/column-selector.module.d.ts +2 -12
  170. package/lib/data-table/data-table.module.d.ts +2 -5
  171. package/lib/document-viewer/document-viewer.module.d.ts +3 -4
  172. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.d.ts +3 -6
  173. package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.d.ts +4 -8
  174. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.d.ts +4 -8
  175. package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.d.ts +4 -8
  176. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.d.ts +5 -9
  177. package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.d.ts +3 -7
  178. package/lib/entity-files/entity-file-list.module.d.ts +5 -8
  179. package/lib/entity-files/entity-file.service.d.ts +1 -1
  180. package/lib/file-dragdrop-uploader/file-dragdrop-uploader/file-dragdrop-uploader.component.d.ts +3 -1
  181. package/lib/file-dragdrop-uploader/file-dragdrop-uploader.module.d.ts +2 -6
  182. package/lib/file-dropper/file-dropper.module.d.ts +2 -3
  183. package/lib/forgot-password/forgot-password.module.d.ts +3 -5
  184. package/lib/form-configuration/form-configuration-field-form/form-configuration-field-form.module.d.ts +3 -6
  185. package/lib/import-csv/import-csv.module.d.ts +3 -9
  186. package/lib/ip-address-selector/ip-address-selector.module.d.ts +2 -8
  187. package/lib/locked-date/locked-date.module.d.ts +2 -9
  188. package/lib/login/login.module.d.ts +4 -10
  189. package/lib/login-history-for-user/login-history-for-user.module.d.ts +2 -7
  190. package/lib/material.module.d.ts +25 -24
  191. package/lib/note/note.module.d.ts +3 -4
  192. package/lib/number-input-button/number-input-button.module.d.ts +2 -4
  193. package/lib/pdf-button/pdf-button.module.d.ts +2 -4
  194. package/lib/profile/profile.module.d.ts +3 -5
  195. package/lib/read-more/read-more.module.d.ts +1 -2
  196. package/lib/reset-password/reset-password.module.d.ts +4 -8
  197. package/lib/restrictors/restrictor-level-selector/restrictor-level-selector.module.d.ts +2 -5
  198. package/lib/restrictors/restrictor-status-selector/restrictor-status-selector.module.d.ts +2 -4
  199. package/lib/restrictors/restrictor-type-selector/restrictor-type-selector.module.d.ts +2 -5
  200. package/lib/restrictors/restrictors.module.d.ts +6 -19
  201. package/lib/role/permission/permission.module.d.ts +2 -5
  202. package/lib/role/role-view/role-view.module.d.ts +2 -6
  203. package/lib/role/role.module.d.ts +2 -7
  204. package/lib/searchable-selector/searchable-selector.module.d.ts +3 -4
  205. package/lib/shared.module.d.ts +14 -8
  206. package/lib/signup/signup.module.d.ts +3 -5
  207. package/lib/subscription/subscription-form/subscription-form.module.d.ts +2 -6
  208. package/lib/subscription/subscription-listing/subscription-listing.module.d.ts +3 -9
  209. package/lib/subscription/subscription-package-listing/subscription-package-listing.module.d.ts +2 -8
  210. package/lib/subscription/subscription-package-view/subscription-package-view.module.d.ts +2 -4
  211. package/lib/tag/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.d.ts +2 -6
  212. package/lib/tag/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.d.ts +2 -8
  213. package/lib/techlify-app-selector/techlify-app-selector.module.d.ts +4 -5
  214. package/lib/techlify-feature/techlify-feature.module.d.ts +4 -9
  215. package/lib/techlify-notifications/techlify-notification-for-user/techlify-notification-for-user.module.d.ts +3 -6
  216. package/lib/techlify-update/techlify-update-form/techlify-update-form.module.d.ts +3 -6
  217. package/lib/techlify-update/techlify-update-history/techlify-update-history.module.d.ts +3 -9
  218. package/lib/techlify-update/techlify-update.module.d.ts +4 -10
  219. package/lib/techlify-update/techlify-updates-teaser/techlify-updates-teaser.module.d.ts +2 -5
  220. package/lib/techlify-update/update-notifier/update-notifier.module.d.ts +3 -6
  221. package/lib/techlify-update/update-view/update-view.module.d.ts +2 -4
  222. package/lib/techlify-view/my-techlify-view-listing/my-techlify-view-listing.module.d.ts +2 -4
  223. package/lib/techlify-view/techlify-view-form/techlify-view-form.module.d.ts +2 -6
  224. package/lib/timeline-activity/timeline-activity-button/timeline-activity-button.module.d.ts +3 -6
  225. package/lib/timeline-activity/timeline-activity-list/timeline-activity-list.module.d.ts +2 -8
  226. package/lib/timeline-filter/timeline-filter.module.d.ts +10 -11
  227. package/lib/user/app-admin-user-view/app-admin-user-view.module.d.ts +6 -7
  228. package/lib/user/user-enable-button-component/user-enable-button.module.d.ts +2 -5
  229. package/lib/user/user-sessions/user-sessions/user-sessions.module.d.ts +2 -4
  230. package/lib/user/user.module.d.ts +7 -9
  231. package/lib/user-client-enable-disable-button/user-client-enable-disable-button.module.d.ts +2 -4
  232. package/lib/user-clients-list/user-clients-list.module.d.ts +3 -5
  233. package/lib/user-selector/user-selector.module.d.ts +2 -4
  234. package/lib/utility/utility.module.d.ts +2 -3
  235. package/package.json +2 -1
@@ -4,16 +4,14 @@ import { Component, Input, Output, EventEmitter, ViewChild } from "@angular/core
4
4
  import { MatSort } from '@angular/material/sort';
5
5
  import { UntilDestroy, untilDestroyed } from "@ngneat/until-destroy";
6
6
  import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/flex-layout/flex";
8
- import * as i2 from "@angular/flex-layout/extended";
9
- import * as i3 from "@angular/common";
10
- import * as i4 from "ngx-infinite-scroll";
11
- import * as i5 from "@angular/material/button";
12
- import * as i6 from "@angular/material/checkbox";
13
- import * as i7 from "@angular/material/icon";
14
- import * as i8 from "@angular/material/menu";
15
- import * as i9 from "@angular/material/sort";
16
- import * as i10 from "@angular/material/table";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "ngx-infinite-scroll";
9
+ import * as i3 from "@angular/material/button";
10
+ import * as i4 from "@angular/material/checkbox";
11
+ import * as i5 from "@angular/material/icon";
12
+ import * as i6 from "@angular/material/menu";
13
+ import * as i7 from "@angular/material/sort";
14
+ import * as i8 from "@angular/material/table";
17
15
  let DataTableComponent = class DataTableComponent {
18
16
  static { DataTableComponent_1 = this; }
19
17
  static { this.nextId = 0; }
@@ -171,7 +169,7 @@ let DataTableComponent = class DataTableComponent {
171
169
  //Until Destroy uses it.
172
170
  }
173
171
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DataTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
174
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DataTableComponent, selector: "app-data-table", inputs: { data: "data", config: "config", selection: "selection", elementId: "elementId" }, outputs: { action: "action", selctionChange: "selctionChange", rowClick: "rowClick", tableScroll: "tableScroll", sortChanged: "sortChanged" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div fxLayout=\"column\" [ngClass]=\"{\n 'mat-elevation-z1': !config.disableElevation\n }\" class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"1\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\" [ngStyle]=\"config.style\">\n <table mat-table [dataSource]=\"data\" matSort [id]=\"elementId\">\n <!-- Checkbox Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef style=\"width:60px\">\n <mat-checkbox *ngIf=\"selection\" (change)=\"$event ? masterToggle() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let row\" style=\"width:60px\">\n <mat-checkbox *ngIf=\"selection\" (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(row) : null\" [checked]=\"selection.isSelected(row)\">\n </mat-checkbox>\n </td>\n </ng-container>\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let index = index\">\n {{ (index + 1) }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef class=\"action-width d-print-none\">\n {{ config.customActionLabel }}\n </th>\n\n <td mat-cell *matCellDef=\"let element; let index = index\" class=\"d-print-none\">\n <div>\n <button *ngIf=\"\n config.actionsConfig.download && element[config.downloadLink]\n \" type=\"button\" mat-icon-button (click)=\"downloadClicked($event, element)\">\n <mat-icon>vertical_align_bottom</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.edit\" [disabled]=\"!this.checkEdit(element)\" type=\"button\"\n mat-icon-button (click)=\"editClicked($event, element)\">\n <mat-icon>edit</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.print\" [disabled]=\"!this.checkPrint(element)\" type=\"button\"\n mat-icon-button (click)=\"printClicked($event,element)\">\n <mat-icon>print</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.view\" [disabled]=\"!this.checkView(element)\" type=\"button\"\n mat-icon-button (click)=\"viewClicked($event, element)\">\n <mat-icon>description</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.deactivate\" type=\"button\" mat-icon-button\n (click)=\"deactivateClicked($event, element)\">\n <mat-icon>delete</mat-icon>\n </button>\n\n <button #menuTrigger=\"matMenuTrigger\" *ngIf=\"\n config.actionsConfig.actionsMenu &&\n this.checkActions(element) &&\n config.actionsConfig.actionsMenu.length > 0\n \" type=\"button\" mat-icon-button [matMenuTriggerFor]=\"actionsMenu\"\n (click)=\"actionMenuTriggerClick($event, menuTrigger)\">\n <mat-icon>more_vert</mat-icon>\n </button>\n </div>\n\n <mat-menu #actionsMenu=\"matMenu\">\n <div *ngFor=\"let item of config.actionsConfig.actionsMenu\">\n <button *ngIf=\"this.checkActionButton(element, item.value)\" mat-menu-item\n (click)=\"actionMenuClick($event, element, item.value)\">\n <span>{{ item.name }}</span>\n </button>\n </div>\n </mat-menu>\n </td>\n </ng-container>\n\n <!-- Actual Columns -->\n <ng-container matColumnDef=\"{{ column.value }}\" *ngFor=\"let column of config.columnsConfig\">\n <ng-container *ngIf=\"column?.sort; else noSort\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n {{ column.title }}\n </th>\n </ng-container>\n <ng-template #noSort>\n <th mat-header-cell *matHeaderCellDef>\n {{ column.title }}\n </th>\n </ng-template>\n <ng-container *ngIf=\"column.dateField; else currencyField\">\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-truncate\" appToolTip>\n {{ getValue(element, column.value) | date:column.format? column.format: 'mediumDate' }}\n </div>\n </td>\n </ng-container>\n\n <ng-template #currencyField>\n <div *ngIf=\"column.currencyField; else normalField\">\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-truncate\" appToolTip>\n {{ getValue(element, column.value) | currency: \"$\":'symbol' : '1.0-0' }}\n </div>\n </td>\n </div>\n </ng-template>\n\n <ng-template #normalField>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-truncate\" appToolTip>\n {{ getValue(element, column.value) }}\n </div>\n </td>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"config.stickyHeader; else normalHeader\">\n <tr class=\"font-weight-bold\" mat-header-row *matHeaderRowDef=\"config.displayedColumns; sticky:true\"></tr>\n </ng-container>\n <ng-template #normalHeader>\n <tr class=\"font-weight-bold\" mat-header-row *matHeaderRowDef=\"config.displayedColumns;\">\n </tr>\n </ng-template>\n\n <div *ngIf=\"!config.enableRowClick\">\n <tr mat-row *matRowDef=\"let row; columns: config.displayedColumns\"></tr>\n </div>\n\n <div *ngIf=\"config.enableRowClick\">\n <tr mat-row *matRowDef=\"let row; columns: config.displayedColumns\" (click)=\"rowClicked($event, row)\"\n class=\"hoverable row-hover\"></tr>\n </div>\n </table>\n</div>", styles: ["table{width:100%}.mat-table{background:inherit}.mat-column-select{overflow:initial}td.mat-cell,td.mat-footer-cell,th.mat-header-cell{padding:0 2px}.action-width{min-width:175px;width:175px!important}.noOverFlow{overflow-x:auto;overflow-y:hidden}.scroll-container{max-height:400px;overflow:auto}.mat-header-row{position:sticky;top:0;background-color:inherit}tr.row-hover:hover{background-color:#dcdcdc}td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type,th.mat-header-cell:first-of-type{padding-left:24px!important}\n"], dependencies: [{ kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i2.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i9.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i9.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i10.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i10.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i10.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i10.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i10.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i10.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i10.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i10.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i10.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i10.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "pipe", type: i3.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i3.DatePipe, name: "date" }] }); }
172
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DataTableComponent, selector: "app-data-table", inputs: { data: "data", config: "config", selection: "selection", elementId: "elementId" }, outputs: { action: "action", selctionChange: "selctionChange", rowClick: "rowClick", tableScroll: "tableScroll", sortChanged: "sortChanged" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"{\n 'mat-elevation-z1': !config.disableElevation\n }\" class=\"scroll-container d-flex flex-column\" infiniteScroll [infiniteScrollDistance]=\"1\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\" [ngStyle]=\"config.style\">\n <table mat-table [dataSource]=\"data\" matSort [id]=\"elementId\">\n <!-- Checkbox Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef style=\"width:60px\">\n <mat-checkbox *ngIf=\"selection\" (change)=\"$event ? masterToggle() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let row\" style=\"width:60px\">\n <mat-checkbox *ngIf=\"selection\" (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(row) : null\" [checked]=\"selection.isSelected(row)\">\n </mat-checkbox>\n </td>\n </ng-container>\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let index = index\">\n {{ (index + 1) }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef class=\"action-width d-print-none\">\n {{ config.customActionLabel }}\n </th>\n\n <td mat-cell *matCellDef=\"let element; let index = index\" class=\"d-print-none\">\n <div>\n <button *ngIf=\"\n config.actionsConfig.download && element[config.downloadLink]\n \" type=\"button\" mat-icon-button (click)=\"downloadClicked($event, element)\">\n <mat-icon>vertical_align_bottom</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.edit\" [disabled]=\"!this.checkEdit(element)\" type=\"button\"\n mat-icon-button (click)=\"editClicked($event, element)\">\n <mat-icon>edit</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.print\" [disabled]=\"!this.checkPrint(element)\" type=\"button\"\n mat-icon-button (click)=\"printClicked($event,element)\">\n <mat-icon>print</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.view\" [disabled]=\"!this.checkView(element)\" type=\"button\"\n mat-icon-button (click)=\"viewClicked($event, element)\">\n <mat-icon>description</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.deactivate\" type=\"button\" mat-icon-button\n (click)=\"deactivateClicked($event, element)\">\n <mat-icon>delete</mat-icon>\n </button>\n\n <button #menuTrigger=\"matMenuTrigger\" *ngIf=\"\n config.actionsConfig.actionsMenu &&\n this.checkActions(element) &&\n config.actionsConfig.actionsMenu.length > 0\n \" type=\"button\" mat-icon-button [matMenuTriggerFor]=\"actionsMenu\"\n (click)=\"actionMenuTriggerClick($event, menuTrigger)\">\n <mat-icon>more_vert</mat-icon>\n </button>\n </div>\n\n <mat-menu #actionsMenu=\"matMenu\">\n <div *ngFor=\"let item of config.actionsConfig.actionsMenu\">\n <button *ngIf=\"this.checkActionButton(element, item.value)\" mat-menu-item\n (click)=\"actionMenuClick($event, element, item.value)\">\n <span>{{ item.name }}</span>\n </button>\n </div>\n </mat-menu>\n </td>\n </ng-container>\n\n <!-- Actual Columns -->\n <ng-container matColumnDef=\"{{ column.value }}\" *ngFor=\"let column of config.columnsConfig\">\n <ng-container *ngIf=\"column?.sort; else noSort\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n {{ column.title }}\n </th>\n </ng-container>\n <ng-template #noSort>\n <th mat-header-cell *matHeaderCellDef>\n {{ column.title }}\n </th>\n </ng-template>\n <ng-container *ngIf=\"column.dateField; else currencyField\">\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-truncate\" appToolTip>\n {{ getValue(element, column.value) | date:column.format? column.format: 'mediumDate' }}\n </div>\n </td>\n </ng-container>\n\n <ng-template #currencyField>\n <div *ngIf=\"column.currencyField; else normalField\">\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-truncate\" appToolTip>\n {{ getValue(element, column.value) | currency: \"$\":'symbol' : '1.0-0' }}\n </div>\n </td>\n </div>\n </ng-template>\n\n <ng-template #normalField>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-truncate\" appToolTip>\n {{ getValue(element, column.value) }}\n </div>\n </td>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"config.stickyHeader; else normalHeader\">\n <tr class=\"font-weight-bold\" mat-header-row *matHeaderRowDef=\"config.displayedColumns; sticky:true\"></tr>\n </ng-container>\n <ng-template #normalHeader>\n <tr class=\"font-weight-bold\" mat-header-row *matHeaderRowDef=\"config.displayedColumns;\">\n </tr>\n </ng-template>\n\n <div *ngIf=\"!config.enableRowClick\">\n <tr mat-row *matRowDef=\"let row; columns: config.displayedColumns\"></tr>\n </div>\n\n <div *ngIf=\"config.enableRowClick\">\n <tr mat-row *matRowDef=\"let row; columns: config.displayedColumns\" (click)=\"rowClicked($event, row)\"\n class=\"hoverable row-hover\"></tr>\n </div>\n </table>\n</div>", styles: ["table{width:100%}.mat-table{background:inherit}.mat-column-select{overflow:initial}td.mat-cell,td.mat-footer-cell,th.mat-header-cell{padding:0 2px}.action-width{min-width:175px;width:175px!important}.noOverFlow{overflow-x:auto;overflow-y:hidden}.scroll-container{max-height:400px;overflow:auto}.mat-header-row{position:sticky;top:0;background-color:inherit}tr.row-hover:hover{background-color:#dcdcdc}td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type,th.mat-header-cell:first-of-type{padding-left:24px!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i7.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i7.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i8.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i8.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i8.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i8.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i8.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i8.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i8.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i8.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i8.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i8.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "pipe", type: i1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i1.DatePipe, name: "date" }] }); }
175
173
  };
176
174
  DataTableComponent = DataTableComponent_1 = __decorate([
177
175
  UntilDestroy()
@@ -179,7 +177,7 @@ DataTableComponent = DataTableComponent_1 = __decorate([
179
177
  export { DataTableComponent };
180
178
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DataTableComponent, decorators: [{
181
179
  type: Component,
182
- args: [{ selector: "app-data-table", template: "<div fxLayout=\"column\" [ngClass]=\"{\n 'mat-elevation-z1': !config.disableElevation\n }\" class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"1\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\" [ngStyle]=\"config.style\">\n <table mat-table [dataSource]=\"data\" matSort [id]=\"elementId\">\n <!-- Checkbox Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef style=\"width:60px\">\n <mat-checkbox *ngIf=\"selection\" (change)=\"$event ? masterToggle() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let row\" style=\"width:60px\">\n <mat-checkbox *ngIf=\"selection\" (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(row) : null\" [checked]=\"selection.isSelected(row)\">\n </mat-checkbox>\n </td>\n </ng-container>\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let index = index\">\n {{ (index + 1) }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef class=\"action-width d-print-none\">\n {{ config.customActionLabel }}\n </th>\n\n <td mat-cell *matCellDef=\"let element; let index = index\" class=\"d-print-none\">\n <div>\n <button *ngIf=\"\n config.actionsConfig.download && element[config.downloadLink]\n \" type=\"button\" mat-icon-button (click)=\"downloadClicked($event, element)\">\n <mat-icon>vertical_align_bottom</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.edit\" [disabled]=\"!this.checkEdit(element)\" type=\"button\"\n mat-icon-button (click)=\"editClicked($event, element)\">\n <mat-icon>edit</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.print\" [disabled]=\"!this.checkPrint(element)\" type=\"button\"\n mat-icon-button (click)=\"printClicked($event,element)\">\n <mat-icon>print</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.view\" [disabled]=\"!this.checkView(element)\" type=\"button\"\n mat-icon-button (click)=\"viewClicked($event, element)\">\n <mat-icon>description</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.deactivate\" type=\"button\" mat-icon-button\n (click)=\"deactivateClicked($event, element)\">\n <mat-icon>delete</mat-icon>\n </button>\n\n <button #menuTrigger=\"matMenuTrigger\" *ngIf=\"\n config.actionsConfig.actionsMenu &&\n this.checkActions(element) &&\n config.actionsConfig.actionsMenu.length > 0\n \" type=\"button\" mat-icon-button [matMenuTriggerFor]=\"actionsMenu\"\n (click)=\"actionMenuTriggerClick($event, menuTrigger)\">\n <mat-icon>more_vert</mat-icon>\n </button>\n </div>\n\n <mat-menu #actionsMenu=\"matMenu\">\n <div *ngFor=\"let item of config.actionsConfig.actionsMenu\">\n <button *ngIf=\"this.checkActionButton(element, item.value)\" mat-menu-item\n (click)=\"actionMenuClick($event, element, item.value)\">\n <span>{{ item.name }}</span>\n </button>\n </div>\n </mat-menu>\n </td>\n </ng-container>\n\n <!-- Actual Columns -->\n <ng-container matColumnDef=\"{{ column.value }}\" *ngFor=\"let column of config.columnsConfig\">\n <ng-container *ngIf=\"column?.sort; else noSort\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n {{ column.title }}\n </th>\n </ng-container>\n <ng-template #noSort>\n <th mat-header-cell *matHeaderCellDef>\n {{ column.title }}\n </th>\n </ng-template>\n <ng-container *ngIf=\"column.dateField; else currencyField\">\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-truncate\" appToolTip>\n {{ getValue(element, column.value) | date:column.format? column.format: 'mediumDate' }}\n </div>\n </td>\n </ng-container>\n\n <ng-template #currencyField>\n <div *ngIf=\"column.currencyField; else normalField\">\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-truncate\" appToolTip>\n {{ getValue(element, column.value) | currency: \"$\":'symbol' : '1.0-0' }}\n </div>\n </td>\n </div>\n </ng-template>\n\n <ng-template #normalField>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-truncate\" appToolTip>\n {{ getValue(element, column.value) }}\n </div>\n </td>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"config.stickyHeader; else normalHeader\">\n <tr class=\"font-weight-bold\" mat-header-row *matHeaderRowDef=\"config.displayedColumns; sticky:true\"></tr>\n </ng-container>\n <ng-template #normalHeader>\n <tr class=\"font-weight-bold\" mat-header-row *matHeaderRowDef=\"config.displayedColumns;\">\n </tr>\n </ng-template>\n\n <div *ngIf=\"!config.enableRowClick\">\n <tr mat-row *matRowDef=\"let row; columns: config.displayedColumns\"></tr>\n </div>\n\n <div *ngIf=\"config.enableRowClick\">\n <tr mat-row *matRowDef=\"let row; columns: config.displayedColumns\" (click)=\"rowClicked($event, row)\"\n class=\"hoverable row-hover\"></tr>\n </div>\n </table>\n</div>", styles: ["table{width:100%}.mat-table{background:inherit}.mat-column-select{overflow:initial}td.mat-cell,td.mat-footer-cell,th.mat-header-cell{padding:0 2px}.action-width{min-width:175px;width:175px!important}.noOverFlow{overflow-x:auto;overflow-y:hidden}.scroll-container{max-height:400px;overflow:auto}.mat-header-row{position:sticky;top:0;background-color:inherit}tr.row-hover:hover{background-color:#dcdcdc}td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type,th.mat-header-cell:first-of-type{padding-left:24px!important}\n"] }]
180
+ args: [{ selector: "app-data-table", template: "<div [ngClass]=\"{\n 'mat-elevation-z1': !config.disableElevation\n }\" class=\"scroll-container d-flex flex-column\" infiniteScroll [infiniteScrollDistance]=\"1\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\" [ngStyle]=\"config.style\">\n <table mat-table [dataSource]=\"data\" matSort [id]=\"elementId\">\n <!-- Checkbox Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef style=\"width:60px\">\n <mat-checkbox *ngIf=\"selection\" (change)=\"$event ? masterToggle() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let row\" style=\"width:60px\">\n <mat-checkbox *ngIf=\"selection\" (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(row) : null\" [checked]=\"selection.isSelected(row)\">\n </mat-checkbox>\n </td>\n </ng-container>\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let index = index\">\n {{ (index + 1) }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef class=\"action-width d-print-none\">\n {{ config.customActionLabel }}\n </th>\n\n <td mat-cell *matCellDef=\"let element; let index = index\" class=\"d-print-none\">\n <div>\n <button *ngIf=\"\n config.actionsConfig.download && element[config.downloadLink]\n \" type=\"button\" mat-icon-button (click)=\"downloadClicked($event, element)\">\n <mat-icon>vertical_align_bottom</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.edit\" [disabled]=\"!this.checkEdit(element)\" type=\"button\"\n mat-icon-button (click)=\"editClicked($event, element)\">\n <mat-icon>edit</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.print\" [disabled]=\"!this.checkPrint(element)\" type=\"button\"\n mat-icon-button (click)=\"printClicked($event,element)\">\n <mat-icon>print</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.view\" [disabled]=\"!this.checkView(element)\" type=\"button\"\n mat-icon-button (click)=\"viewClicked($event, element)\">\n <mat-icon>description</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.deactivate\" type=\"button\" mat-icon-button\n (click)=\"deactivateClicked($event, element)\">\n <mat-icon>delete</mat-icon>\n </button>\n\n <button #menuTrigger=\"matMenuTrigger\" *ngIf=\"\n config.actionsConfig.actionsMenu &&\n this.checkActions(element) &&\n config.actionsConfig.actionsMenu.length > 0\n \" type=\"button\" mat-icon-button [matMenuTriggerFor]=\"actionsMenu\"\n (click)=\"actionMenuTriggerClick($event, menuTrigger)\">\n <mat-icon>more_vert</mat-icon>\n </button>\n </div>\n\n <mat-menu #actionsMenu=\"matMenu\">\n <div *ngFor=\"let item of config.actionsConfig.actionsMenu\">\n <button *ngIf=\"this.checkActionButton(element, item.value)\" mat-menu-item\n (click)=\"actionMenuClick($event, element, item.value)\">\n <span>{{ item.name }}</span>\n </button>\n </div>\n </mat-menu>\n </td>\n </ng-container>\n\n <!-- Actual Columns -->\n <ng-container matColumnDef=\"{{ column.value }}\" *ngFor=\"let column of config.columnsConfig\">\n <ng-container *ngIf=\"column?.sort; else noSort\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n {{ column.title }}\n </th>\n </ng-container>\n <ng-template #noSort>\n <th mat-header-cell *matHeaderCellDef>\n {{ column.title }}\n </th>\n </ng-template>\n <ng-container *ngIf=\"column.dateField; else currencyField\">\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-truncate\" appToolTip>\n {{ getValue(element, column.value) | date:column.format? column.format: 'mediumDate' }}\n </div>\n </td>\n </ng-container>\n\n <ng-template #currencyField>\n <div *ngIf=\"column.currencyField; else normalField\">\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-truncate\" appToolTip>\n {{ getValue(element, column.value) | currency: \"$\":'symbol' : '1.0-0' }}\n </div>\n </td>\n </div>\n </ng-template>\n\n <ng-template #normalField>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-truncate\" appToolTip>\n {{ getValue(element, column.value) }}\n </div>\n </td>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"config.stickyHeader; else normalHeader\">\n <tr class=\"font-weight-bold\" mat-header-row *matHeaderRowDef=\"config.displayedColumns; sticky:true\"></tr>\n </ng-container>\n <ng-template #normalHeader>\n <tr class=\"font-weight-bold\" mat-header-row *matHeaderRowDef=\"config.displayedColumns;\">\n </tr>\n </ng-template>\n\n <div *ngIf=\"!config.enableRowClick\">\n <tr mat-row *matRowDef=\"let row; columns: config.displayedColumns\"></tr>\n </div>\n\n <div *ngIf=\"config.enableRowClick\">\n <tr mat-row *matRowDef=\"let row; columns: config.displayedColumns\" (click)=\"rowClicked($event, row)\"\n class=\"hoverable row-hover\"></tr>\n </div>\n </table>\n</div>", styles: ["table{width:100%}.mat-table{background:inherit}.mat-column-select{overflow:initial}td.mat-cell,td.mat-footer-cell,th.mat-header-cell{padding:0 2px}.action-width{min-width:175px;width:175px!important}.noOverFlow{overflow-x:auto;overflow-y:hidden}.scroll-container{max-height:400px;overflow:auto}.mat-header-row{position:sticky;top:0;background-color:inherit}tr.row-hover:hover{background-color:#dcdcdc}td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type,th.mat-header-cell:first-of-type{padding-left:24px!important}\n"] }]
183
181
  }], ctorParameters: () => [], propDecorators: { data: [{
184
182
  type: Input
185
183
  }], config: [{
@@ -202,4 +200,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
202
200
  }], elementId: [{
203
201
  type: Input
204
202
  }] } });
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBSVosU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7Ozs7QUFROUQsSUFBTSxrQkFBa0IsR0FBeEIsTUFBTSxrQkFBa0I7O2FBdUJ0QixXQUFNLEdBQUcsQ0FBQyxBQUFKLENBQUs7SUFHbEI7UUFoQlUsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDNUIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3BDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzlCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFVbEMsY0FBUyxHQUFXLGNBQWMsb0JBQWtCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUV6RCxDQUFDO0lBRWpCLFFBQVEsS0FBSyxDQUFDO0lBRWQsNEJBQTRCO0lBQzVCLGVBQWU7UUFFYiwyQkFBMkI7UUFDM0IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FB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WUFDakIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU87WUFDVCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELFdBQVc7UUFDVCx3QkFBd0I7SUFDMUIsQ0FBQzsrR0F6TVUsa0JBQWtCO21HQUFsQixrQkFBa0IsdVVBcUJsQixPQUFPLG1GQzdDcEIseW9OQTBJTTs7QURsSE8sa0JBQWtCO0lBTjlCLFlBQVksRUFBRTtHQU1GLGtCQUFrQixDQTBNOUI7OzRGQTFNWSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZ0JBQWdCO3dEQVFqQixJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBTytCLElBQUk7c0JBQXpDLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHM0IsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgVmlld0NoaWxkXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2xsZWN0aW9uc1wiO1xuaW1wb3J0IHsgTWF0TWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IERhdGFUYWJsZSB9IGZyb20gJy4vZGF0YS10YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkIH0gZnJvbSBcIkBuZ25lYXQvdW50aWwtZGVzdHJveVwiO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhcHAtZGF0YS10YWJsZVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2RhdGEtdGFibGUuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2RhdGEtdGFibGUuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuXG4gIHRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyO1xuXG4gIEBJbnB1dCgpIGRhdGE6IGFueTtcblxuICBASW5wdXQoKSBjb25maWc6IERhdGFUYWJsZTtcblxuICBASW5wdXQoKSBzZWxlY3Rpb246IFNlbGVjdGlvbk1vZGVsPGFueT47XG5cbiAgQE91dHB1dCgpIGFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHNlbGN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSB0YWJsZVNjcm9sbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHBhZ2U6IG51bWJlcjtcbiAgbGFzdFBhZ2U6IG51bWJlcjtcbiAgcGVyUGFnZTogbnVtYmVyO1xuXG5cbiAgQFZpZXdDaGlsZChNYXRTb3J0LCB7IHN0YXRpYzogdHJ1ZSB9KSBzb3J0OiBNYXRTb3J0O1xuXG4gIHN0YXRpYyBuZXh0SWQgPSAwO1xuICBASW5wdXQoKSBlbGVtZW50SWQ6IHN0cmluZyA9IGBkYXRhLXRhYmxlLSR7RGF0YVRhYmxlQ29tcG9uZW50Lm5leHRJZCsrfWA7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpIHsgfVxuXG4gIC8qKkxpZmUgY3ljbGUgaG9vayBtZXRob2QgKi9cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuXG4gICAgLy8gRW1pdCBjaGFuZ2UgaW4gc2VsZWN0aW9uXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbi5jaGFuZ2VkLnBpcGUoKS5zdWJzY3JpYmUoKGNoYW5nZTogYW55KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCkge1xuICAgICAgICAgIHRoaXMuc2VsY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNvcnQpIHtcbiAgICAgIHRoaXMuc29ydC5zb3J0Q2hhbmdlLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLnNvcnRDaGFuZ2VkLmVtaXQodmFsdWUpO1xuICAgICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgZWxlbWVudHMgbWF0Y2hlcyB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MuICovXG4gIGlzQWxsU2VsZWN0ZWQoKSB7XG4gICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XG4gICAgY29uc3QgbnVtUm93cyA9IHRoaXMuZGF0YS5sZW5ndGg7XG4gICAgcmV0dXJuIG51bVNlbGVjdGVkID09PSBudW1Sb3dzO1xuICB9XG5cbiAgLyoqIFNlbGVjdHMgYWxsIHJvd3MgaWYgdGhleSBhcmUgbm90IGFsbCBzZWxlY3RlZDsgb3RoZXJ3aXNlIGNsZWFyIHNlbGVjdGlvbi4gKi9cbiAgbWFzdGVyVG9nZ2xlKCkge1xuICAgIHRoaXMuaXNBbGxTZWxlY3RlZCgpXG4gICAgICA/IHRoaXMuY2xlYXJTZWxlY3Rpb24oKVxuICAgICAgOiB0aGlzLmRhdGEuZm9yRWFjaChyb3cgPT4gdGhpcy5zZWxlY3Rpb24uc2VsZWN0KHJvdykpO1xuICB9XG5cbiAgLyoqY2xlYXIgc2VsZWN0aW9uKi9cbiAgY2xlYXJTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICB0aGlzLnNlbGN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbmZpZyhjaGFuZ2VzKTtcbiAgICBpZiAoY2hhbmdlcy5kYXRhICYmICFjaGFuZ2VzLmRhdGEuaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICAvLyBJZiBub3QgZmlyc3QgY2hhbmdlXG4gICAgICB0aGlzLmRhdGEgPSBjaGFuZ2VzLmRhdGEuY3VycmVudFZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGluaXRpYWxpemVDb25maWcoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmNvbmZpZyAmJiAhY2hhbmdlcy5jb25maWcuaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9IGNoYW5nZXMuY29uZmlnLmN1cnJlbnRWYWx1ZTtcbiAgICB9XG4gICAgdGhpcy5wYWdlID0gMTtcbiAgICB0aGlzLmxhc3RQYWdlID0gdGhpcy5wYWdlO1xuICAgIHRoaXMucGVyUGFnZSA9IHRoaXMuY29uZmlnLnBlclBhZ2UgfHwgNTA7XG4gIH1cblxuICBvblNjcm9sbCgpIHtcbiAgICBpZiAodGhpcy5wYWdlIDwgdGhpcy5sYXN0UGFnZSkge1xuICAgICAgdGhpcy5wYWdlICs9IDE7XG4gICAgICB0aGlzLnRhYmxlU2Nyb2xsLmVtaXQoeyBwYWdlOiB0aGlzLnBhZ2UsIGxhc3RQYWdlOiB0aGlzLmxhc3RQYWdlLCBwZXJQYWdlOiB0aGlzLnBlclBhZ2UgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqTWV0aG9kIGludm9rZXMgd2hlbiBlZGl0IGFjdGlvbiBpY29uIGlzIGNsaWNrZXMgKi9cbiAgZWRpdENsaWNrZWQoZXZlbnQ6IGFueSwgZWxlbWVudDogYW55KSB7XG4gICAgdGhpcy5hY3Rpb24uZW1pdCh7IGFjdGlvbjogXCJlZGl0XCIsIHZhbHVlOiBlbGVtZW50IH0pO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgLyoqTWV0aG9kIGludm9rZXMgd2hlbiB2aWV3IGFjdGlvbiBpY29uIGlzIGNsaWNrZXMgKi9cbiAgdmlld0NsaWNrZWQoZXZlbnQ6IGFueSwgZWxlbWVudDogYW55KSB7XG4gICAgdGhpcy5hY3Rpb24uZW1pdCh7IGFjdGlvbjogXCJ2aWV3XCIsIHZhbHVlOiBlbGVtZW50IH0pO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgLyoqTWV0aG9kIGludm9rZXMgd2hlbiBlZGl0IGFjdGlvbiBpY29uIGlzIGNsaWNrZXMgKi9cbiAgZGVhY3RpdmF0ZUNsaWNrZWQoZXZlbnQ6IGFueSwgZWxlbWVudDogYW55KSB7XG4gICAgdGhpcy5hY3Rpb24uZW1pdCh7IGFjdGlvbjogXCJkZWFjdGl2YXRlXCIsIHZhbHVlOiBlbGVtZW50IH0pO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgLyoqTWV0aG9kIGludm9rZXMgd2hlbiBkb3dubG9hZCBhY3Rpb24gaWNvbiBpcyBjbGlja2VzICovXG4gIGRvd25sb2FkQ2xpY2tlZChldmVudDogYW55LCBlbGVtZW50OiBhbnkpIHtcbiAgICB0aGlzLmFjdGlvbi5lbWl0KHsgYWN0aW9uOiBcImRvd25sb2FkXCIsIHZhbHVlOiBlbGVtZW50IH0pO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgLyoqTWV0aG9kIGludm9rZXMgd2hlbiBwcmludCBhY3Rpb24gaWNvbiBpcyBjbGlja2VzICovXG4gIHByaW50Q2xpY2tlZChldmVudDogYW55LCBlbGVtZW50OiBhbnkpIHtcblxuICAgIHRoaXMuYWN0aW9uLmVtaXQoeyBhY3Rpb246ICdwcmludCcsIHZhbHVlOiBlbGVtZW50IH0pO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gIH1cblxuICAvKipNZXRob2QgaW52b2tlcyB3aGVuIGEgcm93IGlzIGNsaWNrZWQgKi9cbiAgcm93Q2xpY2tlZChldmVudDogYW55LCBlbGVtZW50OiBhbnkpIHtcbiAgICB0aGlzLnJvd0NsaWNrLmVtaXQoZWxlbWVudCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICAvKipNZXRob2QgaW52b2tlcyB3aGVuIG1lbnUgYWN0aW9uIGljb24gaXMgaG92ZXJlZCAqL1xuICBhY3Rpb25NZW51Q2xpY2soZXZlbnQ6IGFueSwgZWxlbWVudDogYW55LCBtZW51VmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuYWN0aW9uLmVtaXQoeyBhY3Rpb246IG1lbnVWYWx1ZSwgdmFsdWU6IGVsZW1lbnQgfSk7XG4gICAgdGhpcy50cmlnZ2VyLmNsb3NlTWVudSgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgLyoqTWV0aG9kIGludm9rZXMgd2hlbiBtZW51IGFjdGlvbiBpY29uIGlzIGhvdmVyZWQgYW5kIHNlbGVjdHMgZm9yIHBhcnRpY3VsYXIgYWN0aW9uKi9cbiAgYWN0aW9uTWVudVRyaWdnZXJDbGljayhldmVudDogYW55LCB0cmlnZ2VyOiBNYXRNZW51VHJpZ2dlcikge1xuICAgIHRoaXMudHJpZ2dlciA9IHRyaWdnZXI7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBjaGVja0VkaXQoZWxlOiBhbnkpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZWRpdERpc2FibGVGdW5jdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmVkaXREaXNhYmxlRnVuY3Rpb24oZWxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNoZWNrVmlldyhlbGU6IGFueSkge1xuICAgIGlmICh0aGlzLmNvbmZpZy52aWV3RGlzYWJsZUZ1bmN0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWcudmlld0Rpc2FibGVGdW5jdGlvbihlbGUpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY2hlY2tQcmludChlbGU6IGFueSkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5wcmludERpc2FibGVGdW5jdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLnByaW50RGlzYWJsZUZ1bmN0aW9uKGVsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjaGVja0FjdGlvbnMoZWxlOiBhbnkpIHtcbiAgICBpZiAodGhpcy5jb25maWcuYWN0aW9uc01lbnVGdW5jdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmFjdGlvbnNNZW51RnVuY3Rpb24oZWxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNoZWNrQWN0aW9uQnV0dG9uKGVsZTogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmFjdGlvbnNNZW51QnV0dG9uRnVuY3Rpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5hY3Rpb25zTWVudUJ1dHRvbkZ1bmN0aW9uKGVsZSwgdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldFZhbHVlKGVsZTogYW55LCBrZXlTdHJpbmc6IHN0cmluZykge1xuICAgIGtleVN0cmluZyA9IGtleVN0cmluZy5yZXBsYWNlKC9cXFsoXFx3KylcXF0vZywgXCIuJDFcIik7IC8vIGNvbnZlcnQgaW5kZXhlcyB0byBwcm9wZXJ0aWVzXG4gICAga2V5U3RyaW5nID0ga2V5U3RyaW5nLnJlcGxhY2UoL15cXC4vLCBcIlwiKTsgLy8gc3RyaXAgYSBsZWFkaW5nIGRvdFxuICAgIGNvbnN0IGtleUxpc3QgPSBrZXlTdHJpbmcuc3BsaXQoXCIuXCIpO1xuICAgIGZvciAobGV0IGkgPSAwLCBuID0ga2V5TGlzdC5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleUxpc3RbaV07XG4gICAgICBpZiAoZWxlICYmIGtleSBpbiBlbGUpIHtcbiAgICAgICAgZWxlID0gZWxlW2tleV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlbGU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICAvL1VudGlsIERlc3Ryb3kgdXNlcyBpdC5cbiAgfVxufVxuIiwiPGRpdiBmeExheW91dD1cImNvbHVtblwiIFtuZ0NsYXNzXT1cIntcbiAgICAnbWF0LWVsZXZhdGlvbi16MSc6ICFjb25maWcuZGlzYWJsZUVsZXZhdGlvblxuICB9XCIgY2xhc3M9XCJzY3JvbGwtY29udGFpbmVyXCIgaW5maW5pdGVTY3JvbGwgW2luZmluaXRlU2Nyb2xsRGlzdGFuY2VdPVwiMVwiIFtpbmZpbml0ZVNjcm9sbFRocm90dGxlXT1cIjUwXCJcbiAgICAoc2Nyb2xsZWQpPVwib25TY3JvbGwoKVwiIFtzY3JvbGxXaW5kb3ddPVwiZmFsc2VcIiBbbmdTdHlsZV09XCJjb25maWcuc3R5bGVcIj5cbiAgICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImRhdGFcIiBtYXRTb3J0IFtpZF09XCJlbGVtZW50SWRcIj5cbiAgICAgICAgPCEtLSBDaGVja2JveCBDb2x1bW4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic2VsZWN0XCI+XG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIHN0eWxlPVwid2lkdGg6NjBweFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggKm5nSWY9XCJzZWxlY3Rpb25cIiAoY2hhbmdlKT1cIiRldmVudCA/IG1hc3RlclRvZ2dsZSgpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIGlzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmICFpc0FsbFNlbGVjdGVkKClcIj5cbiAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgc3R5bGU9XCJ3aWR0aDo2MHB4XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAqbmdJZj1cInNlbGVjdGlvblwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvbi50b2dnbGUocm93KSA6IG51bGxcIiBbY2hlY2tlZF09XCJzZWxlY3Rpb24uaXNTZWxlY3RlZChyb3cpXCI+XG4gICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIEluZGV4IENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJpbmRleFwiPlxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4jPC90aD5cbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpbmRleCA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAge3sgKGluZGV4ICsgMSkgfX1cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiYWN0aW9uc1wiPlxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cImFjdGlvbi13aWR0aCBkLXByaW50LW5vbmVcIj5cbiAgICAgICAgICAgICAgICB7eyBjb25maWcuY3VzdG9tQWN0aW9uTGFiZWwgfX1cbiAgICAgICAgICAgIDwvdGg+XG5cbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgaW5kZXggPSBpbmRleFwiIGNsYXNzPVwiZC1wcmludC1ub25lXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIlxuICAgICAgICAgICAgICBjb25maWcuYWN0aW9uc0NvbmZpZy5kb3dubG9hZCAmJiBlbGVtZW50W2NvbmZpZy5kb3dubG9hZExpbmtdXG4gICAgICAgICAgICBcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJkb3dubG9hZENsaWNrZWQoJGV2ZW50LCBlbGVtZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnZlcnRpY2FsX2FsaWduX2JvdHRvbTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb25maWcuYWN0aW9uc0NvbmZpZy5lZGl0XCIgW2Rpc2FibGVkXT1cIiF0aGlzLmNoZWNrRWRpdChlbGVtZW50KVwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJlZGl0Q2xpY2tlZCgkZXZlbnQsIGVsZW1lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZWRpdDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb25maWcuYWN0aW9uc0NvbmZpZy5wcmludFwiIFtkaXNhYmxlZF09XCIhdGhpcy5jaGVja1ByaW50KGVsZW1lbnQpXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInByaW50Q2xpY2tlZCgkZXZlbnQsZWxlbWVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5wcmludDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb25maWcuYWN0aW9uc0NvbmZpZy52aWV3XCIgW2Rpc2FibGVkXT1cIiF0aGlzLmNoZWNrVmlldyhlbGVtZW50KVwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJ2aWV3Q2xpY2tlZCgkZXZlbnQsIGVsZW1lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZGVzY3JpcHRpb248L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29uZmlnLmFjdGlvbnNDb25maWcuZGVhY3RpdmF0ZVwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWFjdGl2YXRlQ2xpY2tlZCgkZXZlbnQsIGVsZW1lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAjbWVudVRyaWdnZXI9XCJtYXRNZW51VHJpZ2dlclwiICpuZ0lmPVwiXG4gICAgICAgICAgICAgIGNvbmZpZy5hY3Rpb25zQ29uZmlnLmFjdGlvbnNNZW51ICYmXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tBY3Rpb25zKGVsZW1lbnQpICYmXG4gICAgICAgICAgICAgIGNvbmZpZy5hY3Rpb25zQ29uZmlnLmFjdGlvbnNNZW51Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgIFwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImFjdGlvbnNNZW51XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3Rpb25NZW51VHJpZ2dlckNsaWNrKCRldmVudCwgbWVudVRyaWdnZXIpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI2FjdGlvbnNNZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbmZpZy5hY3Rpb25zQ29uZmlnLmFjdGlvbnNNZW51XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwidGhpcy5jaGVja0FjdGlvbkJ1dHRvbihlbGVtZW50LCBpdGVtLnZhbHVlKVwiIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uTWVudUNsaWNrKCRldmVudCwgZWxlbWVudCwgaXRlbS52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gQWN0dWFsIENvbHVtbnMgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwie3sgY29sdW1uLnZhbHVlIH19XCIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb25maWcuY29sdW1uc0NvbmZpZ1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbj8uc29ydDsgZWxzZSBub1NvcnRcIj5cbiAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAge3sgY29sdW1uLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1NvcnQ+XG4gICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICAgICAgICAgICAge3sgY29sdW1uLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmRhdGVGaWVsZDsgZWxzZSBjdXJyZW5jeUZpZWxkXCI+XG4gICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIiBhcHBUb29sVGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0VmFsdWUoZWxlbWVudCwgY29sdW1uLnZhbHVlKSB8IGRhdGU6Y29sdW1uLmZvcm1hdD8gY29sdW1uLmZvcm1hdDogJ21lZGl1bURhdGUnIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjdXJyZW5jeUZpZWxkPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2x1bW4uY3VycmVuY3lGaWVsZDsgZWxzZSBub3JtYWxGaWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIiBhcHBUb29sVGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldFZhbHVlKGVsZW1lbnQsIGNvbHVtbi52YWx1ZSkgfCBjdXJyZW5jeTogXCIkXCI6J3N5bWJvbCcgOiAnMS4wLTAnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9ybWFsRmllbGQ+XG4gICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIiBhcHBUb29sVGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0VmFsdWUoZWxlbWVudCwgY29sdW1uLnZhbHVlKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5zdGlja3lIZWFkZXI7IGVsc2Ugbm9ybWFsSGVhZGVyXCI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJmb250LXdlaWdodC1ib2xkXCIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImNvbmZpZy5kaXNwbGF5ZWRDb2x1bW5zOyBzdGlja3k6dHJ1ZVwiPjwvdHI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI25vcm1hbEhlYWRlcj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImZvbnQtd2VpZ2h0LWJvbGRcIiBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29uZmlnLmRpc3BsYXllZENvbHVtbnM7XCI+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhY29uZmlnLmVuYWJsZVJvd0NsaWNrXCI+XG4gICAgICAgICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogY29uZmlnLmRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnLmVuYWJsZVJvd0NsaWNrXCI+XG4gICAgICAgICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogY29uZmlnLmRpc3BsYXllZENvbHVtbnNcIiAoY2xpY2spPVwicm93Q2xpY2tlZCgkZXZlbnQsIHJvdylcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaG92ZXJhYmxlIHJvdy1ob3ZlclwiPjwvdHI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvdGFibGU+XG48L2Rpdj4iXX0=
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBSVosU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7O0FBUTlELElBQU0sa0JBQWtCLEdBQXhCLE1BQU0sa0JBQWtCOzthQXVCdEIsV0FBTSxHQUFHLENBQUMsQUFBSixDQUFLO0lBR2xCO1FBaEJVLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNwQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM5QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBVWxDLGNBQVMsR0FBVyxjQUFjLG9CQUFrQixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFFekQsQ0FBQztJQUVqQixRQUFRLEtBQUssQ0FBQztJQUVkLDRCQUE0QjtJQUM1QixlQUFlO1FBRWIsMkJBQTJCO1FBQzNCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMs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Q2pCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPO1lBQ1QsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxXQUFXO1FBQ1Qsd0JBQXdCO0lBQzFCLENBQUM7K0dBek1VLGtCQUFrQjttR0FBbEIsa0JBQWtCLHVVQXFCbEIsT0FBTyxtRkM3Q3BCLHdvTkEwSU07O0FEbEhPLGtCQUFrQjtJQU45QixZQUFZLEVBQUU7R0FNRixrQkFBa0IsQ0EwTTlCOzs0RkExTVksa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGdCQUFnQjt3REFRakIsSUFBSTtzQkFBWixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQU8rQixJQUFJO3NCQUF6QyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRzNCLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIEFmdGVyVmlld0luaXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIjtcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXRTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBEYXRhVGFibGUgfSBmcm9tICcuL2RhdGEtdGFibGUubW9kZWwnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gXCJAbmduZWF0L3VudGlsLWRlc3Ryb3lcIjtcblxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXBwLWRhdGEtdGFibGVcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9kYXRhLXRhYmxlLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIERhdGFUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcblxuICB0cmlnZ2VyOiBNYXRNZW51VHJpZ2dlcjtcblxuICBASW5wdXQoKSBkYXRhOiBhbnk7XG5cbiAgQElucHV0KCkgY29uZmlnOiBEYXRhVGFibGU7XG5cbiAgQElucHV0KCkgc2VsZWN0aW9uOiBTZWxlY3Rpb25Nb2RlbDxhbnk+O1xuXG4gIEBPdXRwdXQoKSBhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBzZWxjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgdGFibGVTY3JvbGwgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBzb3J0Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwYWdlOiBudW1iZXI7XG4gIGxhc3RQYWdlOiBudW1iZXI7XG4gIHBlclBhZ2U6IG51bWJlcjtcblxuXG4gIEBWaWV3Q2hpbGQoTWF0U29ydCwgeyBzdGF0aWM6IHRydWUgfSkgc29ydDogTWF0U29ydDtcblxuICBzdGF0aWMgbmV4dElkID0gMDtcbiAgQElucHV0KCkgZWxlbWVudElkOiBzdHJpbmcgPSBgZGF0YS10YWJsZS0ke0RhdGFUYWJsZUNvbXBvbmVudC5uZXh0SWQrK31gO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKSB7IH1cblxuICAvKipMaWZlIGN5Y2xlIGhvb2sgbWV0aG9kICovXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcblxuICAgIC8vIEVtaXQgY2hhbmdlIGluIHNlbGVjdGlvblxuICAgIGlmICh0aGlzLnNlbGVjdGlvbikge1xuICAgICAgdGhpcy5zZWxlY3Rpb24uY2hhbmdlZC5waXBlKCkuc3Vic2NyaWJlKChjaGFuZ2U6IGFueSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpIHtcbiAgICAgICAgICB0aGlzLnNlbGN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zb3J0KSB7XG4gICAgICB0aGlzLnNvcnQuc29ydENoYW5nZS5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5zb3J0Q2hhbmdlZC5lbWl0KHZhbHVlKTtcbiAgICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIGVsZW1lbnRzIG1hdGNoZXMgdGhlIHRvdGFsIG51bWJlciBvZiByb3dzLiAqL1xuICBpc0FsbFNlbGVjdGVkKCkge1xuICAgIGNvbnN0IG51bVNlbGVjdGVkID0gdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoO1xuICAgIGNvbnN0IG51bVJvd3MgPSB0aGlzLmRhdGEubGVuZ3RoO1xuICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcbiAgfVxuXG4gIC8qKiBTZWxlY3RzIGFsbCByb3dzIGlmIHRoZXkgYXJlIG5vdCBhbGwgc2VsZWN0ZWQ7IG90aGVyd2lzZSBjbGVhciBzZWxlY3Rpb24uICovXG4gIG1hc3RlclRvZ2dsZSgpIHtcbiAgICB0aGlzLmlzQWxsU2VsZWN0ZWQoKVxuICAgICAgPyB0aGlzLmNsZWFyU2VsZWN0aW9uKClcbiAgICAgIDogdGhpcy5kYXRhLmZvckVhY2gocm93ID0+IHRoaXMuc2VsZWN0aW9uLnNlbGVjdChyb3cpKTtcbiAgfVxuXG4gIC8qKmNsZWFyIHNlbGVjdGlvbiovXG4gIGNsZWFyU2VsZWN0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgdGhpcy5zZWxjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLmluaXRpYWxpemVDb25maWcoY2hhbmdlcyk7XG4gICAgaWYgKGNoYW5nZXMuZGF0YSAmJiAhY2hhbmdlcy5kYXRhLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgLy8gSWYgbm90IGZpcnN0IGNoYW5nZVxuICAgICAgdGhpcy5kYXRhID0gY2hhbmdlcy5kYXRhLmN1cnJlbnRWYWx1ZTtcbiAgICB9XG4gIH1cblxuICBpbml0aWFsaXplQ29uZmlnKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5jb25maWcgJiYgIWNoYW5nZXMuY29uZmlnLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgdGhpcy5jb25maWcgPSBjaGFuZ2VzLmNvbmZpZy5jdXJyZW50VmFsdWU7XG4gICAgfVxuICAgIHRoaXMucGFnZSA9IDE7XG4gICAgdGhpcy5sYXN0UGFnZSA9IHRoaXMucGFnZTtcbiAgICB0aGlzLnBlclBhZ2UgPSB0aGlzLmNvbmZpZy5wZXJQYWdlIHx8IDUwO1xuICB9XG5cbiAgb25TY3JvbGwoKSB7XG4gICAgaWYgKHRoaXMucGFnZSA8IHRoaXMubGFzdFBhZ2UpIHtcbiAgICAgIHRoaXMucGFnZSArPSAxO1xuICAgICAgdGhpcy50YWJsZVNjcm9sbC5lbWl0KHsgcGFnZTogdGhpcy5wYWdlLCBsYXN0UGFnZTogdGhpcy5sYXN0UGFnZSwgcGVyUGFnZTogdGhpcy5wZXJQYWdlIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKk1ldGhvZCBpbnZva2VzIHdoZW4gZWRpdCBhY3Rpb24gaWNvbiBpcyBjbGlja2VzICovXG4gIGVkaXRDbGlja2VkKGV2ZW50OiBhbnksIGVsZW1lbnQ6IGFueSkge1xuICAgIHRoaXMuYWN0aW9uLmVtaXQoeyBhY3Rpb246IFwiZWRpdFwiLCB2YWx1ZTogZWxlbWVudCB9KTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIC8qKk1ldGhvZCBpbnZva2VzIHdoZW4gdmlldyBhY3Rpb24gaWNvbiBpcyBjbGlja2VzICovXG4gIHZpZXdDbGlja2VkKGV2ZW50OiBhbnksIGVsZW1lbnQ6IGFueSkge1xuICAgIHRoaXMuYWN0aW9uLmVtaXQoeyBhY3Rpb246IFwidmlld1wiLCB2YWx1ZTogZWxlbWVudCB9KTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIC8qKk1ldGhvZCBpbnZva2VzIHdoZW4gZWRpdCBhY3Rpb24gaWNvbiBpcyBjbGlja2VzICovXG4gIGRlYWN0aXZhdGVDbGlja2VkKGV2ZW50OiBhbnksIGVsZW1lbnQ6IGFueSkge1xuICAgIHRoaXMuYWN0aW9uLmVtaXQoeyBhY3Rpb246IFwiZGVhY3RpdmF0ZVwiLCB2YWx1ZTogZWxlbWVudCB9KTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIC8qKk1ldGhvZCBpbnZva2VzIHdoZW4gZG93bmxvYWQgYWN0aW9uIGljb24gaXMgY2xpY2tlcyAqL1xuICBkb3dubG9hZENsaWNrZWQoZXZlbnQ6IGFueSwgZWxlbWVudDogYW55KSB7XG4gICAgdGhpcy5hY3Rpb24uZW1pdCh7IGFjdGlvbjogXCJkb3dubG9hZFwiLCB2YWx1ZTogZWxlbWVudCB9KTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIC8qKk1ldGhvZCBpbnZva2VzIHdoZW4gcHJpbnQgYWN0aW9uIGljb24gaXMgY2xpY2tlcyAqL1xuICBwcmludENsaWNrZWQoZXZlbnQ6IGFueSwgZWxlbWVudDogYW55KSB7XG5cbiAgICB0aGlzLmFjdGlvbi5lbWl0KHsgYWN0aW9uOiAncHJpbnQnLCB2YWx1ZTogZWxlbWVudCB9KTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICB9XG5cbiAgLyoqTWV0aG9kIGludm9rZXMgd2hlbiBhIHJvdyBpcyBjbGlja2VkICovXG4gIHJvd0NsaWNrZWQoZXZlbnQ6IGFueSwgZWxlbWVudDogYW55KSB7XG4gICAgdGhpcy5yb3dDbGljay5lbWl0KGVsZW1lbnQpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgLyoqTWV0aG9kIGludm9rZXMgd2hlbiBtZW51IGFjdGlvbiBpY29uIGlzIGhvdmVyZWQgKi9cbiAgYWN0aW9uTWVudUNsaWNrKGV2ZW50OiBhbnksIGVsZW1lbnQ6IGFueSwgbWVudVZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFjdGlvbi5lbWl0KHsgYWN0aW9uOiBtZW51VmFsdWUsIHZhbHVlOiBlbGVtZW50IH0pO1xuICAgIHRoaXMudHJpZ2dlci5jbG9zZU1lbnUoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIC8qKk1ldGhvZCBpbnZva2VzIHdoZW4gbWVudSBhY3Rpb24gaWNvbiBpcyBob3ZlcmVkIGFuZCBzZWxlY3RzIGZvciBwYXJ0aWN1bGFyIGFjdGlvbiovXG4gIGFjdGlvbk1lbnVUcmlnZ2VyQ2xpY2soZXZlbnQ6IGFueSwgdHJpZ2dlcjogTWF0TWVudVRyaWdnZXIpIHtcbiAgICB0aGlzLnRyaWdnZXIgPSB0cmlnZ2VyO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgY2hlY2tFZGl0KGVsZTogYW55KSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmVkaXREaXNhYmxlRnVuY3Rpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5lZGl0RGlzYWJsZUZ1bmN0aW9uKGVsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjaGVja1ZpZXcoZWxlOiBhbnkpIHtcbiAgICBpZiAodGhpcy5jb25maWcudmlld0Rpc2FibGVGdW5jdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLnZpZXdEaXNhYmxlRnVuY3Rpb24oZWxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNoZWNrUHJpbnQoZWxlOiBhbnkpIHtcbiAgICBpZiAodGhpcy5jb25maWcucHJpbnREaXNhYmxlRnVuY3Rpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5wcmludERpc2FibGVGdW5jdGlvbihlbGUpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY2hlY2tBY3Rpb25zKGVsZTogYW55KSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmFjdGlvbnNNZW51RnVuY3Rpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5hY3Rpb25zTWVudUZ1bmN0aW9uKGVsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjaGVja0FjdGlvbkJ1dHRvbihlbGU6IGFueSwgdmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5hY3Rpb25zTWVudUJ1dHRvbkZ1bmN0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWcuYWN0aW9uc01lbnVCdXR0b25GdW5jdGlvbihlbGUsIHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXRWYWx1ZShlbGU6IGFueSwga2V5U3RyaW5nOiBzdHJpbmcpIHtcbiAgICBrZXlTdHJpbmcgPSBrZXlTdHJpbmcucmVwbGFjZSgvXFxbKFxcdyspXFxdL2csIFwiLiQxXCIpOyAvLyBjb252ZXJ0IGluZGV4ZXMgdG8gcHJvcGVydGllc1xuICAgIGtleVN0cmluZyA9IGtleVN0cmluZy5yZXBsYWNlKC9eXFwuLywgXCJcIik7IC8vIHN0cmlwIGEgbGVhZGluZyBkb3RcbiAgICBjb25zdCBrZXlMaXN0ID0ga2V5U3RyaW5nLnNwbGl0KFwiLlwiKTtcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGtleUxpc3QubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICBjb25zdCBrZXkgPSBrZXlMaXN0W2ldO1xuICAgICAgaWYgKGVsZSAmJiBrZXkgaW4gZWxlKSB7XG4gICAgICAgIGVsZSA9IGVsZVtrZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZWxlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgLy9VbnRpbCBEZXN0cm95IHVzZXMgaXQuXG4gIH1cbn1cbiIsIjxkaXYgW25nQ2xhc3NdPVwie1xuICAgICdtYXQtZWxldmF0aW9uLXoxJzogIWNvbmZpZy5kaXNhYmxlRWxldmF0aW9uXG4gIH1cIiBjbGFzcz1cInNjcm9sbC1jb250YWluZXIgZC1mbGV4IGZsZXgtY29sdW1uXCIgaW5maW5pdGVTY3JvbGwgW2luZmluaXRlU2Nyb2xsRGlzdGFuY2VdPVwiMVwiIFtpbmZpbml0ZVNjcm9sbFRocm90dGxlXT1cIjUwXCJcbiAgICAoc2Nyb2xsZWQpPVwib25TY3JvbGwoKVwiIFtzY3JvbGxXaW5kb3ddPVwiZmFsc2VcIiBbbmdTdHlsZV09XCJjb25maWcuc3R5bGVcIj5cbiAgICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImRhdGFcIiBtYXRTb3J0IFtpZF09XCJlbGVtZW50SWRcIj5cbiAgICAgICAgPCEtLSBDaGVja2JveCBDb2x1bW4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic2VsZWN0XCI+XG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIHN0eWxlPVwid2lkdGg6NjBweFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggKm5nSWY9XCJzZWxlY3Rpb25cIiAoY2hhbmdlKT1cIiRldmVudCA/IG1hc3RlclRvZ2dsZSgpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIGlzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmICFpc0FsbFNlbGVjdGVkKClcIj5cbiAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgc3R5bGU9XCJ3aWR0aDo2MHB4XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAqbmdJZj1cInNlbGVjdGlvblwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvbi50b2dnbGUocm93KSA6IG51bGxcIiBbY2hlY2tlZF09XCJzZWxlY3Rpb24uaXNTZWxlY3RlZChyb3cpXCI+XG4gICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIEluZGV4IENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJpbmRleFwiPlxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4jPC90aD5cbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpbmRleCA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAge3sgKGluZGV4ICsgMSkgfX1cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiYWN0aW9uc1wiPlxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cImFjdGlvbi13aWR0aCBkLXByaW50LW5vbmVcIj5cbiAgICAgICAgICAgICAgICB7eyBjb25maWcuY3VzdG9tQWN0aW9uTGFiZWwgfX1cbiAgICAgICAgICAgIDwvdGg+XG5cbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgaW5kZXggPSBpbmRleFwiIGNsYXNzPVwiZC1wcmludC1ub25lXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIlxuICAgICAgICAgICAgICBjb25maWcuYWN0aW9uc0NvbmZpZy5kb3dubG9hZCAmJiBlbGVtZW50W2NvbmZpZy5kb3dubG9hZExpbmtdXG4gICAgICAgICAgICBcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJkb3dubG9hZENsaWNrZWQoJGV2ZW50LCBlbGVtZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnZlcnRpY2FsX2FsaWduX2JvdHRvbTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb25maWcuYWN0aW9uc0NvbmZpZy5lZGl0XCIgW2Rpc2FibGVkXT1cIiF0aGlzLmNoZWNrRWRpdChlbGVtZW50KVwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJlZGl0Q2xpY2tlZCgkZXZlbnQsIGVsZW1lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZWRpdDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb25maWcuYWN0aW9uc0NvbmZpZy5wcmludFwiIFtkaXNhYmxlZF09XCIhdGhpcy5jaGVja1ByaW50KGVsZW1lbnQpXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInByaW50Q2xpY2tlZCgkZXZlbnQsZWxlbWVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5wcmludDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb25maWcuYWN0aW9uc0NvbmZpZy52aWV3XCIgW2Rpc2FibGVkXT1cIiF0aGlzLmNoZWNrVmlldyhlbGVtZW50KVwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJ2aWV3Q2xpY2tlZCgkZXZlbnQsIGVsZW1lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZGVzY3JpcHRpb248L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29uZmlnLmFjdGlvbnNDb25maWcuZGVhY3RpdmF0ZVwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWFjdGl2YXRlQ2xpY2tlZCgkZXZlbnQsIGVsZW1lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAjbWVudVRyaWdnZXI9XCJtYXRNZW51VHJpZ2dlclwiICpuZ0lmPVwiXG4gICAgICAgICAgICAgIGNvbmZpZy5hY3Rpb25zQ29uZmlnLmFjdGlvbnNNZW51ICYmXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tBY3Rpb25zKGVsZW1lbnQpICYmXG4gICAgICAgICAgICAgIGNvbmZpZy5hY3Rpb25zQ29uZmlnLmFjdGlvbnNNZW51Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgIFwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImFjdGlvbnNNZW51XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3Rpb25NZW51VHJpZ2dlckNsaWNrKCRldmVudCwgbWVudVRyaWdnZXIpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI2FjdGlvbnNNZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbmZpZy5hY3Rpb25zQ29uZmlnLmFjdGlvbnNNZW51XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwidGhpcy5jaGVja0FjdGlvbkJ1dHRvbihlbGVtZW50LCBpdGVtLnZhbHVlKVwiIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uTWVudUNsaWNrKCRldmVudCwgZWxlbWVudCwgaXRlbS52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gQWN0dWFsIENvbHVtbnMgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwie3sgY29sdW1uLnZhbHVlIH19XCIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb25maWcuY29sdW1uc0NvbmZpZ1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbj8uc29ydDsgZWxzZSBub1NvcnRcIj5cbiAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAge3sgY29sdW1uLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1NvcnQ+XG4gICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICAgICAgICAgICAge3sgY29sdW1uLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmRhdGVGaWVsZDsgZWxzZSBjdXJyZW5jeUZpZWxkXCI+XG4gICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIiBhcHBUb29sVGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0VmFsdWUoZWxlbWVudCwgY29sdW1uLnZhbHVlKSB8IGRhdGU6Y29sdW1uLmZvcm1hdD8gY29sdW1uLmZvcm1hdDogJ21lZGl1bURhdGUnIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjdXJyZW5jeUZpZWxkPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2x1bW4uY3VycmVuY3lGaWVsZDsgZWxzZSBub3JtYWxGaWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIiBhcHBUb29sVGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldFZhbHVlKGVsZW1lbnQsIGNvbHVtbi52YWx1ZSkgfCBjdXJyZW5jeTogXCIkXCI6J3N5bWJvbCcgOiAnMS4wLTAnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9ybWFsRmllbGQ+XG4gICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIiBhcHBUb29sVGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0VmFsdWUoZWxlbWVudCwgY29sdW1uLnZhbHVlKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5zdGlja3lIZWFkZXI7IGVsc2Ugbm9ybWFsSGVhZGVyXCI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJmb250LXdlaWdodC1ib2xkXCIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImNvbmZpZy5kaXNwbGF5ZWRDb2x1bW5zOyBzdGlja3k6dHJ1ZVwiPjwvdHI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI25vcm1hbEhlYWRlcj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImZvbnQtd2VpZ2h0LWJvbGRcIiBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29uZmlnLmRpc3BsYXllZENvbHVtbnM7XCI+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhY29uZmlnLmVuYWJsZVJvd0NsaWNrXCI+XG4gICAgICAgICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogY29uZmlnLmRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnLmVuYWJsZVJvd0NsaWNrXCI+XG4gICAgICAgICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogY29uZmlnLmRpc3BsYXllZENvbHVtbnNcIiAoY2xpY2spPVwicm93Q2xpY2tlZCgkZXZlbnQsIHJvdylcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaG92ZXJhYmxlIHJvdy1ob3ZlclwiPjwvdHI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvdGFibGU+XG48L2Rpdj4iXX0=
@@ -1,29 +1,17 @@
1
1
  import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { FlexLayoutModule } from '@angular/flex-layout';
4
2
  import { DataTableComponent } from './data-table.component';
5
- import { InfiniteScrollModule } from "ngx-infinite-scroll";
6
- import { MaterialModule } from '../material.module';
3
+ import { SharedModule } from '../shared.module';
7
4
  import * as i0 from "@angular/core";
8
5
  export class DataTableModule {
9
6
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DataTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: DataTableModule, declarations: [DataTableComponent], imports: [FlexLayoutModule,
11
- CommonModule,
12
- InfiniteScrollModule,
13
- MaterialModule], exports: [DataTableComponent] }); }
14
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DataTableModule, imports: [FlexLayoutModule,
15
- CommonModule,
16
- InfiniteScrollModule,
17
- MaterialModule] }); }
7
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: DataTableModule, declarations: [DataTableComponent], imports: [SharedModule], exports: [DataTableComponent] }); }
8
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DataTableModule, imports: [SharedModule] }); }
18
9
  }
19
10
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DataTableModule, decorators: [{
20
11
  type: NgModule,
21
12
  args: [{
22
13
  imports: [
23
- FlexLayoutModule,
24
- CommonModule,
25
- InfiniteScrollModule,
26
- MaterialModule
14
+ SharedModule
27
15
  ],
28
16
  declarations: [
29
17
  DataTableComponent
@@ -33,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
33
21
  ]
34
22
  }]
35
23
  }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2RhdGEtdGFibGUvZGF0YS10YWJsZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQWlCcEQsTUFBTSxPQUFPLGVBQWU7K0dBQWYsZUFBZTtnSEFBZixlQUFlLGlCQU54QixrQkFBa0IsYUFObEIsZ0JBQWdCO1lBQ2hCLFlBQVk7WUFDWixvQkFBb0I7WUFDcEIsY0FBYyxhQU1kLGtCQUFrQjtnSEFHVCxlQUFlLFlBWnhCLGdCQUFnQjtZQUNoQixZQUFZO1lBQ1osb0JBQW9CO1lBQ3BCLGNBQWM7OzRGQVNMLGVBQWU7a0JBZDNCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLGNBQWM7cUJBQ2Y7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGtCQUFrQjtxQkFDbkI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZsZXhMYXlvdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mbGV4LWxheW91dCc7XG5pbXBvcnQgeyBEYXRhVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2RhdGEtdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IEluZmluaXRlU2Nyb2xsTW9kdWxlIH0gZnJvbSBcIm5neC1pbmZpbml0ZS1zY3JvbGxcIjtcbmltcG9ydCB7IE1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnLi4vbWF0ZXJpYWwubW9kdWxlJztcblxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgRmxleExheW91dE1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW5maW5pdGVTY3JvbGxNb2R1bGUsXG4gICAgTWF0ZXJpYWxNb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRGF0YVRhYmxlQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBEYXRhVGFibGVDb21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVNb2R1bGUgeyB9XG4iXX0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2RhdGEtdGFibGUvZGF0YS10YWJsZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBY2hELE1BQU0sT0FBTyxlQUFlOytHQUFmLGVBQWU7Z0hBQWYsZUFBZSxpQkFOeEIsa0JBQWtCLGFBSGxCLFlBQVksYUFNWixrQkFBa0I7Z0hBR1QsZUFBZSxZQVR4QixZQUFZOzs0RkFTSCxlQUFlO2tCQVgzQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3FCQUNiO29CQUNELFlBQVksRUFBRTt3QkFDWixrQkFBa0I7cUJBQ25CO29CQUNELE9BQU8sRUFBRTt3QkFDUCxrQkFBa0I7cUJBQ25CO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vZGF0YS10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2hhcmVkTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkLm1vZHVsZSc7XG5cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIFNoYXJlZE1vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBEYXRhVGFibGVDb21wb25lbnRcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIERhdGFUYWJsZUNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGFUYWJsZU1vZHVsZSB7IH1cbiJdfQ==
@@ -1,10 +1,9 @@
1
1
  import { Component, Input, EventEmitter, Output } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common";
4
- import * as i2 from "@angular/flex-layout/extended";
5
- import * as i3 from "ngx-doc-viewer";
6
- import * as i4 from "@angular/material/button";
7
- import * as i5 from "@angular/material/card";
4
+ import * as i2 from "ngx-doc-viewer";
5
+ import * as i3 from "@angular/material/button";
6
+ import * as i4 from "@angular/material/card";
8
7
  export class DocumentViewerComponent {
9
8
  constructor() {
10
9
  this.remove = new EventEmitter();
@@ -46,7 +45,7 @@ export class DocumentViewerComponent {
46
45
  return file.split('.').pop();
47
46
  }
48
47
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DocumentViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
49
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DocumentViewerComponent, selector: "app-document-viewer", inputs: { config: "config", file: "file", fileUrl: "fileUrl", disableEdit: "disableEdit" }, outputs: { remove: "remove" }, ngImport: i0, template: "<mat-card *ngIf=\"viewerType === 'image'\">\n <img [ngStyle]=\"config.imageStyle\" mat-card-image [src]=\"fileUrl\" style=\"object-fit: contain;\" />\n <mat-card-actions>\n <button type=\"button\" mat-raised-button (click)=\"removeFile()\" *ngIf=\"!disableEdit && !config.hideRemove\">\n Remove\n </button>\n </mat-card-actions>\n</mat-card>\n\n<div class=\"mat-elevation-z1 p-4\" *ngIf=\"viewerType !== 'image'\">\n <a [href]=\"fileUrl\" target=\"_blank\">{{fileName}}</a>\n <ngx-doc-viewer [ngStyle]=\"config.viewerStyle\" *ngIf=\"viewerType !== null\" [url]=\"fileUrl\" [viewer]=\"viewerType\">\n </ngx-doc-viewer>\n <div class=\"mt-2\" *ngIf=\"!config.hideRemove\">\n <button type=\"button\" mat-raised-button (click)=\"removeFile()\" *ngIf=\"!disableEdit\">\n Remove\n </button>\n </div>\n</div>", styles: [".image-fit{height:100%;width:100%;object-fit:cover}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }, { kind: "component", type: i3.NgxDocViewerComponent, selector: "ngx-doc-viewer", inputs: ["url", "queryParams", "viewerUrl", "googleCheckInterval", "googleMaxChecks", "disableContent", "googleCheckContentLoaded", "viewer", "overrideLocalhost"], outputs: ["loaded"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i5.MatCardImage, selector: "[mat-card-image], [matCardImage]" }] }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DocumentViewerComponent, selector: "app-document-viewer", inputs: { config: "config", file: "file", fileUrl: "fileUrl", disableEdit: "disableEdit" }, outputs: { remove: "remove" }, ngImport: i0, template: "<mat-card *ngIf=\"viewerType === 'image'\">\n <img [ngStyle]=\"config.imageStyle\" mat-card-image [src]=\"fileUrl\" style=\"object-fit: contain;\" />\n <mat-card-actions>\n <button type=\"button\" mat-raised-button (click)=\"removeFile()\" *ngIf=\"!disableEdit && !config.hideRemove\">\n Remove\n </button>\n </mat-card-actions>\n</mat-card>\n\n<div class=\"mat-elevation-z1 p-4\" *ngIf=\"viewerType !== 'image'\">\n <a [href]=\"fileUrl\" target=\"_blank\">{{fileName}}</a>\n <ngx-doc-viewer [ngStyle]=\"config.viewerStyle\" *ngIf=\"viewerType !== null\" [url]=\"fileUrl\" [viewer]=\"viewerType\">\n </ngx-doc-viewer>\n <div class=\"mt-2\" *ngIf=\"!config.hideRemove\">\n <button type=\"button\" mat-raised-button (click)=\"removeFile()\" *ngIf=\"!disableEdit\">\n Remove\n </button>\n </div>\n</div>", styles: [".image-fit{height:100%;width:100%;object-fit:cover}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.NgxDocViewerComponent, selector: "ngx-doc-viewer", inputs: ["url", "queryParams", "viewerUrl", "googleCheckInterval", "googleMaxChecks", "disableContent", "googleCheckContentLoaded", "viewer", "overrideLocalhost"], outputs: ["loaded"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i4.MatCardImage, selector: "[mat-card-image], [matCardImage]" }] }); }
50
49
  }
51
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DocumentViewerComponent, decorators: [{
52
51
  type: Component,
@@ -62,4 +61,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
62
61
  }], remove: [{
63
62
  type: Output
64
63
  }] } });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvZG9jdW1lbnQtdmlld2VyL2RvY3VtZW50LXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2RvY3VtZW50LXZpZXdlci9kb2N1bWVudC12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQVEvRSxNQUFNLE9BQU8sdUJBQXVCO0lBY2xDO1FBSFUsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFHdEIsQ0FBQztJQUVqQixRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQyxJQUFJLEdBQUcsS0FBSyxLQUFLLElBQUksR0FBRyxLQUFLLE1BQU0sSUFBSSxHQUFHLEtBQUssS0FBSyxJQUFJLEdBQUcsS0FBSyxNQUFNLElBQUksR0FBRyxLQUFLLEtBQUssSUFBSSxHQUFHLEtBQUssTUFBTSxFQUFFLENBQUM7Z0JBQzFHLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO1lBQzdCLENBQUM7aUJBQ0ksSUFBSSxHQUFHLEtBQUssS0FBSyxJQUFJLEdBQUcsS0FBSyxNQUFNLElBQUksR0FBRyxLQUFLLEtBQUssSUFBSSxHQUFHLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQzNFLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO1lBQzVCLENBQUM7aUJBQ0ksSUFBSSxHQUFHLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQzFCLENBQUM7aUJBQ0ksQ0FBQztnQkFDSixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN6QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JDLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsQ0FBQztZQUNELE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFTO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMvQixDQUFDOytHQXZEVSx1QkFBdUI7bUdBQXZCLHVCQUF1QixzTENScEMsNDJCQWtCTTs7NEZEVk8sdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHFCQUFxQjt3REFPdEIsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWaWV3ZXJDb25maWcgfSBmcm9tICcuL3ZpZXdlci1jb25maWcubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZG9jdW1lbnQtdmlld2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RvY3VtZW50LXZpZXdlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RvY3VtZW50LXZpZXdlci5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRWaWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG5cbiAgQElucHV0KCkgY29uZmlnITogVmlld2VyQ29uZmlnO1xuXG4gIEBJbnB1dCgpIGZpbGUhOiBhbnk7XG5cbiAgQElucHV0KCkgZmlsZVVybCE6IGFueTtcblxuICBASW5wdXQoKSBkaXNhYmxlRWRpdDogYm9vbGVhbjtcblxuICBAT3V0cHV0KCkgcmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICB2aWV3ZXJUeXBlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXREYXRhKCk7XG4gIH1cblxuICByZW1vdmVGaWxlKCkge1xuICAgIHRoaXMucmVtb3ZlLmVtaXQoKTtcbiAgfVxuXG4gIGluaXREYXRhKCkge1xuICAgIGlmICh0aGlzLmZpbGUpIHtcbiAgICAgIHZhciBleHQgPSB0aGlzLmdldEZpbGVFeHRlbnNpb24odGhpcy5maWxlKTtcbiAgICAgIGlmIChleHQgPT09ICdwcHQnIHx8IGV4dCA9PT0gJ3BwdHgnIHx8IGV4dCA9PT0gJ2RvYycgfHwgZXh0ID09PSAnZG9jeCcgfHwgZXh0ID09PSAneGxzJyB8fCBleHQgPT09ICd4bHN4Jykge1xuICAgICAgICB0aGlzLnZpZXdlclR5cGUgPSBcIm9mZmljZVwiO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoZXh0ID09PSAnanBnJyB8fCBleHQgPT09ICdqcGVnJyB8fCBleHQgPT09ICdwbmcnIHx8IGV4dCA9PT0gJ2dpZicpIHtcbiAgICAgICAgdGhpcy52aWV3ZXJUeXBlID0gXCJpbWFnZVwiO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoZXh0ID09PSAncGRmJykge1xuICAgICAgICB0aGlzLnZpZXdlclR5cGUgPSBcInBkZlwiO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMudmlld2VyVHlwZSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGZpbGVOYW1lKCkge1xuICAgIGlmICh0aGlzLmZpbGUpIHtcbiAgICAgIGxldCBuYW1lQXJyYXkgPSB0aGlzLmZpbGUuc3BsaXQoJy8nKTtcbiAgICAgIGlmIChuYW1lQXJyYXkubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIHJldHVybiBuYW1lQXJyYXlbMV07XG4gICAgICB9XG4gICAgICByZXR1cm4gbmFtZUFycmF5WzBdO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBnZXRGaWxlRXh0ZW5zaW9uKGZpbGU6IGFueSkge1xuICAgIHJldHVybiBmaWxlLnNwbGl0KCcuJykucG9wKCk7XG4gIH1cblxufVxuIiwiPG1hdC1jYXJkICpuZ0lmPVwidmlld2VyVHlwZSA9PT0gJ2ltYWdlJ1wiPlxuICAgIDxpbWcgW25nU3R5bGVdPVwiY29uZmlnLmltYWdlU3R5bGVcIiBtYXQtY2FyZC1pbWFnZSBbc3JjXT1cImZpbGVVcmxcIiBzdHlsZT1cIm9iamVjdC1maXQ6IGNvbnRhaW47XCIgLz5cbiAgICA8bWF0LWNhcmQtYWN0aW9ucz5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cInJlbW92ZUZpbGUoKVwiICpuZ0lmPVwiIWRpc2FibGVFZGl0ICYmICFjb25maWcuaGlkZVJlbW92ZVwiPlxuICAgICAgICAgICAgUmVtb3ZlXG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cbjwvbWF0LWNhcmQ+XG5cbjxkaXYgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXoxIHAtNFwiICpuZ0lmPVwidmlld2VyVHlwZSAhPT0gJ2ltYWdlJ1wiPlxuICAgIDxhIFtocmVmXT1cImZpbGVVcmxcIiB0YXJnZXQ9XCJfYmxhbmtcIj57e2ZpbGVOYW1lfX08L2E+XG4gICAgPG5neC1kb2Mtdmlld2VyIFtuZ1N0eWxlXT1cImNvbmZpZy52aWV3ZXJTdHlsZVwiICpuZ0lmPVwidmlld2VyVHlwZSAhPT0gbnVsbFwiIFt1cmxdPVwiZmlsZVVybFwiIFt2aWV3ZXJdPVwidmlld2VyVHlwZVwiPlxuICAgIDwvbmd4LWRvYy12aWV3ZXI+XG4gICAgPGRpdiBjbGFzcz1cIm10LTJcIiAqbmdJZj1cIiFjb25maWcuaGlkZVJlbW92ZVwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwicmVtb3ZlRmlsZSgpXCIgKm5nSWY9XCIhZGlzYWJsZUVkaXRcIj5cbiAgICAgICAgICAgIFJlbW92ZVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvZG9jdW1lbnQtdmlld2VyL2RvY3VtZW50LXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2RvY3VtZW50LXZpZXdlci9kb2N1bWVudC12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBUS9FLE1BQU0sT0FBTyx1QkFBdUI7SUFjbEM7UUFIVSxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUd0QixDQUFDO0lBRWpCLFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNDLElBQUksR0FBRyxLQUFLLEtBQUssSUFBSSxHQUFHLEtBQUssTUFBTSxJQUFJLEdBQUcsS0FBSyxLQUFLLElBQUksR0FBRyxLQUFLLE1BQU0sSUFBSSxHQUFHLEtBQUssS0FBSyxJQUFJLEdBQUcsS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDMUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7WUFDN0IsQ0FBQztpQkFDSSxJQUFJLEdBQUcsS0FBSyxLQUFLLElBQUksR0FBRyxLQUFLLE1BQU0sSUFBSSxHQUFHLEtBQUssS0FBSyxJQUFJLEdBQUcsS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDM0UsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUM7WUFDNUIsQ0FBQztpQkFDSSxJQUFJLEdBQUcsS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDMUIsQ0FBQztpQkFDSSxDQUFDO2dCQUNKLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckMsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMzQixPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixDQUFDO1lBQ0QsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVM7UUFDeEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQy9CLENBQUM7K0dBdkRVLHVCQUF1QjttR0FBdkIsdUJBQXVCLHNMQ1JwQyw0MkJBa0JNOzs0RkRWTyx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UscUJBQXFCO3dEQU90QixNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZpZXdlckNvbmZpZyB9IGZyb20gJy4vdmlld2VyLWNvbmZpZy5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1kb2N1bWVudC12aWV3ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9jdW1lbnQtdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9jdW1lbnQtdmlld2VyLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEb2N1bWVudFZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cblxuICBASW5wdXQoKSBjb25maWchOiBWaWV3ZXJDb25maWc7XG5cbiAgQElucHV0KCkgZmlsZSE6IGFueTtcblxuICBASW5wdXQoKSBmaWxlVXJsITogYW55O1xuXG4gIEBJbnB1dCgpIGRpc2FibGVFZGl0OiBib29sZWFuO1xuXG4gIEBPdXRwdXQoKSByZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHZpZXdlclR5cGU6IGFueTtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdERhdGEoKTtcbiAgfVxuXG4gIHJlbW92ZUZpbGUoKSB7XG4gICAgdGhpcy5yZW1vdmUuZW1pdCgpO1xuICB9XG5cbiAgaW5pdERhdGEoKSB7XG4gICAgaWYgKHRoaXMuZmlsZSkge1xuICAgICAgdmFyIGV4dCA9IHRoaXMuZ2V0RmlsZUV4dGVuc2lvbih0aGlzLmZpbGUpO1xuICAgICAgaWYgKGV4dCA9PT0gJ3BwdCcgfHwgZXh0ID09PSAncHB0eCcgfHwgZXh0ID09PSAnZG9jJyB8fCBleHQgPT09ICdkb2N4JyB8fCBleHQgPT09ICd4bHMnIHx8IGV4dCA9PT0gJ3hsc3gnKSB7XG4gICAgICAgIHRoaXMudmlld2VyVHlwZSA9IFwib2ZmaWNlXCI7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChleHQgPT09ICdqcGcnIHx8IGV4dCA9PT0gJ2pwZWcnIHx8IGV4dCA9PT0gJ3BuZycgfHwgZXh0ID09PSAnZ2lmJykge1xuICAgICAgICB0aGlzLnZpZXdlclR5cGUgPSBcImltYWdlXCI7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChleHQgPT09ICdwZGYnKSB7XG4gICAgICAgIHRoaXMudmlld2VyVHlwZSA9IFwicGRmXCI7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy52aWV3ZXJUeXBlID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgZmlsZU5hbWUoKSB7XG4gICAgaWYgKHRoaXMuZmlsZSkge1xuICAgICAgbGV0IG5hbWVBcnJheSA9IHRoaXMuZmlsZS5zcGxpdCgnLycpO1xuICAgICAgaWYgKG5hbWVBcnJheS5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgcmV0dXJuIG5hbWVBcnJheVsxXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuYW1lQXJyYXlbMF07XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGdldEZpbGVFeHRlbnNpb24oZmlsZTogYW55KSB7XG4gICAgcmV0dXJuIGZpbGUuc3BsaXQoJy4nKS5wb3AoKTtcbiAgfVxuXG59XG4iLCI8bWF0LWNhcmQgKm5nSWY9XCJ2aWV3ZXJUeXBlID09PSAnaW1hZ2UnXCI+XG4gICAgPGltZyBbbmdTdHlsZV09XCJjb25maWcuaW1hZ2VTdHlsZVwiIG1hdC1jYXJkLWltYWdlIFtzcmNdPVwiZmlsZVVybFwiIHN0eWxlPVwib2JqZWN0LWZpdDogY29udGFpbjtcIiAvPlxuICAgIDxtYXQtY2FyZC1hY3Rpb25zPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwicmVtb3ZlRmlsZSgpXCIgKm5nSWY9XCIhZGlzYWJsZUVkaXQgJiYgIWNvbmZpZy5oaWRlUmVtb3ZlXCI+XG4gICAgICAgICAgICBSZW1vdmVcbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtY2FyZC1hY3Rpb25zPlxuPC9tYXQtY2FyZD5cblxuPGRpdiBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejEgcC00XCIgKm5nSWY9XCJ2aWV3ZXJUeXBlICE9PSAnaW1hZ2UnXCI+XG4gICAgPGEgW2hyZWZdPVwiZmlsZVVybFwiIHRhcmdldD1cIl9ibGFua1wiPnt7ZmlsZU5hbWV9fTwvYT5cbiAgICA8bmd4LWRvYy12aWV3ZXIgW25nU3R5bGVdPVwiY29uZmlnLnZpZXdlclN0eWxlXCIgKm5nSWY9XCJ2aWV3ZXJUeXBlICE9PSBudWxsXCIgW3VybF09XCJmaWxlVXJsXCIgW3ZpZXdlcl09XCJ2aWV3ZXJUeXBlXCI+XG4gICAgPC9uZ3gtZG9jLXZpZXdlcj5cbiAgICA8ZGl2IGNsYXNzPVwibXQtMlwiICpuZ0lmPVwiIWNvbmZpZy5oaWRlUmVtb3ZlXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJyZW1vdmVGaWxlKClcIiAqbmdJZj1cIiFkaXNhYmxlRWRpdFwiPlxuICAgICAgICAgICAgUmVtb3ZlXG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
@@ -1,6 +1,5 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
- import { FlexLayoutModule } from '@angular/flex-layout';
4
3
  import { DocumentViewerComponent } from './document-viewer.component';
5
4
  import { NgxDocViewerModule } from 'ngx-doc-viewer';
6
5
  import { MaterialModule } from '../material.module';
@@ -8,11 +7,9 @@ import * as i0 from "@angular/core";
8
7
  export class DocumentViewerModule {
9
8
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DocumentViewerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
9
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: DocumentViewerModule, declarations: [DocumentViewerComponent], imports: [CommonModule,
11
- FlexLayoutModule,
12
10
  NgxDocViewerModule,
13
11
  MaterialModule], exports: [DocumentViewerComponent] }); }
14
12
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DocumentViewerModule, imports: [CommonModule,
15
- FlexLayoutModule,
16
13
  NgxDocViewerModule,
17
14
  MaterialModule] }); }
18
15
  }
@@ -21,7 +18,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
21
18
  args: [{
22
19
  imports: [
23
20
  CommonModule,
24
- FlexLayoutModule,
25
21
  NgxDocViewerModule,
26
22
  MaterialModule
27
23
  ],
@@ -33,4 +29,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
33
29
  ]
34
30
  }]
35
31
  }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdmlld2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvZG9jdW1lbnQtdmlld2VyL2RvY3VtZW50LXZpZXdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQWdCcEQsTUFBTSxPQUFPLG9CQUFvQjsrR0FBcEIsb0JBQW9CO2dIQUFwQixvQkFBb0IsaUJBTjdCLHVCQUF1QixhQU52QixZQUFZO1lBQ1osZ0JBQWdCO1lBQ2hCLGtCQUFrQjtZQUNsQixjQUFjLGFBTWQsdUJBQXVCO2dIQUdkLG9CQUFvQixZQVo3QixZQUFZO1lBQ1osZ0JBQWdCO1lBQ2hCLGtCQUFrQjtZQUNsQixjQUFjOzs0RkFTTCxvQkFBb0I7a0JBZGhDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLGNBQWM7cUJBQ2Y7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLHVCQUF1QjtxQkFDeEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLHVCQUF1QjtxQkFDeEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZsZXhMYXlvdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mbGV4LWxheW91dCc7XG5pbXBvcnQgeyBEb2N1bWVudFZpZXdlckNvbXBvbmVudCB9IGZyb20gJy4vZG9jdW1lbnQtdmlld2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hEb2NWaWV3ZXJNb2R1bGUgfSBmcm9tICduZ3gtZG9jLXZpZXdlcic7XG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4uL21hdGVyaWFsLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRmxleExheW91dE1vZHVsZSxcbiAgICBOZ3hEb2NWaWV3ZXJNb2R1bGUsXG4gICAgTWF0ZXJpYWxNb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRG9jdW1lbnRWaWV3ZXJDb21wb25lbnRcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIERvY3VtZW50Vmlld2VyQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRWaWV3ZXJNb2R1bGUgeyB9XG4iXX0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdmlld2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvZG9jdW1lbnQtdmlld2VyL2RvY3VtZW50LXZpZXdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQWVwRCxNQUFNLE9BQU8sb0JBQW9COytHQUFwQixvQkFBb0I7Z0hBQXBCLG9CQUFvQixpQkFON0IsdUJBQXVCLGFBTHZCLFlBQVk7WUFDWixrQkFBa0I7WUFDbEIsY0FBYyxhQU1kLHVCQUF1QjtnSEFHZCxvQkFBb0IsWUFYN0IsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixjQUFjOzs0RkFTTCxvQkFBb0I7a0JBYmhDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osa0JBQWtCO3dCQUNsQixjQUFjO3FCQUNmO29CQUNELFlBQVksRUFBRTt3QkFDWix1QkFBdUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCx1QkFBdUI7cUJBQ3hCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEb2N1bWVudFZpZXdlckNvbXBvbmVudCB9IGZyb20gJy4vZG9jdW1lbnQtdmlld2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hEb2NWaWV3ZXJNb2R1bGUgfSBmcm9tICduZ3gtZG9jLXZpZXdlcic7XG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4uL21hdGVyaWFsLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTmd4RG9jVmlld2VyTW9kdWxlLFxuICAgIE1hdGVyaWFsTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIERvY3VtZW50Vmlld2VyQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBEb2N1bWVudFZpZXdlckNvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERvY3VtZW50Vmlld2VyTW9kdWxlIHsgfVxuIl19
@@ -1,22 +1,13 @@
1
1
  import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
2
  import { EmailSubscriptionForUserRoutingModule } from './email-subscription-for-user-routing.module';
4
3
  import { EmailSubscriptionForUserComponent } from './email-subscription-for-user.component';
5
- import { InfiniteScrollModule } from 'ngx-infinite-scroll';
6
- import { FlexLayoutModule } from '@angular/flex-layout';
7
- import { MaterialModule } from '../../material.module';
4
+ import { SharedModule } from '../../shared.module';
8
5
  import * as i0 from "@angular/core";
9
6
  export class EmailSubscriptionForUserModule {
10
7
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmailSubscriptionForUserModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: EmailSubscriptionForUserModule, declarations: [EmailSubscriptionForUserComponent], imports: [CommonModule,
12
- InfiniteScrollModule,
13
- MaterialModule,
14
- FlexLayoutModule,
8
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: EmailSubscriptionForUserModule, declarations: [EmailSubscriptionForUserComponent], imports: [SharedModule,
15
9
  EmailSubscriptionForUserRoutingModule], exports: [EmailSubscriptionForUserComponent] }); }
16
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmailSubscriptionForUserModule, imports: [CommonModule,
17
- InfiniteScrollModule,
18
- MaterialModule,
19
- FlexLayoutModule,
10
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmailSubscriptionForUserModule, imports: [SharedModule,
20
11
  EmailSubscriptionForUserRoutingModule] }); }
21
12
  }
22
13
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmailSubscriptionForUserModule, decorators: [{
@@ -24,13 +15,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
24
15
  args: [{
25
16
  declarations: [EmailSubscriptionForUserComponent],
26
17
  imports: [
27
- CommonModule,
28
- InfiniteScrollModule,
29
- MaterialModule,
30
- FlexLayoutModule,
18
+ SharedModule,
31
19
  EmailSubscriptionForUserRoutingModule
32
20
  ],
33
21
  exports: [EmailSubscriptionForUserComponent]
34
22
  }]
35
23
  }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwtc3Vic2NyaXB0aW9uLWZvci11c2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvZW1haWwtc3Vic2NyaXB0aW9uL2VtYWlsLXN1YnNjcmlwdGlvbi1mb3ItdXNlci9lbWFpbC1zdWJzY3JpcHRpb24tZm9yLXVzZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFjdkQsTUFBTSxPQUFPLDhCQUE4QjsrR0FBOUIsOEJBQThCO2dIQUE5Qiw4QkFBOEIsaUJBVjFCLGlDQUFpQyxhQUU5QyxZQUFZO1lBQ1osb0JBQW9CO1lBQ3BCLGNBQWM7WUFDZCxnQkFBZ0I7WUFDaEIscUNBQXFDLGFBRTdCLGlDQUFpQztnSEFFaEMsOEJBQThCLFlBUnZDLFlBQVk7WUFDWixvQkFBb0I7WUFDcEIsY0FBYztZQUNkLGdCQUFnQjtZQUNoQixxQ0FBcUM7OzRGQUk1Qiw4QkFBOEI7a0JBWDFDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsaUNBQWlDLENBQUM7b0JBQ2pELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLHFDQUFxQztxQkFDdEM7b0JBQ0QsT0FBTyxFQUFFLENBQUMsaUNBQWlDLENBQUM7aUJBQzdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IEVtYWlsU3Vic2NyaXB0aW9uRm9yVXNlclJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL2VtYWlsLXN1YnNjcmlwdGlvbi1mb3ItdXNlci1yb3V0aW5nLm1vZHVsZSc7XG5pbXBvcnQgeyBFbWFpbFN1YnNjcmlwdGlvbkZvclVzZXJDb21wb25lbnQgfSBmcm9tICcuL2VtYWlsLXN1YnNjcmlwdGlvbi1mb3ItdXNlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5maW5pdGVTY3JvbGxNb2R1bGUgfSBmcm9tICduZ3gtaW5maW5pdGUtc2Nyb2xsJztcbmltcG9ydCB7IEZsZXhMYXlvdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mbGV4LWxheW91dCc7XG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4uLy4uL21hdGVyaWFsLm1vZHVsZSc7XG5cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbRW1haWxTdWJzY3JpcHRpb25Gb3JVc2VyQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBJbmZpbml0ZVNjcm9sbE1vZHVsZSxcbiAgICBNYXRlcmlhbE1vZHVsZSxcbiAgICBGbGV4TGF5b3V0TW9kdWxlLFxuICAgIEVtYWlsU3Vic2NyaXB0aW9uRm9yVXNlclJvdXRpbmdNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW0VtYWlsU3Vic2NyaXB0aW9uRm9yVXNlckNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgRW1haWxTdWJzY3JpcHRpb25Gb3JVc2VyTW9kdWxlIHsgfVxuIl19
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwtc3Vic2NyaXB0aW9uLWZvci11c2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvZW1haWwtc3Vic2NyaXB0aW9uL2VtYWlsLXN1YnNjcmlwdGlvbi1mb3ItdXNlci9lbWFpbC1zdWJzY3JpcHRpb24tZm9yLXVzZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDckcsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDNUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQVduRCxNQUFNLE9BQU8sOEJBQThCOytHQUE5Qiw4QkFBOEI7Z0hBQTlCLDhCQUE4QixpQkFQMUIsaUNBQWlDLGFBRTlDLFlBQVk7WUFDWixxQ0FBcUMsYUFFN0IsaUNBQWlDO2dIQUVoQyw4QkFBOEIsWUFMdkMsWUFBWTtZQUNaLHFDQUFxQzs7NEZBSTVCLDhCQUE4QjtrQkFSMUMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztvQkFDakQsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1oscUNBQXFDO3FCQUN0QztvQkFDRCxPQUFPLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztpQkFDN0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBFbWFpbFN1YnNjcmlwdGlvbkZvclVzZXJSb3V0aW5nTW9kdWxlIH0gZnJvbSAnLi9lbWFpbC1zdWJzY3JpcHRpb24tZm9yLXVzZXItcm91dGluZy5tb2R1bGUnO1xuaW1wb3J0IHsgRW1haWxTdWJzY3JpcHRpb25Gb3JVc2VyQ29tcG9uZW50IH0gZnJvbSAnLi9lbWFpbC1zdWJzY3JpcHRpb24tZm9yLXVzZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC5tb2R1bGUnO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0VtYWlsU3Vic2NyaXB0aW9uRm9yVXNlckNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBTaGFyZWRNb2R1bGUsXG4gICAgRW1haWxTdWJzY3JpcHRpb25Gb3JVc2VyUm91dGluZ01vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbRW1haWxTdWJzY3JpcHRpb25Gb3JVc2VyQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBFbWFpbFN1YnNjcmlwdGlvbkZvclVzZXJNb2R1bGUgeyB9XG4iXX0=