@elderbyte/ngx-starter 17.10.0 → 17.11.0-beta2

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 (352) hide show
  1. package/esm2022/lib/common/data/datasource/data-source-base.mjs +1 -1
  2. package/esm2022/lib/common/data/datasource/rest/rest-client.mjs +1 -1
  3. package/esm2022/lib/common/data/filters/filter-commons.mjs +23 -0
  4. package/esm2022/lib/common/data/filters/filter-value.mjs +2 -0
  5. package/esm2022/lib/common/enums/elder-enum-translation.service.mjs +4 -4
  6. package/esm2022/lib/common/format/curency-format-util.mjs +43 -0
  7. package/esm2022/lib/common/format/duration-format-util.mjs +44 -0
  8. package/esm2022/lib/common/format/iso-interval-format-util.mjs +109 -0
  9. package/esm2022/lib/common/format/public_api.mjs +4 -1
  10. package/esm2022/lib/common/forms/elder-form-field-control-base.directive.mjs +4 -4
  11. package/esm2022/lib/common/forms/elder-from-field-base.mjs +4 -4
  12. package/esm2022/lib/common/forms/elder-from-field-customizable-base.mjs +4 -4
  13. package/esm2022/lib/common/forms/elder-from-field-entity-base.mjs +4 -4
  14. package/esm2022/lib/common/forms/elder-from-field-multi-entity-base.mjs +4 -4
  15. package/esm2022/lib/common/forms/form-field-base.component.mjs +4 -4
  16. package/esm2022/lib/common/forms/multi-model-base.component.mjs +4 -4
  17. package/esm2022/lib/common/forms/template-composite-control.mjs +4 -4
  18. package/esm2022/lib/common/forms/value-accessor-base.mjs +4 -4
  19. package/esm2022/lib/common/http/http-client-builder.service.mjs +4 -4
  20. package/esm2022/lib/common/http/http-client-pristine.mjs +4 -4
  21. package/esm2022/lib/common/http/transfer/data-transfer-factory.mjs +4 -4
  22. package/esm2022/lib/common/url/elder-router.service.mjs +4 -4
  23. package/esm2022/lib/common/url/elder-url-fragment-params.service.mjs +4 -4
  24. package/esm2022/lib/components/access-denied/elder-access-denied.component.mjs +4 -4
  25. package/esm2022/lib/components/access-denied/elder-access-denied.module.mjs +5 -5
  26. package/esm2022/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +4 -4
  27. package/esm2022/lib/components/auditing/elder-audit.module.mjs +5 -5
  28. package/esm2022/lib/components/badge/elder-badge/elder-badge.component.mjs +10 -10
  29. package/esm2022/lib/components/badge/elder-badge.directive.mjs +44 -22
  30. package/esm2022/lib/components/badge/elder-badge.module.mjs +5 -5
  31. package/esm2022/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +4 -4
  32. package/esm2022/lib/components/button-group/elder-button-group.module.mjs +5 -5
  33. package/esm2022/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +4 -4
  34. package/esm2022/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +4 -4
  35. package/esm2022/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +4 -4
  36. package/esm2022/lib/components/card-organizer/elder-card-organizer.module.mjs +5 -5
  37. package/esm2022/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +4 -4
  38. package/esm2022/lib/components/cards/elder-card/elder-card.component.mjs +19 -19
  39. package/esm2022/lib/components/cards/elder-card/elder-card.module.mjs +5 -5
  40. package/esm2022/lib/components/chips/elder-chip-label.directive.mjs +4 -4
  41. package/esm2022/lib/components/chips/elder-chips.module.mjs +5 -5
  42. package/esm2022/lib/components/connectivity/elder-connectivity.module.mjs +5 -5
  43. package/esm2022/lib/components/connectivity/elder-connectivity.service.mjs +4 -4
  44. package/esm2022/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +4 -4
  45. package/esm2022/lib/components/containers/elder-containers.module.mjs +5 -5
  46. package/esm2022/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +4 -4
  47. package/esm2022/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +4 -4
  48. package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +4 -4
  49. package/esm2022/lib/components/csv/elder-csv.module.mjs +5 -5
  50. package/esm2022/lib/components/currency/elder-currency.module.mjs +5 -5
  51. package/esm2022/lib/components/currency/elder-currency.pipe.mjs +16 -13
  52. package/esm2022/lib/components/data-transfer/elder-data-transfer.module.mjs +5 -5
  53. package/esm2022/lib/components/data-transfer/elder-data-transfer.service.mjs +4 -4
  54. package/esm2022/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +4 -4
  55. package/esm2022/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +4 -4
  56. package/esm2022/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +4 -4
  57. package/esm2022/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +4 -4
  58. package/esm2022/lib/components/data-view/base/elder-data-view-base.mjs +4 -4
  59. package/esm2022/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +4 -4
  60. package/esm2022/lib/components/data-view/common/elder-data-common.module.mjs +5 -5
  61. package/esm2022/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +7 -7
  62. package/esm2022/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +4 -4
  63. package/esm2022/lib/components/data-view/common/selection/data-context-selection.directive.mjs +4 -4
  64. package/esm2022/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +4 -4
  65. package/esm2022/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +10 -10
  66. package/esm2022/lib/components/data-view/grid/elder-grid.module.mjs +5 -5
  67. package/esm2022/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.mjs +4 -4
  68. package/esm2022/lib/components/data-view/master-detail/elder-detail.directive.mjs +4 -4
  69. package/esm2022/lib/components/data-view/master-detail/elder-master-activation.directive.mjs +4 -4
  70. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.component.mjs +4 -4
  71. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.module.mjs +5 -5
  72. package/esm2022/lib/components/data-view/master-detail/elder-master-detail.service.mjs +4 -4
  73. package/esm2022/lib/components/data-view/master-detail/elder-master.directive.mjs +4 -4
  74. package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +4 -4
  75. package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +5 -5
  76. package/esm2022/lib/components/data-view/table/activation/elder-delete-active.directive.mjs +4 -4
  77. package/esm2022/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +4 -4
  78. package/esm2022/lib/components/data-view/table/elder-number-cell.directive.mjs +4 -4
  79. package/esm2022/lib/components/data-view/table/elder-paginator-intl.mjs +4 -4
  80. package/esm2022/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +4 -4
  81. package/esm2022/lib/components/data-view/table/elder-table/elder-table.component.mjs +4 -4
  82. package/esm2022/lib/components/data-view/table/elder-table-column.directive.mjs +4 -4
  83. package/esm2022/lib/components/data-view/table/elder-table-extension.directive.mjs +4 -4
  84. package/esm2022/lib/components/data-view/table/elder-table-root.directive.mjs +4 -4
  85. package/esm2022/lib/components/data-view/table/elder-table-row.directive.mjs +4 -4
  86. package/esm2022/lib/components/data-view/table/elder-table-sort.directive.mjs +4 -4
  87. package/esm2022/lib/components/data-view/table/elder-table.module.mjs +5 -5
  88. package/esm2022/lib/components/data-view/table/model/elder-table-model.mjs +4 -4
  89. package/esm2022/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +4 -4
  90. package/esm2022/lib/components/dialogs/elder-dialog.module.mjs +5 -5
  91. package/esm2022/lib/components/dialogs/elder-dialog.service.mjs +4 -4
  92. package/esm2022/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +4 -4
  93. package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +4 -4
  94. package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +4 -4
  95. package/esm2022/lib/components/errors/elder-error.module.mjs +5 -5
  96. package/esm2022/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +4 -4
  97. package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +4 -4
  98. package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +5 -5
  99. package/esm2022/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +4 -4
  100. package/esm2022/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.mjs +4 -4
  101. package/esm2022/lib/components/files/drag-n-drop/global-drag-drop.service.mjs +4 -4
  102. package/esm2022/lib/components/files/elder-file-drop-zone.directive.mjs +4 -4
  103. package/esm2022/lib/components/files/elder-file-select.directive.mjs +4 -4
  104. package/esm2022/lib/components/files/elder-file.module.mjs +5 -5
  105. package/esm2022/lib/components/files/file-select/file-select.component.mjs +4 -4
  106. package/esm2022/lib/components/files/file-upload/file-upload.component.mjs +4 -4
  107. package/esm2022/lib/components/forms/clipboard/elder-clipboard.service.mjs +4 -4
  108. package/esm2022/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +4 -4
  109. package/esm2022/lib/components/forms/directives/elder-clipboard-put.directive.mjs +4 -4
  110. package/esm2022/lib/components/forms/directives/elder-delayed-focus.directive.mjs +4 -4
  111. package/esm2022/lib/components/forms/directives/elder-form-field-dense.directive.mjs +4 -4
  112. package/esm2022/lib/components/forms/directives/elder-form-field-label.directive.mjs +4 -4
  113. package/esm2022/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +4 -4
  114. package/esm2022/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +4 -4
  115. package/esm2022/lib/components/forms/directives/elder-forms-directives.module.mjs +5 -5
  116. package/esm2022/lib/components/forms/directives/elder-initial-value.directive.mjs +11 -8
  117. package/esm2022/lib/components/forms/directives/elder-input-pattern.directive.mjs +4 -4
  118. package/esm2022/lib/components/forms/directives/elder-key-event.directive.mjs +4 -4
  119. package/esm2022/lib/components/forms/directives/elder-next-focusable.directive.mjs +4 -4
  120. package/esm2022/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +4 -4
  121. package/esm2022/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +4 -4
  122. package/esm2022/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +4 -4
  123. package/esm2022/lib/components/forms/directives/elder-touched.directive.mjs +4 -4
  124. package/esm2022/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +4 -4
  125. package/esm2022/lib/components/forms/directives/validation/elder-validation-error.directive.mjs +4 -4
  126. package/esm2022/lib/components/forms/directives/validation/strategies/common-validation-message-strategy.mjs +4 -4
  127. package/esm2022/lib/components/forms/directives/validation/strategies/dynamic-validation-message-strategy.mjs +4 -4
  128. package/esm2022/lib/components/forms/directives/validation/validation-message-renderer.service.mjs +4 -4
  129. package/esm2022/lib/components/forms/directives/validation/validators/elder-max.validator.mjs +4 -4
  130. package/esm2022/lib/components/forms/directives/validation/validators/elder-min.validator.mjs +4 -4
  131. package/esm2022/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.mjs +4 -4
  132. package/esm2022/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.mjs +4 -4
  133. package/esm2022/lib/components/forms/elder-forms.module.mjs +5 -5
  134. package/esm2022/lib/components/forms/search/domain/context/search-context.service.mjs +4 -4
  135. package/esm2022/lib/components/forms/search/domain/input/input-value.mjs +2 -0
  136. package/esm2022/lib/components/forms/search/domain/input/search-input-state.mjs +15 -6
  137. package/esm2022/lib/components/forms/search/domain/input/search-input.mjs +1 -1
  138. package/esm2022/lib/components/forms/search/domain/url/elder-search-url.directive.mjs +4 -4
  139. package/esm2022/lib/components/forms/search/domain/url/elder-search-url.service.mjs +4 -4
  140. package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +39 -28
  141. package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +50 -17
  142. package/esm2022/lib/components/forms/search/elder-search.module.mjs +5 -5
  143. package/esm2022/lib/components/forms/search/filter/default-input-filter-converter.mjs +46 -0
  144. package/esm2022/lib/components/forms/search/filter/include-exclude-input-converter.mjs +165 -0
  145. package/esm2022/lib/components/forms/search/filter/input-filter-converter.mjs +2 -0
  146. package/esm2022/lib/components/forms/search/search-box/elder-search-box.component.mjs +4 -4
  147. package/esm2022/lib/components/forms/search/search-box/elder-search-panel.component.mjs +4 -4
  148. package/esm2022/lib/components/global-search/elder-global-search.component.mjs +4 -4
  149. package/esm2022/lib/components/global-search/elder-global-search.module.mjs +5 -5
  150. package/esm2022/lib/components/global-search/elder-global-search.service.mjs +4 -4
  151. package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +4 -4
  152. package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +5 -5
  153. package/esm2022/lib/components/headers/elder-header/elder-header.component.mjs +4 -4
  154. package/esm2022/lib/components/headers/elder-header.module.mjs +5 -5
  155. package/esm2022/lib/components/http-support/elder-http-client.service.mjs +4 -4
  156. package/esm2022/lib/components/i18n/entities/elder-i18n-entities.module.mjs +5 -5
  157. package/esm2022/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +4 -4
  158. package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +4 -4
  159. package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +4 -4
  160. package/esm2022/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +4 -4
  161. package/esm2022/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +4 -4
  162. package/esm2022/lib/components/i18n/entities/elder-localized-texts.directive.mjs +4 -4
  163. package/esm2022/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +4 -4
  164. package/esm2022/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +4 -4
  165. package/esm2022/lib/components/i18n/entities/picker/localisation-picker.service.mjs +4 -4
  166. package/esm2022/lib/components/i18n/language/elder-language-interceptor.mjs +4 -4
  167. package/esm2022/lib/components/i18n/language/elder-language.module.mjs +5 -5
  168. package/esm2022/lib/components/i18n/language/elder-language.service.mjs +4 -4
  169. package/esm2022/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +4 -4
  170. package/esm2022/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +5 -5
  171. package/esm2022/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +4 -4
  172. package/esm2022/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +4 -4
  173. package/esm2022/lib/components/iframes/elder-iframe.module.mjs +5 -5
  174. package/esm2022/lib/components/iframes/iframe-close.directive.mjs +4 -4
  175. package/esm2022/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +4 -4
  176. package/esm2022/lib/components/iframes/iframe-host/iframe-host.component.mjs +4 -4
  177. package/esm2022/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +4 -4
  178. package/esm2022/lib/components/iframes/iframe.service.mjs +4 -4
  179. package/esm2022/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +4 -4
  180. package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +4 -4
  181. package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +5 -5
  182. package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete-option-selected.mjs +1 -1
  183. package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-suggestion-panel.component.mjs +231 -0
  184. package/esm2022/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +4 -4
  185. package/esm2022/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +7 -4
  186. package/esm2022/lib/components/input/autocomplete/elder-autocomplete.module.mjs +12 -12
  187. package/esm2022/lib/components/labels/elder-labels.module.mjs +5 -5
  188. package/esm2022/lib/components/labels/labels-input/labels-input.component.mjs +4 -4
  189. package/esm2022/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.mjs +4 -4
  190. package/esm2022/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.mjs +4 -4
  191. package/esm2022/lib/components/measures/directives/elder-unit-select.directive.mjs +4 -4
  192. package/esm2022/lib/components/measures/elder-measures.module.mjs +9 -9
  193. package/esm2022/lib/components/measures/elder-quantity-transform.pipe.mjs +5 -16
  194. package/esm2022/lib/components/measures/elder-quantity.pipe.mjs +15 -46
  195. package/esm2022/lib/components/measures/elder-unit.service.mjs +4 -4
  196. package/esm2022/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.mjs +4 -4
  197. package/esm2022/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.mjs +8 -10
  198. package/esm2022/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.mjs +4 -4
  199. package/esm2022/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.mjs +4 -4
  200. package/esm2022/lib/components/measures/util/elder-quantity.service.mjs +70 -4
  201. package/esm2022/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +4 -4
  202. package/esm2022/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +5 -5
  203. package/esm2022/lib/components/navigation/nav/elder-nav.module.mjs +5 -5
  204. package/esm2022/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +4 -4
  205. package/esm2022/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +4 -4
  206. package/esm2022/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +4 -4
  207. package/esm2022/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +4 -4
  208. package/esm2022/lib/components/navigation/toolbar/elder-toolbar.module.mjs +5 -5
  209. package/esm2022/lib/components/navigation/toolbar/elder-toolbar.service.mjs +4 -4
  210. package/esm2022/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +4 -4
  211. package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +4 -4
  212. package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +4 -4
  213. package/esm2022/lib/components/overlays/elder-overlay-origin.directive.mjs +4 -4
  214. package/esm2022/lib/components/overlays/elder-overlay-ref.mjs +4 -4
  215. package/esm2022/lib/components/overlays/elder-overlay-trigger.directive.mjs +4 -4
  216. package/esm2022/lib/components/overlays/elder-overlay.component.mjs +4 -4
  217. package/esm2022/lib/components/overlays/elder-overlay.module.mjs +5 -5
  218. package/esm2022/lib/components/panels/card-panel/elder-card-panel.component.mjs +4 -4
  219. package/esm2022/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.mjs +4 -4
  220. package/esm2022/lib/components/panels/elder-panel.module.mjs +5 -5
  221. package/esm2022/lib/components/panels/flat/elder-panel.component.mjs +4 -4
  222. package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.mjs +4 -4
  223. package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel.component.mjs +10 -10
  224. package/esm2022/lib/components/scrollbar/elder-scrollbar.directive.mjs +4 -4
  225. package/esm2022/lib/components/scrollbar/elder-scrollbar.module.mjs +5 -5
  226. package/esm2022/lib/components/select/auto/elder-auto-select-first.directive.mjs +27 -7
  227. package/esm2022/lib/components/select/auto/elder-auto-select-first.service.mjs +38 -0
  228. package/esm2022/lib/components/select/auto/elder-auto-select-suggest-first.directive.mjs +66 -0
  229. package/esm2022/lib/components/select/auto/elder-select-first-util.mjs +4 -14
  230. package/esm2022/lib/components/select/elder-select-base.mjs +9 -9
  231. package/esm2022/lib/components/select/elder-select-chip.directive.mjs +10 -10
  232. package/esm2022/lib/components/select/elder-select-on-tab.directive.mjs +4 -4
  233. package/esm2022/lib/components/select/elder-select-value.directive.mjs +4 -4
  234. package/esm2022/lib/components/select/elder-select.module.mjs +35 -10
  235. package/esm2022/lib/components/select/filter/elder-chip-filter-style-resolver.mjs +70 -0
  236. package/esm2022/lib/components/select/filter/elder-chips-filter.directive.mjs +174 -0
  237. package/esm2022/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.mjs +58 -0
  238. package/esm2022/lib/components/select/multi/elder-chip-select-option/elder-select-option.component.mjs +4 -4
  239. package/esm2022/lib/components/select/multi/elder-multi-select-base.mjs +4 -4
  240. package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.mjs +14 -7
  241. package/esm2022/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +10 -6
  242. package/esm2022/lib/components/select/multi/elder-multi-select-form-field.mjs +4 -4
  243. package/esm2022/lib/components/select/multi/elder-mutli-select-all-directive.mjs +4 -4
  244. package/esm2022/lib/components/select/multi/elder-search-include-exclude.directive.mjs +83 -0
  245. package/esm2022/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.mjs +4 -4
  246. package/esm2022/lib/components/select/popup/selection-model-popup.directive.mjs +4 -4
  247. package/esm2022/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +4 -4
  248. package/esm2022/lib/components/select/single/elder-clear-select.directive.mjs +4 -4
  249. package/esm2022/lib/components/select/single/elder-select/elder-select.component.mjs +9 -14
  250. package/esm2022/lib/components/select/single/elder-select-form-field.mjs +4 -4
  251. package/esm2022/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +4 -4
  252. package/esm2022/lib/components/select-chip-list/elder-chip-list-select.module.mjs +5 -5
  253. package/esm2022/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +4 -4
  254. package/esm2022/lib/components/shell/drawers/elder-router-outlet.service.mjs +4 -4
  255. package/esm2022/lib/components/shell/elder-shell-slot.directive.mjs +4 -4
  256. package/esm2022/lib/components/shell/elder-shell.module.mjs +5 -5
  257. package/esm2022/lib/components/shell/elder-shell.service.mjs +4 -4
  258. package/esm2022/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +4 -4
  259. package/esm2022/lib/components/shell/shell/elder-shell.component.mjs +13 -13
  260. package/esm2022/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +4 -4
  261. package/esm2022/lib/components/tabs/elder-tab/elder-tab.directive.mjs +4 -4
  262. package/esm2022/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +4 -4
  263. package/esm2022/lib/components/tabs/elder-tab.module.mjs +5 -5
  264. package/esm2022/lib/components/theme/elder-theme-applier.directive.mjs +4 -4
  265. package/esm2022/lib/components/theme/elder-theme-preference.service.mjs +4 -4
  266. package/esm2022/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +4 -4
  267. package/esm2022/lib/components/theme/elder-theme.directive.mjs +4 -4
  268. package/esm2022/lib/components/theme/elder-theme.module.mjs +5 -5
  269. package/esm2022/lib/components/theme/elder-theme.service.mjs +4 -4
  270. package/esm2022/lib/components/time/date-adapters/custom-date-adapter.mjs +4 -4
  271. package/esm2022/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +4 -4
  272. package/esm2022/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +4 -4
  273. package/esm2022/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +4 -4
  274. package/esm2022/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +4 -4
  275. package/esm2022/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +4 -4
  276. package/esm2022/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +4 -4
  277. package/esm2022/lib/components/time/elder-time.module.mjs +5 -5
  278. package/esm2022/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +4 -4
  279. package/esm2022/lib/components/time/pipes/to-iso-date-string.pipe.mjs +4 -4
  280. package/esm2022/lib/components/toasts/elder-toast.module.mjs +5 -5
  281. package/esm2022/lib/components/toasts/elder-toast.service.mjs +4 -4
  282. package/esm2022/lib/components/toasts/standard-toast/standard-toast.component.mjs +4 -4
  283. package/esm2022/lib/components/url-fragment/elder-url-fragment.module.mjs +5 -5
  284. package/esm2022/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +4 -4
  285. package/esm2022/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +4 -4
  286. package/esm2022/lib/components/viewers/elder-viewers.module.mjs +5 -5
  287. package/esm2022/lib/features/event-source/fetch/reactive-fetch-event-source.service.mjs +4 -4
  288. package/esm2022/lib/features/event-source/standard/elder-event-source.service.mjs +4 -4
  289. package/esm2022/lib/features/kafent/access-token-provider.mjs +4 -4
  290. package/esm2022/lib/features/kafent/kafent-config.mjs +4 -4
  291. package/esm2022/lib/features/kafent/kafent-event-stream.mjs +4 -4
  292. package/esm2022/lib/features/kafent/kafent-event.service.mjs +4 -4
  293. package/esm2022/lib/features/kafent/kafent.module.mjs +5 -5
  294. package/esm2022/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +4 -4
  295. package/esm2022/lib/pipes/bytes.pipe.mjs +4 -4
  296. package/esm2022/lib/pipes/elder-pipes.module.mjs +11 -11
  297. package/esm2022/lib/pipes/elder-repeat.pipe.mjs +4 -4
  298. package/esm2022/lib/pipes/elder-round.pipe.mjs +4 -4
  299. package/esm2022/lib/pipes/elder-safe-url.pipe.mjs +4 -4
  300. package/esm2022/lib/pipes/elder-truncate.pipe.mjs +4 -4
  301. package/esm2022/lib/pipes/iso-duration.pipe.mjs +8 -26
  302. package/esm2022/lib/pipes/iso-interval-parse.pipe.mjs +4 -4
  303. package/esm2022/lib/pipes/iso-interval.pipe.mjs +24 -73
  304. package/esm2022/lib/pipes/time-ago.pipe.mjs +4 -4
  305. package/esm2022/lib/pipes/time-duration.pipe.mjs +4 -4
  306. package/esm2022/lib/pipes/weight.pipe.mjs +4 -4
  307. package/fesm2022/elderbyte-ngx-starter.mjs +8822 -7833
  308. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  309. package/lib/common/data/filters/filter-commons.d.ts +12 -0
  310. package/lib/common/data/filters/filter-value.d.ts +1 -0
  311. package/lib/common/format/curency-format-util.d.ts +24 -0
  312. package/lib/common/format/duration-format-util.d.ts +23 -0
  313. package/lib/common/format/iso-interval-format-util.d.ts +22 -0
  314. package/lib/common/format/public_api.d.ts +3 -0
  315. package/lib/components/badge/elder-badge.directive.d.ts +10 -1
  316. package/lib/components/currency/elder-currency.pipe.d.ts +7 -4
  317. package/lib/components/forms/directives/elder-initial-value.directive.d.ts +4 -2
  318. package/lib/components/forms/search/domain/input/input-value.d.ts +1 -0
  319. package/lib/components/forms/search/domain/input/search-input-state.d.ts +14 -4
  320. package/lib/components/forms/search/domain/input/search-input.d.ts +6 -1
  321. package/lib/components/forms/search/elder-search-context.directive.d.ts +7 -2
  322. package/lib/components/forms/search/elder-search-input.directive.d.ts +18 -7
  323. package/lib/components/forms/search/filter/default-input-filter-converter.d.ts +31 -0
  324. package/lib/components/forms/search/filter/include-exclude-input-converter.d.ts +78 -0
  325. package/lib/components/forms/search/filter/input-filter-converter.d.ts +16 -0
  326. package/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete-option-selected.d.ts +3 -3
  327. package/lib/components/input/autocomplete/elder-autocomplete/{elder-autocomplete.component.d.ts → elder-suggestion-panel.component.d.ts} +17 -6
  328. package/lib/components/input/autocomplete/elder-autocomplete-many.directive.d.ts +3 -3
  329. package/lib/components/input/autocomplete/elder-autocomplete.directive.d.ts +3 -3
  330. package/lib/components/input/autocomplete/elder-autocomplete.module.d.ts +3 -3
  331. package/lib/components/measures/elder-quantity.pipe.d.ts +4 -15
  332. package/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.d.ts +2 -4
  333. package/lib/components/measures/util/elder-quantity.service.d.ts +12 -0
  334. package/lib/components/select/auto/elder-auto-select-first.directive.d.ts +9 -1
  335. package/lib/components/select/auto/elder-auto-select-first.service.d.ts +23 -0
  336. package/lib/components/select/auto/elder-auto-select-suggest-first.directive.d.ts +32 -0
  337. package/lib/components/select/auto/elder-select-first-util.d.ts +2 -2
  338. package/lib/components/select/elder-select-base.d.ts +1 -1
  339. package/lib/components/select/elder-select.module.d.ts +9 -1
  340. package/lib/components/select/filter/elder-chip-filter-style-resolver.d.ts +19 -0
  341. package/lib/components/select/filter/elder-chips-filter.directive.d.ts +68 -0
  342. package/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.d.ts +32 -0
  343. package/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.d.ts +5 -1
  344. package/lib/components/select/multi/elder-search-include-exclude.directive.d.ts +39 -0
  345. package/lib/components/select/single/elder-select/elder-select.component.d.ts +0 -1
  346. package/lib/pipes/iso-duration.pipe.d.ts +0 -3
  347. package/lib/pipes/iso-interval.pipe.d.ts +5 -12
  348. package/package.json +1 -1
  349. package/src/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.scss +95 -0
  350. package/src/lib/components/select/multi/elder-select-include-exclude-chip/elder-select-include-exclude-chip.component.scss +0 -0
  351. package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.mjs +0 -186
  352. /package/src/lib/components/input/autocomplete/elder-autocomplete/{elder-autocomplete.component.scss → elder-suggestion-panel.component.scss} +0 -0
@@ -2,9 +2,13 @@ import { Quantity } from '../model/quantity';
2
2
  import { Injectable } from '@angular/core';
3
3
  import { Dimensions } from '../model/dimensions';
4
4
  import { LoggerFactory } from '@elderbyte/ts-logger';
5
+ import { formatNumber } from '@angular/common';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "../elder-unit.service";
7
8
  export class ElderQuantityService {
9
+ static { this.EMPTY_STRING = ''; }
10
+ static { this.SPACE_STRING = ' '; }
11
+ static { this.DEFAULT_DIGITS = '1.0-1'; }
8
12
  /***************************************************************************
9
13
  * *
10
14
  * Builder support *
@@ -215,6 +219,31 @@ export class ElderQuantityService {
215
219
  return targetQuantity;
216
220
  }
217
221
  }
222
+ transformQuantity(quantity, normalize = true, targetUnit) {
223
+ if (!quantity) {
224
+ return null;
225
+ }
226
+ if (normalize) {
227
+ return this.normalize(quantity);
228
+ }
229
+ else if (targetUnit) {
230
+ return this.convertToUnit(quantity, targetUnit);
231
+ }
232
+ else {
233
+ return quantity;
234
+ }
235
+ }
236
+ formatQuantity(quantity, locale, normalize, targetUnit, digitsInfo) {
237
+ digitsInfo ||= ElderQuantityService.DEFAULT_DIGITS;
238
+ if (!quantity) {
239
+ return ElderQuantityService.EMPTY_STRING;
240
+ }
241
+ const userOptions = ElderQuantityService.determineUserOptions(normalize, targetUnit, digitsInfo);
242
+ const quantityToDisplay = this.transformQuantity(quantity, userOptions.normalize, userOptions.targetUnit);
243
+ const number = this.strToNumber(quantityToDisplay.value);
244
+ const suffix = this.determineSuffix(userOptions, quantityToDisplay);
245
+ return formatNumber(number, locale, userOptions.digitsInfo) + suffix;
246
+ }
218
247
  /***************************************************************************
219
248
  * *
220
249
  * Private Methods *
@@ -258,13 +287,50 @@ export class ElderQuantityService {
258
287
  getQuantityIdentifier(quantity) {
259
288
  return quantity.value + '-' + quantity.unit;
260
289
  }
261
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ElderQuantityService, deps: [{ token: i1.ElderUnitService }], target: i0.ɵɵFactoryTarget.Injectable }); }
262
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ElderQuantityService, providedIn: 'root' }); }
290
+ /**
291
+ * Adapted from @angular/common number_pipe.ts
292
+ */
293
+ strToNumber(value) {
294
+ // Convert strings to numbers
295
+ if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) {
296
+ return Number(value);
297
+ }
298
+ if (typeof value !== 'number') {
299
+ throw new Error(`${value} is not a number`);
300
+ }
301
+ return value;
302
+ }
303
+ static determineUserOptions(normalize, targetUnit, digitsInfo) {
304
+ const userOptions = (normalize === undefined || typeof normalize === 'boolean')
305
+ ? {
306
+ normalize: normalize,
307
+ targetUnit: targetUnit,
308
+ digitsInfo: digitsInfo
309
+ }
310
+ : normalize;
311
+ if (userOptions.normalize === undefined && !userOptions.targetUnit) {
312
+ userOptions.normalize = true;
313
+ }
314
+ if (userOptions.digitsInfo === undefined) {
315
+ userOptions.digitsInfo = ElderQuantityService.DEFAULT_DIGITS;
316
+ }
317
+ return userOptions;
318
+ }
319
+ determineSuffix(userOptions, quantityToDisplay) {
320
+ if (!userOptions.hideUnit) {
321
+ return ElderQuantityService.SPACE_STRING + this.unitService.getUnitSymbol(quantityToDisplay.unit);
322
+ }
323
+ else {
324
+ return '';
325
+ }
326
+ }
327
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderQuantityService, deps: [{ token: i1.ElderUnitService }], target: i0.ɵɵFactoryTarget.Injectable }); }
328
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderQuantityService, providedIn: 'root' }); }
263
329
  }
264
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ElderQuantityService, decorators: [{
330
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderQuantityService, decorators: [{
265
331
  type: Injectable,
266
332
  args: [{
267
333
  providedIn: 'root'
268
334
  }]
269
335
  }], ctorParameters: () => [{ type: i1.ElderUnitService }] });
270
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcXVhbnRpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvbWVhc3VyZXMvdXRpbC9lbGRlci1xdWFudGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7OztBQVVuRCxNQUFNLE9BQU8sb0JBQW9CO0lBYS9COzs7O2dGQUk0RTtJQUVyRSxVQUFVLENBQUMsTUFBZ0IsRUFBRSxLQUFlO1FBQ2pELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUMxQixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUMzQixDQUFDO0lBQ0osQ0FBQztJQUVNLGdCQUFnQixDQUNyQixNQUFnQixFQUNoQixLQUFlLEVBQ2YsTUFBZ0I7UUFFaEIsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUNwQixNQUFNLENBQUMsSUFBSSxFQUNYLE1BQU0sQ0FBQyxLQUFLLEVBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FDOUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksVUFBVSxDQUFDLFVBQXNCO1FBQ3RDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFD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O2dCQUN2RSxJQUFJLFFBQVEsQ0FBQyxZQUFZLElBQUksZUFBZSxFQUFFO29CQUM1QyxZQUFZLEdBQUcsUUFBUSxDQUFDO29CQUN4QixNQUFNO2lCQUNQO2FBQ0Y7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLEdBQUcsU0FBUyxHQUFHLEtBQUssR0FBRyxRQUFRLENBQUMsSUFBSSxHQUFHLE9BQU8sR0FBRyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUM7U0FDekg7UUFFRCxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pCLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO1FBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXRFLHlFQUF5RTtRQUN6RSw0SEFBNEg7UUFDNUgsSUFBSSxZQUFZLENBQUMsWUFBWSxLQUFLLGFBQWEsRUFBRTtZQUMvQyxPQUFPLFFBQVEsQ0FBQztTQUNqQjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEQ7SUFDSCxDQUFDO0lBRU8scUJBQXFCLENBQUMsUUFBa0I7UUFDOUMsT0FBTyxRQUFRLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQzlDLENBQUM7OEdBdlZVLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzJGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1VuaXR9IGZyb20gJy4uL21vZGVsL3VuaXQnO1xuaW1wb3J0IHtRdWFudGl0eX0gZnJvbSAnLi4vbW9kZWwvcXVhbnRpdHknO1xuaW1wb3J0IHtVbml0SW5mb30gZnJvbSAnLi4vbW9kZWwvdW5pdC1yZWdpc3RyeSc7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtFbGRlclVuaXRTZXJ2aWNlfSBmcm9tICcuLi9lbGRlci11bml0LnNlcnZpY2UnO1xuaW1wb3J0IHtEaW1lbnNpb25zfSBmcm9tICcuLi9tb2RlbC9kaW1lbnNpb25zJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuXG5pbnRlcmZhY2UgUXVhbnRpdHlXaXRoQmFzZVZhbHVlIHtcbiAgb3JpZ2luYWw6IFF1YW50aXR5O1xuICBiYXNlVmFsdWU6IG51bWJlcjtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJRdWFudGl0eVNlcnZpY2Uge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IFFVQU5USVRZX0NBQ0hFX1NJWkUgPSA1MDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgUVVBTlRJVFlfQ0FDSEUgPSBuZXcgTWFwPHN0cmluZywgUXVhbnRpdHk+KCk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEJ1aWxkZXIgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGNyZWF0ZUFyZWEobGVuZ3RoOiBRdWFudGl0eSwgd2lkdGg6IFF1YW50aXR5KTogRGltZW5zaW9ucyB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlRGltZW5zaW9ucyhcbiAgICAgIGxlbmd0aCxcbiAgICAgIHdpZHRoLFxuICAgICAgUXVhbnRpdHkuemVybyhsZW5ndGgudW5pdClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZURpbWVuc2lvbnMoXG4gICAgbGVuZ3RoOiBRdWFudGl0eSxcbiAgICB3aWR0aDogUXVhbnRpdHksXG4gICAgaGVpZ2h0OiBRdWFudGl0eVxuICApOiBEaW1lbnNpb25zIHtcbiAgICByZXR1cm4gRGltZW5zaW9ucy5mcm9tKFxuICAgICAgbGVuZ3RoLnVuaXQsXG4gICAgICBsZW5ndGgudmFsdWUsXG4gICAgICB0aGlzLmNvbnZlcnRUb1VuaXQod2lkdGgsIGxlbmd0aC51bml0KS52YWx1ZSxcbiAgICAgIHRoaXMuY29udmVydFRvVW5pdChoZWlnaHQsIGxlbmd0aC51bml0KS52YWx1ZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGNvcHkgb2YgdGhlIG1heGltdW0gKGxvbmdlc3QpIGVkZ2Ugb2YgdGhlIGRpbWVuc2lvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBkaW1lbnNpb25zXG4gICAqL1xuICBwdWJsaWMgZ2V0TWF4RWRnZShkaW1lbnNpb25zOiBEaW1lbnNpb25zKTogUXVhbnRpdHkge1xuICAgIGlmICghZGltZW5zaW9ucykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBRdWFudGl0eS5mcm9tKFxuICAgICAgICBkaW1lbnNpb25zLnVuaXQsXG4gICAgICAgIE1hdGgubWF4KGRpbWVuc2lvbnMud2lkdGgsIGRpbWVuc2lvbnMubGVuZ3RoLCBkaW1lbnNpb25zLmhlaWdodClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB1bml0U2VydmljZTogRWxkZXJVbml0U2VydmljZVxuICApIHtcbiAgfVxuXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHdpdGhVbml0KHF1YW50aXR5OiBRdWFudGl0eSwgdW5pdDogVW5pdCkge1xuICAgIHJldHVybiBRdWFudGl0eS5mcm9tKHVuaXQsIHF1YW50aXR5LnZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyB3aXRoVmFsdWUocXVhbnRpdHk6IFF1YW50aXR5LCB2YWx1ZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIFF1YW50aXR5LmZyb20ocXVhbnRpdHkudW5pdCwgdmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGNhY2hlTG9va3VwKGxvb2t1cDogUXVhbnRpdHkpOiBRdWFudGl0eSB7XG4gICAgcmV0dXJuIHRoaXMuUVVBTlRJVFlfQ0FDSEUuZ2V0KHRoaXMuZ2V0UXVhbnRpdHlJZGVudGlmaWVyKGxvb2t1cCkpO1xuICB9XG5cbiAgcHVibGljIGNhY2hlVXBkYXRlKGtleTogUXVhbnRpdHksIHZhbHVlOiBRdWFudGl0eSkge1xuICAgIGlmICh0aGlzLlFVQU5USVRZX0NBQ0hFLnNpemUgPj0gdGhpcy5RVUFOVElUWV9DQUNIRV9TSVpFKSB7XG4gICAgICB0aGlzLlFVQU5USVRZX0NBQ0hFLmNsZWFyKCk7XG4gICAgfVxuICAgIHRoaXMuUVVBTlRJVFlfQ0FDSEUuc2V0KHRoaXMuZ2V0UXVhbnRpdHlJZGVudGlmaWVyKGtleSksIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNdWx0aXBsaWVzIGEgcXVhbnRpdHkgd2l0aCBhIG11bHRpcGxpZXIgYW5kIHJldHVybnMgYSBxdWFudGl0eS5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogUXVhbnRpdHkoMTAsJ2tnJykgKiAzID0gUXVhbnRpdHkoMzAwMDAsJ2cnKVxuICAgKlxuICAgKiBAcGFyYW0gcXVhbnRpdHlcbiAgICogQHBhcmFtIG11bHRpcGxpZXJcbiAgICovXG5cbiAgcHVibGljIG11bHRpcGx5KHF1YW50aXR5OiBRdWFudGl0eSwgbXVsdGlwbGllcjogbnVtYmVyKTogUXVhbnRpdHkge1xuXG4gICAgaWYgKCFxdWFudGl0eSB8fCAhbXVsdGlwbGllcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBRdWFudGl0eS5mcm9tKFxuICAgICAgcXVhbnRpdHkudW5pdCxcbiAgICAgIHF1YW50aXR5LnZhbHVlICogbXVsdGlwbGllclxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGl2aWRlcyBhIHF1YW50aXR5IGJ5IGFub3RoZXIgcXVhbnRpdHkgYW5kIHJldHVybnMgYSBzY2FsYXIuXG4gICAqXG4gICAqIEV4YW1wbGVzOlxuICAgKiBRdWFudGl0eSgxMCwna2cnKSAvIFF1YW50aXR5KDUsJ2tnJykgPSAyXG4gICAqIFF1YW50aXR5KDEwLCdrZycpIC8gUXVhbnRpdHkoNSwnZycpID0gMjAwMFxuICAgKlxuICAgKiBAcGFyYW0gZGl2aWRlbmRcbiAgICogQHBhcmFtIGRpdmlzb3JcbiAgICovXG4gIHB1YmxpYyBkaXZpZGVCeVF1YW50aXR5KGRpdmlkZW5kOiBRdWFudGl0eSwgZGl2aXNvcjogUXVhbnRpdHkpOiBudW1iZXIge1xuXG4gICAgaWYgKCFkaXZpZGVuZCB8fCAhZGl2aXNvcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGRpdmlkZW5kTm9ybWFsID0gIHRoaXMudG9CYXNlVW5pdFZhbHVlKGRpdmlkZW5kKTtcbiAgICBjb25zdCBkaXZpc29yTm9ybWFsID0gIHRoaXMudG9CYXNlVW5pdFZhbHVlKGRpdmlzb3IpO1xuICAgIHJldHVybiBkaXZpZGVuZE5vcm1hbCAvIGRpdmlzb3JOb3JtYWw7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBTdW1zIHVwIFF1YW50aXRpZXMgYW5kIHJldHVybnMgYSBRdWFudGl0eS5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogUXVhbnRpdHkoMTAsJ2tnJykgKyBRdWFudGl0eSg1LCdrZycpICsgUXVhbnRpdHkoNSwnZycpID0gUXVhbnRpdHkoMTUwMDUsICdnJylcbiAgICpcbiAgICogQHBhcmFtIHF1YW50aXRpZXNcbiAgICovXG4gIHB1YmxpYyBzdW0ocXVhbnRpdGllczogUXVhbnRpdHlbXSk6IFF1YW50aXR5IHtcbiAgICBpZiAoIXF1YW50aXRpZXMgfHwgcXVhbnRpdGllcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldFVuaXQgPSBxdWFudGl0aWVzWzBdLnVuaXQ7XG5cbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShcbiAgICAgIHRhcmdldFVuaXQsXG4gICAgICBxdWFudGl0aWVzLnJlZHVjZShcbiAgICAgICAgKHRvdGFsLCBhZGQpID0+IHtcbiAgICAgICAgICByZXR1cm4gdG90YWwgKyB0aGlzLmNvbnZlcnRUb1VuaXQoYWRkLCB0YXJnZXRVbml0KS52YWx1ZTtcbiAgICAgICAgfSwgMFxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU3VidHJhY3RzIGEgcXVhbnRpdHkgZnJvbSBhbm90aGVyIHF1YW50aXR5IGFuZCByZXR1cm5zIGEgcXVhbnRpdHkuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIFF1YW50aXR5KDEwLCdrZycpIC0gUXVhbnRpdHkoNSwnZycpID0gUXVhbnRpdHkoOTk5NSwgJ2cnKVxuICAgKlxuICAgKiBAcGFyYW0gbWludWVuZFxuICAgKiBAcGFyYW0gc3VidHJhaGVuZFxuICAgKi9cbiAgcHVibGljIHN1YnRyYWN0KG1pbnVlbmQ6IFF1YW50aXR5LCBzdWJ0cmFoZW5kOiBRdWFudGl0eSk6IFF1YW50aXR5IHtcbiAgICBpZiAoIW1pbnVlbmQgfHwgIXN1YnRyYWhlbmQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShcbiAgICAgIG1pbnVlbmQudW5pdCxcbiAgICAgIG1pbnVlbmQudmFsdWUgLSB0aGlzLmNvbnZlcnRUb1VuaXQoc3VidHJhaGVuZCwgbWludWVuZC51bml0KS52YWx1ZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU3VidHJhY3RzIGEgcXVhbnRpdHkgZnJvbSBhbm90aGVyIHF1YW50aXR5IGFuZCByZXR1cm5zIGEgcXVhbnRpdHkuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIFF1YW50aXR5KDEwLCdrZycpICsgUXVhbnRpdHkoNTAwLCdnJykgPSBRdWFudGl0eSgxMC41LCAna2cnKVxuICAgKlxuICAgKiBAcGFyYW0gbGVmdFxuICAgKiBAcGFyYW0gcmlnaHRcbiAgICovXG4gIHB1YmxpYyBhZGQobGVmdDogUXVhbnRpdHksIHJpZ2h0OiBRdWFudGl0eSk6IFF1YW50aXR5IHtcbiAgICBpZiAoIWxlZnQgfHwgIXJpZ2h0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIFF1YW50aXR5LmZyb20oXG4gICAgICBsZWZ0LnVuaXQsXG4gICAgICBsZWZ0LnZhbHVlIC0gdGhpcy5jb252ZXJ0VG9Vbml0KHJpZ2h0LCBsZWZ0LnVuaXQpLnZhbHVlXG4gICAgKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG1heCBxdWFudGl0eSBvZiBhbiBhcnJheSBvZiBxdWFudGl0aWVzLlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBRdWFudGl0eSgxMCwgJ20nKSwgUXVhbnRpdHkoMjUwMCwgJ2NtJyksIFF1YW50aXR5KDAuMDAzLCAna20nKSA9IFF1YW50aXR5KDI1MDAsICdjbScpXG4gICAqXG4gICAqIEBwYXJhbSBxdWFudGl0aWVzXG4gICAqL1xuXG4gIHB1YmxpYyBtYXgocXVhbnRpdGllczogUXVhbnRpdHlbXSk6IFF1YW50aXR5IHtcblxuICAgIGlmICghcXVhbnRpdGllcyB8fCBxdWFudGl0aWVzLmxlbmd0aCA9PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBoZWxwZXJzID0gcXVhbnRpdGllc1xuICAgICAgLm1hcChxdWFudGl0eSA9PiA8UXVhbnRpdHlXaXRoQmFzZVZhbHVlPntcbiAgICAgICAgb3JpZ2luYWw6IHF1YW50aXR5LFxuICAgICAgICBiYXNlVmFsdWU6IHRoaXMudG9CYXNlVW5pdFZhbHVlKHF1YW50aXR5KVxuICAgICAgfSk7XG5cbiAgICBoZWxwZXJzLnNvcnQoKGEsIGIpID0+IGIuYmFzZVZhbHVlIC0gYS5iYXNlVmFsdWUpO1xuXG4gICAgcmV0dXJuIGhlbHBlcnNbMF0ub3JpZ2luYWw7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1zIGEgcXVhbnRpdHkgdG8gYW5vdGhlciBxdWFudGl0eSBvZiB0aGUgc2FtZSBkaW1lbnNpb24gYnkgdGFyZ2V0LVNJXG4gICAqXG4gICAqIEBwYXJhbSBxdWFudGl0eVxuICAgKiBAcGFyYW0gdGFyZ2V0VW5pdFxuICAgKi9cbiAgcHVibGljIGNvbnZlcnRUb1VuaXQocXVhbnRpdHk6IFF1YW50aXR5LCB0YXJnZXRVbml0OiBVbml0KTogUXVhbnRpdHkge1xuICAgIGlmICghcXVhbnRpdHkgfHwgIXRhcmdldFVuaXQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChxdWFudGl0eS51bml0ID09PSB0YXJnZXRVbml0KSB7XG4gICAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShxdWFudGl0eS51bml0LCBxdWFudGl0eS52YWx1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0QmFzZUZhY3RvciA9IHRoaXMudW5pdFNlcnZpY2UuZ2V0VG9CYXNlRmFjdG9yKHRhcmdldFVuaXQpO1xuXG4gICAgaWYgKHRhcmdldEJhc2VGYWN0b3IgPiAwKSB7XG4gICAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShcbiAgICAgICAgdGFyZ2V0VW5pdCxcbiAgICAgICAgdGhpcy50b0Jhc2VVbml0VmFsdWUocXVhbnRpdHkpIC8gdGFyZ2V0QmFzZUZhY3RvclxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dnZXIud2FybignRmFpbGVkIHRvIGNvbnZlcnQgcXVhbnRpdHkgdG8gdGFyZ2V0IHVuaXQ6JyArIHRhcmdldFVuaXQgKyAnLiBRdWFudGl0eTogJywgcXVhbnRpdHkpO1xuICAgICAgcmV0dXJuIHF1YW50aXR5O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0b0Jhc2VVbml0VmFsdWUocXVhbnRpdHk6IFF1YW50aXR5KTogbnVtYmVyIHtcbiAgICBjb25zdCB0YXJnZXRCYXNlRmFjdG9yID0gdGhpcy51bml0U2VydmljZS5nZXRUb0Jhc2VGYWN0b3IocXVhbnRpdHkudW5pdCk7XG4gICAgcmV0dXJuIHF1YW50aXR5LnZhbHVlICogdGFyZ2V0QmFzZUZhY3RvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgcXVhbnRpdHkgaW4gYSBub3JtYWxpemVkIGZvcm0uXG4gICAqIEEgY2FjaGUgaXMgdXNlZCB0byByZWR1Y2UgY2FsY3VsYXRpb25zLlxuICAgKlxuICAgKiA4NTAwIGtnIC0+IDguNSB0XG4gICAqIDkwMDAwMDAgbW0gLT4gOSBrbVxuICAgKiAxMjE1IG0gLT4gMS4yIGttXG4gICAqXG4gICAqIEBwYXJhbSBxdWFudGl0eVxuICAgKi9cbiAgcHVibGljIG5vcm1hbGl6ZShxdWFudGl0eTogUXVhbnRpdHkpOiBRdWFudGl0eSB7XG5cbiAgICAvLyBDaGVjayBjYWNoZVxuICAgIGNvbnN0IGNhY2hlZEl0ZW0gPSB0aGlzLmNhY2hlTG9va3VwKHF1YW50aXR5KTtcblxuICAgIC8vIFZhbHVlIGlzIGluIGNhY2hlXG4gICAgaWYgKGNhY2hlZEl0ZW0pIHtcbiAgICAgIHJldHVybiBjYWNoZWRJdGVtO1xuICAgIH0gZWxzZSB7XG5cbiAgICAgIGNvbnN0IHRhcmdldFF1YW50aXR5ID0gdGhpcy5ub3JtYWxpemVJbnRlcm5hbChxdWFudGl0eSk7XG5cbiAgICAgIC8vIFVwZGF0ZSBjYWNoZVxuICAgICAgdGhpcy5jYWNoZVVwZGF0ZShxdWFudGl0eSwgdGFyZ2V0UXVhbnRpdHkpO1xuXG4gICAgICByZXR1cm4gdGFyZ2V0UXVhbnRpdHk7XG5cbiAgICB9XG4gIH1cblxuXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBub3JtYWxpemVJbnRlcm5hbChxdWFudGl0eTogUXVhbnRpdHkpOiBRdWFudGl0eSB7XG5cbiAgICAvLyBHaXZlbiBxdWFudGl0eSB2YWx1ZSBpbiBiYXNlIHVuaXRcblxuICAgIGNvbnN0IGRpbWVuc2lvbiA9IHRoaXMudW5pdFNlcnZpY2UuZ2V0VW5pdERpbWVuc2lvbihxdWFudGl0eS51bml0KTtcblxuICAgIGlmICghZGltZW5zaW9uKSB7IHJldHVybiBxdWFudGl0eTsgfVxuXG4gICAgY29uc3QgYmFzZVZhbHVlID0gdGhpcy50b0Jhc2VVbml0VmFsdWUocXVhbnRpdHkpO1xuXG4gICAgbGV0IHN1aXRhYmxlVW5pdDogVW5pdEluZm87XG5cbiAgICBjb25zdCBkaW1lbnNpb25Vbml0cyA9IHRoaXMudW5pdFNlcnZpY2UuZ2V0VW5pdEluZm9zQnlEaW1lbnNpb24oZGltZW5zaW9uKTtcblxuICAgIGlmIChkaW1lbnNpb25Vbml0cykge1xuXG4gICAgICBjb25zdCBmYWN0b3JTb3J0ZWRVbml0cyA9IGRpbWVuc2lvblVuaXRzLnNvcnQoKGEsIGIpID0+IGIudG9CYXNlRmFjdG9yIC0gYS50b0Jhc2VGYWN0b3IpO1xuXG4gICAgICBmb3IgKGNvbnN0IHVuaXRJbmZvIG9mIGZhY3RvclNvcnRlZFVuaXRzKSB7XG4gICAgICAgIGNvbnN0IHNpZ25lZEJhc2VWYWx1ZSA9ICgoYmFzZVZhbHVlIDwgMCkgPyBiYXNlVmFsdWUgKiAtMSA6IGJhc2VWYWx1ZSk7XG4gICAgICAgIGlmICh1bml0SW5mby50b0Jhc2VGYWN0b3IgPD0gc2lnbmVkQmFzZVZhbHVlKSB7XG4gICAgICAgICAgc3VpdGFibGVVbml0ID0gdW5pdEluZm87XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0NvdWxkIG5vdCBmaW5kIERpbWVuc2lvbiBpbmZvIGZvciAnICsgZGltZW5zaW9uICsgJy4gKCcgKyBxdWFudGl0eS51bml0ICsgJyAtLT4gJyArIGRpbWVuc2lvbiArICcpJyk7XG4gICAgfVxuXG4gICAgaWYgKCFzdWl0YWJsZVVuaXQpIHtcbiAgICAgIHJldHVybiBxdWFudGl0eTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50VG9CYXNlID0gdGhpcy51bml0U2VydmljZS5nZXRUb0Jhc2VGYWN0b3IocXVhbnRpdHkudW5pdCk7XG5cbiAgICAvLyBFbnN1cmUgd2UgcHJlZmVyIHRoZSBpbml0aWFsIHVuaXQgaWYgdGhlIGFjdHVhbCB2YWx1ZSBpcyBub3QgYWZmZWN0ZWQuXG4gICAgLy8gVGhpcyBoZWxwcyB0byBiZSBjb25zaXN0ZW50IGFuZCBkaXNwbGF5IHRoZSBhY3R1YWwgdW5pdCBpbiByYXJlIGNhc2VzIHdoZW4gbXVsdGlwbGUgdW5pdCBhbHRlcm5hdGl2ZXMgZXhpc3QgKHNhbWUgZmFjdG9yKVxuICAgIGlmIChzdWl0YWJsZVVuaXQudG9CYXNlRmFjdG9yID09PSBjdXJyZW50VG9CYXNlKSB7XG4gICAgICByZXR1cm4gcXVhbnRpdHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb1VuaXQocXVhbnRpdHksIHN1aXRhYmxlVW5pdC51bml0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFF1YW50aXR5SWRlbnRpZmllcihxdWFudGl0eTogUXVhbnRpdHkpOiBzdHJpbmcge1xuICAgIHJldHVybiBxdWFudGl0eS52YWx1ZSArICctJyArIHF1YW50aXR5LnVuaXQ7XG4gIH1cblxufVxuIl19
336
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItcXVhbnRpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvbWVhc3VyZXMvdXRpbC9lbGRlci1xdWFudGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7QUFXN0MsTUFBTSxPQUFPLG9CQUFvQjthQVVQLGlCQUFZLEdBQVcsRUFBRSxBQUFiLENBQWM7YUFDMUIsaUJBQVksR0FBVyxHQUFHLEFBQWQsQ0FBZTthQUUzQixtQkFBYyxHQUFXLE9BQU8sQUFBbEIsQ0FBbUI7SUFLekQ7Ozs7Z0ZBSTRFO0lBRXJFLFVBQVUsQ0FBQyxNQUFnQixFQUFFLEtBQWU7UUFDakQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQzFCLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQzNCLENBQUM7SUFDSixDQUFDO0lBRU0sZ0JBQWdCLENBQ3JCLE1BQWdCLEVBQ2hCLEtBQWUsRUFDZixNQUFnQjtRQUVoQixPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQ3BCLE1BQU0sQ0FBQyxJQUFJLEVBQ1gsTUFBTSxDQUFDLEtBQUssRUFDWixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUM1QyxJQUFJ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QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VW5pdH0gZnJvbSAnLi4vbW9kZWwvdW5pdCc7XG5pbXBvcnQge1F1YW50aXR5fSBmcm9tICcuLi9tb2RlbC9xdWFudGl0eSc7XG5pbXBvcnQge1VuaXRJbmZvfSBmcm9tICcuLi9tb2RlbC91bml0LXJlZ2lzdHJ5JztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0VsZGVyVW5pdFNlcnZpY2V9IGZyb20gJy4uL2VsZGVyLXVuaXQuc2VydmljZSc7XG5pbXBvcnQge0RpbWVuc2lvbnN9IGZyb20gJy4uL21vZGVsL2RpbWVuc2lvbnMnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge2Zvcm1hdE51bWJlcn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7UXVhbnRpdHlQaXBlT3B0aW9uc30gZnJvbSAnLi4vZWxkZXItcXVhbnRpdHkucGlwZSc7XG5cbmludGVyZmFjZSBRdWFudGl0eVdpdGhCYXNlVmFsdWUge1xuICBvcmlnaW5hbDogUXVhbnRpdHk7XG4gIGJhc2VWYWx1ZTogbnVtYmVyO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBFbGRlclF1YW50aXR5U2VydmljZSB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEVNUFRZX1NUUklORzogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFNQQUNFX1NUUklORzogc3RyaW5nID0gJyAnO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfRElHSVRTOiBzdHJpbmcgPSAnMS4wLTEnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgUVVBTlRJVFlfQ0FDSEVfU0laRSA9IDUwMDtcbiAgcHJpdmF0ZSByZWFkb25seSBRVUFOVElUWV9DQUNIRSA9IG5ldyBNYXA8c3RyaW5nLCBRdWFudGl0eT4oKTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQnVpbGRlciBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgY3JlYXRlQXJlYShsZW5ndGg6IFF1YW50aXR5LCB3aWR0aDogUXVhbnRpdHkpOiBEaW1lbnNpb25zIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVEaW1lbnNpb25zKFxuICAgICAgbGVuZ3RoLFxuICAgICAgd2lkdGgsXG4gICAgICBRdWFudGl0eS56ZXJvKGxlbmd0aC51bml0KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlRGltZW5zaW9ucyhcbiAgICBsZW5ndGg6IFF1YW50aXR5LFxuICAgIHdpZHRoOiBRdWFudGl0eSxcbiAgICBoZWlnaHQ6IFF1YW50aXR5XG4gICk6IERpbWVuc2lvbnMge1xuICAgIHJldHVybiBEaW1lbnNpb25zLmZyb20oXG4gICAgICBsZW5ndGgudW5pdCxcbiAgICAgIGxlbmd0aC52YWx1ZSxcbiAgICAgIHRoaXMuY29udmVydFRvVW5pdCh3aWR0aCwgbGVuZ3RoLnVuaXQpLnZhbHVlLFxuICAgICAgdGhpcy5jb252ZXJ0VG9Vbml0KGhlaWdodCwgbGVuZ3RoLnVuaXQpLnZhbHVlXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY29weSBvZiB0aGUgbWF4aW11bSAobG9uZ2VzdCkgZWRnZSBvZiB0aGUgZGltZW5zaW9ucy5cbiAgICpcbiAgICogQHBhcmFtIGRpbWVuc2lvbnNcbiAgICovXG4gIHB1YmxpYyBnZXRNYXhFZGdlKGRpbWVuc2lvbnM6IERpbWVuc2lvbnMpOiBRdWFudGl0eSB7XG4gICAgaWYgKCFkaW1lbnNpb25zKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFF1YW50aXR5LmZyb20oXG4gICAgICAgIGRpbWVuc2lvbnMudW5pdCxcbiAgICAgICAgTWF0aC5tYXgoZGltZW5zaW9ucy53aWR0aCwgZGltZW5zaW9ucy5sZW5ndGgsIGRpbWVuc2lvbnMuaGVpZ2h0KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVuaXRTZXJ2aWNlOiBFbGRlclVuaXRTZXJ2aWNlXG4gICkge1xuICB9XG5cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgd2l0aFVuaXQocXVhbnRpdHk6IFF1YW50aXR5LCB1bml0OiBVbml0KSB7XG4gICAgcmV0dXJuIFF1YW50aXR5LmZyb20odW5pdCwgcXVhbnRpdHkudmFsdWUpO1xuICB9XG5cbiAgcHVibGljIHdpdGhWYWx1ZShxdWFudGl0eTogUXVhbnRpdHksIHZhbHVlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShxdWFudGl0eS51bml0LCB2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgY2FjaGVMb29rdXAobG9va3VwOiBRdWFudGl0eSk6IFF1YW50aXR5IHtcbiAgICByZXR1cm4gdGhpcy5RVUFOVElUWV9DQUNIRS5nZXQodGhpcy5nZXRRdWFudGl0eUlkZW50aWZpZXIobG9va3VwKSk7XG4gIH1cblxuICBwdWJsaWMgY2FjaGVVcGRhdGUoa2V5OiBRdWFudGl0eSwgdmFsdWU6IFF1YW50aXR5KSB7XG4gICAgaWYgKHRoaXMuUVVBTlRJVFlfQ0FDSEUuc2l6ZSA+PSB0aGlzLlFVQU5USVRZX0NBQ0hFX1NJWkUpIHtcbiAgICAgIHRoaXMuUVVBTlRJVFlfQ0FDSEUuY2xlYXIoKTtcbiAgICB9XG4gICAgdGhpcy5RVUFOVElUWV9DQUNIRS5zZXQodGhpcy5nZXRRdWFudGl0eUlkZW50aWZpZXIoa2V5KSwgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE11bHRpcGxpZXMgYSBxdWFudGl0eSB3aXRoIGEgbXVsdGlwbGllciBhbmQgcmV0dXJucyBhIHF1YW50aXR5LlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBRdWFudGl0eSgxMCwna2cnKSAqIDMgPSBRdWFudGl0eSgzMDAwMCwnZycpXG4gICAqXG4gICAqIEBwYXJhbSBxdWFudGl0eVxuICAgKiBAcGFyYW0gbXVsdGlwbGllclxuICAgKi9cblxuICBwdWJsaWMgbXVsdGlwbHkocXVhbnRpdHk6IFF1YW50aXR5LCBtdWx0aXBsaWVyOiBudW1iZXIpOiBRdWFudGl0eSB7XG5cbiAgICBpZiAoIXF1YW50aXR5IHx8ICFtdWx0aXBsaWVyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIFF1YW50aXR5LmZyb20oXG4gICAgICBxdWFudGl0eS51bml0LFxuICAgICAgcXVhbnRpdHkudmFsdWUgKiBtdWx0aXBsaWVyXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXZpZGVzIGEgcXVhbnRpdHkgYnkgYW5vdGhlciBxdWFudGl0eSBhbmQgcmV0dXJucyBhIHNjYWxhci5cbiAgICpcbiAgICogRXhhbXBsZXM6XG4gICAqIFF1YW50aXR5KDEwLCdrZycpIC8gUXVhbnRpdHkoNSwna2cnKSA9IDJcbiAgICogUXVhbnRpdHkoMTAsJ2tnJykgLyBRdWFudGl0eSg1LCdnJykgPSAyMDAwXG4gICAqXG4gICAqIEBwYXJhbSBkaXZpZGVuZFxuICAgKiBAcGFyYW0gZGl2aXNvclxuICAgKi9cbiAgcHVibGljIGRpdmlkZUJ5UXVhbnRpdHkoZGl2aWRlbmQ6IFF1YW50aXR5LCBkaXZpc29yOiBRdWFudGl0eSk6IG51bWJlciB7XG5cbiAgICBpZiAoIWRpdmlkZW5kIHx8ICFkaXZpc29yKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgZGl2aWRlbmROb3JtYWwgPSAgdGhpcy50b0Jhc2VVbml0VmFsdWUoZGl2aWRlbmQpO1xuICAgIGNvbnN0IGRpdmlzb3JOb3JtYWwgPSAgdGhpcy50b0Jhc2VVbml0VmFsdWUoZGl2aXNvcik7XG4gICAgcmV0dXJuIGRpdmlkZW5kTm9ybWFsIC8gZGl2aXNvck5vcm1hbDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFN1bXMgdXAgUXVhbnRpdGllcyBhbmQgcmV0dXJucyBhIFF1YW50aXR5LlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBRdWFudGl0eSgxMCwna2cnKSArIFF1YW50aXR5KDUsJ2tnJykgKyBRdWFudGl0eSg1LCdnJykgPSBRdWFudGl0eSgxNTAwNSwgJ2cnKVxuICAgKlxuICAgKiBAcGFyYW0gcXVhbnRpdGllc1xuICAgKi9cbiAgcHVibGljIHN1bShxdWFudGl0aWVzOiBRdWFudGl0eVtdKTogUXVhbnRpdHkge1xuICAgIGlmICghcXVhbnRpdGllcyB8fCBxdWFudGl0aWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0VW5pdCA9IHF1YW50aXRpZXNbMF0udW5pdDtcblxuICAgIHJldHVybiBRdWFudGl0eS5mcm9tKFxuICAgICAgdGFyZ2V0VW5pdCxcbiAgICAgIHF1YW50aXRpZXMucmVkdWNlKFxuICAgICAgICAodG90YWwsIGFkZCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0b3RhbCArIHRoaXMuY29udmVydFRvVW5pdChhZGQsIHRhcmdldFVuaXQpLnZhbHVlO1xuICAgICAgICB9LCAwXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJ0cmFjdHMgYSBxdWFudGl0eSBmcm9tIGFub3RoZXIgcXVhbnRpdHkgYW5kIHJldHVybnMgYSBxdWFudGl0eS5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogUXVhbnRpdHkoMTAsJ2tnJykgLSBRdWFudGl0eSg1LCdnJykgPSBRdWFudGl0eSg5OTk1LCAnZycpXG4gICAqXG4gICAqIEBwYXJhbSBtaW51ZW5kXG4gICAqIEBwYXJhbSBzdWJ0cmFoZW5kXG4gICAqL1xuICBwdWJsaWMgc3VidHJhY3QobWludWVuZDogUXVhbnRpdHksIHN1YnRyYWhlbmQ6IFF1YW50aXR5KTogUXVhbnRpdHkge1xuICAgIGlmICghbWludWVuZCB8fCAhc3VidHJhaGVuZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBRdWFudGl0eS5mcm9tKFxuICAgICAgbWludWVuZC51bml0LFxuICAgICAgbWludWVuZC52YWx1ZSAtIHRoaXMuY29udmVydFRvVW5pdChzdWJ0cmFoZW5kLCBtaW51ZW5kLnVuaXQpLnZhbHVlXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJ0cmFjdHMgYSBxdWFudGl0eSBmcm9tIGFub3RoZXIgcXVhbnRpdHkgYW5kIHJldHVybnMgYSBxdWFudGl0eS5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogUXVhbnRpdHkoMTAsJ2tnJykgKyBRdWFudGl0eSg1MDAsJ2cnKSA9IFF1YW50aXR5KDEwLjUsICdrZycpXG4gICAqXG4gICAqIEBwYXJhbSBsZWZ0XG4gICAqIEBwYXJhbSByaWdodFxuICAgKi9cbiAgcHVibGljIGFkZChsZWZ0OiBRdWFudGl0eSwgcmlnaHQ6IFF1YW50aXR5KTogUXVhbnRpdHkge1xuICAgIGlmICghbGVmdCB8fCAhcmlnaHQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gUXVhbnRpdHkuZnJvbShcbiAgICAgIGxlZnQudW5pdCxcbiAgICAgIGxlZnQudmFsdWUgLSB0aGlzLmNvbnZlcnRUb1VuaXQocmlnaHQsIGxlZnQudW5pdCkudmFsdWVcbiAgICApO1xuICB9XG5cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbWF4IHF1YW50aXR5IG9mIGFuIGFycmF5IG9mIHF1YW50aXRpZXMuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIFF1YW50aXR5KDEwLCAnbScpLCBRdWFudGl0eSgyNTAwLCAnY20nKSwgUXVhbnRpdHkoMC4wMDMsICdrbScpID0gUXVhbnRpdHkoMjUwMCwgJ2NtJylcbiAgICpcbiAgICogQHBhcmFtIHF1YW50aXRpZXNcbiAgICovXG5cbiAgcHVibGljIG1heChxdWFudGl0aWVzOiBRdWFudGl0eVtdKTogUXVhbnRpdHkge1xuXG4gICAgaWYgKCFxdWFudGl0aWVzIHx8IHF1YW50aXRpZXMubGVuZ3RoID09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGhlbHBlcnMgPSBxdWFudGl0aWVzXG4gICAgICAubWFwKHF1YW50aXR5ID0+IDxRdWFudGl0eVdpdGhCYXNlVmFsdWU+e1xuICAgICAgICBvcmlnaW5hbDogcXVhbnRpdHksXG4gICAgICAgIGJhc2VWYWx1ZTogdGhpcy50b0Jhc2VVbml0VmFsdWUocXVhbnRpdHkpXG4gICAgICB9KTtcblxuICAgIGhlbHBlcnMuc29ydCgoYSwgYikgPT4gYi5iYXNlVmFsdWUgLSBhLmJhc2VWYWx1ZSk7XG5cbiAgICByZXR1cm4gaGVscGVyc1swXS5vcmlnaW5hbDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgYSBxdWFudGl0eSB0byBhbm90aGVyIHF1YW50aXR5IG9mIHRoZSBzYW1lIGRpbWVuc2lvbiBieSB0YXJnZXQtU0lcbiAgICpcbiAgICogQHBhcmFtIHF1YW50aXR5XG4gICAqIEBwYXJhbSB0YXJnZXRVbml0XG4gICAqL1xuICBwdWJsaWMgY29udmVydFRvVW5pdChxdWFudGl0eTogUXVhbnRpdHksIHRhcmdldFVuaXQ6IFVuaXQpOiBRdWFudGl0eSB7XG4gICAgaWYgKCFxdWFudGl0eSB8fCAhdGFyZ2V0VW5pdCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHF1YW50aXR5LnVuaXQgPT09IHRhcmdldFVuaXQpIHtcbiAgICAgIHJldHVybiBRdWFudGl0eS5mcm9tKHF1YW50aXR5LnVuaXQsIHF1YW50aXR5LnZhbHVlKTtcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRCYXNlRmFjdG9yID0gdGhpcy51bml0U2VydmljZS5nZXRUb0Jhc2VGYWN0b3IodGFyZ2V0VW5pdCk7XG5cbiAgICBpZiAodGFyZ2V0QmFzZUZhY3RvciA+IDApIHtcbiAgICAgIHJldHVybiBRdWFudGl0eS5mcm9tKFxuICAgICAgICB0YXJnZXRVbml0LFxuICAgICAgICB0aGlzLnRvQmFzZVVuaXRWYWx1ZShxdWFudGl0eSkgLyB0YXJnZXRCYXNlRmFjdG9yXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKCdGYWlsZWQgdG8gY29udmVydCBxdWFudGl0eSB0byB0YXJnZXQgdW5pdDonICsgdGFyZ2V0VW5pdCArICcuIFF1YW50aXR5OiAnLCBxdWFudGl0eSk7XG4gICAgICByZXR1cm4gcXVhbnRpdHk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRvQmFzZVVuaXRWYWx1ZShxdWFudGl0eTogUXVhbnRpdHkpOiBudW1iZXIge1xuICAgIGNvbnN0IHRhcmdldEJhc2VGYWN0b3IgPSB0aGlzLnVuaXRTZXJ2aWNlLmdldFRvQmFzZUZhY3RvcihxdWFudGl0eS51bml0KTtcbiAgICByZXR1cm4gcXVhbnRpdHkudmFsdWUgKiB0YXJnZXRCYXNlRmFjdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBxdWFudGl0eSBpbiBhIG5vcm1hbGl6ZWQgZm9ybS5cbiAgICogQSBjYWNoZSBpcyB1c2VkIHRvIHJlZHVjZSBjYWxjdWxhdGlvbnMuXG4gICAqXG4gICAqIDg1MDAga2cgLT4gOC41IHRcbiAgICogOTAwMDAwMCBtbSAtPiA5IGttXG4gICAqIDEyMTUgbSAtPiAxLjIga21cbiAgICpcbiAgICogQHBhcmFtIHF1YW50aXR5XG4gICAqL1xuICBwdWJsaWMgbm9ybWFsaXplKHF1YW50aXR5OiBRdWFudGl0eSk6IFF1YW50aXR5IHtcblxuICAgIC8vIENoZWNrIGNhY2hlXG4gICAgY29uc3QgY2FjaGVkSXRlbSA9IHRoaXMuY2FjaGVMb29rdXAocXVhbnRpdHkpO1xuXG4gICAgLy8gVmFsdWUgaXMgaW4gY2FjaGVcbiAgICBpZiAoY2FjaGVkSXRlbSkge1xuICAgICAgcmV0dXJuIGNhY2hlZEl0ZW07XG4gICAgfSBlbHNlIHtcblxuICAgICAgY29uc3QgdGFyZ2V0UXVhbnRpdHkgPSB0aGlzLm5vcm1hbGl6ZUludGVybmFsKHF1YW50aXR5KTtcblxuICAgICAgLy8gVXBkYXRlIGNhY2hlXG4gICAgICB0aGlzLmNhY2hlVXBkYXRlKHF1YW50aXR5LCB0YXJnZXRRdWFudGl0eSk7XG5cbiAgICAgIHJldHVybiB0YXJnZXRRdWFudGl0eTtcblxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0cmFuc2Zvcm1RdWFudGl0eShcbiAgICBxdWFudGl0eTogUXVhbnRpdHksXG4gICAgbm9ybWFsaXplOiBib29sZWFuID0gdHJ1ZSxcbiAgICB0YXJnZXRVbml0PzogVW5pdCB8IHN0cmluZ1xuICApOiBRdWFudGl0eSB7XG5cbiAgICBpZiAoIXF1YW50aXR5KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemUocXVhbnRpdHkpO1xuICAgIH0gZWxzZSBpZiAodGFyZ2V0VW5pdCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRvVW5pdChxdWFudGl0eSwgPFVuaXQ+dGFyZ2V0VW5pdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBxdWFudGl0eTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0UXVhbnRpdHkoXG4gICAgcXVhbnRpdHk6IFF1YW50aXR5LFxuICAgIGxvY2FsZTogc3RyaW5nLFxuICAgIG5vcm1hbGl6ZT86IGJvb2xlYW4gfCBRdWFudGl0eVBpcGVPcHRpb25zLFxuICAgIHRhcmdldFVuaXQ/OiBVbml0IHwgc3RyaW5nLFxuICAgIGRpZ2l0c0luZm8/OiBzdHJpbmdcbiAgKTogc3RyaW5nIHtcbiAgICBkaWdpdHNJbmZvIHx8PSBFbGRlclF1YW50aXR5U2VydmljZS5ERUZBVUxUX0RJR0lUUztcblxuICAgIGlmICghcXVhbnRpdHkpIHtcbiAgICAgIHJldHVybiBFbGRlclF1YW50aXR5U2VydmljZS5FTVBUWV9TVFJJTkc7XG4gICAgfVxuICAgIGNvbnN0IHVzZXJPcHRpb25zID0gRWxkZXJRdWFudGl0eVNlcnZpY2UuZGV0ZXJtaW5lVXNlck9wdGlvbnMobm9ybWFsaXplLCB0YXJnZXRVbml0LCBkaWdpdHNJbmZvKTtcblxuICAgIGNvbnN0IHF1YW50aXR5VG9EaXNwbGF5OiBRdWFudGl0eSA9IHRoaXMudHJhbnNmb3JtUXVhbnRpdHkoXG4gICAgICBxdWFudGl0eSxcbiAgICAgIHVzZXJPcHRpb25zLm5vcm1hbGl6ZSxcbiAgICAgIHVzZXJPcHRpb25zLnRhcmdldFVuaXRcbiAgICApO1xuICAgIGNvbnN0IG51bWJlciA9IHRoaXMuc3RyVG9OdW1iZXIocXVhbnRpdHlUb0Rpc3BsYXkudmFsdWUpO1xuICAgIGNvbnN0IHN1ZmZpeCA9IHRoaXMuZGV0ZXJtaW5lU3VmZml4KHVzZXJPcHRpb25zLCBxdWFudGl0eVRvRGlzcGxheSk7XG4gICAgcmV0dXJuIGZvcm1hdE51bWJlcihudW1iZXIsIGxvY2FsZSwgdXNlck9wdGlvbnMuZGlnaXRzSW5mbykgKyBzdWZmaXg7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBNZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIG5vcm1hbGl6ZUludGVybmFsKHF1YW50aXR5OiBRdWFudGl0eSk6IFF1YW50aXR5IHtcblxuICAgIC8vIEdpdmVuIHF1YW50aXR5IHZhbHVlIGluIGJhc2UgdW5pdFxuXG4gICAgY29uc3QgZGltZW5zaW9uID0gdGhpcy51bml0U2VydmljZS5nZXRVbml0RGltZW5zaW9uKHF1YW50aXR5LnVuaXQpO1xuXG4gICAgaWYgKCFkaW1lbnNpb24pIHsgcmV0dXJuIHF1YW50aXR5OyB9XG5cbiAgICBjb25zdCBiYXNlVmFsdWUgPSB0aGlzLnRvQmFzZVVuaXRWYWx1ZShxdWFudGl0eSk7XG5cbiAgICBsZXQgc3VpdGFibGVVbml0OiBVbml0SW5mbztcblxuICAgIGNvbnN0IGRpbWVuc2lvblVuaXRzID0gdGhpcy51bml0U2VydmljZS5nZXRVbml0SW5mb3NCeURpbWVuc2lvbihkaW1lbnNpb24pO1xuXG4gICAgaWYgKGRpbWVuc2lvblVuaXRzKSB7XG5cbiAgICAgIGNvbnN0IGZhY3RvclNvcnRlZFVuaXRzID0gZGltZW5zaW9uVW5pdHMuc29ydCgoYSwgYikgPT4gYi50b0Jhc2VGYWN0b3IgLSBhLnRvQmFzZUZhY3Rvcik7XG5cbiAgICAgIGZvciAoY29uc3QgdW5pdEluZm8gb2YgZmFjdG9yU29ydGVkVW5pdHMpIHtcbiAgICAgICAgY29uc3Qgc2lnbmVkQmFzZVZhbHVlID0gKChiYXNlVmFsdWUgPCAwKSA/IGJhc2VWYWx1ZSAqIC0xIDogYmFzZVZhbHVlKTtcbiAgICAgICAgaWYgKHVuaXRJbmZvLnRvQmFzZUZhY3RvciA8PSBzaWduZWRCYXNlVmFsdWUpIHtcbiAgICAgICAgICBzdWl0YWJsZVVuaXQgPSB1bml0SW5mbztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnQ291bGQgbm90IGZpbmQgRGltZW5zaW9uIGluZm8gZm9yICcgKyBkaW1lbnNpb24gKyAnLiAoJyArIHF1YW50aXR5LnVuaXQgKyAnIC0tPiAnICsgZGltZW5zaW9uICsgJyknKTtcbiAgICB9XG5cbiAgICBpZiAoIXN1aXRhYmxlVW5pdCkge1xuICAgICAgcmV0dXJuIHF1YW50aXR5O1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRUb0Jhc2UgPSB0aGlzLnVuaXRTZXJ2aWNlLmdldFRvQmFzZUZhY3RvcihxdWFudGl0eS51bml0KTtcblxuICAgIC8vIEVuc3VyZSB3ZSBwcmVmZXIgdGhlIGluaXRpYWwgdW5pdCBpZiB0aGUgYWN0dWFsIHZhbHVlIGlzIG5vdCBhZmZlY3RlZC5cbiAgICAvLyBUaGlzIGhlbHBzIHRvIGJlIGNvbnNpc3RlbnQgYW5kIGRpc3BsYXkgdGhlIGFjdHVhbCB1bml0IGluIHJhcmUgY2FzZXMgd2hlbiBtdWx0aXBsZSB1bml0IGFsdGVybmF0aXZlcyBleGlzdCAoc2FtZSBmYWN0b3IpXG4gICAgaWYgKHN1aXRhYmxlVW5pdC50b0Jhc2VGYWN0b3IgPT09IGN1cnJlbnRUb0Jhc2UpIHtcbiAgICAgIHJldHVybiBxdWFudGl0eTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRvVW5pdChxdWFudGl0eSwgc3VpdGFibGVVbml0LnVuaXQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UXVhbnRpdHlJZGVudGlmaWVyKHF1YW50aXR5OiBRdWFudGl0eSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHF1YW50aXR5LnZhbHVlICsgJy0nICsgcXVhbnRpdHkudW5pdDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEFkYXB0ZWQgZnJvbSBAYW5ndWxhci9jb21tb24gbnVtYmVyX3BpcGUudHNcbiAgICovXG4gIHByaXZhdGUgc3RyVG9OdW1iZXIodmFsdWU6IG51bWJlciB8IHN0cmluZyk6IG51bWJlciB7XG4gICAgLy8gQ29udmVydCBzdHJpbmdzIHRvIG51bWJlcnNcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhaXNOYU4oTnVtYmVyKHZhbHVlKSAtIHBhcnNlRmxvYXQodmFsdWUpKSkge1xuICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZSk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dmFsdWV9IGlzIG5vdCBhIG51bWJlcmApO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBkZXRlcm1pbmVVc2VyT3B0aW9ucyhcbiAgICBub3JtYWxpemU6IGJvb2xlYW4gfCBRdWFudGl0eVBpcGVPcHRpb25zLFxuICAgIHRhcmdldFVuaXQ6IFVuaXQgfCBzdHJpbmcsXG4gICAgZGlnaXRzSW5mbzogc3RyaW5nXG4gICk6IFF1YW50aXR5UGlwZU9wdGlvbnMge1xuICAgIGNvbnN0IHVzZXJPcHRpb25zID0gKG5vcm1hbGl6ZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBub3JtYWxpemUgPT09ICdib29sZWFuJylcbiAgICAgID8gPFF1YW50aXR5UGlwZU9wdGlvbnM+e1xuICAgICAgICBub3JtYWxpemU6IG5vcm1hbGl6ZSxcbiAgICAgICAgdGFyZ2V0VW5pdDogdGFyZ2V0VW5pdCxcbiAgICAgICAgZGlnaXRzSW5mbzogZGlnaXRzSW5mb1xuICAgICAgfVxuICAgICAgOiBub3JtYWxpemU7XG5cbiAgICBpZiAodXNlck9wdGlvbnMubm9ybWFsaXplID09PSB1bmRlZmluZWQgJiYgIXVzZXJPcHRpb25zLnRhcmdldFVuaXQpIHtcbiAgICAgIHVzZXJPcHRpb25zLm5vcm1hbGl6ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHVzZXJPcHRpb25zLmRpZ2l0c0luZm8gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdXNlck9wdGlvbnMuZGlnaXRzSW5mbyA9IEVsZGVyUXVhbnRpdHlTZXJ2aWNlLkRFRkFVTFRfRElHSVRTO1xuICAgIH1cbiAgICByZXR1cm4gdXNlck9wdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGRldGVybWluZVN1ZmZpeCh1c2VyT3B0aW9uczogUXVhbnRpdHlQaXBlT3B0aW9ucywgcXVhbnRpdHlUb0Rpc3BsYXk6IFF1YW50aXR5KSB7XG4gICAgaWYgKCF1c2VyT3B0aW9ucy5oaWRlVW5pdCkge1xuICAgICAgcmV0dXJuIEVsZGVyUXVhbnRpdHlTZXJ2aWNlLlNQQUNFX1NUUklORyArIHRoaXMudW5pdFNlcnZpY2UuZ2V0VW5pdFN5bWJvbChxdWFudGl0eVRvRGlzcGxheS51bml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
@@ -137,10 +137,10 @@ export class ElderBreadCrumbsComponent {
137
137
  }
138
138
  return nodes;
139
139
  }
140
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ElderBreadCrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
141
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: ElderBreadCrumbsComponent, isStandalone: true, selector: "elder-bread-crumbs", inputs: { root: "root", rootTranslation: "rootTranslation", rootIcon: "rootIcon", backgroundColor: "backgroundColor", editModeEnabled: "editModeEnabled", path: "path" }, outputs: { pathChange: "pathChange" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<!-- main container-->\n<div class=\"layout-row place-start-center full breadcrumb-bar\"\n [style.background-color]=\"backgroundColor\"\n *ngIf=\"{enabled: editMode$ | async} as editMode\"\n>\n\n <!-- path container -->\n <form #breadCrumbForm=\"ngForm\"\n class=\"layout-row place-start-center flex breadcrumb-path\"\n (click)=\"enableEditMode()\"\n >\n <!-- path edit control (if editMode:enabled) -->\n <mat-form-field class=\"flex\" *ngIf=\"editMode.enabled\" elderDense >\n {{ pathInput.focus() }}\n <input matInput type=\"text\" name=\"pathInput\" #pathInput\n [ngModel]=\"path\" (ngModelChange)=\"onPathInputChange($event)\"\n (blur)=\"onPathEditBlur($event)\"\n elderKeyEvent [elderKeyEventFilter]=\"'Enter'\" (onElderKeyEvent)=\"onEnter()\">\n </mat-form-field>\n\n <!-- navigation control (if editMode:disabled) -->\n <ng-container *ngIf=\"!editMode.enabled\">\n <div class=\"layout-row place-center-center flex-none\"\n *ngFor=\"let node of nodes$ | async;let isFirst = first;let isLast = last\">\n\n <!-- arrow right icon as path element delimiter -->\n <mat-icon *ngIf=\"!isFirst\" class=\"noselect breadcrumb-arrow\">keyboard_arrow_right</mat-icon>\n\n <!-- root element (case root icon) -->\n <a *ngIf=\"isFirst && rootIcon\"\n mat-icon-button class=\"breadcrumb\"\n (click)=\"goToPath(node)\" elderStopEventPropagation\n >\n <mat-icon>{{rootIcon}}</mat-icon>\n </a>\n\n <!-- intermediate elements (not last and (not first or root icon)) -->\n <a *ngIf=\"!isLast && (!isFirst || !rootIcon)\"\n mat-button class=\"breadcrumb\"\n (click)=\"goToPath(node)\" elderStopEventPropagation\n >\n <span>{{node.name}}</span>\n </a>\n\n <!-- last element (is last and (not first or root icon)) -->\n <a mat-button class=\"breadcrumb\" *ngIf=\"isLast && (!isFirst || !rootIcon)\"\n (click)=\"null\" elderStopEventPropagation\n >\n {{node.name}}\n <mat-icon>arrow_drop_down</mat-icon>\n </a>\n\n </div>\n </ng-container>\n\n </form>\n\n <!-- bread crumb action menu button -->\n <button mat-icon-button type=\"button\" [matMenuTriggerFor]=\"menu\">\n\n <mat-icon style=\"font-size: 22px\">arrow_drop_down</mat-icon>\n\n <mat-menu #menu=\"matMenu\">\n\n <button mat-menu-item type=\"button\" [elderClipboardPut]=\"path\">\n <mat-icon>content_copy</mat-icon>\n <span>{{'Pfad kopieren'}}</span>\n </button>\n\n <button mat-menu-item type=\"button\" (click)=\"onMenuEditPathClick($event)\" elderStopEventPropagation>\n <mat-icon *ngIf=\"!editMode.enabled\">edit</mat-icon>\n <mat-icon *ngIf=\"editMode.enabled\">done</mat-icon>\n <span *ngIf=\"!editMode.enabled\">{{'Pfad editieren'}}</span>\n <span *ngIf=\"editMode.enabled\">{{'Pfad best\u00E4tigen'}}</span>\n </button>\n\n </mat-menu>\n\n </button>\n</div>\n\n\n", styles: [".breadcrumb-path{padding:0 8px}.breadcrumb{padding-left:4px;padding-right:4px;font-size:18px;font-weight:400}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: ElderKeyEventDirective, selector: "[elderKeyEvent]", inputs: ["elderKeyEventFilter", "elderKeyEventDown", "elderKeyEventChildren", "elderKeyEventCallback"], outputs: ["onElderKeyEvent"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "component", type: MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: ElderClipboardPutDirective, selector: "[elderClipboardPut]", inputs: ["elderClipboardPut"], outputs: ["clipboardCopied"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
140
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderBreadCrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
141
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ElderBreadCrumbsComponent, isStandalone: true, selector: "elder-bread-crumbs", inputs: { root: "root", rootTranslation: "rootTranslation", rootIcon: "rootIcon", backgroundColor: "backgroundColor", editModeEnabled: "editModeEnabled", path: "path" }, outputs: { pathChange: "pathChange" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<!-- main container-->\n<div class=\"layout-row place-start-center full breadcrumb-bar\"\n [style.background-color]=\"backgroundColor\"\n *ngIf=\"{enabled: editMode$ | async} as editMode\"\n>\n\n <!-- path container -->\n <form #breadCrumbForm=\"ngForm\"\n class=\"layout-row place-start-center flex breadcrumb-path\"\n (click)=\"enableEditMode()\"\n >\n <!-- path edit control (if editMode:enabled) -->\n <mat-form-field class=\"flex\" *ngIf=\"editMode.enabled\" elderDense >\n {{ pathInput.focus() }}\n <input matInput type=\"text\" name=\"pathInput\" #pathInput\n [ngModel]=\"path\" (ngModelChange)=\"onPathInputChange($event)\"\n (blur)=\"onPathEditBlur($event)\"\n elderKeyEvent [elderKeyEventFilter]=\"'Enter'\" (onElderKeyEvent)=\"onEnter()\">\n </mat-form-field>\n\n <!-- navigation control (if editMode:disabled) -->\n <ng-container *ngIf=\"!editMode.enabled\">\n <div class=\"layout-row place-center-center flex-none\"\n *ngFor=\"let node of nodes$ | async;let isFirst = first;let isLast = last\">\n\n <!-- arrow right icon as path element delimiter -->\n <mat-icon *ngIf=\"!isFirst\" class=\"noselect breadcrumb-arrow\">keyboard_arrow_right</mat-icon>\n\n <!-- root element (case root icon) -->\n <a *ngIf=\"isFirst && rootIcon\"\n mat-icon-button class=\"breadcrumb\"\n (click)=\"goToPath(node)\" elderStopEventPropagation\n >\n <mat-icon>{{rootIcon}}</mat-icon>\n </a>\n\n <!-- intermediate elements (not last and (not first or root icon)) -->\n <a *ngIf=\"!isLast && (!isFirst || !rootIcon)\"\n mat-button class=\"breadcrumb\"\n (click)=\"goToPath(node)\" elderStopEventPropagation\n >\n <span>{{node.name}}</span>\n </a>\n\n <!-- last element (is last and (not first or root icon)) -->\n <a mat-button class=\"breadcrumb\" *ngIf=\"isLast && (!isFirst || !rootIcon)\"\n (click)=\"null\" elderStopEventPropagation\n >\n {{node.name}}\n <mat-icon>arrow_drop_down</mat-icon>\n </a>\n\n </div>\n </ng-container>\n\n </form>\n\n <!-- bread crumb action menu button -->\n <button mat-icon-button type=\"button\" [matMenuTriggerFor]=\"menu\">\n\n <mat-icon style=\"font-size: 22px\">arrow_drop_down</mat-icon>\n\n <mat-menu #menu=\"matMenu\">\n\n <button mat-menu-item type=\"button\" [elderClipboardPut]=\"path\">\n <mat-icon>content_copy</mat-icon>\n <span>{{'Pfad kopieren'}}</span>\n </button>\n\n <button mat-menu-item type=\"button\" (click)=\"onMenuEditPathClick($event)\" elderStopEventPropagation>\n <mat-icon *ngIf=\"!editMode.enabled\">edit</mat-icon>\n <mat-icon *ngIf=\"editMode.enabled\">done</mat-icon>\n <span *ngIf=\"!editMode.enabled\">{{'Pfad editieren'}}</span>\n <span *ngIf=\"editMode.enabled\">{{'Pfad best\u00E4tigen'}}</span>\n </button>\n\n </mat-menu>\n\n </button>\n</div>\n\n\n", styles: [".breadcrumb-path{padding:0 8px}.breadcrumb{padding-left:4px;padding-right:4px;font-size:18px;font-weight:400}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: ElderKeyEventDirective, selector: "[elderKeyEvent]", inputs: ["elderKeyEventFilter", "elderKeyEventDown", "elderKeyEventChildren", "elderKeyEventCallback"], outputs: ["onElderKeyEvent"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "component", type: MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: ElderClipboardPutDirective, selector: "[elderClipboardPut]", inputs: ["elderClipboardPut"], outputs: ["clipboardCopied"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
142
142
  }
143
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ElderBreadCrumbsComponent, decorators: [{
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderBreadCrumbsComponent, decorators: [{
144
144
  type: Component,
145
145
  args: [{ selector: 'elder-bread-crumbs', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, FormsModule, MatFormField, ElderFormFieldDenseDirective, MatInput, ElderKeyEventDirective, NgFor, MatIcon, MatIconAnchor, ElderStopEventPropagationDirective, MatAnchor, MatIconButton, MatMenuTrigger, MatMenu, MatMenuItem, ElderClipboardPutDirective, AsyncPipe], template: "<!-- main container-->\n<div class=\"layout-row place-start-center full breadcrumb-bar\"\n [style.background-color]=\"backgroundColor\"\n *ngIf=\"{enabled: editMode$ | async} as editMode\"\n>\n\n <!-- path container -->\n <form #breadCrumbForm=\"ngForm\"\n class=\"layout-row place-start-center flex breadcrumb-path\"\n (click)=\"enableEditMode()\"\n >\n <!-- path edit control (if editMode:enabled) -->\n <mat-form-field class=\"flex\" *ngIf=\"editMode.enabled\" elderDense >\n {{ pathInput.focus() }}\n <input matInput type=\"text\" name=\"pathInput\" #pathInput\n [ngModel]=\"path\" (ngModelChange)=\"onPathInputChange($event)\"\n (blur)=\"onPathEditBlur($event)\"\n elderKeyEvent [elderKeyEventFilter]=\"'Enter'\" (onElderKeyEvent)=\"onEnter()\">\n </mat-form-field>\n\n <!-- navigation control (if editMode:disabled) -->\n <ng-container *ngIf=\"!editMode.enabled\">\n <div class=\"layout-row place-center-center flex-none\"\n *ngFor=\"let node of nodes$ | async;let isFirst = first;let isLast = last\">\n\n <!-- arrow right icon as path element delimiter -->\n <mat-icon *ngIf=\"!isFirst\" class=\"noselect breadcrumb-arrow\">keyboard_arrow_right</mat-icon>\n\n <!-- root element (case root icon) -->\n <a *ngIf=\"isFirst && rootIcon\"\n mat-icon-button class=\"breadcrumb\"\n (click)=\"goToPath(node)\" elderStopEventPropagation\n >\n <mat-icon>{{rootIcon}}</mat-icon>\n </a>\n\n <!-- intermediate elements (not last and (not first or root icon)) -->\n <a *ngIf=\"!isLast && (!isFirst || !rootIcon)\"\n mat-button class=\"breadcrumb\"\n (click)=\"goToPath(node)\" elderStopEventPropagation\n >\n <span>{{node.name}}</span>\n </a>\n\n <!-- last element (is last and (not first or root icon)) -->\n <a mat-button class=\"breadcrumb\" *ngIf=\"isLast && (!isFirst || !rootIcon)\"\n (click)=\"null\" elderStopEventPropagation\n >\n {{node.name}}\n <mat-icon>arrow_drop_down</mat-icon>\n </a>\n\n </div>\n </ng-container>\n\n </form>\n\n <!-- bread crumb action menu button -->\n <button mat-icon-button type=\"button\" [matMenuTriggerFor]=\"menu\">\n\n <mat-icon style=\"font-size: 22px\">arrow_drop_down</mat-icon>\n\n <mat-menu #menu=\"matMenu\">\n\n <button mat-menu-item type=\"button\" [elderClipboardPut]=\"path\">\n <mat-icon>content_copy</mat-icon>\n <span>{{'Pfad kopieren'}}</span>\n </button>\n\n <button mat-menu-item type=\"button\" (click)=\"onMenuEditPathClick($event)\" elderStopEventPropagation>\n <mat-icon *ngIf=\"!editMode.enabled\">edit</mat-icon>\n <mat-icon *ngIf=\"editMode.enabled\">done</mat-icon>\n <span *ngIf=\"!editMode.enabled\">{{'Pfad editieren'}}</span>\n <span *ngIf=\"editMode.enabled\">{{'Pfad best\u00E4tigen'}}</span>\n </button>\n\n </mat-menu>\n\n </button>\n</div>\n\n\n", styles: [".breadcrumb-path{padding:0 8px}.breadcrumb{padding-left:4px;padding-right:4px;font-size:18px;font-weight:400}\n"] }]
146
146
  }], ctorParameters: () => [], propDecorators: { pathChange: [{
@@ -161,4 +161,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
161
161
  }], path: [{
162
162
  type: Input
163
163
  }] } });
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItYnJlYWQtY3J1bWJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9icmVhZC1jcnVtYnMvYnJlYWQtY3J1bWJzL2VsZGVyLWJyZWFkLWNydW1icy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL25hdmlnYXRpb24vYnJlYWQtY3J1bWJzL2JyZWFkLWNydW1icy9lbGRlci1icmVhZC1jcnVtYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDNUUsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDbkcsT0FBTyxFQUFDLGtDQUFrQyxFQUFDLE1BQU0sa0VBQWtFLENBQUM7QUFDcEgsT0FBTyxFQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFDLE1BQU0s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QUFhLHFHQUFFLGtDQUFrQyx3RUFBRSxTQUFTLGlLQUFFLGFBQWEsNkZBQUUsY0FBYyxxU0FBRSxPQUFPLDJRQUFFLFdBQVcsc0lBQUUsMEJBQTBCLHdIQUFFLFNBQVM7OzJGQUUxUSx5QkFBeUI7a0JBUnJDLFNBQVM7K0JBQ0ksb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsNEJBQTRCLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGtDQUFrQyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsMEJBQTBCLEVBQUUsU0FBUyxDQUFDO3dEQXFCdFEsVUFBVTtzQkFEekIsTUFBTTtnQkFJQSxJQUFJO3NCQURWLEtBQUs7Z0JBSUMsZUFBZTtzQkFEckIsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsZUFBZTtzQkFEckIsS0FBSztnQkFJQyxPQUFPO3NCQURiLFNBQVM7dUJBQUMsY0FBYztnQkE2Q2QsZUFBZTtzQkFEekIsS0FBSztnQkFVSyxJQUFJO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7UGF0aE5vZGV9IGZyb20gJy4uL3BhdGgvcGF0aCc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtNYXRNZW51VHJpZ2dlciwgTWF0TWVudSwgTWF0TWVudUl0ZW19IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHtFbGRlckNsaXBib2FyZFB1dERpcmVjdGl2ZX0gZnJvbSAnLi4vLi4vLi4vZm9ybXMvZGlyZWN0aXZlcy9lbGRlci1jbGlwYm9hcmQtcHV0LmRpcmVjdGl2ZSc7XG5pbXBvcnQge0VsZGVyU3RvcEV2ZW50UHJvcGFnYXRpb25EaXJlY3RpdmV9IGZyb20gJy4uLy4uLy4uL2Zvcm1zL2RpcmVjdGl2ZXMvZWxkZXItc3RvcC1ldmVudC1wcm9wYWdhdGlvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHtNYXRJY29uQW5jaG9yLCBNYXRBbmNob3IsIE1hdEljb25CdXR0b259IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge01hdEljb259IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtFbGRlcktleUV2ZW50RGlyZWN0aXZlfSBmcm9tICcuLi8uLi8uLi9mb3Jtcy9kaXJlY3RpdmVzL2VsZGVyLWtleS1ldmVudC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtNYXRJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHtFbGRlckZvcm1GaWVsZERlbnNlRGlyZWN0aXZlfSBmcm9tICcuLi8uLi8uLi9mb3Jtcy9kaXJlY3RpdmVzL2VsZGVyLWZvcm0tZmllbGQtZGVuc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7TWF0Rm9ybUZpZWxkfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TmdJZiwgTmdGb3IsIEFzeW5jUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlbGRlci1icmVhZC1jcnVtYnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lbGRlci1icmVhZC1jcnVtYnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2VsZGVyLWJyZWFkLWNydW1icy5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWYsIEZvcm1zTW9kdWxlLCBNYXRGb3JtRmllbGQsIEVsZGVyRm9ybUZpZWxkRGVuc2VEaXJlY3RpdmUsIE1hdElucHV0LCBFbGRlcktleUV2ZW50RGlyZWN0aXZlLCBOZ0ZvciwgTWF0SWNvbiwgTWF0SWNvbkFuY2hvciwgRWxkZXJTdG9wRXZlbnRQcm9wYWdhdGlvbkRpcmVjdGl2ZSwgTWF0QW5jaG9yLCBNYXRJY29uQnV0dG9uLCBNYXRNZW51VHJpZ2dlciwgTWF0TWVudSwgTWF0TWVudUl0ZW0sIEVsZGVyQ2xpcGJvYXJkUHV0RGlyZWN0aXZlLCBBc3luY1BpcGVdXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyQnJlYWRDcnVtYnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIF9wYXRoOiBzdHJpbmc7XG5cbiAgcHVibGljIHJlYWRvbmx5IGVkaXRNb2RlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhdGhJbnB1dENoYW5nZWQkOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBwYXRoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJvb3QgPSAnLyc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJvb3RUcmFuc2xhdGlvbjogc3RyaW5nID0gbnVsbDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcm9vdEljb246IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZChNYXRNZW51VHJpZ2dlcilcbiAgcHVibGljIHRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyO1xuXG4gIHB1YmxpYyByZWFkb25seSBub2RlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBhdGhOb2RlW10+KFtdKTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuXG4gICAgdGhpcy5fcGF0aElucHV0Q2hhbmdlZCQucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCAvLyBvbmx5IGVtaXQgaWYgdmFsdWUgaXMgZGlmZmVyZW50IGZyb20gcHJldmlvdXMgdmFsdWVcbiAgICAgIGRlYm91bmNlVGltZSgyNTApLFxuICAgICkuc3Vic2NyaWJlKFxuICAgICAgdmFsdWUgPT4ge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKHZhbHVlKTtcbiAgICAgICAgdGhpcy5wYXRoQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fdW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuX3Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGVkaXRNb2RlRW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZWRpdE1vZGUkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldCBlZGl0TW9kZUVuYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdE1vZGUkLmdldFZhbHVlKCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHBhdGgocGF0aDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuX3BhdGggIT09IHBhdGgpIHtcbiAgICAgIHRoaXMuX3BhdGggPSBwYXRoO1xuICAgICAgdGhpcy5ub2RlcyQubmV4dCh0aGlzLmJ1aWxkTm9kZXModGhpcy5fcGF0aCkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcm9vdFJhd0Rpc3BsYXkoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJ0cyA9IHRoaXMucm9vdC5zcGxpdCgnLycpO1xuICAgIGNvbnN0IHZhbCA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xuICAgIHJldHVybiB2YWwgPyB2YWwgOiAnSG9tZSc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGF0aDtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBvbkVudGVyKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZUVkaXRNb2RlKCk7XG4gIH1cblxuICBwdWJsaWMgb25QYXRoRWRpdEJsdXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgLy8gdGhpcy5sb2cuZGVidWcoJ2JsdXJyZWQnLCBldmVudCk7XG4gICAgdGhpcy5kaXNhYmxlRWRpdE1vZGUoKTtcbiAgfVxuXG5cbiAgcHVibGljIG9uUGF0aElucHV0Q2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wYXRoSW5wdXRDaGFuZ2VkJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbk1lbnVFZGl0UGF0aENsaWNrKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnRyaWdnZXIuY2xvc2VNZW51KCk7XG4gICAgdGhpcy50b2dnbGVFZGl0TW9kZSgpO1xuICB9XG5cbiAgcHVibGljIGdvVG9Sb290KCkge1xuICAgIHRoaXMuZ29Ub1BhdGgobmV3IFBhdGhOb2RlKHRoaXMucm9vdCwgJycpKTtcbiAgfVxuXG4gIHB1YmxpYyBnb1RvUGF0aChub2RlOiBQYXRoTm9kZSkge1xuICAgIHRoaXMucGF0aCA9IG5vZGUuaWQ7XG4gICAgdGhpcy5wYXRoQ2hhbmdlLm5leHQodGhpcy5fcGF0aCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlRWRpdE1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0TW9kZUVuYWJsZWQgPSAhdGhpcy5lZGl0TW9kZUVuYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlRWRpdE1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0TW9kZUVuYWJsZWQgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGVFZGl0TW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRNb2RlRW5hYmxlZCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblxuICBwcml2YXRlIGJ1aWxkTm9kZXMocGF0aDogc3RyaW5nKTogUGF0aE5vZGVbXSB7XG5cbiAgICBjb25zdCBub2RlczogUGF0aE5vZGVbXSA9IFtdO1xuXG4gICAgbm9kZXMucHVzaChcbiAgICAgIG5ldyBQYXRoTm9kZShcbiAgICAgICAgdGhpcy5yb290LFxuICAgICAgICB0aGlzLnJvb3RUcmFuc2xhdGlvbiA/IHRoaXMucm9vdFRyYW5zbGF0aW9uIDogdGhpcy5yb290UmF3RGlzcGxheVxuICAgICAgKVxuICAgICk7XG5cbiAgICBpZiAocGF0aCkge1xuXG4gICAgICBwYXRoID0gcGF0aC5zdGFydHNXaXRoKHRoaXMucm9vdCkgPyBwYXRoLnN1YnN0cih0aGlzLnJvb3QubGVuZ3RoKSA6IHBhdGg7XG5cbiAgICAgIHRoaXMubG9nLmRlYnVnKCdwYXRoOiAnICsgcGF0aCk7XG5cbiAgICAgIGNvbnN0IHBhcnRzID0gcGF0aC5zcGxpdCgnLycpO1xuXG4gICAgICBsZXQgcGFyZW50ID0gdGhpcy5yb290O1xuXG4gICAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcblxuICAgICAgICBpZiAocGFydC5sZW5ndGggPT09IDApIHsgY29udGludWU7IH1cblxuXG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBwYXJlbnQgPyBwYXJlbnQgKyAnLycgKyBwYXJ0IDogcGFydDtcblxuICAgICAgICBub2Rlcy5wdXNoKG5ldyBQYXRoTm9kZShcbiAgICAgICAgICBjdXJyZW50LFxuICAgICAgICAgIHBhcnRcbiAgICAgICAgKSk7XG5cbiAgICAgICAgcGFyZW50ID0gY3VycmVudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZXM7XG4gIH1cblxuXG59XG4iLCI8IS0tIG1haW4gY29udGFpbmVyLS0+XG48ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1zdGFydC1jZW50ZXIgZnVsbCBicmVhZGNydW1iLWJhclwiXG4gICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImJhY2tncm91bmRDb2xvclwiXG4gICAgICpuZ0lmPVwie2VuYWJsZWQ6IGVkaXRNb2RlJCB8IGFzeW5jfSBhcyBlZGl0TW9kZVwiXG4+XG5cbiAgPCEtLSBwYXRoIGNvbnRhaW5lciAtLT5cbiAgPGZvcm0gI2JyZWFkQ3J1bWJGb3JtPVwibmdGb3JtXCJcbiAgICAgICBjbGFzcz1cImxheW91dC1yb3cgcGxhY2Utc3RhcnQtY2VudGVyIGZsZXggYnJlYWRjcnVtYi1wYXRoXCJcbiAgICAgICAoY2xpY2spPVwiZW5hYmxlRWRpdE1vZGUoKVwiXG4gID5cbiAgICAgIDwhLS0gcGF0aCBlZGl0IGNvbnRyb2wgKGlmIGVkaXRNb2RlOmVuYWJsZWQpIC0tPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZmxleFwiICpuZ0lmPVwiZWRpdE1vZGUuZW5hYmxlZFwiIGVsZGVyRGVuc2UgPlxuICAgICAgICB7eyBwYXRoSW5wdXQuZm9jdXMoKSB9fVxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwicGF0aElucHV0XCIgI3BhdGhJbnB1dFxuICAgICAgICAgICAgICAgW25nTW9kZWxdPVwicGF0aFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uUGF0aElucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgKGJsdXIpPVwib25QYXRoRWRpdEJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICBlbGRlcktleUV2ZW50IFtlbGRlcktleUV2ZW50RmlsdGVyXT1cIidFbnRlcidcIiAob25FbGRlcktleUV2ZW50KT1cIm9uRW50ZXIoKVwiPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPCEtLSBuYXZpZ2F0aW9uIGNvbnRyb2wgKGlmIGVkaXRNb2RlOmRpc2FibGVkKSAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZWRpdE1vZGUuZW5hYmxlZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1jZW50ZXItY2VudGVyIGZsZXgtbm9uZVwiXG4gICAgICAgICAgICAgKm5nRm9yPVwibGV0IG5vZGUgb2Ygbm9kZXMkIHwgYXN5bmM7bGV0IGlzRmlyc3QgPSBmaXJzdDtsZXQgaXNMYXN0ID0gbGFzdFwiPlxuXG4gICAgICAgICAgPCEtLSBhcnJvdyByaWdodCBpY29uIGFzIHBhdGggZWxlbWVudCBkZWxpbWl0ZXIgLS0+XG4gICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWlzRmlyc3RcIiBjbGFzcz1cIm5vc2VsZWN0IGJyZWFkY3J1bWItYXJyb3dcIj5rZXlib2FyZF9hcnJvd19yaWdodDwvbWF0LWljb24+XG5cbiAgICAgICAgICA8IS0tIHJvb3QgZWxlbWVudCAoY2FzZSByb290IGljb24pIC0tPlxuICAgICAgICAgIDxhICpuZ0lmPVwiaXNGaXJzdCAmJiByb290SWNvblwiXG4gICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwiYnJlYWRjcnVtYlwiXG4gICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYXRoKG5vZGUpXCIgZWxkZXJTdG9wRXZlbnRQcm9wYWdhdGlvblxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvbj57e3Jvb3RJY29ufX08L21hdC1pY29uPlxuICAgICAgICAgIDwvYT5cblxuICAgICAgICAgIDwhLS0gaW50ZXJtZWRpYXRlIGVsZW1lbnRzIChub3QgbGFzdCBhbmQgKG5vdCBmaXJzdCBvciByb290IGljb24pKSAtLT5cbiAgICAgICAgICA8YSAqbmdJZj1cIiFpc0xhc3QgJiYgKCFpc0ZpcnN0IHx8ICFyb290SWNvbilcIlxuICAgICAgICAgICAgIG1hdC1idXR0b24gY2xhc3M9XCJicmVhZGNydW1iXCJcbiAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1BhdGgobm9kZSlcIiBlbGRlclN0b3BFdmVudFByb3BhZ2F0aW9uXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4+e3tub2RlLm5hbWV9fTwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG5cbiAgICAgICAgICA8IS0tIGxhc3QgZWxlbWVudCAoaXMgbGFzdCBhbmQgKG5vdCBmaXJzdCBvciByb290IGljb24pKSAtLT5cbiAgICAgICAgICA8YSBtYXQtYnV0dG9uIGNsYXNzPVwiYnJlYWRjcnVtYlwiICpuZ0lmPVwiaXNMYXN0ICYmICghaXNGaXJzdCB8fCAhcm9vdEljb24pXCJcbiAgICAgICAgICAgICAoY2xpY2spPVwibnVsbFwiIGVsZGVyU3RvcEV2ZW50UHJvcGFnYXRpb25cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7e25vZGUubmFtZX19XG4gICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2E+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICA8L2Zvcm0+XG5cbiAgPCEtLSBicmVhZCBjcnVtYiBhY3Rpb24gbWVudSBidXR0b24gLS0+XG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiPlxuXG4gICAgPG1hdC1pY29uIHN0eWxlPVwiZm9udC1zaXplOiAyMnB4XCI+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cblxuICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cblxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHR5cGU9XCJidXR0b25cIiBbZWxkZXJDbGlwYm9hcmRQdXRdPVwicGF0aFwiPlxuICAgICAgICA8bWF0LWljb24+Y29udGVudF9jb3B5PC9tYXQtaWNvbj5cbiAgICAgICAgPHNwYW4+e3snUGZhZCBrb3BpZXJlbid9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbk1lbnVFZGl0UGF0aENsaWNrKCRldmVudClcIiBlbGRlclN0b3BFdmVudFByb3BhZ2F0aW9uPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhZWRpdE1vZGUuZW5hYmxlZFwiPmVkaXQ8L21hdC1pY29uPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJlZGl0TW9kZS5lbmFibGVkXCI+ZG9uZTwvbWF0LWljb24+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWVkaXRNb2RlLmVuYWJsZWRcIj57eydQZmFkIGVkaXRpZXJlbid9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJlZGl0TW9kZS5lbmFibGVkXCI+e3snUGZhZCBiZXN0w6R0aWdlbid9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgPC9tYXQtbWVudT5cblxuICA8L2J1dHRvbj5cbjwvZGl2PlxuXG5cbiJdfQ==
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItYnJlYWQtY3J1bWJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9icmVhZC1jcnVtYnMvYnJlYWQtY3J1bWJzL2VsZGVyLWJyZWFkLWNydW1icy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL25hdmlnYXRpb24vYnJlYWQtY3J1bWJzL2JyZWFkLWNydW1icy9lbGRlci1icmVhZC1jcnVtYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDNUUsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDbkcsT0FBTyxFQUFDLGtDQUFrQyxFQUFDLE1BQU0sa0VBQWtFLENBQUM7QUFDcEgsT0FBTyxFQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFDLE1BQU0s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QUFhLHFHQUFFLGtDQUFrQyx3RUFBRSxTQUFTLGlLQUFFLGFBQWEsNkZBQUUsY0FBYyxxU0FBRSxPQUFPLDJRQUFFLFdBQVcsc0lBQUUsMEJBQTBCLHdIQUFFLFNBQVM7OzRGQUUxUSx5QkFBeUI7a0JBUnJDLFNBQVM7K0JBQ0ksb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsNEJBQTRCLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGtDQUFrQyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsMEJBQTBCLEVBQUUsU0FBUyxDQUFDO3dEQXFCdFEsVUFBVTtzQkFEekIsTUFBTTtnQkFJQSxJQUFJO3NCQURWLEtBQUs7Z0JBSUMsZUFBZTtzQkFEckIsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsZUFBZTtzQkFEckIsS0FBSztnQkFJQyxPQUFPO3NCQURiLFNBQVM7dUJBQUMsY0FBYztnQkE2Q2QsZUFBZTtzQkFEekIsS0FBSztnQkFVSyxJQUFJO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7UGF0aE5vZGV9IGZyb20gJy4uL3BhdGgvcGF0aCc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtNYXRNZW51VHJpZ2dlciwgTWF0TWVudSwgTWF0TWVudUl0ZW19IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHtFbGRlckNsaXBib2FyZFB1dERpcmVjdGl2ZX0gZnJvbSAnLi4vLi4vLi4vZm9ybXMvZGlyZWN0aXZlcy9lbGRlci1jbGlwYm9hcmQtcHV0LmRpcmVjdGl2ZSc7XG5pbXBvcnQge0VsZGVyU3RvcEV2ZW50UHJvcGFnYXRpb25EaXJlY3RpdmV9IGZyb20gJy4uLy4uLy4uL2Zvcm1zL2RpcmVjdGl2ZXMvZWxkZXItc3RvcC1ldmVudC1wcm9wYWdhdGlvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHtNYXRJY29uQW5jaG9yLCBNYXRBbmNob3IsIE1hdEljb25CdXR0b259IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge01hdEljb259IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtFbGRlcktleUV2ZW50RGlyZWN0aXZlfSBmcm9tICcuLi8uLi8uLi9mb3Jtcy9kaXJlY3RpdmVzL2VsZGVyLWtleS1ldmVudC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtNYXRJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHtFbGRlckZvcm1GaWVsZERlbnNlRGlyZWN0aXZlfSBmcm9tICcuLi8uLi8uLi9mb3Jtcy9kaXJlY3RpdmVzL2VsZGVyLWZvcm0tZmllbGQtZGVuc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7TWF0Rm9ybUZpZWxkfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TmdJZiwgTmdGb3IsIEFzeW5jUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlbGRlci1icmVhZC1jcnVtYnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lbGRlci1icmVhZC1jcnVtYnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2VsZGVyLWJyZWFkLWNydW1icy5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWYsIEZvcm1zTW9kdWxlLCBNYXRGb3JtRmllbGQsIEVsZGVyRm9ybUZpZWxkRGVuc2VEaXJlY3RpdmUsIE1hdElucHV0LCBFbGRlcktleUV2ZW50RGlyZWN0aXZlLCBOZ0ZvciwgTWF0SWNvbiwgTWF0SWNvbkFuY2hvciwgRWxkZXJTdG9wRXZlbnRQcm9wYWdhdGlvbkRpcmVjdGl2ZSwgTWF0QW5jaG9yLCBNYXRJY29uQnV0dG9uLCBNYXRNZW51VHJpZ2dlciwgTWF0TWVudSwgTWF0TWVudUl0ZW0sIEVsZGVyQ2xpcGJvYXJkUHV0RGlyZWN0aXZlLCBBc3luY1BpcGVdXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyQnJlYWRDcnVtYnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIF9wYXRoOiBzdHJpbmc7XG5cbiAgcHVibGljIHJlYWRvbmx5IGVkaXRNb2RlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhdGhJbnB1dENoYW5nZWQkOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBwYXRoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJvb3QgPSAnLyc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJvb3RUcmFuc2xhdGlvbjogc3RyaW5nID0gbnVsbDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcm9vdEljb246IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZChNYXRNZW51VHJpZ2dlcilcbiAgcHVibGljIHRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyO1xuXG4gIHB1YmxpYyByZWFkb25seSBub2RlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBhdGhOb2RlW10+KFtdKTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuXG4gICAgdGhpcy5fcGF0aElucHV0Q2hhbmdlZCQucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCAvLyBvbmx5IGVtaXQgaWYgdmFsdWUgaXMgZGlmZmVyZW50IGZyb20gcHJldmlvdXMgdmFsdWVcbiAgICAgIGRlYm91bmNlVGltZSgyNTApLFxuICAgICkuc3Vic2NyaWJlKFxuICAgICAgdmFsdWUgPT4ge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKHZhbHVlKTtcbiAgICAgICAgdGhpcy5wYXRoQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fdW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuX3Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGVkaXRNb2RlRW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZWRpdE1vZGUkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldCBlZGl0TW9kZUVuYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdE1vZGUkLmdldFZhbHVlKCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHBhdGgocGF0aDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuX3BhdGggIT09IHBhdGgpIHtcbiAgICAgIHRoaXMuX3BhdGggPSBwYXRoO1xuICAgICAgdGhpcy5ub2RlcyQubmV4dCh0aGlzLmJ1aWxkTm9kZXModGhpcy5fcGF0aCkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcm9vdFJhd0Rpc3BsYXkoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJ0cyA9IHRoaXMucm9vdC5zcGxpdCgnLycpO1xuICAgIGNvbnN0IHZhbCA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xuICAgIHJldHVybiB2YWwgPyB2YWwgOiAnSG9tZSc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGF0aDtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBvbkVudGVyKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZUVkaXRNb2RlKCk7XG4gIH1cblxuICBwdWJsaWMgb25QYXRoRWRpdEJsdXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgLy8gdGhpcy5sb2cuZGVidWcoJ2JsdXJyZWQnLCBldmVudCk7XG4gICAgdGhpcy5kaXNhYmxlRWRpdE1vZGUoKTtcbiAgfVxuXG5cbiAgcHVibGljIG9uUGF0aElucHV0Q2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wYXRoSW5wdXRDaGFuZ2VkJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbk1lbnVFZGl0UGF0aENsaWNrKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnRyaWdnZXIuY2xvc2VNZW51KCk7XG4gICAgdGhpcy50b2dnbGVFZGl0TW9kZSgpO1xuICB9XG5cbiAgcHVibGljIGdvVG9Sb290KCkge1xuICAgIHRoaXMuZ29Ub1BhdGgobmV3IFBhdGhOb2RlKHRoaXMucm9vdCwgJycpKTtcbiAgfVxuXG4gIHB1YmxpYyBnb1RvUGF0aChub2RlOiBQYXRoTm9kZSkge1xuICAgIHRoaXMucGF0aCA9IG5vZGUuaWQ7XG4gICAgdGhpcy5wYXRoQ2hhbmdlLm5leHQodGhpcy5fcGF0aCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlRWRpdE1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0TW9kZUVuYWJsZWQgPSAhdGhpcy5lZGl0TW9kZUVuYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlRWRpdE1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0TW9kZUVuYWJsZWQgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGVFZGl0TW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRNb2RlRW5hYmxlZCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblxuICBwcml2YXRlIGJ1aWxkTm9kZXMocGF0aDogc3RyaW5nKTogUGF0aE5vZGVbXSB7XG5cbiAgICBjb25zdCBub2RlczogUGF0aE5vZGVbXSA9IFtdO1xuXG4gICAgbm9kZXMucHVzaChcbiAgICAgIG5ldyBQYXRoTm9kZShcbiAgICAgICAgdGhpcy5yb290LFxuICAgICAgICB0aGlzLnJvb3RUcmFuc2xhdGlvbiA/IHRoaXMucm9vdFRyYW5zbGF0aW9uIDogdGhpcy5yb290UmF3RGlzcGxheVxuICAgICAgKVxuICAgICk7XG5cbiAgICBpZiAocGF0aCkge1xuXG4gICAgICBwYXRoID0gcGF0aC5zdGFydHNXaXRoKHRoaXMucm9vdCkgPyBwYXRoLnN1YnN0cih0aGlzLnJvb3QubGVuZ3RoKSA6IHBhdGg7XG5cbiAgICAgIHRoaXMubG9nLmRlYnVnKCdwYXRoOiAnICsgcGF0aCk7XG5cbiAgICAgIGNvbnN0IHBhcnRzID0gcGF0aC5zcGxpdCgnLycpO1xuXG4gICAgICBsZXQgcGFyZW50ID0gdGhpcy5yb290O1xuXG4gICAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcblxuICAgICAgICBpZiAocGFydC5sZW5ndGggPT09IDApIHsgY29udGludWU7IH1cblxuXG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBwYXJlbnQgPyBwYXJlbnQgKyAnLycgKyBwYXJ0IDogcGFydDtcblxuICAgICAgICBub2Rlcy5wdXNoKG5ldyBQYXRoTm9kZShcbiAgICAgICAgICBjdXJyZW50LFxuICAgICAgICAgIHBhcnRcbiAgICAgICAgKSk7XG5cbiAgICAgICAgcGFyZW50ID0gY3VycmVudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZXM7XG4gIH1cblxuXG59XG4iLCI8IS0tIG1haW4gY29udGFpbmVyLS0+XG48ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1zdGFydC1jZW50ZXIgZnVsbCBicmVhZGNydW1iLWJhclwiXG4gICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImJhY2tncm91bmRDb2xvclwiXG4gICAgICpuZ0lmPVwie2VuYWJsZWQ6IGVkaXRNb2RlJCB8IGFzeW5jfSBhcyBlZGl0TW9kZVwiXG4+XG5cbiAgPCEtLSBwYXRoIGNvbnRhaW5lciAtLT5cbiAgPGZvcm0gI2JyZWFkQ3J1bWJGb3JtPVwibmdGb3JtXCJcbiAgICAgICBjbGFzcz1cImxheW91dC1yb3cgcGxhY2Utc3RhcnQtY2VudGVyIGZsZXggYnJlYWRjcnVtYi1wYXRoXCJcbiAgICAgICAoY2xpY2spPVwiZW5hYmxlRWRpdE1vZGUoKVwiXG4gID5cbiAgICAgIDwhLS0gcGF0aCBlZGl0IGNvbnRyb2wgKGlmIGVkaXRNb2RlOmVuYWJsZWQpIC0tPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZmxleFwiICpuZ0lmPVwiZWRpdE1vZGUuZW5hYmxlZFwiIGVsZGVyRGVuc2UgPlxuICAgICAgICB7eyBwYXRoSW5wdXQuZm9jdXMoKSB9fVxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwicGF0aElucHV0XCIgI3BhdGhJbnB1dFxuICAgICAgICAgICAgICAgW25nTW9kZWxdPVwicGF0aFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uUGF0aElucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgKGJsdXIpPVwib25QYXRoRWRpdEJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICBlbGRlcktleUV2ZW50IFtlbGRlcktleUV2ZW50RmlsdGVyXT1cIidFbnRlcidcIiAob25FbGRlcktleUV2ZW50KT1cIm9uRW50ZXIoKVwiPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPCEtLSBuYXZpZ2F0aW9uIGNvbnRyb2wgKGlmIGVkaXRNb2RlOmRpc2FibGVkKSAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZWRpdE1vZGUuZW5hYmxlZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1jZW50ZXItY2VudGVyIGZsZXgtbm9uZVwiXG4gICAgICAgICAgICAgKm5nRm9yPVwibGV0IG5vZGUgb2Ygbm9kZXMkIHwgYXN5bmM7bGV0IGlzRmlyc3QgPSBmaXJzdDtsZXQgaXNMYXN0ID0gbGFzdFwiPlxuXG4gICAgICAgICAgPCEtLSBhcnJvdyByaWdodCBpY29uIGFzIHBhdGggZWxlbWVudCBkZWxpbWl0ZXIgLS0+XG4gICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWlzRmlyc3RcIiBjbGFzcz1cIm5vc2VsZWN0IGJyZWFkY3J1bWItYXJyb3dcIj5rZXlib2FyZF9hcnJvd19yaWdodDwvbWF0LWljb24+XG5cbiAgICAgICAgICA8IS0tIHJvb3QgZWxlbWVudCAoY2FzZSByb290IGljb24pIC0tPlxuICAgICAgICAgIDxhICpuZ0lmPVwiaXNGaXJzdCAmJiByb290SWNvblwiXG4gICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwiYnJlYWRjcnVtYlwiXG4gICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYXRoKG5vZGUpXCIgZWxkZXJTdG9wRXZlbnRQcm9wYWdhdGlvblxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvbj57e3Jvb3RJY29ufX08L21hdC1pY29uPlxuICAgICAgICAgIDwvYT5cblxuICAgICAgICAgIDwhLS0gaW50ZXJtZWRpYXRlIGVsZW1lbnRzIChub3QgbGFzdCBhbmQgKG5vdCBmaXJzdCBvciByb290IGljb24pKSAtLT5cbiAgICAgICAgICA8YSAqbmdJZj1cIiFpc0xhc3QgJiYgKCFpc0ZpcnN0IHx8ICFyb290SWNvbilcIlxuICAgICAgICAgICAgIG1hdC1idXR0b24gY2xhc3M9XCJicmVhZGNydW1iXCJcbiAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1BhdGgobm9kZSlcIiBlbGRlclN0b3BFdmVudFByb3BhZ2F0aW9uXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4+e3tub2RlLm5hbWV9fTwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG5cbiAgICAgICAgICA8IS0tIGxhc3QgZWxlbWVudCAoaXMgbGFzdCBhbmQgKG5vdCBmaXJzdCBvciByb290IGljb24pKSAtLT5cbiAgICAgICAgICA8YSBtYXQtYnV0dG9uIGNsYXNzPVwiYnJlYWRjcnVtYlwiICpuZ0lmPVwiaXNMYXN0ICYmICghaXNGaXJzdCB8fCAhcm9vdEljb24pXCJcbiAgICAgICAgICAgICAoY2xpY2spPVwibnVsbFwiIGVsZGVyU3RvcEV2ZW50UHJvcGFnYXRpb25cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7e25vZGUubmFtZX19XG4gICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2E+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICA8L2Zvcm0+XG5cbiAgPCEtLSBicmVhZCBjcnVtYiBhY3Rpb24gbWVudSBidXR0b24gLS0+XG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiPlxuXG4gICAgPG1hdC1pY29uIHN0eWxlPVwiZm9udC1zaXplOiAyMnB4XCI+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cblxuICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cblxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHR5cGU9XCJidXR0b25cIiBbZWxkZXJDbGlwYm9hcmRQdXRdPVwicGF0aFwiPlxuICAgICAgICA8bWF0LWljb24+Y29udGVudF9jb3B5PC9tYXQtaWNvbj5cbiAgICAgICAgPHNwYW4+e3snUGZhZCBrb3BpZXJlbid9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbk1lbnVFZGl0UGF0aENsaWNrKCRldmVudClcIiBlbGRlclN0b3BFdmVudFByb3BhZ2F0aW9uPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhZWRpdE1vZGUuZW5hYmxlZFwiPmVkaXQ8L21hdC1pY29uPlxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJlZGl0TW9kZS5lbmFibGVkXCI+ZG9uZTwvbWF0LWljb24+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWVkaXRNb2RlLmVuYWJsZWRcIj57eydQZmFkIGVkaXRpZXJlbid9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJlZGl0TW9kZS5lbmFibGVkXCI+e3snUGZhZCBiZXN0w6R0aWdlbid9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgPC9tYXQtbWVudT5cblxuICA8L2J1dHRvbj5cbjwvZGl2PlxuXG5cbiJdfQ==
@@ -13,8 +13,8 @@ import * as i0 from "@angular/core";
13
13
  export * from './bread-crumbs/elder-bread-crumbs.component';
14
14
  export * from './path/path';
15
15
  export class ElderBreadCrumbsModule {
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ElderBreadCrumbsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
17
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.4", ngImport: i0, type: ElderBreadCrumbsModule, imports: [CommonModule, FormsModule, ReactiveFormsModule,
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderBreadCrumbsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
17
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: ElderBreadCrumbsModule, imports: [CommonModule, FormsModule, ReactiveFormsModule,
18
18
  TranslateModule,
19
19
  MatFormFieldModule,
20
20
  MatIconModule,
@@ -23,7 +23,7 @@ export class ElderBreadCrumbsModule {
23
23
  MatMenuModule,
24
24
  ElderFormsDirectivesModule,
25
25
  ElderBreadCrumbsComponent], exports: [ElderBreadCrumbsComponent] }); }
26
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ElderBreadCrumbsModule, imports: [CommonModule, FormsModule, ReactiveFormsModule,
26
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderBreadCrumbsModule, imports: [CommonModule, FormsModule, ReactiveFormsModule,
27
27
  TranslateModule,
28
28
  MatFormFieldModule,
29
29
  MatIconModule,
@@ -33,7 +33,7 @@ export class ElderBreadCrumbsModule {
33
33
  ElderFormsDirectivesModule,
34
34
  ElderBreadCrumbsComponent] }); }
35
35
  }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ElderBreadCrumbsModule, decorators: [{
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderBreadCrumbsModule, decorators: [{
37
37
  type: NgModule,
38
38
  args: [{
39
39
  imports: [
@@ -52,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
52
52
  ]
53
53
  }]
54
54
  }] });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItYnJlYWQtY3J1bWJzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9icmVhZC1jcnVtYnMvZWxkZXItYnJlYWQtY3J1bWJzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBQ2hHLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFckQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLGFBQWEsQ0FBQztBQWtCNUIsTUFBTSxPQUFPLHNCQUFzQjs4R0FBdEIsc0JBQXNCOytHQUF0QixzQkFBc0IsWUFkM0IsWUFBWSxFQUFFLFdBQVcsRUFBRSxtQkFBbUI7WUFDOUMsZUFBZTtZQUNmLGtCQUFrQjtZQUNsQixhQUFhO1lBQ2IsZUFBZTtZQUNmLGNBQWM7WUFDZCxhQUFhO1lBQ2IsMEJBQTBCO1lBQzFCLHlCQUF5QixhQUd6Qix5QkFBeUI7K0dBR3BCLHNCQUFzQixZQWQzQixZQUFZLEVBQUUsV0FBVyxFQUFFLG1CQUFtQjtZQUM5QyxlQUFlO1lBQ2Ysa0JBQWtCO1lBQ2xCLGFBQWE7WUFDYixlQUFlO1lBQ2YsY0FBYztZQUNkLGFBQWE7WUFDYiwwQkFBMEI7WUFDMUIseUJBQXlCOzsyRkFNcEIsc0JBQXNCO2tCQWhCbEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWSxFQUFFLFdBQVcsRUFBRSxtQkFBbUI7d0JBQzlDLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLDBCQUEwQjt3QkFDMUIseUJBQXlCO3FCQUM1QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wseUJBQXlCO3FCQUM1QjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0VsZGVyQnJlYWRDcnVtYnNDb21wb25lbnR9IGZyb20gJy4vYnJlYWQtY3J1bWJzL2VsZGVyLWJyZWFkLWNydW1icy5jb21wb25lbnQnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQge01hdEljb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtNYXRJbnB1dE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtFbGRlckZvcm1zRGlyZWN0aXZlc01vZHVsZX0gZnJvbSAnLi4vLi4vZm9ybXMvZGlyZWN0aXZlcy9lbGRlci1mb3Jtcy1kaXJlY3RpdmVzLm1vZHVsZSc7XG5pbXBvcnQge01hdE1lbnVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2JyZWFkLWNydW1icy9lbGRlci1icmVhZC1jcnVtYnMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcGF0aC9wYXRoJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAgICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBNYXRNZW51TW9kdWxlLFxuICAgICAgICBFbGRlckZvcm1zRGlyZWN0aXZlc01vZHVsZSxcbiAgICAgICAgRWxkZXJCcmVhZENydW1ic0NvbXBvbmVudFxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBFbGRlckJyZWFkQ3J1bWJzQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBFbGRlckJyZWFkQ3J1bWJzTW9kdWxlIHsgfVxuIl19
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItYnJlYWQtY3J1bWJzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9icmVhZC1jcnVtYnMvZWxkZXItYnJlYWQtY3J1bWJzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBQ2hHLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFckQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLGFBQWEsQ0FBQztBQWtCNUIsTUFBTSxPQUFPLHNCQUFzQjsrR0FBdEIsc0JBQXNCO2dIQUF0QixzQkFBc0IsWUFkM0IsWUFBWSxFQUFFLFdBQVcsRUFBRSxtQkFBbUI7WUFDOUMsZUFBZTtZQUNmLGtCQUFrQjtZQUNsQixhQUFhO1lBQ2IsZUFBZTtZQUNmLGNBQWM7WUFDZCxhQUFhO1lBQ2IsMEJBQTBCO1lBQzFCLHlCQUF5QixhQUd6Qix5QkFBeUI7Z0hBR3BCLHNCQUFzQixZQWQzQixZQUFZLEVBQUUsV0FBVyxFQUFFLG1CQUFtQjtZQUM5QyxlQUFlO1lBQ2Ysa0JBQWtCO1lBQ2xCLGFBQWE7WUFDYixlQUFlO1lBQ2YsY0FBYztZQUNkLGFBQWE7WUFDYiwwQkFBMEI7WUFDMUIseUJBQXlCOzs0RkFNcEIsc0JBQXNCO2tCQWhCbEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWSxFQUFFLFdBQVcsRUFBRSxtQkFBbUI7d0JBQzlDLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLDBCQUEwQjt3QkFDMUIseUJBQXlCO3FCQUM1QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wseUJBQXlCO3FCQUM1QjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0VsZGVyQnJlYWRDcnVtYnNDb21wb25lbnR9IGZyb20gJy4vYnJlYWQtY3J1bWJzL2VsZGVyLWJyZWFkLWNydW1icy5jb21wb25lbnQnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQge01hdEljb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtNYXRJbnB1dE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtFbGRlckZvcm1zRGlyZWN0aXZlc01vZHVsZX0gZnJvbSAnLi4vLi4vZm9ybXMvZGlyZWN0aXZlcy9lbGRlci1mb3Jtcy1kaXJlY3RpdmVzLm1vZHVsZSc7XG5pbXBvcnQge01hdE1lbnVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2JyZWFkLWNydW1icy9lbGRlci1icmVhZC1jcnVtYnMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcGF0aC9wYXRoJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAgICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBNYXRNZW51TW9kdWxlLFxuICAgICAgICBFbGRlckZvcm1zRGlyZWN0aXZlc01vZHVsZSxcbiAgICAgICAgRWxkZXJCcmVhZENydW1ic0NvbXBvbmVudFxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBFbGRlckJyZWFkQ3J1bWJzQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBFbGRlckJyZWFkQ3J1bWJzTW9kdWxlIHsgfVxuIl19
@@ -15,8 +15,8 @@ export { ElderNavListComponent } from './nav-list/elder-nav-list.component';
15
15
  export { ElderNavLinkComponent } from './nav-link/elder-nav-link.component';
16
16
  export { ElderNavGroupComponent } from './nav-group/elder-nav-group.component';
17
17
  export class ElderNavModule {
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ElderNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
19
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.4", ngImport: i0, type: ElderNavModule, imports: [CommonModule, RouterModule,
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
19
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: ElderNavModule, imports: [CommonModule, RouterModule,
20
20
  MatIconModule, MatButtonModule,
21
21
  A11yModule,
22
22
  TranslateModule, MatListModule, MatRippleModule,
@@ -25,14 +25,14 @@ export class ElderNavModule {
25
25
  ElderNavGroupComponent], exports: [ElderNavListComponent,
26
26
  ElderNavLinkComponent,
27
27
  ElderNavGroupComponent] }); }
28
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ElderNavModule, imports: [CommonModule, RouterModule,
28
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderNavModule, imports: [CommonModule, RouterModule,
29
29
  MatIconModule, MatButtonModule,
30
30
  A11yModule,
31
31
  TranslateModule, MatListModule, MatRippleModule,
32
32
  ElderNavLinkComponent,
33
33
  ElderNavGroupComponent] }); }
34
34
  }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ElderNavModule, decorators: [{
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderNavModule, decorators: [{
36
36
  type: NgModule,
37
37
  args: [{
38
38
  exports: [
@@ -51,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
51
51
  ]
52
52
  }]
53
53
  }] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItbmF2Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9uYXYvZWxkZXItbmF2Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7O0FBRXZELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBa0I3RSxNQUFNLE9BQU8sY0FBYzs4R0FBZCxjQUFjOytHQUFkLGNBQWMsWUFUbkIsWUFBWSxFQUFFLFlBQVk7WUFDMUIsYUFBYSxFQUFFLGVBQWU7WUFDOUIsVUFBVTtZQUNWLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZTtZQUMvQyxxQkFBcUI7WUFDckIscUJBQXFCO1lBQ3JCLHNCQUFzQixhQVh0QixxQkFBcUI7WUFDckIscUJBQXFCO1lBQ3JCLHNCQUFzQjsrR0FZakIsY0FBYyxZQVRuQixZQUFZLEVBQUUsWUFBWTtZQUMxQixhQUFhLEVBQUUsZUFBZTtZQUM5QixVQUFVO1lBQ1YsZUFBZSxFQUFFLGFBQWEsRUFBRSxlQUFlO1lBRS9DLHFCQUFxQjtZQUNyQixzQkFBc0I7OzJGQUdqQixjQUFjO2tCQWhCMUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wscUJBQXFCO3dCQUNyQixxQkFBcUI7d0JBQ3JCLHNCQUFzQjtxQkFDekI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLFlBQVksRUFBRSxZQUFZO3dCQUMxQixhQUFhLEVBQUUsZUFBZTt3QkFDOUIsVUFBVTt3QkFDVixlQUFlLEVBQUUsYUFBYSxFQUFFLGVBQWU7d0JBQy9DLHFCQUFxQjt3QkFDckIscUJBQXFCO3dCQUNyQixzQkFBc0I7cUJBQ3pCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7RWxkZXJOYXZMaXN0Q29tcG9uZW50fSBmcm9tICcuL25hdi1saXN0L2VsZGVyLW5hdi1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQge0VsZGVyTmF2TGlua0NvbXBvbmVudH0gZnJvbSAnLi9uYXYtbGluay9lbGRlci1uYXYtbGluay5jb21wb25lbnQnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge01hdEljb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtSb3V0ZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0ExMXlNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7RWxkZXJOYXZHcm91cENvbXBvbmVudH0gZnJvbSAnLi9uYXYtZ3JvdXAvZWxkZXItbmF2LWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQge01hdExpc3RNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHtNYXRSaXBwbGVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuXG5leHBvcnQge0VsZGVyTmF2TGlzdENvbXBvbmVudH0gZnJvbSAnLi9uYXYtbGlzdC9lbGRlci1uYXYtbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0IHtFbGRlck5hdkxpbmtDb21wb25lbnR9IGZyb20gJy4vbmF2LWxpbmsvZWxkZXItbmF2LWxpbmsuY29tcG9uZW50JztcbmV4cG9ydCB7RWxkZXJOYXZHcm91cENvbXBvbmVudH0gZnJvbSAnLi9uYXYtZ3JvdXAvZWxkZXItbmF2LWdyb3VwLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgZXhwb3J0czogW1xuICAgICAgICBFbGRlck5hdkxpc3RDb21wb25lbnQsXG4gICAgICAgIEVsZGVyTmF2TGlua0NvbXBvbmVudCxcbiAgICAgICAgRWxkZXJOYXZHcm91cENvbXBvbmVudFxuICAgIF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsIFJvdXRlck1vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBBMTF5TW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsIE1hdExpc3RNb2R1bGUsIE1hdFJpcHBsZU1vZHVsZSxcbiAgICAgICAgRWxkZXJOYXZMaXN0Q29tcG9uZW50LFxuICAgICAgICBFbGRlck5hdkxpbmtDb21wb25lbnQsXG4gICAgICAgIEVsZGVyTmF2R3JvdXBDb21wb25lbnRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyTmF2TW9kdWxlIHsgfVxuIl19
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItbmF2Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9uYXYvZWxkZXItbmF2Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7O0FBRXZELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBa0I3RSxNQUFNLE9BQU8sY0FBYzsrR0FBZCxjQUFjO2dIQUFkLGNBQWMsWUFUbkIsWUFBWSxFQUFFLFlBQVk7WUFDMUIsYUFBYSxFQUFFLGVBQWU7WUFDOUIsVUFBVTtZQUNWLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZTtZQUMvQyxxQkFBcUI7WUFDckIscUJBQXFCO1lBQ3JCLHNCQUFzQixhQVh0QixxQkFBcUI7WUFDckIscUJBQXFCO1lBQ3JCLHNCQUFzQjtnSEFZakIsY0FBYyxZQVRuQixZQUFZLEVBQUUsWUFBWTtZQUMxQixhQUFhLEVBQUUsZUFBZTtZQUM5QixVQUFVO1lBQ1YsZUFBZSxFQUFFLGFBQWEsRUFBRSxlQUFlO1lBRS9DLHFCQUFxQjtZQUNyQixzQkFBc0I7OzRGQUdqQixjQUFjO2tCQWhCMUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wscUJBQXFCO3dCQUNyQixxQkFBcUI7d0JBQ3JCLHNCQUFzQjtxQkFDekI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLFlBQVksRUFBRSxZQUFZO3dCQUMxQixhQUFhLEVBQUUsZUFBZTt3QkFDOUIsVUFBVTt3QkFDVixlQUFlLEVBQUUsYUFBYSxFQUFFLGVBQWU7d0JBQy9DLHFCQUFxQjt3QkFDckIscUJBQXFCO3dCQUNyQixzQkFBc0I7cUJBQ3pCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7RWxkZXJOYXZMaXN0Q29tcG9uZW50fSBmcm9tICcuL25hdi1saXN0L2VsZGVyLW5hdi1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQge0VsZGVyTmF2TGlua0NvbXBvbmVudH0gZnJvbSAnLi9uYXYtbGluay9lbGRlci1uYXYtbGluay5jb21wb25lbnQnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge01hdEljb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtSb3V0ZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0ExMXlNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7RWxkZXJOYXZHcm91cENvbXBvbmVudH0gZnJvbSAnLi9uYXYtZ3JvdXAvZWxkZXItbmF2LWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQge01hdExpc3RNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHtNYXRSaXBwbGVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuXG5leHBvcnQge0VsZGVyTmF2TGlzdENvbXBvbmVudH0gZnJvbSAnLi9uYXYtbGlzdC9lbGRlci1uYXYtbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0IHtFbGRlck5hdkxpbmtDb21wb25lbnR9IGZyb20gJy4vbmF2LWxpbmsvZWxkZXItbmF2LWxpbmsuY29tcG9uZW50JztcbmV4cG9ydCB7RWxkZXJOYXZHcm91cENvbXBvbmVudH0gZnJvbSAnLi9uYXYtZ3JvdXAvZWxkZXItbmF2LWdyb3VwLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgZXhwb3J0czogW1xuICAgICAgICBFbGRlck5hdkxpc3RDb21wb25lbnQsXG4gICAgICAgIEVsZGVyTmF2TGlua0NvbXBvbmVudCxcbiAgICAgICAgRWxkZXJOYXZHcm91cENvbXBvbmVudFxuICAgIF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsIFJvdXRlck1vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBBMTF5TW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsIE1hdExpc3RNb2R1bGUsIE1hdFJpcHBsZU1vZHVsZSxcbiAgICAgICAgRWxkZXJOYXZMaXN0Q29tcG9uZW50LFxuICAgICAgICBFbGRlck5hdkxpbmtDb21wb25lbnQsXG4gICAgICAgIEVsZGVyTmF2R3JvdXBDb21wb25lbnRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyTmF2TW9kdWxlIHsgfVxuIl19
@@ -74,8 +74,8 @@ export class ElderNavGroupComponent {
74
74
  get isCurrentValueActive() {
75
75
  return this.navList.isActive(this.value);
76
76
  }
77
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ElderNavGroupComponent, deps: [{ token: i1.ElderNavListComponent }], target: i0.ɵɵFactoryTarget.Component }); }
78
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: ElderNavGroupComponent, isStandalone: true, selector: "elder-nav-group", inputs: { value: "value" }, outputs: { clicked: "clicked" }, queries: [{ propertyName: "children", predicate: ElderNavLinkComponent }], ngImport: i0, template: "\n<ng-container *ngIf=\"(state$ | async) as state\">\n <div class=\"layout-col nav-group\">\n <a matRipple\n class=\"layout-row place-start-center nav-group-button mat-button-fill\n mdc-list-item\n mdc-list-item--with-one-line\"\n [class.nav-group-button-open]=\"state.isOpen\"\n [class.nav-group-button-closed]=\"!state.isOpen\"\n [class.nav-group-button-active]=\"active$ | async\"\n (click)=\"itemClick($event)\"\n >\n\n <div class=\"layout-row place-start-center gap-lg full noselect mdc-list-item__primary-text\">\n <ng-content></ng-content>\n <span class=\"flex\"></span>\n <mat-icon>{{state.isOpen ? 'keyboard_arrow_up' : 'keyboard_arrow_down'}}</mat-icon>\n </div>\n </a>\n\n <!-- Nested Items projection -->\n <div class=\"layout-col nav-group-items-container p-sm gap-sm\"\n [@openClose]=\"state.isOpen ? 'open' : 'closed'\">\n <ng-content select=\"elder-nav-link\"></ng-content>\n </div>\n\n </div>\n</ng-container>\n", styles: [".nav-group-button-closed{padding-left:16px}.nav-group{min-height:48px}.nav-group-button{padding-right:16px;min-height:48px;font-size:16px;font-weight:400;border-radius:4px;cursor:pointer}.nav-group-button .mat-icon{height:24px;width:24px;font-size:24px;padding:4px}.nav-group-items-container{overflow:hidden}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], animations: [
77
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderNavGroupComponent, deps: [{ token: i1.ElderNavListComponent }], target: i0.ɵɵFactoryTarget.Component }); }
78
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ElderNavGroupComponent, isStandalone: true, selector: "elder-nav-group", inputs: { value: "value" }, outputs: { clicked: "clicked" }, queries: [{ propertyName: "children", predicate: ElderNavLinkComponent }], ngImport: i0, template: "\n<ng-container *ngIf=\"(state$ | async) as state\">\n <div class=\"layout-col nav-group\">\n <a matRipple\n class=\"layout-row place-start-center nav-group-button mat-button-fill\n mdc-list-item\n mdc-list-item--with-one-line\"\n [class.nav-group-button-open]=\"state.isOpen\"\n [class.nav-group-button-closed]=\"!state.isOpen\"\n [class.nav-group-button-active]=\"active$ | async\"\n (click)=\"itemClick($event)\"\n >\n\n <div class=\"layout-row place-start-center gap-lg full noselect mdc-list-item__primary-text\">\n <ng-content></ng-content>\n <span class=\"flex\"></span>\n <mat-icon>{{state.isOpen ? 'keyboard_arrow_up' : 'keyboard_arrow_down'}}</mat-icon>\n </div>\n </a>\n\n <!-- Nested Items projection -->\n <div class=\"layout-col nav-group-items-container p-sm gap-sm\"\n [@openClose]=\"state.isOpen ? 'open' : 'closed'\">\n <ng-content select=\"elder-nav-link\"></ng-content>\n </div>\n\n </div>\n</ng-container>\n", styles: [".nav-group-button-closed{padding-left:16px}.nav-group{min-height:48px}.nav-group-button{padding-right:16px;min-height:48px;font-size:16px;font-weight:400;border-radius:4px;cursor:pointer}.nav-group-button .mat-icon{height:24px;width:24px;font-size:24px;padding:4px}.nav-group-items-container{overflow:hidden}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], animations: [
79
79
  trigger('openClose', [
80
80
  state('open', style({
81
81
  height: '*',
@@ -95,7 +95,7 @@ export class ElderNavGroupComponent {
95
95
  ])
96
96
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
97
97
  }
98
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: ElderNavGroupComponent, decorators: [{
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ElderNavGroupComponent, decorators: [{
99
99
  type: Component,
100
100
  args: [{ selector: 'elder-nav-group', animations: [
101
101
  trigger('openClose', [
@@ -124,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
124
124
  }], value: [{
125
125
  type: Input
126
126
  }] } });
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItbmF2LWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9uYXYvbmF2LWdyb3VwL2VsZGVyLW5hdi1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL25hdmlnYXRpb24vbmF2L25hdi1ncm91cC9lbGRlci1uYXYtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDL0gsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRSxPQUFPLEVBQUMscUJBQXFCLEVBQUUsY0FBYyxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDM0YsT0FBTyxFQUFDLGVBQWUsRUFBYyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFMUQsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7OztBQWtDaEQsTUFBTSxPQUFPLHNCQUFzQjtJQW9CakM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ21CLE9BQThCO1FBQTlC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QU8sQ0FBQyxPQUFPLENBQUM7aUJBQ25CLENBQUM7Z0JBQ0YsVUFBVSxDQUFDLGdCQUFnQixFQUFFO29CQUN6QixPQUFPLENBQUMsT0FBTyxDQUFDO2lCQUNuQixDQUFDO2FBQ0wsQ0FBQztTQUNMOzsyRkFLUSxzQkFBc0I7a0JBM0JsQyxTQUFTOytCQUNJLGlCQUFpQixjQUdmO3dCQUNSLE9BQU8sQ0FBQyxXQUFXLEVBQUU7NEJBQ2pCLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO2dDQUNoQixNQUFNLEVBQUUsR0FBRztnQ0FDWCxPQUFPLEVBQUUsQ0FBQzs2QkFDYixDQUFDLENBQUM7NEJBQ0gsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7Z0NBQ2xCLE1BQU0sRUFBRSxDQUFDO2dDQUNULE9BQU8sRUFBRSxHQUFHO2dDQUNaLE9BQU8sRUFBRSxDQUFDOzZCQUNiLENBQUMsQ0FBQzs0QkFDSCxVQUFVLENBQUMsZ0JBQWdCLEVBQUU7Z0NBQ3pCLE9BQU8sQ0FBQyxPQUFPLENBQUM7NkJBQ25CLENBQUM7NEJBQ0YsVUFBVSxDQUFDLGdCQUFnQixFQUFFO2dDQUN6QixPQUFPLENBQUMsT0FBTyxDQUFDOzZCQUNuQixDQUFDO3lCQUNMLENBQUM7cUJBQ0wsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDOzBGQVd6QyxRQUFRO3NCQURkLGVBQWU7dUJBQUMscUJBQXFCO2dCQU10QixPQUFPO3NCQUR0QixNQUFNO2dCQW1ESSxLQUFLO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2FuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge0VsZGVyTmF2TGlua0NvbXBvbmVudCwgTmF2SXRlbUNsaWNrZWR9IGZyb20gJy4uL25hdi1saW5rL2VsZGVyLW5hdi1saW5rLmNvbXBvbmVudCc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0VsZGVyTmF2TGlzdENvbXBvbmVudH0gZnJvbSAnLi4vbmF2LWxpc3QvZWxkZXItbmF2LWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7bWFwLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge01hdFJpcHBsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge05nSWYsIEFzeW5jUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuXG5pbnRlcmZhY2UgTmF2R3JvdXBTdGF0ZSB7XG4gIGlzT3BlbjogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlbGRlci1uYXYtZ3JvdXAnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lbGRlci1uYXYtZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2VsZGVyLW5hdi1ncm91cC5jb21wb25lbnQuc2NzcyddLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignb3BlbkNsb3NlJywgW1xuICAgICAgICAgICAgc3RhdGUoJ29wZW4nLCBzdHlsZSh7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnKicsXG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHN0YXRlKCdjbG9zZWQnLCBzdHlsZSh7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNSxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdvcGVuID0+IGNsb3NlZCcsIFtcbiAgICAgICAgICAgICAgICBhbmltYXRlKCcyMDBtcycpXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ2Nsb3NlZCA9PiBvcGVuJywgW1xuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzIwMG1zJylcbiAgICAgICAgICAgIF0pLFxuICAgICAgICBdKVxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgTWF0UmlwcGxlLCBNYXRJY29uLCBBc3luY1BpcGVdXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyTmF2R3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQENvbnRlbnRDaGlsZHJlbihFbGRlck5hdkxpbmtDb21wb25lbnQpXG4gIHB1YmxpYyBjaGlsZHJlbjogUXVlcnlMaXN0PEVsZGVyTmF2TGlua0NvbXBvbmVudD47XG5cbiAgcHVibGljIHJlYWRvbmx5IHN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TmF2R3JvdXBTdGF0ZT4oe2lzT3BlbjogZmFsc2V9KTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IGNsaWNrZWQgPSBuZXcgU3ViamVjdDxOYXZJdGVtQ2xpY2tlZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIF92YWx1ZTogYW55O1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmF2TGlzdDogRWxkZXJOYXZMaXN0Q29tcG9uZW50XG4gICkge1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubmF2TGlzdC52YWx1ZUNoYW5nZS5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgbWFwKHZhbHVlID0+IHRoaXMuaXNDdXJyZW50VmFsdWVBY3RpdmUpLFxuICAgICkuc3Vic2NyaWJlKGFjdGl2ZSA9PiB0aGlzLl9hY3RpdmUkLm5leHQoYWN0aXZlKSk7XG5cbiAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5fYWN0aXZlJC5uZXh0KHRoaXMuaXNDdXJyZW50VmFsdWVBY3RpdmUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZSQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHZhbHVlKHY6IGFueSkge1xuICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFwaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgaXRlbUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5jbGlja2VkLm5leHQobmV3IE5hdkl0ZW1DbGlja2VkKGV2ZW50LCB0aGlzLnZhbHVlKSk7XG4gICAgdGhpcy50b2dnbGUoKTtcbiAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5uYXZMaXN0LnZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlKCk6IHZvaWQge1xuICAgIGNvbnN0IG15U3RhdGUgPSB0aGlzLnN0YXRlJC5nZXRWYWx1ZSgpO1xuICAgIHRoaXMuc3RhdGUkLm5leHQoe2lzT3BlbjogIW15U3RhdGUuaXNPcGVufSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGdldCBpc0N1cnJlbnRWYWx1ZUFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYXZMaXN0LmlzQWN0aXZlKHRoaXMudmFsdWUpO1xuICB9XG59XG4iLCJcbjxuZy1jb250YWluZXIgKm5nSWY9XCIoc3RhdGUkIHwgYXN5bmMpIGFzIHN0YXRlXCI+XG4gIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29sIG5hdi1ncm91cFwiPlxuICAgIDxhIG1hdFJpcHBsZVxuICAgICAgIGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1zdGFydC1jZW50ZXIgbmF2LWdyb3VwLWJ1dHRvbiBtYXQtYnV0dG9uLWZpbGxcbiAgICAgICAgICAgICAgbWRjLWxpc3QtaXRlbVxuICAgICAgICAgICAgICBtZGMtbGlzdC1pdGVtLS13aXRoLW9uZS1saW5lXCJcbiAgICAgICBbY2xhc3MubmF2LWdyb3VwLWJ1dHRvbi1vcGVuXT1cInN0YXRlLmlzT3BlblwiXG4gICAgICAgW2NsYXNzLm5hdi1ncm91cC1idXR0b24tY2xvc2VkXT1cIiFzdGF0ZS5pc09wZW5cIlxuICAgICAgIFtjbGFzcy5uYXYtZ3JvdXAtYnV0dG9uLWFjdGl2ZV09XCJhY3RpdmUkIHwgYXN5bmNcIlxuICAgICAgIChjbGljayk9XCJpdGVtQ2xpY2soJGV2ZW50KVwiXG4gICAgPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1zdGFydC1jZW50ZXIgZ2FwLWxnIGZ1bGwgbm9zZWxlY3QgbWRjLWxpc3QtaXRlbV9fcHJpbWFyeS10ZXh0XCI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4XCI+PC9zcGFuPlxuICAgICAgICA8bWF0LWljb24+e3tzdGF0ZS5pc09wZW4gPyAna2V5Ym9hcmRfYXJyb3dfdXAnIDogJ2tleWJvYXJkX2Fycm93X2Rvd24nfX08L21hdC1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgPC9hPlxuXG4gICAgPCEtLSBOZXN0ZWQgSXRlbXMgcHJvamVjdGlvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbCBuYXYtZ3JvdXAtaXRlbXMtY29udGFpbmVyIHAtc20gZ2FwLXNtXCJcbiAgICAgICAgIFtAb3BlbkNsb3NlXT1cInN0YXRlLmlzT3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJlbGRlci1uYXYtbGlua1wiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItbmF2LWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9uYXYvbmF2LWdyb3VwL2VsZGVyLW5hdi1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL25hdmlnYXRpb24vbmF2L25hdi1ncm91cC9lbGRlci1uYXYtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDL0gsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRSxPQUFPLEVBQUMscUJBQXFCLEVBQUUsY0FBYyxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDM0YsT0FBTyxFQUFDLGVBQWUsRUFBYyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFMUQsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7OztBQWtDaEQsTUFBTSxPQUFPLHNCQUFzQjtJQW9CakM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ21CLE9BQThCO1FBQTlC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QU8sQ0FBQyxPQUFPLENBQUM7aUJBQ25CLENBQUM7Z0JBQ0YsVUFBVSxDQUFDLGdCQUFnQixFQUFFO29CQUN6QixPQUFPLENBQUMsT0FBTyxDQUFDO2lCQUNuQixDQUFDO2FBQ0wsQ0FBQztTQUNMOzs0RkFLUSxzQkFBc0I7a0JBM0JsQyxTQUFTOytCQUNJLGlCQUFpQixjQUdmO3dCQUNSLE9BQU8sQ0FBQyxXQUFXLEVBQUU7NEJBQ2pCLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO2dDQUNoQixNQUFNLEVBQUUsR0FBRztnQ0FDWCxPQUFPLEVBQUUsQ0FBQzs2QkFDYixDQUFDLENBQUM7NEJBQ0gsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7Z0NBQ2xCLE1BQU0sRUFBRSxDQUFDO2dDQUNULE9BQU8sRUFBRSxHQUFHO2dDQUNaLE9BQU8sRUFBRSxDQUFDOzZCQUNiLENBQUMsQ0FBQzs0QkFDSCxVQUFVLENBQUMsZ0JBQWdCLEVBQUU7Z0NBQ3pCLE9BQU8sQ0FBQyxPQUFPLENBQUM7NkJBQ25CLENBQUM7NEJBQ0YsVUFBVSxDQUFDLGdCQUFnQixFQUFFO2dDQUN6QixPQUFPLENBQUMsT0FBTyxDQUFDOzZCQUNuQixDQUFDO3lCQUNMLENBQUM7cUJBQ0wsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDOzBGQVd6QyxRQUFRO3NCQURkLGVBQWU7dUJBQUMscUJBQXFCO2dCQU10QixPQUFPO3NCQUR0QixNQUFNO2dCQW1ESSxLQUFLO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2FuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge0VsZGVyTmF2TGlua0NvbXBvbmVudCwgTmF2SXRlbUNsaWNrZWR9IGZyb20gJy4uL25hdi1saW5rL2VsZGVyLW5hdi1saW5rLmNvbXBvbmVudCc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0VsZGVyTmF2TGlzdENvbXBvbmVudH0gZnJvbSAnLi4vbmF2LWxpc3QvZWxkZXItbmF2LWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7bWFwLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge01hdFJpcHBsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge05nSWYsIEFzeW5jUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuXG5pbnRlcmZhY2UgTmF2R3JvdXBTdGF0ZSB7XG4gIGlzT3BlbjogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlbGRlci1uYXYtZ3JvdXAnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lbGRlci1uYXYtZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2VsZGVyLW5hdi1ncm91cC5jb21wb25lbnQuc2NzcyddLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignb3BlbkNsb3NlJywgW1xuICAgICAgICAgICAgc3RhdGUoJ29wZW4nLCBzdHlsZSh7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnKicsXG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHN0YXRlKCdjbG9zZWQnLCBzdHlsZSh7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNSxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdvcGVuID0+IGNsb3NlZCcsIFtcbiAgICAgICAgICAgICAgICBhbmltYXRlKCcyMDBtcycpXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ2Nsb3NlZCA9PiBvcGVuJywgW1xuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzIwMG1zJylcbiAgICAgICAgICAgIF0pLFxuICAgICAgICBdKVxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgTWF0UmlwcGxlLCBNYXRJY29uLCBBc3luY1BpcGVdXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyTmF2R3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQENvbnRlbnRDaGlsZHJlbihFbGRlck5hdkxpbmtDb21wb25lbnQpXG4gIHB1YmxpYyBjaGlsZHJlbjogUXVlcnlMaXN0PEVsZGVyTmF2TGlua0NvbXBvbmVudD47XG5cbiAgcHVibGljIHJlYWRvbmx5IHN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TmF2R3JvdXBTdGF0ZT4oe2lzT3BlbjogZmFsc2V9KTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IGNsaWNrZWQgPSBuZXcgU3ViamVjdDxOYXZJdGVtQ2xpY2tlZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIF92YWx1ZTogYW55O1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmF2TGlzdDogRWxkZXJOYXZMaXN0Q29tcG9uZW50XG4gICkge1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubmF2TGlzdC52YWx1ZUNoYW5nZS5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgbWFwKHZhbHVlID0+IHRoaXMuaXNDdXJyZW50VmFsdWVBY3RpdmUpLFxuICAgICkuc3Vic2NyaWJlKGFjdGl2ZSA9PiB0aGlzLl9hY3RpdmUkLm5leHQoYWN0aXZlKSk7XG5cbiAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5fYWN0aXZlJC5uZXh0KHRoaXMuaXNDdXJyZW50VmFsdWVBY3RpdmUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZSQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHZhbHVlKHY6IGFueSkge1xuICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFwaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgaXRlbUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5jbGlja2VkLm5leHQobmV3IE5hdkl0ZW1DbGlja2VkKGV2ZW50LCB0aGlzLnZhbHVlKSk7XG4gICAgdGhpcy50b2dnbGUoKTtcbiAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5uYXZMaXN0LnZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlKCk6IHZvaWQge1xuICAgIGNvbnN0IG15U3RhdGUgPSB0aGlzLnN0YXRlJC5nZXRWYWx1ZSgpO1xuICAgIHRoaXMuc3RhdGUkLm5leHQoe2lzT3BlbjogIW15U3RhdGUuaXNPcGVufSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGdldCBpc0N1cnJlbnRWYWx1ZUFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYXZMaXN0LmlzQWN0aXZlKHRoaXMudmFsdWUpO1xuICB9XG59XG4iLCJcbjxuZy1jb250YWluZXIgKm5nSWY9XCIoc3RhdGUkIHwgYXN5bmMpIGFzIHN0YXRlXCI+XG4gIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29sIG5hdi1ncm91cFwiPlxuICAgIDxhIG1hdFJpcHBsZVxuICAgICAgIGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1zdGFydC1jZW50ZXIgbmF2LWdyb3VwLWJ1dHRvbiBtYXQtYnV0dG9uLWZpbGxcbiAgICAgICAgICAgICAgbWRjLWxpc3QtaXRlbVxuICAgICAgICAgICAgICBtZGMtbGlzdC1pdGVtLS13aXRoLW9uZS1saW5lXCJcbiAgICAgICBbY2xhc3MubmF2LWdyb3VwLWJ1dHRvbi1vcGVuXT1cInN0YXRlLmlzT3BlblwiXG4gICAgICAgW2NsYXNzLm5hdi1ncm91cC1idXR0b24tY2xvc2VkXT1cIiFzdGF0ZS5pc09wZW5cIlxuICAgICAgIFtjbGFzcy5uYXYtZ3JvdXAtYnV0dG9uLWFjdGl2ZV09XCJhY3RpdmUkIHwgYXN5bmNcIlxuICAgICAgIChjbGljayk9XCJpdGVtQ2xpY2soJGV2ZW50KVwiXG4gICAgPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1zdGFydC1jZW50ZXIgZ2FwLWxnIGZ1bGwgbm9zZWxlY3QgbWRjLWxpc3QtaXRlbV9fcHJpbWFyeS10ZXh0XCI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4XCI+PC9zcGFuPlxuICAgICAgICA8bWF0LWljb24+e3tzdGF0ZS5pc09wZW4gPyAna2V5Ym9hcmRfYXJyb3dfdXAnIDogJ2tleWJvYXJkX2Fycm93X2Rvd24nfX08L21hdC1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgPC9hPlxuXG4gICAgPCEtLSBOZXN0ZWQgSXRlbXMgcHJvamVjdGlvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LWNvbCBuYXYtZ3JvdXAtaXRlbXMtY29udGFpbmVyIHAtc20gZ2FwLXNtXCJcbiAgICAgICAgIFtAb3BlbkNsb3NlXT1cInN0YXRlLmlzT3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJlbGRlci1uYXYtbGlua1wiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19