@dsivd/prestations-ng 14.5.20 → 15.0.0-beta3

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 (334) hide show
  1. package/CHANGELOG.md +33 -6
  2. package/CONTRIBUTING.md +1 -1
  3. package/README.md +2 -0
  4. package/UPGRADING_V14.md +8 -11
  5. package/UPGRADING_V15.md +51 -0
  6. package/dsivd-prestations-ng-v15.0.0-beta3.tgz +0 -0
  7. package/esm2020/abstract-page-component.mjs +226 -0
  8. package/{esm2015/directives/currency-formatter.directive.js → esm2020/directives/currency-formatter.directive.mjs} +3 -3
  9. package/{esm2015/directives/formatter.module.js → esm2020/directives/formatter.module.mjs} +4 -4
  10. package/{esm2015/directives/iban-formatter.directive.js → esm2020/directives/iban-formatter.directive.mjs} +3 -3
  11. package/{esm2015/directives/ide-formatter.directive.js → esm2020/directives/ide-formatter.directive.mjs} +3 -3
  12. package/{esm2015/directives/ndc-formatter.directive.js → esm2020/directives/ndc-formatter.directive.mjs} +3 -3
  13. package/{esm2015/dsivd-prestations-ng.js → esm2020/dsivd-prestations-ng.mjs} +0 -0
  14. package/{esm2015/foehn-address/address.type.js → esm2020/foehn-address/address.type.mjs} +0 -0
  15. package/{esm2015/foehn-address/foehn-address.module.js → esm2020/foehn-address/foehn-address.module.mjs} +4 -4
  16. package/{esm2015/foehn-address/foehn-display-address.component.js → esm2020/foehn-address/foehn-display-address.component.mjs} +5 -9
  17. package/esm2020/foehn-address/foehn-input-address.component.mjs +366 -0
  18. package/esm2020/foehn-address/foehn-input-foreign-locality.component.mjs +66 -0
  19. package/{esm2015/foehn-address/foehn-input-foreign-street.component.js → esm2020/foehn-address/foehn-input-foreign-street.component.mjs} +6 -11
  20. package/esm2020/foehn-autocomplete/foehn-autocomplete.component.mjs +548 -0
  21. package/{esm2015/foehn-autocomplete/foehn-autocomplete.module.js → esm2020/foehn-autocomplete/foehn-autocomplete.module.mjs} +4 -4
  22. package/esm2020/foehn-boolean/foehn-boolean-checkbox.component.mjs +28 -0
  23. package/esm2020/foehn-boolean/foehn-boolean-radio.component.mjs +37 -0
  24. package/{esm2015/foehn-boolean/foehn-boolean.module.js → esm2020/foehn-boolean/foehn-boolean.module.mjs} +4 -4
  25. package/{esm2015/foehn-breadcrumb/breadcrumb-event.service.js → esm2020/foehn-breadcrumb/breadcrumb-event.service.mjs} +10 -10
  26. package/{esm2015/foehn-breadcrumb/breadcrumb.js → esm2020/foehn-breadcrumb/breadcrumb.mjs} +0 -0
  27. package/{esm2015/foehn-breadcrumb/foehn-breadcrumb.component.js → esm2020/foehn-breadcrumb/foehn-breadcrumb.component.mjs} +5 -9
  28. package/{esm2015/foehn-breadcrumb/foehn-breadcrumb.module.js → esm2020/foehn-breadcrumb/foehn-breadcrumb.module.mjs} +4 -4
  29. package/esm2020/foehn-checkables/foehn-checkable-group.component.mjs +283 -0
  30. package/{esm2015/foehn-checkables/foehn-checkables.module.js → esm2020/foehn-checkables/foehn-checkables.module.mjs} +4 -4
  31. package/esm2020/foehn-checkables/foehn-checkbox.component.mjs +36 -0
  32. package/esm2020/foehn-checkables/foehn-radio.component.mjs +63 -0
  33. package/esm2020/foehn-checkables/foehn-select.component.mjs +62 -0
  34. package/{esm2015/foehn-checkables/form-select-option-group.js → esm2020/foehn-checkables/form-select-option-group.mjs} +0 -0
  35. package/{esm2015/foehn-checkables/form-select-option.js → esm2020/foehn-checkables/form-select-option.mjs} +0 -0
  36. package/{esm2015/foehn-confirm-modal/foehn-confirm-modal-content.js → esm2020/foehn-confirm-modal/foehn-confirm-modal-content.mjs} +0 -0
  37. package/esm2020/foehn-confirm-modal/foehn-confirm-modal.component.mjs +39 -0
  38. package/{esm2015/foehn-confirm-modal/foehn-confirm-modal.module.js → esm2020/foehn-confirm-modal/foehn-confirm-modal.module.mjs} +4 -4
  39. package/{esm2015/foehn-confirm-modal/foehn-confirm-modal.service.js → esm2020/foehn-confirm-modal/foehn-confirm-modal.service.mjs} +3 -3
  40. package/{esm2015/foehn-date-picker/date-picker-navigation.helper.js → esm2020/foehn-date-picker/date-picker-navigation.helper.mjs} +7 -7
  41. package/{esm2015/foehn-date-picker/date-picker.helper.js → esm2020/foehn-date-picker/date-picker.helper.mjs} +4 -4
  42. package/{esm2015/foehn-date-picker/day-month.type.js → esm2020/foehn-date-picker/day-month.type.mjs} +0 -0
  43. package/{esm2015/foehn-date-picker/focused-day.type.js → esm2020/foehn-date-picker/focused-day.type.mjs} +0 -0
  44. package/{esm2015/foehn-date-picker/foehn-date-picker.component.js → esm2020/foehn-date-picker/foehn-date-picker.component.mjs} +22 -25
  45. package/{esm2015/foehn-date-picker/foehn-date-picker.module.js → esm2020/foehn-date-picker/foehn-date-picker.module.mjs} +4 -4
  46. package/{esm2015/foehn-date-picker/month-year.type.js → esm2020/foehn-date-picker/month-year.type.mjs} +0 -0
  47. package/esm2020/foehn-date-picker-button/foehn-date-picker-button.component.mjs +70 -0
  48. package/{esm2015/foehn-date-picker-button/foehn-date-picker-button.module.js → esm2020/foehn-date-picker-button/foehn-date-picker-button.module.mjs} +4 -4
  49. package/{esm2015/foehn-debug-summary/foehn-debug-summary.component.js → esm2020/foehn-debug-summary/foehn-debug-summary.component.mjs} +8 -11
  50. package/{esm2015/foehn-debug-summary/foehn-debug-summary.component.module.js → esm2020/foehn-debug-summary/foehn-debug-summary.component.module.mjs} +4 -4
  51. package/esm2020/foehn-decision-electronique/foehn-decision-electronique.component.mjs +36 -0
  52. package/{esm2015/foehn-decision-electronique/foehn-decision-electronique.module.js → esm2020/foehn-decision-electronique/foehn-decision-electronique.module.mjs} +4 -4
  53. package/esm2020/foehn-footer/foehn-footer.component.mjs +129 -0
  54. package/{esm2015/foehn-footer/foehn-footer.module.js → esm2020/foehn-footer/foehn-footer.module.mjs} +4 -4
  55. package/{esm2015/foehn-footer/footer-link.type.js → esm2020/foehn-footer/footer-link.type.mjs} +0 -0
  56. package/{esm2015/foehn-form/foehn-form.component.js → esm2020/foehn-form/foehn-form.component.mjs} +5 -8
  57. package/{esm2015/foehn-form/foehn-form.module.js → esm2020/foehn-form/foehn-form.module.mjs} +4 -4
  58. package/{esm2015/foehn-growl/foehn-growl.component.js → esm2020/foehn-growl/foehn-growl.component.mjs} +8 -12
  59. package/{esm2015/foehn-growl/foehn-growl.module.js → esm2020/foehn-growl/foehn-growl.module.mjs} +4 -4
  60. package/{esm2015/foehn-growl/growl-broker.service.js → esm2020/foehn-growl/growl-broker.service.mjs} +3 -3
  61. package/{esm2015/foehn-growl/growl-message.js → esm2020/foehn-growl/growl-message.mjs} +0 -0
  62. package/{esm2015/foehn-growl/growl-types.js → esm2020/foehn-growl/growl-types.mjs} +0 -0
  63. package/esm2020/foehn-header/foehn-header.component.mjs +69 -0
  64. package/{esm2015/foehn-header/foehn-header.module.js → esm2020/foehn-header/foehn-header.module.mjs} +4 -4
  65. package/{esm2015/foehn-header/foehn-skip-link.component.js → esm2020/foehn-header/foehn-skip-link.component.mjs} +5 -8
  66. package/{esm2015/foehn-help-modal/foehn-help-modal.component.js → esm2020/foehn-help-modal/foehn-help-modal.component.mjs} +5 -9
  67. package/{esm2015/foehn-help-modal/foehn-help-modal.module.js → esm2020/foehn-help-modal/foehn-help-modal.module.mjs} +4 -4
  68. package/{esm2015/foehn-help-modal/foehn-help-modal.type.js → esm2020/foehn-help-modal/foehn-help-modal.type.mjs} +0 -0
  69. package/{esm2015/foehn-icons/abstract-icon-component.js → esm2020/foehn-icons/abstract-icon-component.mjs} +4 -4
  70. package/{esm2015/foehn-icons/foehn-icon-calendar.component.js → esm2020/foehn-icons/foehn-icon-calendar.component.mjs} +5 -8
  71. package/{esm2015/foehn-icons/foehn-icon-check-square-o.component.js → esm2020/foehn-icons/foehn-icon-check-square-o.component.mjs} +5 -8
  72. package/{esm2015/foehn-icons/foehn-icon-check.component.js → esm2020/foehn-icons/foehn-icon-check.component.mjs} +5 -8
  73. package/{esm2015/foehn-icons/foehn-icon-chevron-down.component.js → esm2020/foehn-icons/foehn-icon-chevron-down.component.mjs} +5 -8
  74. package/{esm2015/foehn-icons/foehn-icon-chevron-left.component.js → esm2020/foehn-icons/foehn-icon-chevron-left.component.mjs} +5 -8
  75. package/{esm2015/foehn-icons/foehn-icon-chevron-right.component.js → esm2020/foehn-icons/foehn-icon-chevron-right.component.mjs} +5 -8
  76. package/{esm2015/foehn-icons/foehn-icon-chevron-up.component.js → esm2020/foehn-icons/foehn-icon-chevron-up.component.mjs} +5 -8
  77. package/{esm2015/foehn-icons/foehn-icon-clock.component.js → esm2020/foehn-icons/foehn-icon-clock.component.mjs} +5 -8
  78. package/{esm2015/foehn-icons/foehn-icon-comment-dots.component.js → esm2020/foehn-icons/foehn-icon-comment-dots.component.mjs} +5 -8
  79. package/{esm2015/foehn-icons/foehn-icon-edit.component.js → esm2020/foehn-icons/foehn-icon-edit.component.mjs} +5 -8
  80. package/{esm2015/foehn-icons/foehn-icon-external-link-alt.component.js → esm2020/foehn-icons/foehn-icon-external-link-alt.component.mjs} +5 -8
  81. package/{esm2015/foehn-icons/foehn-icon-file-pdf.component.js → esm2020/foehn-icons/foehn-icon-file-pdf.component.mjs} +5 -8
  82. package/{esm2015/foehn-icons/foehn-icon-info-circle.component.js → esm2020/foehn-icons/foehn-icon-info-circle.component.mjs} +5 -8
  83. package/{esm2015/foehn-icons/foehn-icon-lock.component.js → esm2020/foehn-icons/foehn-icon-lock.component.mjs} +5 -8
  84. package/{esm2015/foehn-icons/foehn-icon-map-marker.component.js → esm2020/foehn-icons/foehn-icon-map-marker.component.mjs} +5 -8
  85. package/{esm2015/foehn-icons/foehn-icon-minus-circle.component.js → esm2020/foehn-icons/foehn-icon-minus-circle.component.mjs} +5 -8
  86. package/{esm2015/foehn-icons/foehn-icon-plus-circle.component.js → esm2020/foehn-icons/foehn-icon-plus-circle.component.mjs} +5 -8
  87. package/{esm2015/foehn-icons/foehn-icon-plus-square.component.js → esm2020/foehn-icons/foehn-icon-plus-square.component.mjs} +5 -8
  88. package/{esm2015/foehn-icons/foehn-icon-search.component.js → esm2020/foehn-icons/foehn-icon-search.component.mjs} +5 -8
  89. package/{esm2015/foehn-icons/foehn-icon-times.component.js → esm2020/foehn-icons/foehn-icon-times.component.mjs} +5 -8
  90. package/{esm2015/foehn-icons/foehn-icon-trash-alt.component.js → esm2020/foehn-icons/foehn-icon-trash-alt.component.mjs} +5 -8
  91. package/{esm2015/foehn-icons/foehn-icon-unlock-alt.component.js → esm2020/foehn-icons/foehn-icon-unlock-alt.component.mjs} +5 -8
  92. package/{esm2015/foehn-icons/foehn-icons.module.js → esm2020/foehn-icons/foehn-icons.module.mjs} +4 -4
  93. package/esm2020/foehn-input/foehn-input-email.component.mjs +50 -0
  94. package/esm2020/foehn-input/foehn-input-hidden.component.mjs +53 -0
  95. package/{esm2015/foehn-input/foehn-input-number.component.js → esm2020/foehn-input/foehn-input-number.component.mjs} +10 -15
  96. package/esm2020/foehn-input/foehn-input-password.component.mjs +50 -0
  97. package/{esm2015/foehn-input/foehn-input-phone.component.js → esm2020/foehn-input/foehn-input-phone.component.mjs} +6 -11
  98. package/{esm2015/foehn-input/foehn-input-string.component.js → esm2020/foehn-input/foehn-input-string.component.mjs} +3 -3
  99. package/{esm2015/foehn-input/foehn-input-text.component.js → esm2020/foehn-input/foehn-input-text.component.mjs} +6 -11
  100. package/{esm2015/foehn-input/foehn-input-textarea.component.js → esm2020/foehn-input/foehn-input-textarea.component.mjs} +6 -11
  101. package/{esm2015/foehn-input/foehn-input.component.js → esm2020/foehn-input/foehn-input.component.mjs} +14 -14
  102. package/{esm2015/foehn-input/foehn-input.module.js → esm2020/foehn-input/foehn-input.module.mjs} +4 -4
  103. package/{esm2015/foehn-input/pattern.const.js → esm2020/foehn-input/pattern.const.mjs} +0 -0
  104. package/esm2020/foehn-input-date/foehn-input-date.component.mjs +90 -0
  105. package/esm2020/foehn-input-time/foehn-input-time.component.mjs +75 -0
  106. package/esm2020/foehn-list/foehn-list.component.mjs +128 -0
  107. package/{esm2015/foehn-list/foehn-list.module.js → esm2020/foehn-list/foehn-list.module.mjs} +4 -4
  108. package/{esm2015/foehn-list/page-change-event.js → esm2020/foehn-list/page-change-event.mjs} +0 -0
  109. package/esm2020/foehn-menu-prestation/abstract-list-item-detail-page.component.mjs +122 -0
  110. package/{esm2015/foehn-menu-prestation/abstract-menu-page.component.js → esm2020/foehn-menu-prestation/abstract-menu-page.component.mjs} +3 -3
  111. package/{esm2015/foehn-menu-prestation/abstract-page-from-menu.component.js → esm2020/foehn-menu-prestation/abstract-page-from-menu.component.mjs} +3 -3
  112. package/{esm2015/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.js → esm2020/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.mjs} +5 -8
  113. 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
  114. 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
  115. package/esm2020/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.mjs +71 -0
  116. package/esm2020/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.mjs +35 -0
  117. package/{esm2015/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.js → esm2020/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.mjs} +5 -8
  118. package/{esm2015/foehn-menu-prestation/foehn-menu-prestation.module.js → esm2020/foehn-menu-prestation/foehn-menu-prestation.module.mjs} +4 -4
  119. package/{esm2015/foehn-misc/foehn-abbr.component.js → esm2020/foehn-misc/foehn-abbr.component.mjs} +5 -9
  120. package/{esm2015/foehn-misc/foehn-misc.module.js → esm2020/foehn-misc/foehn-misc.module.mjs} +4 -4
  121. package/esm2020/foehn-modal/foehn-modal.component.mjs +96 -0
  122. package/{esm2015/foehn-modal/foehn-modal.module.js → esm2020/foehn-modal/foehn-modal.module.mjs} +4 -4
  123. package/esm2020/foehn-nav13/foehn-input-nav13.component.mjs +94 -0
  124. package/{esm2015/foehn-nav13/foehn-input-nav13.module.js → esm2020/foehn-nav13/foehn-input-nav13.module.mjs} +4 -4
  125. package/esm2020/foehn-navigation/foehn-navigation.component.mjs +94 -0
  126. package/{esm2015/foehn-navigation/foehn-navigation.module.js → esm2020/foehn-navigation/foehn-navigation.module.mjs} +4 -4
  127. package/{esm2015/foehn-navigation/foehn-navigation.service.js → esm2020/foehn-navigation/foehn-navigation.service.mjs} +12 -12
  128. package/{esm2015/foehn-notfound/foehn-notfound.component.js → esm2020/foehn-notfound/foehn-notfound.component.mjs} +5 -8
  129. package/{esm2015/foehn-notfound/foehn-notfound.module.js → esm2020/foehn-notfound/foehn-notfound.module.mjs} +4 -4
  130. package/{esm2015/foehn-page/foehn-page-counter.component.js → esm2020/foehn-page/foehn-page-counter.component.mjs} +5 -8
  131. package/esm2020/foehn-page/foehn-page-modal.component.mjs +52 -0
  132. package/{esm2015/foehn-page/foehn-page-modal.service.js → esm2020/foehn-page/foehn-page-modal.service.mjs} +3 -3
  133. package/esm2020/foehn-page/foehn-page.component.mjs +215 -0
  134. package/{esm2015/foehn-page/foehn-page.module.js → esm2020/foehn-page/foehn-page.module.mjs} +4 -4
  135. package/{esm2015/foehn-page/foehn-page.service.js → esm2020/foehn-page/foehn-page.service.mjs} +4 -4
  136. package/{esm2015/foehn-recap-section/foehn-recap-section.component.js → esm2020/foehn-recap-section/foehn-recap-section.component.mjs} +5 -8
  137. package/{esm2015/foehn-recap-section/foehn-recap-section.module.js → esm2020/foehn-recap-section/foehn-recap-section.module.mjs} +4 -4
  138. package/{esm2015/foehn-recap-section/foehn-recap-section.type.js → esm2020/foehn-recap-section/foehn-recap-section.type.mjs} +0 -0
  139. 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
  140. package/{esm2015/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module.js → esm2020/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module.mjs} +4 -4
  141. package/esm2020/foehn-status-progress-bar/foehn-status-progress-bar.component.mjs +37 -0
  142. package/{esm2015/foehn-status-progress-bar/foehn-status-progress-bar.module.js → esm2020/foehn-status-progress-bar/foehn-status-progress-bar.module.mjs} +4 -4
  143. package/{esm2015/foehn-table/foehn-table-column-configuration.js → esm2020/foehn-table/foehn-table-column-configuration.mjs} +0 -0
  144. package/{esm2015/foehn-table/foehn-table-page-change-event.js → esm2020/foehn-table/foehn-table-page-change-event.mjs} +0 -0
  145. package/esm2020/foehn-table/foehn-table.component.mjs +147 -0
  146. package/{esm2015/foehn-table/foehn-table.module.js → esm2020/foehn-table/foehn-table.module.mjs} +4 -4
  147. package/{esm2015/foehn-table/tableSort.js → esm2020/foehn-table/tableSort.mjs} +0 -0
  148. package/{esm2015/foehn-upload/abstract-foehn-uploader.component.js → esm2020/foehn-upload/abstract-foehn-uploader.component.mjs} +17 -17
  149. package/{esm2015/foehn-upload/document-reference.js → esm2020/foehn-upload/document-reference.mjs} +0 -0
  150. package/{esm2015/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.js → esm2020/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.mjs} +3 -3
  151. 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
  152. package/esm2020/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.mjs +165 -0
  153. package/{esm2015/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.js → esm2020/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.mjs} +4 -4
  154. package/esm2020/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.mjs +214 -0
  155. package/{esm2015/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.js → esm2020/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.mjs} +4 -4
  156. package/{esm2015/foehn-upload/foehn-multi-upload/multi-upload.service.js → esm2020/foehn-upload/foehn-multi-upload/multi-upload.service.mjs} +3 -3
  157. package/{esm2015/foehn-upload/foehn-multi-upload/multi-upload.type.js → esm2020/foehn-upload/foehn-multi-upload/multi-upload.type.mjs} +0 -0
  158. package/{esm2015/foehn-upload/foehn-multi-upload/pending-upload.service.js → esm2020/foehn-upload/foehn-multi-upload/pending-upload.service.mjs} +3 -3
  159. package/esm2020/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.mjs +163 -0
  160. package/{esm2015/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.js → esm2020/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.mjs} +4 -4
  161. package/{esm2015/foehn-upload/pending-upload.type.js → esm2020/foehn-upload/pending-upload.type.mjs} +0 -0
  162. package/esm2020/foehn-upload/uploader.helper.mjs +326 -0
  163. 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
  164. package/{esm2015/foehn-user-connected-as/foehn-user-connected-as.module.js → esm2020/foehn-user-connected-as/foehn-user-connected-as.module.mjs} +4 -4
  165. package/{esm2015/foehn-validation-alert-summary/foehn-validation-alert-summary.component.js → esm2020/foehn-validation-alert-summary/foehn-validation-alert-summary.component.mjs} +5 -9
  166. package/{esm2015/foehn-validation-alert-summary/foehn-validation-alert-summary.module.js → esm2020/foehn-validation-alert-summary/foehn-validation-alert-summary.module.mjs} +4 -4
  167. package/esm2020/foehn-validation-alerts/foehn-validation-alerts.component.mjs +29 -0
  168. package/{esm2015/foehn-validation-alerts/foehn-validation-alerts.module.js → esm2020/foehn-validation-alerts/foehn-validation-alerts.module.mjs} +4 -4
  169. package/esm2020/form-error.mjs +2 -0
  170. package/esm2020/form-post-response.mjs +10 -0
  171. package/{esm2015/gesdem/gesdem-error-handler.service.js → esm2020/gesdem/gesdem-error-handler.service.mjs} +3 -3
  172. package/esm2020/gesdem/gesdem-event.service.mjs +38 -0
  173. package/esm2020/gesdem/gesdem-handler.service.mjs +151 -0
  174. package/{esm2015/gesdem/gesdem-loader.guard.js → esm2020/gesdem/gesdem-loader.guard.mjs} +3 -3
  175. package/{esm2015/gesdem/gesdem-statut-utils.js → esm2020/gesdem/gesdem-statut-utils.mjs} +0 -0
  176. package/{esm2015/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.js → esm2020/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.mjs} +5 -10
  177. package/esm2020/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.mjs +128 -0
  178. package/{esm2015/gesdem-action-recovery/gesdem-action-recovery.module.js → esm2020/gesdem-action-recovery/gesdem-action-recovery.module.mjs} +4 -4
  179. package/esm2020/gesdem-action-recovery/gesdem-action-recovery.service.mjs +82 -0
  180. package/{esm2015/gesdem-action-recovery/reprise-info.js → esm2020/gesdem-action-recovery/reprise-info.mjs} +0 -0
  181. package/esm2020/gesdem-confirmation/gesdem-confirmation.component.mjs +189 -0
  182. package/{esm2015/gesdem-confirmation/gesdem-confirmation.module.js → esm2020/gesdem-confirmation/gesdem-confirmation.module.mjs} +4 -4
  183. package/{esm2015/gesdem-error/gesdem-error.component.js → esm2020/gesdem-error/gesdem-error.component.mjs} +5 -9
  184. package/{esm2015/gesdem-error/gesdem-error.module.js → esm2020/gesdem-error/gesdem-error.module.mjs} +4 -4
  185. package/{esm2015/helpers/object.helper.js → esm2020/helpers/object.helper.mjs} +2 -2
  186. package/{esm2015/i18n-form.js → esm2020/i18n-form.mjs} +0 -0
  187. package/{esm2015/index.js → esm2020/index.mjs} +3 -3
  188. package/{esm2015/pipes/currency.pipe.js → esm2020/pipes/currency.pipe.mjs} +3 -3
  189. package/{esm2015/pipes/date.pipe.js → esm2020/pipes/date.pipe.mjs} +3 -3
  190. package/{esm2015/pipes/formatIde.pipe.js → esm2020/pipes/formatIde.pipe.mjs} +3 -3
  191. package/{esm2015/pipes/pipes.module.js → esm2020/pipes/pipes.module.mjs} +4 -4
  192. package/{esm2015/prestations-ng-core.module.js → esm2020/prestations-ng-core.module.mjs} +4 -4
  193. package/{esm2015/sdk-appinfo/application-info.js → esm2020/sdk-appinfo/application-info.mjs} +0 -0
  194. package/esm2020/sdk-appinfo/application-info.service.mjs +102 -0
  195. package/{esm2015/sdk-currency/currency.helper.js → esm2020/sdk-currency/currency.helper.mjs} +3 -3
  196. package/esm2020/sdk-date/date.helper.mjs +91 -0
  197. package/{esm2015/sdk-dictionary/default-dictionary.js → esm2020/sdk-dictionary/default-dictionary.mjs} +0 -0
  198. package/{esm2015/sdk-dictionary/sdk-dictionary.module.js → esm2020/sdk-dictionary/sdk-dictionary.module.mjs} +4 -4
  199. package/{esm2015/sdk-dictionary/sdk-dictionary.pipe.js → esm2020/sdk-dictionary/sdk-dictionary.pipe.mjs} +5 -5
  200. package/{esm2015/sdk-dictionary/sdk-dictionary.service.js → esm2020/sdk-dictionary/sdk-dictionary.service.mjs} +3 -3
  201. package/{esm2015/sdk-epayment/model/EPaymentParameters.js → esm2020/sdk-epayment/model/EPaymentParameters.mjs} +0 -0
  202. package/esm2020/sdk-epayment/sdk-epayment.component.mjs +79 -0
  203. package/{esm2015/sdk-epayment/sdk-epayment.module.js → esm2020/sdk-epayment/sdk-epayment.module.mjs} +4 -4
  204. package/esm2020/sdk-epayment/sdk-epayment.service.mjs +51 -0
  205. package/{esm2015/sdk-recaptcha/grecaptcha/grecaptcha.component.js → esm2020/sdk-recaptcha/grecaptcha/grecaptcha.component.mjs} +5 -9
  206. package/esm2020/sdk-recaptcha/recaptcha.service.mjs +162 -0
  207. package/esm2020/sdk-recaptcha/sdk-recaptcha.component.mjs +68 -0
  208. package/{esm2015/sdk-recaptcha/sdk-recaptcha.module.js → esm2020/sdk-recaptcha/sdk-recaptcha.module.mjs} +4 -4
  209. package/{esm2015/sdk-redirect/iam-expired-interceptor.service.js → esm2020/sdk-redirect/iam-expired-interceptor.service.mjs} +3 -3
  210. package/{esm2015/sdk-redirect/redirect.component.js → esm2020/sdk-redirect/redirect.component.mjs} +5 -9
  211. package/{esm2015/sdk-redirect/sdk-redirect.module.js → esm2020/sdk-redirect/sdk-redirect.module.mjs} +4 -4
  212. package/{esm2015/sdk-session-info/session-info-data.js → esm2020/sdk-session-info/session-info-data.mjs} +1 -1
  213. package/{esm2015/sdk-session-info/session-info-with-application.service.js → esm2020/sdk-session-info/session-info-with-application.service.mjs} +3 -3
  214. package/esm2020/sdk-session-info/session-info.service.mjs +73 -0
  215. package/{esm2015/sdk-support-alert/support-alert-container.component.js → esm2020/sdk-support-alert/support-alert-container.component.mjs} +5 -9
  216. package/esm2020/sdk-support-alert/support-alert.component.mjs +34 -0
  217. package/{esm2015/sdk-support-alert/support-alert.model.js → esm2020/sdk-support-alert/support-alert.model.mjs} +0 -0
  218. package/{esm2015/sdk-support-alert/support-alert.module.js → esm2020/sdk-support-alert/support-alert.module.mjs} +4 -4
  219. package/{esm2015/sdk-support-alert/support-alert.service.js → esm2020/sdk-support-alert/support-alert.service.mjs} +3 -3
  220. package/{esm2015/service-locator.js → esm2020/service-locator.mjs} +0 -0
  221. package/esm2020/supported-browser.mjs +2 -0
  222. package/esm2020/validation/validation-handler.service.mjs +44 -0
  223. package/fesm2015/{dsivd-prestations-ng.js → dsivd-prestations-ng.mjs} +973 -1300
  224. package/fesm2015/dsivd-prestations-ng.mjs.map +1 -0
  225. package/fesm2020/dsivd-prestations-ng.mjs +11532 -0
  226. package/fesm2020/dsivd-prestations-ng.mjs.map +1 -0
  227. package/foehn-breadcrumb/breadcrumb-event.service.d.ts +2 -2
  228. package/foehn-checkables/foehn-checkable-group.component.d.ts +3 -3
  229. package/foehn-confirm-modal/foehn-confirm-modal.component.d.ts +1 -1
  230. package/foehn-date-picker/date-picker-navigation.helper.d.ts +1 -1
  231. package/foehn-date-picker/date-picker.helper.d.ts +1 -1
  232. package/foehn-date-picker/foehn-date-picker.component.d.ts +3 -3
  233. package/foehn-date-picker-button/foehn-date-picker-button.component.d.ts +2 -2
  234. package/foehn-debug-summary/foehn-debug-summary.component.d.ts +1 -1
  235. package/foehn-growl/foehn-growl.component.d.ts +1 -1
  236. package/foehn-header/foehn-header.component.d.ts +2 -2
  237. package/foehn-input/foehn-input-number.component.d.ts +1 -1
  238. package/foehn-input/foehn-input.component.d.ts +4 -4
  239. package/foehn-list/foehn-list.component.d.ts +2 -2
  240. package/foehn-menu-prestation/abstract-list-item-detail-page.component.d.ts +1 -1
  241. package/foehn-modal/foehn-modal.component.d.ts +1 -1
  242. package/foehn-navigation/foehn-navigation.service.d.ts +2 -2
  243. package/foehn-page/foehn-page.service.d.ts +2 -2
  244. package/foehn-table/foehn-table.component.d.ts +2 -2
  245. package/foehn-upload/abstract-foehn-uploader.component.d.ts +2 -2
  246. package/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.d.ts +1 -1
  247. package/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.d.ts +2 -2
  248. package/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.d.ts +1 -1
  249. package/foehn-upload/uploader.helper.d.ts +12 -12
  250. package/foehn-validation-alerts/foehn-validation-alerts.component.d.ts +3 -3
  251. package/{error-template.d.ts → form-error.d.ts} +1 -1
  252. package/form-post-response.d.ts +17 -0
  253. package/gesdem/gesdem-event.service.d.ts +6 -6
  254. package/gesdem/gesdem-handler.service.d.ts +3 -3
  255. package/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.d.ts +2 -2
  256. package/gesdem-action-recovery/gesdem-action-recovery.service.d.ts +2 -2
  257. package/gesdem-confirmation/gesdem-confirmation.component.d.ts +4 -4
  258. package/index.d.ts +2 -2
  259. package/package.json +26 -13
  260. package/schematics/ng-add/index.js +6 -6
  261. package/schematics/ng-update/migrations/update-13_1_0/index.js +2 -2
  262. package/schematics/ng-update/migrations/update-13_2_0/index.js +3 -3
  263. package/schematics/ng-update/migrations/update-13_5_1/index.js +2 -2
  264. package/schematics/ng-update/migrations/update-14_5_0/index.js +2 -2
  265. package/schematics/update-karma-config/index.js +2 -2
  266. package/schematics/utility/migrate-to-karma-coverage.js +3 -3
  267. package/sdk-appinfo/application-info.service.d.ts +2 -2
  268. package/sdk-epayment/sdk-epayment.component.d.ts +3 -13
  269. package/sdk-epayment/sdk-epayment.service.d.ts +2 -5
  270. package/sdk-recaptcha/recaptcha.service.d.ts +2 -2
  271. package/sdk-recaptcha/sdk-recaptcha.component.d.ts +2 -2
  272. package/sdk-session-info/session-info-data.d.ts +0 -1
  273. package/sdk-session-info/session-info.service.d.ts +9 -2
  274. package/validation/validation-handler.service.d.ts +4 -4
  275. package/backend-response.d.ts +0 -18
  276. package/bundles/dsivd-prestations-ng.umd.js +0 -13472
  277. package/bundles/dsivd-prestations-ng.umd.js.map +0 -1
  278. package/dsivd-prestations-ng-v14.5.20.tgz +0 -0
  279. package/esm2015/abstract-page-component.js +0 -224
  280. package/esm2015/backend-response.js +0 -10
  281. package/esm2015/error-template.js +0 -2
  282. package/esm2015/foehn-address/foehn-input-address.component.js +0 -365
  283. package/esm2015/foehn-address/foehn-input-foreign-locality.component.js +0 -71
  284. package/esm2015/foehn-autocomplete/foehn-autocomplete.component.js +0 -556
  285. package/esm2015/foehn-boolean/foehn-boolean-checkbox.component.js +0 -32
  286. package/esm2015/foehn-boolean/foehn-boolean-radio.component.js +0 -41
  287. package/esm2015/foehn-checkables/foehn-checkable-group.component.js +0 -294
  288. package/esm2015/foehn-checkables/foehn-checkbox.component.js +0 -40
  289. package/esm2015/foehn-checkables/foehn-radio.component.js +0 -67
  290. package/esm2015/foehn-checkables/foehn-select.component.js +0 -66
  291. package/esm2015/foehn-confirm-modal/foehn-confirm-modal.component.js +0 -42
  292. package/esm2015/foehn-date-picker-button/foehn-date-picker-button.component.js +0 -74
  293. package/esm2015/foehn-decision-electronique/foehn-decision-electronique.component.js +0 -40
  294. package/esm2015/foehn-footer/foehn-footer.component.js +0 -132
  295. package/esm2015/foehn-header/foehn-header.component.js +0 -73
  296. package/esm2015/foehn-input/foehn-input-email.component.js +0 -55
  297. package/esm2015/foehn-input/foehn-input-hidden.component.js +0 -57
  298. package/esm2015/foehn-input/foehn-input-password.component.js +0 -55
  299. package/esm2015/foehn-input-date/foehn-input-date.component.js +0 -94
  300. package/esm2015/foehn-input-time/foehn-input-time.component.js +0 -79
  301. package/esm2015/foehn-list/foehn-list.component.js +0 -134
  302. package/esm2015/foehn-menu-prestation/abstract-list-item-detail-page.component.js +0 -122
  303. package/esm2015/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.js +0 -75
  304. package/esm2015/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.js +0 -38
  305. package/esm2015/foehn-modal/foehn-modal.component.js +0 -100
  306. package/esm2015/foehn-nav13/foehn-input-nav13.component.js +0 -98
  307. package/esm2015/foehn-navigation/foehn-navigation.component.js +0 -98
  308. package/esm2015/foehn-page/foehn-page-modal.component.js +0 -55
  309. package/esm2015/foehn-page/foehn-page.component.js +0 -217
  310. package/esm2015/foehn-status-progress-bar/foehn-status-progress-bar.component.js +0 -42
  311. package/esm2015/foehn-table/foehn-table.component.js +0 -151
  312. package/esm2015/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.js +0 -171
  313. package/esm2015/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.js +0 -220
  314. package/esm2015/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.js +0 -167
  315. package/esm2015/foehn-upload/uploader.helper.js +0 -322
  316. package/esm2015/foehn-validation-alerts/foehn-validation-alerts.component.js +0 -32
  317. package/esm2015/gesdem/gesdem-event.service.js +0 -38
  318. package/esm2015/gesdem/gesdem-handler.service.js +0 -151
  319. package/esm2015/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.js +0 -133
  320. package/esm2015/gesdem-action-recovery/gesdem-action-recovery.service.js +0 -82
  321. package/esm2015/gesdem-confirmation/gesdem-confirmation.component.js +0 -194
  322. package/esm2015/sdk-appinfo/application-info.service.js +0 -111
  323. package/esm2015/sdk-date/date.helper.js +0 -90
  324. package/esm2015/sdk-epayment/model/EPaymentRequest.js +0 -3
  325. package/esm2015/sdk-epayment/sdk-epayment.component.js +0 -113
  326. package/esm2015/sdk-epayment/sdk-epayment.service.js +0 -46
  327. package/esm2015/sdk-recaptcha/recaptcha.service.js +0 -162
  328. package/esm2015/sdk-recaptcha/sdk-recaptcha.component.js +0 -72
  329. package/esm2015/sdk-session-info/session-info.service.js +0 -44
  330. package/esm2015/sdk-support-alert/support-alert.component.js +0 -38
  331. package/esm2015/supported-browser.js +0 -2
  332. package/esm2015/validation/validation-handler.service.js +0 -44
  333. package/fesm2015/dsivd-prestations-ng.js.map +0 -1
  334. package/sdk-epayment/model/EPaymentRequest.d.ts +0 -5
@@ -59,16 +59,12 @@ export class FoehnDisplayAddressComponent {
59
59
  return lines;
60
60
  }
61
61
  }
62
- FoehnDisplayAddressComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnDisplayAddressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
63
- FoehnDisplayAddressComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: FoehnDisplayAddressComponent, selector: "foehn-display-address", inputs: { address: "address" }, ngImport: i0, template: "<address class=\"foehn-address\" *ngIf=\"address\">\n <div *ngFor=\"let addressLine of getLines(address)\">{{ addressLine }}</div>\n</address>\n", styles: [".foehn-address{margin:0;padding:0}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnDisplayAddressComponent, decorators: [{
62
+ FoehnDisplayAddressComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: FoehnDisplayAddressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
63
+ FoehnDisplayAddressComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: FoehnDisplayAddressComponent, selector: "foehn-display-address", inputs: { address: "address" }, ngImport: i0, template: "<address class=\"foehn-address\" *ngIf=\"address\">\n <div *ngFor=\"let addressLine of getLines(address)\">{{ addressLine }}</div>\n</address>\n", styles: [".foehn-address{margin:0;padding:0}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: FoehnDisplayAddressComponent, decorators: [{
65
65
  type: Component,
66
- args: [{
67
- selector: 'foehn-display-address',
68
- templateUrl: './foehn-display-address.component.html',
69
- styleUrls: ['./foehn-display-address.component.css']
70
- }]
66
+ args: [{ selector: 'foehn-display-address', template: "<address class=\"foehn-address\" *ngIf=\"address\">\n <div *ngFor=\"let addressLine of getLines(address)\">{{ addressLine }}</div>\n</address>\n", styles: [".foehn-address{margin:0;padding:0}\n"] }]
71
67
  }], propDecorators: { address: [{
72
68
  type: Input
73
69
  }] } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tZGlzcGxheS1hZGRyZXNzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1hZGRyZXNzL2ZvZWhuLWRpc3BsYXktYWRkcmVzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tYWRkcmVzcy9mb2Vobi1kaXNwbGF5LWFkZHJlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVFqRCxNQUFNLE9BQU8sNEJBQTRCO0lBSXJDOzs7Ozs7OztPQVFHO0lBQ0gsOERBQThEO0lBQzlELFFBQVEsQ0FBQyxPQUFnQjtRQUNyQixJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsT0FBTyxFQUFFLENBQUM7U0FDYjtRQUVELE1BQU0sRUFDRixZQUFZLEVBQ1osWUFBWSxFQUNaLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsTUFBTSxFQUNOLFdBQVcsRUFDWCxjQUFjLEVBQ2QsUUFBUSxFQUNSLE9BQU8sRUFDVixHQUFHLE9BQU8sQ0FBQztRQUVaLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUVqQixJQUFJLFlBQVksRUFBRTtZQUNkLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDNUI7UUFFRCxJQUFJLFlBQVksRUFBRTtZQUNkLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDNUI7UUFFRCxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO1lBQzNCLElBQUksVUFBVSxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFO2dCQUNyQyxVQUFVLElBQUksSUFBSSxXQUFXLEVBQUUsQ0FBQzthQUNuQztZQUNELElBQUksQ0FBQyxDQUFDLGNBQWMsSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFO2dCQUMzQyxVQUFVLElBQUksSUFBSSxjQUFjLEVBQUUsQ0FBQzthQUN0QztZQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDMUI7UUFFRCxJQUFJLGlCQUFpQixJQUFJLG1CQUFtQixFQUFFO1lBQzFDLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxpQkFBaUIsSUFBSSxFQUFFLElBQ2hELG1CQUFtQixJQUFJLEVBQzNCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLElBQUksaUJBQWlCLENBQUMsTUFBTSxFQUFFO2dCQUMxQixLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDakM7U0FDSjtRQUVELElBQUksUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDckQsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUNwQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ3RDLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUVyQixJQUFJLFVBQVUsRUFBRTtnQkFDWixXQUFXLElBQUksVUFBVSxDQUFDO2FBQzdCO1lBRUQsSUFBSSxXQUFXLEVBQUU7Z0JBQ2IsV0FBVztvQkFDUCxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO2FBQ2hFO1lBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFDLENBQUM7U0FDaEM7UUFFRCxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQ2hDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ25DO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQzs7eUhBbEZRLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLDZGQ1J6QyxxSkFHQTsyRkRLYSw0QkFBNEI7a0JBTHhDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsV0FBVyxFQUFFLHdDQUF3QztvQkFDckQsU0FBUyxFQUFFLENBQUMsdUNBQXVDLENBQUM7aUJBQ3ZEOzhCQUdHLE9BQU87c0JBRE4sS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFkZHJlc3MgfSBmcm9tICcuL2FkZHJlc3MudHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4tZGlzcGxheS1hZGRyZXNzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tZGlzcGxheS1hZGRyZXNzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb2Vobi1kaXNwbGF5LWFkZHJlc3MuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuRGlzcGxheUFkZHJlc3NDb21wb25lbnQge1xuICAgIEBJbnB1dCgpXG4gICAgYWRkcmVzczogQWRkcmVzcztcblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgYWRkcmVzcyBsaW5lcyBmb3JtYXR0ZWQuXG4gICAgICpcbiAgICAgKiByZWYuIGh0dHBzOi8vcG9ydGFpbC5ldGF0LWRlLXZhdWQuY2gvb3V0aWxzL2RzaXdpa2kvZGlzcGxheS9DeWJlcmFkbWluaXN0cmF0aW9uL0dlc3Rpb24rZGVzK2FkcmVzc2VzK2RhbnMrRVNcbiAgICAgKiBNb2RlbCBBZGRyZXNzIGV4cGxpY2F0aW9uOiBodHRwczovL3BvcnRhaWwuZXRhdC1kZS12YXVkLmNoL291dGlscy9kc2l3aWtpL3BhZ2VzL3ZpZXdwYWdlLmFjdGlvbj9wYWdlSWQ9NzQ3NzY1ODM0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWRkcmVzcyBhcyBBZGRyZXNzXG4gICAgICogQHJldHVybnMgYW55W11cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGdldExpbmVzKGFkZHJlc3M6IEFkZHJlc3MpOiBhbnlbXSB7XG4gICAgICAgIGlmICghYWRkcmVzcykge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYWRkcmVzc0xpbmUxLFxuICAgICAgICAgICAgYWRkcmVzc0xpbmUyLFxuICAgICAgICAgICAgcG9zdE9mZmljZUJveFRleHQsXG4gICAgICAgICAgICBwb3N0T2ZmaWNlQm94TnVtYmVyLFxuICAgICAgICAgICAgc3RyZWV0LFxuICAgICAgICAgICAgaG91c2VOdW1iZXIsXG4gICAgICAgICAgICBkd2VsbGluZ051bWJlcixcbiAgICAgICAgICAgIGxvY2FsaXR5LFxuICAgICAgICAgICAgY291bnRyeVxuICAgICAgICB9ID0gYWRkcmVzcztcblxuICAgICAgICBjb25zdCBsaW5lcyA9IFtdO1xuXG4gICAgICAgIGlmIChhZGRyZXNzTGluZTEpIHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYWRkcmVzc0xpbmUxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhZGRyZXNzTGluZTIpIHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYWRkcmVzc0xpbmUyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdHJlZXQgJiYgc3RyZWV0LmxvbmdOYW1lKSB7XG4gICAgICAgICAgICBsZXQgc3RyZWV0TGluZSA9IGAke3N0cmVldC5sb25nTmFtZX1gO1xuICAgICAgICAgICAgaWYgKCEhaG91c2VOdW1iZXIgJiYgaG91c2VOdW1iZXIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc3RyZWV0TGluZSArPSBgICR7aG91c2VOdW1iZXJ9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghIWR3ZWxsaW5nTnVtYmVyICYmIGR3ZWxsaW5nTnVtYmVyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHN0cmVldExpbmUgKz0gYCAke2R3ZWxsaW5nTnVtYmVyfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaW5lcy5wdXNoKHN0cmVldExpbmUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBvc3RPZmZpY2VCb3hUZXh0IHx8IHBvc3RPZmZpY2VCb3hOdW1iZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvc3RPZmZpY2VCb3hMaW5lID0gYCR7cG9zdE9mZmljZUJveFRleHQgfHwgJyd9ICR7XG4gICAgICAgICAgICAgICAgcG9zdE9mZmljZUJveE51bWJlciB8fCAnJ1xuICAgICAgICAgICAgfWAudHJpbSgpO1xuICAgICAgICAgICAgaWYgKHBvc3RPZmZpY2VCb3hMaW5lLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGxpbmVzLnB1c2gocG9zdE9mZmljZUJveExpbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvY2FsaXR5ICYmIChsb2NhbGl0eS56aXBDb2RlIHx8IGxvY2FsaXR5LmxvbmdOYW1lKSkge1xuICAgICAgICAgICAgY29uc3QgemlwQ29kZVN0ciA9IGxvY2FsaXR5LnppcENvZGU7XG4gICAgICAgICAgICBjb25zdCBsb25nTmFtZVN0ciA9IGxvY2FsaXR5LmxvbmdOYW1lO1xuICAgICAgICAgICAgbGV0IGxvY2FsaXR5U3RyID0gJyc7XG5cbiAgICAgICAgICAgIGlmICh6aXBDb2RlU3RyKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxpdHlTdHIgKz0gemlwQ29kZVN0cjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGxvbmdOYW1lU3RyKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxpdHlTdHIgKz1cbiAgICAgICAgICAgICAgICAgICAgbG9jYWxpdHlTdHIubGVuZ3RoID4gMCA/IGAgJHtsb25nTmFtZVN0cn1gIDogbG9uZ05hbWVTdHI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGAke2xvY2FsaXR5U3RyfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvdW50cnkgJiYgY291bnRyeS5zaG9ydE5hbWVGcikge1xuICAgICAgICAgICAgbGluZXMucHVzaChjb3VudHJ5LnNob3J0TmFtZUZyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsaW5lcztcbiAgICB9XG59XG4iLCI8YWRkcmVzcyBjbGFzcz1cImZvZWhuLWFkZHJlc3NcIiAqbmdJZj1cImFkZHJlc3NcIj5cbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhZGRyZXNzTGluZSBvZiBnZXRMaW5lcyhhZGRyZXNzKVwiPnt7IGFkZHJlc3NMaW5lIH19PC9kaXY+XG48L2FkZHJlc3M+XG4iXX0=
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tZGlzcGxheS1hZGRyZXNzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1hZGRyZXNzL2ZvZWhuLWRpc3BsYXktYWRkcmVzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tYWRkcmVzcy9mb2Vobi1kaXNwbGF5LWFkZHJlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVFqRCxNQUFNLE9BQU8sNEJBQTRCO0lBSXJDOzs7Ozs7OztPQVFHO0lBQ0gsOERBQThEO0lBQzlELFFBQVEsQ0FBQyxPQUFnQjtRQUNyQixJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsT0FBTyxFQUFFLENBQUM7U0FDYjtRQUVELE1BQU0sRUFDRixZQUFZLEVBQ1osWUFBWSxFQUNaLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsTUFBTSxFQUNOLFdBQVcsRUFDWCxjQUFjLEVBQ2QsUUFBUSxFQUNSLE9BQU8sRUFDVixHQUFHLE9BQU8sQ0FBQztRQUVaLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUVqQixJQUFJLFlBQVksRUFBRTtZQUNkLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDNUI7UUFFRCxJQUFJLFlBQVksRUFBRTtZQUNkLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDNUI7UUFFRCxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO1lBQzNCLElBQUksVUFBVSxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFO2dCQUNyQyxVQUFVLElBQUksSUFBSSxXQUFXLEVBQUUsQ0FBQzthQUNuQztZQUNELElBQUksQ0FBQyxDQUFDLGNBQWMsSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFO2dCQUMzQyxVQUFVLElBQUksSUFBSSxjQUFjLEVBQUUsQ0FBQzthQUN0QztZQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDMUI7UUFFRCxJQUFJLGlCQUFpQixJQUFJLG1CQUFtQixFQUFFO1lBQzFDLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxpQkFBaUIsSUFBSSxFQUFFLElBQ2hELG1CQUFtQixJQUFJLEVBQzNCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLElBQUksaUJBQWlCLENBQUMsTUFBTSxFQUFFO2dCQUMxQixLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDakM7U0FDSjtRQUVELElBQUksUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDckQsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUNwQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ3RDLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUVyQixJQUFJLFVBQVUsRUFBRTtnQkFDWixXQUFXLElBQUksVUFBVSxDQUFDO2FBQzdCO1lBRUQsSUFBSSxXQUFXLEVBQUU7Z0JBQ2IsV0FBVztvQkFDUCxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO2FBQ2hFO1lBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFDLENBQUM7U0FDaEM7UUFFRCxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQ2hDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ25DO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQzs7eUhBbEZRLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLDZGQ1J6QyxxSkFHQTsyRkRLYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0ksdUJBQXVCOzhCQU1qQyxPQUFPO3NCQUROLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBZGRyZXNzIH0gZnJvbSAnLi9hZGRyZXNzLnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWRpc3BsYXktYWRkcmVzcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZvZWhuLWRpc3BsYXktYWRkcmVzcy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9laG4tZGlzcGxheS1hZGRyZXNzLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobkRpc3BsYXlBZGRyZXNzQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKVxuICAgIGFkZHJlc3M6IEFkZHJlc3M7XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGFkZHJlc3MgbGluZXMgZm9ybWF0dGVkLlxuICAgICAqXG4gICAgICogcmVmLiBodHRwczovL3BvcnRhaWwuZXRhdC1kZS12YXVkLmNoL291dGlscy9kc2l3aWtpL2Rpc3BsYXkvQ3liZXJhZG1pbmlzdHJhdGlvbi9HZXN0aW9uK2RlcythZHJlc3NlcytkYW5zK0VTXG4gICAgICogTW9kZWwgQWRkcmVzcyBleHBsaWNhdGlvbjogaHR0cHM6Ly9wb3J0YWlsLmV0YXQtZGUtdmF1ZC5jaC9vdXRpbHMvZHNpd2lraS9wYWdlcy92aWV3cGFnZS5hY3Rpb24/cGFnZUlkPTc0Nzc2NTgzNFxuICAgICAqXG4gICAgICogQHBhcmFtIGFkZHJlc3MgYXMgQWRkcmVzc1xuICAgICAqIEByZXR1cm5zIGFueVtdXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBnZXRMaW5lcyhhZGRyZXNzOiBBZGRyZXNzKTogYW55W10ge1xuICAgICAgICBpZiAoIWFkZHJlc3MpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGFkZHJlc3NMaW5lMSxcbiAgICAgICAgICAgIGFkZHJlc3NMaW5lMixcbiAgICAgICAgICAgIHBvc3RPZmZpY2VCb3hUZXh0LFxuICAgICAgICAgICAgcG9zdE9mZmljZUJveE51bWJlcixcbiAgICAgICAgICAgIHN0cmVldCxcbiAgICAgICAgICAgIGhvdXNlTnVtYmVyLFxuICAgICAgICAgICAgZHdlbGxpbmdOdW1iZXIsXG4gICAgICAgICAgICBsb2NhbGl0eSxcbiAgICAgICAgICAgIGNvdW50cnlcbiAgICAgICAgfSA9IGFkZHJlc3M7XG5cbiAgICAgICAgY29uc3QgbGluZXMgPSBbXTtcblxuICAgICAgICBpZiAoYWRkcmVzc0xpbmUxKSB7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGFkZHJlc3NMaW5lMSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWRkcmVzc0xpbmUyKSB7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGFkZHJlc3NMaW5lMik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RyZWV0ICYmIHN0cmVldC5sb25nTmFtZSkge1xuICAgICAgICAgICAgbGV0IHN0cmVldExpbmUgPSBgJHtzdHJlZXQubG9uZ05hbWV9YDtcbiAgICAgICAgICAgIGlmICghIWhvdXNlTnVtYmVyICYmIGhvdXNlTnVtYmVyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHN0cmVldExpbmUgKz0gYCAke2hvdXNlTnVtYmVyfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoISFkd2VsbGluZ051bWJlciAmJiBkd2VsbGluZ051bWJlci5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBzdHJlZXRMaW5lICs9IGAgJHtkd2VsbGluZ051bWJlcn1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGluZXMucHVzaChzdHJlZXRMaW5lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwb3N0T2ZmaWNlQm94VGV4dCB8fCBwb3N0T2ZmaWNlQm94TnVtYmVyKSB7XG4gICAgICAgICAgICBjb25zdCBwb3N0T2ZmaWNlQm94TGluZSA9IGAke3Bvc3RPZmZpY2VCb3hUZXh0IHx8ICcnfSAke1xuICAgICAgICAgICAgICAgIHBvc3RPZmZpY2VCb3hOdW1iZXIgfHwgJydcbiAgICAgICAgICAgIH1gLnRyaW0oKTtcbiAgICAgICAgICAgIGlmIChwb3N0T2ZmaWNlQm94TGluZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBsaW5lcy5wdXNoKHBvc3RPZmZpY2VCb3hMaW5lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsb2NhbGl0eSAmJiAobG9jYWxpdHkuemlwQ29kZSB8fCBsb2NhbGl0eS5sb25nTmFtZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHppcENvZGVTdHIgPSBsb2NhbGl0eS56aXBDb2RlO1xuICAgICAgICAgICAgY29uc3QgbG9uZ05hbWVTdHIgPSBsb2NhbGl0eS5sb25nTmFtZTtcbiAgICAgICAgICAgIGxldCBsb2NhbGl0eVN0ciA9ICcnO1xuXG4gICAgICAgICAgICBpZiAoemlwQ29kZVN0cikge1xuICAgICAgICAgICAgICAgIGxvY2FsaXR5U3RyICs9IHppcENvZGVTdHI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChsb25nTmFtZVN0cikge1xuICAgICAgICAgICAgICAgIGxvY2FsaXR5U3RyICs9XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsaXR5U3RyLmxlbmd0aCA+IDAgPyBgICR7bG9uZ05hbWVTdHJ9YCA6IGxvbmdOYW1lU3RyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGluZXMucHVzaChgJHtsb2NhbGl0eVN0cn1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb3VudHJ5ICYmIGNvdW50cnkuc2hvcnROYW1lRnIpIHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goY291bnRyeS5zaG9ydE5hbWVGcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbGluZXM7XG4gICAgfVxufVxuIiwiPGFkZHJlc3MgY2xhc3M9XCJmb2Vobi1hZGRyZXNzXCIgKm5nSWY9XCJhZGRyZXNzXCI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgYWRkcmVzc0xpbmUgb2YgZ2V0TGluZXMoYWRkcmVzcylcIj57eyBhZGRyZXNzTGluZSB9fTwvZGl2PlxuPC9hZGRyZXNzPlxuIl19
@@ -0,0 +1,366 @@
1
+ import { Component, forwardRef, Input, ViewChild } from '@angular/core';
2
+ import { FoehnInputComponent } from '../foehn-input/foehn-input.component';
3
+ import { BehaviorSubject, combineLatest, of } from 'rxjs';
4
+ import { debounceTime, distinctUntilChanged, first, map, shareReplay, switchMap } from 'rxjs/operators';
5
+ import { FoehnInputForeignLocalityComponent } from './foehn-input-foreign-locality.component';
6
+ import { FoehnInputForeignStreetComponent } from './foehn-input-foreign-street.component';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common/http";
9
+ import * as i2 from "../foehn-validation-alerts/foehn-validation-alerts.component";
10
+ import * as i3 from "../foehn-autocomplete/foehn-autocomplete.component";
11
+ import * as i4 from "./foehn-input-foreign-locality.component";
12
+ import * as i5 from "./foehn-input-foreign-street.component";
13
+ import * as i6 from "../foehn-input/foehn-input-text.component";
14
+ import * as i7 from "@angular/common";
15
+ import * as i8 from "../sdk-dictionary/sdk-dictionary.pipe";
16
+ // eslint-disable max-classes-per-file
17
+ export const SWISS_ISO_ID = 'CH';
18
+ export class StreetNumber {
19
+ }
20
+ export class FoehnInputAddressComponent extends FoehnInputComponent {
21
+ constructor(httpClient, ngZone) {
22
+ super();
23
+ this.httpClient = httpClient;
24
+ this.ngZone = ngZone;
25
+ this.countriesUrl = 'api/refinf/countries';
26
+ this.isOnlySwiss = true;
27
+ this.showPostOfficeBoxText = false;
28
+ this.showAdressLines = true;
29
+ this.showAdressLine1 = true;
30
+ this.showAdressLine2 = true;
31
+ this.countryRequired = true;
32
+ this.swissNpaLocalityRequired = true;
33
+ this.streetRequired = true;
34
+ this.streetNumberRequired = false;
35
+ this.foreignZipCodeRequired = true;
36
+ this.foreignLocalityRequired = true;
37
+ this.foreignStreetRequired = true;
38
+ this.foreignStreetNumberRequired = false;
39
+ this.postOfficeBoxTextRequired = false;
40
+ this.addressLine1Required = false;
41
+ this.addressLine2Required = false;
42
+ this.withCompanyLocalities = false;
43
+ this.iso2IdSubject = new BehaviorSubject(null);
44
+ this.zipCodeIdSubject = new BehaviorSubject(null);
45
+ this.estrIdSubject = new BehaviorSubject(null);
46
+ this.identity = (n) => n;
47
+ this.countryIdentity = (country) => country.iso2Id;
48
+ this.localityIdentity = (loc) => loc.postalLocalityHistoryId;
49
+ this.streetIdentity = (street) => street.estrid;
50
+ this.streetGenerator = (longName) => ({
51
+ estrid: null,
52
+ longName
53
+ });
54
+ }
55
+ ngOnInit() {
56
+ super.ngOnInit();
57
+ this.countries = this.getCountries();
58
+ this.localities = this.iso2IdSubject.pipe(distinctUntilChanged(),
59
+ // The list of localities, or an empty array as the default value.
60
+ switchMap(iso2Id => this.getLocalities(iso2Id)), shareReplay(1));
61
+ this.streets = combineLatest([
62
+ this.zipCodeIdSubject,
63
+ this.localities
64
+ ]).pipe(
65
+ // The zipCodeId when locality changes or match locality (postalLocalityHistoryId) from model
66
+ map(([zipCodeId, localities]) => zipCodeId ||
67
+ this.extractLocalityZipCodeId(localities, this.locality)), debounceTime(0), distinctUntilChanged(),
68
+ // The list of streets or a default value to an empty array
69
+ switchMap(zipCodeId => this.getStreetsFor(zipCodeId)), shareReplay(1));
70
+ this.streetNumbers = combineLatest([
71
+ this.estrIdSubject,
72
+ this.streets
73
+ ]).pipe(
74
+ // The estrid when street changes or match street (longName) from model
75
+ map(([estrid, streets]) => estrid || this.extractStreetEstrid(streets, this.street)), debounceTime(0), distinctUntilChanged(),
76
+ // The list of streets or a default value to an empty array
77
+ switchMap(estrid => this.getStreetNumberFor(estrid)),
78
+ // Some street might not have an name, RefInf sometimes returns weird data.
79
+ map(values => values.filter(streetNumber => !!streetNumber.name)), map(values => {
80
+ const collator = new Intl.Collator(undefined, {
81
+ numeric: true,
82
+ sensitivity: 'base'
83
+ });
84
+ return values.sort((a, b) => collator.compare(a.name, b.name));
85
+ }), shareReplay(1));
86
+ this.ngZone.onMicrotaskEmpty.pipe(first()).subscribe(() => {
87
+ setTimeout(() => {
88
+ this.clearAutocompletesWhenCountryIsUnappropriatedToComponentConfiguration();
89
+ this.setDefaultCountry();
90
+ });
91
+ });
92
+ }
93
+ updateAddress() {
94
+ const validValue = this.getValidValue();
95
+ if (typeof validValue !== 'undefined') {
96
+ this.updateNgModel(validValue);
97
+ }
98
+ }
99
+ handleUserInput() {
100
+ const validValue = this.getValidValue();
101
+ if (typeof validValue !== 'undefined') {
102
+ this.handleChange(validValue);
103
+ }
104
+ }
105
+ onModelChange(value) {
106
+ if (value) {
107
+ this.country = value.country;
108
+ this.locality = value.locality;
109
+ this.street = value.street;
110
+ this.houseNumber = value.houseNumber;
111
+ this.postOfficeBoxText = value.postOfficeBoxText;
112
+ this.addressLine1 = value.addressLine1;
113
+ this.addressLine2 = value.addressLine2;
114
+ }
115
+ else if (!value) {
116
+ this.locality = null;
117
+ this.street = null;
118
+ this.houseNumber = null;
119
+ this.postOfficeBoxText = null;
120
+ this.addressLine1 = null;
121
+ this.addressLine2 = null;
122
+ }
123
+ }
124
+ isSwiss() {
125
+ return !!(this.isOnlySwiss ||
126
+ (this.country && this.country.iso2Id === SWISS_ISO_ID));
127
+ }
128
+ userInputCountryOrLocality(emptyLocality) {
129
+ if (emptyLocality) {
130
+ this.locality = null;
131
+ this.postOfficeBoxText = null;
132
+ this.addressLine1 = null;
133
+ this.addressLine2 = null;
134
+ // subcomponents will be enabled but should not display errors yet
135
+ this.foreignLocalityComponent
136
+ ?.getNativeInputList()
137
+ .forEach(ngModel => ngModel.control.markAsDirty());
138
+ this.foreignStreetComponent
139
+ ?.getNativeInputList()
140
+ .forEach(ngModel => ngModel.control.markAsDirty());
141
+ this.foreignHouseNumber
142
+ ?.getNativeInputList()
143
+ .forEach(ngModel => ngModel.control.markAsDirty());
144
+ }
145
+ this.street = null;
146
+ this.houseNumber = null;
147
+ this.updateAddress();
148
+ this.handleUserInput();
149
+ }
150
+ countryUpdated(country) {
151
+ // No double-binding on country in view to ensure we update properly model
152
+ this.country = country;
153
+ this.updateAddress();
154
+ if (!country) {
155
+ return;
156
+ }
157
+ const { iso2Id } = country;
158
+ this.iso2IdSubject.next(iso2Id);
159
+ }
160
+ getLocalityDisplayedName(locality) {
161
+ if (!locality) {
162
+ return;
163
+ }
164
+ return `${locality.zipCode} ${locality.longName}`;
165
+ }
166
+ localityUpdated(locality) {
167
+ // No double-binding on locality in view to ensure we update properly model
168
+ this.locality = locality;
169
+ this.updateAddress();
170
+ if (!locality) {
171
+ return;
172
+ }
173
+ const { zipCodeId } = locality;
174
+ this.zipCodeIdSubject.next(zipCodeId);
175
+ }
176
+ streetUpdated(street) {
177
+ // No double-binding on street in view to ensure we update properly model
178
+ this.street = street;
179
+ this.updateAddress();
180
+ if (!street) {
181
+ return;
182
+ }
183
+ const { estrid } = street;
184
+ this.estrIdSubject.next(estrid);
185
+ }
186
+ getCountries() {
187
+ return this.httpClient.get(this.countriesUrl);
188
+ }
189
+ getLocalities(iso2Id) {
190
+ if (iso2Id !== SWISS_ISO_ID) {
191
+ return of([]);
192
+ }
193
+ const queryParams = !!this.withCompanyLocalities
194
+ ? '?withCompanyLocalities=true'
195
+ : '';
196
+ if (!!this.specifiedCanton) {
197
+ return this.httpClient.get(`api/refinf/locality/${this.specifiedCanton}${queryParams}`);
198
+ }
199
+ else {
200
+ return this.httpClient.get(`api/refinf/locality/all${queryParams}`);
201
+ }
202
+ }
203
+ getStreetNumberFor(estrid) {
204
+ if (!estrid) {
205
+ return of([]);
206
+ }
207
+ const url = `api/refinf/addresses/${estrid}`;
208
+ return this.httpClient.get(url);
209
+ }
210
+ getStreetsFor(zipCodeId) {
211
+ if (!zipCodeId) {
212
+ return of([]);
213
+ }
214
+ const url = `api/refinf/streets/${zipCodeId}`;
215
+ return this.httpClient.get(url);
216
+ }
217
+ clearAutocompletesWhenCountryIsUnappropriatedToComponentConfiguration() {
218
+ if (this.isModelEmpty()) {
219
+ return;
220
+ }
221
+ if (this.isOnlySwiss &&
222
+ this.country &&
223
+ this.country.iso2Id !== SWISS_ISO_ID) {
224
+ // Do not remove this warning. Needed for debugging at all time.
225
+ console.warn(
226
+ // eslint-disable-next-line max-len
227
+ `Country address was '${this.country.iso2Id}'. Only swiss is asked in component 'foehn-input-address' configuration. Address model resetted.`);
228
+ this.clearAutocompletes();
229
+ }
230
+ }
231
+ setDefaultCountry() {
232
+ if (this.isOnlySwiss || !this.country || !this.country.iso2Id) {
233
+ this.country = {
234
+ iso2Id: SWISS_ISO_ID,
235
+ shortNameFr: 'Suisse'
236
+ };
237
+ this.iso2IdSubject.next(SWISS_ISO_ID);
238
+ this.updateAddress();
239
+ }
240
+ }
241
+ clearAutocompletes() {
242
+ this.country = null;
243
+ this.street = null;
244
+ this.locality = null;
245
+ this.houseNumber = null;
246
+ // No updateAddress() here because done in setDefaultCountry()
247
+ }
248
+ extractLocalityZipCodeId(localities, localityToMatch) {
249
+ if (localityToMatch && localityToMatch.postalLocalityHistoryId) {
250
+ const matched = localities.find((locality) => locality.postalLocalityHistoryId ===
251
+ localityToMatch.postalLocalityHistoryId);
252
+ if (matched) {
253
+ return matched.zipCodeId;
254
+ }
255
+ }
256
+ return null;
257
+ }
258
+ extractStreetEstrid(streets, streetToMatch) {
259
+ if (streetToMatch && streetToMatch.longName) {
260
+ const matched = streets.find((street) => street.longName === streetToMatch.longName);
261
+ if (matched) {
262
+ return matched.estrid;
263
+ }
264
+ }
265
+ return null;
266
+ }
267
+ getValidValue() {
268
+ if (this.isModelEmpty()) {
269
+ if (this.model_ !== undefined) {
270
+ return null;
271
+ }
272
+ return undefined;
273
+ }
274
+ return {
275
+ country: this.country,
276
+ locality: this.getValidLocality(this.locality),
277
+ street: this.street,
278
+ houseNumber: this.houseNumber,
279
+ postOfficeBoxText: this.postOfficeBoxText,
280
+ addressLine1: this.addressLine1,
281
+ addressLine2: this.addressLine2
282
+ };
283
+ }
284
+ getValidLocality(value) {
285
+ // PRESTAKIT-352: Need a fake 'postalLocalityHistoryId' for individual errors on 'zipCode' and 'longName'
286
+ if (!this.isSwiss() && !value) {
287
+ return { postalLocalityHistoryId: -1 };
288
+ }
289
+ return value;
290
+ }
291
+ isModelEmpty() {
292
+ return (this.isEmpty(this.country) &&
293
+ this.isEmpty(this.locality) &&
294
+ this.isEmpty(this.street) &&
295
+ this.isEmpty(this.houseNumber) &&
296
+ this.isEmpty(this.postOfficeBoxText) &&
297
+ this.isEmpty(this.addressLine1) &&
298
+ this.isEmpty(this.addressLine2));
299
+ }
300
+ }
301
+ FoehnInputAddressComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: FoehnInputAddressComponent, deps: [{ token: i1.HttpClient }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
302
+ FoehnInputAddressComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: FoehnInputAddressComponent, selector: "foehn-input-address", inputs: { countriesUrl: "countriesUrl", isOnlySwiss: "isOnlySwiss", showPostOfficeBoxText: "showPostOfficeBoxText", showAdressLines: "showAdressLines", showAdressLine1: "showAdressLine1", showAdressLine2: "showAdressLine2", specifiedCanton: "specifiedCanton", countryRequired: "countryRequired", swissNpaLocalityRequired: "swissNpaLocalityRequired", streetRequired: "streetRequired", streetNumberRequired: "streetNumberRequired", foreignZipCodeRequired: "foreignZipCodeRequired", foreignLocalityRequired: "foreignLocalityRequired", foreignStreetRequired: "foreignStreetRequired", foreignStreetNumberRequired: "foreignStreetNumberRequired", postOfficeBoxTextRequired: "postOfficeBoxTextRequired", addressLine1Required: "addressLine1Required", addressLine2Required: "addressLine2Required", withCompanyLocalities: "withCompanyLocalities" }, providers: [
303
+ {
304
+ provide: FoehnInputComponent,
305
+ useExisting: forwardRef(() => FoehnInputAddressComponent),
306
+ multi: true
307
+ }
308
+ ], viewQueries: [{ propertyName: "foreignLocalityComponent", first: true, predicate: FoehnInputForeignLocalityComponent, descendants: true }, { propertyName: "foreignStreetComponent", first: true, predicate: FoehnInputForeignStreetComponent, descendants: true }, { propertyName: "foreignHouseNumber", first: true, predicate: ["foreignHouseNumber"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n [attr.id]=\"buildId() + 'Container'\"\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [tabIndex]=\"-1\"\n>\n <fieldset\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend *ngIf=\"!!label\" [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\">\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <foehn-autocomplete\n *ngIf=\"!isOnlySwiss\"\n [label]=\"'foehn-input-address.country.label' | fromDictionary\"\n [elements]=\"countries | async\"\n elementLabel=\"shortNameFr\"\n [elementValue]=\"identity\"\n [elementValueIdentity]=\"countryIdentity\"\n (modelChange)=\"countryUpdated($event)\"\n (userInput)=\"userInputCountryOrLocality(true)\"\n [model]=\"country\"\n [name]=\"name + '.country'\"\n [required]=\"countryRequired\"\n [disabled]=\"disabled\"\n ></foehn-autocomplete>\n\n <ng-container *ngIf=\"isSwiss()\">\n <foehn-autocomplete\n [label]=\"'foehn-input-address.locality.label' | fromDictionary\"\n [elements]=\"localities | async\"\n [elementLabel]=\"getLocalityDisplayedName\"\n [elementValue]=\"identity\"\n [elementValueIdentity]=\"localityIdentity\"\n (modelChange)=\"localityUpdated($event)\"\n (userInput)=\"userInputCountryOrLocality(false)\"\n [model]=\"locality\"\n [name]=\"name + '.locality'\"\n [required]=\"swissNpaLocalityRequired\"\n [allElementDisabled]=\"!country\"\n [disabled]=\"disabled\"\n ></foehn-autocomplete>\n\n <foehn-autocomplete\n [label]=\"'foehn-input-address.street.label' | fromDictionary\"\n [elements]=\"streets | async\"\n elementLabel=\"longName\"\n [elementValue]=\"identity\"\n [elementValueIdentity]=\"streetIdentity\"\n (modelChange)=\"streetUpdated($event)\"\n [model]=\"street\"\n [name]=\"name + '.street'\"\n [allowCustomValue]=\"true\"\n [customValueModelGenerator]=\"streetGenerator\"\n [required]=\"streetRequired\"\n [helpText]=\"\n 'foehn-input-address.street.help-text' | fromDictionary\n \"\n [allElementDisabled]=\"!country\"\n (userInput)=\"handleUserInput()\"\n [disabled]=\"disabled\"\n ></foehn-autocomplete>\n\n <foehn-autocomplete\n [label]=\"\n 'foehn-input-address.houseNumber.label' | fromDictionary\n \"\n [elements]=\"streetNumbers | async\"\n elementLabel=\"name\"\n elementValue=\"name\"\n [(model)]=\"houseNumber\"\n [name]=\"name + '.houseNumber'\"\n [allowCustomValue]=\"true\"\n [helpText]=\"\n 'foehn-input-address.houseNumber.help-text' | fromDictionary\n \"\n [allElementDisabled]=\"!country\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"streetNumberRequired\"\n [disabled]=\"disabled\"\n ></foehn-autocomplete>\n </ng-container>\n\n <ng-container *ngIf=\"!isSwiss()\">\n <!--\n Component <foehn-input-foreign-locality> is special because we use the same model when swiss or foreigner.\n To do so, we need:\n - Errors will be bind on 'locality' when NULL or on 'zipCode' and 'longName' model inside component when EMPTY\n - Hide label from component because we need label from children to be displayed (isLabelSrOnly: true)\n - required and disabled params are transmitted to children\n -->\n <foehn-input-foreign-locality\n [label]=\"'foehn-input-address.locality.label' | fromDictionary\"\n [name]=\"name + '.locality'\"\n [(model)]=\"locality\"\n [zipCodeRequired]=\"foreignZipCodeRequired\"\n [localityRequired]=\"foreignLocalityRequired\"\n [isLabelSrOnly]=\"true\"\n [disabled]=\"!country || disabled\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n ></foehn-input-foreign-locality>\n <!--\n Component <foehn-input-foreign-street> is special because we use the same model when swiss or foreigner.\n To do so, we need:\n - Errors will be bind on 'street' when NULL or on 'longName' model inside component when EMPTY\n - required, helpText, isLabelSrOnly and disabled params are transmitted to children\n -->\n <foehn-input-foreign-street\n [label]=\"'foehn-input-address.street.label' | fromDictionary\"\n [name]=\"name + '.street'\"\n [(model)]=\"street\"\n [required]=\"foreignStreetRequired\"\n [helpText]=\"\n 'foehn-input-address.street.help-text' | fromDictionary\n \"\n [disabled]=\"!country || disabled\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n ></foehn-input-foreign-street>\n\n <foehn-input-text\n #foreignHouseNumber\n [label]=\"\n 'foehn-input-address.houseNumber.label' | fromDictionary\n \"\n [name]=\"name + '.houseNumber'\"\n [(model)]=\"houseNumber\"\n [helpText]=\"\n 'foehn-input-address.houseNumber.help-text' | fromDictionary\n \"\n [disabled]=\"!country || disabled\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"foreignStreetNumberRequired\"\n ></foehn-input-text>\n </ng-container>\n\n <foehn-input-text\n *ngIf=\"showPostOfficeBoxText\"\n [(model)]=\"postOfficeBoxText\"\n [helpText]=\"\n 'foehn-input-address.postOfficeBoxText.help-text'\n | fromDictionary\n \"\n [label]=\"\n 'foehn-input-address.postOfficeBoxText.label' | fromDictionary\n \"\n [name]=\"name + '.postOfficeBoxText'\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"postOfficeBoxTextRequired\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n\n <foehn-input-text\n *ngIf=\"showAdressLines && showAdressLine1\"\n [(model)]=\"addressLine1\"\n [label]=\"'foehn-input-address.addressLine1.label' | fromDictionary\"\n [name]=\"name + '.addressLine1'\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"addressLine1Required\"\n [autocomplete]=\"'address-line2'\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n\n <foehn-input-text\n *ngIf=\"showAdressLines && showAdressLine2\"\n [(model)]=\"addressLine2\"\n [label]=\"'foehn-input-address.addressLine2.label' | fromDictionary\"\n [name]=\"name + '.addressLine2'\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"addressLine2Required\"\n [autocomplete]=\"'address-line3'\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n </fieldset>\n</div>\n", components: [{ type: i2.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { type: i3.FoehnAutocompleteComponent, selector: "foehn-autocomplete", inputs: ["searchValueMinCharsCount", "allowCustomValue", "customValueModelGenerator"] }, { type: i4.FoehnInputForeignLocalityComponent, selector: "foehn-input-foreign-locality", inputs: ["localityRequired", "zipCodeRequired"] }, { type: i5.FoehnInputForeignStreetComponent, selector: "foehn-input-foreign-street" }, { type: i6.FoehnInputTextComponent, selector: "foehn-input-text", inputs: ["numberOnly"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "fromDictionary": i8.SdkDictionaryPipe, "async": i7.AsyncPipe } });
309
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: FoehnInputAddressComponent, decorators: [{
310
+ type: Component,
311
+ args: [{ selector: 'foehn-input-address', providers: [
312
+ {
313
+ provide: FoehnInputComponent,
314
+ useExisting: forwardRef(() => FoehnInputAddressComponent),
315
+ multi: true
316
+ }
317
+ ], template: "<div\n [attr.id]=\"buildId() + 'Container'\"\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [tabIndex]=\"-1\"\n>\n <fieldset\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend *ngIf=\"!!label\" [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\">\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <foehn-autocomplete\n *ngIf=\"!isOnlySwiss\"\n [label]=\"'foehn-input-address.country.label' | fromDictionary\"\n [elements]=\"countries | async\"\n elementLabel=\"shortNameFr\"\n [elementValue]=\"identity\"\n [elementValueIdentity]=\"countryIdentity\"\n (modelChange)=\"countryUpdated($event)\"\n (userInput)=\"userInputCountryOrLocality(true)\"\n [model]=\"country\"\n [name]=\"name + '.country'\"\n [required]=\"countryRequired\"\n [disabled]=\"disabled\"\n ></foehn-autocomplete>\n\n <ng-container *ngIf=\"isSwiss()\">\n <foehn-autocomplete\n [label]=\"'foehn-input-address.locality.label' | fromDictionary\"\n [elements]=\"localities | async\"\n [elementLabel]=\"getLocalityDisplayedName\"\n [elementValue]=\"identity\"\n [elementValueIdentity]=\"localityIdentity\"\n (modelChange)=\"localityUpdated($event)\"\n (userInput)=\"userInputCountryOrLocality(false)\"\n [model]=\"locality\"\n [name]=\"name + '.locality'\"\n [required]=\"swissNpaLocalityRequired\"\n [allElementDisabled]=\"!country\"\n [disabled]=\"disabled\"\n ></foehn-autocomplete>\n\n <foehn-autocomplete\n [label]=\"'foehn-input-address.street.label' | fromDictionary\"\n [elements]=\"streets | async\"\n elementLabel=\"longName\"\n [elementValue]=\"identity\"\n [elementValueIdentity]=\"streetIdentity\"\n (modelChange)=\"streetUpdated($event)\"\n [model]=\"street\"\n [name]=\"name + '.street'\"\n [allowCustomValue]=\"true\"\n [customValueModelGenerator]=\"streetGenerator\"\n [required]=\"streetRequired\"\n [helpText]=\"\n 'foehn-input-address.street.help-text' | fromDictionary\n \"\n [allElementDisabled]=\"!country\"\n (userInput)=\"handleUserInput()\"\n [disabled]=\"disabled\"\n ></foehn-autocomplete>\n\n <foehn-autocomplete\n [label]=\"\n 'foehn-input-address.houseNumber.label' | fromDictionary\n \"\n [elements]=\"streetNumbers | async\"\n elementLabel=\"name\"\n elementValue=\"name\"\n [(model)]=\"houseNumber\"\n [name]=\"name + '.houseNumber'\"\n [allowCustomValue]=\"true\"\n [helpText]=\"\n 'foehn-input-address.houseNumber.help-text' | fromDictionary\n \"\n [allElementDisabled]=\"!country\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"streetNumberRequired\"\n [disabled]=\"disabled\"\n ></foehn-autocomplete>\n </ng-container>\n\n <ng-container *ngIf=\"!isSwiss()\">\n <!--\n Component <foehn-input-foreign-locality> is special because we use the same model when swiss or foreigner.\n To do so, we need:\n - Errors will be bind on 'locality' when NULL or on 'zipCode' and 'longName' model inside component when EMPTY\n - Hide label from component because we need label from children to be displayed (isLabelSrOnly: true)\n - required and disabled params are transmitted to children\n -->\n <foehn-input-foreign-locality\n [label]=\"'foehn-input-address.locality.label' | fromDictionary\"\n [name]=\"name + '.locality'\"\n [(model)]=\"locality\"\n [zipCodeRequired]=\"foreignZipCodeRequired\"\n [localityRequired]=\"foreignLocalityRequired\"\n [isLabelSrOnly]=\"true\"\n [disabled]=\"!country || disabled\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n ></foehn-input-foreign-locality>\n <!--\n Component <foehn-input-foreign-street> is special because we use the same model when swiss or foreigner.\n To do so, we need:\n - Errors will be bind on 'street' when NULL or on 'longName' model inside component when EMPTY\n - required, helpText, isLabelSrOnly and disabled params are transmitted to children\n -->\n <foehn-input-foreign-street\n [label]=\"'foehn-input-address.street.label' | fromDictionary\"\n [name]=\"name + '.street'\"\n [(model)]=\"street\"\n [required]=\"foreignStreetRequired\"\n [helpText]=\"\n 'foehn-input-address.street.help-text' | fromDictionary\n \"\n [disabled]=\"!country || disabled\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n ></foehn-input-foreign-street>\n\n <foehn-input-text\n #foreignHouseNumber\n [label]=\"\n 'foehn-input-address.houseNumber.label' | fromDictionary\n \"\n [name]=\"name + '.houseNumber'\"\n [(model)]=\"houseNumber\"\n [helpText]=\"\n 'foehn-input-address.houseNumber.help-text' | fromDictionary\n \"\n [disabled]=\"!country || disabled\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"foreignStreetNumberRequired\"\n ></foehn-input-text>\n </ng-container>\n\n <foehn-input-text\n *ngIf=\"showPostOfficeBoxText\"\n [(model)]=\"postOfficeBoxText\"\n [helpText]=\"\n 'foehn-input-address.postOfficeBoxText.help-text'\n | fromDictionary\n \"\n [label]=\"\n 'foehn-input-address.postOfficeBoxText.label' | fromDictionary\n \"\n [name]=\"name + '.postOfficeBoxText'\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"postOfficeBoxTextRequired\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n\n <foehn-input-text\n *ngIf=\"showAdressLines && showAdressLine1\"\n [(model)]=\"addressLine1\"\n [label]=\"'foehn-input-address.addressLine1.label' | fromDictionary\"\n [name]=\"name + '.addressLine1'\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"addressLine1Required\"\n [autocomplete]=\"'address-line2'\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n\n <foehn-input-text\n *ngIf=\"showAdressLines && showAdressLine2\"\n [(model)]=\"addressLine2\"\n [label]=\"'foehn-input-address.addressLine2.label' | fromDictionary\"\n [name]=\"name + '.addressLine2'\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"addressLine2Required\"\n [autocomplete]=\"'address-line3'\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n </fieldset>\n</div>\n" }]
318
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i0.NgZone }]; }, propDecorators: { foreignLocalityComponent: [{
319
+ type: ViewChild,
320
+ args: [FoehnInputForeignLocalityComponent, { static: false }]
321
+ }], foreignStreetComponent: [{
322
+ type: ViewChild,
323
+ args: [FoehnInputForeignStreetComponent, { static: false }]
324
+ }], foreignHouseNumber: [{
325
+ type: ViewChild,
326
+ args: ['foreignHouseNumber', { static: false }]
327
+ }], countriesUrl: [{
328
+ type: Input
329
+ }], isOnlySwiss: [{
330
+ type: Input
331
+ }], showPostOfficeBoxText: [{
332
+ type: Input
333
+ }], showAdressLines: [{
334
+ type: Input
335
+ }], showAdressLine1: [{
336
+ type: Input
337
+ }], showAdressLine2: [{
338
+ type: Input
339
+ }], specifiedCanton: [{
340
+ type: Input
341
+ }], countryRequired: [{
342
+ type: Input
343
+ }], swissNpaLocalityRequired: [{
344
+ type: Input
345
+ }], streetRequired: [{
346
+ type: Input
347
+ }], streetNumberRequired: [{
348
+ type: Input
349
+ }], foreignZipCodeRequired: [{
350
+ type: Input
351
+ }], foreignLocalityRequired: [{
352
+ type: Input
353
+ }], foreignStreetRequired: [{
354
+ type: Input
355
+ }], foreignStreetNumberRequired: [{
356
+ type: Input
357
+ }], postOfficeBoxTextRequired: [{
358
+ type: Input
359
+ }], addressLine1Required: [{
360
+ type: Input
361
+ }], addressLine2Required: [{
362
+ type: Input
363
+ }], withCompanyLocalities: [{
364
+ type: Input
365
+ }] } });
366
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtYWRkcmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tYWRkcmVzcy9mb2Vobi1pbnB1dC1hZGRyZXNzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1hZGRyZXNzL2ZvZWhuLWlucHV0LWFkZHJlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUdMLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUczRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEUsT0FBTyxFQUNILFlBQVksRUFDWixvQkFBb0IsRUFDcEIsS0FBSyxFQUNMLEdBQUcsRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDOUYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7Ozs7QUFHMUYsc0NBQXNDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUM7QUFFakMsTUFBTSxPQUFPLFlBQVk7Q0FFeEI7QUFhRCxNQUFNLE9BQU8sMEJBQ1QsU0FBUSxtQkFBNEI7SUFxRnBDLFlBQW9CLFVBQXNCLEVBQVUsTUFBYztRQUM5RCxLQUFLLEVBQUUsQ0FBQztRQURRLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBekVsRSxpQkFBWSxHQUFHLHNCQUFzQixDQUFD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QyxnQ0FBZ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSTlELGtCQUFrQjtzQkFEakIsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSWxELFlBQVk7c0JBRFgsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4scUJBQXFCO3NCQURwQixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sd0JBQXdCO3NCQUR2QixLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4sc0JBQXNCO3NCQURyQixLQUFLO2dCQUlOLHVCQUF1QjtzQkFEdEIsS0FBSztnQkFJTixxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBSU4sMkJBQTJCO3NCQUQxQixLQUFLO2dCQUlOLHlCQUF5QjtzQkFEeEIsS0FBSztnQkFJTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4sb0JBQW9CO3NCQURuQixLQUFLO2dCQUlOLHFCQUFxQjtzQkFEcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uSW5pdCxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb2VobklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vZm9laG4taW5wdXQvZm9laG4taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEFkZHJlc3MsIENvdW50cnksIExvY2FsaXR5LCBTdHJlZXQgfSBmcm9tICcuL2FkZHJlc3MudHlwZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBkZWJvdW5jZVRpbWUsXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgZmlyc3QsXG4gICAgbWFwLFxuICAgIHNoYXJlUmVwbGF5LFxuICAgIHN3aXRjaE1hcFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGb2VobklucHV0Rm9yZWlnbkxvY2FsaXR5Q29tcG9uZW50IH0gZnJvbSAnLi9mb2Vobi1pbnB1dC1mb3JlaWduLWxvY2FsaXR5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb2VobklucHV0Rm9yZWlnblN0cmVldENvbXBvbmVudCB9IGZyb20gJy4vZm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXQuY29tcG9uZW50JztcbmltcG9ydCB7IEZvZWhuSW5wdXRUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vZm9laG4taW5wdXQvZm9laG4taW5wdXQtdGV4dC5jb21wb25lbnQnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZSBtYXgtY2xhc3Nlcy1wZXItZmlsZVxuZXhwb3J0IGNvbnN0IFNXSVNTX0lTT19JRCA9ICdDSCc7XG5cbmV4cG9ydCBjbGFzcyBTdHJlZXROdW1iZXIge1xuICAgIG5hbWU6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1pbnB1dC1hZGRyZXNzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4taW5wdXQtYWRkcmVzcy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZvZWhuSW5wdXRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb2VobklucHV0QWRkcmVzc0NvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobklucHV0QWRkcmVzc0NvbXBvbmVudFxuICAgIGV4dGVuZHMgRm9laG5JbnB1dENvbXBvbmVudDxBZGRyZXNzPlxuICAgIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkKEZvZWhuSW5wdXRGb3JlaWduTG9jYWxpdHlDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIGZvcmVpZ25Mb2NhbGl0eUNvbXBvbmVudDogRm9laG5JbnB1dEZvcmVpZ25Mb2NhbGl0eUNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoRm9laG5JbnB1dEZvcmVpZ25TdHJlZXRDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIGZvcmVpZ25TdHJlZXRDb21wb25lbnQ6IEZvZWhuSW5wdXRGb3JlaWduU3RyZWV0Q29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZCgnZm9yZWlnbkhvdXNlTnVtYmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgZm9yZWlnbkhvdXNlTnVtYmVyOiBGb2VobklucHV0VGV4dENvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgY291bnRyaWVzVXJsID0gJ2FwaS9yZWZpbmYvY291bnRyaWVzJztcblxuICAgIEBJbnB1dCgpXG4gICAgaXNPbmx5U3dpc3MgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBzaG93UG9zdE9mZmljZUJveFRleHQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2hvd0FkcmVzc0xpbmVzID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2hvd0FkcmVzc0xpbmUxID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2hvd0FkcmVzc0xpbmUyID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc3BlY2lmaWVkQ2FudG9uOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIGNvdW50cnlSZXF1aXJlZCA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHN3aXNzTnBhTG9jYWxpdHlSZXF1aXJlZCA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHN0cmVldFJlcXVpcmVkID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc3RyZWV0TnVtYmVyUmVxdWlyZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZm9yZWlnblppcENvZGVSZXF1aXJlZCA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIGZvcmVpZ25Mb2NhbGl0eVJlcXVpcmVkID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZm9yZWlnblN0cmVldFJlcXVpcmVkID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZm9yZWlnblN0cmVldE51bWJlclJlcXVpcmVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHBvc3RPZmZpY2VCb3hUZXh0UmVxdWlyZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgYWRkcmVzc0xpbmUxUmVxdWlyZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgYWRkcmVzc0xpbmUyUmVxdWlyZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgd2l0aENvbXBhbnlMb2NhbGl0aWVzID0gZmFsc2U7XG5cbiAgICBjb3VudHJ5OiBDb3VudHJ5O1xuICAgIGxvY2FsaXR5OiBMb2NhbGl0eTtcbiAgICBzdHJlZXQ6IFN0cmVldDtcbiAgICBob3VzZU51bWJlcjogc3RyaW5nO1xuICAgIHBvc3RPZmZpY2VCb3hUZXh0OiBzdHJpbmc7XG4gICAgYWRkcmVzc0xpbmUxOiBzdHJpbmc7XG4gICAgYWRkcmVzc0xpbmUyOiBzdHJpbmc7XG5cbiAgICBjb3VudHJpZXM6IE9ic2VydmFibGU8Q291bnRyeVtdPjtcbiAgICBsb2NhbGl0aWVzOiBPYnNlcnZhYmxlPExvY2FsaXR5W10+O1xuICAgIHN0cmVldHM6IE9ic2VydmFibGU8U3RyZWV0W10+O1xuICAgIHN0cmVldE51bWJlcnM6IE9ic2VydmFibGU8U3RyZWV0TnVtYmVyW10+O1xuXG4gICAgcHJpdmF0ZSBpc28ySWRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KG51bGwpO1xuICAgIHByaXZhdGUgemlwQ29kZUlkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPihudWxsKTtcbiAgICBwcml2YXRlIGVzdHJJZFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4obnVsbCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBpZGVudGl0eSA9IDxUPihuOiBUKTogVCA9PiBuO1xuICAgIGNvdW50cnlJZGVudGl0eSA9IChjb3VudHJ5OiBDb3VudHJ5KTogc3RyaW5nID0+IGNvdW50cnkuaXNvMklkO1xuICAgIGxvY2FsaXR5SWRlbnRpdHkgPSAobG9jOiBMb2NhbGl0eSk6IG51bWJlciA9PiBsb2MucG9zdGFsTG9jYWxpdHlIaXN0b3J5SWQ7XG4gICAgc3RyZWV0SWRlbnRpdHkgPSAoc3RyZWV0OiBTdHJlZXQpOiBudW1iZXIgPT4gc3RyZWV0LmVzdHJpZDtcbiAgICBzdHJlZXRHZW5lcmF0b3IgPSAobG9uZ05hbWU6IHN0cmluZyk6IFN0cmVldCA9PiAoe1xuICAgICAgICBlc3RyaWQ6IG51bGwsXG4gICAgICAgIGxvbmdOYW1lXG4gICAgfSk7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICB0aGlzLmNvdW50cmllcyA9IHRoaXMuZ2V0Q291bnRyaWVzKCk7XG5cbiAgICAgICAgdGhpcy5sb2NhbGl0aWVzID0gdGhpcy5pc28ySWRTdWJqZWN0LnBpcGUoXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgLy8gVGhlIGxpc3Qgb2YgbG9jYWxpdGllcywgb3IgYW4gZW1wdHkgYXJyYXkgYXMgdGhlIGRlZmF1bHQgdmFsdWUuXG4gICAgICAgICAgICBzd2l0Y2hNYXAoaXNvMklkID0+IHRoaXMuZ2V0TG9jYWxpdGllcyhpc28ySWQpKSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zdHJlZXRzID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLnppcENvZGVJZFN1YmplY3QsXG4gICAgICAgICAgICB0aGlzLmxvY2FsaXRpZXNcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgIC8vIFRoZSB6aXBDb2RlSWQgd2hlbiBsb2NhbGl0eSBjaGFuZ2VzIG9yIG1hdGNoIGxvY2FsaXR5IChwb3N0YWxMb2NhbGl0eUhpc3RvcnlJZCkgZnJvbSBtb2RlbFxuICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgIChbemlwQ29kZUlkLCBsb2NhbGl0aWVzXSkgPT5cbiAgICAgICAgICAgICAgICAgICAgemlwQ29kZUlkIHx8XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXh0cmFjdExvY2FsaXR5WmlwQ29kZUlkKGxvY2FsaXRpZXMsIHRoaXMubG9jYWxpdHkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDApLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgIC8vIFRoZSBsaXN0IG9mIHN0cmVldHMgb3IgYSBkZWZhdWx0IHZhbHVlIHRvIGFuIGVtcHR5IGFycmF5XG4gICAgICAgICAgICBzd2l0Y2hNYXAoemlwQ29kZUlkID0+IHRoaXMuZ2V0U3RyZWV0c0Zvcih6aXBDb2RlSWQpKSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zdHJlZXROdW1iZXJzID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLmVzdHJJZFN1YmplY3QsXG4gICAgICAgICAgICB0aGlzLnN0cmVldHNcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgIC8vIFRoZSBlc3RyaWQgd2hlbiBzdHJlZXQgY2hhbmdlcyBvciBtYXRjaCBzdHJlZXQgKGxvbmdOYW1lKSBmcm9tIG1vZGVsXG4gICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgKFtlc3RyaWQsIHN0cmVldHNdKSA9PlxuICAgICAgICAgICAgICAgICAgICBlc3RyaWQgfHwgdGhpcy5leHRyYWN0U3RyZWV0RXN0cmlkKHN0cmVldHMsIHRoaXMuc3RyZWV0KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSgwKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAvLyBUaGUgbGlzdCBvZiBzdHJlZXRzIG9yIGEgZGVmYXVsdCB2YWx1ZSB0byBhbiBlbXB0eSBhcnJheVxuICAgICAgICAgICAgc3dpdGNoTWFwKGVzdHJpZCA9PiB0aGlzLmdldFN0cmVldE51bWJlckZvcihlc3RyaWQpKSxcbiAgICAgICAgICAgIC8vIFNvbWUgc3RyZWV0IG1pZ2h0IG5vdCBoYXZlIGFuIG5hbWUsIFJlZkluZiBzb21ldGltZXMgcmV0dXJucyB3ZWlyZCBkYXRhLlxuICAgICAgICAgICAgbWFwKHZhbHVlcyA9PiB2YWx1ZXMuZmlsdGVyKHN0cmVldE51bWJlciA9PiAhIXN0cmVldE51bWJlci5uYW1lKSksXG4gICAgICAgICAgICBtYXAodmFsdWVzID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2xsYXRvciA9IG5ldyBJbnRsLkNvbGxhdG9yKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgICAgICAgICBudW1lcmljOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBzZW5zaXRpdml0eTogJ2Jhc2UnXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlcy5zb3J0KChhLCBiKSA9PiBjb2xsYXRvci5jb21wYXJlKGEubmFtZSwgYi5uYW1lKSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5uZ1pvbmUub25NaWNyb3Rhc2tFbXB0eS5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyQXV0b2NvbXBsZXRlc1doZW5Db3VudHJ5SXNVbmFwcHJvcHJpYXRlZFRvQ29tcG9uZW50Q29uZmlndXJhdGlvbigpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdENvdW50cnkoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB1cGRhdGVBZGRyZXNzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZFZhbHVlID0gdGhpcy5nZXRWYWxpZFZhbHVlKCk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVVzZXJJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0VmFsaWRWYWx1ZSgpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW9kZWxDaGFuZ2UodmFsdWU6IEFkZHJlc3MpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmNvdW50cnkgPSB2YWx1ZS5jb3VudHJ5O1xuICAgICAgICAgICAgdGhpcy5sb2NhbGl0eSA9IHZhbHVlLmxvY2FsaXR5O1xuICAgICAgICAgICAgdGhpcy5zdHJlZXQgPSB2YWx1ZS5zdHJlZXQ7XG4gICAgICAgICAgICB0aGlzLmhvdXNlTnVtYmVyID0gdmFsdWUuaG91c2VOdW1iZXI7XG4gICAgICAgICAgICB0aGlzLnBvc3RPZmZpY2VCb3hUZXh0ID0gdmFsdWUucG9zdE9mZmljZUJveFRleHQ7XG4gICAgICAgICAgICB0aGlzLmFkZHJlc3NMaW5lMSA9IHZhbHVlLmFkZHJlc3NMaW5lMTtcbiAgICAgICAgICAgIHRoaXMuYWRkcmVzc0xpbmUyID0gdmFsdWUuYWRkcmVzc0xpbmUyO1xuICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5sb2NhbGl0eSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnN0cmVldCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmhvdXNlTnVtYmVyID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMucG9zdE9mZmljZUJveFRleHQgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5hZGRyZXNzTGluZTEgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5hZGRyZXNzTGluZTIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNTd2lzcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhKFxuICAgICAgICAgICAgdGhpcy5pc09ubHlTd2lzcyB8fFxuICAgICAgICAgICAgKHRoaXMuY291bnRyeSAmJiB0aGlzLmNvdW50cnkuaXNvMklkID09PSBTV0lTU19JU09fSUQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdXNlcklucHV0Q291bnRyeU9yTG9jYWxpdHkoZW1wdHlMb2NhbGl0eTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoZW1wdHlMb2NhbGl0eSkge1xuICAgICAgICAgICAgdGhpcy5sb2NhbGl0eSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnBvc3RPZmZpY2VCb3hUZXh0ID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuYWRkcmVzc0xpbmUxID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuYWRkcmVzc0xpbmUyID0gbnVsbDtcbiAgICAgICAgICAgIC8vIHN1YmNvbXBvbmVudHMgd2lsbCBiZSBlbmFibGVkIGJ1dCBzaG91bGQgbm90IGRpc3BsYXkgZXJyb3JzIHlldFxuICAgICAgICAgICAgdGhpcy5mb3JlaWduTG9jYWxpdHlDb21wb25lbnRcbiAgICAgICAgICAgICAgICA/LmdldE5hdGl2ZUlucHV0TGlzdCgpXG4gICAgICAgICAgICAgICAgLmZvckVhY2gobmdNb2RlbCA9PiBuZ01vZGVsLmNvbnRyb2wubWFya0FzRGlydHkoKSk7XG4gICAgICAgICAgICB0aGlzLmZvcmVpZ25TdHJlZXRDb21wb25lbnRcbiAgICAgICAgICAgICAgICA/LmdldE5hdGl2ZUlucHV0TGlzdCgpXG4gICAgICAgICAgICAgICAgLmZvckVhY2gobmdNb2RlbCA9PiBuZ01vZGVsLmNvbnRyb2wubWFya0FzRGlydHkoKSk7XG4gICAgICAgICAgICB0aGlzLmZvcmVpZ25Ib3VzZU51bWJlclxuICAgICAgICAgICAgICAgID8uZ2V0TmF0aXZlSW5wdXRMaXN0KClcbiAgICAgICAgICAgICAgICAuZm9yRWFjaChuZ01vZGVsID0+IG5nTW9kZWwuY29udHJvbC5tYXJrQXNEaXJ0eSgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RyZWV0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5ob3VzZU51bWJlciA9IG51bGw7XG5cbiAgICAgICAgdGhpcy51cGRhdGVBZGRyZXNzKCk7XG4gICAgICAgIHRoaXMuaGFuZGxlVXNlcklucHV0KCk7XG4gICAgfVxuXG4gICAgY291bnRyeVVwZGF0ZWQoY291bnRyeTogQ291bnRyeSk6IHZvaWQge1xuICAgICAgICAvLyBObyBkb3VibGUtYmluZGluZyBvbiBjb3VudHJ5IGluIHZpZXcgdG8gZW5zdXJlIHdlIHVwZGF0ZSBwcm9wZXJseSBtb2RlbFxuICAgICAgICB0aGlzLmNvdW50cnkgPSBjb3VudHJ5O1xuICAgICAgICB0aGlzLnVwZGF0ZUFkZHJlc3MoKTtcblxuICAgICAgICBpZiAoIWNvdW50cnkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgaXNvMklkIH0gPSBjb3VudHJ5O1xuICAgICAgICB0aGlzLmlzbzJJZFN1YmplY3QubmV4dChpc28ySWQpO1xuICAgIH1cblxuICAgIGdldExvY2FsaXR5RGlzcGxheWVkTmFtZShsb2NhbGl0eTogTG9jYWxpdHkpOiBzdHJpbmcgfCB2b2lkIHtcbiAgICAgICAgaWYgKCFsb2NhbGl0eSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGAke2xvY2FsaXR5LnppcENvZGV9ICR7bG9jYWxpdHkubG9uZ05hbWV9YDtcbiAgICB9XG5cbiAgICBsb2NhbGl0eVVwZGF0ZWQobG9jYWxpdHk6IExvY2FsaXR5KTogdm9pZCB7XG4gICAgICAgIC8vIE5vIGRvdWJsZS1iaW5kaW5nIG9uIGxvY2FsaXR5IGluIHZpZXcgdG8gZW5zdXJlIHdlIHVwZGF0ZSBwcm9wZXJseSBtb2RlbFxuICAgICAgICB0aGlzLmxvY2FsaXR5ID0gbG9jYWxpdHk7XG4gICAgICAgIHRoaXMudXBkYXRlQWRkcmVzcygpO1xuXG4gICAgICAgIGlmICghbG9jYWxpdHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgemlwQ29kZUlkIH0gPSBsb2NhbGl0eTtcbiAgICAgICAgdGhpcy56aXBDb2RlSWRTdWJqZWN0Lm5leHQoemlwQ29kZUlkKTtcbiAgICB9XG5cbiAgICBzdHJlZXRVcGRhdGVkKHN0cmVldDogU3RyZWV0KTogdm9pZCB7XG4gICAgICAgIC8vIE5vIGRvdWJsZS1iaW5kaW5nIG9uIHN0cmVldCBpbiB2aWV3IHRvIGVuc3VyZSB3ZSB1cGRhdGUgcHJvcGVybHkgbW9kZWxcbiAgICAgICAgdGhpcy5zdHJlZXQgPSBzdHJlZXQ7XG4gICAgICAgIHRoaXMudXBkYXRlQWRkcmVzcygpO1xuXG4gICAgICAgIGlmICghc3RyZWV0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGVzdHJpZCB9ID0gc3RyZWV0O1xuICAgICAgICB0aGlzLmVzdHJJZFN1YmplY3QubmV4dChlc3RyaWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q291bnRyaWVzKCk6IE9ic2VydmFibGU8Q291bnRyeVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PENvdW50cnlbXT4odGhpcy5jb3VudHJpZXNVcmwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TG9jYWxpdGllcyhpc28ySWQ6IHN0cmluZyk6IE9ic2VydmFibGU8TG9jYWxpdHlbXT4ge1xuICAgICAgICBpZiAoaXNvMklkICE9PSBTV0lTU19JU09fSUQpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9ICEhdGhpcy53aXRoQ29tcGFueUxvY2FsaXRpZXNcbiAgICAgICAgICAgID8gJz93aXRoQ29tcGFueUxvY2FsaXRpZXM9dHJ1ZSdcbiAgICAgICAgICAgIDogJyc7XG5cbiAgICAgICAgaWYgKCEhdGhpcy5zcGVjaWZpZWRDYW50b24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PExvY2FsaXR5W10+KFxuICAgICAgICAgICAgICAgIGBhcGkvcmVmaW5mL2xvY2FsaXR5LyR7dGhpcy5zcGVjaWZpZWRDYW50b259JHtxdWVyeVBhcmFtc31gXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8TG9jYWxpdHlbXT4oXG4gICAgICAgICAgICAgICAgYGFwaS9yZWZpbmYvbG9jYWxpdHkvYWxsJHtxdWVyeVBhcmFtc31gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTdHJlZXROdW1iZXJGb3IoZXN0cmlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFN0cmVldE51bWJlcltdPiB7XG4gICAgICAgIGlmICghZXN0cmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXJsID0gYGFwaS9yZWZpbmYvYWRkcmVzc2VzLyR7ZXN0cmlkfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PFN0cmVldE51bWJlcltdPih1cmwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U3RyZWV0c0Zvcih6aXBDb2RlSWQ6IG51bWJlcik6IE9ic2VydmFibGU8U3RyZWV0W10+IHtcbiAgICAgICAgaWYgKCF6aXBDb2RlSWQpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cmwgPSBgYXBpL3JlZmluZi9zdHJlZXRzLyR7emlwQ29kZUlkfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PFN0cmVldFtdPih1cmwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJBdXRvY29tcGxldGVzV2hlbkNvdW50cnlJc1VuYXBwcm9wcmlhdGVkVG9Db21wb25lbnRDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc01vZGVsRW1wdHkoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pc09ubHlTd2lzcyAmJlxuICAgICAgICAgICAgdGhpcy5jb3VudHJ5ICYmXG4gICAgICAgICAgICB0aGlzLmNvdW50cnkuaXNvMklkICE9PSBTV0lTU19JU09fSURcbiAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBEbyBub3QgcmVtb3ZlIHRoaXMgd2FybmluZy4gTmVlZGVkIGZvciBkZWJ1Z2dpbmcgYXQgYWxsIHRpbWUuXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgICAgICAgICBgQ291bnRyeSBhZGRyZXNzIHdhcyAnJHt0aGlzLmNvdW50cnkuaXNvMklkfScuIE9ubHkgc3dpc3MgaXMgYXNrZWQgaW4gY29tcG9uZW50ICdmb2Vobi1pbnB1dC1hZGRyZXNzJyBjb25maWd1cmF0aW9uLiBBZGRyZXNzIG1vZGVsIHJlc2V0dGVkLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmNsZWFyQXV0b2NvbXBsZXRlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXREZWZhdWx0Q291bnRyeSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPbmx5U3dpc3MgfHwgIXRoaXMuY291bnRyeSB8fCAhdGhpcy5jb3VudHJ5LmlzbzJJZCkge1xuICAgICAgICAgICAgdGhpcy5jb3VudHJ5ID0ge1xuICAgICAgICAgICAgICAgIGlzbzJJZDogU1dJU1NfSVNPX0lELFxuICAgICAgICAgICAgICAgIHNob3J0TmFtZUZyOiAnU3Vpc3NlJ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuaXNvMklkU3ViamVjdC5uZXh0KFNXSVNTX0lTT19JRCk7XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWRkcmVzcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhckF1dG9jb21wbGV0ZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY291bnRyeSA9IG51bGw7XG4gICAgICAgIHRoaXMuc3RyZWV0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5sb2NhbGl0eSA9IG51bGw7XG4gICAgICAgIHRoaXMuaG91c2VOdW1iZXIgPSBudWxsO1xuICAgICAgICAvLyBObyB1cGRhdGVBZGRyZXNzKCkgaGVyZSBiZWNhdXNlIGRvbmUgaW4gc2V0RGVmYXVsdENvdW50cnkoKVxuICAgIH1cblxuICAgIHByaXZhdGUgZXh0cmFjdExvY2FsaXR5WmlwQ29kZUlkKFxuICAgICAgICBsb2NhbGl0aWVzOiBMb2NhbGl0eVtdLFxuICAgICAgICBsb2NhbGl0eVRvTWF0Y2g6IExvY2FsaXR5XG4gICAgKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKGxvY2FsaXR5VG9NYXRjaCAmJiBsb2NhbGl0eVRvTWF0Y2gucG9zdGFsTG9jYWxpdHlIaXN0b3J5SWQpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZWQgPSBsb2NhbGl0aWVzLmZpbmQoXG4gICAgICAgICAgICAgICAgKGxvY2FsaXR5OiBMb2NhbGl0eSkgPT5cbiAgICAgICAgICAgICAgICAgICAgbG9jYWxpdHkucG9zdGFsTG9jYWxpdHlIaXN0b3J5SWQgPT09XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsaXR5VG9NYXRjaC5wb3N0YWxMb2NhbGl0eUhpc3RvcnlJZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChtYXRjaGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZWQuemlwQ29kZUlkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHRyYWN0U3RyZWV0RXN0cmlkKFxuICAgICAgICBzdHJlZXRzOiBTdHJlZXRbXSxcbiAgICAgICAgc3RyZWV0VG9NYXRjaDogU3RyZWV0XG4gICAgKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHN0cmVldFRvTWF0Y2ggJiYgc3RyZWV0VG9NYXRjaC5sb25nTmFtZSkge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hlZCA9IHN0cmVldHMuZmluZChcbiAgICAgICAgICAgICAgICAoc3RyZWV0OiBTdHJlZXQpID0+IHN0cmVldC5sb25nTmFtZSA9PT0gc3RyZWV0VG9NYXRjaC5sb25nTmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChtYXRjaGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZWQuZXN0cmlkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRWYWxpZFZhbHVlKCk6IEFkZHJlc3MgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNNb2RlbEVtcHR5KCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsXyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvdW50cnk6IHRoaXMuY291bnRyeSxcbiAgICAgICAgICAgIGxvY2FsaXR5OiB0aGlzLmdldFZhbGlkTG9jYWxpdHkodGhpcy5sb2NhbGl0eSksXG4gICAgICAgICAgICBzdHJlZXQ6IHRoaXMuc3RyZWV0LFxuICAgICAgICAgICAgaG91c2VOdW1iZXI6IHRoaXMuaG91c2VOdW1iZXIsXG4gICAgICAgICAgICBwb3N0T2ZmaWNlQm94VGV4dDogdGhpcy5wb3N0T2ZmaWNlQm94VGV4dCxcbiAgICAgICAgICAgIGFkZHJlc3NMaW5lMTogdGhpcy5hZGRyZXNzTGluZTEsXG4gICAgICAgICAgICBhZGRyZXNzTGluZTI6IHRoaXMuYWRkcmVzc0xpbmUyXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRWYWxpZExvY2FsaXR5KHZhbHVlOiBMb2NhbGl0eSk6IExvY2FsaXR5IHtcbiAgICAgICAgLy8gUFJFU1RBS0lULTM1MjogTmVlZCBhIGZha2UgJ3Bvc3RhbExvY2FsaXR5SGlzdG9yeUlkJyBmb3IgaW5kaXZpZHVhbCBlcnJvcnMgb24gJ3ppcENvZGUnIGFuZCAnbG9uZ05hbWUnXG4gICAgICAgIGlmICghdGhpcy5pc1N3aXNzKCkgJiYgIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4geyBwb3N0YWxMb2NhbGl0eUhpc3RvcnlJZDogLTEgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTW9kZWxFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuaXNFbXB0eSh0aGlzLmNvdW50cnkpICYmXG4gICAgICAgICAgICB0aGlzLmlzRW1wdHkodGhpcy5sb2NhbGl0eSkgJiZcbiAgICAgICAgICAgIHRoaXMuaXNFbXB0eSh0aGlzLnN0cmVldCkgJiZcbiAgICAgICAgICAgIHRoaXMuaXNFbXB0eSh0aGlzLmhvdXNlTnVtYmVyKSAmJlxuICAgICAgICAgICAgdGhpcy5pc0VtcHR5KHRoaXMucG9zdE9mZmljZUJveFRleHQpICYmXG4gICAgICAgICAgICB0aGlzLmlzRW1wdHkodGhpcy5hZGRyZXNzTGluZTEpICYmXG4gICAgICAgICAgICB0aGlzLmlzRW1wdHkodGhpcy5hZGRyZXNzTGluZTIpXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIFthdHRyLmlkXT1cImJ1aWxkSWQoKSArICdDb250YWluZXInXCJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXBcIlxuICAgIFtjbGFzcy5oYXMtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbY2xhc3MudmQtZm9ybS1ncm91cC1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFt0YWJJbmRleF09XCItMVwiXG4+XG4gICAgPGZpZWxkc2V0XG4gICAgICAgIGNsYXNzPVwibWItM1wiXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiZ2V0RGVzY3JpYmVkQnkoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKSB8fCBudWxsXCJcbiAgICA+XG4gICAgICAgIDxsZWdlbmQgKm5nSWY9XCIhIWxhYmVsXCIgW25nQ2xhc3NdPVwiaXNMYWJlbFNyT25seSA/ICdzci1vbmx5JyA6ICd2ZC1wJ1wiPlxuICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJsYWJlbFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhcmVxdWlyZWQgJiYgIWhpZGVOb3RSZXF1aXJlZEV4dHJhTGFiZWxcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgJ2ZvZWhuLWlucHV0Lm9wdGlvbmFsJyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbGVnZW5kPlxuXG4gICAgICAgIDxmb2Vobi12YWxpZGF0aW9uLWFsZXJ0cyBbY29tcG9uZW50XT1cInRoaXNcIj48L2ZvZWhuLXZhbGlkYXRpb24tYWxlcnRzPlxuXG4gICAgICAgIDxzbWFsbFxuICAgICAgICAgICAgKm5nSWY9XCJoZWxwVGV4dFwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJidWlsZElkKCkgKyAnSGVscCdcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cImhlbHBUZXh0XCJcbiAgICAgICAgPjwvc21hbGw+XG5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIDxmb2Vobi1hdXRvY29tcGxldGVcbiAgICAgICAgICAgICpuZ0lmPVwiIWlzT25seVN3aXNzXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCInZm9laG4taW5wdXQtYWRkcmVzcy5jb3VudHJ5LmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XCJcbiAgICAgICAgICAgIFtlbGVtZW50c109XCJjb3VudHJpZXMgfCBhc3luY1wiXG4gICAgICAgICAgICBlbGVtZW50TGFiZWw9XCJzaG9ydE5hbWVGclwiXG4gICAgICAgICAgICBbZWxlbWVudFZhbHVlXT1cImlkZW50aXR5XCJcbiAgICAgICAgICAgIFtlbGVtZW50VmFsdWVJZGVudGl0eV09XCJjb3VudHJ5SWRlbnRpdHlcIlxuICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImNvdW50cnlVcGRhdGVkKCRldmVudClcIlxuICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJ1c2VySW5wdXRDb3VudHJ5T3JMb2NhbGl0eSh0cnVlKVwiXG4gICAgICAgICAgICBbbW9kZWxdPVwiY291bnRyeVwiXG4gICAgICAgICAgICBbbmFtZV09XCJuYW1lICsgJy5jb3VudHJ5J1wiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiY291bnRyeVJlcXVpcmVkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgID48L2ZvZWhuLWF1dG9jb21wbGV0ZT5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTd2lzcygpXCI+XG4gICAgICAgICAgICA8Zm9laG4tYXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidmb2Vobi1pbnB1dC1hZGRyZXNzLmxvY2FsaXR5LmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XCJcbiAgICAgICAgICAgICAgICBbZWxlbWVudHNdPVwibG9jYWxpdGllcyB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICBbZWxlbWVudExhYmVsXT1cImdldExvY2FsaXR5RGlzcGxheWVkTmFtZVwiXG4gICAgICAgICAgICAgICAgW2VsZW1lbnRWYWx1ZV09XCJpZGVudGl0eVwiXG4gICAgICAgICAgICAgICAgW2VsZW1lbnRWYWx1ZUlkZW50aXR5XT1cImxvY2FsaXR5SWRlbnRpdHlcIlxuICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJsb2NhbGl0eVVwZGF0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJ1c2VySW5wdXRDb3VudHJ5T3JMb2NhbGl0eShmYWxzZSlcIlxuICAgICAgICAgICAgICAgIFttb2RlbF09XCJsb2NhbGl0eVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICcubG9jYWxpdHknXCJcbiAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwic3dpc3NOcGFMb2NhbGl0eVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBbYWxsRWxlbWVudERpc2FibGVkXT1cIiFjb3VudHJ5XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgPjwvZm9laG4tYXV0b2NvbXBsZXRlPlxuXG4gICAgICAgICAgICA8Zm9laG4tYXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidmb2Vobi1pbnB1dC1hZGRyZXNzLnN0cmVldC5sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgICAgICAgICAgW2VsZW1lbnRzXT1cInN0cmVldHMgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgZWxlbWVudExhYmVsPVwibG9uZ05hbWVcIlxuICAgICAgICAgICAgICAgIFtlbGVtZW50VmFsdWVdPVwiaWRlbnRpdHlcIlxuICAgICAgICAgICAgICAgIFtlbGVtZW50VmFsdWVJZGVudGl0eV09XCJzdHJlZXRJZGVudGl0eVwiXG4gICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cInN0cmVldFVwZGF0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW21vZGVsXT1cInN0cmVldFwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICcuc3RyZWV0J1wiXG4gICAgICAgICAgICAgICAgW2FsbG93Q3VzdG9tVmFsdWVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2N1c3RvbVZhbHVlTW9kZWxHZW5lcmF0b3JdPVwic3RyZWV0R2VuZXJhdG9yXCJcbiAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwic3RyZWV0UmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCJcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3Muc3RyZWV0LmhlbHAtdGV4dCcgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2FsbEVsZW1lbnREaXNhYmxlZF09XCIhY291bnRyeVwiXG4gICAgICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJoYW5kbGVVc2VySW5wdXQoKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgID48L2ZvZWhuLWF1dG9jb21wbGV0ZT5cblxuICAgICAgICAgICAgPGZvZWhuLWF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3MuaG91c2VOdW1iZXIubGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtlbGVtZW50c109XCJzdHJlZXROdW1iZXJzIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIGVsZW1lbnRMYWJlbD1cIm5hbWVcIlxuICAgICAgICAgICAgICAgIGVsZW1lbnRWYWx1ZT1cIm5hbWVcIlxuICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImhvdXNlTnVtYmVyXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lICsgJy5ob3VzZU51bWJlcidcIlxuICAgICAgICAgICAgICAgIFthbGxvd0N1c3RvbVZhbHVlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCJcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3MuaG91c2VOdW1iZXIuaGVscC10ZXh0JyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbYWxsRWxlbWVudERpc2FibGVkXT1cIiFjb3VudHJ5XCJcbiAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwidXBkYXRlQWRkcmVzcygpXCJcbiAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cImhhbmRsZVVzZXJJbnB1dCgpXCJcbiAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwic3RyZWV0TnVtYmVyUmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICA+PC9mb2Vobi1hdXRvY29tcGxldGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNTd2lzcygpXCI+XG4gICAgICAgICAgICA8IS0tXG4gICAgICAgICAgICBDb21wb25lbnQgPGZvZWhuLWlucHV0LWZvcmVpZ24tbG9jYWxpdHk+IGlzIHNwZWNpYWwgYmVjYXVzZSB3ZSB1c2UgdGhlIHNhbWUgbW9kZWwgd2hlbiBzd2lzcyBvciBmb3JlaWduZXIuXG4gICAgICAgICAgICBUbyBkbyBzbywgd2UgbmVlZDpcbiAgICAgICAgICAgICAgICAtIEVycm9ycyB3aWxsIGJlIGJpbmQgb24gJ2xvY2FsaXR5JyB3aGVuIE5VTEwgb3Igb24gJ3ppcENvZGUnIGFuZCAnbG9uZ05hbWUnIG1vZGVsIGluc2lkZSBjb21wb25lbnQgd2hlbiBFTVBUWVxuICAgICAgICAgICAgICAgIC0gSGlkZSBsYWJlbCBmcm9tIGNvbXBvbmVudCBiZWNhdXNlIHdlIG5lZWQgbGFiZWwgZnJvbSBjaGlsZHJlbiB0byBiZSBkaXNwbGF5ZWQgKGlzTGFiZWxTck9ubHk6IHRydWUpXG4gICAgICAgICAgICAgICAgLSByZXF1aXJlZCBhbmQgZGlzYWJsZWQgcGFyYW1zIGFyZSB0cmFuc21pdHRlZCB0byBjaGlsZHJlblxuICAgICAgICAgICAgIC0tPlxuICAgICAgICAgICAgPGZvZWhuLWlucHV0LWZvcmVpZ24tbG9jYWxpdHlcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ2ZvZWhuLWlucHV0LWFkZHJlc3MubG9jYWxpdHkubGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWUgKyAnLmxvY2FsaXR5J1wiXG4gICAgICAgICAgICAgICAgWyhtb2RlbCldPVwibG9jYWxpdHlcIlxuICAgICAgICAgICAgICAgIFt6aXBDb2RlUmVxdWlyZWRdPVwiZm9yZWlnblppcENvZGVSZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgW2xvY2FsaXR5UmVxdWlyZWRdPVwiZm9yZWlnbkxvY2FsaXR5UmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIFtpc0xhYmVsU3JPbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY291bnRyeSB8fCBkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cInVwZGF0ZUFkZHJlc3MoKVwiXG4gICAgICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJoYW5kbGVVc2VySW5wdXQoKVwiXG4gICAgICAgICAgICA+PC9mb2Vobi1pbnB1dC1mb3JlaWduLWxvY2FsaXR5PlxuICAgICAgICAgICAgPCEtLVxuICAgICAgICAgICAgQ29tcG9uZW50IDxmb2Vobi1pbnB1dC1mb3JlaWduLXN0cmVldD4gaXMgc3BlY2lhbCBiZWNhdXNlIHdlIHVzZSB0aGUgc2FtZSBtb2RlbCB3aGVuIHN3aXNzIG9yIGZvcmVpZ25lci5cbiAgICAgICAgICAgIFRvIGRvIHNvLCB3ZSBuZWVkOlxuICAgICAgICAgICAgICAgIC0gRXJyb3JzIHdpbGwgYmUgYmluZCBvbiAnc3RyZWV0JyB3aGVuIE5VTEwgb3Igb24gJ2xvbmdOYW1lJyBtb2RlbCBpbnNpZGUgY29tcG9uZW50IHdoZW4gRU1QVFlcbiAgICAgICAgICAgICAgICAtIHJlcXVpcmVkLCBoZWxwVGV4dCwgaXNMYWJlbFNyT25seSBhbmQgZGlzYWJsZWQgIHBhcmFtcyBhcmUgdHJhbnNtaXR0ZWQgdG8gY2hpbGRyZW5cbiAgICAgICAgICAgICAtLT5cbiAgICAgICAgICAgIDxmb2Vobi1pbnB1dC1mb3JlaWduLXN0cmVldFxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCInZm9laG4taW5wdXQtYWRkcmVzcy5zdHJlZXQubGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWUgKyAnLnN0cmVldCdcIlxuICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInN0cmVldFwiXG4gICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZvcmVpZ25TdHJlZXRSZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIlxuICAgICAgICAgICAgICAgICAgICAnZm9laG4taW5wdXQtYWRkcmVzcy5zdHJlZXQuaGVscC10ZXh0JyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNvdW50cnkgfHwgZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVBZGRyZXNzKClcIlxuICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwiaGFuZGxlVXNlcklucHV0KClcIlxuICAgICAgICAgICAgPjwvZm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXQ+XG5cbiAgICAgICAgICAgIDxmb2Vobi1pbnB1dC10ZXh0XG4gICAgICAgICAgICAgICAgI2ZvcmVpZ25Ib3VzZU51bWJlclxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3MuaG91c2VOdW1iZXIubGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWUgKyAnLmhvdXNlTnVtYmVyJ1wiXG4gICAgICAgICAgICAgICAgWyhtb2RlbCldPVwiaG91c2VOdW1iZXJcIlxuICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCJcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3MuaG91c2VOdW1iZXIuaGVscC10ZXh0JyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNvdW50cnkgfHwgZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVBZGRyZXNzKClcIlxuICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwiaGFuZGxlVXNlcklucHV0KClcIlxuICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmb3JlaWduU3RyZWV0TnVtYmVyUmVxdWlyZWRcIlxuICAgICAgICAgICAgPjwvZm9laG4taW5wdXQtdGV4dD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGZvZWhuLWlucHV0LXRleHRcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1Bvc3RPZmZpY2VCb3hUZXh0XCJcbiAgICAgICAgICAgIFsobW9kZWwpXT1cInBvc3RPZmZpY2VCb3hUZXh0XCJcbiAgICAgICAgICAgIFtoZWxwVGV4dF09XCJcbiAgICAgICAgICAgICAgICAnZm9laG4taW5wdXQtYWRkcmVzcy5wb3N0T2ZmaWNlQm94VGV4dC5oZWxwLXRleHQnXG4gICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3MucG9zdE9mZmljZUJveFRleHQubGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbbmFtZV09XCJuYW1lICsgJy5wb3N0T2ZmaWNlQm94VGV4dCdcIlxuICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cInVwZGF0ZUFkZHJlc3MoKVwiXG4gICAgICAgICAgICAodXNlcklucHV0KT1cImhhbmRsZVVzZXJJbnB1dCgpXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJwb3N0T2ZmaWNlQm94VGV4dFJlcXVpcmVkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgID48L2ZvZWhuLWlucHV0LXRleHQ+XG5cbiAgICAgICAgPGZvZWhuLWlucHV0LXRleHRcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0FkcmVzc0xpbmVzICYmIHNob3dBZHJlc3NMaW5lMVwiXG4gICAgICAgICAgICBbKG1vZGVsKV09XCJhZGRyZXNzTGluZTFcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidmb2Vobi1pbnB1dC1hZGRyZXNzLmFkZHJlc3NMaW5lMS5sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgICAgICBbbmFtZV09XCJuYW1lICsgJy5hZGRyZXNzTGluZTEnXCJcbiAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVBZGRyZXNzKClcIlxuICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJoYW5kbGVVc2VySW5wdXQoKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiYWRkcmVzc0xpbmUxUmVxdWlyZWRcIlxuICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCInYWRkcmVzcy1saW5lMidcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgPjwvZm9laG4taW5wdXQtdGV4dD5cblxuICAgICAgICA8Zm9laG4taW5wdXQtdGV4dFxuICAgICAgICAgICAgKm5nSWY9XCJzaG93QWRyZXNzTGluZXMgJiYgc2hvd0FkcmVzc0xpbmUyXCJcbiAgICAgICAgICAgIFsobW9kZWwpXT1cImFkZHJlc3NMaW5lMlwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ2ZvZWhuLWlucHV0LWFkZHJlc3MuYWRkcmVzc0xpbmUyLmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XCJcbiAgICAgICAgICAgIFtuYW1lXT1cIm5hbWUgKyAnLmFkZHJlc3NMaW5lMidcIlxuICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cInVwZGF0ZUFkZHJlc3MoKVwiXG4gICAgICAgICAgICAodXNlcklucHV0KT1cImhhbmRsZVVzZXJJbnB1dCgpXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJhZGRyZXNzTGluZTJSZXF1aXJlZFwiXG4gICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIidhZGRyZXNzLWxpbmUzJ1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICA+PC9mb2Vobi1pbnB1dC10ZXh0PlxuICAgIDwvZmllbGRzZXQ+XG48L2Rpdj5cbiJdfQ==