@sbb-esta/lyne-elements-dev 4.11.0-dev.1776924022 → 4.11.0-dev.1776928413

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 (356) hide show
  1. package/autocomplete/autocomplete-base-element.js +1 -1
  2. package/autocomplete/autocomplete.component.js +1 -1
  3. package/{autocomplete-base-element-BryH362a.js → autocomplete-base-element-DNoAdA1R.js} +1 -1
  4. package/autocomplete.js +1 -1
  5. package/autocomplete.pure.js +1 -1
  6. package/{block-link-common-BwXob5QE.js → block-link-common-1kRa_czx.js} +1 -1
  7. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
  8. package/breadcrumb/breadcrumb-group.js +1 -1
  9. package/{breadcrumb-group.component-F3-JZkfO.js → breadcrumb-group.component-CKNsaUqs.js} +1 -1
  10. package/breadcrumb.js +1 -1
  11. package/breadcrumb.pure.js +1 -1
  12. package/button/common/button-common.js +1 -1
  13. package/button/common.js +1 -1
  14. package/button-common-BMEhm-dn.js +87 -0
  15. package/button.js +1 -1
  16. package/button.pure.js +1 -1
  17. package/calendar/calendar/calendar.component.js +1 -1
  18. package/calendar/calendar.js +1 -1
  19. package/{calendar.component-Cq0m3E48.js → calendar.component-C1jk_uE0.js} +1 -1
  20. package/calendar.js +1 -1
  21. package/calendar.pure.js +1 -1
  22. package/card/card-badge/card-badge.component.js +1 -1
  23. package/card/card-badge.js +1 -1
  24. package/{card-badge.component-BSOEYrN4.js → card-badge.component-D0r2iixU.js} +1 -1
  25. package/card.js +1 -1
  26. package/card.pure.js +1 -1
  27. package/checkbox/checkbox.component.js +1 -1
  28. package/checkbox/checkbox.js +1 -1
  29. package/checkbox/common/checkbox-common.js +1 -1
  30. package/checkbox/common.js +1 -1
  31. package/{checkbox-common-DdieysTG.js → checkbox-common-BpW4_bbi.js} +1 -1
  32. package/{checkbox.component-ROzxEnPh.js → checkbox.component-DS48CA_v.js} +1 -1
  33. package/checkbox.js +2 -2
  34. package/checkbox.pure.js +2 -2
  35. package/chip/chip-group/chip-group.component.js +1 -1
  36. package/chip/chip-group.js +1 -1
  37. package/{chip-group.component-DJzUToem.js → chip-group.component-BqBYzfXA.js} +1 -1
  38. package/chip.js +1 -1
  39. package/chip.pure.js +1 -1
  40. package/{compact-paginator.component-Cyi-t_YD.js → compact-paginator.component-BIAPutro.js} +1 -1
  41. package/core/styles/core.scss +17 -73
  42. package/core/styles/mixins/typo.scss +2 -2
  43. package/core.css +67 -65
  44. package/development/autocomplete/autocomplete-base-element.js +1 -1
  45. package/development/autocomplete/autocomplete.component.js +1 -1
  46. package/development/autocomplete-base-element-BR5zqYyY.js +692 -0
  47. package/development/autocomplete.js +1 -1
  48. package/development/autocomplete.pure.js +1 -1
  49. package/development/{block-link-common-Dh1NOKxB.js → block-link-common-COY1RI1I.js} +2 -2
  50. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
  51. package/development/breadcrumb/breadcrumb-group.js +1 -1
  52. package/development/breadcrumb-group.component-DZslNBlB.js +195 -0
  53. package/development/breadcrumb.js +1 -1
  54. package/development/breadcrumb.pure.js +1 -1
  55. package/development/button/common/button-common.js +1 -1
  56. package/development/button/common.js +1 -1
  57. package/development/{button-common-CAu09Yim.js → button-common-7dmrUx4A.js} +3 -3
  58. package/development/button.js +1 -1
  59. package/development/button.pure.js +1 -1
  60. package/development/calendar/calendar/calendar.component.js +1 -1
  61. package/development/calendar/calendar.js +1 -1
  62. package/development/calendar.component-Dg3D2A7k.js +1453 -0
  63. package/development/calendar.js +1 -1
  64. package/development/calendar.pure.js +1 -1
  65. package/development/card/card-badge/card-badge.component.js +1 -1
  66. package/development/card/card-badge.js +1 -1
  67. package/development/card-badge.component-CUZIoVbL.js +84 -0
  68. package/development/card.js +1 -1
  69. package/development/card.pure.js +1 -1
  70. package/development/checkbox/checkbox.component.js +1 -1
  71. package/development/checkbox/checkbox.js +1 -1
  72. package/development/checkbox/common/checkbox-common.js +1 -1
  73. package/development/checkbox/common.js +1 -1
  74. package/development/checkbox-common-Dd5uup8K.js +86 -0
  75. package/development/{checkbox.component-D3_FFSys.js → checkbox.component-CFZrwUTA.js} +2 -2
  76. package/development/checkbox.js +2 -2
  77. package/development/checkbox.pure.js +2 -2
  78. package/development/chip/chip-group/chip-group.component.js +1 -1
  79. package/development/chip/chip-group.js +1 -1
  80. package/development/chip-group.component-BVfHWX2-.js +409 -0
  81. package/development/chip.js +1 -1
  82. package/development/chip.pure.js +1 -1
  83. package/development/compact-paginator.component-5_Q2Reul.js +51 -0
  84. package/development/error.component-OBpWoVRL.js +55 -0
  85. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +1 -1
  86. package/development/expansion-panel/expansion-panel-header.js +1 -1
  87. package/development/expansion-panel-header.component-BEAabEE0.js +85 -0
  88. package/development/expansion-panel.js +1 -1
  89. package/development/expansion-panel.pure.js +1 -1
  90. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
  91. package/development/file-selector/file-selector-dropzone.js +1 -1
  92. package/development/{file-selector-dropzone.component-B-cBO4bf.js → file-selector-dropzone.component-xfkQt0VX.js} +2 -2
  93. package/development/file-selector.js +1 -1
  94. package/development/file-selector.pure.js +1 -1
  95. package/development/footer/footer.component.js +1 -1
  96. package/development/footer.component-BmDkxYW9.js +172 -0
  97. package/development/footer.js +1 -1
  98. package/development/footer.pure.js +1 -1
  99. package/development/form-field/error/error.component.js +1 -1
  100. package/development/form-field/error.js +1 -1
  101. package/development/form-field/form-field/form-field.component.js +1 -1
  102. package/development/form-field/form-field.js +1 -1
  103. package/development/form-field/hint/hint.component.js +1 -1
  104. package/development/form-field.component-BU3Sv2mD.js +707 -0
  105. package/development/form-field.js +3 -3
  106. package/development/form-field.pure.js +3 -3
  107. package/development/header/header/header.component.js +1 -1
  108. package/development/header/header.js +1 -1
  109. package/development/header.component-CWJ36jF0.js +340 -0
  110. package/development/header.js +1 -1
  111. package/development/header.pure.js +1 -1
  112. package/development/hint.component-DUtL0RS3.js +38 -0
  113. package/development/link/common/block-link-common.js +1 -1
  114. package/development/link/common.js +1 -1
  115. package/development/link.js +1 -1
  116. package/development/link.pure.js +1 -1
  117. package/development/message/message.component.js +1 -1
  118. package/development/message.component-Dlf5V5ba.js +44 -0
  119. package/development/message.js +1 -1
  120. package/development/message.pure.js +1 -1
  121. package/development/navigation/common/navigation-action-common.js +1 -1
  122. package/development/navigation/common.js +1 -1
  123. package/development/navigation/navigation-marker/navigation-marker.component.js +1 -1
  124. package/development/navigation/navigation-marker.js +1 -1
  125. package/development/navigation/navigation-section/navigation-section.component.js +1 -1
  126. package/development/navigation/navigation-section.js +1 -1
  127. package/development/{navigation-action-common-DpBp7-eZ.js → navigation-action-common-Hjr4dI9J.js} +2 -2
  128. package/development/{navigation-marker.component-BpZdT4xz.js → navigation-marker.component-GOv42emC.js} +2 -2
  129. package/development/{navigation-section.component-CtZtuacK.js → navigation-section.component-CnVrRETN.js} +2 -2
  130. package/development/navigation.js +3 -3
  131. package/development/navigation.pure.js +3 -3
  132. package/development/notification/notification.component.js +1 -1
  133. package/development/notification.component-Cvq_uViC.js +274 -0
  134. package/development/notification.js +1 -1
  135. package/development/notification.pure.js +1 -1
  136. package/development/paginator/compact-paginator/compact-paginator.component.js +1 -1
  137. package/development/paginator/compact-paginator.js +1 -1
  138. package/development/paginator/paginator/paginator.component.js +1 -1
  139. package/development/paginator/paginator.js +1 -1
  140. package/development/paginator.component-Bn5tK0FK.js +259 -0
  141. package/development/paginator.js +2 -2
  142. package/development/paginator.pure.js +2 -2
  143. package/development/radio-button/common/radio-button-common.js +1 -1
  144. package/development/radio-button/common.js +1 -1
  145. package/development/radio-button/radio-button.component.js +1 -1
  146. package/development/radio-button/radio-button.js +1 -1
  147. package/development/radio-button-common--d3WX-ZM.js +126 -0
  148. package/development/{radio-button.component-BrQF2FfA.js → radio-button.component-BauLEeCV.js} +2 -2
  149. package/development/radio-button.js +2 -2
  150. package/development/radio-button.pure.js +2 -2
  151. package/development/select/select.component.js +1 -1
  152. package/development/select.component-CkwuT_xi.js +812 -0
  153. package/development/select.js +1 -1
  154. package/development/select.pure.js +1 -1
  155. package/development/status/status.component.js +1 -1
  156. package/development/status.component-CPi1cPN0.js +111 -0
  157. package/development/status.js +1 -1
  158. package/development/status.pure.js +1 -1
  159. package/development/step-label.component-BJ9eainz.js +131 -0
  160. package/development/stepper/step-label/step-label.component.js +1 -1
  161. package/development/stepper/step-label.js +1 -1
  162. package/development/stepper.js +1 -1
  163. package/development/stepper.pure.js +1 -1
  164. package/development/styles-Jlhoev1S.js +14 -0
  165. package/development/{tab-label.component-14j2eh4Z.js → tab-label.component-B9e9kgVf.js} +2 -2
  166. package/development/tabs/common/styles.js +1 -1
  167. package/development/tabs/common.js +1 -1
  168. package/development/tabs/tab-label/tab-label.component.js +1 -1
  169. package/development/tabs/tab-label.js +1 -1
  170. package/development/tabs.js +2 -2
  171. package/development/tabs.pure.js +2 -2
  172. package/development/tag/tag/tag.component.js +1 -1
  173. package/development/tag/tag.js +1 -1
  174. package/development/tag.component-Bl1nlIXQ.js +245 -0
  175. package/development/tag.js +1 -1
  176. package/development/tag.pure.js +1 -1
  177. package/development/timetable-occupancy/timetable-occupancy.component.js +1 -1
  178. package/development/{timetable-occupancy.component-dhpPJEaI.js → timetable-occupancy.component-BBcznUh0.js} +2 -2
  179. package/development/timetable-occupancy.js +1 -1
  180. package/development/timetable-occupancy.pure.js +1 -1
  181. package/development/title/title-base.js +1 -1
  182. package/development/title/title.component.js +1 -1
  183. package/development/{title-base-CBE_2Hkb.js → title-base-BdYKwj3-.js} +2 -2
  184. package/development/{title.component-Dk23JVct.js → title.component-DSXVkddh.js} +2 -2
  185. package/development/title.js +2 -2
  186. package/development/title.pure.js +2 -2
  187. package/development/toast/toast.component.js +1 -1
  188. package/development/{toast.component-Cuvs3VnH.js → toast.component-Cgr5ZGOr.js} +2 -2
  189. package/development/toast.js +1 -1
  190. package/development/toast.pure.js +1 -1
  191. package/development/toggle/toggle/toggle.component.js +1 -1
  192. package/development/toggle/toggle.js +1 -1
  193. package/development/toggle.component-BJpD1b9H.js +249 -0
  194. package/development/toggle.js +1 -1
  195. package/development/toggle.pure.js +1 -1
  196. package/development/tooltip/tooltip.component.js +1 -1
  197. package/development/tooltip.component-YaUQA-Id.js +378 -0
  198. package/development/tooltip.js +1 -1
  199. package/development/tooltip.pure.js +1 -1
  200. package/development/train/train-wagon/train-wagon.component.js +1 -1
  201. package/development/train/train-wagon.js +1 -1
  202. package/development/{train-wagon.component-BzA8-S_6.js → train-wagon.component-CNxkffOO.js} +2 -2
  203. package/development/train.js +1 -1
  204. package/development/train.pure.js +1 -1
  205. package/{error.component-B_D8WUP5.js → error.component-DH9Obd7a.js} +1 -1
  206. package/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +1 -1
  207. package/expansion-panel/expansion-panel-header.js +1 -1
  208. package/{expansion-panel-header.component-B_dQ3ZWT.js → expansion-panel-header.component-FPoEEoZR.js} +1 -1
  209. package/expansion-panel.js +1 -1
  210. package/expansion-panel.pure.js +1 -1
  211. package/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
  212. package/file-selector/file-selector-dropzone.js +1 -1
  213. package/{file-selector-dropzone.component-CBKsZsC2.js → file-selector-dropzone.component-DSmBp7xN.js} +1 -1
  214. package/file-selector.js +1 -1
  215. package/file-selector.pure.js +1 -1
  216. package/footer/footer.component.js +1 -1
  217. package/{footer.component-BM91Utiz.js → footer.component-b2docCY_.js} +1 -1
  218. package/footer.js +1 -1
  219. package/footer.pure.js +1 -1
  220. package/form-field/error/error.component.js +1 -1
  221. package/form-field/error.js +1 -1
  222. package/form-field/form-field/form-field.component.js +1 -1
  223. package/form-field/form-field.js +1 -1
  224. package/form-field/hint/hint.component.js +1 -1
  225. package/{form-field.component-Cc_siKrq.js → form-field.component-BwZDRKbQ.js} +1 -1
  226. package/form-field.js +3 -3
  227. package/form-field.pure.js +3 -3
  228. package/header/header/header.component.js +1 -1
  229. package/header/header.js +1 -1
  230. package/{header.component-hZqs06Yh.js → header.component-UQUFcMOD.js} +1 -1
  231. package/header.js +1 -1
  232. package/header.pure.js +1 -1
  233. package/{hint.component-BVUUrSSu.js → hint.component-CE2D2TLU.js} +1 -1
  234. package/link/common/block-link-common.js +1 -1
  235. package/link/common.js +1 -1
  236. package/link.js +1 -1
  237. package/link.pure.js +1 -1
  238. package/message/message.component.js +1 -1
  239. package/message.component-DhN-aFms.js +27 -0
  240. package/message.js +1 -1
  241. package/message.pure.js +1 -1
  242. package/navigation/common/navigation-action-common.js +1 -1
  243. package/navigation/common.js +1 -1
  244. package/navigation/navigation-marker/navigation-marker.component.js +1 -1
  245. package/navigation/navigation-marker.js +1 -1
  246. package/navigation/navigation-section/navigation-section.component.js +1 -1
  247. package/navigation/navigation-section.js +1 -1
  248. package/{navigation-action-common-2ix0xrBs.js → navigation-action-common-AzRltwrb.js} +1 -1
  249. package/{navigation-marker.component-DKxK16IU.js → navigation-marker.component-BzbbKlfT.js} +1 -1
  250. package/{navigation-section.component-CvjXVn5r.js → navigation-section.component-DQxCi3O_.js} +1 -1
  251. package/navigation.js +3 -3
  252. package/navigation.pure.js +3 -3
  253. package/notification/notification.component.js +1 -1
  254. package/{notification.component-DjXJFh1G.js → notification.component-D80Wl5xM.js} +1 -1
  255. package/notification.js +1 -1
  256. package/notification.pure.js +1 -1
  257. package/off-brand-theme.css +67 -65
  258. package/package.json +2 -2
  259. package/paginator/compact-paginator/compact-paginator.component.js +1 -1
  260. package/paginator/compact-paginator.js +1 -1
  261. package/paginator/paginator/paginator.component.js +1 -1
  262. package/paginator/paginator.js +1 -1
  263. package/{paginator.component-CZt7Epaf.js → paginator.component-BEr0qU0m.js} +1 -1
  264. package/paginator.js +2 -2
  265. package/paginator.pure.js +2 -2
  266. package/radio-button/common/radio-button-common.js +1 -1
  267. package/radio-button/common.js +1 -1
  268. package/radio-button/radio-button.component.js +1 -1
  269. package/radio-button/radio-button.js +1 -1
  270. package/{radio-button-common-DP4Izwwf.js → radio-button-common-C1mIf9KY.js} +1 -1
  271. package/{radio-button.component-BiGeOI5L.js → radio-button.component-Bae-yK_U.js} +1 -1
  272. package/radio-button.js +2 -2
  273. package/radio-button.pure.js +2 -2
  274. package/safety-theme.css +67 -65
  275. package/select/select.component.js +1 -1
  276. package/{select.component-DWLdApt_.js → select.component-ByO4itj5.js} +1 -1
  277. package/select.js +1 -1
  278. package/select.pure.js +1 -1
  279. package/standard-theme.css +67 -65
  280. package/status/status.component.js +1 -1
  281. package/{status.component-BFyXTFXH.js → status.component-lw_WDs7W.js} +1 -1
  282. package/status.js +1 -1
  283. package/status.pure.js +1 -1
  284. package/{step-label.component-dzcNc12A.js → step-label.component-Dqis4FAN.js} +1 -1
  285. package/stepper/step-label/step-label.component.js +1 -1
  286. package/stepper/step-label.js +1 -1
  287. package/stepper.js +1 -1
  288. package/stepper.pure.js +1 -1
  289. package/styles-BNu0Fjw5.js +5 -0
  290. package/{tab-label.component-CD56RH1Z.js → tab-label.component-CpdUyfiq.js} +1 -1
  291. package/tabs/common/styles.js +1 -1
  292. package/tabs/common.js +1 -1
  293. package/tabs/tab-label/tab-label.component.js +1 -1
  294. package/tabs/tab-label.js +1 -1
  295. package/tabs.js +2 -2
  296. package/tabs.pure.js +2 -2
  297. package/tag/tag/tag.component.js +1 -1
  298. package/tag/tag.js +1 -1
  299. package/{tag.component-CzYJZuFT.js → tag.component-CsNszQvB.js} +1 -1
  300. package/tag.js +1 -1
  301. package/tag.pure.js +1 -1
  302. package/timetable-occupancy/timetable-occupancy.component.js +1 -1
  303. package/{timetable-occupancy.component-BDmxFVKK.js → timetable-occupancy.component-BCXPxz68.js} +1 -1
  304. package/timetable-occupancy.js +1 -1
  305. package/timetable-occupancy.pure.js +1 -1
  306. package/title/title-base.js +1 -1
  307. package/title/title.component.js +1 -1
  308. package/{title-base-D72Xo2SW.js → title-base-DV0qhfG9.js} +1 -1
  309. package/{title.component-CoMa84Sz.js → title.component-DAGyXwDm.js} +1 -1
  310. package/title.js +2 -2
  311. package/title.pure.js +2 -2
  312. package/toast/toast.component.js +1 -1
  313. package/{toast.component-CkNywQOZ.js → toast.component-CGVqkd0_.js} +1 -1
  314. package/toast.js +1 -1
  315. package/toast.pure.js +1 -1
  316. package/toggle/toggle/toggle.component.js +1 -1
  317. package/toggle/toggle.js +1 -1
  318. package/{toggle.component-Cwc-TJ-a.js → toggle.component-B20xAw1V.js} +1 -1
  319. package/toggle.js +1 -1
  320. package/toggle.pure.js +1 -1
  321. package/tooltip/tooltip.component.js +1 -1
  322. package/{tooltip.component-B3XLLpLg.js → tooltip.component-ocVpJogs.js} +1 -1
  323. package/tooltip.js +1 -1
  324. package/tooltip.pure.js +1 -1
  325. package/train/train-wagon/train-wagon.component.js +1 -1
  326. package/train/train-wagon.js +1 -1
  327. package/{train-wagon.component-BwCcF4GD.js → train-wagon.component-BT4Xnzxr.js} +1 -1
  328. package/train.js +1 -1
  329. package/train.pure.js +1 -1
  330. package/button-common-yFVzAoGy.js +0 -87
  331. package/development/autocomplete-base-element-BNfirRyP.js +0 -692
  332. package/development/breadcrumb-group.component-HBWRdDpS.js +0 -195
  333. package/development/calendar.component-Dto81mQ8.js +0 -1453
  334. package/development/card-badge.component-D4Mes-Gw.js +0 -84
  335. package/development/checkbox-common-DiTlHvFJ.js +0 -86
  336. package/development/chip-group.component-CvpUdzu1.js +0 -409
  337. package/development/compact-paginator.component-TfDVt_ST.js +0 -51
  338. package/development/error.component-xD_c9IBA.js +0 -55
  339. package/development/expansion-panel-header.component-Bw4uROTe.js +0 -85
  340. package/development/footer.component-BblB5218.js +0 -172
  341. package/development/form-field.component-CWVzymTX.js +0 -707
  342. package/development/header.component-Cg0ZcA1s.js +0 -340
  343. package/development/hint.component-BsIzdUOV.js +0 -38
  344. package/development/message.component-CeJhYXSC.js +0 -44
  345. package/development/notification.component-Co9QChXc.js +0 -274
  346. package/development/paginator.component-DAdS2mMm.js +0 -259
  347. package/development/radio-button-common-C3-xuY78.js +0 -126
  348. package/development/select.component-CGNEhqzl.js +0 -812
  349. package/development/status.component-CHC2pBa-.js +0 -111
  350. package/development/step-label.component-DjA-3IGs.js +0 -131
  351. package/development/styles-DCQBzC2C.js +0 -14
  352. package/development/tag.component-CnNPL6aI.js +0 -245
  353. package/development/toggle.component-CKug5pF7.js +0 -249
  354. package/development/tooltip.component-epXOY5vO.js +0 -378
  355. package/message.component-BQjnZ5Z3.js +0 -27
  356. package/styles-BUpK1iP2.js +0 -5
@@ -0,0 +1,409 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { html, isServer, unsafeCSS } from "lit";
3
+ import { property } from "lit/decorators.js";
4
+ import { SbbElement } from "./core/base-elements.js";
5
+ import { forceType } from "./core/decorators.js";
6
+ import { SbbDisabledMixin, SbbFormAssociatedMixin, SbbNegativeMixin, SbbRequiredMixin } from "./core/mixins.js";
7
+ import { boxSizingStyles } from "./core/styles.js";
8
+ import { SbbLanguageController, SbbPropertyWatcherController } from "./core/controllers.js";
9
+ import { i18nChipGroupInputDescription, i18nSelectionRequired } from "./core/i18n.js";
10
+ import { getNextElementIndex, isArrowKeyPressed } from "./core/a11y.js";
11
+ import { isLean } from "./core/dom/lean-context.js";
12
+ import { SbbChipElement } from "./chip/chip/chip.component.js";
13
+ //#region src/elements/chip/chip-group/chip-group.scss?inline
14
+ var chip_group_default = ":host {\n width: 100%;\n display: flex;\n flex-wrap: wrap;\n gap: var(--sbb-chip-group-gap);\n align-items: center;\n margin-block: var(--sbb-chip-group-margin-block);\n line-height: var(--sbb-typo-line-height-text);\n}\n\n:host(:is(:is(:state(size-s),[state--size-s]), :is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: 0;\n}\n\n:host(:is(:state(size-s),[state--size-s]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: 0.375rem 0.3125rem;\n}\n@media (min-width: calc(64rem)) {\n :host(:is(:state(size-s),[state--size-s]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: 0.3125rem 0.1875rem;\n }\n}\n\n:host(:is(:state(without-label),[state--without-label]):is(:state(size-s),[state--size-s]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: 0 0.4375rem;\n}\n@media (min-width: calc(64rem)) {\n :host(:is(:state(without-label),[state--without-label]):is(:state(size-s),[state--size-s]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: 0 0.3125rem;\n }\n}\n\n:host(:is(:is(:state(size-l),[state--size-l]), :is(:state(size-m),[state--size-m]))) {\n --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default) 0;\n}\n@media (min-width: calc(64rem)) {\n :host(:is(:is(:state(size-l),[state--size-l]), :is(:state(size-m),[state--size-m]))) {\n --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default-large) 0;\n }\n}\n\n:host(:is(:state(without-label),[state--without-label]):is(:state(size-m),[state--size-m]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: 0.1875rem 0.6875rem;\n}\n@media (min-width: calc(64rem)) {\n :host(:is(:state(without-label),[state--without-label]):is(:state(size-m),[state--size-m]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: 0.1875rem 0.875rem;\n }\n}\n\n:host(:is(:state(without-label),[state--without-label]):not(:is(:state(empty),[state--empty]), :is(:state(size-s),[state--size-s]), :is(:state(size-m),[state--size-m]), :is(:state(size-l),[state--size-l]))) {\n --sbb-chip-group-margin-block: var(--sbb-chip-group-margin-block-no-label-not-empty);\n}\n\n:host(:not(:is(:state(without-label),[state--without-label])):is(:state(size-m),[state--size-m]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default)\n var(--_sbb-chip-group-margin-block-start-default-large);\n}\n@media (min-width: calc(64rem)) {\n :host(:not(:is(:state(without-label),[state--without-label])):is(:state(size-m),[state--size-m]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default-large)\n var(--_sbb-chip-group-margin-block-start-default-large);\n }\n}\n\n:host(:not(:is(:state(without-label),[state--without-label]), :is(:state(empty),[state--empty]), :is(:state(size-s),[state--size-s]), :is(:state(size-m),[state--size-m]), :is(:state(size-l),[state--size-l]))) {\n --sbb-chip-group-margin-block: var(--sbb-chip-group-margin-block-with-label-not-empty);\n}\n\n:host(:is(:state(without-label),[state--without-label]):is(:state(size-l),[state--size-l]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default)\n 1rem;\n}\n@media (min-width: calc(64rem)) {\n :host(:is(:state(without-label),[state--without-label]):is(:state(size-l),[state--size-l]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default-large)\n 1.25rem;\n }\n}\n\n:host(:not(:is(:state(without-label),[state--without-label])):is(:state(size-l),[state--size-l]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default)\n 0.46875rem;\n}\n@media (min-width: calc(64rem)) {\n :host(:not(:is(:state(without-label),[state--without-label])):is(:state(size-l),[state--size-l]):not(:is(:state(empty),[state--empty]))) {\n --sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default-large)\n 0.46875rem;\n }\n}\n\n::slotted(input) {\n flex: 1 1 var(--sbb-chip-group-input-min-width);\n max-height: 1.5rem;\n}\n\n::slotted(sbb-chip) {\n max-width: 100%;\n}";
15
+ //#endregion
16
+ //#region src/elements/chip/chip-group/chip-group.component.ts
17
+ var SbbChipInputTokenEndEvent = class extends CustomEvent {
18
+ /**
19
+ * @deprecated Use event properties directly.
20
+ */
21
+ get detail() {
22
+ return this;
23
+ }
24
+ constructor(options) {
25
+ super("chipinputtokenend", {
26
+ cancelable: true,
27
+ bubbles: true,
28
+ composed: true
29
+ });
30
+ this.origin = options.origin;
31
+ this.value = options.value;
32
+ this.label = options.label;
33
+ }
34
+ /** Set a new value for the chip that will be created */
35
+ setValue(value) {
36
+ this.value = value;
37
+ }
38
+ /** Set a label for the chip that will be created */
39
+ setLabel(label) {
40
+ this.label = label;
41
+ }
42
+ };
43
+ /**
44
+ * The `sbb-chip-group` component is used as a container for one or multiple `sbb-chip`.
45
+ *
46
+ * @slot - Use the unnamed slot to add `sbb-chip` elements.
47
+ * @event {SbbChipInputTokenEndEvent<T>} chipinputtokenend - Notifies that a chip is about to be created. Can be prevented.
48
+ * @overrideType value - (T = string[]) | null
49
+ */
50
+ var SbbChipGroupElement = (() => {
51
+ let _classSuper = SbbRequiredMixin(SbbDisabledMixin(SbbNegativeMixin(SbbFormAssociatedMixin(SbbElement))));
52
+ let _instanceExtraInitializers = [];
53
+ let _set_value_decorators;
54
+ let _displayWith_decorators;
55
+ let _displayWith_initializers = [];
56
+ let _displayWith_extraInitializers = [];
57
+ let _separatorKeys_decorators;
58
+ let _separatorKeys_initializers = [];
59
+ let _separatorKeys_extraInitializers = [];
60
+ let _addOnBlur_decorators;
61
+ let _addOnBlur_initializers = [];
62
+ let _addOnBlur_extraInitializers = [];
63
+ return class SbbChipGroupElement extends _classSuper {
64
+ static {
65
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
66
+ _set_value_decorators = [property({ type: Array })];
67
+ _displayWith_decorators = [property({ attribute: false })];
68
+ _separatorKeys_decorators = [property({
69
+ attribute: "separator-keys",
70
+ type: Array
71
+ })];
72
+ _addOnBlur_decorators = [forceType(), property({
73
+ attribute: "add-on-blur",
74
+ type: Boolean
75
+ })];
76
+ __esDecorate(this, null, _set_value_decorators, {
77
+ kind: "setter",
78
+ name: "value",
79
+ static: false,
80
+ private: false,
81
+ access: {
82
+ has: (obj) => "value" in obj,
83
+ set: (obj, value) => {
84
+ obj.value = value;
85
+ }
86
+ },
87
+ metadata: _metadata
88
+ }, null, _instanceExtraInitializers);
89
+ __esDecorate(this, null, _displayWith_decorators, {
90
+ kind: "accessor",
91
+ name: "displayWith",
92
+ static: false,
93
+ private: false,
94
+ access: {
95
+ has: (obj) => "displayWith" in obj,
96
+ get: (obj) => obj.displayWith,
97
+ set: (obj, value) => {
98
+ obj.displayWith = value;
99
+ }
100
+ },
101
+ metadata: _metadata
102
+ }, _displayWith_initializers, _displayWith_extraInitializers);
103
+ __esDecorate(this, null, _separatorKeys_decorators, {
104
+ kind: "accessor",
105
+ name: "separatorKeys",
106
+ static: false,
107
+ private: false,
108
+ access: {
109
+ has: (obj) => "separatorKeys" in obj,
110
+ get: (obj) => obj.separatorKeys,
111
+ set: (obj, value) => {
112
+ obj.separatorKeys = value;
113
+ }
114
+ },
115
+ metadata: _metadata
116
+ }, _separatorKeys_initializers, _separatorKeys_extraInitializers);
117
+ __esDecorate(this, null, _addOnBlur_decorators, {
118
+ kind: "accessor",
119
+ name: "addOnBlur",
120
+ static: false,
121
+ private: false,
122
+ access: {
123
+ has: (obj) => "addOnBlur" in obj,
124
+ get: (obj) => obj.addOnBlur,
125
+ set: (obj, value) => {
126
+ obj.addOnBlur = value;
127
+ }
128
+ },
129
+ metadata: _metadata
130
+ }, _addOnBlur_initializers, _addOnBlur_extraInitializers);
131
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, {
132
+ enumerable: true,
133
+ configurable: true,
134
+ writable: true,
135
+ value: _metadata
136
+ });
137
+ }
138
+ static {
139
+ this.elementName = "sbb-chip-group";
140
+ }
141
+ static {
142
+ this.role = "listbox";
143
+ }
144
+ static {
145
+ this.styles = [boxSizingStyles, unsafeCSS(chip_group_default)];
146
+ }
147
+ static {
148
+ this.events = {
149
+ input: "input",
150
+ change: "change",
151
+ chipinputtokenend: "chipinputtokenend"
152
+ };
153
+ }
154
+ /** Value of the form element. */
155
+ set value(value) {
156
+ value = value ?? [];
157
+ const oldValue = this.value;
158
+ const toRemove = [...oldValue];
159
+ for (const c of value) if (toRemove.includes(c)) toRemove.splice(toRemove.indexOf(c), 1);
160
+ toRemove.forEach((value) => this._chipElements().find((c) => c.value === value)?.remove());
161
+ const toAdd = [...value];
162
+ for (const c of oldValue) if (toAdd.includes(c)) toAdd.splice(toAdd.indexOf(c), 1);
163
+ toAdd.forEach((c) => this._createChipElement(c));
164
+ }
165
+ get value() {
166
+ return this._chipElements().map((c) => c.value);
167
+ }
168
+ #displayWith_accessor_storage;
169
+ /** Function that maps a chip's value to its display value. */
170
+ get displayWith() {
171
+ return this.#displayWith_accessor_storage;
172
+ }
173
+ set displayWith(value) {
174
+ this.#displayWith_accessor_storage = value;
175
+ }
176
+ #separatorKeys_accessor_storage;
177
+ /** The array of keys that will trigger a `chipinputtokenend` event. Default `['Enter']` */
178
+ get separatorKeys() {
179
+ return this.#separatorKeys_accessor_storage;
180
+ }
181
+ set separatorKeys(value) {
182
+ this.#separatorKeys_accessor_storage = value;
183
+ }
184
+ #addOnBlur_accessor_storage;
185
+ /** Whether to automatically add a chip when the input loses focus if there's a value. */
186
+ get addOnBlur() {
187
+ return this.#addOnBlur_accessor_storage;
188
+ }
189
+ set addOnBlur(value) {
190
+ this.#addOnBlur_accessor_storage = value;
191
+ }
192
+ constructor() {
193
+ super();
194
+ this.#displayWith_accessor_storage = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _displayWith_initializers, null));
195
+ this.#separatorKeys_accessor_storage = (__runInitializers(this, _displayWith_extraInitializers), __runInitializers(this, _separatorKeys_initializers, ["Enter"]));
196
+ this.#addOnBlur_accessor_storage = (__runInitializers(this, _separatorKeys_extraInitializers), __runInitializers(this, _addOnBlur_initializers, false));
197
+ /**
198
+ * Listens to the changes on `readonly` and `disabled` attributes of `<input>`.
199
+ */
200
+ this._inputAttributeObserver = (__runInitializers(this, _addOnBlur_extraInitializers), !isServer ? new MutationObserver(() => this._reactToInputChanges()) : null);
201
+ this._language = new SbbLanguageController(this);
202
+ this.addEventListener?.(SbbChipElement.events.requestdelete, (ev) => this._deleteChip(ev.target));
203
+ this.addEventListener?.("keydown", (ev) => this._onChipKeyDown(ev));
204
+ this.addController(new SbbPropertyWatcherController(this, () => this.closest("sbb-form-field"), {
205
+ size: (formField) => this._updateSize(formField.size),
206
+ label: (formField) => this._updateLabelState(formField),
207
+ hiddenLabel: (formField) => this._updateLabelState(formField)
208
+ }));
209
+ }
210
+ _updateLabelState(formField) {
211
+ this.toggleState("without-label", !formField.label || formField.hiddenLabel);
212
+ }
213
+ connectedCallback() {
214
+ super.connectedCallback();
215
+ this._setupComponent();
216
+ }
217
+ willUpdate(changedProperties) {
218
+ super.willUpdate(changedProperties);
219
+ if (changedProperties.has("disabled") || changedProperties.has("formDisabled") || changedProperties.has("negative")) this._proxyStateToChips();
220
+ }
221
+ /** @internal */
222
+ formResetCallback() {
223
+ this.value = null;
224
+ }
225
+ /** @internal */
226
+ formStateRestoreCallback(state, _reason) {
227
+ if (!state) {
228
+ this.value = null;
229
+ return;
230
+ }
231
+ this._readFormData(state).then((array) => this.value = array);
232
+ }
233
+ async _readFormData(formData) {
234
+ return Promise.all(formData.getAll(this.name).map(async (entry) => entry instanceof Blob ? JSON.parse(await entry.text()) : entry));
235
+ }
236
+ shouldValidate(name) {
237
+ return super.shouldValidate(name) || name === "required" || name === "value";
238
+ }
239
+ validate() {
240
+ super.validate();
241
+ if (this.required && this.value.length === 0) this.setValidityFlag("valueMissing", i18nSelectionRequired[this._language.current]);
242
+ else this.removeValidityFlag("valueMissing");
243
+ }
244
+ /** Return the list of chip elements **/
245
+ _chipElements() {
246
+ return Array.from(this.querySelectorAll?.("sbb-chip") ?? []);
247
+ }
248
+ /** Return the list of enabled chip elements **/
249
+ _enabledChipElements() {
250
+ return Array.from(this.querySelectorAll?.("sbb-chip:not([disabled])") ?? []);
251
+ }
252
+ _setupComponent() {
253
+ const input = this.querySelector("input");
254
+ if (input && input !== this._inputElement) {
255
+ this._inputAbortController?.abort();
256
+ this._inputAttributeObserver?.disconnect();
257
+ this._inputElement = input;
258
+ this._inputAbortController = new AbortController();
259
+ this._inputElement.addEventListener("keydown", (ev) => this._onInputKeyDown(ev), { signal: this._inputAbortController.signal });
260
+ this._inputElement.addEventListener("blur", () => this._onInputBlur(), {
261
+ signal: this._inputAbortController.signal,
262
+ capture: true
263
+ });
264
+ this._inputElement.addEventListener("inputAutocomplete", (event) => {
265
+ this._createChipFromInput("autocomplete", event.detail?.option.value);
266
+ }, { signal: this._inputAbortController.signal });
267
+ this._inputAttributeObserver?.observe(this._inputElement, {
268
+ attributes: true,
269
+ attributeFilter: ["readonly", "disabled"]
270
+ });
271
+ }
272
+ if (!this._previousSize || !this.closest("sbb-form-field")) this._updateSize(isLean() ? "s" : "m");
273
+ this.toggleState("empty", this.value.length === 0);
274
+ this._reactToInputChanges();
275
+ this._updateInputDescription();
276
+ this.updateFormValue();
277
+ }
278
+ /**
279
+ * Listen for keyboard events on the chip elements
280
+ **/
281
+ _onChipKeyDown(event) {
282
+ const eventTarget = event.target;
283
+ if (eventTarget.localName !== "sbb-chip") return;
284
+ if (isArrowKeyPressed(event)) {
285
+ const focusSteps = this._enabledChipElements();
286
+ focusSteps[getNextElementIndex(event, focusSteps.indexOf(eventTarget), focusSteps.length)].focus();
287
+ return;
288
+ }
289
+ switch (event.key) {
290
+ case "Backspace":
291
+ case "Delete":
292
+ if (!eventTarget.readOnly && !eventTarget.disabled) {
293
+ event.preventDefault();
294
+ this._deleteChip(eventTarget);
295
+ }
296
+ break;
297
+ }
298
+ }
299
+ /**
300
+ * Listen for keyboard events on the input
301
+ **/
302
+ _onInputKeyDown(event) {
303
+ switch (event.key) {
304
+ case "Backspace":
305
+ case "ArrowLeft":
306
+ if (!this._inputElement.value) this._focusChip();
307
+ break;
308
+ case "Enter":
309
+ event.preventDefault();
310
+ break;
311
+ }
312
+ if (this.separatorKeys.includes(event.key)) {
313
+ event.preventDefault();
314
+ this._createChipFromInput("input");
315
+ }
316
+ }
317
+ /**
318
+ * Handle blur event on the input
319
+ **/
320
+ _onInputBlur() {
321
+ if (this.addOnBlur) this._createChipFromInput("input");
322
+ }
323
+ /**
324
+ * If the input is not empty, create a chip with its value
325
+ */
326
+ _createChipFromInput(origin = "input", value) {
327
+ const inputValue = value ?? this._inputElement.value.trim();
328
+ if (!inputValue) return;
329
+ const event = new SbbChipInputTokenEndEvent({
330
+ origin,
331
+ value: inputValue,
332
+ label: (value ? this.displayWith?.(value) : null) ?? void 0
333
+ });
334
+ if (!this.dispatchEvent(event)) return;
335
+ this._createChipElement(event.value, event.label);
336
+ this._inputElement.value = "";
337
+ this._emitInputEvents();
338
+ }
339
+ _deleteChip(chip) {
340
+ const chips = this._enabledChipElements();
341
+ chip.remove();
342
+ this._emitInputEvents();
343
+ this._focusChip(chips.indexOf(chip));
344
+ }
345
+ /**
346
+ * Focus an enabled chip. If none are present, focus the input
347
+ * @param index The index of the enabled chip. If null, focus the last one.
348
+ */
349
+ _focusChip(index) {
350
+ const enabledChips = this._enabledChipElements();
351
+ if (index !== void 0 && enabledChips[index]) {
352
+ enabledChips[index].focus();
353
+ return;
354
+ }
355
+ if (enabledChips.length > 0) {
356
+ enabledChips[enabledChips.length - 1].focus();
357
+ return;
358
+ }
359
+ this._inputElement?.focus();
360
+ }
361
+ _emitInputEvents() {
362
+ /** The input event fires when the value has been changed as a direct result of a user action. */
363
+ this.dispatchEvent(new InputEvent("input", {
364
+ bubbles: true,
365
+ composed: true
366
+ }));
367
+ /**
368
+ * The change event is fired when the user modifies the element's value.
369
+ * Unlike the input event, the change event is not necessarily fired
370
+ * for each alteration to an element's value.
371
+ */
372
+ this.dispatchEvent(new Event("change", { bubbles: true }));
373
+ }
374
+ _createChipElement(value, label) {
375
+ if (isServer) return;
376
+ const newChip = document.createElement("sbb-chip");
377
+ newChip.value = value;
378
+ newChip.innerText = label ?? (value ? this.displayWith?.(value) : null) ?? "";
379
+ this.insertBefore(newChip, this._inputElement ?? this.querySelector("input"));
380
+ }
381
+ _reactToInputChanges() {
382
+ this.disabled = this._inputElement?.disabled ?? false;
383
+ this._proxyStateToChips();
384
+ }
385
+ _proxyStateToChips() {
386
+ this._chipElements().forEach((c) => {
387
+ c.disabled = this.disabled || this.formDisabled;
388
+ c.readOnly = this._inputElement?.hasAttribute("readonly") ?? false;
389
+ c.negative = this.negative;
390
+ });
391
+ }
392
+ _updateSize(size) {
393
+ if (this._previousSize) this.internals.states.delete(`size-${this._previousSize}`);
394
+ this._previousSize = size;
395
+ if (this._previousSize) this.internals.states.add(`size-${this._previousSize}`);
396
+ }
397
+ _updateInputDescription() {
398
+ if (!this._inputElement) return;
399
+ this._inputElement.setAttribute("aria-description", `${i18nChipGroupInputDescription[this._language.current]} ${this.value.length}`);
400
+ }
401
+ render() {
402
+ return html`<slot @slotchange=${this._setupComponent}></slot>`;
403
+ }
404
+ };
405
+ })();
406
+ //#endregion
407
+ export { SbbChipInputTokenEndEvent as n, SbbChipGroupElement as t };
408
+
409
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1ncm91cC5jb21wb25lbnQtQlZmSFdYMi0uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NoaXAvY2hpcC1ncm91cC9jaGlwLWdyb3VwLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NoaXAvY2hpcC1ncm91cC9jaGlwLWdyb3VwLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGdhcDogdmFyKC0tc2JiLWNoaXAtZ3JvdXAtZ2FwKTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luLWJsb2NrOiB2YXIoLS1zYmItY2hpcC1ncm91cC1tYXJnaW4tYmxvY2spO1xuXG4gIC8vIFNldCB0aGUgbGluZS1oZWlnaHQgZm9yIGFkamFjZW50IGVsZW1lbnRzIGluIG9yZGVyIHRvIHByZXZlbnQgZnJvbSBpbmZsdWVuY2Ugb2YgYSBjb25zdW1lci1zZXQgbGluZS1oZWlnaHQuXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1zYmItdHlwby1saW5lLWhlaWdodC10ZXh0KTtcbn1cblxuOmhvc3QoOmlzKDpzdGF0ZShzaXplLXMpLCA6c3RhdGUoZW1wdHkpKSkge1xuICAtLXNiYi1jaGlwLWdyb3VwLW1hcmdpbi1ibG9jazogMDtcbn1cblxuOmhvc3QoOnN0YXRlKHNpemUtcyk6bm90KDpzdGF0ZShlbXB0eSkpKSB7XG4gIC0tc2JiLWNoaXAtZ3JvdXAtbWFyZ2luLWJsb2NrOiAje3NiYi5weC10by1yZW0tYnVpbGQoNil9ICN7c2JiLnB4LXRvLXJlbS1idWlsZCg1KX07XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiBsYXJnZSkge1xuICAgIC0tc2JiLWNoaXAtZ3JvdXAtbWFyZ2luLWJsb2NrOiAje3NiYi5weC10by1yZW0tYnVpbGQoNSl9ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgzKX07XG4gIH1cbn1cblxuOmhvc3QoOnN0YXRlKHdpdGhvdXQtbGFiZWwpOnN0YXRlKHNpemUtcyk6bm90KDpzdGF0ZShlbXB0eSkpKSB7XG4gIC0tc2JiLWNoaXAtZ3JvdXAtbWFyZ2luLWJsb2NrOiAwICN7c2JiLnB4LXRvLXJlbS1idWlsZCg3KX07XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiBsYXJnZSkge1xuICAgIC0tc2JiLWNoaXAtZ3JvdXAtbWFyZ2luLWJsb2NrOiAwICN7c2JiLnB4LXRvLXJlbS1idWlsZCg1KX07XG4gIH1cbn1cblxuOmhvc3QoOmlzKDpzdGF0ZShzaXplLWwpLCA6c3RhdGUoc2l6ZS1tKSkpIHtcbiAgLS1zYmItY2hpcC1ncm91cC1tYXJnaW4tYmxvY2s6IHZhcigtLV9zYmItY2hpcC1ncm91cC1tYXJnaW4tYmxvY2stc3RhcnQtZGVmYXVsdCkgMDtcblxuICBAaW5jbHVkZSBzYmIubXEoJGZyb206IGxhcmdlKSB7XG4gICAgLS1zYmItY2hpcC1ncm91cC1tYXJnaW4tYmxvY2s6IHZhcigtLV9zYmItY2hpcC1ncm91cC1tYXJnaW4tYmxvY2stc3RhcnQtZGVmYXVsdC1sYXJnZSkgMDtcbiAgfVxufVxuXG46aG9zdCg6c3RhdGUod2l0aG91dC1sYWJlbCk6c3RhdGUoc2l6ZS1tKTpub3QoOnN0YXRlKGVtcHR5KSkpIHtcbiAgLS1zYmItY2hpcC1ncm91cC1tYXJnaW4tYmxvY2s6ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgzKX0gI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDExKX07XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiBsYXJnZSkge1xuICAgIC0tc2JiLWNoaXAtZ3JvdXAtbWFyZ2luLWJsb2NrOiAje3NiYi5weC10by1yZW0tYnVpbGQoMyl9ICN7c2JiLnB4LXRvLXJlbS1idWlsZCgxNCl9O1xuICB9XG59XG5cbjpob3N0KDpzdGF0ZSh3aXRob3V0LWxhYmVsKTpub3QoOnN0YXRlKGVtcHR5KSwgOnN0YXRlKHNpemUtcyksIDpzdGF0ZShzaXplLW0pLCA6c3RhdGUoc2l6ZS1sKSkpIHtcbiAgLS1zYmItY2hpcC1ncm91cC1tYXJnaW4tYmxvY2s6IHZhcigtLXNiYi1jaGlwLWdyb3VwLW1hcmdpbi1ibG9jay1uby1sYWJlbC1ub3QtZW1wdHkpO1xufVxuXG46aG9zdCg6bm90KDpzdGF0ZSh3aXRob3V0LWxhYmVsKSk6c3RhdGUoc2l6ZS1tKTpub3QoOnN0YXRlKGVtcHR5KSkpIHtcbiAgLS1zYmItY2hpcC1ncm91cC1tYXJnaW4tYmxvY2s6IHZhcigtLV9zYmItY2hpcC1ncm91cC1tYXJnaW4tYmxvY2stc3RhcnQtZGVmYXVsdClcbiAgICB2YXIoLS1fc2JiLWNoaXAtZ3JvdXAtbWFyZ2luLWJsb2NrLXN0YXJ0LWRlZmF1bHQtbGFyZ2UpO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICAtLXNiYi1jaGlwLWdyb3VwLW1hcmdpbi1ibG9jazogdmFyKC0tX3NiYi1jaGlwLWdyb3VwLW1hcmdpbi1ibG9jay1zdGFydC1kZWZhdWx0LWxhcmdlKVxuICAgICAgdmFyKC0tX3NiYi1jaGlwLWdyb3VwLW1hcmdpbi1ibG9jay1zdGFydC1kZWZhdWx0LWxhcmdlKTtcbiAgfVxufVxuXG46aG9zdCg6bm90KDpzdGF0ZSh3aXRob3V0LWxhYmVsKSwgOnN0YXRlKGVtcHR5KSwgOnN0YXRlKHNpemUtcyksIDpzdGF0ZShzaXplLW0pLCA6c3RhdGUoc2l6ZS1sKSkpIHtcbiAgLS1zYmItY2hpcC1ncm91cC1tYXJnaW4tYmxvY2s6IHZhcigtLXNiYi1jaGlwLWdyb3VwLW1hcmdpbi1ibG9jay13aXRoLWxhYmVsLW5vdC1lbXB0eSk7XG59XG5cbjpob3N0KDpzdGF0ZSh3aXRob3V0LWxhYmVsKTpzdGF0ZShzaXplLWwpOm5vdCg6c3RhdGUoZW1wdHkpKSkge1xuICAtLXNiYi1jaGlwLWdyb3VwLW1hcmdpbi1ibG9jazogdmFyKC0tX3NiYi1jaGlwLWdyb3VwLW1hcmdpbi1ibG9jay1zdGFydC1kZWZhdWx0KVxuICAgICN7c2JiLnB4LXRvLXJlbS1idWlsZCgxNil9O1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICAtLXNiYi1jaGlwLWdyb3VwLW1hcmdpbi1ibG9jazogdmFyKC0tX3NiYi1jaGlwLWdyb3VwLW1hcmdpbi1ibG9jay1zdGFydC1kZWZhdWx0LWxhcmdlKVxuICAgICAgI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDIwKX07XG4gIH1cbn1cblxuOmhvc3QoOm5vdCg6c3RhdGUod2l0aG91dC1sYWJlbCkpOnN0YXRlKHNpemUtbCk6bm90KDpzdGF0ZShlbXB0eSkpKSB7XG4gIC0tc2JiLWNoaXAtZ3JvdXAtbWFyZ2luLWJsb2NrOiB2YXIoLS1fc2JiLWNoaXAtZ3JvdXAtbWFyZ2luLWJsb2NrLXN0YXJ0LWRlZmF1bHQpXG4gICAgI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDcuNSl9O1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICAtLXNiYi1jaGlwLWdyb3VwLW1hcmdpbi1ibG9jazogdmFyKC0tX3NiYi1jaGlwLWdyb3VwLW1hcmdpbi1ibG9jay1zdGFydC1kZWZhdWx0LWxhcmdlKVxuICAgICAgI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDcuNSl9O1xuICB9XG59XG5cbjo6c2xvdHRlZChpbnB1dCkge1xuICBmbGV4OiAxIDEgdmFyKC0tc2JiLWNoaXAtZ3JvdXAtaW5wdXQtbWluLXdpZHRoKTtcbiAgbWF4LWhlaWdodDogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDI0KX07XG59XG5cbjo6c2xvdHRlZChzYmItY2hpcCkge1xuICBtYXgtd2lkdGg6IDEwMCU7XG59XG4iLCJpbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBpc1NlcnZlcixcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbiAgdW5zYWZlQ1NTLFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGdldE5leHRFbGVtZW50SW5kZXgsIGlzQXJyb3dLZXlQcmVzc2VkIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LnRzJztcbmltcG9ydCB7IFNiYkVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UtZWxlbWVudHMudHMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLCBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy50cyc7XG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMudHMnO1xuaW1wb3J0IHsgaXNMZWFuIH0gZnJvbSAnLi4vLi4vY29yZS9kb20vbGVhbi1jb250ZXh0LnRzJztcbmltcG9ydCB7IGkxOG5DaGlwR3JvdXBJbnB1dERlc2NyaXB0aW9uLCBpMThuU2VsZWN0aW9uUmVxdWlyZWQgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4udHMnO1xuaW1wb3J0IHtcbiAgdHlwZSBGb3JtUmVzdG9yZVJlYXNvbixcbiAgdHlwZSBGb3JtUmVzdG9yZVN0YXRlLFxuICBTYmJEaXNhYmxlZE1peGluLFxuICBTYmJGb3JtQXNzb2NpYXRlZE1peGluLFxuICBTYmJOZWdhdGl2ZU1peGluLFxuICBTYmJSZXF1aXJlZE1peGluLFxufSBmcm9tICcuLi8uLi9jb3JlL21peGlucy50cyc7XG5pbXBvcnQgeyBib3hTaXppbmdTdHlsZXMgfSBmcm9tICcuLi8uLi9jb3JlL3N0eWxlcy50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkZvcm1GaWVsZEVsZW1lbnQgfSBmcm9tICcuLi8uLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPcHRpb25CYXNlRWxlbWVudCB9IGZyb20gJy4uLy4uL29wdGlvbi9vcHRpb24vb3B0aW9uLWJhc2UtZWxlbWVudC50cyc7XG5pbXBvcnQgeyBTYmJDaGlwRWxlbWVudCB9IGZyb20gJy4uL2NoaXAvY2hpcC5jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9jaGlwLWdyb3VwLnNjc3M/aW5saW5lJztcblxubGV0IGRpc3BsYXlXaXRoV2FybmluZ0xvZ2dlZCA9IGZhbHNlO1xuXG4vLyBUT0RPKGJyZWFraW5nLWNoYW5nZSk6IFJlcGxhY2UgYmFzZSBjbGFzcyB3aXRoIEV2ZW50XG5leHBvcnQgY2xhc3MgU2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudDxUID0gc3RyaW5nPiBleHRlbmRzIEN1c3RvbUV2ZW50PFxuICBTYmJDaGlwSW5wdXRUb2tlbkVuZEV2ZW50RGV0YWlsczxUPlxuPiB7XG4gIC8qKiBUaGUgZWxlbWVudCB0aGF0IHRyaWdnZXJlZCB0aGUgY2hpcCBjcmVhdGlvbiAqL1xuICBwdWJsaWMgb3JpZ2luOiAnaW5wdXQnIHwgJ2F1dG9jb21wbGV0ZSc7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIG5ldyBjaGlwLiBFaXRoZXIgdGhlIGlucHV0IG9yIHRoZSBvcHRpb24gdmFsdWUgZGVwZW5kaW5nIG9uIHRoZSBvcmlnaW4uXG4gICAqIEVpdGhlciB0aGUgdmFsdWUgZnJvbSB0aGUgaW5wdXQgd2hpY2ggaXMgYWx3YXlzIGBzdHJpbmdgIG9yIHRoZSB2YWx1ZSBmcm9tIHRoZSBzZWxlY3RlZCBvcHRpb25cbiAgICogZnJvbSBhbiBhdXRvY29tcGxldGUsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW55IG90aGVyIHR5cGUuXG4gICAqL1xuICBwdWJsaWMgdmFsdWU6IFQgfCBzdHJpbmc7XG4gIHB1YmxpYyBsYWJlbD86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGV2ZW50IHByb3BlcnRpZXMgZGlyZWN0bHkuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGRldGFpbCgpOiBTYmJDaGlwSW5wdXRUb2tlbkVuZEV2ZW50RGV0YWlsczxUPiB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogUGljazxTYmJDaGlwSW5wdXRUb2tlbkVuZEV2ZW50LCAnb3JpZ2luJyB8ICd2YWx1ZScgfCAnbGFiZWwnPikge1xuICAgIHN1cGVyKCdjaGlwaW5wdXR0b2tlbmVuZCcsIHtcbiAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgY29tcG9zZWQ6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5vcmlnaW4gPSBvcHRpb25zLm9yaWdpbjtcbiAgICB0aGlzLnZhbHVlID0gb3B0aW9ucy52YWx1ZTtcbiAgICB0aGlzLmxhYmVsID0gb3B0aW9ucy5sYWJlbDtcbiAgfVxuXG4gIC8qKiBTZXQgYSBuZXcgdmFsdWUgZm9yIHRoZSBjaGlwIHRoYXQgd2lsbCBiZSBjcmVhdGVkICovXG4gIHB1YmxpYyBzZXRWYWx1ZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuICAvKiogU2V0IGEgbGFiZWwgZm9yIHRoZSBjaGlwIHRoYXQgd2lsbCBiZSBjcmVhdGVkICovXG4gIHB1YmxpYyBzZXRMYWJlbChsYWJlbDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5sYWJlbCA9IGxhYmVsO1xuICB9XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBTYmJDaGlwSW5wdXRUb2tlbkVuZEV2ZW50YCBpbnN0ZWFkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNiYkNoaXBJbnB1dFRva2VuRW5kRXZlbnREZXRhaWxzPFQgPSBzdHJpbmc+IHtcbiAgLyoqIFRoZSBlbGVtZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBjaGlwIGNyZWF0aW9uICovXG4gIG9yaWdpbjogJ2lucHV0JyB8ICdhdXRvY29tcGxldGUnO1xuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBuZXcgY2hpcC4gRWl0aGVyIHRoZSBpbnB1dCBvciB0aGUgb3B0aW9uIHZhbHVlIGRlcGVuZGluZyBvbiB0aGUgb3JpZ2luLlxuICAgKiBFaXRoZXIgdGhlIHZhbHVlIGZyb20gdGhlIGlucHV0IHdoaWNoIGlzIGFsd2F5cyBgc3RyaW5nYCBvciB0aGUgdmFsdWUgZnJvbSB0aGUgc2VsZWN0ZWQgb3B0aW9uXG4gICAqIGZyb20gYW4gYXV0b2NvbXBsZXRlLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFueSBvdGhlciB0eXBlLlxuICAgKi9cbiAgdmFsdWU6IFQgfCBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICAvKiogU2V0IGEgbmV3IHZhbHVlIGZvciB0aGUgY2hpcCB0aGF0IHdpbGwgYmUgY3JlYXRlZCAqL1xuICBzZXRWYWx1ZSh2YWx1ZTogVCk6IHZvaWQ7XG4gIC8qKiBTZXQgYSBsYWJlbCBmb3IgdGhlIGNoaXAgdGhhdCB3aWxsIGJlIGNyZWF0ZWQgKi9cbiAgc2V0TGFiZWwodmFsdWU6IHN0cmluZyk6IHZvaWQ7XG59XG5cbi8qKlxuICogVGhlIGBzYmItY2hpcC1ncm91cGAgY29tcG9uZW50IGlzIHVzZWQgYXMgYSBjb250YWluZXIgZm9yIG9uZSBvciBtdWx0aXBsZSBgc2JiLWNoaXBgLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGBzYmItY2hpcGAgZWxlbWVudHMuXG4gKiBAZXZlbnQge1NiYkNoaXBJbnB1dFRva2VuRW5kRXZlbnQ8VD59IGNoaXBpbnB1dHRva2VuZW5kIC0gTm90aWZpZXMgdGhhdCBhIGNoaXAgaXMgYWJvdXQgdG8gYmUgY3JlYXRlZC4gQ2FuIGJlIHByZXZlbnRlZC5cbiAqIEBvdmVycmlkZVR5cGUgdmFsdWUgLSAoVCA9IHN0cmluZ1tdKSB8IG51bGxcbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkNoaXBHcm91cEVsZW1lbnQ8VCA9IHN0cmluZz4gZXh0ZW5kcyBTYmJSZXF1aXJlZE1peGluKFxuICBTYmJEaXNhYmxlZE1peGluKFNiYk5lZ2F0aXZlTWl4aW4oU2JiRm9ybUFzc29jaWF0ZWRNaXhpbihTYmJFbGVtZW50KSkpLFxuKSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItY2hpcC1ncm91cCc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgcm9sZSA9ICdsaXN0Ym94JztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIGlucHV0OiAnaW5wdXQnLFxuICAgIGNoYW5nZTogJ2NoYW5nZScsXG4gICAgY2hpcGlucHV0dG9rZW5lbmQ6ICdjaGlwaW5wdXR0b2tlbmVuZCcsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqIFZhbHVlIG9mIHRoZSBmb3JtIGVsZW1lbnQuICovXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEFycmF5IH0pXG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IChUIHwgbnVsbClbXSB8IG51bGwpIHtcbiAgICB2YWx1ZSA9IHZhbHVlID8/IFtdO1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy52YWx1ZTtcblxuICAgIC8vIFN1YnRyYWN0IGZyb20gJ29sZFZhbHVlJyB0aGUgbmV3ICd2YWx1ZSdcbiAgICAvLyBUaGUgcmVzdWx0IGFyZSB0aGUgY2hpcHMgdG8gcmVtb3ZlIChoYW5kbGUgZHVwbGljYXRlcylcbiAgICBjb25zdCB0b1JlbW92ZSA9IFsuLi5vbGRWYWx1ZV07XG4gICAgZm9yIChjb25zdCBjIG9mIHZhbHVlKSB7XG4gICAgICBpZiAodG9SZW1vdmUuaW5jbHVkZXMoYykpIHtcbiAgICAgICAgdG9SZW1vdmUuc3BsaWNlKHRvUmVtb3ZlLmluZGV4T2YoYyksIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICB0b1JlbW92ZS5mb3JFYWNoKCh2YWx1ZSkgPT5cbiAgICAgIHRoaXMuX2NoaXBFbGVtZW50cygpXG4gICAgICAgIC5maW5kKChjKSA9PiBjLnZhbHVlID09PSB2YWx1ZSlcbiAgICAgICAgPy5yZW1vdmUoKSxcbiAgICApO1xuXG4gICAgLy8gU3VidHJhY3QgZnJvbSB0aGUgbmV3ICd2YWx1ZScgd2hhdCB3YXMgYWxyZWFkeSBwcmVzZW50XG4gICAgLy8gVGhlIHJlc3VsdCBhcmUgdGhlIG5ldyBjaGlwcyB0byBhZGQgKGhhbmRsZSBkdXBsaWNhdGVzKVxuICAgIGNvbnN0IHRvQWRkID0gWy4uLnZhbHVlXTtcbiAgICBmb3IgKGNvbnN0IGMgb2Ygb2xkVmFsdWUpIHtcbiAgICAgIGlmICh0b0FkZC5pbmNsdWRlcyhjKSkge1xuICAgICAgICB0b0FkZC5zcGxpY2UodG9BZGQuaW5kZXhPZihjKSwgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRvQWRkLmZvckVhY2goKGMpID0+IHRoaXMuX2NyZWF0ZUNoaXBFbGVtZW50KGMpKTtcbiAgfVxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IChUIHwgbnVsbClbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2NoaXBFbGVtZW50cygpLm1hcCgoYykgPT4gYy52YWx1ZSk7XG4gIH1cblxuICAvKiogRnVuY3Rpb24gdGhhdCBtYXBzIGEgY2hpcCdzIHZhbHVlIHRvIGl0cyBkaXNwbGF5IHZhbHVlLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6IGZhbHNlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBkaXNwbGF5V2l0aDogKCh2YWx1ZTogVCkgPT4gc3RyaW5nKSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBUaGUgYXJyYXkgb2Yga2V5cyB0aGF0IHdpbGwgdHJpZ2dlciBhIGBjaGlwaW5wdXR0b2tlbmVuZGAgZXZlbnQuIERlZmF1bHQgYFsnRW50ZXInXWAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnc2VwYXJhdG9yLWtleXMnLCB0eXBlOiBBcnJheSB9KVxuICBwdWJsaWMgYWNjZXNzb3Igc2VwYXJhdG9yS2V5czogc3RyaW5nW10gPSBbJ0VudGVyJ107XG5cbiAgLyoqIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBhZGQgYSBjaGlwIHdoZW4gdGhlIGlucHV0IGxvc2VzIGZvY3VzIGlmIHRoZXJlJ3MgYSB2YWx1ZS4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FkZC1vbi1ibHVyJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYWRkT25CbHVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIExpc3RlbnMgdG8gdGhlIGNoYW5nZXMgb24gYHJlYWRvbmx5YCBhbmQgYGRpc2FibGVkYCBhdHRyaWJ1dGVzIG9mIGA8aW5wdXQ+YC5cbiAgICovXG4gIHByaXZhdGUgX2lucHV0QXR0cmlidXRlT2JzZXJ2ZXIgPSAhaXNTZXJ2ZXJcbiAgICA/IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHRoaXMuX3JlYWN0VG9JbnB1dENoYW5nZXMoKSlcbiAgICA6IG51bGw7XG5cbiAgcHJpdmF0ZSBfaW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9pbnB1dEFib3J0Q29udHJvbGxlcjogQWJvcnRDb250cm9sbGVyIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX3ByZXZpb3VzU2l6ZT86IFNiYkZvcm1GaWVsZEVsZW1lbnRbJ3NpemUnXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKFNiYkNoaXBFbGVtZW50LmV2ZW50cy5yZXF1ZXN0ZGVsZXRlLCAoZXYpID0+XG4gICAgICB0aGlzLl9kZWxldGVDaGlwKGV2LnRhcmdldCBhcyBTYmJDaGlwRWxlbWVudDxUPiksXG4gICAgKTtcblxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdrZXlkb3duJywgKGV2KSA9PiB0aGlzLl9vbkNoaXBLZXlEb3duKGV2KSk7XG5cbiAgICB0aGlzLmFkZENvbnRyb2xsZXIoXG4gICAgICBuZXcgU2JiUHJvcGVydHlXYXRjaGVyQ29udHJvbGxlcih0aGlzLCAoKSA9PiB0aGlzLmNsb3Nlc3QoJ3NiYi1mb3JtLWZpZWxkJyksIHtcbiAgICAgICAgc2l6ZTogKGZvcm1GaWVsZCkgPT4gdGhpcy5fdXBkYXRlU2l6ZShmb3JtRmllbGQuc2l6ZSksXG4gICAgICAgIGxhYmVsOiAoZm9ybUZpZWxkKSA9PiB0aGlzLl91cGRhdGVMYWJlbFN0YXRlKGZvcm1GaWVsZCksXG4gICAgICAgIGhpZGRlbkxhYmVsOiAoZm9ybUZpZWxkKSA9PiB0aGlzLl91cGRhdGVMYWJlbFN0YXRlKGZvcm1GaWVsZCksXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlTGFiZWxTdGF0ZShmb3JtRmllbGQ6IFNiYkZvcm1GaWVsZEVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCd3aXRob3V0LWxhYmVsJywgIWZvcm1GaWVsZC5sYWJlbCB8fCBmb3JtRmllbGQuaGlkZGVuTGFiZWwpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fc2V0dXBDb21wb25lbnQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlcyk6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKFxuICAgICAgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkaXNhYmxlZCcpIHx8XG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Zvcm1EaXNhYmxlZCcpIHx8XG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJylcbiAgICApIHtcbiAgICAgIHRoaXMuX3Byb3h5U3RhdGVUb0NoaXBzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgZm9ybVJlc2V0Q2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyBmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2soXG4gICAgc3RhdGU6IEZvcm1SZXN0b3JlU3RhdGUgfCBudWxsLFxuICAgIF9yZWFzb246IEZvcm1SZXN0b3JlUmVhc29uLFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXN0YXRlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9yZWFkRm9ybURhdGEoc3RhdGUgYXMgRm9ybURhdGEpLnRoZW4oKGFycmF5KSA9PiAodGhpcy52YWx1ZSA9IGFycmF5KSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9yZWFkRm9ybURhdGEoZm9ybURhdGE6IEZvcm1EYXRhKTogUHJvbWlzZTxUW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICBmb3JtRGF0YVxuICAgICAgICAuZ2V0QWxsKHRoaXMubmFtZSlcbiAgICAgICAgLm1hcChhc3luYyAoZW50cnkpID0+XG4gICAgICAgICAgZW50cnkgaW5zdGFuY2VvZiBCbG9iID8gSlNPTi5wYXJzZShhd2FpdCBlbnRyeS50ZXh0KCkpIDogKGVudHJ5IGFzIFQpLFxuICAgICAgICApLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2hvdWxkVmFsaWRhdGUobmFtZTogUHJvcGVydHlLZXkgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3VwZXIuc2hvdWxkVmFsaWRhdGUobmFtZSkgfHwgbmFtZSA9PT0gJ3JlcXVpcmVkJyB8fCBuYW1lID09PSAndmFsdWUnO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHZhbGlkYXRlKCk6IHZvaWQge1xuICAgIHN1cGVyLnZhbGlkYXRlKCk7XG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgdGhpcy52YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuc2V0VmFsaWRpdHlGbGFnKCd2YWx1ZU1pc3NpbmcnLCBpMThuU2VsZWN0aW9uUmVxdWlyZWRbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbW92ZVZhbGlkaXR5RmxhZygndmFsdWVNaXNzaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJldHVybiB0aGUgbGlzdCBvZiBjaGlwIGVsZW1lbnRzICoqL1xuICBwcml2YXRlIF9jaGlwRWxlbWVudHMoKTogU2JiQ2hpcEVsZW1lbnQ8VD5bXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsPy48U2JiQ2hpcEVsZW1lbnQ8VD4+KCdzYmItY2hpcCcpID8/IFtdKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm4gdGhlIGxpc3Qgb2YgZW5hYmxlZCBjaGlwIGVsZW1lbnRzICoqL1xuICBwcml2YXRlIF9lbmFibGVkQ2hpcEVsZW1lbnRzKCk6IFNiYkNoaXBFbGVtZW50PFQ+W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbD8uKCdzYmItY2hpcDpub3QoW2Rpc2FibGVkXSknKSA/PyBbXSk7XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cENvbXBvbmVudCgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcblxuICAgIC8vIENvbm5lY3QgdG8gdGhlIGlucHV0XG4gICAgaWYgKGlucHV0ICYmIGlucHV0ICE9PSB0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5faW5wdXRBdHRyaWJ1dGVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50ID0gaW5wdXQ7XG5cbiAgICAgIHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXYpID0+IHRoaXMuX29uSW5wdXRLZXlEb3duKGV2KSwge1xuICAgICAgICBzaWduYWw6IHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB0aGlzLl9vbklucHV0Qmx1cigpLCB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBjYXB0dXJlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ2lucHV0QXV0b2NvbXBsZXRlJyxcbiAgICAgICAgKGV2ZW50OiBDdXN0b21FdmVudDx7IG9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4gfT4pID0+IHtcbiAgICAgICAgICB0aGlzLl9jcmVhdGVDaGlwRnJvbUlucHV0KCdhdXRvY29tcGxldGUnLCBldmVudC5kZXRhaWw/Lm9wdGlvbi52YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBzaWduYWw6IHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuX2lucHV0QXR0cmlidXRlT2JzZXJ2ZXI/Lm9ic2VydmUodGhpcy5faW5wdXRFbGVtZW50LCB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydyZWFkb25seScsICdkaXNhYmxlZCddLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gSW5oZXJpdCBzaXplIGZyb20gdGhlIGZvcm0tZmllbGQgYW5kIG9ic2VydmUgZm9yIGNoYW5nZXNcbiAgICBpZiAoIXRoaXMuX3ByZXZpb3VzU2l6ZSB8fCAhdGhpcy5jbG9zZXN0KCdzYmItZm9ybS1maWVsZCcpKSB7XG4gICAgICB0aGlzLl91cGRhdGVTaXplKGlzTGVhbigpID8gJ3MnIDogJ20nKTtcbiAgICB9XG5cbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCdlbXB0eScsIHRoaXMudmFsdWUubGVuZ3RoID09PSAwKTtcbiAgICB0aGlzLl9yZWFjdFRvSW5wdXRDaGFuZ2VzKCk7XG4gICAgdGhpcy5fdXBkYXRlSW5wdXREZXNjcmlwdGlvbigpO1xuICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIGZvciBrZXlib2FyZCBldmVudHMgb24gdGhlIGNoaXAgZWxlbWVudHNcbiAgICoqL1xuICBwcml2YXRlIF9vbkNoaXBLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnRUYXJnZXQgPSBldmVudC50YXJnZXQgYXMgU2JiQ2hpcEVsZW1lbnQ8VD47XG4gICAgaWYgKGV2ZW50VGFyZ2V0LmxvY2FsTmFtZSAhPT0gJ3NiYi1jaGlwJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEFycm93IGtleXMgYWxsb3cgbmF2aWdhdGlvbiBiZXR3ZWVuIGNoaXBzIGZvY3VzIHN0ZXBzXG4gICAgaWYgKGlzQXJyb3dLZXlQcmVzc2VkKGV2ZW50KSkge1xuICAgICAgY29uc3QgZm9jdXNTdGVwcyA9IHRoaXMuX2VuYWJsZWRDaGlwRWxlbWVudHMoKTtcbiAgICAgIGNvbnN0IG5leHQgPSBnZXROZXh0RWxlbWVudEluZGV4KGV2ZW50LCBmb2N1c1N0ZXBzLmluZGV4T2YoZXZlbnRUYXJnZXQpLCBmb2N1c1N0ZXBzLmxlbmd0aCk7XG4gICAgICBmb2N1c1N0ZXBzW25leHRdLmZvY3VzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICBpZiAoIWV2ZW50VGFyZ2V0LnJlYWRPbmx5ICYmICFldmVudFRhcmdldC5kaXNhYmxlZCkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5fZGVsZXRlQ2hpcChldmVudFRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiBmb3Iga2V5Ym9hcmQgZXZlbnRzIG9uIHRoZSBpbnB1dFxuICAgKiovXG4gIHByaXZhdGUgX29uSW5wdXRLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICBpZiAoIXRoaXMuX2lucHV0RWxlbWVudCEudmFsdWUpIHtcbiAgICAgICAgICB0aGlzLl9mb2N1c0NoaXAoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gUHJldmVudHMgdGhlIGZvcm0gc3VibWl0XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIGlmIHRoZSB1c2VyIHR5cGVkIG9uZSBvZiB0aGUgc2VwYXJhdG9yIGtleXMsIHRyaWdnZXIgYSAnY2hpcGlucHV0dG9rZW5lbmQnIGV2ZW50XG4gICAgaWYgKHRoaXMuc2VwYXJhdG9yS2V5cy5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBwcmV2ZW50IHR5cGluZyB0aGUgc2VwYXJhdG9yIGtleSBpbnRvIHRoZSBpbnB1dFxuICAgICAgdGhpcy5fY3JlYXRlQ2hpcEZyb21JbnB1dCgnaW5wdXQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGJsdXIgZXZlbnQgb24gdGhlIGlucHV0XG4gICAqKi9cbiAgcHJpdmF0ZSBfb25JbnB1dEJsdXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWRkT25CbHVyKSB7XG4gICAgICB0aGlzLl9jcmVhdGVDaGlwRnJvbUlucHV0KCdpbnB1dCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgaW5wdXQgaXMgbm90IGVtcHR5LCBjcmVhdGUgYSBjaGlwIHdpdGggaXRzIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIF9jcmVhdGVDaGlwRnJvbUlucHV0KG9yaWdpbjogJ2lucHV0JyB8ICdhdXRvY29tcGxldGUnID0gJ2lucHV0JywgdmFsdWU/OiBUKTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IHZhbHVlID8/IHRoaXMuX2lucHV0RWxlbWVudCEudmFsdWUudHJpbSgpO1xuICAgIGlmICghaW5wdXRWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGV2ZW50ID0gbmV3IFNiYkNoaXBJbnB1dFRva2VuRW5kRXZlbnQ8VD4oe1xuICAgICAgb3JpZ2luLFxuICAgICAgdmFsdWU6IGlucHV0VmFsdWUgYXMgc3RyaW5nLFxuICAgICAgbGFiZWw6ICh2YWx1ZSA/IHRoaXMuZGlzcGxheVdpdGg/Lih2YWx1ZSkgOiBudWxsKSA/PyB1bmRlZmluZWQsXG4gICAgfSk7XG4gICAgaWYgKCF0aGlzLmRpc3BhdGNoRXZlbnQoZXZlbnQpKSB7XG4gICAgICByZXR1cm47IC8vIGV2ZW50IHByZXZlbnRlZDsgZG8gbm90aGluZyAodGhlIGNvbnN1bWVyIGhhcyB0byBjcmVhdGUgdGhlIGNoaXApXG4gICAgfVxuXG4gICAgdGhpcy5fY3JlYXRlQ2hpcEVsZW1lbnQoZXZlbnQudmFsdWUgYXMgVCwgZXZlbnQubGFiZWwpO1xuICAgIHRoaXMuX2lucHV0RWxlbWVudCEudmFsdWUgPSAnJzsgLy8gRW1wdHkgdGhlIGlucHV0XG4gICAgdGhpcy5fZW1pdElucHV0RXZlbnRzKCk7XG4gIH1cblxuICBwcml2YXRlIF9kZWxldGVDaGlwKGNoaXA6IFNiYkNoaXBFbGVtZW50PFQ+KTogdm9pZCB7XG4gICAgY29uc3QgY2hpcHMgPSB0aGlzLl9lbmFibGVkQ2hpcEVsZW1lbnRzKCk7XG4gICAgY2hpcC5yZW1vdmUoKTtcbiAgICB0aGlzLl9lbWl0SW5wdXRFdmVudHMoKTtcbiAgICB0aGlzLl9mb2N1c0NoaXAoY2hpcHMuaW5kZXhPZihjaGlwKSk7IC8vIEZvY3VzIHRoZSBuZXh0IGNoaXBcbiAgfVxuXG4gIC8qKlxuICAgKiBGb2N1cyBhbiBlbmFibGVkIGNoaXAuIElmIG5vbmUgYXJlIHByZXNlbnQsIGZvY3VzIHRoZSBpbnB1dFxuICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBlbmFibGVkIGNoaXAuIElmIG51bGwsIGZvY3VzIHRoZSBsYXN0IG9uZS5cbiAgICovXG4gIHByaXZhdGUgX2ZvY3VzQ2hpcChpbmRleD86IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWRDaGlwcyA9IHRoaXMuX2VuYWJsZWRDaGlwRWxlbWVudHMoKTtcblxuICAgIGlmIChpbmRleCAhPT0gdW5kZWZpbmVkICYmIGVuYWJsZWRDaGlwc1tpbmRleF0pIHtcbiAgICAgIGVuYWJsZWRDaGlwc1tpbmRleF0uZm9jdXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZW5hYmxlZENoaXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIGVuYWJsZWRDaGlwc1tlbmFibGVkQ2hpcHMubGVuZ3RoIC0gMV0uZm9jdXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pbnB1dEVsZW1lbnQ/LmZvY3VzKCk7XG4gIH1cblxuICBwcml2YXRlIF9lbWl0SW5wdXRFdmVudHMoKTogdm9pZCB7XG4gICAgLyoqIFRoZSBpbnB1dCBldmVudCBmaXJlcyB3aGVuIHRoZSB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkIGFzIGEgZGlyZWN0IHJlc3VsdCBvZiBhIHVzZXIgYWN0aW9uLiAqL1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSW5wdXRFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBtb2RpZmllcyB0aGUgZWxlbWVudCdzIHZhbHVlLlxuICAgICAqIFVubGlrZSB0aGUgaW5wdXQgZXZlbnQsIHRoZSBjaGFuZ2UgZXZlbnQgaXMgbm90IG5lY2Vzc2FyaWx5IGZpcmVkXG4gICAgICogZm9yIGVhY2ggYWx0ZXJhdGlvbiB0byBhbiBlbGVtZW50J3MgdmFsdWUuXG4gICAgICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUNoaXBFbGVtZW50KHZhbHVlOiBUIHwgbnVsbCwgbGFiZWw/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmV3Q2hpcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NiYi1jaGlwJykgYXMgU2JiQ2hpcEVsZW1lbnQ8VD47XG4gICAgbmV3Q2hpcC52YWx1ZSA9IHZhbHVlO1xuICAgIG5ld0NoaXAuaW5uZXJUZXh0ID0gbGFiZWwgPz8gKHZhbHVlID8gdGhpcy5kaXNwbGF5V2l0aD8uKHZhbHVlKSA6IG51bGwpID8/ICcnO1xuICAgIGlmIChcbiAgICAgIGltcG9ydC5tZXRhLmVudi5ERVYgJiZcbiAgICAgICFkaXNwbGF5V2l0aFdhcm5pbmdMb2dnZWQgJiZcbiAgICAgICFsYWJlbCAmJlxuICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgIXRoaXMuZGlzcGxheVdpdGhcbiAgICApIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYGRpc3BsYXlXaXRoIGhhcyBub3QgYmVlbiBzZXQgeWV0IGZvciBzYmItY2hpcC1ncm91cCBhbmQgdmFsdWUgaXMgYW4gb2JqZWN0LlxuICAgICAgICAgSWYgeW91IGFyZSB1c2luZyBvYmplY3QgdmFsdWVzLCB5b3UgbmVlZCB0byBwcm92aWRlIGRpc3BsYXlXaWR0aCBiZWZvcmVcbiAgICAgICAgIHNldHRpbmcgb3Igc2VsZWN0aW5nIGFueSB2YWx1ZS5gLFxuICAgICAgKTtcbiAgICAgIGRpc3BsYXlXaXRoV2FybmluZ0xvZ2dlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuaW5zZXJ0QmVmb3JlKG5ld0NoaXAsIHRoaXMuX2lucHV0RWxlbWVudCA/PyB0aGlzLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVhY3RUb0lucHV0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gdGhpcy5faW5wdXRFbGVtZW50Py5kaXNhYmxlZCA/PyBmYWxzZTtcbiAgICB0aGlzLl9wcm94eVN0YXRlVG9DaGlwcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJveHlTdGF0ZVRvQ2hpcHMoKTogdm9pZCB7XG4gICAgdGhpcy5fY2hpcEVsZW1lbnRzKCkuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgYy5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5mb3JtRGlzYWJsZWQ7XG4gICAgICBjLnJlYWRPbmx5ID0gdGhpcy5faW5wdXRFbGVtZW50Py5oYXNBdHRyaWJ1dGUoJ3JlYWRvbmx5JykgPz8gZmFsc2U7XG4gICAgICBjLm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVNpemUoc2l6ZTogU2JiRm9ybUZpZWxkRWxlbWVudFsnc2l6ZSddKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3ByZXZpb3VzU2l6ZSkge1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZShgc2l6ZS0ke3RoaXMuX3ByZXZpb3VzU2l6ZX1gKTtcbiAgICB9XG4gICAgdGhpcy5fcHJldmlvdXNTaXplID0gc2l6ZTtcbiAgICBpZiAodGhpcy5fcHJldmlvdXNTaXplKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKGBzaXplLSR7dGhpcy5fcHJldmlvdXNTaXplfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUlucHV0RGVzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5faW5wdXRFbGVtZW50LnNldEF0dHJpYnV0ZShcbiAgICAgICdhcmlhLWRlc2NyaXB0aW9uJyxcbiAgICAgIGAke2kxOG5DaGlwR3JvdXBJbnB1dERlc2NyaXB0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke3RoaXMudmFsdWUubGVuZ3RofWAsXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5fc2V0dXBDb21wb25lbnR9Pjwvc2xvdD5gO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItY2hpcC1ncm91cCc6IFNiYkNoaXBHcm91cEVsZW1lbnQ7XG4gIH1cblxuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRFdmVudE1hcCB7XG4gICAgY2hpcGlucHV0dG9rZW5lbmQ6IFNiYkNoaXBJbnB1dFRva2VuRW5kRXZlbnQ8YW55PjtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FDa0NBLElBQWEsNEJBQWIsY0FBMkQsWUFFMUQ7Ozs7Q0FjQyxJQUFvQixTQUFNO0FBQ3hCLFNBQU87O0NBR1QsWUFBbUIsU0FBc0U7QUFDdkYsUUFBTSxxQkFBcUI7R0FDekIsWUFBWTtHQUNaLFNBQVM7R0FDVCxVQUFVO0dBQ1gsQ0FBQztBQUNGLE9BQUssU0FBUyxRQUFRO0FBQ3RCLE9BQUssUUFBUSxRQUFRO0FBQ3JCLE9BQUssUUFBUSxRQUFROzs7Q0FJaEIsU0FBUyxPQUFRO0FBQ3RCLE9BQUssUUFBUTs7O0NBR1IsU0FBUyxPQUFhO0FBQzNCLE9BQUssUUFBUTs7Ozs7Ozs7OztJQThCSiw2QkFBbUI7bUJBQXFCLGlCQUNuRCxpQkFBaUIsaUJBQWlCLHVCQUF1QixXQUFXLENBQUMsQ0FBQyxDQUN2RTs7Ozs7Ozs7Ozs7O2NBRlksNEJBQXdDLFlBRXBEOzs7NEJBV0UsU0FBUyxFQUFFLE1BQU0sT0FBTyxDQUFDLENBQUE7OEJBa0N6QixTQUFTLEVBQUUsV0FBVyxPQUFPLENBQUMsQ0FBQTtnQ0FJOUIsU0FBUztJQUFFLFdBQVc7SUFBa0IsTUFBTTtJQUFPLENBQUMsQ0FBQTs0QkFJdEQsV0FBVyxFQUNYLFNBQVM7SUFBRSxXQUFXO0lBQWUsTUFBTTtJQUFTLENBQUMsQ0FBQTtBQTFDdEQsZ0JBQUEsTUFBQSxNQUFBLHVCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsV0FBQTtLQUFBLE1BQUEsS0FBQSxVQUFBO0FBQUEsVUFBVyxRQUFLOztLQUFBO0lBQUEsVUFBQTtJQUFBLEVBQUEsTUFBQSwyQkFBQTtBQWtDaEIsZ0JBQUEsTUFBQSxNQUFBLHlCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsaUJBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBVyxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVgsY0FBVzs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLDJCQUFBLCtCQUFBO0FBSTNCLGdCQUFBLE1BQUEsTUFBQSwyQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLG1CQUFBO0tBQUEsTUFBQSxRQUFBLElBQWdCO0tBQWEsTUFBQSxLQUFBLFVBQUE7QUFBQSxVQUFiLGdCQUFhOztLQUFBO0lBQUEsVUFBQTtJQUFBLEVBQUEsNkJBQUEsaUNBQUE7QUFLN0IsZ0JBQUEsTUFBQSxNQUFBLHVCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsZUFBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFTLE1BQUEsS0FBQSxVQUFBO0FBQUEsVUFBVCxZQUFTOztLQUFBO0lBQUEsVUFBQTtJQUFBLEVBQUEseUJBQUEsNkJBQUE7Ozs7Ozs7OztBQXRETyxRQUFBLGNBQXNCOzs7QUFDdEIsUUFBQSxPQUFPOzs7QUFDaEIsUUFBQSxTQUF5QixDQUFDLGlCQUFpQixVQUFVLG1CQUFNLENBQUM7OztBQUM1RCxRQUFBLFNBQVM7SUFDOUIsT0FBTztJQUNQLFFBQVE7SUFDUixtQkFBbUI7SUFDWDs7O0VBSVYsSUFBVyxNQUFNLE9BQTBCO0FBQ3pDLFdBQVEsU0FBUyxFQUFFO0dBQ25CLE1BQU0sV0FBVyxLQUFLO0dBSXRCLE1BQU0sV0FBVyxDQUFDLEdBQUcsU0FBUztBQUM5QixRQUFLLE1BQU0sS0FBSyxNQUNkLEtBQUksU0FBUyxTQUFTLEVBQUUsQ0FDdEIsVUFBUyxPQUFPLFNBQVMsUUFBUSxFQUFFLEVBQUUsRUFBRTtBQUczQyxZQUFTLFNBQVMsVUFDaEIsS0FBSyxlQUFlLENBQ2pCLE1BQU0sTUFBTSxFQUFFLFVBQVUsTUFBTSxFQUM3QixRQUFRLENBQ2I7R0FJRCxNQUFNLFFBQVEsQ0FBQyxHQUFHLE1BQU07QUFDeEIsUUFBSyxNQUFNLEtBQUssU0FDZCxLQUFJLE1BQU0sU0FBUyxFQUFFLENBQ25CLE9BQU0sT0FBTyxNQUFNLFFBQVEsRUFBRSxFQUFFLEVBQUU7QUFHckMsU0FBTSxTQUFTLE1BQU0sS0FBSyxtQkFBbUIsRUFBRSxDQUFDOztFQUVsRCxJQUFXLFFBQUs7QUFDZCxVQUFPLEtBQUssZUFBZSxDQUFDLEtBQUssTUFBTSxFQUFFLE1BQU07O0VBS2pEOztFQUFBLElBQWdCLGNBQVc7QUFBQSxVQUFBLE1BQUE7O0VBQTNCLElBQWdCLFlBQVcsT0FBQTtBQUFBLFNBQUEsK0JBQUE7O0VBSTNCOztFQUFBLElBQWdCLGdCQUFhO0FBQUEsVUFBQSxNQUFBOztFQUE3QixJQUFnQixjQUFhLE9BQUE7QUFBQSxTQUFBLGlDQUFBOztFQUs3Qjs7RUFBQSxJQUFnQixZQUFTO0FBQUEsVUFBQSxNQUFBOztFQUF6QixJQUFnQixVQUFTLE9BQUE7QUFBQSxTQUFBLDZCQUFBOztFQWN6QixjQUFBO0FBQ0UsVUFBTztBQXhCTyxTQUFBLGdDQWhETCxrQkFBQSxNQUFBLDJCQUFtQixFQUFBLGtCQUFBLE1BQUEsMkJBZ0QrQixLQUFJO0FBSWpELFNBQUEsa0NBQUEsa0JBQUEsTUFBQSwrQkFBQSxFQUFBLGtCQUFBLE1BQUEsNkJBQTBCLENBQUMsUUFBUSxDQUFBO0FBS25DLFNBQUEsOEJBQUEsa0JBQUEsTUFBQSxpQ0FBQSxFQUFBLGtCQUFBLE1BQUEseUJBQXFCLE1BQUs7Ozs7QUFLbEMsUUFBQSwyQkFBdUIsa0JBQUEsTUFBQSw2QkFBQSxFQUFHLENBQUMsV0FDL0IsSUFBSSx1QkFBdUIsS0FBSyxzQkFBc0IsQ0FBQyxHQUN2RDtBQUlJLFFBQUEsWUFBWSxJQUFJLHNCQUFzQixLQUFLO0FBTWpELFFBQUssbUJBQW1CLGVBQWUsT0FBTyxnQkFBZ0IsT0FDNUQsS0FBSyxZQUFZLEdBQUcsT0FBNEIsQ0FDakQ7QUFFRCxRQUFLLG1CQUFtQixZQUFZLE9BQU8sS0FBSyxlQUFlLEdBQUcsQ0FBQztBQUVuRSxRQUFLLGNBQ0gsSUFBSSw2QkFBNkIsWUFBWSxLQUFLLFFBQVEsaUJBQWlCLEVBQUU7SUFDM0UsT0FBTyxjQUFjLEtBQUssWUFBWSxVQUFVLEtBQUs7SUFDckQsUUFBUSxjQUFjLEtBQUssa0JBQWtCLFVBQVU7SUFDdkQsY0FBYyxjQUFjLEtBQUssa0JBQWtCLFVBQUE7SUFDcEQsQ0FBQyxDQUNIOztFQUdLLGtCQUFrQixXQUE4QjtBQUN0RCxRQUFLLFlBQVksaUJBQWlCLENBQUMsVUFBVSxTQUFTLFVBQVUsWUFBWTs7RUFHOUQsb0JBQWlCO0FBQy9CLFNBQU0sbUJBQW1CO0FBQ3pCLFFBQUssaUJBQWlCOztFQUdMLFdBQVcsbUJBQWlDO0FBQzdELFNBQU0sV0FBVyxrQkFBa0I7QUFFbkMsT0FDRSxrQkFBa0IsSUFBSSxXQUFXLElBQ2pDLGtCQUFrQixJQUFJLGVBQWUsSUFDckMsa0JBQWtCLElBQUksV0FBVyxDQUVqQyxNQUFLLG9CQUFvQjs7O0VBS3RCLG9CQUFpQjtBQUN0QixRQUFLLFFBQVE7OztFQUlSLHlCQUNMLE9BQ0EsU0FBMEI7QUFFMUIsT0FBSSxDQUFDLE9BQU87QUFDVixTQUFLLFFBQVE7QUFDYjs7QUFHRixRQUFLLGNBQWMsTUFBa0IsQ0FBQyxNQUFNLFVBQVcsS0FBSyxRQUFRLE1BQU87O0VBR3JFLE1BQU0sY0FBYyxVQUFrQjtBQUM1QyxVQUFPLFFBQVEsSUFDYixTQUNHLE9BQU8sS0FBSyxLQUFLLENBQ2pCLElBQUksT0FBTyxVQUNWLGlCQUFpQixPQUFPLEtBQUssTUFBTSxNQUFNLE1BQU0sTUFBTSxDQUFDLEdBQUksTUFDM0QsQ0FDSjs7RUFHZ0IsZUFBZSxNQUE2QjtBQUM3RCxVQUFPLE1BQU0sZUFBZSxLQUFLLElBQUksU0FBUyxjQUFjLFNBQVM7O0VBR3BELFdBQVE7QUFDekIsU0FBTSxVQUFVO0FBQ2hCLE9BQUksS0FBSyxZQUFZLEtBQUssTUFBTSxXQUFXLEVBQ3pDLE1BQUssZ0JBQWdCLGdCQUFnQixzQkFBc0IsS0FBSyxVQUFVLFNBQVM7T0FFbkYsTUFBSyxtQkFBbUIsZUFBZTs7O0VBS25DLGdCQUFhO0FBQ25CLFVBQU8sTUFBTSxLQUFLLEtBQUssbUJBQXNDLFdBQVcsSUFBSSxFQUFFLENBQUM7OztFQUl6RSx1QkFBb0I7QUFDMUIsVUFBTyxNQUFNLEtBQUssS0FBSyxtQkFBbUIsMkJBQTJCLElBQUksRUFBRSxDQUFDOztFQUd0RSxrQkFBZTtHQUNyQixNQUFNLFFBQVEsS0FBSyxjQUFjLFFBQVE7QUFHekMsT0FBSSxTQUFTLFVBQVUsS0FBSyxlQUFlO0FBQ3pDLFNBQUssdUJBQXVCLE9BQU87QUFDbkMsU0FBSyx5QkFBeUIsWUFBWTtBQUMxQyxTQUFLLGdCQUFnQjtBQUVyQixTQUFLLHdCQUF3QixJQUFJLGlCQUFpQjtBQUNsRCxTQUFLLGNBQWMsaUJBQWlCLFlBQVksT0FBTyxLQUFLLGdCQUFnQixHQUFHLEVBQUUsRUFDL0UsUUFBUSxLQUFLLHNCQUFzQixRQUNwQyxDQUFDO0FBQ0YsU0FBSyxjQUFjLGlCQUFpQixjQUFjLEtBQUssY0FBYyxFQUFFO0tBQ3JFLFFBQVEsS0FBSyxzQkFBc0I7S0FDbkMsU0FBUztLQUNWLENBQUM7QUFDRixTQUFLLGNBQWMsaUJBQ2pCLHNCQUNDLFVBQTJEO0FBQzFELFVBQUsscUJBQXFCLGdCQUFnQixNQUFNLFFBQVEsT0FBTyxNQUFNO09BRXZFLEVBQ0UsUUFBUSxLQUFLLHNCQUFzQixRQUNwQyxDQUNGO0FBRUQsU0FBSyx5QkFBeUIsUUFBUSxLQUFLLGVBQWU7S0FDeEQsWUFBWTtLQUNaLGlCQUFpQixDQUFDLFlBQVksV0FBQTtLQUMvQixDQUFDOztBQUlKLE9BQUksQ0FBQyxLQUFLLGlCQUFpQixDQUFDLEtBQUssUUFBUSxpQkFBaUIsQ0FDeEQsTUFBSyxZQUFZLFFBQVEsR0FBRyxNQUFNLElBQUk7QUFHeEMsUUFBSyxZQUFZLFNBQVMsS0FBSyxNQUFNLFdBQVcsRUFBRTtBQUNsRCxRQUFLLHNCQUFzQjtBQUMzQixRQUFLLHlCQUF5QjtBQUM5QixRQUFLLGlCQUFpQjs7Ozs7RUFNaEIsZUFBZSxPQUFvQjtHQUN6QyxNQUFNLGNBQWMsTUFBTTtBQUMxQixPQUFJLFlBQVksY0FBYyxXQUM1QjtBQUlGLE9BQUksa0JBQWtCLE1BQU0sRUFBRTtJQUM1QixNQUFNLGFBQWEsS0FBSyxzQkFBc0I7QUFFOUMsZUFEYSxvQkFBb0IsT0FBTyxXQUFXLFFBQVEsWUFBWSxFQUFFLFdBQVcsT0FBTyxFQUMxRSxPQUFPO0FBQ3hCOztBQUdGLFdBQVEsTUFBTSxLQUFkO0lBQ0UsS0FBSztJQUNMLEtBQUs7QUFDSCxTQUFJLENBQUMsWUFBWSxZQUFZLENBQUMsWUFBWSxVQUFVO0FBQ2xELFlBQU0sZ0JBQWdCO0FBQ3RCLFdBQUssWUFBWSxZQUFZOztBQUUvQjs7Ozs7O0VBT0UsZ0JBQWdCLE9BQW9CO0FBQzFDLFdBQVEsTUFBTSxLQUFkO0lBQ0UsS0FBSztJQUNMLEtBQUs7QUFDSCxTQUFJLENBQUMsS0FBSyxjQUFlLE1BQ3ZCLE1BQUssWUFBWTtBQUVuQjtJQUNGLEtBQUs7QUFDSCxXQUFNLGdCQUFnQjtBQUN0Qjs7QUFJSixPQUFJLEtBQUssY0FBYyxTQUFTLE1BQU0sSUFBSSxFQUFFO0FBQzFDLFVBQU0sZ0JBQWdCO0FBQ3RCLFNBQUsscUJBQXFCLFFBQVE7Ozs7OztFQU85QixlQUFZO0FBQ2xCLE9BQUksS0FBSyxVQUNQLE1BQUsscUJBQXFCLFFBQVE7Ozs7O0VBTzlCLHFCQUFxQixTQUFtQyxTQUFTLE9BQVM7R0FDaEYsTUFBTSxhQUFhLFNBQVMsS0FBSyxjQUFlLE1BQU0sTUFBTTtBQUM1RCxPQUFJLENBQUMsV0FDSDtHQUdGLE1BQU0sUUFBUSxJQUFJLDBCQUE2QjtJQUM3QztJQUNBLE9BQU87SUFDUCxRQUFRLFFBQVEsS0FBSyxjQUFjLE1BQU0sR0FBRyxTQUFTLEtBQUE7SUFDdEQsQ0FBQztBQUNGLE9BQUksQ0FBQyxLQUFLLGNBQWMsTUFBTSxDQUM1QjtBQUdGLFFBQUssbUJBQW1CLE1BQU0sT0FBWSxNQUFNLE1BQU07QUFDdEQsUUFBSyxjQUFlLFFBQVE7QUFDNUIsUUFBSyxrQkFBa0I7O0VBR2pCLFlBQVksTUFBdUI7R0FDekMsTUFBTSxRQUFRLEtBQUssc0JBQXNCO0FBQ3pDLFFBQUssUUFBUTtBQUNiLFFBQUssa0JBQWtCO0FBQ3ZCLFFBQUssV0FBVyxNQUFNLFFBQVEsS0FBSyxDQUFDOzs7Ozs7RUFPOUIsV0FBVyxPQUFjO0dBQy9CLE1BQU0sZUFBZSxLQUFLLHNCQUFzQjtBQUVoRCxPQUFJLFVBQVUsS0FBQSxLQUFhLGFBQWEsUUFBUTtBQUM5QyxpQkFBYSxPQUFPLE9BQU87QUFDM0I7O0FBR0YsT0FBSSxhQUFhLFNBQVMsR0FBRztBQUMzQixpQkFBYSxhQUFhLFNBQVMsR0FBRyxPQUFPO0FBQzdDOztBQUdGLFFBQUssZUFBZSxPQUFPOztFQUdyQixtQkFBZ0I7O0FBRXRCLFFBQUssY0FBYyxJQUFJLFdBQVcsU0FBUztJQUFFLFNBQVM7SUFBTSxVQUFVO0lBQU0sQ0FBQyxDQUFDOzs7Ozs7QUFPOUUsUUFBSyxjQUFjLElBQUksTUFBTSxVQUFVLEVBQUUsU0FBUyxNQUFNLENBQUMsQ0FBQzs7RUFHcEQsbUJBQW1CLE9BQWlCLE9BQWM7QUFDeEQsT0FBSSxTQUNGO0dBRUYsTUFBTSxVQUFVLFNBQVMsY0FBYyxXQUFnQztBQUN2RSxXQUFRLFFBQVE7QUFDaEIsV0FBUSxZQUFZLFVBQVUsUUFBUSxLQUFLLGNBQWMsTUFBTSxHQUFHLFNBQVM7QUFlM0UsUUFBSyxhQUFhLFNBQVMsS0FBSyxpQkFBaUIsS0FBSyxjQUFjLFFBQVEsQ0FBQzs7RUFHdkUsdUJBQW9CO0FBQzFCLFFBQUssV0FBVyxLQUFLLGVBQWUsWUFBWTtBQUNoRCxRQUFLLG9CQUFvQjs7RUFHbkIscUJBQWtCO0FBQ3hCLFFBQUssZUFBZSxDQUFDLFNBQVMsTUFBSztBQUNqQyxNQUFFLFdBQVcsS0FBSyxZQUFZLEtBQUs7QUFDbkMsTUFBRSxXQUFXLEtBQUssZUFBZSxhQUFhLFdBQVcsSUFBSTtBQUM3RCxNQUFFLFdBQVcsS0FBSztLQUNsQjs7RUFHSSxZQUFZLE1BQWlDO0FBQ25ELE9BQUksS0FBSyxjQUNQLE1BQUssVUFBVSxPQUFPLE9BQU8sUUFBUSxLQUFLLGdCQUFnQjtBQUU1RCxRQUFLLGdCQUFnQjtBQUNyQixPQUFJLEtBQUssY0FDUCxNQUFLLFVBQVUsT0FBTyxJQUFJLFFBQVEsS0FBSyxnQkFBZ0I7O0VBSW5ELDBCQUF1QjtBQUM3QixPQUFJLENBQUMsS0FBSyxjQUNSO0FBRUYsUUFBSyxjQUFjLGFBQ2pCLG9CQUNBLEdBQUcsOEJBQThCLEtBQUssVUFBVSxTQUFRLEdBQUksS0FBSyxNQUFNLFNBQ3hFOztFQUdnQixTQUFNO0FBQ3ZCLFVBQU8sSUFBSSxxQkFBcUIsS0FBSyxnQkFBZSJ9
@@ -1,4 +1,4 @@
1
- import { n as SbbChipInputTokenEndEvent, t as SbbChipGroupElement } from "./chip-group.component-CvpUdzu1.js";
1
+ import { n as SbbChipInputTokenEndEvent, t as SbbChipGroupElement } from "./chip-group.component-BVfHWX2-.js";
2
2
  import { t as SbbChipElement } from "./chip.component-C6v1-PLX.js";
3
3
  import "./chip.pure.js";
4
4
  //#region src/elements/chip.ts
@@ -1,3 +1,3 @@
1
- import { n as SbbChipInputTokenEndEvent, t as SbbChipGroupElement } from "./chip-group.component-CvpUdzu1.js";
1
+ import { n as SbbChipInputTokenEndEvent, t as SbbChipGroupElement } from "./chip-group.component-BVfHWX2-.js";
2
2
  import { t as SbbChipElement } from "./chip.component-C6v1-PLX.js";
3
3
  export { SbbChipElement, SbbChipGroupElement, SbbChipInputTokenEndEvent };
@@ -0,0 +1,51 @@
1
+ import { html, unsafeCSS } from "lit";
2
+ import { SbbElement } from "./core/base-elements.js";
3
+ import { boxSizingStyles } from "./core/styles.js";
4
+ import { i18nPage, i18nPaginatorOf } from "./core/i18n.js";
5
+ import "./divider.js";
6
+ import "./screen-reader-only.js";
7
+ import { styleMap } from "lit/directives/style-map.js";
8
+ import { SbbPaginatorCommonElementMixin } from "./paginator/common/paginator-common.js";
9
+ //#region src/elements/paginator/compact-paginator/compact-paginator.scss?inline
10
+ var compact_paginator_default = ":host {\n display: flex;\n gap: var(--sbb-compact-paginator-gap);\n justify-content: var(--sbb-paginator-compact-justify-content, start);\n min-height: var(--sbb-compact-paginator-height);\n}\n\n:host([size=s]) {\n --sbb-compact-paginator-height: var(--sbb-size-element-xs);\n}\n\n:host([size=m]) {\n --sbb-compact-paginator-height: var(--sbb-size-element-m);\n}\n\n:host([negative]) {\n --sbb-compact-paginator-color: var(--sbb-color-5);\n}\n\n:host([pager-position=end]) {\n --sbb-paginator-compact-justify-content: end;\n}\n\n.sbb-paginator__pages {\n font-size: var(--sbb-compact-paginator-font-size);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n line-height: var(--sbb-typo-line-height-text);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--sbb-compact-paginator-pages-gap);\n color: var(--sbb-compact-paginator-color);\n}\n\n.sbb-compact-paginator__divider {\n height: 1rem;\n}";
11
+ //#endregion
12
+ //#region src/elements/paginator/compact-paginator/compact-paginator.component.ts
13
+ /**
14
+ * It displays a paginator component in compact mode.
15
+ */
16
+ var SbbCompactPaginatorElement = class extends SbbPaginatorCommonElementMixin(SbbElement) {
17
+ static {
18
+ this.elementName = "sbb-compact-paginator";
19
+ }
20
+ static {
21
+ this.styles = [boxSizingStyles, unsafeCSS(compact_paginator_default)];
22
+ }
23
+ static {
24
+ this.events = { page: "page" };
25
+ }
26
+ _renderPageNumbers() {
27
+ return html`
28
+ <span class="sbb-paginator__pages" aria-hidden="true"
29
+ >${this.pageIndex + 1}<sbb-divider
30
+ orientation="vertical"
31
+ class="sbb-compact-paginator__divider"
32
+ style=${styleMap({ "--sbb-divider-color": "currentcolor" })}
33
+ ?negative=${this.negative}
34
+ ></sbb-divider
35
+ >${this.numberOfPages()}</span
36
+ >
37
+ <sbb-screen-reader-only>
38
+ ${`${this.accessibilityPageLabel ? this.accessibilityPageLabel : i18nPage[this.language.current]} ${this.pageIndex + 1} ${i18nPaginatorOf[this.language.current]} ${this.numberOfPages()}`}
39
+ </sbb-screen-reader-only>
40
+ `;
41
+ }
42
+ renderPaginator() {
43
+ return html`
44
+ ${this.pagerPosition === "start" ? html`${this.renderPrevNextButtons()} ${this._renderPageNumbers()}` : html`${this._renderPageNumbers()} ${this.renderPrevNextButtons()}`}
45
+ `;
46
+ }
47
+ };
48
+ //#endregion
49
+ export { SbbCompactPaginatorElement as t };
50
+
51
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFjdC1wYWdpbmF0b3IuY29tcG9uZW50LTVfUTJSZXVsLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9wYWdpbmF0b3IvY29tcGFjdC1wYWdpbmF0b3IvY29tcGFjdC1wYWdpbmF0b3Iuc2Nzcz9pbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvcGFnaW5hdG9yL2NvbXBhY3QtcGFnaW5hdG9yL2NvbXBhY3QtcGFnaW5hdG9yLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG46aG9zdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogdmFyKC0tc2JiLWNvbXBhY3QtcGFnaW5hdG9yLWdhcCk7XG4gIGp1c3RpZnktY29udGVudDogdmFyKC0tc2JiLXBhZ2luYXRvci1jb21wYWN0LWp1c3RpZnktY29udGVudCwgc3RhcnQpO1xuICBtaW4taGVpZ2h0OiB2YXIoLS1zYmItY29tcGFjdC1wYWdpbmF0b3ItaGVpZ2h0KTtcbn1cblxuOmhvc3QoW3NpemU9J3MnXSkge1xuICAtLXNiYi1jb21wYWN0LXBhZ2luYXRvci1oZWlnaHQ6IHZhcigtLXNiYi1zaXplLWVsZW1lbnQteHMpO1xufVxuXG46aG9zdChbc2l6ZT0nbSddKSB7XG4gIC0tc2JiLWNvbXBhY3QtcGFnaW5hdG9yLWhlaWdodDogdmFyKC0tc2JiLXNpemUtZWxlbWVudC1tKTtcbn1cblxuOmhvc3QoW25lZ2F0aXZlXSkge1xuICAtLXNiYi1jb21wYWN0LXBhZ2luYXRvci1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLTUpO1xufVxuXG46aG9zdChbcGFnZXItcG9zaXRpb249J2VuZCddKSB7XG4gIC0tc2JiLXBhZ2luYXRvci1jb21wYWN0LWp1c3RpZnktY29udGVudDogZW5kO1xufVxuXG4uc2JiLXBhZ2luYXRvcl9fcGFnZXMge1xuICBmb250LXNpemU6IHZhcigtLXNiYi1jb21wYWN0LXBhZ2luYXRvci1mb250LXNpemUpO1xuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc2JiLXR5cG8tbGV0dGVyLXNwYWNpbmctdGV4dCk7XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1zYmItdHlwby1saW5lLWhlaWdodC10ZXh0KTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc2JiLWNvbXBhY3QtcGFnaW5hdG9yLXBhZ2VzLWdhcCk7XG4gIGNvbG9yOiB2YXIoLS1zYmItY29tcGFjdC1wYWdpbmF0b3ItY29sb3IpO1xufVxuXG4uc2JiLWNvbXBhY3QtcGFnaW5hdG9yX19kaXZpZGVyIHtcbiAgaGVpZ2h0OiAje3NiYi5weC10by1yZW0tYnVpbGQoMTYpfTtcbn1cbiIsImltcG9ydCB7IGh0bWwsIHVuc2FmZUNTUywgdHlwZSBDU1NSZXN1bHRHcm91cCwgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBzdHlsZU1hcCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3N0eWxlLW1hcC5qcyc7XG5cbmltcG9ydCB7IFNiYkVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UtZWxlbWVudHMudHMnO1xuaW1wb3J0IHsgaTE4blBhZ2UsIGkxOG5QYWdpbmF0b3JPZiB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi50cyc7XG5pbXBvcnQgeyBib3hTaXppbmdTdHlsZXMgfSBmcm9tICcuLi8uLi9jb3JlL3N0eWxlcy50cyc7XG5pbXBvcnQgeyBTYmJQYWdpbmF0b3JDb21tb25FbGVtZW50TWl4aW4gfSBmcm9tICcuLi9jb21tb24vcGFnaW5hdG9yLWNvbW1vbi50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2NvbXBhY3QtcGFnaW5hdG9yLnNjc3M/aW5saW5lJztcblxuaW1wb3J0ICcuLi8uLi9kaXZpZGVyLnRzJztcbmltcG9ydCAnLi4vLi4vc2NyZWVuLXJlYWRlci1vbmx5LnRzJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIHBhZ2luYXRvciBjb21wb25lbnQgaW4gY29tcGFjdCBtb2RlLlxuICovXG5leHBvcnQgY2xhc3MgU2JiQ29tcGFjdFBhZ2luYXRvckVsZW1lbnQgZXh0ZW5kcyBTYmJQYWdpbmF0b3JDb21tb25FbGVtZW50TWl4aW4oU2JiRWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLWNvbXBhY3QtcGFnaW5hdG9yJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIHBhZ2U6ICdwYWdlJyxcbiAgfSBhcyBjb25zdDtcblxuICBwcml2YXRlIF9yZW5kZXJQYWdlTnVtYmVycygpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c3BhbiBjbGFzcz1cInNiYi1wYWdpbmF0b3JfX3BhZ2VzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPiR7dGhpcy5wYWdlSW5kZXggKyAxfTxzYmItZGl2aWRlclxuICAgICAgICAgIG9yaWVudGF0aW9uPVwidmVydGljYWxcIlxuICAgICAgICAgIGNsYXNzPVwic2JiLWNvbXBhY3QtcGFnaW5hdG9yX19kaXZpZGVyXCJcbiAgICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHsgJy0tc2JiLWRpdmlkZXItY29sb3InOiAnY3VycmVudGNvbG9yJyB9KX1cbiAgICAgICAgICA/bmVnYXRpdmU9JHt0aGlzLm5lZ2F0aXZlfVxuICAgICAgICA+PC9zYmItZGl2aWRlclxuICAgICAgICA+JHt0aGlzLm51bWJlck9mUGFnZXMoKX08L3NwYW5cbiAgICAgID5cbiAgICAgIDxzYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgICAgICAke2Ake3RoaXMuYWNjZXNzaWJpbGl0eVBhZ2VMYWJlbCA/IHRoaXMuYWNjZXNzaWJpbGl0eVBhZ2VMYWJlbCA6IGkxOG5QYWdlW3RoaXMubGFuZ3VhZ2UuY3VycmVudF19ICR7dGhpcy5wYWdlSW5kZXggKyAxfSAke2kxOG5QYWdpbmF0b3JPZlt0aGlzLmxhbmd1YWdlLmN1cnJlbnRdfSAke3RoaXMubnVtYmVyT2ZQYWdlcygpfWB9XG4gICAgICA8L3NiYi1zY3JlZW4tcmVhZGVyLW9ubHk+XG4gICAgYDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXJQYWdpbmF0b3IoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgJHt0aGlzLnBhZ2VyUG9zaXRpb24gPT09ICdzdGFydCdcbiAgICAgICAgPyBodG1sYCR7dGhpcy5yZW5kZXJQcmV2TmV4dEJ1dHRvbnMoKX0gJHt0aGlzLl9yZW5kZXJQYWdlTnVtYmVycygpfWBcbiAgICAgICAgOiBodG1sYCR7dGhpcy5fcmVuZGVyUGFnZU51bWJlcnMoKX0gJHt0aGlzLnJlbmRlclByZXZOZXh0QnV0dG9ucygpfWB9XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWNvbXBhY3QtcGFnaW5hdG9yJzogU2JiQ29tcGFjdFBhZ2luYXRvckVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FDZ0JBLElBQWEsNkJBQWIsY0FBZ0QsK0JBQStCLFdBQVcsQ0FBQTs7QUFDeEQsT0FBQSxjQUFzQjs7O0FBQy9CLE9BQUEsU0FBeUIsQ0FBQyxpQkFBaUIsVUFBVSwwQkFBTSxDQUFDOzs7QUFDNUQsT0FBQSxTQUFpQyxFQUN0RCxNQUFNLFFBQ0U7O0NBRUYscUJBQWtCO0FBQ3hCLFNBQU8sSUFBSTs7V0FFSixLQUFLLFlBQVksRUFBQzs7O2tCQUdYLFNBQVMsRUFBRSx1QkFBdUIsZ0JBQWdCLENBQUMsQ0FBQTtzQkFDL0MsS0FBSyxTQUFBOztXQUVoQixLQUFLLGVBQWUsQ0FBQTs7O1VBR3JCLEdBQUcsS0FBSyx5QkFBeUIsS0FBSyx5QkFBeUIsU0FBUyxLQUFLLFNBQVMsU0FBUSxHQUFJLEtBQUssWUFBWSxFQUFDLEdBQUksZ0JBQWdCLEtBQUssU0FBUyxTQUFRLEdBQUksS0FBSyxlQUFlLEdBQUE7Ozs7Q0FLM0ssa0JBQWU7QUFDaEMsU0FBTyxJQUFJO1FBQ1AsS0FBSyxrQkFBa0IsVUFDckIsSUFBSSxHQUFHLEtBQUssdUJBQXVCLENBQUEsR0FBSSxLQUFLLG9CQUFvQixLQUNoRSxJQUFJLEdBQUcsS0FBSyxvQkFBb0IsQ0FBQSxHQUFJLEtBQUssdUJBQXVCLEdBQUEifQ==
@@ -0,0 +1,55 @@
1
+ import { html, unsafeCSS } from "lit";
2
+ import { SbbElement } from "./core/base-elements.js";
3
+ import { SbbNegativeMixin } from "./core/mixins.js";
4
+ import { boxSizingStyles } from "./core/styles.js";
5
+ //#region src/elements/form-field/error/error.scss?inline
6
+ var error_default = ":host {\n --_sbb-error-height: calc(var(--sbb-typo-line-height-text) * 1em);\n --sbb-icon-svg-width: var(--sbb-error-icon-size);\n --sbb-icon-svg-height: var(--sbb-error-icon-size);\n display: flex;\n align-items: flex-start;\n color: var(--sbb-error-color);\n min-height: var(--_sbb-error-height);\n font-size: var(--sbb-error-font-size);\n line-height: var(--sbb-typo-line-height-text);\n letter-spacing: var(--sbb-typo-letter-spacing-text);\n}\n@media (forced-colors: active) {\n :host {\n --sbb-error-color: LinkText !important;\n }\n}\n\n:host([negative]) {\n --sbb-error-color: var(--sbb-color-red85);\n}\n\n.error__icon {\n display: flex;\n align-items: center;\n height: var(--_sbb-error-height);\n margin-inline-end: var(--sbb-spacing-fixed-1x);\n}\n\n.error-content {\n line-height: var(--sbb-typo-line-height-text);\n vertical-align: text-top;\n}\n\n.error__icon-svg {\n stroke: currentcolor;\n height: var(--_sbb-error-height);\n}";
7
+ //#endregion
8
+ //#region src/elements/form-field/error/error.component.ts
9
+ /**
10
+ * It displays an error message in the `sbb-form-field`.
11
+ *
12
+ * @slot - Use this slot to display the error message.
13
+ * @slot icon - Use this slot to override the default error icon.
14
+ */
15
+ var SbbErrorElement = class extends SbbNegativeMixin(SbbElement) {
16
+ static {
17
+ this.elementName = "sbb-error";
18
+ }
19
+ static {
20
+ this.styles = [boxSizingStyles, unsafeCSS(error_default)];
21
+ }
22
+ connectedCallback() {
23
+ super.connectedCallback();
24
+ const formField = this.closest?.("sbb-form-field");
25
+ if (formField) this.negative = formField.hasAttribute("negative");
26
+ }
27
+ render() {
28
+ return html`
29
+ <span class="error__icon">
30
+ <slot name="icon">
31
+ <svg
32
+ class="error__icon-svg"
33
+ aria-hidden="true"
34
+ width="14"
35
+ height="14"
36
+ viewBox="0 0 14 14"
37
+ fill="none"
38
+ xmlns="http://www.w3.org/2000/svg"
39
+ >
40
+ <line x1="7" y1="3" x2="7" y2="8.5" />
41
+ <line x1="7" y1="10" x2="7" y2="11" />
42
+ <circle cx="7" cy="7" r="6.5" />
43
+ </svg>
44
+ </slot>
45
+ </span>
46
+ <span class="error-content">
47
+ <slot></slot>
48
+ </span>
49
+ `;
50
+ }
51
+ };
52
+ //#endregion
53
+ export { SbbErrorElement as t };
54
+
55
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuY29tcG9uZW50LU9CcFdvVlJMLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9mb3JtLWZpZWxkL2Vycm9yL2Vycm9yLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Zvcm0tZmllbGQvZXJyb3IvZXJyb3IuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uLy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgLS1fc2JiLWVycm9yLWhlaWdodDogY2FsYyh2YXIoLS1zYmItdHlwby1saW5lLWhlaWdodC10ZXh0KSAqIDFlbSk7XG5cbiAgLy8gT3ZlcnJpZGVzIHNiYiBpY29uXG4gIC0tc2JiLWljb24tc3ZnLXdpZHRoOiB2YXIoLS1zYmItZXJyb3ItaWNvbi1zaXplKTtcbiAgLS1zYmItaWNvbi1zdmctaGVpZ2h0OiB2YXIoLS1zYmItZXJyb3ItaWNvbi1zaXplKTtcblxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgY29sb3I6IHZhcigtLXNiYi1lcnJvci1jb2xvcik7XG4gIG1pbi1oZWlnaHQ6IHZhcigtLV9zYmItZXJyb3ItaGVpZ2h0KTtcbiAgZm9udC1zaXplOiB2YXIoLS1zYmItZXJyb3ItZm9udC1zaXplKTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLXNiYi10eXBvLWxpbmUtaGVpZ2h0LXRleHQpO1xuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc2JiLXR5cG8tbGV0dGVyLXNwYWNpbmctdGV4dCk7XG5cbiAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgIC0tc2JiLWVycm9yLWNvbG9yOiBMaW5rVGV4dCAhaW1wb3J0YW50O1xuICB9XG59XG5cbjpob3N0KFtuZWdhdGl2ZV0pIHtcbiAgLS1zYmItZXJyb3ItY29sb3I6IHZhcigtLXNiYi1jb2xvci1yZWQ4NSk7XG59XG5cbi5lcnJvcl9faWNvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGhlaWdodDogdmFyKC0tX3NiYi1lcnJvci1oZWlnaHQpO1xuICBtYXJnaW4taW5saW5lLWVuZDogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtMXgpO1xufVxuXG4uZXJyb3ItY29udGVudCB7XG4gIC8vIEZpeCBmb3IgbGluZS1oZWlnaHQgdGFraW5nIG1vcmUgdGhhbiByZXNlcnZlZCBzcGFjZVxuICBsaW5lLWhlaWdodDogdmFyKC0tc2JiLXR5cG8tbGluZS1oZWlnaHQtdGV4dCk7XG4gIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcbn1cblxuLmVycm9yX19pY29uLXN2ZyB7XG4gIHN0cm9rZTogY3VycmVudGNvbG9yO1xuICBoZWlnaHQ6IHZhcigtLV9zYmItZXJyb3ItaGVpZ2h0KTtcbn1cbiIsImltcG9ydCB7IGh0bWwsIHVuc2FmZUNTUywgdHlwZSBDU1NSZXN1bHRHcm91cCwgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB7IFNiYkVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UtZWxlbWVudHMudHMnO1xuaW1wb3J0IHsgU2JiTmVnYXRpdmVNaXhpbiB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLnRzJztcbmltcG9ydCB7IGJveFNpemluZ1N0eWxlcyB9IGZyb20gJy4uLy4uL2NvcmUvc3R5bGVzLnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vZXJyb3Iuc2Nzcz9pbmxpbmUnO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIGFuIGVycm9yIG1lc3NhZ2UgaW4gdGhlIGBzYmItZm9ybS1maWVsZGAuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhpcyBzbG90IHRvIGRpc3BsYXkgdGhlIGVycm9yIG1lc3NhZ2UuXG4gKiBAc2xvdCBpY29uIC0gVXNlIHRoaXMgc2xvdCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBlcnJvciBpY29uLlxuICovXG5leHBvcnQgY2xhc3MgU2JiRXJyb3JFbGVtZW50IGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihTYmJFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItZXJyb3InO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbYm94U2l6aW5nU3R5bGVzLCB1bnNhZmVDU1Moc3R5bGUpXTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBjb25zdCBmb3JtRmllbGQgPSB0aGlzLmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKTtcbiAgICBpZiAoZm9ybUZpZWxkKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gZm9ybUZpZWxkLmhhc0F0dHJpYnV0ZSgnbmVnYXRpdmUnKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3JfX2ljb25cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cImljb25cIj5cbiAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yX19pY29uLXN2Z1wiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgd2lkdGg9XCIxNFwiXG4gICAgICAgICAgICBoZWlnaHQ9XCIxNFwiXG4gICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE0IDE0XCJcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsaW5lIHgxPVwiN1wiIHkxPVwiM1wiIHgyPVwiN1wiIHkyPVwiOC41XCIgLz5cbiAgICAgICAgICAgIDxsaW5lIHgxPVwiN1wiIHkxPVwiMTBcIiB4Mj1cIjdcIiB5Mj1cIjExXCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI3XCIgY3k9XCI3XCIgcj1cIjYuNVwiIC8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvc2xvdD5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItY29udGVudFwiPlxuICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICA8L3NwYW4+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWVycm9yJzogU2JiRXJyb3JFbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FDY0EsSUFBYSxrQkFBYixjQUFxQyxpQkFBaUIsV0FBVyxDQUFBOztBQUMvQixPQUFBLGNBQXNCOzs7QUFDL0IsT0FBQSxTQUF5QixDQUFDLGlCQUFpQixVQUFVLGNBQU0sQ0FBQzs7Q0FFbkUsb0JBQWlCO0FBQy9CLFFBQU0sbUJBQW1CO0VBQ3pCLE1BQU0sWUFBWSxLQUFLLFVBQVUsaUJBQWlCO0FBQ2xELE1BQUksVUFDRixNQUFLLFdBQVcsVUFBVSxhQUFhLFdBQVc7O0NBSW5DLFNBQU07QUFDdkIsU0FBTyxJQUFJIn0=
@@ -1,2 +1,2 @@
1
- import { t as SbbExpansionPanelHeaderElement } from "../../expansion-panel-header.component-Bw4uROTe.js";
1
+ import { t as SbbExpansionPanelHeaderElement } from "../../expansion-panel-header.component-BEAabEE0.js";
2
2
  export { SbbExpansionPanelHeaderElement };
@@ -1,4 +1,4 @@
1
- import { t as SbbExpansionPanelHeaderElement } from "../expansion-panel-header.component-Bw4uROTe.js";
1
+ import { t as SbbExpansionPanelHeaderElement } from "../expansion-panel-header.component-BEAabEE0.js";
2
2
  //#region src/elements/expansion-panel/expansion-panel-header.ts
3
3
  /** @entrypoint */
4
4
  SbbExpansionPanelHeaderElement.define();