@sbb-esta/lyne-elements 1.3.0 → 1.5.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 (305) hide show
  1. package/autocomplete/autocomplete-base-element.d.ts +93 -0
  2. package/autocomplete/autocomplete-base-element.d.ts.map +1 -0
  3. package/autocomplete/autocomplete.d.ts +13 -86
  4. package/autocomplete/autocomplete.d.ts.map +1 -1
  5. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +45 -0
  6. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -0
  7. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts +33 -0
  8. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts.map +1 -0
  9. package/autocomplete-grid/autocomplete-grid-button.d.ts +2 -0
  10. package/autocomplete-grid/autocomplete-grid-button.d.ts.map +1 -0
  11. package/autocomplete-grid/autocomplete-grid-button.js +66 -0
  12. package/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.d.ts +17 -0
  13. package/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.d.ts.map +1 -0
  14. package/autocomplete-grid/autocomplete-grid-cell.d.ts +2 -0
  15. package/autocomplete-grid/autocomplete-grid-cell.d.ts.map +1 -0
  16. package/autocomplete-grid/autocomplete-grid-cell.js +28 -0
  17. package/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts +21 -0
  18. package/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts.map +1 -0
  19. package/autocomplete-grid/autocomplete-grid-optgroup/index.d.ts +2 -0
  20. package/autocomplete-grid/autocomplete-grid-optgroup/index.d.ts.map +1 -0
  21. package/autocomplete-grid/autocomplete-grid-optgroup.d.ts +2 -0
  22. package/autocomplete-grid/autocomplete-grid-optgroup.d.ts.map +1 -0
  23. package/autocomplete-grid/autocomplete-grid-optgroup.js +37 -0
  24. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts +40 -0
  25. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts.map +1 -0
  26. package/autocomplete-grid/autocomplete-grid-option.d.ts +2 -0
  27. package/autocomplete-grid/autocomplete-grid-option.d.ts.map +1 -0
  28. package/autocomplete-grid/autocomplete-grid-option.js +67 -0
  29. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.d.ts +18 -0
  30. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.d.ts.map +1 -0
  31. package/autocomplete-grid/autocomplete-grid-row.d.ts +2 -0
  32. package/autocomplete-grid/autocomplete-grid-row.d.ts.map +1 -0
  33. package/autocomplete-grid/autocomplete-grid-row.js +31 -0
  34. package/autocomplete-grid/autocomplete-grid.d.ts +2 -0
  35. package/autocomplete-grid/autocomplete-grid.d.ts.map +1 -0
  36. package/autocomplete-grid/autocomplete-grid.js +139 -0
  37. package/autocomplete-grid.d.ts +7 -0
  38. package/autocomplete-grid.d.ts.map +1 -0
  39. package/autocomplete-grid.js +6 -0
  40. package/autocomplete.d.ts +1 -0
  41. package/autocomplete.d.ts.map +1 -1
  42. package/autocomplete.js +162 -145
  43. package/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts.map +1 -1
  44. package/button/mini-button/mini-button-base-element.d.ts +9 -0
  45. package/button/mini-button/mini-button-base-element.d.ts.map +1 -0
  46. package/button/mini-button/mini-button.d.ts +3 -4
  47. package/button/mini-button/mini-button.d.ts.map +1 -1
  48. package/button/mini-button.d.ts +1 -0
  49. package/button/mini-button.d.ts.map +1 -1
  50. package/button/mini-button.js +23 -13
  51. package/checkbox/checkbox/checkbox.d.ts +5 -0
  52. package/checkbox/checkbox/checkbox.d.ts.map +1 -1
  53. package/checkbox/checkbox-panel/checkbox-panel.d.ts +5 -0
  54. package/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
  55. package/checkbox/checkbox-panel.js +28 -18
  56. package/checkbox/checkbox.js +30 -19
  57. package/checkbox/common/checkbox-common.d.ts +1 -3
  58. package/checkbox/common/checkbox-common.d.ts.map +1 -1
  59. package/checkbox/common.js +16 -25
  60. package/container/container.js +3 -3
  61. package/core/i18n/i18n.d.ts +2 -0
  62. package/core/i18n/i18n.d.ts.map +1 -1
  63. package/core/i18n.js +61 -49
  64. package/core/mixins/form-associated-mixin.d.ts.map +1 -1
  65. package/core/mixins/panel-mixin.d.ts +1 -0
  66. package/core/mixins/panel-mixin.d.ts.map +1 -1
  67. package/core/mixins.js +3 -1
  68. package/core/overlay/overlay-trigger-attributes.d.ts +1 -1
  69. package/core/overlay/overlay-trigger-attributes.d.ts.map +1 -1
  70. package/core/overlay.js +2 -2
  71. package/core/styles/core.scss +1 -0
  72. package/core/styles/mixins/buttons.scss +13 -8
  73. package/core/styles/mixins/helpers.scss +1 -0
  74. package/core/styles/mixins/pearl-chain-bullet.scss +1 -1
  75. package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables.scss +1 -0
  76. package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables_css--mixin.scss +2 -1
  77. package/core.css +3 -1
  78. package/custom-elements.json +14325 -9229
  79. package/datepicker/datepicker-next-day.js +12 -12
  80. package/datepicker/datepicker-previous-day.js +1 -1
  81. package/development/autocomplete/autocomplete-base-element.d.ts +93 -0
  82. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -0
  83. package/development/autocomplete/autocomplete.d.ts +13 -86
  84. package/development/autocomplete/autocomplete.d.ts.map +1 -1
  85. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +45 -0
  86. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -0
  87. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts +33 -0
  88. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts.map +1 -0
  89. package/development/autocomplete-grid/autocomplete-grid-button.d.ts +2 -0
  90. package/development/autocomplete-grid/autocomplete-grid-button.d.ts.map +1 -0
  91. package/development/autocomplete-grid/autocomplete-grid-button.js +224 -0
  92. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.d.ts +17 -0
  93. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.d.ts.map +1 -0
  94. package/development/autocomplete-grid/autocomplete-grid-cell.d.ts +2 -0
  95. package/development/autocomplete-grid/autocomplete-grid-cell.d.ts.map +1 -0
  96. package/development/autocomplete-grid/autocomplete-grid-cell.js +67 -0
  97. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts +21 -0
  98. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts.map +1 -0
  99. package/development/autocomplete-grid/autocomplete-grid-optgroup/index.d.ts +2 -0
  100. package/development/autocomplete-grid/autocomplete-grid-optgroup/index.d.ts.map +1 -0
  101. package/development/autocomplete-grid/autocomplete-grid-optgroup.d.ts +2 -0
  102. package/development/autocomplete-grid/autocomplete-grid-optgroup.d.ts.map +1 -0
  103. package/development/autocomplete-grid/autocomplete-grid-optgroup.js +45 -0
  104. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts +40 -0
  105. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts.map +1 -0
  106. package/development/autocomplete-grid/autocomplete-grid-option.d.ts +2 -0
  107. package/development/autocomplete-grid/autocomplete-grid-option.d.ts.map +1 -0
  108. package/development/autocomplete-grid/autocomplete-grid-option.js +174 -0
  109. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.d.ts +18 -0
  110. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.d.ts.map +1 -0
  111. package/development/autocomplete-grid/autocomplete-grid-row.d.ts +2 -0
  112. package/development/autocomplete-grid/autocomplete-grid-row.d.ts.map +1 -0
  113. package/development/autocomplete-grid/autocomplete-grid-row.js +143 -0
  114. package/development/autocomplete-grid/autocomplete-grid.d.ts +2 -0
  115. package/development/autocomplete-grid/autocomplete-grid.d.ts.map +1 -0
  116. package/development/autocomplete-grid/autocomplete-grid.js +185 -0
  117. package/development/autocomplete-grid.d.ts +7 -0
  118. package/development/autocomplete-grid.d.ts.map +1 -0
  119. package/development/autocomplete-grid.js +7 -0
  120. package/development/autocomplete.d.ts +1 -0
  121. package/development/autocomplete.d.ts.map +1 -1
  122. package/development/autocomplete.js +168 -143
  123. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts.map +1 -1
  124. package/development/breadcrumb/breadcrumb-group.js +1 -1
  125. package/development/button/mini-button/mini-button-base-element.d.ts +9 -0
  126. package/development/button/mini-button/mini-button-base-element.d.ts.map +1 -0
  127. package/development/button/mini-button/mini-button.d.ts +3 -4
  128. package/development/button/mini-button/mini-button.d.ts.map +1 -1
  129. package/development/button/mini-button.d.ts +1 -0
  130. package/development/button/mini-button.d.ts.map +1 -1
  131. package/development/button/mini-button.js +32 -16
  132. package/development/checkbox/checkbox/checkbox.d.ts +5 -0
  133. package/development/checkbox/checkbox/checkbox.d.ts.map +1 -1
  134. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts +5 -0
  135. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
  136. package/development/checkbox/checkbox-panel.js +13 -2
  137. package/development/checkbox/checkbox.js +19 -1
  138. package/development/checkbox/common/checkbox-common.d.ts +1 -3
  139. package/development/checkbox/common/checkbox-common.d.ts.map +1 -1
  140. package/development/checkbox/common.js +13 -19
  141. package/development/container/container.js +2 -1
  142. package/development/core/i18n/i18n.d.ts +2 -0
  143. package/development/core/i18n/i18n.d.ts.map +1 -1
  144. package/development/core/i18n.js +15 -1
  145. package/development/core/mixins/form-associated-mixin.d.ts.map +1 -1
  146. package/development/core/mixins/panel-mixin.d.ts +1 -0
  147. package/development/core/mixins/panel-mixin.d.ts.map +1 -1
  148. package/development/core/mixins.js +4 -2
  149. package/development/core/overlay/overlay-trigger-attributes.d.ts +1 -1
  150. package/development/core/overlay/overlay-trigger-attributes.d.ts.map +1 -1
  151. package/development/core/overlay.js +3 -3
  152. package/development/datepicker/datepicker-next-day.js +8 -7
  153. package/development/datepicker/datepicker-previous-day.js +8 -7
  154. package/development/flip-card/flip-card/flip-card.d.ts +32 -0
  155. package/development/flip-card/flip-card/flip-card.d.ts.map +1 -0
  156. package/development/flip-card/flip-card/index.d.ts +2 -0
  157. package/development/flip-card/flip-card/index.d.ts.map +1 -0
  158. package/development/flip-card/flip-card-details/flip-card-details.d.ts +22 -0
  159. package/development/flip-card/flip-card-details/flip-card-details.d.ts.map +1 -0
  160. package/development/flip-card/flip-card-details/index.d.ts +2 -0
  161. package/development/flip-card/flip-card-details/index.d.ts.map +1 -0
  162. package/development/flip-card/flip-card-details.d.ts +2 -0
  163. package/development/flip-card/flip-card-details.d.ts.map +1 -0
  164. package/development/flip-card/flip-card-details.js +105 -0
  165. package/development/flip-card/flip-card-summary/flip-card-summary.d.ts +22 -0
  166. package/development/flip-card/flip-card-summary/flip-card-summary.d.ts.map +1 -0
  167. package/development/flip-card/flip-card-summary/index.d.ts +2 -0
  168. package/development/flip-card/flip-card-summary/index.d.ts.map +1 -0
  169. package/development/flip-card/flip-card-summary.d.ts +2 -0
  170. package/development/flip-card/flip-card-summary.d.ts.map +1 -0
  171. package/development/flip-card/flip-card-summary.js +151 -0
  172. package/development/flip-card/flip-card.d.ts +2 -0
  173. package/development/flip-card/flip-card.d.ts.map +1 -0
  174. package/development/flip-card/flip-card.js +187 -0
  175. package/development/flip-card.d.ts +4 -0
  176. package/development/flip-card.d.ts.map +1 -0
  177. package/development/flip-card.js +4 -0
  178. package/development/form-field/form-field-clear/form-field-clear.d.ts.map +1 -1
  179. package/development/form-field/form-field-clear.js +8 -7
  180. package/development/form-field/form-field.js +3 -3
  181. package/development/icon/icon-base.d.ts.map +1 -1
  182. package/development/icon/icon.d.ts.map +1 -1
  183. package/development/icon.js +1 -1
  184. package/development/image/image.d.ts +1 -0
  185. package/development/image/image.d.ts.map +1 -1
  186. package/development/image.js +10 -4
  187. package/development/map-container.js +12 -14
  188. package/development/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
  189. package/development/navigation/navigation-marker.js +1 -1
  190. package/development/option/optgroup/optgroup-base-element.d.ts +28 -0
  191. package/development/option/optgroup/optgroup-base-element.d.ts.map +1 -0
  192. package/development/option/optgroup/optgroup.d.ts +7 -20
  193. package/development/option/optgroup/optgroup.d.ts.map +1 -1
  194. package/development/option/optgroup.d.ts +1 -0
  195. package/development/option/optgroup.d.ts.map +1 -1
  196. package/development/option/optgroup.js +74 -49
  197. package/development/option/option/option-base-element.d.ts +69 -0
  198. package/development/option/option/option-base-element.d.ts.map +1 -0
  199. package/development/option/option/option.d.ts +14 -57
  200. package/development/option/option/option.d.ts.map +1 -1
  201. package/development/option/option.d.ts +1 -0
  202. package/development/option/option.d.ts.map +1 -1
  203. package/development/option/option.js +267 -220
  204. package/development/radio-button/common/radio-button-common.d.ts +1 -1
  205. package/development/radio-button/common/radio-button-common.d.ts.map +1 -1
  206. package/development/radio-button/common.js +13 -12
  207. package/development/radio-button/radio-button/radio-button.d.ts +7 -0
  208. package/development/radio-button/radio-button/radio-button.d.ts.map +1 -1
  209. package/development/radio-button/radio-button-group/radio-button-group.d.ts +1 -1
  210. package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  211. package/development/radio-button/radio-button-group.js +1 -1
  212. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +7 -0
  213. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  214. package/development/radio-button/radio-button-panel.js +16 -2
  215. package/development/radio-button/radio-button.js +16 -2
  216. package/development/skiplink-list/skiplink-list.d.ts +1 -0
  217. package/development/skiplink-list/skiplink-list.d.ts.map +1 -1
  218. package/development/skiplink-list.js +1 -1
  219. package/development/status/status.d.ts +1 -1
  220. package/development/status/status.d.ts.map +1 -1
  221. package/development/status.js +39 -2
  222. package/development/tabs/tab-group.js +2 -9
  223. package/development/tabs/tab.js +10 -2
  224. package/development/tag/tag-group.js +1 -1
  225. package/development/timetable-occupancy-icon/timetable-occupancy-icon.d.ts.map +1 -1
  226. package/development/timetable-occupancy-icon.js +3 -6
  227. package/development/toggle/toggle.js +1 -1
  228. package/development/visual-checkbox/visual-checkbox.d.ts +3 -0
  229. package/development/visual-checkbox/visual-checkbox.d.ts.map +1 -1
  230. package/development/visual-checkbox.js +11 -3
  231. package/flip-card/flip-card/flip-card.d.ts +32 -0
  232. package/flip-card/flip-card/flip-card.d.ts.map +1 -0
  233. package/flip-card/flip-card/index.d.ts +2 -0
  234. package/flip-card/flip-card/index.d.ts.map +1 -0
  235. package/flip-card/flip-card-details/flip-card-details.d.ts +22 -0
  236. package/flip-card/flip-card-details/flip-card-details.d.ts.map +1 -0
  237. package/flip-card/flip-card-details/index.d.ts +2 -0
  238. package/flip-card/flip-card-details/index.d.ts.map +1 -0
  239. package/flip-card/flip-card-details.d.ts +2 -0
  240. package/flip-card/flip-card-details.d.ts.map +1 -0
  241. package/flip-card/flip-card-details.js +52 -0
  242. package/flip-card/flip-card-summary/flip-card-summary.d.ts +22 -0
  243. package/flip-card/flip-card-summary/flip-card-summary.d.ts.map +1 -0
  244. package/flip-card/flip-card-summary/index.d.ts +2 -0
  245. package/flip-card/flip-card-summary/index.d.ts.map +1 -0
  246. package/flip-card/flip-card-summary.d.ts +2 -0
  247. package/flip-card/flip-card-summary.d.ts.map +1 -0
  248. package/flip-card/flip-card-summary.js +41 -0
  249. package/flip-card/flip-card.d.ts +2 -0
  250. package/flip-card/flip-card.d.ts.map +1 -0
  251. package/flip-card/flip-card.js +58 -0
  252. package/flip-card.d.ts +4 -0
  253. package/flip-card.d.ts.map +1 -0
  254. package/flip-card.js +3 -0
  255. package/form-field/form-field-clear/form-field-clear.d.ts.map +1 -1
  256. package/form-field/form-field-clear.js +11 -11
  257. package/form-field/form-field.js +2 -2
  258. package/icon/icon-base.d.ts.map +1 -1
  259. package/icon/icon.d.ts.map +1 -1
  260. package/image/image.d.ts +1 -0
  261. package/image/image.d.ts.map +1 -1
  262. package/image.js +24 -24
  263. package/index.d.ts +18 -0
  264. package/index.js +18 -0
  265. package/map-container.js +8 -8
  266. package/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
  267. package/option/optgroup/optgroup-base-element.d.ts +28 -0
  268. package/option/optgroup/optgroup-base-element.d.ts.map +1 -0
  269. package/option/optgroup/optgroup.d.ts +7 -20
  270. package/option/optgroup/optgroup.d.ts.map +1 -1
  271. package/option/optgroup.d.ts +1 -0
  272. package/option/optgroup.d.ts.map +1 -1
  273. package/option/optgroup.js +80 -60
  274. package/option/option/option-base-element.d.ts +69 -0
  275. package/option/option/option-base-element.d.ts.map +1 -0
  276. package/option/option/option.d.ts +14 -57
  277. package/option/option/option.d.ts.map +1 -1
  278. package/option/option.d.ts +1 -0
  279. package/option/option.d.ts.map +1 -1
  280. package/option/option.js +186 -145
  281. package/package.json +56 -1
  282. package/radio-button/common/radio-button-common.d.ts +1 -1
  283. package/radio-button/common/radio-button-common.d.ts.map +1 -1
  284. package/radio-button/common.js +6 -15
  285. package/radio-button/radio-button/radio-button.d.ts +7 -0
  286. package/radio-button/radio-button/radio-button.d.ts.map +1 -1
  287. package/radio-button/radio-button-group/radio-button-group.d.ts +1 -1
  288. package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  289. package/radio-button/radio-button-panel/radio-button-panel.d.ts +7 -0
  290. package/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  291. package/radio-button/radio-button-panel.js +35 -22
  292. package/radio-button/radio-button.js +32 -19
  293. package/skiplink-list/skiplink-list.d.ts +1 -0
  294. package/skiplink-list/skiplink-list.d.ts.map +1 -1
  295. package/standard-theme.css +3 -1
  296. package/status/status.d.ts +1 -1
  297. package/status/status.d.ts.map +1 -1
  298. package/status.js +17 -13
  299. package/tabs/tab-group.js +19 -19
  300. package/tabs/tab.js +10 -10
  301. package/timetable-occupancy-icon/timetable-occupancy-icon.d.ts.map +1 -1
  302. package/timetable-occupancy-icon.js +22 -24
  303. package/visual-checkbox/visual-checkbox.d.ts +3 -0
  304. package/visual-checkbox/visual-checkbox.d.ts.map +1 -1
  305. package/visual-checkbox.js +23 -20
@@ -200,14 +200,14 @@ function removeAriaOverlayTriggerAttributes(trigger) {
200
200
  trigger.removeAttribute("aria-controls");
201
201
  trigger.removeAttribute("aria-expanded");
202
202
  }
203
- function setAriaComboBoxAttributes(trigger, overlayId, expanded) {
203
+ function setAriaComboBoxAttributes(trigger, overlayId, expanded, hasPopup = "listbox") {
204
204
  if (!trigger) {
205
205
  return;
206
206
  }
207
207
  trigger.setAttribute("autocomplete", "off");
208
208
  trigger.setAttribute("role", "combobox");
209
209
  trigger.setAttribute("aria-autocomplete", "list");
210
- trigger.setAttribute("aria-haspopup", "listbox");
210
+ trigger.setAttribute("aria-haspopup", hasPopup);
211
211
  trigger.setAttribute("aria-controls", overlayId);
212
212
  trigger.setAttribute("aria-owns", overlayId);
213
213
  trigger.setAttribute("aria-expanded", `${expanded}`);
@@ -237,4 +237,4 @@ export {
237
237
  setAriaOverlayTriggerAttributes,
238
238
  setOverlayPosition
239
239
  };
240
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvb3ZlcmxheS9vdmVybGF5LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvb3ZlcmxheS9wb3NpdGlvbi50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL292ZXJsYXkvb3ZlcmxheS1vcHRpb24tcGFuZWwudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9vdmVybGF5L292ZXJsYXktdHJpZ2dlci1hdHRyaWJ1dGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdCc7XG5cbmNvbnN0IElTX09QRU5fT1ZFUkxBWV9RVUVSWSA9IGA6aXMoc2JiLWRpYWxvZywgc2JiLW5hdmlnYXRpb24sIHNiYi1tZW51LCBzYmItb3ZlcmxheSlbZGF0YS1zdGF0ZT0nb3BlbmVkJ11gO1xuXG4vKipcbiAqIFVzZWQgdG8gY3JlYXRlIHRoZSBcIndyYXBwaW5nXCIgZWZmZWN0IGFyb3VuZCB0aGUgYW5jaG9yIGZvciBvdmVybGF5cyAoZXMuIGF1dG9jb21wbGV0ZSlcbiAqIFdvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlICdvdmVybGF5R2FwRml4Q29ybmVycygpJyBmdW5jdGlvbiBpbiAnb3ZlcmxheS50cydcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG92ZXJsYXlHYXBGaXhDb3JuZXJzKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgcmV0dXJuIGh0bWxgXG4gICAgPGRpdiBjbGFzcz1cInNiYi1nYXAtZml4LXdyYXBwZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItZ2FwLWZpeC1jb3JuZXJcIiBpZD1cImxlZnRcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2JiLWdhcC1maXgtd3JhcHBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1nYXAtZml4LWNvcm5lclwiIGlkPVwicmlnaHRcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFsbCB0aGUgYW5jZXN0b3JzIG9mIHRoZSBvdmVybGF5LlxuICovXG5jb25zdCBnZXRBbmNlc3RvcnMgPSAob3ZlcmxheTogSFRNTEVsZW1lbnQsIHJvb3Q6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnRbXSA9PiB7XG4gIGxldCBlbCA9IG92ZXJsYXkucGFyZW50RWxlbWVudDtcbiAgY29uc3QgYW5jZXN0b3JzOiBIVE1MRWxlbWVudFtdID0gW107XG4gIHdoaWxlIChlbCkge1xuICAgIGFuY2VzdG9ycy5wdXNoKGVsKTtcbiAgICBpZiAoZWwgIT09IHJvb3QpIHtcbiAgICAgIGVsID0gZWwucGFyZW50RWxlbWVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBhbmNlc3RvcnM7XG59O1xuXG5jb25zdCBzZXREYXRhU2JiSW5lcnQgPSAoZWw6IEhUTUxFbGVtZW50KTogdm9pZCA9PiB7XG4gIGVsLnNldEF0dHJpYnV0ZShcbiAgICAnZGF0YS1zYmItaW5lcnQnLFxuICAgIGAkeysoZWwuZ2V0QXR0cmlidXRlKCdkYXRhLXNiYi1pbmVydCcpID8/IHVuZGVmaW5lZCkhICsgMSB8fCAwfWAsXG4gICk7XG59O1xuXG4vKipcbiAqIFNldCB0aGUgaW5lcnQgYW5kIHRoZSBkYXRhLXNiYi1pbmVydCBhdHRyaWJ1dGVzLlxuICovXG5jb25zdCBzZXRTYmJJbmVydCA9IChlbDogSFRNTEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgaWYgKCFlbC5pbmVydCkge1xuICAgIGVsLmluZXJ0ID0gdHJ1ZTtcbiAgICBpZiAoZWwubWF0Y2hlcyhJU19PUEVOX09WRVJMQVlfUVVFUlkpKSB7XG4gICAgICBzZXREYXRhU2JiSW5lcnQoZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWluZXJ0JywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFlbC5oYXNBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJykpIHtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICBlbC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWFyaWEtaGlkZGVuJywgdHJ1ZSk7XG4gIH1cbn07XG5cbi8qKlxuICogUmVtb3ZlcyB0aGUgaW5lcnQgYW5kIHRoZSBkYXRhLXNiYi1pbmVydCBhdHRyaWJ1dGVzLlxuICovXG5jb25zdCByZW1vdmVTYmJJbmVydCA9IChlbDogSFRNTEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgaWYgKGVsLmhhc0F0dHJpYnV0ZSgnZGF0YS1zYmItaW5lcnQnKSkge1xuICAgIGVsLmluZXJ0ID0gZmFsc2U7XG4gICAgZWwucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNiYi1pbmVydCcpO1xuICB9XG5cbiAgaWYgKGVsLmhhc0F0dHJpYnV0ZSgnZGF0YS1zYmItYXJpYS1oaWRkZW4nKSkge1xuICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKTtcbiAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWFyaWEtaGlkZGVuJyk7XG4gIH1cbn07XG5cbi8qKlxuICogQXBwbGllcyBpbmVydCB0byBldmVyeSBvdGhlciBlbGVtZW50IG9uIHRoZSBwYWdlIGV4Y2VwdCB0aGUgb3ZlcmxheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5SW5lcnRNZWNoYW5pc20ob3ZlcmxheTogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgcmVtb3ZlU2JiSW5lcnQob3ZlcmxheSk7XG5cbiAgY29uc3Qgb3ZlcmxheVJvb3QgPSBvdmVybGF5LmNsb3Nlc3QoJ2JvZHkgPiAqJykgYXMgSFRNTEVsZW1lbnQ7XG4gIGNvbnN0IGRvY3VtZW50Q2hpbGRyZW4gPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2JvZHkgPiAqJykpLmZpbHRlcihcbiAgICAoZWwpID0+IGVsICE9PSBvdmVybGF5Um9vdCxcbiAgKSBhcyBIVE1MRWxlbWVudFtdO1xuXG4gIGRvY3VtZW50Q2hpbGRyZW4uZm9yRWFjaCgoZWwpID0+IHNldFNiYkluZXJ0KGVsKSk7XG5cbiAgbGV0IGNoaWxkcmVuOiBIVE1MRWxlbWVudFtdID0gW107XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGdldEFuY2VzdG9ycyhvdmVybGF5LCBvdmVybGF5Um9vdCk7XG5cbiAgZm9yIChjb25zdCBlbCBvZiBhbmNlc3RvcnMpIHtcbiAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmNvbmNhdChcbiAgICAgIEFycmF5LmZyb20oZWwuY2hpbGRyZW4pLmZpbHRlcihcbiAgICAgICAgKGVsOiBFbGVtZW50KSA9PiBlbCAhPT0gb3ZlcmxheSAmJiAhYW5jZXN0b3JzLmluY2x1ZGVzKGVsIGFzIEhUTUxFbGVtZW50KSxcbiAgICAgICkgYXMgSFRNTEVsZW1lbnRbXSxcbiAgICApO1xuICAgIGlmIChlbC5tYXRjaGVzKElTX09QRU5fT1ZFUkxBWV9RVUVSWSkpIHtcbiAgICAgIHNldERhdGFTYmJJbmVydChlbCk7XG4gICAgfVxuICB9XG5cbiAgY2hpbGRyZW4uZm9yRWFjaCgoZWwpID0+IHNldFNiYkluZXJ0KGVsKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVJbmVydE1lY2hhbmlzbSgpOiB2b2lkIHtcbiAgY29uc3Qgb3Blbk92ZXJsYXlzID0gQXJyYXkuZnJvbShcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChJU19PUEVOX09WRVJMQVlfUVVFUlkpLFxuICApIGFzIEhUTUxFbGVtZW50W107XG5cbiAgaWYgKG9wZW5PdmVybGF5cy5sZW5ndGgpIHtcbiAgICBvcGVuT3ZlcmxheXMuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gK2VsLmdldEF0dHJpYnV0ZSgnZGF0YS1zYmItaW5lcnQnKSEgLSAxO1xuICAgICAgZWwuc2V0QXR0cmlidXRlKCdkYXRhLXNiYi1pbmVydCcsIGAke25ld1ZhbHVlfWApO1xuXG4gICAgICBpZiAobmV3VmFsdWUgJiYgbmV3VmFsdWUgPCAwKSB7XG4gICAgICAgIHJlbW92ZVNiYkluZXJ0KGVsKTtcbiAgICAgICAgQXJyYXkuZnJvbShlbC5jaGlsZHJlbikuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHJlbW92ZVNiYkluZXJ0KGVsIGFzIEhUTUxFbGVtZW50KSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgQXJyYXkuZnJvbShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtc2JiLWluZXJ0XScpKS5mb3JFYWNoKChlbDogRWxlbWVudCkgPT5cbiAgICByZW1vdmVTYmJJbmVydChlbCBhcyBIVE1MRWxlbWVudCksXG4gICk7XG59XG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBHbG9iYWxFdmVudEhhbmRsZXJzRXZlbnRNYXAge1xuICAgIHdpbGxPcGVuOiBDdXN0b21FdmVudDx2b2lkPjtcbiAgICB3aWxsQ2xvc2U6IEN1c3RvbUV2ZW50PHZvaWQ+O1xuICAgIGRpZE9wZW46IEN1c3RvbUV2ZW50PHZvaWQ+O1xuICAgIGRpZENsb3NlOiBDdXN0b21FdmVudDx2b2lkPjtcbiAgfVxufVxuIiwiZXhwb3J0IHR5cGUgRWxlbWVudFJlY3RhbmdsZSA9IFBpY2s8XG4gIEhUTUxFbGVtZW50LFxuICAnc2Nyb2xsSGVpZ2h0JyB8ICdjbGllbnRIZWlnaHQnIHwgJ29mZnNldEhlaWdodCcgfCAnc2Nyb2xsV2lkdGgnIHwgJ2NsaWVudFdpZHRoJyB8ICdvZmZzZXRXaWR0aCdcbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JiQWxpZ25tZW50IHtcbiAgaG9yaXpvbnRhbDogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCc7XG4gIHZlcnRpY2FsOiAnYWJvdmUnIHwgJ2JlbG93Jztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYmJFbGVtZW50UG9zaXRpb25JbmZvcyB7XG4gIHRvcDogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIG1heEhlaWdodDogc3RyaW5nO1xuICBhbGlnbm1lbnQ6IFNiYkFsaWdubWVudDtcbn1cblxuLyoqXG4gKiBHZXRzIGhlaWdodCBhbmQgd2lkdGggb2YgYW4gZWxlbWVudCBldmVuIGlmIGl0J3MgaGlkZGVuIChgZGlzcGxheTogbm9uZWApLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWxlbWVudFJlY3RhbmdsZShlbDogSFRNTEVsZW1lbnQpOiBFbGVtZW50UmVjdGFuZ2xlIHtcbiAgY29uc3QgZWxlbWVudFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpLFxuICAgIGVsZW1lbnREaXNwbGF5ID0gZWxlbWVudFN0eWxlLmRpc3BsYXksXG4gICAgZWxlbWVudE1heEhlaWdodCA9IHBhcnNlSW50KGVsZW1lbnRTdHlsZS5tYXhIZWlnaHQsIDEwKS50b1N0cmluZygpO1xuXG4gIC8vIElmIGl0IGlzIG5vdCBoaWRkZW4gd2UganVzdCByZXR1cm4gbm9ybWFsIGhlaWdodFxuICBpZiAoZWxlbWVudERpc3BsYXkgIT09ICdub25lJyAmJiBlbGVtZW50TWF4SGVpZ2h0ICE9PSAnMCcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Nyb2xsSGVpZ2h0OiBlbC5zY3JvbGxIZWlnaHQsXG4gICAgICBjbGllbnRIZWlnaHQ6IGVsLmNsaWVudEhlaWdodCxcbiAgICAgIG9mZnNldEhlaWdodDogZWwub2Zmc2V0SGVpZ2h0LFxuICAgICAgc2Nyb2xsV2lkdGg6IGVsLnNjcm9sbFdpZHRoLFxuICAgICAgY2xpZW50V2lkdGg6IGVsLmNsaWVudFdpZHRoLFxuICAgICAgb2Zmc2V0V2lkdGg6IGVsLm9mZnNldFdpZHRoLFxuICAgIH07XG4gIH1cblxuICAvLyBUaGUgZWxlbWVudCBpcyBoaWRkZW4gc286XG4gIC8vIG1ha2UgdGhlIGVsIGJsb2NrIGluIG9yZGVyIHRvIG1lYXN1cmUgaXRzIGhlaWdodCBidXQgc3RpbGwgYmUgaGlkZGVuXG4gIGVsLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgZWwuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICBlbC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcblxuICBjb25zdCBzY3JvbGxIZWlnaHQgPSBlbC5zY3JvbGxIZWlnaHQsXG4gICAgY2xpZW50SGVpZ2h0ID0gZWwuY2xpZW50SGVpZ2h0LFxuICAgIG9mZnNldEhlaWdodCA9IGVsLm9mZnNldEhlaWdodCxcbiAgICBzY3JvbGxXaWR0aCA9IGVsLnNjcm9sbFdpZHRoLFxuICAgIGNsaWVudFdpZHRoID0gZWwuY2xpZW50V2lkdGgsXG4gICAgb2Zmc2V0V2lkdGggPSBlbC5vZmZzZXRXaWR0aDtcblxuICAvLyBSZXZlcnRpbmcgdG8gdGhlIG9yaWdpbmFsIHZhbHVlc1xuICBlbC5zdHlsZS5kaXNwbGF5ID0gJyc7XG4gIGVsLnN0eWxlLnBvc2l0aW9uID0gJyc7XG4gIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAnJztcblxuICByZXR1cm4geyBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCwgb2Zmc2V0SGVpZ2h0LCBzY3JvbGxXaWR0aCwgY2xpZW50V2lkdGgsIG9mZnNldFdpZHRoIH07XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIGV2ZW50IGlzIGZpcmVkIG9uIGEgc3BlY2lmaWMgZWxlbWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRXZlbnRPbkVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQsIGV2ZW50OiBNb3VzZUV2ZW50IHwgUG9pbnRlckV2ZW50KTogYm9vbGVhbiB7XG4gIGlmICghZWxlbWVudCB8fCAhZXZlbnQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgcmV0dXJuIChcbiAgICByZWN0LnRvcCA8PSBldmVudC5jbGllbnRZICYmXG4gICAgZXZlbnQuY2xpZW50WSA8PSByZWN0LnRvcCArIHJlY3QuaGVpZ2h0ICYmXG4gICAgcmVjdC5sZWZ0IDw9IGV2ZW50LmNsaWVudFggJiZcbiAgICBldmVudC5jbGllbnRYIDw9IHJlY3QubGVmdCArIHJlY3Qud2lkdGhcbiAgKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHRoZSBwb3NpdGlvbiBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGEgdHJpZ2dlciBlbGVtZW50IGJ5IGV2YWx1YXRpbmdcbiAqIHRoZSBvcHRpbWFsIHBvc2l0aW9uIGJhc2VkIG9uIHRoZSBhdmFpbGFibGUgc3BhY2UuXG4gKlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgb2Ygd2hpY2ggdG8gY2FsY3VsYXRlIHRoZSBwb3NpdGlvbi5cbiAqIEBwYXJhbSB0cmlnZ2VyIFRoZSBlbGVtZW50IHJlbGF0aXZlIHRvIHdoaWNoIHRvIGNhbGN1bGF0ZSB0aGUgcG9zaXRpb24uXG4gKiBAcGFyYW0gY29udGFpbmVyIFRoZSBlbGVtZW50IHdoaWNoIGhhcyB0aGUgcG9zaXRpb246Zml4ZWQgYXBwbGllZC5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzIFByb3BlcnRpZXMgdG8gdGFrZSBpbnRvIGFjY291bnQgaW4gY2FsY3VsYXRpb25zIChvcHRpb25hbCkuXG4gKiBAcGFyYW0gcHJvcGVydGllcy52ZXJ0aWNhbE9mZnNldCBUaGUgZGlzdGFuY2UgdG8gYmUgYWRkZWQgYmV0d2VlbiB0aGUgZWxlbWVudCBhbmQgdGhlIHRyaWdnZXIgKG9wdGlvbmFsKS5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzLmhvcml6b250YWxPZmZzZXQgVGhlIGhvcml6b250YWwgb2Zmc2V0IHRvIGJlIGFwcGxpZWQgdG8gdGhlIGVsZW1lbnQgKG9wdGlvbmFsKS5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzLmNlbnRlcmVkIFdoZXRoZXIgdGhlIGVsZW1lbnQgc2hvdWxkIGJlIHBsYWNlZCBpbiB0aGUgY2VudGVyIGJ5IGRlZmF1bHQgKG9wdGlvbmFsKS5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzLnJlc3BvbnNpdmVIZWlnaHQgV2hldGhlciB0aGUgZWxlbWVudCBjYWxjdWxhdGVzIGl0cyBoZWlnaHQgYmFzZWQgb24gaXRzIGNvbnRlbnQgKG9wdGlvbmFsKS5cbiAqIEByZXR1cm5zIFJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGxlZnQgcG9zaXRpb24sIHRoZSB0b3AgcG9zaXRpb24sIHRoZSBtYXhpbXVtIGhlaWdodFxuICogb2YgdGhlIGVsZW1lbnQgYW5kIHRoZSBjdXJyZW50IGFsaWdubWVudCBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbGVtZW50UG9zaXRpb24oXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICB0cmlnZ2VyOiBIVE1MRWxlbWVudCxcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgcHJvcGVydGllcz86IHtcbiAgICB2ZXJ0aWNhbE9mZnNldD86IG51bWJlcjtcbiAgICBob3Jpem9udGFsT2Zmc2V0PzogbnVtYmVyO1xuICAgIGNlbnRlcmVkPzogYm9vbGVhbjtcbiAgICByZXNwb25zaXZlSGVpZ2h0PzogYm9vbGVhbjtcbiAgfSxcbik6IFNiYkVsZW1lbnRQb3NpdGlvbkluZm9zIHtcbiAgY29uc3QgbWF4V2lkdGhPZmZzZXQgPSAxNjtcbiAgY29uc3QgdmVydGljYWxPZmZzZXQgPSBwcm9wZXJ0aWVzPy52ZXJ0aWNhbE9mZnNldCB8fCAwO1xuICBjb25zdCBob3Jpem9udGFsT2Zmc2V0ID0gcHJvcGVydGllcz8uaG9yaXpvbnRhbE9mZnNldCB8fCAwO1xuICBjb25zdCByZXNwb25zaXZlSGVpZ2h0ID0gcHJvcGVydGllcz8ucmVzcG9uc2l2ZUhlaWdodCB8fCBmYWxzZTtcblxuICBjb25zdCB0cmlnZ2VyUmVjID0gdHJpZ2dlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZWxlbWVudFJlYyA9IGdldEVsZW1lbnRSZWN0YW5nbGUoZWxlbWVudCk7XG5cbiAgY29uc3QgdHJpZ2dlckxlZnQgPSB0cmlnZ2VyUmVjLmxlZnQ7XG4gIGNvbnN0IHRyaWdnZXJUb3AgPSB0cmlnZ2VyUmVjLnRvcDtcblxuICBjb25zdCBhdmFpbGFibGVTcGFjZVJpZ2h0ID1cbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggLSAodHJpZ2dlckxlZnQgKyB0cmlnZ2VyUmVjLndpZHRoKTtcbiAgY29uc3QgYXZhaWxhYmxlU3BhY2VBYm92ZSA9IHRyaWdnZXJUb3AgLSB2ZXJ0aWNhbE9mZnNldDtcbiAgY29uc3QgYXZhaWxhYmxlU3BhY2VCZWxvdyA9XG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCAtICh0cmlnZ2VyVG9wICsgdHJpZ2dlclJlYy5oZWlnaHQgKyB2ZXJ0aWNhbE9mZnNldCk7XG5cbiAgLy8gRGVmYXVsdCBlbGVtZW50IGFsaWdubWVudCBpcyBcInN0YXJ0L2JlbG93XCJcbiAgbGV0IGVsZW1lbnRYUG9zaXRpb24gPSB0cmlnZ2VyTGVmdDtcbiAgbGV0IGVsZW1lbnRZUG9zaXRpb24gPSB0cmlnZ2VyVG9wICsgdHJpZ2dlclJlYy5oZWlnaHQgKyB2ZXJ0aWNhbE9mZnNldDtcbiAgbGV0IGVsZW1lbnRYT3ZlcmZsb3cgPSBlbGVtZW50UmVjLm9mZnNldFdpZHRoIC0gdHJpZ2dlclJlYy53aWR0aDtcbiAgY29uc3QgYWxpZ25tZW50OiBTYmJBbGlnbm1lbnQgPSB7IGhvcml6b250YWw6ICdzdGFydCcsIHZlcnRpY2FsOiAnYmVsb3cnIH07XG5cbiAgLy8gQ2FsY3VsYXRlIGVsZW1lbnQgbWF4LWhlaWdodFxuICBsZXQgZWxlbWVudE1heEhlaWdodCA9IGAke2F2YWlsYWJsZVNwYWNlQmVsb3cgLSB2ZXJ0aWNhbE9mZnNldH1weGA7XG5cbiAgLy8gQ2hlY2sgaWYgaG9yaXpvbnRhbCBhbGlnbm1lbnQgbmVlZHMgdG8gYmUgY2hhbmdlZCB0byBcImNlbnRlclwiXG4gIGlmIChcbiAgICBwcm9wZXJ0aWVzPy5jZW50ZXJlZCAmJlxuICAgIHRyaWdnZXJMZWZ0IC0gbWF4V2lkdGhPZmZzZXQgKyB0cmlnZ2VyUmVjLndpZHRoIC8gMiA+IGVsZW1lbnRSZWMub2Zmc2V0V2lkdGggLyAyICYmXG4gICAgYXZhaWxhYmxlU3BhY2VSaWdodCAtIG1heFdpZHRoT2Zmc2V0ID4gZWxlbWVudFhPdmVyZmxvdyAvIDJcbiAgKSB7XG4gICAgZWxlbWVudFhQb3NpdGlvbiAtPSBlbGVtZW50WE92ZXJmbG93IC89IDI7XG4gICAgYWxpZ25tZW50Lmhvcml6b250YWwgPSAnY2VudGVyJztcbiAgfVxuXG4gIC8vIENoZWNrIGlmIGhvcml6b250YWwgYWxpZ25tZW50IG5lZWRzIHRvIGJlIGNoYW5nZWQgdG8gXCJlbmRcIlxuICBpZiAoYXZhaWxhYmxlU3BhY2VSaWdodCA8IGVsZW1lbnRYT3ZlcmZsb3cgJiYgdHJpZ2dlckxlZnQgPiBlbGVtZW50WE92ZXJmbG93KSB7XG4gICAgZWxlbWVudFhQb3NpdGlvbiA9IGVsZW1lbnRYUG9zaXRpb24gLSBlbGVtZW50WE92ZXJmbG93O1xuICAgIGFsaWdubWVudC5ob3Jpem9udGFsID0gJ2VuZCc7XG4gIH1cblxuICAvLyBBZGQgaG9yaXpvbnRhbCBvZmZzZXRcbiAgaWYgKFxuICAgIGhvcml6b250YWxPZmZzZXQgJiZcbiAgICBhbGlnbm1lbnQuaG9yaXpvbnRhbCAhPT0gJ2NlbnRlcicgJiZcbiAgICB0cmlnZ2VyUmVjLndpZHRoIC8gMiA8IGhvcml6b250YWxPZmZzZXRcbiAgKSB7XG4gICAgZWxlbWVudFhQb3NpdGlvbiArPSBob3Jpem9udGFsT2Zmc2V0ICogKGFsaWdubWVudC5ob3Jpem9udGFsID09PSAnc3RhcnQnID8gLTEgOiAxKTtcbiAgfVxuXG4gIC8vIENoZWNrIHdoZXRoZXIgdGhlcmUgaXMgaW5zdWZmaWNpZW50IHNwYWNlIG9uIGJvdGggc2lkZXNcbiAgaWYgKFxuICAgICh0cmlnZ2VyTGVmdCA8IGVsZW1lbnRYT3ZlcmZsb3cgJiYgYXZhaWxhYmxlU3BhY2VSaWdodCA8IGVsZW1lbnRYT3ZlcmZsb3cpIHx8XG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIDwgZWxlbWVudFJlYy5vZmZzZXRXaWR0aFxuICApIHtcbiAgICBlbGVtZW50WFBvc2l0aW9uID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIC8gMiAtIGVsZW1lbnRSZWMub2Zmc2V0V2lkdGggLyAyO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdmVydGljYWwgYWxpZ25tZW50IG5lZWRzIHRvIGJlIGNoYW5nZWQgdG8gXCJhYm92ZVwiOlxuICBpZiAoXG4gICAgKGF2YWlsYWJsZVNwYWNlQmVsb3cgLSB2ZXJ0aWNhbE9mZnNldCA8IGVsZW1lbnRSZWMuc2Nyb2xsSGVpZ2h0ICYmXG4gICAgICBhdmFpbGFibGVTcGFjZUFib3ZlIC0gdmVydGljYWxPZmZzZXQgPlxuICAgICAgICAocmVzcG9uc2l2ZUhlaWdodCA/IGVsZW1lbnRSZWMuY2xpZW50SGVpZ2h0IDogZWxlbWVudFJlYy5zY3JvbGxIZWlnaHQpKSB8fFxuICAgIChhdmFpbGFibGVTcGFjZUFib3ZlID4gYXZhaWxhYmxlU3BhY2VCZWxvdyAmJlxuICAgICAgYXZhaWxhYmxlU3BhY2VCZWxvdyAtIHZlcnRpY2FsT2Zmc2V0IDwgZWxlbWVudFJlYy5jbGllbnRIZWlnaHQgJiZcbiAgICAgICFyZXNwb25zaXZlSGVpZ2h0KVxuICApIHtcbiAgICBlbGVtZW50WVBvc2l0aW9uID1cbiAgICAgIGF2YWlsYWJsZVNwYWNlQWJvdmUgPCBlbGVtZW50UmVjLnNjcm9sbEhlaWdodFxuICAgICAgICA/IGVsZW1lbnRZUG9zaXRpb24gLSB0cmlnZ2VyUmVjLmhlaWdodCAtIGF2YWlsYWJsZVNwYWNlQWJvdmUgLSB2ZXJ0aWNhbE9mZnNldFxuICAgICAgICA6IHRyaWdnZXJUb3AgLSBlbGVtZW50UmVjLmNsaWVudEhlaWdodCAtIHZlcnRpY2FsT2Zmc2V0O1xuXG4gICAgZWxlbWVudE1heEhlaWdodCA9IGAke2F2YWlsYWJsZVNwYWNlQWJvdmUgLSB2ZXJ0aWNhbE9mZnNldH1weGA7XG4gICAgYWxpZ25tZW50LnZlcnRpY2FsID0gJ2Fib3ZlJztcbiAgfVxuXG4gIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgLy8gV2hlbiB6b29taW5nIGluIFNhZmFyaSB0aGUgY29udGFpbmVyIHJlY3RhbmdsZSBjb250YWlucyBuZWdhdGl2ZSB2YWx1ZXMgZm9yIHRoZSBwb3NpdGlvblxuICAvLyBhbmQgd2UgbmVlZCB0byByZS1hZGQgdGhlbSB0byB0aGUgY2FsY3VsYXRlZCBjb29yZGluYXRlcy5cbiAgaWYgKGNvbnRhaW5lclJlY3QubGVmdCA8IDApIHtcbiAgICBlbGVtZW50WFBvc2l0aW9uIC09IGNvbnRhaW5lclJlY3QubGVmdDtcbiAgfVxuXG4gIC8vIE5vcm1hbGx5IHRoZSBjb250YWluZXJSZWN0J3MgdG9wIHZhbHVlIHdvdWxkIGJlIHplcm8sIGhvd2V2ZXIgd2hlbiB0aGUgb3ZlcmxheSBpcyBhdHRhY2hlZCB0byBhbiBpbnB1dFxuICAvLyAoZS5nLiBpbiBhbiBhdXRvY29tcGxldGUpLCBtb2JpbGUgYnJvd3NlcnMgd2lsbCBzaGlmdCBldmVyeXRoaW5nIGluIG9yZGVyIHRvIHB1dCB0aGUgaW5wdXQgaW4gdGhlIG1pZGRsZVxuICAvLyBvZiB0aGUgc2NyZWVuIGFuZCB0byBtYWtlIHNwYWNlIGZvciB0aGUgdmlydHVhbCBrZXlib2FyZC4gV2UgbmVlZCB0byBhY2NvdW50IGZvciB0aGlzIG9mZnNldCxcbiAgLy8gb3RoZXJ3aXNlIG91ciBwb3NpdGlvbmluZyB3aWxsIGJlIHRocm93biBvZmYuXG4gIC8vIEFkZGl0aW9uYWxseSwgd2hlbiB6b29taW5nIGluIFNhZmFyaSB0aGlzIGZpeGVzIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbi5cbiAgaWYgKGNvbnRhaW5lclJlY3QudG9wIDwgMCkge1xuICAgIGVsZW1lbnRZUG9zaXRpb24gLT0gY29udGFpbmVyUmVjdC50b3A7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRvcDogZWxlbWVudFlQb3NpdGlvbixcbiAgICBsZWZ0OiBlbGVtZW50WFBvc2l0aW9uLFxuICAgIG1heEhlaWdodDogZWxlbWVudE1heEhlaWdodCxcbiAgICBhbGlnbm1lbnQ6IGFsaWdubWVudCxcbiAgfTtcbn1cbiIsImltcG9ydCB7IGdldEVsZW1lbnRQb3NpdGlvbiB9IGZyb20gJy4vcG9zaXRpb24uanMnO1xuXG4vKipcbiAqIFBsYWNlcyB0aGUgb3ZlcmxheSBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbi5cbiAqIEBwYXJhbSBkaWFsb2cgVGhlIHJlZmVyZW5jZSB0byB0aGUgZGlhbG9nIGVsZW1lbnQuXG4gKiBAcGFyYW0gb3JpZ2luRWxlbWVudCBUaGUgcmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IHRoZSBkaWFsb2cgaXMgYXR0YWNoZWQgdG8uXG4gKiBAcGFyYW0gb3B0aW9uQ29udGFpbmVyIFRoZSByZWZlcmVuY2UgdG8gdGhlIG9wdGlvbiBwYW5lbC5cbiAqIEBwYXJhbSBjb250YWluZXIgVGhlIGVsZW1lbnQgd2hpY2ggaGFzIHRoZSBwb3NpdGlvbjpmaXhlZCBhcHBsaWVkLlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIHJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0T3ZlcmxheVBvc2l0aW9uKFxuICBkaWFsb2c6IEhUTUxFbGVtZW50LFxuICBvcmlnaW5FbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgb3B0aW9uQ29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4pOiB2b2lkIHtcbiAgaWYgKCFkaWFsb2cgfHwgIW9yaWdpbkVsZW1lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBTZXQgdGhlIHdpZHRoIHRvIG1hdGNoIHRoZSB0cmlnZ2VyIGVsZW1lbnRcbiAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItb3B0aW9ucy1wYW5lbC13aWR0aCcsIGAke29yaWdpbkVsZW1lbnQub2Zmc2V0V2lkdGh9cHhgKTtcblxuICAvLyBTZXQgdGhlIG9yaWdpbiBoZWlnaHRcbiAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItb3B0aW9ucy1wYW5lbC1vcmlnaW4taGVpZ2h0JywgYCR7b3JpZ2luRWxlbWVudC5vZmZzZXRIZWlnaHR9cHhgKTtcblxuICAvLyBDYWxjdWxhdGUgYW5kIHNldCB0aGUgcG9zaXRpb25cbiAgY29uc3QgcGFuZWxQb3NpdGlvbiA9IGdldEVsZW1lbnRQb3NpdGlvbihvcHRpb25Db250YWluZXIsIG9yaWdpbkVsZW1lbnQsIGNvbnRhaW5lcik7XG5cbiAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItb3B0aW9ucy1wYW5lbC1wb3NpdGlvbi14JywgYCR7cGFuZWxQb3NpdGlvbi5sZWZ0fXB4YCk7XG4gIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLW9wdGlvbnMtcGFuZWwtcG9zaXRpb24teScsIGAke3BhbmVsUG9zaXRpb24udG9wfXB4YCk7XG4gIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLW9wdGlvbnMtcGFuZWwtbWF4LWhlaWdodCcsIHBhbmVsUG9zaXRpb24ubWF4SGVpZ2h0KTtcbiAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtb3B0aW9ucy1wYW5lbC1wb3NpdGlvbicsIHBhbmVsUG9zaXRpb24uYWxpZ25tZW50LnZlcnRpY2FsKTtcbiAgb3JpZ2luRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtb3B0aW9ucy1wYW5lbC1wb3NpdGlvbicsIHBhbmVsUG9zaXRpb24uYWxpZ25tZW50LnZlcnRpY2FsKTtcbn1cbiIsIi8qKlxuICogQWRkIG1lYW5pbmdmdWwgYXJpYSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgZWxlbWVudHMgdGhhdCBhcmUgY29ubmVjdGVkIHRvXG4gKiBvdmVybGF5IGVsZW1lbnRzIHN1Y2ggYXMgbWVudXMgYW5kIGRpYWxvZ3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzKFxuICB0cmlnZ2VyOiBIVE1MRWxlbWVudCxcbiAgcG9wdXBUeXBlOiAnbWVudScgfCAnZGlhbG9nJyxcbiAgb3ZlcmxheUlkOiBzdHJpbmcsXG4gIHN0YXRlOiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgaWYgKCF0cmlnZ2VyKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdHJpZ2dlci5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGFzcG9wdXAnLCBwb3B1cFR5cGUpO1xuICB0cmlnZ2VyLnNldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycsIG92ZXJsYXlJZCk7XG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgYCR7c3RhdGUgPT09ICdvcGVuaW5nJyB8fCBzdGF0ZSA9PT0gJ29wZW5lZCd9YCk7XG59XG5cbi8qKlxuICogUmVtb3ZlIGFyaWEgYXR0cmlidXRlcyBmcm9tIHRyaWdnZXIgZWxlbWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzKHRyaWdnZXI6IEhUTUxFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICBpZiAoIXRyaWdnZXIpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0cmlnZ2VyLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1oYXNwb3B1cCcpO1xuICB0cmlnZ2VyLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycpO1xuICB0cmlnZ2VyLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcpO1xufVxuXG4vKipcbiAqIEFkZCBtZWFuaW5nZnVsIGFyaWEgYXR0cmlidXRlcyB0byB0cmlnZ2VyIGVsZW1lbnQgb2Ygcm9sZT0nY29tYm9ib3gnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRBcmlhQ29tYm9Cb3hBdHRyaWJ1dGVzKFxuICB0cmlnZ2VyOiBIVE1MRWxlbWVudCxcbiAgb3ZlcmxheUlkOiBzdHJpbmcsXG4gIGV4cGFuZGVkOiBib29sZWFuLFxuKTogdm9pZCB7XG4gIGlmICghdHJpZ2dlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdhdXRvY29tcGxldGUnLCAnb2ZmJyk7XG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdyb2xlJywgJ2NvbWJvYm94Jyk7XG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdhcmlhLWF1dG9jb21wbGV0ZScsICdsaXN0Jyk7XG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdhcmlhLWhhc3BvcHVwJywgJ2xpc3Rib3gnKTtcbiAgdHJpZ2dlci5zZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnLCBvdmVybGF5SWQpO1xuICB0cmlnZ2VyLnNldEF0dHJpYnV0ZSgnYXJpYS1vd25zJywgb3ZlcmxheUlkKTsgLy8gRnJvbSBBcmlhIDEuMiB0aGlzIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5IGJ1dCBzYWZhcmkgc3RpbGwgbmVlZHMgaXRcbiAgdHJpZ2dlci5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCBgJHtleHBhbmRlZH1gKTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYXJpYSBhdHRyaWJ1dGVzIGZyb20gdHJpZ2dlciBlbGVtZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUFyaWFDb21ib0JveEF0dHJpYnV0ZXModHJpZ2dlcj86IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gIGlmICghdHJpZ2dlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyaWdnZXIucmVtb3ZlQXR0cmlidXRlKCdhdXRvY29tcGxldGUnKTtcbiAgdHJpZ2dlci5yZW1vdmVBdHRyaWJ1dGUoJ3JvbGUnKTtcbiAgdHJpZ2dlci5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtYXV0b2NvbXBsZXRlJyk7XG4gIHRyaWdnZXIucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWhhc3BvcHVwJyk7XG4gIHRyaWdnZXIucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJyk7XG4gIHRyaWdnZXIucmVtb3ZlQXR0cmlidXRlKCdhcmlhLW93bnMnKTtcbiAgdHJpZ2dlci5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnKTtcbn1cbiJdLCJuYW1lcyI6WyJlbCJdLCJtYXBwaW5ncyI6IjtBQUdBLE1BQU0sd0JBQXdCO0FBTXZCLFNBQVMsdUJBQXVDO0FBQzlDLFNBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFUO0FBS0EsTUFBTSxlQUFlLENBQUMsU0FBc0IsU0FBcUM7QUFDL0UsTUFBSSxLQUFLLFFBQVE7QUFDakIsUUFBTSxZQUEyQixDQUFBO0FBQ2pDLFNBQU8sSUFBSTtBQUNULGNBQVUsS0FBSyxFQUFFO0FBQ2pCLFFBQUksT0FBTyxNQUFNO0FBQ2YsV0FBSyxHQUFHO0FBQUEsSUFBQSxPQUNIO0FBQ0w7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNPLFNBQUE7QUFDVDtBQUVBLE1BQU0sa0JBQWtCLENBQUMsT0FBMEI7QUFDOUMsS0FBQTtBQUFBLElBQ0Q7QUFBQSxJQUNBLEdBQUcsRUFBRSxHQUFHLGFBQWEsZ0JBQWdCLEtBQUssVUFBYyxLQUFLLENBQUM7QUFBQSxFQUFBO0FBRWxFO0FBS0EsTUFBTSxjQUFjLENBQUMsT0FBMEI7QUFDekMsTUFBQSxDQUFDLEdBQUcsT0FBTztBQUNiLE9BQUcsUUFBUTtBQUNQLFFBQUEsR0FBRyxRQUFRLHFCQUFxQixHQUFHO0FBQ3JDLHNCQUFnQixFQUFFO0FBQUEsSUFBQSxPQUNiO0FBQ0YsU0FBQSxnQkFBZ0Isa0JBQWtCLElBQUk7QUFBQSxJQUMzQztBQUFBLEVBQ0Y7QUFFQSxNQUFJLENBQUMsR0FBRyxhQUFhLGFBQWEsR0FBRztBQUNoQyxPQUFBLGFBQWEsZUFBZSxNQUFNO0FBQ2xDLE9BQUEsZ0JBQWdCLHdCQUF3QixJQUFJO0FBQUEsRUFDakQ7QUFDRjtBQUtBLE1BQU0saUJBQWlCLENBQUMsT0FBMEI7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
240
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvb3ZlcmxheS9vdmVybGF5LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvb3ZlcmxheS9wb3NpdGlvbi50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL292ZXJsYXkvb3ZlcmxheS1vcHRpb24tcGFuZWwudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9vdmVybGF5L292ZXJsYXktdHJpZ2dlci1hdHRyaWJ1dGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdCc7XG5cbmNvbnN0IElTX09QRU5fT1ZFUkxBWV9RVUVSWSA9IGA6aXMoc2JiLWRpYWxvZywgc2JiLW5hdmlnYXRpb24sIHNiYi1tZW51LCBzYmItb3ZlcmxheSlbZGF0YS1zdGF0ZT0nb3BlbmVkJ11gO1xuXG4vKipcbiAqIFVzZWQgdG8gY3JlYXRlIHRoZSBcIndyYXBwaW5nXCIgZWZmZWN0IGFyb3VuZCB0aGUgYW5jaG9yIGZvciBvdmVybGF5cyAoZXMuIGF1dG9jb21wbGV0ZSlcbiAqIFdvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlICdvdmVybGF5R2FwRml4Q29ybmVycygpJyBmdW5jdGlvbiBpbiAnb3ZlcmxheS50cydcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG92ZXJsYXlHYXBGaXhDb3JuZXJzKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgcmV0dXJuIGh0bWxgXG4gICAgPGRpdiBjbGFzcz1cInNiYi1nYXAtZml4LXdyYXBwZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItZ2FwLWZpeC1jb3JuZXJcIiBpZD1cImxlZnRcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2JiLWdhcC1maXgtd3JhcHBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1nYXAtZml4LWNvcm5lclwiIGlkPVwicmlnaHRcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFsbCB0aGUgYW5jZXN0b3JzIG9mIHRoZSBvdmVybGF5LlxuICovXG5jb25zdCBnZXRBbmNlc3RvcnMgPSAob3ZlcmxheTogSFRNTEVsZW1lbnQsIHJvb3Q6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnRbXSA9PiB7XG4gIGxldCBlbCA9IG92ZXJsYXkucGFyZW50RWxlbWVudDtcbiAgY29uc3QgYW5jZXN0b3JzOiBIVE1MRWxlbWVudFtdID0gW107XG4gIHdoaWxlIChlbCkge1xuICAgIGFuY2VzdG9ycy5wdXNoKGVsKTtcbiAgICBpZiAoZWwgIT09IHJvb3QpIHtcbiAgICAgIGVsID0gZWwucGFyZW50RWxlbWVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBhbmNlc3RvcnM7XG59O1xuXG5jb25zdCBzZXREYXRhU2JiSW5lcnQgPSAoZWw6IEhUTUxFbGVtZW50KTogdm9pZCA9PiB7XG4gIGVsLnNldEF0dHJpYnV0ZShcbiAgICAnZGF0YS1zYmItaW5lcnQnLFxuICAgIGAkeysoZWwuZ2V0QXR0cmlidXRlKCdkYXRhLXNiYi1pbmVydCcpID8/IHVuZGVmaW5lZCkhICsgMSB8fCAwfWAsXG4gICk7XG59O1xuXG4vKipcbiAqIFNldCB0aGUgaW5lcnQgYW5kIHRoZSBkYXRhLXNiYi1pbmVydCBhdHRyaWJ1dGVzLlxuICovXG5jb25zdCBzZXRTYmJJbmVydCA9IChlbDogSFRNTEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgaWYgKCFlbC5pbmVydCkge1xuICAgIGVsLmluZXJ0ID0gdHJ1ZTtcbiAgICBpZiAoZWwubWF0Y2hlcyhJU19PUEVOX09WRVJMQVlfUVVFUlkpKSB7XG4gICAgICBzZXREYXRhU2JiSW5lcnQoZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWluZXJ0JywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFlbC5oYXNBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJykpIHtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICBlbC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWFyaWEtaGlkZGVuJywgdHJ1ZSk7XG4gIH1cbn07XG5cbi8qKlxuICogUmVtb3ZlcyB0aGUgaW5lcnQgYW5kIHRoZSBkYXRhLXNiYi1pbmVydCBhdHRyaWJ1dGVzLlxuICovXG5jb25zdCByZW1vdmVTYmJJbmVydCA9IChlbDogSFRNTEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgaWYgKGVsLmhhc0F0dHJpYnV0ZSgnZGF0YS1zYmItaW5lcnQnKSkge1xuICAgIGVsLmluZXJ0ID0gZmFsc2U7XG4gICAgZWwucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNiYi1pbmVydCcpO1xuICB9XG5cbiAgaWYgKGVsLmhhc0F0dHJpYnV0ZSgnZGF0YS1zYmItYXJpYS1oaWRkZW4nKSkge1xuICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKTtcbiAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWFyaWEtaGlkZGVuJyk7XG4gIH1cbn07XG5cbi8qKlxuICogQXBwbGllcyBpbmVydCB0byBldmVyeSBvdGhlciBlbGVtZW50IG9uIHRoZSBwYWdlIGV4Y2VwdCB0aGUgb3ZlcmxheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5SW5lcnRNZWNoYW5pc20ob3ZlcmxheTogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgcmVtb3ZlU2JiSW5lcnQob3ZlcmxheSk7XG5cbiAgY29uc3Qgb3ZlcmxheVJvb3QgPSBvdmVybGF5LmNsb3Nlc3QoJ2JvZHkgPiAqJykgYXMgSFRNTEVsZW1lbnQ7XG4gIGNvbnN0IGRvY3VtZW50Q2hpbGRyZW4gPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2JvZHkgPiAqJykpLmZpbHRlcihcbiAgICAoZWwpID0+IGVsICE9PSBvdmVybGF5Um9vdCxcbiAgKSBhcyBIVE1MRWxlbWVudFtdO1xuXG4gIGRvY3VtZW50Q2hpbGRyZW4uZm9yRWFjaCgoZWwpID0+IHNldFNiYkluZXJ0KGVsKSk7XG5cbiAgbGV0IGNoaWxkcmVuOiBIVE1MRWxlbWVudFtdID0gW107XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGdldEFuY2VzdG9ycyhvdmVybGF5LCBvdmVybGF5Um9vdCk7XG5cbiAgZm9yIChjb25zdCBlbCBvZiBhbmNlc3RvcnMpIHtcbiAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmNvbmNhdChcbiAgICAgIEFycmF5LmZyb20oZWwuY2hpbGRyZW4pLmZpbHRlcihcbiAgICAgICAgKGVsOiBFbGVtZW50KSA9PiBlbCAhPT0gb3ZlcmxheSAmJiAhYW5jZXN0b3JzLmluY2x1ZGVzKGVsIGFzIEhUTUxFbGVtZW50KSxcbiAgICAgICkgYXMgSFRNTEVsZW1lbnRbXSxcbiAgICApO1xuICAgIGlmIChlbC5tYXRjaGVzKElTX09QRU5fT1ZFUkxBWV9RVUVSWSkpIHtcbiAgICAgIHNldERhdGFTYmJJbmVydChlbCk7XG4gICAgfVxuICB9XG5cbiAgY2hpbGRyZW4uZm9yRWFjaCgoZWwpID0+IHNldFNiYkluZXJ0KGVsKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVJbmVydE1lY2hhbmlzbSgpOiB2b2lkIHtcbiAgY29uc3Qgb3Blbk92ZXJsYXlzID0gQXJyYXkuZnJvbShcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChJU19PUEVOX09WRVJMQVlfUVVFUlkpLFxuICApIGFzIEhUTUxFbGVtZW50W107XG5cbiAgaWYgKG9wZW5PdmVybGF5cy5sZW5ndGgpIHtcbiAgICBvcGVuT3ZlcmxheXMuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gK2VsLmdldEF0dHJpYnV0ZSgnZGF0YS1zYmItaW5lcnQnKSEgLSAxO1xuICAgICAgZWwuc2V0QXR0cmlidXRlKCdkYXRhLXNiYi1pbmVydCcsIGAke25ld1ZhbHVlfWApO1xuXG4gICAgICBpZiAobmV3VmFsdWUgJiYgbmV3VmFsdWUgPCAwKSB7XG4gICAgICAgIHJlbW92ZVNiYkluZXJ0KGVsKTtcbiAgICAgICAgQXJyYXkuZnJvbShlbC5jaGlsZHJlbikuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHJlbW92ZVNiYkluZXJ0KGVsIGFzIEhUTUxFbGVtZW50KSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgQXJyYXkuZnJvbShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtc2JiLWluZXJ0XScpKS5mb3JFYWNoKChlbDogRWxlbWVudCkgPT5cbiAgICByZW1vdmVTYmJJbmVydChlbCBhcyBIVE1MRWxlbWVudCksXG4gICk7XG59XG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBHbG9iYWxFdmVudEhhbmRsZXJzRXZlbnRNYXAge1xuICAgIHdpbGxPcGVuOiBDdXN0b21FdmVudDx2b2lkPjtcbiAgICB3aWxsQ2xvc2U6IEN1c3RvbUV2ZW50PHZvaWQ+O1xuICAgIGRpZE9wZW46IEN1c3RvbUV2ZW50PHZvaWQ+O1xuICAgIGRpZENsb3NlOiBDdXN0b21FdmVudDx2b2lkPjtcbiAgfVxufVxuIiwiZXhwb3J0IHR5cGUgRWxlbWVudFJlY3RhbmdsZSA9IFBpY2s8XG4gIEhUTUxFbGVtZW50LFxuICAnc2Nyb2xsSGVpZ2h0JyB8ICdjbGllbnRIZWlnaHQnIHwgJ29mZnNldEhlaWdodCcgfCAnc2Nyb2xsV2lkdGgnIHwgJ2NsaWVudFdpZHRoJyB8ICdvZmZzZXRXaWR0aCdcbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JiQWxpZ25tZW50IHtcbiAgaG9yaXpvbnRhbDogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCc7XG4gIHZlcnRpY2FsOiAnYWJvdmUnIHwgJ2JlbG93Jztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYmJFbGVtZW50UG9zaXRpb25JbmZvcyB7XG4gIHRvcDogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIG1heEhlaWdodDogc3RyaW5nO1xuICBhbGlnbm1lbnQ6IFNiYkFsaWdubWVudDtcbn1cblxuLyoqXG4gKiBHZXRzIGhlaWdodCBhbmQgd2lkdGggb2YgYW4gZWxlbWVudCBldmVuIGlmIGl0J3MgaGlkZGVuIChgZGlzcGxheTogbm9uZWApLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWxlbWVudFJlY3RhbmdsZShlbDogSFRNTEVsZW1lbnQpOiBFbGVtZW50UmVjdGFuZ2xlIHtcbiAgY29uc3QgZWxlbWVudFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpLFxuICAgIGVsZW1lbnREaXNwbGF5ID0gZWxlbWVudFN0eWxlLmRpc3BsYXksXG4gICAgZWxlbWVudE1heEhlaWdodCA9IHBhcnNlSW50KGVsZW1lbnRTdHlsZS5tYXhIZWlnaHQsIDEwKS50b1N0cmluZygpO1xuXG4gIC8vIElmIGl0IGlzIG5vdCBoaWRkZW4gd2UganVzdCByZXR1cm4gbm9ybWFsIGhlaWdodFxuICBpZiAoZWxlbWVudERpc3BsYXkgIT09ICdub25lJyAmJiBlbGVtZW50TWF4SGVpZ2h0ICE9PSAnMCcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Nyb2xsSGVpZ2h0OiBlbC5zY3JvbGxIZWlnaHQsXG4gICAgICBjbGllbnRIZWlnaHQ6IGVsLmNsaWVudEhlaWdodCxcbiAgICAgIG9mZnNldEhlaWdodDogZWwub2Zmc2V0SGVpZ2h0LFxuICAgICAgc2Nyb2xsV2lkdGg6IGVsLnNjcm9sbFdpZHRoLFxuICAgICAgY2xpZW50V2lkdGg6IGVsLmNsaWVudFdpZHRoLFxuICAgICAgb2Zmc2V0V2lkdGg6IGVsLm9mZnNldFdpZHRoLFxuICAgIH07XG4gIH1cblxuICAvLyBUaGUgZWxlbWVudCBpcyBoaWRkZW4gc286XG4gIC8vIG1ha2UgdGhlIGVsIGJsb2NrIGluIG9yZGVyIHRvIG1lYXN1cmUgaXRzIGhlaWdodCBidXQgc3RpbGwgYmUgaGlkZGVuXG4gIGVsLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgZWwuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICBlbC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcblxuICBjb25zdCBzY3JvbGxIZWlnaHQgPSBlbC5zY3JvbGxIZWlnaHQsXG4gICAgY2xpZW50SGVpZ2h0ID0gZWwuY2xpZW50SGVpZ2h0LFxuICAgIG9mZnNldEhlaWdodCA9IGVsLm9mZnNldEhlaWdodCxcbiAgICBzY3JvbGxXaWR0aCA9IGVsLnNjcm9sbFdpZHRoLFxuICAgIGNsaWVudFdpZHRoID0gZWwuY2xpZW50V2lkdGgsXG4gICAgb2Zmc2V0V2lkdGggPSBlbC5vZmZzZXRXaWR0aDtcblxuICAvLyBSZXZlcnRpbmcgdG8gdGhlIG9yaWdpbmFsIHZhbHVlc1xuICBlbC5zdHlsZS5kaXNwbGF5ID0gJyc7XG4gIGVsLnN0eWxlLnBvc2l0aW9uID0gJyc7XG4gIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAnJztcblxuICByZXR1cm4geyBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCwgb2Zmc2V0SGVpZ2h0LCBzY3JvbGxXaWR0aCwgY2xpZW50V2lkdGgsIG9mZnNldFdpZHRoIH07XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGFuIGV2ZW50IGlzIGZpcmVkIG9uIGEgc3BlY2lmaWMgZWxlbWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRXZlbnRPbkVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQsIGV2ZW50OiBNb3VzZUV2ZW50IHwgUG9pbnRlckV2ZW50KTogYm9vbGVhbiB7XG4gIGlmICghZWxlbWVudCB8fCAhZXZlbnQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgcmV0dXJuIChcbiAgICByZWN0LnRvcCA8PSBldmVudC5jbGllbnRZICYmXG4gICAgZXZlbnQuY2xpZW50WSA8PSByZWN0LnRvcCArIHJlY3QuaGVpZ2h0ICYmXG4gICAgcmVjdC5sZWZ0IDw9IGV2ZW50LmNsaWVudFggJiZcbiAgICBldmVudC5jbGllbnRYIDw9IHJlY3QubGVmdCArIHJlY3Qud2lkdGhcbiAgKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHRoZSBwb3NpdGlvbiBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGEgdHJpZ2dlciBlbGVtZW50IGJ5IGV2YWx1YXRpbmdcbiAqIHRoZSBvcHRpbWFsIHBvc2l0aW9uIGJhc2VkIG9uIHRoZSBhdmFpbGFibGUgc3BhY2UuXG4gKlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgb2Ygd2hpY2ggdG8gY2FsY3VsYXRlIHRoZSBwb3NpdGlvbi5cbiAqIEBwYXJhbSB0cmlnZ2VyIFRoZSBlbGVtZW50IHJlbGF0aXZlIHRvIHdoaWNoIHRvIGNhbGN1bGF0ZSB0aGUgcG9zaXRpb24uXG4gKiBAcGFyYW0gY29udGFpbmVyIFRoZSBlbGVtZW50IHdoaWNoIGhhcyB0aGUgcG9zaXRpb246Zml4ZWQgYXBwbGllZC5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzIFByb3BlcnRpZXMgdG8gdGFrZSBpbnRvIGFjY291bnQgaW4gY2FsY3VsYXRpb25zIChvcHRpb25hbCkuXG4gKiBAcGFyYW0gcHJvcGVydGllcy52ZXJ0aWNhbE9mZnNldCBUaGUgZGlzdGFuY2UgdG8gYmUgYWRkZWQgYmV0d2VlbiB0aGUgZWxlbWVudCBhbmQgdGhlIHRyaWdnZXIgKG9wdGlvbmFsKS5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzLmhvcml6b250YWxPZmZzZXQgVGhlIGhvcml6b250YWwgb2Zmc2V0IHRvIGJlIGFwcGxpZWQgdG8gdGhlIGVsZW1lbnQgKG9wdGlvbmFsKS5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzLmNlbnRlcmVkIFdoZXRoZXIgdGhlIGVsZW1lbnQgc2hvdWxkIGJlIHBsYWNlZCBpbiB0aGUgY2VudGVyIGJ5IGRlZmF1bHQgKG9wdGlvbmFsKS5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzLnJlc3BvbnNpdmVIZWlnaHQgV2hldGhlciB0aGUgZWxlbWVudCBjYWxjdWxhdGVzIGl0cyBoZWlnaHQgYmFzZWQgb24gaXRzIGNvbnRlbnQgKG9wdGlvbmFsKS5cbiAqIEByZXR1cm5zIFJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGxlZnQgcG9zaXRpb24sIHRoZSB0b3AgcG9zaXRpb24sIHRoZSBtYXhpbXVtIGhlaWdodFxuICogb2YgdGhlIGVsZW1lbnQgYW5kIHRoZSBjdXJyZW50IGFsaWdubWVudCBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbGVtZW50UG9zaXRpb24oXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICB0cmlnZ2VyOiBIVE1MRWxlbWVudCxcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgcHJvcGVydGllcz86IHtcbiAgICB2ZXJ0aWNhbE9mZnNldD86IG51bWJlcjtcbiAgICBob3Jpem9udGFsT2Zmc2V0PzogbnVtYmVyO1xuICAgIGNlbnRlcmVkPzogYm9vbGVhbjtcbiAgICByZXNwb25zaXZlSGVpZ2h0PzogYm9vbGVhbjtcbiAgfSxcbik6IFNiYkVsZW1lbnRQb3NpdGlvbkluZm9zIHtcbiAgY29uc3QgbWF4V2lkdGhPZmZzZXQgPSAxNjtcbiAgY29uc3QgdmVydGljYWxPZmZzZXQgPSBwcm9wZXJ0aWVzPy52ZXJ0aWNhbE9mZnNldCB8fCAwO1xuICBjb25zdCBob3Jpem9udGFsT2Zmc2V0ID0gcHJvcGVydGllcz8uaG9yaXpvbnRhbE9mZnNldCB8fCAwO1xuICBjb25zdCByZXNwb25zaXZlSGVpZ2h0ID0gcHJvcGVydGllcz8ucmVzcG9uc2l2ZUhlaWdodCB8fCBmYWxzZTtcblxuICBjb25zdCB0cmlnZ2VyUmVjID0gdHJpZ2dlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZWxlbWVudFJlYyA9IGdldEVsZW1lbnRSZWN0YW5nbGUoZWxlbWVudCk7XG5cbiAgY29uc3QgdHJpZ2dlckxlZnQgPSB0cmlnZ2VyUmVjLmxlZnQ7XG4gIGNvbnN0IHRyaWdnZXJUb3AgPSB0cmlnZ2VyUmVjLnRvcDtcblxuICBjb25zdCBhdmFpbGFibGVTcGFjZVJpZ2h0ID1cbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggLSAodHJpZ2dlckxlZnQgKyB0cmlnZ2VyUmVjLndpZHRoKTtcbiAgY29uc3QgYXZhaWxhYmxlU3BhY2VBYm92ZSA9IHRyaWdnZXJUb3AgLSB2ZXJ0aWNhbE9mZnNldDtcbiAgY29uc3QgYXZhaWxhYmxlU3BhY2VCZWxvdyA9XG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCAtICh0cmlnZ2VyVG9wICsgdHJpZ2dlclJlYy5oZWlnaHQgKyB2ZXJ0aWNhbE9mZnNldCk7XG5cbiAgLy8gRGVmYXVsdCBlbGVtZW50IGFsaWdubWVudCBpcyBcInN0YXJ0L2JlbG93XCJcbiAgbGV0IGVsZW1lbnRYUG9zaXRpb24gPSB0cmlnZ2VyTGVmdDtcbiAgbGV0IGVsZW1lbnRZUG9zaXRpb24gPSB0cmlnZ2VyVG9wICsgdHJpZ2dlclJlYy5oZWlnaHQgKyB2ZXJ0aWNhbE9mZnNldDtcbiAgbGV0IGVsZW1lbnRYT3ZlcmZsb3cgPSBlbGVtZW50UmVjLm9mZnNldFdpZHRoIC0gdHJpZ2dlclJlYy53aWR0aDtcbiAgY29uc3QgYWxpZ25tZW50OiBTYmJBbGlnbm1lbnQgPSB7IGhvcml6b250YWw6ICdzdGFydCcsIHZlcnRpY2FsOiAnYmVsb3cnIH07XG5cbiAgLy8gQ2FsY3VsYXRlIGVsZW1lbnQgbWF4LWhlaWdodFxuICBsZXQgZWxlbWVudE1heEhlaWdodCA9IGAke2F2YWlsYWJsZVNwYWNlQmVsb3cgLSB2ZXJ0aWNhbE9mZnNldH1weGA7XG5cbiAgLy8gQ2hlY2sgaWYgaG9yaXpvbnRhbCBhbGlnbm1lbnQgbmVlZHMgdG8gYmUgY2hhbmdlZCB0byBcImNlbnRlclwiXG4gIGlmIChcbiAgICBwcm9wZXJ0aWVzPy5jZW50ZXJlZCAmJlxuICAgIHRyaWdnZXJMZWZ0IC0gbWF4V2lkdGhPZmZzZXQgKyB0cmlnZ2VyUmVjLndpZHRoIC8gMiA+IGVsZW1lbnRSZWMub2Zmc2V0V2lkdGggLyAyICYmXG4gICAgYXZhaWxhYmxlU3BhY2VSaWdodCAtIG1heFdpZHRoT2Zmc2V0ID4gZWxlbWVudFhPdmVyZmxvdyAvIDJcbiAgKSB7XG4gICAgZWxlbWVudFhQb3NpdGlvbiAtPSBlbGVtZW50WE92ZXJmbG93IC89IDI7XG4gICAgYWxpZ25tZW50Lmhvcml6b250YWwgPSAnY2VudGVyJztcbiAgfVxuXG4gIC8vIENoZWNrIGlmIGhvcml6b250YWwgYWxpZ25tZW50IG5lZWRzIHRvIGJlIGNoYW5nZWQgdG8gXCJlbmRcIlxuICBpZiAoYXZhaWxhYmxlU3BhY2VSaWdodCA8IGVsZW1lbnRYT3ZlcmZsb3cgJiYgdHJpZ2dlckxlZnQgPiBlbGVtZW50WE92ZXJmbG93KSB7XG4gICAgZWxlbWVudFhQb3NpdGlvbiA9IGVsZW1lbnRYUG9zaXRpb24gLSBlbGVtZW50WE92ZXJmbG93O1xuICAgIGFsaWdubWVudC5ob3Jpem9udGFsID0gJ2VuZCc7XG4gIH1cblxuICAvLyBBZGQgaG9yaXpvbnRhbCBvZmZzZXRcbiAgaWYgKFxuICAgIGhvcml6b250YWxPZmZzZXQgJiZcbiAgICBhbGlnbm1lbnQuaG9yaXpvbnRhbCAhPT0gJ2NlbnRlcicgJiZcbiAgICB0cmlnZ2VyUmVjLndpZHRoIC8gMiA8IGhvcml6b250YWxPZmZzZXRcbiAgKSB7XG4gICAgZWxlbWVudFhQb3NpdGlvbiArPSBob3Jpem9udGFsT2Zmc2V0ICogKGFsaWdubWVudC5ob3Jpem9udGFsID09PSAnc3RhcnQnID8gLTEgOiAxKTtcbiAgfVxuXG4gIC8vIENoZWNrIHdoZXRoZXIgdGhlcmUgaXMgaW5zdWZmaWNpZW50IHNwYWNlIG9uIGJvdGggc2lkZXNcbiAgaWYgKFxuICAgICh0cmlnZ2VyTGVmdCA8IGVsZW1lbnRYT3ZlcmZsb3cgJiYgYXZhaWxhYmxlU3BhY2VSaWdodCA8IGVsZW1lbnRYT3ZlcmZsb3cpIHx8XG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIDwgZWxlbWVudFJlYy5vZmZzZXRXaWR0aFxuICApIHtcbiAgICBlbGVtZW50WFBvc2l0aW9uID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIC8gMiAtIGVsZW1lbnRSZWMub2Zmc2V0V2lkdGggLyAyO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdmVydGljYWwgYWxpZ25tZW50IG5lZWRzIHRvIGJlIGNoYW5nZWQgdG8gXCJhYm92ZVwiOlxuICBpZiAoXG4gICAgKGF2YWlsYWJsZVNwYWNlQmVsb3cgLSB2ZXJ0aWNhbE9mZnNldCA8IGVsZW1lbnRSZWMuc2Nyb2xsSGVpZ2h0ICYmXG4gICAgICBhdmFpbGFibGVTcGFjZUFib3ZlIC0gdmVydGljYWxPZmZzZXQgPlxuICAgICAgICAocmVzcG9uc2l2ZUhlaWdodCA/IGVsZW1lbnRSZWMuY2xpZW50SGVpZ2h0IDogZWxlbWVudFJlYy5zY3JvbGxIZWlnaHQpKSB8fFxuICAgIChhdmFpbGFibGVTcGFjZUFib3ZlID4gYXZhaWxhYmxlU3BhY2VCZWxvdyAmJlxuICAgICAgYXZhaWxhYmxlU3BhY2VCZWxvdyAtIHZlcnRpY2FsT2Zmc2V0IDwgZWxlbWVudFJlYy5jbGllbnRIZWlnaHQgJiZcbiAgICAgICFyZXNwb25zaXZlSGVpZ2h0KVxuICApIHtcbiAgICBlbGVtZW50WVBvc2l0aW9uID1cbiAgICAgIGF2YWlsYWJsZVNwYWNlQWJvdmUgPCBlbGVtZW50UmVjLnNjcm9sbEhlaWdodFxuICAgICAgICA/IGVsZW1lbnRZUG9zaXRpb24gLSB0cmlnZ2VyUmVjLmhlaWdodCAtIGF2YWlsYWJsZVNwYWNlQWJvdmUgLSB2ZXJ0aWNhbE9mZnNldFxuICAgICAgICA6IHRyaWdnZXJUb3AgLSBlbGVtZW50UmVjLmNsaWVudEhlaWdodCAtIHZlcnRpY2FsT2Zmc2V0O1xuXG4gICAgZWxlbWVudE1heEhlaWdodCA9IGAke2F2YWlsYWJsZVNwYWNlQWJvdmUgLSB2ZXJ0aWNhbE9mZnNldH1weGA7XG4gICAgYWxpZ25tZW50LnZlcnRpY2FsID0gJ2Fib3ZlJztcbiAgfVxuXG4gIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgLy8gV2hlbiB6b29taW5nIGluIFNhZmFyaSB0aGUgY29udGFpbmVyIHJlY3RhbmdsZSBjb250YWlucyBuZWdhdGl2ZSB2YWx1ZXMgZm9yIHRoZSBwb3NpdGlvblxuICAvLyBhbmQgd2UgbmVlZCB0byByZS1hZGQgdGhlbSB0byB0aGUgY2FsY3VsYXRlZCBjb29yZGluYXRlcy5cbiAgaWYgKGNvbnRhaW5lclJlY3QubGVmdCA8IDApIHtcbiAgICBlbGVtZW50WFBvc2l0aW9uIC09IGNvbnRhaW5lclJlY3QubGVmdDtcbiAgfVxuXG4gIC8vIE5vcm1hbGx5IHRoZSBjb250YWluZXJSZWN0J3MgdG9wIHZhbHVlIHdvdWxkIGJlIHplcm8sIGhvd2V2ZXIgd2hlbiB0aGUgb3ZlcmxheSBpcyBhdHRhY2hlZCB0byBhbiBpbnB1dFxuICAvLyAoZS5nLiBpbiBhbiBhdXRvY29tcGxldGUpLCBtb2JpbGUgYnJvd3NlcnMgd2lsbCBzaGlmdCBldmVyeXRoaW5nIGluIG9yZGVyIHRvIHB1dCB0aGUgaW5wdXQgaW4gdGhlIG1pZGRsZVxuICAvLyBvZiB0aGUgc2NyZWVuIGFuZCB0byBtYWtlIHNwYWNlIGZvciB0aGUgdmlydHVhbCBrZXlib2FyZC4gV2UgbmVlZCB0byBhY2NvdW50IGZvciB0aGlzIG9mZnNldCxcbiAgLy8gb3RoZXJ3aXNlIG91ciBwb3NpdGlvbmluZyB3aWxsIGJlIHRocm93biBvZmYuXG4gIC8vIEFkZGl0aW9uYWxseSwgd2hlbiB6b29taW5nIGluIFNhZmFyaSB0aGlzIGZpeGVzIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbi5cbiAgaWYgKGNvbnRhaW5lclJlY3QudG9wIDwgMCkge1xuICAgIGVsZW1lbnRZUG9zaXRpb24gLT0gY29udGFpbmVyUmVjdC50b3A7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRvcDogZWxlbWVudFlQb3NpdGlvbixcbiAgICBsZWZ0OiBlbGVtZW50WFBvc2l0aW9uLFxuICAgIG1heEhlaWdodDogZWxlbWVudE1heEhlaWdodCxcbiAgICBhbGlnbm1lbnQ6IGFsaWdubWVudCxcbiAgfTtcbn1cbiIsImltcG9ydCB7IGdldEVsZW1lbnRQb3NpdGlvbiB9IGZyb20gJy4vcG9zaXRpb24uanMnO1xuXG4vKipcbiAqIFBsYWNlcyB0aGUgb3ZlcmxheSBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbi5cbiAqIEBwYXJhbSBkaWFsb2cgVGhlIHJlZmVyZW5jZSB0byB0aGUgZGlhbG9nIGVsZW1lbnQuXG4gKiBAcGFyYW0gb3JpZ2luRWxlbWVudCBUaGUgcmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IHRoZSBkaWFsb2cgaXMgYXR0YWNoZWQgdG8uXG4gKiBAcGFyYW0gb3B0aW9uQ29udGFpbmVyIFRoZSByZWZlcmVuY2UgdG8gdGhlIG9wdGlvbiBwYW5lbC5cbiAqIEBwYXJhbSBjb250YWluZXIgVGhlIGVsZW1lbnQgd2hpY2ggaGFzIHRoZSBwb3NpdGlvbjpmaXhlZCBhcHBsaWVkLlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIHJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0T3ZlcmxheVBvc2l0aW9uKFxuICBkaWFsb2c6IEhUTUxFbGVtZW50LFxuICBvcmlnaW5FbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgb3B0aW9uQ29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4pOiB2b2lkIHtcbiAgaWYgKCFkaWFsb2cgfHwgIW9yaWdpbkVsZW1lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBTZXQgdGhlIHdpZHRoIHRvIG1hdGNoIHRoZSB0cmlnZ2VyIGVsZW1lbnRcbiAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItb3B0aW9ucy1wYW5lbC13aWR0aCcsIGAke29yaWdpbkVsZW1lbnQub2Zmc2V0V2lkdGh9cHhgKTtcblxuICAvLyBTZXQgdGhlIG9yaWdpbiBoZWlnaHRcbiAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItb3B0aW9ucy1wYW5lbC1vcmlnaW4taGVpZ2h0JywgYCR7b3JpZ2luRWxlbWVudC5vZmZzZXRIZWlnaHR9cHhgKTtcblxuICAvLyBDYWxjdWxhdGUgYW5kIHNldCB0aGUgcG9zaXRpb25cbiAgY29uc3QgcGFuZWxQb3NpdGlvbiA9IGdldEVsZW1lbnRQb3NpdGlvbihvcHRpb25Db250YWluZXIsIG9yaWdpbkVsZW1lbnQsIGNvbnRhaW5lcik7XG5cbiAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItb3B0aW9ucy1wYW5lbC1wb3NpdGlvbi14JywgYCR7cGFuZWxQb3NpdGlvbi5sZWZ0fXB4YCk7XG4gIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLW9wdGlvbnMtcGFuZWwtcG9zaXRpb24teScsIGAke3BhbmVsUG9zaXRpb24udG9wfXB4YCk7XG4gIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLW9wdGlvbnMtcGFuZWwtbWF4LWhlaWdodCcsIHBhbmVsUG9zaXRpb24ubWF4SGVpZ2h0KTtcbiAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtb3B0aW9ucy1wYW5lbC1wb3NpdGlvbicsIHBhbmVsUG9zaXRpb24uYWxpZ25tZW50LnZlcnRpY2FsKTtcbiAgb3JpZ2luRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtb3B0aW9ucy1wYW5lbC1wb3NpdGlvbicsIHBhbmVsUG9zaXRpb24uYWxpZ25tZW50LnZlcnRpY2FsKTtcbn1cbiIsIi8qKlxuICogQWRkIG1lYW5pbmdmdWwgYXJpYSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgZWxlbWVudHMgdGhhdCBhcmUgY29ubmVjdGVkIHRvXG4gKiBvdmVybGF5IGVsZW1lbnRzIHN1Y2ggYXMgbWVudXMgYW5kIGRpYWxvZ3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzKFxuICB0cmlnZ2VyOiBIVE1MRWxlbWVudCxcbiAgcG9wdXBUeXBlOiAnbWVudScgfCAnZGlhbG9nJyxcbiAgb3ZlcmxheUlkOiBzdHJpbmcsXG4gIHN0YXRlOiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgaWYgKCF0cmlnZ2VyKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdHJpZ2dlci5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGFzcG9wdXAnLCBwb3B1cFR5cGUpO1xuICB0cmlnZ2VyLnNldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycsIG92ZXJsYXlJZCk7XG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgYCR7c3RhdGUgPT09ICdvcGVuaW5nJyB8fCBzdGF0ZSA9PT0gJ29wZW5lZCd9YCk7XG59XG5cbi8qKlxuICogUmVtb3ZlIGFyaWEgYXR0cmlidXRlcyBmcm9tIHRyaWdnZXIgZWxlbWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVBcmlhT3ZlcmxheVRyaWdnZXJBdHRyaWJ1dGVzKHRyaWdnZXI6IEhUTUxFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICBpZiAoIXRyaWdnZXIpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0cmlnZ2VyLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1oYXNwb3B1cCcpO1xuICB0cmlnZ2VyLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycpO1xuICB0cmlnZ2VyLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcpO1xufVxuXG4vKipcbiAqIEFkZCBtZWFuaW5nZnVsIGFyaWEgYXR0cmlidXRlcyB0byB0cmlnZ2VyIGVsZW1lbnQgb2Ygcm9sZT0nY29tYm9ib3gnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRBcmlhQ29tYm9Cb3hBdHRyaWJ1dGVzKFxuICB0cmlnZ2VyOiBIVE1MRWxlbWVudCxcbiAgb3ZlcmxheUlkOiBzdHJpbmcsXG4gIGV4cGFuZGVkOiBib29sZWFuLFxuICBoYXNQb3B1cDogJ2xpc3Rib3gnIHwgJ2dyaWQnID0gJ2xpc3Rib3gnLFxuKTogdm9pZCB7XG4gIGlmICghdHJpZ2dlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdhdXRvY29tcGxldGUnLCAnb2ZmJyk7XG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdyb2xlJywgJ2NvbWJvYm94Jyk7XG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdhcmlhLWF1dG9jb21wbGV0ZScsICdsaXN0Jyk7XG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdhcmlhLWhhc3BvcHVwJywgaGFzUG9wdXApO1xuICB0cmlnZ2VyLnNldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycsIG92ZXJsYXlJZCk7XG4gIHRyaWdnZXIuc2V0QXR0cmlidXRlKCdhcmlhLW93bnMnLCBvdmVybGF5SWQpOyAvLyBGcm9tIEFyaWEgMS4yIHRoaXMgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnksIGJ1dCBzYWZhcmkgc3RpbGwgbmVlZHMgaXRcbiAgdHJpZ2dlci5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCBgJHtleHBhbmRlZH1gKTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYXJpYSBhdHRyaWJ1dGVzIGZyb20gdHJpZ2dlciBlbGVtZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUFyaWFDb21ib0JveEF0dHJpYnV0ZXModHJpZ2dlcj86IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gIGlmICghdHJpZ2dlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyaWdnZXIucmVtb3ZlQXR0cmlidXRlKCdhdXRvY29tcGxldGUnKTtcbiAgdHJpZ2dlci5yZW1vdmVBdHRyaWJ1dGUoJ3JvbGUnKTtcbiAgdHJpZ2dlci5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtYXV0b2NvbXBsZXRlJyk7XG4gIHRyaWdnZXIucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWhhc3BvcHVwJyk7XG4gIHRyaWdnZXIucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJyk7XG4gIHRyaWdnZXIucmVtb3ZlQXR0cmlidXRlKCdhcmlhLW93bnMnKTtcbiAgdHJpZ2dlci5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnKTtcbn1cbiJdLCJuYW1lcyI6WyJlbCJdLCJtYXBwaW5ncyI6IjtBQUdBLE1BQU0sd0JBQXdCO0FBTXZCLFNBQVMsdUJBQXVDO0FBQzlDLFNBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFUO0FBS0EsTUFBTSxlQUFlLENBQUMsU0FBc0IsU0FBcUM7QUFDL0UsTUFBSSxLQUFLLFFBQVE7QUFDakIsUUFBTSxZQUEyQixDQUFBO0FBQ2pDLFNBQU8sSUFBSTtBQUNULGNBQVUsS0FBSyxFQUFFO0FBQ2pCLFFBQUksT0FBTyxNQUFNO0FBQ2YsV0FBSyxHQUFHO0FBQUEsSUFBQSxPQUNIO0FBQ0w7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNPLFNBQUE7QUFDVDtBQUVBLE1BQU0sa0JBQWtCLENBQUMsT0FBMEI7QUFDOUMsS0FBQTtBQUFBLElBQ0Q7QUFBQSxJQUNBLEdBQUcsRUFBRSxHQUFHLGFBQWEsZ0JBQWdCLEtBQUssVUFBYyxLQUFLLENBQUM7QUFBQSxFQUFBO0FBRWxFO0FBS0EsTUFBTSxjQUFjLENBQUMsT0FBMEI7QUFDekMsTUFBQSxDQUFDLEdBQUcsT0FBTztBQUNiLE9BQUcsUUFBUTtBQUNQLFFBQUEsR0FBRyxRQUFRLHFCQUFxQixHQUFHO0FBQ3JDLHNCQUFnQixFQUFFO0FBQUEsSUFBQSxPQUNiO0FBQ0YsU0FBQSxnQkFBZ0Isa0JBQWtCLElBQUk7QUFBQSxJQUMzQztBQUFBLEVBQ0Y7QUFFQSxNQUFJLENBQUMsR0FBRyxhQUFhLGFBQWEsR0FBRztBQUNoQyxPQUFBLGFBQWEsZUFBZSxNQUFNO0FBQ2xDLE9BQUEsZ0JBQWdCLHdCQUF3QixJQUFJO0FBQUEsRUFDakQ7QUFDRjtBQUtBLE1BQU0saUJBQWlCLENBQUMsT0FBMEI7QUFDNUMsTUFBQSxHQUFHLGFBQWEsZ0JBQWdCLEdBQUc7QUFDckMsT0FBRyxRQUFRO0FBQ1gsT0FBRyxnQkFBZ0IsZ0JBQWdCO0FBQUEsRUFDckM7QUFFSSxNQUFBLEdBQUcsYUFBYSxzQkFBc0IsR0FBRztBQUMzQyxPQUFHLGdCQUFnQixhQUFhO0FBQ2hDLE9BQUcsZ0JBQWdCLHNCQUFzQjtBQUFBLEVBQzNDO0FBQ0Y7QUFLTyxTQUFTLG9CQUFvQixTQUE0QjtBQUM5RCxpQkFBZSxPQUFPO0FBRWhCLFFBQUEsY0FBYyxRQUFRLFFBQVEsVUFBVTtBQUM5QyxRQUFNLG1CQUFtQixNQUFNLEtBQUssU0FBUyxpQkFBaUIsVUFBVSxDQUFDLEVBQUU7QUFBQSxJQUN6RSxDQUFDLE9BQU8sT0FBTztBQUFBLEVBQUE7QUFHakIsbUJBQWlCLFFBQVEsQ0FBQyxPQUFPLFlBQVksRUFBRSxDQUFDO0FBRWhELE1BQUksV0FBMEIsQ0FBQTtBQUN4QixRQUFBLFlBQVksYUFBYSxTQUFTLFdBQVc7QUFFbkQsYUFBVyxNQUFNLFdBQVc7QUFDMUIsZUFBVyxTQUFTO0FBQUEsTUFDbEIsTUFBTSxLQUFLLEdBQUcsUUFBUSxFQUFFO0FBQUEsUUFDdEIsQ0FBQ0EsUUFBZ0JBLFFBQU8sV0FBVyxDQUFDLFVBQVUsU0FBU0EsR0FBaUI7QUFBQSxNQUMxRTtBQUFBLElBQUE7QUFFRSxRQUFBLEdBQUcsUUFBUSxxQkFBcUIsR0FBRztBQUNyQyxzQkFBZ0IsRUFBRTtBQUFBLElBQ3BCO0FBQUEsRUFDRjtBQUVBLFdBQVMsUUFBUSxDQUFDLE9BQU8sWUFBWSxFQUFFLENBQUM7QUFDMUM7QUFFTyxTQUFTLHVCQUE2QjtBQUMzQyxRQUFNLGVBQWUsTUFBTTtBQUFBLElBQ3pCLFNBQVMsZ0JBQWdCLGlCQUFpQixxQkFBcUI7QUFBQSxFQUFBO0FBR2pFLE1BQUksYUFBYSxRQUFRO0FBQ1YsaUJBQUEsUUFBUSxDQUFDLE9BQU87QUFDM0IsWUFBTSxXQUFXLENBQUMsR0FBRyxhQUFhLGdCQUFnQixJQUFLO0FBQ3ZELFNBQUcsYUFBYSxrQkFBa0IsR0FBRyxRQUFRLEVBQUU7QUFFM0MsVUFBQSxZQUFZLFdBQVcsR0FBRztBQUM1Qix1QkFBZSxFQUFFO0FBQ1gsY0FBQSxLQUFLLEdBQUcsUUFBUSxFQUFFLFFBQVEsQ0FBQ0EsUUFBZ0IsZUFBZUEsR0FBaUIsQ0FBQztBQUFBLE1BQ3BGO0FBQUEsSUFBQSxDQUNEO0FBQ0Q7QUFBQSxFQUNGO0FBRUEsUUFBTSxLQUFLLFNBQVMsZ0JBQWdCLGlCQUFpQixrQkFBa0IsQ0FBQyxFQUFFO0FBQUEsSUFBUSxDQUFDLE9BQ2pGLGVBQWUsRUFBaUI7QUFBQSxFQUFBO0FBRXBDO0FDN0dPLFNBQVMsb0JBQW9CLElBQW1DO0FBQ3JFLFFBQU0sZUFBZSxPQUFPLGlCQUFpQixFQUFFLEdBQzdDLGlCQUFpQixhQUFhLFNBQzlCLG1CQUFtQixTQUFTLGFBQWEsV0FBVyxFQUFFLEVBQUU7QUFHdEQsTUFBQSxtQkFBbUIsVUFBVSxxQkFBcUIsS0FBSztBQUNsRCxXQUFBO0FBQUEsTUFDTCxjQUFjLEdBQUc7QUFBQSxNQUNqQixjQUFjLEdBQUc7QUFBQSxNQUNqQixjQUFjLEdBQUc7QUFBQSxNQUNqQixhQUFhLEdBQUc7QUFBQSxNQUNoQixhQUFhLEdBQUc7QUFBQSxNQUNoQixhQUFhLEdBQUc7QUFBQSxJQUFBO0FBQUEsRUFFcEI7QUFJQSxLQUFHLE1BQU0sV0FBVztBQUNwQixLQUFHLE1BQU0sYUFBYTtBQUN0QixLQUFHLE1BQU0sVUFBVTtBQUVuQixRQUFNLGVBQWUsR0FBRyxjQUN0QixlQUFlLEdBQUcsY0FDbEIsZUFBZSxHQUFHLGNBQ2xCLGNBQWMsR0FBRyxhQUNqQixjQUFjLEdBQUcsYUFDakIsY0FBYyxHQUFHO0FBR25CLEtBQUcsTUFBTSxVQUFVO0FBQ25CLEtBQUcsTUFBTSxXQUFXO0FBQ3BCLEtBQUcsTUFBTSxhQUFhO0FBRXRCLFNBQU8sRUFBRSxjQUFjLGNBQWMsY0FBYyxhQUFhLGFBQWE7QUFDL0U7QUFLZ0IsU0FBQSxpQkFBaUIsU0FBc0IsT0FBMkM7QUFDNUYsTUFBQSxDQUFDLFdBQVcsQ0FBQyxPQUFPO0FBQ2YsV0FBQTtBQUFBLEVBQ1Q7QUFFTSxRQUFBLE9BQU8sUUFBUTtBQUNyQixTQUNFLEtBQUssT0FBTyxNQUFNLFdBQ2xCLE1BQU0sV0FBVyxLQUFLLE1BQU0sS0FBSyxVQUNqQyxLQUFLLFFBQVEsTUFBTSxXQUNuQixNQUFNLFdBQVcsS0FBSyxPQUFPLEtBQUs7QUFFdEM7QUFpQk8sU0FBUyxtQkFDZCxTQUNBLFNBQ0EsV0FDQSxZQU15QjtBQUN6QixRQUFNLGlCQUFpQjtBQUNqQixRQUFBLGtCQUFpQix5Q0FBWSxtQkFBa0I7QUFDL0MsUUFBQSxvQkFBbUIseUNBQVkscUJBQW9CO0FBQ25ELFFBQUEsb0JBQW1CLHlDQUFZLHFCQUFvQjtBQUVuRCxRQUFBLGFBQWEsUUFBUTtBQUNyQixRQUFBLGFBQWEsb0JBQW9CLE9BQU87QUFFOUMsUUFBTSxjQUFjLFdBQVc7QUFDL0IsUUFBTSxhQUFhLFdBQVc7QUFFOUIsUUFBTSxzQkFDSixTQUFTLGdCQUFnQixlQUFlLGNBQWMsV0FBVztBQUNuRSxRQUFNLHNCQUFzQixhQUFhO0FBQ3pDLFFBQU0sc0JBQ0osU0FBUyxnQkFBZ0IsZ0JBQWdCLGFBQWEsV0FBVyxTQUFTO0FBRzVFLE1BQUksbUJBQW1CO0FBQ25CLE1BQUEsbUJBQW1CLGFBQWEsV0FBVyxTQUFTO0FBQ3BELE1BQUEsbUJBQW1CLFdBQVcsY0FBYyxXQUFXO0FBQzNELFFBQU0sWUFBMEIsRUFBRSxZQUFZLFNBQVMsVUFBVSxRQUFRO0FBR3JFLE1BQUEsbUJBQW1CLEdBQUcsc0JBQXNCLGNBQWM7QUFHOUQsT0FDRSx5Q0FBWSxhQUNaLGNBQWMsaUJBQWlCLFdBQVcsUUFBUSxJQUFJLFdBQVcsY0FBYyxLQUMvRSxzQkFBc0IsaUJBQWlCLG1CQUFtQixHQUMxRDtBQUNBLHdCQUFvQixvQkFBb0I7QUFDeEMsY0FBVSxhQUFhO0FBQUEsRUFDekI7QUFHSSxNQUFBLHNCQUFzQixvQkFBb0IsY0FBYyxrQkFBa0I7QUFDNUUsdUJBQW1CLG1CQUFtQjtBQUN0QyxjQUFVLGFBQWE7QUFBQSxFQUN6QjtBQUdBLE1BQ0Usb0JBQ0EsVUFBVSxlQUFlLFlBQ3pCLFdBQVcsUUFBUSxJQUFJLGtCQUN2QjtBQUNBLHdCQUFvQixvQkFBb0IsVUFBVSxlQUFlLFVBQVUsS0FBSztBQUFBLEVBQ2xGO0FBSUcsTUFBQSxjQUFjLG9CQUFvQixzQkFBc0Isb0JBQ3pELFNBQVMsZ0JBQWdCLGNBQWMsV0FBVyxhQUNsRDtBQUNBLHVCQUFtQixTQUFTLGdCQUFnQixjQUFjLElBQUksV0FBVyxjQUFjO0FBQUEsRUFDekY7QUFHQSxNQUNHLHNCQUFzQixpQkFBaUIsV0FBVyxnQkFDakQsc0JBQXNCLGtCQUNuQixtQkFBbUIsV0FBVyxlQUFlLFdBQVcsaUJBQzVELHNCQUFzQix1QkFDckIsc0JBQXNCLGlCQUFpQixXQUFXLGdCQUNsRCxDQUFDLGtCQUNIO0FBRUUsdUJBQUEsc0JBQXNCLFdBQVcsZUFDN0IsbUJBQW1CLFdBQVcsU0FBUyxzQkFBc0IsaUJBQzdELGFBQWEsV0FBVyxlQUFlO0FBRTFCLHVCQUFBLEdBQUcsc0JBQXNCLGNBQWM7QUFDMUQsY0FBVSxXQUFXO0FBQUEsRUFDdkI7QUFFTSxRQUFBLGdCQUFnQixVQUFVO0FBSTVCLE1BQUEsY0FBYyxPQUFPLEdBQUc7QUFDMUIsd0JBQW9CLGNBQWM7QUFBQSxFQUNwQztBQU9JLE1BQUEsY0FBYyxNQUFNLEdBQUc7QUFDekIsd0JBQW9CLGNBQWM7QUFBQSxFQUNwQztBQUVPLFNBQUE7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLFdBQVc7QUFBQSxJQUNYO0FBQUEsRUFBQTtBQUVKO0FDL0xPLFNBQVMsbUJBQ2QsUUFDQSxlQUNBLGlCQUNBLFdBQ0EsU0FDTTtBQUNGLE1BQUEsQ0FBQyxVQUFVLENBQUMsZUFBZTtBQUM3QjtBQUFBLEVBQ0Y7QUFHQSxVQUFRLE1BQU0sWUFBWSw2QkFBNkIsR0FBRyxjQUFjLFdBQVcsSUFBSTtBQUd2RixVQUFRLE1BQU0sWUFBWSxxQ0FBcUMsR0FBRyxjQUFjLFlBQVksSUFBSTtBQUdoRyxRQUFNLGdCQUFnQixtQkFBbUIsaUJBQWlCLGVBQWUsU0FBUztBQUVsRixVQUFRLE1BQU0sWUFBWSxrQ0FBa0MsR0FBRyxjQUFjLElBQUksSUFBSTtBQUNyRixVQUFRLE1BQU0sWUFBWSxrQ0FBa0MsR0FBRyxjQUFjLEdBQUcsSUFBSTtBQUNwRixVQUFRLE1BQU0sWUFBWSxrQ0FBa0MsY0FBYyxTQUFTO0FBQ25GLFVBQVEsYUFBYSwrQkFBK0IsY0FBYyxVQUFVLFFBQVE7QUFDcEYsZ0JBQWMsYUFBYSwrQkFBK0IsY0FBYyxVQUFVLFFBQVE7QUFDNUY7QUMvQk8sU0FBUyxnQ0FDZCxTQUNBLFdBQ0EsV0FDQSxPQUNNO0FBQ04sTUFBSSxDQUFDLFNBQVM7QUFDWjtBQUFBLEVBQ0Y7QUFFUSxVQUFBLGFBQWEsaUJBQWlCLFNBQVM7QUFDdkMsVUFBQSxhQUFhLGlCQUFpQixTQUFTO0FBQy9DLFVBQVEsYUFBYSxpQkFBaUIsR0FBRyxVQUFVLGFBQWEsVUFBVSxRQUFRLEVBQUU7QUFDdEY7QUFLTyxTQUFTLG1DQUFtQyxTQUErQztBQUNoRyxNQUFJLENBQUMsU0FBUztBQUNaO0FBQUEsRUFDRjtBQUVBLFVBQVEsZ0JBQWdCLGVBQWU7QUFDdkMsVUFBUSxnQkFBZ0IsZUFBZTtBQUN2QyxVQUFRLGdCQUFnQixlQUFlO0FBQ3pDO0FBS08sU0FBUywwQkFDZCxTQUNBLFdBQ0EsVUFDQSxXQUErQixXQUN6QjtBQUNOLE1BQUksQ0FBQyxTQUFTO0FBQ1o7QUFBQSxFQUNGO0FBRVEsVUFBQSxhQUFhLGdCQUFnQixLQUFLO0FBQ2xDLFVBQUEsYUFBYSxRQUFRLFVBQVU7QUFDL0IsVUFBQSxhQUFhLHFCQUFxQixNQUFNO0FBQ3hDLFVBQUEsYUFBYSxpQkFBaUIsUUFBUTtBQUN0QyxVQUFBLGFBQWEsaUJBQWlCLFNBQVM7QUFDdkMsVUFBQSxhQUFhLGFBQWEsU0FBUztBQUMzQyxVQUFRLGFBQWEsaUJBQWlCLEdBQUcsUUFBUSxFQUFFO0FBQ3JEO0FBS08sU0FBUyw2QkFBNkIsU0FBNkI7QUFDeEUsTUFBSSxDQUFDLFNBQVM7QUFDWjtBQUFBLEVBQ0Y7QUFFQSxVQUFRLGdCQUFnQixjQUFjO0FBQ3RDLFVBQVEsZ0JBQWdCLE1BQU07QUFDOUIsVUFBUSxnQkFBZ0IsbUJBQW1CO0FBQzNDLFVBQVEsZ0JBQWdCLGVBQWU7QUFDdkMsVUFBUSxnQkFBZ0IsZUFBZTtBQUN2QyxVQUFRLGdCQUFnQixXQUFXO0FBQ25DLFVBQVEsZ0JBQWdCLGVBQWU7QUFDekM7In0=
@@ -100,33 +100,34 @@ sbb-icon {
100
100
  --sbb-button-color-disabled-text: var(--sbb-color-smoke);
101
101
  }
102
102
 
103
- :host(:is([disabled], [data-disabled])) .sbb-datepicker-next-day {
103
+ :host(:is([disabled], [data-disabled], [data-group-disabled])) .sbb-datepicker-next-day {
104
104
  color: var(--sbb-button-color-disabled-text);
105
105
  cursor: default;
106
106
  pointer-events: none;
107
107
  }
108
- :host(:is([disabled], [data-disabled])) .sbb-datepicker-next-day::before {
108
+ :host(:is([disabled], [data-disabled], [data-group-disabled])) .sbb-datepicker-next-day::before {
109
109
  background-color: var(--sbb-button-color-disabled-background);
110
110
  border: var(--sbb-button-border-disabled-width) var(--sbb-button-border-disabled-style) var(--sbb-button-color-disabled-border);
111
111
  }
112
112
 
113
- :host(:focus-visible:not([data-focus-origin=mouse], [data-focus-origin=touch])) .sbb-datepicker-next-day::before {
113
+ :host(:is([data-focus-visible],
114
+ :focus-visible:not([data-focus-origin=mouse], [data-focus-origin=touch]))) .sbb-datepicker-next-day::before {
114
115
  outline-offset: var(--sbb-focus-outline-offset);
115
116
  outline: var(--sbb-focus-outline-color) solid var(--sbb-focus-outline-width);
116
117
  }
117
118
 
118
119
  @media (any-hover: hover) {
119
- :host(:not([disabled], [data-disabled], :active, [data-active]):hover) {
120
+ :host(:not([disabled], [data-disabled], [data-group-disabled], :active, [data-active]):hover) {
120
121
  --sbb-button-translate-y-content-hover: -0.0625rem;
121
122
  }
122
123
  }
123
124
  @media (any-hover: hover) {
124
- :host(:not([disabled], [data-disabled], :active, [data-active]):hover) .sbb-datepicker-next-day::before {
125
+ :host(:not([disabled], [data-disabled], [data-group-disabled], :active, [data-active]):hover) .sbb-datepicker-next-day::before {
125
126
  background-color: var(--sbb-button-color-hover-background);
126
127
  }
127
128
  }
128
129
 
129
- :host(:not([disabled], [data-disabled]):is(:active, [data-active])) .sbb-datepicker-next-day::before {
130
+ :host(:not([disabled], [data-disabled], [data-group-disabled]):is(:active, [data-active])) .sbb-datepicker-next-day::before {
130
131
  background-color: var(--sbb-button-color-active-background);
131
132
  }
132
133
 
@@ -169,4 +170,4 @@ SbbDatepickerNextDayElement = __decorateClass([
169
170
  export {
170
171
  SbbDatepickerNextDayElement
171
172
  };
172
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1uZXh0LWRheS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1uZXh0LWRheS9kYXRlcGlja2VyLW5leHQtZGF5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaTE4bk5leHREYXksIGkxOG5TZWxlY3ROZXh0RGF5IH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB7IFNiYkRhdGVwaWNrZXJCdXR0b24gfSBmcm9tICcuLi9jb21tb24uanMnO1xuaW1wb3J0IHsgZmluZE5leHRBdmFpbGFibGVEYXRlLCB0eXBlIFNiYklucHV0VXBkYXRlRXZlbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLmpzJztcblxuaW1wb3J0ICcuLi8uLi9pY29uLmpzJztcbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXItbmV4dC1kYXkuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgYHNiYi1kYXRlcGlja2VyYCwgaXQgY2FuIGJlIHVzZWQgdG8gbW92ZSB0aGUgZGF0ZSBhaGVhZC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kYXRlcGlja2VyLW5leHQtZGF5JylcbkBob3N0QXR0cmlidXRlcyh7XG4gIHNsb3Q6ICdzdWZmaXgnLFxufSlcbmV4cG9ydCBjbGFzcyBTYmJEYXRlcGlja2VyTmV4dERheUVsZW1lbnQ8VCA9IERhdGU+IGV4dGVuZHMgU2JiRGF0ZXBpY2tlckJ1dHRvbjxUPiB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIHByb3RlY3RlZCBpY29uTmFtZTogc3RyaW5nID0gJ2NoZXZyb24tc21hbGwtcmlnaHQtc21hbGwnO1xuICBwcm90ZWN0ZWQgaTE4bk9mZkJvdW5kYXJ5RGF5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0gaTE4bk5leHREYXk7XG4gIHByb3RlY3RlZCBpMThuU2VsZWN0T2ZmQm91bmRhcnlEYXkgPSBpMThuU2VsZWN0TmV4dERheTtcbiAgcHJvdGVjdGVkIGZpbmRBdmFpbGFibGVEYXRlID0gZmluZE5leHRBdmFpbGFibGVEYXRlO1xuXG4gIHByb3RlY3RlZCBvbklucHV0VXBkYXRlZChldmVudDogQ3VzdG9tRXZlbnQ8U2JiSW5wdXRVcGRhdGVFdmVudD4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ib3VuZGFyeSAhPT0gZXZlbnQuZGV0YWlsLm1heCkge1xuICAgICAgdGhpcy5ib3VuZGFyeSA9IGV2ZW50LmRldGFpbC5tYXghO1xuICAgICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKHRoaXMuZGF0ZVBpY2tlckVsZW1lbnQhKTtcbiAgICB9XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1kYXRlcGlja2VyLW5leHQtZGF5JzogU2JiRGF0ZXBpY2tlck5leHREYXlFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQmEsSUFBQSw4QkFBTixjQUFvRCxvQkFBdUI7QUFBQSxFQUEzRSxjQUFBO0FBQUEsVUFBQSxHQUFBLFNBQUE7QUFHTCxTQUFVLFdBQW1CO0FBQzdCLFNBQVUscUJBQTZDO0FBQ3ZELFNBQVUsMkJBQTJCO0FBQ3JDLFNBQVUsb0JBQW9CO0FBQUEsRUFBQTtBQUFBLEVBRXBCLGVBQWUsT0FBK0M7QUFDdEUsUUFBSSxLQUFLLGFBQWEsTUFBTSxPQUFPLEtBQUs7QUFDakMsV0FBQSxXQUFXLE1BQU0sT0FBTztBQUN4QixXQUFBLGlCQUFpQixLQUFLLGlCQUFrQjtBQUFBLElBQy9DO0FBQUEsRUFDRjtBQUNGO0FBZGEsNEJBQ1ksU0FBeUI7QUFEckMsOEJBQU4sZ0JBQUE7QUFBQSxFQUpOLGNBQWMseUJBQXlCO0FBQUEsRUFDdkMsZUFBZTtBQUFBLElBQ2QsTUFBTTtBQUFBLEVBQUEsQ0FDUDtBQUFBLEdBQ1ksMkJBQUE7In0=
173
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1uZXh0LWRheS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1uZXh0LWRheS9kYXRlcGlja2VyLW5leHQtZGF5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaTE4bk5leHREYXksIGkxOG5TZWxlY3ROZXh0RGF5IH0gZnJvbSAnLi4vLi4vY29yZS9pMThuLmpzJztcbmltcG9ydCB7IFNiYkRhdGVwaWNrZXJCdXR0b24gfSBmcm9tICcuLi9jb21tb24uanMnO1xuaW1wb3J0IHsgZmluZE5leHRBdmFpbGFibGVEYXRlLCB0eXBlIFNiYklucHV0VXBkYXRlRXZlbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLmpzJztcblxuaW1wb3J0ICcuLi8uLi9pY29uLmpzJztcbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXItbmV4dC1kYXkuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgYHNiYi1kYXRlcGlja2VyYCwgaXQgY2FuIGJlIHVzZWQgdG8gbW92ZSB0aGUgZGF0ZSBhaGVhZC5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kYXRlcGlja2VyLW5leHQtZGF5JylcbkBob3N0QXR0cmlidXRlcyh7XG4gIHNsb3Q6ICdzdWZmaXgnLFxufSlcbmV4cG9ydCBjbGFzcyBTYmJEYXRlcGlja2VyTmV4dERheUVsZW1lbnQ8VCA9IERhdGU+IGV4dGVuZHMgU2JiRGF0ZXBpY2tlckJ1dHRvbjxUPiB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIHByb3RlY3RlZCBpY29uTmFtZTogc3RyaW5nID0gJ2NoZXZyb24tc21hbGwtcmlnaHQtc21hbGwnO1xuICBwcm90ZWN0ZWQgaTE4bk9mZkJvdW5kYXJ5RGF5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0gaTE4bk5leHREYXk7XG4gIHByb3RlY3RlZCBpMThuU2VsZWN0T2ZmQm91bmRhcnlEYXkgPSBpMThuU2VsZWN0TmV4dERheTtcbiAgcHJvdGVjdGVkIGZpbmRBdmFpbGFibGVEYXRlID0gZmluZE5leHRBdmFpbGFibGVEYXRlO1xuXG4gIHByb3RlY3RlZCBvbklucHV0VXBkYXRlZChldmVudDogQ3VzdG9tRXZlbnQ8U2JiSW5wdXRVcGRhdGVFdmVudD4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ib3VuZGFyeSAhPT0gZXZlbnQuZGV0YWlsLm1heCkge1xuICAgICAgdGhpcy5ib3VuZGFyeSA9IGV2ZW50LmRldGFpbC5tYXghO1xuICAgICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKHRoaXMuZGF0ZVBpY2tlckVsZW1lbnQhKTtcbiAgICB9XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1kYXRlcGlja2VyLW5leHQtZGF5JzogU2JiRGF0ZXBpY2tlck5leHREYXlFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JhLElBQUEsOEJBQU4sY0FBb0Qsb0JBQXVCO0FBQUEsRUFBM0UsY0FBQTtBQUFBLFVBQUEsR0FBQSxTQUFBO0FBR0wsU0FBVSxXQUFtQjtBQUM3QixTQUFVLHFCQUE2QztBQUN2RCxTQUFVLDJCQUEyQjtBQUNyQyxTQUFVLG9CQUFvQjtBQUFBLEVBQUE7QUFBQSxFQUVwQixlQUFlLE9BQStDO0FBQ3RFLFFBQUksS0FBSyxhQUFhLE1BQU0sT0FBTyxLQUFLO0FBQ2pDLFdBQUEsV0FBVyxNQUFNLE9BQU87QUFDeEIsV0FBQSxpQkFBaUIsS0FBSyxpQkFBa0I7QUFBQSxJQUMvQztBQUFBLEVBQ0Y7QUFDRjtBQWRhLDRCQUNZLFNBQXlCO0FBRHJDLDhCQUFOLGdCQUFBO0FBQUEsRUFKTixjQUFjLHlCQUF5QjtBQUFBLEVBQ3ZDLGVBQWU7QUFBQSxJQUNkLE1BQU07QUFBQSxFQUFBLENBQ1A7QUFBQSxHQUNZLDJCQUFBOyJ9
@@ -100,33 +100,34 @@ sbb-icon {
100
100
  --sbb-button-color-disabled-text: var(--sbb-color-smoke);
101
101
  }
102
102
 
103
- :host(:is([disabled], [data-disabled])) .sbb-datepicker-previous-day {
103
+ :host(:is([disabled], [data-disabled], [data-group-disabled])) .sbb-datepicker-previous-day {
104
104
  color: var(--sbb-button-color-disabled-text);
105
105
  cursor: default;
106
106
  pointer-events: none;
107
107
  }
108
- :host(:is([disabled], [data-disabled])) .sbb-datepicker-previous-day::before {
108
+ :host(:is([disabled], [data-disabled], [data-group-disabled])) .sbb-datepicker-previous-day::before {
109
109
  background-color: var(--sbb-button-color-disabled-background);
110
110
  border: var(--sbb-button-border-disabled-width) var(--sbb-button-border-disabled-style) var(--sbb-button-color-disabled-border);
111
111
  }
112
112
 
113
- :host(:focus-visible:not([data-focus-origin=mouse], [data-focus-origin=touch])) .sbb-datepicker-previous-day::before {
113
+ :host(:is([data-focus-visible],
114
+ :focus-visible:not([data-focus-origin=mouse], [data-focus-origin=touch]))) .sbb-datepicker-previous-day::before {
114
115
  outline-offset: var(--sbb-focus-outline-offset);
115
116
  outline: var(--sbb-focus-outline-color) solid var(--sbb-focus-outline-width);
116
117
  }
117
118
 
118
119
  @media (any-hover: hover) {
119
- :host(:not([disabled], [data-disabled], :active, [data-active]):hover) {
120
+ :host(:not([disabled], [data-disabled], [data-group-disabled], :active, [data-active]):hover) {
120
121
  --sbb-button-translate-y-content-hover: -0.0625rem;
121
122
  }
122
123
  }
123
124
  @media (any-hover: hover) {
124
- :host(:not([disabled], [data-disabled], :active, [data-active]):hover) .sbb-datepicker-previous-day::before {
125
+ :host(:not([disabled], [data-disabled], [data-group-disabled], :active, [data-active]):hover) .sbb-datepicker-previous-day::before {
125
126
  background-color: var(--sbb-button-color-hover-background);
126
127
  }
127
128
  }
128
129
 
129
- :host(:not([disabled], [data-disabled]):is(:active, [data-active])) .sbb-datepicker-previous-day::before {
130
+ :host(:not([disabled], [data-disabled], [data-group-disabled]):is(:active, [data-active])) .sbb-datepicker-previous-day::before {
130
131
  background-color: var(--sbb-button-color-active-background);
131
132
  }
132
133
 
@@ -169,4 +170,4 @@ SbbDatepickerPreviousDayElement = __decorateClass([
169
170
  export {
170
171
  SbbDatepickerPreviousDayElement
171
172
  };
172
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1wcmV2aW91cy1kYXkuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXItcHJldmlvdXMtZGF5L2RhdGVwaWNrZXItcHJldmlvdXMtZGF5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaTE4blByZXZpb3VzRGF5LCBpMThuU2VsZWN0UHJldmlvdXNEYXkgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiRGF0ZXBpY2tlckJ1dHRvbiB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5pbXBvcnQgeyBmaW5kUHJldmlvdXNBdmFpbGFibGVEYXRlLCB0eXBlIFNiYklucHV0VXBkYXRlRXZlbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLmpzJztcbmltcG9ydCAnLi4vLi4vaWNvbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXItcHJldmlvdXMtZGF5LnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogQ29tYmluZWQgd2l0aCBhIGBzYmItZGF0ZXBpY2tlcmAsIGl0IGNhbiBiZSB1c2VkIHRvIG1vdmUgdGhlIGRhdGUgYmFjay5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kYXRlcGlja2VyLXByZXZpb3VzLWRheScpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICBzbG90OiAncHJlZml4Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2JiRGF0ZXBpY2tlclByZXZpb3VzRGF5RWxlbWVudDxUID0gRGF0ZT4gZXh0ZW5kcyBTYmJEYXRlcGlja2VyQnV0dG9uPFQ+IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgcHJvdGVjdGVkIGljb25OYW1lOiBzdHJpbmcgPSAnY2hldnJvbi1zbWFsbC1sZWZ0LXNtYWxsJztcbiAgcHJvdGVjdGVkIGkxOG5PZmZCb3VuZGFyeURheTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IGkxOG5QcmV2aW91c0RheTtcbiAgcHJvdGVjdGVkIGkxOG5TZWxlY3RPZmZCb3VuZGFyeURheSA9IGkxOG5TZWxlY3RQcmV2aW91c0RheTtcbiAgcHJvdGVjdGVkIGZpbmRBdmFpbGFibGVEYXRlID0gZmluZFByZXZpb3VzQXZhaWxhYmxlRGF0ZTtcblxuICBwcm90ZWN0ZWQgb25JbnB1dFVwZGF0ZWQoZXZlbnQ6IEN1c3RvbUV2ZW50PFNiYklucHV0VXBkYXRlRXZlbnQ+KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYm91bmRhcnkgIT09IGV2ZW50LmRldGFpbC5taW4pIHtcbiAgICAgIHRoaXMuYm91bmRhcnkgPSBldmVudC5kZXRhaWwubWluITtcbiAgICAgIHRoaXMuc2V0RGlzYWJsZWRTdGF0ZSh0aGlzLmRhdGVQaWNrZXJFbGVtZW50ISk7XG4gICAgfVxuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZGF0ZXBpY2tlci1wcmV2aW91cy1kYXknOiBTYmJEYXRlcGlja2VyUHJldmlvdXNEYXlFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQmEsSUFBQSxrQ0FBTixjQUF3RCxvQkFBdUI7QUFBQSxFQUEvRSxjQUFBO0FBQUEsVUFBQSxHQUFBLFNBQUE7QUFHTCxTQUFVLFdBQW1CO0FBQzdCLFNBQVUscUJBQTZDO0FBQ3ZELFNBQVUsMkJBQTJCO0FBQ3JDLFNBQVUsb0JBQW9CO0FBQUEsRUFBQTtBQUFBLEVBRXBCLGVBQWUsT0FBK0M7QUFDdEUsUUFBSSxLQUFLLGFBQWEsTUFBTSxPQUFPLEtBQUs7QUFDakMsV0FBQSxXQUFXLE1BQU0sT0FBTztBQUN4QixXQUFBLGlCQUFpQixLQUFLLGlCQUFrQjtBQUFBLElBQy9DO0FBQUEsRUFDRjtBQUNGO0FBZGEsZ0NBQ1ksU0FBeUI7QUFEckMsa0NBQU4sZ0JBQUE7QUFBQSxFQUpOLGNBQWMsNkJBQTZCO0FBQUEsRUFDM0MsZUFBZTtBQUFBLElBQ2QsTUFBTTtBQUFBLEVBQUEsQ0FDUDtBQUFBLEdBQ1ksK0JBQUE7In0=
173
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1wcmV2aW91cy1kYXkuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXItcHJldmlvdXMtZGF5L2RhdGVwaWNrZXItcHJldmlvdXMtZGF5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgaTE4blByZXZpb3VzRGF5LCBpMThuU2VsZWN0UHJldmlvdXNEYXkgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiRGF0ZXBpY2tlckJ1dHRvbiB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5pbXBvcnQgeyBmaW5kUHJldmlvdXNBdmFpbGFibGVEYXRlLCB0eXBlIFNiYklucHV0VXBkYXRlRXZlbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLmpzJztcbmltcG9ydCAnLi4vLi4vaWNvbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2RhdGVwaWNrZXItcHJldmlvdXMtZGF5LnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogQ29tYmluZWQgd2l0aCBhIGBzYmItZGF0ZXBpY2tlcmAsIGl0IGNhbiBiZSB1c2VkIHRvIG1vdmUgdGhlIGRhdGUgYmFjay5cbiAqL1xuQGN1c3RvbUVsZW1lbnQoJ3NiYi1kYXRlcGlja2VyLXByZXZpb3VzLWRheScpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICBzbG90OiAncHJlZml4Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2JiRGF0ZXBpY2tlclByZXZpb3VzRGF5RWxlbWVudDxUID0gRGF0ZT4gZXh0ZW5kcyBTYmJEYXRlcGlja2VyQnV0dG9uPFQ+IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgcHJvdGVjdGVkIGljb25OYW1lOiBzdHJpbmcgPSAnY2hldnJvbi1zbWFsbC1sZWZ0LXNtYWxsJztcbiAgcHJvdGVjdGVkIGkxOG5PZmZCb3VuZGFyeURheTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IGkxOG5QcmV2aW91c0RheTtcbiAgcHJvdGVjdGVkIGkxOG5TZWxlY3RPZmZCb3VuZGFyeURheSA9IGkxOG5TZWxlY3RQcmV2aW91c0RheTtcbiAgcHJvdGVjdGVkIGZpbmRBdmFpbGFibGVEYXRlID0gZmluZFByZXZpb3VzQXZhaWxhYmxlRGF0ZTtcblxuICBwcm90ZWN0ZWQgb25JbnB1dFVwZGF0ZWQoZXZlbnQ6IEN1c3RvbUV2ZW50PFNiYklucHV0VXBkYXRlRXZlbnQ+KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYm91bmRhcnkgIT09IGV2ZW50LmRldGFpbC5taW4pIHtcbiAgICAgIHRoaXMuYm91bmRhcnkgPSBldmVudC5kZXRhaWwubWluITtcbiAgICAgIHRoaXMuc2V0RGlzYWJsZWRTdGF0ZSh0aGlzLmRhdGVQaWNrZXJFbGVtZW50ISk7XG4gICAgfVxuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZGF0ZXBpY2tlci1wcmV2aW91cy1kYXknOiBTYmJEYXRlcGlja2VyUHJldmlvdXNEYXlFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JhLElBQUEsa0NBQU4sY0FBd0Qsb0JBQXVCO0FBQUEsRUFBL0UsY0FBQTtBQUFBLFVBQUEsR0FBQSxTQUFBO0FBR0wsU0FBVSxXQUFtQjtBQUM3QixTQUFVLHFCQUE2QztBQUN2RCxTQUFVLDJCQUEyQjtBQUNyQyxTQUFVLG9CQUFvQjtBQUFBLEVBQUE7QUFBQSxFQUVwQixlQUFlLE9BQStDO0FBQ3RFLFFBQUksS0FBSyxhQUFhLE1BQU0sT0FBTyxLQUFLO0FBQ2pDLFdBQUEsV0FBVyxNQUFNLE9BQU87QUFDeEIsV0FBQSxpQkFBaUIsS0FBSyxpQkFBa0I7QUFBQSxJQUMvQztBQUFBLEVBQ0Y7QUFDRjtBQWRhLGdDQUNZLFNBQXlCO0FBRHJDLGtDQUFOLGdCQUFBO0FBQUEsRUFKTixjQUFjLDZCQUE2QjtBQUFBLEVBQzNDLGVBQWU7QUFBQSxJQUNkLE1BQU07QUFBQSxFQUFBLENBQ1A7QUFBQSxHQUNZLCtCQUFBOyJ9
@@ -0,0 +1,32 @@
1
+ import { CSSResultGroup, TemplateResult, LitElement } from 'lit';
2
+ import { SbbFlipCardDetailsElement } from '../flip-card-details.js';
3
+ import { SbbFlipCardSummaryElement } from '../flip-card-summary.js';
4
+
5
+ declare const SbbFlipCardElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbHydrationMixinType> & typeof LitElement;
6
+ /**
7
+ * Displays an informative card that reveals more informations upon being clicked.
8
+ *
9
+ * @slot summary - Use this slot to provide a sbb-flip-card-summary component.
10
+ * @slot details - Use this slot to provide a sbb-flip-card-details component.
11
+ *
12
+ */
13
+ export declare class SbbFlipCardElement extends SbbFlipCardElement_base {
14
+ static styles: CSSResultGroup;
15
+ /** Returns the slotted sbb-flip-card-summary. */
16
+ get summary(): SbbFlipCardSummaryElement;
17
+ /** Returns the slotted sbb-flip-card-details. */
18
+ get details(): SbbFlipCardDetailsElement;
19
+ /** Whether the card is flipped or not. */
20
+ private _flipped;
21
+ private _language;
22
+ /** Toggles the state of the sbb-flip-card. */
23
+ toggle(): void;
24
+ protected render(): TemplateResult;
25
+ }
26
+ declare global {
27
+ interface HTMLElementTagNameMap {
28
+ 'sbb-flip-card': SbbFlipCardElement;
29
+ }
30
+ }
31
+ export {};
32
+ //# sourceMappingURL=flip-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flip-card.d.ts","sourceRoot":"","sources":["../../../../../src/elements/flip-card/flip-card/flip-card.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1D,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAMvC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAIzE,OAAO,kCAAkC,CAAC;;AAE1C;;;;;;GAMG;AACH,qBACa,kBAAmB,SAAQ,uBAA6B;IACnE,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,iDAAiD;IACjD,IAAW,OAAO,IAAI,yBAAyB,CAE9C;IAED,iDAAiD;IACjD,IAAW,OAAO,IAAI,yBAAyB,CAE9C;IAED,0CAA0C;IACjC,OAAO,CAAC,QAAQ,CAAS;IAElC,OAAO,CAAC,SAAS,CAAmC;IAEpD,8CAA8C;IACvC,MAAM,IAAI,IAAI;cAOF,MAAM,IAAI,cAAc;CAqB5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,eAAe,EAAE,kBAAkB,CAAC;KACrC;CACF"}
@@ -0,0 +1,2 @@
1
+ export * from './flip-card.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/flip-card/flip-card/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { CSSResultGroup, PropertyValues, TemplateResult, LitElement } from 'lit';
2
+
3
+ /**
4
+ * Combined with a `sbb-flip-card`, it displays its content when the card is flipped.
5
+ *
6
+ * @slot - Use the unnamed slot to provide any kind of content.
7
+ */
8
+ export declare class SbbFlipCardDetailsElement extends LitElement {
9
+ static styles: CSSResultGroup;
10
+ private _flipCardMutationObserver;
11
+ private _checkForSlottedActions;
12
+ connectedCallback(): void;
13
+ protected firstUpdated(changedProperties: PropertyValues): void;
14
+ disconnectedCallback(): void;
15
+ protected render(): TemplateResult;
16
+ }
17
+ declare global {
18
+ interface HTMLElementTagNameMap {
19
+ 'sbb-flip-card-details': SbbFlipCardDetailsElement;
20
+ }
21
+ }
22
+ //# sourceMappingURL=flip-card-details.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flip-card-details.d.ts","sourceRoot":"","sources":["../../../../../src/elements/flip-card/flip-card-details/flip-card-details.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AASvC;;;;GAIG;AACH,qBAIa,yBAA0B,SAAQ,UAAU;IACvD,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,OAAO,CAAC,yBAAyB,CAE/B;IAEF,OAAO,CAAC,uBAAuB;IAQf,iBAAiB,IAAI,IAAI;cAStB,YAAY,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAKxD,oBAAoB,IAAI,IAAI;cAKzB,MAAM,IAAI,cAAc;CAO5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,uBAAuB,EAAE,yBAAyB,CAAC;KACpD;CACF"}
@@ -0,0 +1,2 @@
1
+ export * from './flip-card-details.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/flip-card/flip-card-details/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './flip-card-details/flip-card-details.js';
2
+ //# sourceMappingURL=flip-card-details.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flip-card-details.d.ts","sourceRoot":"","sources":["../../../../src/elements/flip-card/flip-card-details.ts"],"names":[],"mappings":"AAAA,cAAc,0CAA0C,CAAC"}
@@ -0,0 +1,105 @@
1
+ import { css, LitElement, html } from "lit";
2
+ import { customElement } from "lit/decorators.js";
3
+ import { IS_FOCUSABLE_QUERY } from "../core/a11y.js";
4
+ import { hostAttributes } from "../core/decorators.js";
5
+ import { AgnosticMutationObserver } from "../core/observers.js";
6
+ const style = css`/**
7
+ * Better font rendering (on OS X)
8
+ * http://maximilianhoffmann.com/posts/better-font-rendering-on-osx
9
+ *
10
+ * Usage:
11
+ *
12
+ * .var_dark_on_light {
13
+ * @include font-smoothing;
14
+ * }
15
+ * .var_light_on_dark {
16
+ * @include font-smoothing-reset;
17
+ * }
18
+ */
19
+ /** This mixin can be used to avoid spacing problems by inserting an invisible space as pseudo element. */
20
+ /*
21
+ * SBB table mixin
22
+ * Notes:
23
+ * We cannot use \`border-collapse\` because it is not compatible with the \`border-radius\` property.
24
+ * Therefore, we have to build the grid avoiding double borders.
25
+ */
26
+ *,
27
+ ::before,
28
+ ::after {
29
+ box-sizing: border-box;
30
+ }
31
+
32
+ :host {
33
+ --sbb-flip-card-details-opacity: 0;
34
+ --sbb-flip-card-details-translate-y: var(--sbb-spacing-fixed-2x);
35
+ display: contents;
36
+ }
37
+
38
+ .sbb-flip-card-details {
39
+ pointer-events: none;
40
+ color: var(--sbb-color-milk);
41
+ opacity: var(--sbb-flip-card-details-opacity);
42
+ padding: var(--sbb-spacing-responsive-s);
43
+ padding-block-end: calc(var(--sbb-spacing-responsive-s) + var(--sbb-spacing-responsive-xs) + var(--sbb-size-element-m));
44
+ transform: translateY(var(--sbb-flip-card-details-translate-y));
45
+ transition: var(--sbb-flip-card-details-transition-duration) ease-out;
46
+ transition-delay: var(--sbb-flip-card-details-transition-delay);
47
+ max-height: var(--sbb-flip-card-details-min-height);
48
+ }`;
49
+ var __defProp = Object.defineProperty;
50
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
51
+ var __decorateClass = (decorators, target, key, kind) => {
52
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
53
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
54
+ if (decorator = decorators[i])
55
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
56
+ if (kind && result) __defProp(target, key, result);
57
+ return result;
58
+ };
59
+ let SbbFlipCardDetailsElement = class extends LitElement {
60
+ constructor() {
61
+ super(...arguments);
62
+ this._flipCardMutationObserver = new AgnosticMutationObserver(
63
+ () => this._checkForSlottedActions()
64
+ );
65
+ }
66
+ _checkForSlottedActions() {
67
+ var _a;
68
+ const cardFocusableAttributeName = "data-card-focusable";
69
+ Array.from(((_a = this.querySelectorAll) == null ? void 0 : _a.call(this, IS_FOCUSABLE_QUERY)) ?? []).filter((el) => !el.hasAttribute(cardFocusableAttributeName)).forEach((el) => el.setAttribute(cardFocusableAttributeName, ""));
70
+ }
71
+ connectedCallback() {
72
+ super.connectedCallback();
73
+ this._checkForSlottedActions();
74
+ this._flipCardMutationObserver.observe(this, {
75
+ childList: true,
76
+ subtree: true
77
+ });
78
+ }
79
+ firstUpdated(changedProperties) {
80
+ super.firstUpdated(changedProperties);
81
+ this._checkForSlottedActions();
82
+ }
83
+ disconnectedCallback() {
84
+ super.disconnectedCallback();
85
+ this._flipCardMutationObserver.disconnect();
86
+ }
87
+ render() {
88
+ return html`
89
+ <div class="sbb-flip-card-details">
90
+ <slot></slot>
91
+ </div>
92
+ `;
93
+ }
94
+ };
95
+ SbbFlipCardDetailsElement.styles = style;
96
+ SbbFlipCardDetailsElement = __decorateClass([
97
+ customElement("sbb-flip-card-details"),
98
+ hostAttributes({
99
+ slot: "details"
100
+ })
101
+ ], SbbFlipCardDetailsElement);
102
+ export {
103
+ SbbFlipCardDetailsElement
104
+ };
105
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxpcC1jYXJkLWRldGFpbHMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9mbGlwLWNhcmQvZmxpcC1jYXJkLWRldGFpbHMvZmxpcC1jYXJkLWRldGFpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgSVNfRk9DVVNBQkxFX1FVRVJZIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IEFnbm9zdGljTXV0YXRpb25PYnNlcnZlciB9IGZyb20gJy4uLy4uL2NvcmUvb2JzZXJ2ZXJzLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZmxpcC1jYXJkLWRldGFpbHMuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgYHNiYi1mbGlwLWNhcmRgLCBpdCBkaXNwbGF5cyBpdHMgY29udGVudCB3aGVuIHRoZSBjYXJkIGlzIGZsaXBwZWQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBwcm92aWRlIGFueSBraW5kIG9mIGNvbnRlbnQuXG4gKi9cbkBjdXN0b21FbGVtZW50KCdzYmItZmxpcC1jYXJkLWRldGFpbHMnKVxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgc2xvdDogJ2RldGFpbHMnLFxufSlcbmV4cG9ydCBjbGFzcyBTYmJGbGlwQ2FyZERldGFpbHNFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIHByaXZhdGUgX2ZsaXBDYXJkTXV0YXRpb25PYnNlcnZlciA9IG5ldyBBZ25vc3RpY011dGF0aW9uT2JzZXJ2ZXIoKCkgPT5cbiAgICB0aGlzLl9jaGVja0ZvclNsb3R0ZWRBY3Rpb25zKCksXG4gICk7XG5cbiAgcHJpdmF0ZSBfY2hlY2tGb3JTbG90dGVkQWN0aW9ucygpOiB2b2lkIHtcbiAgICBjb25zdCBjYXJkRm9jdXNhYmxlQXR0cmlidXRlTmFtZSA9ICdkYXRhLWNhcmQtZm9jdXNhYmxlJztcblxuICAgIEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsPy4oSVNfRk9DVVNBQkxFX1FVRVJZKSA/PyBbXSlcbiAgICAgIC5maWx0ZXIoKGVsKSA9PiAhZWwuaGFzQXR0cmlidXRlKGNhcmRGb2N1c2FibGVBdHRyaWJ1dGVOYW1lKSlcbiAgICAgIC5mb3JFYWNoKChlbDogRWxlbWVudCkgPT4gZWwuc2V0QXR0cmlidXRlKGNhcmRGb2N1c2FibGVBdHRyaWJ1dGVOYW1lLCAnJykpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fY2hlY2tGb3JTbG90dGVkQWN0aW9ucygpO1xuICAgIHRoaXMuX2ZsaXBDYXJkTXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKHRoaXMsIHtcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlcyk6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgdGhpcy5fY2hlY2tGb3JTbG90dGVkQWN0aW9ucygpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fZmxpcENhcmRNdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1mbGlwLWNhcmQtZGV0YWlsc1wiPlxuICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZmxpcC1jYXJkLWRldGFpbHMnOiBTYmJGbGlwQ2FyZERldGFpbHNFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1CYSxJQUFBLDRCQUFOLGNBQXdDLFdBQVc7QUFBQSxFQUFuRCxjQUFBO0FBQUEsVUFBQSxHQUFBLFNBQUE7QUFHTCxTQUFRLDRCQUE0QixJQUFJO0FBQUEsTUFBeUIsTUFDL0QsS0FBSyx3QkFBd0I7QUFBQSxJQUFBO0FBQUEsRUFDL0I7QUFBQSxFQUVRLDBCQUFnQzs7QUFDdEMsVUFBTSw2QkFBNkI7QUFFN0IsVUFBQSxPQUFLLFVBQUsscUJBQUwsOEJBQXdCLHdCQUF1QixDQUFBLENBQUUsRUFDekQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLGFBQWEsMEJBQTBCLENBQUMsRUFDM0QsUUFBUSxDQUFDLE9BQWdCLEdBQUcsYUFBYSw0QkFBNEIsRUFBRSxDQUFDO0FBQUEsRUFDN0U7QUFBQSxFQUVnQixvQkFBMEI7QUFDeEMsVUFBTSxrQkFBa0I7QUFDeEIsU0FBSyx3QkFBd0I7QUFDeEIsU0FBQSwwQkFBMEIsUUFBUSxNQUFNO0FBQUEsTUFDM0MsV0FBVztBQUFBLE1BQ1gsU0FBUztBQUFBLElBQUEsQ0FDVjtBQUFBLEVBQ0g7QUFBQSxFQUVtQixhQUFhLG1CQUF5QztBQUN2RSxVQUFNLGFBQWEsaUJBQWlCO0FBQ3BDLFNBQUssd0JBQXdCO0FBQUEsRUFDL0I7QUFBQSxFQUVnQix1QkFBNkI7QUFDM0MsVUFBTSxxQkFBcUI7QUFDM0IsU0FBSywwQkFBMEI7RUFDakM7QUFBQSxFQUVtQixTQUF5QjtBQUNuQyxXQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtUO0FBQ0Y7QUF6Q2EsMEJBQ1ksU0FBeUI7QUFEckMsNEJBQU4sZ0JBQUE7QUFBQSxFQUpOLGNBQWMsdUJBQXVCO0FBQUEsRUFDckMsZUFBZTtBQUFBLElBQ2QsTUFBTTtBQUFBLEVBQUEsQ0FDUDtBQUFBLEdBQ1kseUJBQUE7In0=
@@ -0,0 +1,22 @@
1
+ import { CSSResultGroup, PropertyValues, TemplateResult, LitElement } from 'lit';
2
+
3
+ export type SbbFlipCardImageAlignment = 'after' | 'below';
4
+ /**
5
+ * Combined with a `sbb-flip-card`, it displays its content when the card is not flipped.
6
+ *
7
+ * @slot - Use the unnamed slot to provide a title for the `sbb-flip-card-summary`.
8
+ * @slot image - Use this slot to provide an image for the `sbb-flip-card-summary`.
9
+ */
10
+ export declare class SbbFlipCardSummaryElement extends LitElement {
11
+ static styles: CSSResultGroup;
12
+ /** The position where to render the image. */
13
+ imageAlignment: SbbFlipCardImageAlignment;
14
+ protected willUpdate(_changedProperties: PropertyValues): void;
15
+ protected render(): TemplateResult;
16
+ }
17
+ declare global {
18
+ interface HTMLElementTagNameMap {
19
+ 'sbb-flip-card-summary': SbbFlipCardSummaryElement;
20
+ }
21
+ }
22
+ //# sourceMappingURL=flip-card-summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flip-card-summary.d.ts","sourceRoot":"","sources":["../../../../../src/elements/flip-card/flip-card-summary/flip-card-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAOvC,MAAM,MAAM,yBAAyB,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1D;;;;;GAKG;AACH,qBAIa,yBAA0B,SAAQ,UAAU;IACvD,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,8CAA8C;IAEvC,cAAc,EAAE,yBAAyB,CAAW;cAExC,UAAU,CAAC,kBAAkB,EAAE,cAAc,GAAG,IAAI;cAQpD,MAAM,IAAI,cAAc;CAU5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,uBAAuB,EAAE,yBAAyB,CAAC;KACpD;CACF"}
@@ -0,0 +1,2 @@
1
+ export * from './flip-card-summary.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/flip-card/flip-card-summary/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './flip-card-summary/flip-card-summary.js';
2
+ //# sourceMappingURL=flip-card-summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flip-card-summary.d.ts","sourceRoot":"","sources":["../../../../src/elements/flip-card/flip-card-summary.ts"],"names":[],"mappings":"AAAA,cAAc,0CAA0C,CAAC"}