desy-angular 14.2.0 → 15.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. package/README.md +1 -1
  2. package/fesm2022/desy-angular.mjs +1321 -923
  3. package/fesm2022/desy-angular.mjs.map +1 -1
  4. package/index.d.ts +3 -0
  5. package/lib/desy-forms/components/character-count/character-count.component.d.ts +1 -8
  6. package/lib/desy-forms/components/checkboxes/checkboxes-parent.component.d.ts +8 -0
  7. package/lib/desy-forms/components/checkboxes/checkboxes.component.d.ts +26 -0
  8. package/lib/desy-forms/components/date-input/date-input.component.d.ts +13 -7
  9. package/lib/desy-forms/components/datepicker/datepicker.component.d.ts +1 -5
  10. package/lib/desy-forms/components/fieldset/fieldset.component.d.ts +7 -0
  11. package/lib/desy-forms/components/file-upload/file-upload.component.d.ts +5 -0
  12. package/lib/desy-forms/components/input/input.component.d.ts +1 -4
  13. package/lib/desy-forms/components/input-group/input-group.component.d.ts +7 -0
  14. package/lib/desy-forms/components/label/label.component.d.ts +1 -2
  15. package/lib/desy-forms/components/radios/radios-parent.component.d.ts +8 -0
  16. package/lib/desy-forms/components/radios/radios.component.d.ts +26 -0
  17. package/lib/desy-forms/components/search-bar/search-bar.component.d.ts +1 -2
  18. package/lib/desy-forms/components/select/option/option.component.d.ts +2 -2
  19. package/lib/desy-forms/components/textarea/textarea.component.d.ts +1 -3
  20. package/lib/desy-forms/components/tree/tree-item/tree-item.component.d.ts +4 -0
  21. package/lib/desy-forms/components/tree/tree.component.d.ts +62 -2
  22. package/lib/desy-forms/directives/condition.directive.d.ts +5 -0
  23. package/lib/desy-forms/interfaces/select-item-data.d.ts +1 -0
  24. package/lib/desy-nav/components/header/header-mobileText/header-mobile-text.component.d.ts +0 -2
  25. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.d.ts +7 -0
  26. package/lib/desy-nav/components/menu-navigation/menu-navigation.component.d.ts +0 -2
  27. package/lib/desy-nav/components/menubar/menubar.component.d.ts +7 -2
  28. package/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.d.ts +3 -1
  29. package/lib/desy-tables/components/table-advanced/table-advanced.component.d.ts +57 -1
  30. package/lib/desy-tables/directives/cell.directive.d.ts +3 -0
  31. package/lib/desy-tables/directives/row.directive.d.ts +7 -0
  32. package/lib/desy-tables/interfaces/head-cell-data.d.ts +2 -0
  33. package/lib/desy-views/components/accordion/accordion.component.d.ts +0 -2
  34. package/lib/desy-views/components/details/details.component.d.ts +3 -2
  35. package/lib/desy-views/components/media-object/media-object.component.d.ts +0 -2
  36. package/lib/desy-views/components/status/status.component.d.ts +0 -2
  37. package/lib/desy-views/components/status-item/status-item.component.d.ts +0 -2
  38. package/lib/desy-views/components/tabs/tabs.component.d.ts +0 -2
  39. package/lib/desy-views/components/tooltip/tooltip.component.d.ts +0 -2
  40. package/lib/shared/components/accessibility/accessibility.component.d.ts +4 -3
  41. package/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.d.ts +9 -3
  42. package/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.d.ts +7 -3
  43. package/lib/shared/components/content-base/content-base.component.d.ts +3 -0
  44. package/lib/shared/components/spinner/spinner.component.d.ts +0 -2
  45. package/lib/shared/components/text-or-html-required/text-or-html-required.component.d.ts +4 -0
  46. package/lib/shared/decorators/desy-content-child.decorator.d.ts +11 -0
  47. package/lib/shared/decorators/desy-on-input-change.decorator.d.ts +4 -0
  48. package/lib/shared/directives/content-change.directive.d.ts +4 -0
  49. package/lib/shared/directives/custom-inner-content.directive.d.ts +6 -0
  50. package/lib/shared/interfaces/accessibility-data.d.ts +0 -2
  51. package/lib/shared/pipes/external-href.pipe.d.ts +4 -0
  52. package/lib/shared/utils/search-utils.d.ts +10 -0
  53. package/lib/shared/utils/string-utils.d.ts +7 -0
  54. package/package.json +9 -11
  55. package/esm2022/desy-angular.mjs +0 -2
  56. package/esm2022/lib/desy-angular.module.mjs +0 -76
  57. package/esm2022/lib/desy-buttons/components/button/button.component.mjs +0 -118
  58. package/esm2022/lib/desy-buttons/components/button-loader/button-loader.component.mjs +0 -66
  59. package/esm2022/lib/desy-buttons/components/dropdown/dropdown.component.mjs +0 -159
  60. package/esm2022/lib/desy-buttons/components/listbox/listbox-item/listbox-item.component.mjs +0 -39
  61. package/esm2022/lib/desy-buttons/components/listbox/listbox-label/listbox-label.component.mjs +0 -14
  62. package/esm2022/lib/desy-buttons/components/listbox/listbox.component.mjs +0 -334
  63. package/esm2022/lib/desy-buttons/components/pill/pill.component.mjs +0 -83
  64. package/esm2022/lib/desy-buttons/components/toggle/toggle-off-state/toggle-off-state.component.mjs +0 -17
  65. package/esm2022/lib/desy-buttons/components/toggle/toggle-on-state/toggle-on-state.component.mjs +0 -17
  66. package/esm2022/lib/desy-buttons/components/toggle/toggle.component.mjs +0 -62
  67. package/esm2022/lib/desy-buttons/desy-buttons.module.mjs +0 -70
  68. package/esm2022/lib/desy-buttons/interfaces/listbox-item-data.mjs +0 -2
  69. package/esm2022/lib/desy-buttons/interfaces/listbox-label-data.mjs +0 -2
  70. package/esm2022/lib/desy-commons/components/content/content.component.mjs +0 -14
  71. package/esm2022/lib/desy-commons/components/description/description.component.mjs +0 -19
  72. package/esm2022/lib/desy-commons/components/divider/divider.component.mjs +0 -16
  73. package/esm2022/lib/desy-commons/components/icon/icon.component.mjs +0 -16
  74. package/esm2022/lib/desy-commons/components/title/title.component.mjs +0 -17
  75. package/esm2022/lib/desy-commons/desy-commons.module.mjs +0 -24
  76. package/esm2022/lib/desy-commons/interfaces/content-data.mjs +0 -2
  77. package/esm2022/lib/desy-commons/interfaces/description-data.mjs +0 -2
  78. package/esm2022/lib/desy-commons/interfaces/divider-data.mjs +0 -2
  79. package/esm2022/lib/desy-commons/interfaces/icon-data.mjs +0 -2
  80. package/esm2022/lib/desy-commons/interfaces/index.mjs +0 -6
  81. package/esm2022/lib/desy-commons/interfaces/title-data.mjs +0 -2
  82. package/esm2022/lib/desy-forms/components/character-count/character-count.component.mjs +0 -156
  83. package/esm2022/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.mjs +0 -191
  84. package/esm2022/lib/desy-forms/components/checkboxes/checkboxes-parent.component.mjs +0 -15
  85. package/esm2022/lib/desy-forms/components/checkboxes/checkboxes.component.mjs +0 -275
  86. package/esm2022/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.mjs +0 -55
  87. package/esm2022/lib/desy-forms/components/date-input/date-input-divider/date-input-divider.component.mjs +0 -19
  88. package/esm2022/lib/desy-forms/components/date-input/date-input-item/date-input-item.component.mjs +0 -42
  89. package/esm2022/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.mjs +0 -55
  90. package/esm2022/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.mjs +0 -51
  91. package/esm2022/lib/desy-forms/components/date-input/date-input.component.mjs +0 -303
  92. package/esm2022/lib/desy-forms/components/datepicker/datepicker.component.mjs +0 -190
  93. package/esm2022/lib/desy-forms/components/datepicker/datepicker.pipe.mjs +0 -34
  94. package/esm2022/lib/desy-forms/components/error-message/error-message.component.mjs +0 -32
  95. package/esm2022/lib/desy-forms/components/fieldset/fieldset.component.mjs +0 -59
  96. package/esm2022/lib/desy-forms/components/fieldset/legend/legend.component.mjs +0 -34
  97. package/esm2022/lib/desy-forms/components/file-upload/file-upload.component.mjs +0 -78
  98. package/esm2022/lib/desy-forms/components/form-field/form-field.component.mjs +0 -127
  99. package/esm2022/lib/desy-forms/components/hint/hint.component.mjs +0 -30
  100. package/esm2022/lib/desy-forms/components/input/input.component.mjs +0 -110
  101. package/esm2022/lib/desy-forms/components/input-group/input-group-divider/input-group-divider.component.mjs +0 -20
  102. package/esm2022/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.mjs +0 -59
  103. package/esm2022/lib/desy-forms/components/input-group/input-group-item/input-group-item.component.mjs +0 -42
  104. package/esm2022/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.mjs +0 -51
  105. package/esm2022/lib/desy-forms/components/input-group/input-group.component.mjs +0 -232
  106. package/esm2022/lib/desy-forms/components/label/label.component.mjs +0 -39
  107. package/esm2022/lib/desy-forms/components/radios/radio-item/radio-item.component.mjs +0 -138
  108. package/esm2022/lib/desy-forms/components/radios/radios-parent.component.mjs +0 -15
  109. package/esm2022/lib/desy-forms/components/radios/radios.component.mjs +0 -286
  110. package/esm2022/lib/desy-forms/components/search-bar/search-bar.component.mjs +0 -65
  111. package/esm2022/lib/desy-forms/components/select/option/option.component.mjs +0 -22
  112. package/esm2022/lib/desy-forms/components/select/option-group/option-group.component.mjs +0 -18
  113. package/esm2022/lib/desy-forms/components/select/select-item/select-item.component.mjs +0 -14
  114. package/esm2022/lib/desy-forms/components/select/select.component.mjs +0 -94
  115. package/esm2022/lib/desy-forms/components/template-driven-wrapper/template-driven-wrapper.component.mjs +0 -12
  116. package/esm2022/lib/desy-forms/components/textarea/textarea.component.mjs +0 -86
  117. package/esm2022/lib/desy-forms/components/tree/interfaces/itree-item.mjs +0 -3
  118. package/esm2022/lib/desy-forms/components/tree/interfaces/quit-tree-item-focus-options.mjs +0 -2
  119. package/esm2022/lib/desy-forms/components/tree/tree-checkbox/tree-checkbox.component.mjs +0 -174
  120. package/esm2022/lib/desy-forms/components/tree/tree-item/tree-item.component.mjs +0 -381
  121. package/esm2022/lib/desy-forms/components/tree/tree-items-generator/tree-items-generator.component.mjs +0 -25
  122. package/esm2022/lib/desy-forms/components/tree/tree-sub/tree-sub.component.mjs +0 -16
  123. package/esm2022/lib/desy-forms/components/tree/tree.component.mjs +0 -362
  124. package/esm2022/lib/desy-forms/desy-forms.module.mjs +0 -223
  125. package/esm2022/lib/desy-forms/directives/condition.directive.mjs +0 -34
  126. package/esm2022/lib/desy-forms/interfaces/error-message-data.mjs +0 -2
  127. package/esm2022/lib/desy-forms/interfaces/fieldset-data.mjs +0 -2
  128. package/esm2022/lib/desy-forms/interfaces/hint-data.mjs +0 -2
  129. package/esm2022/lib/desy-forms/interfaces/index.mjs +0 -13
  130. package/esm2022/lib/desy-forms/interfaces/item-checkbox-data.mjs +0 -2
  131. package/esm2022/lib/desy-forms/interfaces/item-date-input-data.mjs +0 -2
  132. package/esm2022/lib/desy-forms/interfaces/item-divider-date-input-data.mjs +0 -2
  133. package/esm2022/lib/desy-forms/interfaces/item-divider-input-group-data.mjs +0 -2
  134. package/esm2022/lib/desy-forms/interfaces/item-input-group-data.mjs +0 -2
  135. package/esm2022/lib/desy-forms/interfaces/item-radio-data.mjs +0 -2
  136. package/esm2022/lib/desy-forms/interfaces/item-radio-with-template-data.mjs +0 -2
  137. package/esm2022/lib/desy-forms/interfaces/label-data.mjs +0 -2
  138. package/esm2022/lib/desy-forms/interfaces/legend-data.mjs +0 -2
  139. package/esm2022/lib/desy-forms/interfaces/select-item-data.mjs +0 -2
  140. package/esm2022/lib/desy-modals/components/dialog/dialog.component.mjs +0 -155
  141. package/esm2022/lib/desy-modals/components/modal/modal-button-loader-primary/modal-button-loader-primary.component.mjs +0 -25
  142. package/esm2022/lib/desy-modals/components/modal/modal-button-loader-secondary/modal-button-loader-secondary.component.mjs +0 -23
  143. package/esm2022/lib/desy-modals/components/modal/modal-button-primary/modal-button-primary.component.mjs +0 -23
  144. package/esm2022/lib/desy-modals/components/modal/modal-button-secondary/modal-button-secondary.component.mjs +0 -23
  145. package/esm2022/lib/desy-modals/components/modal/modal.component.mjs +0 -192
  146. package/esm2022/lib/desy-modals/desy-modals.module.mjs +0 -50
  147. package/esm2022/lib/desy-modals/interfaces/dialog-options.mjs +0 -2
  148. package/esm2022/lib/desy-modals/interfaces/index.mjs +0 -7
  149. package/esm2022/lib/desy-modals/interfaces/modal-button-data.mjs +0 -2
  150. package/esm2022/lib/desy-modals/interfaces/modal-data.mjs +0 -2
  151. package/esm2022/lib/desy-modals/interfaces/modal-icon-data.mjs +0 -2
  152. package/esm2022/lib/desy-modals/interfaces/modal-options.mjs +0 -2
  153. package/esm2022/lib/desy-modals/interfaces/open-dialog-result.mjs +0 -2
  154. package/esm2022/lib/desy-modals/services/dialog.service.mjs +0 -114
  155. package/esm2022/lib/desy-nav/components/breadcrumbs/breadcrumbs-item/breadcrumbs-item.component.mjs +0 -16
  156. package/esm2022/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.mjs +0 -53
  157. package/esm2022/lib/desy-nav/components/error-summary/error-summary-item/error-summary-item.component.mjs +0 -19
  158. package/esm2022/lib/desy-nav/components/error-summary/error-summary.component.mjs +0 -67
  159. package/esm2022/lib/desy-nav/components/footer/footer-meta/footer-meta-item/footer-meta-item.component.mjs +0 -25
  160. package/esm2022/lib/desy-nav/components/footer/footer-meta/footer-meta.component.mjs +0 -31
  161. package/esm2022/lib/desy-nav/components/footer/footer-navigation/footer-navigation-item/footer-navigation-item.component.mjs +0 -25
  162. package/esm2022/lib/desy-nav/components/footer/footer-navigation/footer-navigation.component.mjs +0 -21
  163. package/esm2022/lib/desy-nav/components/footer/footer.component.mjs +0 -91
  164. package/esm2022/lib/desy-nav/components/header/header-custom-navigation/header-custom-navigation.component.mjs +0 -15
  165. package/esm2022/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.mjs +0 -46
  166. package/esm2022/lib/desy-nav/components/header/header-mobileText/header-mobile-text.component.mjs +0 -336
  167. package/esm2022/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.mjs +0 -31
  168. package/esm2022/lib/desy-nav/components/header/header-navigation/header-navigation.component.mjs +0 -36
  169. package/esm2022/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.mjs +0 -20
  170. package/esm2022/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.mjs +0 -15
  171. package/esm2022/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.mjs +0 -93
  172. package/esm2022/lib/desy-nav/components/header/header-subnav/header-subnav.component.mjs +0 -41
  173. package/esm2022/lib/desy-nav/components/header/header.component.mjs +0 -119
  174. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-custom-navigation/header-custom-navigation.component.mjs +0 -14
  175. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-dropdown/header-advanced-dropdown.component.mjs +0 -38
  176. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-logo/header-advanced-logo.component.mjs +0 -37
  177. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-sub/header-advanced-sub.component.mjs +0 -42
  178. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-subtitle/header-advanced-subtitle.component.mjs +0 -14
  179. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-super/header-advanced-super.component.mjs +0 -42
  180. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-title/header-advanced-title.component.mjs +0 -19
  181. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-title-container/header-advanced-title-container.component.mjs +0 -38
  182. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced.component.mjs +0 -54
  183. package/esm2022/lib/desy-nav/components/header-mini/header-mini.component.mjs +0 -32
  184. package/esm2022/lib/desy-nav/components/links-list/links-list-icon-right/links-list-icon-right.component.mjs +0 -16
  185. package/esm2022/lib/desy-nav/components/links-list/links-list-item/links-list-item.component.mjs +0 -46
  186. package/esm2022/lib/desy-nav/components/links-list/links-list-item-sub/links-list-item-sub.component.mjs +0 -14
  187. package/esm2022/lib/desy-nav/components/links-list/links-list.component.mjs +0 -44
  188. package/esm2022/lib/desy-nav/components/menu-horizontal/menu-horizontal-item/menu-horizontal-item.component.mjs +0 -42
  189. package/esm2022/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.mjs +0 -76
  190. package/esm2022/lib/desy-nav/components/menu-navigation/components/menu-navigation-item/menu-navigation-item.component.mjs +0 -55
  191. package/esm2022/lib/desy-nav/components/menu-navigation/components/menu-navigation-subitem/menu-navigation-subitem.component.mjs +0 -49
  192. package/esm2022/lib/desy-nav/components/menu-navigation/menu-navigation.component.mjs +0 -858
  193. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item/menu-vertical-item.component.mjs +0 -44
  194. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub/menu-vertical-item-sub.component.mjs +0 -18
  195. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical-item-sub-item/menu-vertical-item-sub-item.component.mjs +0 -34
  196. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical.component.mjs +0 -98
  197. package/esm2022/lib/desy-nav/components/menubar/components/menubar-item/menubar-item.component.mjs +0 -51
  198. package/esm2022/lib/desy-nav/components/menubar/components/menubar-label/menubar-label.component.mjs +0 -14
  199. package/esm2022/lib/desy-nav/components/menubar/components/menubar-subitem/menubar-subitem.component.mjs +0 -36
  200. package/esm2022/lib/desy-nav/components/menubar/components/menubar-subsubitem/menubar-subsubitem.component.mjs +0 -27
  201. package/esm2022/lib/desy-nav/components/menubar/directives/menubaritem.directive.mjs +0 -47
  202. package/esm2022/lib/desy-nav/components/menubar/menubar.component.mjs +0 -966
  203. package/esm2022/lib/desy-nav/components/nav/nav-item/nav-item.component.mjs +0 -43
  204. package/esm2022/lib/desy-nav/components/nav/nav.component.mjs +0 -115
  205. package/esm2022/lib/desy-nav/components/notification/notification-item/notification-item.component.mjs +0 -25
  206. package/esm2022/lib/desy-nav/components/notification/notification.component.mjs +0 -127
  207. package/esm2022/lib/desy-nav/components/skip-link/skip-link.component.mjs +0 -62
  208. package/esm2022/lib/desy-nav/desy-nav.module.mjs +0 -290
  209. package/esm2022/lib/desy-nav/directives/dynamic-heading.directive.mjs +0 -40
  210. package/esm2022/lib/desy-nav/interfaces/breadcrumbs.data.mjs +0 -2
  211. package/esm2022/lib/desy-nav/interfaces/error-summary-data.mjs +0 -2
  212. package/esm2022/lib/desy-nav/interfaces/footer-data.mjs +0 -2
  213. package/esm2022/lib/desy-nav/interfaces/footer-logo.mjs +0 -10
  214. package/esm2022/lib/desy-nav/interfaces/header-advanced-logo.mjs +0 -7
  215. package/esm2022/lib/desy-nav/interfaces/header-dropdown-data.mjs +0 -2
  216. package/esm2022/lib/desy-nav/interfaces/header-mobile-text-data.mjs +0 -2
  217. package/esm2022/lib/desy-nav/interfaces/header-navigation-data.mjs +0 -2
  218. package/esm2022/lib/desy-nav/interfaces/header-navigation-item-data.mjs +0 -2
  219. package/esm2022/lib/desy-nav/interfaces/header-offcanvas-data.mjs +0 -2
  220. package/esm2022/lib/desy-nav/interfaces/header-skiplink-data.mjs +0 -2
  221. package/esm2022/lib/desy-nav/interfaces/header-subnav-data.mjs +0 -2
  222. package/esm2022/lib/desy-nav/interfaces/index.mjs +0 -21
  223. package/esm2022/lib/desy-nav/interfaces/menu-horizontal-item-data.mjs +0 -2
  224. package/esm2022/lib/desy-nav/interfaces/menu-horizontal-item-event-data.mjs +0 -2
  225. package/esm2022/lib/desy-nav/interfaces/menu-navigation-item-sub-item-sub-item.mjs +0 -2
  226. package/esm2022/lib/desy-nav/interfaces/menu-navigation-item-sub-item.mjs +0 -2
  227. package/esm2022/lib/desy-nav/interfaces/menu-navigation.mjs +0 -2
  228. package/esm2022/lib/desy-nav/interfaces/menu-vertical-items-data.mjs +0 -2
  229. package/esm2022/lib/desy-nav/interfaces/menu-vertical-sub-data.mjs +0 -2
  230. package/esm2022/lib/desy-nav/interfaces/menu-vertical-sub-items-data.mjs +0 -2
  231. package/esm2022/lib/desy-nav/interfaces/menubar-item-sub-item-sub-item.mjs +0 -2
  232. package/esm2022/lib/desy-nav/interfaces/menubar-item-sub-item.mjs +0 -2
  233. package/esm2022/lib/desy-nav/interfaces/menubar-item-sub.mjs +0 -2
  234. package/esm2022/lib/desy-nav/interfaces/menubar-item.mjs +0 -2
  235. package/esm2022/lib/desy-nav/interfaces/nav-item-event.data.mjs +0 -2
  236. package/esm2022/lib/desy-nav/interfaces/nav-item.data.mjs +0 -2
  237. package/esm2022/lib/desy-nav/interfaces/notification-items-data.mjs +0 -2
  238. package/esm2022/lib/desy-nav/interfaces/notification-options.mjs +0 -2
  239. package/esm2022/lib/desy-pagination/components/pagination/pagination.component.mjs +0 -242
  240. package/esm2022/lib/desy-pagination/components/pagination-item-perpage/pagination-item-perpage.component.mjs +0 -19
  241. package/esm2022/lib/desy-pagination/components/pagination-listbox-label/pagination-listbox-label.component.mjs +0 -17
  242. package/esm2022/lib/desy-pagination/desy-pagination.module.mjs +0 -25
  243. package/esm2022/lib/desy-pagination/interfaces/pagination-item.data.mjs +0 -2
  244. package/esm2022/lib/desy-tables/components/table/components/table-caption.component.mjs +0 -17
  245. package/esm2022/lib/desy-tables/components/table/components/table-cell.component.mjs +0 -23
  246. package/esm2022/lib/desy-tables/components/table/components/table-footer.component.mjs +0 -18
  247. package/esm2022/lib/desy-tables/components/table/components/table-header.component.mjs +0 -18
  248. package/esm2022/lib/desy-tables/components/table/components/table-row.component.mjs +0 -18
  249. package/esm2022/lib/desy-tables/components/table/table.component.mjs +0 -120
  250. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-footer-cell.component.mjs +0 -23
  251. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-footer.component.mjs +0 -27
  252. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-header-cell.component.mjs +0 -56
  253. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-header.component.mjs +0 -18
  254. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-row-cell.component.mjs +0 -23
  255. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-row.component.mjs +0 -27
  256. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-select.component.mjs +0 -28
  257. package/esm2022/lib/desy-tables/components/table-advanced/table-advanced.component.mjs +0 -516
  258. package/esm2022/lib/desy-tables/desy-tables.module.mjs +0 -100
  259. package/esm2022/lib/desy-tables/directives/cell.directive.mjs +0 -25
  260. package/esm2022/lib/desy-tables/directives/focus-clicked-cell.directive.mjs +0 -89
  261. package/esm2022/lib/desy-tables/directives/row.directive.mjs +0 -22
  262. package/esm2022/lib/desy-tables/interfaces/cell-data.mjs +0 -2
  263. package/esm2022/lib/desy-tables/interfaces/head-cell-data.mjs +0 -7
  264. package/esm2022/lib/desy-tables/interfaces/index.mjs +0 -5
  265. package/esm2022/lib/desy-tables/interfaces/recalculate-table-params.mjs +0 -2
  266. package/esm2022/lib/desy-tables/interfaces/row-data.mjs +0 -2
  267. package/esm2022/lib/desy-tables/interfaces/wrapper-data.mjs +0 -2
  268. package/esm2022/lib/desy-views/components/accordion/accordion-header/accordion-header.component.mjs +0 -17
  269. package/esm2022/lib/desy-views/components/accordion/accordion-item/accordion-item.component.mjs +0 -61
  270. package/esm2022/lib/desy-views/components/accordion/accordion.component.mjs +0 -447
  271. package/esm2022/lib/desy-views/components/accordion-history/accordion-history-item/accordion-history-item.component.mjs +0 -41
  272. package/esm2022/lib/desy-views/components/accordion-history/accordion-history.component.mjs +0 -20
  273. package/esm2022/lib/desy-views/components/accordion-history/accordion-item-hide-button/accordion-item-hide-button.component.mjs +0 -17
  274. package/esm2022/lib/desy-views/components/accordion-history/accordion-item-show-button/accordion-item-show-button.component.mjs +0 -17
  275. package/esm2022/lib/desy-views/components/alert/alert.component.mjs +0 -82
  276. package/esm2022/lib/desy-views/components/card/card-sectors/card-left.component.mjs +0 -21
  277. package/esm2022/lib/desy-views/components/card/card-sectors/card-right.component.mjs +0 -21
  278. package/esm2022/lib/desy-views/components/card/card-sectors/card-sub.component.mjs +0 -21
  279. package/esm2022/lib/desy-views/components/card/card-sectors/card-super.component.mjs +0 -21
  280. package/esm2022/lib/desy-views/components/card/card.component.mjs +0 -48
  281. package/esm2022/lib/desy-views/components/collapsible/collapsible.component.mjs +0 -66
  282. package/esm2022/lib/desy-views/components/description-list/definition/definition.component.mjs +0 -19
  283. package/esm2022/lib/desy-views/components/description-list/description-item/description-item.component.mjs +0 -36
  284. package/esm2022/lib/desy-views/components/description-list/description-list.component.mjs +0 -29
  285. package/esm2022/lib/desy-views/components/description-list/term/term.component.mjs +0 -19
  286. package/esm2022/lib/desy-views/components/details/details.component.mjs +0 -43
  287. package/esm2022/lib/desy-views/components/item/item-content-bottom/item-content-bottom.component.mjs +0 -17
  288. package/esm2022/lib/desy-views/components/item/item-content-right/item-content-right.component.mjs +0 -15
  289. package/esm2022/lib/desy-views/components/item/item-item/item-item.component.mjs +0 -15
  290. package/esm2022/lib/desy-views/components/item/item.component.mjs +0 -122
  291. package/esm2022/lib/desy-views/components/media-object/media-object-figure/media-object-figure.component.mjs +0 -12
  292. package/esm2022/lib/desy-views/components/media-object/media-object.component.mjs +0 -369
  293. package/esm2022/lib/desy-views/components/status/status.component.mjs +0 -366
  294. package/esm2022/lib/desy-views/components/status-item/status-item.component.mjs +0 -401
  295. package/esm2022/lib/desy-views/components/tabs/panel/panel.component.mjs +0 -19
  296. package/esm2022/lib/desy-views/components/tabs/tab-item/tab-item.component.mjs +0 -41
  297. package/esm2022/lib/desy-views/components/tabs/tabs.component.mjs +0 -446
  298. package/esm2022/lib/desy-views/components/tooltip/tooltip-content/tooltip-content.component.mjs +0 -12
  299. package/esm2022/lib/desy-views/components/tooltip/tooltip.component.mjs +0 -450
  300. package/esm2022/lib/desy-views/desy-views.module.mjs +0 -181
  301. package/esm2022/lib/desy-views/interfaces/accordion-header.data.mjs +0 -2
  302. package/esm2022/lib/desy-views/interfaces/accordion-item.data.mjs +0 -2
  303. package/esm2022/lib/desy-views/interfaces/alert-options.mjs +0 -2
  304. package/esm2022/lib/desy-views/interfaces/description-item.data.mjs +0 -2
  305. package/esm2022/lib/desy-views/interfaces/index.mjs +0 -11
  306. package/esm2022/lib/desy-views/interfaces/open-alert-result.mjs +0 -2
  307. package/esm2022/lib/desy-views/interfaces/status-data.mjs +0 -2
  308. package/esm2022/lib/desy-views/interfaces/status-icon-data.mjs +0 -2
  309. package/esm2022/lib/desy-views/interfaces/status-item-title-data.mjs +0 -2
  310. package/esm2022/lib/desy-views/interfaces/tabs-items-data.mjs +0 -2
  311. package/esm2022/lib/desy-views/interfaces/tabs-panel-data.mjs +0 -2
  312. package/esm2022/lib/desy-views/interfaces/term-definition.data.mjs +0 -2
  313. package/esm2022/lib/desy-views/services/alert.service.mjs +0 -88
  314. package/esm2022/lib/shared/components/accessibility/accessibility-attributes.mjs +0 -78
  315. package/esm2022/lib/shared/components/accessibility/accessibility.component.mjs +0 -164
  316. package/esm2022/lib/shared/components/accessibility-and-content-required/accessibility-and-content-required.component.mjs +0 -168
  317. package/esm2022/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.mjs +0 -165
  318. package/esm2022/lib/shared/components/content-base/content-base.component.mjs +0 -21
  319. package/esm2022/lib/shared/components/index.mjs +0 -7
  320. package/esm2022/lib/shared/components/spinner/spinner.component.mjs +0 -329
  321. package/esm2022/lib/shared/components/text-or-html-required/text-or-html-required.component.mjs +0 -18
  322. package/esm2022/lib/shared/decorators/desy-content-child.decorator.mjs +0 -34
  323. package/esm2022/lib/shared/decorators/desy-on-input-change.decorator.mjs +0 -15
  324. package/esm2022/lib/shared/directives/accessibility-directive.mjs +0 -54
  325. package/esm2022/lib/shared/directives/attribute-change.directive.mjs +0 -50
  326. package/esm2022/lib/shared/directives/click-outside.directive.mjs +0 -40
  327. package/esm2022/lib/shared/directives/content-change.directive.mjs +0 -41
  328. package/esm2022/lib/shared/directives/custom-inner-content.directive.mjs +0 -63
  329. package/esm2022/lib/shared/directives/inner-content.directive.mjs +0 -37
  330. package/esm2022/lib/shared/interfaces/accessibility-data.mjs +0 -2
  331. package/esm2022/lib/shared/pipes/external-href.pipe.mjs +0 -28
  332. package/esm2022/lib/shared/pipes/inner-html.pipe.mjs +0 -21
  333. package/esm2022/lib/shared/pipes/make-html-list.pipe.mjs +0 -20
  334. package/esm2022/lib/shared/shared.module.mjs +0 -86
  335. package/esm2022/lib/shared/sharedExternal.module.mjs +0 -20
  336. package/esm2022/lib/shared/utils/focus-utils.mjs +0 -50
  337. package/esm2022/lib/shared/utils/search-utils.mjs +0 -70
  338. package/esm2022/lib/shared/utils/string-utils.mjs +0 -13
  339. package/esm2022/public-api.mjs +0 -225
@@ -1,51 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { Component, ContentChildren, EventEmitter, forwardRef, Input, Output, TemplateRef, ViewChild, } from '@angular/core';
3
- import { DesyContentChild } from '../../../../shared/decorators/desy-content-child.decorator';
4
- import { LabelComponent } from '../../label/label.component';
5
- import { DateInputItemComponent } from '../date-input-item/date-input-item.component';
6
- import * as i0 from "@angular/core";
7
- export class DateInputYearComponent extends DateInputItemComponent {
8
- constructor() {
9
- super(...arguments);
10
- this.valueChange = new EventEmitter();
11
- }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateInputYearComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
13
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DateInputYearComponent, selector: "desy-input-year", inputs: { id: "id", name: "name", disabled: "disabled", hasErrors: "hasErrors", value: "value", autocomplete: "autocomplete", pattern: "pattern", classes: "classes", maxlength: "maxlength", placeholder: "placeholder" }, outputs: { valueChange: "valueChange" }, providers: [{ provide: DateInputItemComponent, useExisting: forwardRef(() => DateInputYearComponent) }], queries: [{ propertyName: "labelComponent", predicate: LabelComponent }], viewQueries: [{ propertyName: "labelRef", first: true, predicate: ["label"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #label>\n <ng-content select=\"desy-label\"></ng-content>\n</ng-template>\n" }); }
14
- }
15
- __decorate([
16
- DesyContentChild(),
17
- __metadata("design:type", LabelComponent)
18
- ], DateInputYearComponent.prototype, "labelComponent", void 0);
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateInputYearComponent, decorators: [{
20
- type: Component,
21
- args: [{ selector: 'desy-input-year', providers: [{ provide: DateInputItemComponent, useExisting: forwardRef(() => DateInputYearComponent) }], template: "<ng-template #label>\n <ng-content select=\"desy-label\"></ng-content>\n</ng-template>\n" }]
22
- }], propDecorators: { id: [{
23
- type: Input
24
- }], name: [{
25
- type: Input
26
- }], disabled: [{
27
- type: Input
28
- }], hasErrors: [{
29
- type: Input
30
- }], value: [{
31
- type: Input
32
- }], autocomplete: [{
33
- type: Input
34
- }], pattern: [{
35
- type: Input
36
- }], classes: [{
37
- type: Input
38
- }], maxlength: [{
39
- type: Input
40
- }], placeholder: [{
41
- type: Input
42
- }], valueChange: [{
43
- type: Output
44
- }], labelComponent: [{
45
- type: ContentChildren,
46
- args: [LabelComponent]
47
- }], labelRef: [{
48
- type: ViewChild,
49
- args: ['label', { static: true }]
50
- }] } });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC15ZWFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktZm9ybXMvY29tcG9uZW50cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQteWVhci9kYXRlLWlucHV0LXllYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1mb3Jtcy9jb21wb25lbnRzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC15ZWFyL2RhdGUtaW5wdXQteWVhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDOUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOztBQU90RixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsc0JBQXNCO0lBTGxFOztRQWlCWSxnQkFBVyxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO0tBTzFFOytHQW5CWSxzQkFBc0I7bUdBQXRCLHNCQUFzQiwrU0FGdEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyx5REFpQnRGLGNBQWMscUtDbkNqQywyRkFHQTs7QURpQ0U7SUFGQyxnQkFBZ0IsRUFBRTs4QkFFSCxjQUFjOzhEQUFDOzRGQWhCcEIsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLGlCQUFpQixhQUVoQixDQUFDLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHVCQUF1QixDQUFDLEVBQUUsQ0FBQzs4QkFHOUYsRUFBRTtzQkFBVixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNXLE9BQU87c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBSVAsY0FBYztzQkFEYixlQUFlO3VCQUFDLGNBQWM7Z0JBR08sUUFBUTtzQkFBN0MsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJdGVtRGF0ZUlucHV0RGF0YSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRGVzeUNvbnRlbnRDaGlsZCB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9kZWNvcmF0b3JzL2Rlc3ktY29udGVudC1jaGlsZC5kZWNvcmF0b3InO1xuaW1wb3J0IHsgTGFiZWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9sYWJlbC9sYWJlbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZUlucHV0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGUtaW5wdXQtaXRlbS9kYXRlLWlucHV0LWl0ZW0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGVzeS1pbnB1dC15ZWFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtaW5wdXQteWVhci5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogRGF0ZUlucHV0SXRlbUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZUlucHV0WWVhckNvbXBvbmVudCkgfV0sXG59KVxuZXhwb3J0IGNsYXNzIERhdGVJbnB1dFllYXJDb21wb25lbnQgZXh0ZW5kcyBEYXRlSW5wdXRJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgSXRlbURhdGVJbnB1dERhdGEge1xuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBoYXNFcnJvcnM6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHZhbHVlOiBhbnk7XG4gIEBJbnB1dCgpIGF1dG9jb21wbGV0ZTogc3RyaW5nO1xuICBASW5wdXQoKSBwYXR0ZXJuOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRlY2xhcmUgY2xhc3Nlczogc3RyaW5nO1xuICBASW5wdXQoKSBtYXhsZW5ndGg6IG51bWJlcjtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQERlc3lDb250ZW50Q2hpbGQoKVxuICBAQ29udGVudENoaWxkcmVuKExhYmVsQ29tcG9uZW50KVxuICBsYWJlbENvbXBvbmVudDogTGFiZWxDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZCgnbGFiZWwnLCB7IHN0YXRpYzogdHJ1ZSB9KSBsYWJlbFJlZjogVGVtcGxhdGVSZWY8YW55Pjtcbn1cbiIsIjxuZy10ZW1wbGF0ZSAjbGFiZWw+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImRlc3ktbGFiZWxcIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,303 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { Component, ContentChildren, EventEmitter, forwardRef, Input, Optional, Output, QueryList, TemplateRef, ViewChild, HostBinding, } from '@angular/core';
3
- import { ControlContainer, NG_VALUE_ACCESSOR } from '@angular/forms';
4
- import { FormFieldComponent } from '../form-field/form-field.component';
5
- import { LegendComponent } from '../fieldset/legend/legend.component';
6
- import { FieldsetComponent } from '../fieldset/fieldset.component';
7
- import { DesyContentChild } from '../../../shared/decorators/desy-content-child.decorator';
8
- import { DateInputDayComponent } from './date-input-day/date-input-day.component';
9
- import { DateInputMonthComponent } from './date-input-month/date-input-month.component';
10
- import { DateInputYearComponent } from './date-input-year/date-input-year.component';
11
- import { MakeHtmlListPipe } from '../../../shared/pipes/make-html-list.pipe';
12
- import { DesyOnInputChange } from '../../../shared/decorators/desy-on-input-change.decorator';
13
- import { DateInputDividerComponent } from './date-input-divider/date-input-divider.component';
14
- import { StringUtils } from '../../../shared/utils/string-utils';
15
- import { DateInputItemComponent } from './date-input-item/date-input-item.component';
16
- import { ErrorMessageComponent } from '../error-message/error-message.component';
17
- import * as i0 from "@angular/core";
18
- import * as i1 from "@angular/forms";
19
- import * as i2 from "@angular/common";
20
- import * as i3 from "../../../shared/directives/custom-inner-content.directive";
21
- import * as i4 from "../../../shared/directives/accessibility-directive";
22
- import * as i5 from "../template-driven-wrapper/template-driven-wrapper.component";
23
- import * as i6 from "../hint/hint.component";
24
- import * as i7 from "../error-message/error-message.component";
25
- import * as i8 from "../fieldset/fieldset.component";
26
- import * as i9 from "../input/input.component";
27
- import * as i10 from "../../../shared/pipes/make-html-list.pipe";
28
- export class DateInputComponent extends FormFieldComponent {
29
- static { this.defaultItems = [
30
- {
31
- name: 'day',
32
- classes: 'w-14',
33
- maxlength: 2,
34
- },
35
- {
36
- name: 'month',
37
- classes: 'w-14',
38
- maxlength: 2,
39
- },
40
- {
41
- name: 'year',
42
- classes: 'w-20',
43
- maxlength: 4,
44
- },
45
- ]; }
46
- constructor(controlContainer) {
47
- super();
48
- this.controlContainer = controlContainer;
49
- this.itemsChange = new EventEmitter();
50
- this.cfg = true;
51
- this.contentInit = false;
52
- }
53
- ngOnInit() {
54
- if (this.controlContainer) {
55
- this.ogFormGroup = this.controlContainer.control;
56
- }
57
- if (this.placeholder) {
58
- let arr = this.placeholder.split('/');
59
- if (this.items && this.items.length > 0 && arr && arr.length > 0) {
60
- for (let i = 0; i < this.items.length; i++) {
61
- this.items[i].placeholder = arr[i];
62
- }
63
- }
64
- }
65
- }
66
- ngOnChanges(changes) {
67
- this.cfgr = this.hasErrorsMessage() || this.formGroupClasses === 'c-form-group--error';
68
- }
69
- ngAfterContentInit() {
70
- this.contentInit = true;
71
- }
72
- initDefaultItems() {
73
- if (!this.items) {
74
- this.items = [
75
- {
76
- name: 'día',
77
- classes: 'w-14',
78
- maxlength: 2,
79
- },
80
- {
81
- name: 'mes',
82
- classes: 'w-14',
83
- maxlength: 2,
84
- },
85
- {
86
- name: 'año',
87
- classes: 'w-20',
88
- maxlength: 4,
89
- },
90
- ];
91
- }
92
- }
93
- writeValue(value) {
94
- this.value = value;
95
- if (this.value) {
96
- const items = this.getItems();
97
- items.forEach((item) => (item.value = this.value[this.getItemName(item)]));
98
- if (this.items) {
99
- this.itemsChange.emit(this.items);
100
- }
101
- }
102
- this.onChange(value);
103
- }
104
- overrideFieldsetParams(fieldset) {
105
- fieldset.caller = this.innerHtml;
106
- fieldset.errorId = this.getErrorId();
107
- fieldset.describedBy = new MakeHtmlListPipe().transform([this.getHintId(), this.getErrorId()], null);
108
- fieldset.role = 'group';
109
- fieldset.detectChanges();
110
- }
111
- overrideErrorMessageParams(errorMessage) {
112
- if (errorMessage && !errorMessage.id) {
113
- errorMessage.id = this.getErrorId();
114
- errorMessage.detectChanges();
115
- }
116
- }
117
- onExternalChange() {
118
- if (!this.contentInit) {
119
- return;
120
- }
121
- if (!this.value) {
122
- this.value = {};
123
- }
124
- const items = this.getItems();
125
- items.forEach((item) => (this.value[this.getItemName(item)] = item.value));
126
- const newVal = {};
127
- Object.assign(newVal, this.value);
128
- this.onChange(newVal);
129
- }
130
- onInternalChange(item, itemValue) {
131
- const itemName = this.getItemName(item);
132
- if (!this.value) {
133
- this.value = {};
134
- }
135
- if (this.value[itemName] !== itemValue) {
136
- this.value[itemName] = itemValue ? +itemValue : undefined;
137
- const newVal = {};
138
- Object.assign(newVal, this.value);
139
- this.onChange(newVal);
140
- if (item instanceof DateInputDayComponent ||
141
- item instanceof DateInputMonthComponent ||
142
- item instanceof DateInputYearComponent) {
143
- item.valueChange.emit(itemValue);
144
- }
145
- if (this.items) {
146
- item.value = itemValue;
147
- this.itemsChange.emit(this.items);
148
- }
149
- }
150
- }
151
- hasFieldset() {
152
- return !!(this.hasFieldsetComponent() ||
153
- this.hasLegendComponent() ||
154
- this.legendRef ||
155
- this.fieldsetData ||
156
- (this.legendData && (this.legendData.text || this.legendData.html)) ||
157
- this.legendText);
158
- }
159
- hasFieldsetComponent() {
160
- return !!this.fieldsetComponent;
161
- }
162
- hasLegendComponent() {
163
- return !!this.legendComponent;
164
- }
165
- hasErrorMessageComponent() {
166
- return !!this.errorMessageComponent;
167
- }
168
- getItemName(item) {
169
- return this.namePrefix ? this.namePrefix + '-' + item.name : item.name;
170
- }
171
- getItemLabel(item) {
172
- let labelData;
173
- if (item.labelData && (item.labelData.text || item.labelData.html)) {
174
- labelData = item.labelData;
175
- }
176
- else {
177
- labelData = {
178
- text: item.labelText ? item.labelText : item.name ? item.name.toUpperCase() : null,
179
- };
180
- }
181
- return labelData;
182
- }
183
- getItemLabelRef(item) {
184
- return item instanceof DateInputDayComponent ||
185
- item instanceof DateInputMonthComponent ||
186
- item instanceof DateInputYearComponent
187
- ? item.labelRef
188
- : null;
189
- }
190
- getItems() {
191
- let items;
192
- if (this.dateInputItemComponents && this.dateInputItemComponents.length > 0) {
193
- items = this.dateInputItemComponents.toArray();
194
- }
195
- else if (this.items) {
196
- items = this.items;
197
- }
198
- else if (this.contentInit) {
199
- items = DateInputComponent.defaultItems;
200
- }
201
- else {
202
- items = [];
203
- }
204
- return items;
205
- }
206
- getItemDividerTemplate(item) {
207
- return item.divider instanceof DateInputDividerComponent ? item.divider.dividerContent : null;
208
- }
209
- getItemDividerHtml(item) {
210
- return item.divider.html ? item.divider.html : `<p>${StringUtils.escapeHtml(item.divider.text)}</p>`;
211
- }
212
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateInputComponent, deps: [{ token: i1.ControlContainer, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
213
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DateInputComponent, selector: "desy-date-input", inputs: { ngModelGroup: "ngModelGroup", items: "items", namePrefix: "namePrefix", classes: "classes", errorMessage: "errorMessage", id: "id", formGroupClasses: "formGroupClasses", fieldsetData: "fieldsetData", legendRef: "legendRef", legendData: "legendData", legendText: "legendText", placeholder: "placeholder" }, outputs: { itemsChange: "itemsChange" }, host: { properties: { "class.c-form-group": "this.cfg", "class.c-form-group--error": "this.cfgr", "class": "this.formGroupClasses" } }, providers: [
214
- {
215
- provide: NG_VALUE_ACCESSOR,
216
- useExisting: forwardRef(() => DateInputComponent),
217
- multi: true,
218
- },
219
- ], queries: [{ propertyName: "fieldsetComponent", predicate: FieldsetComponent }, { propertyName: "errorMessageComponent", predicate: ErrorMessageComponent }, { propertyName: "legendComponent", predicate: LegendComponent }, { propertyName: "dateInputItemComponents", predicate: DateInputItemComponent }], viewQueries: [{ propertyName: "innerHtml", first: true, predicate: ["innerHtml"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-template #innerHtml>\n <ng-container *ngIf=\"hasHintComponent()\">\n <ng-content select=\"desy-hint\"></ng-content>\n </ng-container>\n <ng-container *ngIf=\"!hasHintComponent()\">\n <ng-container *ngTemplateOutlet=\"hintRef\"></ng-container>\n <desy-hint\n *ngIf=\"!hintRef && hintData\"\n [id]=\"getHintId()\"\n [text]=\"hintData.text\"\n [html]=\"hintData.html\"\n [classes]=\"hintData.classes\"\n [role]=\"hintData.role\"\n [ariaLabel]=\"hintData.ariaLabel\"\n [ariaDescribedBy]=\"hintData.ariaDescribedBy\"\n [ariaLabelledBy]=\"hintData.ariaLabelledBy\"\n [ariaHidden]=\"hintData.ariaHidden\"\n [ariaDisabled]=\"hintData.ariaDisabled\"\n [ariaControls]=\"hintData.ariaControls\"\n [ariaCurrent]=\"hintData.ariaCurrent\"\n [ariaLive]=\"hintData.ariaLive\"\n [ariaExpanded]=\"hintData.ariaExpanded\"\n [ariaErrorMessage]=\"hintData.ariaErrorMessage\"\n [ariaHasPopup]=\"hintData.ariaHasPopup\"\n [tabindex]=\"hintData.tabindex\"></desy-hint>\n <desy-hint\n *ngIf=\"!hintRef && !hintData && hintText\"\n [text]=\"hintText\"\n [id]=\"getHintId()\"></desy-hint>\n </ng-container>\n\n <ng-container *ngIf=\"hasErrorMessageComponent()\">\n <ng-content select=\"desy-error-message\"></ng-content>\n </ng-container>\n <ng-container *ngIf=\"!hasErrorMessageComponent()\">\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\n <desy-error-message\n *ngIf=\"!errorMessageRef && errorMessageData\"\n [id]=\"getErrorId()\"\n [text]=\"errorMessageData.text\"\n [html]=\"errorMessageData.html\"\n [classes]=\"errorMessageData.classes\"\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\n [role]=\"errorMessageData.role\"\n [ariaLabel]=\"errorMessageData.ariaLabel\"\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\n [ariaHidden]=\"errorMessageData.ariaHidden\"\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\n [ariaControls]=\"errorMessageData.ariaControls\"\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\n [ariaLive]=\"errorMessageData.ariaLive\"\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\n <desy-error-message\n *ngIf=\"!errorMessageRef && !errorMessageData && errorMessageText\"\n [text]=\"errorMessageText\"\n [id]=\"getErrorId()\"></desy-error-message>\n </ng-container>\n\n <!-- With reactive forms -->\n <div\n *ngIf=\"controlContainer && !ngModelGroup\"\n [formGroup]=\"ogFormGroup\"\n [class]=\"['flex', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngIf=\"item.divider\">\n <div\n role=\"separator\"\n [ngClass]=\"item.divider.classes\">\n <ng-container\n *desyCustomInnerContent=\"{\n template: getItemDividerTemplate(item),\n html: getItemDividerHtml(item),\n }\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!item.divider\">\n <div class=\"mr-base\">\n <desy-input\n [labelData]=\"getItemLabel(item)\"\n [labelRef]=\"getItemLabelRef(item)\"\n [id]=\"item.id ? item.id : id + '-' + item.name\"\n [classes]=\"['mb-0', item.classes] | makeHtmlList\"\n [errorId]=\"item.hasErrors ? getErrorId() : null\"\n [name]=\"getItemName(item)\"\n [formControlName]=\"getItemName(item)\"\n [type]=\"'text'\"\n [inputmode]=\"'numeric'\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern ? item.pattern : '[0-9]*'\"\n [disabled]=\"disabled ? true : null\"\n [placeholder]=\"item.placeholder\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"item.ariaDescribedBy\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"item.ariaErrorMessage\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\"></desy-input>\n </div>\n </ng-container>\n </ng-container>\n </div>\n\n <!-- Template-driven forms -->\n <desy-template-driven-wrapper *ngIf=\"controlContainer && ngModelGroup\">\n <div\n [ngModelGroup]=\"ngModelGroup\"\n [class]=\"['flex', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngIf=\"item.divider\">\n <div\n role=\"separator\"\n [ngClass]=\"item.divider.classes\">\n <ng-container\n *desyCustomInnerContent=\"{\n template: getItemDividerTemplate(item),\n html: getItemDividerHtml(item),\n }\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!item.divider\">\n <div class=\"mr-base\">\n <desy-input\n [labelData]=\"getItemLabel(item)\"\n [labelRef]=\"getItemLabelRef(item)\"\n [id]=\"item.id ? item.id : id + '-' + item.name\"\n [classes]=\"['mb-0', item.classes] | makeHtmlList\"\n [errorId]=\"item.hasErrors ? getErrorId() : null\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, +$event)\"\n [type]=\"'text'\"\n [inputmode]=\"'numeric'\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern ? item.pattern : '[0-9]*'\"\n [disabled]=\"disabled ? true : null\"\n [placeholder]=\"item.placeholder\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"item.ariaDescribedBy\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"item.ariaErrorMessage\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\"></desy-input>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </desy-template-driven-wrapper>\n\n <!-- With ngModel-->\n <div\n *ngIf=\"!controlContainer\"\n [class]=\"['flex', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngIf=\"item.divider\">\n <div\n role=\"separator\"\n [ngClass]=\"item.divider.classes\">\n <ng-container\n *desyCustomInnerContent=\"{\n template: getItemDividerTemplate(item),\n html: getItemDividerHtml(item),\n }\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!item.divider\">\n <div class=\"mr-base\">\n <desy-input\n [labelData]=\"getItemLabel(item)\"\n [labelRef]=\"getItemLabelRef(item)\"\n [id]=\"item.id ? item.id : id + '-' + item.name\"\n [classes]=\"['mb-0', item.classes] | makeHtmlList\"\n [errorId]=\"item.hasErrors ? getErrorId() : null\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, +$event)\"\n [type]=\"'text'\"\n [inputmode]=\"'numeric'\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern ? item.pattern : '[0-9]*'\"\n [disabled]=\"disabled ? true : null\"\n [placeholder]=\"item.placeholder\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"item.ariaDescribedBy\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"item.ariaErrorMessage\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\"></desy-input>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"hasFieldsetComponent()\">\n <ng-content select=\"desy-fieldset\"></ng-content>\n</ng-container>\n<ng-container *ngIf=\"!hasFieldsetComponent()\">\n <desy-fieldset\n *ngIf=\"fieldsetData\"\n [classes]=\"fieldsetData.classes\"\n [id]=\"fieldsetData.id\"\n [legendData]=\"fieldsetData.legend\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[fieldsetData.describedBy, getHintId(), getErrorId()] | makeHtmlList: null\"\n role=\"group\"\n [ariaLabel]=\"fieldsetData.ariaLabel\"\n [ariaLabelledBy]=\"fieldsetData.ariaLabelledBy\"\n [ariaHidden]=\"fieldsetData.ariaHidden\"\n [ariaDisabled]=\"fieldsetData.ariaDisabled\"\n [ariaControls]=\"fieldsetData.ariaControls\"\n [ariaCurrent]=\"fieldsetData.ariaCurrent\"\n [ariaLive]=\"fieldsetData.ariaLive\"\n [ariaExpanded]=\"fieldsetData.ariaExpanded\"\n [ariaHasPopup]=\"fieldsetData.ariaHasPopup\"\n [tabindex]=\"fieldsetData.tabindex\"></desy-fieldset>\n <desy-fieldset\n *ngIf=\"!fieldsetData && hasLegendComponent()\"\n [legendRef]=\"legendTemplate\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[getHintId(), getErrorId()] | makeHtmlList: null\">\n <ng-template #legendTemplate>\n <ng-content select=\"desy-legend\"></ng-content>\n </ng-template>\n </desy-fieldset>\n <desy-fieldset\n *ngIf=\"!fieldsetData && !hasLegendComponent() && legendRef\"\n [legendRef]=\"legendRef\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[getHintId(), getErrorId()] | makeHtmlList: null\"\n role=\"group\"></desy-fieldset>\n <desy-fieldset\n *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && legendData\"\n [legendData]=\"{\n text: legendData.text,\n html: legendData.html,\n classes: legendData.classes,\n isPageHeading: legendData.isPageHeading,\n }\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[getHintId(), getErrorId()] | makeHtmlList: null\"\n role=\"group\"></desy-fieldset>\n <desy-fieldset\n *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && !legendData && legendText\"\n [legendText]=\"legendText\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[getHintId(), getErrorId()] | makeHtmlList: null\"\n role=\"group\"></desy-fieldset>\n</ng-container>\n\n<ng-container *ngIf=\"!hasFieldset()\">\n <ng-container *ngTemplateOutlet=\"innerHtml\"></ng-container>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgModelGroup, selector: "[ngModelGroup]", inputs: ["ngModelGroup"], exportAs: ["ngModelGroup"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "directive", type: i4.AccessibilityDirective, selector: "[desyAppAccessibility]", inputs: ["desyAppAccessibility"] }, { kind: "component", type: i5.TemplateDrivenWrapperComponent, selector: "desy-template-driven-wrapper" }, { kind: "component", type: i6.HintComponent, selector: "desy-hint", inputs: ["id", "classes", "html", "text"] }, { kind: "component", type: i7.ErrorMessageComponent, selector: "desy-error-message", inputs: ["id", "classes", "html", "text", "visuallyHiddenText"] }, { kind: "component", type: i8.FieldsetComponent, selector: "desy-fieldset", inputs: ["describedBy", "errorId", "legendRef", "legendData", "legendText", "classes", "caller", "id", "headingLevel"] }, { kind: "component", type: i9.InputComponent, selector: "desy-input", inputs: ["name", "type", "describedBy", "pattern", "inputmode", "placeholder", "formGroupClasses", "classes", "autocomplete", "maxlength", "errorId", "attributes"] }, { kind: "pipe", type: i10.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
220
- }
221
- __decorate([
222
- DesyOnInputChange('onExternalChange'),
223
- __metadata("design:type", Array)
224
- ], DateInputComponent.prototype, "items", void 0);
225
- __decorate([
226
- DesyOnInputChange('onExternalChange'),
227
- __metadata("design:type", String)
228
- ], DateInputComponent.prototype, "namePrefix", void 0);
229
- __decorate([
230
- DesyContentChild({ onSetCallbackName: 'overrideFieldsetParams' }),
231
- __metadata("design:type", FieldsetComponent)
232
- ], DateInputComponent.prototype, "fieldsetComponent", void 0);
233
- __decorate([
234
- DesyContentChild({ onSetCallbackName: 'overrideErrorMessageParams' }),
235
- __metadata("design:type", ErrorMessageComponent)
236
- ], DateInputComponent.prototype, "errorMessageComponent", void 0);
237
- __decorate([
238
- DesyContentChild(),
239
- __metadata("design:type", LegendComponent)
240
- ], DateInputComponent.prototype, "legendComponent", void 0);
241
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateInputComponent, decorators: [{
242
- type: Component,
243
- args: [{ selector: 'desy-date-input', providers: [
244
- {
245
- provide: NG_VALUE_ACCESSOR,
246
- useExisting: forwardRef(() => DateInputComponent),
247
- multi: true,
248
- },
249
- ], template: "<ng-template #innerHtml>\n <ng-container *ngIf=\"hasHintComponent()\">\n <ng-content select=\"desy-hint\"></ng-content>\n </ng-container>\n <ng-container *ngIf=\"!hasHintComponent()\">\n <ng-container *ngTemplateOutlet=\"hintRef\"></ng-container>\n <desy-hint\n *ngIf=\"!hintRef && hintData\"\n [id]=\"getHintId()\"\n [text]=\"hintData.text\"\n [html]=\"hintData.html\"\n [classes]=\"hintData.classes\"\n [role]=\"hintData.role\"\n [ariaLabel]=\"hintData.ariaLabel\"\n [ariaDescribedBy]=\"hintData.ariaDescribedBy\"\n [ariaLabelledBy]=\"hintData.ariaLabelledBy\"\n [ariaHidden]=\"hintData.ariaHidden\"\n [ariaDisabled]=\"hintData.ariaDisabled\"\n [ariaControls]=\"hintData.ariaControls\"\n [ariaCurrent]=\"hintData.ariaCurrent\"\n [ariaLive]=\"hintData.ariaLive\"\n [ariaExpanded]=\"hintData.ariaExpanded\"\n [ariaErrorMessage]=\"hintData.ariaErrorMessage\"\n [ariaHasPopup]=\"hintData.ariaHasPopup\"\n [tabindex]=\"hintData.tabindex\"></desy-hint>\n <desy-hint\n *ngIf=\"!hintRef && !hintData && hintText\"\n [text]=\"hintText\"\n [id]=\"getHintId()\"></desy-hint>\n </ng-container>\n\n <ng-container *ngIf=\"hasErrorMessageComponent()\">\n <ng-content select=\"desy-error-message\"></ng-content>\n </ng-container>\n <ng-container *ngIf=\"!hasErrorMessageComponent()\">\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\n <desy-error-message\n *ngIf=\"!errorMessageRef && errorMessageData\"\n [id]=\"getErrorId()\"\n [text]=\"errorMessageData.text\"\n [html]=\"errorMessageData.html\"\n [classes]=\"errorMessageData.classes\"\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\n [role]=\"errorMessageData.role\"\n [ariaLabel]=\"errorMessageData.ariaLabel\"\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\n [ariaHidden]=\"errorMessageData.ariaHidden\"\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\n [ariaControls]=\"errorMessageData.ariaControls\"\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\n [ariaLive]=\"errorMessageData.ariaLive\"\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\n <desy-error-message\n *ngIf=\"!errorMessageRef && !errorMessageData && errorMessageText\"\n [text]=\"errorMessageText\"\n [id]=\"getErrorId()\"></desy-error-message>\n </ng-container>\n\n <!-- With reactive forms -->\n <div\n *ngIf=\"controlContainer && !ngModelGroup\"\n [formGroup]=\"ogFormGroup\"\n [class]=\"['flex', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngIf=\"item.divider\">\n <div\n role=\"separator\"\n [ngClass]=\"item.divider.classes\">\n <ng-container\n *desyCustomInnerContent=\"{\n template: getItemDividerTemplate(item),\n html: getItemDividerHtml(item),\n }\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!item.divider\">\n <div class=\"mr-base\">\n <desy-input\n [labelData]=\"getItemLabel(item)\"\n [labelRef]=\"getItemLabelRef(item)\"\n [id]=\"item.id ? item.id : id + '-' + item.name\"\n [classes]=\"['mb-0', item.classes] | makeHtmlList\"\n [errorId]=\"item.hasErrors ? getErrorId() : null\"\n [name]=\"getItemName(item)\"\n [formControlName]=\"getItemName(item)\"\n [type]=\"'text'\"\n [inputmode]=\"'numeric'\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern ? item.pattern : '[0-9]*'\"\n [disabled]=\"disabled ? true : null\"\n [placeholder]=\"item.placeholder\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"item.ariaDescribedBy\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"item.ariaErrorMessage\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\"></desy-input>\n </div>\n </ng-container>\n </ng-container>\n </div>\n\n <!-- Template-driven forms -->\n <desy-template-driven-wrapper *ngIf=\"controlContainer && ngModelGroup\">\n <div\n [ngModelGroup]=\"ngModelGroup\"\n [class]=\"['flex', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngIf=\"item.divider\">\n <div\n role=\"separator\"\n [ngClass]=\"item.divider.classes\">\n <ng-container\n *desyCustomInnerContent=\"{\n template: getItemDividerTemplate(item),\n html: getItemDividerHtml(item),\n }\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!item.divider\">\n <div class=\"mr-base\">\n <desy-input\n [labelData]=\"getItemLabel(item)\"\n [labelRef]=\"getItemLabelRef(item)\"\n [id]=\"item.id ? item.id : id + '-' + item.name\"\n [classes]=\"['mb-0', item.classes] | makeHtmlList\"\n [errorId]=\"item.hasErrors ? getErrorId() : null\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, +$event)\"\n [type]=\"'text'\"\n [inputmode]=\"'numeric'\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern ? item.pattern : '[0-9]*'\"\n [disabled]=\"disabled ? true : null\"\n [placeholder]=\"item.placeholder\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"item.ariaDescribedBy\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"item.ariaErrorMessage\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\"></desy-input>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </desy-template-driven-wrapper>\n\n <!-- With ngModel-->\n <div\n *ngIf=\"!controlContainer\"\n [class]=\"['flex', classes] | makeHtmlList\"\n [attr.id]=\"id ? id : null\"\n [desyAppAccessibility]=\"this\">\n <ng-container *ngFor=\"let item of getItems(); index as i\">\n <ng-container *ngIf=\"item.divider\">\n <div\n role=\"separator\"\n [ngClass]=\"item.divider.classes\">\n <ng-container\n *desyCustomInnerContent=\"{\n template: getItemDividerTemplate(item),\n html: getItemDividerHtml(item),\n }\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!item.divider\">\n <div class=\"mr-base\">\n <desy-input\n [labelData]=\"getItemLabel(item)\"\n [labelRef]=\"getItemLabelRef(item)\"\n [id]=\"item.id ? item.id : id + '-' + item.name\"\n [classes]=\"['mb-0', item.classes] | makeHtmlList\"\n [errorId]=\"item.hasErrors ? getErrorId() : null\"\n [name]=\"getItemName(item)\"\n [ngModel]=\"item.value\"\n (ngModelChange)=\"onInternalChange(item, +$event)\"\n [type]=\"'text'\"\n [inputmode]=\"'numeric'\"\n [autocomplete]=\"item.autocomplete\"\n [pattern]=\"item.pattern ? item.pattern : '[0-9]*'\"\n [disabled]=\"disabled ? true : null\"\n [placeholder]=\"item.placeholder\"\n [maxlength]=\"item.maxlength\"\n [role]=\"item.role\"\n [ariaLabel]=\"item.ariaLabel\"\n [ariaDescribedBy]=\"item.ariaDescribedBy\"\n [ariaLabelledBy]=\"item.ariaLabelledBy\"\n [ariaHidden]=\"item.ariaHidden\"\n [ariaDisabled]=\"item.ariaDisabled\"\n [ariaControls]=\"item.ariaControls\"\n [ariaCurrent]=\"item.ariaCurrent\"\n [ariaLive]=\"item.ariaLive\"\n [ariaExpanded]=\"item.ariaExpanded\"\n [ariaErrorMessage]=\"item.ariaErrorMessage\"\n [ariaHasPopup]=\"item.ariaHasPopup\"\n [tabindex]=\"item.tabindex\"\n [ariaModal]=\"item.ariaModal\"\n [ariaChecked]=\"item.ariaChecked\"\n [ariaPressed]=\"item.ariaPressed\"\n [ariaReadonly]=\"item.ariaReadonly\"\n [ariaRequired]=\"item.ariaRequired\"\n [ariaSelected]=\"item.ariaSelected\"\n [ariaValuemin]=\"item.ariaValuemin\"\n [ariaValuemax]=\"item.ariaValuemax\"\n [ariaValuenow]=\"item.ariaValuenow\"\n [ariaValuetext]=\"item.ariaValuetext\"\n [ariaOrientation]=\"item.ariaOrientation\"\n [ariaLevel]=\"item.ariaLevel\"\n [ariaMultiselectable]=\"item.ariaMultiselectable\"\n [ariaPlaceholder]=\"item.ariaPlaceholder\"\n [ariaPosinset]=\"item.ariaPosinset\"\n [ariaSetsize]=\"item.ariaSetsize\"\n [ariaSort]=\"item.ariaSort\"\n [ariaBusy]=\"item.ariaBusy\"\n [ariaDropeffect]=\"item.ariaDropeffect\"\n [ariaGrabbed]=\"item.ariaGrabbed\"\n [ariaActivedescendant]=\"item.ariaActivedescendant\"\n [ariaAtomic]=\"item.ariaAtomic\"\n [ariaAutocomplete]=\"item.ariaAutocomplete\"\n [ariaBraillelabel]=\"item.ariaBraillelabel\"\n [ariaBrailleroledescription]=\"item.ariaBrailleroledescription\"\n [ariaColcount]=\"item.ariaColcount\"\n [ariaColindex]=\"item.ariaColindex\"\n [ariaColindextext]=\"item.ariaColindextext\"\n [ariaColspan]=\"item.ariaColspan\"\n [ariaDescription]=\"item.ariaDescription\"\n [ariaDetails]=\"item.ariaDetails\"\n [ariaFlowto]=\"item.ariaFlowto\"\n [ariaInvalid]=\"item.ariaInvalid\"\n [ariaKeyshortcuts]=\"item.ariaKeyshortcuts\"\n [ariaOwns]=\"item.ariaOwns\"\n [ariaRelevant]=\"item.ariaRelevant\"\n [ariaRoledescription]=\"item.ariaRoledescription\"\n [ariaRowcount]=\"item.ariaRowcount\"\n [ariaRowindex]=\"item.ariaRowindex\"\n [ariaRowindextext]=\"item.ariaRowindextext\"\n [ariaRowspan]=\"item.ariaRowspan\"\n [title]=\"item.title\"\n [alt]=\"item.alt\"\n [lang]=\"item.lang\"\n [accesskey]=\"item.accesskey\"\n [autofocus]=\"item.autofocus\"\n [contenteditable]=\"item.contenteditable\"\n [dir]=\"item.dir\"\n [draggable]=\"item.draggable\"\n [enterkeyhint]=\"item.enterkeyhint\"\n [hidden]=\"item.hidden\"\n [spellcheck]=\"item.spellcheck\"\n [translate]=\"item.translate\"\n [ariaMultiline]=\"item.ariaMultiline\"\n [for]=\"item.for\"\n [form]=\"item.form\"\n [headers]=\"item.headers\"\n [readonly]=\"item.readonly\"\n [required]=\"item.required\"></desy-input>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"hasFieldsetComponent()\">\n <ng-content select=\"desy-fieldset\"></ng-content>\n</ng-container>\n<ng-container *ngIf=\"!hasFieldsetComponent()\">\n <desy-fieldset\n *ngIf=\"fieldsetData\"\n [classes]=\"fieldsetData.classes\"\n [id]=\"fieldsetData.id\"\n [legendData]=\"fieldsetData.legend\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[fieldsetData.describedBy, getHintId(), getErrorId()] | makeHtmlList: null\"\n role=\"group\"\n [ariaLabel]=\"fieldsetData.ariaLabel\"\n [ariaLabelledBy]=\"fieldsetData.ariaLabelledBy\"\n [ariaHidden]=\"fieldsetData.ariaHidden\"\n [ariaDisabled]=\"fieldsetData.ariaDisabled\"\n [ariaControls]=\"fieldsetData.ariaControls\"\n [ariaCurrent]=\"fieldsetData.ariaCurrent\"\n [ariaLive]=\"fieldsetData.ariaLive\"\n [ariaExpanded]=\"fieldsetData.ariaExpanded\"\n [ariaHasPopup]=\"fieldsetData.ariaHasPopup\"\n [tabindex]=\"fieldsetData.tabindex\"></desy-fieldset>\n <desy-fieldset\n *ngIf=\"!fieldsetData && hasLegendComponent()\"\n [legendRef]=\"legendTemplate\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[getHintId(), getErrorId()] | makeHtmlList: null\">\n <ng-template #legendTemplate>\n <ng-content select=\"desy-legend\"></ng-content>\n </ng-template>\n </desy-fieldset>\n <desy-fieldset\n *ngIf=\"!fieldsetData && !hasLegendComponent() && legendRef\"\n [legendRef]=\"legendRef\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[getHintId(), getErrorId()] | makeHtmlList: null\"\n role=\"group\"></desy-fieldset>\n <desy-fieldset\n *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && legendData\"\n [legendData]=\"{\n text: legendData.text,\n html: legendData.html,\n classes: legendData.classes,\n isPageHeading: legendData.isPageHeading,\n }\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[getHintId(), getErrorId()] | makeHtmlList: null\"\n role=\"group\"></desy-fieldset>\n <desy-fieldset\n *ngIf=\"!fieldsetData && !hasLegendComponent() && !legendRef && !legendData && legendText\"\n [legendText]=\"legendText\"\n [caller]=\"innerHtml\"\n [errorId]=\"getErrorId()\"\n [describedBy]=\"[getHintId(), getErrorId()] | makeHtmlList: null\"\n role=\"group\"></desy-fieldset>\n</ng-container>\n\n<ng-container *ngIf=\"!hasFieldset()\">\n <ng-container *ngTemplateOutlet=\"innerHtml\"></ng-container>\n</ng-container>\n" }]
250
- }], ctorParameters: () => [{ type: i1.ControlContainer, decorators: [{
251
- type: Optional
252
- }] }], propDecorators: { ngModelGroup: [{
253
- type: Input
254
- }], items: [{
255
- type: Input
256
- }], itemsChange: [{
257
- type: Output
258
- }], namePrefix: [{
259
- type: Input
260
- }], classes: [{
261
- type: Input
262
- }], errorMessage: [{
263
- type: Input
264
- }], id: [{
265
- type: Input
266
- }], cfg: [{
267
- type: HostBinding,
268
- args: ['class.c-form-group']
269
- }], cfgr: [{
270
- type: HostBinding,
271
- args: ['class.c-form-group--error']
272
- }], formGroupClasses: [{
273
- type: Input
274
- }, {
275
- type: HostBinding,
276
- args: ['class']
277
- }], fieldsetComponent: [{
278
- type: ContentChildren,
279
- args: [FieldsetComponent]
280
- }], errorMessageComponent: [{
281
- type: ContentChildren,
282
- args: [ErrorMessageComponent]
283
- }], legendComponent: [{
284
- type: ContentChildren,
285
- args: [LegendComponent]
286
- }], dateInputItemComponents: [{
287
- type: ContentChildren,
288
- args: [DateInputItemComponent]
289
- }], fieldsetData: [{
290
- type: Input
291
- }], legendRef: [{
292
- type: Input
293
- }], legendData: [{
294
- type: Input
295
- }], legendText: [{
296
- type: Input
297
- }], placeholder: [{
298
- type: Input
299
- }], innerHtml: [{
300
- type: ViewChild,
301
- args: ['innerHtml', { static: true }]
302
- }] } });
303
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LWZvcm1zL2NvbXBvbmVudHMvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktZm9ybXMvY29tcG9uZW50cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsV0FBVyxHQUdaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBYSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUMzRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVB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dXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgSG9zdEJpbmRpbmcsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXAsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWVsZHNldERhdGEsIExlZ2VuZERhdGEsIEl0ZW1EYXRlSW5wdXREYXRhLCBMYWJlbERhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IExlZ2VuZENvbXBvbmVudCB9IGZyb20gJy4uL2ZpZWxkc2V0L2xlZ2VuZC9sZWdlbmQuY29tcG9uZW50JztcbmltcG9ydCB7IEZpZWxkc2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vZmllbGRzZXQvZmllbGRzZXQuY29tcG9uZW50JztcbmltcG9ydCB7IERlc3lDb250ZW50Q2hpbGQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGVjb3JhdG9ycy9kZXN5LWNvbnRlbnQtY2hpbGQuZGVjb3JhdG9yJztcbmltcG9ydCB7IERhdGVJbnB1dERheUNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZS1pbnB1dC1kYXkvZGF0ZS1pbnB1dC1kYXkuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVJbnB1dE1vbnRoQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlLWlucHV0LW1vbnRoL2RhdGUtaW5wdXQtbW9udGguY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVJbnB1dFllYXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGUtaW5wdXQteWVhci9kYXRlLWlucHV0LXllYXIuY29tcG9uZW50JztcbmltcG9ydCB7IE1ha2VIdG1sTGlzdFBpcGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvcGlwZXMvbWFrZS1odG1sLWxpc3QucGlwZSc7XG5pbXBvcnQgeyBEZXN5T25JbnB1dENoYW5nZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kZWNvcmF0b3JzL2Rlc3ktb24taW5wdXQtY2hhbmdlLmRlY29yYXRvcic7XG5pbXBvcnQgeyBEYXRlSW5wdXREaXZpZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlLWlucHV0LWRpdmlkZXIvZGF0ZS1pbnB1dC1kaXZpZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdHJpbmdVdGlscyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9zdHJpbmctdXRpbHMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZS1pbnB1dC1pdGVtL2RhdGUtaW5wdXQtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRXJyb3JNZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vZXJyb3ItbWVzc2FnZS9lcnJvci1tZXNzYWdlLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Rlc3ktZGF0ZS1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZUlucHV0Q29tcG9uZW50IGV4dGVuZHMgRm9ybUZpZWxkQ29tcG9uZW50PGFueT4gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgc3RhdGljIGRlZmF1bHRJdGVtcyA9IFtcbiAgICB7XG4gICAgICBuYW1lOiAnZGF5JyxcbiAgICAgIGNsYXNzZXM6ICd3LTE0JyxcbiAgICAgIG1heGxlbmd0aDogMixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdtb250aCcsXG4gICAgICBjbGFzc2VzOiAndy0xNCcsXG4gICAgICBtYXhsZW5ndGg6IDIsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAneWVhcicsXG4gICAgICBjbGFzc2VzOiAndy0yMCcsXG4gICAgICBtYXhsZW5ndGg6IDQsXG4gICAgfSxcbiAgXTtcblxuICBASW5wdXQoKSBuZ01vZGVsR3JvdXA6IHN0cmluZztcblxuICBARGVzeU9uSW5wdXRDaGFuZ2UoJ29uRXh0ZXJuYWxDaGFuZ2UnKVxuICBASW5wdXQoKVxuICBpdGVtczogSXRlbURhdGVJbnB1dERhdGFbXTtcbiAgQE91dHB1dCgpIGl0ZW1zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SXRlbURhdGVJbnB1dERhdGFbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPEl0ZW1EYXRlSW5wdXREYXRhW10+KCk7XG5cbiAgQERlc3lPbklucHV0Q2hhbmdlKCdvbkV4dGVybmFsQ2hhbmdlJylcbiAgQElucHV0KClcbiAgbmFtZVByZWZpeDogc3RyaW5nO1xuICBASW5wdXQoKSBjbGFzc2VzOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICBASW5wdXQoKSBkZWNsYXJlIGlkOiBzdHJpbmc7XG4gIC8vICBmb3JtIGdyb3VwIGNsYXNzIC0gYXNpZ25hciBjbGFzZXMgYSBsYSBldGlxdWV0YSBkZXN5LWlucHV0XG4gIEBIb3N0QmluZGluZygnY2xhc3MuYy1mb3JtLWdyb3VwJykgY2ZnID0gdHJ1ZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jLWZvcm0tZ3JvdXAtLWVycm9yJykgY2ZncjogYm9vbGVhbjtcbiAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGZvcm1Hcm91cENsYXNzZXM6IGFueTtcblxuICBARGVzeUNvbnRlbnRDaGlsZCh7IG9uU2V0Q2FsbGJhY2tOYW1lOiAnb3ZlcnJpZGVGaWVsZHNldFBhcmFtcycgfSlcbiAgQENvbnRlbnRDaGlsZHJlbihGaWVsZHNldENvbXBvbmVudClcbiAgZmllbGRzZXRDb21wb25lbnQ6IEZpZWxkc2V0Q29tcG9uZW50O1xuXG4gIEBEZXN5Q29udGVudENoaWxkKHsgb25TZXRDYWxsYmFja05hbWU6ICdvdmVycmlkZUVycm9yTWVzc2FnZVBhcmFtcycgfSlcbiAgQENvbnRlbnRDaGlsZHJlbihFcnJvck1lc3NhZ2VDb21wb25lbnQpXG4gIGRlY2xhcmUgZXJyb3JNZXNzYWdlQ29tcG9uZW50OiBFcnJvck1lc3NhZ2VDb21wb25lbnQ7XG5cbiAgQERlc3lDb250ZW50Q2hpbGQoKVxuICBAQ29udGVudENoaWxkcmVuKExlZ2VuZENvbXBvbmVudClcbiAgbGVnZW5kQ29tcG9uZW50OiBMZWdlbmRDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihEYXRlSW5wdXRJdGVtQ29tcG9uZW50KSBkYXRlSW5wdXRJdGVtQ29tcG9uZW50czogUXVlcnlMaXN0PERhdGVJbnB1dEl0ZW1Db21wb25lbnQ+O1xuXG4gIC8qKlxuICAgKiBmaWVsZHNldCwgZGlmZXJlbnRlcyBmb3JtYXMgZGUgaW1wbGVtZW50YXIsIGVudW1lcmFkYXMgcG9yIHByaW9yaWRhZFxuICAgKiAxKSBpbmNsdWlyIG9iamV0byBGaWVsZHNldERhdGEgKGludGVyZmF6IGV4cHVlc3RhKVxuICAgKiAyKSBpbmNsdWlyIHRlbXBsYXRlIGxlZ2VuZFxuICAgKiAzKSBpbmNsdWlyIGxlZ2VuZERhdGEgLSBpbmNsdWlyIHVuIGZpZWxkc2V0IGNvbiB1bmEgbGVnZW5kYSBjb24gbG9zIHBhcmFtZXRyb3MgcGFzYWRvcyAgKGludGVyZmF6IGV4cHVlc3RhKVxuICAgKiA0KSBpbmNsdWlyIGxlZ2VuZFRleHQgLSBpbmNsdWlyIHVuIGZpZWxkc2V0IGNvbiB1biB0ZXh0byBlbiBsYSBsZWdlbmRhXG4gICAqL1xuICBASW5wdXQoKSBmaWVsZHNldERhdGE6IEZpZWxkc2V0RGF0YTtcbiAgQElucHV0KCkgbGVnZW5kUmVmOiBUZW1wbGF0ZVJlZjxMZWdlbmRDb21wb25lbnQ+O1xuICBASW5wdXQoKSBsZWdlbmREYXRhOiBMZWdlbmREYXRhO1xuICBASW5wdXQoKSBsZWdlbmRUZXh0OiBzdHJpbmc7XG5cbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICBAVmlld0NoaWxkKCdpbm5lckh0bWwnLCB7IHN0YXRpYzogdHJ1ZSB9KSBpbm5lckh0bWw6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHJpdmF0ZSBjb250ZW50SW5pdCA9IGZhbHNlO1xuICBwdWJsaWMgb2dGb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwdWJsaWMgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5jb250cm9sQ29udGFpbmVyKSB7XG4gICAgICB0aGlzLm9nRm9ybUdyb3VwID0gdGhpcy5jb250cm9sQ29udGFpbmVyLmNvbnRyb2wgYXMgRm9ybUdyb3VwO1xuICAgIH1cbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlcikge1xuICAgICAgbGV0IGFyciA9IHRoaXMucGxhY2Vob2xkZXIuc3BsaXQoJy8nKTtcbiAgICAgIGlmICh0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCAmJiBhcnIgJiYgYXJyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLml0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdGhpcy5pdGVtc1tpXS5wbGFjZWhvbGRlciA9IGFycltpXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLmNmZ3IgPSB0aGlzLmhhc0Vycm9yc01lc3NhZ2UoKSB8fCB0aGlzLmZvcm1Hcm91cENsYXNzZXMgPT09ICdjLWZvcm0tZ3JvdXAtLWVycm9yJztcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRlbnRJbml0ID0gdHJ1ZTtcbiAgfVxuXG4gIGluaXREZWZhdWx0SXRlbXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLml0ZW1zKSB7XG4gICAgICB0aGlzLml0ZW1zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2TDrWEnLFxuICAgICAgICAgIGNsYXNzZXM6ICd3LTE0JyxcbiAgICAgICAgICBtYXhsZW5ndGg6IDIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnbWVzJyxcbiAgICAgICAgICBjbGFzc2VzOiAndy0xNCcsXG4gICAgICAgICAgbWF4bGVuZ3RoOiAyLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2HDsW8nLFxuICAgICAgICAgIGNsYXNzZXM6ICd3LTIwJyxcbiAgICAgICAgICBtYXhsZW5ndGg6IDQsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldEl0ZW1zKCk7XG4gICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiAoaXRlbS52YWx1ZSA9IHRoaXMudmFsdWVbdGhpcy5nZXRJdGVtTmFtZShpdGVtKV0pKTtcblxuICAgICAgaWYgKHRoaXMuaXRlbXMpIHtcbiAgICAgICAgdGhpcy5pdGVtc0NoYW5nZS5lbWl0KHRoaXMuaXRlbXMpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIG92ZXJyaWRlRmllbGRzZXRQYXJhbXMoZmllbGRzZXQ6IEZpZWxkc2V0Q29tcG9uZW50KTogdm9pZCB7XG4gICAgZmllbGRzZXQuY2FsbGVyID0gdGhpcy5pbm5lckh0bWw7XG4gICAgZmllbGRzZXQuZXJyb3JJZCA9IHRoaXMuZ2V0RXJyb3JJZCgpO1xuICAgIGZpZWxkc2V0LmRlc2NyaWJlZEJ5ID0gbmV3IE1ha2VIdG1sTGlzdFBpcGUoKS50cmFuc2Zvcm0oW3RoaXMuZ2V0SGludElkKCksIHRoaXMuZ2V0RXJyb3JJZCgpXSwgbnVsbCk7XG4gICAgZmllbGRzZXQucm9sZSA9ICdncm91cCc7XG4gICAgZmllbGRzZXQuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb3ZlcnJpZGVFcnJvck1lc3NhZ2VQYXJhbXMoZXJyb3JNZXNzYWdlOiBFcnJvck1lc3NhZ2VDb21wb25lbnQpOiB2b2lkIHtcbiAgICBpZiAoZXJyb3JNZXNzYWdlICYmICFlcnJvck1lc3NhZ2UuaWQpIHtcbiAgICAgIGVycm9yTWVzc2FnZS5pZCA9IHRoaXMuZ2V0RXJyb3JJZCgpO1xuICAgICAgZXJyb3JNZXNzYWdlLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBvbkV4dGVybmFsQ2hhbmdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250ZW50SW5pdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IHt9O1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5nZXRJdGVtcygpO1xuICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+ICh0aGlzLnZhbHVlW3RoaXMuZ2V0SXRlbU5hbWUoaXRlbSldID0gaXRlbS52YWx1ZSkpO1xuICAgIGNvbnN0IG5ld1ZhbCA9IHt9O1xuICAgIE9iamVjdC5hc3NpZ24obmV3VmFsLCB0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm9uQ2hhbmdlKG5ld1ZhbCk7XG4gIH1cblxuICBvbkludGVybmFsQ2hhbmdlKGl0ZW06IEl0ZW1EYXRlSW5wdXREYXRhLCBpdGVtVmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW1OYW1lID0gdGhpcy5nZXRJdGVtTmFtZShpdGVtKTtcbiAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB7fTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy52YWx1ZVtpdGVtTmFtZV0gIT09IGl0ZW1WYWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZVtpdGVtTmFtZV0gPSBpdGVtVmFsdWUgPyAraXRlbVZhbHVlIDogdW5kZWZpbmVkO1xuICAgICAgY29uc3QgbmV3VmFsID0ge307XG4gICAgICBPYmplY3QuYXNzaWduKG5ld1ZhbCwgdGhpcy52YWx1ZSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKG5ld1ZhbCk7XG4gICAgICBpZiAoXG4gICAgICAgIGl0ZW0gaW5zdGFuY2VvZiBEYXRlSW5wdXREYXlDb21wb25lbnQgfHxcbiAgICAgICAgaXRlbSBpbnN0YW5jZW9mIERhdGVJbnB1dE1vbnRoQ29tcG9uZW50IHx8XG4gICAgICAgIGl0ZW0gaW5zdGFuY2VvZiBEYXRlSW5wdXRZZWFyQ29tcG9uZW50XG4gICAgICApIHtcbiAgICAgICAgaXRlbS52YWx1ZUNoYW5nZS5lbWl0KGl0ZW1WYWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLml0ZW1zKSB7XG4gICAgICAgIGl0ZW0udmFsdWUgPSBpdGVtVmFsdWU7XG4gICAgICAgIHRoaXMuaXRlbXNDaGFuZ2UuZW1pdCh0aGlzLml0ZW1zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYXNGaWVsZHNldCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoXG4gICAgICB0aGlzLmhhc0ZpZWxkc2V0Q29tcG9uZW50KCkgfHxcbiAgICAgIHRoaXMuaGFzTGVnZW5kQ29tcG9uZW50KCkgfHxcbiAgICAgIHRoaXMubGVnZW5kUmVmIHx8XG4gICAgICB0aGlzLmZpZWxkc2V0RGF0YSB8fFxuICAgICAgKHRoaXMubGVnZW5kRGF0YSAmJiAodGhpcy5sZWdlbmREYXRhLnRleHQgfHwgdGhpcy5sZWdlbmREYXRhLmh0bWwpKSB8fFxuICAgICAgdGhpcy5sZWdlbmRUZXh0XG4gICAgKTtcbiAgfVxuXG4gIGhhc0ZpZWxkc2V0Q29tcG9uZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZmllbGRzZXRDb21wb25lbnQ7XG4gIH1cblxuICBoYXNMZWdlbmRDb21wb25lbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5sZWdlbmRDb21wb25lbnQ7XG4gIH1cblxuICBoYXNFcnJvck1lc3NhZ2VDb21wb25lbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5lcnJvck1lc3NhZ2VDb21wb25lbnQ7XG4gIH1cblxuICBnZXRJdGVtTmFtZShpdGVtOiBJdGVtRGF0ZUlucHV0RGF0YSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubmFtZVByZWZpeCA/IHRoaXMubmFtZVByZWZpeCArICctJyArIGl0ZW0ubmFtZSA6IGl0ZW0ubmFtZTtcbiAgfVxuXG4gIGdldEl0ZW1MYWJlbChpdGVtOiBJdGVtRGF0ZUlucHV0RGF0YSk6IExhYmVsRGF0YSB7XG4gICAgbGV0IGxhYmVsRGF0YTogTGFiZWxEYXRhO1xuICAgIGlmIChpdGVtLmxhYmVsRGF0YSAmJiAoaXRlbS5sYWJlbERhdGEudGV4dCB8fCBpdGVtLmxhYmVsRGF0YS5odG1sKSkge1xuICAgICAgbGFiZWxEYXRhID0gaXRlbS5sYWJlbERhdGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhYmVsRGF0YSA9IHtcbiAgICAgICAgdGV4dDogaXRlbS5sYWJlbFRleHQgPyBpdGVtLmxhYmVsVGV4dCA6IGl0ZW0ubmFtZSA/IGl0ZW0ubmFtZS50b1VwcGVyQ2FzZSgpIDogbnVsbCxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBsYWJlbERhdGE7XG4gIH1cblxuICBnZXRJdGVtTGFiZWxSZWYoaXRlbTogSXRlbURhdGVJbnB1dERhdGEpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICByZXR1cm4gaXRlbSBpbnN0YW5jZW9mIERhdGVJbnB1dERheUNvbXBvbmVudCB8fFxuICAgICAgaXRlbSBpbnN0YW5jZW9mIERhdGVJbnB1dE1vbnRoQ29tcG9uZW50IHx8XG4gICAgICBpdGVtIGluc3RhbmNlb2YgRGF0ZUlucHV0WWVhckNvbXBvbmVudFxuICAgICAgPyBpdGVtLmxhYmVsUmVmXG4gICAgICA6IG51bGw7XG4gIH1cblxuICBnZXRJdGVtcygpOiBJdGVtRGF0ZUlucHV0RGF0YVtdIHtcbiAgICBsZXQgaXRlbXM7XG4gICAgaWYgKHRoaXMuZGF0ZUlucHV0SXRlbUNvbXBvbmVudHMgJiYgdGhpcy5kYXRlSW5wdXRJdGVtQ29tcG9uZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBpdGVtcyA9IHRoaXMuZGF0ZUlucHV0SXRlbUNvbXBvbmVudHMudG9BcnJheSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtcykge1xuICAgICAgaXRlbXMgPSB0aGlzLml0ZW1zO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb250ZW50SW5pdCkge1xuICAgICAgaXRlbXMgPSBEYXRlSW5wdXRDb21wb25lbnQuZGVmYXVsdEl0ZW1zO1xuICAgIH0gZWxzZSB7XG4gICAgICBpdGVtcyA9IFtdO1xuICAgIH1cblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIGdldEl0ZW1EaXZpZGVyVGVtcGxhdGUoaXRlbTogSXRlbURhdGVJbnB1dERhdGEpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICByZXR1cm4gaXRlbS5kaXZpZGVyIGluc3RhbmNlb2YgRGF0ZUlucHV0RGl2aWRlckNvbXBvbmVudCA/IGl0ZW0uZGl2aWRlci5kaXZpZGVyQ29udGVudCA6IG51bGw7XG4gIH1cbiAgZ2V0SXRlbURpdmlkZXJIdG1sKGl0ZW06IEl0ZW1EYXRlSW5wdXREYXRhKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaXRlbS5kaXZpZGVyLmh0bWwgPyBpdGVtLmRpdmlkZXIuaHRtbCA6IGA8cD4ke1N0cmluZ1V0aWxzLmVzY2FwZUh0bWwoaXRlbS5kaXZpZGVyLnRleHQpfTwvcD5gO1xuICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI2lubmVySHRtbD5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0hpbnRDb21wb25lbnQoKVwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImRlc3ktaGludFwiPjwvbmctY29udGVudD5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGFzSGludENvbXBvbmVudCgpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhpbnRSZWZcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8ZGVzeS1oaW50XG4gICAgICAqbmdJZj1cIiFoaW50UmVmICYmIGhpbnREYXRhXCJcbiAgICAgIFtpZF09XCJnZXRIaW50SWQoKVwiXG4gICAgICBbdGV4dF09XCJoaW50RGF0YS50ZXh0XCJcbiAgICAgIFtodG1sXT1cImhpbnREYXRhLmh0bWxcIlxuICAgICAgW2NsYXNzZXNdPVwiaGludERhdGEuY2xhc3Nlc1wiXG4gICAgICBbcm9sZV09XCJoaW50RGF0YS5yb2xlXCJcbiAgICAgIFthcmlhTGFiZWxdPVwiaGludERhdGEuYXJpYUxhYmVsXCJcbiAgICAgIFthcmlhRGVzY3JpYmVkQnldPVwiaGludERhdGEuYXJpYURlc2NyaWJlZEJ5XCJcbiAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJoaW50RGF0YS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICBbYXJpYUhpZGRlbl09XCJoaW50RGF0YS5hcmlhSGlkZGVuXCJcbiAgICAgIFthcmlhRGlzYWJsZWRdPVwiaGludERhdGEuYXJpYURpc2FibGVkXCJcbiAgICAgIFthcmlhQ29udHJvbHNdPVwiaGludERhdGEuYXJpYUNvbnRyb2xzXCJcbiAgICAgIFthcmlhQ3VycmVudF09XCJoaW50RGF0YS5hcmlhQ3VycmVudFwiXG4gICAgICBbYXJpYUxpdmVdPVwiaGludERhdGEuYXJpYUxpdmVcIlxuICAgICAgW2FyaWFFeHBhbmRlZF09XCJoaW50RGF0YS5hcmlhRXhwYW5kZWRcIlxuICAgICAgW2FyaWFFcnJvck1lc3NhZ2VdPVwiaGludERhdGEuYXJpYUVycm9yTWVzc2FnZVwiXG4gICAgICBbYXJpYUhhc1BvcHVwXT1cImhpbnREYXRhLmFyaWFIYXNQb3B1cFwiXG4gICAgICBbdGFiaW5kZXhdPVwiaGludERhdGEudGFiaW5kZXhcIj48L2Rlc3ktaGludD5cbiAgICA8ZGVzeS1oaW50XG4gICAgICAqbmdJZj1cIiFoaW50UmVmICYmICFoaW50RGF0YSAmJiBoaW50VGV4dFwiXG4gICAgICBbdGV4dF09XCJoaW50VGV4dFwiXG4gICAgICBbaWRdPVwiZ2V0SGludElkKClcIj48L2Rlc3ktaGludD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0Vycm9yTWVzc2FnZUNvbXBvbmVudCgpXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGVzeS1lcnJvci1tZXNzYWdlXCI+PC9uZy1jb250ZW50PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoYXNFcnJvck1lc3NhZ2VDb21wb25lbnQoKVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlcnJvck1lc3NhZ2VSZWZcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8ZGVzeS1lcnJvci1tZXNzYWdlXG4gICAgICAqbmdJZj1cIiFlcnJvck1lc3NhZ2VSZWYgJiYgZXJyb3JNZXNzYWdlRGF0YVwiXG4gICAgICBbaWRdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICAgIFt0ZXh0XT1cImVycm9yTWVzc2FnZURhdGEudGV4dFwiXG4gICAgICBbaHRtbF09XCJlcnJvck1lc3NhZ2VEYXRhLmh0bWxcIlxuICAgICAgW2NsYXNzZXNdPVwiZXJyb3JNZXNzYWdlRGF0YS5jbGFzc2VzXCJcbiAgICAgIFt2aXN1YWxseUhpZGRlblRleHRdPVwiZXJyb3JNZXNzYWdlRGF0YS52aXN1YWxseUhpZGRlblRleHRcIlxuICAgICAgW3JvbGVdPVwiZXJyb3JNZXNzYWdlRGF0YS5yb2xlXCJcbiAgICAgIFthcmlhTGFiZWxdPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhTGFiZWxcIlxuICAgICAgW2FyaWFEZXNjcmliZWRCeV09XCJlcnJvck1lc3NhZ2VEYXRhLmFyaWFEZXNjcmliZWRCeVwiXG4gICAgICBbYXJpYUxhYmVsbGVkQnldPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICBbYXJpYUhpZGRlbl09XCJlcnJvck1lc3NhZ2VEYXRhLmFyaWFIaWRkZW5cIlxuICAgICAgW2FyaWFEaXNhYmxlZF09XCJlcnJvck1lc3NhZ2VEYXRhLmFyaWFEaXNhYmxlZFwiXG4gICAgICBbYXJpYUNvbnRyb2xzXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUNvbnRyb2xzXCJcbiAgICAgIFthcmlhQ3VycmVudF09XCJlcnJvck1lc3NhZ2VEYXRhLmFyaWFDdXJyZW50XCJcbiAgICAgIFthcmlhTGl2ZV09XCJlcnJvck1lc3NhZ2VEYXRhLmFyaWFMaXZlXCJcbiAgICAgIFthcmlhRXhwYW5kZWRdPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhRXhwYW5kZWRcIlxuICAgICAgW2FyaWFFcnJvck1lc3NhZ2VdPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhRXJyb3JNZXNzYWdlXCJcbiAgICAgIFthcmlhSGFzUG9wdXBdPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhSGFzUG9wdXBcIlxuICAgICAgW3RhYmluZGV4XT1cImVycm9yTWVzc2FnZURhdGEudGFiaW5kZXhcIj48L2Rlc3ktZXJyb3ItbWVzc2FnZT5cbiAgICA8ZGVzeS1lcnJvci1tZXNzYWdlXG4gICAgICAqbmdJZj1cIiFlcnJvck1lc3NhZ2VSZWYgJiYgIWVycm9yTWVzc2FnZURhdGEgJiYgZXJyb3JNZXNzYWdlVGV4dFwiXG4gICAgICBbdGV4dF09XCJlcnJvck1lc3NhZ2VUZXh0XCJcbiAgICAgIFtpZF09XCJnZXRFcnJvcklkKClcIj48L2Rlc3ktZXJyb3ItbWVzc2FnZT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBXaXRoIHJlYWN0aXZlIGZvcm1zIC0tPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJjb250cm9sQ29udGFpbmVyICYmICFuZ01vZGVsR3JvdXBcIlxuICAgIFtmb3JtR3JvdXBdPVwib2dGb3JtR3JvdXBcIlxuICAgIFtjbGFzc109XCJbJ2ZsZXgnLCBjbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgW2F0dHIuaWRdPVwiaWQgPyBpZCA6IG51bGxcIlxuICAgIFtkZXN5QXBwQWNjZXNzaWJpbGl0eV09XCJ0aGlzXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXRJdGVtcygpOyBpbmRleCBhcyBpXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5kaXZpZGVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICByb2xlPVwic2VwYXJhdG9yXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJpdGVtLmRpdmlkZXIuY2xhc3Nlc1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwie1xuICAgICAgICAgICAgICB0ZW1wbGF0ZTogZ2V0SXRlbURpdmlkZXJUZW1wbGF0ZShpdGVtKSxcbiAgICAgICAgICAgICAgaHRtbDogZ2V0SXRlbURpdmlkZXJIdG1sKGl0ZW0pLFxuICAgICAgICAgICAgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtLmRpdmlkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yLWJhc2VcIj5cbiAgICAgICAgICA8ZGVzeS1pbnB1dFxuICAgICAgICAgICAgW2xhYmVsRGF0YV09XCJnZXRJdGVtTGFiZWwoaXRlbSlcIlxuICAgICAgICAgICAgW2xhYmVsUmVmXT1cImdldEl0ZW1MYWJlbFJlZihpdGVtKVwiXG4gICAgICAgICAgICBbaWRdPVwiaXRlbS5pZCA/IGl0ZW0uaWQgOiBpZCArICctJyArIGl0ZW0ubmFtZVwiXG4gICAgICAgICAgICBbY2xhc3Nlc109XCJbJ21iLTAnLCBpdGVtLmNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgICAgIFtlcnJvcklkXT1cIml0ZW0uaGFzRXJyb3JzID8gZ2V0RXJyb3JJZCgpIDogbnVsbFwiXG4gICAgICAgICAgICBbbmFtZV09XCJnZXRJdGVtTmFtZShpdGVtKVwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImdldEl0ZW1OYW1lKGl0ZW0pXCJcbiAgICAgICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICBbaW5wdXRtb2RlXT1cIidudW1lcmljJ1wiXG4gICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIml0ZW0uYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgIFtwYXR0ZXJuXT1cIml0ZW0ucGF0dGVybiA/IGl0ZW0ucGF0dGVybiA6ICdbMC05XSonXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpdGVtLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFttYXhsZW5ndGhdPVwiaXRlbS5tYXhsZW5ndGhcIlxuICAgICAgICAgICAgW3JvbGVdPVwiaXRlbS5yb2xlXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiaXRlbS5hcmlhTGFiZWxcIlxuICAgICAgICAgICAgW2FyaWFEZXNjcmliZWRCeV09XCJpdGVtLmFyaWFEZXNjcmliZWRCeVwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwiaXRlbS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICBbYXJpYUhpZGRlbl09XCJpdGVtLmFyaWFIaWRkZW5cIlxuICAgICAgICAgICAgW2FyaWFEaXNhYmxlZF09XCJpdGVtLmFyaWFEaXNhYmxlZFwiXG4gICAgICAgICAgICBbYXJpYUNvbnRyb2xzXT1cIml0ZW0uYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgIFthcmlhQ3VycmVudF09XCJpdGVtLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICAgIFthcmlhTGl2ZV09XCJpdGVtLmFyaWFMaXZlXCJcbiAgICAgICAgICAgIFthcmlhRXhwYW5kZWRdPVwiaXRlbS5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgW2FyaWFFcnJvck1lc3NhZ2VdPVwiaXRlbS5hcmlhRXJyb3JNZXNzYWdlXCJcbiAgICAgICAgICAgIFthcmlhSGFzUG9wdXBdPVwiaXRlbS5hcmlhSGFzUG9wdXBcIlxuICAgICAgICAgICAgW3RhYmluZGV4XT1cIml0ZW0udGFiaW5kZXhcIlxuICAgICAgICAgICAgW2FyaWFNb2RhbF09XCJpdGVtLmFyaWFNb2RhbFwiXG4gICAgICAgICAgICBbYXJpYUNoZWNrZWRdPVwiaXRlbS5hcmlhQ2hlY2tlZFwiXG4gICAgICAgICAgICBbYXJpYVByZXNzZWRdPVwiaXRlbS5hcmlhUHJlc3NlZFwiXG4gICAgICAgICAgICBbYXJpYVJlYWRvbmx5XT1cIml0ZW0uYXJpYVJlYWRvbmx5XCJcbiAgICAgICAgICAgIFthcmlhUmVxdWlyZWRdPVwiaXRlbS5hcmlhUmVxdWlyZWRcIlxuICAgICAgICAgICAgW2FyaWFTZWxlY3RlZF09XCJpdGVtLmFyaWFTZWxlY3RlZFwiXG4gICAgICAgICAgICBbYXJpYVZhbHVlbWluXT1cIml0ZW0uYXJpYVZhbHVlbWluXCJcbiAgICAgICAgICAgIFthcmlhVmFsdWVtYXhdPVwiaXRlbS5hcmlhVmFsdWVtYXhcIlxuICAgICAgICAgICAgW2FyaWFWYWx1ZW5vd109XCJpdGVtLmFyaWFWYWx1ZW5vd1wiXG4gICAgICAgICAgICBbYXJpYVZhbHVldGV4dF09XCJpdGVtLmFyaWFWYWx1ZXRleHRcIlxuICAgICAgICAgICAgW2FyaWFPcmllbnRhdGlvbl09XCJpdGVtLmFyaWFPcmllbnRhdGlvblwiXG4gICAgICAgICAgICBbYXJpYUxldmVsXT1cIml0ZW0uYXJpYUxldmVsXCJcbiAgICAgICAgICAgIFthcmlhTXVsdGlzZWxlY3RhYmxlXT1cIml0ZW0uYXJpYU11bHRpc2VsZWN0YWJsZVwiXG4gICAgICAgICAgICBbYXJpYVBsYWNlaG9sZGVyXT1cIml0ZW0uYXJpYVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFthcmlhUG9zaW5zZXRdPVwiaXRlbS5hcmlhUG9zaW5zZXRcIlxuICAgICAgICAgICAgW2FyaWFTZXRzaXplXT1cIml0ZW0uYXJpYVNldHNpemVcIlxuICAgICAgICAgICAgW2FyaWFTb3J0XT1cIml0ZW0uYXJpYVNvcnRcIlxuICAgICAgICAgICAgW2FyaWFCdXN5XT1cIml0ZW0uYXJpYUJ1c3lcIlxuICAgICAgICAgICAgW2FyaWFEcm9wZWZmZWN0XT1cIml0ZW0uYXJpYURyb3BlZmZlY3RcIlxuICAgICAgICAgICAgW2FyaWFHcmFiYmVkXT1cIml0ZW0uYXJpYUdyYWJiZWRcIlxuICAgICAgICAgICAgW2FyaWFBY3RpdmVkZXNjZW5kYW50XT1cIml0ZW0uYXJpYUFjdGl2ZWRlc2NlbmRhbnRcIlxuICAgICAgICAgICAgW2FyaWFBdG9taWNdPVwiaXRlbS5hcmlhQXRvbWljXCJcbiAgICAgICAgICAgIFthcmlhQXV0b2NvbXBsZXRlXT1cIml0ZW0uYXJpYUF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICBbYXJpYUJyYWlsbGVsYWJlbF09XCJpdGVtLmFyaWFCcmFpbGxlbGFiZWxcIlxuICAgICAgICAgICAgW2FyaWFCcmFpbGxlcm9sZWRlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYUJyYWlsbGVyb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgW2FyaWFDb2xjb3VudF09XCJpdGVtLmFyaWFDb2xjb3VudFwiXG4gICAgICAgICAgICBbYXJpYUNvbGluZGV4XT1cIml0ZW0uYXJpYUNvbGluZGV4XCJcbiAgICAgICAgICAgIFthcmlhQ29saW5kZXh0ZXh0XT1cIml0ZW0uYXJpYUNvbGluZGV4dGV4dFwiXG4gICAgICAgICAgICBbYXJpYUNvbHNwYW5dPVwiaXRlbS5hcmlhQ29sc3BhblwiXG4gICAgICAgICAgICBbYXJpYURlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYURlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIFthcmlhRGV0YWlsc109XCJpdGVtLmFyaWFEZXRhaWxzXCJcbiAgICAgICAgICAgIFthcmlhRmxvd3RvXT1cIml0ZW0uYXJpYUZsb3d0b1wiXG4gICAgICAgICAgICBbYXJpYUludmFsaWRdPVwiaXRlbS5hcmlhSW52YWxpZFwiXG4gICAgICAgICAgICBbYXJpYUtleXNob3J0Y3V0c109XCJpdGVtLmFyaWFLZXlzaG9ydGN1dHNcIlxuICAgICAgICAgICAgW2FyaWFPd25zXT1cIml0ZW0uYXJpYU93bnNcIlxuICAgICAgICAgICAgW2FyaWFSZWxldmFudF09XCJpdGVtLmFyaWFSZWxldmFudFwiXG4gICAgICAgICAgICBbYXJpYVJvbGVkZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFSb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgW2FyaWFSb3djb3VudF09XCJpdGVtLmFyaWFSb3djb3VudFwiXG4gICAgICAgICAgICBbYXJpYVJvd2luZGV4XT1cIml0ZW0uYXJpYVJvd2luZGV4XCJcbiAgICAgICAgICAgIFthcmlhUm93aW5kZXh0ZXh0XT1cIml0ZW0uYXJpYVJvd2luZGV4dGV4dFwiXG4gICAgICAgICAgICBbYXJpYVJvd3NwYW5dPVwiaXRlbS5hcmlhUm93c3BhblwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiaXRlbS50aXRsZVwiXG4gICAgICAgICAgICBbYWx0XT1cIml0ZW0uYWx0XCJcbiAgICAgICAgICAgIFtsYW5nXT1cIml0ZW0ubGFuZ1wiXG4gICAgICAgICAgICBbYWNjZXNza2V5XT1cIml0ZW0uYWNjZXNza2V5XCJcbiAgICAgICAgICAgIFthdXRvZm9jdXNdPVwiaXRlbS5hdXRvZm9jdXNcIlxuICAgICAgICAgICAgW2NvbnRlbnRlZGl0YWJsZV09XCJpdGVtLmNvbnRlbnRlZGl0YWJsZVwiXG4gICAgICAgICAgICBbZGlyXT1cIml0ZW0uZGlyXCJcbiAgICAgICAgICAgIFtkcmFnZ2FibGVdPVwiaXRlbS5kcmFnZ2FibGVcIlxuICAgICAgICAgICAgW2VudGVya2V5aGludF09XCJpdGVtLmVudGVya2V5aGludFwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cIml0ZW0uaGlkZGVuXCJcbiAgICAgICAgICAgIFtzcGVsbGNoZWNrXT1cIml0ZW0uc3BlbGxjaGVja1wiXG4gICAgICAgICAgICBbdHJhbnNsYXRlXT1cIml0ZW0udHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFthcmlhTXVsdGlsaW5lXT1cIml0ZW0uYXJpYU11bHRpbGluZVwiXG4gICAgICAgICAgICBbZm9yXT1cIml0ZW0uZm9yXCJcbiAgICAgICAgICAgIFtmb3JtXT1cIml0ZW0uZm9ybVwiXG4gICAgICAgICAgICBbaGVhZGVyc109XCJpdGVtLmhlYWRlcnNcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cIml0ZW0ucmVhZG9ubHlcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cIml0ZW0ucmVxdWlyZWRcIj48L2Rlc3ktaW5wdXQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVGVtcGxhdGUtZHJpdmVuIGZvcm1zIC0tPlxuICA8ZGVzeS10ZW1wbGF0ZS1kcml2ZW4td3JhcHBlciAqbmdJZj1cImNvbnRyb2xDb250YWluZXIgJiYgbmdNb2RlbEdyb3VwXCI+XG4gICAgPGRpdlxuICAgICAgW25nTW9kZWxHcm91cF09XCJuZ01vZGVsR3JvdXBcIlxuICAgICAgW2NsYXNzXT1cIlsnZmxleCcsIGNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgIFthdHRyLmlkXT1cImlkID8gaWQgOiBudWxsXCJcbiAgICAgIFtkZXN5QXBwQWNjZXNzaWJpbGl0eV09XCJ0aGlzXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldEl0ZW1zKCk7IGluZGV4IGFzIGlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uZGl2aWRlclwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHJvbGU9XCJzZXBhcmF0b3JcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5kaXZpZGVyLmNsYXNzZXNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7XG4gICAgICAgICAgICAgICAgdGVtcGxhdGU6IGdldEl0ZW1EaXZpZGVyVGVtcGxhdGUoaXRlbSksXG4gICAgICAgICAgICAgICAgaHRtbDogZ2V0SXRlbURpdmlkZXJIdG1sKGl0ZW0pLFxuICAgICAgICAgICAgICB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0uZGl2aWRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtci1iYXNlXCI+XG4gICAgICAgICAgICA8ZGVzeS1pbnB1dFxuICAgICAgICAgICAgICBbbGFiZWxEYXRhXT1cImdldEl0ZW1MYWJlbChpdGVtKVwiXG4gICAgICAgICAgICAgIFtsYWJlbFJlZl09XCJnZXRJdGVtTGFiZWxSZWYoaXRlbSlcIlxuICAgICAgICAgICAgICBbaWRdPVwiaXRlbS5pZCA/IGl0ZW0uaWQgOiBpZCArICctJyArIGl0ZW0ubmFtZVwiXG4gICAgICAgICAgICAgIFtjbGFzc2VzXT1cIlsnbWItMCcsIGl0ZW0uY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIlxuICAgICAgICAgICAgICBbZXJyb3JJZF09XCJpdGVtLmhhc0Vycm9ycyA/IGdldEVycm9ySWQoKSA6IG51bGxcIlxuICAgICAgICAgICAgICBbbmFtZV09XCJnZXRJdGVtTmFtZShpdGVtKVwiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkludGVybmFsQ2hhbmdlKGl0ZW0sICskZXZlbnQpXCJcbiAgICAgICAgICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICAgICAgW2lucHV0bW9kZV09XCInbnVtZXJpYydcIlxuICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIml0ZW0uYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgW3BhdHRlcm5dPVwiaXRlbS5wYXR0ZXJuID8gaXRlbS5wYXR0ZXJuIDogJ1swLTldKidcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpdGVtLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgW21heGxlbmd0aF09XCJpdGVtLm1heGxlbmd0aFwiXG4gICAgICAgICAgICAgIFtyb2xlXT1cIml0ZW0ucm9sZVwiXG4gICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiaXRlbS5hcmlhTGFiZWxcIlxuICAgICAgICAgICAgICBbYXJpYURlc2NyaWJlZEJ5XT1cIml0ZW0uYXJpYURlc2NyaWJlZEJ5XCJcbiAgICAgICAgICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cIml0ZW0uYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICBbYXJpYUhpZGRlbl09XCJpdGVtLmFyaWFIaWRkZW5cIlxuICAgICAgICAgICAgICBbYXJpYURpc2FibGVkXT1cIml0ZW0uYXJpYURpc2FibGVkXCJcbiAgICAgICAgICAgICAgW2FyaWFDb250cm9sc109XCJpdGVtLmFyaWFDb250cm9sc1wiXG4gICAgICAgICAgICAgIFthcmlhQ3VycmVudF09XCJpdGVtLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICAgICAgW2FyaWFMaXZlXT1cIml0ZW0uYXJpYUxpdmVcIlxuICAgICAgICAgICAgICBbYXJpYUV4cGFuZGVkXT1cIml0ZW0uYXJpYUV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgW2FyaWFFcnJvck1lc3NhZ2VdPVwiaXRlbS5hcmlhRXJyb3JNZXNzYWdlXCJcbiAgICAgICAgICAgICAgW2FyaWFIYXNQb3B1cF09XCJpdGVtLmFyaWFIYXNQb3B1cFwiXG4gICAgICAgICAgICAgIFt0YWJpbmRleF09XCJpdGVtLnRhYmluZGV4XCJcbiAgICAgICAgICAgICAgW2FyaWFNb2RhbF09XCJpdGVtLmFyaWFNb2RhbFwiXG4gICAgICAgICAgICAgIFthcmlhQ2hlY2tlZF09XCJpdGVtLmFyaWFDaGVja2VkXCJcbiAgICAgICAgICAgICAgW2FyaWFQcmVzc2VkXT1cIml0ZW0uYXJpYVByZXNzZWRcIlxuICAgICAgICAgICAgICBbYXJpYVJlYWRvbmx5XT1cIml0ZW0uYXJpYVJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgW2FyaWFSZXF1aXJlZF09XCJpdGVtLmFyaWFSZXF1aXJlZFwiXG4gICAgICAgICAgICAgIFthcmlhU2VsZWN0ZWRdPVwiaXRlbS5hcmlhU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICBbYXJpYVZhbHVlbWluXT1cIml0ZW0uYXJpYVZhbHVlbWluXCJcbiAgICAgICAgICAgICAgW2FyaWFWYWx1ZW1heF09XCJpdGVtLmFyaWFWYWx1ZW1heFwiXG4gICAgICAgICAgICAgIFthcmlhVmFsdWVub3ddPVwiaXRlbS5hcmlhVmFsdWVub3dcIlxuICAgICAgICAgICAgICBbYXJpYVZhbHVldGV4dF09XCJpdGVtLmFyaWFWYWx1ZXRleHRcIlxuICAgICAgICAgICAgICBbYXJpYU9yaWVudGF0aW9uXT1cIml0ZW0uYXJpYU9yaWVudGF0aW9uXCJcbiAgICAgICAgICAgICAgW2FyaWFMZXZlbF09XCJpdGVtLmFyaWFMZXZlbFwiXG4gICAgICAgICAgICAgIFthcmlhTXVsdGlzZWxlY3RhYmxlXT1cIml0ZW0uYXJpYU11bHRpc2VsZWN0YWJsZVwiXG4gICAgICAgICAgICAgIFthcmlhUGxhY2Vob2xkZXJdPVwiaXRlbS5hcmlhUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICBbYXJpYVBvc2luc2V0XT1cIml0ZW0uYXJpYVBvc2luc2V0XCJcbiAgICAgICAgICAgICAgW2FyaWFTZXRzaXplXT1cIml0ZW0uYXJpYVNldHNpemVcIlxuICAgICAgICAgICAgICBbYXJpYVNvcnRdPVwiaXRlbS5hcmlhU29ydFwiXG4gICAgICAgICAgICAgIFthcmlhQnVzeV09XCJpdGVtLmFyaWFCdXN5XCJcbiAgICAgICAgICAgICAgW2FyaWFEcm9wZWZmZWN0XT1cIml0ZW0uYXJpYURyb3BlZmZlY3RcIlxuICAgICAgICAgICAgICBbYXJpYUdyYWJiZWRdPVwiaXRlbS5hcmlhR3JhYmJlZFwiXG4gICAgICAgICAgICAgIFthcmlhQWN0aXZlZGVzY2VuZGFudF09XCJpdGVtLmFyaWFBY3RpdmVkZXNjZW5kYW50XCJcbiAgICAgICAgICAgICAgW2FyaWFBdG9taWNdPVwiaXRlbS5hcmlhQXRvbWljXCJcbiAgICAgICAgICAgICAgW2FyaWFBdXRvY29tcGxldGVdPVwiaXRlbS5hcmlhQXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgW2FyaWFCcmFpbGxlbGFiZWxdPVwiaXRlbS5hcmlhQnJhaWxsZWxhYmVsXCJcbiAgICAgICAgICAgICAgW2FyaWFCcmFpbGxlcm9sZWRlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYUJyYWlsbGVyb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICBbYXJpYUNvbGNvdW50XT1cIml0ZW0uYXJpYUNvbGNvdW50XCJcbiAgICAgICAgICAgICAgW2FyaWFDb2xpbmRleF09XCJpdGVtLmFyaWFDb2xpbmRleFwiXG4gICAgICAgICAgICAgIFthcmlhQ29saW5kZXh0ZXh0XT1cIml0ZW0uYXJpYUNvbGluZGV4dGV4dFwiXG4gICAgICAgICAgICAgIFthcmlhQ29sc3Bhbl09XCJpdGVtLmFyaWFDb2xzcGFuXCJcbiAgICAgICAgICAgICAgW2FyaWFEZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgIFthcmlhRGV0YWlsc109XCJpdGVtLmFyaWFEZXRhaWxzXCJcbiAgICAgICAgICAgICAgW2FyaWFGbG93dG9dPVwiaXRlbS5hcmlhRmxvd3RvXCJcbiAgICAgICAgICAgICAgW2FyaWFJbnZhbGlkXT1cIml0ZW0uYXJpYUludmFsaWRcIlxuICAgICAgICAgICAgICBbYXJpYUtleXNob3J0Y3V0c109XCJpdGVtLmFyaWFLZXlzaG9ydGN1dHNcIlxuICAgICAgICAgICAgICBbYXJpYU93bnNdPVwiaXRlbS5hcmlhT3duc1wiXG4gICAgICAgICAgICAgIFthcmlhUmVsZXZhbnRdPVwiaXRlbS5hcmlhUmVsZXZhbnRcIlxuICAgICAgICAgICAgICBbYXJpYVJvbGVkZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFSb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICBbYXJpYVJvd2NvdW50XT1cIml0ZW0uYXJpYVJvd2NvdW50XCJcbiAgICAgICAgICAgICAgW2FyaWFSb3dpbmRleF09XCJpdGVtLmFyaWFSb3dpbmRleFwiXG4gICAgICAgICAgICAgIFthcmlhUm93aW5kZXh0ZXh0XT1cIml0ZW0uYXJpYVJvd2luZGV4dGV4dFwiXG4gICAgICAgICAgICAgIFthcmlhUm93c3Bhbl09XCJpdGVtLmFyaWFSb3dzcGFuXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW0udGl0bGVcIlxuICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0uYWx0XCJcbiAgICAgICAgICAgICAgW2xhbmddPVwiaXRlbS5sYW5nXCJcbiAgICAgICAgICAgICAgW2FjY2Vzc2tleV09XCJpdGVtLmFjY2Vzc2tleVwiXG4gICAgICAgICAgICAgIFthdXRvZm9jdXNdPVwiaXRlbS5hdXRvZm9jdXNcIlxuICAgICAgICAgICAgICBbY29udGVudGVkaXRhYmxlXT1cIml0ZW0uY29udGVudGVkaXRhYmxlXCJcbiAgICAgICAgICAgICAgW2Rpcl09XCJpdGVtLmRpclwiXG4gICAgICAgICAgICAgIFtkcmFnZ2FibGVdPVwiaXRlbS5kcmFnZ2FibGVcIlxuICAgICAgICAgICAgICBbZW50ZXJrZXloaW50XT1cIml0ZW0uZW50ZXJrZXloaW50XCJcbiAgICAgICAgICAgICAgW2hpZGRlbl09XCJpdGVtLmhpZGRlblwiXG4gICAgICAgICAgICAgIFtzcGVsbGNoZWNrXT1cIml0ZW0uc3BlbGxjaGVja1wiXG4gICAgICAgICAgICAgIFt0cmFuc2xhdGVdPVwiaXRlbS50cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbYXJpYU11bHRpbGluZV09XCJpdGVtLmFyaWFNdWx0aWxpbmVcIlxuICAgICAgICAgICAgICBbZm9yXT1cIml0ZW0uZm9yXCJcbiAgICAgICAgICAgICAgW2Zvcm1dPVwiaXRlbS5mb3JtXCJcbiAgICAgICAgICAgICAgW2hlYWRlcnNdPVwiaXRlbS5oZWFkZXJzXCJcbiAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIml0ZW0ucmVhZG9ubHlcIlxuICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXRlbS5yZXF1aXJlZFwiPjwvZGVzeS1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kZXN5LXRlbXBsYXRlLWRyaXZlbi13cmFwcGVyPlxuXG4gIDwhLS0gV2l0aCBuZ01vZGVsLS0+XG4gIDxkaXZcbiAgICAqbmdJZj1cIiFjb250cm9sQ29udGFpbmVyXCJcbiAgICBbY2xhc3NdPVwiWydmbGV4JywgY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIlxuICAgIFthdHRyLmlkXT1cImlkID8gaWQgOiBudWxsXCJcbiAgICBbZGVzeUFwcEFjY2Vzc2liaWxpdHldPVwidGhpc1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0SXRlbXMoKTsgaW5kZXggYXMgaVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uZGl2aWRlclwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgcm9sZT1cInNlcGFyYXRvclwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5kaXZpZGVyLmNsYXNzZXNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cIntcbiAgICAgICAgICAgICAgdGVtcGxhdGU6IGdldEl0ZW1EaXZpZGVyVGVtcGxhdGUoaXRlbSksXG4gICAgICAgICAgICAgIGh0bWw6IGdldEl0ZW1EaXZpZGVySHRtbChpdGVtKSxcbiAgICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS5kaXZpZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtci1iYXNlXCI+XG4gICAgICAgICAgPGRlc3ktaW5wdXRcbiAgICAgICAgICAgIFtsYWJlbERhdGFdPVwiZ2V0SXRlbUxhYmVsKGl0ZW0pXCJcbiAgICAgICAgICAgIFtsYWJlbFJlZl09XCJnZXRJdGVtTGFiZWxSZWYoaXRlbSlcIlxuICAgICAgICAgICAgW2lkXT1cIml0ZW0uaWQgPyBpdGVtLmlkIDogaWQgKyAnLScgKyBpdGVtLm5hbWVcIlxuICAgICAgICAgICAgW2NsYXNzZXNdPVwiWydtYi0wJywgaXRlbS5jbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICAgICBbZXJyb3JJZF09XCJpdGVtLmhhc0Vycm9ycyA/IGdldEVycm9ySWQoKSA6IG51bGxcIlxuICAgICAgICAgICAgW25hbWVdPVwiZ2V0SXRlbU5hbWUoaXRlbSlcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkludGVybmFsQ2hhbmdlKGl0ZW0sICskZXZlbnQpXCJcbiAgICAgICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICBbaW5wdXRtb2RlXT1cIidudW1lcmljJ1wiXG4gICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIml0ZW0uYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgIFtwYXR0ZXJuXT1cIml0ZW0ucGF0dGVybiA/IGl0ZW0ucGF0dGVybiA6ICdbMC05XSonXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpdGVtLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFttYXhsZW5ndGhdPVwiaXRlbS5tYXhsZW5ndGhcIlxuICAgICAgICAgICAgW3JvbGVdPVwiaXRlbS5yb2xlXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiaXRlbS5hcmlhTGFiZWxcIlxuICAgICAgICAgICAgW2FyaWFEZXNjcmliZWRCeV09XCJpdGVtLmFyaWFEZXNjcmliZWRCeVwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwiaXRlbS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICBbYXJpYUhpZGRlbl09XCJpdGVtLmFyaWFIaWRkZW5cIlxuICAgICAgICAgICAgW2FyaWFEaXNhYmxlZF09XCJpdGVtLmFyaWFEaXNhYmxlZFwiXG4gICAgICAgICAgICBbYXJpYUNvbnRyb2xzXT1cIml0ZW0uYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgIFthcmlhQ3VycmVudF09XCJpdGVtLmFyaWFDdXJyZW50XCJcbiAgICAgICAgICAgIFthcmlhTGl2ZV09XCJpdGVtLmFyaWFMaXZlXCJcbiAgICAgICAgICAgIFthcmlhRXhwYW5kZWRdPVwiaXRlbS5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgW2FyaWFFcnJvck1lc3NhZ2VdPVwiaXRlbS5hcmlhRXJyb3JNZXNzYWdlXCJcbiAgICAgICAgICAgIFthcmlhSGFzUG9wdXBdPVwiaXRlbS5hcmlhSGFzUG9wdXBcIlxuICAgICAgICAgICAgW3RhYmluZGV4XT1cIml0ZW0udGFiaW5kZXhcIlxuICAgICAgICAgICAgW2FyaWFNb2RhbF09XCJpdGVtLmFyaWFNb2RhbFwiXG4gICAgICAgICAgICBbYXJpYUNoZWNrZWRdPVwiaXRlbS5hcmlhQ2hlY2tlZFwiXG4gICAgICAgICAgICBbYXJpYVByZXNzZWRdPVwiaXRlbS5hcmlhUHJlc3NlZFwiXG4gICAgICAgICAgICBbYXJpYVJlYWRvbmx5XT1cIml0ZW0uYXJpYVJlYWRvbmx5XCJcbiAgICAgICAgICAgIFthcmlhUmVxdWlyZWRdPVwiaXRlbS5hcmlhUmVxdWlyZWRcIlxuICAgICAgICAgICAgW2FyaWFTZWxlY3RlZF09XCJpdGVtLmFyaWFTZWxlY3RlZFwiXG4gICAgICAgICAgICBbYXJpYVZhbHVlbWluXT1cIml0ZW0uYXJpYVZhbHVlbWluXCJcbiAgICAgICAgICAgIFthcmlhVmFsdWVtYXhdPVwiaXRlbS5hcmlhVmFsdWVtYXhcIlxuICAgICAgICAgICAgW2FyaWFWYWx1ZW5vd109XCJpdGVtLmFyaWFWYWx1ZW5vd1wiXG4gICAgICAgICAgICBbYXJpYVZhbHVldGV4dF09XCJpdGVtLmFyaWFWYWx1ZXRleHRcIlxuICAgICAgICAgICAgW2FyaWFPcmllbnRhdGlvbl09XCJpdGVtLmFyaWFPcmllbnRhdGlvblwiXG4gICAgICAgICAgICBbYXJpYUxldmVsXT1cIml0ZW0uYXJpYUxldmVsXCJcbiAgICAgICAgICAgIFthcmlhTXVsdGlzZWxlY3RhYmxlXT1cIml0ZW0uYXJpYU11bHRpc2VsZWN0YWJsZVwiXG4gICAgICAgICAgICBbYXJpYVBsYWNlaG9sZGVyXT1cIml0ZW0uYXJpYVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFthcmlhUG9zaW5zZXRdPVwiaXRlbS5hcmlhUG9zaW5zZXRcIlxuICAgICAgICAgICAgW2FyaWFTZXRzaXplXT1cIml0ZW0uYXJpYVNldHNpemVcIlxuICAgICAgICAgICAgW2FyaWFTb3J0XT1cIml0ZW0uYXJpYVNvcnRcIlxuICAgICAgICAgICAgW2FyaWFCdXN5XT1cIml0ZW0uYXJpYUJ1c3lcIlxuICAgICAgICAgICAgW2FyaWFEcm9wZWZmZWN0XT1cIml0ZW0uYXJpYURyb3BlZmZlY3RcIlxuICAgICAgICAgICAgW2FyaWFHcmFiYmVkXT1cIml0ZW0uYXJpYUdyYWJiZWRcIlxuICAgICAgICAgICAgW2FyaWFBY3RpdmVkZXNjZW5kYW50XT1cIml0ZW0uYXJpYUFjdGl2ZWRlc2NlbmRhbnRcIlxuICAgICAgICAgICAgW2FyaWFBdG9taWNdPVwiaXRlbS5hcmlhQXRvbWljXCJcbiAgICAgICAgICAgIFthcmlhQXV0b2NvbXBsZXRlXT1cIml0ZW0uYXJpYUF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICBbYXJpYUJyYWlsbGVsYWJlbF09XCJpdGVtLmFyaWFCcmFpbGxlbGFiZWxcIlxuICAgICAgICAgICAgW2FyaWFCcmFpbGxlcm9sZWRlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYUJyYWlsbGVyb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgW2FyaWFDb2xjb3VudF09XCJpdGVtLmFyaWFDb2xjb3VudFwiXG4gICAgICAgICAgICBbYXJpYUNvbGluZGV4XT1cIml0ZW0uYXJpYUNvbGluZGV4XCJcbiAgICAgICAgICAgIFthcmlhQ29saW5kZXh0ZXh0XT1cIml0ZW0uYXJpYUNvbGluZGV4dGV4dFwiXG4gICAgICAgICAgICBbYXJpYUNvbHNwYW5dPVwiaXRlbS5hcmlhQ29sc3BhblwiXG4gICAgICAgICAgICBbYXJpYURlc2NyaXB0aW9uXT1cIml0ZW0uYXJpYURlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIFthcmlhRGV0YWlsc109XCJpdGVtLmFyaWFEZXRhaWxzXCJcbiAgICAgICAgICAgIFthcmlhRmxvd3RvXT1cIml0ZW0uYXJpYUZsb3d0b1wiXG4gICAgICAgICAgICBbYXJpYUludmFsaWRdPVwiaXRlbS5hcmlhSW52YWxpZFwiXG4gICAgICAgICAgICBbYXJpYUtleXNob3J0Y3V0c109XCJpdGVtLmFyaWFLZXlzaG9ydGN1dHNcIlxuICAgICAgICAgICAgW2FyaWFPd25zXT1cIml0ZW0uYXJpYU93bnNcIlxuICAgICAgICAgICAgW2FyaWFSZWxldmFudF09XCJpdGVtLmFyaWFSZWxldmFudFwiXG4gICAgICAgICAgICBbYXJpYVJvbGVkZXNjcmlwdGlvbl09XCJpdGVtLmFyaWFSb2xlZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgW2FyaWFSb3djb3VudF09XCJpdGVtLmFyaWFSb3djb3VudFwiXG4gICAgICAgICAgICBbYXJpYVJvd2luZGV4XT1cIml0ZW0uYXJpYVJvd2luZGV4XCJcbiAgICAgICAgICAgIFthcmlhUm93aW5kZXh0ZXh0XT1cIml0ZW0uYXJpYVJvd2luZGV4dGV4dFwiXG4gICAgICAgICAgICBbYXJpYVJvd3NwYW5dPVwiaXRlbS5hcmlhUm93c3BhblwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiaXRlbS50aXRsZVwiXG4gICAgICAgICAgICBbYWx0XT1cIml0ZW0uYWx0XCJcbiAgICAgICAgICAgIFtsYW5nXT1cIml0ZW0ubGFuZ1wiXG4gICAgICAgICAgICBbYWNjZXNza2V5XT1cIml0ZW0uYWNjZXNza2V5XCJcbiAgICAgICAgICAgIFthdXRvZm9jdXNdPVwiaXRlbS5hdXRvZm9jdXNcIlxuICAgICAgICAgICAgW2NvbnRlbnRlZGl0YWJsZV09XCJpdGVtLmNvbnRlbnRlZGl0YWJsZVwiXG4gICAgICAgICAgICBbZGlyXT1cIml0ZW0uZGlyXCJcbiAgICAgICAgICAgIFtkcmFnZ2FibGVdPVwiaXRlbS5kcmFnZ2FibGVcIlxuICAgICAgICAgICAgW2VudGVya2V5aGludF09XCJpdGVtLmVudGVya2V5aGludFwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cIml0ZW0uaGlkZGVuXCJcbiAgICAgICAgICAgIFtzcGVsbGNoZWNrXT1cIml0ZW0uc3BlbGxjaGVja1wiXG4gICAgICAgICAgICBbdHJhbnNsYXRlXT1cIml0ZW0udHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFthcmlhTXVsdGlsaW5lXT1cIml0ZW0uYXJpYU11bHRpbGluZVwiXG4gICAgICAgICAgICBbZm9yXT1cIml0ZW0uZm9yXCJcbiAgICAgICAgICAgIFtmb3JtXT1cIml0ZW0uZm9ybVwiXG4gICAgICAgICAgICBbaGVhZGVyc109XCJpdGVtLmhlYWRlcnNcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cIml0ZW0ucmVhZG9ubHlcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cIml0ZW0ucmVxdWlyZWRcIj48L2Rlc3ktaW5wdXQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0ZpZWxkc2V0Q29tcG9uZW50KClcIj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGVzeS1maWVsZHNldFwiPjwvbmctY29udGVudD5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoYXNGaWVsZHNldENvbXBvbmVudCgpXCI+XG4gIDxkZXN5LWZpZWxkc2V0XG4gICAgKm5nSWY9XCJmaWVsZHNldERhdGFcIlxuICAgIFtjbGFzc2VzXT1cImZpZWxkc2V0RGF0YS5jbGFzc2VzXCJcbiAgICBbaWRdPVwiZmllbGRzZXREYXRhLmlkXCJcbiAgICBbbGVnZW5kRGF0YV09XCJmaWVsZHNldERhdGEubGVnZW5kXCJcbiAgICBbY2FsbGVyXT1cImlubmVySHRtbFwiXG4gICAgW2Vycm9ySWRdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICBbZGVzY3JpYmVkQnldPVwiW2ZpZWxkc2V0RGF0YS5kZXNjcmliZWRCeSwgZ2V0SGludElkKCksIGdldEVycm9ySWQoKV0gfCBtYWtlSHRtbExpc3Q6IG51bGxcIlxuICAgIHJvbGU9XCJncm91cFwiXG4gICAgW2FyaWFMYWJlbF09XCJmaWVsZHNldERhdGEuYXJpYUxhYmVsXCJcbiAgICBbYXJpYUxhYmVsbGVkQnldPVwiZmllbGRzZXREYXRhLmFyaWFMYWJlbGxlZEJ5XCJcbiAgICBbYXJpYUhpZGRlbl09XCJmaWVsZHNldERhdGEuYXJpYUhpZGRlblwiXG4gICAgW2FyaWFEaXNhYmxlZF09XCJmaWVsZHNldERhdGEuYXJpYURpc2FibGVkXCJcbiAgICBbYXJpYUNvbnRyb2xzXT1cImZpZWxkc2V0RGF0YS5hcmlhQ29udHJvbHNcIlxuICAgIFthcmlhQ3VycmVudF09XCJmaWVsZHNldERhdGEuYXJpYUN1cnJlbnRcIlxuICAgIFthcmlhTGl2ZV09XCJmaWVsZHNldERhdGEuYXJpYUxpdmVcIlxuICAgIFthcmlhRXhwYW5kZWRdPVwiZmllbGRzZXREYXRhLmFyaWFFeHBhbmRlZFwiXG4gICAgW2FyaWFIYXNQb3B1cF09XCJmaWVsZHNldERhdGEuYXJpYUhhc1BvcHVwXCJcbiAgICBbdGFiaW5kZXhdPVwiZmllbGRzZXREYXRhLnRhYmluZGV4XCI+PC9kZXN5LWZpZWxkc2V0PlxuICA8ZGVzeS1maWVsZHNldFxuICAgICpuZ0lmPVwiIWZpZWxkc2V0RGF0YSAmJiBoYXNMZWdlbmRDb21wb25lbnQoKVwiXG4gICAgW2xlZ2VuZFJlZl09XCJsZWdlbmRUZW1wbGF0ZVwiXG4gICAgW2NhbGxlcl09XCJpbm5lckh0bWxcIlxuICAgIFtlcnJvcklkXT1cImdldEVycm9ySWQoKVwiXG4gICAgW2Rlc2NyaWJlZEJ5XT1cIltnZXRIaW50SWQoKSwgZ2V0RXJyb3JJZCgpXSB8IG1ha2VIdG1sTGlzdDogbnVsbFwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjbGVnZW5kVGVtcGxhdGU+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJkZXN5LWxlZ2VuZFwiPjwvbmctY29udGVudD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rlc3ktZmllbGRzZXQ+XG4gIDxkZXN5LWZpZWxkc2V0XG4gICAgKm5nSWY9XCIhZmllbGRzZXREYXRhICYmICFoYXNMZWdlbmRDb21wb25lbnQoKSAmJiBsZWdlbmRSZWZcIlxuICAgIFtsZWdlbmRSZWZdPVwibGVnZW5kUmVmXCJcbiAgICBbY2FsbGVyXT1cImlubmVySHRtbFwiXG4gICAgW2Vycm9ySWRdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICBbZGVzY3JpYmVkQnldPVwiW2dldEhpbnRJZCgpLCBnZXRFcnJvcklkKCldIHwgbWFrZUh0bWxMaXN0OiBudWxsXCJcbiAgICByb2xlPVwiZ3JvdXBcIj48L2Rlc3ktZmllbGRzZXQ+XG4gIDxkZXN5LWZpZWxkc2V0XG4gICAgKm5nSWY9XCIhZmllbGRzZXREYXRhICYmICFoYXNMZWdlbmRDb21wb25lbnQoKSAmJiAhbGVnZW5kUmVmICYmIGxlZ2VuZERhdGFcIlxuICAgIFtsZWdlbmREYXRhXT1cIntcbiAgICAgIHRleHQ6IGxlZ2VuZERhdGEudGV4dCxcbiAgICAgIGh0bWw6IGxlZ2VuZERhdGEuaHRtbCxcbiAgICAgIGNsYXNzZXM6IGxlZ2VuZERhdGEuY2xhc3NlcyxcbiAgICAgIGlzUGFnZUhlYWRpbmc6IGxlZ2VuZERhdGEuaXNQYWdlSGVhZGluZyxcbiAgICB9XCJcbiAgICBbY2FsbGVyXT1cImlubmVySHRtbFwiXG4gICAgW2Vycm9ySWRdPVwiZ2V0RXJyb3JJZCgpXCJcbiAgICBbZGVzY3JpYmVkQnldPVwiW2dldEhpbnRJZCgpLCBnZXRFcnJvcklkKCldIHwgbWFrZUh0bWxMaXN0OiBudWxsXCJcbiAgICByb2xlPVwiZ3JvdXBcIj48L2Rlc3ktZmllbGRzZXQ+XG4gIDxkZXN5LWZpZWxkc2V0XG4gICAgKm5nSWY9XCIhZmllbGRzZXREYXRhICYmICFoYXNMZWdlbmRDb21wb25lbnQoKSAmJiAhbGVnZW5kUmVmICYmICFsZWdlbmREYXRhICYmIGxlZ2VuZFRleHRcIlxuICAgIFtsZWdlbmRUZXh0XT1cImxlZ2VuZFRleHRcIlxuICAgIFtjYWxsZXJdPVwiaW5uZXJIdG1sXCJcbiAgICBbZXJyb3JJZF09XCJnZXRFcnJvcklkKClcIlxuICAgIFtkZXNjcmliZWRCeV09XCJbZ2V0SGludElkKCksIGdldEVycm9ySWQoKV0gfCBtYWtlSHRtbExpc3Q6IG51bGxcIlxuICAgIHJvbGU9XCJncm91cFwiPjwvZGVzeS1maWVsZHNldD5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiIWhhc0ZpZWxkc2V0KClcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlubmVySHRtbFwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=