@dsivd/prestations-ng 15.5.13 → 16.0.0-beta1

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 (590) hide show
  1. package/CHANGELOG.md +666 -1
  2. package/CONTRIBUTING.md +32 -1
  3. package/ESLINT_MIGRATION_GUIDE.md +1 -1
  4. package/README.md +6 -0
  5. package/UPGRADING_V12.md +0 -15
  6. package/UPGRADING_V13.md +0 -15
  7. package/UPGRADING_V14.md +8 -26
  8. package/UPGRADING_V15.md +113 -0
  9. package/UPGRADING_V16.md +63 -0
  10. package/abstract-page-component.d.ts +8 -8
  11. package/directives/currency-formatter.directive.d.ts +4 -1
  12. package/directives/iban-formatter.directive.d.ts +1 -1
  13. package/directives/ide-formatter.directive.d.ts +1 -1
  14. package/directives/ndc-formatter.directive.d.ts +1 -1
  15. package/dsivd-prestations-ng-v16.0.0-beta1.tgz +0 -0
  16. package/esm2020/abstract-page-component.mjs +223 -0
  17. package/esm2020/directives/currency-formatter.directive.mjs +143 -0
  18. package/{esm2015/directives/formatter.module.js → esm2020/directives/formatter.module.mjs} +8 -8
  19. package/{esm2015/directives/iban-formatter.directive.js → esm2020/directives/iban-formatter.directive.mjs} +4 -4
  20. package/{esm2015/directives/ide-formatter.directive.js → esm2020/directives/ide-formatter.directive.mjs} +4 -4
  21. package/{esm2015/directives/ndc-formatter.directive.js → esm2020/directives/ndc-formatter.directive.mjs} +4 -4
  22. package/{esm2015/dsivd-prestations-ng.js → esm2020/dsivd-prestations-ng.mjs} +0 -0
  23. package/{esm2015/foehn-address/address.type.js → esm2020/foehn-address/address.type.mjs} +1 -1
  24. package/esm2020/foehn-address/foehn-address.module.mjs +55 -0
  25. package/{esm2015/foehn-address/foehn-display-address.component.js → esm2020/foehn-address/foehn-display-address.component.mjs} +5 -9
  26. package/esm2020/foehn-address/foehn-input-address.component.mjs +406 -0
  27. package/esm2020/foehn-address/foehn-input-foreign-locality.component.mjs +66 -0
  28. package/esm2020/foehn-address/foehn-input-foreign-street.component.mjs +55 -0
  29. package/esm2020/foehn-agenda/calendar.type.mjs +3 -0
  30. package/esm2020/foehn-agenda/current-week.type.mjs +4 -0
  31. package/esm2020/foehn-agenda/day-slots.type.mjs +3 -0
  32. package/esm2020/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.mjs +74 -0
  33. package/esm2020/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.mjs +242 -0
  34. package/esm2020/foehn-agenda/foehn-agenda.component.mjs +95 -0
  35. package/esm2020/foehn-agenda/foehn-agenda.module.mjs +62 -0
  36. package/esm2020/foehn-agenda/pagination-week.type.mjs +3 -0
  37. package/esm2020/foehn-agenda/selected-slot.type.mjs +3 -0
  38. package/esm2020/foehn-autocomplete/foehn-autocomplete.component.mjs +608 -0
  39. package/esm2020/foehn-autocomplete/foehn-autocomplete.module.mjs +40 -0
  40. package/esm2020/foehn-boolean/foehn-boolean-checkbox.component.mjs +28 -0
  41. package/esm2020/foehn-boolean/foehn-boolean-radio.component.mjs +40 -0
  42. package/esm2020/foehn-boolean/foehn-boolean.module.mjs +33 -0
  43. package/esm2020/foehn-breadcrumb/breadcrumb-event.service.mjs +181 -0
  44. package/{esm2015/foehn-breadcrumb/breadcrumb.js → esm2020/foehn-breadcrumb/breadcrumb.mjs} +0 -0
  45. package/esm2020/foehn-breadcrumb/foehn-breadcrumb.component.mjs +80 -0
  46. package/esm2020/foehn-breadcrumb/foehn-breadcrumb.module.mjs +19 -0
  47. package/esm2020/foehn-checkables/foehn-checkable-group.component.mjs +298 -0
  48. package/esm2020/foehn-checkables/foehn-checkables.module.mjs +68 -0
  49. package/esm2020/foehn-checkables/foehn-checkbox.component.mjs +37 -0
  50. package/esm2020/foehn-checkables/foehn-radio.component.mjs +64 -0
  51. package/esm2020/foehn-checkables/foehn-select.component.mjs +53 -0
  52. package/{esm2015/foehn-checkables/form-select-option-group.js → esm2020/foehn-checkables/form-select-option-group.mjs} +0 -0
  53. package/{esm2015/foehn-checkables/form-select-option.js → esm2020/foehn-checkables/form-select-option.mjs} +0 -0
  54. package/{esm2015/foehn-confirm-modal/foehn-confirm-modal-content.js → esm2020/foehn-confirm-modal/foehn-confirm-modal-content.mjs} +1 -1
  55. package/esm2020/foehn-confirm-modal/foehn-confirm-modal.component.mjs +40 -0
  56. package/esm2020/foehn-confirm-modal/foehn-confirm-modal.module.mjs +19 -0
  57. package/{esm2015/foehn-confirm-modal/foehn-confirm-modal.service.js → esm2020/foehn-confirm-modal/foehn-confirm-modal.service.mjs} +4 -4
  58. package/esm2020/foehn-date-picker/date-picker-navigation.helper.mjs +167 -0
  59. package/esm2020/foehn-date-picker/date-picker.helper.mjs +132 -0
  60. package/{esm2015/foehn-date-picker/day-month.type.js → esm2020/foehn-date-picker/day-month.type.mjs} +0 -0
  61. package/{esm2015/foehn-date-picker/focused-day.type.js → esm2020/foehn-date-picker/focused-day.type.mjs} +0 -0
  62. package/esm2020/foehn-date-picker/foehn-date-picker.component.mjs +387 -0
  63. package/esm2020/foehn-date-picker/foehn-date-picker.module.mjs +40 -0
  64. package/{esm2015/foehn-date-picker/month-year.type.js → esm2020/foehn-date-picker/month-year.type.mjs} +0 -0
  65. package/esm2020/foehn-date-picker-button/foehn-date-picker-button.component.mjs +97 -0
  66. package/esm2020/foehn-date-picker-button/foehn-date-picker-button.module.mjs +36 -0
  67. package/esm2020/foehn-debug-summary/foehn-debug-summary.component.mjs +67 -0
  68. package/{esm2015/foehn-debug-summary/foehn-debug-summary.component.module.js → esm2020/foehn-debug-summary/foehn-debug-summary.component.module.mjs} +7 -7
  69. package/esm2020/foehn-decision-electronique/foehn-decision-electronique.component.mjs +37 -0
  70. package/esm2020/foehn-decision-electronique/foehn-decision-electronique.module.mjs +32 -0
  71. package/esm2020/foehn-footer/foehn-footer.component.mjs +130 -0
  72. package/{esm2015/foehn-footer/foehn-footer.module.js → esm2020/foehn-footer/foehn-footer.module.mjs} +6 -6
  73. package/{esm2015/foehn-footer/footer-link.type.js → esm2020/foehn-footer/footer-link.type.mjs} +0 -0
  74. package/esm2020/foehn-form/foehn-form.component.mjs +135 -0
  75. package/esm2020/foehn-form/foehn-form.module.mjs +32 -0
  76. package/esm2020/foehn-form/register-ng-model.service.mjs +23 -0
  77. package/esm2020/foehn-growl/foehn-growl.component.mjs +44 -0
  78. package/{esm2015/foehn-growl/foehn-growl.module.js → esm2020/foehn-growl/foehn-growl.module.mjs} +6 -6
  79. package/{esm2015/foehn-growl/growl-broker.service.js → esm2020/foehn-growl/growl-broker.service.mjs} +5 -5
  80. package/{esm2015/foehn-growl/growl-message.js → esm2020/foehn-growl/growl-message.mjs} +1 -1
  81. package/{esm2015/foehn-growl/growl-types.js → esm2020/foehn-growl/growl-types.mjs} +0 -0
  82. package/esm2020/foehn-header/foehn-header.component.mjs +68 -0
  83. package/esm2020/foehn-header/foehn-header.module.mjs +21 -0
  84. package/{esm2015/foehn-header/foehn-skip-link.component.js → esm2020/foehn-header/foehn-skip-link.component.mjs} +5 -8
  85. package/esm2020/foehn-help-modal/foehn-help-modal.component.mjs +44 -0
  86. package/esm2020/foehn-help-modal/foehn-help-modal.module.mjs +20 -0
  87. package/esm2020/foehn-help-modal/foehn-help-modal.type.mjs +2 -0
  88. package/{esm2015/foehn-icons/abstract-icon-component.js → esm2020/foehn-icons/abstract-icon-component.mjs} +5 -5
  89. package/esm2020/foehn-icons/foehn-icon-calendar.component.mjs +19 -0
  90. package/esm2020/foehn-icons/foehn-icon-check-square-o.component.mjs +19 -0
  91. package/esm2020/foehn-icons/foehn-icon-check.component.mjs +19 -0
  92. package/esm2020/foehn-icons/foehn-icon-chevron-down.component.mjs +19 -0
  93. package/esm2020/foehn-icons/foehn-icon-chevron-left.component.mjs +19 -0
  94. package/esm2020/foehn-icons/foehn-icon-chevron-right.component.mjs +19 -0
  95. package/esm2020/foehn-icons/foehn-icon-chevron-up.component.mjs +19 -0
  96. package/esm2020/foehn-icons/foehn-icon-clock.component.mjs +19 -0
  97. package/esm2020/foehn-icons/foehn-icon-comment-dots.component.mjs +19 -0
  98. package/esm2020/foehn-icons/foehn-icon-edit.component.mjs +19 -0
  99. package/esm2020/foehn-icons/foehn-icon-external-link-alt.component.mjs +19 -0
  100. package/esm2020/foehn-icons/foehn-icon-file-pdf.component.mjs +19 -0
  101. package/esm2020/foehn-icons/foehn-icon-info-circle.component.mjs +19 -0
  102. package/esm2020/foehn-icons/foehn-icon-lock.component.mjs +19 -0
  103. package/esm2020/foehn-icons/foehn-icon-map-marker.component.mjs +19 -0
  104. package/esm2020/foehn-icons/foehn-icon-minus-circle.component.mjs +19 -0
  105. package/esm2020/foehn-icons/foehn-icon-plus-circle.component.mjs +19 -0
  106. package/esm2020/foehn-icons/foehn-icon-plus-square.component.mjs +19 -0
  107. package/esm2020/foehn-icons/foehn-icon-search.component.mjs +19 -0
  108. package/esm2020/foehn-icons/foehn-icon-times.component.mjs +19 -0
  109. package/esm2020/foehn-icons/foehn-icon-trash-alt.component.mjs +19 -0
  110. package/esm2020/foehn-icons/foehn-icon-unlock-alt.component.mjs +19 -0
  111. package/{esm2015/foehn-icons/foehn-icons.module.js → esm2020/foehn-icons/foehn-icons.module.mjs} +20 -20
  112. package/esm2020/foehn-input/foehn-input-email.component.mjs +59 -0
  113. package/esm2020/foehn-input/foehn-input-hidden.component.mjs +55 -0
  114. package/esm2020/foehn-input/foehn-input-number.component.mjs +276 -0
  115. package/esm2020/foehn-input/foehn-input-password.component.mjs +52 -0
  116. package/esm2020/foehn-input/foehn-input-phone.component.mjs +92 -0
  117. package/{esm2015/foehn-input/foehn-input-string.component.js → esm2020/foehn-input/foehn-input-string.component.mjs} +5 -5
  118. package/esm2020/foehn-input/foehn-input-text.component.mjs +76 -0
  119. package/esm2020/foehn-input/foehn-input-textarea.component.mjs +109 -0
  120. package/esm2020/foehn-input/foehn-input.component.mjs +390 -0
  121. package/esm2020/foehn-input/foehn-input.module.mjs +93 -0
  122. package/{esm2015/foehn-input/pattern.const.js → esm2020/foehn-input/pattern.const.mjs} +0 -0
  123. package/esm2020/foehn-input-date/foehn-input-date.component.mjs +118 -0
  124. package/esm2020/foehn-input-date-time/foehn-input-date-time.component.mjs +143 -0
  125. package/esm2020/foehn-input-time/foehn-input-time.component.mjs +74 -0
  126. package/esm2020/foehn-list/foehn-list.component.mjs +128 -0
  127. package/esm2020/foehn-list/foehn-list.module.mjs +19 -0
  128. package/{esm2015/foehn-list/page-change-event.js → esm2020/foehn-list/page-change-event.mjs} +0 -0
  129. package/esm2020/foehn-menu-prestation/abstract-list-item-detail-page.component.mjs +122 -0
  130. package/{esm2015/foehn-menu-prestation/abstract-menu-page.component.js → esm2020/foehn-menu-prestation/abstract-menu-page.component.mjs} +4 -4
  131. package/{esm2015/foehn-menu-prestation/abstract-page-from-menu.component.js → esm2020/foehn-menu-prestation/abstract-page-from-menu.component.mjs} +4 -4
  132. package/esm2020/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.mjs +23 -0
  133. package/{esm2015/foehn-menu-prestation/foehn-list-summary/foehn-list-item-description.js → esm2020/foehn-menu-prestation/foehn-list-summary/foehn-list-item-description.mjs} +0 -0
  134. package/{esm2015/foehn-menu-prestation/foehn-list-summary/foehn-list-item.js → esm2020/foehn-menu-prestation/foehn-list-summary/foehn-list-item.mjs} +0 -0
  135. package/esm2020/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.mjs +71 -0
  136. package/esm2020/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.mjs +35 -0
  137. package/esm2020/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.mjs +51 -0
  138. package/esm2020/foehn-menu-prestation/foehn-menu-prestation.module.mjs +59 -0
  139. package/{esm2015/foehn-misc/foehn-abbr.component.js → esm2020/foehn-misc/foehn-abbr.component.mjs} +5 -9
  140. package/{esm2015/foehn-misc/foehn-misc.module.js → esm2020/foehn-misc/foehn-misc.module.mjs} +5 -5
  141. package/esm2020/foehn-modal/foehn-modal.component.mjs +94 -0
  142. package/esm2020/foehn-modal/foehn-modal.module.mjs +21 -0
  143. package/esm2020/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.mjs +268 -0
  144. package/esm2020/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.mjs +40 -0
  145. package/esm2020/foehn-nav13/foehn-input-nav13.component.mjs +114 -0
  146. package/esm2020/foehn-nav13/foehn-input-nav13.module.mjs +32 -0
  147. package/esm2020/foehn-navigation/foehn-navigation.component.mjs +94 -0
  148. package/esm2020/foehn-navigation/foehn-navigation.module.mjs +32 -0
  149. package/esm2020/foehn-navigation/foehn-navigation.service.mjs +303 -0
  150. package/{esm2015/foehn-notfound/foehn-notfound.component.js → esm2020/foehn-notfound/foehn-notfound.component.mjs} +7 -10
  151. package/esm2020/foehn-notfound/foehn-notfound.module.mjs +20 -0
  152. package/{esm2015/foehn-page/foehn-page-counter.component.js → esm2020/foehn-page/foehn-page-counter.component.mjs} +5 -8
  153. package/esm2020/foehn-page/foehn-page-modal.component.mjs +53 -0
  154. package/{esm2015/foehn-page/foehn-page-modal.service.js → esm2020/foehn-page/foehn-page-modal.service.mjs} +4 -4
  155. package/esm2020/foehn-page/foehn-page.component.mjs +218 -0
  156. package/esm2020/foehn-page/foehn-page.module.mjs +78 -0
  157. package/{esm2015/foehn-page/foehn-page.service.js → esm2020/foehn-page/foehn-page.service.mjs} +4 -4
  158. package/esm2020/foehn-recap-section/foehn-recap-section.component.mjs +88 -0
  159. package/esm2020/foehn-recap-section/foehn-recap-section.module.mjs +20 -0
  160. package/{esm2015/foehn-recap-section/foehn-recap-section.type.js → esm2020/foehn-recap-section/foehn-recap-section.type.mjs} +0 -0
  161. package/{esm2015/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.js → esm2020/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.mjs} +5 -9
  162. package/{esm2015/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module.js → esm2020/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module.mjs} +6 -6
  163. package/esm2020/foehn-status-progress-bar/foehn-status-progress-bar.component.mjs +56 -0
  164. package/esm2020/foehn-status-progress-bar/foehn-status-progress-bar.module.mjs +20 -0
  165. package/esm2020/foehn-table/foehn-table-column-configuration.mjs +3 -0
  166. package/esm2020/foehn-table/foehn-table-page-change-event.mjs +3 -0
  167. package/esm2020/foehn-table/foehn-table.component.mjs +148 -0
  168. package/esm2020/foehn-table/foehn-table.module.mjs +32 -0
  169. package/esm2020/foehn-table/tableSort.mjs +3 -0
  170. package/esm2020/foehn-upload/abstract-foehn-uploader.component.mjs +192 -0
  171. package/{esm2015/foehn-upload/document-reference.js → esm2020/foehn-upload/document-reference.mjs} +0 -0
  172. package/esm2020/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.mjs +71 -0
  173. package/{esm2015/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.type.js → esm2020/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.type.mjs} +0 -0
  174. package/esm2020/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.mjs +174 -0
  175. package/esm2020/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.mjs +40 -0
  176. package/esm2020/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.mjs +224 -0
  177. package/esm2020/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.mjs +40 -0
  178. package/esm2020/foehn-upload/foehn-multi-upload/multi-upload.service.mjs +83 -0
  179. package/{esm2015/foehn-upload/foehn-multi-upload/multi-upload.type.js → esm2020/foehn-upload/foehn-multi-upload/multi-upload.type.mjs} +0 -0
  180. package/esm2020/foehn-upload/foehn-multi-upload/pending-upload.service.mjs +158 -0
  181. package/esm2020/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.mjs +202 -0
  182. package/esm2020/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.mjs +44 -0
  183. package/esm2020/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.mjs +75 -0
  184. package/esm2020/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.mjs +21 -0
  185. package/esm2020/foehn-upload/foehn-upload-progress-bar/upload-progress.service.mjs +62 -0
  186. package/esm2020/foehn-upload/foehn-upload-progress-bar/upload-progress.type.mjs +3 -0
  187. package/{esm2015/foehn-upload/pending-upload.type.js → esm2020/foehn-upload/pending-upload.type.mjs} +1 -1
  188. package/esm2020/foehn-upload/uploader.helper.mjs +327 -0
  189. package/{esm2015/foehn-user-connected-as/foehn-user-connected-as.component.js → esm2020/foehn-user-connected-as/foehn-user-connected-as.component.mjs} +5 -8
  190. package/{esm2015/foehn-user-connected-as/foehn-user-connected-as.module.js → esm2020/foehn-user-connected-as/foehn-user-connected-as.module.mjs} +6 -6
  191. package/esm2020/foehn-validation-alert-summary/foehn-validation-alert-summary.component.mjs +96 -0
  192. package/esm2020/foehn-validation-alert-summary/foehn-validation-alert-summary.module.mjs +19 -0
  193. package/esm2020/foehn-validation-alerts/foehn-validation-alerts.component.mjs +29 -0
  194. package/{esm2015/foehn-validation-alerts/foehn-validation-alerts.module.js → esm2020/foehn-validation-alerts/foehn-validation-alerts.module.mjs} +6 -6
  195. package/esm2020/form-error.mjs +2 -0
  196. package/esm2020/form-post-response.mjs +10 -0
  197. package/{esm2015/gesdem/gesdem-error-handler.service.js → esm2020/gesdem/gesdem-error-handler.service.mjs} +4 -4
  198. package/esm2020/gesdem/gesdem-event.service.mjs +38 -0
  199. package/esm2020/gesdem/gesdem-handler.service.mjs +160 -0
  200. package/esm2020/gesdem/gesdem-loader.guard.mjs +41 -0
  201. package/{esm2015/gesdem/gesdem-statut-utils.js → esm2020/gesdem/gesdem-statut-utils.mjs} +0 -0
  202. package/esm2020/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.mjs +101 -0
  203. package/esm2020/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.mjs +130 -0
  204. package/esm2020/gesdem-action-recovery/gesdem-action-recovery.module.mjs +50 -0
  205. package/esm2020/gesdem-action-recovery/gesdem-action-recovery.service.mjs +82 -0
  206. package/{esm2015/gesdem-action-recovery/reprise-info.js → esm2020/gesdem-action-recovery/reprise-info.mjs} +0 -0
  207. package/esm2020/gesdem-confirmation/gesdem-confirmation.component.mjs +201 -0
  208. package/esm2020/gesdem-confirmation/gesdem-confirmation.module.mjs +32 -0
  209. package/esm2020/gesdem-error/gesdem-error.component.mjs +87 -0
  210. package/esm2020/gesdem-error/gesdem-error.module.mjs +36 -0
  211. package/esm2020/global.const.mjs +5 -0
  212. package/esm2020/helpers/object.helper.mjs +89 -0
  213. package/{esm2015/i18n-form.js → esm2020/i18n-form.mjs} +0 -0
  214. package/esm2020/index.mjs +263 -0
  215. package/{esm2015/pipes/currency.pipe.js → esm2020/pipes/currency.pipe.mjs} +4 -4
  216. package/{esm2015/pipes/date.pipe.js → esm2020/pipes/date.pipe.mjs} +4 -4
  217. package/{esm2015/pipes/formatIde.pipe.js → esm2020/pipes/formatIde.pipe.mjs} +3 -3
  218. package/{esm2015/pipes/pipes.module.js → esm2020/pipes/pipes.module.mjs} +7 -7
  219. package/{esm2015/prestations-ng-core.module.js → esm2020/prestations-ng-core.module.mjs} +7 -7
  220. package/esm2020/refinf/model/address-type-light.mjs +3 -0
  221. package/esm2020/refinf/model/canton.mjs +3 -0
  222. package/esm2020/refinf/model/district.mjs +3 -0
  223. package/esm2020/refinf/model/municipality.mjs +3 -0
  224. package/esm2020/refinf/model/place-of-origin.mjs +3 -0
  225. package/esm2020/refinf/model/postal-locality.mjs +3 -0
  226. package/esm2020/sdk-appinfo/application-info.mjs +14 -0
  227. package/esm2020/sdk-appinfo/application-info.service.mjs +104 -0
  228. package/{esm2015/sdk-currency/currency.helper.js → esm2020/sdk-currency/currency.helper.mjs} +3 -3
  229. package/esm2020/sdk-date/date.helper.mjs +100 -0
  230. package/esm2020/sdk-dictionary/default-dictionary.mjs +166 -0
  231. package/{esm2015/sdk-dictionary/sdk-dictionary.module.js → esm2020/sdk-dictionary/sdk-dictionary.module.mjs} +5 -5
  232. package/{esm2015/sdk-dictionary/sdk-dictionary.pipe.js → esm2020/sdk-dictionary/sdk-dictionary.pipe.mjs} +6 -6
  233. package/esm2020/sdk-dictionary/sdk-dictionary.service.mjs +111 -0
  234. package/{esm2015/sdk-epayment/model/EPaymentParameters.js → esm2020/sdk-epayment/model/EPaymentParameters.mjs} +0 -0
  235. package/esm2020/sdk-epayment/sdk-epayment.component.mjs +81 -0
  236. package/esm2020/sdk-epayment/sdk-epayment.module.mjs +21 -0
  237. package/esm2020/sdk-epayment/sdk-epayment.service.mjs +52 -0
  238. package/{esm2015/sdk-recaptcha/grecaptcha/grecaptcha.component.js → esm2020/sdk-recaptcha/grecaptcha/grecaptcha.component.mjs} +6 -10
  239. package/esm2020/sdk-recaptcha/recaptcha.service.mjs +162 -0
  240. package/esm2020/sdk-recaptcha/sdk-recaptcha.component.mjs +69 -0
  241. package/esm2020/sdk-recaptcha/sdk-recaptcha.module.mjs +19 -0
  242. package/esm2020/sdk-redirect/iam-expired-interceptor.service.mjs +58 -0
  243. package/esm2020/sdk-redirect/redirect.component.mjs +35 -0
  244. package/esm2020/sdk-redirect/sdk-redirect.module.mjs +19 -0
  245. package/{esm2015/sdk-session-info/session-info-data.js → esm2020/sdk-session-info/session-info-data.mjs} +1 -1
  246. package/{esm2015/sdk-session-info/session-info-with-application.service.js → esm2020/sdk-session-info/session-info-with-application.service.mjs} +5 -5
  247. package/esm2020/sdk-session-info/session-info.service.mjs +50 -0
  248. package/esm2020/sdk-statistics/sdk-statistics.service.mjs +70 -0
  249. package/esm2020/sdk-support-alert/support-alert-container.component.mjs +49 -0
  250. package/esm2020/sdk-support-alert/support-alert.component.mjs +34 -0
  251. package/{esm2015/sdk-support-alert/support-alert.model.js → esm2020/sdk-support-alert/support-alert.model.mjs} +0 -0
  252. package/esm2020/sdk-support-alert/support-alert.module.mjs +21 -0
  253. package/esm2020/sdk-support-alert/support-alert.service.mjs +117 -0
  254. package/{esm2015/service-locator.js → esm2020/service-locator.mjs} +0 -0
  255. package/esm2020/supported-browser.mjs +2 -0
  256. package/esm2020/validation/validation-handler.service.mjs +44 -0
  257. package/fesm2015/dsivd-prestations-ng.mjs +13397 -0
  258. package/fesm2015/dsivd-prestations-ng.mjs.map +1 -0
  259. package/fesm2020/dsivd-prestations-ng.mjs +13372 -0
  260. package/fesm2020/dsivd-prestations-ng.mjs.map +1 -0
  261. package/foehn-address/address.type.d.ts +3 -3
  262. package/foehn-address/foehn-display-address.component.d.ts +1 -1
  263. package/foehn-address/foehn-input-address.component.d.ts +18 -8
  264. package/foehn-address/foehn-input-foreign-locality.component.d.ts +1 -1
  265. package/foehn-address/foehn-input-foreign-street.component.d.ts +1 -1
  266. package/foehn-agenda/calendar.type.d.ts +9 -0
  267. package/foehn-agenda/current-week.type.d.ts +5 -0
  268. package/foehn-agenda/day-slots.type.d.ts +5 -0
  269. package/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.d.ts +21 -0
  270. package/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.d.ts +51 -0
  271. package/foehn-agenda/foehn-agenda.component.d.ts +29 -0
  272. package/foehn-agenda/foehn-agenda.module.d.ts +17 -0
  273. package/foehn-agenda/pagination-week.type.d.ts +5 -0
  274. package/foehn-agenda/selected-slot.type.d.ts +7 -0
  275. package/foehn-autocomplete/foehn-autocomplete.component.d.ts +22 -6
  276. package/foehn-boolean/foehn-boolean-checkbox.component.d.ts +1 -1
  277. package/foehn-boolean/foehn-boolean-radio.component.d.ts +2 -1
  278. package/foehn-breadcrumb/breadcrumb-event.service.d.ts +2 -2
  279. package/foehn-breadcrumb/foehn-breadcrumb.component.d.ts +6 -5
  280. package/foehn-checkables/foehn-checkable-group.component.d.ts +8 -8
  281. package/foehn-checkables/foehn-checkables.module.d.ts +3 -1
  282. package/foehn-checkables/foehn-checkbox.component.d.ts +1 -1
  283. package/foehn-checkables/foehn-radio.component.d.ts +1 -1
  284. package/foehn-checkables/foehn-select.component.d.ts +2 -10
  285. package/foehn-confirm-modal/foehn-confirm-modal-content.d.ts +1 -0
  286. package/foehn-confirm-modal/foehn-confirm-modal.component.d.ts +2 -2
  287. package/foehn-date-picker/date-picker-navigation.helper.d.ts +7 -1
  288. package/foehn-date-picker/date-picker.helper.d.ts +3 -2
  289. package/foehn-date-picker/foehn-date-picker.component.d.ts +21 -10
  290. package/foehn-date-picker-button/foehn-date-picker-button.component.d.ts +13 -5
  291. package/foehn-debug-summary/foehn-debug-summary.component.d.ts +7 -5
  292. package/foehn-decision-electronique/foehn-decision-electronique.component.d.ts +2 -2
  293. package/foehn-decision-electronique/foehn-decision-electronique.module.d.ts +2 -1
  294. package/foehn-footer/foehn-footer.component.d.ts +4 -4
  295. package/foehn-form/foehn-form.component.d.ts +7 -4
  296. package/foehn-form/register-ng-model.service.d.ts +9 -0
  297. package/foehn-growl/foehn-growl.component.d.ts +3 -3
  298. package/foehn-growl/growl-broker.service.d.ts +1 -1
  299. package/foehn-header/foehn-header.component.d.ts +7 -7
  300. package/foehn-header/foehn-skip-link.component.d.ts +2 -2
  301. package/foehn-help-modal/foehn-help-modal.component.d.ts +1 -1
  302. package/foehn-help-modal/foehn-help-modal.type.d.ts +4 -0
  303. package/foehn-icons/abstract-icon-component.d.ts +1 -1
  304. package/foehn-icons/foehn-icon-calendar.component.d.ts +1 -1
  305. package/foehn-icons/foehn-icon-check-square-o.component.d.ts +1 -1
  306. package/foehn-icons/foehn-icon-check.component.d.ts +1 -1
  307. package/foehn-icons/foehn-icon-chevron-down.component.d.ts +1 -1
  308. package/foehn-icons/foehn-icon-chevron-left.component.d.ts +1 -1
  309. package/foehn-icons/foehn-icon-chevron-right.component.d.ts +1 -1
  310. package/foehn-icons/foehn-icon-chevron-up.component.d.ts +1 -1
  311. package/foehn-icons/foehn-icon-clock.component.d.ts +1 -1
  312. package/foehn-icons/foehn-icon-comment-dots.component.d.ts +1 -1
  313. package/foehn-icons/foehn-icon-edit.component.d.ts +1 -1
  314. package/foehn-icons/foehn-icon-external-link-alt.component.d.ts +1 -1
  315. package/foehn-icons/foehn-icon-file-pdf.component.d.ts +1 -1
  316. package/foehn-icons/foehn-icon-info-circle.component.d.ts +1 -1
  317. package/foehn-icons/foehn-icon-lock.component.d.ts +1 -1
  318. package/foehn-icons/foehn-icon-map-marker.component.d.ts +1 -1
  319. package/foehn-icons/foehn-icon-minus-circle.component.d.ts +1 -1
  320. package/foehn-icons/foehn-icon-plus-circle.component.d.ts +1 -1
  321. package/foehn-icons/foehn-icon-plus-square.component.d.ts +1 -1
  322. package/foehn-icons/foehn-icon-search.component.d.ts +1 -1
  323. package/foehn-icons/foehn-icon-times.component.d.ts +1 -1
  324. package/foehn-icons/foehn-icon-trash-alt.component.d.ts +1 -1
  325. package/foehn-icons/foehn-icon-unlock-alt.component.d.ts +1 -1
  326. package/foehn-input/foehn-input-email.component.d.ts +4 -2
  327. package/foehn-input/foehn-input-hidden.component.d.ts +1 -1
  328. package/foehn-input/foehn-input-number.component.d.ts +16 -6
  329. package/foehn-input/foehn-input-password.component.d.ts +1 -1
  330. package/foehn-input/foehn-input-phone.component.d.ts +1 -1
  331. package/foehn-input/foehn-input-string.component.d.ts +1 -1
  332. package/foehn-input/foehn-input-text.component.d.ts +1 -1
  333. package/foehn-input/foehn-input-textarea.component.d.ts +5 -2
  334. package/foehn-input/foehn-input.component.d.ts +25 -9
  335. package/foehn-input/foehn-input.module.d.ts +9 -6
  336. package/foehn-input-date/foehn-input-date.component.d.ts +10 -3
  337. package/foehn-input-date-time/foehn-input-date-time.component.d.ts +29 -0
  338. package/foehn-input-time/foehn-input-time.component.d.ts +1 -1
  339. package/foehn-list/foehn-list.component.d.ts +2 -3
  340. package/foehn-menu-prestation/abstract-list-item-detail-page.component.d.ts +5 -5
  341. package/foehn-menu-prestation/abstract-menu-page.component.d.ts +1 -1
  342. package/foehn-menu-prestation/abstract-page-from-menu.component.d.ts +1 -1
  343. package/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.d.ts +1 -1
  344. package/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.d.ts +3 -3
  345. package/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.d.ts +1 -1
  346. package/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.d.ts +2 -2
  347. package/foehn-misc/foehn-abbr.component.d.ts +1 -1
  348. package/foehn-modal/foehn-modal.component.d.ts +2 -3
  349. package/foehn-modal/foehn-modal.module.d.ts +3 -1
  350. package/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.d.ts +51 -0
  351. package/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.d.ts +13 -0
  352. package/foehn-nav13/foehn-input-nav13.component.d.ts +2 -1
  353. package/foehn-navigation/foehn-navigation.component.d.ts +2 -2
  354. package/foehn-navigation/foehn-navigation.service.d.ts +4 -3
  355. package/foehn-notfound/foehn-notfound.component.d.ts +1 -1
  356. package/foehn-page/foehn-page-counter.component.d.ts +1 -1
  357. package/foehn-page/foehn-page-modal.component.d.ts +1 -1
  358. package/foehn-page/foehn-page-modal.service.d.ts +1 -1
  359. package/foehn-page/foehn-page.component.d.ts +15 -12
  360. package/foehn-page/foehn-page.module.d.ts +2 -1
  361. package/foehn-page/foehn-page.service.d.ts +2 -2
  362. package/foehn-recap-section/foehn-recap-section.component.d.ts +3 -1
  363. package/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.d.ts +1 -1
  364. package/foehn-status-progress-bar/foehn-status-progress-bar.component.d.ts +23 -0
  365. package/foehn-status-progress-bar/foehn-status-progress-bar.module.d.ts +10 -0
  366. package/foehn-table/foehn-table-column-configuration.d.ts +18 -0
  367. package/foehn-table/foehn-table-page-change-event.d.ts +5 -0
  368. package/foehn-table/foehn-table.component.d.ts +33 -0
  369. package/foehn-table/foehn-table.module.d.ts +11 -0
  370. package/foehn-table/tableSort.d.ts +4 -0
  371. package/foehn-upload/abstract-foehn-uploader.component.d.ts +7 -7
  372. package/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.d.ts +6 -4
  373. package/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.d.ts +6 -5
  374. package/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.d.ts +2 -1
  375. package/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.d.ts +9 -8
  376. package/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.d.ts +2 -1
  377. package/foehn-upload/foehn-multi-upload/multi-upload.service.d.ts +6 -4
  378. package/foehn-upload/foehn-multi-upload/pending-upload.service.d.ts +3 -3
  379. package/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.d.ts +7 -4
  380. package/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.d.ts +2 -1
  381. package/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.d.ts +19 -0
  382. package/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.d.ts +11 -0
  383. package/foehn-upload/foehn-upload-progress-bar/upload-progress.service.d.ts +19 -0
  384. package/foehn-upload/foehn-upload-progress-bar/upload-progress.type.d.ts +4 -0
  385. package/foehn-upload/pending-upload.type.d.ts +1 -0
  386. package/foehn-upload/uploader.helper.d.ts +13 -13
  387. package/foehn-user-connected-as/foehn-user-connected-as.component.d.ts +2 -2
  388. package/foehn-validation-alert-summary/foehn-validation-alert-summary.component.d.ts +2 -2
  389. package/foehn-validation-alerts/foehn-validation-alerts.component.d.ts +4 -4
  390. package/{error-template.d.ts → form-error.d.ts} +1 -1
  391. package/form-post-response.d.ts +17 -0
  392. package/gesdem/gesdem-error-handler.service.d.ts +2 -2
  393. package/gesdem/gesdem-event.service.d.ts +7 -7
  394. package/gesdem/gesdem-handler.service.d.ts +8 -6
  395. package/gesdem/gesdem-loader.guard.d.ts +1 -1
  396. package/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.d.ts +5 -5
  397. package/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.d.ts +7 -7
  398. package/gesdem-action-recovery/gesdem-action-recovery.service.d.ts +3 -3
  399. package/gesdem-confirmation/gesdem-confirmation.component.d.ts +10 -9
  400. package/gesdem-error/gesdem-error.component.d.ts +10 -3
  401. package/gesdem-error/gesdem-error.module.d.ts +2 -1
  402. package/global.const.d.ts +1 -0
  403. package/index.d.ts +102 -70
  404. package/package.json +34 -21
  405. package/pipes/currency.pipe.d.ts +1 -1
  406. package/pipes/date.pipe.d.ts +1 -1
  407. package/pipes/formatIde.pipe.d.ts +1 -1
  408. package/refinf/model/address-type-light.d.ts +5 -0
  409. package/refinf/model/canton.d.ts +4 -0
  410. package/refinf/model/district.d.ts +7 -0
  411. package/refinf/model/municipality.d.ts +8 -0
  412. package/refinf/model/place-of-origin.d.ts +9 -0
  413. package/refinf/model/postal-locality.d.ts +11 -0
  414. package/schematics/ng-add/index.js +10 -10
  415. package/schematics/ng-update/migrations/update-13_1_0/index.js +2 -2
  416. package/schematics/ng-update/migrations/update-13_2_0/index.js +3 -3
  417. package/schematics/ng-update/migrations/update-13_5_1/index.js +3 -3
  418. package/schematics/ng-update/migrations/update-14_5_0/index.js +2 -2
  419. package/schematics/update-karma-config/index.js +2 -2
  420. package/schematics/utility/migrate-to-karma-coverage.js +3 -3
  421. package/sdk-appinfo/application-info.d.ts +1 -0
  422. package/sdk-appinfo/application-info.service.d.ts +4 -4
  423. package/sdk-dictionary/sdk-dictionary.pipe.d.ts +1 -1
  424. package/sdk-dictionary/sdk-dictionary.service.d.ts +9 -0
  425. package/sdk-epayment/sdk-epayment.component.d.ts +6 -16
  426. package/sdk-epayment/sdk-epayment.service.d.ts +3 -6
  427. package/sdk-recaptcha/grecaptcha/grecaptcha.component.d.ts +2 -2
  428. package/sdk-recaptcha/recaptcha.service.d.ts +5 -5
  429. package/sdk-recaptcha/sdk-recaptcha.component.d.ts +4 -4
  430. package/sdk-redirect/iam-expired-interceptor.service.d.ts +3 -3
  431. package/sdk-redirect/redirect.component.d.ts +3 -9
  432. package/sdk-session-info/session-info-data.d.ts +0 -1
  433. package/sdk-session-info/session-info.service.d.ts +4 -4
  434. package/sdk-statistics/sdk-statistics.service.d.ts +22 -0
  435. package/sdk-support-alert/support-alert-container.component.d.ts +3 -3
  436. package/sdk-support-alert/support-alert.component.d.ts +1 -1
  437. package/sdk-support-alert/support-alert.service.d.ts +5 -4
  438. package/validation/validation-handler.service.d.ts +4 -4
  439. package/backend-response.d.ts +0 -18
  440. package/bundles/dsivd-prestations-ng.umd.js +0 -13188
  441. package/bundles/dsivd-prestations-ng.umd.js.map +0 -1
  442. package/dsivd-prestations-ng-v15.5.13.tgz +0 -0
  443. package/dsivd-prestations-ng.d.ts +0 -5
  444. package/esm2015/abstract-page-component.js +0 -224
  445. package/esm2015/backend-response.js +0 -10
  446. package/esm2015/directives/currency-formatter.directive.js +0 -116
  447. package/esm2015/error-template.js +0 -2
  448. package/esm2015/foehn-address/foehn-address.module.js +0 -57
  449. package/esm2015/foehn-address/foehn-input-address.component.js +0 -365
  450. package/esm2015/foehn-address/foehn-input-foreign-locality.component.js +0 -71
  451. package/esm2015/foehn-address/foehn-input-foreign-street.component.js +0 -60
  452. package/esm2015/foehn-autocomplete/foehn-autocomplete.component.js +0 -556
  453. package/esm2015/foehn-autocomplete/foehn-autocomplete.module.js +0 -42
  454. package/esm2015/foehn-boolean/foehn-boolean-checkbox.component.js +0 -32
  455. package/esm2015/foehn-boolean/foehn-boolean-radio.component.js +0 -41
  456. package/esm2015/foehn-boolean/foehn-boolean.module.js +0 -35
  457. package/esm2015/foehn-breadcrumb/breadcrumb-event.service.js +0 -182
  458. package/esm2015/foehn-breadcrumb/foehn-breadcrumb.component.js +0 -85
  459. package/esm2015/foehn-breadcrumb/foehn-breadcrumb.module.js +0 -19
  460. package/esm2015/foehn-checkables/foehn-checkable-group.component.js +0 -294
  461. package/esm2015/foehn-checkables/foehn-checkables.module.js +0 -62
  462. package/esm2015/foehn-checkables/foehn-checkbox.component.js +0 -40
  463. package/esm2015/foehn-checkables/foehn-radio.component.js +0 -67
  464. package/esm2015/foehn-checkables/foehn-select.component.js +0 -66
  465. package/esm2015/foehn-confirm-modal/foehn-confirm-modal.component.js +0 -42
  466. package/esm2015/foehn-confirm-modal/foehn-confirm-modal.module.js +0 -19
  467. package/esm2015/foehn-date-picker/date-picker-navigation.helper.js +0 -117
  468. package/esm2015/foehn-date-picker/date-picker.helper.js +0 -126
  469. package/esm2015/foehn-date-picker/foehn-date-picker.component.js +0 -300
  470. package/esm2015/foehn-date-picker/foehn-date-picker.module.js +0 -42
  471. package/esm2015/foehn-date-picker-button/foehn-date-picker-button.component.js +0 -74
  472. package/esm2015/foehn-date-picker-button/foehn-date-picker-button.module.js +0 -38
  473. package/esm2015/foehn-debug-summary/foehn-debug-summary.component.js +0 -61
  474. package/esm2015/foehn-decision-electronique/foehn-decision-electronique.component.js +0 -40
  475. package/esm2015/foehn-decision-electronique/foehn-decision-electronique.module.js +0 -20
  476. package/esm2015/foehn-footer/foehn-footer.component.js +0 -132
  477. package/esm2015/foehn-form/foehn-form.component.js +0 -146
  478. package/esm2015/foehn-form/foehn-form.module.js +0 -20
  479. package/esm2015/foehn-growl/foehn-growl.component.js +0 -47
  480. package/esm2015/foehn-header/foehn-header.component.js +0 -73
  481. package/esm2015/foehn-header/foehn-header.module.js +0 -21
  482. package/esm2015/foehn-help-modal/foehn-help-modal.component.js +0 -48
  483. package/esm2015/foehn-help-modal/foehn-help-modal.module.js +0 -20
  484. package/esm2015/foehn-help-modal/foehn-help-modal.type.js +0 -2
  485. package/esm2015/foehn-icons/foehn-icon-calendar.component.js +0 -22
  486. package/esm2015/foehn-icons/foehn-icon-check-square-o.component.js +0 -22
  487. package/esm2015/foehn-icons/foehn-icon-check.component.js +0 -22
  488. package/esm2015/foehn-icons/foehn-icon-chevron-down.component.js +0 -22
  489. package/esm2015/foehn-icons/foehn-icon-chevron-left.component.js +0 -22
  490. package/esm2015/foehn-icons/foehn-icon-chevron-right.component.js +0 -22
  491. package/esm2015/foehn-icons/foehn-icon-chevron-up.component.js +0 -22
  492. package/esm2015/foehn-icons/foehn-icon-clock.component.js +0 -22
  493. package/esm2015/foehn-icons/foehn-icon-comment-dots.component.js +0 -22
  494. package/esm2015/foehn-icons/foehn-icon-edit.component.js +0 -22
  495. package/esm2015/foehn-icons/foehn-icon-external-link-alt.component.js +0 -22
  496. package/esm2015/foehn-icons/foehn-icon-file-pdf.component.js +0 -22
  497. package/esm2015/foehn-icons/foehn-icon-info-circle.component.js +0 -22
  498. package/esm2015/foehn-icons/foehn-icon-lock.component.js +0 -22
  499. package/esm2015/foehn-icons/foehn-icon-map-marker.component.js +0 -22
  500. package/esm2015/foehn-icons/foehn-icon-minus-circle.component.js +0 -22
  501. package/esm2015/foehn-icons/foehn-icon-plus-circle.component.js +0 -22
  502. package/esm2015/foehn-icons/foehn-icon-plus-square.component.js +0 -22
  503. package/esm2015/foehn-icons/foehn-icon-search.component.js +0 -22
  504. package/esm2015/foehn-icons/foehn-icon-times.component.js +0 -22
  505. package/esm2015/foehn-icons/foehn-icon-trash-alt.component.js +0 -22
  506. package/esm2015/foehn-icons/foehn-icon-unlock-alt.component.js +0 -22
  507. package/esm2015/foehn-input/foehn-input-email.component.js +0 -55
  508. package/esm2015/foehn-input/foehn-input-hidden.component.js +0 -57
  509. package/esm2015/foehn-input/foehn-input-number.component.js +0 -190
  510. package/esm2015/foehn-input/foehn-input-password.component.js +0 -55
  511. package/esm2015/foehn-input/foehn-input-phone.component.js +0 -96
  512. package/esm2015/foehn-input/foehn-input-text.component.js +0 -80
  513. package/esm2015/foehn-input/foehn-input-textarea.component.js +0 -104
  514. package/esm2015/foehn-input/foehn-input.component.js +0 -364
  515. package/esm2015/foehn-input/foehn-input.module.js +0 -82
  516. package/esm2015/foehn-input-date/foehn-input-date.component.js +0 -94
  517. package/esm2015/foehn-input-time/foehn-input-time.component.js +0 -79
  518. package/esm2015/foehn-list/foehn-list.component.js +0 -135
  519. package/esm2015/foehn-list/foehn-list.module.js +0 -19
  520. package/esm2015/foehn-menu-prestation/abstract-list-item-detail-page.component.js +0 -122
  521. package/esm2015/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.js +0 -26
  522. package/esm2015/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.js +0 -75
  523. package/esm2015/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.js +0 -38
  524. package/esm2015/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.js +0 -54
  525. package/esm2015/foehn-menu-prestation/foehn-menu-prestation.module.js +0 -61
  526. package/esm2015/foehn-modal/foehn-modal.component.js +0 -100
  527. package/esm2015/foehn-modal/foehn-modal.module.js +0 -19
  528. package/esm2015/foehn-nav13/foehn-input-nav13.component.js +0 -98
  529. package/esm2015/foehn-nav13/foehn-input-nav13.module.js +0 -34
  530. package/esm2015/foehn-navigation/foehn-navigation.component.js +0 -98
  531. package/esm2015/foehn-navigation/foehn-navigation.module.js +0 -34
  532. package/esm2015/foehn-navigation/foehn-navigation.service.js +0 -297
  533. package/esm2015/foehn-notfound/foehn-notfound.module.js +0 -20
  534. package/esm2015/foehn-page/foehn-page-modal.component.js +0 -55
  535. package/esm2015/foehn-page/foehn-page.component.js +0 -214
  536. package/esm2015/foehn-page/foehn-page.module.js +0 -76
  537. package/esm2015/foehn-recap-section/foehn-recap-section.component.js +0 -88
  538. package/esm2015/foehn-recap-section/foehn-recap-section.module.js +0 -20
  539. package/esm2015/foehn-upload/abstract-foehn-uploader.component.js +0 -192
  540. package/esm2015/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.js +0 -62
  541. package/esm2015/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.js +0 -168
  542. package/esm2015/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.js +0 -38
  543. package/esm2015/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.js +0 -217
  544. package/esm2015/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.js +0 -38
  545. package/esm2015/foehn-upload/foehn-multi-upload/multi-upload.service.js +0 -76
  546. package/esm2015/foehn-upload/foehn-multi-upload/pending-upload.service.js +0 -157
  547. package/esm2015/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.js +0 -164
  548. package/esm2015/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.js +0 -42
  549. package/esm2015/foehn-upload/uploader.helper.js +0 -322
  550. package/esm2015/foehn-validation-alert-summary/foehn-validation-alert-summary.component.js +0 -88
  551. package/esm2015/foehn-validation-alert-summary/foehn-validation-alert-summary.module.js +0 -19
  552. package/esm2015/foehn-validation-alerts/foehn-validation-alerts.component.js +0 -32
  553. package/esm2015/gesdem/gesdem-event.service.js +0 -38
  554. package/esm2015/gesdem/gesdem-handler.service.js +0 -151
  555. package/esm2015/gesdem/gesdem-loader.guard.js +0 -40
  556. package/esm2015/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.js +0 -103
  557. package/esm2015/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.js +0 -133
  558. package/esm2015/gesdem-action-recovery/gesdem-action-recovery.module.js +0 -52
  559. package/esm2015/gesdem-action-recovery/gesdem-action-recovery.service.js +0 -82
  560. package/esm2015/gesdem-confirmation/gesdem-confirmation.component.js +0 -194
  561. package/esm2015/gesdem-confirmation/gesdem-confirmation.module.js +0 -34
  562. package/esm2015/gesdem-error/gesdem-error.component.js +0 -70
  563. package/esm2015/gesdem-error/gesdem-error.module.js +0 -34
  564. package/esm2015/helpers/object.helper.js +0 -88
  565. package/esm2015/index.js +0 -224
  566. package/esm2015/sdk-appinfo/application-info.js +0 -14
  567. package/esm2015/sdk-appinfo/application-info.service.js +0 -111
  568. package/esm2015/sdk-date/date.helper.js +0 -90
  569. package/esm2015/sdk-dictionary/default-dictionary.js +0 -80
  570. package/esm2015/sdk-dictionary/sdk-dictionary.service.js +0 -96
  571. package/esm2015/sdk-epayment/model/EPaymentRequest.js +0 -3
  572. package/esm2015/sdk-epayment/sdk-epayment.component.js +0 -113
  573. package/esm2015/sdk-epayment/sdk-epayment.module.js +0 -21
  574. package/esm2015/sdk-epayment/sdk-epayment.service.js +0 -46
  575. package/esm2015/sdk-recaptcha/recaptcha.service.js +0 -162
  576. package/esm2015/sdk-recaptcha/sdk-recaptcha.component.js +0 -72
  577. package/esm2015/sdk-recaptcha/sdk-recaptcha.module.js +0 -19
  578. package/esm2015/sdk-redirect/iam-expired-interceptor.service.js +0 -48
  579. package/esm2015/sdk-redirect/redirect.component.js +0 -47
  580. package/esm2015/sdk-redirect/sdk-redirect.module.js +0 -19
  581. package/esm2015/sdk-session-info/session-info.service.js +0 -44
  582. package/esm2015/sdk-support-alert/support-alert-container.component.js +0 -53
  583. package/esm2015/sdk-support-alert/support-alert.component.js +0 -38
  584. package/esm2015/sdk-support-alert/support-alert.module.js +0 -21
  585. package/esm2015/sdk-support-alert/support-alert.service.js +0 -113
  586. package/esm2015/supported-browser.js +0 -2
  587. package/esm2015/validation/validation-handler.service.js +0 -44
  588. package/fesm2015/dsivd-prestations-ng.js +0 -11618
  589. package/fesm2015/dsivd-prestations-ng.js.map +0 -1
  590. package/sdk-epayment/model/EPaymentRequest.d.ts +0 -5
@@ -0,0 +1,387 @@
1
+ import { Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewChildren } from '@angular/core';
2
+ import dayjs from 'dayjs';
3
+ import isToday from 'dayjs/plugin/isToday';
4
+ import { distinctUntilChanged, first } from 'rxjs/operators';
5
+ import { DatePickerHelper } from './date-picker.helper';
6
+ import { DatePickerNavigationHelper } from './date-picker-navigation.helper';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "../sdk-dictionary/sdk-dictionary.service";
9
+ import * as i2 from "@angular/common";
10
+ import * as i3 from "../foehn-icons/foehn-icon-chevron-left.component";
11
+ import * as i4 from "../foehn-icons/foehn-icon-chevron-right.component";
12
+ import * as i5 from "@angular/cdk/a11y";
13
+ import * as i6 from "../foehn-checkables/foehn-select.component";
14
+ import * as i7 from "../foehn-misc/foehn-abbr.component";
15
+ import * as i8 from "../sdk-dictionary/sdk-dictionary.pipe";
16
+ dayjs.extend(isToday);
17
+ export class FoehnDatePickerComponent {
18
+ constructor(dictionary, ngZone, changeDetector) {
19
+ this.dictionary = dictionary;
20
+ this.ngZone = ngZone;
21
+ this.changeDetector = changeDetector;
22
+ this.minYear = dayjs().year() - 100;
23
+ this.maxYear = dayjs().year() + 10;
24
+ this.closeable = true;
25
+ this.modelChange = new EventEmitter();
26
+ this.userInput = new EventEmitter();
27
+ this.isDatepickerVisibleChange = new EventEmitter();
28
+ this.weekDays = [];
29
+ this.monthListItem = [];
30
+ this.yearListItem = [];
31
+ this.isVisible = false;
32
+ this.keyboardNavigationAllowed = false;
33
+ this.datePickerHelper = new DatePickerHelper();
34
+ this.datePickerNavigationHelper = new DatePickerNavigationHelper();
35
+ this.currentMonthYear = this.datePickerHelper.displayedMonthYear;
36
+ // eslint-disable-next-line rxjs-angular/prefer-async-pipe
37
+ this.displayNextMonthSubscription = this.datePickerNavigationHelper.displayNextMonth.subscribe(() => this.nextMonth());
38
+ // eslint-disable-next-line rxjs-angular/prefer-async-pipe
39
+ this.displayPreviousMonthSubscription = this.datePickerNavigationHelper.displayPreviousMonth.subscribe(() => this.previousMonth());
40
+ }
41
+ get isDatepickerVisible() {
42
+ return this.isVisible;
43
+ }
44
+ set isDatepickerVisible(val) {
45
+ // Store the previous value to handle transitions from one state to another.
46
+ const wasOpen = this.isVisible;
47
+ // Ensure we always initialize date picker depending on it's model
48
+ if (!wasOpen && this.closeable) {
49
+ this.onModelChange(this.model);
50
+ }
51
+ this.isVisible = val;
52
+ this.isDatepickerVisibleChange.emit(this.isVisible);
53
+ this.focusDefaultDay();
54
+ this.focusOnDatepickerTrigger(wasOpen, val);
55
+ }
56
+ // eslint-disable-next-line @typescript-eslint/member-ordering
57
+ get model() {
58
+ return this.model_;
59
+ }
60
+ set model(value) {
61
+ this.onModelChange(value);
62
+ }
63
+ handleKeyboardUpEvent(event) {
64
+ if (this.closeable && event.key === 'Escape') {
65
+ this.isDatepickerVisible = false;
66
+ }
67
+ }
68
+ handleKeyboardDownEvent(event) {
69
+ if (this.keyboardNavigationAllowed) {
70
+ this.onKeyDownInner(event);
71
+ }
72
+ }
73
+ ngOnInit() {
74
+ // Ensures that the host has an Id for instrumentalization of the DOM by automated tests.
75
+ this.hostId = this.buildId();
76
+ this.datePickerNavigationHelper.hostId = this.hostId;
77
+ this.currentLanguageCodeSubscription = this.dictionary
78
+ .getCurrentLanguageCode()
79
+ .pipe(distinctUntilChanged())
80
+ // eslint-disable-next-line rxjs-angular/prefer-async-pipe
81
+ .subscribe((code) => {
82
+ this.datePickerHelper
83
+ .loadLocale(code)
84
+ .catch(() => {
85
+ console.warn(`locale '${code}' does not exist. Fallback to 'en.'`);
86
+ })
87
+ .then(() => {
88
+ this.initializeDatepicker();
89
+ });
90
+ });
91
+ }
92
+ ngAfterViewInit() {
93
+ // eslint-disable-next-line rxjs-angular/prefer-async-pipe
94
+ this.daysButtonsElemRef.changes.subscribe(() => {
95
+ // For tests purpose, when setting component minDate, avoids having error:
96
+ // "NG0100: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.
97
+ // Previous value for 'tabindex': '-1'. Current value: '0'"
98
+ this.changeDetector.detectChanges();
99
+ this.datePickerNavigationHelper.daysButtonsElemRef = this.daysButtonsElemRef;
100
+ });
101
+ }
102
+ ngOnDestroy() {
103
+ if (!!this.currentLanguageCodeSubscription) {
104
+ this.currentLanguageCodeSubscription.unsubscribe();
105
+ }
106
+ if (!!this.displayNextMonthSubscription) {
107
+ this.displayNextMonthSubscription.unsubscribe();
108
+ }
109
+ if (!!this.displayPreviousMonthSubscription) {
110
+ this.displayPreviousMonthSubscription.unsubscribe();
111
+ }
112
+ }
113
+ onModelChange(value) {
114
+ if (!!value &&
115
+ value.length > 2 &&
116
+ !!value[0] &&
117
+ value[0] >= this.minYear &&
118
+ !!value[1] &&
119
+ !!value[2]) {
120
+ const dateAsString = `${value[0]}-${value[1]}-${value[2]}`;
121
+ if (dayjs(dateAsString).isValid()) {
122
+ this.setDate(dayjs(dateAsString));
123
+ }
124
+ }
125
+ else if (this.selectedDate) {
126
+ this.setDate(null);
127
+ }
128
+ this.updateNgModel(value);
129
+ }
130
+ updateNgModel(value) {
131
+ this.model_ = value;
132
+ this.modelChange.emit(value);
133
+ }
134
+ buildId(suffix = '') {
135
+ // The baseId is either an id given by the user or the value of the name.
136
+ // For integration purposes, the container foehn-* must have an Id.
137
+ const baseId = this.id || this.name;
138
+ if (!baseId) {
139
+ return !!suffix ? suffix : null;
140
+ }
141
+ return `${baseId}${suffix}`;
142
+ }
143
+ isToday(date) {
144
+ return date.isToday();
145
+ }
146
+ isSelected(date) {
147
+ if (!this.selectedDate) {
148
+ return false;
149
+ }
150
+ return date.isSame(this.selectedDate);
151
+ }
152
+ handleUserInput(date) {
153
+ const dateAsArray = this.getDateAsArray(date);
154
+ this.userInput.next(dateAsArray);
155
+ this.updateNgModel(dateAsArray);
156
+ }
157
+ previousMonth() {
158
+ this.weeks = this.datePickerHelper.getPreviousWeeksOfMonth();
159
+ }
160
+ nextMonth() {
161
+ this.weeks = this.datePickerHelper.getNextWeeksOfMonth();
162
+ }
163
+ userInputMonth(month) {
164
+ this.weeks = this.datePickerHelper.getWeeksOfMonth(this.datePickerHelper.initialYear, (+month + 1).toString(), this.datePickerHelper.initialDay);
165
+ }
166
+ userInputYear(year) {
167
+ this.weeks = this.datePickerHelper.getWeeksOfMonth(year, this.datePickerHelper.initialMonth, this.datePickerHelper.initialDay);
168
+ }
169
+ getMonthAsReadable(monthIndex) {
170
+ return this.monthListItem.find(elem => elem.value === monthIndex).label;
171
+ }
172
+ onDaysFocusin() {
173
+ this.keyboardNavigationAllowed = true;
174
+ this.datePickerNavigationHelper.currentFocusedElement =
175
+ document.activeElement;
176
+ }
177
+ onDaysFocusout() {
178
+ this.keyboardNavigationAllowed = false;
179
+ }
180
+ getDayTabIndex(day) {
181
+ if (!this.isDateInRange(day.date)) {
182
+ return -1;
183
+ }
184
+ if (this.selectedDate &&
185
+ this.selectedDate.month() === day.date.month() &&
186
+ this.selectedDate.year() === day.date.year()) {
187
+ if (this.selectedDate.date() === day.date.date()) {
188
+ return 0;
189
+ }
190
+ return -1;
191
+ }
192
+ if (this.isToday(day.date)) {
193
+ return 0;
194
+ }
195
+ const daysInWeek = [...this.daysButtonsElemRef.toArray()].filter(value => value.nativeElement.getAttribute('disabled') === null);
196
+ if (!!daysInWeek.length &&
197
+ day.isCurrentMonth &&
198
+ day.dayOfMonth.toString() ===
199
+ daysInWeek[0].nativeElement.getAttribute('day-number') &&
200
+ (day.date.month() !== dayjs().month() ||
201
+ day.date.year() !== dayjs().year())) {
202
+ return 0;
203
+ }
204
+ return -1;
205
+ }
206
+ focusDefaultDay() {
207
+ // Have to wait for a micro task empty as we're affecting the DOM outside of the Angular lifecycle.
208
+ // eslint-disable-next-line rxjs-angular/prefer-async-pipe
209
+ this.ngZone.onMicrotaskEmpty.pipe(first()).subscribe(() => {
210
+ if (this.isVisible && this.datepickerTriggerHtmlElement) {
211
+ this.datePickerNavigationHelper.focusDefaultDay(!!this.selectedDate);
212
+ }
213
+ });
214
+ }
215
+ getDayDisabledAttribute(dayOfWeek) {
216
+ if (!dayOfWeek.isCurrentMonth) {
217
+ return 'disabled';
218
+ }
219
+ if (!this.isDateInRange(dayOfWeek.date)) {
220
+ return 'disabled';
221
+ }
222
+ return null;
223
+ }
224
+ isPreviousMonthDisabled(monthYear) {
225
+ return monthYear.year === this.minYear.toString() &&
226
+ monthYear.month === '0'
227
+ ? 'disabled'
228
+ : null;
229
+ }
230
+ isNextMonthDisabled(monthYear) {
231
+ return monthYear.year === this.maxYear.toString() &&
232
+ monthYear.month === '11'
233
+ ? 'disabled'
234
+ : null;
235
+ }
236
+ isDateInRange(date) {
237
+ // Min year and date management
238
+ const minDateAsString = DatePickerHelper.getDateAsString(this.minDate);
239
+ if (minDateAsString) {
240
+ const minDateAsDayjs = dayjs(minDateAsString);
241
+ if (minDateAsDayjs.isValid() && date.isBefore(minDateAsDayjs)) {
242
+ return false;
243
+ }
244
+ }
245
+ if (date.year() < this.minYear) {
246
+ return false;
247
+ }
248
+ // Max year and date management
249
+ const maxDateAsString = DatePickerHelper.getDateAsString(this.maxDate);
250
+ if (maxDateAsString) {
251
+ const maxDateAsDayjs = dayjs(maxDateAsString);
252
+ if (maxDateAsDayjs.isValid() &&
253
+ date.isAfter(maxDateAsDayjs) &&
254
+ date.year() <= maxDateAsDayjs.year()) {
255
+ return false;
256
+ }
257
+ }
258
+ return date.year() <= this.maxYear;
259
+ }
260
+ initializeDatepicker() {
261
+ this.populateMonthList();
262
+ this.populateYearList();
263
+ this.weekDays = this.datePickerHelper.getWeekDays();
264
+ this.weeks = this.datePickerHelper.getWeeksOfMonth(dayjs().format(this.datePickerHelper.YEAR_STRING_FORMAT), dayjs().format(this.datePickerHelper.MONTH_STRING_NUMBER_FORMAT));
265
+ }
266
+ setDate(date) {
267
+ this.selectedDate = date;
268
+ // Either we have a date to set or we take today
269
+ const dateToFormat = date ? date : dayjs();
270
+ this.weeks = this.datePickerHelper.getWeeksOfMonth(dateToFormat.format(this.datePickerHelper.YEAR_STRING_FORMAT), dateToFormat.format(this.datePickerHelper.MONTH_STRING_NUMBER_FORMAT), dateToFormat.format(this.datePickerHelper.DAY_STRING_NUMBER_FORMAT));
271
+ }
272
+ getDateAsArray(date) {
273
+ return [
274
+ +date.format(this.datePickerHelper.YEAR_STRING_FORMAT),
275
+ +date.format(this.datePickerHelper.MONTH_STRING_NUMBER_FORMAT),
276
+ +date.format(this.datePickerHelper.DAY_STRING_NUMBER_FORMAT)
277
+ ];
278
+ }
279
+ focusOnDatepickerTrigger(wasOpen, isVisible) {
280
+ // Focus back on the trigger. No need for a setTimeout as the trigger should still be in the DOM.
281
+ // Only does it when the modal is closed from a open state to avoid to set
282
+ // the focus when the page loads.
283
+ if (wasOpen && !isVisible && this.datepickerTriggerHtmlElement) {
284
+ this.datepickerTriggerHtmlElement.focus();
285
+ }
286
+ }
287
+ populateMonthList() {
288
+ this.monthListItem = dayjs()
289
+ .localeData()
290
+ .months()
291
+ .map((month, index) => ({
292
+ label: month,
293
+ value: index.toString()
294
+ }));
295
+ }
296
+ populateYearList() {
297
+ const range = (start, end) => Array.from({ length: end - start + 1 }, (v, k) => k + start);
298
+ if (!!this.minDate && !!this.minDate.length) {
299
+ this.minYear = this.minDate[0];
300
+ }
301
+ if (!!this.maxDate && !!this.maxDate.length) {
302
+ this.maxYear = this.maxDate[0];
303
+ }
304
+ this.yearListItem = range(this.minYear, this.maxYear).map((year) => ({
305
+ label: year.toString(),
306
+ value: year.toString()
307
+ }));
308
+ }
309
+ onKeyDownInner(keyEvent) {
310
+ // IE doesn't support keyEvent.code, and has different values
311
+ // in keyEvent.key (Down instead of ArrowDown for instance), hence the multi-support.
312
+ const ie11CompatibleCode = keyEvent.code || keyEvent.key;
313
+ switch (ie11CompatibleCode) {
314
+ case 'Down':
315
+ case 'ArrowDown':
316
+ this.datePickerNavigationHelper.focusNextWeekDay();
317
+ break;
318
+ case 'Up':
319
+ case 'ArrowUp':
320
+ this.datePickerNavigationHelper.focusPreviousWeekDay();
321
+ break;
322
+ case 'Space':
323
+ case 'Spacebar':
324
+ case 'Enter':
325
+ document.activeElement.dispatchEvent(new Event('click'));
326
+ break;
327
+ case 'Right':
328
+ case 'ArrowRight':
329
+ this.datePickerNavigationHelper.focusNextDay();
330
+ break;
331
+ case 'Left':
332
+ case 'ArrowLeft':
333
+ this.datePickerNavigationHelper.focusPreviousDay();
334
+ break;
335
+ default:
336
+ return true;
337
+ }
338
+ keyEvent.preventDefault();
339
+ keyEvent.stopPropagation();
340
+ return false;
341
+ }
342
+ }
343
+ FoehnDatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: FoehnDatePickerComponent, deps: [{ token: i1.SdkDictionaryService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
344
+ FoehnDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: FoehnDatePickerComponent, selector: "foehn-date-picker", inputs: { id: "id", name: "name", minYear: "minYear", maxYear: "maxYear", minDate: "minDate", maxDate: "maxDate", datepickerTriggerHtmlElement: "datepickerTriggerHtmlElement", closeable: "closeable", isDatepickerVisible: "isDatepickerVisible", model: "model" }, outputs: { modelChange: "modelChange", userInput: "userInput", isDatepickerVisibleChange: "isDatepickerVisibleChange" }, host: { listeners: { "keyup": "handleKeyboardUpEvent($event)", "keydown": "handleKeyboardDownEvent($event)" }, properties: { "attr.id": "this.hostId" } }, viewQueries: [{ propertyName: "daysButtonsElemRef", predicate: ["dayButtonElemRef"], descendants: true }], ngImport: i0, template: "<div\n [id]=\"buildId('datepicker_wrapper')\"\n class=\"datepicker_wrapper\"\n *ngIf=\"isDatepickerVisible\"\n [cdkTrapFocus]=\"!!datepickerTriggerHtmlElement\"\n tabindex=\"-1\"\n role=\"application\"\n [attr.aria-label]=\"\n 'foehn-date-picker.container.aria-label' | fromDictionary\n \"\n>\n <button\n *ngIf=\"closeable\"\n (click)=\"isDatepickerVisible = false\"\n type=\"button\"\n class=\"btn close\"\n [attr.aria-label]=\"\n 'foehn-date-picker.close-button.aria-label' | fromDictionary\n \"\n [id]=\"buildId('closeButton')\"\n >\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <div\n [id]=\"buildId('datepicker_header')\"\n class=\"d-flex justify-content-between datepicker_header\"\n >\n <ng-container *ngIf=\"currentMonthYear | async as monthYear\">\n <button\n [id]=\"buildId('previous-month')\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"previousMonth()\"\n [attr.disabled]=\"isPreviousMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-left\n [title]=\"\n 'foehn-date-picker.previous-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n </button>\n <span\n [id]=\"buildId('month-year-label')\"\n aria-live=\"polite\"\n class=\"sr-only\"\n >\n {{\n 'foehn-date-picker.screen-reader.actual-month-displayed'\n | fromDictionary\n }}\n {{ getMonthAsReadable(monthYear.month) }} {{ monthYear.year }}\n </span>\n <foehn-select\n [id]=\"buildId('month-input')\"\n class=\"align-self-center month-input\"\n [label]=\"\n 'foehn-date-picker.screen-reader.month-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"monthListItem\"\n [model]=\"monthYear.month\"\n [required]=\"true\"\n (userInput)=\"userInputMonth($event)\"\n ></foehn-select>\n <foehn-select\n [id]=\"buildId('year-input')\"\n class=\"align-self-center\"\n [label]=\"\n 'foehn-date-picker.screen-reader.year-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"yearListItem\"\n [model]=\"monthYear.year\"\n [required]=\"true\"\n (userInput)=\"userInputYear($event)\"\n ></foehn-select>\n <button\n [id]=\"buildId('next-month')\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"nextMonth()\"\n [attr.disabled]=\"isNextMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-right\n [title]=\"\n 'foehn-date-picker.next-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </button>\n </ng-container>\n </div>\n <table\n [id]=\"buildId('datepicker_table')\"\n role=\"grid\"\n (focusin)=\"onDaysFocusin()\"\n (focusout)=\"onDaysFocusout()\"\n >\n <thead role=\"presentation\" aria-hidden=\"true\">\n <tr role=\"row\">\n <th\n scope=\"col\"\n role=\"columnheader\"\n *ngFor=\"let weekday of weekDays\"\n >\n <foehn-abbr\n [text]=\"weekday.substr(0, 2)\"\n [title]=\"weekday\"\n ></foehn-abbr>\n </th>\n </tr>\n </thead>\n <tbody role=\"presentation\">\n <tr role=\"row\" *ngFor=\"let week of weeks; let indexRow = index\">\n <td\n role=\"gridcell\"\n *ngFor=\"let dayOfWeek of week; let indexColumn = index\"\n >\n <button\n class=\"btn w-100\"\n #dayButtonElemRef\n [hidden]=\"!dayOfWeek.isCurrentMonth\"\n [id]=\"buildId('day_' + indexRow + '_' + indexColumn)\"\n [tabindex]=\"getDayTabIndex(dayOfWeek)\"\n [class.btn-info]=\"!isToday(dayOfWeek.date)\"\n [class.btn-secondary]=\"isToday(dayOfWeek.date)\"\n [class.btn-danger]=\"isSelected(dayOfWeek.date)\"\n [attr.aria-label]=\"\n weekDays[indexColumn] +\n ' ' +\n dayOfWeek.dateAsReadable\n \"\n [attr.data-is-today]=\"isToday(dayOfWeek.date)\"\n [attr.data-is-selected]=\"isSelected(dayOfWeek.date)\"\n [attr.data-row-index]=\"indexRow\"\n [attr.data-column-index]=\"indexColumn\"\n [attr.day-number]=\"dayOfWeek.dayOfMonth\"\n [attr.disabled]=\"getDayDisabledAttribute(dayOfWeek)\"\n (click)=\"handleUserInput(dayOfWeek.date)\"\n >\n {{ dayOfWeek.dayOfMonth }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n", styles: [":host ::ng-deep .btn-link .svg-inline--fa{color:#000!important}.datepicker_header{margin-bottom:5px}.datepicker_wrapper{max-width:245px;padding:5px;border:1px solid #dfdfdf;background-color:#fff}.datepicker_wrapper .h4{margin-bottom:0}.datepicker_wrapper thead th{text-align:center;width:15%}.datepicker_wrapper .btn{padding:2px 4px}.datepicker_wrapper button.close{position:absolute;right:-14px;top:-18px;background-color:#fff;border:1px solid #dfdfdf;border-radius:50%;width:30px;height:30px;opacity:1}.datepicker_wrapper .month-input{width:50%;margin-right:5px}:host ::ng-deep foehn-select select.form-control{padding:0;margin:0;height:30px}:host ::ng-deep foehn-select .form-group{margin:0}.btn-info:disabled{cursor:not-allowed}.datepicker-nav-month-btn:disabled{opacity:.25}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FoehnIconChevronLeftComponent, selector: "foehn-icon-chevron-left" }, { kind: "component", type: i4.FoehnIconChevronRightComponent, selector: "foehn-icon-chevron-right" }, { kind: "directive", type: i5.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: i6.FoehnSelectComponent, selector: "foehn-select", inputs: ["multiple", "noSelectionLabel"] }, { kind: "component", type: i7.FoehnAbbrComponent, selector: "foehn-abbr", inputs: ["title", "text"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.SdkDictionaryPipe, name: "fromDictionary" }] });
345
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: FoehnDatePickerComponent, decorators: [{
346
+ type: Component,
347
+ args: [{ selector: 'foehn-date-picker', template: "<div\n [id]=\"buildId('datepicker_wrapper')\"\n class=\"datepicker_wrapper\"\n *ngIf=\"isDatepickerVisible\"\n [cdkTrapFocus]=\"!!datepickerTriggerHtmlElement\"\n tabindex=\"-1\"\n role=\"application\"\n [attr.aria-label]=\"\n 'foehn-date-picker.container.aria-label' | fromDictionary\n \"\n>\n <button\n *ngIf=\"closeable\"\n (click)=\"isDatepickerVisible = false\"\n type=\"button\"\n class=\"btn close\"\n [attr.aria-label]=\"\n 'foehn-date-picker.close-button.aria-label' | fromDictionary\n \"\n [id]=\"buildId('closeButton')\"\n >\n <span aria-hidden=\"true\">&times;</span>\n </button>\n <div\n [id]=\"buildId('datepicker_header')\"\n class=\"d-flex justify-content-between datepicker_header\"\n >\n <ng-container *ngIf=\"currentMonthYear | async as monthYear\">\n <button\n [id]=\"buildId('previous-month')\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"previousMonth()\"\n [attr.disabled]=\"isPreviousMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-left\n [title]=\"\n 'foehn-date-picker.previous-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n </button>\n <span\n [id]=\"buildId('month-year-label')\"\n aria-live=\"polite\"\n class=\"sr-only\"\n >\n {{\n 'foehn-date-picker.screen-reader.actual-month-displayed'\n | fromDictionary\n }}\n {{ getMonthAsReadable(monthYear.month) }} {{ monthYear.year }}\n </span>\n <foehn-select\n [id]=\"buildId('month-input')\"\n class=\"align-self-center month-input\"\n [label]=\"\n 'foehn-date-picker.screen-reader.month-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"monthListItem\"\n [model]=\"monthYear.month\"\n [required]=\"true\"\n (userInput)=\"userInputMonth($event)\"\n ></foehn-select>\n <foehn-select\n [id]=\"buildId('year-input')\"\n class=\"align-self-center\"\n [label]=\"\n 'foehn-date-picker.screen-reader.year-input.label'\n | fromDictionary\n \"\n [isLabelSrOnly]=\"true\"\n [elements]=\"yearListItem\"\n [model]=\"monthYear.year\"\n [required]=\"true\"\n (userInput)=\"userInputYear($event)\"\n ></foehn-select>\n <button\n [id]=\"buildId('next-month')\"\n class=\"btn btn-link datepicker-nav-month-btn\"\n (click)=\"nextMonth()\"\n [attr.disabled]=\"isNextMonthDisabled(monthYear)\"\n >\n <foehn-icon-chevron-right\n [title]=\"\n 'foehn-date-picker.next-month-button.title'\n | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </button>\n </ng-container>\n </div>\n <table\n [id]=\"buildId('datepicker_table')\"\n role=\"grid\"\n (focusin)=\"onDaysFocusin()\"\n (focusout)=\"onDaysFocusout()\"\n >\n <thead role=\"presentation\" aria-hidden=\"true\">\n <tr role=\"row\">\n <th\n scope=\"col\"\n role=\"columnheader\"\n *ngFor=\"let weekday of weekDays\"\n >\n <foehn-abbr\n [text]=\"weekday.substr(0, 2)\"\n [title]=\"weekday\"\n ></foehn-abbr>\n </th>\n </tr>\n </thead>\n <tbody role=\"presentation\">\n <tr role=\"row\" *ngFor=\"let week of weeks; let indexRow = index\">\n <td\n role=\"gridcell\"\n *ngFor=\"let dayOfWeek of week; let indexColumn = index\"\n >\n <button\n class=\"btn w-100\"\n #dayButtonElemRef\n [hidden]=\"!dayOfWeek.isCurrentMonth\"\n [id]=\"buildId('day_' + indexRow + '_' + indexColumn)\"\n [tabindex]=\"getDayTabIndex(dayOfWeek)\"\n [class.btn-info]=\"!isToday(dayOfWeek.date)\"\n [class.btn-secondary]=\"isToday(dayOfWeek.date)\"\n [class.btn-danger]=\"isSelected(dayOfWeek.date)\"\n [attr.aria-label]=\"\n weekDays[indexColumn] +\n ' ' +\n dayOfWeek.dateAsReadable\n \"\n [attr.data-is-today]=\"isToday(dayOfWeek.date)\"\n [attr.data-is-selected]=\"isSelected(dayOfWeek.date)\"\n [attr.data-row-index]=\"indexRow\"\n [attr.data-column-index]=\"indexColumn\"\n [attr.day-number]=\"dayOfWeek.dayOfMonth\"\n [attr.disabled]=\"getDayDisabledAttribute(dayOfWeek)\"\n (click)=\"handleUserInput(dayOfWeek.date)\"\n >\n {{ dayOfWeek.dayOfMonth }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n", styles: [":host ::ng-deep .btn-link .svg-inline--fa{color:#000!important}.datepicker_header{margin-bottom:5px}.datepicker_wrapper{max-width:245px;padding:5px;border:1px solid #dfdfdf;background-color:#fff}.datepicker_wrapper .h4{margin-bottom:0}.datepicker_wrapper thead th{text-align:center;width:15%}.datepicker_wrapper .btn{padding:2px 4px}.datepicker_wrapper button.close{position:absolute;right:-14px;top:-18px;background-color:#fff;border:1px solid #dfdfdf;border-radius:50%;width:30px;height:30px;opacity:1}.datepicker_wrapper .month-input{width:50%;margin-right:5px}:host ::ng-deep foehn-select select.form-control{padding:0;margin:0;height:30px}:host ::ng-deep foehn-select .form-group{margin:0}.btn-info:disabled{cursor:not-allowed}.datepicker-nav-month-btn:disabled{opacity:.25}\n"] }]
348
+ }], ctorParameters: function () { return [{ type: i1.SdkDictionaryService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { id: [{
349
+ type: Input
350
+ }], name: [{
351
+ type: Input
352
+ }], minYear: [{
353
+ type: Input
354
+ }], maxYear: [{
355
+ type: Input
356
+ }], minDate: [{
357
+ type: Input
358
+ }], maxDate: [{
359
+ type: Input
360
+ }], datepickerTriggerHtmlElement: [{
361
+ type: Input
362
+ }], closeable: [{
363
+ type: Input
364
+ }], modelChange: [{
365
+ type: Output
366
+ }], userInput: [{
367
+ type: Output
368
+ }], isDatepickerVisibleChange: [{
369
+ type: Output
370
+ }], hostId: [{
371
+ type: HostBinding,
372
+ args: ['attr.id']
373
+ }], daysButtonsElemRef: [{
374
+ type: ViewChildren,
375
+ args: ['dayButtonElemRef']
376
+ }], isDatepickerVisible: [{
377
+ type: Input
378
+ }], model: [{
379
+ type: Input
380
+ }], handleKeyboardUpEvent: [{
381
+ type: HostListener,
382
+ args: ['keyup', ['$event']]
383
+ }], handleKeyboardDownEvent: [{
384
+ type: HostListener,
385
+ args: ['keydown', ['$event']]
386
+ }] } });
387
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWRhdGUtcGlja2VyL2ZvZWhuLWRhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1kYXRlLXBpY2tlci9mb2Vobi1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4sWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7QUFJN0UsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQU90QixNQUFNLE9BQU8sd0JBQXdCO0lBNERqQyxZQUNZLFVBQWdDLEVBQ2hDLE1BQWMsRUFDZCxjQUFpQztRQUZqQyxlQUFVLEdBQVYsVUFBVSxDQUFzQjtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBdEQ3QyxZQUFPLEdBQUcsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBRy9CLFlBQU8sR0FBRyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENB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QUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRakMsdUJBQXVCO3NCQUR0QixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCBpc1RvZGF5IGZyb20gJ2RheWpzL3BsdWdpbi9pc1RvZGF5JztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGb3JtU2VsZWN0T3B0aW9uIH0gZnJvbSAnLi4vZm9laG4tY2hlY2thYmxlcy9mb3JtLXNlbGVjdC1vcHRpb24nO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVQaWNrZXJIZWxwZXIgfSBmcm9tICcuL2RhdGUtcGlja2VyLmhlbHBlcic7XG5pbXBvcnQgeyBEYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlciB9IGZyb20gJy4vZGF0ZS1waWNrZXItbmF2aWdhdGlvbi5oZWxwZXInO1xuaW1wb3J0IHsgRGF5TW9udGggfSBmcm9tICcuL2RheS1tb250aC50eXBlJztcbmltcG9ydCB7IE1vbnRoWWVhciB9IGZyb20gJy4vbW9udGgteWVhci50eXBlJztcblxuZGF5anMuZXh0ZW5kKGlzVG9kYXkpO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWRhdGUtcGlja2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLWRhdGUtcGlja2VyLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobkRhdGVQaWNrZXJDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgICBASW5wdXQoKVxuICAgIGlkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIG5hbWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgbWluWWVhciA9IGRheWpzKCkueWVhcigpIC0gMTAwO1xuXG4gICAgQElucHV0KClcbiAgICBtYXhZZWFyID0gZGF5anMoKS55ZWFyKCkgKyAxMDtcblxuICAgIEBJbnB1dCgpXG4gICAgbWluRGF0ZTogbnVtYmVyW107XG5cbiAgICBASW5wdXQoKVxuICAgIG1heERhdGU6IG51bWJlcltdO1xuXG4gICAgQElucHV0KClcbiAgICBkYXRlcGlja2VyVHJpZ2dlckh0bWxFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VhYmxlID0gdHJ1ZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIG1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXJbXT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHVzZXJJbnB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyW10+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBpc0RhdGVwaWNrZXJWaXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBob3N0SWQ6IHN0cmluZztcblxuICAgIEBWaWV3Q2hpbGRyZW4oJ2RheUJ1dHRvbkVsZW1SZWYnKVxuICAgIGRheXNCdXR0b25zRWxlbVJlZjogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gICAgd2Vla0RheXM6IHN0cmluZ1tdID0gW107XG4gICAgd2Vla3M6IERheU1vbnRoW11bXTtcblxuICAgIHNlbGVjdGVkRGF0ZTogZGF5anMuRGF5anM7XG4gICAgY3VycmVudE1vbnRoWWVhcjogT2JzZXJ2YWJsZTxNb250aFllYXI+O1xuXG4gICAgbW9kZWxfOiBudW1iZXJbXTtcbiAgICBtb250aExpc3RJdGVtOiBGb3JtU2VsZWN0T3B0aW9uW10gPSBbXTtcbiAgICB5ZWFyTGlzdEl0ZW06IEZvcm1TZWxlY3RPcHRpb25bXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBpc1Zpc2libGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIGtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGN1cnJlbnRMYW5ndWFnZUNvZGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIGRhdGVQaWNrZXJIZWxwZXIgPSBuZXcgRGF0ZVBpY2tlckhlbHBlcigpO1xuICAgIHByaXZhdGUgZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIgPSBuZXcgRGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIoKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlzcGxheU5leHRNb250aFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlzcGxheVByZXZpb3VzTW9udGhTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGRpY3Rpb25hcnk6IFNka0RpY3Rpb25hcnlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICB0aGlzLmN1cnJlbnRNb250aFllYXIgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZGlzcGxheWVkTW9udGhZZWFyO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy1hbmd1bGFyL3ByZWZlci1hc3luYy1waXBlXG4gICAgICAgIHRoaXMuZGlzcGxheU5leHRNb250aFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZGlzcGxheU5leHRNb250aC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoKSA9PiB0aGlzLm5leHRNb250aCgpXG4gICAgICAgICk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgdGhpcy5kaXNwbGF5UHJldmlvdXNNb250aFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZGlzcGxheVByZXZpb3VzTW9udGguc3Vic2NyaWJlKFxuICAgICAgICAgICAgKCkgPT4gdGhpcy5wcmV2aW91c01vbnRoKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgaXNEYXRlcGlja2VyVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWaXNpYmxlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGlzRGF0ZXBpY2tlclZpc2libGUodmFsOiBib29sZWFuKSB7XG4gICAgICAgIC8vIFN0b3JlIHRoZSBwcmV2aW91cyB2YWx1ZSB0byBoYW5kbGUgdHJhbnNpdGlvbnMgZnJvbSBvbmUgc3RhdGUgdG8gYW5vdGhlci5cbiAgICAgICAgY29uc3Qgd2FzT3BlbiA9IHRoaXMuaXNWaXNpYmxlO1xuXG4gICAgICAgIC8vIEVuc3VyZSB3ZSBhbHdheXMgaW5pdGlhbGl6ZSBkYXRlIHBpY2tlciBkZXBlbmRpbmcgb24gaXQncyBtb2RlbFxuICAgICAgICBpZiAoIXdhc09wZW4gJiYgdGhpcy5jbG9zZWFibGUpIHtcbiAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLm1vZGVsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNWaXNpYmxlID0gdmFsO1xuICAgICAgICB0aGlzLmlzRGF0ZXBpY2tlclZpc2libGVDaGFuZ2UuZW1pdCh0aGlzLmlzVmlzaWJsZSk7XG5cbiAgICAgICAgdGhpcy5mb2N1c0RlZmF1bHREYXkoKTtcbiAgICAgICAgdGhpcy5mb2N1c09uRGF0ZXBpY2tlclRyaWdnZXIod2FzT3BlbiwgdmFsKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIGdldCBtb2RlbCgpOiBudW1iZXJbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsXztcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBtb2RlbCh2YWx1ZTogbnVtYmVyW10pIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlS2V5Ym9hcmRVcEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlYWJsZSAmJiBldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgICB0aGlzLmlzRGF0ZXBpY2tlclZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWJvYXJkRG93bkV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25LZXlEb3duSW5uZXIoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgaG9zdCBoYXMgYW4gSWQgZm9yIGluc3RydW1lbnRhbGl6YXRpb24gb2YgdGhlIERPTSBieSBhdXRvbWF0ZWQgdGVzdHMuXG4gICAgICAgIHRoaXMuaG9zdElkID0gdGhpcy5idWlsZElkKCk7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuaG9zdElkID0gdGhpcy5ob3N0SWQ7XG5cbiAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2VDb2RlU3Vic2NyaXB0aW9uID0gdGhpcy5kaWN0aW9uYXJ5XG4gICAgICAgICAgICAuZ2V0Q3VycmVudExhbmd1YWdlQ29kZSgpXG4gICAgICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoY29kZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VySGVscGVyXG4gICAgICAgICAgICAgICAgICAgIC5sb2FkTG9jYWxlKGNvZGUpXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYGxvY2FsZSAnJHtjb2RlfScgZG9lcyBub3QgZXhpc3QuIEZhbGxiYWNrIHRvICdlbi4nYFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplRGF0ZXBpY2tlcigpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICB0aGlzLmRheXNCdXR0b25zRWxlbVJlZi5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAvLyBGb3IgdGVzdHMgcHVycG9zZSwgd2hlbiBzZXR0aW5nIGNvbXBvbmVudCBtaW5EYXRlLCBhdm9pZHMgaGF2aW5nIGVycm9yOlxuICAgICAgICAgICAgLy8gXCJORzAxMDA6IEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3I6IEV4cHJlc3Npb24gaGFzIGNoYW5nZWQgYWZ0ZXIgaXQgd2FzIGNoZWNrZWQuXG4gICAgICAgICAgICAvLyBQcmV2aW91cyB2YWx1ZSBmb3IgJ3RhYmluZGV4JzogJy0xJy4gQ3VycmVudCB2YWx1ZTogJzAnXCJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlci5kYXlzQnV0dG9uc0VsZW1SZWYgPSB0aGlzLmRheXNCdXR0b25zRWxlbVJlZjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICghIXRoaXMuY3VycmVudExhbmd1YWdlQ29kZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2VDb2RlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEhdGhpcy5kaXNwbGF5TmV4dE1vbnRoU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlOZXh0TW9udGhTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISF0aGlzLmRpc3BsYXlQcmV2aW91c01vbnRoU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlQcmV2aW91c01vbnRoU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBudW1iZXJbXSk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhIXZhbHVlICYmXG4gICAgICAgICAgICB2YWx1ZS5sZW5ndGggPiAyICYmXG4gICAgICAgICAgICAhIXZhbHVlWzBdICYmXG4gICAgICAgICAgICB2YWx1ZVswXSA+PSB0aGlzLm1pblllYXIgJiZcbiAgICAgICAgICAgICEhdmFsdWVbMV0gJiZcbiAgICAgICAgICAgICEhdmFsdWVbMl1cbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlQXNTdHJpbmcgPSBgJHt2YWx1ZVswXX0tJHt2YWx1ZVsxXX0tJHt2YWx1ZVsyXX1gO1xuICAgICAgICAgICAgaWYgKGRheWpzKGRhdGVBc1N0cmluZykuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRlKGRheWpzKGRhdGVBc1N0cmluZykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgICAgICB0aGlzLnNldERhdGUobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKHZhbHVlKTtcbiAgICB9XG5cbiAgICB1cGRhdGVOZ01vZGVsKHZhbHVlOiBudW1iZXJbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGVsXyA9IHZhbHVlO1xuICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIGJ1aWxkSWQoc3VmZml4OiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gICAgICAgIC8vIFRoZSBiYXNlSWQgaXMgZWl0aGVyIGFuIGlkIGdpdmVuIGJ5IHRoZSB1c2VyIG9yIHRoZSB2YWx1ZSBvZiB0aGUgbmFtZS5cbiAgICAgICAgLy8gRm9yIGludGVncmF0aW9uIHB1cnBvc2VzLCB0aGUgY29udGFpbmVyIGZvZWhuLSogbXVzdCBoYXZlIGFuIElkLlxuICAgICAgICBjb25zdCBiYXNlSWQgPSB0aGlzLmlkIHx8IHRoaXMubmFtZTtcbiAgICAgICAgaWYgKCFiYXNlSWQpIHtcbiAgICAgICAgICAgIHJldHVybiAhIXN1ZmZpeCA/IHN1ZmZpeCA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYCR7YmFzZUlkfSR7c3VmZml4fWA7XG4gICAgfVxuXG4gICAgaXNUb2RheShkYXRlOiBkYXlqcy5EYXlqcyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZGF0ZS5pc1RvZGF5KCk7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChkYXRlOiBkYXlqcy5EYXlqcyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGUuaXNTYW1lKHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICB9XG5cbiAgICBoYW5kbGVVc2VySW5wdXQoZGF0ZTogZGF5anMuRGF5anMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGF0ZUFzQXJyYXkgPSB0aGlzLmdldERhdGVBc0FycmF5KGRhdGUpO1xuXG4gICAgICAgIHRoaXMudXNlcklucHV0Lm5leHQoZGF0ZUFzQXJyYXkpO1xuICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwoZGF0ZUFzQXJyYXkpO1xuICAgIH1cblxuICAgIHByZXZpb3VzTW9udGgoKTogdm9pZCB7XG4gICAgICAgIHRoaXMud2Vla3MgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0UHJldmlvdXNXZWVrc09mTW9udGgoKTtcbiAgICB9XG5cbiAgICBuZXh0TW9udGgoKTogdm9pZCB7XG4gICAgICAgIHRoaXMud2Vla3MgPSB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuZ2V0TmV4dFdlZWtzT2ZNb250aCgpO1xuICAgIH1cblxuICAgIHVzZXJJbnB1dE1vbnRoKG1vbnRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53ZWVrcyA9IHRoaXMuZGF0ZVBpY2tlckhlbHBlci5nZXRXZWVrc09mTW9udGgoXG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuaW5pdGlhbFllYXIsXG4gICAgICAgICAgICAoK21vbnRoICsgMSkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlckhlbHBlci5pbml0aWFsRGF5XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdXNlcklucHV0WWVhcih5ZWFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53ZWVrcyA9IHRoaXMuZGF0ZVBpY2tlckhlbHBlci5nZXRXZWVrc09mTW9udGgoXG4gICAgICAgICAgICB5ZWFyLFxuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VySGVscGVyLmluaXRpYWxNb250aCxcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlckhlbHBlci5pbml0aWFsRGF5XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0TW9udGhBc1JlYWRhYmxlKG1vbnRoSW5kZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vbnRoTGlzdEl0ZW0uZmluZChlbGVtID0+IGVsZW0udmFsdWUgPT09IG1vbnRoSW5kZXgpLmxhYmVsO1xuICAgIH1cblxuICAgIG9uRGF5c0ZvY3VzaW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uQWxsb3dlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuY3VycmVudEZvY3VzZWRFbGVtZW50ID1cbiAgICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgb25EYXlzRm9jdXNvdXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uQWxsb3dlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGdldERheVRhYkluZGV4KGRheTogRGF5TW9udGgpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMuaXNEYXRlSW5SYW5nZShkYXkuZGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSAmJlxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUubW9udGgoKSA9PT0gZGF5LmRhdGUubW9udGgoKSAmJlxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUueWVhcigpID09PSBkYXkuZGF0ZS55ZWFyKClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUuZGF0ZSgpID09PSBkYXkuZGF0ZS5kYXRlKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1RvZGF5KGRheS5kYXRlKSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGF5c0luV2VlayA9IFsuLi50aGlzLmRheXNCdXR0b25zRWxlbVJlZi50b0FycmF5KCldLmZpbHRlcihcbiAgICAgICAgICAgIHZhbHVlID0+IHZhbHVlLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXNhYmxlZCcpID09PSBudWxsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICEhZGF5c0luV2Vlay5sZW5ndGggJiZcbiAgICAgICAgICAgIGRheS5pc0N1cnJlbnRNb250aCAmJlxuICAgICAgICAgICAgZGF5LmRheU9mTW9udGgudG9TdHJpbmcoKSA9PT1cbiAgICAgICAgICAgICAgICBkYXlzSW5XZWVrWzBdLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXktbnVtYmVyJykgJiZcbiAgICAgICAgICAgIChkYXkuZGF0ZS5tb250aCgpICE9PSBkYXlqcygpLm1vbnRoKCkgfHxcbiAgICAgICAgICAgICAgICBkYXkuZGF0ZS55ZWFyKCkgIT09IGRheWpzKCkueWVhcigpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBmb2N1c0RlZmF1bHREYXkoKTogdm9pZCB7XG4gICAgICAgIC8vIEhhdmUgdG8gd2FpdCBmb3IgYSBtaWNybyB0YXNrIGVtcHR5IGFzIHdlJ3JlIGFmZmVjdGluZyB0aGUgRE9NIG91dHNpZGUgb2YgdGhlIEFuZ3VsYXIgbGlmZWN5Y2xlLlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy1hbmd1bGFyL3ByZWZlci1hc3luYy1waXBlXG4gICAgICAgIHRoaXMubmdab25lLm9uTWljcm90YXNrRW1wdHkucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNWaXNpYmxlICYmIHRoaXMuZGF0ZXBpY2tlclRyaWdnZXJIdG1sRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZm9jdXNEZWZhdWx0RGF5KFxuICAgICAgICAgICAgICAgICAgICAhIXRoaXMuc2VsZWN0ZWREYXRlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0RGF5RGlzYWJsZWRBdHRyaWJ1dGUoZGF5T2ZXZWVrOiBEYXlNb250aCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghZGF5T2ZXZWVrLmlzQ3VycmVudE1vbnRoKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2Rpc2FibGVkJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXNEYXRlSW5SYW5nZShkYXlPZldlZWsuZGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAnZGlzYWJsZWQnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlzUHJldmlvdXNNb250aERpc2FibGVkKG1vbnRoWWVhcjogTW9udGhZZWFyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIG1vbnRoWWVhci55ZWFyID09PSB0aGlzLm1pblllYXIudG9TdHJpbmcoKSAmJlxuICAgICAgICAgICAgbW9udGhZZWFyLm1vbnRoID09PSAnMCdcbiAgICAgICAgICAgID8gJ2Rpc2FibGVkJ1xuICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIGlzTmV4dE1vbnRoRGlzYWJsZWQobW9udGhZZWFyOiBNb250aFllYXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbW9udGhZZWFyLnllYXIgPT09IHRoaXMubWF4WWVhci50b1N0cmluZygpICYmXG4gICAgICAgICAgICBtb250aFllYXIubW9udGggPT09ICcxMSdcbiAgICAgICAgICAgID8gJ2Rpc2FibGVkJ1xuICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNEYXRlSW5SYW5nZShkYXRlOiBkYXlqcy5EYXlqcyk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBNaW4geWVhciBhbmQgZGF0ZSBtYW5hZ2VtZW50XG4gICAgICAgIGNvbnN0IG1pbkRhdGVBc1N0cmluZyA9IERhdGVQaWNrZXJIZWxwZXIuZ2V0RGF0ZUFzU3RyaW5nKHRoaXMubWluRGF0ZSk7XG4gICAgICAgIGlmIChtaW5EYXRlQXNTdHJpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IG1pbkRhdGVBc0RheWpzID0gZGF5anMobWluRGF0ZUFzU3RyaW5nKTtcbiAgICAgICAgICAgIGlmIChtaW5EYXRlQXNEYXlqcy5pc1ZhbGlkKCkgJiYgZGF0ZS5pc0JlZm9yZShtaW5EYXRlQXNEYXlqcykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGUueWVhcigpIDwgdGhpcy5taW5ZZWFyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTWF4IHllYXIgYW5kIGRhdGUgbWFuYWdlbWVudFxuICAgICAgICBjb25zdCBtYXhEYXRlQXNTdHJpbmcgPSBEYXRlUGlja2VySGVscGVyLmdldERhdGVBc1N0cmluZyh0aGlzLm1heERhdGUpO1xuICAgICAgICBpZiAobWF4RGF0ZUFzU3RyaW5nKSB7XG4gICAgICAgICAgICBjb25zdCBtYXhEYXRlQXNEYXlqcyA9IGRheWpzKG1heERhdGVBc1N0cmluZyk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbWF4RGF0ZUFzRGF5anMuaXNWYWxpZCgpICYmXG4gICAgICAgICAgICAgICAgZGF0ZS5pc0FmdGVyKG1heERhdGVBc0RheWpzKSAmJlxuICAgICAgICAgICAgICAgIGRhdGUueWVhcigpIDw9IG1heERhdGVBc0RheWpzLnllYXIoKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRlLnllYXIoKSA8PSB0aGlzLm1heFllYXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplRGF0ZXBpY2tlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU1vbnRoTGlzdCgpO1xuICAgICAgICB0aGlzLnBvcHVsYXRlWWVhckxpc3QoKTtcbiAgICAgICAgdGhpcy53ZWVrRGF5cyA9IHRoaXMuZGF0ZVBpY2tlckhlbHBlci5nZXRXZWVrRGF5cygpO1xuICAgICAgICB0aGlzLndlZWtzID0gdGhpcy5kYXRlUGlja2VySGVscGVyLmdldFdlZWtzT2ZNb250aChcbiAgICAgICAgICAgIGRheWpzKCkuZm9ybWF0KHRoaXMuZGF0ZVBpY2tlckhlbHBlci5ZRUFSX1NUUklOR19GT1JNQVQpLFxuICAgICAgICAgICAgZGF5anMoKS5mb3JtYXQodGhpcy5kYXRlUGlja2VySGVscGVyLk1PTlRIX1NUUklOR19OVU1CRVJfRk9STUFUKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGF0ZShkYXRlOiBkYXlqcy5EYXlqcyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGRhdGU7XG5cbiAgICAgICAgLy8gRWl0aGVyIHdlIGhhdmUgYSBkYXRlIHRvIHNldCBvciB3ZSB0YWtlIHRvZGF5XG4gICAgICAgIGNvbnN0IGRhdGVUb0Zvcm1hdCA9IGRhdGUgPyBkYXRlIDogZGF5anMoKTtcbiAgICAgICAgdGhpcy53ZWVrcyA9IHRoaXMuZGF0ZVBpY2tlckhlbHBlci5nZXRXZWVrc09mTW9udGgoXG4gICAgICAgICAgICBkYXRlVG9Gb3JtYXQuZm9ybWF0KHRoaXMuZGF0ZVBpY2tlckhlbHBlci5ZRUFSX1NUUklOR19GT1JNQVQpLFxuICAgICAgICAgICAgZGF0ZVRvRm9ybWF0LmZvcm1hdChcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJIZWxwZXIuTU9OVEhfU1RSSU5HX05VTUJFUl9GT1JNQVRcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBkYXRlVG9Gb3JtYXQuZm9ybWF0KHRoaXMuZGF0ZVBpY2tlckhlbHBlci5EQVlfU1RSSU5HX05VTUJFUl9GT1JNQVQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREYXRlQXNBcnJheShkYXRlOiBkYXlqcy5EYXlqcyk6IG51bWJlcltdIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICtkYXRlLmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuWUVBUl9TVFJJTkdfRk9STUFUKSxcbiAgICAgICAgICAgICtkYXRlLmZvcm1hdCh0aGlzLmRhdGVQaWNrZXJIZWxwZXIuTU9OVEhfU1RSSU5HX05VTUJFUl9GT1JNQVQpLFxuICAgICAgICAgICAgK2RhdGUuZm9ybWF0KHRoaXMuZGF0ZVBpY2tlckhlbHBlci5EQVlfU1RSSU5HX05VTUJFUl9GT1JNQVQpXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1c09uRGF0ZXBpY2tlclRyaWdnZXIoXG4gICAgICAgIHdhc09wZW46IGJvb2xlYW4sXG4gICAgICAgIGlzVmlzaWJsZTogYm9vbGVhblxuICAgICk6IHZvaWQge1xuICAgICAgICAvLyBGb2N1cyBiYWNrIG9uIHRoZSB0cmlnZ2VyLiBObyBuZWVkIGZvciBhIHNldFRpbWVvdXQgYXMgdGhlIHRyaWdnZXIgc2hvdWxkIHN0aWxsIGJlIGluIHRoZSBET00uXG4gICAgICAgIC8vIE9ubHkgZG9lcyBpdCB3aGVuIHRoZSBtb2RhbCBpcyBjbG9zZWQgZnJvbSBhIG9wZW4gc3RhdGUgdG8gYXZvaWQgdG8gc2V0XG4gICAgICAgIC8vIHRoZSBmb2N1cyB3aGVuIHRoZSBwYWdlIGxvYWRzLlxuICAgICAgICBpZiAod2FzT3BlbiAmJiAhaXNWaXNpYmxlICYmIHRoaXMuZGF0ZXBpY2tlclRyaWdnZXJIdG1sRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5kYXRlcGlja2VyVHJpZ2dlckh0bWxFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHBvcHVsYXRlTW9udGhMaXN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vbnRoTGlzdEl0ZW0gPSBkYXlqcygpXG4gICAgICAgICAgICAubG9jYWxlRGF0YSgpXG4gICAgICAgICAgICAubW9udGhzKClcbiAgICAgICAgICAgIC5tYXAoKG1vbnRoOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+ICh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IG1vbnRoLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBpbmRleC50b1N0cmluZygpXG4gICAgICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb3B1bGF0ZVllYXJMaXN0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCByYW5nZSA9IChzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcik6IG51bWJlcltdID0+XG4gICAgICAgICAgICBBcnJheS5mcm9tKHsgbGVuZ3RoOiBlbmQgLSBzdGFydCArIDEgfSwgKHYsIGspID0+IGsgKyBzdGFydCk7XG5cbiAgICAgICAgaWYgKCEhdGhpcy5taW5EYXRlICYmICEhdGhpcy5taW5EYXRlLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5taW5ZZWFyID0gdGhpcy5taW5EYXRlWzBdO1xuICAgICAgICB9XG4gICAgICAgIGlmICghIXRoaXMubWF4RGF0ZSAmJiAhIXRoaXMubWF4RGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubWF4WWVhciA9IHRoaXMubWF4RGF0ZVswXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMueWVhckxpc3RJdGVtID0gcmFuZ2UodGhpcy5taW5ZZWFyLCB0aGlzLm1heFllYXIpLm1hcChcbiAgICAgICAgICAgICh5ZWFyOiBudW1iZXIpID0+ICh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHllYXIudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogeWVhci50b1N0cmluZygpXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25LZXlEb3duSW5uZXIoa2V5RXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcbiAgICAgICAgLy8gSUUgZG9lc24ndCBzdXBwb3J0IGtleUV2ZW50LmNvZGUsIGFuZCBoYXMgZGlmZmVyZW50IHZhbHVlc1xuICAgICAgICAvLyBpbiBrZXlFdmVudC5rZXkgKERvd24gaW5zdGVhZCBvZiBBcnJvd0Rvd24gZm9yIGluc3RhbmNlKSwgaGVuY2UgdGhlIG11bHRpLXN1cHBvcnQuXG4gICAgICAgIGNvbnN0IGllMTFDb21wYXRpYmxlQ29kZSA9IGtleUV2ZW50LmNvZGUgfHwga2V5RXZlbnQua2V5O1xuICAgICAgICBzd2l0Y2ggKGllMTFDb21wYXRpYmxlQ29kZSkge1xuICAgICAgICAgICAgY2FzZSAnRG93bic6XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlck5hdmlnYXRpb25IZWxwZXIuZm9jdXNOZXh0V2Vla0RheSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnVXAnOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlci5mb2N1c1ByZXZpb3VzV2Vla0RheSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnU3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnU3BhY2ViYXInOlxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NsaWNrJykpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUmlnaHQnOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyTmF2aWdhdGlvbkhlbHBlci5mb2N1c05leHREYXkoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0xlZnQnOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJOYXZpZ2F0aW9uSGVscGVyLmZvY3VzUHJldmlvdXNEYXkoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBrZXlFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBrZXlFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIFtpZF09XCJidWlsZElkKCdkYXRlcGlja2VyX3dyYXBwZXInKVwiXG4gICAgY2xhc3M9XCJkYXRlcGlja2VyX3dyYXBwZXJcIlxuICAgICpuZ0lmPVwiaXNEYXRlcGlja2VyVmlzaWJsZVwiXG4gICAgW2Nka1RyYXBGb2N1c109XCIhIWRhdGVwaWNrZXJUcmlnZ2VySHRtbEVsZW1lbnRcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIHJvbGU9XCJhcHBsaWNhdGlvblwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgJ2ZvZWhuLWRhdGUtcGlja2VyLmNvbnRhaW5lci5hcmlhLWxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgXCJcbj5cbiAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiY2xvc2VhYmxlXCJcbiAgICAgICAgKGNsaWNrKT1cImlzRGF0ZXBpY2tlclZpc2libGUgPSBmYWxzZVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImJ0biBjbG9zZVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAnZm9laG4tZGF0ZS1waWNrZXIuY2xvc2UtYnV0dG9uLmFyaWEtbGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgXCJcbiAgICAgICAgW2lkXT1cImJ1aWxkSWQoJ2Nsb3NlQnV0dG9uJylcIlxuICAgID5cbiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2XG4gICAgICAgIFtpZF09XCJidWlsZElkKCdkYXRlcGlja2VyX2hlYWRlcicpXCJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gZGF0ZXBpY2tlcl9oZWFkZXJcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRNb250aFllYXIgfCBhc3luYyBhcyBtb250aFllYXJcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBbaWRdPVwiYnVpbGRJZCgncHJldmlvdXMtbW9udGgnKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgZGF0ZXBpY2tlci1uYXYtbW9udGgtYnRuXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJldmlvdXNNb250aCgpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJpc1ByZXZpb3VzTW9udGhEaXNhYmxlZChtb250aFllYXIpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Zm9laG4taWNvbi1jaGV2cm9uLWxlZnRcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWRhdGUtcGlja2VyLnByZXZpb3VzLW1vbnRoLWJ1dHRvbi50aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi1jaGV2cm9uLWxlZnQ+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkSWQoJ21vbnRoLXllYXItbGFiZWwnKVwiXG4gICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNyLW9ubHlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5zY3JlZW4tcmVhZGVyLmFjdHVhbC1tb250aC1kaXNwbGF5ZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICB7eyBnZXRNb250aEFzUmVhZGFibGUobW9udGhZZWFyLm1vbnRoKSB9fSB7eyBtb250aFllYXIueWVhciB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGZvZWhuLXNlbGVjdFxuICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZElkKCdtb250aC1pbnB1dCcpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFsaWduLXNlbGYtY2VudGVyIG1vbnRoLWlucHV0XCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5zY3JlZW4tcmVhZGVyLm1vbnRoLWlucHV0LmxhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2lzTGFiZWxTck9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2VsZW1lbnRzXT1cIm1vbnRoTGlzdEl0ZW1cIlxuICAgICAgICAgICAgICAgIFttb2RlbF09XCJtb250aFllYXIubW9udGhcIlxuICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cInVzZXJJbnB1dE1vbnRoKCRldmVudClcIlxuICAgICAgICAgICAgPjwvZm9laG4tc2VsZWN0PlxuICAgICAgICAgICAgPGZvZWhuLXNlbGVjdFxuICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZElkKCd5ZWFyLWlucHV0JylcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWxpZ24tc2VsZi1jZW50ZXJcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWRhdGUtcGlja2VyLnNjcmVlbi1yZWFkZXIueWVhci1pbnB1dC5sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtpc0xhYmVsU3JPbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtlbGVtZW50c109XCJ5ZWFyTGlzdEl0ZW1cIlxuICAgICAgICAgICAgICAgIFttb2RlbF09XCJtb250aFllYXIueWVhclwiXG4gICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwidXNlcklucHV0WWVhcigkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2ZvZWhuLXNlbGVjdD5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBbaWRdPVwiYnVpbGRJZCgnbmV4dC1tb250aCcpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBkYXRlcGlja2VyLW5hdi1tb250aC1idG5cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJuZXh0TW9udGgoKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiaXNOZXh0TW9udGhEaXNhYmxlZChtb250aFllYXIpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Zm9laG4taWNvbi1jaGV2cm9uLXJpZ2h0XG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1kYXRlLXBpY2tlci5uZXh0LW1vbnRoLWJ1dHRvbi50aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi1jaGV2cm9uLXJpZ2h0PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDx0YWJsZVxuICAgICAgICBbaWRdPVwiYnVpbGRJZCgnZGF0ZXBpY2tlcl90YWJsZScpXCJcbiAgICAgICAgcm9sZT1cImdyaWRcIlxuICAgICAgICAoZm9jdXNpbik9XCJvbkRheXNGb2N1c2luKClcIlxuICAgICAgICAoZm9jdXNvdXQpPVwib25EYXlzRm9jdXNvdXQoKVwiXG4gICAgPlxuICAgICAgICA8dGhlYWQgcm9sZT1cInByZXNlbnRhdGlvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPHRyIHJvbGU9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgICAgICAgc2NvcGU9XCJjb2xcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiY29sdW1uaGVhZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHdlZWtkYXkgb2Ygd2Vla0RheXNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGZvZWhuLWFiYnJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIndlZWtkYXkuc3Vic3RyKDAsIDIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJ3ZWVrZGF5XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZm9laG4tYWJicj5cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5IHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICAgICAgICAgIDx0ciByb2xlPVwicm93XCIgKm5nRm9yPVwibGV0IHdlZWsgb2Ygd2Vla3M7IGxldCBpbmRleFJvdyA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXlPZldlZWsgb2Ygd2VlazsgbGV0IGluZGV4Q29sdW1uID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gdy0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgI2RheUJ1dHRvbkVsZW1SZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiIWRheU9mV2Vlay5pc0N1cnJlbnRNb250aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiYnVpbGRJZCgnZGF5XycgKyBpbmRleFJvdyArICdfJyArIGluZGV4Q29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiZ2V0RGF5VGFiSW5kZXgoZGF5T2ZXZWVrKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYnRuLWluZm9dPVwiIWlzVG9kYXkoZGF5T2ZXZWVrLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5idG4tc2Vjb25kYXJ5XT1cImlzVG9kYXkoZGF5T2ZXZWVrLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5idG4tZGFuZ2VyXT1cImlzU2VsZWN0ZWQoZGF5T2ZXZWVrLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vla0RheXNbaW5kZXhDb2x1bW5dICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheU9mV2Vlay5kYXRlQXNSZWFkYWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtaXMtdG9kYXldPVwiaXNUb2RheShkYXlPZldlZWsuZGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1pcy1zZWxlY3RlZF09XCJpc1NlbGVjdGVkKGRheU9mV2Vlay5kYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXJvdy1pbmRleF09XCJpbmRleFJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNvbHVtbi1pbmRleF09XCJpbmRleENvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXktbnVtYmVyXT1cImRheU9mV2Vlay5kYXlPZk1vbnRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImdldERheURpc2FibGVkQXR0cmlidXRlKGRheU9mV2VlaylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVVzZXJJbnB1dChkYXlPZldlZWsuZGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXlPZldlZWsuZGF5T2ZNb250aCB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,40 @@
1
+ import { A11yModule } from '@angular/cdk/a11y';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NgModule } from '@angular/core';
4
+ import { FoehnCheckablesModule } from '../foehn-checkables/foehn-checkables.module';
5
+ import { FoehnIconsModule } from '../foehn-icons/foehn-icons.module';
6
+ import { FoehnMiscModule } from '../foehn-misc/foehn-misc.module';
7
+ import { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';
8
+ import { FoehnDatePickerComponent } from './foehn-date-picker.component';
9
+ import * as i0 from "@angular/core";
10
+ export class FoehnDatePickerModule {
11
+ }
12
+ FoehnDatePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: FoehnDatePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
+ FoehnDatePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.2", ngImport: i0, type: FoehnDatePickerModule, declarations: [FoehnDatePickerComponent], imports: [CommonModule,
14
+ FoehnIconsModule,
15
+ A11yModule,
16
+ FoehnCheckablesModule,
17
+ FoehnMiscModule,
18
+ SdkDictionaryModule], exports: [FoehnDatePickerComponent] });
19
+ FoehnDatePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: FoehnDatePickerModule, imports: [CommonModule,
20
+ FoehnIconsModule,
21
+ A11yModule,
22
+ FoehnCheckablesModule,
23
+ FoehnMiscModule,
24
+ SdkDictionaryModule] });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: FoehnDatePickerModule, decorators: [{
26
+ type: NgModule,
27
+ args: [{
28
+ imports: [
29
+ CommonModule,
30
+ FoehnIconsModule,
31
+ A11yModule,
32
+ FoehnCheckablesModule,
33
+ FoehnMiscModule,
34
+ SdkDictionaryModule
35
+ ],
36
+ declarations: [FoehnDatePickerComponent],
37
+ exports: [FoehnDatePickerComponent]
38
+ }]
39
+ }] });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tZGF0ZS1waWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWRhdGUtcGlja2VyL2ZvZWhuLWRhdGUtcGlja2VyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQWN6RSxNQUFNLE9BQU8scUJBQXFCOztrSEFBckIscUJBQXFCO21IQUFyQixxQkFBcUIsaUJBSGYsd0JBQXdCLGFBUG5DLFlBQVk7UUFDWixnQkFBZ0I7UUFDaEIsVUFBVTtRQUNWLHFCQUFxQjtRQUNyQixlQUFlO1FBQ2YsbUJBQW1CLGFBR2Isd0JBQXdCO21IQUV6QixxQkFBcUIsWUFWMUIsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixVQUFVO1FBQ1YscUJBQXFCO1FBQ3JCLGVBQWU7UUFDZixtQkFBbUI7MkZBS2QscUJBQXFCO2tCQVpqQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsVUFBVTt3QkFDVixxQkFBcUI7d0JBQ3JCLGVBQWU7d0JBQ2YsbUJBQW1CO3FCQUN0QjtvQkFDRCxZQUFZLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztvQkFDeEMsT0FBTyxFQUFFLENBQUMsd0JBQXdCLENBQUM7aUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGb2VobkNoZWNrYWJsZXNNb2R1bGUgfSBmcm9tICcuLi9mb2Vobi1jaGVja2FibGVzL2ZvZWhuLWNoZWNrYWJsZXMubW9kdWxlJztcbmltcG9ydCB7IEZvZWhuSWNvbnNNb2R1bGUgfSBmcm9tICcuLi9mb2Vobi1pY29ucy9mb2Vobi1pY29ucy5tb2R1bGUnO1xuaW1wb3J0IHsgRm9laG5NaXNjTW9kdWxlIH0gZnJvbSAnLi4vZm9laG4tbWlzYy9mb2Vobi1taXNjLm1vZHVsZSc7XG5pbXBvcnQgeyBTZGtEaWN0aW9uYXJ5TW9kdWxlIH0gZnJvbSAnLi4vc2RrLWRpY3Rpb25hcnkvc2RrLWRpY3Rpb25hcnkubW9kdWxlJztcbmltcG9ydCB7IEZvZWhuRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vZm9laG4tZGF0ZS1waWNrZXIuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9laG5JY29uc01vZHVsZSxcbiAgICAgICAgQTExeU1vZHVsZSxcbiAgICAgICAgRm9laG5DaGVja2FibGVzTW9kdWxlLFxuICAgICAgICBGb2Vobk1pc2NNb2R1bGUsXG4gICAgICAgIFNka0RpY3Rpb25hcnlNb2R1bGVcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW0ZvZWhuRGF0ZVBpY2tlckNvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW0ZvZWhuRGF0ZVBpY2tlckNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5EYXRlUGlja2VyTW9kdWxlIHt9XG4iXX0=