@sbb-esta/lyne-elements 2.11.0 → 3.0.0-next.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 (787) hide show
  1. package/_index.scss +1 -1
  2. package/action-group/action-group.component.d.ts.map +1 -1
  3. package/alert/alert/alert.component.d.ts +2 -7
  4. package/alert/alert/alert.component.d.ts.map +1 -1
  5. package/alert/alert/alert.component.js +55 -67
  6. package/autocomplete/autocomplete-base-element.d.ts +26 -17
  7. package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  8. package/autocomplete/autocomplete-base-element.js +98 -70
  9. package/autocomplete/autocomplete.component.d.ts +3 -2
  10. package/autocomplete/autocomplete.component.d.ts.map +1 -1
  11. package/autocomplete/autocomplete.component.js +16 -19
  12. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.d.ts +3 -2
  13. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.d.ts.map +1 -1
  14. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +22 -25
  15. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.d.ts +1 -0
  16. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.d.ts.map +1 -1
  17. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +6 -7
  18. package/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.d.ts +4 -1
  19. package/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.d.ts.map +1 -1
  20. package/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.js +11 -13
  21. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts +4 -6
  22. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts.map +1 -1
  23. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +25 -29
  24. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.d.ts +4 -1
  25. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.d.ts.map +1 -1
  26. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +10 -12
  27. package/autocomplete.js +4 -5
  28. package/breadcrumb/breadcrumb/breadcrumb.component.js +1 -1
  29. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts +1 -0
  30. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts.map +1 -1
  31. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +9 -12
  32. package/button/accent-button/accent-button.component.d.ts +1 -0
  33. package/button/accent-button/accent-button.component.d.ts.map +1 -1
  34. package/button/button/button.component.d.ts +1 -0
  35. package/button/button/button.component.d.ts.map +1 -1
  36. package/button/common/button-common.d.ts +4 -6
  37. package/button/common/button-common.d.ts.map +1 -1
  38. package/button/mini-button/mini-button.component.d.ts +1 -0
  39. package/button/mini-button/mini-button.component.d.ts.map +1 -1
  40. package/button/secondary-button/secondary-button.component.d.ts +1 -0
  41. package/button/secondary-button/secondary-button.component.d.ts.map +1 -1
  42. package/button/transparent-button/transparent-button.component.d.ts +1 -0
  43. package/button/transparent-button/transparent-button.component.d.ts.map +1 -1
  44. package/calendar/calendar.component.d.ts +16 -14
  45. package/calendar/calendar.component.d.ts.map +1 -1
  46. package/calendar/calendar.component.js +132 -120
  47. package/card/card-badge/card-badge.component.d.ts +4 -1
  48. package/card/card-badge/card-badge.component.d.ts.map +1 -1
  49. package/card/card-badge/card-badge.component.js +8 -11
  50. package/card/card-button/card-button.component.d.ts +1 -0
  51. package/card/card-button/card-button.component.d.ts.map +1 -1
  52. package/card/common/card-action-common.d.ts.map +1 -1
  53. package/card/common/card-action-common.js +21 -24
  54. package/checkbox/checkbox/checkbox.component.d.ts +4 -1
  55. package/checkbox/checkbox/checkbox.component.d.ts.map +1 -1
  56. package/checkbox/checkbox/checkbox.component.js +48 -38
  57. package/checkbox/checkbox-panel/checkbox-panel.component.d.ts +4 -1
  58. package/checkbox/checkbox-panel/checkbox-panel.component.d.ts.map +1 -1
  59. package/checkbox/checkbox-panel/checkbox-panel.component.js +46 -36
  60. package/checkbox/common/checkbox-common.d.ts +4 -2
  61. package/checkbox/common/checkbox-common.d.ts.map +1 -1
  62. package/chip/chip/chip.component.d.ts +5 -6
  63. package/chip/chip/chip.component.d.ts.map +1 -1
  64. package/chip/chip/chip.component.js +37 -50
  65. package/chip/chip-group/chip-group.component.d.ts +22 -10
  66. package/chip/chip-group/chip-group.component.d.ts.map +1 -1
  67. package/chip/chip-group/chip-group.component.js +131 -116
  68. package/clock/clock.component.d.ts +1 -1
  69. package/clock/clock.component.d.ts.map +1 -1
  70. package/clock/clock.component.js +2 -2
  71. package/container/sticky-bar/sticky-bar.component.d.ts.map +1 -1
  72. package/container/sticky-bar/sticky-bar.component.js +10 -13
  73. package/core/a11y/focus.d.ts +0 -32
  74. package/core/a11y/focus.d.ts.map +1 -1
  75. package/core/a11y/focus.js +3 -65
  76. package/core/a11y/input-modality-detector.d.ts +0 -5
  77. package/core/a11y/input-modality-detector.d.ts.map +1 -1
  78. package/core/a11y/input-modality-detector.js +16 -27
  79. package/core/a11y/interactivity-checker.d.ts +0 -11
  80. package/core/a11y/interactivity-checker.d.ts.map +1 -1
  81. package/core/a11y/interactivity-checker.js +0 -1
  82. package/core/a11y/live-announcer.d.ts +62 -0
  83. package/core/a11y/live-announcer.d.ts.map +1 -0
  84. package/core/a11y/live-announcer.js +47 -0
  85. package/core/a11y.d.ts +1 -0
  86. package/core/a11y.d.ts.map +1 -1
  87. package/core/a11y.js +19 -21
  88. package/core/base-elements/action-base-element.d.ts +3 -1
  89. package/core/base-elements/action-base-element.d.ts.map +1 -1
  90. package/core/base-elements/action-base-element.js +12 -11
  91. package/core/base-elements/button-base-element.d.ts +25 -18
  92. package/core/base-elements/button-base-element.d.ts.map +1 -1
  93. package/core/base-elements/button-base-element.js +97 -65
  94. package/core/base-elements/open-close-base-element.d.ts +3 -1
  95. package/core/base-elements/open-close-base-element.d.ts.map +1 -1
  96. package/core/base-elements/open-close-base-element.js +2 -1
  97. package/core/base-elements.js +9 -8
  98. package/core/controllers/inert-controller.d.ts.map +1 -1
  99. package/core/controllers/inert-controller.js +3 -3
  100. package/core/controllers.d.ts +0 -1
  101. package/core/controllers.d.ts.map +1 -1
  102. package/core/controllers.js +17 -19
  103. package/core/datetime/date-adapter.d.ts +2 -2
  104. package/core/datetime/date-adapter.d.ts.map +1 -1
  105. package/core/datetime/date-adapter.js +1 -1
  106. package/core/datetime/native-date-adapter.d.ts +2 -3
  107. package/core/datetime/native-date-adapter.d.ts.map +1 -1
  108. package/core/datetime/native-date-adapter.js +71 -75
  109. package/core/decorators/id-reference.d.ts +11 -0
  110. package/core/decorators/id-reference.d.ts.map +1 -0
  111. package/core/decorators/id-reference.js +79 -0
  112. package/core/decorators/plain-date.d.ts +23 -0
  113. package/core/decorators/plain-date.d.ts.map +1 -0
  114. package/core/decorators/plain-date.js +29 -0
  115. package/core/decorators.d.ts +2 -2
  116. package/core/decorators.d.ts.map +1 -1
  117. package/core/decorators.js +17 -16
  118. package/core/dom.d.ts +0 -2
  119. package/core/dom.d.ts.map +1 -1
  120. package/core/dom.js +22 -26
  121. package/core/eventing/forward-event.d.ts +0 -6
  122. package/core/eventing/forward-event.d.ts.map +1 -1
  123. package/core/eventing/forward-event.js +4 -6
  124. package/core/eventing.js +12 -13
  125. package/core/i18n/i18n.d.ts +4 -1
  126. package/core/i18n/i18n.d.ts.map +1 -1
  127. package/core/i18n/i18n.js +106 -88
  128. package/core/i18n.js +42 -39
  129. package/core/interfaces/types.d.ts +0 -1
  130. package/core/interfaces/types.d.ts.map +1 -1
  131. package/core/mixins/animation-complete-mixin.d.ts +1 -1
  132. package/core/mixins/animation-complete-mixin.d.ts.map +1 -1
  133. package/core/mixins/disabled-mixin.d.ts +2 -2
  134. package/core/mixins/disabled-mixin.d.ts.map +1 -1
  135. package/core/mixins/element-internals-mixin.d.ts +15 -0
  136. package/core/mixins/element-internals-mixin.d.ts.map +1 -0
  137. package/core/mixins/element-internals-mixin.js +41 -0
  138. package/core/mixins/form-associated-checkbox-mixin.d.ts +7 -13
  139. package/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  140. package/core/mixins/form-associated-checkbox-mixin.js +30 -26
  141. package/core/mixins/form-associated-input-mixin.d.ts +15 -9
  142. package/core/mixins/form-associated-input-mixin.d.ts.map +1 -1
  143. package/core/mixins/form-associated-input-mixin.js +65 -49
  144. package/core/mixins/form-associated-mixin.d.ts +8 -7
  145. package/core/mixins/form-associated-mixin.d.ts.map +1 -1
  146. package/core/mixins/form-associated-mixin.js +49 -41
  147. package/core/mixins/form-associated-radio-button-mixin.d.ts +6 -14
  148. package/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -1
  149. package/core/mixins/form-associated-radio-button-mixin.js +32 -23
  150. package/core/mixins/readonly-mixin.d.ts +10 -0
  151. package/core/mixins/readonly-mixin.d.ts.map +1 -0
  152. package/core/mixins/readonly-mixin.js +30 -0
  153. package/core/mixins/required-mixin.d.ts +2 -2
  154. package/core/mixins/required-mixin.d.ts.map +1 -1
  155. package/core/mixins.d.ts +2 -0
  156. package/core/mixins.d.ts.map +1 -1
  157. package/core/mixins.js +25 -21
  158. package/core/styles/core.scss +38 -14
  159. package/core/styles/mixins/font-face.scss +6 -18
  160. package/core/styles/mixins/link.scss +3 -7
  161. package/core/styles/mixins/lists.scss +0 -63
  162. package/core/styles/mixins/overlay.scss +7 -1
  163. package/core/styles/mixins/table.scss +0 -7
  164. package/core/styles/table.scss +0 -4
  165. package/core/testing.d.ts +0 -1
  166. package/core/testing.d.ts.map +1 -1
  167. package/core/testing.js +8 -10
  168. package/core.css +41 -17
  169. package/custom-elements.json +13180 -6120
  170. package/date-input/date-input.component.d.ts +12 -14
  171. package/date-input/date-input.component.d.ts.map +1 -1
  172. package/date-input/date-input.component.js +53 -57
  173. package/datepicker/common/datepicker-association-controllers.d.ts.map +1 -1
  174. package/datepicker/common/datepicker-association-controllers.js +7 -7
  175. package/datepicker/common/datepicker-button.d.ts +0 -12
  176. package/datepicker/common/datepicker-button.d.ts.map +1 -1
  177. package/datepicker/common/datepicker-button.js +45 -59
  178. package/datepicker/datepicker/datepicker.component.d.ts +3 -20
  179. package/datepicker/datepicker/datepicker.component.d.ts.map +1 -1
  180. package/datepicker/datepicker/datepicker.component.js +85 -95
  181. package/datepicker/datepicker-next-day/datepicker-next-day.component.d.ts +2 -0
  182. package/datepicker/datepicker-next-day/datepicker-next-day.component.d.ts.map +1 -1
  183. package/datepicker/datepicker-next-day/datepicker-next-day.component.js +12 -12
  184. package/datepicker/datepicker-previous-day/datepicker-previous-day.component.d.ts +2 -0
  185. package/datepicker/datepicker-previous-day/datepicker-previous-day.component.d.ts.map +1 -1
  186. package/datepicker/datepicker-previous-day/datepicker-previous-day.component.js +13 -13
  187. package/datepicker/datepicker-toggle/datepicker-toggle.component.d.ts +0 -8
  188. package/datepicker/datepicker-toggle/datepicker-toggle.component.d.ts.map +1 -1
  189. package/datepicker/datepicker-toggle/datepicker-toggle.component.js +51 -65
  190. package/datepicker/datepicker.js +2 -4
  191. package/datepicker.js +10 -12
  192. package/development/action-group/action-group.component.d.ts.map +1 -1
  193. package/development/action-group/action-group.component.js +1 -1
  194. package/development/alert/alert/alert.component.d.ts +2 -7
  195. package/development/alert/alert/alert.component.d.ts.map +1 -1
  196. package/development/alert/alert/alert.component.js +8 -26
  197. package/development/autocomplete/autocomplete-base-element.d.ts +26 -17
  198. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  199. package/development/autocomplete/autocomplete-base-element.js +69 -39
  200. package/development/autocomplete/autocomplete.component.d.ts +3 -2
  201. package/development/autocomplete/autocomplete.component.d.ts.map +1 -1
  202. package/development/autocomplete/autocomplete.component.js +5 -9
  203. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.d.ts +3 -2
  204. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.d.ts.map +1 -1
  205. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +5 -9
  206. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.d.ts +1 -0
  207. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.d.ts.map +1 -1
  208. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +2 -3
  209. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.d.ts +4 -1
  210. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.d.ts.map +1 -1
  211. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.js +5 -7
  212. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts +4 -6
  213. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts.map +1 -1
  214. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +20 -19
  215. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.d.ts +4 -1
  216. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.d.ts.map +1 -1
  217. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +5 -7
  218. package/development/autocomplete.js +2 -3
  219. package/development/breadcrumb/breadcrumb/breadcrumb.component.js +2 -2
  220. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts +1 -0
  221. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts.map +1 -1
  222. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +5 -8
  223. package/development/button/accent-button/accent-button.component.d.ts +1 -0
  224. package/development/button/accent-button/accent-button.component.d.ts.map +1 -1
  225. package/development/button/accent-button/accent-button.component.js +1 -1
  226. package/development/button/button/button.component.d.ts +1 -0
  227. package/development/button/button/button.component.d.ts.map +1 -1
  228. package/development/button/button/button.component.js +1 -1
  229. package/development/button/common/button-common.d.ts +4 -6
  230. package/development/button/common/button-common.d.ts.map +1 -1
  231. package/development/button/common/button-common.js +1 -1
  232. package/development/button/mini-button/mini-button.component.d.ts +1 -0
  233. package/development/button/mini-button/mini-button.component.d.ts.map +1 -1
  234. package/development/button/mini-button/mini-button.component.js +1 -1
  235. package/development/button/secondary-button/secondary-button.component.d.ts +1 -0
  236. package/development/button/secondary-button/secondary-button.component.d.ts.map +1 -1
  237. package/development/button/secondary-button/secondary-button.component.js +1 -1
  238. package/development/button/transparent-button/transparent-button.component.d.ts +1 -0
  239. package/development/button/transparent-button/transparent-button.component.d.ts.map +1 -1
  240. package/development/button/transparent-button/transparent-button.component.js +1 -1
  241. package/development/calendar/calendar.component.d.ts +16 -14
  242. package/development/calendar/calendar.component.d.ts.map +1 -1
  243. package/development/calendar/calendar.component.js +52 -32
  244. package/development/card/card-badge/card-badge.component.d.ts +4 -1
  245. package/development/card/card-badge/card-badge.component.d.ts.map +1 -1
  246. package/development/card/card-badge/card-badge.component.js +6 -8
  247. package/development/card/card-button/card-button.component.d.ts +1 -0
  248. package/development/card/card-button/card-button.component.d.ts.map +1 -1
  249. package/development/card/card-button/card-button.component.js +1 -1
  250. package/development/card/common/card-action-common.d.ts.map +1 -1
  251. package/development/card/common/card-action-common.js +6 -15
  252. package/development/checkbox/checkbox/checkbox.component.d.ts +4 -1
  253. package/development/checkbox/checkbox/checkbox.component.d.ts.map +1 -1
  254. package/development/checkbox/checkbox/checkbox.component.js +19 -4
  255. package/development/checkbox/checkbox-panel/checkbox-panel.component.d.ts +4 -1
  256. package/development/checkbox/checkbox-panel/checkbox-panel.component.d.ts.map +1 -1
  257. package/development/checkbox/checkbox-panel/checkbox-panel.component.js +20 -4
  258. package/development/checkbox/common/checkbox-common.d.ts +4 -2
  259. package/development/checkbox/common/checkbox-common.d.ts.map +1 -1
  260. package/development/checkbox/common/checkbox-common.js +1 -1
  261. package/development/chip/chip/chip.component.d.ts +5 -6
  262. package/development/chip/chip/chip.component.d.ts.map +1 -1
  263. package/development/chip/chip/chip.component.js +12 -31
  264. package/development/chip/chip-group/chip-group.component.d.ts +22 -10
  265. package/development/chip/chip-group/chip-group.component.d.ts.map +1 -1
  266. package/development/chip/chip-group/chip-group.component.js +52 -27
  267. package/development/clock/clock.component.d.ts +1 -1
  268. package/development/clock/clock.component.d.ts.map +1 -1
  269. package/development/clock/clock.component.js +3 -3
  270. package/development/container/sticky-bar/sticky-bar.component.d.ts.map +1 -1
  271. package/development/container/sticky-bar/sticky-bar.component.js +3 -5
  272. package/development/core/a11y/focus.d.ts +0 -32
  273. package/development/core/a11y/focus.d.ts.map +1 -1
  274. package/development/core/a11y/focus.js +2 -82
  275. package/development/core/a11y/input-modality-detector.d.ts +0 -5
  276. package/development/core/a11y/input-modality-detector.d.ts.map +1 -1
  277. package/development/core/a11y/input-modality-detector.js +2 -18
  278. package/development/core/a11y/interactivity-checker.d.ts +0 -11
  279. package/development/core/a11y/interactivity-checker.d.ts.map +1 -1
  280. package/development/core/a11y/interactivity-checker.js +1 -2
  281. package/development/core/a11y/live-announcer.d.ts +62 -0
  282. package/development/core/a11y/live-announcer.d.ts.map +1 -0
  283. package/development/core/a11y/live-announcer.js +87 -0
  284. package/development/core/a11y.d.ts +1 -0
  285. package/development/core/a11y.d.ts.map +1 -1
  286. package/development/core/a11y.js +7 -9
  287. package/development/core/base-elements/action-base-element.d.ts +3 -1
  288. package/development/core/base-elements/action-base-element.d.ts.map +1 -1
  289. package/development/core/base-elements/action-base-element.js +3 -2
  290. package/development/core/base-elements/button-base-element.d.ts +25 -18
  291. package/development/core/base-elements/button-base-element.d.ts.map +1 -1
  292. package/development/core/base-elements/button-base-element.js +105 -67
  293. package/development/core/base-elements/open-close-base-element.d.ts +3 -1
  294. package/development/core/base-elements/open-close-base-element.d.ts.map +1 -1
  295. package/development/core/base-elements/open-close-base-element.js +3 -2
  296. package/development/core/base-elements.js +2 -1
  297. package/development/core/controllers/inert-controller.d.ts.map +1 -1
  298. package/development/core/controllers/inert-controller.js +2 -2
  299. package/development/core/controllers.d.ts +0 -1
  300. package/development/core/controllers.d.ts.map +1 -1
  301. package/development/core/controllers.js +1 -3
  302. package/development/core/datetime/date-adapter.d.ts +2 -2
  303. package/development/core/datetime/date-adapter.d.ts.map +1 -1
  304. package/development/core/datetime/date-adapter.js +2 -2
  305. package/development/core/datetime/native-date-adapter.d.ts +2 -3
  306. package/development/core/datetime/native-date-adapter.d.ts.map +1 -1
  307. package/development/core/datetime/native-date-adapter.js +2 -6
  308. package/development/core/decorators/id-reference.d.ts +11 -0
  309. package/development/core/decorators/id-reference.d.ts.map +1 -0
  310. package/development/core/decorators/id-reference.js +123 -0
  311. package/development/core/decorators/plain-date.d.ts +23 -0
  312. package/development/core/decorators/plain-date.d.ts.map +1 -0
  313. package/development/core/decorators/plain-date.js +37 -0
  314. package/development/core/decorators.d.ts +2 -2
  315. package/development/core/decorators.d.ts.map +1 -1
  316. package/development/core/decorators.js +5 -4
  317. package/development/core/dom.d.ts +0 -2
  318. package/development/core/dom.d.ts.map +1 -1
  319. package/development/core/dom.js +1 -5
  320. package/development/core/eventing/forward-event.d.ts +0 -6
  321. package/development/core/eventing/forward-event.d.ts.map +1 -1
  322. package/development/core/eventing/forward-event.js +2 -4
  323. package/development/core/eventing.js +1 -2
  324. package/development/core/i18n/i18n.d.ts +4 -1
  325. package/development/core/i18n/i18n.d.ts.map +1 -1
  326. package/development/core/i18n/i18n.js +43 -22
  327. package/development/core/i18n.js +4 -1
  328. package/development/core/interfaces/types.d.ts +0 -1
  329. package/development/core/interfaces/types.d.ts.map +1 -1
  330. package/development/core/mixins/animation-complete-mixin.d.ts +1 -1
  331. package/development/core/mixins/animation-complete-mixin.d.ts.map +1 -1
  332. package/development/core/mixins/animation-complete-mixin.js +1 -1
  333. package/development/core/mixins/disabled-mixin.d.ts +2 -2
  334. package/development/core/mixins/disabled-mixin.d.ts.map +1 -1
  335. package/development/core/mixins/disabled-mixin.js +1 -1
  336. package/development/core/mixins/element-internals-mixin.d.ts +15 -0
  337. package/development/core/mixins/element-internals-mixin.d.ts.map +1 -0
  338. package/development/core/mixins/element-internals-mixin.js +59 -0
  339. package/development/core/mixins/form-associated-checkbox-mixin.d.ts +7 -13
  340. package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  341. package/development/core/mixins/form-associated-checkbox-mixin.js +8 -6
  342. package/development/core/mixins/form-associated-input-mixin.d.ts +15 -9
  343. package/development/core/mixins/form-associated-input-mixin.d.ts.map +1 -1
  344. package/development/core/mixins/form-associated-input-mixin.js +39 -20
  345. package/development/core/mixins/form-associated-mixin.d.ts +8 -7
  346. package/development/core/mixins/form-associated-mixin.d.ts.map +1 -1
  347. package/development/core/mixins/form-associated-mixin.js +31 -17
  348. package/development/core/mixins/form-associated-radio-button-mixin.d.ts +6 -14
  349. package/development/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -1
  350. package/development/core/mixins/form-associated-radio-button-mixin.js +20 -8
  351. package/development/core/mixins/readonly-mixin.d.ts +10 -0
  352. package/development/core/mixins/readonly-mixin.d.ts.map +1 -0
  353. package/development/core/mixins/readonly-mixin.js +40 -0
  354. package/development/core/mixins/required-mixin.d.ts +2 -2
  355. package/development/core/mixins/required-mixin.d.ts.map +1 -1
  356. package/development/core/mixins/required-mixin.js +1 -1
  357. package/development/core/mixins.d.ts +2 -0
  358. package/development/core/mixins.d.ts.map +1 -1
  359. package/development/core/mixins.js +5 -1
  360. package/development/core/testing.d.ts +0 -1
  361. package/development/core/testing.d.ts.map +1 -1
  362. package/development/core/testing.js +1 -3
  363. package/development/date-input/date-input.component.d.ts +12 -14
  364. package/development/date-input/date-input.component.d.ts.map +1 -1
  365. package/development/date-input/date-input.component.js +17 -22
  366. package/development/datepicker/common/datepicker-association-controllers.d.ts.map +1 -1
  367. package/development/datepicker/common/datepicker-association-controllers.js +3 -3
  368. package/development/datepicker/common/datepicker-button.d.ts +0 -12
  369. package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
  370. package/development/datepicker/common/datepicker-button.js +1 -23
  371. package/development/datepicker/datepicker/datepicker.component.d.ts +3 -20
  372. package/development/datepicker/datepicker/datepicker.component.d.ts.map +1 -1
  373. package/development/datepicker/datepicker/datepicker.component.js +24 -33
  374. package/development/datepicker/datepicker-next-day/datepicker-next-day.component.d.ts +2 -0
  375. package/development/datepicker/datepicker-next-day/datepicker-next-day.component.d.ts.map +1 -1
  376. package/development/datepicker/datepicker-next-day/datepicker-next-day.component.js +7 -6
  377. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.component.d.ts +2 -0
  378. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.component.d.ts.map +1 -1
  379. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.component.js +7 -6
  380. package/development/datepicker/datepicker-toggle/datepicker-toggle.component.d.ts +0 -8
  381. package/development/datepicker/datepicker-toggle/datepicker-toggle.component.d.ts.map +1 -1
  382. package/development/datepicker/datepicker-toggle/datepicker-toggle.component.js +1 -21
  383. package/development/datepicker/datepicker.js +2 -4
  384. package/development/datepicker.js +2 -4
  385. package/development/divider/divider.component.d.ts +2 -1
  386. package/development/divider/divider.component.d.ts.map +1 -1
  387. package/development/divider/divider.component.js +5 -8
  388. package/development/expansion-panel/expansion-panel-content/expansion-panel-content.component.d.ts +5 -1
  389. package/development/expansion-panel/expansion-panel-content/expansion-panel-content.component.d.ts.map +1 -1
  390. package/development/expansion-panel/expansion-panel-content/expansion-panel-content.component.js +9 -8
  391. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.d.ts +2 -0
  392. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.d.ts.map +1 -1
  393. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +6 -5
  394. package/development/file-selector/common/file-selector-common.d.ts +6 -5
  395. package/development/file-selector/common/file-selector-common.d.ts.map +1 -1
  396. package/development/file-selector/common/file-selector-common.js +4 -4
  397. package/development/file-selector/file-selector/file-selector.component.d.ts +1 -0
  398. package/development/file-selector/file-selector/file-selector.component.d.ts.map +1 -1
  399. package/development/file-selector/file-selector/file-selector.component.js +1 -1
  400. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.d.ts +1 -0
  401. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.d.ts.map +1 -1
  402. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
  403. package/development/flip-card/flip-card-details/flip-card-details.component.d.ts +1 -0
  404. package/development/flip-card/flip-card-details/flip-card-details.component.d.ts.map +1 -1
  405. package/development/flip-card/flip-card-details/flip-card-details.component.js +6 -5
  406. package/development/flip-card/flip-card-summary/flip-card-summary.component.d.ts +1 -0
  407. package/development/flip-card/flip-card-summary/flip-card-summary.component.d.ts.map +1 -1
  408. package/development/flip-card/flip-card-summary/flip-card-summary.component.js +6 -5
  409. package/development/footer/footer.component.js +1 -1
  410. package/development/form-field/form-field/form-field.component.d.ts +9 -10
  411. package/development/form-field/form-field/form-field.component.d.ts.map +1 -1
  412. package/development/form-field/form-field/form-field.component.js +167 -178
  413. package/development/form-field/form-field-clear/form-field-clear.component.d.ts +1 -0
  414. package/development/form-field/form-field-clear/form-field-clear.component.d.ts.map +1 -1
  415. package/development/form-field/form-field-clear/form-field-clear.component.js +3 -5
  416. package/development/header/common/header-action-common.d.ts +3 -3
  417. package/development/header/common/header-action-common.d.ts.map +1 -1
  418. package/development/header/common/header-action-common.js +1 -1
  419. package/development/header/header/header.component.d.ts +6 -3
  420. package/development/header/header/header.component.d.ts.map +1 -1
  421. package/development/header/header/header.component.js +10 -9
  422. package/development/header/header-button/header-button.component.d.ts +1 -0
  423. package/development/header/header-button/header-button.component.d.ts.map +1 -1
  424. package/development/header/header-button/header-button.component.js +1 -1
  425. package/development/image/image.component.d.ts +1 -1
  426. package/development/image/image.component.d.ts.map +1 -1
  427. package/development/image/image.component.js +7 -6
  428. package/development/link/block-link-button/block-link-button.component.d.ts +1 -0
  429. package/development/link/block-link-button/block-link-button.component.d.ts.map +1 -1
  430. package/development/link/block-link-button/block-link-button.component.js +1 -1
  431. package/development/link/common/block-link-common.d.ts +3 -4
  432. package/development/link/common/block-link-common.d.ts.map +1 -1
  433. package/development/link/common/block-link-common.js +4 -4
  434. package/development/link/common/inline-link-common.d.ts +3 -2
  435. package/development/link/common/inline-link-common.d.ts.map +1 -1
  436. package/development/link/common/inline-link-common.js +2 -2
  437. package/development/link/common/link-common.d.ts +4 -2
  438. package/development/link/common/link-common.d.ts.map +1 -1
  439. package/development/link/common/link-common.js +1 -1
  440. package/development/link/common.js +1 -1
  441. package/development/link/link-button/link-button.component.d.ts +1 -0
  442. package/development/link/link-button/link-button.component.d.ts.map +1 -1
  443. package/development/link/link-button/link-button.component.js +1 -1
  444. package/development/{link-common-CJEWffDZ.js → link-common-DPLJx5Uo.js} +2 -2
  445. package/development/link-list/link-list-anchor/link-list-anchor.component.js +1 -1
  446. package/development/link.js +1 -1
  447. package/development/loading-indicator/loading-indicator.component.d.ts +5 -1
  448. package/development/loading-indicator/loading-indicator.component.d.ts.map +1 -1
  449. package/development/loading-indicator/loading-indicator.component.js +9 -8
  450. package/development/loading-indicator-circle/loading-indicator-circle.component.d.ts +5 -1
  451. package/development/loading-indicator-circle/loading-indicator-circle.component.d.ts.map +1 -1
  452. package/development/loading-indicator-circle/loading-indicator-circle.component.js +9 -8
  453. package/development/menu/common/menu-action-common.d.ts +4 -8
  454. package/development/menu/common/menu-action-common.d.ts.map +1 -1
  455. package/development/menu/common/menu-action-common.js +5 -63
  456. package/development/menu/menu/menu.component.d.ts +3 -3
  457. package/development/menu/menu/menu.component.d.ts.map +1 -1
  458. package/development/menu/menu/menu.component.js +10 -12
  459. package/development/menu/menu-button/menu-button.component.d.ts +1 -0
  460. package/development/menu/menu-button/menu-button.component.d.ts.map +1 -1
  461. package/development/menu/menu-button/menu-button.component.js +1 -1
  462. package/development/navigation/navigation/navigation.component.d.ts +4 -3
  463. package/development/navigation/navigation/navigation.component.d.ts.map +1 -1
  464. package/development/navigation/navigation/navigation.component.js +11 -14
  465. package/development/navigation/navigation-button/navigation-button.component.d.ts +1 -0
  466. package/development/navigation/navigation-button/navigation-button.component.d.ts.map +1 -1
  467. package/development/navigation/navigation-button/navigation-button.component.js +1 -1
  468. package/development/navigation/navigation-section/navigation-section.component.d.ts +3 -3
  469. package/development/navigation/navigation-section/navigation-section.component.d.ts.map +1 -1
  470. package/development/navigation/navigation-section/navigation-section.component.js +10 -12
  471. package/development/notification/notification.component.d.ts +4 -7
  472. package/development/notification/notification.component.d.ts.map +1 -1
  473. package/development/notification/notification.component.js +12 -29
  474. package/development/option/optgroup/optgroup-base-element.d.ts +2 -1
  475. package/development/option/optgroup/optgroup-base-element.d.ts.map +1 -1
  476. package/development/option/optgroup/optgroup-base-element.js +16 -37
  477. package/development/option/option/option-base-element.d.ts +6 -12
  478. package/development/option/option/option-base-element.d.ts.map +1 -1
  479. package/development/option/option/option-base-element.js +25 -21
  480. package/development/option/option/option.component.d.ts +5 -2
  481. package/development/option/option/option.component.d.ts.map +1 -1
  482. package/development/option/option/option.component.js +24 -21
  483. package/development/overlay/overlay-base-element.d.ts +1 -8
  484. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  485. package/development/overlay/overlay-base-element.js +10 -30
  486. package/development/paginator/common/paginator-common.d.ts +3 -7
  487. package/development/paginator/common/paginator-common.d.ts.map +1 -1
  488. package/development/paginator/common/paginator-common.js +9 -27
  489. package/development/popover/popover/popover.component.d.ts +3 -3
  490. package/development/popover/popover/popover.component.d.ts.map +1 -1
  491. package/development/popover/popover/popover.component.js +15 -12
  492. package/development/popover/popover-trigger/popover-trigger.component.d.ts +1 -0
  493. package/development/popover/popover-trigger/popover-trigger.component.d.ts.map +1 -1
  494. package/development/popover/popover-trigger/popover-trigger.component.js +1 -1
  495. package/development/radio-button/common/radio-button-common.d.ts +4 -2
  496. package/development/radio-button/common/radio-button-common.d.ts.map +1 -1
  497. package/development/radio-button/common/radio-button-common.js +1 -1
  498. package/development/radio-button/radio-button/radio-button.component.d.ts +6 -2
  499. package/development/radio-button/radio-button/radio-button.component.d.ts.map +1 -1
  500. package/development/radio-button/radio-button/radio-button.component.js +21 -4
  501. package/development/radio-button/radio-button-group/radio-button-group.component.d.ts +8 -6
  502. package/development/radio-button/radio-button-group/radio-button-group.component.d.ts.map +1 -1
  503. package/development/radio-button/radio-button-group/radio-button-group.component.js +8 -11
  504. package/development/radio-button/radio-button-panel/radio-button-panel.component.d.ts +6 -2
  505. package/development/radio-button/radio-button-panel/radio-button-panel.component.d.ts.map +1 -1
  506. package/development/radio-button/radio-button-panel/radio-button-panel.component.js +22 -4
  507. package/development/select/select.component.d.ts +14 -12
  508. package/development/select/select.component.d.ts.map +1 -1
  509. package/development/select/select.component.js +111 -67
  510. package/development/sidebar/icon-sidebar/icon-sidebar.component.d.ts +4 -2
  511. package/development/sidebar/icon-sidebar/icon-sidebar.component.d.ts.map +1 -1
  512. package/development/sidebar/icon-sidebar/icon-sidebar.component.js +5 -6
  513. package/development/sidebar/icon-sidebar-button/icon-sidebar-button.component.d.ts +1 -0
  514. package/development/sidebar/icon-sidebar-button/icon-sidebar-button.component.d.ts.map +1 -1
  515. package/development/sidebar/icon-sidebar-button/icon-sidebar-button.component.js +1 -1
  516. package/development/sidebar/sidebar/sidebar.component.js +1 -1
  517. package/development/sidebar/sidebar-close-button/sidebar-close-button.component.d.ts +2 -0
  518. package/development/sidebar/sidebar-close-button/sidebar-close-button.component.d.ts.map +1 -1
  519. package/development/sidebar/sidebar-close-button/sidebar-close-button.component.js +6 -3
  520. package/development/sidebar/sidebar-title/sidebar-title.component.d.ts +1 -0
  521. package/development/sidebar/sidebar-title/sidebar-title.component.d.ts.map +1 -1
  522. package/development/sidebar/sidebar-title/sidebar-title.component.js +6 -3
  523. package/development/slider/slider.component.d.ts +6 -15
  524. package/development/slider/slider.component.d.ts.map +1 -1
  525. package/development/slider/slider.component.js +37 -85
  526. package/development/stepper/step/step.component.d.ts +4 -1
  527. package/development/stepper/step/step.component.d.ts.map +1 -1
  528. package/development/stepper/step/step.component.js +6 -8
  529. package/development/stepper/step-label/step-label.component.d.ts +2 -0
  530. package/development/stepper/step-label/step-label.component.d.ts.map +1 -1
  531. package/development/stepper/step-label/step-label.component.js +5 -8
  532. package/development/stepper/stepper/stepper.component.d.ts +1 -1
  533. package/development/stepper/stepper/stepper.component.d.ts.map +1 -1
  534. package/development/stepper/stepper/stepper.component.js +9 -8
  535. package/development/table/table-wrapper/table-wrapper.component.d.ts +2 -1
  536. package/development/table/table-wrapper/table-wrapper.component.d.ts.map +1 -1
  537. package/development/table/table-wrapper/table-wrapper.component.js +4 -6
  538. package/development/tabs/tab/tab.component.d.ts +4 -1
  539. package/development/tabs/tab/tab.component.d.ts.map +1 -1
  540. package/development/tabs/tab/tab.component.js +4 -3
  541. package/development/tabs/tab-group/tab-group.component.d.ts.map +1 -1
  542. package/development/tabs/tab-group/tab-group.component.js +2 -4
  543. package/development/tabs/tab-label/tab-label.component.d.ts +2 -1
  544. package/development/tabs/tab-label/tab-label.component.d.ts.map +1 -1
  545. package/development/tabs/tab-label/tab-label.component.js +4 -4
  546. package/development/tag/tag/tag.component.d.ts +7 -3
  547. package/development/tag/tag/tag.component.d.ts.map +1 -1
  548. package/development/tag/tag/tag.component.js +26 -7
  549. package/development/tag/tag-group/tag-group.component.d.ts +7 -5
  550. package/development/tag/tag-group/tag-group.component.d.ts.map +1 -1
  551. package/development/tag/tag-group/tag-group.component.js +29 -21
  552. package/development/teaser-product/common/teaser-product-common.d.ts +4 -2
  553. package/development/teaser-product/common/teaser-product-common.d.ts.map +1 -1
  554. package/development/teaser-product/common/teaser-product-common.js +1 -1
  555. package/development/time-input/time-input.component.d.ts +29 -42
  556. package/development/time-input/time-input.component.d.ts.map +1 -1
  557. package/development/time-input/time-input.component.js +158 -205
  558. package/development/title/title-base.d.ts +4 -1
  559. package/development/title/title-base.d.ts.map +1 -1
  560. package/development/title/title-base.js +9 -17
  561. package/development/toast/toast.component.d.ts +3 -4
  562. package/development/toast/toast.component.d.ts.map +1 -1
  563. package/development/toast/toast.component.js +53 -73
  564. package/development/toggle/toggle/toggle.component.d.ts +13 -9
  565. package/development/toggle/toggle/toggle.component.d.ts.map +1 -1
  566. package/development/toggle/toggle/toggle.component.js +29 -29
  567. package/development/toggle/toggle-option/toggle-option.component.d.ts +5 -3
  568. package/development/toggle/toggle-option/toggle-option.component.d.ts.map +1 -1
  569. package/development/toggle/toggle-option/toggle-option.component.js +6 -8
  570. package/development/toggle-check/toggle-check.component.d.ts +5 -2
  571. package/development/toggle-check/toggle-check.component.d.ts.map +1 -1
  572. package/development/toggle-check/toggle-check.component.js +19 -4
  573. package/divider/divider.component.d.ts +2 -1
  574. package/divider/divider.component.d.ts.map +1 -1
  575. package/divider/divider.component.js +26 -29
  576. package/expansion-panel/expansion-panel-content/expansion-panel-content.component.d.ts +5 -1
  577. package/expansion-panel/expansion-panel-content/expansion-panel-content.component.d.ts.map +1 -1
  578. package/expansion-panel/expansion-panel-content/expansion-panel-content.component.js +14 -14
  579. package/expansion-panel/expansion-panel-header/expansion-panel-header.component.d.ts +2 -0
  580. package/expansion-panel/expansion-panel-header/expansion-panel-header.component.d.ts.map +1 -1
  581. package/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +20 -20
  582. package/file-selector/common/file-selector-common.d.ts +6 -5
  583. package/file-selector/common/file-selector-common.d.ts.map +1 -1
  584. package/file-selector/common/file-selector-common.js +35 -35
  585. package/file-selector/file-selector/file-selector.component.d.ts +1 -0
  586. package/file-selector/file-selector/file-selector.component.d.ts.map +1 -1
  587. package/file-selector/file-selector-dropzone/file-selector-dropzone.component.d.ts +1 -0
  588. package/file-selector/file-selector-dropzone/file-selector-dropzone.component.d.ts.map +1 -1
  589. package/flip-card/flip-card-details/flip-card-details.component.d.ts +1 -0
  590. package/flip-card/flip-card-details/flip-card-details.component.d.ts.map +1 -1
  591. package/flip-card/flip-card-details/flip-card-details.component.js +16 -16
  592. package/flip-card/flip-card-summary/flip-card-summary.component.d.ts +1 -0
  593. package/flip-card/flip-card-summary/flip-card-summary.component.d.ts.map +1 -1
  594. package/flip-card/flip-card-summary/flip-card-summary.component.js +13 -13
  595. package/font-characters-extension.css +3 -3
  596. package/footer/footer.component.js +1 -1
  597. package/form-field/form-field/form-field.component.d.ts +9 -10
  598. package/form-field/form-field/form-field.component.d.ts.map +1 -1
  599. package/form-field/form-field/form-field.component.js +194 -209
  600. package/form-field/form-field-clear/form-field-clear.component.d.ts +1 -0
  601. package/form-field/form-field-clear/form-field-clear.component.d.ts.map +1 -1
  602. package/form-field/form-field-clear/form-field-clear.component.js +9 -12
  603. package/header/common/header-action-common.d.ts +3 -3
  604. package/header/common/header-action-common.d.ts.map +1 -1
  605. package/header/header/header.component.d.ts +6 -3
  606. package/header/header/header.component.d.ts.map +1 -1
  607. package/header/header/header.component.js +46 -44
  608. package/header/header-button/header-button.component.d.ts +1 -0
  609. package/header/header-button/header-button.component.d.ts.map +1 -1
  610. package/image/image.component.d.ts +1 -1
  611. package/image/image.component.d.ts.map +1 -1
  612. package/image/image.component.js +4 -2
  613. package/link/block-link-button/block-link-button.component.d.ts +1 -0
  614. package/link/block-link-button/block-link-button.component.d.ts.map +1 -1
  615. package/link/common/block-link-common.d.ts +3 -4
  616. package/link/common/block-link-common.d.ts.map +1 -1
  617. package/link/common/block-link-common.js +6 -6
  618. package/link/common/inline-link-common.d.ts +3 -2
  619. package/link/common/inline-link-common.d.ts.map +1 -1
  620. package/link/common/inline-link-common.js +1 -1
  621. package/link/common/link-common.d.ts +4 -2
  622. package/link/common/link-common.d.ts.map +1 -1
  623. package/link/common/link-common.js +1 -1
  624. package/link/common.js +1 -1
  625. package/link/link-button/link-button.component.d.ts +1 -0
  626. package/link/link-button/link-button.component.d.ts.map +1 -1
  627. package/{link-common-DZrQ-32d.js → link-common-BBKGg9HN.js} +1 -1
  628. package/link-list/link-list-anchor/link-list-anchor.component.js +4 -4
  629. package/link.js +1 -1
  630. package/loading-indicator/loading-indicator.component.d.ts +5 -1
  631. package/loading-indicator/loading-indicator.component.d.ts.map +1 -1
  632. package/loading-indicator/loading-indicator.component.js +9 -9
  633. package/loading-indicator-circle/loading-indicator-circle.component.d.ts +5 -1
  634. package/loading-indicator-circle/loading-indicator-circle.component.d.ts.map +1 -1
  635. package/loading-indicator-circle/loading-indicator-circle.component.js +14 -14
  636. package/menu/common/menu-action-common.d.ts +4 -8
  637. package/menu/common/menu-action-common.d.ts.map +1 -1
  638. package/menu/common/menu-action-common.js +16 -41
  639. package/menu/menu/menu.component.d.ts +3 -3
  640. package/menu/menu/menu.component.d.ts.map +1 -1
  641. package/menu/menu/menu.component.js +32 -34
  642. package/menu/menu-button/menu-button.component.d.ts +1 -0
  643. package/menu/menu-button/menu-button.component.d.ts.map +1 -1
  644. package/navigation/navigation/navigation.component.d.ts +4 -3
  645. package/navigation/navigation/navigation.component.d.ts.map +1 -1
  646. package/navigation/navigation/navigation.component.js +39 -42
  647. package/navigation/navigation-button/navigation-button.component.d.ts +1 -0
  648. package/navigation/navigation-button/navigation-button.component.d.ts.map +1 -1
  649. package/navigation/navigation-section/navigation-section.component.d.ts +3 -3
  650. package/navigation/navigation-section/navigation-section.component.d.ts.map +1 -1
  651. package/navigation/navigation-section/navigation-section.component.js +51 -53
  652. package/notification/notification.component.d.ts +4 -7
  653. package/notification/notification.component.d.ts.map +1 -1
  654. package/notification/notification.component.js +63 -73
  655. package/option/optgroup/optgroup-base-element.d.ts +2 -1
  656. package/option/optgroup/optgroup-base-element.d.ts.map +1 -1
  657. package/option/optgroup/optgroup-base-element.js +43 -43
  658. package/option/option/option-base-element.d.ts +6 -12
  659. package/option/option/option-base-element.d.ts.map +1 -1
  660. package/option/option/option-base-element.js +57 -64
  661. package/option/option/option.component.d.ts +5 -2
  662. package/option/option/option.component.d.ts.map +1 -1
  663. package/option/option/option.component.js +18 -21
  664. package/overlay/overlay-base-element.d.ts +1 -8
  665. package/overlay/overlay-base-element.d.ts.map +1 -1
  666. package/overlay/overlay-base-element.js +44 -55
  667. package/package.json +1 -1
  668. package/paginator/common/paginator-common.d.ts +3 -7
  669. package/paginator/common/paginator-common.d.ts.map +1 -1
  670. package/paginator/common/paginator-common.js +43 -55
  671. package/popover/popover/popover.component.d.ts +3 -3
  672. package/popover/popover/popover.component.d.ts.map +1 -1
  673. package/popover/popover/popover.component.js +35 -32
  674. package/popover/popover-trigger/popover-trigger.component.d.ts +1 -0
  675. package/popover/popover-trigger/popover-trigger.component.d.ts.map +1 -1
  676. package/radio-button/common/radio-button-common.d.ts +4 -2
  677. package/radio-button/common/radio-button-common.d.ts.map +1 -1
  678. package/radio-button/radio-button/radio-button.component.d.ts +6 -2
  679. package/radio-button/radio-button/radio-button.component.d.ts.map +1 -1
  680. package/radio-button/radio-button/radio-button.component.js +43 -31
  681. package/radio-button/radio-button-group/radio-button-group.component.d.ts +8 -6
  682. package/radio-button/radio-button-group/radio-button-group.component.d.ts.map +1 -1
  683. package/radio-button/radio-button-group/radio-button-group.component.js +24 -26
  684. package/radio-button/radio-button-panel/radio-button-panel.component.d.ts +6 -2
  685. package/radio-button/radio-button-panel/radio-button-panel.component.d.ts.map +1 -1
  686. package/radio-button/radio-button-panel/radio-button-panel.component.js +46 -34
  687. package/select/select.component.d.ts +14 -12
  688. package/select/select.component.d.ts.map +1 -1
  689. package/select/select.component.js +130 -113
  690. package/sidebar/icon-sidebar/icon-sidebar.component.d.ts +4 -2
  691. package/sidebar/icon-sidebar/icon-sidebar.component.d.ts.map +1 -1
  692. package/sidebar/icon-sidebar/icon-sidebar.component.js +19 -20
  693. package/sidebar/icon-sidebar-button/icon-sidebar-button.component.d.ts +1 -0
  694. package/sidebar/icon-sidebar-button/icon-sidebar-button.component.d.ts.map +1 -1
  695. package/sidebar/sidebar/sidebar.component.js +1 -1
  696. package/sidebar/sidebar-close-button/sidebar-close-button.component.d.ts +2 -0
  697. package/sidebar/sidebar-close-button/sidebar-close-button.component.d.ts.map +1 -1
  698. package/sidebar/sidebar-close-button/sidebar-close-button.component.js +11 -9
  699. package/sidebar/sidebar-title/sidebar-title.component.d.ts +1 -0
  700. package/sidebar/sidebar-title/sidebar-title.component.d.ts.map +1 -1
  701. package/sidebar/sidebar-title/sidebar-title.component.js +17 -15
  702. package/slider/slider.component.d.ts +6 -15
  703. package/slider/slider.component.d.ts.map +1 -1
  704. package/slider/slider.component.js +71 -98
  705. package/standard-theme.css +41 -17
  706. package/stepper/step/step.component.d.ts +4 -1
  707. package/stepper/step/step.component.d.ts.map +1 -1
  708. package/stepper/step/step.component.js +5 -8
  709. package/stepper/step-label/step-label.component.d.ts +2 -0
  710. package/stepper/step-label/step-label.component.d.ts.map +1 -1
  711. package/stepper/step-label/step-label.component.js +12 -17
  712. package/stepper/stepper/stepper.component.d.ts +1 -1
  713. package/stepper/stepper/stepper.component.d.ts.map +1 -1
  714. package/stepper/stepper/stepper.component.js +8 -6
  715. package/table/table-wrapper/table-wrapper.component.d.ts +2 -1
  716. package/table/table-wrapper/table-wrapper.component.d.ts.map +1 -1
  717. package/table/table-wrapper/table-wrapper.component.js +19 -21
  718. package/tabs/tab/tab.component.d.ts +4 -1
  719. package/tabs/tab/tab.component.d.ts.map +1 -1
  720. package/tabs/tab/tab.component.js +10 -9
  721. package/tabs/tab-group/tab-group.component.d.ts.map +1 -1
  722. package/tabs/tab-group/tab-group.component.js +8 -8
  723. package/tabs/tab-label/tab-label.component.d.ts +2 -1
  724. package/tabs/tab-label/tab-label.component.d.ts.map +1 -1
  725. package/tabs/tab-label/tab-label.component.js +18 -18
  726. package/tag/tag/tag.component.d.ts +7 -3
  727. package/tag/tag/tag.component.d.ts.map +1 -1
  728. package/tag/tag/tag.component.js +75 -62
  729. package/tag/tag-group/tag-group.component.d.ts +7 -5
  730. package/tag/tag-group/tag-group.component.d.ts.map +1 -1
  731. package/tag/tag-group/tag-group.component.js +69 -64
  732. package/teaser-product/common/teaser-product-common.d.ts +4 -2
  733. package/teaser-product/common/teaser-product-common.d.ts.map +1 -1
  734. package/time-input/time-input.component.d.ts +29 -42
  735. package/time-input/time-input.component.d.ts.map +1 -1
  736. package/time-input/time-input.component.js +100 -143
  737. package/title/title-base.d.ts +4 -1
  738. package/title/title-base.d.ts.map +1 -1
  739. package/title/title-base.js +33 -34
  740. package/toast/toast.component.d.ts +3 -4
  741. package/toast/toast.component.d.ts.map +1 -1
  742. package/toast/toast.component.js +64 -70
  743. package/toggle/toggle/toggle.component.d.ts +13 -9
  744. package/toggle/toggle/toggle.component.d.ts.map +1 -1
  745. package/toggle/toggle/toggle.component.js +48 -49
  746. package/toggle/toggle-option/toggle-option.component.d.ts +5 -3
  747. package/toggle/toggle-option/toggle-option.component.d.ts.map +1 -1
  748. package/toggle/toggle-option/toggle-option.component.js +37 -39
  749. package/toggle-check/toggle-check.component.d.ts +5 -2
  750. package/toggle-check/toggle-check.component.d.ts.map +1 -1
  751. package/toggle-check/toggle-check.component.js +53 -43
  752. package/core/controllers/connected-abort-controller.d.ts +0 -14
  753. package/core/controllers/connected-abort-controller.d.ts.map +0 -1
  754. package/core/controllers/connected-abort-controller.js +0 -19
  755. package/core/decorators/date-converter.d.ts +0 -8
  756. package/core/decorators/date-converter.d.ts.map +0 -1
  757. package/core/decorators/date-converter.js +0 -17
  758. package/core/decorators/date-only-type.d.ts +0 -8
  759. package/core/decorators/date-only-type.d.ts.map +0 -1
  760. package/core/decorators/date-only-type.js +0 -10
  761. package/core/dom/find-referenced-element.d.ts +0 -8
  762. package/core/dom/find-referenced-element.d.ts.map +0 -1
  763. package/core/dom/find-referenced-element.js +0 -7
  764. package/core/dom/input-element.d.ts +0 -12
  765. package/core/dom/input-element.d.ts.map +0 -1
  766. package/core/dom/input-element.js +0 -12
  767. package/core/testing/scroll.d.ts +0 -7
  768. package/core/testing/scroll.d.ts.map +0 -1
  769. package/core/testing/scroll.js +0 -6
  770. package/development/core/controllers/connected-abort-controller.d.ts +0 -14
  771. package/development/core/controllers/connected-abort-controller.d.ts.map +0 -1
  772. package/development/core/controllers/connected-abort-controller.js +0 -25
  773. package/development/core/decorators/date-converter.d.ts +0 -8
  774. package/development/core/decorators/date-converter.d.ts.map +0 -1
  775. package/development/core/decorators/date-converter.js +0 -18
  776. package/development/core/decorators/date-only-type.d.ts +0 -8
  777. package/development/core/decorators/date-only-type.d.ts.map +0 -1
  778. package/development/core/decorators/date-only-type.js +0 -11
  779. package/development/core/dom/find-referenced-element.d.ts +0 -8
  780. package/development/core/dom/find-referenced-element.d.ts.map +0 -1
  781. package/development/core/dom/find-referenced-element.js +0 -15
  782. package/development/core/dom/input-element.d.ts +0 -12
  783. package/development/core/dom/input-element.d.ts.map +0 -1
  784. package/development/core/dom/input-element.js +0 -13
  785. package/development/core/testing/scroll.d.ts +0 -7
  786. package/development/core/testing/scroll.d.ts.map +0 -1
  787. package/development/core/testing/scroll.js +0 -8
@@ -11,8 +11,7 @@ import { customElement, property, state } from "lit/decorators.js";
11
11
  import { readConfig } from "../../core/config.js";
12
12
  import { SbbIdReferenceController, SbbLanguageController } from "../../core/controllers.js";
13
13
  import { defaultDateAdapter } from "../../core/datetime.js";
14
- import { forceType } from "../../core/decorators.js";
15
- import { findReferencedElement } from "../../core/dom.js";
14
+ import { forceType, plainDate } from "../../core/decorators.js";
16
15
  import { EventEmitter, forwardEvent } from "../../core/eventing.js";
17
16
  import { i18nDatePickerPlaceholder, i18nDateChangedTo } from "../../core/i18n.js";
18
17
  import { SbbDatepickerAssociationHostController } from "../common.js";
@@ -27,22 +26,11 @@ const style = css`:host {
27
26
  white-space: nowrap;
28
27
  width: 1px;
29
28
  }`;
30
- function getDatePicker(element, trigger) {
31
- var _a, _b;
32
- if (!trigger) {
33
- return (_b = (_a = element.closest) == null ? void 0 : _a.call(element, "sbb-form-field")) == null ? void 0 : _b.querySelector("sbb-datepicker");
34
- }
35
- return findReferencedElement(trigger);
36
- }
37
- const datepickerControlRegisteredEventFactory = () => new CustomEvent("datepickerControlRegistered", {
38
- bubbles: false,
39
- composed: true
40
- });
41
29
  let nextId = 0;
42
30
  let warningLogged = false;
43
31
  const isDateInput = (element) => (element == null ? void 0 : element.localName) === "sbb-date-input";
44
32
  let SbbDatepickerElement = (() => {
45
- var _wide_accessor_storage, _input_accessor_storage, __inputElement_accessor_storage, _a;
33
+ var _wide_accessor_storage, _input_accessor_storage, _now_accessor_storage, __inputElement_accessor_storage, _a;
46
34
  let _classDecorators = [customElement("sbb-datepicker")];
47
35
  let _classDescriptor;
48
36
  let _classExtraInitializers = [];
@@ -56,7 +44,9 @@ let SbbDatepickerElement = (() => {
56
44
  let _input_decorators;
57
45
  let _input_initializers = [];
58
46
  let _input_extraInitializers = [];
59
- let _set_now_decorators;
47
+ let _now_decorators;
48
+ let _now_initializers = [];
49
+ let _now_extraInitializers = [];
60
50
  let _set_valueAsDate_decorators;
61
51
  let __inputElement_decorators;
62
52
  let __inputElement_initializers = [];
@@ -67,11 +57,13 @@ let SbbDatepickerElement = (() => {
67
57
  super(...arguments);
68
58
  __privateAdd(this, _wide_accessor_storage);
69
59
  __privateAdd(this, _input_accessor_storage);
60
+ __privateAdd(this, _now_accessor_storage);
70
61
  __privateAdd(this, __inputElement_accessor_storage);
71
62
  __privateSet(this, _wide_accessor_storage, (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _wide_initializers, false)));
72
63
  this._dateFilter = __runInitializers(this, _wide_extraInitializers);
73
64
  __privateSet(this, _input_accessor_storage, __runInitializers(this, _input_initializers, null));
74
- this._now = __runInitializers(this, _input_extraInitializers);
65
+ __privateSet(this, _now_accessor_storage, (__runInitializers(this, _input_extraInitializers), __runInitializers(this, _now_initializers, null)));
66
+ this._valueAsDate = __runInitializers(this, _now_extraInitializers);
75
67
  __privateSet(this, __inputElement_accessor_storage, __runInitializers(this, __inputElement_initializers, null));
76
68
  this._change = (__runInitializers(this, __inputElement_extraInitializers), new EventEmitter(this, SbbDatepickerElement2.events.change, {
77
69
  bubbles: true
@@ -90,7 +82,7 @@ let SbbDatepickerElement = (() => {
90
82
  (_a3 = this._associationController) == null ? void 0 : _a3.updateControls();
91
83
  if (this.inputElement && !isDateInput(this.inputElement) && (mutationsList == null ? void 0 : mutationsList.some((e) => e.attributeName === "value"))) {
92
84
  const value = this.inputElement.getAttribute("value");
93
- this.valueAsDate = this._dateAdapter.parse(value, this.now) ?? value;
85
+ this.valueAsDate = this._dateAdapter.parse(value, this.now) ?? this._dateAdapter.deserialize(value);
94
86
  }
95
87
  }) : null;
96
88
  this._dateAdapter = ((_a2 = readConfig().datetime) == null ? void 0 : _a2.dateAdapter) ?? defaultDateAdapter;
@@ -129,24 +121,25 @@ let SbbDatepickerElement = (() => {
129
121
  }
130
122
  /**
131
123
  * A configured date which acts as the current date instead of the real current date.
132
- * Recommended for testing purposes.
124
+ * Only recommended for testing purposes.
133
125
  */
134
- set now(value) {
135
- this._now = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
136
- }
137
126
  get now() {
138
- return this._now ?? this._dateAdapter.today();
127
+ return __privateGet(this, _now_accessor_storage);
128
+ }
129
+ set now(value) {
130
+ __privateSet(this, _now_accessor_storage, value);
139
131
  }
140
132
  /**
141
133
  * The currently selected date as a Date or custom date provider instance.
142
134
  * @deprecated Use valueAsDate from SbbDateInputElement.
143
135
  */
144
136
  set valueAsDate(value) {
137
+ value = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
145
138
  if (isDateInput(this.inputElement)) {
146
- this.inputElement.valueAsDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
139
+ this.inputElement.valueAsDate = value;
147
140
  return;
148
141
  }
149
- this._valueAsDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
142
+ this._valueAsDate = value;
150
143
  if (this._tryApplyFormatToInput()) {
151
144
  this.inputElement.dispatchEvent(new Event("blur", { composed: true }));
152
145
  }
@@ -212,7 +205,7 @@ let SbbDatepickerElement = (() => {
212
205
  * Whether a custom now is configured.
213
206
  */
214
207
  hasCustomNow() {
215
- return !!this._now;
208
+ return this._dateAdapter.compareDate(this.now, this._dateAdapter.today()) !== 0;
216
209
  }
217
210
  _configureInputElement() {
218
211
  var _a2, _b, _c, _d, _e, _f;
@@ -382,12 +375,12 @@ let SbbDatepickerElement = (() => {
382
375
  }
383
376
  return ((_c = this.dateFilter) == null ? void 0 : _c.call(this, this.valueAsDate)) ?? true;
384
377
  }
385
- }, _wide_accessor_storage = new WeakMap(), _input_accessor_storage = new WeakMap(), __inputElement_accessor_storage = new WeakMap(), _classThis = _a, (() => {
378
+ }, _wide_accessor_storage = new WeakMap(), _input_accessor_storage = new WeakMap(), _now_accessor_storage = new WeakMap(), __inputElement_accessor_storage = new WeakMap(), _classThis = _a, (() => {
386
379
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
387
380
  _wide_decorators = [forceType(), property({ type: Boolean })];
388
381
  _set_dateFilter_decorators = [property({ attribute: false })];
389
382
  _input_decorators = [property()];
390
- _set_now_decorators = [property()];
383
+ _now_decorators = [plainDate({ fallback: (a) => a.today() }), property()];
391
384
  _set_valueAsDate_decorators = [property({ attribute: false })];
392
385
  __inputElement_decorators = [state()];
393
386
  __esDecorate(_a, null, _wide_decorators, { kind: "accessor", name: "wide", static: false, private: false, access: { has: (obj) => "wide" in obj, get: (obj) => obj.wide, set: (obj, value) => {
@@ -399,9 +392,9 @@ let SbbDatepickerElement = (() => {
399
392
  __esDecorate(_a, null, _input_decorators, { kind: "accessor", name: "input", static: false, private: false, access: { has: (obj) => "input" in obj, get: (obj) => obj.input, set: (obj, value) => {
400
393
  obj.input = value;
401
394
  } }, metadata: _metadata }, _input_initializers, _input_extraInitializers);
402
- __esDecorate(_a, null, _set_now_decorators, { kind: "setter", name: "now", static: false, private: false, access: { has: (obj) => "now" in obj, set: (obj, value) => {
395
+ __esDecorate(_a, null, _now_decorators, { kind: "accessor", name: "now", static: false, private: false, access: { has: (obj) => "now" in obj, get: (obj) => obj.now, set: (obj, value) => {
403
396
  obj.now = value;
404
- } }, metadata: _metadata }, null, _instanceExtraInitializers);
397
+ } }, metadata: _metadata }, _now_initializers, _now_extraInitializers);
405
398
  __esDecorate(_a, null, _set_valueAsDate_decorators, { kind: "setter", name: "valueAsDate", static: false, private: false, access: { has: (obj) => "valueAsDate" in obj, set: (obj, value) => {
406
399
  obj.valueAsDate = value;
407
400
  } }, metadata: _metadata }, null, _instanceExtraInitializers);
@@ -420,8 +413,6 @@ let SbbDatepickerElement = (() => {
420
413
  return SbbDatepickerElement2 = _classThis;
421
414
  })();
422
415
  export {
423
- SbbDatepickerElement,
424
- datepickerControlRegisteredEventFactory,
425
- getDatePicker
416
+ SbbDatepickerElement
426
417
  };
427
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgaXNTZXJ2ZXIsXG4gIExpdEVsZW1lbnQsXG4gIHR5cGUgUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgcmVhZENvbmZpZyB9IGZyb20gJy4uLy4uL2NvcmUvY29uZmlnLmpzJztcbmltcG9ydCB7IFNiYklkUmVmZXJlbmNlQ29udHJvbGxlciwgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyB0eXBlIERhdGVBZGFwdGVyLCBkZWZhdWx0RGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGV0aW1lLmpzJztcbmltcG9ydCB7IGZvcmNlVHlwZSB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBmaW5kUmVmZXJlbmNlZEVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2RvbS5qcyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIGZvcndhcmRFdmVudCB9IGZyb20gJy4uLy4uL2NvcmUvZXZlbnRpbmcuanMnO1xuaW1wb3J0IHsgaTE4bkRhdGVDaGFuZ2VkVG8sIGkxOG5EYXRlUGlja2VyUGxhY2Vob2xkZXIgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEYXRlTGlrZSwgU2JiVmFsaWRhdGlvbkNoYW5nZUV2ZW50IH0gZnJvbSAnLi4vLi4vY29yZS9pbnRlcmZhY2VzLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRGF0ZUlucHV0RWxlbWVudCB9IGZyb20gJy4uLy4uL2RhdGUtaW5wdXQuanMnO1xuaW1wb3J0IHsgU2JiRGF0ZXBpY2tlckFzc29jaWF0aW9uSG9zdENvbnRyb2xsZXIsIHR5cGUgU2JiRGF0ZXBpY2tlckJ1dHRvbiB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVwaWNrZXJUb2dnbGVFbGVtZW50IH0gZnJvbSAnLi4vZGF0ZXBpY2tlci10b2dnbGUuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9kYXRlcGlja2VyLnNjc3M/bGl0JmlubGluZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JiSW5wdXRVcGRhdGVFdmVudCB7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgcmVhZG9ubHk/OiBib29sZWFuO1xuICBtaW4/OiBzdHJpbmcgfCBudW1iZXI7XG4gIG1heD86IHN0cmluZyB8IG51bWJlcjtcbn1cblxuLyoqXG4gKiBHaXZlbiBhIFNiYkRhdGVwaWNrZXJQcmV2aW91c0RheUVsZW1lbnQsIGEgU2JiRGF0ZXBpY2tlck5leHREYXlFbGVtZW50IG9yIGEgU2JiRGF0ZXBpY2tlclRvZ2dsZUVsZW1lbnQgY29tcG9uZW50LFxuICogaXQgcmV0dXJucyB0aGUgcmVsYXRlZCBTYmJEYXRlcGlja2VyRWxlbWVudCByZWZlcmVuY2UsIGlmIGV4aXN0cy5cbiAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHBvdGVudGlhbGx5IGNvbm5lY3RlZCB0byB0aGUgU2JiRGF0ZXBpY2tlckVsZW1lbnQuXG4gKiBAcGFyYW0gdHJpZ2dlciBUaGUgaWQgb3IgdGhlIHJlZmVyZW5jZSBvZiB0aGUgU2JiRGF0ZVBpY2tlci5cbiAqIEBkZXByZWNhdGVkIE5vIGxvbmdlciBpbiB1c2UuIFdpbGwgYmUgcmVtb3ZlZCB3aXRoIG5leHQgbWFqb3IgdmVyc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGVQaWNrZXI8VCA9IERhdGU+KFxuICBlbGVtZW50OiBTYmJEYXRlcGlja2VyQnV0dG9uPFQ+IHwgU2JiRGF0ZXBpY2tlclRvZ2dsZUVsZW1lbnQ8VD4sXG4gIHRyaWdnZXI/OiBzdHJpbmcgfCBIVE1MRWxlbWVudCxcbik6IFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gIGlmICghdHJpZ2dlcikge1xuICAgIHJldHVybiBlbGVtZW50XG4gICAgICAuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpXG4gICAgICA/LnF1ZXJ5U2VsZWN0b3I8U2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD4+KCdzYmItZGF0ZXBpY2tlcicpO1xuICB9XG5cbiAgcmV0dXJuIGZpbmRSZWZlcmVuY2VkRWxlbWVudDxTYmJEYXRlcGlja2VyRWxlbWVudDxUPj4odHJpZ2dlcik7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgTm8gbG9uZ2VyIGluIHVzZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGRhdGVwaWNrZXJDb250cm9sUmVnaXN0ZXJlZEV2ZW50RmFjdG9yeSA9ICgpOiBDdXN0b21FdmVudCA9PlxuICBuZXcgQ3VzdG9tRXZlbnQoJ2RhdGVwaWNrZXJDb250cm9sUmVnaXN0ZXJlZCcsIHtcbiAgICBidWJibGVzOiBmYWxzZSxcbiAgICBjb21wb3NlZDogdHJ1ZSxcbiAgfSk7XG5cbmxldCBuZXh0SWQgPSAwO1xubGV0IHdhcm5pbmdMb2dnZWQgPSBmYWxzZTtcbmNvbnN0IGlzRGF0ZUlucHV0ID0gPFQ+KFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCB8IEhUTUxJbnB1dEVsZW1lbnQgfCBTYmJEYXRlSW5wdXRFbGVtZW50PFQ+IHwgbnVsbCxcbik6IGVsZW1lbnQgaXMgU2JiRGF0ZUlucHV0RWxlbWVudDxUPiA9PiBlbGVtZW50Py5sb2NhbE5hbWUgPT09ICdzYmItZGF0ZS1pbnB1dCc7XG5cbi8qKlxuICogQ29tYmluZWQgd2l0aCBhIG5hdGl2ZSBpbnB1dCwgaXQgZGlzcGxheXMgdGhlIGlucHV0J3MgdmFsdWUgYXMgYSBmb3JtYXR0ZWQgZGF0ZS5cbiAqXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBjaGFuZ2UgLSBOb3RpZmllcyB0aGF0IHRoZSBjb25uZWN0ZWQgaW5wdXQgaGFzIGNoYW5nZXMuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBpbnB1dCAtIE5vdGlmaWVzIHRoYXQgdGhlIGNvbm5lY3RlZCBpbnB1dCBmaXJlZCB0aGUgaW5wdXQgZXZlbnQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNiYklucHV0VXBkYXRlRXZlbnQ+fSBpbnB1dFVwZGF0ZWQgLSBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBpbnB1dCBjb25uZWN0ZWQgdG8gdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gZGF0ZVBpY2tlclVwZGF0ZWQgLSBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBkYXRlcGlja2VyIGhhdmUgY2hhbmdlcy5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8U2JiVmFsaWRhdGlvbkNoYW5nZUV2ZW50Pn0gdmFsaWRhdGlvbkNoYW5nZSAtIEVtaXRzIHdoZW5ldmVyIHRoZSBpbnRlcm5hbCB2YWxpZGF0aW9uIHN0YXRlIGNoYW5nZXMuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kYXRlcGlja2VyJylcbmNsYXNzIFNiYkRhdGVwaWNrZXJFbGVtZW50PFQgPSBEYXRlPiBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgY2hhbmdlOiAnY2hhbmdlJyxcbiAgICBpbnB1dFVwZGF0ZWQ6ICdpbnB1dFVwZGF0ZWQnLFxuICAgIGRhdGVQaWNrZXJVcGRhdGVkOiAnZGF0ZVBpY2tlclVwZGF0ZWQnLFxuICAgIHZhbGlkYXRpb25DaGFuZ2U6ICd2YWxpZGF0aW9uQ2hhbmdlJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKiogSWYgc2V0IHRvIHRydWUsIHR3byBtb250aHMgYXJlIGRpc3BsYXllZC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHdpZGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB1c2VkIHRvIGZpbHRlciBvdXQgZGF0ZXMuXG4gICAqIEBkZXByZWNhdGVkIFVzZSBkYXRlRmlsdGVyIGZyb20gU2JiRGF0ZUlucHV0RWxlbWVudC5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSlcbiAgcHVibGljIHNldCBkYXRlRmlsdGVyKHZhbHVlOiAoZGF0ZTogVCB8IG51bGwpID0+IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kYXRlRmlsdGVyID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIGdldCBkYXRlRmlsdGVyKCk6IChkYXRlOiBUIHwgbnVsbCkgPT4gYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuX2RhdGVGaWx0ZXIgPz9cbiAgICAgIChpc0RhdGVJbnB1dCh0aGlzLmlucHV0RWxlbWVudCkgPyB0aGlzLmlucHV0RWxlbWVudC5kYXRlRmlsdGVyIDogbnVsbCkgPz9cbiAgICAgICgoKSA9PiB0cnVlKVxuICAgICk7XG4gIH1cbiAgcHJpdmF0ZSBfZGF0ZUZpbHRlcj86IChkYXRlOiBUIHwgbnVsbCkgPT4gYm9vbGVhbjtcblxuICAvLyBUT0RPOiBSZXBsYWNlIEhUTUxFbGVtZW50IGJ5IEhUTUxJbnB1dEVsZW1lbnQgfCBTYmJEYXRlSW5wdXRFbGVtZW50XG4gIC8qKlxuICAgKiBSZWZlcmVuY2Ugb2YgdGhlIHNiYi1kYXRlLWlucHV0IGluc3RhbmNlIG9yIHRoZSBuYXRpdmUgaW5wdXQgY29ubmVjdGVkIHRvIHRoZSBkYXRlcGlja2VyLlxuICAgKiBJZiBnaXZlbiBhIHN0cmluZywgaXQgd2lsbCBiZSB0cmVhdGVkIGFzIGFuIGlkIHJlZmVyZW5jZSBhbmQgYW4gYXR0ZW1wdCBpc1xuICAgKiBtYWRlIHRvIGJlIHJlc29sdmVkIGZvciB0aGUgY29udGFpbmluZyBkb2N1bWVudCBmcmFnbWVudC5cbiAgICogSWYgZ2l2ZW4gYSBIVE1MRWxlbWVudCBpbnN0YW5jZSwgaXQgd2lsbCBiZSB1c2VkIGFzIGlzLlxuICAgKi9cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIGlucHV0OiBzdHJpbmcgfCBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBBIGNvbmZpZ3VyZWQgZGF0ZSB3aGljaCBhY3RzIGFzIHRoZSBjdXJyZW50IGRhdGUgaW5zdGVhZCBvZiB0aGUgcmVhbCBjdXJyZW50IGRhdGUuXG4gICAqIFJlY29tbWVuZGVkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLlxuICAgKi9cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIHNldCBub3codmFsdWU6IFNiYkRhdGVMaWtlPFQ+IHwgbnVsbCkge1xuICAgIHRoaXMuX25vdyA9IHRoaXMuX2RhdGVBZGFwdGVyLmdldFZhbGlkRGF0ZU9yTnVsbCh0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSkpO1xuICB9XG4gIHB1YmxpYyBnZXQgbm93KCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9ub3cgPz8gdGhpcy5fZGF0ZUFkYXB0ZXIudG9kYXkoKTtcbiAgfVxuICBwcml2YXRlIF9ub3c/OiBUIHwgbnVsbDtcblxuICAvKipcbiAgICogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBkYXRlIGFzIGEgRGF0ZSBvciBjdXN0b20gZGF0ZSBwcm92aWRlciBpbnN0YW5jZS5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIHZhbHVlQXNEYXRlIGZyb20gU2JiRGF0ZUlucHV0RWxlbWVudC5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSlcbiAgcHVibGljIHNldCB2YWx1ZUFzRGF0ZSh2YWx1ZTogU2JiRGF0ZUxpa2U8VD4gfCBudWxsKSB7XG4gICAgaWYgKGlzRGF0ZUlucHV0KHRoaXMuaW5wdXRFbGVtZW50KSkge1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQudmFsdWVBc0RhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwoXG4gICAgICAgIHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdmFsdWVBc0RhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwodGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpKTtcbiAgICBpZiAodGhpcy5fdHJ5QXBwbHlGb3JtYXRUb0lucHV0KCkpIHtcbiAgICAgIC8vIEVtaXQgYmx1ciBldmVudCB3aGVuIHZhbHVlIGlzIGNoYW5nZWQgcHJvZ3JhbW1hdGljYWxseSB0byBub3RpZnlcbiAgICAgIC8vIGZyYW1ld29ya3MgdGhhdCByZWx5IG9uIHRoYXQgZXZlbnQgdG8gdXBkYXRlIGZvcm0gc3RhdHVzLlxuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQhLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdibHVyJywgeyBjb21wb3NlZDogdHJ1ZSB9KSk7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBnZXQgdmFsdWVBc0RhdGUoKTogVCB8IG51bGwge1xuICAgIGlmIChpc0RhdGVJbnB1dCh0aGlzLmlucHV0RWxlbWVudCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmlucHV0RWxlbWVudC52YWx1ZUFzRGF0ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fdmFsdWVBc0RhdGUgPz8gbnVsbDtcbiAgfVxuICBwcml2YXRlIF92YWx1ZUFzRGF0ZT86IFQgfCBudWxsO1xuXG4gIC8qKiBUaGUgcmVzb2x2ZWQgYXNzb2NpYXRlZCBpbnB1dCBlbGVtZW50LCBhcyBkZWZpbmVkIGJ5IGBpbnB1dGAuICovXG4gIHB1YmxpYyBnZXQgaW5wdXRFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBTYmJEYXRlSW5wdXRFbGVtZW50PFQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0RWxlbWVudDtcbiAgfVxuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9pbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBTYmJEYXRlSW5wdXRFbGVtZW50PFQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIE5vdGlmaWVzIHRoYXQgdGhlIGNvbm5lY3RlZCBpbnB1dCBoYXMgY2hhbmdlcy4gKi9cbiAgcHJpdmF0ZSBfY2hhbmdlOiBFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKHRoaXMsIFNiYkRhdGVwaWNrZXJFbGVtZW50LmV2ZW50cy5jaGFuZ2UsIHtcbiAgICBidWJibGVzOiB0cnVlLFxuICB9KTtcblxuICAvKiogTm90aWZpZXMgdGhhdCB0aGUgYXR0cmlidXRlcyBvZiB0aGUgaW5wdXQgY29ubmVjdGVkIHRvIHRoZSBkYXRlcGlja2VyIGhhdmUgY2hhbmdlcy4gKi9cbiAgcHJpdmF0ZSBfaW5wdXRVcGRhdGVkOiBFdmVudEVtaXR0ZXI8U2JiSW5wdXRVcGRhdGVFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiRGF0ZXBpY2tlckVsZW1lbnQuZXZlbnRzLmlucHV0VXBkYXRlZCxcbiAgICB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUgfSxcbiAgKTtcblxuICAvKiogTm90aWZpZXMgdGhhdCB0aGUgYXR0cmlidXRlcyBvZiB0aGUgZGF0ZXBpY2tlciBoYXZlIGNoYW5nZXMuICovXG4gIHByaXZhdGUgX2RhdGVQaWNrZXJVcGRhdGVkOiBFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiRGF0ZXBpY2tlckVsZW1lbnQuZXZlbnRzLmRhdGVQaWNrZXJVcGRhdGVkLFxuICAgIHtcbiAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgIH0sXG4gICk7XG5cbiAgLyoqIEVtaXRzIHdoZW5ldmVyIHRoZSBpbnRlcm5hbCB2YWxpZGF0aW9uIHN0YXRlIGNoYW5nZXMuICovXG4gIHByaXZhdGUgX3ZhbGlkYXRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxTYmJWYWxpZGF0aW9uQ2hhbmdlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYkRhdGVwaWNrZXJFbGVtZW50LmV2ZW50cy52YWxpZGF0aW9uQ2hhbmdlLFxuICApO1xuXG4gIHByaXZhdGUgX2lucHV0RWxlbWVudFBsYWNlaG9sZGVyTXV0YWJsZSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2lucHV0QWJvcnRDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9pbnB1dElkUmVmZXJlbmNlQ29udHJvbGxlciA9IG5ldyBTYmJJZFJlZmVyZW5jZUNvbnRyb2xsZXIodGhpcywgJ2lucHV0Jyk7XG5cbiAgcHJpdmF0ZSBfaW5wdXRPYnNlcnZlciA9ICFpc1NlcnZlclxuICAgID8gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9uc0xpc3QpID0+IHtcbiAgICAgICAgdGhpcy5fZW1pdElucHV0VXBkYXRlZCgpO1xuICAgICAgICB0aGlzLl9hc3NvY2lhdGlvbkNvbnRyb2xsZXI/LnVwZGF0ZUNvbnRyb2xzKCk7XG4gICAgICAgIC8vIFRPRE86IERlY2lkZSB3aGV0aGVyIHRvIHJlbW92ZSB0aGlzIGxvZ2ljIGJ5IGFkZGluZyBhIHZhbHVlIHByb3BlcnR5IHRvIHRoZSBkYXRlcGlja2VyLlxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQgJiZcbiAgICAgICAgICAhaXNEYXRlSW5wdXQodGhpcy5pbnB1dEVsZW1lbnQpICYmXG4gICAgICAgICAgbXV0YXRpb25zTGlzdD8uc29tZSgoZSkgPT4gZS5hdHRyaWJ1dGVOYW1lID09PSAndmFsdWUnKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuaW5wdXRFbGVtZW50LmdldEF0dHJpYnV0ZSgndmFsdWUnKTtcbiAgICAgICAgICB0aGlzLnZhbHVlQXNEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIucGFyc2UodmFsdWUsIHRoaXMubm93KSA/PyB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICA6IG51bGw7XG5cbiAgcHJpdmF0ZSBfZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPFQ+ID0gcmVhZENvbmZpZygpLmRhdGV0aW1lPy5kYXRlQWRhcHRlciA/PyBkZWZhdWx0RGF0ZUFkYXB0ZXI7XG5cbiAgcHJpdmF0ZSBfbGFuZ3VhZ2UgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9hc3NvY2lhdGlvbkNvbnRyb2xsZXIgPSBuZXcgU2JiRGF0ZXBpY2tlckFzc29jaWF0aW9uSG9zdENvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICB0aGlzLmlkIHx8PSBgc2JiLWRhdGVwaWNrZXItJHsrK25leHRJZH1gO1xuICAgIHRoaXMuX2NvbmZpZ3VyZUlucHV0RWxlbWVudCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlcXVlc3RVcGRhdGUoXG4gICAgbmFtZT86IFByb3BlcnR5S2V5LFxuICAgIG9sZFZhbHVlPzogdW5rbm93bixcbiAgICBvcHRpb25zPzogUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgKTogdm9pZCB7XG4gICAgc3VwZXIucmVxdWVzdFVwZGF0ZShuYW1lLCBvbGRWYWx1ZSwgb3B0aW9ucyk7XG4gICAgaWYgKHRoaXMuaGFzVXBkYXRlZCAmJiAhbmFtZSAmJiB0aGlzLmlucHV0RWxlbWVudCkge1xuICAgICAgaWYgKHRoaXMuX2lucHV0RWxlbWVudFBsYWNlaG9sZGVyTXV0YWJsZSkge1xuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5wbGFjZWhvbGRlciA9IGkxOG5EYXRlUGlja2VyUGxhY2Vob2xkZXJbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF07XG4gICAgICB9XG4gICAgICBpZiAodGhpcy52YWx1ZUFzRGF0ZSkge1xuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC52YWx1ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmZvcm1hdCh0aGlzLnZhbHVlQXNEYXRlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFpc1NlcnZlciAmJiAoIW5hbWUgfHwgbmFtZSA9PT0gJ2lucHV0JykgJiYgdGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICB0aGlzLl9jb25maWd1cmVJbnB1dEVsZW1lbnQoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChcbiAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnd2lkZScpIHx8XG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2RhdGVGaWx0ZXInKSB8fFxuICAgICAgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdub3cnKVxuICAgICkge1xuICAgICAgdGhpcy5fYXNzb2NpYXRpb25Db250cm9sbGVyLnVwZGF0ZUNvbnRyb2xzKCk7XG4gICAgICB0aGlzLl9kYXRlUGlja2VyVXBkYXRlZC5lbWl0KCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3ZhbHVlQXNEYXRlJykpIHtcbiAgICAgIHRoaXMuX3NldEFyaWFMaXZlTWVzc2FnZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2lucHV0T2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9pbnB1dEVsZW1lbnQgPSBudWxsO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIHRoaXMuX3NldEFyaWFMaXZlTWVzc2FnZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBXaGV0aGVyIGEgY3VzdG9tIG5vdyBpcyBjb25maWd1cmVkLlxuICAgKi9cbiAgcHVibGljIGhhc0N1c3RvbU5vdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9ub3c7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWd1cmVJbnB1dEVsZW1lbnQoKTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID1cbiAgICAgIHRoaXMuaW5wdXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50IHx8XG4gICAgICAodGhpcy5pbnB1dCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIGlzRGF0ZUlucHV0PFQ+KHRoaXMuaW5wdXQpKVxuICAgICAgICA/IHRoaXMuaW5wdXRcbiAgICAgICAgOiAoKHRoaXMuX2lucHV0SWRSZWZlcmVuY2VDb250cm9sbGVyLmZpbmQoKSBhcyBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCkgPz9cbiAgICAgICAgICB0aGlzLmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKT8ucXVlcnlTZWxlY3RvcjxIVE1MSW5wdXRFbGVtZW50PihcbiAgICAgICAgICAgICdpbnB1dCxzYmItZGF0ZS1pbnB1dCcsXG4gICAgICAgICAgKSA/P1xuICAgICAgICAgIG51bGwpO1xuICAgIGlmIChpbnB1dEVsZW1lbnQgPT09IHRoaXMuaW5wdXRFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5faW5wdXRPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuX2lucHV0RWxlbWVudCA9IGlucHV0RWxlbWVudDtcblxuICAgIGlmICghdGhpcy5pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpc05hdGl2ZUlucHV0ID0gIWlzRGF0ZUlucHV0KHRoaXMuaW5wdXRFbGVtZW50KTtcbiAgICBpZiAoaXNOYXRpdmVJbnB1dCAmJiBpbXBvcnQubWV0YS5lbnYuREVWICYmICF3YXJuaW5nTG9nZ2VkKSB7XG4gICAgICB3YXJuaW5nTG9nZ2VkID0gdHJ1ZTtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ1VzaW5nIDxzYmItZGF0ZXBpY2tlcj4gd2l0aCBhIG5hdGl2ZSA8aW5wdXQ+IGlzIGRlcHJlY2F0ZWQuIFVzZSBhIDxzYmItZGF0ZS1pbnB1dD4gaW5zdGVhZCBvZiA8aW5wdXQ+LicsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX2lucHV0T2JzZXJ2ZXI/Lm9ic2VydmUodGhpcy5pbnB1dEVsZW1lbnQsIHtcbiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydkaXNhYmxlZCcsICdyZWFkb25seScsICdtaW4nLCAnbWF4JywgJ3ZhbHVlJ10sXG4gICAgfSk7XG5cbiAgICBpZiAoaXNOYXRpdmVJbnB1dCkge1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50UGxhY2Vob2xkZXJNdXRhYmxlID0gIXRoaXMuaW5wdXRFbGVtZW50LnBsYWNlaG9sZGVyO1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQudHlwZSA9ICd0ZXh0JztcbiAgICAgIGlmICh0aGlzLl9pbnB1dEVsZW1lbnRQbGFjZWhvbGRlck11dGFibGUpIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQucGxhY2Vob2xkZXIgPSBpMThuRGF0ZVBpY2tlclBsYWNlaG9sZGVyW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnM6IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zID0geyBzaWduYWw6IHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLnNpZ25hbCB9O1xuICAgIHRoaXMuaW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnaW5wdXQnLFxuICAgICAgKGUpID0+IHtcbiAgICAgICAgZm9yd2FyZEV2ZW50KGUsIHRoaXMpO1xuICAgICAgICB0aGlzLl9wYXJzZUlucHV0KCk7XG4gICAgICB9LFxuICAgICAgb3B0aW9ucyxcbiAgICApO1xuICAgIHRoaXMuaW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHRoaXMuX2hhbmRsZUlucHV0Q2hhbmdlKCksIG9wdGlvbnMpO1xuICAgIHRoaXMuaW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnybVjaGFuZ2UnLFxuICAgICAgKCkgPT4gdGhpcy5fYXNzb2NpYXRpb25Db250cm9sbGVyPy51cGRhdGVDb250cm9scygpLFxuICAgICAgb3B0aW9ucyxcbiAgICApO1xuICAgIHRoaXMuX3BhcnNlSW5wdXQodHJ1ZSk7XG4gICAgdGhpcy5fdHJ5QXBwbHlGb3JtYXRUb0lucHV0KCk7XG4gICAgdGhpcy5fdmFsaWRhdGVEYXRlKCk7XG4gICAgdGhpcy5fZW1pdElucHV0VXBkYXRlZCgpO1xuICAgIHRoaXMuX2Fzc29jaWF0aW9uQ29udHJvbGxlcj8udXBkYXRlQ29udHJvbHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2VtaXRJbnB1dFVwZGF0ZWQoKTogdm9pZCB7XG4gICAgY29uc3QgeyBkaXNhYmxlZCwgcmVhZE9ubHk6IHJlYWRvbmx5LCBtaW46IG1pblZhbHVlLCBtYXg6IG1heFZhbHVlIH0gPSB0aGlzLmlucHV0RWxlbWVudCA/PyB7fTtcbiAgICBjb25zdCBtaW4gPSAoXG4gICAgICBtaW5WYWx1ZSAmJiB0eXBlb2YgbWluVmFsdWUgIT09ICdzdHJpbmcnID8gdGhpcy5fZGF0ZUFkYXB0ZXIudG9Jc284NjAxKG1pblZhbHVlKSA6IG1pblZhbHVlXG4gICAgKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgbWF4ID0gKFxuICAgICAgbWF4VmFsdWUgJiYgdHlwZW9mIG1heFZhbHVlICE9PSAnc3RyaW5nJyA/IHRoaXMuX2RhdGVBZGFwdGVyLnRvSXNvODYwMShtYXhWYWx1ZSkgOiBtYXhWYWx1ZVxuICAgICkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHRoaXMuX2lucHV0VXBkYXRlZC5lbWl0KHsgZGlzYWJsZWQsIHJlYWRvbmx5LCBtaW4sIG1heCB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUlucHV0Q2hhbmdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl90cnlBcHBseUZvcm1hdFRvSW5wdXQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl92YWxpZGF0ZURhdGUoKTtcbiAgICB0aGlzLl9zZXRBcmlhTGl2ZU1lc3NhZ2UoKTtcbiAgICB0aGlzLl9jaGFuZ2UuZW1pdCgpO1xuICAgIHRoaXMuX2Fzc29jaWF0aW9uQ29udHJvbGxlcj8udXBkYXRlQ29udHJvbHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3RyeUFwcGx5Rm9ybWF0VG9JbnB1dCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaW5wdXRFbGVtZW50IHx8IGlzRGF0ZUlucHV0KHRoaXMuaW5wdXRFbGVtZW50KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB0aGlzLnZhbHVlQXNEYXRlID8gdGhpcy5fZGF0ZUFkYXB0ZXIuZm9ybWF0KHRoaXMudmFsdWVBc0RhdGUhKSA6ICcnO1xuICAgIGlmIChmb3JtYXR0ZWREYXRlICYmIHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlICE9PSBmb3JtYXR0ZWREYXRlKSB7XG4gICAgICAvLyBJbiBvcmRlciB0byBzdXBwb3J0IFJlYWN0IG9uQ2hhbmdlIGV2ZW50LCB3ZSBoYXZlIHRvIGdldCB0aGUgc2V0dGVyIGFuZCBjYWxsIGl0LlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xMTYwMCNpc3N1ZWNvbW1lbnQtMzQ1ODEzMTMwXG4gICAgICBjb25zdCBzZXRWYWx1ZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFRNTElucHV0RWxlbWVudC5wcm90b3R5cGUsICd2YWx1ZScpIS5zZXQhO1xuICAgICAgc2V0VmFsdWUuY2FsbCh0aGlzLmlucHV0RWxlbWVudCwgZm9ybWF0dGVkRGF0ZSk7XG5cbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IElucHV0RXZlbnQoJ2lucHV0JywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSk7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF92YWxpZGF0ZURhdGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlucHV0RWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlzRW1wdHlPclZhbGlkID0gIXRoaXMuaW5wdXRFbGVtZW50LnZhbHVlIHx8IHRoaXMuX2lzRGF0ZUF2YWlsYWJsZSgpO1xuICAgIGNvbnN0IHdhc1ZhbGlkID0gIXRoaXMuaW5wdXRFbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZGF0YS1zYmItaW52YWxpZCcpO1xuICAgIHRoaXMuaW5wdXRFbGVtZW50LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1zYmItaW52YWxpZCcsICFpc0VtcHR5T3JWYWxpZCk7XG4gICAgaWYgKHdhc1ZhbGlkICE9PSBpc0VtcHR5T3JWYWxpZCkge1xuICAgICAgdGhpcy5fdmFsaWRhdGlvbkNoYW5nZS5lbWl0KHsgdmFsaWQ6IGlzRW1wdHlPclZhbGlkIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlSW5wdXQoZGVzZXJpYWxpemVBc0ZhbGxiYWNrID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAoaXNEYXRlSW5wdXQodGhpcy5pbnB1dEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmlucHV0RWxlbWVudCEudmFsdWU7XG4gICAgLy8gV2UgYXJlIGFzc2lnbmluZyBkaXJlY3RseSB0byB0aGUgcHJpdmF0ZSBiYWNraW5nIHByb3BlcnR5IG9mIHZhbHVlQXNEYXRlXG4gICAgLy8gYXMgd2UgZG9uJ3Qgd2FudCB0byB0cmlnZ2VyIGEgYmx1ciBldmVudCBkdXJpbmcgdGhpcyB0aW1lLlxuICAgIHRoaXMuX3ZhbHVlQXNEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKFxuICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIucGFyc2UodmFsdWUsIHRoaXMubm93KSxcbiAgICApO1xuICAgIGlmIChkZXNlcmlhbGl6ZUFzRmFsbGJhY2sgJiYgIXRoaXMuX3ZhbHVlQXNEYXRlKSB7XG4gICAgICB0aGlzLl92YWx1ZUFzRGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmdldFZhbGlkRGF0ZU9yTnVsbChcbiAgICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXRBcmlhTGl2ZU1lc3NhZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgY29udGFpbmVyRWxlbWVudDogSFRNTFBhcmFncmFwaEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkID1cbiAgICAgIHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3Rvcj8uPEhUTUxQYXJhZ3JhcGhFbGVtZW50PignI3N0YXR1cy1jb250YWluZXInKTtcblxuICAgIGlmICghY29udGFpbmVyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMudmFsdWVBc0RhdGUpIHtcbiAgICAgIGNvbnRhaW5lckVsZW1lbnQuaW5uZXJUZXh0ID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5mb3JtYXQodGhpcy52YWx1ZUFzRGF0ZSwgeyB3ZWVrZGF5U3R5bGU6ICdsb25nJyB9KTtcbiAgICAgIGNvbnRhaW5lckVsZW1lbnQuaW5uZXJUZXh0ID0gYCR7aTE4bkRhdGVDaGFuZ2VkVG9bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7ZGF0ZX1gO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYDxwIGlkPVwic3RhdHVzLWNvbnRhaW5lclwiIHJvbGU9XCJzdGF0dXNcIj48L3A+YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBmaXJzdCBhdmFpbGFibGUgZGF0ZSBiZWZvcmUgdGhlIGdpdmVuIG9uZSxcbiAgICogY29uc2lkZXJpbmcgdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50IGBkYXRlRmlsdGVyYCBwcm9wZXJ0eSBhbmQgYG1pbmAgcGFyYW1ldGVyIChlLmcuIGZyb20gdGhlIHNlbGYtbmFtZWQgaW5wdXQncyBhdHRyaWJ1dGUpLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZSBmb3IgY2FsY3VsYXRpb25zLlxuICAgKi9cbiAgcHVibGljIGZpbmRQcmV2aW91c0F2YWlsYWJsZURhdGUoZGF0ZTogVCk6IFQge1xuICAgIGNvbnN0IHByZXZpb3VzRGF0ZSA9IHRoaXMuX2ZpbmRBdmFpbGFibGVEYXRlKGRhdGUsIC0xKTtcbiAgICBjb25zdCBkYXRlTWluID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodGhpcy5pbnB1dEVsZW1lbnQ/Lm1pbik7XG5cbiAgICBpZiAoXG4gICAgICAhZGF0ZU1pbiB8fFxuICAgICAgKHRoaXMuX2RhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1pbikgJiZcbiAgICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUocHJldmlvdXNEYXRlLCBkYXRlTWluKSA+PSAwKVxuICAgICkge1xuICAgICAgcmV0dXJuIHByZXZpb3VzRGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgZmlyc3QgYXZhaWxhYmxlIGRhdGUgYWZ0ZXIgdGhlIGdpdmVuIG9uZSxcbiAgICogY29uc2lkZXJpbmcgdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50IGBkYXRlRmlsdGVyYCBwcm9wZXJ0eSBhbmQgYG1heGAgcGFyYW1ldGVyIChlLmcuIGZyb20gdGhlIHNlbGYtbmFtZWQgaW5wdXQncyBhdHRyaWJ1dGUpLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZSBmb3IgY2FsY3VsYXRpb25zLlxuICAgKi9cbiAgcHVibGljIGZpbmROZXh0QXZhaWxhYmxlRGF0ZShkYXRlOiBUKTogVCB7XG4gICAgY29uc3QgbmV4dERhdGUgPSB0aGlzLl9maW5kQXZhaWxhYmxlRGF0ZShkYXRlLCAxKTtcbiAgICBjb25zdCBkYXRlTWF4ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodGhpcy5pbnB1dEVsZW1lbnQ/Lm1heCk7XG5cbiAgICBpZiAoXG4gICAgICAhZGF0ZU1heCB8fFxuICAgICAgKHRoaXMuX2RhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1heCkgJiYgdGhpcy5fZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUobmV4dERhdGUsIGRhdGVNYXgpIDw9IDApXG4gICAgKSB7XG4gICAgICByZXR1cm4gbmV4dERhdGU7XG4gICAgfVxuICAgIHJldHVybiBkYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGZpcnN0IGF2YWlsYWJsZSBkYXRlIGJlZm9yZSBvciBhZnRlciBhIGdpdmVuIG9uZSwgY29uc2lkZXJpbmcgdGhlIGBkYXRlRmlsdGVyYCBwcm9wZXJ0eS5cbiAgICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUgZm9yIGNhbGN1bGF0aW9ucy5cbiAgICogQHBhcmFtIGRlbHRhIFRoZSBudW1iZXIgb2YgZGF5cyB0byBhZGQvc3VidHJhY3QgZnJvbSB0aGUgc3RhcnRpbmcgb25lLlxuICAgKi9cbiAgcHJpdmF0ZSBfZmluZEF2YWlsYWJsZURhdGUoZGF0ZTogVCwgZGVsdGE6IG51bWJlcik6IFQge1xuICAgIGxldCBhdmFpbGFibGVEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuYWRkQ2FsZW5kYXJEYXlzKGRhdGUsIGRlbHRhKTtcblxuICAgIGlmICh0aGlzLmRhdGVGaWx0ZXIpIHtcbiAgICAgIHdoaWxlICghdGhpcy5kYXRlRmlsdGVyKGF2YWlsYWJsZURhdGUpKSB7XG4gICAgICAgIGF2YWlsYWJsZURhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5hZGRDYWxlbmRhckRheXMoYXZhaWxhYmxlRGF0ZSwgZGVsdGEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhdmFpbGFibGVEYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB2YWx1ZUFzRGF0ZSBpcyB2YWxpZCwgY29uc2lkZXJpbmcgdGhlIFNiYkRhdGVwaWNrZXJFbGVtZW50IGBkYXRlRmlsdGVyYCBwcm9wZXJ0eVxuICAgKiBhbmQgYG1pbmAgYW5kIGBtYXhgIHBhcmFtZXRlcnMgKGUuZy4gZnJvbSB0aGUgc2VsZi1uYW1lZCBpbnB1dCdzIGF0dHJpYnV0ZXMpLlxuICAgKi9cbiAgcHJpdmF0ZSBfaXNEYXRlQXZhaWxhYmxlKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy52YWx1ZUFzRGF0ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGVNaW4gPSB0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh0aGlzLmlucHV0RWxlbWVudD8ubWluKTtcbiAgICBjb25zdCBkYXRlTWF4ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodGhpcy5pbnB1dEVsZW1lbnQ/Lm1heCk7XG5cbiAgICBpZiAoXG4gICAgICAodGhpcy5fZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlTWluKSAmJlxuICAgICAgICB0aGlzLl9kYXRlQWRhcHRlci5jb21wYXJlRGF0ZSh0aGlzLnZhbHVlQXNEYXRlLCBkYXRlTWluISkgPCAwKSB8fFxuICAgICAgKHRoaXMuX2RhdGVBZGFwdGVyLmlzVmFsaWQoZGF0ZU1heCkgJiZcbiAgICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGUodGhpcy52YWx1ZUFzRGF0ZSwgZGF0ZU1heCEpID4gMClcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kYXRlRmlsdGVyPy4odGhpcy52YWx1ZUFzRGF0ZSkgPz8gdHJ1ZTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWRhdGVwaWNrZXInOiBTYmJEYXRlcGlja2VyRWxlbWVudDtcbiAgfVxuXG4gIGludGVyZmFjZSBHbG9iYWxFdmVudEhhbmRsZXJzRXZlbnRNYXAge1xuICAgIGlucHV0VXBkYXRlZDogQ3VzdG9tRXZlbnQ8U2JiSW5wdXRVcGRhdGVFdmVudD47XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJTYmJEYXRlcGlja2VyRWxlbWVudCIsIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVDZ0IsU0FBQSxjQUNkLFNBQ0EsU0FBOEI7O0FBRTlCLE1BQUksQ0FBQyxTQUFTO0FBQ1osWUFBTyxtQkFDSixZQURJLGlDQUNNLHNCQUROLG1CQUVILGNBQXVDO0FBQUEsRUFBZ0I7QUFHN0QsU0FBTyxzQkFBK0MsT0FBTztBQUMvRDtBQUtPLE1BQU0sMENBQTBDLE1BQ3JELElBQUksWUFBWSwrQkFBK0I7QUFBQSxFQUM3QyxTQUFTO0FBQUEsRUFDVCxVQUFVO0FBQ1gsQ0FBQTtBQUVILElBQUksU0FBUztBQUNiLElBQUksZ0JBQWdCO0FBQ3BCLE1BQU0sY0FBYyxDQUNsQixhQUNzQyxtQ0FBUyxlQUFjO0lBYXpELHdCQUFvQixNQUFBOzswQkFEekIsY0FBYyxnQkFBZ0IsQ0FBQzs7OztvQkFDYTs7Ozs7Ozs7Ozs7Ozs7QUFBUkEsTUFBQUEseUJBQUEsbUJBQVEsWUFBVTtBQUFBOzs7QUFZckQ7QUEyQkE7QUFnRFM7QUF2RkwseUJBQUEseUJBQUEsa0JBQUEsTUFBQSwwQkFBQSxHQVk0QixrQkFBQSxNQUFBLG9CQUFBLEtBQUs7QUFpQjdCLFdBQUEsY0FBMEMsa0JBQUEsTUFBQSx1QkFBQTtBQVVsQyx5QkFBQSx5QkFBQSxrQkFBQSxNQUFBLHFCQUFxQyxJQUFJO0FBYWpELFdBQUEsT0FBZ0Isa0JBQUEsTUFBQSx3QkFBQTtBQW1DRSx5QkFBQSxpQ0FBQSxrQkFBQSxNQUFBLDZCQUFrRSxJQUFJO0FBR2pGLFdBQUEsV0FBQSxrQkFBQSxNQUFBLGdDQUFBLEdBQWlCLElBQUksYUFBYSxNQUFNQSxzQkFBcUIsT0FBTyxRQUFRO0FBQUEsUUFDekYsU0FBUztBQUFBLE1BQUEsQ0FDVjtBQUdPLFdBQWEsZ0JBQXNDLElBQUksYUFD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
418
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgaXNTZXJ2ZXIsXG4gIExpdEVsZW1lbnQsXG4gIHR5cGUgUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgcmVhZENvbmZpZyB9IGZyb20gJy4uLy4uL2NvcmUvY29uZmlnLmpzJztcbmltcG9ydCB7IFNiYklkUmVmZXJlbmNlQ29udHJvbGxlciwgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyB0eXBlIERhdGVBZGFwdGVyLCBkZWZhdWx0RGF0ZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGV0aW1lLmpzJztcbmltcG9ydCB7IGZvcmNlVHlwZSwgcGxhaW5EYXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgZm9yd2FyZEV2ZW50IH0gZnJvbSAnLi4vLi4vY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBpMThuRGF0ZUNoYW5nZWRUbywgaTE4bkRhdGVQaWNrZXJQbGFjZWhvbGRlciB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlZhbGlkYXRpb25DaGFuZ2VFdmVudCB9IGZyb20gJy4uLy4uL2NvcmUvaW50ZXJmYWNlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVJbnB1dEVsZW1lbnQgfSBmcm9tICcuLi8uLi9kYXRlLWlucHV0LmpzJztcbmltcG9ydCB7IFNiYkRhdGVwaWNrZXJBc3NvY2lhdGlvbkhvc3RDb250cm9sbGVyIH0gZnJvbSAnLi4vY29tbW9uLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZGF0ZXBpY2tlci5zY3NzP2xpdCZpbmxpbmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNiYklucHV0VXBkYXRlRXZlbnQge1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5PzogYm9vbGVhbjtcbiAgbWluPzogc3RyaW5nIHwgbnVtYmVyO1xuICBtYXg/OiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbmxldCBuZXh0SWQgPSAwO1xubGV0IHdhcm5pbmdMb2dnZWQgPSBmYWxzZTtcbmNvbnN0IGlzRGF0ZUlucHV0ID0gPFQ+KFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCB8IEhUTUxJbnB1dEVsZW1lbnQgfCBTYmJEYXRlSW5wdXRFbGVtZW50PFQ+IHwgbnVsbCxcbik6IGVsZW1lbnQgaXMgU2JiRGF0ZUlucHV0RWxlbWVudDxUPiA9PiBlbGVtZW50Py5sb2NhbE5hbWUgPT09ICdzYmItZGF0ZS1pbnB1dCc7XG5cbi8qKlxuICogQ29tYmluZWQgd2l0aCBhIG5hdGl2ZSBpbnB1dCwgaXQgZGlzcGxheXMgdGhlIGlucHV0J3MgdmFsdWUgYXMgYSBmb3JtYXR0ZWQgZGF0ZS5cbiAqXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBjaGFuZ2UgLSBOb3RpZmllcyB0aGF0IHRoZSBjb25uZWN0ZWQgaW5wdXQgaGFzIGNoYW5nZXMuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBpbnB1dCAtIE5vdGlmaWVzIHRoYXQgdGhlIGNvbm5lY3RlZCBpbnB1dCBmaXJlZCB0aGUgaW5wdXQgZXZlbnQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNiYklucHV0VXBkYXRlRXZlbnQ+fSBpbnB1dFVwZGF0ZWQgLSBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBpbnB1dCBjb25uZWN0ZWQgdG8gdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gZGF0ZVBpY2tlclVwZGF0ZWQgLSBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBkYXRlcGlja2VyIGhhdmUgY2hhbmdlcy5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8U2JiVmFsaWRhdGlvbkNoYW5nZUV2ZW50Pn0gdmFsaWRhdGlvbkNoYW5nZSAtIEVtaXRzIHdoZW5ldmVyIHRoZSBpbnRlcm5hbCB2YWxpZGF0aW9uIHN0YXRlIGNoYW5nZXMuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kYXRlcGlja2VyJylcbmNsYXNzIFNiYkRhdGVwaWNrZXJFbGVtZW50PFQgPSBEYXRlPiBleHRlbmRzIExpdEVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgY2hhbmdlOiAnY2hhbmdlJyxcbiAgICBpbnB1dFVwZGF0ZWQ6ICdpbnB1dFVwZGF0ZWQnLFxuICAgIGRhdGVQaWNrZXJVcGRhdGVkOiAnZGF0ZVBpY2tlclVwZGF0ZWQnLFxuICAgIHZhbGlkYXRpb25DaGFuZ2U6ICd2YWxpZGF0aW9uQ2hhbmdlJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKiogSWYgc2V0IHRvIHRydWUsIHR3byBtb250aHMgYXJlIGRpc3BsYXllZC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHdpZGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB1c2VkIHRvIGZpbHRlciBvdXQgZGF0ZXMuXG4gICAqIEBkZXByZWNhdGVkIFVzZSBkYXRlRmlsdGVyIGZyb20gU2JiRGF0ZUlucHV0RWxlbWVudC5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSlcbiAgcHVibGljIHNldCBkYXRlRmlsdGVyKHZhbHVlOiAoZGF0ZTogVCB8IG51bGwpID0+IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kYXRlRmlsdGVyID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIGdldCBkYXRlRmlsdGVyKCk6IChkYXRlOiBUIHwgbnVsbCkgPT4gYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuX2RhdGVGaWx0ZXIgPz9cbiAgICAgIChpc0RhdGVJbnB1dCh0aGlzLmlucHV0RWxlbWVudCkgPyB0aGlzLmlucHV0RWxlbWVudC5kYXRlRmlsdGVyIDogbnVsbCkgPz9cbiAgICAgICgoKSA9PiB0cnVlKVxuICAgICk7XG4gIH1cbiAgcHJpdmF0ZSBfZGF0ZUZpbHRlcj86IChkYXRlOiBUIHwgbnVsbCkgPT4gYm9vbGVhbjtcblxuICAvLyBUT0RPOiBSZXBsYWNlIEhUTUxFbGVtZW50IGJ5IEhUTUxJbnB1dEVsZW1lbnQgfCBTYmJEYXRlSW5wdXRFbGVtZW50XG4gIC8qKlxuICAgKiBSZWZlcmVuY2Ugb2YgdGhlIHNiYi1kYXRlLWlucHV0IGluc3RhbmNlIG9yIHRoZSBuYXRpdmUgaW5wdXQgY29ubmVjdGVkIHRvIHRoZSBkYXRlcGlja2VyLlxuICAgKiBJZiBnaXZlbiBhIHN0cmluZywgaXQgd2lsbCBiZSB0cmVhdGVkIGFzIGFuIGlkIHJlZmVyZW5jZSBhbmQgYW4gYXR0ZW1wdCBpc1xuICAgKiBtYWRlIHRvIGJlIHJlc29sdmVkIGZvciB0aGUgY29udGFpbmluZyBkb2N1bWVudCBmcmFnbWVudC5cbiAgICogSWYgZ2l2ZW4gYSBIVE1MRWxlbWVudCBpbnN0YW5jZSwgaXQgd2lsbCBiZSB1c2VkIGFzIGlzLlxuICAgKi9cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIGlucHV0OiBzdHJpbmcgfCBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBBIGNvbmZpZ3VyZWQgZGF0ZSB3aGljaCBhY3RzIGFzIHRoZSBjdXJyZW50IGRhdGUgaW5zdGVhZCBvZiB0aGUgcmVhbCBjdXJyZW50IGRhdGUuXG4gICAqIE9ubHkgcmVjb21tZW5kZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuXG4gICAqL1xuICBAcGxhaW5EYXRlKHsgZmFsbGJhY2s6IChhKSA9PiBhLnRvZGF5KCkgfSlcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIG5vdzogVCA9IG51bGwhO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIGRhdGUgYXMgYSBEYXRlIG9yIGN1c3RvbSBkYXRlIHByb3ZpZGVyIGluc3RhbmNlLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdmFsdWVBc0RhdGUgZnJvbSBTYmJEYXRlSW5wdXRFbGVtZW50LlxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiBmYWxzZSB9KVxuICBwdWJsaWMgc2V0IHZhbHVlQXNEYXRlKHZhbHVlOiBUIHwgbnVsbCkge1xuICAgIHZhbHVlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XG4gICAgaWYgKGlzRGF0ZUlucHV0KHRoaXMuaW5wdXRFbGVtZW50KSkge1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQudmFsdWVBc0RhdGUgPSB2YWx1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl92YWx1ZUFzRGF0ZSA9IHZhbHVlO1xuICAgIGlmICh0aGlzLl90cnlBcHBseUZvcm1hdFRvSW5wdXQoKSkge1xuICAgICAgLy8gRW1pdCBibHVyIGV2ZW50IHdoZW4gdmFsdWUgaXMgY2hhbmdlZCBwcm9ncmFtbWF0aWNhbGx5IHRvIG5vdGlmeVxuICAgICAgLy8gZnJhbWV3b3JrcyB0aGF0IHJlbHkgb24gdGhhdCBldmVudCB0byB1cGRhdGUgZm9ybSBzdGF0dXMuXG4gICAgICB0aGlzLmlucHV0RWxlbWVudCEuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2JsdXInLCB7IGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgICB9XG4gIH1cbiAgcHVibGljIGdldCB2YWx1ZUFzRGF0ZSgpOiBUIHwgbnVsbCB7XG4gICAgaWYgKGlzRGF0ZUlucHV0KHRoaXMuaW5wdXRFbGVtZW50KSkge1xuICAgICAgcmV0dXJuIHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlQXNEYXRlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl92YWx1ZUFzRGF0ZSA/PyBudWxsO1xuICB9XG4gIHByaXZhdGUgX3ZhbHVlQXNEYXRlPzogVCB8IG51bGw7XG5cbiAgLyoqIFRoZSByZXNvbHZlZCBhc3NvY2lhdGVkIGlucHV0IGVsZW1lbnQsIGFzIGRlZmluZWQgYnkgYGlucHV0YC4gKi9cbiAgcHVibGljIGdldCBpbnB1dEVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IFNiYkRhdGVJbnB1dEVsZW1lbnQ8VD4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRFbGVtZW50O1xuICB9XG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2lucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IFNiYkRhdGVJbnB1dEVsZW1lbnQ8VD4gfCBudWxsID0gbnVsbDtcblxuICAvKiogTm90aWZpZXMgdGhhdCB0aGUgY29ubmVjdGVkIGlucHV0IGhhcyBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF9jaGFuZ2U6IEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIodGhpcywgU2JiRGF0ZXBpY2tlckVsZW1lbnQuZXZlbnRzLmNoYW5nZSwge1xuICAgIGJ1YmJsZXM6IHRydWUsXG4gIH0pO1xuXG4gIC8qKiBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBpbnB1dCBjb25uZWN0ZWQgdG8gdGhlIGRhdGVwaWNrZXIgaGF2ZSBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIF9pbnB1dFVwZGF0ZWQ6IEV2ZW50RW1pdHRlcjxTYmJJbnB1dFVwZGF0ZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMuaW5wdXRVcGRhdGVkLFxuICAgIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9LFxuICApO1xuXG4gIC8qKiBOb3RpZmllcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBkYXRlcGlja2VyIGhhdmUgY2hhbmdlcy4gKi9cbiAgcHJpdmF0ZSBfZGF0ZVBpY2tlclVwZGF0ZWQ6IEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJEYXRlcGlja2VyRWxlbWVudC5ldmVudHMuZGF0ZVBpY2tlclVwZGF0ZWQsXG4gICAge1xuICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgfSxcbiAgKTtcblxuICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGludGVybmFsIHZhbGlkYXRpb24gc3RhdGUgY2hhbmdlcy4gKi9cbiAgcHJpdmF0ZSBfdmFsaWRhdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPFNiYlZhbGlkYXRpb25DaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiRGF0ZXBpY2tlckVsZW1lbnQuZXZlbnRzLnZhbGlkYXRpb25DaGFuZ2UsXG4gICk7XG5cbiAgcHJpdmF0ZSBfaW5wdXRFbGVtZW50UGxhY2Vob2xkZXJNdXRhYmxlID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfaW5wdXRBYm9ydENvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX2lucHV0SWRSZWZlcmVuY2VDb250cm9sbGVyID0gbmV3IFNiYklkUmVmZXJlbmNlQ29udHJvbGxlcih0aGlzLCAnaW5wdXQnKTtcblxuICBwcml2YXRlIF9pbnB1dE9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zTGlzdCkgPT4ge1xuICAgICAgICB0aGlzLl9lbWl0SW5wdXRVcGRhdGVkKCk7XG4gICAgICAgIHRoaXMuX2Fzc29jaWF0aW9uQ29udHJvbGxlcj8udXBkYXRlQ29udHJvbHMoKTtcbiAgICAgICAgLy8gVE9ETzogRGVjaWRlIHdoZXRoZXIgdG8gcmVtb3ZlIHRoaXMgbG9naWMgYnkgYWRkaW5nIGEgdmFsdWUgcHJvcGVydHkgdG8gdGhlIGRhdGVwaWNrZXIuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudCAmJlxuICAgICAgICAgICFpc0RhdGVJbnB1dCh0aGlzLmlucHV0RWxlbWVudCkgJiZcbiAgICAgICAgICBtdXRhdGlvbnNMaXN0Py5zb21lKChlKSA9PiBlLmF0dHJpYnV0ZU5hbWUgPT09ICd2YWx1ZScpXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5pbnB1dEVsZW1lbnQuZ2V0QXR0cmlidXRlKCd2YWx1ZScpO1xuICAgICAgICAgIHRoaXMudmFsdWVBc0RhdGUgPVxuICAgICAgICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIucGFyc2UodmFsdWUsIHRoaXMubm93KSA/PyB0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgOiBudWxsO1xuXG4gIHByaXZhdGUgX2RhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxUPiA9IHJlYWRDb25maWcoKS5kYXRldGltZT8uZGF0ZUFkYXB0ZXIgPz8gZGVmYXVsdERhdGVBZGFwdGVyO1xuXG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfYXNzb2NpYXRpb25Db250cm9sbGVyID0gbmV3IFNiYkRhdGVwaWNrZXJBc3NvY2lhdGlvbkhvc3RDb250cm9sbGVyKHRoaXMpO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuXG4gICAgdGhpcy5pZCB8fD0gYHNiYi1kYXRlcGlja2VyLSR7KytuZXh0SWR9YDtcbiAgICB0aGlzLl9jb25maWd1cmVJbnB1dEVsZW1lbnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuICAgIGlmICh0aGlzLmhhc1VwZGF0ZWQgJiYgIW5hbWUgJiYgdGhpcy5pbnB1dEVsZW1lbnQpIHtcbiAgICAgIGlmICh0aGlzLl9pbnB1dEVsZW1lbnRQbGFjZWhvbGRlck11dGFibGUpIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQucGxhY2Vob2xkZXIgPSBpMThuRGF0ZVBpY2tlclBsYWNlaG9sZGVyW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudmFsdWVBc0RhdGUpIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUgPSB0aGlzLl9kYXRlQWRhcHRlci5mb3JtYXQodGhpcy52YWx1ZUFzRGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghaXNTZXJ2ZXIgJiYgKCFuYW1lIHx8IG5hbWUgPT09ICdpbnB1dCcpICYmIHRoaXMuaGFzVXBkYXRlZCkge1xuICAgICAgdGhpcy5fY29uZmlndXJlSW5wdXRFbGVtZW50KCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoXG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3dpZGUnKSB8fFxuICAgICAgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkYXRlRmlsdGVyJykgfHxcbiAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbm93JylcbiAgICApIHtcbiAgICAgIHRoaXMuX2Fzc29jaWF0aW9uQ29udHJvbGxlci51cGRhdGVDb250cm9scygpO1xuICAgICAgdGhpcy5fZGF0ZVBpY2tlclVwZGF0ZWQuZW1pdCgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCd2YWx1ZUFzRGF0ZScpKSB7XG4gICAgICB0aGlzLl9zZXRBcmlhTGl2ZU1lc3NhZ2UoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9pbnB1dE9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5faW5wdXRFbGVtZW50ID0gbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLl9zZXRBcmlhTGl2ZU1lc3NhZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogV2hldGhlciBhIGN1c3RvbSBub3cgaXMgY29uZmlndXJlZC5cbiAgICovXG4gIHB1YmxpYyBoYXNDdXN0b21Ob3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGVBZGFwdGVyLmNvbXBhcmVEYXRlKHRoaXMubm93LCB0aGlzLl9kYXRlQWRhcHRlci50b2RheSgpKSAhPT0gMDtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbmZpZ3VyZUlucHV0RWxlbWVudCgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPVxuICAgICAgdGhpcy5pbnB1dCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgfHxcbiAgICAgICh0aGlzLmlucHV0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgaXNEYXRlSW5wdXQ8VD4odGhpcy5pbnB1dCkpXG4gICAgICAgID8gdGhpcy5pbnB1dFxuICAgICAgICA6ICgodGhpcy5faW5wdXRJZFJlZmVyZW5jZUNvbnRyb2xsZXIuZmluZCgpIGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsKSA/P1xuICAgICAgICAgIHRoaXMuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpPy5xdWVyeVNlbGVjdG9yPEhUTUxJbnB1dEVsZW1lbnQ+KFxuICAgICAgICAgICAgJ2lucHV0LHNiYi1kYXRlLWlucHV0JyxcbiAgICAgICAgICApID8/XG4gICAgICAgICAgbnVsbCk7XG4gICAgaWYgKGlucHV0RWxlbWVudCA9PT0gdGhpcy5pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9pbnB1dE9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5faW5wdXRFbGVtZW50ID0gaW5wdXRFbGVtZW50O1xuXG4gICAgaWYgKCF0aGlzLmlucHV0RWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTmF0aXZlSW5wdXQgPSAhaXNEYXRlSW5wdXQodGhpcy5pbnB1dEVsZW1lbnQpO1xuICAgIGlmIChpc05hdGl2ZUlucHV0ICYmIGltcG9ydC5tZXRhLmVudi5ERVYgJiYgIXdhcm5pbmdMb2dnZWQpIHtcbiAgICAgIHdhcm5pbmdMb2dnZWQgPSB0cnVlO1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnVXNpbmcgPHNiYi1kYXRlcGlja2VyPiB3aXRoIGEgbmF0aXZlIDxpbnB1dD4gaXMgZGVwcmVjYXRlZC4gVXNlIGEgPHNiYi1kYXRlLWlucHV0PiBpbnN0ZWFkIG9mIDxpbnB1dD4uJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5faW5wdXRPYnNlcnZlcj8ub2JzZXJ2ZSh0aGlzLmlucHV0RWxlbWVudCwge1xuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ2Rpc2FibGVkJywgJ3JlYWRvbmx5JywgJ21pbicsICdtYXgnLCAndmFsdWUnXSxcbiAgICB9KTtcblxuICAgIGlmIChpc05hdGl2ZUlucHV0KSB7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnRQbGFjZWhvbGRlck11dGFibGUgPSAhdGhpcy5pbnB1dEVsZW1lbnQucGxhY2Vob2xkZXI7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC50eXBlID0gJ3RleHQnO1xuICAgICAgaWYgKHRoaXMuX2lucHV0RWxlbWVudFBsYWNlaG9sZGVyTXV0YWJsZSkge1xuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5wbGFjZWhvbGRlciA9IGkxOG5EYXRlUGlja2VyUGxhY2Vob2xkZXJbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9uczogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7IHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsIH07XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdpbnB1dCcsXG4gICAgICAoZSkgPT4ge1xuICAgICAgICBmb3J3YXJkRXZlbnQoZSwgdGhpcyk7XG4gICAgICAgIHRoaXMuX3BhcnNlSW5wdXQoKTtcbiAgICAgIH0sXG4gICAgICBvcHRpb25zLFxuICAgICk7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4gdGhpcy5faGFuZGxlSW5wdXRDaGFuZ2UoKSwgb3B0aW9ucyk7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICfJtWNoYW5nZScsXG4gICAgICAoKSA9PiB0aGlzLl9hc3NvY2lhdGlvbkNvbnRyb2xsZXI/LnVwZGF0ZUNvbnRyb2xzKCksXG4gICAgICBvcHRpb25zLFxuICAgICk7XG4gICAgdGhpcy5fcGFyc2VJbnB1dCh0cnVlKTtcbiAgICB0aGlzLl90cnlBcHBseUZvcm1hdFRvSW5wdXQoKTtcbiAgICB0aGlzLl92YWxpZGF0ZURhdGUoKTtcbiAgICB0aGlzLl9lbWl0SW5wdXRVcGRhdGVkKCk7XG4gICAgdGhpcy5fYXNzb2NpYXRpb25Db250cm9sbGVyPy51cGRhdGVDb250cm9scygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZW1pdElucHV0VXBkYXRlZCgpOiB2b2lkIHtcbiAgICBjb25zdCB7IGRpc2FibGVkLCByZWFkT25seTogcmVhZG9ubHksIG1pbjogbWluVmFsdWUsIG1heDogbWF4VmFsdWUgfSA9IHRoaXMuaW5wdXRFbGVtZW50ID8/IHt9O1xuICAgIGNvbnN0IG1pbiA9IChcbiAgICAgIG1pblZhbHVlICYmIHR5cGVvZiBtaW5WYWx1ZSAhPT0gJ3N0cmluZycgPyB0aGlzLl9kYXRlQWRhcHRlci50b0lzbzg2MDEobWluVmFsdWUpIDogbWluVmFsdWVcbiAgICApIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBtYXggPSAoXG4gICAgICBtYXhWYWx1ZSAmJiB0eXBlb2YgbWF4VmFsdWUgIT09ICdzdHJpbmcnID8gdGhpcy5fZGF0ZUFkYXB0ZXIudG9Jc284NjAxKG1heFZhbHVlKSA6IG1heFZhbHVlXG4gICAgKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgdGhpcy5faW5wdXRVcGRhdGVkLmVtaXQoeyBkaXNhYmxlZCwgcmVhZG9ubHksIG1pbiwgbWF4IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlSW5wdXRDaGFuZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RyeUFwcGx5Rm9ybWF0VG9JbnB1dCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3ZhbGlkYXRlRGF0ZSgpO1xuICAgIHRoaXMuX3NldEFyaWFMaXZlTWVzc2FnZSgpO1xuICAgIHRoaXMuX2NoYW5nZS5lbWl0KCk7XG4gICAgdGhpcy5fYXNzb2NpYXRpb25Db250cm9sbGVyPy51cGRhdGVDb250cm9scygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJ5QXBwbHlGb3JtYXRUb0lucHV0KCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5pbnB1dEVsZW1lbnQgfHwgaXNEYXRlSW5wdXQodGhpcy5pbnB1dEVsZW1lbnQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IHRoaXMudmFsdWVBc0RhdGUgPyB0aGlzLl9kYXRlQWRhcHRlci5mb3JtYXQodGhpcy52YWx1ZUFzRGF0ZSEpIDogJyc7XG4gICAgaWYgKGZvcm1hdHRlZERhdGUgJiYgdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUgIT09IGZvcm1hdHRlZERhdGUpIHtcbiAgICAgIC8vIEluIG9yZGVyIHRvIHN1cHBvcnQgUmVhY3Qgb25DaGFuZ2UgZXZlbnQsIHdlIGhhdmUgdG8gZ2V0IHRoZSBzZXR0ZXIgYW5kIGNhbGwgaXQuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzExNjAwI2lzc3VlY29tbWVudC0zNDU4MTMxMzBcbiAgICAgIGNvbnN0IHNldFZhbHVlID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihIVE1MSW5wdXRFbGVtZW50LnByb3RvdHlwZSwgJ3ZhbHVlJykhLnNldCE7XG4gICAgICBzZXRWYWx1ZS5jYWxsKHRoaXMuaW5wdXRFbGVtZW50LCBmb3JtYXR0ZWREYXRlKTtcblxuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgSW5wdXRFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgX3ZhbGlkYXRlRGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaW5wdXRFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaXNFbXB0eU9yVmFsaWQgPSAhdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUgfHwgdGhpcy5faXNEYXRlQXZhaWxhYmxlKCk7XG4gICAgY29uc3Qgd2FzVmFsaWQgPSAhdGhpcy5pbnB1dEVsZW1lbnQuaGFzQXR0cmlidXRlKCdkYXRhLXNiYi1pbnZhbGlkJyk7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCdkYXRhLXNiYi1pbnZhbGlkJywgIWlzRW1wdHlPclZhbGlkKTtcbiAgICBpZiAod2FzVmFsaWQgIT09IGlzRW1wdHlPclZhbGlkKSB7XG4gICAgICB0aGlzLl92YWxpZGF0aW9uQ2hhbmdlLmVtaXQoeyB2YWxpZDogaXNFbXB0eU9yVmFsaWQgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VJbnB1dChkZXNlcmlhbGl6ZUFzRmFsbGJhY2sgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmIChpc0RhdGVJbnB1dCh0aGlzLmlucHV0RWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuaW5wdXRFbGVtZW50IS52YWx1ZTtcbiAgICAvLyBXZSBhcmUgYXNzaWduaW5nIGRpcmVjdGx5IHRvIHRoZSBwcml2YXRlIGJhY2tpbmcgcHJvcGVydHkgb2YgdmFsdWVBc0RhdGVcbiAgICAvLyBhcyB3ZSBkb24ndCB3YW50IHRvIHRyaWdnZXIgYSBibHVyIGV2ZW50IGR1cmluZyB0aGlzIHRpbWUuXG4gICAgdGhpcy5fdmFsdWVBc0RhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwoXG4gICAgICB0aGlzLl9kYXRlQWRhcHRlci5wYXJzZSh2YWx1ZSwgdGhpcy5ub3cpLFxuICAgICk7XG4gICAgaWYgKGRlc2VyaWFsaXplQXNGYWxsYmFjayAmJiAhdGhpcy5fdmFsdWVBc0RhdGUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlQXNEYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKFxuICAgICAgICB0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldEFyaWFMaXZlTWVzc2FnZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjb250YWluZXJFbGVtZW50OiBIVE1MUGFyYWdyYXBoRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQgPVxuICAgICAgdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPy48SFRNTFBhcmFncmFwaEVsZW1lbnQ+KCcjc3RhdHVzLWNvbnRhaW5lcicpO1xuXG4gICAgaWYgKCFjb250YWluZXJFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICghdGhpcy52YWx1ZUFzRGF0ZSkge1xuICAgICAgY29udGFpbmVyRWxlbWVudC5pbm5lclRleHQgPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmZvcm1hdCh0aGlzLnZhbHVlQXNEYXRlLCB7IHdlZWtkYXlTdHlsZTogJ2xvbmcnIH0pO1xuICAgICAgY29udGFpbmVyRWxlbWVudC5pbm5lclRleHQgPSBgJHtpMThuRGF0ZUNoYW5nZWRUb1t0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0gJHtkYXRlfWA7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgPHAgaWQ9XCJzdGF0dXMtY29udGFpbmVyXCIgcm9sZT1cInN0YXR1c1wiPjwvcD5gO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIGZpcnN0IGF2YWlsYWJsZSBkYXRlIGJlZm9yZSB0aGUgZ2l2ZW4gb25lLFxuICAgKiBjb25zaWRlcmluZyB0aGUgU2JiRGF0ZXBpY2tlckVsZW1lbnQgYGRhdGVGaWx0ZXJgIHByb3BlcnR5IGFuZCBgbWluYCBwYXJhbWV0ZXIgKGUuZy4gZnJvbSB0aGUgc2VsZi1uYW1lZCBpbnB1dCdzIGF0dHJpYnV0ZSkuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlIGZvciBjYWxjdWxhdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgZmluZFByZXZpb3VzQXZhaWxhYmxlRGF0ZShkYXRlOiBUKTogVCB7XG4gICAgY29uc3QgcHJldmlvdXNEYXRlID0gdGhpcy5fZmluZEF2YWlsYWJsZURhdGUoZGF0ZSwgLTEpO1xuICAgIGNvbnN0IGRhdGVNaW4gPSB0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh0aGlzLmlucHV0RWxlbWVudD8ubWluKTtcblxuICAgIGlmIChcbiAgICAgICFkYXRlTWluIHx8XG4gICAgICAodGhpcy5fZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlTWluKSAmJlxuICAgICAgICB0aGlzLl9kYXRlQWRhcHRlci5jb21wYXJlRGF0ZShwcmV2aW91c0RhdGUsIGRhdGVNaW4pID49IDApXG4gICAgKSB7XG4gICAgICByZXR1cm4gcHJldmlvdXNEYXRlO1xuICAgIH1cbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBmaXJzdCBhdmFpbGFibGUgZGF0ZSBhZnRlciB0aGUgZ2l2ZW4gb25lLFxuICAgKiBjb25zaWRlcmluZyB0aGUgU2JiRGF0ZXBpY2tlckVsZW1lbnQgYGRhdGVGaWx0ZXJgIHByb3BlcnR5IGFuZCBgbWF4YCBwYXJhbWV0ZXIgKGUuZy4gZnJvbSB0aGUgc2VsZi1uYW1lZCBpbnB1dCdzIGF0dHJpYnV0ZSkuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlIGZvciBjYWxjdWxhdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgZmluZE5leHRBdmFpbGFibGVEYXRlKGRhdGU6IFQpOiBUIHtcbiAgICBjb25zdCBuZXh0RGF0ZSA9IHRoaXMuX2ZpbmRBdmFpbGFibGVEYXRlKGRhdGUsIDEpO1xuICAgIGNvbnN0IGRhdGVNYXggPSB0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh0aGlzLmlucHV0RWxlbWVudD8ubWF4KTtcblxuICAgIGlmIChcbiAgICAgICFkYXRlTWF4IHx8XG4gICAgICAodGhpcy5fZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlTWF4KSAmJiB0aGlzLl9kYXRlQWRhcHRlci5jb21wYXJlRGF0ZShuZXh0RGF0ZSwgZGF0ZU1heCkgPD0gMClcbiAgICApIHtcbiAgICAgIHJldHVybiBuZXh0RGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZmlyc3QgYXZhaWxhYmxlIGRhdGUgYmVmb3JlIG9yIGFmdGVyIGEgZ2l2ZW4gb25lLCBjb25zaWRlcmluZyB0aGUgYGRhdGVGaWx0ZXJgIHByb3BlcnR5LlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZSBmb3IgY2FsY3VsYXRpb25zLlxuICAgKiBAcGFyYW0gZGVsdGEgVGhlIG51bWJlciBvZiBkYXlzIHRvIGFkZC9zdWJ0cmFjdCBmcm9tIHRoZSBzdGFydGluZyBvbmUuXG4gICAqL1xuICBwcml2YXRlIF9maW5kQXZhaWxhYmxlRGF0ZShkYXRlOiBULCBkZWx0YTogbnVtYmVyKTogVCB7XG4gICAgbGV0IGF2YWlsYWJsZURhdGUgPSB0aGlzLl9kYXRlQWRhcHRlci5hZGRDYWxlbmRhckRheXMoZGF0ZSwgZGVsdGEpO1xuXG4gICAgaWYgKHRoaXMuZGF0ZUZpbHRlcikge1xuICAgICAgd2hpbGUgKCF0aGlzLmRhdGVGaWx0ZXIoYXZhaWxhYmxlRGF0ZSkpIHtcbiAgICAgICAgYXZhaWxhYmxlRGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmFkZENhbGVuZGFyRGF5cyhhdmFpbGFibGVEYXRlLCBkZWx0YSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGF2YWlsYWJsZURhdGU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHZhbHVlQXNEYXRlIGlzIHZhbGlkLCBjb25zaWRlcmluZyB0aGUgU2JiRGF0ZXBpY2tlckVsZW1lbnQgYGRhdGVGaWx0ZXJgIHByb3BlcnR5XG4gICAqIGFuZCBgbWluYCBhbmQgYG1heGAgcGFyYW1ldGVycyAoZS5nLiBmcm9tIHRoZSBzZWxmLW5hbWVkIGlucHV0J3MgYXR0cmlidXRlcykuXG4gICAqL1xuICBwcml2YXRlIF9pc0RhdGVBdmFpbGFibGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnZhbHVlQXNEYXRlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZU1pbiA9IHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHRoaXMuaW5wdXRFbGVtZW50Py5taW4pO1xuICAgIGNvbnN0IGRhdGVNYXggPSB0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh0aGlzLmlucHV0RWxlbWVudD8ubWF4KTtcblxuICAgIGlmIChcbiAgICAgICh0aGlzLl9kYXRlQWRhcHRlci5pc1ZhbGlkKGRhdGVNaW4pICYmXG4gICAgICAgIHRoaXMuX2RhdGVBZGFwdGVyLmNvbXBhcmVEYXRlKHRoaXMudmFsdWVBc0RhdGUsIGRhdGVNaW4hKSA8IDApIHx8XG4gICAgICAodGhpcy5fZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlTWF4KSAmJlxuICAgICAgICB0aGlzLl9kYXRlQWRhcHRlci5jb21wYXJlRGF0ZSh0aGlzLnZhbHVlQXNEYXRlLCBkYXRlTWF4ISkgPiAwKVxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRhdGVGaWx0ZXI/Lih0aGlzLnZhbHVlQXNEYXRlKSA/PyB0cnVlO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZGF0ZXBpY2tlcic6IFNiYkRhdGVwaWNrZXJFbGVtZW50O1xuICB9XG5cbiAgaW50ZXJmYWNlIEdsb2JhbEV2ZW50SGFuZGxlcnNFdmVudE1hcCB7XG4gICAgaW5wdXRVcGRhdGVkOiBDdXN0b21FdmVudDxTYmJJbnB1dFVwZGF0ZUV2ZW50PjtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlNiYkRhdGVwaWNrZXJFbGVtZW50IiwiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE4QkEsSUFBSSxTQUFTO0FBQ2IsSUFBSSxnQkFBZ0I7QUFDcEIsTUFBTSxjQUFjLENBQ2xCLGFBQ3NDLG1DQUFTLGVBQWM7SUFhekQsd0JBQW9CLE1BQUE7OzBCQUR6QixjQUFjLGdCQUFnQixDQUFDOzs7O29CQUNhOzs7Ozs7Ozs7Ozs7Ozs7O0FBQVJBLE1BQUFBLHlCQUFBLG1CQUFRLFlBQVU7QUFBQTs7O0FBWXJEO0FBMkJBO0FBUUE7QUFrQ1M7QUFqRkwseUJBQUEseUJBQUEsa0JBQUEsTUFBQSwwQkFBQSxHQVk0QixrQkFBQSxNQUFBLG9CQUFBLEtBQUs7QUFpQjdCLFdBQUEsY0FBMEMsa0JBQUEsTUFBQSx1QkFBQTtBQVVsQyx5QkFBQSx5QkFBQSxrQkFB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
@@ -2,12 +2,14 @@ import { CSSResultGroup } from 'lit';
2
2
  import { SbbDatepickerButton } from '../common.js';
3
3
  /**
4
4
  * Combined with a `sbb-datepicker`, it can be used to move the date ahead.
5
+ * @overrideType value - string
5
6
  */
6
7
  export declare class SbbDatepickerNextDayElement<T = Date> extends SbbDatepickerButton<T> {
7
8
  static styles: CSSResultGroup;
8
9
  protected iconName: string;
9
10
  protected i18nOffBoundaryDay: Record<string, string>;
10
11
  protected i18nSelectOffBoundaryDay: (currentDate: string) => Record<string, string>;
12
+ connectedCallback(): void;
11
13
  protected findAvailableDate(date: T): T;
12
14
  }
13
15
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker-next-day.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/datepicker/datepicker-next-day/datepicker-next-day.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAK1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAInD;;GAEG;AACH,qBAKM,2BAA2B,CAAC,CAAC,GAAG,IAAI,CAAE,SAAQ,mBAAmB,CAAC,CAAC,CAAC;IACxE,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,SAAS,CAAC,QAAQ,EAAE,MAAM,CAA+B;IACzD,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAe;IACnE,SAAS,CAAC,wBAAwB,kDAAqB;IAEvD,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC;CAIxC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,yBAAyB,EAAE,2BAA2B,CAAC;KACxD;CACF"}
1
+ {"version":3,"file":"datepicker-next-day.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/datepicker/datepicker-next-day/datepicker-next-day.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAI1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAInD;;;GAGG;AACH,qBAEM,2BAA2B,CAAC,CAAC,GAAG,IAAI,CAAE,SAAQ,mBAAmB,CAAC,CAAC,CAAC;IACxE,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,SAAS,CAAC,QAAQ,EAAE,MAAM,CAA+B;IACzD,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAe;IACnE,SAAS,CAAC,wBAAwB,kDAAqB;IAEvC,iBAAiB,IAAI,IAAI;IAKzC,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC;CAIxC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,yBAAyB,EAAE,2BAA2B,CAAC;KACxD;CACF"}
@@ -1,6 +1,5 @@
1
1
  import { __esDecorate, __runInitializers } from "tslib";
2
2
  import { customElement } from "lit/decorators.js";
3
- import { hostAttributes } from "../../core/decorators.js";
4
3
  import { i18nNextDay, i18nSelectNextDay } from "../../core/i18n.js";
5
4
  import { SbbDatepickerButton } from "../common.js";
6
5
  import { css } from "lit";
@@ -119,9 +118,7 @@ sbb-icon {
119
118
  }`;
120
119
  let SbbDatepickerNextDayElement = (() => {
121
120
  var _a;
122
- let _classDecorators = [customElement("sbb-datepicker-next-day"), hostAttributes({
123
- slot: "suffix"
124
- })];
121
+ let _classDecorators = [customElement("sbb-datepicker-next-day")];
125
122
  let _classDescriptor;
126
123
  let _classExtraInitializers = [];
127
124
  let _classThis;
@@ -133,8 +130,12 @@ let SbbDatepickerNextDayElement = (() => {
133
130
  this.i18nOffBoundaryDay = i18nNextDay;
134
131
  this.i18nSelectOffBoundaryDay = i18nSelectNextDay;
135
132
  }
133
+ connectedCallback() {
134
+ super.connectedCallback();
135
+ this.slot || (this.slot = "suffix");
136
+ }
136
137
  findAvailableDate(date) {
137
- return this.datePickerElement.findNextAvailableDate(date);
138
+ return this.datepicker.findNextAvailableDate(date);
138
139
  }
139
140
  }, _classThis = _a, (() => {
140
141
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
@@ -147,4 +148,4 @@ let SbbDatepickerNextDayElement = (() => {
147
148
  export {
148
149
  SbbDatepickerNextDayElement
149
150
  };
150
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1uZXh0LWRheS5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXItbmV4dC1kYXkvZGF0ZXBpY2tlci1uZXh0LWRheS5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBpMThuTmV4dERheSwgaTE4blNlbGVjdE5leHREYXkgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiRGF0ZXBpY2tlckJ1dHRvbiB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXItbmV4dC1kYXkuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgYHNiYi1kYXRlcGlja2VyYCwgaXQgY2FuIGJlIHVzZWQgdG8gbW92ZSB0aGUgZGF0ZSBhaGVhZC5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWRhdGVwaWNrZXItbmV4dC1kYXknKVxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgc2xvdDogJ3N1ZmZpeCcsXG59KVxuY2xhc3MgU2JiRGF0ZXBpY2tlck5leHREYXlFbGVtZW50PFQgPSBEYXRlPiBleHRlbmRzIFNiYkRhdGVwaWNrZXJCdXR0b248VD4ge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICBwcm90ZWN0ZWQgaWNvbk5hbWU6IHN0cmluZyA9ICdjaGV2cm9uLXNtYWxsLXJpZ2h0LXNtYWxsJztcbiAgcHJvdGVjdGVkIGkxOG5PZmZCb3VuZGFyeURheTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IGkxOG5OZXh0RGF5O1xuICBwcm90ZWN0ZWQgaTE4blNlbGVjdE9mZkJvdW5kYXJ5RGF5ID0gaTE4blNlbGVjdE5leHREYXk7XG5cbiAgcHJvdGVjdGVkIGZpbmRBdmFpbGFibGVEYXRlKGRhdGU6IFQpOiBUIHtcbiAgICAvLyBXaGVuIGNhbGxpbmcgZmluZEF2YWlsYWJsZURhdGUsIGRhdGVwaWNrZXJFbGVtZW50IGlzIGFsd2F5cyBkZWZpbmVkLlxuICAgIHJldHVybiB0aGlzLmRhdGVQaWNrZXJFbGVtZW50IS5maW5kTmV4dEF2YWlsYWJsZURhdGUoZGF0ZSk7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1kYXRlcGlja2VyLW5leHQtZGF5JzogU2JiRGF0ZXBpY2tlck5leHREYXlFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFpQk0sK0JBQTJCLE1BQUE7O0FBSmhDLE1BQUEsbUJBQUEsQ0FBQSxjQUFjLHlCQUF5QixHQUN2QyxlQUFlO0FBQUEsSUFDZCxNQUFNO0FBQUEsRUFBQSxDQUNQLENBQUM7Ozs7b0JBQ2tEO0FBQVIsRUFBQSxtQkFBUSxZQUFzQjtBQUFBOztBQUc5RCxXQUFRLFdBQVc7QUFDbkIsV0FBa0IscUJBQTJCO0FBQzdDLFdBQXdCLDJCQUFHO0FBQUEsSUFBQTtBQUFBLElBRTNCLGtCQUFrQixNQUFPO0FBRTFCLGFBQUEsS0FBSyxrQkFBbUIsc0JBQXNCLElBQUk7QUFBQSxJQUFBO0FBQUE7O0FBVDdELGlCQVdDLE1BQUEsbUJBQUEsRUFBQSxPQUFBLFdBQUEsR0FBQSxrQkFBQSxFQUFBLE1BQUEsU0FBQSxNQUFBLFdBQUEsTUFBQSxVQUFBLFVBQUEsR0FBQSxNQUFBLHVCQUFBOzs7UUFWd0IsR0FBTSxTQUFtQixPQUQ1QyxrQkFBMkIsWUFBQSx1QkFBQSxHQUFXOzs7In0=
151
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1uZXh0LWRheS5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXItbmV4dC1kYXkvZGF0ZXBpY2tlci1uZXh0LWRheS5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBpMThuTmV4dERheSwgaTE4blNlbGVjdE5leHREYXkgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiRGF0ZXBpY2tlckJ1dHRvbiB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXItbmV4dC1kYXkuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgYHNiYi1kYXRlcGlja2VyYCwgaXQgY2FuIGJlIHVzZWQgdG8gbW92ZSB0aGUgZGF0ZSBhaGVhZC5cbiAqIEBvdmVycmlkZVR5cGUgdmFsdWUgLSBzdHJpbmdcbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWRhdGVwaWNrZXItbmV4dC1kYXknKVxuY2xhc3MgU2JiRGF0ZXBpY2tlck5leHREYXlFbGVtZW50PFQgPSBEYXRlPiBleHRlbmRzIFNiYkRhdGVwaWNrZXJCdXR0b248VD4ge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICBwcm90ZWN0ZWQgaWNvbk5hbWU6IHN0cmluZyA9ICdjaGV2cm9uLXNtYWxsLXJpZ2h0LXNtYWxsJztcbiAgcHJvdGVjdGVkIGkxOG5PZmZCb3VuZGFyeURheTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IGkxOG5OZXh0RGF5O1xuICBwcm90ZWN0ZWQgaTE4blNlbGVjdE9mZkJvdW5kYXJ5RGF5ID0gaTE4blNlbGVjdE5leHREYXk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5zbG90IHx8PSAnc3VmZml4JztcbiAgfVxuXG4gIHByb3RlY3RlZCBmaW5kQXZhaWxhYmxlRGF0ZShkYXRlOiBUKTogVCB7XG4gICAgLy8gV2hlbiBjYWxsaW5nIGZpbmRBdmFpbGFibGVEYXRlLCBkYXRlcGlja2VyRWxlbWVudCBpcyBhbHdheXMgZGVmaW5lZC5cbiAgICByZXR1cm4gdGhpcy5kYXRlcGlja2VyIS5maW5kTmV4dEF2YWlsYWJsZURhdGUoZGF0ZSk7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1kYXRlcGlja2VyLW5leHQtZGF5JzogU2JiRGF0ZXBpY2tlck5leHREYXlFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWNNLCtCQUEyQixNQUFBOzswQkFEaEMsY0FBYyx5QkFBeUIsQ0FBQzs7OztvQkFDVztBQUFSLEVBQUEsbUJBQVEsWUFBc0I7QUFBQTs7QUFHOUQsV0FBUSxXQUFXO0FBQ25CLFdBQWtCLHFCQUEyQjtBQUM3QyxXQUF3QiwyQkFBRztBQUFBLElBQUE7QUFBQSxJQUVyQixvQkFBaUI7QUFDL0IsWUFBTSxrQkFBaUI7QUFDdkIsV0FBSyxTQUFMLEtBQUssT0FBUztBQUFBLElBQUE7QUFBQSxJQUdOLGtCQUFrQixNQUFPO0FBRTFCLGFBQUEsS0FBSyxXQUFZLHNCQUFzQixJQUFJO0FBQUEsSUFBQTtBQUFBOztBQWR0RCxpQkFnQkMsTUFBQSxtQkFBQSxFQUFBLE9BQUEsV0FBQSxHQUFBLGtCQUFBLEVBQUEsTUFBQSxTQUFBLE1BQUEsV0FBQSxNQUFBLFVBQUEsVUFBQSxHQUFBLE1BQUEsdUJBQUE7OztRQWZ3QixHQUFNLFNBQW1CLE9BRDVDLGtCQUEyQixZQUFBLHVCQUFBLEdBQVc7OzsifQ==
@@ -2,12 +2,14 @@ import { CSSResultGroup } from 'lit';
2
2
  import { SbbDatepickerButton } from '../common.js';
3
3
  /**
4
4
  * Combined with a `sbb-datepicker`, it can be used to move the date back.
5
+ * @overrideType value - string
5
6
  */
6
7
  export declare class SbbDatepickerPreviousDayElement<T = Date> extends SbbDatepickerButton<T> {
7
8
  static styles: CSSResultGroup;
8
9
  protected iconName: string;
9
10
  protected i18nOffBoundaryDay: Record<string, string>;
10
11
  protected i18nSelectOffBoundaryDay: (currentDate: string) => Record<string, string>;
12
+ connectedCallback(): void;
11
13
  protected findAvailableDate(date: T): T;
12
14
  }
13
15
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker-previous-day.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/datepicker/datepicker-previous-day/datepicker-previous-day.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAK1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAInD;;GAEG;AACH,qBAKM,+BAA+B,CAAC,CAAC,GAAG,IAAI,CAAE,SAAQ,mBAAmB,CAAC,CAAC,CAAC;IAC5E,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,SAAS,CAAC,QAAQ,EAAE,MAAM,CAA8B;IACxD,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAmB;IACvE,SAAS,CAAC,wBAAwB,kDAAyB;IAE3D,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC;CAIxC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,6BAA6B,EAAE,+BAA+B,CAAC;KAChE;CACF"}
1
+ {"version":3,"file":"datepicker-previous-day.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/datepicker/datepicker-previous-day/datepicker-previous-day.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAI1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAInD;;;GAGG;AACH,qBAEM,+BAA+B,CAAC,CAAC,GAAG,IAAI,CAAE,SAAQ,mBAAmB,CAAC,CAAC,CAAC;IAC5E,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,SAAS,CAAC,QAAQ,EAAE,MAAM,CAA8B;IACxD,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAmB;IACvE,SAAS,CAAC,wBAAwB,kDAAyB;IAE3C,iBAAiB,IAAI,IAAI;IAKzC,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC;CAIxC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,6BAA6B,EAAE,+BAA+B,CAAC;KAChE;CACF"}
@@ -1,6 +1,5 @@
1
1
  import { __esDecorate, __runInitializers } from "tslib";
2
2
  import { customElement } from "lit/decorators.js";
3
- import { hostAttributes } from "../../core/decorators.js";
4
3
  import { i18nPreviousDay, i18nSelectPreviousDay } from "../../core/i18n.js";
5
4
  import { SbbDatepickerButton } from "../common.js";
6
5
  import { css } from "lit";
@@ -119,9 +118,7 @@ sbb-icon {
119
118
  }`;
120
119
  let SbbDatepickerPreviousDayElement = (() => {
121
120
  var _a;
122
- let _classDecorators = [customElement("sbb-datepicker-previous-day"), hostAttributes({
123
- slot: "prefix"
124
- })];
121
+ let _classDecorators = [customElement("sbb-datepicker-previous-day")];
125
122
  let _classDescriptor;
126
123
  let _classExtraInitializers = [];
127
124
  let _classThis;
@@ -133,8 +130,12 @@ let SbbDatepickerPreviousDayElement = (() => {
133
130
  this.i18nOffBoundaryDay = i18nPreviousDay;
134
131
  this.i18nSelectOffBoundaryDay = i18nSelectPreviousDay;
135
132
  }
133
+ connectedCallback() {
134
+ super.connectedCallback();
135
+ this.slot || (this.slot = "prefix");
136
+ }
136
137
  findAvailableDate(date) {
137
- return this.datePickerElement.findPreviousAvailableDate(date);
138
+ return this.datepicker.findPreviousAvailableDate(date);
138
139
  }
139
140
  }, _classThis = _a, (() => {
140
141
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
@@ -147,4 +148,4 @@ let SbbDatepickerPreviousDayElement = (() => {
147
148
  export {
148
149
  SbbDatepickerPreviousDayElement
149
150
  };
150
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1wcmV2aW91cy1kYXkuY29tcG9uZW50LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLXByZXZpb3VzLWRheS9kYXRlcGlja2VyLXByZXZpb3VzLWRheS5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBpMThuUHJldmlvdXNEYXksIGkxOG5TZWxlY3RQcmV2aW91c0RheSB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgeyBTYmJEYXRlcGlja2VyQnV0dG9uIH0gZnJvbSAnLi4vY29tbW9uLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZGF0ZXBpY2tlci1wcmV2aW91cy1kYXkuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgYHNiYi1kYXRlcGlja2VyYCwgaXQgY2FuIGJlIHVzZWQgdG8gbW92ZSB0aGUgZGF0ZSBiYWNrLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItZGF0ZXBpY2tlci1wcmV2aW91cy1kYXknKVxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgc2xvdDogJ3ByZWZpeCcsXG59KVxuY2xhc3MgU2JiRGF0ZXBpY2tlclByZXZpb3VzRGF5RWxlbWVudDxUID0gRGF0ZT4gZXh0ZW5kcyBTYmJEYXRlcGlja2VyQnV0dG9uPFQ+IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgcHJvdGVjdGVkIGljb25OYW1lOiBzdHJpbmcgPSAnY2hldnJvbi1zbWFsbC1sZWZ0LXNtYWxsJztcbiAgcHJvdGVjdGVkIGkxOG5PZmZCb3VuZGFyeURheTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IGkxOG5QcmV2aW91c0RheTtcbiAgcHJvdGVjdGVkIGkxOG5TZWxlY3RPZmZCb3VuZGFyeURheSA9IGkxOG5TZWxlY3RQcmV2aW91c0RheTtcblxuICBwcm90ZWN0ZWQgZmluZEF2YWlsYWJsZURhdGUoZGF0ZTogVCk6IFQge1xuICAgIC8vIFdoZW4gY2FsbGluZyBmaW5kQXZhaWxhYmxlRGF0ZSwgZGF0ZXBpY2tlckVsZW1lbnQgaXMgYWx3YXlzIGRlZmluZWQuXG4gICAgcmV0dXJuIHRoaXMuZGF0ZVBpY2tlckVsZW1lbnQhLmZpbmRQcmV2aW91c0F2YWlsYWJsZURhdGUoZGF0ZSk7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1kYXRlcGlja2VyLXByZXZpb3VzLWRheSc6IFNiYkRhdGVwaWNrZXJQcmV2aW91c0RheUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWlCTSxtQ0FBK0IsTUFBQTs7QUFKcEMsTUFBQSxtQkFBQSxDQUFBLGNBQWMsNkJBQTZCLEdBQzNDLGVBQWU7QUFBQSxJQUNkLE1BQU07QUFBQSxFQUFBLENBQ1AsQ0FBQzs7OztvQkFDc0Q7QUFBUixFQUFBLG1CQUFRLFlBQXNCO0FBQUE7O0FBR2xFLFdBQVEsV0FBVztBQUNuQixXQUFrQixxQkFBMkI7QUFDN0MsV0FBd0IsMkJBQUc7QUFBQSxJQUFBO0FBQUEsSUFFM0Isa0JBQWtCLE1BQU87QUFFMUIsYUFBQSxLQUFLLGtCQUFtQiwwQkFBMEIsSUFBSTtBQUFBLElBQUE7QUFBQTs7QUFUakUsaUJBV0MsTUFBQSxtQkFBQSxFQUFBLE9BQUEsV0FBQSxHQUFBLGtCQUFBLEVBQUEsTUFBQSxTQUFBLE1BQUEsV0FBQSxNQUFBLFVBQUEsVUFBQSxHQUFBLE1BQUEsdUJBQUE7OztRQVZ3QixHQUFNLFNBQW1CLE9BRDVDLGtCQUErQixZQUFBLHVCQUFBLEdBQVc7OzsifQ==
151
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1wcmV2aW91cy1kYXkuY29tcG9uZW50LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLXByZXZpb3VzLWRheS9kYXRlcGlja2VyLXByZXZpb3VzLWRheS5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBpMThuUHJldmlvdXNEYXksIGkxOG5TZWxlY3RQcmV2aW91c0RheSB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgeyBTYmJEYXRlcGlja2VyQnV0dG9uIH0gZnJvbSAnLi4vY29tbW9uLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZGF0ZXBpY2tlci1wcmV2aW91cy1kYXkuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgYHNiYi1kYXRlcGlja2VyYCwgaXQgY2FuIGJlIHVzZWQgdG8gbW92ZSB0aGUgZGF0ZSBiYWNrLlxuICogQG92ZXJyaWRlVHlwZSB2YWx1ZSAtIHN0cmluZ1xuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItZGF0ZXBpY2tlci1wcmV2aW91cy1kYXknKVxuY2xhc3MgU2JiRGF0ZXBpY2tlclByZXZpb3VzRGF5RWxlbWVudDxUID0gRGF0ZT4gZXh0ZW5kcyBTYmJEYXRlcGlja2VyQnV0dG9uPFQ+IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgcHJvdGVjdGVkIGljb25OYW1lOiBzdHJpbmcgPSAnY2hldnJvbi1zbWFsbC1sZWZ0LXNtYWxsJztcbiAgcHJvdGVjdGVkIGkxOG5PZmZCb3VuZGFyeURheTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IGkxOG5QcmV2aW91c0RheTtcbiAgcHJvdGVjdGVkIGkxOG5TZWxlY3RPZmZCb3VuZGFyeURheSA9IGkxOG5TZWxlY3RQcmV2aW91c0RheTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLnNsb3QgfHw9ICdwcmVmaXgnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZpbmRBdmFpbGFibGVEYXRlKGRhdGU6IFQpOiBUIHtcbiAgICAvLyBXaGVuIGNhbGxpbmcgZmluZEF2YWlsYWJsZURhdGUsIGRhdGVwaWNrZXJFbGVtZW50IGlzIGFsd2F5cyBkZWZpbmVkLlxuICAgIHJldHVybiB0aGlzLmRhdGVwaWNrZXIhLmZpbmRQcmV2aW91c0F2YWlsYWJsZURhdGUoZGF0ZSk7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1kYXRlcGlja2VyLXByZXZpb3VzLWRheSc6IFNiYkRhdGVwaWNrZXJQcmV2aW91c0RheUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBY00sbUNBQStCLE1BQUE7OzBCQURwQyxjQUFjLDZCQUE2QixDQUFDOzs7O29CQUNXO0FBQVIsRUFBQSxtQkFBUSxZQUFzQjtBQUFBOztBQUdsRSxXQUFRLFdBQVc7QUFDbkIsV0FBa0IscUJBQTJCO0FBQzdDLFdBQXdCLDJCQUFHO0FBQUEsSUFBQTtBQUFBLElBRXJCLG9CQUFpQjtBQUMvQixZQUFNLGtCQUFpQjtBQUN2QixXQUFLLFNBQUwsS0FBSyxPQUFTO0FBQUEsSUFBQTtBQUFBLElBR04sa0JBQWtCLE1BQU87QUFFMUIsYUFBQSxLQUFLLFdBQVksMEJBQTBCLElBQUk7QUFBQSxJQUFBO0FBQUE7O0FBZDFELGlCQWdCQyxNQUFBLG1CQUFBLEVBQUEsT0FBQSxXQUFBLEdBQUEsa0JBQUEsRUFBQSxNQUFBLFNBQUEsTUFBQSxXQUFBLE1BQUEsVUFBQSxVQUFBLEdBQUEsTUFBQSx1QkFBQTs7O1FBZndCLEdBQU0sU0FBbUIsT0FENUMsa0JBQStCLFlBQUEsdUJBQUEsR0FBVzs7OyJ9
@@ -8,14 +8,6 @@ declare const SbbDatepickerToggleElement_base: import('../../core/mixins.js').Ab
8
8
  */
9
9
  export declare class SbbDatepickerToggleElement<T = Date> extends SbbDatepickerToggleElement_base implements SbbDatepickerControl<T> {
10
10
  static styles: CSSResultGroup;
11
- /**
12
- * Datepicker reference.
13
- * @internal
14
- * @deprecated Use property/attribute `datepicker` instead.
15
- */
16
- set datePicker(value: string | SbbDatepickerElement<T> | null);
17
- /** @internal */
18
- get datePicker(): string | SbbDatepickerElement<T> | null;
19
11
  /** Datepicker reference. */
20
12
  set datepicker(value: SbbDatepickerElement<T> | null);
21
13
  get datepicker(): SbbDatepickerElement<T> | null;
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker-toggle.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/datepicker/datepicker-toggle/datepicker-toggle.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAkB,UAAU,EAAW,MAAM,KAAK,CAAC;AAI1D,OAAO,KAAK,EAAE,YAAY,EAAsB,MAAM,mBAAmB,CAAC;AAM1E,OAAO,EAA6C,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAI7D,OAAO,mBAAmB,CAAC;AAC3B,OAAO,0BAA0B,CAAC;AAClC,OAAO,6BAA6B,CAAC;;AAMrC;;GAEG;AACH,qBAEM,0BAA0B,CAAC,CAAC,GAAG,IAAI,CACvC,SAAQ,+BACR,YAAW,oBAAoB,CAAC,CAAC,CAAC;IAElC,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD;;;;OAIG;IACH,IACW,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,EAOnE;IACD,gBAAgB;IAChB,IAAW,UAAU,IAAI,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAE/D;IAED,4BAA4B;IAC5B,IACW,UAAU,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,EAK1D;IACD,IAAW,UAAU,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAEtD;IACD,OAAO,CAAC,WAAW,CAAC,CAAiC;IAErD,yEAAyE;IACzE,SAA4B,IAAI,EAAE,YAAY,CAAS;IAE9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgD;IAErE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgD;IAErE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IAElD,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,SAAS,CAAmC;;IAepD;;OAEG;IACI,IAAI,IAAI,IAAI;IAIH,iBAAiB,IAAI,IAAI;cAStB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAmB5E,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,UAAU;cAIC,MAAM,IAAI,cAAc;CAoD5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,uBAAuB,EAAE,0BAA0B,CAAC;KACrD;CACF"}
1
+ {"version":3,"file":"datepicker-toggle.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/datepicker/datepicker-toggle/datepicker-toggle.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAkB,UAAU,EAAW,MAAM,KAAK,CAAC;AAI1D,OAAO,KAAK,EAAE,YAAY,EAAsB,MAAM,mBAAmB,CAAC;AAM1E,OAAO,EAA6C,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAI7D,OAAO,mBAAmB,CAAC;AAC3B,OAAO,0BAA0B,CAAC;AAClC,OAAO,6BAA6B,CAAC;;AAMrC;;GAEG;AACH,qBAEM,0BAA0B,CAAC,CAAC,GAAG,IAAI,CACvC,SAAQ,+BACR,YAAW,oBAAoB,CAAC,CAAC,CAAC;IAElC,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,4BAA4B;IAC5B,IACW,UAAU,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,EAK1D;IACD,IAAW,UAAU,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAEtD;IACD,OAAO,CAAC,WAAW,CAAC,CAAiC;IAErD,yEAAyE;IACzE,SAA4B,IAAI,EAAE,YAAY,CAAS;IAE9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgD;IAErE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgD;IAErE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IAElD,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,SAAS,CAAmC;;IAepD;;OAEG;IACI,IAAI,IAAI,IAAI;IAIH,iBAAiB,IAAI,IAAI;cAStB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAmB5E,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,UAAU;cAIC,MAAM,IAAI,cAAc;CAoD5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,uBAAuB,EAAE,0BAA0B,CAAC;KACrD;CACF"}
@@ -55,7 +55,6 @@ let SbbDatepickerToggleElement = (() => {
55
55
  let _classThis;
56
56
  let _classSuper = SbbNegativeMixin(SbbHydrationMixin(LitElement));
57
57
  let _instanceExtraInitializers = [];
58
- let _set_datePicker_decorators;
59
58
  let _set_datepicker_decorators;
60
59
  let _view_decorators;
61
60
  let _view_initializers = [];
@@ -99,21 +98,6 @@ let SbbDatepickerToggleElement = (() => {
99
98
  this.hydrationComplete.then(() => this._renderCalendar = true);
100
99
  }
101
100
  }
102
- /**
103
- * Datepicker reference.
104
- * @internal
105
- * @deprecated Use property/attribute `datepicker` instead.
106
- */
107
- set datePicker(value) {
108
- {
109
- console.warn(`Property datePicker/Attribute date-picker is deprecated. Use 'datepicker' instead.`);
110
- }
111
- this.datepicker = value;
112
- }
113
- /** @internal */
114
- get datePicker() {
115
- return this.datepicker;
116
- }
117
101
  /** Datepicker reference. */
118
102
  set datepicker(value) {
119
103
  var _a2, _b, _c;
@@ -259,16 +243,12 @@ let SbbDatepickerToggleElement = (() => {
259
243
  }
260
244
  }, _view_accessor_storage = new WeakMap(), __disabled_accessor_storage = new WeakMap(), __min_accessor_storage = new WeakMap(), __max_accessor_storage = new WeakMap(), __renderCalendar_accessor_storage = new WeakMap(), _classThis = _a, (() => {
261
245
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
262
- _set_datePicker_decorators = [property({ attribute: "date-picker" })];
263
246
  _set_datepicker_decorators = [property({ attribute: "datepicker" })];
264
247
  _view_decorators = [property()];
265
248
  __disabled_decorators = [state()];
266
249
  __min_decorators = [state()];
267
250
  __max_decorators = [state()];
268
251
  __renderCalendar_decorators = [state()];
269
- __esDecorate(_a, null, _set_datePicker_decorators, { kind: "setter", name: "datePicker", static: false, private: false, access: { has: (obj) => "datePicker" in obj, set: (obj, value) => {
270
- obj.datePicker = value;
271
- } }, metadata: _metadata }, null, _instanceExtraInitializers);
272
252
  __esDecorate(_a, null, _set_datepicker_decorators, { kind: "setter", name: "datepicker", static: false, private: false, access: { has: (obj) => "datepicker" in obj, set: (obj, value) => {
273
253
  obj.datepicker = value;
274
254
  } }, metadata: _metadata }, null, _instanceExtraInitializers);
@@ -296,4 +276,4 @@ let SbbDatepickerToggleElement = (() => {
296
276
  export {
297
277
  SbbDatepickerToggleElement
298
278
  };
299
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci10b2dnbGUuY29tcG9uZW50LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLXRvZ2dsZS9kYXRlcGlja2VyLXRvZ2dsZS5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIGlzU2VydmVyLCBMaXRFbGVtZW50LCBub3RoaW5nIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB0eXBlIHsgQ2FsZW5kYXJWaWV3LCBTYmJDYWxlbmRhckVsZW1lbnQgfSBmcm9tICcuLi8uLi9jYWxlbmRhci5qcyc7XG5pbXBvcnQgeyBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkuanMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBpMThuU2hvd0NhbGVuZGFyIH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB7IFNiYkh5ZHJhdGlvbk1peGluLCBTYmJOZWdhdGl2ZU1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEYXRlSW5wdXRFbGVtZW50IH0gZnJvbSAnLi4vLi4vZGF0ZS1pbnB1dC5qcyc7XG5pbXBvcnQgeyBTYmJEYXRlcGlja2VyQXNzb2NpYXRpb25Db250cm9sQ29udHJvbGxlciwgdHlwZSBTYmJEYXRlcGlja2VyQ29udHJvbCB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVwaWNrZXJFbGVtZW50IH0gZnJvbSAnLi4vZGF0ZXBpY2tlci5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXItdG9nZ2xlLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnLi4vLi4vY2FsZW5kYXIuanMnO1xuaW1wb3J0ICcuLi8uLi9wb3BvdmVyL3BvcG92ZXIuanMnO1xuaW1wb3J0ICcuLi8uLi9idXR0b24vbWluaS1idXR0b24uanMnO1xuXG5jb25zdCBpc0RhdGVJbnB1dCA9IDxUPihcbiAgZWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IFNiYkRhdGVJbnB1dEVsZW1lbnQ8VD4gfCBudWxsLFxuKTogZWxlbWVudCBpcyBTYmJEYXRlSW5wdXRFbGVtZW50PFQ+ID0+IGVsZW1lbnQ/LmxvY2FsTmFtZSA9PT0gJ3NiYi1kYXRlLWlucHV0JztcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgYHNiYi1kYXRlcGlja2VyYCwgaXQgY2FuIGJlIHVzZWQgdG8gc2VsZWN0IGEgZGF0ZSBmcm9tIGEgYHNiYi1jYWxlbmRhcmAuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kYXRlcGlja2VyLXRvZ2dsZScpXG5jbGFzcyBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudDxUID0gRGF0ZT5cbiAgZXh0ZW5kcyBTYmJOZWdhdGl2ZU1peGluKFNiYkh5ZHJhdGlvbk1peGluKExpdEVsZW1lbnQpKVxuICBpbXBsZW1lbnRzIFNiYkRhdGVwaWNrZXJDb250cm9sPFQ+XG57XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKlxuICAgKiBEYXRlcGlja2VyIHJlZmVyZW5jZS5cbiAgICogQGludGVybmFsXG4gICAqIEBkZXByZWNhdGVkIFVzZSBwcm9wZXJ0eS9hdHRyaWJ1dGUgYGRhdGVwaWNrZXJgIGluc3RlYWQuXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdkYXRlLXBpY2tlcicgfSlcbiAgcHVibGljIHNldCBkYXRlUGlja2VyKHZhbHVlOiBzdHJpbmcgfCBTYmJEYXRlcGlja2VyRWxlbWVudDxUPiB8IG51bGwpIHtcbiAgICBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFVikge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgUHJvcGVydHkgZGF0ZVBpY2tlci9BdHRyaWJ1dGUgZGF0ZS1waWNrZXIgaXMgZGVwcmVjYXRlZC4gVXNlICdkYXRlcGlja2VyJyBpbnN0ZWFkLmAsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmRhdGVwaWNrZXIgPSB2YWx1ZSBhcyB1bmtub3duIGFzIFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+IHwgbnVsbDtcbiAgfVxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyBnZXQgZGF0ZVBpY2tlcigpOiBzdHJpbmcgfCBTYmJEYXRlcGlja2VyRWxlbWVudDxUPiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmRhdGVwaWNrZXI7XG4gIH1cblxuICAvKiogRGF0ZXBpY2tlciByZWZlcmVuY2UuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2RhdGVwaWNrZXInIH0pXG4gIHB1YmxpYyBzZXQgZGF0ZXBpY2tlcih2YWx1ZTogU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD4gfCBudWxsKSB7XG4gICAgdGhpcy5fZGF0ZXBpY2tlciA9XG4gICAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICAgID8gKCh0aGlzLmdldFJvb3ROb2RlPy4oKSBhcyBQYXJlbnROb2RlKT8ucXVlcnlTZWxlY3Rvcj8uKGAjJHt2YWx1ZX1gKSA/PyBudWxsKVxuICAgICAgICA6IHZhbHVlO1xuICB9XG4gIHB1YmxpYyBnZXQgZGF0ZXBpY2tlcigpOiBTYmJEYXRlcGlja2VyRWxlbWVudDxUPiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9kYXRlcGlja2VyID8/IG51bGw7XG4gIH1cbiAgcHJpdmF0ZSBfZGF0ZXBpY2tlcj86IFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+IHwgbnVsbDtcblxuICAvKiogVGhlIGluaXRpYWwgdmlldyBvZiBjYWxlbmRhciB3aGljaCBzaG91bGQgYmUgZGlzcGxheWVkIG9uIG9wZW5pbmcuICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBhY2Nlc3NvciB2aWV3OiBDYWxlbmRhclZpZXcgPSAnZGF5JztcblxuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX21pbjogVCB8IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX21heDogVCB8IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX3JlbmRlckNhbGVuZGFyID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfY2FsZW5kYXJFbGVtZW50ITogU2JiQ2FsZW5kYXJFbGVtZW50PFQ+O1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRDb250cm9sbGVyKG5ldyBTYmJEYXRlcGlja2VyQXNzb2NpYXRpb25Db250cm9sQ29udHJvbGxlcih0aGlzKSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQuY29tcG9zZWRQYXRoKClbMF0gPT09IHRoaXMpIHtcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFpc1NlcnZlcikge1xuICAgICAgdGhpcy5oeWRyYXRpb25Db21wbGV0ZS50aGVuKCgpID0+ICh0aGlzLl9yZW5kZXJDYWxlbmRhciA9IHRydWUpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgdGhlIGNhbGVuZGFyLlxuICAgKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCdzYmItbWluaS1idXR0b24nKSEuY2xpY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuc2xvdCB8fD0gJ3ByZWZpeCc7XG4gICAgY29uc3QgZm9ybUZpZWxkID0gdGhpcy5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJykgPz8gdGhpcy5jbG9zZXN0Py4oJ1tkYXRhLWZvcm0tZmllbGRdJyk7XG4gICAgaWYgKGZvcm1GaWVsZCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IGZvcm1GaWVsZC5oYXNBdHRyaWJ1dGUoJ25lZ2F0aXZlJyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlcikge1xuICAgICAgdGhpcy5fZGlzYWJsZWQgPVxuICAgICAgICAodGhpcy5kYXRlcGlja2VyLmlucHV0RWxlbWVudD8uZGlzYWJsZWQgfHwgdGhpcy5kYXRlcGlja2VyLmlucHV0RWxlbWVudD8ucmVhZE9ubHkpID8/IHRydWU7XG4gICAgICB0aGlzLl9taW4gPSB0aGlzLmRhdGVwaWNrZXIuaW5wdXRFbGVtZW50Py5taW47XG4gICAgICB0aGlzLl9tYXggPSB0aGlzLmRhdGVwaWNrZXIuaW5wdXRFbGVtZW50Py5tYXg7XG5cbiAgICAgIHRoaXMuX2NvbmZpZ3VyZUNhbGVuZGFyKCk7XG4gICAgICBpZiAodGhpcy5fY2FsZW5kYXJFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5zZWxlY3RlZCA9IHRoaXMuZGF0ZXBpY2tlci52YWx1ZUFzRGF0ZSA/PyBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kaXNhYmxlZCA9IHRydWU7XG4gICAgICB0aGlzLl9taW4gPSBudWxsO1xuICAgICAgdGhpcy5fbWF4ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jb25maWd1cmVDYWxlbmRhcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2NhbGVuZGFyRWxlbWVudCB8fCAhdGhpcy5kYXRlcGlja2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC53aWRlID0gdGhpcy5kYXRlcGlja2VyLndpZGU7XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50Lm5vdyA9IHRoaXMuX25vd09yTnVsbCgpO1xuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5kYXRlRmlsdGVyID0gdGhpcy5kYXRlcGlja2VyLmRhdGVGaWx0ZXI7XG4gIH1cblxuICBwcml2YXRlIF9hc3NpZ25DYWxlbmRhcihjYWxlbmRhcjogU2JiQ2FsZW5kYXJFbGVtZW50PFQ+KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NhbGVuZGFyRWxlbWVudCAmJiB0aGlzLl9jYWxlbmRhckVsZW1lbnQgPT09IGNhbGVuZGFyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudCA9IGNhbGVuZGFyO1xuICAgIGlmICghKCd2YWx1ZUFzRGF0ZScgaW4gKHRoaXMuZGF0ZXBpY2tlciA/PyB7fSkpIHx8ICF0aGlzLl9jYWxlbmRhckVsZW1lbnQ/LnJlc2V0UG9zaXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LnNlbGVjdGVkID0gdGhpcy5kYXRlcGlja2VyIS52YWx1ZUFzRGF0ZSA/PyBudWxsO1xuICAgIHRoaXMuX2NvbmZpZ3VyZUNhbGVuZGFyKCk7XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LnJlc2V0UG9zaXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgX25vd09yTnVsbCgpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZXBpY2tlcj8uaGFzQ3VzdG9tTm93KCkgPyB0aGlzLmRhdGVwaWNrZXIubm93IDogbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNiYi1taW5pLWJ1dHRvblxuICAgICAgICBjbGFzcz1cInNiYi1kYXRlcGlja2VyLXRvZ2dsZV9fdHJpZ2dlclwiXG4gICAgICAgIGljb24tbmFtZT1cImNhbGVuZGFyLXNtYWxsXCJcbiAgICAgICAgYXJpYS1sYWJlbD0ke2kxOG5TaG93Q2FsZW5kYXJbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgID9kaXNhYmxlZD0keyFpc1NlcnZlciAmJiAoIXRoaXMuZGF0ZXBpY2tlciB8fCB0aGlzLl9kaXNhYmxlZCl9XG4gICAgICAgID9uZWdhdGl2ZT0ke3RoaXMubmVnYXRpdmV9XG4gICAgICAgIGlkPVwidHJpZ2dlclwiXG4gICAgICA+PC9zYmItbWluaS1idXR0b24+XG4gICAgICA8c2JiLXBvcG92ZXJcbiAgICAgICAgQHdpbGxPcGVuPSR7KCkgPT4gdGhpcy5fY2FsZW5kYXJFbGVtZW50LnJlc2V0UG9zaXRpb24oKX1cbiAgICAgICAgQGRpZE9wZW49JHsoKSA9PiB7XG4gICAgICAgICAgaWYgKHNiYklucHV0TW9kYWxpdHlEZXRlY3Rvci5tb3N0UmVjZW50TW9kYWxpdHkgPT09ICdrZXlib2FyZCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgdHJpZ2dlcj1cInRyaWdnZXJcIlxuICAgICAgICBoaWRlLWNsb3NlLWJ1dHRvblxuICAgICAgPlxuICAgICAgICAke3RoaXMuX3JlbmRlckNhbGVuZGFyXG4gICAgICAgICAgPyBodG1sYDxzYmItY2FsZW5kYXJcbiAgICAgICAgICAgICAgLnZpZXc9JHt0aGlzLnZpZXd9XG4gICAgICAgICAgICAgIC5taW49JHt0aGlzLl9taW59XG4gICAgICAgICAgICAgIC5tYXg9JHt0aGlzLl9tYXh9XG4gICAgICAgICAgICAgIC5ub3c9JHt0aGlzLl9ub3dPck51bGwoKX1cbiAgICAgICAgICAgICAgP3dpZGU9JHt0aGlzLmRhdGVwaWNrZXI/LndpZGV9XG4gICAgICAgICAgICAgIC5kYXRlRmlsdGVyPSR7dGhpcy5kYXRlcGlja2VyPy5kYXRlRmlsdGVyID8/IG51bGx9XG4gICAgICAgICAgICAgIEBkYXRlU2VsZWN0ZWQ9JHsoZDogQ3VzdG9tRXZlbnQ8VD4pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWxlbmRhckVsZW1lbnQuc2VsZWN0ZWQgPSBkLmRldGFpbDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRlcGlja2VyKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuZGF0ZXBpY2tlci5pbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICBpZiAoaXNEYXRlSW5wdXQoaW5wdXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0LnZhbHVlQXNEYXRlID0gZC5kZXRhaWw7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0LmRpc3BhdGNoRXZlbnQobmV3IElucHV0RXZlbnQoJ2lucHV0JywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gRW1pdCBibHVyIGV2ZW50IHdoZW4gdmFsdWUgaXMgY2hhbmdlZCBwcm9ncmFtbWF0aWNhbGx5IHRvIG5vdGlmeVxuICAgICAgICAgICAgICAgICAgICAvLyBmcmFtZXdvcmtzIHRoYXQgcmVseSBvbiB0aGF0IGV2ZW50IHRvIHVwZGF0ZSBmb3JtIHN0YXR1cy5cbiAgICAgICAgICAgICAgICAgICAgaW5wdXQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2JsdXInLCB7IGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZXBpY2tlci52YWx1ZUFzRGF0ZSA9IGQuZGV0YWlsO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgJHtyZWYoKGNhbGVuZGFyPzogRWxlbWVudCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLl9hc3NpZ25DYWxlbmRhcihjYWxlbmRhciBhcyBTYmJDYWxlbmRhckVsZW1lbnQ8VD4pLFxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPjwvc2JiLWNhbGVuZGFyPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICA8L3NiYi1wb3BvdmVyPlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1kYXRlcGlja2VyLXRvZ2dsZSc6IFNiYkRhdGVwaWNrZXJUb2dnbGVFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
279
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci10b2dnbGUuY29tcG9uZW50LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLXRvZ2dsZS9kYXRlcGlja2VyLXRvZ2dsZS5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIGlzU2VydmVyLCBMaXRFbGVtZW50LCBub3RoaW5nIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB0eXBlIHsgQ2FsZW5kYXJWaWV3LCBTYmJDYWxlbmRhckVsZW1lbnQgfSBmcm9tICcuLi8uLi9jYWxlbmRhci5qcyc7XG5pbXBvcnQgeyBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkuanMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBpMThuU2hvd0NhbGVuZGFyIH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB7IFNiYkh5ZHJhdGlvbk1peGluLCBTYmJOZWdhdGl2ZU1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJEYXRlSW5wdXRFbGVtZW50IH0gZnJvbSAnLi4vLi4vZGF0ZS1pbnB1dC5qcyc7XG5pbXBvcnQgeyBTYmJEYXRlcGlja2VyQXNzb2NpYXRpb25Db250cm9sQ29udHJvbGxlciwgdHlwZSBTYmJEYXRlcGlja2VyQ29udHJvbCB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVwaWNrZXJFbGVtZW50IH0gZnJvbSAnLi4vZGF0ZXBpY2tlci5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXItdG9nZ2xlLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnLi4vLi4vY2FsZW5kYXIuanMnO1xuaW1wb3J0ICcuLi8uLi9wb3BvdmVyL3BvcG92ZXIuanMnO1xuaW1wb3J0ICcuLi8uLi9idXR0b24vbWluaS1idXR0b24uanMnO1xuXG5jb25zdCBpc0RhdGVJbnB1dCA9IDxUPihcbiAgZWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IFNiYkRhdGVJbnB1dEVsZW1lbnQ8VD4gfCBudWxsLFxuKTogZWxlbWVudCBpcyBTYmJEYXRlSW5wdXRFbGVtZW50PFQ+ID0+IGVsZW1lbnQ/LmxvY2FsTmFtZSA9PT0gJ3NiYi1kYXRlLWlucHV0JztcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgYHNiYi1kYXRlcGlja2VyYCwgaXQgY2FuIGJlIHVzZWQgdG8gc2VsZWN0IGEgZGF0ZSBmcm9tIGEgYHNiYi1jYWxlbmRhcmAuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kYXRlcGlja2VyLXRvZ2dsZScpXG5jbGFzcyBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudDxUID0gRGF0ZT5cbiAgZXh0ZW5kcyBTYmJOZWdhdGl2ZU1peGluKFNiYkh5ZHJhdGlvbk1peGluKExpdEVsZW1lbnQpKVxuICBpbXBsZW1lbnRzIFNiYkRhdGVwaWNrZXJDb250cm9sPFQ+XG57XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBEYXRlcGlja2VyIHJlZmVyZW5jZS4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZGF0ZXBpY2tlcicgfSlcbiAgcHVibGljIHNldCBkYXRlcGlja2VyKHZhbHVlOiBTYmJEYXRlcGlja2VyRWxlbWVudDxUPiB8IG51bGwpIHtcbiAgICB0aGlzLl9kYXRlcGlja2VyID1cbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICAgPyAoKHRoaXMuZ2V0Um9vdE5vZGU/LigpIGFzIFBhcmVudE5vZGUpPy5xdWVyeVNlbGVjdG9yPy4oYCMke3ZhbHVlfWApID8/IG51bGwpXG4gICAgICAgIDogdmFsdWU7XG4gIH1cbiAgcHVibGljIGdldCBkYXRlcGlja2VyKCk6IFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGVwaWNrZXIgPz8gbnVsbDtcbiAgfVxuICBwcml2YXRlIF9kYXRlcGlja2VyPzogU2JiRGF0ZXBpY2tlckVsZW1lbnQ8VD4gfCBudWxsO1xuXG4gIC8qKiBUaGUgaW5pdGlhbCB2aWV3IG9mIGNhbGVuZGFyIHdoaWNoIHNob3VsZCBiZSBkaXNwbGF5ZWQgb24gb3BlbmluZy4gKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGFjY2Vzc29yIHZpZXc6IENhbGVuZGFyVmlldyA9ICdkYXknO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgYWNjZXNzb3IgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfbWluOiBUIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfbWF4OiBUIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBhY2Nlc3NvciBfcmVuZGVyQ2FsZW5kYXIgPSBmYWxzZTtcblxuICBwcml2YXRlIF9jYWxlbmRhckVsZW1lbnQhOiBTYmJDYWxlbmRhckVsZW1lbnQ8VD47XG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZENvbnRyb2xsZXIobmV3IFNiYkRhdGVwaWNrZXJBc3NvY2lhdGlvbkNvbnRyb2xDb250cm9sbGVyKHRoaXMpKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LignY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5jb21wb3NlZFBhdGgoKVswXSA9PT0gdGhpcykge1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIWlzU2VydmVyKSB7XG4gICAgICB0aGlzLmh5ZHJhdGlvbkNvbXBsZXRlLnRoZW4oKCkgPT4gKHRoaXMuX3JlbmRlckNhbGVuZGFyID0gdHJ1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3IoJ3NiYi1taW5pLWJ1dHRvbicpIS5jbGljaygpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5zbG90IHx8PSAncHJlZml4JztcbiAgICBjb25zdCBmb3JtRmllbGQgPSB0aGlzLmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKSA/PyB0aGlzLmNsb3Nlc3Q/LignW2RhdGEtZm9ybS1maWVsZF0nKTtcbiAgICBpZiAoZm9ybUZpZWxkKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gZm9ybUZpZWxkLmhhc0F0dHJpYnV0ZSgnbmVnYXRpdmUnKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICBpZiAodGhpcy5kYXRlcGlja2VyKSB7XG4gICAgICB0aGlzLl9kaXNhYmxlZCA9XG4gICAgICAgICh0aGlzLmRhdGVwaWNrZXIuaW5wdXRFbGVtZW50Py5kaXNhYmxlZCB8fCB0aGlzLmRhdGVwaWNrZXIuaW5wdXRFbGVtZW50Py5yZWFkT25seSkgPz8gdHJ1ZTtcbiAgICAgIHRoaXMuX21pbiA9IHRoaXMuZGF0ZXBpY2tlci5pbnB1dEVsZW1lbnQ/Lm1pbjtcbiAgICAgIHRoaXMuX21heCA9IHRoaXMuZGF0ZXBpY2tlci5pbnB1dEVsZW1lbnQ/Lm1heDtcblxuICAgICAgdGhpcy5fY29uZmlndXJlQ2FsZW5kYXIoKTtcbiAgICAgIGlmICh0aGlzLl9jYWxlbmRhckVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LnNlbGVjdGVkID0gdGhpcy5kYXRlcGlja2VyLnZhbHVlQXNEYXRlID8/IG51bGw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX21pbiA9IG51bGw7XG4gICAgICB0aGlzLl9tYXggPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NvbmZpZ3VyZUNhbGVuZGFyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fY2FsZW5kYXJFbGVtZW50IHx8ICF0aGlzLmRhdGVwaWNrZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LndpZGUgPSB0aGlzLmRhdGVwaWNrZXIud2lkZTtcbiAgICB0aGlzLl9jYWxlbmRhckVsZW1lbnQubm93ID0gdGhpcy5fbm93T3JOdWxsKCkhO1xuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5kYXRlRmlsdGVyID0gdGhpcy5kYXRlcGlja2VyLmRhdGVGaWx0ZXI7XG4gIH1cblxuICBwcml2YXRlIF9hc3NpZ25DYWxlbmRhcihjYWxlbmRhcjogU2JiQ2FsZW5kYXJFbGVtZW50PFQ+KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NhbGVuZGFyRWxlbWVudCAmJiB0aGlzLl9jYWxlbmRhckVsZW1lbnQgPT09IGNhbGVuZGFyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudCA9IGNhbGVuZGFyO1xuICAgIGlmICghKCd2YWx1ZUFzRGF0ZScgaW4gKHRoaXMuZGF0ZXBpY2tlciA/PyB7fSkpIHx8ICF0aGlzLl9jYWxlbmRhckVsZW1lbnQ/LnJlc2V0UG9zaXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LnNlbGVjdGVkID0gdGhpcy5kYXRlcGlja2VyIS52YWx1ZUFzRGF0ZSA/PyBudWxsO1xuICAgIHRoaXMuX2NvbmZpZ3VyZUNhbGVuZGFyKCk7XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LnJlc2V0UG9zaXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgX25vd09yTnVsbCgpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZXBpY2tlcj8uaGFzQ3VzdG9tTm93KCkgPyB0aGlzLmRhdGVwaWNrZXIubm93IDogbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNiYi1taW5pLWJ1dHRvblxuICAgICAgICBjbGFzcz1cInNiYi1kYXRlcGlja2VyLXRvZ2dsZV9fdHJpZ2dlclwiXG4gICAgICAgIGljb24tbmFtZT1cImNhbGVuZGFyLXNtYWxsXCJcbiAgICAgICAgYXJpYS1sYWJlbD0ke2kxOG5TaG93Q2FsZW5kYXJbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgID9kaXNhYmxlZD0keyFpc1NlcnZlciAmJiAoIXRoaXMuZGF0ZXBpY2tlciB8fCB0aGlzLl9kaXNhYmxlZCl9XG4gICAgICAgID9uZWdhdGl2ZT0ke3RoaXMubmVnYXRpdmV9XG4gICAgICAgIGlkPVwidHJpZ2dlclwiXG4gICAgICA+PC9zYmItbWluaS1idXR0b24+XG4gICAgICA8c2JiLXBvcG92ZXJcbiAgICAgICAgQHdpbGxPcGVuPSR7KCkgPT4gdGhpcy5fY2FsZW5kYXJFbGVtZW50LnJlc2V0UG9zaXRpb24oKX1cbiAgICAgICAgQGRpZE9wZW49JHsoKSA9PiB7XG4gICAgICAgICAgaWYgKHNiYklucHV0TW9kYWxpdHlEZXRlY3Rvci5tb3N0UmVjZW50TW9kYWxpdHkgPT09ICdrZXlib2FyZCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgdHJpZ2dlcj1cInRyaWdnZXJcIlxuICAgICAgICBoaWRlLWNsb3NlLWJ1dHRvblxuICAgICAgPlxuICAgICAgICAke3RoaXMuX3JlbmRlckNhbGVuZGFyXG4gICAgICAgICAgPyBodG1sYDxzYmItY2FsZW5kYXJcbiAgICAgICAgICAgICAgLnZpZXc9JHt0aGlzLnZpZXd9XG4gICAgICAgICAgICAgIC5taW49JHt0aGlzLl9taW59XG4gICAgICAgICAgICAgIC5tYXg9JHt0aGlzLl9tYXh9XG4gICAgICAgICAgICAgIC5ub3c9JHt0aGlzLl9ub3dPck51bGwoKX1cbiAgICAgICAgICAgICAgP3dpZGU9JHt0aGlzLmRhdGVwaWNrZXI/LndpZGV9XG4gICAgICAgICAgICAgIC5kYXRlRmlsdGVyPSR7dGhpcy5kYXRlcGlja2VyPy5kYXRlRmlsdGVyID8/IG51bGx9XG4gICAgICAgICAgICAgIEBkYXRlU2VsZWN0ZWQ9JHsoZDogQ3VzdG9tRXZlbnQ8VD4pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWxlbmRhckVsZW1lbnQuc2VsZWN0ZWQgPSBkLmRldGFpbDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRlcGlja2VyKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuZGF0ZXBpY2tlci5pbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICBpZiAoaXNEYXRlSW5wdXQoaW5wdXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0LnZhbHVlQXNEYXRlID0gZC5kZXRhaWw7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0LmRpc3BhdGNoRXZlbnQobmV3IElucHV0RXZlbnQoJ2lucHV0JywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gRW1pdCBibHVyIGV2ZW50IHdoZW4gdmFsdWUgaXMgY2hhbmdlZCBwcm9ncmFtbWF0aWNhbGx5IHRvIG5vdGlmeVxuICAgICAgICAgICAgICAgICAgICAvLyBmcmFtZXdvcmtzIHRoYXQgcmVseSBvbiB0aGF0IGV2ZW50IHRvIHVwZGF0ZSBmb3JtIHN0YXR1cy5cbiAgICAgICAgICAgICAgICAgICAgaW5wdXQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2JsdXInLCB7IGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZXBpY2tlci52YWx1ZUFzRGF0ZSA9IGQuZGV0YWlsO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgJHtyZWYoKGNhbGVuZGFyPzogRWxlbWVudCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLl9hc3NpZ25DYWxlbmRhcihjYWxlbmRhciBhcyBTYmJDYWxlbmRhckVsZW1lbnQ8VD4pLFxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPjwvc2JiLWNhbGVuZGFyPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICA8L3NiYi1wb3BvdmVyPlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1kYXRlcGlja2VyLXRvZ2dsZSc6IFNiYkRhdGVwaWNrZXJUb2dnbGVFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQSxNQUFNLGNBQWMsQ0FDbEIsYUFDc0MsbUNBQVMsZUFBYztJQU96RCw4QkFBMEIsTUFBQTs7MEJBRC9CLGNBQWMsdUJBQXVCLENBQUM7Ozs7QUFFN0IsTUFBQSxjQUFBLGlCQUFpQixrQkFBa0IsVUFBVSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBdEQsRUFBQSxtQkFBUSxZQUErQztBQUFBLElBZ0N2RCxjQUFBOzs7QUFiWTtBQUVIO0FBRUE7QUFFQTtBQUVBO0FBWFUsV0FBQSxjQWpCZjtBQW9Cd0IseUJBQUEsd0JBQUEsa0JBQUEsTUFBQSxvQkFBcUIsS0FBSztBQUU1Qix5QkFBQSw4QkFBQSxrQkFBQSxNQUFBLHVCQUFBLEdBQUEsa0JBQUEsTUFBQSx5QkFBWSxLQUFLO0FBRWpCLHlCQUFBLHlCQUFBLGtCQUFBLE1BQUEsNEJBQUEsR0FBQSxrQkFBQSxNQUFBLG9CQUErQyxJQUFJO0FBRW5ELHlCQUFBLHlCQUFBLGtCQUFBLE1BQUEsdUJBQUEsR0FBQSxrQkFBQSxNQUFBLG9CQUErQyxJQUFJO0FBRW5ELHlCQUFBLG9DQUFBLGtCQUFBLE1BQUEsdUJBQUEsR0FBQSxrQkFBQSxNQUFBLCtCQUFrQixLQUFLO0FBRXpDLFdBQUEsbUJBQXlDLGtCQUFBLE1BQUEsa0NBQUE7QUFDekMsV0FBQSxZQUFZLElBQUksc0JBQXNCLElBQUk7QUFJaEQsV0FBSyxjQUFjLElB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