@elderbyte/ngx-starter 14.3.0 → 14.3.3

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 (293) hide show
  1. package/esm2020/lib/common/data/data-context/data-context-base.mjs +1 -1
  2. package/esm2020/lib/common/data/data-context/data-context-continuable-paged.mjs +1 -1
  3. package/esm2020/lib/common/data/data-context/data-context-simple.mjs +1 -1
  4. package/esm2020/lib/common/enums/elder-enum-translation.service.mjs +3 -3
  5. package/esm2020/lib/common/forms/elder-form-field-control.mjs +139 -0
  6. package/esm2020/lib/common/forms/form-field-base.component.mjs +3 -3
  7. package/esm2020/lib/common/forms/multi-model-base.component.mjs +3 -3
  8. package/esm2020/lib/common/forms/public_api.mjs +2 -1
  9. package/esm2020/lib/common/forms/template-composite-control.mjs +3 -3
  10. package/esm2020/lib/common/forms/value-accessor-base.mjs +3 -3
  11. package/esm2020/lib/common/http/http-client-builder.service.mjs +3 -3
  12. package/esm2020/lib/common/http/http-client-pristine.mjs +3 -3
  13. package/esm2020/lib/common/http/transfer/data-transfer-factory.mjs +3 -3
  14. package/esm2020/lib/common/http/transfer/http-data-transfer.mjs +1 -1
  15. package/esm2020/lib/common/public_api.mjs +1 -2
  16. package/esm2020/lib/common/url/elder-url-fragment-params.service.mjs +3 -3
  17. package/esm2020/lib/components/access-denied/elder-access-denied.component.mjs +3 -3
  18. package/esm2020/lib/components/access-denied/elder-access-denied.module.mjs +4 -4
  19. package/esm2020/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +3 -3
  20. package/esm2020/lib/components/auditing/elder-audit.module.mjs +4 -4
  21. package/esm2020/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +3 -3
  22. package/esm2020/lib/components/button-group/elder-button-group.module.mjs +4 -4
  23. package/esm2020/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +3 -3
  24. package/esm2020/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +3 -3
  25. package/esm2020/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +4 -4
  26. package/esm2020/lib/components/card-organizer/elder-card-organizer.module.mjs +4 -4
  27. package/esm2020/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +3 -3
  28. package/esm2020/lib/components/cards/elder-card/elder-card.component.mjs +18 -18
  29. package/esm2020/lib/components/cards/elder-card/elder-card.module.mjs +4 -4
  30. package/esm2020/lib/components/connectivity/elder-connectivity.module.mjs +4 -4
  31. package/esm2020/lib/components/connectivity/elder-connectivity.service.mjs +3 -3
  32. package/esm2020/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +3 -3
  33. package/esm2020/lib/components/containers/elder-containers.module.mjs +4 -4
  34. package/esm2020/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +3 -3
  35. package/esm2020/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +3 -3
  36. package/esm2020/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +3 -3
  37. package/esm2020/lib/components/csv/elder-csv.module.mjs +4 -4
  38. package/esm2020/lib/components/currency/elder-currency.module.mjs +4 -4
  39. package/esm2020/lib/components/currency/elder-currency.pipe.mjs +3 -3
  40. package/esm2020/lib/components/data-transfer/elder-data-transfer.module.mjs +4 -4
  41. package/esm2020/lib/components/data-transfer/elder-data-transfer.service.mjs +3 -3
  42. package/esm2020/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +3 -3
  43. package/esm2020/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +3 -3
  44. package/esm2020/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +3 -3
  45. package/esm2020/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +3 -3
  46. package/esm2020/lib/components/data-view/base/data-view-options-provider-binding.mjs +63 -0
  47. package/esm2020/lib/components/data-view/base/elder-data-view-base.mjs +56 -13
  48. package/esm2020/lib/components/data-view/base/elder-data-view-options-provider.mjs +44 -0
  49. package/esm2020/lib/components/data-view/base/elder-data-view-options.mjs +42 -0
  50. package/esm2020/lib/components/data-view/base/public_api.mjs +6 -0
  51. package/esm2020/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +3 -3
  52. package/esm2020/lib/components/data-view/common/elder-data-common.module.mjs +4 -4
  53. package/esm2020/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +6 -6
  54. package/esm2020/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +3 -3
  55. package/esm2020/lib/components/data-view/common/selection/data-context-selection.directive.mjs +3 -3
  56. package/esm2020/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +3 -3
  57. package/esm2020/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +16 -30
  58. package/esm2020/lib/components/data-view/grid/elder-grid.module.mjs +4 -4
  59. package/esm2020/lib/components/data-view/public_api.mjs +2 -2
  60. package/esm2020/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +3 -3
  61. package/esm2020/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +4 -4
  62. package/esm2020/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +4 -4
  63. package/esm2020/lib/components/data-view/table/elder-number-cell.directive.mjs +3 -3
  64. package/esm2020/lib/components/data-view/table/elder-paginator-intl.mjs +3 -3
  65. package/esm2020/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +3 -3
  66. package/esm2020/lib/components/data-view/table/elder-table/elder-table.component.mjs +12 -46
  67. package/esm2020/lib/components/data-view/table/elder-table-column.directive.mjs +3 -3
  68. package/esm2020/lib/components/data-view/table/elder-table-extension.directive.mjs +4 -4
  69. package/esm2020/lib/components/data-view/table/elder-table-root.directive.mjs +3 -3
  70. package/esm2020/lib/components/data-view/table/elder-table-row.directive.mjs +3 -3
  71. package/esm2020/lib/components/data-view/table/elder-table-sort.directive.mjs +3 -3
  72. package/esm2020/lib/components/data-view/table/elder-table.module.mjs +4 -4
  73. package/esm2020/lib/components/data-view/table/model/elder-table-model.mjs +3 -3
  74. package/esm2020/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +3 -3
  75. package/esm2020/lib/components/dialogs/elder-dialog.module.mjs +7 -7
  76. package/esm2020/lib/components/dialogs/elder-dialog.service.mjs +3 -3
  77. package/esm2020/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +3 -3
  78. package/esm2020/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +3 -3
  79. package/esm2020/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +3 -3
  80. package/esm2020/lib/components/errors/elder-error.module.mjs +4 -4
  81. package/esm2020/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +3 -3
  82. package/esm2020/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +3 -3
  83. package/esm2020/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +4 -4
  84. package/esm2020/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +4 -4
  85. package/esm2020/lib/components/files/elder-file-drop-zone.directive.mjs +3 -3
  86. package/esm2020/lib/components/files/elder-file-select.directive.mjs +3 -3
  87. package/esm2020/lib/components/files/elder-file.module.mjs +4 -4
  88. package/esm2020/lib/components/files/file-select/file-select.component.mjs +3 -3
  89. package/esm2020/lib/components/files/file-upload/file-upload.component.mjs +3 -3
  90. package/esm2020/lib/components/forms/clipboard/elder-clipboard.service.mjs +3 -3
  91. package/esm2020/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +3 -3
  92. package/esm2020/lib/components/forms/directives/elder-clipboard-put.directive.mjs +3 -3
  93. package/esm2020/lib/components/forms/directives/elder-delayed-focus.directive.mjs +3 -3
  94. package/esm2020/lib/components/forms/directives/elder-form-field-dense.directive.mjs +3 -3
  95. package/esm2020/lib/components/forms/directives/elder-form-field-label.directive.mjs +3 -3
  96. package/esm2020/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +3 -3
  97. package/esm2020/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +3 -3
  98. package/esm2020/lib/components/forms/directives/elder-forms-directives.module.mjs +13 -13
  99. package/esm2020/lib/components/forms/directives/elder-input-pattern.directive.mjs +3 -3
  100. package/esm2020/lib/components/forms/directives/elder-key-event.directive.mjs +3 -3
  101. package/esm2020/lib/components/forms/directives/elder-max.directive.mjs +3 -3
  102. package/esm2020/lib/components/forms/directives/elder-min.directive.mjs +3 -3
  103. package/esm2020/lib/components/forms/directives/elder-next-focusable.directive.mjs +3 -3
  104. package/esm2020/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +3 -3
  105. package/esm2020/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +3 -3
  106. package/esm2020/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +4 -4
  107. package/esm2020/lib/components/forms/directives/elder-touched.directive.mjs +3 -3
  108. package/esm2020/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +3 -3
  109. package/esm2020/lib/components/forms/directives/validation/elder-multiple-of.validator.mjs +3 -3
  110. package/esm2020/lib/components/forms/directives/validation/elder-required-ignore-zero.validator.mjs +3 -3
  111. package/esm2020/lib/components/forms/elder-forms.module.mjs +4 -4
  112. package/esm2020/lib/components/forms/search/elder-search-context.directive.mjs +6 -6
  113. package/esm2020/lib/components/forms/search/elder-search-input.directive.mjs +4 -4
  114. package/esm2020/lib/components/forms/search/elder-search.module.mjs +4 -4
  115. package/esm2020/lib/components/forms/search/search-box/elder-search-box.component.mjs +4 -4
  116. package/esm2020/lib/components/forms/search/search-box/elder-search-panel.component.mjs +3 -3
  117. package/esm2020/lib/components/global-search/elder-global-search.component.mjs +3 -3
  118. package/esm2020/lib/components/global-search/elder-global-search.module.mjs +4 -4
  119. package/esm2020/lib/components/global-search/elder-global-search.service.mjs +3 -3
  120. package/esm2020/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +3 -3
  121. package/esm2020/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +4 -4
  122. package/esm2020/lib/components/headers/elder-header/elder-header.component.mjs +3 -3
  123. package/esm2020/lib/components/headers/elder-header.module.mjs +4 -4
  124. package/esm2020/lib/components/http-support/elder-http-client.service.mjs +3 -3
  125. package/esm2020/lib/components/i18n/entities/elder-i18n-entities.module.mjs +4 -4
  126. package/esm2020/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +4 -4
  127. package/esm2020/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +3 -3
  128. package/esm2020/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +3 -3
  129. package/esm2020/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +4 -4
  130. package/esm2020/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +3 -3
  131. package/esm2020/lib/components/i18n/entities/elder-localized-texts.directive.mjs +4 -4
  132. package/esm2020/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +3 -3
  133. package/esm2020/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +3 -3
  134. package/esm2020/lib/components/i18n/entities/picker/localisation-picker.service.mjs +3 -3
  135. package/esm2020/lib/components/i18n/language/elder-language-interceptor.mjs +3 -3
  136. package/esm2020/lib/components/i18n/language/elder-language.module.mjs +4 -4
  137. package/esm2020/lib/components/i18n/language/elder-language.service.mjs +3 -3
  138. package/esm2020/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +3 -3
  139. package/esm2020/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +4 -4
  140. package/esm2020/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +119 -0
  141. package/esm2020/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +137 -0
  142. package/esm2020/lib/components/iframes/elder-iframe.module.mjs +22 -10
  143. package/esm2020/lib/components/iframes/iframe-close.directive.mjs +3 -3
  144. package/esm2020/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +3 -3
  145. package/esm2020/lib/components/iframes/iframe-host/iframe-host.component.mjs +58 -32
  146. package/esm2020/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +3 -3
  147. package/esm2020/lib/components/iframes/iframe.service.mjs +6 -8
  148. package/esm2020/lib/components/iframes/typed-event-message.mjs +42 -0
  149. package/esm2020/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +7 -5
  150. package/esm2020/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +4 -4
  151. package/esm2020/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +7 -7
  152. package/esm2020/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.mjs +3 -3
  153. package/esm2020/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +4 -4
  154. package/esm2020/lib/components/input/autocomplete/elder-autocomplete.module.mjs +4 -4
  155. package/esm2020/lib/components/labels/elder-labels.module.mjs +4 -4
  156. package/esm2020/lib/components/labels/labels-input/labels-input.component.mjs +3 -3
  157. package/esm2020/lib/components/measures/dimensions-input/elder-dimensions-input.component.mjs +3 -3
  158. package/esm2020/lib/components/measures/directives/elder-unit-select.directive.mjs +5 -5
  159. package/esm2020/lib/components/measures/elder-measures.module.mjs +8 -8
  160. package/esm2020/lib/components/measures/elder-quantity-transform.pipe.mjs +3 -3
  161. package/esm2020/lib/components/measures/elder-quantity.pipe.mjs +3 -3
  162. package/esm2020/lib/components/measures/elder-unit.service.mjs +3 -3
  163. package/esm2020/lib/components/measures/quantity-input/elder-quantity-input.component.mjs +3 -3
  164. package/esm2020/lib/components/measures/util/elder-quantity.service.mjs +3 -3
  165. package/esm2020/lib/components/multi-autocomplete/elder-multi-auto-complete.module.mjs +4 -4
  166. package/esm2020/lib/components/multi-autocomplete/elder-multi-autocomplete.component.mjs +3 -3
  167. package/esm2020/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +4 -4
  168. package/esm2020/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +4 -4
  169. package/esm2020/lib/components/navigation/nav/elder-nav.module.mjs +4 -4
  170. package/esm2020/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +4 -4
  171. package/esm2020/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +3 -3
  172. package/esm2020/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +3 -3
  173. package/esm2020/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +3 -3
  174. package/esm2020/lib/components/navigation/toolbar/elder-toolbar.module.mjs +4 -4
  175. package/esm2020/lib/components/navigation/toolbar/elder-toolbar.service.mjs +3 -3
  176. package/esm2020/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +4 -4
  177. package/esm2020/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +3 -3
  178. package/esm2020/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +3 -3
  179. package/esm2020/lib/components/overlays/elder-overlay-origin.directive.mjs +3 -3
  180. package/esm2020/lib/components/overlays/elder-overlay-trigger.directive.mjs +3 -3
  181. package/esm2020/lib/components/overlays/elder-overlay.component.mjs +4 -4
  182. package/esm2020/lib/components/overlays/elder-overlay.module.mjs +4 -4
  183. package/esm2020/lib/components/panels/card-panel/elder-card-panel.component.mjs +3 -3
  184. package/esm2020/lib/components/panels/elder-panel.module.mjs +4 -4
  185. package/esm2020/lib/components/panels/flat/elder-panel.component.mjs +3 -3
  186. package/esm2020/lib/components/select/auto/elder-auto-select-first.directive.mjs +5 -5
  187. package/esm2020/lib/components/select/auto/elder-select-first-util.mjs +1 -1
  188. package/esm2020/lib/components/select/elder-select-base.mjs +3 -3
  189. package/esm2020/lib/components/select/elder-select-chip.directive.mjs +6 -6
  190. package/esm2020/lib/components/select/elder-select-on-tab.directive.mjs +4 -4
  191. package/esm2020/lib/components/select/elder-select-value.directive.mjs +3 -3
  192. package/esm2020/lib/components/select/elder-select.module.mjs +8 -8
  193. package/esm2020/lib/components/select/multi/elder-multi-select-base.mjs +3 -3
  194. package/esm2020/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +3 -3
  195. package/esm2020/lib/components/select/popup/selection-model-popup.directive.mjs +23 -28
  196. package/esm2020/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +3 -3
  197. package/esm2020/lib/components/select/single/elder-select/elder-select.component.mjs +419 -0
  198. package/esm2020/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +3 -3
  199. package/esm2020/lib/components/select-chip-list/elder-chip-list-select.module.mjs +4 -4
  200. package/esm2020/lib/components/select-list/elder-select-list.module.mjs +4 -4
  201. package/esm2020/lib/components/select-list/select-list/elder-select-list.component.mjs +3 -3
  202. package/esm2020/lib/components/select-list/select-list-item/elder-select-list-item.component.mjs +3 -3
  203. package/esm2020/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +3 -3
  204. package/esm2020/lib/components/shell/drawers/elder-router-outlet.service.mjs +3 -3
  205. package/esm2020/lib/components/shell/elder-shell-slot.directive.mjs +3 -3
  206. package/esm2020/lib/components/shell/elder-shell.module.mjs +4 -4
  207. package/esm2020/lib/components/shell/elder-shell.service.mjs +3 -3
  208. package/esm2020/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +4 -4
  209. package/esm2020/lib/components/shell/shell/elder-shell.component.mjs +13 -13
  210. package/esm2020/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +3 -3
  211. package/esm2020/lib/components/tabs/elder-tab/elder-tab.directive.mjs +3 -3
  212. package/esm2020/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +4 -4
  213. package/esm2020/lib/components/tabs/elder-tab.module.mjs +4 -4
  214. package/esm2020/lib/components/theme/elder-theme-applier.directive.mjs +4 -4
  215. package/esm2020/lib/components/theme/elder-theme-preference.service.mjs +3 -3
  216. package/esm2020/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +3 -3
  217. package/esm2020/lib/components/theme/elder-theme.directive.mjs +4 -4
  218. package/esm2020/lib/components/theme/elder-theme.module.mjs +4 -4
  219. package/esm2020/lib/components/theme/elder-theme.service.mjs +3 -3
  220. package/esm2020/lib/components/time/date-adapters/custom-date-adapter.mjs +3 -3
  221. package/esm2020/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +3 -3
  222. package/esm2020/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +3 -3
  223. package/esm2020/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +3 -3
  224. package/esm2020/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +3 -3
  225. package/esm2020/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +3 -3
  226. package/esm2020/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +3 -3
  227. package/esm2020/lib/components/time/elder-time.module.mjs +8 -8
  228. package/esm2020/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +3 -3
  229. package/esm2020/lib/components/toasts/elder-toast.module.mjs +4 -4
  230. package/esm2020/lib/components/toasts/elder-toast.service.mjs +9 -9
  231. package/esm2020/lib/components/toasts/standard-toast/standard-toast.component.mjs +3 -3
  232. package/esm2020/lib/components/url-fragment/elder-url-fragment.module.mjs +4 -4
  233. package/esm2020/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +3 -3
  234. package/esm2020/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +3 -3
  235. package/esm2020/lib/components/viewers/elder-viewers.module.mjs +4 -4
  236. package/esm2020/lib/features/event-source/elder-event-source.service.mjs +3 -3
  237. package/esm2020/lib/features/kafent/access-token-provider.mjs +3 -3
  238. package/esm2020/lib/features/kafent/kafent-config.mjs +3 -3
  239. package/esm2020/lib/features/kafent/kafent-event-stream.mjs +3 -3
  240. package/esm2020/lib/features/kafent/kafent-event.service.mjs +3 -3
  241. package/esm2020/lib/features/kafent/kafent.module.mjs +4 -4
  242. package/esm2020/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +3 -3
  243. package/esm2020/lib/pipes/bytes.pipe.mjs +3 -3
  244. package/esm2020/lib/pipes/elder-pipes.module.mjs +10 -10
  245. package/esm2020/lib/pipes/elder-repeat.pipe.mjs +3 -3
  246. package/esm2020/lib/pipes/elder-round.pipe.mjs +3 -3
  247. package/esm2020/lib/pipes/elder-safe-url.pipe.mjs +3 -3
  248. package/esm2020/lib/pipes/elder-truncate.pipe.mjs +3 -3
  249. package/esm2020/lib/pipes/iso-duration.pipe.mjs +3 -3
  250. package/esm2020/lib/pipes/iso-interval-parse.pipe.mjs +3 -3
  251. package/esm2020/lib/pipes/iso-interval.pipe.mjs +3 -3
  252. package/esm2020/lib/pipes/time-ago.pipe.mjs +3 -3
  253. package/esm2020/lib/pipes/time-duration.pipe.mjs +3 -3
  254. package/esm2020/lib/pipes/weight.pipe.mjs +3 -3
  255. package/fesm2015/elderbyte-ngx-starter.mjs +2717 -2204
  256. package/fesm2015/elderbyte-ngx-starter.mjs.map +1 -1
  257. package/fesm2020/elderbyte-ngx-starter.mjs +2472 -1962
  258. package/fesm2020/elderbyte-ngx-starter.mjs.map +1 -1
  259. package/lib/common/data/data-context/data-context-base.d.ts +1 -1
  260. package/lib/common/forms/elder-form-field-control.d.ts +86 -0
  261. package/lib/common/forms/public_api.d.ts +1 -0
  262. package/lib/common/public_api.d.ts +0 -1
  263. package/lib/components/data-view/base/data-view-options-provider-binding.d.ts +39 -0
  264. package/lib/components/data-view/base/elder-data-view-base.d.ts +29 -6
  265. package/lib/{common/rxjs/lazy-behavior-subject.d.ts → components/data-view/base/elder-data-view-options-provider.d.ts} +20 -20
  266. package/lib/components/data-view/base/elder-data-view-options.d.ts +33 -0
  267. package/lib/components/data-view/base/public_api.d.ts +5 -0
  268. package/lib/components/data-view/grid/elder-grid/elder-grid.component.d.ts +4 -6
  269. package/lib/components/data-view/public_api.d.ts +1 -1
  270. package/lib/components/data-view/table/elder-table/elder-table.component.d.ts +5 -19
  271. package/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.d.ts +66 -0
  272. package/lib/components/iframes/data-view/data-view-iframe-adapter.directive.d.ts +62 -0
  273. package/lib/components/iframes/elder-iframe.module.d.ts +14 -10
  274. package/lib/components/iframes/iframe-host/iframe-host.component.d.ts +28 -10
  275. package/lib/components/iframes/iframe.service.d.ts +3 -3
  276. package/lib/components/iframes/typed-event-message.d.ts +26 -0
  277. package/lib/components/measures/directives/elder-unit-select.directive.d.ts +1 -1
  278. package/lib/components/select/auto/elder-auto-select-first.directive.d.ts +1 -1
  279. package/lib/components/select/auto/elder-select-first-util.d.ts +1 -1
  280. package/lib/components/select/elder-select.module.d.ts +3 -3
  281. package/lib/components/select/popup/selection-model-popup.directive.d.ts +5 -13
  282. package/lib/components/select/{elder-select → single/elder-select}/elder-select.component.d.ts +3 -3
  283. package/package.json +3 -2
  284. package/src/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.scss +0 -0
  285. package/src/lib/components/select/{elder-select → single/elder-select}/elder-select.component.scss +0 -0
  286. package/esm2020/lib/common/rxjs/lazy-behavior-subject.mjs +0 -59
  287. package/esm2020/lib/common/rxjs/public_api.mjs +0 -2
  288. package/esm2020/lib/components/data-view/base/elder-data-view-base.module.mjs +0 -18
  289. package/esm2020/lib/components/iframes/iframe-message.mjs +0 -2
  290. package/esm2020/lib/components/select/elder-select/elder-select.component.mjs +0 -411
  291. package/lib/common/rxjs/public_api.d.ts +0 -1
  292. package/lib/components/data-view/base/elder-data-view-base.module.d.ts +0 -9
  293. package/lib/components/iframes/iframe-message.d.ts +0 -5
@@ -239,9 +239,9 @@ export class ElderTableActivationDirective {
239
239
  }
240
240
  }
241
241
  }
242
- ElderTableActivationDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderTableActivationDirective, deps: [{ token: i1.ElderTableComponent }], target: i0.ɵɵFactoryTarget.Directive });
243
- ElderTableActivationDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: ElderTableActivationDirective, selector: "elder-table[elderTableActivation]", inputs: { activationOptions: ["elderTableActivation", "activationOptions"], activeItem: "activeItem" }, outputs: { activeItemChange: "activeItemChange" }, host: { listeners: { "keydown": "onKeydown($event)" } }, exportAs: ["elderTableActivation"], ngImport: i0 });
244
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderTableActivationDirective, decorators: [{
242
+ ElderTableActivationDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderTableActivationDirective, deps: [{ token: i1.ElderTableComponent }], target: i0.ɵɵFactoryTarget.Directive });
243
+ ElderTableActivationDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderTableActivationDirective, selector: "elder-table[elderTableActivation]", inputs: { activationOptions: ["elderTableActivation", "activationOptions"], activeItem: "activeItem" }, outputs: { activeItemChange: "activeItemChange" }, host: { listeners: { "keydown": "onKeydown($event)" } }, exportAs: ["elderTableActivation"], ngImport: i0 });
244
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderTableActivationDirective, decorators: [{
245
245
  type: Directive,
246
246
  args: [{
247
247
  selector: 'elder-table[elderTableActivation]',
@@ -258,4 +258,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
258
258
  }], activeItem: [{
259
259
  type: Input
260
260
  }] } });
261
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItdGFibGUtYWN0aXZhdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy90YWJsZS9hY3RpdmF0aW9uL2VsZGVyLXRhYmxlLWFjdGl2YXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTSxNQUFNLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxPQUFPLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7OztBQVN6RSxNQUFNLE9BQU8sNkJBQTZCO0lBcUJ4Qzs7OztnRkFJNEU7SUFFNUUsWUFDbUIsVUFBK0I7UUFBL0IsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUExQmxEOzs7O29GQUk0RTtRQUUzRCxXQUFNLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXhELGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUU5QixnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFJLElBQUksQ0FBQyxDQUFDO1FBR3BELHNCQUFpQixHQUFnQyxFQUFFLENBQUM7UUFFbkQsVUFBSyxHQUFRLEVBQUUsQ0FBQztRQUVQLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBOEIsRUFBRSxDQUFDLENBQUM7SUFVMUUsQ0FBQztJQUVMOzs7O2dGQUk0RTtJQUVyRSxlQUFlO1FBRXBCLE1BQU0sS0FB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QUksSUFBSSxFQUFFO1lBQ1IsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkQsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwQzthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7OzBIQTlSVSw2QkFBNkI7OEdBQTdCLDZCQUE2QjsyRkFBN0IsNkJBQTZCO2tCQUp6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQ0FBbUM7b0JBQzdDLFFBQVEsRUFBRSxzQkFBc0I7aUJBQ2pDOzBHQWdCUSxpQkFBaUI7c0JBRHZCLEtBQUs7dUJBQUMsc0JBQXNCO2dCQWtHdEIsU0FBUztzQkFEZixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFpQ3hCLGdCQUFnQjtzQkFEMUIsTUFBTTtnQkFVSSxVQUFVO3NCQURwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7RWxkZXJUYWJsZVJvd0RpcmVjdGl2ZX0gZnJvbSAnLi4vZWxkZXItdGFibGUtcm93LmRpcmVjdGl2ZSc7XG5pbXBvcnQge3N3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7RWxkZXJUYWJsZUNvbXBvbmVudH0gZnJvbSAnLi4vZWxkZXItdGFibGUvZWxkZXItdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7RWxkZXJUYWJsZUFjdGl2YXRpb25PcHRpb25zfSBmcm9tICcuL2VsZGVyLXRhYmxlLWFjdGl2YXRpb24tb3B0aW9ucyc7XG5pbXBvcnQge0VsZGVySXRlbUFjdGl2YXRvcn0gZnJvbSAnLi9lbGRlci1pdGVtLWFjdGl2YXRvcic7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2VsZGVyLXRhYmxlW2VsZGVyVGFibGVBY3RpdmF0aW9uXScsXG4gIGV4cG9ydEFzOiAnZWxkZXJUYWJsZUFjdGl2YXRpb24nXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyVGFibGVBY3RpdmF0aW9uRGlyZWN0aXZlPFQ+IGltcGxlbWVudHMgRWxkZXJJdGVtQWN0aXZhdG9yPFQ+LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFjdGl2ZUl0ZW0kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUPihudWxsKTtcblxuICBASW5wdXQoJ2VsZGVyVGFibGVBY3RpdmF0aW9uJylcbiAgcHVibGljIGFjdGl2YXRpb25PcHRpb25zOiBFbGRlclRhYmxlQWN0aXZhdGlvbk9wdGlvbnMgPSB7fTtcblxuICBwcml2YXRlIF9kYXRhOiBUW10gPSBbXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHJvd3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxFbGRlclRhYmxlUm93RGlyZWN0aXZlPFQ+W10+KFtdKTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZGVyVGFibGU6IEVsZGVyVGFibGVDb21wb25lbnRcbiAgKSB7IH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXG4gICAgY29uc3Qgcm93cyQgPSB0aGlzLmVsZGVyVGFibGUucm93cyQ7XG4gICAgY29uc3QgZGF0YSQgPSB0aGlzLmVsZGVyVGFibGUuZGF0YUNvbnRleHQkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoZGMgPT4gZGMuZGF0YSksXG4gICAgICB0YXAoZGF0YSA9PiB0aGlzLl9kYXRhID0gZGF0YSlcbiAgICApO1xuXG4gICAgY29tYmluZUxhdGVzdChbcm93cyQsIGRhdGEkXSkucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJClcbiAgICApLnN1YnNjcmliZShcbiAgICAgIChbcm93cywgZGF0YV0pID0+IHtcbiAgICAgICAgdGhpcy5yb3dzJC5uZXh0KFxuICAgICAgICAgIHRoaXMucm93RGF0YVVwZGF0ZWQocm93cywgZGF0YSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5yb3dzJCwgdGhpcy5hY3RpdmVJdGVtJF0pLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpXG4gICAgKS5zdWJzY3JpYmUoXG4gICAgICAoW3Jvd3MsIGFjdGl2ZUl0ZW1dKSA9PiB0aGlzLnVwZGF0ZVJvd3NBY3RpdmF0aW9uKHJvd3MsIGFjdGl2ZUl0ZW0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUm93c0FjdGl2YXRpb24ocm93czogRWxkZXJUYWJsZVJvd0RpcmVjdGl2ZTxUPltdLCBhY3RpdmVJdGVtOiBUKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aXZlSWQgPSB0aGlzLmdldElkKGFjdGl2ZUl0ZW0pO1xuICAgIHJvd3MuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgdGhpcy51cGRhdGVSb3dBY3RpdmF0aW9uKHJvdywgYWN0aXZlSWQpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVSb3dBY3RpdmF0aW9uKHJvdzogRWxkZXJUYWJsZVJvd0RpcmVjdGl2ZTxUPiwgYWN0aXZlSWQ6IGFueSk6IHZvaWQge1xuICAgIGlmIChyb3cubW9kZWwpIHtcbiAgICAgIGlmICh0aGlzLml0ZW1FcXVhbHNJZChyb3cubW9kZWwsIGFjdGl2ZUlkKSkge1xuICAgICAgICBpZiAoIXJvdy5hY3RpdmF0ZWQpIHtcbiAgICAgICAgICByb3cuYWN0aXZhdGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQWN0aXZhdGVkIHJvdzogJywgcm93KTtcbiAgICAgICAgICBpZiAoIXJvdy5oYXNGb2N1cykge1xuICAgICAgICAgICAgcm93LmJyaW5nVG9WaWV3KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByb3cuYWN0aXZhdGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvdy5hY3RpdmF0ZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJvd0RhdGFVcGRhdGVkKFxuICAgIHJvd3M6IEVsZGVyVGFibGVSb3dEaXJlY3RpdmU8VD5bXSxcbiAgICBkYXRhOiBUW11cbiAgKTogRWxkZXJUYWJsZVJvd0RpcmVjdGl2ZTxUPltdIHtcbiAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1ZygnRm91bmQgcm93czonLCByb3dzKTtcbiAgICByb3dzLmZvckVhY2gocm93ID0+IHtcbiAgICAgIHJvdy5iaW5kVGFibGVBY3RpdmF0aW9uKHRoaXMpO1xuICAgIH0pO1xuICAgIHRoaXMuaGFuZGxlQXV0b0FjdGl2YXRpb25zKCk7XG4gICAgcmV0dXJuIHJvd3M7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgLy8gdGhpcy5lbGRlclRhYmxlLnJvd3MkLmdldFZhbHVlKCkuZm9yRWFjaChyID0+IHIuYmluZFRhYmxlQWN0aXZhdGlvbihudWxsKSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICouXG4gICAqIEhvc3QgTGlzdGVuZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBsZXQgbmV3QWN0aXZlSXRlbTogVDtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgbmV3QWN0aXZlSXRlbSA9IHRoaXMubmV4dFJvd0l0ZW0oKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICBuZXdBY3RpdmVJdGVtID0gdGhpcy5wcmV2aW91c1Jvd0l0ZW0oKTtcbiAgICB9XG5cbiAgICBpZiAobmV3QWN0aXZlSXRlbSkge1xuICAgICAgdGhpcy5mb2N1c0FuZEFjdGl2YXRlKG5ld0FjdGl2ZUl0ZW0pO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuYWN0aXZlSXRlbTtcbiAgICBpZiAoYWN0aXZlKSB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgIHRoaXMuZWxkZXJUYWJsZS5vbkl0ZW1DbGljayhhY3RpdmUpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnU3BhY2ViYXInIHx8IGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICAgIHRoaXMuZWxkZXJUYWJsZS5zZWxlY3Rpb25Nb2RlbC50b2dnbGUoYWN0aXZlKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBAT3V0cHV0KClcbiAgcHVibGljIGdldCBhY3RpdmVJdGVtQ2hhbmdlKCk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZUl0ZW0kO1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVJdGVtKCk6IFQge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZUl0ZW0kLmdldFZhbHVlKCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFjdGl2ZUl0ZW0oaXRlbTogVCkge1xuICAgIGlmIChpdGVtICE9PSB0aGlzLmFjdGl2ZUl0ZW0pIHtcbiAgICAgIHRoaXMuYWN0aXZlSXRlbSQubmV4dChpdGVtKTtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdTZXQgYWN0aXZlIGl0ZW0gdG8gJywgaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGFjdGl2YXRlKGl0ZW06IFQpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZUl0ZW0gPSBpdGVtO1xuICB9XG5cbiAgcHVibGljIGZvY3VzQW5kQWN0aXZhdGUoaXRlbTogVCk6IHZvaWQge1xuICAgIGNvbnN0IHJvdyA9IHRoaXMuZ2V0Um93Rm9ySXRlbShpdGVtKTtcbiAgICBpZiAocm93KSB7XG4gICAgICByb3cuZm91Y3MoKTsgLy8gRm9jdXMgd2lsbCBhdXRvIGFjdGl2YXRlIHRoZSByb3dcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNJdGVtQWN0aXZlKGl0ZW06IFQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5hY3RpdmVJdGVtKSB7XG4gICAgICByZXR1cm4gdGhpcy5pdGVtRXF1YWxzKHRoaXMuYWN0aXZlSXRlbSwgaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGdldFJvd0Zvckl0ZW0oaXRlbTogVCk6IEVsZGVyVGFibGVSb3dEaXJlY3RpdmU8VD4gfCBudWxsIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5yb3dzJC5nZXRWYWx1ZSgpO1xuICAgIHJldHVybiByb3dzLmZpbmQociA9PiByLm1vZGVsID09PSBpdGVtKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQXV0b0FjdGl2YXRpb25zKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5oYXNBY3RpdmVJdGVtIHx8IHRoaXMuYWN0aXZhdGlvbk9wdGlvbnMubW9kZSA9PT0gJ2Fsd2F5cycpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5hY3RpdmF0aW9uT3B0aW9ucy5yb3cpIHtcbiAgICAgICAgY2FzZSAnbm9uZSc6IGJyZWFrO1xuICAgICAgICBjYXNlICdmaXJzdCc6IHRoaXMuYWN0aXZhdGVGaXJzdCgpOyBicmVhaztcbiAgICAgICAgY2FzZSAnbGFzdCc6IHRoaXMuYWN0aXZhdGVMYXN0KCk7IGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGhhc0FjdGl2ZUl0ZW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5hY3RpdmVJdGVtO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmF0ZUZpcnN0KCk6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmdldEl0ZW1BdEluZGV4KDApO1xuICAgIGlmIChpdGVtKSB7XG4gICAgICB0aGlzLmFjdGl2YXRlKGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZhdGVMYXN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kYXRhKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5nZXRJdGVtQXRJbmRleCh0aGlzLl9kYXRhLmxlbmd0aCAtIDEpO1xuICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZShpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByZXZpb3VzUm93SXRlbSgpOiBUIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5fZGF0YTtcbiAgICBsZXQgY3VycmVudEluZGV4ID0gdGhpcy5nZXRDdXJyZW50SW5kZXgoKTtcbiAgICBpZiAoY3VycmVudEluZGV4ID4gMCkge1xuICAgICAgLS1jdXJyZW50SW5kZXg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmFjdGl2YXRpb25PcHRpb25zLmxvb3ApIHtcbiAgICAgICAgY3VycmVudEluZGV4ID0gcm93cy5sZW5ndGggLSAxO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRJdGVtQXRJbmRleChjdXJyZW50SW5kZXgpO1xuICB9XG5cbiAgcHJpdmF0ZSBuZXh0Um93SXRlbSgpOiBUIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5fZGF0YTtcbiAgICBsZXQgY3VycmVudEluZGV4ID0gdGhpcy5nZXRDdXJyZW50SW5kZXgoKTtcblxuICAgIGlmIChjdXJyZW50SW5kZXggPCAocm93cy5sZW5ndGggLSAxKSkge1xuICAgICAgKytjdXJyZW50SW5kZXg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmFjdGl2YXRpb25PcHRpb25zLmxvb3ApIHtcbiAgICAgICAgY3VycmVudEluZGV4ID0gMDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0SXRlbUF0SW5kZXgoY3VycmVudEluZGV4KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q3VycmVudEluZGV4KCk6IG51bWJlciB7XG4gICAgY29uc3QgYWN0aXZlSXRlbSA9IHRoaXMuYWN0aXZlSXRlbTtcbiAgICBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmluZEl0ZW1JbmRleChhY3RpdmVJdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0SXRlbUF0SW5kZXgoaW5kZXg6IG51bWJlcik6IFQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAgdGhpcy5fZGF0YVtpbmRleF07XG4gIH1cblxuICBwcml2YXRlIGZpbmRJdGVtSW5kZXgoaXRlbTogVCk6IG51bWJlciB7XG4gICAgY29uc3QgbmVlZGxlSWQgPSB0aGlzLmdldElkKGl0ZW0pO1xuICAgIHJldHVybiB0aGlzLl9kYXRhLmZpbmRJbmRleChpdG0gPT4gdGhpcy5pdGVtRXF1YWxzSWQoaXRtLCBuZWVkbGVJZCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpdGVtRXF1YWxzKGE6IFQsIGI6IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRJZChhKSA9PT0gdGhpcy5nZXRJZChiKTtcbiAgfVxuXG4gIHByaXZhdGUgaXRlbUVxdWFsc0lkKGE6IFQsIG5lZWRsZUlkOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRJZChhKSA9PT0gbmVlZGxlSWQ7XG4gIH1cblxuICBwcml2YXRlIGdldElkKGl0ZW06IFQpOiBhbnkge1xuICAgIGlmIChpdGVtKSB7XG4gICAgICBjb25zdCBkYyA9IHRoaXMuZWxkZXJUYWJsZS5kYXRhQ29udGV4dCQuZ2V0VmFsdWUoKTtcbiAgICAgIHJldHVybiBkYz8uZGF0YVNvdXJjZT8uZ2V0SWQoaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItdGFibGUtYWN0aXZhdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy90YWJsZS9hY3RpdmF0aW9uL2VsZGVyLXRhYmxlLWFjdGl2YXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTSxNQUFNLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxPQUFPLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7OztBQVN6RSxNQUFNLE9BQU8sNkJBQTZCO0lBcUJ4Qzs7OztnRkFJNEU7SUFFNUUsWUFDbUIsVUFBK0I7UUFBL0IsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUExQmxEOzs7O29GQUk0RTtRQUUzRCxXQUFNLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXhELGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVwQyxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFJLElBQUksQ0FBQyxDQUFDO1FBR3BELHNCQUFpQixHQUFnQyxFQUFFLENBQUM7UUFFbkQsVUFBSyxHQUFRLEVBQUUsQ0FBQztRQUVQLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBOEIsRUFBRSxDQUFDLENBQUM7SUFVMUUsQ0FBQztJQUVMOzs7O2dGQUk0RTtJQUVyRSxlQUFlO1FBRXBCLE1BQU0sS0FB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QUksSUFBSSxFQUFFO1lBQ1IsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkQsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwQzthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7OzBIQTlSVSw2QkFBNkI7OEdBQTdCLDZCQUE2QjsyRkFBN0IsNkJBQTZCO2tCQUp6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQ0FBbUM7b0JBQzdDLFFBQVEsRUFBRSxzQkFBc0I7aUJBQ2pDOzBHQWdCUSxpQkFBaUI7c0JBRHZCLEtBQUs7dUJBQUMsc0JBQXNCO2dCQWtHdEIsU0FBUztzQkFEZixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFpQ3hCLGdCQUFnQjtzQkFEMUIsTUFBTTtnQkFVSSxVQUFVO3NCQURwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7RWxkZXJUYWJsZVJvd0RpcmVjdGl2ZX0gZnJvbSAnLi4vZWxkZXItdGFibGUtcm93LmRpcmVjdGl2ZSc7XG5pbXBvcnQge3N3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7RWxkZXJUYWJsZUNvbXBvbmVudH0gZnJvbSAnLi4vZWxkZXItdGFibGUvZWxkZXItdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7RWxkZXJUYWJsZUFjdGl2YXRpb25PcHRpb25zfSBmcm9tICcuL2VsZGVyLXRhYmxlLWFjdGl2YXRpb24tb3B0aW9ucyc7XG5pbXBvcnQge0VsZGVySXRlbUFjdGl2YXRvcn0gZnJvbSAnLi9lbGRlci1pdGVtLWFjdGl2YXRvcic7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2VsZGVyLXRhYmxlW2VsZGVyVGFibGVBY3RpdmF0aW9uXScsXG4gIGV4cG9ydEFzOiAnZWxkZXJUYWJsZUFjdGl2YXRpb24nXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyVGFibGVBY3RpdmF0aW9uRGlyZWN0aXZlPFQ+IGltcGxlbWVudHMgRWxkZXJJdGVtQWN0aXZhdG9yPFQ+LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFjdGl2ZUl0ZW0kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUPihudWxsKTtcblxuICBASW5wdXQoJ2VsZGVyVGFibGVBY3RpdmF0aW9uJylcbiAgcHVibGljIGFjdGl2YXRpb25PcHRpb25zOiBFbGRlclRhYmxlQWN0aXZhdGlvbk9wdGlvbnMgPSB7fTtcblxuICBwcml2YXRlIF9kYXRhOiBUW10gPSBbXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHJvd3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxFbGRlclRhYmxlUm93RGlyZWN0aXZlPFQ+W10+KFtdKTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZGVyVGFibGU6IEVsZGVyVGFibGVDb21wb25lbnRcbiAgKSB7IH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXG4gICAgY29uc3Qgcm93cyQgPSB0aGlzLmVsZGVyVGFibGUucm93cyQ7XG4gICAgY29uc3QgZGF0YSQgPSB0aGlzLmVsZGVyVGFibGUuZGF0YUNvbnRleHQkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoZGMgPT4gZGMuZGF0YSksXG4gICAgICB0YXAoZGF0YSA9PiB0aGlzLl9kYXRhID0gZGF0YSlcbiAgICApO1xuXG4gICAgY29tYmluZUxhdGVzdChbcm93cyQsIGRhdGEkXSkucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJClcbiAgICApLnN1YnNjcmliZShcbiAgICAgIChbcm93cywgZGF0YV0pID0+IHtcbiAgICAgICAgdGhpcy5yb3dzJC5uZXh0KFxuICAgICAgICAgIHRoaXMucm93RGF0YVVwZGF0ZWQocm93cywgZGF0YSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5yb3dzJCwgdGhpcy5hY3RpdmVJdGVtJF0pLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpXG4gICAgKS5zdWJzY3JpYmUoXG4gICAgICAoW3Jvd3MsIGFjdGl2ZUl0ZW1dKSA9PiB0aGlzLnVwZGF0ZVJvd3NBY3RpdmF0aW9uKHJvd3MsIGFjdGl2ZUl0ZW0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUm93c0FjdGl2YXRpb24ocm93czogRWxkZXJUYWJsZVJvd0RpcmVjdGl2ZTxUPltdLCBhY3RpdmVJdGVtOiBUKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aXZlSWQgPSB0aGlzLmdldElkKGFjdGl2ZUl0ZW0pO1xuICAgIHJvd3MuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgdGhpcy51cGRhdGVSb3dBY3RpdmF0aW9uKHJvdywgYWN0aXZlSWQpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVSb3dBY3RpdmF0aW9uKHJvdzogRWxkZXJUYWJsZVJvd0RpcmVjdGl2ZTxUPiwgYWN0aXZlSWQ6IGFueSk6IHZvaWQge1xuICAgIGlmIChyb3cubW9kZWwpIHtcbiAgICAgIGlmICh0aGlzLml0ZW1FcXVhbHNJZChyb3cubW9kZWwsIGFjdGl2ZUlkKSkge1xuICAgICAgICBpZiAoIXJvdy5hY3RpdmF0ZWQpIHtcbiAgICAgICAgICByb3cuYWN0aXZhdGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQWN0aXZhdGVkIHJvdzogJywgcm93KTtcbiAgICAgICAgICBpZiAoIXJvdy5oYXNGb2N1cykge1xuICAgICAgICAgICAgcm93LmJyaW5nVG9WaWV3KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByb3cuYWN0aXZhdGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvdy5hY3RpdmF0ZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJvd0RhdGFVcGRhdGVkKFxuICAgIHJvd3M6IEVsZGVyVGFibGVSb3dEaXJlY3RpdmU8VD5bXSxcbiAgICBkYXRhOiBUW11cbiAgKTogRWxkZXJUYWJsZVJvd0RpcmVjdGl2ZTxUPltdIHtcbiAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1ZygnRm91bmQgcm93czonLCByb3dzKTtcbiAgICByb3dzLmZvckVhY2gocm93ID0+IHtcbiAgICAgIHJvdy5iaW5kVGFibGVBY3RpdmF0aW9uKHRoaXMpO1xuICAgIH0pO1xuICAgIHRoaXMuaGFuZGxlQXV0b0FjdGl2YXRpb25zKCk7XG4gICAgcmV0dXJuIHJvd3M7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgLy8gdGhpcy5lbGRlclRhYmxlLnJvd3MkLmdldFZhbHVlKCkuZm9yRWFjaChyID0+IHIuYmluZFRhYmxlQWN0aXZhdGlvbihudWxsKSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICouXG4gICAqIEhvc3QgTGlzdGVuZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBsZXQgbmV3QWN0aXZlSXRlbTogVDtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgbmV3QWN0aXZlSXRlbSA9IHRoaXMubmV4dFJvd0l0ZW0oKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICBuZXdBY3RpdmVJdGVtID0gdGhpcy5wcmV2aW91c1Jvd0l0ZW0oKTtcbiAgICB9XG5cbiAgICBpZiAobmV3QWN0aXZlSXRlbSkge1xuICAgICAgdGhpcy5mb2N1c0FuZEFjdGl2YXRlKG5ld0FjdGl2ZUl0ZW0pO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuYWN0aXZlSXRlbTtcbiAgICBpZiAoYWN0aXZlKSB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgIHRoaXMuZWxkZXJUYWJsZS5vbkl0ZW1DbGljayhhY3RpdmUpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnU3BhY2ViYXInIHx8IGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICAgIHRoaXMuZWxkZXJUYWJsZS5zZWxlY3Rpb25Nb2RlbC50b2dnbGUoYWN0aXZlKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBAT3V0cHV0KClcbiAgcHVibGljIGdldCBhY3RpdmVJdGVtQ2hhbmdlKCk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZUl0ZW0kO1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVJdGVtKCk6IFQge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZUl0ZW0kLmdldFZhbHVlKCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFjdGl2ZUl0ZW0oaXRlbTogVCkge1xuICAgIGlmIChpdGVtICE9PSB0aGlzLmFjdGl2ZUl0ZW0pIHtcbiAgICAgIHRoaXMuYWN0aXZlSXRlbSQubmV4dChpdGVtKTtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdTZXQgYWN0aXZlIGl0ZW0gdG8gJywgaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGFjdGl2YXRlKGl0ZW06IFQpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZUl0ZW0gPSBpdGVtO1xuICB9XG5cbiAgcHVibGljIGZvY3VzQW5kQWN0aXZhdGUoaXRlbTogVCk6IHZvaWQge1xuICAgIGNvbnN0IHJvdyA9IHRoaXMuZ2V0Um93Rm9ySXRlbShpdGVtKTtcbiAgICBpZiAocm93KSB7XG4gICAgICByb3cuZm91Y3MoKTsgLy8gRm9jdXMgd2lsbCBhdXRvIGFjdGl2YXRlIHRoZSByb3dcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNJdGVtQWN0aXZlKGl0ZW06IFQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5hY3RpdmVJdGVtKSB7XG4gICAgICByZXR1cm4gdGhpcy5pdGVtRXF1YWxzKHRoaXMuYWN0aXZlSXRlbSwgaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGdldFJvd0Zvckl0ZW0oaXRlbTogVCk6IEVsZGVyVGFibGVSb3dEaXJlY3RpdmU8VD4gfCBudWxsIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5yb3dzJC5nZXRWYWx1ZSgpO1xuICAgIHJldHVybiByb3dzLmZpbmQociA9PiByLm1vZGVsID09PSBpdGVtKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQXV0b0FjdGl2YXRpb25zKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5oYXNBY3RpdmVJdGVtIHx8IHRoaXMuYWN0aXZhdGlvbk9wdGlvbnMubW9kZSA9PT0gJ2Fsd2F5cycpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5hY3RpdmF0aW9uT3B0aW9ucy5yb3cpIHtcbiAgICAgICAgY2FzZSAnbm9uZSc6IGJyZWFrO1xuICAgICAgICBjYXNlICdmaXJzdCc6IHRoaXMuYWN0aXZhdGVGaXJzdCgpOyBicmVhaztcbiAgICAgICAgY2FzZSAnbGFzdCc6IHRoaXMuYWN0aXZhdGVMYXN0KCk7IGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGhhc0FjdGl2ZUl0ZW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5hY3RpdmVJdGVtO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmF0ZUZpcnN0KCk6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmdldEl0ZW1BdEluZGV4KDApO1xuICAgIGlmIChpdGVtKSB7XG4gICAgICB0aGlzLmFjdGl2YXRlKGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZhdGVMYXN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kYXRhKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5nZXRJdGVtQXRJbmRleCh0aGlzLl9kYXRhLmxlbmd0aCAtIDEpO1xuICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZShpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByZXZpb3VzUm93SXRlbSgpOiBUIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5fZGF0YTtcbiAgICBsZXQgY3VycmVudEluZGV4ID0gdGhpcy5nZXRDdXJyZW50SW5kZXgoKTtcbiAgICBpZiAoY3VycmVudEluZGV4ID4gMCkge1xuICAgICAgLS1jdXJyZW50SW5kZXg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmFjdGl2YXRpb25PcHRpb25zLmxvb3ApIHtcbiAgICAgICAgY3VycmVudEluZGV4ID0gcm93cy5sZW5ndGggLSAxO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRJdGVtQXRJbmRleChjdXJyZW50SW5kZXgpO1xuICB9XG5cbiAgcHJpdmF0ZSBuZXh0Um93SXRlbSgpOiBUIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5fZGF0YTtcbiAgICBsZXQgY3VycmVudEluZGV4ID0gdGhpcy5nZXRDdXJyZW50SW5kZXgoKTtcblxuICAgIGlmIChjdXJyZW50SW5kZXggPCAocm93cy5sZW5ndGggLSAxKSkge1xuICAgICAgKytjdXJyZW50SW5kZXg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmFjdGl2YXRpb25PcHRpb25zLmxvb3ApIHtcbiAgICAgICAgY3VycmVudEluZGV4ID0gMDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0SXRlbUF0SW5kZXgoY3VycmVudEluZGV4KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q3VycmVudEluZGV4KCk6IG51bWJlciB7XG4gICAgY29uc3QgYWN0aXZlSXRlbSA9IHRoaXMuYWN0aXZlSXRlbTtcbiAgICBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmluZEl0ZW1JbmRleChhY3RpdmVJdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0SXRlbUF0SW5kZXgoaW5kZXg6IG51bWJlcik6IFQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAgdGhpcy5fZGF0YVtpbmRleF07XG4gIH1cblxuICBwcml2YXRlIGZpbmRJdGVtSW5kZXgoaXRlbTogVCk6IG51bWJlciB7XG4gICAgY29uc3QgbmVlZGxlSWQgPSB0aGlzLmdldElkKGl0ZW0pO1xuICAgIHJldHVybiB0aGlzLl9kYXRhLmZpbmRJbmRleChpdG0gPT4gdGhpcy5pdGVtRXF1YWxzSWQoaXRtLCBuZWVkbGVJZCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpdGVtRXF1YWxzKGE6IFQsIGI6IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRJZChhKSA9PT0gdGhpcy5nZXRJZChiKTtcbiAgfVxuXG4gIHByaXZhdGUgaXRlbUVxdWFsc0lkKGE6IFQsIG5lZWRsZUlkOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRJZChhKSA9PT0gbmVlZGxlSWQ7XG4gIH1cblxuICBwcml2YXRlIGdldElkKGl0ZW06IFQpOiBhbnkge1xuICAgIGlmIChpdGVtKSB7XG4gICAgICBjb25zdCBkYyA9IHRoaXMuZWxkZXJUYWJsZS5kYXRhQ29udGV4dCQuZ2V0VmFsdWUoKTtcbiAgICAgIHJldHVybiBkYz8uZGF0YVNvdXJjZT8uZ2V0SWQoaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
@@ -13,9 +13,9 @@ export class ElderNumberCellDirective {
13
13
  }
14
14
  }
15
15
  }
16
- ElderNumberCellDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderNumberCellDirective, deps: [{ token: i1.MatSortHeader, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
17
- ElderNumberCellDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: ElderNumberCellDirective, selector: "[elderNumberCell]", host: { properties: { "class.elder-number-cell": "true" } }, ngImport: i0 });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderNumberCellDirective, decorators: [{
16
+ ElderNumberCellDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderNumberCellDirective, deps: [{ token: i1.MatSortHeader, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
17
+ ElderNumberCellDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderNumberCellDirective, selector: "[elderNumberCell]", host: { properties: { "class.elder-number-cell": "true" } }, ngImport: i0 });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderNumberCellDirective, decorators: [{
19
19
  type: Directive,
20
20
  args: [{
21
21
  selector: '[elderNumberCell]',
@@ -64,9 +64,9 @@ export class ElderPaginatorIntl extends MatPaginatorIntl {
64
64
  this.changes.next();
65
65
  }
66
66
  }
67
- ElderPaginatorIntl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderPaginatorIntl, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
68
- ElderPaginatorIntl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderPaginatorIntl });
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderPaginatorIntl, decorators: [{
67
+ ElderPaginatorIntl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderPaginatorIntl, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
68
+ ElderPaginatorIntl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderPaginatorIntl });
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderPaginatorIntl, decorators: [{
70
70
  type: Injectable
71
71
  }], ctorParameters: function () { return [{ type: i1.TranslateService }]; } });
72
72
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcGFnaW5hdG9yLWludGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy90YWJsZS9lbGRlci1wYWdpbmF0b3ItaW50bC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7QUFJekMsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGdCQUFnQjtJQWlCdEQ7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ1UsU0FBMkI7UUFFbkMsS0FBSyxFQUFFLENBQUM7UUFGQSxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQXRCckM7Ozs7b0ZBSTRFO1FBRTNELDJCQUFzQixHQUFHLDhCQUE4QixDQUFDO1FBQ3hELHFCQUFnQixHQUFHLHdCQUF3QixDQUFDO1FBQzVDLHVCQUFrQixHQUFHLHFCQUFxQixDQUFDO1FBQzNDLGlCQUFZLEdBQUcsb0JBQW9CLENBQUM7UUFDcEMsaUJBQVksR0FBRyxvQkFBb0IsQ0FBQztRQUNwQyxxQkFBZ0IsR0FBRyx3QkFBd0IsQ0FBQztRQXNCN0Q7Ozs7b0ZBSTRFO1FBRXJFLGtCQUFhLEdBQUcsQ0FDckIsSUFBWSxFQUNaLFFBQWdCLEVBQ2hCLE1BQWMsRUFDTixFQUFFO1lBRVYsSUFBSSxNQUFNLEtBQUssQ0FBQyxJQUFJLFFBQVEsS0FBSyxDQUFDLEVBQUU7Z0JBQ2xDLE9BQU8sS0FBSyxJQUFJLENBQUMsdUJBQXVCLElBQUksTUFBTSxFQUFFLENBQUM7YUFDdEQ7WUFFRCxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFN0IsTUFBTSxVQUFVLEdBQVcsSUFBSSxHQUFHLFFBQVEsQ0FBQztZQUMzQyxNQUFNLFFBQVEsR0FBVyxVQUFVLEdBQUcsTUFBTTtnQkFDMUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLFFBQVEsRUFBRSxNQUFNLENBQUM7Z0JBQ3pDLENBQUMsQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO1lBRTFCLE9BQU8sR0FBRyxVQUFVLEdBQUcsQ0FBQyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsdUJBQXVCLElBQUksTUFBTSxFQUFFLENBQUM7UUFDckYsQ0FBQyxDQUFBO1FBL0JDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQVEsRUFBRSxFQUFFO1lBQ2pELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBNEJEOzs7O2dGQUk0RTtJQUVwRSxlQUFlO1FBRXJCLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDcEYsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN4RSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN2RSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEUsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hFLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFeEUsSUFBSSxDQUFDLHVCQUF1QixHQUFHLHVCQUF1QixLQUFLLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN4SCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7UUFDNUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLEtBQUssSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUNqRyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUN2RixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUN2RixJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDO1FBRTNHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQzs7K0dBcEZVLGtCQUFrQjttSEFBbEIsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYXRQYWdpbmF0b3JJbnRsIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRWxkZXJQYWdpbmF0b3JJbnRsIGV4dGVuZHMgTWF0UGFnaW5hdG9ySW50bCB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfaXRlbUNvdW50U2VwYXJhdG9yS2V5ID0gJ3BhZ2luYXRvci5pdGVtQ291bnRTZXBhcmF0b3InO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pdGVtc1BlclBhZ2VLZXkgPSAncGFnaW5hdG9yLml0ZW1zUGVyUGFnZSc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpcnN0UGFnZUxhYmVsS2V5ID0gJ3BhZ2luYXRvci5maXJzdFBhZ2UnO1xuICBwcml2YXRlIHJlYWRvbmx5IF9sYXN0UGFnZUtleSA9ICdwYWdpbmF0b3IubGFzdFBhZ2UnO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uZXh0UGFnZUtleSA9ICdwYWdpbmF0b3IubmV4dFBhZ2UnO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wcmV2aW91c1BhZ2VLZXkgPSAncGFnaW5hdG9yLnByZXZpb3VzUGFnZSc7XG5cbiAgcHJpdmF0ZSBpdGVtQ291bnRTZXBhcmF0b3JMYWJlbDogc3RyaW5nO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy50cmFuc2xhdGUub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZTogRXZlbnQpID0+IHtcbiAgICAgIHRoaXMudHJhbnNsYXRlTGFiZWxzKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnRyYW5zbGF0ZUxhYmVscygpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGdldFJhbmdlTGFiZWwgPSAoXG4gICAgcGFnZTogbnVtYmVyLFxuICAgIHBhZ2VTaXplOiBudW1iZXIsXG4gICAgbGVuZ3RoOiBudW1iZXJcbiAgKTogc3RyaW5nID0+IHtcblxuICAgIGlmIChsZW5ndGggPT09IDAgfHwgcGFnZVNpemUgPT09IDApIHtcbiAgICAgIHJldHVybiBgMCAke3RoaXMuaXRlbUNvdW50U2VwYXJhdG9yTGFiZWx9ICR7bGVuZ3RofWA7XG4gICAgfVxuXG4gICAgbGVuZ3RoID0gTWF0aC5tYXgobGVuZ3RoLCAwKTtcblxuICAgIGNvbnN0IHN0YXJ0SW5kZXg6IG51bWJlciA9IHBhZ2UgKiBwYWdlU2l6ZTtcbiAgICBjb25zdCBlbmRJbmRleDogbnVtYmVyID0gc3RhcnRJbmRleCA8IGxlbmd0aFxuICAgICAgPyBNYXRoLm1pbihzdGFydEluZGV4ICsgcGFnZVNpemUsIGxlbmd0aClcbiAgICAgIDogc3RhcnRJbmRleCArIHBhZ2VTaXplO1xuXG4gICAgcmV0dXJuIGAke3N0YXJ0SW5kZXggKyAxfSAtICR7ZW5kSW5kZXh9ICR7dGhpcy5pdGVtQ291bnRTZXBhcmF0b3JMYWJlbH0gJHtsZW5ndGh9YDtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgdHJhbnNsYXRlTGFiZWxzKCk6IHZvaWQge1xuXG4gICAgY29uc3QgaXRlbUNvdW50U2VwYXJhdG9yTGFiZWwgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMuX2l0ZW1Db3VudFNlcGFyYXRvcktleSk7XG4gICAgY29uc3QgaXRlbXNQZXJQYWdlTGFiZWwgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMuX2l0ZW1zUGVyUGFnZUtleSk7XG4gICAgY29uc3QgZmlyc3RQYWdlTGFiZWwgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMuX2ZpcnN0UGFnZUxhYmVsS2V5KTtcbiAgICBjb25zdCBsYXN0UGFnZUxhYmVsID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aGlzLl9sYXN0UGFnZUtleSk7XG4gICAgY29uc3QgbmV4dFBhZ2VMYWJlbCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQodGhpcy5fbmV4dFBhZ2VLZXkpO1xuICAgIGNvbnN0IHByZXZpb3VzUGFnZUxhYmVsID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aGlzLl9wcmV2aW91c1BhZ2VLZXkpO1xuXG4gICAgdGhpcy5pdGVtQ291bnRTZXBhcmF0b3JMYWJlbCA9IGl0ZW1Db3VudFNlcGFyYXRvckxhYmVsICE9PSB0aGlzLl9pdGVtQ291bnRTZXBhcmF0b3JLZXkgPyBpdGVtQ291bnRTZXBhcmF0b3JMYWJlbCA6ICdvZic7XG4gICAgdGhpcy5pdGVtc1BlclBhZ2VMYWJlbCA9IGl0ZW1zUGVyUGFnZUxhYmVsICE9PSB0aGlzLl9pdGVtc1BlclBhZ2VLZXkgPyBpdGVtc1BlclBhZ2VMYWJlbCA6ICdJdGVtcyBwZXIgcGFnZSc7XG4gICAgdGhpcy5maXJzdFBhZ2VMYWJlbCA9IGZpcnN0UGFnZUxhYmVsICE9PSB0aGlzLl9maXJzdFBhZ2VMYWJlbEtleSA/IGZpcnN0UGFnZUxhYmVsIDogJ0ZpcnN0IHBhZ2UnO1xuICAgIHRoaXMubGFzdFBhZ2VMYWJlbCA9IGxhc3RQYWdlTGFiZWwgIT09IHRoaXMuX2xhc3RQYWdlS2V5ID8gbGFzdFBhZ2VMYWJlbCA6ICdMYXN0IHBhZ2UnO1xuICAgIHRoaXMubmV4dFBhZ2VMYWJlbCA9IG5leHRQYWdlTGFiZWwgIT09IHRoaXMuX25leHRQYWdlS2V5ID8gbmV4dFBhZ2VMYWJlbCA6ICdOZXh0IHBhZ2UnO1xuICAgIHRoaXMucHJldmlvdXNQYWdlTGFiZWwgPSBwcmV2aW91c1BhZ2VMYWJlbCAhPT0gdGhpcy5fcHJldmlvdXNQYWdlS2V5ID8gcHJldmlvdXNQYWdlTGFiZWwgOiAnUHJldmlvdXMgcGFnZSc7XG5cbiAgICB0aGlzLmNoYW5nZXMubmV4dCgpO1xuICB9XG5cbn1cbiJdfQ==
@@ -9,9 +9,9 @@ export class ElderTableToolbarDirective {
9
9
  this.viewContainer = viewContainer;
10
10
  }
11
11
  }
12
- ElderTableToolbarDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderTableToolbarDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
13
- ElderTableToolbarDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.3", type: ElderTableToolbarDirective, selector: "[elderTableToolbar]", ngImport: i0 });
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderTableToolbarDirective, decorators: [{
12
+ ElderTableToolbarDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderTableToolbarDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
13
+ ElderTableToolbarDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.0", type: ElderTableToolbarDirective, selector: "[elderTableToolbar]", ngImport: i0 });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderTableToolbarDirective, decorators: [{
15
15
  type: Directive,
16
16
  args: [{ selector: '[elderTableToolbar]' }]
17
17
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
@@ -3,7 +3,7 @@ import { MatTableDataContextBindingBuilder } from '../../../../common/data/data-
3
3
  import { MatPaginator } from '@angular/material/paginator';
4
4
  import { MatColumnDef, MatRowDef, MatTable } from '@angular/material/table';
5
5
  import { isDataContext } from '../../../../common/data/data-context/data-context';
6
- import { BehaviorSubject, combineLatest, of, Subject } from 'rxjs';
6
+ import { BehaviorSubject, combineLatest, of } from 'rxjs';
7
7
  import { map, takeUntil } from 'rxjs/operators';
8
8
  import { LoggerFactory } from '@elderbyte/ts-logger';
9
9
  import { DataContextBuilder } from '../../../../common/data/data-context/data-context-builder';
@@ -21,7 +21,7 @@ import { ElderTableToolbarDirective } from './elder-table-toolbar.directive';
21
21
  import * as i0 from "@angular/core";
22
22
  import * as i1 from "../model/elder-table-model";
23
23
  import * as i2 from "../../../../common/selection/selection-model";
24
- import * as i3 from "../../../select/popup/selection-model-popup.directive";
24
+ import * as i3 from "../../base/elder-data-view-options-provider";
25
25
  import * as i4 from "@angular/material/sort";
26
26
  import * as i5 from "../elder-table-extension.directive";
27
27
  import * as i6 from "@angular/common";
@@ -43,8 +43,8 @@ export class ElderTableComponent extends ElderDataViewBaseComponent {
43
43
  * Constructor *
44
44
  * *
45
45
  **************************************************************************/
46
- constructor(tableModel, selectionModel, dataViewSelection, matSort, parentExtension, cdr, zone) {
47
- super(selectionModel, dataViewSelection);
46
+ constructor(tableModel, selectionModel, dataViewOptionsProvider, matSort, parentExtension, cdr, zone) {
47
+ super(selectionModel, dataViewOptionsProvider);
48
48
  this.tableModel = tableModel;
49
49
  this.parentExtension = parentExtension;
50
50
  this.cdr = cdr;
@@ -55,7 +55,6 @@ export class ElderTableComponent extends ElderDataViewBaseComponent {
55
55
  * *
56
56
  **************************************************************************/
57
57
  this.logger = LoggerFactory.getLogger(this.constructor.name);
58
- this.destroy$ = new Subject();
59
58
  /**
60
59
  * Load next chunk after current is done
61
60
  */
@@ -76,14 +75,6 @@ export class ElderTableComponent extends ElderDataViewBaseComponent {
76
75
  */
77
76
  this.hiddenField = null;
78
77
  this.pageSizeOptions = [30, 50, 100, 150, 200];
79
- /**
80
- * Define if elder-table should clean up the
81
- * data-context resources for you.
82
- *
83
- * In more advanced scenarios where you plan to reuse the same data-context
84
- * set this to false and release the resources yourself. (dataContext.close)
85
- */
86
- this.cleanUp = true;
87
78
  this.keepSelection = true;
88
79
  this.showFooter = false;
89
80
  this.toolbarRowTemplates$ = new BehaviorSubject([]);
@@ -103,16 +94,7 @@ export class ElderTableComponent extends ElderDataViewBaseComponent {
103
94
  * *
104
95
  **************************************************************************/
105
96
  ngOnInit() {
106
- if (this.dataViewSelection) {
107
- this.selectionVisible = true;
108
- this.selectionMultiEnabled = this.dataViewSelection.multi;
109
- this.interactionMode = 'selection';
110
- this.float = false;
111
- if (this.dataContext) {
112
- this.dataContext.filter.updateFilters(this.dataViewSelection.filters);
113
- this.dataContext.sort.updateSorts(this.dataViewSelection.sorts);
114
- }
115
- }
97
+ super.ngOnInit();
116
98
  ElderTableModelCdkTableBinding
117
99
  .of(this.tableModel)
118
100
  .table(this.matTable)
@@ -142,11 +124,6 @@ export class ElderTableComponent extends ElderDataViewBaseComponent {
142
124
  .updated(rows => this.rows$.next(rows))
143
125
  .bindUntil(this.destroy$);
144
126
  }
145
- ngOnDestroy() {
146
- this.destroy$.next();
147
- this.destroy$.complete();
148
- this.autoCleanUp();
149
- }
150
127
  /***************************************************************************
151
128
  * *
152
129
  * Properties *
@@ -270,25 +247,16 @@ export class ElderTableComponent extends ElderDataViewBaseComponent {
270
247
  }
271
248
  });
272
249
  }
273
- /**
274
- * Performs clean up of the current data context if auto clean up is enabled.
275
- */
276
- autoCleanUp() {
277
- if (this.cleanUp && this.dataContext) {
278
- this.logger.debug('Releasing DataContext resources to prevent memory leak. [cleanUp]="true"');
279
- this.dataContext.close();
280
- }
281
- }
282
250
  }
283
- ElderTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderTableComponent, deps: [{ token: i1.ElderTableModel }, { token: i2.SelectionModel, optional: true }, { token: i3.ElderDataViewSelectionMode, optional: true, skipSelf: true }, { token: i4.MatSort, optional: true }, { token: i5.ElderTableExtensionDirective, optional: true, skipSelf: true }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
284
- ElderTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: ElderTableComponent, selector: "elder-table, ebs-table", inputs: { idField: "idField", removingField: "removingField", hiddenField: "hiddenField", pageSizeOptions: "pageSizeOptions", cleanUp: "cleanUp", keepSelection: "keepSelection", showFooter: "showFooter", toolbarTemplate: "toolbarTemplate", data: "data", displayedColumns: "displayedColumns", selectionVisible: "selectionVisible" }, providers: [
251
+ ElderTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderTableComponent, deps: [{ token: i1.ElderTableModel }, { token: i2.SelectionModel, optional: true }, { token: i3.ElderDataViewOptionsProvider, optional: true, skipSelf: true }, { token: i4.MatSort, optional: true }, { token: i5.ElderTableExtensionDirective, optional: true, skipSelf: true }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
252
+ ElderTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: ElderTableComponent, selector: "elder-table, ebs-table", inputs: { idField: "idField", removingField: "removingField", hiddenField: "hiddenField", pageSizeOptions: "pageSizeOptions", keepSelection: "keepSelection", showFooter: "showFooter", toolbarTemplate: "toolbarTemplate", data: "data", displayedColumns: "displayedColumns", selectionVisible: "selectionVisible" }, providers: [
285
253
  ElderTableProviders.ExistingOrNewTableModel,
286
254
  {
287
255
  provide: ELDER_DATA_VIEW,
288
256
  useExisting: forwardRef(() => ElderTableComponent)
289
257
  }
290
- ], queries: [{ propertyName: "columnDefs", predicate: MatColumnDef }, { propertyName: "elderColumns", predicate: ElderTableColumnDirective }, { propertyName: "rowDefs", predicate: MatRowDef }, { propertyName: "toolbarRowTemplateQuery", predicate: ElderTableToolbarDirective, read: TemplateRef }], viewQueries: [{ propertyName: "matTable", first: true, predicate: MatTable, descendants: true, static: true }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "rowsQuery", predicate: ElderTableRowDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "\n<div fxLayout=\"column\" fxFlex\n class=\"elder-table\"\n [class.elder-mat-table-container]=\"!embedded\"\n [class.mat-elevation-z5]=\"float\"\n [class.elder-mat-table-flat]=\"!embedded && !float\"\n>\n\n <!-- Toolbar Rows -->\n <ng-container *ngFor=\"let toolbarRowTemplate of toolbarRowTemplates$ | async\">\n <ng-template *ngTemplateOutlet=\"toolbarRowTemplate; context: {$implicit: this}\">\n </ng-template>\n </ng-container>\n\n <!-- Scrollable Table -->\n <div fxLayout=\"column\" class=\"scrollable elder-table-scroll\"\n infiniteScroll\n [eventThrottle]=\"150\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"!isContinuable || !(canLoadMore$ | async)\"\n (closeToEnd)=\"requestMoreDataZoned($event)\"\n >\n <table\n mat-table\n class=\"elder-mat-inner-table\"\n [trackBy]=\"trackByFn\"\n [dataSource]=\"$any(dataContext$ | async)\"\n [elderDataContextSelection]=\"dataContext$ | async\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n\n <!-- selection Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef>\n <elder-selection-master-checkbox></elder-selection-master-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let entity\">\n <mat-checkbox (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selectionModel.toggle(entity) : null\"\n [checked]=\"selectionModel.observeSelection(entity) | async\"\n [disabled]=\"!selectionModel.isSelectable(entity)\"\n class=\"elder-table-checkbox\"\n [class.elder-table-checkbox-visible]=\"(dataSelection.selectionState$ | async).anySelected\"\n >\n </mat-checkbox>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container *ngIf=\"(tableModel.displayedColumnsInner$ | async) as displayedColumnsInner\">\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n <tr mat-row class=\"elder-table-row\"\n *matRowDef=\"let entity; columns: displayedColumnsInner;\"\n [elderTableRow]=\"entity\"\n [class.dense]=\"dense\"\n [class.elder-row-hidden]=\"hiddenField && entity[hiddenField]\"\n [class.elder-row-removing]=\"removingField && entity[removingField]\"\n [class.elder-table-row-selected]=\"interactionMode === 'selection' && selectionModel.observeSelection(entity) | async\"\n (click)=\"onItemClick(entity)\"\n (dblclick)=\"onItemDoubleClick(entity)\"\n >\n </tr>\n <ng-container *ngIf=\"showFooter\">\n <tr mat-footer-row *matFooterRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n </ng-container>\n </ng-container>\n </table>\n </div>\n\n <elder-data-context-state-indicator fxFlex=\"none\" [dataContext]=\"dataContext\">\n </elder-data-context-state-indicator>\n\n <mat-progress-bar fxFlex=\"none\"\n [mode]=\"(dataContext?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"((dataContext?.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Optional Paginator Toolbar -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n fxFlex=\"none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Optional Continuation Footer -->\n <div *ngIf=\"isContinuable\" class=\"elder-table-footer\"\n fxLayout=\"row\" fxFlex=\"none\" fxLayoutAlign=\"end center\" fxLayoutGap=\"10px\"\n style=\"padding-right: 10px\" >\n\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataContext?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\" color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataContinuable.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </div>\n\n</div>\n", styles: [".elder-table-scroll{height:100%}.elder-mat-inner-table{width:100%}.elder-table-row.dense{height:42px!important}.elder-mat-table-container{border-radius:4px;overflow:hidden}.mat-column-select{overflow:visible;overflow:initial;max-width:42px;width:42px}.elder-row-removing{text-decoration:line-through}.elder-row-hidden{display:none}.elder-table-row{cursor:pointer}:host{min-width:0;min-height:0}.elder-table-hint{color:gray}.elder-table-footer{height:44px}.elder-table-checkbox{opacity:.25;transition:opacity .5s ease-in-out}.elder-table-row:hover .elder-table-checkbox{opacity:.9}.elder-table-checkbox-visible{opacity:1}.mat-table .mat-header-cell{padding-left:8px;padding-right:12px;overflow-wrap:normal;word-wrap:normal;word-break:normal;white-space:inherit;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.mat-table .mat-header-cell:first-of-type{padding-left:20px}.mat-table .mat-header-cell:last-of-type{padding-right:8px}.mat-table .mat-header-cell:last-of-type[mat-sort-header]:not([arrowposition=before]){padding-right:8px}.mat-table .mat-header-cell[mat-sort-header][arrowposition=before]{padding-left:0}.mat-table .mat-header-cell[mat-sort-header]:not([arrowposition=before]){padding-right:12px}.mat-table .mat-header-cell>.mat-sort-header-container{display:inline-flex}.mat-table .mat-cell{padding-left:8px;padding-right:12px;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;white-space:inherit;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.mat-table .mat-cell:first-of-type{padding-left:20px}.mat-table .mat-cell:last-of-type{padding-right:8px}.mat-table .mat-footer-cell{padding-left:8px;padding-right:12px;font-weight:700}.mat-table .mat-footer-cell:first-of-type{padding-left:20px}.mat-table .mat-footer-cell:last-of-type{padding-right:8px}.mat-table .mat-footer-cell .mat-paginator{margin-left:-8px;margin-right:-8px}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i11.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i11.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i11.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i11.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i11.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i11.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i11.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i11.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i11.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i11.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i11.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i11.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i11.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i11.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "component", type: i12.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "directive", type: i13.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: i13.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i13.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i13.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i14.ElderSelectionMasterCheckboxComponent, selector: "elder-selection-master-checkbox" }, { kind: "directive", type: i15.DataContextSelectionDirective, selector: "[elderDataContextSelection]", inputs: ["elderDataContextSelectionModel", "elderDataContextSelection"], exportAs: ["elderDataContextSelection"] }, { kind: "component", type: i16.DataContextStateIndicatorComponent, selector: "elder-data-context-state-indicator", inputs: ["dataContext"] }, { kind: "directive", type: i17.ElderInfiniteScrollLegacyDirective, selector: "[infiniteScroll]" }, { kind: "directive", type: i18.ElderTableRowDirective, selector: "tr[elderTableRow]", inputs: ["elderTableRow"], exportAs: ["elderTableRow"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
291
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: ElderTableComponent, decorators: [{
258
+ ], queries: [{ propertyName: "columnDefs", predicate: MatColumnDef }, { propertyName: "elderColumns", predicate: ElderTableColumnDirective }, { propertyName: "rowDefs", predicate: MatRowDef }, { propertyName: "toolbarRowTemplateQuery", predicate: ElderTableToolbarDirective, read: TemplateRef }], viewQueries: [{ propertyName: "matTable", first: true, predicate: MatTable, descendants: true, static: true }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "rowsQuery", predicate: ElderTableRowDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "\n<div fxLayout=\"column\" fxFlex\n class=\"elder-table\"\n [class.elder-mat-table-container]=\"!embedded\"\n [class.mat-elevation-z5]=\"float\"\n [class.elder-mat-table-flat]=\"!embedded && !float\"\n>\n\n <!-- Toolbar Rows -->\n <ng-container *ngFor=\"let toolbarRowTemplate of toolbarRowTemplates$ | async\">\n <ng-template *ngTemplateOutlet=\"toolbarRowTemplate; context: {$implicit: this}\">\n </ng-template>\n </ng-container>\n\n <!-- Scrollable Table -->\n <div fxLayout=\"column\" class=\"scrollable elder-table-scroll\"\n infiniteScroll\n [eventThrottle]=\"150\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"!isContinuable || !(canLoadMore$ | async)\"\n (closeToEnd)=\"requestMoreDataZoned($event)\"\n >\n <table\n mat-table\n class=\"elder-mat-inner-table\"\n [trackBy]=\"trackByFn\"\n [dataSource]=\"$any(dataContext$ | async)\"\n [elderDataContextSelection]=\"dataContext$ | async\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n\n <!-- selection Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef>\n <elder-selection-master-checkbox></elder-selection-master-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let entity\">\n <mat-checkbox (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selectionModel.toggle(entity) : null\"\n [checked]=\"selectionModel.observeSelection(entity) | async\"\n [disabled]=\"!selectionModel.isSelectable(entity)\"\n class=\"elder-table-checkbox\"\n [class.elder-table-checkbox-visible]=\"(dataSelection.selectionState$ | async).anySelected\"\n >\n </mat-checkbox>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container *ngIf=\"(tableModel.displayedColumnsInner$ | async) as displayedColumnsInner\">\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n <tr mat-row class=\"elder-table-row\"\n *matRowDef=\"let entity; columns: displayedColumnsInner;\"\n [elderTableRow]=\"entity\"\n [class.dense]=\"dense\"\n [class.elder-row-hidden]=\"hiddenField && entity[hiddenField]\"\n [class.elder-row-removing]=\"removingField && entity[removingField]\"\n [class.elder-table-row-selected]=\"interactionMode === 'selection' && selectionModel.observeSelection(entity) | async\"\n (click)=\"onItemClick(entity)\"\n (dblclick)=\"onItemDoubleClick(entity)\"\n >\n </tr>\n <ng-container *ngIf=\"showFooter\">\n <tr mat-footer-row *matFooterRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n </ng-container>\n </ng-container>\n </table>\n </div>\n\n <elder-data-context-state-indicator fxFlex=\"none\" [dataContext]=\"dataContext\">\n </elder-data-context-state-indicator>\n\n <mat-progress-bar fxFlex=\"none\"\n [mode]=\"(dataContext?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"((dataContext?.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Optional Paginator Toolbar -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n fxFlex=\"none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Optional Continuation Footer -->\n <div *ngIf=\"isContinuable\" class=\"elder-table-footer\"\n fxLayout=\"row\" fxFlex=\"none\" fxLayoutAlign=\"end center\" fxLayoutGap=\"10px\"\n style=\"padding-right: 10px\" >\n\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataContext?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\" color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataContinuable.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </div>\n\n</div>\n", styles: [".elder-table-scroll{height:100%}.elder-mat-inner-table{width:100%}.elder-table-row.dense{height:42px!important}.elder-mat-table-container{border-radius:4px;overflow:hidden}.mat-column-select{overflow:visible;overflow:initial;max-width:42px;width:42px}.elder-row-removing{text-decoration:line-through}.elder-row-hidden{display:none}.elder-table-row{cursor:pointer}:host{min-width:0;min-height:0}.elder-table-hint{color:gray}.elder-table-footer{height:44px}.elder-table-checkbox{opacity:.25;transition:opacity .5s ease-in-out}.elder-table-row:hover .elder-table-checkbox{opacity:.9}.elder-table-checkbox-visible{opacity:1}.mat-table .mat-header-cell{padding-left:8px;padding-right:12px;overflow-wrap:normal;word-wrap:normal;word-break:normal;white-space:inherit;-webkit-hyphens:auto;hyphens:auto}.mat-table .mat-header-cell:first-of-type{padding-left:20px}.mat-table .mat-header-cell:last-of-type{padding-right:8px}.mat-table .mat-header-cell:last-of-type[mat-sort-header]:not([arrowposition=before]){padding-right:8px}.mat-table .mat-header-cell[mat-sort-header][arrowposition=before]{padding-left:0}.mat-table .mat-header-cell[mat-sort-header]:not([arrowposition=before]){padding-right:12px}.mat-table .mat-header-cell>.mat-sort-header-container{display:inline-flex}.mat-table .mat-cell{padding-left:8px;padding-right:12px;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;white-space:inherit;-webkit-hyphens:auto;hyphens:auto}.mat-table .mat-cell:first-of-type{padding-left:20px}.mat-table .mat-cell:last-of-type{padding-right:8px}.mat-table .mat-footer-cell{padding-left:8px;padding-right:12px;font-weight:700}.mat-table .mat-footer-cell:first-of-type{padding-left:20px}.mat-table .mat-footer-cell:last-of-type{padding-right:8px}.mat-table .mat-footer-cell .mat-paginator{margin-left:-8px;margin-right:-8px}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i11.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i11.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i11.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i11.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i11.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i11.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i11.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i11.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i11.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i11.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i11.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i11.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i11.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i11.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "component", type: i12.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "directive", type: i13.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: i13.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i13.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i13.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i14.ElderSelectionMasterCheckboxComponent, selector: "elder-selection-master-checkbox" }, { kind: "directive", type: i15.DataContextSelectionDirective, selector: "[elderDataContextSelection]", inputs: ["elderDataContextSelectionModel", "elderDataContextSelection"], exportAs: ["elderDataContextSelection"] }, { kind: "component", type: i16.DataContextStateIndicatorComponent, selector: "elder-data-context-state-indicator", inputs: ["dataContext"] }, { kind: "directive", type: i17.ElderInfiniteScrollLegacyDirective, selector: "[infiniteScroll]" }, { kind: "directive", type: i18.ElderTableRowDirective, selector: "tr[elderTableRow]", inputs: ["elderTableRow"], exportAs: ["elderTableRow"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
259
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ElderTableComponent, decorators: [{
292
260
  type: Component,
293
261
  args: [{ selector: 'elder-table, ebs-table', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
294
262
  ElderTableProviders.ExistingOrNewTableModel,
@@ -296,10 +264,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
296
264
  provide: ELDER_DATA_VIEW,
297
265
  useExisting: forwardRef(() => ElderTableComponent)
298
266
  }
299
- ], template: "\n<div fxLayout=\"column\" fxFlex\n class=\"elder-table\"\n [class.elder-mat-table-container]=\"!embedded\"\n [class.mat-elevation-z5]=\"float\"\n [class.elder-mat-table-flat]=\"!embedded && !float\"\n>\n\n <!-- Toolbar Rows -->\n <ng-container *ngFor=\"let toolbarRowTemplate of toolbarRowTemplates$ | async\">\n <ng-template *ngTemplateOutlet=\"toolbarRowTemplate; context: {$implicit: this}\">\n </ng-template>\n </ng-container>\n\n <!-- Scrollable Table -->\n <div fxLayout=\"column\" class=\"scrollable elder-table-scroll\"\n infiniteScroll\n [eventThrottle]=\"150\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"!isContinuable || !(canLoadMore$ | async)\"\n (closeToEnd)=\"requestMoreDataZoned($event)\"\n >\n <table\n mat-table\n class=\"elder-mat-inner-table\"\n [trackBy]=\"trackByFn\"\n [dataSource]=\"$any(dataContext$ | async)\"\n [elderDataContextSelection]=\"dataContext$ | async\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n\n <!-- selection Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef>\n <elder-selection-master-checkbox></elder-selection-master-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let entity\">\n <mat-checkbox (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selectionModel.toggle(entity) : null\"\n [checked]=\"selectionModel.observeSelection(entity) | async\"\n [disabled]=\"!selectionModel.isSelectable(entity)\"\n class=\"elder-table-checkbox\"\n [class.elder-table-checkbox-visible]=\"(dataSelection.selectionState$ | async).anySelected\"\n >\n </mat-checkbox>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container *ngIf=\"(tableModel.displayedColumnsInner$ | async) as displayedColumnsInner\">\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n <tr mat-row class=\"elder-table-row\"\n *matRowDef=\"let entity; columns: displayedColumnsInner;\"\n [elderTableRow]=\"entity\"\n [class.dense]=\"dense\"\n [class.elder-row-hidden]=\"hiddenField && entity[hiddenField]\"\n [class.elder-row-removing]=\"removingField && entity[removingField]\"\n [class.elder-table-row-selected]=\"interactionMode === 'selection' && selectionModel.observeSelection(entity) | async\"\n (click)=\"onItemClick(entity)\"\n (dblclick)=\"onItemDoubleClick(entity)\"\n >\n </tr>\n <ng-container *ngIf=\"showFooter\">\n <tr mat-footer-row *matFooterRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n </ng-container>\n </ng-container>\n </table>\n </div>\n\n <elder-data-context-state-indicator fxFlex=\"none\" [dataContext]=\"dataContext\">\n </elder-data-context-state-indicator>\n\n <mat-progress-bar fxFlex=\"none\"\n [mode]=\"(dataContext?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"((dataContext?.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Optional Paginator Toolbar -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n fxFlex=\"none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Optional Continuation Footer -->\n <div *ngIf=\"isContinuable\" class=\"elder-table-footer\"\n fxLayout=\"row\" fxFlex=\"none\" fxLayoutAlign=\"end center\" fxLayoutGap=\"10px\"\n style=\"padding-right: 10px\" >\n\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataContext?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\" color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataContinuable.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </div>\n\n</div>\n", styles: [".elder-table-scroll{height:100%}.elder-mat-inner-table{width:100%}.elder-table-row.dense{height:42px!important}.elder-mat-table-container{border-radius:4px;overflow:hidden}.mat-column-select{overflow:visible;overflow:initial;max-width:42px;width:42px}.elder-row-removing{text-decoration:line-through}.elder-row-hidden{display:none}.elder-table-row{cursor:pointer}:host{min-width:0;min-height:0}.elder-table-hint{color:gray}.elder-table-footer{height:44px}.elder-table-checkbox{opacity:.25;transition:opacity .5s ease-in-out}.elder-table-row:hover .elder-table-checkbox{opacity:.9}.elder-table-checkbox-visible{opacity:1}.mat-table .mat-header-cell{padding-left:8px;padding-right:12px;overflow-wrap:normal;word-wrap:normal;word-break:normal;white-space:inherit;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.mat-table .mat-header-cell:first-of-type{padding-left:20px}.mat-table .mat-header-cell:last-of-type{padding-right:8px}.mat-table .mat-header-cell:last-of-type[mat-sort-header]:not([arrowposition=before]){padding-right:8px}.mat-table .mat-header-cell[mat-sort-header][arrowposition=before]{padding-left:0}.mat-table .mat-header-cell[mat-sort-header]:not([arrowposition=before]){padding-right:12px}.mat-table .mat-header-cell>.mat-sort-header-container{display:inline-flex}.mat-table .mat-cell{padding-left:8px;padding-right:12px;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;white-space:inherit;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.mat-table .mat-cell:first-of-type{padding-left:20px}.mat-table .mat-cell:last-of-type{padding-right:8px}.mat-table .mat-footer-cell{padding-left:8px;padding-right:12px;font-weight:700}.mat-table .mat-footer-cell:first-of-type{padding-left:20px}.mat-table .mat-footer-cell:last-of-type{padding-right:8px}.mat-table .mat-footer-cell .mat-paginator{margin-left:-8px;margin-right:-8px}\n"] }]
267
+ ], template: "\n<div fxLayout=\"column\" fxFlex\n class=\"elder-table\"\n [class.elder-mat-table-container]=\"!embedded\"\n [class.mat-elevation-z5]=\"float\"\n [class.elder-mat-table-flat]=\"!embedded && !float\"\n>\n\n <!-- Toolbar Rows -->\n <ng-container *ngFor=\"let toolbarRowTemplate of toolbarRowTemplates$ | async\">\n <ng-template *ngTemplateOutlet=\"toolbarRowTemplate; context: {$implicit: this}\">\n </ng-template>\n </ng-container>\n\n <!-- Scrollable Table -->\n <div fxLayout=\"column\" class=\"scrollable elder-table-scroll\"\n infiniteScroll\n [eventThrottle]=\"150\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"!isContinuable || !(canLoadMore$ | async)\"\n (closeToEnd)=\"requestMoreDataZoned($event)\"\n >\n <table\n mat-table\n class=\"elder-mat-inner-table\"\n [trackBy]=\"trackByFn\"\n [dataSource]=\"$any(dataContext$ | async)\"\n [elderDataContextSelection]=\"dataContext$ | async\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n\n <!-- selection Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef>\n <elder-selection-master-checkbox></elder-selection-master-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let entity\">\n <mat-checkbox (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selectionModel.toggle(entity) : null\"\n [checked]=\"selectionModel.observeSelection(entity) | async\"\n [disabled]=\"!selectionModel.isSelectable(entity)\"\n class=\"elder-table-checkbox\"\n [class.elder-table-checkbox-visible]=\"(dataSelection.selectionState$ | async).anySelected\"\n >\n </mat-checkbox>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container *ngIf=\"(tableModel.displayedColumnsInner$ | async) as displayedColumnsInner\">\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n <tr mat-row class=\"elder-table-row\"\n *matRowDef=\"let entity; columns: displayedColumnsInner;\"\n [elderTableRow]=\"entity\"\n [class.dense]=\"dense\"\n [class.elder-row-hidden]=\"hiddenField && entity[hiddenField]\"\n [class.elder-row-removing]=\"removingField && entity[removingField]\"\n [class.elder-table-row-selected]=\"interactionMode === 'selection' && selectionModel.observeSelection(entity) | async\"\n (click)=\"onItemClick(entity)\"\n (dblclick)=\"onItemDoubleClick(entity)\"\n >\n </tr>\n <ng-container *ngIf=\"showFooter\">\n <tr mat-footer-row *matFooterRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n </ng-container>\n </ng-container>\n </table>\n </div>\n\n <elder-data-context-state-indicator fxFlex=\"none\" [dataContext]=\"dataContext\">\n </elder-data-context-state-indicator>\n\n <mat-progress-bar fxFlex=\"none\"\n [mode]=\"(dataContext?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"((dataContext?.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Optional Paginator Toolbar -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n fxFlex=\"none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Optional Continuation Footer -->\n <div *ngIf=\"isContinuable\" class=\"elder-table-footer\"\n fxLayout=\"row\" fxFlex=\"none\" fxLayoutAlign=\"end center\" fxLayoutGap=\"10px\"\n style=\"padding-right: 10px\" >\n\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataContext?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\" color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataContinuable.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </div>\n\n</div>\n", styles: [".elder-table-scroll{height:100%}.elder-mat-inner-table{width:100%}.elder-table-row.dense{height:42px!important}.elder-mat-table-container{border-radius:4px;overflow:hidden}.mat-column-select{overflow:visible;overflow:initial;max-width:42px;width:42px}.elder-row-removing{text-decoration:line-through}.elder-row-hidden{display:none}.elder-table-row{cursor:pointer}:host{min-width:0;min-height:0}.elder-table-hint{color:gray}.elder-table-footer{height:44px}.elder-table-checkbox{opacity:.25;transition:opacity .5s ease-in-out}.elder-table-row:hover .elder-table-checkbox{opacity:.9}.elder-table-checkbox-visible{opacity:1}.mat-table .mat-header-cell{padding-left:8px;padding-right:12px;overflow-wrap:normal;word-wrap:normal;word-break:normal;white-space:inherit;-webkit-hyphens:auto;hyphens:auto}.mat-table .mat-header-cell:first-of-type{padding-left:20px}.mat-table .mat-header-cell:last-of-type{padding-right:8px}.mat-table .mat-header-cell:last-of-type[mat-sort-header]:not([arrowposition=before]){padding-right:8px}.mat-table .mat-header-cell[mat-sort-header][arrowposition=before]{padding-left:0}.mat-table .mat-header-cell[mat-sort-header]:not([arrowposition=before]){padding-right:12px}.mat-table .mat-header-cell>.mat-sort-header-container{display:inline-flex}.mat-table .mat-cell{padding-left:8px;padding-right:12px;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;white-space:inherit;-webkit-hyphens:auto;hyphens:auto}.mat-table .mat-cell:first-of-type{padding-left:20px}.mat-table .mat-cell:last-of-type{padding-right:8px}.mat-table .mat-footer-cell{padding-left:8px;padding-right:12px;font-weight:700}.mat-table .mat-footer-cell:first-of-type{padding-left:20px}.mat-table .mat-footer-cell:last-of-type{padding-right:8px}.mat-table .mat-footer-cell .mat-paginator{margin-left:-8px;margin-right:-8px}\n"] }]
300
268
  }], ctorParameters: function () { return [{ type: i1.ElderTableModel }, { type: i2.SelectionModel, decorators: [{
301
269
  type: Optional
302
- }] }, { type: i3.ElderDataViewSelectionMode, decorators: [{
270
+ }] }, { type: i3.ElderDataViewOptionsProvider, decorators: [{
303
271
  type: Optional
304
272
  }, {
305
273
  type: SkipSelf
@@ -332,8 +300,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
332
300
  type: Input
333
301
  }], pageSizeOptions: [{
334
302
  type: Input
335
- }], cleanUp: [{
336
- type: Input
337
303
  }], keepSelection: [{
338
304
  type: Input
339
305
  }], showFooter: [{
@@ -353,4 +319,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImpor
353
319
  }], selectionVisible: [{
354
320
  type: Input
355
321
  }] } });
356
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLXZpZXcvdGFibGUvZWxkZXItdGFibGUvZWxkZXItdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLXZpZXcvdGFibGUvZWxkZXItdGFibGUvZWxkZXItdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFVBQVUsRUFDVixLQUFLLEVBSUwsUUFBUSxFQUVSLFFBQVEsRUFDUixXQUFXLEVBRVgsU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsaUNBQWlDLEVBQUMsTUFBTSxxRUFBcUUsQ0FBQztBQUN0SCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFFekQsT0FBTyxFQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDMUUsT0FBTyxFQUFlLGFBQWEsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBRTlGLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFDM0YsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkRBQTJELENB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SXRCLFlBQVk7c0JBRGxCLGVBQWU7dUJBQUMseUJBQXlCO2dCQUluQyxPQUFPO3NCQURiLGVBQWU7dUJBQUMsU0FBUztnQkFXbkIsT0FBTztzQkFEYixLQUFLO2dCQVVDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBV0MsV0FBVztzQkFEakIsS0FBSztnQkFJQyxlQUFlO3NCQURyQixLQUFLO2dCQVdDLE9BQU87c0JBRGIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBVUMsdUJBQXVCO3NCQUQ3QixlQUFlO3VCQUFDLDBCQUEwQixFQUFFLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBQztnQkFVeEQsU0FBUztzQkFEaEIsWUFBWTt1QkFBQyxzQkFBc0I7Z0JBNkd6QixlQUFlO3NCQUR6QixLQUFLO2dCQU1LLElBQUk7c0JBRGQsS0FBSztnQkErQ0ssZ0JBQWdCO3NCQUQxQixLQUFLO2dCQVdLLGdCQUFnQjtzQkFEMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBRdWVyeUxpc3QsXG4gIFNraXBTZWxmLFxuICBUZW1wbGF0ZVJlZixcbiAgVHJhY2tCeUZ1bmN0aW9uLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdFRhYmxlRGF0YUNvbnRleHRCaW5kaW5nQnVpbGRlcn0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL2RhdGEvZGF0YS1jb250ZXh0L21hdC10YWJsZS1kYXRhLWNvbnRleHQtYmluZGluZyc7XG5pbXBvcnQge01hdFBhZ2luYXRvcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7TWF0U29ydH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQge01hdENvbHVtbkRlZiwgTWF0Um93RGVmLCBNYXRUYWJsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHtJRGF0YUNvbnRleHQsIGlzRGF0YUNvbnRleHR9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGEtY29udGV4dC9kYXRhLWNvbnRleHQnO1xuaW1wb3J0IHtTZWxlY3Rpb25Nb2RlbH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL3NlbGVjdGlvbi9zZWxlY3Rpb24tbW9kZWwnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0Nka0NvbHVtbkRlZiwgQ2RrUm93RGVmLCBDZGtUYWJsZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RhYmxlJztcbmltcG9ydCB7RGF0YUNvbnRleHRCdWlsZGVyfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhLWNvbnRleHQvZGF0YS1jb250ZXh0LWJ1aWxkZXInO1xuaW1wb3J0IHtFTERFUl9EQVRBX1ZJRVd9IGZyb20gJy4uLy4uL2Jhc2UvZWxkZXItZGF0YS12aWV3JztcbmltcG9ydCB7RWxkZXJEYXRhVmlld1NlbGVjdGlvbk1vZGV9IGZyb20gJy4uLy4uLy4uL3NlbGVjdC9wb3B1cC9zZWxlY3Rpb24tbW9kZWwtcG9wdXAuZGlyZWN0aXZlJztcbmltcG9ydCB7RWxkZXJUYWJsZVJvd0RpcmVjdGl2ZX0gZnJvbSAnLi4vZWxkZXItdGFibGUtcm93LmRpcmVjdGl2ZSc7XG5pbXBvcnQge0lEYXRhU291cmNlLCBpc0RhdGFTb3VyY2V9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGFzb3VyY2UvZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHtFbGRlckRhdGFWaWV3QmFzZUNvbXBvbmVudH0gZnJvbSAnLi4vLi4vYmFzZS9lbGRlci1kYXRhLXZpZXctYmFzZSc7XG5pbXBvcnQge0VsZGVyVGFibGVNb2RlbH0gZnJvbSAnLi4vbW9kZWwvZWxkZXItdGFibGUtbW9kZWwnO1xuaW1wb3J0IHtFbGRlclRhYmxlUHJvdmlkZXJzfSBmcm9tICcuLi9tb2RlbC9lbGRlci10YWJsZS1tb2RlbC1wcm92aWRlcic7XG5pbXBvcnQge1F1ZXJ5TGlzdEJpbmRpbmd9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi91dGlscy9xdWVyeS1saXN0LWJpbmRpbmcnO1xuaW1wb3J0IHtFbGRlclRhYmxlTW9kZWxDZGtUYWJsZUJpbmRpbmd9IGZyb20gJy4uL21vZGVsL2VsZGVyLXRhYmxlLW1vZGVsLWNkay10YWJsZS1iaW5kaW5nJztcbmltcG9ydCB7RWxkZXJUYWJsZU1vZGVsUXVlcnlHcm91cH0gZnJvbSAnLi4vbW9kZWwvZWxkZXItdGFibGUtbW9kZWwtcXVlcnktZ3JvdXAnO1xuaW1wb3J0IHtFbGRlclRhYmxlRXh0ZW5zaW9uRGlyZWN0aXZlfSBmcm9tICcuLi9lbGRlci10YWJsZS1leHRlbnNpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7RWxkZXJUYWJsZUNvbHVtbkRpcmVjdGl2ZX0gZnJvbSAnLi4vZWxkZXItdGFibGUtY29sdW1uLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0NvbHVtblBvc2l0aW9uU3BlY30gZnJvbSAnLi4vbW9kZWwvZWxkZXItY29sdW1uLWxheW91dCc7XG5pbXBvcnQge0VsZGVyVGFibGVUb29sYmFyRGlyZWN0aXZlfSBmcm9tICcuL2VsZGVyLXRhYmxlLXRvb2xiYXIuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZWxkZXItdGFibGUsIGVicy10YWJsZScsIC8vIGVicy10YWJsZSBpcyBkZXByZWNhdGVkXG4gIHRlbXBsYXRlVXJsOiAnLi9lbGRlci10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VsZGVyLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBFbGRlclRhYmxlUHJvdmlkZXJzLkV4aXN0aW5nT3JOZXdUYWJsZU1vZGVsLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVMREVSX0RBVEFfVklFVyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVsZGVyVGFibGVDb21wb25lbnQpXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyVGFibGVDb21wb25lbnQgZXh0ZW5kcyBFbGRlckRhdGFWaWV3QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgLyoqXG4gICAqIExvYWQgbmV4dCBjaHVuayBhZnRlciBjdXJyZW50IGlzIGRvbmVcbiAgICovXG4gIHByaXZhdGUgbG9hZE5leHRRdWV1ZWQgPSBmYWxzZTtcblxuICAvLy8gVGFibGVcbiAgQFZpZXdDaGlsZChNYXRUYWJsZSwge3N0YXRpYzogdHJ1ZX0pXG4gIHB1YmxpYyBtYXRUYWJsZTogQ2RrVGFibGU8YW55PjtcblxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvcilcbiAgcHVibGljIG1hdFBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX21hdFNvcnQ6IE1hdFNvcnQ7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihNYXRDb2x1bW5EZWYpXG4gIHB1YmxpYyBjb2x1bW5EZWZzOiBRdWVyeUxpc3Q8Q2RrQ29sdW1uRGVmPjtcblxuICBAQ29udGVudENoaWxkcmVuKEVsZGVyVGFibGVDb2x1bW5EaXJlY3RpdmUpXG4gIHB1YmxpYyBlbGRlckNvbHVtbnM6IFF1ZXJ5TGlzdDxFbGRlclRhYmxlQ29sdW1uRGlyZWN0aXZlPjtcblxuICBAQ29udGVudENoaWxkcmVuKE1hdFJvd0RlZilcbiAgcHVibGljIHJvd0RlZnM6IFF1ZXJ5TGlzdDxDZGtSb3dEZWY8YW55Pj47XG5cbiAgLyoqXG4gICAqIEZpZWxkIHRvIGlkZW50aWZ5IHRoZSBkYXRhIHJlY29yZHMgKElEIGZpZWxkKS5cbiAgICogTm90ZTogVGhpcyBwcm9wZXJ0eSBpcyBvbmx5IGNvbnNpZGVyZWQgaW4gY2FzZSB0aGVcbiAgICogdW5kZXJseWluZyBkYXRhIGlzIGFuIEFycmF5LlxuICAgKiBJbiBjYXNlIG9mIERhdGFDb250ZXh0LCB0aGUgSUQgZmllbGQgbmVlZHMgdG8gYmUgZGVmaW5lZCBpbiB0aGUgY29udGV4dC5cbiAgICogSW4gY2FzZSBvZiBEYXRhU291cmNlLCB0aGUgSUQgZmllbGQgaXMgYXV0b21hdGljYWxseSBwaWNrZWQgZnJvbSB0aGUgRGF0YVNvdXJjZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpZEZpZWxkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gdGhpcyBmaWVsZCBpcyBwcmVzZW50IGFuZCB0cnVlLFxuICAgKiB0aGUgY29yZXNwb25kaW5nIHJvdyBpcyBtYXJrZWQgdG8gYmUgaW4gdGhlIHByb2Nlc3NlZCBvZiBiZWluZyByZW1vdmVkLlxuICAgKlxuICAgKiBJLmUuICdyZW1vdmluZydcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZW1vdmluZ0ZpZWxkOiBzdHJpbmcgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRoaXMgZmllbGQgaXMgcHJlc2VudCBhbmQgdHJ1ZSxcbiAgICogdGhlIGNvcnJlc3BvbmRpbmcgcm93IGlzIGhpZGRlbi5cbiAgICpcbiAgICogSS5lLiAnZGVsZXRlZCdcbiAgICpcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoaWRkZW5GaWVsZDogc3RyaW5nID0gbnVsbDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcGFnZVNpemVPcHRpb25zID0gWzMwLCA1MCwgMTAwLCAxNTAsIDIwMF07XG5cbiAgLyoqXG4gICAqIERlZmluZSBpZiBlbGRlci10YWJsZSBzaG91bGQgY2xlYW4gdXAgdGhlXG4gICAqIGRhdGEtY29udGV4dCByZXNvdXJjZXMgZm9yIHlvdS5cbiAgICpcbiAgICogSW4gbW9yZSBhZHZhbmNlZCBzY2VuYXJpb3Mgd2hlcmUgeW91IHBsYW4gdG8gcmV1c2UgdGhlIHNhbWUgZGF0YS1jb250ZXh0XG4gICAqIHNldCB0aGlzIHRvIGZhbHNlIGFuZCByZWxlYXNlIHRoZSByZXNvdXJjZXMgeW91cnNlbGYuIChkYXRhQ29udGV4dC5jbG9zZSlcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjbGVhblVwID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMga2VlcFNlbGVjdGlvbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dGb290ZXIgPSBmYWxzZTtcblxuICBwdWJsaWMgY2FuTG9hZE1vcmUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwdWJsaWMgdG90YWwkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJsZSB0b29sYmFyXG4gICAqL1xuICBAQ29udGVudENoaWxkcmVuKEVsZGVyVGFibGVUb29sYmFyRGlyZWN0aXZlLCB7cmVhZDogVGVtcGxhdGVSZWZ9KVxuICBwdWJsaWMgdG9vbGJhclJvd1RlbXBsYXRlUXVlcnk6IFF1ZXJ5TGlzdDxUZW1wbGF0ZVJlZjxhbnk+PjtcbiAgcHVibGljIHJlYWRvbmx5IHRvb2xiYXJSb3dUZW1wbGF0ZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlZjxhbnk+W10+KFtdKTtcblxuICAvKipcbiAgICogU2VsZWN0aW9uIG1vZGVsIGxpZmUgY3ljbGVcbiAgICovXG4gIHByaXZhdGUgc2VsZWN0aW9uTGlmZUN5Y2xlOiBTdWJzY3JpcHRpb247XG5cbiAgQFZpZXdDaGlsZHJlbihFbGRlclRhYmxlUm93RGlyZWN0aXZlKVxuICBwcml2YXRlIHJvd3NRdWVyeTogUXVlcnlMaXN0PEVsZGVyVGFibGVSb3dEaXJlY3RpdmU8YW55Pj47XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnQgcm93cyBvZiB0aGlzIHRhYmxlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvd3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxFbGRlclRhYmxlUm93RGlyZWN0aXZlPGFueT5bXT4oW10pO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5kZXggb2YgdGhpcyB0YWJsZSBncm91cCBleHRlbnNpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4dGVuc2lvbkdyb3VwSW5kZXg6IG51bWJlcjtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGFibGVNb2RlbDogRWxkZXJUYWJsZU1vZGVsLFxuICAgIEBPcHRpb25hbCgpIHNlbGVjdGlvbk1vZGVsOiBTZWxlY3Rpb25Nb2RlbDxhbnk+LFxuICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIGRhdGFWaWV3U2VsZWN0aW9uOiBFbGRlckRhdGFWaWV3U2VsZWN0aW9uTW9kZSxcbiAgICBAT3B0aW9uYWwoKSBtYXRTb3J0OiBNYXRTb3J0LFxuICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHByaXZhdGUgcmVhZG9ubHkgcGFyZW50RXh0ZW5zaW9uOiBFbGRlclRhYmxlRXh0ZW5zaW9uRGlyZWN0aXZlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZVxuICApIHtcbiAgICBzdXBlcihzZWxlY3Rpb25Nb2RlbCwgZGF0YVZpZXdTZWxlY3Rpb24pO1xuICAgIHRoaXMuX21hdFNvcnQgPSBtYXRTb3J0O1xuICAgIHRoaXMuX2V4dGVuc2lvbkdyb3VwSW5kZXggPSAocGFyZW50RXh0ZW5zaW9uPy5leHRlbnNpb25Hcm91cEluZGV4ID8/IDApICsgMTtcbiAgICBpZiAodGhpcy5fbWF0U29ydCkge1xuICAgICAgdGhpcy5fbWF0U29ydC5kaXNhYmxlQ2xlYXIgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBMaWZlIEN5Y2xlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICAgIGlmICh0aGlzLmRhdGFWaWV3U2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvblZpc2libGUgPSB0cnVlO1xuICAgICAgdGhpcy5zZWxlY3Rpb25NdWx0aUVuYWJsZWQgPSB0aGlzLmRhdGFWaWV3U2VsZWN0aW9uLm11bHRpO1xuICAgICAgdGhpcy5pbnRlcmFjdGlvbk1vZGUgPSAnc2VsZWN0aW9uJztcbiAgICAgIHRoaXMuZmxvYXQgPSBmYWxzZTtcblxuICAgICAgaWYgKHRoaXMuZGF0YUNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5kYXRhQ29udGV4dC5maWx0ZXIudXBkYXRlRmlsdGVycyh0aGlzLmRhdGFWaWV3U2VsZWN0aW9uLmZpbHRlcnMpO1xuICAgICAgICB0aGlzLmRhdGFDb250ZXh0LnNvcnQudXBkYXRlU29ydHModGhpcy5kYXRhVmlld1NlbGVjdGlvbi5zb3J0cyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgRWxkZXJUYWJsZU1vZGVsQ2RrVGFibGVCaW5kaW5nXG4gICAgICAub2YodGhpcy50YWJsZU1vZGVsKVxuICAgICAgLnRhYmxlKHRoaXMubWF0VGFibGUpXG4gICAgICAuYmluZFVudGlsKHRoaXMuZGVzdHJveSQpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcblxuICAgIEVsZGVyVGFibGVNb2RlbFF1ZXJ5R3JvdXBcbiAgICAgIC5zdGFydCh0aGlzLnRhYmxlTW9kZWwsIHRoaXMuX2V4dGVuc2lvbkdyb3VwSW5kZXgpXG4gICAgICAud2l0aENvbHVtbnNQb3NpdGlvbihDb2x1bW5Qb3NpdGlvblNwZWMucmVsYXRpdmVUb1ByZXZHcm91cCgnc3RhcnQnKSlcbiAgICAgIC53aXRoQ29sdW1uRGVmcyh0aGlzLmNvbHVtbkRlZnMsIHRoaXMuZWxkZXJDb2x1bW5zKVxuICAgICAgLndpdGhSb3dEZWZzKHRoaXMucm93RGVmcylcbiAgICAgIC53aXRoU29ydCh0aGlzLl9tYXRTb3J0KVxuICAgICAgLmJpbmRVbnRpbCh0aGlzLmRlc3Ryb3kkKTtcblxuICAgIFF1ZXJ5TGlzdEJpbmRpbmdcbiAgICAgIC5vZih0aGlzLnRvb2xiYXJSb3dUZW1wbGF0ZVF1ZXJ5KVxuICAgICAgLnVwZGF0ZWQodG9vbGJhclJvd3MgPT4gdGhpcy50b29sYmFyUm93VGVtcGxhdGVzJC5uZXh0KHRvb2xiYXJSb3dzKSlcbiAgICAgIC5iaW5kVW50aWwodGhpcy5kZXN0cm95JCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXG4gICAgTWF0VGFibGVEYXRhQ29udGV4dEJpbmRpbmdCdWlsZGVyXG4gICAgICAuc3RhcnQodGhpcy5kYXRhQ29udGV4dCQpXG4gICAgICAud2l0aFNvcnRzKHRoaXMudGFibGVNb2RlbC5zb3J0cyQpXG4gICAgICAud2l0aFBhZ2luYXRvcihvZih0aGlzLm1hdFBhZ2luYXRvcikpXG4gICAgICAuYmluZFVudGlsKHRoaXMuZGVzdHJveSQpO1xuXG4gICAgUXVlcnlMaXN0QmluZGluZ1xuICAgICAgLm9mKHRoaXMucm93c1F1ZXJ5KVxuICAgICAgLnVwZGF0ZWQocm93cyA9PiB0aGlzLnJvd3MkLm5leHQocm93cykpXG4gICAgICAuYmluZFVudGlsKHRoaXMuZGVzdHJveSQpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB0aGlzLmF1dG9DbGVhblVwKCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdG9vbGJhclRlbXBsYXRlKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy50b29sYmFyUm93VGVtcGxhdGVzJC5uZXh0KFt0ZW1wbGF0ZV0pO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkYXRhKGRhdGE6IEFycmF5PGFueT4gfCBJRGF0YVNvdXJjZTxhbnk+IHwgSURhdGFDb250ZXh0PGFueT4pIHtcblxuICAgIHRoaXMuYXV0b0NsZWFuVXAoKTtcblxuICAgIGxldCBkYzogSURhdGFDb250ZXh0PGFueT47XG5cbiAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBkYyA9IERhdGFDb250ZXh0QnVpbGRlci5zdGFydCgpXG4gICAgICAgIC5sb2NhbFNvcnQoKVxuICAgICAgICAuYnVpbGRMb2NhbChkYXRhLCB0aGlzLmlkRmllbGQpOyAvLyBQb3RlbnRpYWwgTWVtb3J5IGxlYWsgKFNlZSBhdXRvQ2xlYW5VcClcbiAgICAgIGRjLnN0YXJ0KCk7XG4gICAgfSBlbHNlIGlmIChpc0RhdGFTb3VyY2UoZGF0YSkpIHtcbiAgICAgIGRjID0gRGF0YUNvbnRleHRCdWlsZGVyLnN0YXJ0KClcbiAgICAgICAgLmxvY2FsU29ydCgpXG4gICAgICAgIC5yZWxvYWRPbkxvY2FsQ2hhbmdlcygpXG4gICAgICAgIC5idWlsZChkYXRhKTsgLy8gUG90ZW50aWFsIE1lbW9yeSBsZWFrIChTZWUgYXV0b0NsZWFuVXApXG4gICAgICBkYy5zdGFydCgpO1xuICAgIH0gZWxzZSBpZiAoaXNEYXRhQ29udGV4dChkYXRhKSkge1xuICAgICAgZGMgPSBkYXRhO1xuICAgIH0gZWxzZSBpZiAoZGF0YSA9PT0gbnVsbCB8fCBkYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRjID0gRGF0YUNvbnRleHRCdWlsZGVyLnN0YXJ0KCkuYnVpbGRFbXB0eSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBkYXRhIG11c3QgZWl0aGVyIGJlIGFuIEFycmF5LCBJRGF0YVNvdXJjZSBvciBJRGF0YUNvbnRleHQsIGJ1dCB3YXM6ICcgKyAodHlwZW9mIGRhdGEpKTtcbiAgICB9XG4gICAgdGhpcy5kYXRhQ29udGV4dCA9IGRjO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uRGF0YUNvbnRleHRTZXQoZGF0YTogSURhdGFDb250ZXh0PGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLnRvdGFsJCA9IGRhdGEudG90YWwucGlwZShcbiAgICAgIG1hcCh0b3RhbCA9PiB0b3RhbCA/IHRvdGFsICsgJycgOiAn4oieJylcbiAgICApO1xuXG4gICAgdGhpcy5zZXR1cFNlbGVjdGlvbkxpZmVDeWNsZShkYXRhKTtcblxuICAgIC8vIHRoaXMuc2VsZWN0aW9uTW9kZWwuY2xlYXIoKTsgLy8gVE9ETyBTdXBwb3J0IGNoYW5nZWFibGUgZGF0YS1jb250ZXh0IGZvciBzdGF0aWMgYXJyYXkgdXNlIGNhc2VcblxuICAgIGlmICh0aGlzLmlzQ29udGludWFibGUpIHtcbiAgICAgIHRoaXMuY2FuTG9hZE1vcmUkID0gY29tYmluZUxhdGVzdChbZGF0YS5sb2FkaW5nLCB0aGlzLmRhdGFDb250aW51YWJsZS5oYXNNb3JlRGF0YV0pLnBpcGUoXG4gICAgICAgIG1hcCgoW2xvYWRpbmcsIGhhc01vcmVEYXRhXSkgPT4gIWxvYWRpbmcgJiYgaGFzTW9yZURhdGEpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhbkxvYWRNb3JlJCA9IG9mKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc3BsYXllZENvbHVtbnMoZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnRhYmxlTW9kZWwuZGlzcGxheWVkQ29sdW1ucyA9IGRpc3BsYXllZENvbHVtbnM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc3BsYXllZENvbHVtbnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnRhYmxlTW9kZWwuZGlzcGxheWVkQ29sdW1ucztcbiAgfVxuXG4gIC8qKiBJbmRpY2F0ZXMgaWYgc2VsZWN0aW9uIGNvbHVtbiBpcyBzaG93bi4gKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3Rpb25WaXNpYmxlKHZpc2libGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnRhYmxlTW9kZWwuc2VsZWN0aW9uVmlzaWJsZSA9IHZpc2libGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGlvblZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVNb2RlbC5zZWxlY3Rpb25WaXNpYmxlO1xuICB9XG5cbiAgLypcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBnZXQgYWN0aXZlSXRlbSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmVsZGVyVGFibGVBY3RpdmF0aW9uLmFjdGl2ZUl0ZW0kO1xuICB9Ki9cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgcmVxdWVzdE1vcmVEYXRhWm9uZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuXG4gICAgaWYgKHRoaXMuZGF0YUNvbnRpbnVhYmxlLmhhc01vcmVEYXRhU25hcHNob3QpIHtcblxuICAgICAgaWYgKHRoaXMuZGF0YUNvbnRpbnVhYmxlLnNuYXBzaG90LmlzTG9hZGluZykge1xuICAgICAgICB0aGlzLmxvYWROZXh0UXVldWVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGF0YUNvbnRpbnVhYmxlLmxvYWRNb3JlKClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgIGxvYWRlZCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubG9hZE5leHRRdWV1ZWQpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9hZE5leHRRdWV1ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVxdWVzdE1vcmVEYXRhWm9uZWQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9hZE5leHRRdWV1ZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRyYWNrQnlGbigpOiBUcmFja0J5RnVuY3Rpb248YW55PiB7XG4gICAgcmV0dXJuIChpbmRleDogbnVtYmVyLCBlbnRpdHk6IGFueSkgPT4gdGhpcy5nZXRJZChlbnRpdHkpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBzZXR1cFNlbGVjdGlvbkxpZmVDeWNsZShkYXRhOiBJRGF0YUNvbnRleHQ8YW55Pik6IHZvaWQge1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTGlmZUN5Y2xlKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbkxpZmVDeWNsZS51bnN1YnNjcmliZSgpOyAvLyBDbGVhbiB1cCBwcmV2aW91cyBzdWJcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGlvbkxpZmVDeWNsZSA9IGRhdGEuZGF0YS5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgKS5zdWJzY3JpYmUobmV3RGF0YSA9PiB7XG5cbiAgICAgIGlmICh0aGlzLmtlZXBTZWxlY3Rpb24pIHtcbiAgICAgICAgLy8gSWYga2VlcCBzZWxlY3Rpb24gZW5hYmxlZFxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlbC5oYXNWYWx1ZSkge1xuXG4gICAgICAgICAgLy8gQ2hlY2sgdGhhdCBhbGwgc2VsZWN0ZWQgdmFsdWVzIGFyZSBzdGlsbCBwcmVzZW50IG9yIHJlbW92ZSB0aGVtXG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdJZHMgPSBuZXcgU2V0PGFueT4oXG4gICAgICAgICAgICBuZXdEYXRhXG4gICAgICAgICAgICAgIC5tYXAoZCA9PiB0aGlzLmdldElkKGQpKVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCBub0xvbmdlckF2YWlsYWJsZUlkcyA9IHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0aW9uU25hcHNob3RcbiAgICAgICAgICAgIC5tYXAoc2VsZWN0ZWQgPT4gdGhpcy5nZXRJZChzZWxlY3RlZCkpXG4gICAgICAgICAgICAuZmlsdGVyKHNlbGVjdGVkSWQgPT4gIWV4aXN0aW5nSWRzLmhhcyhzZWxlY3RlZElkKSk7XG5cbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLmRlc2VsZWN0SWRzKG5vTG9uZ2VyQXZhaWxhYmxlSWRzKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5jbGVhcigpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIGNsZWFuIHVwIG9mIHRoZSBjdXJyZW50IGRhdGEgY29udGV4dCBpZiBhdXRvIGNsZWFuIHVwIGlzIGVuYWJsZWQuXG4gICAqL1xuICBwcml2YXRlIGF1dG9DbGVhblVwKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsZWFuVXAgJiYgdGhpcy5kYXRhQ29udGV4dCkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ1JlbGVhc2luZyBEYXRhQ29udGV4dCByZXNvdXJjZXMgdG8gcHJldmVudCBtZW1vcnkgbGVhay4gW2NsZWFuVXBdPVwidHJ1ZVwiJyk7XG4gICAgICB0aGlzLmRhdGFDb250ZXh0LmNsb3NlKCk7XG4gICAgfVxuICB9XG59XG4iLCJcbjxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZsZXhcbiAgICAgY2xhc3M9XCJlbGRlci10YWJsZVwiXG4gICAgIFtjbGFzcy5lbGRlci1tYXQtdGFibGUtY29udGFpbmVyXT1cIiFlbWJlZGRlZFwiXG4gICAgIFtjbGFzcy5tYXQtZWxldmF0aW9uLXo1XT1cImZsb2F0XCJcbiAgICAgW2NsYXNzLmVsZGVyLW1hdC10YWJsZS1mbGF0XT1cIiFlbWJlZGRlZCAmJiAhZmxvYXRcIlxuPlxuXG4gIDwhLS0gVG9vbGJhciBSb3dzIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0b29sYmFyUm93VGVtcGxhdGUgb2YgdG9vbGJhclJvd1RlbXBsYXRlcyQgfCBhc3luY1wiPlxuICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cInRvb2xiYXJSb3dUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogdGhpc31cIj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIFNjcm9sbGFibGUgVGFibGUgLS0+XG4gIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBjbGFzcz1cInNjcm9sbGFibGUgZWxkZXItdGFibGUtc2Nyb2xsXCJcbiAgICAgICBpbmZpbml0ZVNjcm9sbFxuICAgICAgIFtldmVudFRocm90dGxlXT1cIjE1MFwiXG4gICAgICAgW29mZnNldEZhY3Rvcl09XCIyXCJcbiAgICAgICBbaWdub3JlU2Nyb2xsRXZlbnRdPVwiIWlzQ29udGludWFibGUgfHwgIShjYW5Mb2FkTW9yZSQgfCBhc3luYylcIlxuICAgICAgIChjbG9zZVRvRW5kKT1cInJlcXVlc3RNb3JlRGF0YVpvbmVkKCRldmVudClcIlxuICA+XG4gICAgPHRhYmxlXG4gICAgICBtYXQtdGFibGVcbiAgICAgIGNsYXNzPVwiZWxkZXItbWF0LWlubmVyLXRhYmxlXCJcbiAgICAgIFt0cmFja0J5XT1cInRyYWNrQnlGblwiXG4gICAgICBbZGF0YVNvdXJjZV09XCIkYW55KGRhdGFDb250ZXh0JCB8IGFzeW5jKVwiXG4gICAgICBbZWxkZXJEYXRhQ29udGV4dFNlbGVjdGlvbl09XCJkYXRhQ29udGV4dCQgfCBhc3luY1wiICNkYXRhU2VsZWN0aW9uPVwiZWxkZXJEYXRhQ29udGV4dFNlbGVjdGlvblwiXG4gICAgICBbZWxkZXJEYXRhQ29udGV4dFNlbGVjdGlvbk1vZGVsXT1cInNlbGVjdGlvbk1vZGVsXCJcbiAgICA+XG5cbiAgICAgIDwhLS0gc2VsZWN0aW9uIENvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic2VsZWN0XCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgPGVsZGVyLXNlbGVjdGlvbi1tYXN0ZXItY2hlY2tib3g+PC9lbGRlci1zZWxlY3Rpb24tbWFzdGVyLWNoZWNrYm94PlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZW50aXR5XCI+XG4gICAgICAgICAgPG1hdC1jaGVja2JveCAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uTW9kZWwudG9nZ2xlKGVudGl0eSkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbk1vZGVsLm9ic2VydmVTZWxlY3Rpb24oZW50aXR5KSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RhYmxlKGVudGl0eSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlbGRlci10YWJsZS1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWxkZXItdGFibGUtY2hlY2tib3gtdmlzaWJsZV09XCIoZGF0YVNlbGVjdGlvbi5zZWxlY3Rpb25TdGF0ZSQgfCBhc3luYykuYW55U2VsZWN0ZWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj48L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIodGFibGVNb2RlbC5kaXNwbGF5ZWRDb2x1bW5zSW5uZXIkIHwgYXN5bmMpIGFzIGRpc3BsYXllZENvbHVtbnNJbm5lclwiPlxuICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNJbm5lcjsgc3RpY2t5OiB0cnVlXCI+PC90cj5cbiAgICAgICAgPHRyIG1hdC1yb3cgY2xhc3M9XCJlbGRlci10YWJsZS1yb3dcIlxuICAgICAgICAgICAgKm1hdFJvd0RlZj1cImxldCBlbnRpdHk7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnNJbm5lcjtcIlxuICAgICAgICAgICAgW2VsZGVyVGFibGVSb3ddPVwiZW50aXR5XCJcbiAgICAgICAgICAgIFtjbGFzcy5kZW5zZV09XCJkZW5zZVwiXG4gICAgICAgICAgICBbY2xhc3MuZWxkZXItcm93LWhpZGRlbl09XCJoaWRkZW5GaWVsZCAmJiBlbnRpdHlbaGlkZGVuRmllbGRdXCJcbiAgICAgICAgICAgIFtjbGFzcy5lbGRlci1yb3ctcmVtb3ZpbmddPVwicmVtb3ZpbmdGaWVsZCAmJiBlbnRpdHlbcmVtb3ZpbmdGaWVsZF1cIlxuICAgICAgICAgICAgW2NsYXNzLmVsZGVyLXRhYmxlLXJvdy1zZWxlY3RlZF09XCJpbnRlcmFjdGlvbk1vZGUgPT09ICdzZWxlY3Rpb24nICYmIHNlbGVjdGlvbk1vZGVsLm9ic2VydmVTZWxlY3Rpb24oZW50aXR5KSB8IGFzeW5jXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljayhlbnRpdHkpXCJcbiAgICAgICAgICAgIChkYmxjbGljayk9XCJvbkl0ZW1Eb3VibGVDbGljayhlbnRpdHkpXCJcbiAgICAgICAgPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0Zvb3RlclwiPlxuICAgICAgICAgIDx0ciBtYXQtZm9vdGVyLXJvdyAqbWF0Rm9vdGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc0lubmVyOyBzdGlja3k6IHRydWVcIj48L3RyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGFibGU+XG4gIDwvZGl2PlxuXG4gIDxlbGRlci1kYXRhLWNvbnRleHQtc3RhdGUtaW5kaWNhdG9yIGZ4RmxleD1cIm5vbmVcIiBbZGF0YUNvbnRleHRdPVwiZGF0YUNvbnRleHRcIj5cbiAgPC9lbGRlci1kYXRhLWNvbnRleHQtc3RhdGUtaW5kaWNhdG9yPlxuXG4gIDxtYXQtcHJvZ3Jlc3MtYmFyIGZ4RmxleD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBbbW9kZV09XCIoZGF0YUNvbnRleHQ/LmxvYWRpbmcgfCBhc3luYykgPyAnaW5kZXRlcm1pbmF0ZScgOiAnZGV0ZXJtaW5hdGUnXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cIigoZGF0YUNvbnRleHQ/LnN0YXR1cyB8IGFzeW5jKT8uaGFzRXJyb3IpID8gJ3dhcm4nIDogJ3ByaW1hcnknXCI+XG4gIDwvbWF0LXByb2dyZXNzLWJhcj5cblxuICA8IS0tIE9wdGlvbmFsIFBhZ2luYXRvciBUb29sYmFyIC0tPlxuICA8bWF0LXBhZ2luYXRvciAjbWF0UGFnaW5hdG9yICpuZ0lmPVwiaXNBY3RpdmVQYWdlZCAmJiAoZGF0YUFjdGl2ZVBhZ2VkLnBhZ2UgfCBhc3luYykgYXMgcGFnZVwiXG4gICAgICAgICAgICAgICAgIGZ4RmxleD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICBbbGVuZ3RoXT1cImRhdGFDb250ZXh0Py50b3RhbCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgW3BhZ2VJbmRleF09XCJwYWdlPy5pbmRleFwiXG4gICAgICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlPy5zaXplXCJcbiAgICAgICAgICAgICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIj5cbiAgPC9tYXQtcGFnaW5hdG9yPlxuXG4gIDwhLS0gT3B0aW9uYWwgQ29udGludWF0aW9uIEZvb3RlciAtLT5cbiAgPGRpdiAqbmdJZj1cImlzQ29udGludWFibGVcIiBjbGFzcz1cImVsZGVyLXRhYmxlLWZvb3RlclwiXG4gICAgICAgZnhMYXlvdXQ9XCJyb3dcIiBmeEZsZXg9XCJub25lXCIgZnhMYXlvdXRBbGlnbj1cImVuZCBjZW50ZXJcIiBmeExheW91dEdhcD1cIjEwcHhcIlxuICAgICAgIHN0eWxlPVwicGFkZGluZy1yaWdodDogMTBweFwiID5cblxuICAgIDxzcGFuIGNsYXNzPVwibWF0LWNhcHRpb24gbm9zZWxlY3RcIiBzdHlsZT1cImNvbG9yOiBncmF5XCI+XG4gICAgICB7eyhkYXRhQ29udGV4dD8uZGF0YSB8IGFzeW5jKT8ubGVuZ3RofX0gLyB7e3RvdGFsJCB8IGFzeW5jfX1cbiAgICA8L3NwYW4+XG5cbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhKGNhbkxvYWRNb3JlJCB8IGFzeW5jKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZGF0YUNvbnRpbnVhYmxlLmxvYWRNb3JlKClcIj5cbiAgICAgIDxtYXQtaWNvbj5rZXlib2FyZF9hcnJvd19kb3duPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuIl19
322
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLXZpZXcvdGFibGUvZWxkZXItdGFibGUvZWxkZXItdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLXZpZXcvdGFibGUvZWxkZXItdGFibGUvZWxkZXItdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFVBQVUsRUFDVixLQUFLLEVBSUwsUUFBUSxFQUVSLFFBQVEsRUFDUixXQUFXLEVBRVgsU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsaUNBQWlDLEVBQUMsTUFBTSxxRUFBcUUsQ0FBQztBQUN0SCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFFekQsT0FBTyxFQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDMUUsT0FBTyxFQUFlLGFBQWEsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBRTlGLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBd0IsTUFBTSxNQUFNLENBQUM7QUFDM0YsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDN0Ys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LFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFJNUIsWUFBWTtzQkFEbEIsU0FBUzt1QkFBQyxZQUFZO2dCQU1oQixVQUFVO3NCQURoQixlQUFlO3VCQUFDLFlBQVk7Z0JBSXRCLFlBQVk7c0JBRGxCLGVBQWU7dUJBQUMseUJBQXlCO2dCQUluQyxPQUFPO3NCQURiLGVBQWU7dUJBQUMsU0FBUztnQkFXbkIsT0FBTztzQkFEYixLQUFLO2dCQVVDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBV0MsV0FBVztzQkFEakIsS0FBSztnQkFJQyxlQUFlO3NCQURyQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsS0FBSztnQkFVQyx1QkFBdUI7c0JBRDdCLGVBQWU7dUJBQUMsMEJBQTBCLEVBQUUsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFDO2dCQVV4RCxTQUFTO3NCQURoQixZQUFZO3VCQUFDLHNCQUFzQjtnQkE0RnpCLGVBQWU7c0JBRHpCLEtBQUs7Z0JBTUssSUFBSTtzQkFEZCxLQUFLO2dCQStDSyxnQkFBZ0I7c0JBRDFCLEtBQUs7Z0JBV0ssZ0JBQWdCO3NCQUQxQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCxcbiAgU2tpcFNlbGYsXG4gIFRlbXBsYXRlUmVmLFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0VGFibGVEYXRhQ29udGV4dEJpbmRpbmdCdWlsZGVyfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vZGF0YS9kYXRhLWNvbnRleHQvbWF0LXRhYmxlLWRhdGEtY29udGV4dC1iaW5kaW5nJztcbmltcG9ydCB7TWF0UGFnaW5hdG9yfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHtNYXRTb3J0fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7TWF0Q29sdW1uRGVmLCBNYXRSb3dEZWYsIE1hdFRhYmxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQge0lEYXRhQ29udGV4dCwgaXNEYXRhQ29udGV4dH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL2RhdGEvZGF0YS1jb250ZXh0L2RhdGEtY29udGV4dCc7XG5pbXBvcnQge1NlbGVjdGlvbk1vZGVsfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vc2VsZWN0aW9uL3NlbGVjdGlvbi1tb2RlbCc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7Q2RrQ29sdW1uRGVmLCBDZGtSb3dEZWYsIENka1RhYmxlfSBmcm9tICdAYW5ndWxhci9jZGsvdGFibGUnO1xuaW1wb3J0IHtEYXRhQ29udGV4dEJ1aWxkZXJ9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9kYXRhL2RhdGEtY29udGV4dC9kYXRhLWNvbnRleHQtYnVpbGRlcic7XG5pbXBvcnQge0VMREVSX0RBVEFfVklFV30gZnJvbSAnLi4vLi4vYmFzZS9lbGRlci1kYXRhLXZpZXcnO1xuaW1wb3J0IHtFbGRlclRhYmxlUm93RGlyZWN0aXZlfSBmcm9tICcuLi9lbGRlci10YWJsZS1yb3cuZGlyZWN0aXZlJztcbmltcG9ydCB7SURhdGFTb3VyY2UsIGlzRGF0YVNvdXJjZX0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL2RhdGEvZGF0YXNvdXJjZS9kYXRhLXNvdXJjZSc7XG5pbXBvcnQge0VsZGVyRGF0YVZpZXdCYXNlQ29tcG9uZW50fSBmcm9tICcuLi8uLi9iYXNlL2VsZGVyLWRhdGEtdmlldy1iYXNlJztcbmltcG9ydCB7RWxkZXJUYWJsZU1vZGVsfSBmcm9tICcuLi9tb2RlbC9lbGRlci10YWJsZS1tb2RlbCc7XG5pbXBvcnQge0VsZGVyVGFibGVQcm92aWRlcnN9IGZyb20gJy4uL21vZGVsL2VsZGVyLXRhYmxlLW1vZGVsLXByb3ZpZGVyJztcbmltcG9ydCB7UXVlcnlMaXN0QmluZGluZ30gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL3V0aWxzL3F1ZXJ5LWxpc3QtYmluZGluZyc7XG5pbXBvcnQge0VsZGVyVGFibGVNb2RlbENka1RhYmxlQmluZGluZ30gZnJvbSAnLi4vbW9kZWwvZWxkZXItdGFibGUtbW9kZWwtY2RrLXRhYmxlLWJpbmRpbmcnO1xuaW1wb3J0IHtFbGRlclRhYmxlTW9kZWxRdWVyeUdyb3VwfSBmcm9tICcuLi9tb2RlbC9lbGRlci10YWJsZS1tb2RlbC1xdWVyeS1ncm91cCc7XG5pbXBvcnQge0VsZGVyVGFibGVFeHRlbnNpb25EaXJlY3RpdmV9IGZyb20gJy4uL2VsZGVyLXRhYmxlLWV4dGVuc2lvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHtFbGRlclRhYmxlQ29sdW1uRGlyZWN0aXZlfSBmcm9tICcuLi9lbGRlci10YWJsZS1jb2x1bW4uZGlyZWN0aXZlJztcbmltcG9ydCB7Q29sdW1uUG9zaXRpb25TcGVjfSBmcm9tICcuLi9tb2RlbC9lbGRlci1jb2x1bW4tbGF5b3V0JztcbmltcG9ydCB7RWxkZXJUYWJsZVRvb2xiYXJEaXJlY3RpdmV9IGZyb20gJy4vZWxkZXItdGFibGUtdG9vbGJhci5kaXJlY3RpdmUnO1xuaW1wb3J0IHtEYXRhVmlld09wdGlvbnNQcm92aWRlckJpbmRpbmd9IGZyb20gJy4uLy4uL2Jhc2UvZGF0YS12aWV3LW9wdGlvbnMtcHJvdmlkZXItYmluZGluZyc7XG5pbXBvcnQge0VsZGVyRGF0YVZpZXdPcHRpb25zUHJvdmlkZXJ9IGZyb20gJy4uLy4uL2Jhc2UvZWxkZXItZGF0YS12aWV3LW9wdGlvbnMtcHJvdmlkZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbGRlci10YWJsZSwgZWJzLXRhYmxlJywgLy8gZWJzLXRhYmxlIGlzIGRlcHJlY2F0ZWRcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWxkZXItdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIEVsZGVyVGFibGVQcm92aWRlcnMuRXhpc3RpbmdPck5ld1RhYmxlTW9kZWwsXG4gICAge1xuICAgICAgcHJvdmlkZTogRUxERVJfREFUQV9WSUVXLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRWxkZXJUYWJsZUNvbXBvbmVudClcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJUYWJsZUNvbXBvbmVudCBleHRlbmRzIEVsZGVyRGF0YVZpZXdCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgLyoqXG4gICAqIExvYWQgbmV4dCBjaHVuayBhZnRlciBjdXJyZW50IGlzIGRvbmVcbiAgICovXG4gIHByaXZhdGUgbG9hZE5leHRRdWV1ZWQgPSBmYWxzZTtcblxuICAvLy8gVGFibGVcbiAgQFZpZXdDaGlsZChNYXRUYWJsZSwge3N0YXRpYzogdHJ1ZX0pXG4gIHB1YmxpYyBtYXRUYWJsZTogQ2RrVGFibGU8YW55PjtcblxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvcilcbiAgcHVibGljIG1hdFBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX21hdFNvcnQ6IE1hdFNvcnQ7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihNYXRDb2x1bW5EZWYpXG4gIHB1YmxpYyBjb2x1bW5EZWZzOiBRdWVyeUxpc3Q8Q2RrQ29sdW1uRGVmPjtcblxuICBAQ29udGVudENoaWxkcmVuKEVsZGVyVGFibGVDb2x1bW5EaXJlY3RpdmUpXG4gIHB1YmxpYyBlbGRlckNvbHVtbnM6IFF1ZXJ5TGlzdDxFbGRlclRhYmxlQ29sdW1uRGlyZWN0aXZlPjtcblxuICBAQ29udGVudENoaWxkcmVuKE1hdFJvd0RlZilcbiAgcHVibGljIHJvd0RlZnM6IFF1ZXJ5TGlzdDxDZGtSb3dEZWY8YW55Pj47XG5cbiAgLyoqXG4gICAqIEZpZWxkIHRvIGlkZW50aWZ5IHRoZSBkYXRhIHJlY29yZHMgKElEIGZpZWxkKS5cbiAgICogTm90ZTogVGhpcyBwcm9wZXJ0eSBpcyBvbmx5IGNvbnNpZGVyZWQgaW4gY2FzZSB0aGVcbiAgICogdW5kZXJseWluZyBkYXRhIGlzIGFuIEFycmF5LlxuICAgKiBJbiBjYXNlIG9mIERhdGFDb250ZXh0LCB0aGUgSUQgZmllbGQgbmVlZHMgdG8gYmUgZGVmaW5lZCBpbiB0aGUgY29udGV4dC5cbiAgICogSW4gY2FzZSBvZiBEYXRhU291cmNlLCB0aGUgSUQgZmllbGQgaXMgYXV0b21hdGljYWxseSBwaWNrZWQgZnJvbSB0aGUgRGF0YVNvdXJjZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpZEZpZWxkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gdGhpcyBmaWVsZCBpcyBwcmVzZW50IGFuZCB0cnVlLFxuICAgKiB0aGUgY29yZXNwb25kaW5nIHJvdyBpcyBtYXJrZWQgdG8gYmUgaW4gdGhlIHByb2Nlc3NlZCBvZiBiZWluZyByZW1vdmVkLlxuICAgKlxuICAgKiBJLmUuICdyZW1vdmluZydcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZW1vdmluZ0ZpZWxkOiBzdHJpbmcgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRoaXMgZmllbGQgaXMgcHJlc2VudCBhbmQgdHJ1ZSxcbiAgICogdGhlIGNvcnJlc3BvbmRpbmcgcm93IGlzIGhpZGRlbi5cbiAgICpcbiAgICogSS5lLiAnZGVsZXRlZCdcbiAgICpcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoaWRkZW5GaWVsZDogc3RyaW5nID0gbnVsbDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcGFnZVNpemVPcHRpb25zID0gWzMwLCA1MCwgMTAwLCAxNTAsIDIwMF07XG5cbiAgQElucHV0KClcbiAgcHVibGljIGtlZXBTZWxlY3Rpb24gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93Rm9vdGVyID0gZmFsc2U7XG5cbiAgcHVibGljIGNhbkxvYWRNb3JlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIHRvdGFsJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBUaGUgdGFibGUgdG9vbGJhclxuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihFbGRlclRhYmxlVG9vbGJhckRpcmVjdGl2ZSwge3JlYWQ6IFRlbXBsYXRlUmVmfSlcbiAgcHVibGljIHRvb2xiYXJSb3dUZW1wbGF0ZVF1ZXJ5OiBRdWVyeUxpc3Q8VGVtcGxhdGVSZWY8YW55Pj47XG4gIHB1YmxpYyByZWFkb25seSB0b29sYmFyUm93VGVtcGxhdGVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGVtcGxhdGVSZWY8YW55PltdPihbXSk7XG5cbiAgLyoqXG4gICAqIFNlbGVjdGlvbiBtb2RlbCBsaWZlIGN5Y2xlXG4gICAqL1xuICBwcml2YXRlIHNlbGVjdGlvbkxpZmVDeWNsZTogU3Vic2NyaXB0aW9uO1xuXG4gIEBWaWV3Q2hpbGRyZW4oRWxkZXJUYWJsZVJvd0RpcmVjdGl2ZSlcbiAgcHJpdmF0ZSByb3dzUXVlcnk6IFF1ZXJ5TGlzdDxFbGRlclRhYmxlUm93RGlyZWN0aXZlPGFueT4+O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IHJvd3Mgb2YgdGhpcyB0YWJsZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb3dzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RWxkZXJUYWJsZVJvd0RpcmVjdGl2ZTxhbnk+W10+KFtdKTtcblxuICAvKipcbiAgICogVGhlIGluZGV4IG9mIHRoaXMgdGFibGUgZ3JvdXAgZXh0ZW5zaW9uXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9leHRlbnNpb25Hcm91cEluZGV4OiBudW1iZXI7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHRhYmxlTW9kZWw6IEVsZGVyVGFibGVNb2RlbCxcbiAgICBAT3B0aW9uYWwoKSBzZWxlY3Rpb25Nb2RlbDogU2VsZWN0aW9uTW9kZWw8YW55PixcbiAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBkYXRhVmlld09wdGlvbnNQcm92aWRlcjogRWxkZXJEYXRhVmlld09wdGlvbnNQcm92aWRlcixcbiAgICBAT3B0aW9uYWwoKSBtYXRTb3J0OiBNYXRTb3J0LFxuICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHByaXZhdGUgcmVhZG9ubHkgcGFyZW50RXh0ZW5zaW9uOiBFbGRlclRhYmxlRXh0ZW5zaW9uRGlyZWN0aXZlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZVxuICApIHtcbiAgICBzdXBlcihzZWxlY3Rpb25Nb2RlbCwgZGF0YVZpZXdPcHRpb25zUHJvdmlkZXIpO1xuICAgIHRoaXMuX21hdFNvcnQgPSBtYXRTb3J0O1xuICAgIHRoaXMuX2V4dGVuc2lvbkdyb3VwSW5kZXggPSAocGFyZW50RXh0ZW5zaW9uPy5leHRlbnNpb25Hcm91cEluZGV4ID8/IDApICsgMTtcbiAgICBpZiAodGhpcy5fbWF0U29ydCkge1xuICAgICAgdGhpcy5fbWF0U29ydC5kaXNhYmxlQ2xlYXIgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBMaWZlIEN5Y2xlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgRWxkZXJUYWJsZU1vZGVsQ2RrVGFibGVCaW5kaW5nXG4gICAgICAub2YodGhpcy50YWJsZU1vZGVsKVxuICAgICAgLnRhYmxlKHRoaXMubWF0VGFibGUpXG4gICAgICAuYmluZFVudGlsKHRoaXMuZGVzdHJveSQpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcblxuICAgIEVsZGVyVGFibGVNb2RlbFF1ZXJ5R3JvdXBcbiAgICAgIC5zdGFydCh0aGlzLnRhYmxlTW9kZWwsIHRoaXMuX2V4dGVuc2lvbkdyb3VwSW5kZXgpXG4gICAgICAud2l0aENvbHVtbnNQb3NpdGlvbihDb2x1bW5Qb3NpdGlvblNwZWMucmVsYXRpdmVUb1ByZXZHcm91cCgnc3RhcnQnKSlcbiAgICAgIC53aXRoQ29sdW1uRGVmcyh0aGlzLmNvbHVtbkRlZnMsIHRoaXMuZWxkZXJDb2x1bW5zKVxuICAgICAgLndpdGhSb3dEZWZzKHRoaXMucm93RGVmcylcbiAgICAgIC53aXRoU29ydCh0aGlzLl9tYXRTb3J0KVxuICAgICAgLmJpbmRVbnRpbCh0aGlzLmRlc3Ryb3kkKTtcblxuICAgIFF1ZXJ5TGlzdEJpbmRpbmdcbiAgICAgIC5vZih0aGlzLnRvb2xiYXJSb3dUZW1wbGF0ZVF1ZXJ5KVxuICAgICAgLnVwZGF0ZWQodG9vbGJhclJvd3MgPT4gdGhpcy50b29sYmFyUm93VGVtcGxhdGVzJC5uZXh0KHRvb2xiYXJSb3dzKSlcbiAgICAgIC5iaW5kVW50aWwodGhpcy5kZXN0cm95JCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXG4gICAgTWF0VGFibGVEYXRhQ29udGV4dEJpbmRpbmdCdWlsZGVyXG4gICAgICAuc3RhcnQodGhpcy5kYXRhQ29udGV4dCQpXG4gICAgICAud2l0aFNvcnRzKHRoaXMudGFibGVNb2RlbC5zb3J0cyQpXG4gICAgICAud2l0aFBhZ2luYXRvcihvZih0aGlzLm1hdFBhZ2luYXRvcikpXG4gICAgICAuYmluZFVudGlsKHRoaXMuZGVzdHJveSQpO1xuXG4gICAgUXVlcnlMaXN0QmluZGluZ1xuICAgICAgLm9mKHRoaXMucm93c1F1ZXJ5KVxuICAgICAgLnVwZGF0ZWQocm93cyA9PiB0aGlzLnJvd3MkLm5leHQocm93cykpXG4gICAgICAuYmluZFVudGlsKHRoaXMuZGVzdHJveSQpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHRvb2xiYXJUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIHRoaXMudG9vbGJhclJvd1RlbXBsYXRlcyQubmV4dChbdGVtcGxhdGVdKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGF0YShkYXRhOiBBcnJheTxhbnk+IHwgSURhdGFTb3VyY2U8YW55PiB8IElEYXRhQ29udGV4dDxhbnk+KSB7XG5cbiAgICB0aGlzLmF1dG9DbGVhblVwKCk7XG5cbiAgICBsZXQgZGM6IElEYXRhQ29udGV4dDxhbnk+O1xuXG4gICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgZGMgPSBEYXRhQ29udGV4dEJ1aWxkZXIuc3RhcnQoKVxuICAgICAgICAubG9jYWxTb3J0KClcbiAgICAgICAgLmJ1aWxkTG9jYWwoZGF0YSwgdGhpcy5pZEZpZWxkKTsgLy8gUG90ZW50aWFsIE1lbW9yeSBsZWFrIChTZWUgYXV0b0NsZWFuVXApXG4gICAgICBkYy5zdGFydCgpO1xuICAgIH0gZWxzZSBpZiAoaXNEYXRhU291cmNlKGRhdGEpKSB7XG4gICAgICBkYyA9IERhdGFDb250ZXh0QnVpbGRlci5zdGFydCgpXG4gICAgICAgIC5sb2NhbFNvcnQoKVxuICAgICAgICAucmVsb2FkT25Mb2NhbENoYW5nZXMoKVxuICAgICAgICAuYnVpbGQoZGF0YSk7IC8vIFBvdGVudGlhbCBNZW1vcnkgbGVhayAoU2VlIGF1dG9DbGVhblVwKVxuICAgICAgZGMuc3RhcnQoKTtcbiAgICB9IGVsc2UgaWYgKGlzRGF0YUNvbnRleHQoZGF0YSkpIHtcbiAgICAgIGRjID0gZGF0YTtcbiAgICB9IGVsc2UgaWYgKGRhdGEgPT09IG51bGwgfHwgZGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkYyA9IERhdGFDb250ZXh0QnVpbGRlci5zdGFydCgpLmJ1aWxkRW1wdHkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZGF0YSBtdXN0IGVpdGhlciBiZSBhbiBBcnJheSwgSURhdGFTb3VyY2Ugb3IgSURhdGFDb250ZXh0LCBidXQgd2FzOiAnICsgKHR5cGVvZiBkYXRhKSk7XG4gICAgfVxuICAgIHRoaXMuZGF0YUNvbnRleHQgPSBkYztcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkRhdGFDb250ZXh0U2V0KGRhdGE6IElEYXRhQ29udGV4dDxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy50b3RhbCQgPSBkYXRhLnRvdGFsLnBpcGUoXG4gICAgICBtYXAodG90YWwgPT4gdG90YWwgPyB0b3RhbCArICcnIDogJ+KInicpXG4gICAgKTtcblxuICAgIHRoaXMuc2V0dXBTZWxlY3Rpb25MaWZlQ3ljbGUoZGF0YSk7XG5cbiAgICAvLyB0aGlzLnNlbGVjdGlvbk1vZGVsLmNsZWFyKCk7IC8vIFRPRE8gU3VwcG9ydCBjaGFuZ2VhYmxlIGRhdGEtY29udGV4dCBmb3Igc3RhdGljIGFycmF5IHVzZSBjYXNlXG5cbiAgICBpZiAodGhpcy5pc0NvbnRpbnVhYmxlKSB7XG4gICAgICB0aGlzLmNhbkxvYWRNb3JlJCA9IGNvbWJpbmVMYXRlc3QoW2RhdGEubG9hZGluZywgdGhpcy5kYXRhQ29udGludWFibGUuaGFzTW9yZURhdGFdKS5waXBlKFxuICAgICAgICBtYXAoKFtsb2FkaW5nLCBoYXNNb3JlRGF0YV0pID0+ICFsb2FkaW5nICYmIGhhc01vcmVEYXRhKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYW5Mb2FkTW9yZSQgPSBvZihmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNwbGF5ZWRDb2x1bW5zKGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy50YWJsZU1vZGVsLmRpc3BsYXllZENvbHVtbnMgPSBkaXNwbGF5ZWRDb2x1bW5zO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNwbGF5ZWRDb2x1bW5zKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZU1vZGVsLmRpc3BsYXllZENvbHVtbnM7XG4gIH1cblxuICAvKiogSW5kaWNhdGVzIGlmIHNlbGVjdGlvbiBjb2x1bW4gaXMgc2hvd24uICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VsZWN0aW9uVmlzaWJsZSh2aXNpYmxlOiBib29sZWFuKSB7XG4gICAgdGhpcy50YWJsZU1vZGVsLnNlbGVjdGlvblZpc2libGUgPSB2aXNpYmxlO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3Rpb25WaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRhYmxlTW9kZWwuc2VsZWN0aW9uVmlzaWJsZTtcbiAgfVxuXG4gIC8qXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZ2V0IGFjdGl2ZUl0ZW0oKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5lbGRlclRhYmxlQWN0aXZhdGlvbi5hY3RpdmVJdGVtJDtcbiAgfSovXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHJlcXVlc3RNb3JlRGF0YVpvbmVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcblxuICAgIGlmICh0aGlzLmRhdGFDb250aW51YWJsZS5oYXNNb3JlRGF0YVNuYXBzaG90KSB7XG5cbiAgICAgIGlmICh0aGlzLmRhdGFDb250aW51YWJsZS5zbmFwc2hvdC5pc0xvYWRpbmcpIHtcbiAgICAgICAgdGhpcy5sb2FkTmV4dFF1ZXVlZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmRhdGFDb250aW51YWJsZS5sb2FkTW9yZSgpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICBsb2FkZWQgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvYWROZXh0UXVldWVkKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmxvYWROZXh0UXVldWVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB0aGlzLnJlcXVlc3RNb3JlRGF0YVpvbmVkKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvYWROZXh0UXVldWVkID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCB0cmFja0J5Rm4oKTogVHJhY2tCeUZ1bmN0aW9uPGFueT4ge1xuICAgIHJldHVybiAoaW5kZXg6IG51bWJlciwgZW50aXR5OiBhbnkpID0+IHRoaXMuZ2V0SWQoZW50aXR5KTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgc2V0dXBTZWxlY3Rpb25MaWZlQ3ljbGUoZGF0YTogSURhdGFDb250ZXh0PGFueT4pOiB2b2lkIHtcblxuICAgIGlmICh0aGlzLnNlbGVjdGlvbkxpZmVDeWNsZSkge1xuICAgICAgdGhpcy5zZWxlY3Rpb25MaWZlQ3ljbGUudW5zdWJzY3JpYmUoKTsgLy8gQ2xlYW4gdXAgcHJldmlvdXMgc3ViXG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3Rpb25MaWZlQ3ljbGUgPSBkYXRhLmRhdGEucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICkuc3Vic2NyaWJlKG5ld0RhdGEgPT4ge1xuXG4gICAgICBpZiAodGhpcy5rZWVwU2VsZWN0aW9uKSB7XG4gICAgICAgIC8vIElmIGtlZXAgc2VsZWN0aW9uIGVuYWJsZWRcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZWwuaGFzVmFsdWUpIHtcblxuICAgICAgICAgIC8vIENoZWNrIHRoYXQgYWxsIHNlbGVjdGVkIHZhbHVlcyBhcmUgc3RpbGwgcHJlc2VudCBvciByZW1vdmUgdGhlbVxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldDxhbnk+KFxuICAgICAgICAgICAgbmV3RGF0YVxuICAgICAgICAgICAgICAubWFwKGQgPT4gdGhpcy5nZXRJZChkKSlcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3Qgbm9Mb25nZXJBdmFpbGFibGVJZHMgPSB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdGlvblNuYXBzaG90XG4gICAgICAgICAgICAubWFwKHNlbGVjdGVkID0+IHRoaXMuZ2V0SWQoc2VsZWN0ZWQpKVxuICAgICAgICAgICAgLmZpbHRlcihzZWxlY3RlZElkID0+ICFleGlzdGluZ0lkcy5oYXMoc2VsZWN0ZWRJZCkpO1xuXG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5kZXNlbGVjdElkcyhub0xvbmdlckF2YWlsYWJsZUlkcyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuY2xlYXIoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG5cbn1cbiIsIlxuPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmxleFxuICAgICBjbGFzcz1cImVsZGVyLXRhYmxlXCJcbiAgICAgW2NsYXNzLmVsZGVyLW1hdC10YWJsZS1jb250YWluZXJdPVwiIWVtYmVkZGVkXCJcbiAgICAgW2NsYXNzLm1hdC1lbGV2YXRpb24tejVdPVwiZmxvYXRcIlxuICAgICBbY2xhc3MuZWxkZXItbWF0LXRhYmxlLWZsYXRdPVwiIWVtYmVkZGVkICYmICFmbG9hdFwiXG4+XG5cbiAgPCEtLSBUb29sYmFyIFJvd3MgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRvb2xiYXJSb3dUZW1wbGF0ZSBvZiB0b29sYmFyUm93VGVtcGxhdGVzJCB8IGFzeW5jXCI+XG4gICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9vbGJhclJvd1RlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiB0aGlzfVwiPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gU2Nyb2xsYWJsZSBUYWJsZSAtLT5cbiAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGNsYXNzPVwic2Nyb2xsYWJsZSBlbGRlci10YWJsZS1zY3JvbGxcIlxuICAgICAgIGluZmluaXRlU2Nyb2xsXG4gICAgICAgW2V2ZW50VGhyb3R0bGVdPVwiMTUwXCJcbiAgICAgICBbb2Zmc2V0RmFjdG9yXT1cIjJcIlxuICAgICAgIFtpZ25vcmVTY3JvbGxFdmVudF09XCIhaXNDb250aW51YWJsZSB8fCAhKGNhbkxvYWRNb3JlJCB8IGFzeW5jKVwiXG4gICAgICAgKGNsb3NlVG9FbmQpPVwicmVxdWVzdE1vcmVEYXRhWm9uZWQoJGV2ZW50KVwiXG4gID5cbiAgICA8dGFibGVcbiAgICAgIG1hdC10YWJsZVxuICAgICAgY2xhc3M9XCJlbGRlci1tYXQtaW5uZXItdGFibGVcIlxuICAgICAgW3RyYWNrQnldPVwidHJhY2tCeUZuXCJcbiAgICAgIFtkYXRhU291cmNlXT1cIiRhbnkoZGF0YUNvbnRleHQkIHwgYXN5bmMpXCJcbiAgICAgIFtlbGRlckRhdGFDb250ZXh0U2VsZWN0aW9uXT1cImRhdGFDb250ZXh0JCB8IGFzeW5jXCIgI2RhdGFTZWxlY3Rpb249XCJlbGRlckRhdGFDb250ZXh0U2VsZWN0aW9uXCJcbiAgICAgIFtlbGRlckRhdGFDb250ZXh0U2VsZWN0aW9uTW9kZWxdPVwic2VsZWN0aW9uTW9kZWxcIlxuICAgID5cblxuICAgICAgPCEtLSBzZWxlY3Rpb24gQ29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzZWxlY3RcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICA8ZWxkZXItc2VsZWN0aW9uLW1hc3Rlci1jaGVja2JveD48L2VsZGVyLXNlbGVjdGlvbi1tYXN0ZXItY2hlY2tib3g+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbnRpdHlcIj5cbiAgICAgICAgICA8bWF0LWNoZWNrYm94IChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3Rpb25Nb2RlbC50b2dnbGUoZW50aXR5KSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uTW9kZWwub2JzZXJ2ZVNlbGVjdGlvbihlbnRpdHkpIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFzZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGFibGUoZW50aXR5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVsZGVyLXRhYmxlLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lbGRlci10YWJsZS1jaGVja2JveC12aXNpYmxlXT1cIihkYXRhU2VsZWN0aW9uLnNlbGVjdGlvblN0YXRlJCB8IGFzeW5jKS5hbnlTZWxlY3RlZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPjwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIih0YWJsZU1vZGVsLmRpc3BsYXllZENvbHVtbnNJbm5lciQgfCBhc3luYykgYXMgZGlzcGxheWVkQ29sdW1uc0lubmVyXCI+XG4gICAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc0lubmVyOyBzdGlja3k6IHRydWVcIj48L3RyPlxuICAgICAgICA8dHIgbWF0LXJvdyBjbGFzcz1cImVsZGVyLXRhYmxlLXJvd1wiXG4gICAgICAgICAgICAqbWF0Um93RGVmPVwibGV0IGVudGl0eTsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uc0lubmVyO1wiXG4gICAgICAgICAgICBbZWxkZXJUYWJsZVJvd109XCJlbnRpdHlcIlxuICAgICAgICAgICAgW2NsYXNzLmRlbnNlXT1cImRlbnNlXCJcbiAgICAgICAgICAgIFtjbGFzcy5lbGRlci1yb3ctaGlkZGVuXT1cImhpZGRlbkZpZWxkICYmIGVudGl0eVtoaWRkZW5GaWVsZF1cIlxuICAgICAgICAgICAgW2NsYXNzLmVsZGVyLXJvdy1yZW1vdmluZ109XCJyZW1vdmluZ0ZpZWxkICYmIGVudGl0eVtyZW1vdmluZ0ZpZWxkXVwiXG4gICAgICAgICAgICBbY2xhc3MuZWxkZXItdGFibGUtcm93LXNlbGVjdGVkXT1cImludGVyYWN0aW9uTW9kZSA9PT0gJ3NlbGVjdGlvbicgJiYgc2VsZWN0aW9uTW9kZWwub2JzZXJ2ZVNlbGVjdGlvbihlbnRpdHkpIHwgYXN5bmNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGVudGl0eSlcIlxuICAgICAgICAgICAgKGRibGNsaWNrKT1cIm9uSXRlbURvdWJsZUNsaWNrKGVudGl0eSlcIlxuICAgICAgICA+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93Rm9vdGVyXCI+XG4gICAgICAgICAgPHRyIG1hdC1mb290ZXItcm93ICptYXRGb290ZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zSW5uZXI7IHN0aWNreTogdHJ1ZVwiPjwvdHI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC90YWJsZT5cbiAgPC9kaXY+XG5cbiAgPGVsZGVyLWRhdGEtY29udGV4dC1zdGF0ZS1pbmRpY2F0b3IgZnhGbGV4PVwibm9uZVwiIFtkYXRhQ29udGV4dF09XCJkYXRhQ29udGV4dFwiPlxuICA8L2VsZGVyLWRhdGEtY29udGV4dC1zdGF0ZS1pbmRpY2F0b3I+XG5cbiAgPG1hdC1wcm9ncmVzcy1iYXIgZnhGbGV4PVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIFttb2RlXT1cIihkYXRhQ29udGV4dD8ubG9hZGluZyB8IGFzeW5jKSA/ICdpbmRldGVybWluYXRlJyA6ICdkZXRlcm1pbmF0ZSdcIlxuICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiKChkYXRhQ29udGV4dD8uc3RhdHVzIHwgYXN5bmMpPy5oYXNFcnJvcikgPyAnd2FybicgOiAncHJpbWFyeSdcIj5cbiAgPC9tYXQtcHJvZ3Jlc3MtYmFyPlxuXG4gIDwhLS0gT3B0aW9uYWwgUGFnaW5hdG9yIFRvb2xiYXIgLS0+XG4gIDxtYXQtcGFnaW5hdG9yICNtYXRQYWdpbmF0b3IgKm5nSWY9XCJpc0FjdGl2ZVBhZ2VkICYmIChkYXRhQWN0aXZlUGFnZWQucGFnZSB8IGFzeW5jKSBhcyBwYWdlXCJcbiAgICAgICAgICAgICAgICAgZnhGbGV4PVwibm9uZVwiXG4gICAgICAgICAgICAgICAgIFtsZW5ndGhdPVwiZGF0YUNvbnRleHQ/LnRvdGFsIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICBbcGFnZUluZGV4XT1cInBhZ2U/LmluZGV4XCJcbiAgICAgICAgICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2U/LnNpemVcIlxuICAgICAgICAgICAgICAgICBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiPlxuICA8L21hdC1wYWdpbmF0b3I+XG5cbiAgPCEtLSBPcHRpb25hbCBDb250aW51YXRpb24gRm9vdGVyIC0tPlxuICA8ZGl2ICpuZ0lmPVwiaXNDb250aW51YWJsZVwiIGNsYXNzPVwiZWxkZXItdGFibGUtZm9vdGVyXCJcbiAgICAgICBmeExheW91dD1cInJvd1wiIGZ4RmxleD1cIm5vbmVcIiBmeExheW91dEFsaWduPVwiZW5kIGNlbnRlclwiIGZ4TGF5b3V0R2FwPVwiMTBweFwiXG4gICAgICAgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiAxMHB4XCIgPlxuXG4gICAgPHNwYW4gY2xhc3M9XCJtYXQtY2FwdGlvbiBub3NlbGVjdFwiIHN0eWxlPVwiY29sb3I6IGdyYXlcIj5cbiAgICAgIHt7KGRhdGFDb250ZXh0Py5kYXRhIHwgYXN5bmMpPy5sZW5ndGh9fSAvIHt7dG90YWwkIHwgYXN5bmN9fVxuICAgIDwvc3Bhbj5cblxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEoY2FuTG9hZE1vcmUkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkYXRhQ29udGludWFibGUubG9hZE1vcmUoKVwiPlxuICAgICAgPG1hdC1pY29uPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuPC9kaXY+XG4iXX0=