@sbb-esta/lyne-elements 3.7.0 → 3.8.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 (376) hide show
  1. package/alert/alert/alert.component.d.ts +2 -0
  2. package/alert/alert/alert.component.d.ts.map +1 -1
  3. package/alert/alert/alert.component.js +44 -39
  4. package/autocomplete/autocomplete-base-element.js +20 -20
  5. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +14 -14
  6. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +1 -1
  7. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +9 -9
  8. package/badge.css +2 -2
  9. package/breadcrumb/breadcrumb/breadcrumb.component.js +12 -12
  10. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +15 -15
  11. package/button/common.js +1 -1
  12. package/button/mini-button/mini-button.component.js +7 -7
  13. package/button/mini-button-group/mini-button-group.component.js +21 -21
  14. package/button.js +1 -1
  15. package/calendar/calendar.component.js +36 -36
  16. package/card/card/card.component.js +10 -10
  17. package/card/card-badge/card-badge.component.js +15 -15
  18. package/carousel/carousel/carousel.component.d.ts +1 -0
  19. package/carousel/carousel/carousel.component.d.ts.map +1 -1
  20. package/carousel/carousel/carousel.component.js +37 -33
  21. package/carousel/carousel-list/carousel-list.component.d.ts +2 -2
  22. package/carousel/carousel-list/carousel-list.component.d.ts.map +1 -1
  23. package/carousel/carousel-list/carousel-list.component.js +32 -29
  24. package/checkbox/common.js +1 -1
  25. package/checkbox-common-gjHkSAmN.js +5 -0
  26. package/checkbox.js +1 -1
  27. package/chip/chip/chip.component.js +23 -23
  28. package/chip-label/chip-label.component.js +22 -22
  29. package/clock/clock.component.js +29 -29
  30. package/container/container/container.component.js +21 -21
  31. package/container/sticky-bar/sticky-bar.component.js +13 -13
  32. package/core/config/config.d.ts +6 -0
  33. package/core/config/config.d.ts.map +1 -1
  34. package/core/controllers/media-matchers-controller.d.ts +29 -0
  35. package/core/controllers/media-matchers-controller.d.ts.map +1 -1
  36. package/core/controllers/media-matchers-controller.js +73 -23
  37. package/core/controllers.js +16 -14
  38. package/core/dom/contains-pierce-shadow-dom.d.ts +3 -0
  39. package/core/dom/contains-pierce-shadow-dom.d.ts.map +1 -0
  40. package/core/dom/contains-pierce-shadow-dom.js +12 -0
  41. package/core/dom/queue-dom-content-loaded.d.ts +5 -0
  42. package/core/dom/queue-dom-content-loaded.d.ts.map +1 -0
  43. package/core/dom/queue-dom-content-loaded.js +7 -0
  44. package/core/dom/set-or-remove-attribute.d.ts +14 -0
  45. package/core/dom/set-or-remove-attribute.d.ts.map +1 -1
  46. package/core/dom/set-or-remove-attribute.js +11 -3
  47. package/core/dom.d.ts +2 -0
  48. package/core/dom.d.ts.map +1 -1
  49. package/core/dom.js +28 -22
  50. package/core/images.d.ts +4 -0
  51. package/core/images.d.ts.map +1 -1
  52. package/core/images.js +12 -12
  53. package/core/mixins.js +10 -10
  54. package/core/overlay/overlay-outside-pointer-event-listener.d.ts +26 -0
  55. package/core/overlay/overlay-outside-pointer-event-listener.d.ts.map +1 -0
  56. package/core/overlay/overlay-outside-pointer-event-listener.js +37 -0
  57. package/core/overlay.d.ts +1 -0
  58. package/core/overlay.d.ts.map +1 -1
  59. package/core/overlay.js +14 -11
  60. package/core/styles/core.scss +39 -12
  61. package/core/styles/mixins/badge.scss +2 -2
  62. package/core/styles/mixins/buttons.scss +14 -14
  63. package/core/styles/mixins/card.scss +9 -6
  64. package/core/styles/mixins/chip.scss +8 -8
  65. package/core/styles/mixins/image.scss +3 -0
  66. package/core/styles/mixins/link.scss +12 -7
  67. package/core/styles/mixins/lists.scss +6 -4
  68. package/core/styles/mixins/overlay.scss +6 -3
  69. package/core/styles/mixins/panel.scss +3 -3
  70. package/core/styles/mixins/pearl-chain-bullet.scss +9 -5
  71. package/core/styles/mixins/scrollbar.scss +12 -6
  72. package/core/styles/mixins/shadows.scss +32 -64
  73. package/core/styles/mixins/table.scss +13 -10
  74. package/core/styles/mixins/timetable-form.scss +3 -3
  75. package/core/styles/mixins/typo.scss +4 -4
  76. package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables.scss +49 -1
  77. package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables_css--mixin.scss +203 -5
  78. package/core/styles/off-brand-theme.scss +3 -0
  79. package/core/styles/safety-theme.scss +3 -0
  80. package/core/styles/standard-theme.scss +3 -14
  81. package/core/styles/theme.scss +18 -0
  82. package/core.css +253 -21
  83. package/custom-elements.json +1392 -115
  84. package/date-input/date-input.component.js +1 -1
  85. package/datepicker/datepicker-next-day/datepicker-next-day.component.js +4 -4
  86. package/datepicker/datepicker-previous-day/datepicker-previous-day.component.js +6 -6
  87. package/datepicker/datepicker-toggle/datepicker-toggle.component.js +7 -7
  88. package/development/alert/alert/alert.component.d.ts +2 -0
  89. package/development/alert/alert/alert.component.d.ts.map +1 -1
  90. package/development/alert/alert/alert.component.js +22 -8
  91. package/development/autocomplete/autocomplete-base-element.js +23 -11
  92. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +15 -14
  93. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +5 -4
  94. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +19 -11
  95. package/development/breadcrumb/breadcrumb/breadcrumb.component.js +4 -1
  96. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +16 -8
  97. package/development/button/common.js +1 -1
  98. package/development/button/mini-button/mini-button.component.js +15 -14
  99. package/development/button/mini-button-group/mini-button-group.component.js +4 -4
  100. package/development/button.js +1 -1
  101. package/development/calendar/calendar.component.js +21 -11
  102. package/development/card/card/card.component.js +11 -6
  103. package/development/card/card-badge/card-badge.component.js +10 -9
  104. package/development/carousel/carousel/carousel.component.d.ts +1 -0
  105. package/development/carousel/carousel/carousel.component.d.ts.map +1 -1
  106. package/development/carousel/carousel/carousel.component.js +14 -4
  107. package/development/carousel/carousel-list/carousel-list.component.d.ts +2 -2
  108. package/development/carousel/carousel-list/carousel-list.component.d.ts.map +1 -1
  109. package/development/carousel/carousel-list/carousel-list.component.js +29 -21
  110. package/development/checkbox/common.js +1 -1
  111. package/development/{checkbox-common-aMPOsPVA.js → checkbox-common-Dy_ofVhp.js} +4 -3
  112. package/development/checkbox.js +1 -1
  113. package/development/chip/chip/chip.component.js +15 -14
  114. package/development/chip-label/chip-label.component.js +12 -15
  115. package/development/clock/clock.component.js +11 -3
  116. package/development/container/container/container.component.js +6 -6
  117. package/development/container/sticky-bar/sticky-bar.component.js +6 -6
  118. package/development/core/config/config.d.ts +6 -0
  119. package/development/core/config/config.d.ts.map +1 -1
  120. package/development/core/config/config.js +1 -1
  121. package/development/core/controllers/media-matchers-controller.d.ts +29 -0
  122. package/development/core/controllers/media-matchers-controller.d.ts.map +1 -1
  123. package/development/core/controllers/media-matchers-controller.js +74 -1
  124. package/development/core/controllers.js +3 -1
  125. package/development/core/dom/contains-pierce-shadow-dom.d.ts +3 -0
  126. package/development/core/dom/contains-pierce-shadow-dom.d.ts.map +1 -0
  127. package/development/core/dom/contains-pierce-shadow-dom.js +14 -0
  128. package/development/core/dom/queue-dom-content-loaded.d.ts +5 -0
  129. package/development/core/dom/queue-dom-content-loaded.d.ts.map +1 -0
  130. package/development/core/dom/queue-dom-content-loaded.js +12 -0
  131. package/development/core/dom/set-or-remove-attribute.d.ts +14 -0
  132. package/development/core/dom/set-or-remove-attribute.d.ts.map +1 -1
  133. package/development/core/dom/set-or-remove-attribute.js +9 -1
  134. package/development/core/dom.d.ts +2 -0
  135. package/development/core/dom.d.ts.map +1 -1
  136. package/development/core/dom.js +8 -2
  137. package/development/core/images.d.ts +4 -0
  138. package/development/core/images.d.ts.map +1 -1
  139. package/development/core/images.js +11 -11
  140. package/development/core/mixins.js +7 -6
  141. package/development/core/overlay/overlay-outside-pointer-event-listener.d.ts +26 -0
  142. package/development/core/overlay/overlay-outside-pointer-event-listener.d.ts.map +1 -0
  143. package/development/core/overlay/overlay-outside-pointer-event-listener.js +61 -0
  144. package/development/core/overlay.d.ts +1 -0
  145. package/development/core/overlay.d.ts.map +1 -1
  146. package/development/core/overlay.js +4 -1
  147. package/development/date-input/date-input.component.js +2 -2
  148. package/development/datepicker/datepicker-next-day/datepicker-next-day.component.js +15 -14
  149. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.component.js +15 -14
  150. package/development/datepicker/datepicker-toggle/datepicker-toggle.component.js +15 -14
  151. package/development/dialog/dialog/dialog.component.d.ts +1 -0
  152. package/development/dialog/dialog/dialog.component.d.ts.map +1 -1
  153. package/development/dialog/dialog/dialog.component.js +28 -14
  154. package/development/dialog/dialog-actions/dialog-actions.component.js +1 -1
  155. package/development/dialog/dialog-title/dialog-title.component.js +1 -1
  156. package/development/divider/divider.component.js +2 -2
  157. package/development/expansion-panel/expansion-panel/expansion-panel.component.js +6 -6
  158. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +6 -2
  159. package/development/file-selector/common.js +1 -1
  160. package/development/{file-selector-common-CRnQigIZ.js → file-selector-common-CRNAWFM_.js} +8 -5
  161. package/development/file-selector.js +1 -1
  162. package/development/flip-card/flip-card/flip-card.component.js +8 -3
  163. package/development/footer/footer.component.js +5 -4
  164. package/development/form-error/form-error.component.js +2 -2
  165. package/development/form-field/form-field/form-field.component.js +36 -22
  166. package/development/form-field/form-field-clear/form-field-clear.component.js +15 -14
  167. package/development/header/common/header-action-common.js +4 -4
  168. package/development/header/header/header.component.js +2 -2
  169. package/development/header/header-environment/header-environment.component.js +1 -1
  170. package/development/{icon-sidebar-button-common-CA_8TnFu.js → icon-sidebar-button-common-BGrKtvyM.js} +3 -2
  171. package/development/journey-header/journey-header.component.js +1 -1
  172. package/development/lead-container/lead-container.component.js +4 -2
  173. package/development/link/common/block-link-common.js +17 -5
  174. package/development/link/common/inline-link-common.js +9 -3
  175. package/development/link-list/link-list-anchor/link-list-anchor.component.js +11 -9
  176. package/development/loading-indicator/loading-indicator.component.js +1 -1
  177. package/development/loading-indicator-circle/loading-indicator-circle.component.js +2 -2
  178. package/development/logo/logo.component.js +3 -2
  179. package/development/map-container/map-container.component.js +14 -6
  180. package/development/menu/common/menu-action-common.js +4 -3
  181. package/development/menu/menu/menu.component.d.ts +2 -0
  182. package/development/menu/menu/menu.component.d.ts.map +1 -1
  183. package/development/menu/menu/menu.component.js +36 -13
  184. package/development/message/message.component.js +3 -1
  185. package/development/navigation/common/navigation-action-common.js +4 -4
  186. package/development/navigation/navigation/navigation.component.js +21 -19
  187. package/development/navigation/navigation-list/navigation-list.component.js +1 -1
  188. package/development/navigation/navigation-marker/navigation-marker.component.js +1 -1
  189. package/development/navigation/navigation-section/navigation-section.component.js +3 -3
  190. package/development/notification/notification.component.js +38 -18
  191. package/development/option/optgroup/optgroup-base-element.js +3 -2
  192. package/development/option/option/option.component.js +13 -11
  193. package/development/option/option-hint/option-hint.component.js +3 -2
  194. package/development/overlay/overlay.component.d.ts.map +1 -1
  195. package/development/overlay/overlay.component.js +28 -22
  196. package/development/paginator/compact-paginator/compact-paginator.component.js +3 -2
  197. package/development/paginator/paginator/paginator.component.js +18 -17
  198. package/development/popover/popover/popover.component.js +8 -6
  199. package/development/popover/popover-trigger/popover-trigger.component.js +20 -17
  200. package/development/radio-button/common.js +1 -1
  201. package/development/radio-button/radio-button/radio-button.component.js +3 -3
  202. package/development/radio-button/radio-button-panel/radio-button-panel.component.js +3 -3
  203. package/development/{radio-button-common-454JtP9b.js → radio-button-common-CgM3kQSW.js} +9 -8
  204. package/development/radio-button.js +1 -1
  205. package/development/sbb-tokens-CVLcOi-S.js +1 -1
  206. package/development/select/select.component.js +31 -13
  207. package/development/selection-action-panel/selection-action-panel.component.js +9 -5
  208. package/development/selection-expansion-panel/selection-expansion-panel.component.js +10 -6
  209. package/development/sidebar/common.js +1 -1
  210. package/development/sidebar/icon-sidebar/icon-sidebar.component.js +2 -2
  211. package/development/sidebar/sidebar/sidebar.component.js +14 -6
  212. package/development/sidebar.js +1 -1
  213. package/development/signet/signet.component.js +2 -2
  214. package/development/skiplink-list/skiplink-list.component.d.ts +3 -1
  215. package/development/skiplink-list/skiplink-list.component.d.ts.map +1 -1
  216. package/development/skiplink-list/skiplink-list.component.js +26 -9
  217. package/development/slider/slider.component.js +15 -9
  218. package/development/status/status.component.js +7 -7
  219. package/development/stepper/step/step.component.js +1 -3
  220. package/development/stepper/step-label/step-label.component.js +7 -6
  221. package/development/stepper/stepper/stepper.component.js +5 -5
  222. package/development/tabs/tab-label/tab-label.component.js +7 -14
  223. package/development/tag/tag/tag.component.js +15 -9
  224. package/development/teaser/teaser.component.js +3 -2
  225. package/development/teaser-hero/teaser-hero.component.js +3 -3
  226. package/development/teaser-product/common.js +1 -1
  227. package/development/{teaser-product-common-D6fa6x3w.js → teaser-product-common-DvlBRkE_.js} +14 -6
  228. package/development/teaser-product.js +1 -1
  229. package/development/time-input/time-input.component.js +2 -2
  230. package/development/timetable-form/timetable-form/timetable-form.component.js +1 -1
  231. package/development/timetable-form/timetable-form-details/timetable-form-details.component.js +1 -1
  232. package/development/timetable-form/timetable-form-field/timetable-form-field.component.js +3 -3
  233. package/development/timetable-occupancy/timetable-occupancy.component.js +2 -2
  234. package/development/timetable-occupancy-icon/timetable-occupancy-icon.component.d.ts +1 -0
  235. package/development/timetable-occupancy-icon/timetable-occupancy-icon.component.d.ts.map +1 -1
  236. package/development/timetable-occupancy-icon/timetable-occupancy-icon.component.js +4 -3
  237. package/development/title/title-base.js +2 -5
  238. package/development/title/title.component.js +1 -1
  239. package/development/toast/toast.component.d.ts +3 -1
  240. package/development/toast/toast.component.d.ts.map +1 -1
  241. package/development/toast/toast.component.js +31 -15
  242. package/development/toggle/toggle/toggle.component.js +8 -4
  243. package/development/toggle/toggle-option/toggle-option.component.js +5 -3
  244. package/development/toggle-check/toggle-check.component.js +13 -14
  245. package/development/tooltip/tooltip.component.d.ts +89 -0
  246. package/development/tooltip/tooltip.component.d.ts.map +1 -0
  247. package/development/tooltip/tooltip.component.js +466 -0
  248. package/development/tooltip.d.ts +5 -0
  249. package/development/tooltip.d.ts.map +1 -0
  250. package/development/tooltip.js +5 -0
  251. package/development/train/train-blocked-passage/train-blocked-passage.component.js +1 -1
  252. package/development/train/train-formation/train-formation.component.js +16 -4
  253. package/development/train/train-wagon/train-wagon.component.js +3 -12
  254. package/development/{transparent-button-COe-YB_U.js → transparent-button-DdSaBp_-.js} +141 -86
  255. package/development/visual-checkbox/visual-checkbox.component.js +12 -12
  256. package/dialog/dialog/dialog.component.d.ts +1 -0
  257. package/dialog/dialog/dialog.component.d.ts.map +1 -1
  258. package/dialog/dialog/dialog.component.js +37 -36
  259. package/dialog/dialog-actions/dialog-actions.component.js +6 -6
  260. package/dialog/dialog-title/dialog-title.component.js +4 -4
  261. package/divider/divider.component.js +16 -16
  262. package/expansion-panel/expansion-panel/expansion-panel.component.js +1 -1
  263. package/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +3 -3
  264. package/file-selector/common.js +1 -1
  265. package/file-selector-common-D88J9PEh.js +5 -0
  266. package/file-selector.js +1 -1
  267. package/flip-card/flip-card/flip-card.component.js +14 -14
  268. package/footer/footer.component.js +18 -18
  269. package/form-error/form-error.component.js +4 -4
  270. package/form-field/form-field/form-field.component.js +1 -1
  271. package/form-field/form-field-clear/form-field-clear.component.js +9 -9
  272. package/header/common/header-action-common.js +1 -1
  273. package/header/header/header.component.js +19 -19
  274. package/header/header-environment/header-environment.component.js +1 -1
  275. package/icon-sidebar-button-common-BeRXvifI.js +7 -0
  276. package/index.d.ts +2 -0
  277. package/index.js +2 -0
  278. package/journey-header/journey-header.component.js +1 -1
  279. package/lead-container/lead-container.component.js +5 -5
  280. package/link/common/block-link-common.js +23 -23
  281. package/link/common/inline-link-common.js +7 -7
  282. package/link-list/link-list-anchor/link-list-anchor.component.js +11 -11
  283. package/lists.css +5 -3
  284. package/loading-indicator/loading-indicator.component.js +1 -1
  285. package/loading-indicator-circle/loading-indicator-circle.component.js +13 -13
  286. package/logo/logo.component.js +9 -9
  287. package/map-container/map-container.component.js +15 -15
  288. package/menu/common/menu-action-common.js +5 -5
  289. package/menu/menu/menu.component.d.ts +2 -0
  290. package/menu/menu/menu.component.d.ts.map +1 -1
  291. package/menu/menu/menu.component.js +45 -38
  292. package/message/message.component.js +9 -9
  293. package/navigation/common/navigation-action-common.js +6 -6
  294. package/navigation/navigation/navigation.component.js +19 -19
  295. package/navigation/navigation-list/navigation-list.component.js +1 -1
  296. package/navigation/navigation-marker/navigation-marker.component.js +1 -1
  297. package/navigation/navigation-section/navigation-section.component.js +1 -1
  298. package/notification/notification.component.js +8 -8
  299. package/off-brand-theme.css +3017 -0
  300. package/option/optgroup/optgroup-base-element.js +1 -1
  301. package/option/option/option.component.js +3 -3
  302. package/option/option-hint/option-hint.component.js +8 -8
  303. package/overlay/overlay.component.d.ts.map +1 -1
  304. package/overlay/overlay.component.js +47 -48
  305. package/package.json +14 -1
  306. package/paginator/compact-paginator/compact-paginator.component.js +4 -4
  307. package/paginator/paginator/paginator.component.js +10 -10
  308. package/popover/popover/popover.component.js +9 -9
  309. package/popover/popover-trigger/popover-trigger.component.js +5 -5
  310. package/radio-button/common.js +1 -1
  311. package/radio-button/radio-button/radio-button.component.js +13 -13
  312. package/radio-button/radio-button-panel/radio-button-panel.component.js +2 -2
  313. package/radio-button-common-Nm9ULjVb.js +5 -0
  314. package/radio-button.js +1 -1
  315. package/safety-theme.css +3017 -0
  316. package/scrollbar.css +52 -20
  317. package/select/select.component.js +45 -45
  318. package/selection-action-panel/selection-action-panel.component.js +6 -6
  319. package/selection-expansion-panel/selection-expansion-panel.component.js +11 -11
  320. package/sidebar/common.js +1 -1
  321. package/sidebar/icon-sidebar/icon-sidebar.component.js +12 -12
  322. package/sidebar/sidebar/sidebar.component.js +29 -29
  323. package/sidebar.js +1 -1
  324. package/signet/signet.component.js +1 -1
  325. package/skiplink-list/skiplink-list.component.d.ts +3 -1
  326. package/skiplink-list/skiplink-list.component.d.ts.map +1 -1
  327. package/skiplink-list/skiplink-list.component.js +37 -30
  328. package/slider/slider.component.js +16 -16
  329. package/standard-theme.css +334 -58
  330. package/status/status.component.js +13 -13
  331. package/stepper/step/step.component.js +5 -5
  332. package/stepper/step-label/step-label.component.js +1 -1
  333. package/stepper/stepper/stepper.component.js +7 -7
  334. package/table.css +15 -9
  335. package/tabs/tab-label/tab-label.component.js +19 -19
  336. package/tag/tag/tag.component.js +14 -14
  337. package/teaser/teaser.component.js +1 -1
  338. package/teaser-hero/teaser-hero.component.js +12 -12
  339. package/teaser-product/common.js +1 -1
  340. package/teaser-product-common-DIra6aVg.js +5 -0
  341. package/teaser-product.js +1 -1
  342. package/time-input/time-input.component.js +1 -1
  343. package/timetable-form/timetable-form/timetable-form.component.js +6 -6
  344. package/timetable-form/timetable-form-details/timetable-form-details.component.js +4 -4
  345. package/timetable-form/timetable-form-field/timetable-form-field.component.js +5 -5
  346. package/timetable-form.css +3 -3
  347. package/timetable-occupancy/timetable-occupancy.component.js +7 -7
  348. package/timetable-occupancy-icon/timetable-occupancy-icon.component.d.ts +1 -0
  349. package/timetable-occupancy-icon/timetable-occupancy-icon.component.d.ts.map +1 -1
  350. package/timetable-occupancy-icon/timetable-occupancy-icon.component.js +23 -23
  351. package/title/title-base.js +1 -1
  352. package/title/title.component.js +1 -1
  353. package/toast/toast.component.d.ts +3 -1
  354. package/toast/toast.component.d.ts.map +1 -1
  355. package/toast/toast.component.js +67 -59
  356. package/toggle/toggle/toggle.component.js +1 -1
  357. package/toggle/toggle-option/toggle-option.component.js +5 -5
  358. package/toggle-check/toggle-check.component.js +16 -16
  359. package/tooltip/tooltip.component.d.ts +89 -0
  360. package/tooltip/tooltip.component.d.ts.map +1 -0
  361. package/tooltip/tooltip.component.js +215 -0
  362. package/tooltip.d.ts +5 -0
  363. package/tooltip.d.ts.map +1 -0
  364. package/tooltip.js +4 -0
  365. package/train/train-blocked-passage/train-blocked-passage.component.js +1 -1
  366. package/train/train-formation/train-formation.component.js +16 -16
  367. package/train/train-wagon/train-wagon.component.js +1 -1
  368. package/transparent-button-Bg9fU_iZ.js +9 -0
  369. package/typography.css +1 -0
  370. package/visual-checkbox/visual-checkbox.component.js +14 -14
  371. package/checkbox-common-CDzcyq8p.js +0 -5
  372. package/file-selector-common-OHK9hu3a.js +0 -5
  373. package/icon-sidebar-button-common-CM-ueEhH.js +0 -7
  374. package/radio-button-common-CUppr5FI.js +0 -5
  375. package/teaser-product-common-C8oSkIxy.js +0 -5
  376. package/transparent-button-xudJxob_.js +0 -9
@@ -0,0 +1,466 @@
1
+ var __typeError = (msg) => {
2
+ throw TypeError(msg);
3
+ };
4
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
5
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
6
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
7
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
8
+ import { __esDecorate, __runInitializers } from "tslib";
9
+ import { css, isServer, html } from "lit";
10
+ import { customElement, property } from "lit/decorators.js";
11
+ import { ref } from "lit/directives/ref.js";
12
+ import { SbbOpenCloseBaseElement } from "../core/base-elements.js";
13
+ import { readConfig } from "../core/config.js";
14
+ import { SbbEscapableOverlayController } from "../core/controllers.js";
15
+ import { idReference } from "../core/decorators.js";
16
+ import { queueDomContentLoaded, addToListAttribute, removeFromListAttribute, isZeroAnimationDuration, isAndroid, isIOS } from "../core/dom.js";
17
+ import { SbbDisabledMixin } from "../core/mixins.js";
18
+ import { sbbOverlayOutsidePointerEventListener, getElementPosition } from "../core/overlay.js";
19
+ const style = css`*,
20
+ ::before,
21
+ ::after {
22
+ box-sizing: border-box;
23
+ }
24
+
25
+ :host {
26
+ --sbb-tooltip-position: absolute;
27
+ --sbb-tooltip-position-x: 0;
28
+ --sbb-tooltip-position-y: 0;
29
+ --sbb-tooltip-pointer-events: all;
30
+ --sbb-tooltip-max-width: min(
31
+ 25rem,
32
+ calc(100% - var(--sbb-spacing-fixed-2x))
33
+ );
34
+ --sbb-tooltip-border-color: var(--sbb-background-color-1-inverted);
35
+ --sbb-tooltip-border-radius: var(--sbb-border-radius-8x);
36
+ --sbb-tooltip-padding: var(--sbb-spacing-fixed-2x) var(--sbb-spacing-fixed-4x);
37
+ --sbb-tooltip-background-color: var(--sbb-background-color-1-inverted);
38
+ --sbb-tooltip-color: var(--sbb-color-2-inverted);
39
+ --sbb-tooltip-animation-duration: var(
40
+ --sbb-disable-animation-duration,
41
+ var(--sbb-animation-duration-4x)
42
+ );
43
+ --sbb-tooltip-animation-easing: ease-out;
44
+ --sbb-tooltip-animation-translate: 0 var(--sbb-spacing-fixed-2x);
45
+ display: none;
46
+ position: fixed;
47
+ inset: 0;
48
+ z-index: var(--sbb-tooltip-z-index, var(--sbb-overlay-default-z-index));
49
+ }
50
+
51
+ :host([data-state]:not([data-state=closed])) {
52
+ display: block;
53
+ --sbb-tooltip-animation-name: open;
54
+ }
55
+
56
+ :host([data-state][data-state=closing]) {
57
+ --sbb-tooltip-animation-name: close;
58
+ --sbb-tooltip-pointer-events: none;
59
+ }
60
+
61
+ :host([data-position=below]) {
62
+ --sbb-tooltip-hover-patch-inset: calc(-1 * var(--sbb-spacing-fixed-4x)) 0;
63
+ }
64
+
65
+ :host([data-position=above]) {
66
+ --sbb-tooltip-hover-patch-inset: 0 calc(-1 * var(--sbb-spacing-fixed-4x));
67
+ }
68
+
69
+ .sbb-tooltip {
70
+ box-shadow: var(--sbb-shadow-elevation-level-5-shadow-2-offset-x) var(--sbb-shadow-elevation-level-5-shadow-2-offset-y) var(--sbb-shadow-elevation-level-5-shadow-2-blur) var(--sbb-shadow-elevation-level-5-shadow-2-spread) var(--sbb-shadow-color-soft-2), var(--sbb-shadow-elevation-level-5-shadow-1-offset-x) var(--sbb-shadow-elevation-level-5-shadow-1-offset-y) var(--sbb-shadow-elevation-level-5-shadow-1-blur) var(--sbb-shadow-elevation-level-5-shadow-1-spread) var(--sbb-shadow-color-soft-1);
71
+ --sbb-text-font-size: var(--sbb-font-size-text-xs);
72
+ font-family: var(--sbb-typo-font-family);
73
+ font-weight: normal;
74
+ line-height: var(--sbb-typo-line-height-body-text);
75
+ letter-spacing: var(--sbb-typo-letter-spacing-body-text);
76
+ font-size: var(--sbb-text-font-size);
77
+ position: var(--sbb-tooltip-position);
78
+ pointer-events: var(--sbb-tooltip-pointer-events);
79
+ top: var(--sbb-tooltip-position-y);
80
+ bottom: unset;
81
+ left: var(--sbb-tooltip-position-x);
82
+ right: unset;
83
+ border: var(--sbb-border-width-1x) solid var(--sbb-tooltip-border-color);
84
+ border-radius: var(--sbb-tooltip-border-radius);
85
+ padding: var(--sbb-tooltip-padding);
86
+ max-width: var(--sbb-tooltip-max-width);
87
+ width: max-content;
88
+ color: var(--sbb-tooltip-color);
89
+ background-color: var(--sbb-tooltip-background-color);
90
+ outline: none;
91
+ animation-name: var(--sbb-tooltip-animation-name);
92
+ animation-duration: var(--sbb-tooltip-animation-duration);
93
+ animation-timing-function: var(--sbb-tooltip-animation-easing);
94
+ }
95
+ .sbb-tooltip::before {
96
+ content: "";
97
+ display: block;
98
+ position: absolute;
99
+ inset: 0;
100
+ z-index: -1;
101
+ background-color: transparent;
102
+ inset-block: var(--sbb-tooltip-hover-patch-inset);
103
+ }
104
+
105
+ @keyframes open {
106
+ from {
107
+ opacity: 0;
108
+ translate: var(--sbb-tooltip-animation-translate);
109
+ }
110
+ to {
111
+ opacity: 1;
112
+ translate: 0;
113
+ }
114
+ }
115
+ @keyframes close {
116
+ from {
117
+ opacity: 1;
118
+ translate: 0;
119
+ }
120
+ to {
121
+ opacity: 0;
122
+ translate: var(--sbb-tooltip-animation-translate);
123
+ }
124
+ }`;
125
+ const LONGPRESS_DELAY = 500;
126
+ const VERTICAL_OFFSET = 8;
127
+ const HORIZONTAL_OFFSET = 16;
128
+ const isMobile = isAndroid || isIOS;
129
+ const tooltipTriggers = /* @__PURE__ */ new WeakMap();
130
+ let nextId = 0;
131
+ let SbbTooltipElement = (() => {
132
+ var _trigger_accessor_storage, _a;
133
+ let _classDecorators = [customElement("sbb-tooltip")];
134
+ let _classDescriptor;
135
+ let _classExtraInitializers = [];
136
+ let _classThis;
137
+ let _classSuper = SbbDisabledMixin(SbbOpenCloseBaseElement);
138
+ let _instanceExtraInitializers = [];
139
+ let _trigger_decorators;
140
+ let _trigger_initializers = [];
141
+ let _trigger_extraInitializers = [];
142
+ let _set_openDelay_decorators;
143
+ let _set_closeDelay_decorators;
144
+ let _set_longPressCloseDelay_decorators;
145
+ _a = class extends _classSuper {
146
+ constructor() {
147
+ super();
148
+ __privateAdd(this, _trigger_accessor_storage);
149
+ __privateSet(this, _trigger_accessor_storage, (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _trigger_initializers, null)));
150
+ this._openDelay = __runInitializers(this, _trigger_extraInitializers);
151
+ this._triggerElement = null;
152
+ this._escapableOverlayController = new SbbEscapableOverlayController(this);
153
+ this.addEventListener("mouseleave", (event) => {
154
+ if ((this.state === "opened" || this.state === "opening") && (!event.relatedTarget || !this._triggerElement?.contains(event.relatedTarget))) {
155
+ this._delayedClose();
156
+ }
157
+ }, { passive: true });
158
+ this.addEventListener("overlayOutsidePointer", () => this.close(), { passive: true });
159
+ }
160
+ /**
161
+ * The element that will trigger the popover overlay.
162
+ *
163
+ * For attribute usage, provide an id reference.
164
+ */
165
+ get trigger() {
166
+ return __privateGet(this, _trigger_accessor_storage);
167
+ }
168
+ set trigger(value) {
169
+ __privateSet(this, _trigger_accessor_storage, value);
170
+ }
171
+ /**
172
+ * Open the tooltip after a given delay in milliseconds.
173
+ * Global configuration is used as default, if not set.
174
+ *
175
+ * @default 0
176
+ */
177
+ set openDelay(value) {
178
+ this._openDelay = +value;
179
+ }
180
+ get openDelay() {
181
+ return this._openDelay ?? readConfig().tooltip?.openDelay ?? 0;
182
+ }
183
+ /**
184
+ * Close the tooltip after a given delay in milliseconds.
185
+ * Global configuration is used as default, if not set.
186
+ *
187
+ * @default 0
188
+ */
189
+ set closeDelay(value) {
190
+ this._closeDelay = +value;
191
+ }
192
+ get closeDelay() {
193
+ return this._closeDelay ?? readConfig().tooltip?.closeDelay ?? 0;
194
+ }
195
+ /**
196
+ * Automatically close the tooltip after it has been open by long press.
197
+ * Global configuration is used as default, if not set.
198
+ *
199
+ * @default 1500
200
+ */
201
+ set longPressCloseDelay(value) {
202
+ this._longPressCloseDelay = +value;
203
+ }
204
+ get longPressCloseDelay() {
205
+ return this._longPressCloseDelay ?? readConfig().tooltip?.longPressCloseDelay ?? 1500;
206
+ }
207
+ static _initializeTooltipOutlet() {
208
+ this._tooltipOutlet = document.createElement("div");
209
+ this._tooltipOutlet.classList.add("sbb-overlay-outlet");
210
+ document.body.appendChild(this._tooltipOutlet);
211
+ new MutationObserver((mutations) => {
212
+ for (const mutation of mutations) {
213
+ if (mutation.type === "attributes") {
214
+ this._handleTooltipTrigger(mutation.target);
215
+ } else if (mutation.type === "childList") {
216
+ for (const node of [...mutation.addedNodes, ...mutation.removedNodes].filter((n) => n.nodeType === n.ELEMENT_NODE)) {
217
+ this._handleTooltipTrigger(node);
218
+ this._findAndHandleTooltipTriggers(node);
219
+ }
220
+ }
221
+ }
222
+ }).observe(document.documentElement, {
223
+ attributeFilter: ["sbb-tooltip"],
224
+ childList: true,
225
+ subtree: true
226
+ });
227
+ this._findAndHandleTooltipTriggers(document.body);
228
+ }
229
+ static _findAndHandleTooltipTriggers(root) {
230
+ root.querySelectorAll("[sbb-tooltip]").forEach((e) => this._handleTooltipTrigger(e));
231
+ }
232
+ static _handleTooltipTrigger(triggerElement) {
233
+ const tooltipMessage = triggerElement.getAttribute("sbb-tooltip");
234
+ let tooltip = tooltipTriggers.get(triggerElement);
235
+ if (tooltipMessage && triggerElement.isConnected) {
236
+ if (!tooltip) {
237
+ tooltip = document.createElement("sbb-tooltip");
238
+ tooltipTriggers.set(triggerElement, tooltip);
239
+ this._tooltipOutlet.appendChild(tooltip);
240
+ tooltip.trigger = triggerElement;
241
+ }
242
+ tooltip.textContent = tooltipMessage;
243
+ } else if (tooltip) {
244
+ tooltipTriggers.delete(triggerElement);
245
+ tooltip._destroy();
246
+ }
247
+ }
248
+ connectedCallback() {
249
+ super.connectedCallback();
250
+ this.popover = "manual";
251
+ this.id ||= `sbb-tooltip-${++nextId}`;
252
+ this.state = "closed";
253
+ sbbOverlayOutsidePointerEventListener.connect(this);
254
+ if (this.hasUpdated && this.trigger) {
255
+ this._attach(this.trigger);
256
+ }
257
+ }
258
+ disconnectedCallback() {
259
+ super.disconnectedCallback();
260
+ sbbOverlayOutsidePointerEventListener.disconnect(this);
261
+ this._detach();
262
+ }
263
+ requestUpdate(name, oldValue, options) {
264
+ super.requestUpdate(name, oldValue, options);
265
+ if (isServer) {
266
+ return;
267
+ }
268
+ if ((!name || name === "trigger") && this.hasUpdated) {
269
+ this._attach(this.trigger);
270
+ }
271
+ }
272
+ firstUpdated(changedProperties) {
273
+ super.firstUpdated(changedProperties);
274
+ this._attach(this.trigger);
275
+ }
276
+ open() {
277
+ this._resetOpenCloseTimeout();
278
+ if (this.state !== "closed" && this.state !== "closing" || this.disabled || !this.overlay || !this.dispatchBeforeOpenEvent()) {
279
+ return;
280
+ }
281
+ this.showPopover?.();
282
+ this.state = "opening";
283
+ this._setTooltipPosition();
284
+ if (this._isZeroAnimationDuration()) {
285
+ this._handleOpening();
286
+ }
287
+ }
288
+ close() {
289
+ this._resetOpenCloseTimeout();
290
+ if (this.state !== "opened" && this.state !== "opening") {
291
+ return;
292
+ }
293
+ this.dispatchBeforeCloseEvent();
294
+ this.state = "closing";
295
+ if (this._isZeroAnimationDuration()) {
296
+ this._handleClosing();
297
+ }
298
+ }
299
+ _delayedOpen() {
300
+ this._resetOpenCloseTimeout();
301
+ this._openTimeout = setTimeout(() => this.open(), this.openDelay);
302
+ }
303
+ _handleOpening() {
304
+ this.state = "opened";
305
+ this._attachWindowEvents();
306
+ this._escapableOverlayController.connect();
307
+ this.dispatchOpenEvent();
308
+ }
309
+ _delayedClose() {
310
+ this._resetOpenCloseTimeout();
311
+ this._closeTimeout = setTimeout(() => this.close(), this.closeDelay);
312
+ }
313
+ _handleClosing() {
314
+ this.state = "closed";
315
+ this.hidePopover?.();
316
+ this._escapableOverlayController.disconnect();
317
+ this.dispatchCloseEvent();
318
+ this._openStateController?.abort();
319
+ }
320
+ _onTooltipAnimationEnd(event) {
321
+ if (event.animationName === "open" && this.state === "opening") {
322
+ this._handleOpening();
323
+ } else if (event.animationName === "close" && this.state === "closing") {
324
+ this._handleClosing();
325
+ }
326
+ }
327
+ _attach(trigger) {
328
+ if (this._triggerElement) {
329
+ this._detach();
330
+ }
331
+ this._triggerElement = trigger;
332
+ if (!this._triggerElement) {
333
+ return;
334
+ }
335
+ addToListAttribute(this._triggerElement, "aria-describedby", this.id);
336
+ this._addTriggerEventHandlers();
337
+ }
338
+ _detach() {
339
+ this._triggerAbortController?.abort();
340
+ this._openStateController?.abort();
341
+ this._resetOpenCloseTimeout();
342
+ clearTimeout(this._longPressOpenTimeout);
343
+ clearTimeout(this._longPressCloseTimeout);
344
+ if (!this._triggerElement) {
345
+ return;
346
+ }
347
+ removeFromListAttribute(this._triggerElement, "aria-describedby", this.id);
348
+ this._triggerElement = null;
349
+ }
350
+ _destroy() {
351
+ this._detach();
352
+ this.remove();
353
+ }
354
+ _setTooltipPosition() {
355
+ if (!this.overlay || !this._triggerElement) {
356
+ return;
357
+ }
358
+ const position = getElementPosition(this.overlay, this._triggerElement, this, {
359
+ verticalOffset: VERTICAL_OFFSET,
360
+ horizontalOffset: HORIZONTAL_OFFSET,
361
+ centered: true,
362
+ responsiveHeight: true
363
+ });
364
+ this.setAttribute("data-position", position.alignment.vertical);
365
+ this.style.setProperty("--sbb-tooltip-position-x", `${position.left}px`);
366
+ this.style.setProperty("--sbb-tooltip-position-y", `${position.top}px`);
367
+ }
368
+ _addTriggerEventHandlers() {
369
+ const trigger = this._triggerElement;
370
+ if (!trigger) {
371
+ return;
372
+ }
373
+ this._triggerAbortController?.abort();
374
+ this._triggerAbortController = new AbortController();
375
+ const options = {
376
+ signal: this._triggerAbortController.signal,
377
+ passive: true
378
+ };
379
+ if (!isMobile) {
380
+ trigger.addEventListener("mouseenter", () => this._delayedOpen(), options);
381
+ trigger.addEventListener("mouseleave", (event) => {
382
+ const newTarget = event.relatedTarget;
383
+ if (!newTarget || newTarget !== this) {
384
+ this._delayedClose();
385
+ }
386
+ }, options);
387
+ trigger.addEventListener("blur", () => this.close(), options);
388
+ trigger.addEventListener("focus", () => this._delayedOpen(), options);
389
+ }
390
+ trigger.addEventListener("touchstart", () => {
391
+ clearTimeout(this._longPressOpenTimeout);
392
+ clearTimeout(this._longPressCloseTimeout);
393
+ this._longPressOpenTimeout = setTimeout(() => this.open(), LONGPRESS_DELAY);
394
+ }, options);
395
+ trigger.addEventListener("touchend", () => {
396
+ clearTimeout(this._longPressOpenTimeout);
397
+ this._longPressCloseTimeout = setTimeout(() => this.close(), this.longPressCloseDelay);
398
+ }, options);
399
+ trigger.addEventListener("touchcancel", () => {
400
+ clearTimeout(this._longPressOpenTimeout);
401
+ }, options);
402
+ }
403
+ _attachWindowEvents() {
404
+ this._openStateController = new AbortController();
405
+ document.addEventListener("scroll", () => this._setTooltipPosition(), {
406
+ passive: true,
407
+ signal: this._openStateController.signal,
408
+ // Without capture, other scroll contexts would not bubble to this event listener.
409
+ // Capture allows us to react to all scroll contexts in this DOM.
410
+ capture: true
411
+ });
412
+ window.addEventListener("resize", () => this._setTooltipPosition(), {
413
+ passive: true,
414
+ signal: this._openStateController.signal
415
+ });
416
+ }
417
+ _isZeroAnimationDuration() {
418
+ return isZeroAnimationDuration(this, "--sbb-tooltip-animation-duration");
419
+ }
420
+ _resetOpenCloseTimeout() {
421
+ clearTimeout(this._openTimeout);
422
+ clearTimeout(this._closeTimeout);
423
+ }
424
+ render() {
425
+ return html`
426
+ <div
427
+ @animationend=${this._onTooltipAnimationEnd}
428
+ class="sbb-tooltip"
429
+ ${ref((el) => this.overlay = el)}
430
+ >
431
+ <slot></slot>
432
+ </div>
433
+ `;
434
+ }
435
+ }, _trigger_accessor_storage = new WeakMap(), _classThis = _a, (() => {
436
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
437
+ _trigger_decorators = [idReference(), property()];
438
+ _set_openDelay_decorators = [property({ attribute: "open-delay", type: Number })];
439
+ _set_closeDelay_decorators = [property({ attribute: "close-delay", type: Number })];
440
+ _set_longPressCloseDelay_decorators = [property({ attribute: "long-press-close-delay", type: Number })];
441
+ __esDecorate(_a, null, _trigger_decorators, { kind: "accessor", name: "trigger", static: false, private: false, access: { has: (obj) => "trigger" in obj, get: (obj) => obj.trigger, set: (obj, value) => {
442
+ obj.trigger = value;
443
+ } }, metadata: _metadata }, _trigger_initializers, _trigger_extraInitializers);
444
+ __esDecorate(_a, null, _set_openDelay_decorators, { kind: "setter", name: "openDelay", static: false, private: false, access: { has: (obj) => "openDelay" in obj, set: (obj, value) => {
445
+ obj.openDelay = value;
446
+ } }, metadata: _metadata }, null, _instanceExtraInitializers);
447
+ __esDecorate(_a, null, _set_closeDelay_decorators, { kind: "setter", name: "closeDelay", static: false, private: false, access: { has: (obj) => "closeDelay" in obj, set: (obj, value) => {
448
+ obj.closeDelay = value;
449
+ } }, metadata: _metadata }, null, _instanceExtraInitializers);
450
+ __esDecorate(_a, null, _set_longPressCloseDelay_decorators, { kind: "setter", name: "longPressCloseDelay", static: false, private: false, access: { has: (obj) => "longPressCloseDelay" in obj, set: (obj, value) => {
451
+ obj.longPressCloseDelay = value;
452
+ } }, metadata: _metadata }, null, _instanceExtraInitializers);
453
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
454
+ _classThis = _classDescriptor.value;
455
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
456
+ })(), _a.role = "tooltip", _a.styles = style, (() => {
457
+ if (!isServer) {
458
+ queueDomContentLoaded(() => _classThis._initializeTooltipOutlet());
459
+ }
460
+ })(), __runInitializers(_classThis, _classExtraInitializers), _a;
461
+ return _classThis;
462
+ })();
463
+ export {
464
+ SbbTooltipElement
465
+ };
466
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB0eXBlIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vY29yZS9iYXNlLWVsZW1lbnRzLmpzJztcbmltcG9ydCB7IHJlYWRDb25maWcgfSBmcm9tICcuLi9jb3JlL2NvbmZpZy5qcyc7XG5pbXBvcnQgeyBTYmJFc2NhcGFibGVPdmVybGF5Q29udHJvbGxlciB9IGZyb20gJy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgaWRSZWZlcmVuY2UgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHtcbiAgYWRkVG9MaXN0QXR0cmlidXRlLFxuICBpc0FuZHJvaWQsXG4gIGlzSU9TLFxuICBpc1plcm9BbmltYXRpb25EdXJhdGlvbixcbiAgcXVldWVEb21Db250ZW50TG9hZGVkLFxuICByZW1vdmVGcm9tTGlzdEF0dHJpYnV0ZSxcbn0gZnJvbSAnLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgU2JiRGlzYWJsZWRNaXhpbiB9IGZyb20gJy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB7IGdldEVsZW1lbnRQb3NpdGlvbiwgc2JiT3ZlcmxheU91dHNpZGVQb2ludGVyRXZlbnRMaXN0ZW5lciB9IGZyb20gJy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3Rvb2x0aXAuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBUaW1lIGJldHdlZW4gdGhlIHVzZXIgcHV0dGluZyB0aGUgcG9pbnRlciBvbiBhIHRvb2x0aXBcbiAqIHRyaWdnZXIgYW5kIHRoZSBsb25nIHByZXNzIGV2ZW50IGJlaW5nIGZpcmVkLlxuICovXG5jb25zdCBMT05HUFJFU1NfREVMQVkgPSA1MDA7XG5jb25zdCBWRVJUSUNBTF9PRkZTRVQgPSA4O1xuY29uc3QgSE9SSVpPTlRBTF9PRkZTRVQgPSAxNjtcblxuY29uc3QgaXNNb2JpbGUgPSBpc0FuZHJvaWQgfHwgaXNJT1M7XG5jb25zdCB0b29sdGlwVHJpZ2dlcnMgPSBuZXcgV2Vha01hcDxIVE1MRWxlbWVudCwgU2JiVG9vbHRpcEVsZW1lbnQ+KCk7XG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyB0ZXh0IGNvbnRlbnQgd2l0aGluIGEgdG9vbHRpcC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCB0aGUgdGV4dCBpbnRvIHRoZSB0b29sdGlwLlxuICogQGNzc3Byb3AgWy0tc2JiLXRvb2x0aXAtei1pbmRleD12YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpXSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLiBUaGUgZGVmYXVsdCBgei1pbmRleGAgb2YgdGhlXG4gKiBjb21wb25lbnQgaXMgc2V0IHRvIGB2YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpYCB3aXRoIGEgdmFsdWUgb2YgYDEwMDBgLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItdG9vbHRpcCcpXG5jbGFzcyBTYmJUb29sdGlwRWxlbWVudCBleHRlbmRzIFNiYkRpc2FibGVkTWl4aW4oU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSByb2xlID0gJ3Rvb2x0aXAnO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICBwcml2YXRlIHN0YXRpYyBfdG9vbHRpcE91dGxldDogRWxlbWVudDtcblxuICBzdGF0aWMge1xuICAgIGlmICghaXNTZXJ2ZXIpIHtcbiAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gYmxvY2sgZXhlY3V0aW9uIGZvciBpbml0aWFsaXphdGlvbixcbiAgICAgIC8vIHNvIHdlIGRlZmVyIGl0IHVudGlsIHRoZSBET00gY29udGVudCBpcyBsb2FkZWQuXG4gICAgICBxdWV1ZURvbUNvbnRlbnRMb2FkZWQoKCkgPT4gdGhpcy5faW5pdGlhbGl6ZVRvb2x0aXBPdXRsZXQoKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgd2lsbCB0cmlnZ2VyIHRoZSBwb3BvdmVyIG92ZXJsYXkuXG4gICAqXG4gICAqIEZvciBhdHRyaWJ1dGUgdXNhZ2UsIHByb3ZpZGUgYW4gaWQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQGlkUmVmZXJlbmNlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIHRyaWdnZXI6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIE9wZW4gdGhlIHRvb2x0aXAgYWZ0ZXIgYSBnaXZlbiBkZWxheSBpbiBtaWxsaXNlY29uZHMuXG4gICAqIEdsb2JhbCBjb25maWd1cmF0aW9uIGlzIHVzZWQgYXMgZGVmYXVsdCwgaWYgbm90IHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnb3Blbi1kZWxheScsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgc2V0IG9wZW5EZWxheSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fb3BlbkRlbGF5ID0gK3ZhbHVlO1xuICB9XG4gIHB1YmxpYyBnZXQgb3BlbkRlbGF5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX29wZW5EZWxheSA/PyByZWFkQ29uZmlnKCkudG9vbHRpcD8ub3BlbkRlbGF5ID8/IDA7XG4gIH1cbiAgcHJpdmF0ZSBfb3BlbkRlbGF5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDbG9zZSB0aGUgdG9vbHRpcCBhZnRlciBhIGdpdmVuIGRlbGF5IGluIG1pbGxpc2Vjb25kcy5cbiAgICogR2xvYmFsIGNvbmZpZ3VyYXRpb24gaXMgdXNlZCBhcyBkZWZhdWx0LCBpZiBub3Qgc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdjbG9zZS1kZWxheScsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgc2V0IGNsb3NlRGVsYXkodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2Nsb3NlRGVsYXkgPSArdmFsdWU7XG4gIH1cbiAgcHVibGljIGdldCBjbG9zZURlbGF5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Nsb3NlRGVsYXkgPz8gcmVhZENvbmZpZygpLnRvb2x0aXA/LmNsb3NlRGVsYXkgPz8gMDtcbiAgfVxuICBwcml2YXRlIF9jbG9zZURlbGF5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGNsb3NlIHRoZSB0b29sdGlwIGFmdGVyIGl0IGhhcyBiZWVuIG9wZW4gYnkgbG9uZyBwcmVzcy5cbiAgICogR2xvYmFsIGNvbmZpZ3VyYXRpb24gaXMgdXNlZCBhcyBkZWZhdWx0LCBpZiBub3Qgc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAxNTAwXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdsb25nLXByZXNzLWNsb3NlLWRlbGF5JywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBzZXQgbG9uZ1ByZXNzQ2xvc2VEZWxheSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fbG9uZ1ByZXNzQ2xvc2VEZWxheSA9ICt2YWx1ZTtcbiAgfVxuICBwdWJsaWMgZ2V0IGxvbmdQcmVzc0Nsb3NlRGVsYXkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbG9uZ1ByZXNzQ2xvc2VEZWxheSA/PyByZWFkQ29uZmlnKCkudG9vbHRpcD8ubG9uZ1ByZXNzQ2xvc2VEZWxheSA/PyAxNTAwO1xuICB9XG4gIHByaXZhdGUgX2xvbmdQcmVzc0Nsb3NlRGVsYXk/OiBudW1iZXI7XG5cbiAgcHJvdGVjdGVkIG92ZXJsYXk/OiBIVE1MRGl2RWxlbWVudDtcblxuICBwcml2YXRlIF90cmlnZ2VyRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfdHJpZ2dlckFib3J0Q29udHJvbGxlcj86IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfb3BlblN0YXRlQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIgPSBuZXcgU2JiRXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX29wZW5UaW1lb3V0PzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgX2Nsb3NlVGltZW91dD86IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuICBwcml2YXRlIF9sb25nUHJlc3NPcGVuVGltZW91dD86IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuICBwcml2YXRlIF9sb25nUHJlc3NDbG9zZVRpbWVvdXQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIC8vIFVudGlsIHRoZSBtb3VzZSBob3ZlcnMgdGhlIHRvb2x0aXAsIGl0IHN0YXlzIG9wZW4uXG4gICAgLy8gT24gJ21vdXNlbGVhdmUnIChpZiB0aGUgbW91c2UgaXMgbm90IG1vdmVkIG9udG8gdGhlIHRyaWdnZXIgYWdhaW4pLCBjbG9zZSBpdC5cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnbW91c2VsZWF2ZScsXG4gICAgICAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICh0aGlzLnN0YXRlID09PSAnb3BlbmVkJyB8fCB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpICYmXG4gICAgICAgICAgKCFldmVudC5yZWxhdGVkVGFyZ2V0IHx8ICF0aGlzLl90cmlnZ2VyRWxlbWVudD8uY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCBhcyBOb2RlKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5fZGVsYXllZENsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IHBhc3NpdmU6IHRydWUgfSxcbiAgICApO1xuXG4gICAgLy8gQW55IHVzZXIgaW50ZXJhY3Rpb24gb3V0c2lkZSB0aGUgdG9vbHRpcCwgY2xvc2VzIGl0IGltbWVkaWF0ZWx5XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdvdmVybGF5T3V0c2lkZVBvaW50ZXInLCAoKSA9PiB0aGlzLmNsb3NlKCksIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIF9pbml0aWFsaXplVG9vbHRpcE91dGxldCgpOiB2b2lkIHtcbiAgICB0aGlzLl90b29sdGlwT3V0bGV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5fdG9vbHRpcE91dGxldC5jbGFzc0xpc3QuYWRkKCdzYmItb3ZlcmxheS1vdXRsZXQnKTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuX3Rvb2x0aXBPdXRsZXQpO1xuXG4gICAgLy8gV2UgYXJlIHVzaW5nIE11dGF0aW9uT2JzZXJ2ZXIgZGlyZWN0bHkgaGVyZSwgYXMgaXQgd2lsbCBvbmx5IGJlIGNhbGxlZCBvbiBjbGllbnQgc2lkZVxuICAgIC8vIGFuZCB3ZSBkbyBub3QgbmVlZCB0byBkaXNjb25uZWN0IGl0LCBhcyB3ZSB3YW50IGl0IHRvIHdvcmsgZHVyaW5nIHRoZSBmdWxsIGxpZmV0aW1lXG4gICAgLy8gb2YgdGhlIHBhZ2UuXG4gICAgbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuICAgICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnMpIHtcbiAgICAgICAgaWYgKG11dGF0aW9uLnR5cGUgPT09ICdhdHRyaWJ1dGVzJykge1xuICAgICAgICAgIHRoaXMuX2hhbmRsZVRvb2x0aXBUcmlnZ2VyKG11dGF0aW9uLnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAobXV0YXRpb24udHlwZSA9PT0gJ2NoaWxkTGlzdCcpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgWy4uLm11dGF0aW9uLmFkZGVkTm9kZXMsIC4uLm11dGF0aW9uLnJlbW92ZWROb2Rlc10uZmlsdGVyKFxuICAgICAgICAgICAgKG4pOiBuIGlzIEhUTUxFbGVtZW50ID0+IG4ubm9kZVR5cGUgPT09IG4uRUxFTUVOVF9OT0RFLFxuICAgICAgICAgICkpIHtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZVRvb2x0aXBUcmlnZ2VyKG5vZGUpO1xuICAgICAgICAgICAgdGhpcy5fZmluZEFuZEhhbmRsZVRvb2x0aXBUcmlnZ2Vycyhub2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KS5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwge1xuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ3NiYi10b29sdGlwJ10sXG4gICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMuX2ZpbmRBbmRIYW5kbGVUb29sdGlwVHJpZ2dlcnMoZG9jdW1lbnQuYm9keSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfZmluZEFuZEhhbmRsZVRvb2x0aXBUcmlnZ2Vycyhyb290OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIHJvb3RcbiAgICAgIC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PignW3NiYi10b29sdGlwXScpXG4gICAgICAuZm9yRWFjaCgoZSkgPT4gdGhpcy5faGFuZGxlVG9vbHRpcFRyaWdnZXIoZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2hhbmRsZVRvb2x0aXBUcmlnZ2VyKHRyaWdnZXJFbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRvb2x0aXBNZXNzYWdlID0gdHJpZ2dlckVsZW1lbnQuZ2V0QXR0cmlidXRlKCdzYmItdG9vbHRpcCcpO1xuICAgIGxldCB0b29sdGlwID0gdG9vbHRpcFRyaWdnZXJzLmdldCh0cmlnZ2VyRWxlbWVudCk7XG5cbiAgICBpZiAodG9vbHRpcE1lc3NhZ2UgJiYgdHJpZ2dlckVsZW1lbnQuaXNDb25uZWN0ZWQpIHtcbiAgICAgIGlmICghdG9vbHRpcCkge1xuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgc2JiLXRvb2x0aXAgaW4gdGhlIG91dGxldCBhbmQgYXR0YWNoIGl0IHRvIHRoZSB0cmlnZ2VyXG4gICAgICAgIHRvb2x0aXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzYmItdG9vbHRpcCcpO1xuICAgICAgICB0b29sdGlwVHJpZ2dlcnMuc2V0KHRyaWdnZXJFbGVtZW50LCB0b29sdGlwKTtcbiAgICAgICAgdGhpcy5fdG9vbHRpcE91dGxldC5hcHBlbmRDaGlsZCh0b29sdGlwKTtcbiAgICAgICAgdG9vbHRpcC50cmlnZ2VyID0gdHJpZ2dlckVsZW1lbnQ7XG4gICAgICB9XG4gICAgICB0b29sdGlwLnRleHRDb250ZW50ID0gdG9vbHRpcE1lc3NhZ2U7XG4gICAgfSBlbHNlIGlmICh0b29sdGlwKSB7XG4gICAgICAvLyBUaGUgdHJpZ2dlciBvciB0aGUgYXR0cmlidXRlIGhhcyBiZWVuIGRlbGV0ZWQgPT4gZGVsZXRlIHRoZSBjb25uZWN0ZWQgdG9vbHRpcFxuICAgICAgdG9vbHRpcFRyaWdnZXJzLmRlbGV0ZSh0cmlnZ2VyRWxlbWVudCk7XG4gICAgICB0b29sdGlwLl9kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5wb3BvdmVyID0gJ21hbnVhbCc7XG4gICAgdGhpcy5pZCB8fD0gYHNiYi10b29sdGlwLSR7KytuZXh0SWR9YDtcbiAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgc2JiT3ZlcmxheU91dHNpZGVQb2ludGVyRXZlbnRMaXN0ZW5lci5jb25uZWN0KHRoaXMpO1xuXG4gICAgaWYgKHRoaXMuaGFzVXBkYXRlZCAmJiB0aGlzLnRyaWdnZXIpIHtcbiAgICAgIHRoaXMuX2F0dGFjaCh0aGlzLnRyaWdnZXIpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHNiYk92ZXJsYXlPdXRzaWRlUG9pbnRlckV2ZW50TGlzdGVuZXIuZGlzY29ubmVjdCh0aGlzKTtcbiAgICB0aGlzLl9kZXRhY2goKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgoIW5hbWUgfHwgbmFtZSA9PT0gJ3RyaWdnZXInKSAmJiB0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHRoaXMuX2F0dGFjaCh0aGlzLnRyaWdnZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzKTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLl9hdHRhY2godGhpcy50cmlnZ2VyKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIHRoaXMuX3Jlc2V0T3BlbkNsb3NlVGltZW91dCgpO1xuICAgIGlmIChcbiAgICAgICh0aGlzLnN0YXRlICE9PSAnY2xvc2VkJyAmJiB0aGlzLnN0YXRlICE9PSAnY2xvc2luZycpIHx8XG4gICAgICB0aGlzLmRpc2FibGVkIHx8XG4gICAgICAhdGhpcy5vdmVybGF5IHx8XG4gICAgICAhdGhpcy5kaXNwYXRjaEJlZm9yZU9wZW5FdmVudCgpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93UG9wb3Zlcj8uKCk7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuaW5nJztcbiAgICB0aGlzLl9zZXRUb29sdGlwUG9zaXRpb24oKTtcblxuICAgIC8vIElmIHRoZSBhbmltYXRpb24gZHVyYXRpb24gaXMgemVybywgdGhlIGFuaW1hdGlvbmVuZCBldmVudCBpcyBub3QgYWx3YXlzIGZpcmVkIHJlbGlhYmx5LlxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkaXJlY3RseSBzZXQgdGhlIGBvcGVuZWRgIHN0YXRlLlxuICAgIGlmICh0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3Jlc2V0T3BlbkNsb3NlVGltZW91dCgpO1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb3BlbmVkJyAmJiB0aGlzLnN0YXRlICE9PSAnb3BlbmluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRpc3BhdGNoQmVmb3JlQ2xvc2VFdmVudCgpO1xuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2luZyc7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgY2xvc2VkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlQ2xvc2luZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2RlbGF5ZWRPcGVuKCk6IHZvaWQge1xuICAgIHRoaXMuX3Jlc2V0T3BlbkNsb3NlVGltZW91dCgpO1xuICAgIHRoaXMuX29wZW5UaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLm9wZW4oKSwgdGhpcy5vcGVuRGVsYXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlT3BlbmluZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ29wZW5lZCc7XG4gICAgdGhpcy5fYXR0YWNoV2luZG93RXZlbnRzKCk7XG4gICAgdGhpcy5fZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuY29ubmVjdCgpO1xuICAgIHRoaXMuZGlzcGF0Y2hPcGVuRXZlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2RlbGF5ZWRDbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXNldE9wZW5DbG9zZVRpbWVvdXQoKTtcbiAgICB0aGlzLl9jbG9zZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2xvc2UoKSwgdGhpcy5jbG9zZURlbGF5KTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUNsb3NpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHRoaXMuaGlkZVBvcG92ZXI/LigpO1xuXG4gICAgdGhpcy5fZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuZGlzcGF0Y2hDbG9zZUV2ZW50KCk7XG4gICAgdGhpcy5fb3BlblN0YXRlQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uVG9vbHRpcEFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ29wZW4nICYmIHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJykge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2godHJpZ2dlcjogSFRNTEVsZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICAvLyBFdmVudHVhbGx5IGRldGFjaCBmcm9tIHRoZSBvbGQgdHJpZ2dlclxuICAgICAgdGhpcy5fZGV0YWNoKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSB0cmlnZ2VyO1xuICAgIGlmICghdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYWRkVG9MaXN0QXR0cmlidXRlKHRoaXMuX3RyaWdnZXJFbGVtZW50LCAnYXJpYS1kZXNjcmliZWRieScsIHRoaXMuaWQpO1xuICAgIHRoaXMuX2FkZFRyaWdnZXJFdmVudEhhbmRsZXJzKCk7XG4gIH1cblxuICBwcml2YXRlIF9kZXRhY2goKTogdm9pZCB7XG4gICAgdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9vcGVuU3RhdGVDb250cm9sbGVyPy5hYm9ydCgpO1xuXG4gICAgLy8gY2xlYXIgdGltZW91dHNcbiAgICB0aGlzLl9yZXNldE9wZW5DbG9zZVRpbWVvdXQoKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fbG9uZ1ByZXNzT3BlblRpbWVvdXQpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9sb25nUHJlc3NDbG9zZVRpbWVvdXQpO1xuXG4gICAgaWYgKCF0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZW1vdmVGcm9tTGlzdEF0dHJpYnV0ZSh0aGlzLl90cmlnZ2VyRWxlbWVudCwgJ2FyaWEtZGVzY3JpYmVkYnknLCB0aGlzLmlkKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9kZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2RldGFjaCgpO1xuICAgIHRoaXMucmVtb3ZlKCk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRUb29sdGlwUG9zaXRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXkgfHwgIXRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcG9zaXRpb24gPSBnZXRFbGVtZW50UG9zaXRpb24odGhpcy5vdmVybGF5LCB0aGlzLl90cmlnZ2VyRWxlbWVudCwgdGhpcywge1xuICAgICAgdmVydGljYWxPZmZzZXQ6IFZFUlRJQ0FMX09GRlNFVCxcbiAgICAgIGhvcml6b250YWxPZmZzZXQ6IEhPUklaT05UQUxfT0ZGU0VULFxuICAgICAgY2VudGVyZWQ6IHRydWUsXG4gICAgICByZXNwb25zaXZlSGVpZ2h0OiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKCdkYXRhLXBvc2l0aW9uJywgcG9zaXRpb24uYWxpZ25tZW50LnZlcnRpY2FsKTtcblxuICAgIHRoaXMuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLXRvb2x0aXAtcG9zaXRpb24teCcsIGAke3Bvc2l0aW9uLmxlZnR9cHhgKTtcbiAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KCctLXNiYi10b29sdGlwLXBvc2l0aW9uLXknLCBgJHtwb3NpdGlvbi50b3B9cHhgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FkZFRyaWdnZXJFdmVudEhhbmRsZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IHRyaWdnZXIgPSB0aGlzLl90cmlnZ2VyRWxlbWVudDtcbiAgICBpZiAoIXRyaWdnZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgY29uc3Qgb3B0aW9uczogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7XG4gICAgICBzaWduYWw6IHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICB9O1xuXG4gICAgaWYgKCFpc01vYmlsZSkge1xuICAgICAgdHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT4gdGhpcy5fZGVsYXllZE9wZW4oKSwgb3B0aW9ucyk7XG4gICAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdtb3VzZWxlYXZlJyxcbiAgICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3VGFyZ2V0ID0gZXZlbnQucmVsYXRlZFRhcmdldCBhcyBOb2RlIHwgbnVsbDtcbiAgICAgICAgICBpZiAoIW5ld1RhcmdldCB8fCBuZXdUYXJnZXQgIT09IHRoaXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2RlbGF5ZWRDbG9zZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICk7XG5cbiAgICAgIC8vICdibHVycycgaW1tZWRpYXRlbHkgY2xvc2UgdGhlIHRvb2x0aXAgYmVjYXVzZSBpdCBpcyBjb25zaWRlcmVkIGFuICdpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGVsZW1lbnRzJ1xuICAgICAgdHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4gdGhpcy5jbG9zZSgpLCBvcHRpb25zKTtcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoKSA9PiB0aGlzLl9kZWxheWVkT3BlbigpLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvLyBMb25nLXByZXNzIGV2ZW50IGhhbmRsaW5nIChtYWlubHkgZm9yIG1vYmlsZSB1c2VycylcbiAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAndG91Y2hzdGFydCcsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9sb25nUHJlc3NPcGVuVGltZW91dCk7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9sb25nUHJlc3NDbG9zZVRpbWVvdXQpO1xuICAgICAgICB0aGlzLl9sb25nUHJlc3NPcGVuVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5vcGVuKCksIExPTkdQUkVTU19ERUxBWSk7XG4gICAgICB9LFxuICAgICAgb3B0aW9ucyxcbiAgICApO1xuICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICd0b3VjaGVuZCcsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9sb25nUHJlc3NPcGVuVGltZW91dCk7XG4gICAgICAgIHRoaXMuX2xvbmdQcmVzc0Nsb3NlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbG9zZSgpLCB0aGlzLmxvbmdQcmVzc0Nsb3NlRGVsYXkpO1xuICAgICAgfSxcbiAgICAgIG9wdGlvbnMsXG4gICAgKTtcbiAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAndG91Y2hjYW5jZWwnLFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbG9uZ1ByZXNzT3BlblRpbWVvdXQpO1xuICAgICAgfSxcbiAgICAgIG9wdGlvbnMsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2F0dGFjaFdpbmRvd0V2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl9vcGVuU3RhdGVDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsICgpID0+IHRoaXMuX3NldFRvb2x0aXBQb3NpdGlvbigpLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuU3RhdGVDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIC8vIFdpdGhvdXQgY2FwdHVyZSwgb3RoZXIgc2Nyb2xsIGNvbnRleHRzIHdvdWxkIG5vdCBidWJibGUgdG8gdGhpcyBldmVudCBsaXN0ZW5lci5cbiAgICAgIC8vIENhcHR1cmUgYWxsb3dzIHVzIHRvIHJlYWN0IHRvIGFsbCBzY3JvbGwgY29udGV4dHMgaW4gdGhpcyBET00uXG4gICAgICBjYXB0dXJlOiB0cnVlLFxuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB0aGlzLl9zZXRUb29sdGlwUG9zaXRpb24oKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblN0YXRlQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24odGhpcywgJy0tc2JiLXRvb2x0aXAtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwcml2YXRlIF9yZXNldE9wZW5DbG9zZVRpbWVvdXQoKTogdm9pZCB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX29wZW5UaW1lb3V0KTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fY2xvc2VUaW1lb3V0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdlxuICAgICAgICBAYW5pbWF0aW9uZW5kPSR7dGhpcy5fb25Ub29sdGlwQW5pbWF0aW9uRW5kfVxuICAgICAgICBjbGFzcz1cInNiYi10b29sdGlwXCJcbiAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCkgPT4gKHRoaXMub3ZlcmxheSA9IGVsIGFzIEhUTUxEaXZFbGVtZW50KSl9XG4gICAgICA+XG4gICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi10b29sdGlwJzogU2JiVG9vbHRpcEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0NBLE1BQU0sa0JBQWtCO0FBQ3hCLE1BQU0sa0JBQWtCO0FBQ3hCLE1BQU0sb0JBQW9CO0FBRTFCLE1BQU0sV0FBVyxhQUFhO0FBQzlCLE1BQU0sc0NBQXNCLFFBQUE7QUFDNUIsSUFBSSxT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
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @entrypoint
3
+ */
4
+ export * from './tooltip/tooltip.component.js';
5
+ //# sourceMappingURL=tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../src/elements/tooltip.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,gCAAgC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { SbbTooltipElement } from "./tooltip/tooltip.component.js";
2
+ export {
3
+ SbbTooltipElement
4
+ };
5
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5qcyIsInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7In0=
@@ -10,7 +10,7 @@ const style = css`*,
10
10
  :host {
11
11
  display: block;
12
12
  --sbb-train-blocked-passage-height: var(--sbb-train-formation-wagon-height);
13
- --sbb-train-blocked-passage-background-color: var(--sbb-color-red125);
13
+ --sbb-train-blocked-passage-background-color: var(--sbb-color-error);
14
14
  --sbb-train-blocked-passage-bar-color: var(--sbb-color-white);
15
15
  --sbb-train-blocked-passage-icon-dimension: 1rem;
16
16
  --sbb-train-blocked-passage-icon-bar-width: 0.625rem;
@@ -21,9 +21,13 @@ const style = css`*,
21
21
  :host {
22
22
  display: block;
23
23
  --sbb-train-formation-sector-line-color: var(--sbb-color-cement);
24
+ --sbb-train-formation-sector-line-color: light-dark(
25
+ var(--sbb-color-cement),
26
+ var(--sbb-color-smoke)
27
+ );
24
28
  --sbb-train-formation-sector-line-width: var(--sbb-border-width-1x);
25
29
  --sbb-train-formation-blocked-passage-width: 1rem;
26
- --sbb-train-formation-text-color: var(--sbb-color-charcoal);
30
+ --sbb-train-formation-text-color: var(--sbb-color-3);
27
31
  --sbb-train-formation-vertical-gap: var(--sbb-spacing-fixed-2x);
28
32
  }
29
33
  @media (forced-colors: active) {
@@ -36,8 +40,16 @@ const style = css`*,
36
40
  --sbb-scrollbar-thumb-width: 0.125rem;
37
41
  --sbb-scrollbar-thumb-width-hover: 0.25rem;
38
42
  --sbb-scrollbar-width-firefox: thin;
39
- --sbb-scrollbar-color: var(--sbb-color-black-alpha-30);
40
- --sbb-scrollbar-color-hover: var(--sbb-color-black-alpha-60);
43
+ --sbb-scrollbar-color: color-mix(in srgb, var(--sbb-color-black) 30%, transparent);
44
+ --sbb-scrollbar-color: light-dark(
45
+ color-mix(in srgb, var(--sbb-color-black) 30%, transparent),
46
+ color-mix(in srgb, var(--sbb-color-white) 30%, transparent)
47
+ );
48
+ --sbb-scrollbar-color-hover: color-mix(in srgb, var(--sbb-color-black) 60%, transparent);
49
+ --sbb-scrollbar-color-hover: light-dark(
50
+ color-mix(in srgb, var(--sbb-color-black) 60%, transparent),
51
+ color-mix(in srgb, var(--sbb-color-white) 60%, transparent)
52
+ );
41
53
  --sbb-scrollbar-track-color: transparent;
42
54
  --sbb-scrollbar-width: var(--sbb-spacing-fixed-3x);
43
55
  }
@@ -270,4 +282,4 @@ let SbbTrainFormationElement = (() => {
270
282
  export {
271
283
  SbbTrainFormationElement
272
284
  };
273
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaW4tZm9ybWF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3RyYWluL3RyYWluLWZvcm1hdGlvbi90cmFpbi1mb3JtYXRpb24uY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIExpdEVsZW1lbnQsXG4gIG5vdGhpbmcsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBzdHlsZU1hcCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3N0eWxlLW1hcC5qcyc7XG5cbmltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgaTE4blNlY3RvciwgaTE4blNlY3RvclNob3J0LCBpMThuVHJhaW5zIH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB7IFNiYk5hbWVkU2xvdExpc3RNaXhpbiwgdHlwZSBXaXRoTGlzdENoaWxkcmVuIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJUcmFpbkJsb2NrZWRQYXNzYWdlRWxlbWVudCB9IGZyb20gJy4uL3RyYWluLWJsb2NrZWQtcGFzc2FnZS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlRyYWluV2Fnb25FbGVtZW50IH0gZnJvbSAnLi4vdHJhaW4td2Fnb24uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJUcmFpbkVsZW1lbnQgfSBmcm9tICcuLi90cmFpbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3RyYWluLWZvcm1hdGlvbi5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbnRlcmZhY2UgQWdncmVnYXRlZFNlY3RvciB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHdhZ29uQ291bnQ6IG51bWJlcjtcbiAgYmxvY2tlZFBhc3NhZ2VDb3VudDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGEgdHJhaW4gY29tcG9zaXRpb24sIGFjdGluZyBhcyBhIGNvbnRhaW5lciBmb3Igb25lIG9yIG1vcmUgYHNiYi10cmFpbmAgY29tcG9uZW50LlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkICdzYmItdHJhaW4nIGVsZW1lbnRzIHRvIHRoZSBgc2JiLXRyYWluLWZvcm1hdGlvbmAuXG4gKiBAY3NzcHJvcCBbLS1zYmItdHJhaW4tZm9ybWF0aW9uLXBhZGRpbmctaW5saW5lPTBweF0gLSBEZWZpbmVzIHRoZSBpbmxpbmUgcGFkZGluZyBpbnNpZGUgdGhlIGhvcml6b250YWwgc2Nyb2xsaW5nIGFyZWEuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi10cmFpbi1mb3JtYXRpb24nKVxuY2xhc3MgU2JiVHJhaW5Gb3JtYXRpb25FbGVtZW50IGV4dGVuZHMgU2JiTmFtZWRTbG90TGlzdE1peGluPFNiYlRyYWluRWxlbWVudCwgdHlwZW9mIExpdEVsZW1lbnQ+KFxuICBMaXRFbGVtZW50LFxuKSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgbGlzdENoaWxkTG9jYWxOYW1lcyA9IFsnc2JiLXRyYWluJ107XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHZpZXcgb2YgdGhlIHdhZ29ucyBpcyBmcm9tIHNpZGUgb3IgdG9wIHBlcnNwZWN0aXZlLiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciB2aWV3OiAnc2lkZScgfCAndG9wJyA9ICdzaWRlJztcblxuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9zZWN0b3JzOiBBZ2dyZWdhdGVkU2VjdG9yW10gPSBbXTtcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ3RyYWluc2xvdGNoYW5nZScsIChlKSA9PiB0aGlzLl9yZWFkU2VjdG9ycyhlKSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ3NlY3RvcmNoYW5nZScsIChlKSA9PiB0aGlzLl9yZWFkU2VjdG9ycyhlKSk7XG4gIH1cblxuICBwcml2YXRlIF9yZWFkU2VjdG9ycyhldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgLy8gS2VlcCB0aGUgZXZlbnQgaW50ZXJuYWwuXG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5fc2VjdG9ycyA9IEFycmF5LmZyb20oXG4gICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJUcmFpbldhZ29uRWxlbWVudCB8IFNiYlRyYWluQmxvY2tlZFBhc3NhZ2VFbGVtZW50PihcbiAgICAgICAgJ3NiYi10cmFpbi13YWdvbixzYmItdHJhaW4tYmxvY2tlZC1wYXNzYWdlJyxcbiAgICAgICkgPz8gW10sXG4gICAgKS5yZWR1Y2UoXG4gICAgICAoXG4gICAgICAgIGFnZ3JlZ2F0ZWRTZWN0b3JzOiBBZ2dyZWdhdGVkU2VjdG9yW10sXG4gICAgICAgIGl0ZW06IFNiYlRyYWluV2Fnb25FbGVtZW50IHwgU2JiVHJhaW5CbG9ja2VkUGFzc2FnZUVsZW1lbnQsXG4gICAgICApID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudEFnZ3JlZ2F0ZWRTZWN0b3IgPSBhZ2dyZWdhdGVkU2VjdG9yc1thZ2dyZWdhdGVkU2VjdG9ycy5sZW5ndGggLSAxXTtcblxuICAgICAgICBpZiAoaXRlbS5sb2NhbE5hbWUgPT09ICdzYmItdHJhaW4td2Fnb24nKSB7XG4gICAgICAgICAgY29uc3Qgc2VjdG9yQXR0cmlidXRlID1cbiAgICAgICAgICAgIChpdGVtIGFzIFNiYlRyYWluV2Fnb25FbGVtZW50KS5zZWN0b3IgPz8gaXRlbS5nZXRBdHRyaWJ1dGUoJ3NlY3RvcicpO1xuXG4gICAgICAgICAgaWYgKCFjdXJyZW50QWdncmVnYXRlZFNlY3Rvci5sYWJlbCAmJiBzZWN0b3JBdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgIGN1cnJlbnRBZ2dyZWdhdGVkU2VjdG9yLmxhYmVsID0gc2VjdG9yQXR0cmlidXRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghc2VjdG9yQXR0cmlidXRlIHx8IGN1cnJlbnRBZ2dyZWdhdGVkU2VjdG9yLmxhYmVsID09PSBzZWN0b3JBdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgIGN1cnJlbnRBZ2dyZWdhdGVkU2VjdG9yLndhZ29uQ291bnQrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWdncmVnYXRlZFNlY3RvcnMucHVzaCh7XG4gICAgICAgICAgICAgIGxhYmVsOiBzZWN0b3JBdHRyaWJ1dGUsXG4gICAgICAgICAgICAgIHdhZ29uQ291bnQ6IDEsXG4gICAgICAgICAgICAgIGJsb2NrZWRQYXNzYWdlQ291bnQ6IDAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5sb2NhbE5hbWUgPT09ICdzYmItdHJhaW4tYmxvY2tlZC1wYXNzYWdlJykge1xuICAgICAgICAgIGN1cnJlbnRBZ2dyZWdhdGVkU2VjdG9yLmJsb2NrZWRQYXNzYWdlQ291bnQrKztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhZ2dyZWdhdGVkU2VjdG9ycztcbiAgICAgIH0sXG4gICAgICBbeyB3YWdvbkNvdW50OiAwLCBibG9ja2VkUGFzc2FnZUNvdW50OiAwIH0gYXMgQWdncmVnYXRlZFNlY3Rvcl0sXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczxXaXRoTGlzdENoaWxkcmVuPHRoaXM+Pik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbGlzdENoaWxkcmVuJykpIHtcbiAgICAgIHRoaXMuX3JlYWRTZWN0b3JzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLXRyYWluLWZvcm1hdGlvblwiPlxuICAgICAgICAke3RoaXMuX3NlY3RvcnMubGVuZ3RoICYmIHRoaXMuX3NlY3RvcnNbMF0ubGFiZWwgIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gaHRtbGA8ZGl2IGNsYXNzPVwic2JiLXRyYWluLWZvcm1hdGlvbl9fc2VjdG9yc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAke3RoaXMuX3NlY3RvcnMubWFwKFxuICAgICAgICAgICAgICAgIChhZ2dyZWdhdGVkU2VjdG9yKSA9PlxuICAgICAgICAgICAgICAgICAgaHRtbGA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi10cmFpbi1mb3JtYXRpb25fX3NlY3RvclwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPSR7c3R5bGVNYXAoe1xuICAgICAgICAgICAgICAgICAgICAgICctLXNiYi10cmFpbi1mb3JtYXRpb24td2Fnb24tY291bnQnOiBhZ2dyZWdhdGVkU2VjdG9yLndhZ29uQ291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgJy0tc2JiLXRyYWluLWZvcm1hdGlvbi13YWdvbi1ibG9ja2VkLXBhc3NhZ2UtY291bnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRlZFNlY3Rvci5ibG9ja2VkUGFzc2FnZUNvdW50LFxuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItdHJhaW4tZm9ybWF0aW9uX19zZWN0b3Itc3RpY2t5LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAke2Ake1xuICAgICAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRlZFNlY3Rvci53YWdvbkNvdW50ID09PSAxICYmIGFnZ3JlZ2F0ZWRTZWN0b3IubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpMThuU2VjdG9yU2hvcnRbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpMThuU2VjdG9yW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdXG4gICAgICAgICAgICAgICAgICAgICAgfSAke2FnZ3JlZ2F0ZWRTZWN0b3IubGFiZWwgPyBhZ2dyZWdhdGVkU2VjdG9yLmxhYmVsIDogJyd9YH1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPmAsXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItdHJhaW4tZm9ybWF0aW9uX190cmFpbnNcIj5cbiAgICAgICAgICAke3RoaXMucmVuZGVyTGlzdCh7XG4gICAgICAgICAgICBjbGFzczogJ3NiYi10cmFpbi1mb3JtYXRpb25fX3RyYWluLWxpc3QnLFxuICAgICAgICAgICAgYXJpYUxhYmVsOiBpMThuVHJhaW5zW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdLFxuICAgICAgICAgIH0pfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi10cmFpbi1mb3JtYXRpb24nOiBTYmJUcmFpbkZvcm1hdGlvbkVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFrQ00sNEJBQXdCLE1BQUE7OzBCQUQ3QixjQUFjLHFCQUFxQixDQUFDOzs7O29CQUNFLHNCQUNyQyxVQUFVOzs7Ozs7O0FBRG1CLEVBQUEsbUJBQVEsWUFFdEM7QUFBQSxJQVdDLGNBQUE7QUFDRSxZQUFBO0FBUDJCO0FBRXBCO0FBTG1CLFdBQUEsc0JBQXNCLENBQUMsV0FBVztBQUdqQix5QkFBQSx3QkFBQSxrQkFBQSxNQUFBLG9CQUF1QixNQUFNO0FBRWhELHlCQUFBLDZCQUFBLGtCQUFBLE1BQUEsdUJBQUEsR0FBQSxrQkFBQSxNQUFBLHdCQUErQixDQUFBLENBQUU7QUFFbkQsV0FBQSxtRUFBWSxJQUFJLHNCQUFzQixJQUFJO0FBSWhELFdBQUssbUJBQW1CLG1CQUFtQixDQUFDLE1BQU0sS0FBSyxhQUFhLENBQUMsQ0FBQztBQUN0RSxXQUFLLG1CQUFtQixnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssYUFBYSxDQUFDLENBQUM7QUFBQSxJQUNyRTtBQUFBO0FBQUEsSUFWNkIsSUFBZ0IsT0FBSTtBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBcEIsSUFBZ0IsS0FBSSxPQUFBO0FBQUEseUJBQUEsd0JBQUE7QUFBQSxJQUFBO0FBQUEsSUFFeEMsSUFBaUIsV0FBUTtBQUFB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
285
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhaW4tZm9ybWF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3RyYWluL3RyYWluLWZvcm1hdGlvbi90cmFpbi1mb3JtYXRpb24uY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIExpdEVsZW1lbnQsXG4gIG5vdGhpbmcsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBzdHlsZU1hcCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3N0eWxlLW1hcC5qcyc7XG5cbmltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgaTE4blNlY3RvciwgaTE4blNlY3RvclNob3J0LCBpMThuVHJhaW5zIH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB7IFNiYk5hbWVkU2xvdExpc3RNaXhpbiwgdHlwZSBXaXRoTGlzdENoaWxkcmVuIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJUcmFpbkJsb2NrZWRQYXNzYWdlRWxlbWVudCB9IGZyb20gJy4uL3RyYWluLWJsb2NrZWQtcGFzc2FnZS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlRyYWluV2Fnb25FbGVtZW50IH0gZnJvbSAnLi4vdHJhaW4td2Fnb24uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJUcmFpbkVsZW1lbnQgfSBmcm9tICcuLi90cmFpbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3RyYWluLWZvcm1hdGlvbi5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbnRlcmZhY2UgQWdncmVnYXRlZFNlY3RvciB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHdhZ29uQ291bnQ6IG51bWJlcjtcbiAgYmxvY2tlZFBhc3NhZ2VDb3VudDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGEgdHJhaW4gY29tcG9zaXRpb24sIGFjdGluZyBhcyBhIGNvbnRhaW5lciBmb3Igb25lIG9yIG1vcmUgYHNiYi10cmFpbmAgY29tcG9uZW50LlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkICdzYmItdHJhaW4nIGVsZW1lbnRzIHRvIHRoZSBgc2JiLXRyYWluLWZvcm1hdGlvbmAuXG4gKiBAY3NzcHJvcCBbLS1zYmItdHJhaW4tZm9ybWF0aW9uLXBhZGRpbmctaW5saW5lPTBweF0gLSBEZWZpbmVzIHRoZSBpbmxpbmUgcGFkZGluZyBpbnNpZGUgdGhlIGhvcml6b250YWwgc2Nyb2xsaW5nIGFyZWEuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi10cmFpbi1mb3JtYXRpb24nKVxuY2xhc3MgU2JiVHJhaW5Gb3JtYXRpb25FbGVtZW50IGV4dGVuZHMgU2JiTmFtZWRTbG90TGlzdE1peGluPFNiYlRyYWluRWxlbWVudCwgdHlwZW9mIExpdEVsZW1lbnQ+KFxuICBMaXRFbGVtZW50LFxuKSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgbGlzdENoaWxkTG9jYWxOYW1lcyA9IFsnc2JiLXRyYWluJ107XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHZpZXcgb2YgdGhlIHdhZ29ucyBpcyBmcm9tIHNpZGUgb3IgdG9wIHBlcnNwZWN0aXZlLiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciB2aWV3OiAnc2lkZScgfCAndG9wJyA9ICdzaWRlJztcblxuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9zZWN0b3JzOiBBZ2dyZWdhdGVkU2VjdG9yW10gPSBbXTtcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ3RyYWluc2xvdGNoYW5nZScsIChlKSA9PiB0aGlzLl9yZWFkU2VjdG9ycyhlKSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ3NlY3RvcmNoYW5nZScsIChlKSA9PiB0aGlzLl9yZWFkU2VjdG9ycyhlKSk7XG4gIH1cblxuICBwcml2YXRlIF9yZWFkU2VjdG9ycyhldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgLy8gS2VlcCB0aGUgZXZlbnQgaW50ZXJuYWwuXG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5fc2VjdG9ycyA9IEFycmF5LmZyb20oXG4gICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJUcmFpbldhZ29uRWxlbWVudCB8IFNiYlRyYWluQmxvY2tlZFBhc3NhZ2VFbGVtZW50PihcbiAgICAgICAgJ3NiYi10cmFpbi13YWdvbixzYmItdHJhaW4tYmxvY2tlZC1wYXNzYWdlJyxcbiAgICAgICkgPz8gW10sXG4gICAgKS5yZWR1Y2UoXG4gICAgICAoXG4gICAgICAgIGFnZ3JlZ2F0ZWRTZWN0b3JzOiBBZ2dyZWdhdGVkU2VjdG9yW10sXG4gICAgICAgIGl0ZW06IFNiYlRyYWluV2Fnb25FbGVtZW50IHwgU2JiVHJhaW5CbG9ja2VkUGFzc2FnZUVsZW1lbnQsXG4gICAgICApID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudEFnZ3JlZ2F0ZWRTZWN0b3IgPSBhZ2dyZWdhdGVkU2VjdG9yc1thZ2dyZWdhdGVkU2VjdG9ycy5sZW5ndGggLSAxXTtcblxuICAgICAgICBpZiAoaXRlbS5sb2NhbE5hbWUgPT09ICdzYmItdHJhaW4td2Fnb24nKSB7XG4gICAgICAgICAgY29uc3Qgc2VjdG9yQXR0cmlidXRlID1cbiAgICAgICAgICAgIChpdGVtIGFzIFNiYlRyYWluV2Fnb25FbGVtZW50KS5zZWN0b3IgPz8gaXRlbS5nZXRBdHRyaWJ1dGUoJ3NlY3RvcicpO1xuXG4gICAgICAgICAgaWYgKCFjdXJyZW50QWdncmVnYXRlZFNlY3Rvci5sYWJlbCAmJiBzZWN0b3JBdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgIGN1cnJlbnRBZ2dyZWdhdGVkU2VjdG9yLmxhYmVsID0gc2VjdG9yQXR0cmlidXRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghc2VjdG9yQXR0cmlidXRlIHx8IGN1cnJlbnRBZ2dyZWdhdGVkU2VjdG9yLmxhYmVsID09PSBzZWN0b3JBdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgIGN1cnJlbnRBZ2dyZWdhdGVkU2VjdG9yLndhZ29uQ291bnQrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWdncmVnYXRlZFNlY3RvcnMucHVzaCh7XG4gICAgICAgICAgICAgIGxhYmVsOiBzZWN0b3JBdHRyaWJ1dGUsXG4gICAgICAgICAgICAgIHdhZ29uQ291bnQ6IDEsXG4gICAgICAgICAgICAgIGJsb2NrZWRQYXNzYWdlQ291bnQ6IDAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5sb2NhbE5hbWUgPT09ICdzYmItdHJhaW4tYmxvY2tlZC1wYXNzYWdlJykge1xuICAgICAgICAgIGN1cnJlbnRBZ2dyZWdhdGVkU2VjdG9yLmJsb2NrZWRQYXNzYWdlQ291bnQrKztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhZ2dyZWdhdGVkU2VjdG9ycztcbiAgICAgIH0sXG4gICAgICBbeyB3YWdvbkNvdW50OiAwLCBibG9ja2VkUGFzc2FnZUNvdW50OiAwIH0gYXMgQWdncmVnYXRlZFNlY3Rvcl0sXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczxXaXRoTGlzdENoaWxkcmVuPHRoaXM+Pik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbGlzdENoaWxkcmVuJykpIHtcbiAgICAgIHRoaXMuX3JlYWRTZWN0b3JzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLXRyYWluLWZvcm1hdGlvblwiPlxuICAgICAgICAke3RoaXMuX3NlY3RvcnMubGVuZ3RoICYmIHRoaXMuX3NlY3RvcnNbMF0ubGFiZWwgIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gaHRtbGA8ZGl2IGNsYXNzPVwic2JiLXRyYWluLWZvcm1hdGlvbl9fc2VjdG9yc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAke3RoaXMuX3NlY3RvcnMubWFwKFxuICAgICAgICAgICAgICAgIChhZ2dyZWdhdGVkU2VjdG9yKSA9PlxuICAgICAgICAgICAgICAgICAgaHRtbGA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi10cmFpbi1mb3JtYXRpb25fX3NlY3RvclwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPSR7c3R5bGVNYXAoe1xuICAgICAgICAgICAgICAgICAgICAgICctLXNiYi10cmFpbi1mb3JtYXRpb24td2Fnb24tY291bnQnOiBhZ2dyZWdhdGVkU2VjdG9yLndhZ29uQ291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgJy0tc2JiLXRyYWluLWZvcm1hdGlvbi13YWdvbi1ibG9ja2VkLXBhc3NhZ2UtY291bnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRlZFNlY3Rvci5ibG9ja2VkUGFzc2FnZUNvdW50LFxuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItdHJhaW4tZm9ybWF0aW9uX19zZWN0b3Itc3RpY2t5LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAke2Ake1xuICAgICAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRlZFNlY3Rvci53YWdvbkNvdW50ID09PSAxICYmIGFnZ3JlZ2F0ZWRTZWN0b3IubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpMThuU2VjdG9yU2hvcnRbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpMThuU2VjdG9yW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdXG4gICAgICAgICAgICAgICAgICAgICAgfSAke2FnZ3JlZ2F0ZWRTZWN0b3IubGFiZWwgPyBhZ2dyZWdhdGVkU2VjdG9yLmxhYmVsIDogJyd9YH1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPmAsXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItdHJhaW4tZm9ybWF0aW9uX190cmFpbnNcIj5cbiAgICAgICAgICAke3RoaXMucmVuZGVyTGlzdCh7XG4gICAgICAgICAgICBjbGFzczogJ3NiYi10cmFpbi1mb3JtYXRpb25fX3RyYWluLWxpc3QnLFxuICAgICAgICAgICAgYXJpYUxhYmVsOiBpMThuVHJhaW5zW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdLFxuICAgICAgICAgIH0pfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi10cmFpbi1mb3JtYXRpb24nOiBTYmJUcmFpbkZvcm1hdGlvbkVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFrQ00sNEJBQXdCLE1BQUE7OzBCQUQ3QixjQUFjLHFCQUFxQixDQUFDOzs7O29CQUNFLHNCQUNyQyxVQUFVOzs7Ozs7O0FBRG1CLEVBQUEsbUJBQVEsWUFFdEM7QUFBQSxJQVdDLGNBQUE7QUFDRSxZQUFBO0FBUDJCO0FBRXBCO0FBTG1CLFdBQUEsc0JBQXNCLENBQUMsV0FBVztBQUdqQix5QkFBQSx3QkFBQSxrQkFBQSxNQUFBLG9CQUF1QixNQUFNO0FBRWhELHlCQUFBLDZCQUFBLGtCQUFBLE1BQUEsdUJBQUEsR0FBQSxrQkFBQSxNQUFBLHdCQUErQixDQUFBLENBQUU7QUFFbkQsV0FBQSxtRUFBWSxJQUFJLHNCQUFzQixJQUFJO0FBSWhELFdBQUssbUJBQW1CLG1CQUFtQixDQUFDLE1BQU0sS0FBSyxhQUFhLENBQUMsQ0FBQztBQUN0RSxXQUFLLG1CQUFtQixnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssYUFBYSxDQUFDLENBQUM7QUFBQSxJQUNyRTtBQUFBO0FBQUEsSUFWNkIsSUFBZ0IsT0FBSTtBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBcEIsSUFBZ0IsS0FBSSxPQUFBO0FBQUEseUJBQUEsd0JBQUE7QUFBQSxJQUFBO0FBQUEsSUFFeEMsSUFB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