@sbb-esta/lyne-elements 2.0.0 → 2.0.2

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 (295) hide show
  1. package/accordion/accordion.d.ts +1 -2
  2. package/accordion/accordion.d.ts.map +1 -1
  3. package/accordion.js +39 -44
  4. package/alert/alert-group/alert-group.d.ts +1 -2
  5. package/alert/alert-group/alert-group.d.ts.map +1 -1
  6. package/alert/alert-group.js +29 -34
  7. package/autocomplete/autocomplete-base-element.d.ts +1 -0
  8. package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  9. package/autocomplete/autocomplete.d.ts +1 -1
  10. package/autocomplete/autocomplete.d.ts.map +1 -1
  11. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +1 -1
  12. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  13. package/autocomplete-grid/autocomplete-grid.js +18 -22
  14. package/autocomplete.js +17 -18
  15. package/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts +1 -2
  16. package/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts.map +1 -1
  17. package/breadcrumb/breadcrumb-group.js +26 -30
  18. package/button/common.js +4 -4
  19. package/calendar/calendar.d.ts +3 -3
  20. package/calendar/calendar.d.ts.map +1 -1
  21. package/checkbox/checkbox-group/checkbox-group.d.ts +1 -1
  22. package/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  23. package/checkbox/checkbox-group.js +34 -36
  24. package/core/base-elements/button-base-element.d.ts +1 -1
  25. package/core/base-elements/button-base-element.d.ts.map +1 -1
  26. package/core/base-elements.js +1 -1
  27. package/core/controllers/connected-abort-controller.d.ts +4 -0
  28. package/core/controllers/connected-abort-controller.d.ts.map +1 -1
  29. package/core/eventing/forward-event.d.ts +7 -1
  30. package/core/eventing/forward-event.d.ts.map +1 -1
  31. package/core/eventing.js +14 -12
  32. package/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  33. package/core/mixins/form-associated-mixin.d.ts +1 -1
  34. package/core/mixins/form-associated-mixin.d.ts.map +1 -1
  35. package/core/mixins/form-associated-radio-button-mixin.d.ts +1 -0
  36. package/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -1
  37. package/core/mixins.js +28 -34
  38. package/core/styles/core.scss +34 -31
  39. package/core/styles/mixins/buttons.scss +1 -1
  40. package/core/styles/mixins/lists.scss +100 -35
  41. package/core.css +17 -15
  42. package/custom-elements.json +243 -377
  43. package/datepicker/common/datepicker-button.d.ts +1 -1
  44. package/datepicker/common/datepicker-button.d.ts.map +1 -1
  45. package/datepicker/common.js +24 -24
  46. package/datepicker/datepicker/datepicker.d.ts +1 -1
  47. package/datepicker/datepicker/datepicker.d.ts.map +1 -1
  48. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts +1 -2
  49. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  50. package/datepicker/datepicker-toggle.js +76 -75
  51. package/datepicker/datepicker.js +58 -60
  52. package/development/accordion/accordion.d.ts +1 -2
  53. package/development/accordion/accordion.d.ts.map +1 -1
  54. package/development/accordion.js +16 -23
  55. package/development/alert/alert-group/alert-group.d.ts +1 -2
  56. package/development/alert/alert-group/alert-group.d.ts.map +1 -1
  57. package/development/alert/alert-group.js +12 -17
  58. package/development/autocomplete/autocomplete-base-element.d.ts +1 -0
  59. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  60. package/development/autocomplete/autocomplete.d.ts +1 -1
  61. package/development/autocomplete/autocomplete.d.ts.map +1 -1
  62. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +1 -1
  63. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  64. package/development/autocomplete-grid/autocomplete-grid.js +9 -12
  65. package/development/autocomplete.js +12 -12
  66. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts +1 -2
  67. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts.map +1 -1
  68. package/development/breadcrumb/breadcrumb-group.js +13 -17
  69. package/development/button/common.js +20 -6
  70. package/development/calendar/calendar.d.ts +3 -3
  71. package/development/calendar/calendar.d.ts.map +1 -1
  72. package/development/calendar.js +1 -1
  73. package/development/checkbox/checkbox-group/checkbox-group.d.ts +1 -1
  74. package/development/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  75. package/development/checkbox/checkbox-group.js +10 -15
  76. package/development/core/base-elements/button-base-element.d.ts +1 -1
  77. package/development/core/base-elements/button-base-element.d.ts.map +1 -1
  78. package/development/core/base-elements.js +2 -2
  79. package/development/core/controllers/connected-abort-controller.d.ts +4 -0
  80. package/development/core/controllers/connected-abort-controller.d.ts.map +1 -1
  81. package/development/core/controllers.js +1 -1
  82. package/development/core/eventing/forward-event.d.ts +7 -1
  83. package/development/core/eventing/forward-event.d.ts.map +1 -1
  84. package/development/core/eventing.js +5 -3
  85. package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  86. package/development/core/mixins/form-associated-mixin.d.ts +1 -1
  87. package/development/core/mixins/form-associated-mixin.d.ts.map +1 -1
  88. package/development/core/mixins/form-associated-radio-button-mixin.d.ts +1 -0
  89. package/development/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -1
  90. package/development/core/mixins.js +9 -18
  91. package/development/datepicker/common/datepicker-button.d.ts +1 -1
  92. package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
  93. package/development/datepicker/common.js +6 -7
  94. package/development/datepicker/datepicker/datepicker.d.ts +1 -1
  95. package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
  96. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts +1 -2
  97. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  98. package/development/datepicker/datepicker-toggle.js +14 -14
  99. package/development/datepicker/datepicker.js +8 -11
  100. package/development/dialog/dialog/dialog.d.ts +1 -1
  101. package/development/dialog/dialog/dialog.d.ts.map +1 -1
  102. package/development/dialog/dialog-content/dialog-content.d.ts.map +1 -1
  103. package/development/dialog/dialog-content.js +3 -2
  104. package/development/dialog/dialog.js +7 -13
  105. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts +1 -1
  106. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  107. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts +1 -2
  108. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts.map +1 -1
  109. package/development/expansion-panel/expansion-panel-header.js +7 -11
  110. package/development/expansion-panel/expansion-panel.js +5 -7
  111. package/development/file-selector/common.js +3 -3
  112. package/development/flip-card/flip-card/flip-card.d.ts +1 -2
  113. package/development/flip-card/flip-card/flip-card.d.ts.map +1 -1
  114. package/development/flip-card/flip-card.js +12 -15
  115. package/development/footer/footer.d.ts +1 -1
  116. package/development/footer.js +2 -2
  117. package/development/form-field/form-field-clear/form-field-clear.d.ts +1 -1
  118. package/development/form-field/form-field-clear/form-field-clear.d.ts.map +1 -1
  119. package/development/form-field/form-field-clear.js +5 -6
  120. package/development/image/image.d.ts +2 -2
  121. package/development/image.js +1 -1
  122. package/development/map-container/map-container.d.ts.map +1 -1
  123. package/development/map-container.js +3 -2
  124. package/development/menu/menu/menu.d.ts +2 -1
  125. package/development/menu/menu/menu.d.ts.map +1 -1
  126. package/development/menu/menu.js +20 -13
  127. package/development/message.js +5 -2
  128. package/development/navigation/common/navigation-action-common.d.ts +1 -1
  129. package/development/navigation/common/navigation-action-common.d.ts.map +1 -1
  130. package/development/navigation/common.js +11 -13
  131. package/development/navigation/navigation/navigation.d.ts +0 -1
  132. package/development/navigation/navigation/navigation.d.ts.map +1 -1
  133. package/development/navigation/navigation-section/navigation-section.d.ts +1 -0
  134. package/development/navigation/navigation-section/navigation-section.d.ts.map +1 -1
  135. package/development/navigation/navigation-section.js +5 -6
  136. package/development/navigation/navigation.js +9 -10
  137. package/development/notification.js +2 -2
  138. package/development/option/option/option-base-element.d.ts +1 -1
  139. package/development/option/option/option-base-element.d.ts.map +1 -1
  140. package/development/option/option.js +17 -21
  141. package/development/overlay/overlay-base-element.d.ts +1 -0
  142. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  143. package/development/overlay.js +4 -4
  144. package/development/popover/popover/popover.d.ts.map +1 -1
  145. package/development/popover/popover.js +6 -3
  146. package/development/radio-button/common/radio-button-common.d.ts.map +1 -1
  147. package/development/radio-button/common.js +11 -11
  148. package/development/radio-button/radio-button-group/radio-button-group.d.ts +3 -3
  149. package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  150. package/development/radio-button/radio-button-group.js +5 -9
  151. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +2 -2
  152. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  153. package/development/radio-button/radio-button-panel.js +1 -1
  154. package/development/select/select.d.ts +5 -2
  155. package/development/select/select.d.ts.map +1 -1
  156. package/development/select.js +59 -34
  157. package/development/selection-expansion-panel/selection-expansion-panel.d.ts +1 -1
  158. package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  159. package/development/selection-expansion-panel.js +6 -8
  160. package/development/slider/slider.d.ts +1 -2
  161. package/development/slider/slider.d.ts.map +1 -1
  162. package/development/slider.js +6 -8
  163. package/development/stepper/step/step.d.ts +5 -5
  164. package/development/stepper/step/step.d.ts.map +1 -1
  165. package/development/stepper/step-label/step-label.d.ts +1 -1
  166. package/development/stepper/step-label/step-label.d.ts.map +1 -1
  167. package/development/stepper/step-label.js +12 -14
  168. package/development/stepper/step.js +8 -10
  169. package/development/stepper/stepper/stepper.d.ts +9 -8
  170. package/development/stepper/stepper/stepper.d.ts.map +1 -1
  171. package/development/stepper/stepper.js +28 -27
  172. package/development/tabs/tab-group/tab-group.d.ts +1 -2
  173. package/development/tabs/tab-group/tab-group.d.ts.map +1 -1
  174. package/development/tabs/tab-group.js +9 -14
  175. package/development/tag/tag/tag.d.ts +1 -1
  176. package/development/tag/tag/tag.d.ts.map +1 -1
  177. package/development/tag/tag-group/tag-group.d.ts +1 -1
  178. package/development/tag/tag-group/tag-group.d.ts.map +1 -1
  179. package/development/tag/tag-group.js +1 -1
  180. package/development/tag/tag.js +5 -6
  181. package/development/teaser-hero.js +6 -2
  182. package/development/teaser.js +4 -3
  183. package/development/time-input/time-input.d.ts +1 -1
  184. package/development/time-input/time-input.d.ts.map +1 -1
  185. package/development/time-input.js +6 -4
  186. package/development/toast/toast.d.ts +1 -1
  187. package/development/toast/toast.d.ts.map +1 -1
  188. package/development/toast.js +6 -7
  189. package/development/toggle/toggle/toggle.d.ts +1 -1
  190. package/development/toggle/toggle/toggle.d.ts.map +1 -1
  191. package/development/toggle/toggle-option/toggle-option.d.ts +1 -1
  192. package/development/toggle/toggle-option/toggle-option.d.ts.map +1 -1
  193. package/development/toggle/toggle-option.js +9 -13
  194. package/development/toggle/toggle.js +6 -8
  195. package/development/train/train-formation/train-formation.d.ts +1 -2
  196. package/development/train/train-formation/train-formation.d.ts.map +1 -1
  197. package/development/train/train-formation.js +8 -12
  198. package/dialog/dialog/dialog.d.ts +1 -1
  199. package/dialog/dialog/dialog.d.ts.map +1 -1
  200. package/dialog/dialog-content/dialog-content.d.ts.map +1 -1
  201. package/dialog/dialog-content.js +8 -7
  202. package/dialog/dialog.js +36 -42
  203. package/expansion-panel/expansion-panel/expansion-panel.d.ts +1 -1
  204. package/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  205. package/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts +1 -2
  206. package/expansion-panel/expansion-panel-header/expansion-panel-header.d.ts.map +1 -1
  207. package/expansion-panel/expansion-panel-header.js +29 -33
  208. package/expansion-panel/expansion-panel.js +58 -60
  209. package/file-selector/common.js +5 -5
  210. package/flip-card/flip-card/flip-card.d.ts +1 -2
  211. package/flip-card/flip-card/flip-card.d.ts.map +1 -1
  212. package/flip-card/flip-card.js +34 -36
  213. package/footer/footer.d.ts +1 -1
  214. package/footer.js +1 -1
  215. package/form-field/form-field-clear/form-field-clear.d.ts +1 -1
  216. package/form-field/form-field-clear/form-field-clear.d.ts.map +1 -1
  217. package/form-field/form-field-clear.js +10 -11
  218. package/image/image.d.ts +2 -2
  219. package/lists.css +46 -62
  220. package/map-container/map-container.d.ts.map +1 -1
  221. package/map-container.js +22 -21
  222. package/menu/menu/menu.d.ts +2 -1
  223. package/menu/menu/menu.d.ts.map +1 -1
  224. package/menu/menu.js +84 -77
  225. package/message.js +15 -15
  226. package/navigation/common/navigation-action-common.d.ts +1 -1
  227. package/navigation/common/navigation-action-common.d.ts.map +1 -1
  228. package/navigation/common.js +24 -26
  229. package/navigation/navigation/navigation.d.ts +0 -1
  230. package/navigation/navigation/navigation.d.ts.map +1 -1
  231. package/navigation/navigation-section/navigation-section.d.ts +1 -0
  232. package/navigation/navigation-section/navigation-section.d.ts.map +1 -1
  233. package/navigation/navigation-section.js +35 -36
  234. package/navigation/navigation.js +64 -65
  235. package/notification.js +1 -1
  236. package/option/option/option-base-element.d.ts +1 -1
  237. package/option/option/option-base-element.d.ts.map +1 -1
  238. package/option/option.js +125 -125
  239. package/overlay/overlay-base-element.d.ts +1 -0
  240. package/overlay/overlay-base-element.d.ts.map +1 -1
  241. package/overlay.js +35 -35
  242. package/package.json +1 -1
  243. package/popover/popover/popover.d.ts.map +1 -1
  244. package/popover/popover.js +6 -3
  245. package/radio-button/common/radio-button-common.d.ts.map +1 -1
  246. package/radio-button/common.js +13 -14
  247. package/radio-button/radio-button-group/radio-button-group.d.ts +3 -3
  248. package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  249. package/radio-button/radio-button-group.js +20 -24
  250. package/radio-button/radio-button-panel/radio-button-panel.d.ts +2 -2
  251. package/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  252. package/select/select.d.ts +5 -2
  253. package/select/select.d.ts.map +1 -1
  254. package/select.js +96 -84
  255. package/selection-expansion-panel/selection-expansion-panel.d.ts +1 -1
  256. package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  257. package/selection-expansion-panel.js +17 -18
  258. package/slider/slider.d.ts +1 -2
  259. package/slider/slider.d.ts.map +1 -1
  260. package/slider.js +23 -25
  261. package/standard-theme.css +63 -77
  262. package/stepper/step/step.d.ts +5 -5
  263. package/stepper/step/step.d.ts.map +1 -1
  264. package/stepper/step-label/step-label.d.ts +1 -1
  265. package/stepper/step-label/step-label.d.ts.map +1 -1
  266. package/stepper/step-label.js +16 -18
  267. package/stepper/step.js +22 -24
  268. package/stepper/stepper/stepper.d.ts +9 -8
  269. package/stepper/stepper/stepper.d.ts.map +1 -1
  270. package/stepper/stepper.js +57 -58
  271. package/tabs/tab-group/tab-group.d.ts +1 -2
  272. package/tabs/tab-group/tab-group.d.ts.map +1 -1
  273. package/tabs/tab-group.js +83 -88
  274. package/tag/tag/tag.d.ts +1 -1
  275. package/tag/tag/tag.d.ts.map +1 -1
  276. package/tag/tag-group/tag-group.d.ts +1 -1
  277. package/tag/tag-group/tag-group.d.ts.map +1 -1
  278. package/tag/tag.js +30 -30
  279. package/teaser-hero.js +19 -19
  280. package/teaser.js +6 -6
  281. package/time-input/time-input.d.ts +1 -1
  282. package/time-input/time-input.d.ts.map +1 -1
  283. package/time-input.js +7 -5
  284. package/toast/toast.d.ts +1 -1
  285. package/toast/toast.d.ts.map +1 -1
  286. package/toast.js +32 -33
  287. package/toggle/toggle/toggle.d.ts +1 -1
  288. package/toggle/toggle/toggle.d.ts.map +1 -1
  289. package/toggle/toggle-option/toggle-option.d.ts +1 -1
  290. package/toggle/toggle-option/toggle-option.d.ts.map +1 -1
  291. package/toggle/toggle-option.js +31 -35
  292. package/toggle/toggle.js +31 -33
  293. package/train/train-formation/train-formation.d.ts +1 -2
  294. package/train/train-formation/train-formation.d.ts.map +1 -1
  295. package/train/train-formation.js +35 -39
@@ -13,9 +13,9 @@ export declare class SbbStepperElement extends SbbStepperElement_base {
13
13
  /** If set to true, only the current and previous labels can be clicked and selected. */
14
14
  accessor linear: boolean;
15
15
  /** Overrides the behaviour of `orientation` property. */
16
- set horizontalFrom(value: SbbHorizontalFrom);
17
- get horizontalFrom(): SbbHorizontalFrom | undefined;
18
- private _horizontalFrom?;
16
+ set horizontalFrom(value: SbbHorizontalFrom | null);
17
+ get horizontalFrom(): SbbHorizontalFrom | null;
18
+ private _horizontalFrom;
19
19
  /** Steps orientation, either horizontal or vertical. */
20
20
  accessor orientation: SbbOrientation;
21
21
  /**
@@ -24,17 +24,17 @@ export declare class SbbStepperElement extends SbbStepperElement_base {
24
24
  */
25
25
  accessor size: 's' | 'm';
26
26
  /** The currently selected step. */
27
- set selected(step: SbbStepElement);
28
- get selected(): SbbStepElement | undefined;
27
+ set selected(step: SbbStepElement | null);
28
+ get selected(): SbbStepElement | null;
29
29
  /** The currently selected step index. */
30
- set selectedIndex(index: number);
31
- get selectedIndex(): number | undefined;
30
+ set selectedIndex(index: number | null);
31
+ get selectedIndex(): number | null;
32
32
  /** The steps of the stepper. */
33
33
  get steps(): SbbStepElement[];
34
34
  private get _enabledSteps();
35
35
  private _loaded;
36
- private _abort;
37
36
  private _resizeObserverTimeout;
37
+ constructor();
38
38
  /** Selects the next step. */
39
39
  next(): void;
40
40
  /** Selects the previous step. */
@@ -51,6 +51,7 @@ export declare class SbbStepperElement extends SbbStepperElement_base {
51
51
  private _onStepperResize;
52
52
  private _configureLinearMode;
53
53
  connectedCallback(): void;
54
+ disconnectedCallback(): void;
54
55
  protected firstUpdated(changedProperties: PropertyValues<this>): Promise<void>;
55
56
  protected willUpdate(changedProperties: PropertyValues<this>): void;
56
57
  private _proxySize;
@@ -1 +1 @@
1
- {"version":3,"file":"stepper.d.ts","sourceRoot":"","sources":["../../../../../src/elements/stepper/stepper/stepper.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAEnB,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAOb,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAElF,OAAO,KAAK,EAAE,cAAc,EAA+B,MAAM,YAAY,CAAC;;AAM9E;;;;;GAKG;AACH,qBAEM,iBAAkB,SAAQ,sBAA6B;IAC3D,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,wFAAwF;IACxF,SAEgB,MAAM,EAAE,OAAO,CAAS;IAExC,yDAAyD;IACzD,IACW,cAAc,CAAC,KAAK,EAAE,iBAAiB,EAKjD;IACD,IAAW,cAAc,IAAI,iBAAiB,GAAG,SAAS,CAEzD;IACD,OAAO,CAAC,eAAe,CAAC,CAAgC;IAExD,wDAAwD;IACxD,SACgB,WAAW,EAAE,cAAc,CAAgB;IAE3D;;;OAGG;IACH,SAA6C,IAAI,EAAE,GAAG,GAAG,GAAG,CAAwB;IAEpF,mCAAmC;IACnC,IACW,QAAQ,CAAC,IAAI,EAAE,cAAc,EAIvC;IACD,IAAW,QAAQ,IAAI,cAAc,GAAG,SAAS,CAEhD;IAED,yCAAyC;IACzC,IACW,aAAa,CAAC,KAAK,EAAE,MAAM,EAIrC;IACD,IAAW,aAAa,IAAI,MAAM,GAAG,SAAS,CAE7C;IAED,gCAAgC;IAChC,IAAW,KAAK,IAAI,cAAc,EAAE,CAEnC;IAED,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,sBAAsB,CAA8C;IAE5E,6BAA6B;IACtB,IAAI,IAAI,IAAI;IAMnB,iCAAiC;IAC1B,QAAQ,IAAI,IAAI;IAMvB,yFAAyF;IAClF,KAAK,IAAI,IAAI;IAcpB,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,OAAO;IAwBf,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,oBAAoB;IAUZ,iBAAiB,IAAI,IAAI;cAWhB,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;cAU1E,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAgB5E,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,cAAc;cAmBH,MAAM,IAAI,cAAc;CAY5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,aAAa,EAAE,iBAAiB,CAAC;KAClC;CACF"}
1
+ {"version":3,"file":"stepper.d.ts","sourceRoot":"","sources":["../../../../../src/elements/stepper/stepper/stepper.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAEnB,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAMb,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAElF,OAAO,KAAK,EAAE,cAAc,EAA+B,MAAM,YAAY,CAAC;;AAM9E;;;;;GAKG;AACH,qBAEM,iBAAkB,SAAQ,sBAA6B;IAC3D,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,wFAAwF;IACxF,SAEgB,MAAM,EAAE,OAAO,CAAS;IAExC,yDAAyD;IACzD,IACW,cAAc,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,EAKxD;IACD,IAAW,cAAc,IAAI,iBAAiB,GAAG,IAAI,CAEpD;IACD,OAAO,CAAC,eAAe,CAAkC;IAEzD,wDAAwD;IACxD,SACgB,WAAW,EAAE,cAAc,CAAgB;IAE3D;;;OAGG;IACH,SAA6C,IAAI,EAAE,GAAG,GAAG,GAAG,CAAwB;IAEpF,mCAAmC;IACnC,IACW,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,EAI9C;IACD,IAAW,QAAQ,IAAI,cAAc,GAAG,IAAI,CAE3C;IAED,yCAAyC;IACzC,IACW,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAI5C;IACD,IAAW,aAAa,IAAI,MAAM,GAAG,IAAI,CAExC;IAED,gCAAgC;IAChC,IAAW,KAAK,IAAI,cAAc,EAAE,CAEnC;IAED,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,sBAAsB,CAA8C;;IAO5E,6BAA6B;IACtB,IAAI,IAAI,IAAI;IAMnB,iCAAiC;IAC1B,QAAQ,IAAI,IAAI;IAMvB,yFAAyF;IAClF,KAAK,IAAI,IAAI;IAcpB,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,OAAO;IAwBf,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,gBAAgB,CAUtB;IAEF,OAAO,CAAC,oBAAoB;IAUZ,iBAAiB,IAAI,IAAI;IAQzB,oBAAoB,IAAI,IAAI;cAKnB,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;cAU1E,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAgB5E,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,cAAc;cAmBH,MAAM,IAAI,cAAc;CAY5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,aAAa,EAAE,iBAAiB,CAAC;KAClC;CACF"}
@@ -5,13 +5,12 @@ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot
5
5
  var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
6
6
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
7
7
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
8
- import { __runInitializers, __esDecorate } from "tslib";
8
+ import { __esDecorate, __runInitializers } from "tslib";
9
9
  import { css, LitElement, html } from "lit";
10
10
  import { customElement, property } from "lit/decorators.js";
11
11
  import { isArrowKeyPressed, getNextElementIndex } from "../core/a11y.js";
12
- import { SbbConnectedAbortController } from "../core/controllers.js";
13
12
  import { forceType } from "../core/decorators.js";
14
- import { isLean, breakpoints, isBreakpoint } from "../core/dom.js";
13
+ import { breakpoints, isLean, isBreakpoint } from "../core/dom.js";
15
14
  import { SbbHydrationMixin } from "../core/mixins.js";
16
15
  const style = css`*,
17
16
  ::before,
@@ -121,17 +120,24 @@ let SbbStepperElement = (() => {
121
120
  let _set_selectedIndex_decorators;
122
121
  _a = class extends _classSuper {
123
122
  constructor() {
124
- super(...arguments);
123
+ var _a2;
124
+ super();
125
125
  __privateAdd(this, _linear_accessor_storage);
126
126
  __privateAdd(this, _orientation_accessor_storage);
127
127
  __privateAdd(this, _size_accessor_storage);
128
128
  __privateSet(this, _linear_accessor_storage, (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _linear_initializers, false)));
129
- this._horizontalFrom = __runInitializers(this, _linear_extraInitializers);
129
+ this._horizontalFrom = (__runInitializers(this, _linear_extraInitializers), null);
130
130
  __privateSet(this, _orientation_accessor_storage, __runInitializers(this, _orientation_initializers, "horizontal"));
131
131
  __privateSet(this, _size_accessor_storage, (__runInitializers(this, _orientation_extraInitializers), __runInitializers(this, _size_initializers, isLean() ? "s" : "m")));
132
132
  this._loaded = (__runInitializers(this, _size_extraInitializers), false);
133
- this._abort = new SbbConnectedAbortController(this);
134
133
  this._resizeObserverTimeout = null;
134
+ this._onStepperResize = () => {
135
+ this._checkOrientation();
136
+ clearTimeout(this._resizeObserverTimeout);
137
+ this.toggleAttribute("data-disable-animation", true);
138
+ this._resizeObserverTimeout = setTimeout(() => this.toggleAttribute("data-disable-animation", false), DEBOUNCE_TIME);
139
+ };
140
+ (_a2 = this.addEventListener) == null ? void 0 : _a2.call(this, "keydown", (e) => this._handleKeyDown(e));
135
141
  }
136
142
  /** If set to true, only the current and previous labels can be clicked and selected. */
137
143
  get linear() {
@@ -142,7 +148,7 @@ let SbbStepperElement = (() => {
142
148
  }
143
149
  /** Overrides the behaviour of `orientation` property. */
144
150
  set horizontalFrom(value) {
145
- this._horizontalFrom = breakpoints.includes(value) ? value : void 0;
151
+ this._horizontalFrom = value && breakpoints.includes(value) ? value : null;
146
152
  if (this._horizontalFrom && this._loaded) {
147
153
  this._checkOrientation();
148
154
  }
@@ -175,16 +181,16 @@ let SbbStepperElement = (() => {
175
181
  }
176
182
  get selected() {
177
183
  var _a2;
178
- return ((_a2 = this.querySelector) == null ? void 0 : _a2.call(this, "sbb-step[data-selected]")) ?? void 0;
184
+ return ((_a2 = this.querySelector) == null ? void 0 : _a2.call(this, "sbb-step[data-selected]")) ?? null;
179
185
  }
180
186
  /** The currently selected step index. */
181
187
  set selectedIndex(index) {
182
- if (this._loaded) {
188
+ if (this._loaded && index !== null) {
183
189
  this._select(this.steps[index]);
184
190
  }
185
191
  }
186
192
  get selectedIndex() {
187
- return this.selected ? this.steps.indexOf(this.selected) : void 0;
193
+ return this.selected ? this.steps.indexOf(this.selected) : null;
188
194
  }
189
195
  /** The steps of the stepper. */
190
196
  get steps() {
@@ -199,13 +205,13 @@ let SbbStepperElement = (() => {
199
205
  }
200
206
  /** Selects the next step. */
201
207
  next() {
202
- if (this.selectedIndex !== void 0) {
208
+ if (this.selectedIndex !== null) {
203
209
  this._select(this.steps[this.selectedIndex + 1]);
204
210
  }
205
211
  }
206
212
  /** Selects the previous step. */
207
213
  previous() {
208
- if (this.selectedIndex !== void 0) {
214
+ if (this.selectedIndex !== null) {
209
215
  this._select(this.steps[this.selectedIndex - 1]);
210
216
  }
211
217
  }
@@ -231,7 +237,7 @@ let SbbStepperElement = (() => {
231
237
  if (this.linear && !this.selected) {
232
238
  return step === this.steps[0];
233
239
  }
234
- if (this.linear && this.selectedIndex !== void 0) {
240
+ if (this.linear && this.selectedIndex !== null) {
235
241
  const index = this.steps.indexOf(step);
236
242
  return index < this.selectedIndex || index === this.selectedIndex + 1;
237
243
  }
@@ -245,8 +251,8 @@ let SbbStepperElement = (() => {
245
251
  const validatePayload = {
246
252
  currentIndex: this.selectedIndex,
247
253
  currentStep: this.selected,
248
- nextIndex: this.selectedIndex !== void 0 ? this.selectedIndex + 1 : void 0,
249
- nextStep: this.selectedIndex !== void 0 ? this.steps[this.selectedIndex + 1] : void 0
254
+ nextIndex: this.selectedIndex !== null ? this.selectedIndex + 1 : null,
255
+ nextStep: this.selectedIndex !== null ? this.steps[this.selectedIndex + 1] : null
250
256
  };
251
257
  if (this.selected && !this.selected.validate(validatePayload)) {
252
258
  return;
@@ -268,7 +274,7 @@ let SbbStepperElement = (() => {
268
274
  this.style.setProperty("--sbb-stepper-marker-size", `${offset}px`);
269
275
  }
270
276
  _calculateLabelOffsetTop() {
271
- if (this.selectedIndex === void 0) {
277
+ if (this.selectedIndex === null) {
272
278
  return;
273
279
  }
274
280
  let offset = 0;
@@ -304,12 +310,6 @@ let SbbStepperElement = (() => {
304
310
  }
305
311
  setTimeout(() => this._setMarkerSize(), 0);
306
312
  }
307
- _onStepperResize() {
308
- this._checkOrientation();
309
- clearTimeout(this._resizeObserverTimeout);
310
- this.toggleAttribute("data-disable-animation", true);
311
- this._resizeObserverTimeout = setTimeout(() => this.toggleAttribute("data-disable-animation", false), DEBOUNCE_TIME);
312
- }
313
313
  _configureLinearMode() {
314
314
  this.steps.forEach((step, index) => {
315
315
  var _a2;
@@ -318,14 +318,15 @@ let SbbStepperElement = (() => {
318
318
  }
319
319
  connectedCallback() {
320
320
  super.connectedCallback();
321
- const signal = this._abort.signal;
322
- this.addEventListener("keydown", (e) => this._handleKeyDown(e), { signal });
323
- window.addEventListener("resize", () => this._onStepperResize(), {
324
- signal,
321
+ window.addEventListener("resize", this._onStepperResize, {
325
322
  passive: true
326
323
  });
327
324
  this.toggleAttribute("data-disable-animation", !this._loaded);
328
325
  }
326
+ disconnectedCallback() {
327
+ super.disconnectedCallback();
328
+ window.removeEventListener("resize", this._onStepperResize);
329
+ }
329
330
  async firstUpdated(changedProperties) {
330
331
  super.firstUpdated(changedProperties);
331
332
  await this.updateComplete;
@@ -414,4 +415,4 @@ let SbbStepperElement = (() => {
414
415
  export {
415
416
  SbbStepperElement
416
417
  };
417
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3N0ZXBwZXIvc3RlcHBlci9zdGVwcGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIExpdEVsZW1lbnQsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZ2V0TmV4dEVsZW1lbnRJbmRleCwgaXNBcnJvd0tleVByZXNzZWQgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkuanMnO1xuaW1wb3J0IHsgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgYnJlYWtwb2ludHMsIGlzQnJlYWtwb2ludCwgaXNMZWFuIH0gZnJvbSAnLi4vLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJIb3Jpem9udGFsRnJvbSwgU2JiT3JpZW50YXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL2ludGVyZmFjZXMuanMnO1xuaW1wb3J0IHsgU2JiSHlkcmF0aW9uTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlN0ZXBFbGVtZW50LCBTYmJTdGVwVmFsaWRhdGVFdmVudERldGFpbHMgfSBmcm9tICcuLi9zdGVwLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vc3RlcHBlci5zY3NzP2xpdCZpbmxpbmUnO1xuXG5jb25zdCBERUJPVU5DRV9USU1FID0gMTUwO1xuXG4vKipcbiAqIFByb3ZpZGVzIGEgc3RydWN0dXJlZCwgc3RlcC1ieS1zdGVwIHdvcmtmbG93IGZvciB1c2VyIGludGVyYWN0aW9ucy5cbiAqIEBzbG90IC0gUHJvdmlkZSBhIGBzYmItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcmAgYW5kIGEgYHNiYi1leHBhbnNpb24tcGFuZWwtY29udGVudGAgdG8gdGhlIHN0ZXBwZXIuXG4gKiBAc2xvdCBzdGVwLWxhYmVsIC0gVXNlIHRoaXMgc2xvdCB0byBwcm92aWRlIGFuIGBzYmItc3RlcC1sYWJlbGAuXG4gKiBAc2xvdCBzdGVwIC0gVXNlIHRoaXMgc2xvdCB0byBwcm92aWRlIGFuIGBzYmItc3RlcGAuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1zdGVwcGVyJylcbmNsYXNzIFNiYlN0ZXBwZXJFbGVtZW50IGV4dGVuZHMgU2JiSHlkcmF0aW9uTWl4aW4oTGl0RWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogSWYgc2V0IHRvIHRydWUsIG9ubHkgdGhlIGN1cnJlbnQgYW5kIHByZXZpb3VzIGxhYmVscyBjYW4gYmUgY2xpY2tlZCBhbmQgc2VsZWN0ZWQuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBsaW5lYXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogT3ZlcnJpZGVzIHRoZSBiZWhhdmlvdXIgb2YgYG9yaWVudGF0aW9uYCBwcm9wZXJ0eS4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaG9yaXpvbnRhbC1mcm9tJywgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgc2V0IGhvcml6b250YWxGcm9tKHZhbHVlOiBTYmJIb3Jpem9udGFsRnJvbSkge1xuICAgIHRoaXMuX2hvcml6b250YWxGcm9tID0gYnJlYWtwb2ludHMuaW5jbHVkZXModmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuX2hvcml6b250YWxGcm9tICYmIHRoaXMuX2xvYWRlZCkge1xuICAgICAgdGhpcy5fY2hlY2tPcmllbnRhdGlvbigpO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IGhvcml6b250YWxGcm9tKCk6IFNiYkhvcml6b250YWxGcm9tIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5faG9yaXpvbnRhbEZyb207XG4gIH1cbiAgcHJpdmF0ZSBfaG9yaXpvbnRhbEZyb20/OiBTYmJIb3Jpem9udGFsRnJvbSB8IHVuZGVmaW5lZDtcblxuICAvKiogU3RlcHMgb3JpZW50YXRpb24sIGVpdGhlciBob3Jpem9udGFsIG9yIHZlcnRpY2FsLiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBvcmllbnRhdGlvbjogU2JiT3JpZW50YXRpb24gPSAnaG9yaXpvbnRhbCc7XG5cbiAgLyoqXG4gICAqIFNpemUgdmFyaWFudCwgZWl0aGVyIHMgb3IgbS5cbiAgICogQGRlZmF1bHQgJ20nIC8gJ3MnIChsZWFuKVxuICAgKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgYWNjZXNzb3Igc2l6ZTogJ3MnIHwgJ20nID0gaXNMZWFuKCkgPyAncycgOiAnbSc7XG5cbiAgLyoqIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgc3RlcC4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiBmYWxzZSB9KVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkKHN0ZXA6IFNiYlN0ZXBFbGVtZW50KSB7XG4gICAgaWYgKHRoaXMuX2xvYWRlZCkge1xuICAgICAgdGhpcy5fc2VsZWN0KHN0ZXApO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkKCk6IFNiYlN0ZXBFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yPy48U2JiU3RlcEVsZW1lbnQ+KCdzYmItc3RlcFtkYXRhLXNlbGVjdGVkXScpID8/IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIHN0ZXAgaW5kZXguICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3NlbGVjdGVkLWluZGV4JywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWRJbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX2xvYWRlZCkge1xuICAgICAgdGhpcy5fc2VsZWN0KHRoaXMuc3RlcHNbaW5kZXhdKTtcbiAgICB9XG4gIH1cbiAgcHVibGljIGdldCBzZWxlY3RlZEluZGV4KCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQgPyB0aGlzLnN0ZXBzLmluZGV4T2YodGhpcy5zZWxlY3RlZCkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKiogVGhlIHN0ZXBzIG9mIHRoZSBzdGVwcGVyLiAqL1xuICBwdWJsaWMgZ2V0IHN0ZXBzKCk6IFNiYlN0ZXBFbGVtZW50W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbD8uKCdzYmItc3RlcCcpID8/IFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IF9lbmFibGVkU3RlcHMoKTogU2JiU3RlcEVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHMuZmlsdGVyKChzKSA9PiAhcy5sYWJlbD8uaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9hYm9ydCA9IG5ldyBTYmJDb25uZWN0ZWRBYm9ydENvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX3Jlc2l6ZU9ic2VydmVyVGltZW91dDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcblxuICAvKiogU2VsZWN0cyB0aGUgbmV4dCBzdGVwLiAqL1xuICBwdWJsaWMgbmV4dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3NlbGVjdCh0aGlzLnN0ZXBzW3RoaXMuc2VsZWN0ZWRJbmRleCArIDFdKTtcbiAgICB9XG4gIH1cblxuICAvKiogU2VsZWN0cyB0aGUgcHJldmlvdXMgc3RlcC4gKi9cbiAgcHVibGljIHByZXZpb3VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fc2VsZWN0KHRoaXMuc3RlcHNbdGhpcy5zZWxlY3RlZEluZGV4IC0gMV0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBSZXNldHMgdGhlIGZvcm0gaW4gd2hpY2ggdGhlIHN0ZXBwZXIgaXMgbmVzdGVkIG9yIGV2ZXJ5IGZvcm0gb2YgZWFjaCBzdGVwLCBpZiBhbnkuICovXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICBjb25zdCBjbG9zZXN0Rm9ybSA9IHRoaXMuY2xvc2VzdCgnZm9ybScpO1xuICAgIGlmIChjbG9zZXN0Rm9ybSkge1xuICAgICAgY2xvc2VzdEZvcm0ucmVzZXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsKCdmb3JtJykuZm9yRWFjaCgoZm9ybSkgPT4gZm9ybS5yZXNldCgpKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gMDtcbiAgICAvLyBJbiBjYXNlIHRoZSBmb2N1cyBpcyBjdXJyZW50bHkgaW5zaWRlIHRoZSBzdGVwcGVyLCB3ZSByZXNldCB0aGUgZm9jdXMgdG8gdGhlIGZpcnN0L3NlbGVjdGVkIHN0ZXAgbGFiZWwuXG4gICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ/LmNsb3Nlc3QoJ3NiYi1zdGVwcGVyJykgPT09IHRoaXMpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQ/LmxhYmVsPy5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzVmFsaWRTdGVwKHN0ZXA6IFNiYlN0ZXBFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgaWYgKCFzdGVwIHx8ICghdGhpcy5saW5lYXIgJiYgc3RlcC5sYWJlbD8uaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxpbmVhciAmJiAhdGhpcy5zZWxlY3RlZCkge1xuICAgICAgcmV0dXJuIHN0ZXAgPT09IHRoaXMuc3RlcHNbMF07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGluZWFyICYmIHRoaXMuc2VsZWN0ZWRJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuc3RlcHMuaW5kZXhPZihzdGVwKTtcbiAgICAgIHJldHVybiBpbmRleCA8IHRoaXMuc2VsZWN0ZWRJbmRleCB8fCBpbmRleCA9PT0gdGhpcy5zZWxlY3RlZEluZGV4ICsgMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdChzdGVwOiBTYmJTdGVwRWxlbWVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faXNWYWxpZFN0ZXAoc3RlcCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdmFsaWRhdGVQYXlsb2FkOiBTYmJTdGVwVmFsaWRhdGVFdmVudERldGFpbHMgPSB7XG4gICAgICBjdXJyZW50SW5kZXg6IHRoaXMuc2VsZWN0ZWRJbmRleCxcbiAgICAgIGN1cnJlbnRTdGVwOiB0aGlzLnNlbGVjdGVkLFxuICAgICAgbmV4dEluZGV4OiB0aGlzLnNlbGVjdGVkSW5kZXggIT09IHVuZGVmaW5lZCA/IHRoaXMuc2VsZWN0ZWRJbmRleCArIDEgOiB1bmRlZmluZWQsXG4gICAgICBuZXh0U3RlcDogdGhpcy5zZWxlY3RlZEluZGV4ICE9PSB1bmRlZmluZWQgPyB0aGlzLnN0ZXBzW3RoaXMuc2VsZWN0ZWRJbmRleCArIDFdIDogdW5kZWZpbmVkLFxuICAgIH07XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQgJiYgIXRoaXMuc2VsZWN0ZWQudmFsaWRhdGUodmFsaWRhdGVQYXlsb2FkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5zZWxlY3RlZDtcbiAgICBjdXJyZW50Py5kZXNlbGVjdCgpO1xuICAgIHN0ZXAuc2VsZWN0KCk7XG4gICAgdGhpcy5fc2V0TWFya2VyU2l6ZSgpO1xuICAgIHRoaXMuX2NvbmZpZ3VyZUxpbmVhck1vZGUoKTtcbiAgICAvLyBJbiBjYXNlIHRoZSBmb2N1cyBpcyBjdXJyZW50bHkgaW5zaWRlIHRoZSBzdGVwcGVyLCB3ZSBmb2N1cyB0aGUgc2VsZWN0ZWQgc3RlcCBsYWJlbC5cbiAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudD8uY2xvc2VzdCgnc2JiLXN0ZXBwZXInKSA9PT0gdGhpcykge1xuICAgICAgdGhpcy5zZWxlY3RlZD8ubGFiZWw/LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0TWFya2VyU2l6ZSgpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5fbG9hZGVkIHx8XG4gICAgICAhdGhpcy5zZWxlY3RlZCB8fFxuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID09PSB1bmRlZmluZWQgfHxcbiAgICAgICF0aGlzLnNlbGVjdGVkLmxhYmVsXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG9mZnNldCA9XG4gICAgICB0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCdcbiAgICAgICAgPyB0aGlzLnNlbGVjdGVkLmxhYmVsLm9mZnNldExlZnQgKyB0aGlzLnNlbGVjdGVkLmxhYmVsLm9mZnNldFdpZHRoXG4gICAgICAgIDogdGhpcy5fY2FsY3VsYXRlTGFiZWxPZmZzZXRUb3AoKTtcblxuICAgIHRoaXMuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLXN0ZXBwZXItbWFya2VyLXNpemUnLCBgJHtvZmZzZXR9cHhgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NhbGN1bGF0ZUxhYmVsT2Zmc2V0VG9wKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGZvciAoY29uc3Qgc3RlcCBvZiB0aGlzLnN0ZXBzKSB7XG4gICAgICBpZiAoc3RlcCA9PT0gdGhpcy5zZWxlY3RlZCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIG9mZnNldCA9IHN0ZXAubGFiZWwhLm9mZnNldEhlaWdodCArIG9mZnNldDtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIG9mZnNldCArXG4gICAgICB0aGlzLnNlbGVjdGVkIS5sYWJlbCEub2Zmc2V0SGVpZ2h0ISArXG4gICAgICBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUodGhpcykuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zYmItc3BhY2luZy1maXhlZC02eCcpKSAqXG4gICAgICAgIDE2ICpcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbmZpZ3VyZSgpOiB2b2lkIHtcbiAgICBjb25zdCBzdGVwcyA9IHRoaXMuc3RlcHM7XG4gICAgc3RlcHMuZm9yRWFjaCgocykgPT4gcy5jb25maWd1cmUodGhpcy5fbG9hZGVkKSk7XG4gICAgc3RlcHNcbiAgICAgIC5maWx0ZXIoKHMpID0+IHMubGFiZWwpXG4gICAgICAubWFwKChzKSA9PiBzLmxhYmVsISlcbiAgICAgIC5mb3JFYWNoKChsYWJlbCwgaSwgYXJyYXkpID0+IHtcbiAgICAgICAgbGFiZWwuY29uZmlndXJlKGkgKyAxLCBhcnJheS5sZW5ndGgsIHRoaXMuX2xvYWRlZCk7XG4gICAgICB9KTtcbiAgICB0aGlzLl9zZWxlY3QodGhpcy5zZWxlY3RlZCB8fCB0aGlzLl9lbmFibGVkU3RlcHNbMF0pO1xuICAgIHRoaXMuX3Byb3h5U2l6ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlTGFiZWxzKCk6IHZvaWQge1xuICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgc3RlcC5zbG90ID0gdGhpcy5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnID8gJ3N0ZXAnIDogJ3N0ZXAtbGFiZWwnO1xuICAgICAgc3RlcC5zZXRBdHRyaWJ1dGUoJ2RhdGEtb3JpZW50YXRpb24nLCB0aGlzLm9yaWVudGF0aW9uKTtcbiAgICAgIHN0ZXAubGFiZWw/LnNldEF0dHJpYnV0ZSgnZGF0YS1vcmllbnRhdGlvbicsIHRoaXMub3JpZW50YXRpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tPcmllbnRhdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ob3Jpem9udGFsRnJvbSkge1xuICAgICAgdGhpcy5vcmllbnRhdGlvbiA9IGlzQnJlYWtwb2ludCh0aGlzLmhvcml6b250YWxGcm9tKSA/ICdob3Jpem9udGFsJyA6ICd2ZXJ0aWNhbCc7XG4gICAgICB0aGlzLl91cGRhdGVMYWJlbHMoKTtcbiAgICB9XG4gICAgLy8gVGhlIHRpbWVvdXQgaXMgbmVlZGVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBtYXJrZXIgdGFrZXMgdGhlIGNvcnJlY3Qgc3RlcC1sYWJlbCBzaXplLlxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fc2V0TWFya2VyU2l6ZSgpLCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uU3RlcHBlclJlc2l6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGVja09yaWVudGF0aW9uKCk7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3Jlc2l6ZU9ic2VydmVyVGltZW91dCEpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWRpc2FibGUtYW5pbWF0aW9uJywgdHJ1ZSk7XG5cbiAgICAvLyBEaXNhYmxlIHRoZSBhbmltYXRpb24gd2hlbiByZXNpemluZyB0byBhdm9pZCBzdHJhbmdlIHRyYW5zaXRpb24gZWZmZWN0cy5cbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlclRpbWVvdXQgPSBzZXRUaW1lb3V0KFxuICAgICAgKCkgPT4gdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZGlzYWJsZS1hbmltYXRpb24nLCBmYWxzZSksXG4gICAgICBERUJPVU5DRV9USU1FLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWd1cmVMaW5lYXJNb2RlKCk6IHZvaWQge1xuICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCwgaW5kZXgpID0+IHtcbiAgICAgIHN0ZXAubGFiZWw/LnRvZ2dsZUF0dHJpYnV0ZShcbiAgICAgICAgJ2Rpc2FibGVkJyxcbiAgICAgICAgKHRoaXMubGluZWFyICYmIGluZGV4ID4gdGhpcy5zZWxlY3RlZEluZGV4ISkgfHxcbiAgICAgICAgICAoIXRoaXMubGluZWFyICYmIHN0ZXAubGFiZWwuaGFzQXR0cmlidXRlKCdkYXRhLWRpc2FibGVkJykpLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIGNvbnN0IHNpZ25hbCA9IHRoaXMuX2Fib3J0LnNpZ25hbDtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZSkgPT4gdGhpcy5faGFuZGxlS2V5RG93bihlKSwgeyBzaWduYWwgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHRoaXMuX29uU3RlcHBlclJlc2l6ZSgpLCB7XG4gICAgICBzaWduYWwsXG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWRpc2FibGUtYW5pbWF0aW9uJywgIXRoaXMuX2xvYWRlZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IFByb21pc2U8dm9pZD4ge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgYXdhaXQgdGhpcy51cGRhdGVDb21wbGV0ZTtcbiAgICB0aGlzLl9sb2FkZWQgPSB0cnVlO1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9ICF0aGlzLmxpbmVhciA/IE51bWJlcih0aGlzLmdldEF0dHJpYnV0ZSgnc2VsZWN0ZWQtaW5kZXgnKSkgfHwgMCA6IDA7XG4gICAgdGhpcy5fY2hlY2tPcmllbnRhdGlvbigpO1xuICAgIC8vIFJlbW92ZSBbZGF0YS1kaXNhYmxlLWFuaW1hdGlvbl0gYWZ0ZXIgY29tcG9uZW50IGluaXRcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWRpc2FibGUtYW5pbWF0aW9uJywgZmFsc2UpLCBERUJPVU5DRV9USU1FKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ29yaWVudGF0aW9uJykgJiYgIXRoaXMuaG9yaXpvbnRhbEZyb20pIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUxhYmVscygpO1xuICAgICAgdGhpcy5fc2V0TWFya2VyU2l6ZSgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdsaW5lYXInKSAmJiB0aGlzLl9sb2FkZWQpIHtcbiAgICAgIHRoaXMuX2NvbmZpZ3VyZUxpbmVhck1vZGUoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdzaXplJykpIHtcbiAgICAgIHRoaXMuX3Byb3h5U2l6ZSgpO1xuICAgICAgdGhpcy5fc2V0TWFya2VyU2l6ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Byb3h5U2l6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgIHN0ZXAubGFiZWw/LnNldEF0dHJpYnV0ZSgnZGF0YS1zaXplJywgdGhpcy5zaXplKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUtleURvd24oZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZW5hYmxlZFN0ZXBzOiBTYmJTdGVwRWxlbWVudFtdID0gdGhpcy5fZW5hYmxlZFN0ZXBzO1xuXG4gICAgaWYgKFxuICAgICAgIWVuYWJsZWRTdGVwcyB8fFxuICAgICAgLy8gZG9uJ3QgdHJhcCBuZXN0ZWQgaGFuZGxpbmdcbiAgICAgICgoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkgIT09IHRoaXMgJiYgKGV2dC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnBhcmVudEVsZW1lbnQgIT09IHRoaXMpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzQXJyb3dLZXlQcmVzc2VkKGV2dCkpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnQ6IG51bWJlciA9IGVuYWJsZWRTdGVwcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWQhKTtcbiAgICAgIGNvbnN0IG5leHRJbmRleDogbnVtYmVyID0gZ2V0TmV4dEVsZW1lbnRJbmRleChldnQsIGN1cnJlbnQsIGVuYWJsZWRTdGVwcy5sZW5ndGgpO1xuICAgICAgdGhpcy5fc2VsZWN0KGVuYWJsZWRTdGVwc1tuZXh0SW5kZXhdKTtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zdGVwcGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc3RlcHBlcl9fbGFiZWxzXCIgcm9sZT1cInRhYmxpc3RcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwic3RlcC1sYWJlbFwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fY29uZmlndXJlfT48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXN0ZXBwZXJfX3N0ZXBzXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInN0ZXBcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX2NvbmZpZ3VyZX0+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1zdGVwcGVyJzogU2JiU3RlcHBlckVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1CQSxNQUFNLGdCQUFnQjtJQVVoQixxQkFBaUIsTUFBQTs7MEJBRHRCLGNBQWMsYUFBYSxDQUFDOzs7O29CQUNHLGtCQUFrQixVQUFVOzs7Ozs7Ozs7Ozs7OztBQUFwQyxFQUFBLG1CQUFRLFlBQTZCO0FBQUE7O0FBTTNEO0FBaUJBO0FBTTZCO0FBN0J6Qix5QkFBQSwyQkFBQSxrQkFBQSxNQUFBLDBCQUFBLEdBTThCLGtCQUFBLE1BQUEsc0JBQUEsS0FBSztBQWEvQixXQUFBLGtCQUFnRCxrQkFBQSxNQUFBLHlCQUFBO0FBSXhDLHlCQUFBLCtCQUFBLGtCQUFBLE1BQUEsMkJBQThCLFlBQVk7QUFNSyx5QkFBQSx5QkFBQSxrQkFBQSxN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
418
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3N0ZXBwZXIvc3RlcHBlci9zdGVwcGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIExpdEVsZW1lbnQsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZ2V0TmV4dEVsZW1lbnRJbmRleCwgaXNBcnJvd0tleVByZXNzZWQgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGJyZWFrcG9pbnRzLCBpc0JyZWFrcG9pbnQsIGlzTGVhbiB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiSG9yaXpvbnRhbEZyb20sIFNiYk9yaWVudGF0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9pbnRlcmZhY2VzLmpzJztcbmltcG9ydCB7IFNiYkh5ZHJhdGlvbk1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJTdGVwRWxlbWVudCwgU2JiU3RlcFZhbGlkYXRlRXZlbnREZXRhaWxzIH0gZnJvbSAnLi4vc3RlcC5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3N0ZXBwZXIuc2Nzcz9saXQmaW5saW5lJztcblxuY29uc3QgREVCT1VOQ0VfVElNRSA9IDE1MDtcblxuLyoqXG4gKiBQcm92aWRlcyBhIHN0cnVjdHVyZWQsIHN0ZXAtYnktc3RlcCB3b3JrZmxvdyBmb3IgdXNlciBpbnRlcmFjdGlvbnMuXG4gKiBAc2xvdCAtIFByb3ZpZGUgYSBgc2JiLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJgIGFuZCBhIGBzYmItZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRgIHRvIHRoZSBzdGVwcGVyLlxuICogQHNsb3Qgc3RlcC1sYWJlbCAtIFVzZSB0aGlzIHNsb3QgdG8gcHJvdmlkZSBhbiBgc2JiLXN0ZXAtbGFiZWxgLlxuICogQHNsb3Qgc3RlcCAtIFVzZSB0aGlzIHNsb3QgdG8gcHJvdmlkZSBhbiBgc2JiLXN0ZXBgLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItc3RlcHBlcicpXG5jbGFzcyBTYmJTdGVwcGVyRWxlbWVudCBleHRlbmRzIFNiYkh5ZHJhdGlvbk1peGluKExpdEVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIElmIHNldCB0byB0cnVlLCBvbmx5IHRoZSBjdXJyZW50IGFuZCBwcmV2aW91cyBsYWJlbHMgY2FuIGJlIGNsaWNrZWQgYW5kIHNlbGVjdGVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgbGluZWFyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIE92ZXJyaWRlcyB0aGUgYmVoYXZpb3VyIG9mIGBvcmllbnRhdGlvbmAgcHJvcGVydHkuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2hvcml6b250YWwtZnJvbScsIHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIHNldCBob3Jpem9udGFsRnJvbSh2YWx1ZTogU2JiSG9yaXpvbnRhbEZyb20gfCBudWxsKSB7XG4gICAgdGhpcy5faG9yaXpvbnRhbEZyb20gPSB2YWx1ZSAmJiBicmVha3BvaW50cy5pbmNsdWRlcyh2YWx1ZSkgPyB2YWx1ZSA6IG51bGw7XG4gICAgaWYgKHRoaXMuX2hvcml6b250YWxGcm9tICYmIHRoaXMuX2xvYWRlZCkge1xuICAgICAgdGhpcy5fY2hlY2tPcmllbnRhdGlvbigpO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IGhvcml6b250YWxGcm9tKCk6IFNiYkhvcml6b250YWxGcm9tIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2hvcml6b250YWxGcm9tO1xuICB9XG4gIHByaXZhdGUgX2hvcml6b250YWxGcm9tOiBTYmJIb3Jpem9udGFsRnJvbSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBTdGVwcyBvcmllbnRhdGlvbiwgZWl0aGVyIGhvcml6b250YWwgb3IgdmVydGljYWwuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGFjY2Vzc29yIG9yaWVudGF0aW9uOiBTYmJPcmllbnRhdGlvbiA9ICdob3Jpem9udGFsJztcblxuICAvKipcbiAgICogU2l6ZSB2YXJpYW50LCBlaXRoZXIgcyBvciBtLlxuICAgKiBAZGVmYXVsdCAnbScgLyAncycgKGxlYW4pXG4gICAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyBhY2Nlc3NvciBzaXplOiAncycgfCAnbScgPSBpc0xlYW4oKSA/ICdzJyA6ICdtJztcblxuICAvKiogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBzdGVwLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6IGZhbHNlIH0pXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWQoc3RlcDogU2JiU3RlcEVsZW1lbnQgfCBudWxsKSB7XG4gICAgaWYgKHRoaXMuX2xvYWRlZCkge1xuICAgICAgdGhpcy5fc2VsZWN0KHN0ZXApO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkKCk6IFNiYlN0ZXBFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlTZWxlY3Rvcj8uPFNiYlN0ZXBFbGVtZW50Pignc2JiLXN0ZXBbZGF0YS1zZWxlY3RlZF0nKSA/PyBudWxsO1xuICB9XG5cbiAgLyoqIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgc3RlcCBpbmRleC4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnc2VsZWN0ZWQtaW5kZXgnLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIHNldCBzZWxlY3RlZEluZGV4KGluZGV4OiBudW1iZXIgfCBudWxsKSB7XG4gICAgaWYgKHRoaXMuX2xvYWRlZCAmJiBpbmRleCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5fc2VsZWN0KHRoaXMuc3RlcHNbaW5kZXhdKTtcbiAgICB9XG4gIH1cbiAgcHVibGljIGdldCBzZWxlY3RlZEluZGV4KCk6IG51bWJlciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkID8gdGhpcy5zdGVwcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWQpIDogbnVsbDtcbiAgfVxuXG4gIC8qKiBUaGUgc3RlcHMgb2YgdGhlIHN0ZXBwZXIuICovXG4gIHB1YmxpYyBnZXQgc3RlcHMoKTogU2JiU3RlcEVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsPy4oJ3NiYi1zdGVwJykgPz8gW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX2VuYWJsZWRTdGVwcygpOiBTYmJTdGVwRWxlbWVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcy5maWx0ZXIoKHMpID0+ICFzLmxhYmVsPy5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9hZGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3Jlc2l6ZU9ic2VydmVyVGltZW91dDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Ligna2V5ZG93bicsIChlKSA9PiB0aGlzLl9oYW5kbGVLZXlEb3duKGUpKTtcbiAgfVxuXG4gIC8qKiBTZWxlY3RzIHRoZSBuZXh0IHN0ZXAuICovXG4gIHB1YmxpYyBuZXh0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX3NlbGVjdCh0aGlzLnN0ZXBzW3RoaXMuc2VsZWN0ZWRJbmRleCArIDFdKTtcbiAgICB9XG4gIH1cblxuICAvKiogU2VsZWN0cyB0aGUgcHJldmlvdXMgc3RlcC4gKi9cbiAgcHVibGljIHByZXZpb3VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggIT09IG51bGwpIHtcbiAgICAgIHRoaXMuX3NlbGVjdCh0aGlzLnN0ZXBzW3RoaXMuc2VsZWN0ZWRJbmRleCAtIDFdKTtcbiAgICB9XG4gIH1cblxuICAvKiogUmVzZXRzIHRoZSBmb3JtIGluIHdoaWNoIHRoZSBzdGVwcGVyIGlzIG5lc3RlZCBvciBldmVyeSBmb3JtIG9mIGVhY2ggc3RlcCwgaWYgYW55LiAqL1xuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgY29uc3QgY2xvc2VzdEZvcm0gPSB0aGlzLmNsb3Nlc3QoJ2Zvcm0nKTtcbiAgICBpZiAoY2xvc2VzdEZvcm0pIHtcbiAgICAgIGNsb3Nlc3RGb3JtLnJlc2V0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbCgnZm9ybScpLmZvckVhY2goKGZvcm0pID0+IGZvcm0ucmVzZXQoKSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IDA7XG4gICAgLy8gSW4gY2FzZSB0aGUgZm9jdXMgaXMgY3VycmVudGx5IGluc2lkZSB0aGUgc3RlcHBlciwgd2UgcmVzZXQgdGhlIGZvY3VzIHRvIHRoZSBmaXJzdC9zZWxlY3RlZCBzdGVwIGxhYmVsLlxuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5jbG9zZXN0KCdzYmItc3RlcHBlcicpID09PSB0aGlzKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkPy5sYWJlbD8uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc1ZhbGlkU3RlcChzdGVwOiBTYmJTdGVwRWxlbWVudCB8IG51bGwpOiBib29sZWFuIHtcbiAgICBpZiAoIXN0ZXAgfHwgKCF0aGlzLmxpbmVhciAmJiBzdGVwLmxhYmVsPy5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGluZWFyICYmICF0aGlzLnNlbGVjdGVkKSB7XG4gICAgICByZXR1cm4gc3RlcCA9PT0gdGhpcy5zdGVwc1swXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5saW5lYXIgJiYgdGhpcy5zZWxlY3RlZEluZGV4ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuc3RlcHMuaW5kZXhPZihzdGVwKTtcbiAgICAgIHJldHVybiBpbmRleCA8IHRoaXMuc2VsZWN0ZWRJbmRleCB8fCBpbmRleCA9PT0gdGhpcy5zZWxlY3RlZEluZGV4ICsgMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdChzdGVwOiBTYmJTdGVwRWxlbWVudCB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzVmFsaWRTdGVwKHN0ZXApKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHZhbGlkYXRlUGF5bG9hZDogU2JiU3RlcFZhbGlkYXRlRXZlbnREZXRhaWxzID0ge1xuICAgICAgY3VycmVudEluZGV4OiB0aGlzLnNlbGVjdGVkSW5kZXgsXG4gICAgICBjdXJyZW50U3RlcDogdGhpcy5zZWxlY3RlZCxcbiAgICAgIG5leHRJbmRleDogdGhpcy5zZWxlY3RlZEluZGV4ICE9PSBudWxsID8gdGhpcy5zZWxlY3RlZEluZGV4ICsgMSA6IG51bGwsXG4gICAgICBuZXh0U3RlcDogdGhpcy5zZWxlY3RlZEluZGV4ICE9PSBudWxsID8gdGhpcy5zdGVwc1t0aGlzLnNlbGVjdGVkSW5kZXggKyAxXSA6IG51bGwsXG4gICAgfTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZCAmJiAhdGhpcy5zZWxlY3RlZC52YWxpZGF0ZSh2YWxpZGF0ZVBheWxvYWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnNlbGVjdGVkO1xuICAgIGN1cnJlbnQ/LmRlc2VsZWN0KCk7XG4gICAgc3RlcCEuc2VsZWN0KCk7XG4gICAgdGhpcy5fc2V0TWFya2VyU2l6ZSgpO1xuICAgIHRoaXMuX2NvbmZpZ3VyZUxpbmVhck1vZGUoKTtcbiAgICAvLyBJbiBjYXNlIHRoZSBmb2N1cyBpcyBjdXJyZW50bHkgaW5zaWRlIHRoZSBzdGVwcGVyLCB3ZSBmb2N1cyB0aGUgc2VsZWN0ZWQgc3RlcCBsYWJlbC5cbiAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudD8uY2xvc2VzdCgnc2JiLXN0ZXBwZXInKSA9PT0gdGhpcykge1xuICAgICAgdGhpcy5zZWxlY3RlZD8ubGFiZWw/LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0TWFya2VyU2l6ZSgpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5fbG9hZGVkIHx8XG4gICAgICAhdGhpcy5zZWxlY3RlZCB8fFxuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID09PSB1bmRlZmluZWQgfHxcbiAgICAgICF0aGlzLnNlbGVjdGVkLmxhYmVsXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG9mZnNldCA9XG4gICAgICB0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCdcbiAgICAgICAgPyB0aGlzLnNlbGVjdGVkLmxhYmVsLm9mZnNldExlZnQgKyB0aGlzLnNlbGVjdGVkLmxhYmVsLm9mZnNldFdpZHRoXG4gICAgICAgIDogdGhpcy5fY2FsY3VsYXRlTGFiZWxPZmZzZXRUb3AoKTtcblxuICAgIHRoaXMuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2JiLXN0ZXBwZXItbWFya2VyLXNpemUnLCBgJHtvZmZzZXR9cHhgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NhbGN1bGF0ZUxhYmVsT2Zmc2V0VG9wKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBmb3IgKGNvbnN0IHN0ZXAgb2YgdGhpcy5zdGVwcykge1xuICAgICAgaWYgKHN0ZXAgPT09IHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBvZmZzZXQgPSBzdGVwLmxhYmVsIS5vZmZzZXRIZWlnaHQgKyBvZmZzZXQ7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICBvZmZzZXQgK1xuICAgICAgdGhpcy5zZWxlY3RlZCEubGFiZWwhLm9mZnNldEhlaWdodCEgK1xuICAgICAgcGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKHRoaXMpLmdldFByb3BlcnR5VmFsdWUoJy0tc2JiLXNwYWNpbmctZml4ZWQtNngnKSkgKlxuICAgICAgICAxNiAqXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWd1cmUoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcHMgPSB0aGlzLnN0ZXBzO1xuICAgIHN0ZXBzLmZvckVhY2goKHMpID0+IHMuY29uZmlndXJlKHRoaXMuX2xvYWRlZCkpO1xuICAgIHN0ZXBzXG4gICAgICAuZmlsdGVyKChzKSA9PiBzLmxhYmVsKVxuICAgICAgLm1hcCgocykgPT4gcy5sYWJlbCEpXG4gICAgICAuZm9yRWFjaCgobGFiZWwsIGksIGFycmF5KSA9PiB7XG4gICAgICAgIGxhYmVsLmNvbmZpZ3VyZShpICsgMSwgYXJyYXkubGVuZ3RoLCB0aGlzLl9sb2FkZWQpO1xuICAgICAgfSk7XG4gICAgdGhpcy5fc2VsZWN0KHRoaXMuc2VsZWN0ZWQgfHwgdGhpcy5fZW5hYmxlZFN0ZXBzWzBdKTtcbiAgICB0aGlzLl9wcm94eVNpemUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUxhYmVscygpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgIHN0ZXAuc2xvdCA9IHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyA/ICdzdGVwJyA6ICdzdGVwLWxhYmVsJztcbiAgICAgIHN0ZXAuc2V0QXR0cmlidXRlKCdkYXRhLW9yaWVudGF0aW9uJywgdGhpcy5vcmllbnRhdGlvbik7XG4gICAgICBzdGVwLmxhYmVsPy5zZXRBdHRyaWJ1dGUoJ2RhdGEtb3JpZW50YXRpb24nLCB0aGlzLm9yaWVudGF0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrT3JpZW50YXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaG9yaXpvbnRhbEZyb20pIHtcbiAgICAgIHRoaXMub3JpZW50YXRpb24gPSBpc0JyZWFrcG9pbnQodGhpcy5ob3Jpem9udGFsRnJvbSkgPyAnaG9yaXpvbnRhbCcgOiAndmVydGljYWwnO1xuICAgICAgdGhpcy5fdXBkYXRlTGFiZWxzKCk7XG4gICAgfVxuICAgIC8vIFRoZSB0aW1lb3V0IGlzIG5lZWRlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbWFya2VyIHRha2VzIHRoZSBjb3JyZWN0IHN0ZXAtbGFiZWwgc2l6ZS5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX3NldE1hcmtlclNpemUoKSwgMCk7XG4gIH1cblxuICBwcml2YXRlIF9vblN0ZXBwZXJSZXNpemUgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5fY2hlY2tPcmllbnRhdGlvbigpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9yZXNpemVPYnNlcnZlclRpbWVvdXQhKTtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1kaXNhYmxlLWFuaW1hdGlvbicsIHRydWUpO1xuXG4gICAgLy8gRGlzYWJsZSB0aGUgYW5pbWF0aW9uIHdoZW4gcmVzaXppbmcgdG8gYXZvaWQgc3RyYW5nZSB0cmFuc2l0aW9uIGVmZmVjdHMuXG4gICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXJUaW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICgpID0+IHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWRpc2FibGUtYW5pbWF0aW9uJywgZmFsc2UpLFxuICAgICAgREVCT1VOQ0VfVElNRSxcbiAgICApO1xuICB9O1xuXG4gIHByaXZhdGUgX2NvbmZpZ3VyZUxpbmVhck1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwLCBpbmRleCkgPT4ge1xuICAgICAgc3RlcC5sYWJlbD8udG9nZ2xlQXR0cmlidXRlKFxuICAgICAgICAnZGlzYWJsZWQnLFxuICAgICAgICAodGhpcy5saW5lYXIgJiYgaW5kZXggPiB0aGlzLnNlbGVjdGVkSW5kZXghKSB8fFxuICAgICAgICAgICghdGhpcy5saW5lYXIgJiYgc3RlcC5sYWJlbC5oYXNBdHRyaWJ1dGUoJ2RhdGEtZGlzYWJsZWQnKSksXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuX29uU3RlcHBlclJlc2l6ZSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1kaXNhYmxlLWFuaW1hdGlvbicsICF0aGlzLl9sb2FkZWQpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuX29uU3RlcHBlclJlc2l6ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IFByb21pc2U8dm9pZD4ge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgYXdhaXQgdGhpcy51cGRhdGVDb21wbGV0ZTtcbiAgICB0aGlzLl9sb2FkZWQgPSB0cnVlO1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9ICF0aGlzLmxpbmVhciA/IE51bWJlcih0aGlzLmdldEF0dHJpYnV0ZSgnc2VsZWN0ZWQtaW5kZXgnKSkgfHwgMCA6IDA7XG4gICAgdGhpcy5fY2hlY2tPcmllbnRhdGlvbigpO1xuICAgIC8vIFJlbW92ZSBbZGF0YS1kaXNhYmxlLWFuaW1hdGlvbl0gYWZ0ZXIgY29tcG9uZW50IGluaXRcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWRpc2FibGUtYW5pbWF0aW9uJywgZmFsc2UpLCBERUJPVU5DRV9USU1FKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ29yaWVudGF0aW9uJykgJiYgIXRoaXMuaG9yaXpvbnRhbEZyb20pIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUxhYmVscygpO1xuICAgICAgdGhpcy5fc2V0TWFya2VyU2l6ZSgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdsaW5lYXInKSAmJiB0aGlzLl9sb2FkZWQpIHtcbiAgICAgIHRoaXMuX2NvbmZpZ3VyZUxpbmVhck1vZGUoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdzaXplJykpIHtcbiAgICAgIHRoaXMuX3Byb3h5U2l6ZSgpO1xuICAgICAgdGhpcy5fc2V0TWFya2VyU2l6ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Byb3h5U2l6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgIHN0ZXAubGFiZWw/LnNldEF0dHJpYnV0ZSgnZGF0YS1zaXplJywgdGhpcy5zaXplKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUtleURvd24oZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZW5hYmxlZFN0ZXBzOiBTYmJTdGVwRWxlbWVudFtdID0gdGhpcy5fZW5hYmxlZFN0ZXBzO1xuXG4gICAgaWYgKFxuICAgICAgIWVuYWJsZWRTdGVwcyB8fFxuICAgICAgLy8gZG9uJ3QgdHJhcCBuZXN0ZWQgaGFuZGxpbmdcbiAgICAgICgoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkgIT09IHRoaXMgJiYgKGV2dC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnBhcmVudEVsZW1lbnQgIT09IHRoaXMpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzQXJyb3dLZXlQcmVzc2VkKGV2dCkpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnQ6IG51bWJlciA9IGVuYWJsZWRTdGVwcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWQhKTtcbiAgICAgIGNvbnN0IG5leHRJbmRleDogbnVtYmVyID0gZ2V0TmV4dEVsZW1lbnRJbmRleChldnQsIGN1cnJlbnQsIGVuYWJsZWRTdGVwcy5sZW5ndGgpO1xuICAgICAgdGhpcy5fc2VsZWN0KGVuYWJsZWRTdGVwc1tuZXh0SW5kZXhdKTtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zdGVwcGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc3RlcHBlcl9fbGFiZWxzXCIgcm9sZT1cInRhYmxpc3RcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwic3RlcC1sYWJlbFwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fY29uZmlndXJlfT48L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXN0ZXBwZXJfX3N0ZXBzXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInN0ZXBcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX2NvbmZpZ3VyZX0+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1zdGVwcGVyJzogU2JiU3RlcHBlckVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBLE1BQU0sZ0JBQWdCO0lBVWhCLHFCQUFpQixNQUFBOzswQkFEdEIsY0FBYyxhQUFhLENBQUM7Ozs7b0JBQ0csa0JBQWtCLFVBQVU7Ozs7Ozs7Ozs7Ozs7O0FBQXBDLEVBQUEsbUJBQVEsWUFBNkI7QUFBQSxJQWlFM0QsY0FBQTs7O0FBM0RBO0FBaUJBO0FBTTZCO0FBN0J6Qix5QkFBQSwyQkFBQSxrQkFBQSxNQUFBLDBCQUFBLEdBTThCLGtCQUFBLE1BQUEsc0JBQUEsS0FBSztBQWEvQixXQUFlLG1CQUFBLGtCQUFBLE1BQUEseUJBQUEsR0FBNkI7QUFJcEMseUJBQUEsK0JBQUEsa0JBQUEsTUFBQSwyQkFBOEIsWUFBWTtBQU1LLHlC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
@@ -41,7 +41,6 @@ export declare class SbbTabGroupElement extends SbbTabGroupElement_base {
41
41
  private _selectedTab?;
42
42
  private _tabGroupElement;
43
43
  private _tabContentElement;
44
- private _abort;
45
44
  private _tabAttributeObserver;
46
45
  private _tabGroupResizeObserver;
47
46
  private _tabContentResizeObserver;
@@ -59,7 +58,7 @@ export declare class SbbTabGroupElement extends SbbTabGroupElement_base {
59
58
  accessor initialSelectedIndex: number;
60
59
  /** Emits an event on selected tab change. */
61
60
  private _selectedTabChanged;
62
- connectedCallback(): void;
61
+ constructor();
63
62
  protected firstUpdated(changedProperties: PropertyValues<this>): void;
64
63
  /**
65
64
  * Disables a tab by index.
@@ -1 +1 @@
1
- {"version":3,"file":"tab-group.d.ts","sourceRoot":"","sources":["../../../../../src/elements/tabs/tab-group/tab-group.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAUvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAI1C,MAAM,MAAM,yBAAyB,GAAG;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,kBAAkB,CAAC;IACnC,SAAS,EAAE,aAAa,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACjD,WAAW,EAAE,aAAa,GAAG,SAAS,CAAC;CACxC,CAAC;AAEF,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,IAAI,IAAI,CAAC;IACjB,UAAU,IAAI,IAAI,CAAC;IACnB,MAAM,IAAI,IAAI,CAAC;IACf,OAAO,IAAI,IAAI,CAAC;IAChB,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,2BAA2B,CAAC;IAC9C,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;CACxB;;AAQD;;;;;;GAMG;AACH,qBAEM,kBAAmB,SAAQ,uBAA6B;IAC5D,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,gBAAuB,MAAM;;MAElB;IAEX,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,YAAY,CAAC,CAA0B;IAC/C,OAAO,CAAC,gBAAgB,CAAe;IACvC,OAAO,CAAC,kBAAkB,CAAe;IACzC,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,qBAAqB,CAI1B;IACH,OAAO,CAAC,uBAAuB,CAI5B;IACH,OAAO,CAAC,yBAAyB,CAI9B;IAEH;;;OAGG;IACH,IACW,IAAI,CAAC,KAAK,EAAE,uBAAuB,CAAC,MAAM,CAAC,EAGrD;IACD,IAAW,IAAI,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAEjD;IACD,OAAO,CAAC,KAAK,CAAyD;IAEtE;;;OAGG;IACH,SAEgB,oBAAoB,EAAE,MAAM,CAAK;IAEjD,6CAA6C;IAC7C,OAAO,CAAC,mBAAmB,CAGzB;IAEc,iBAAiB,IAAI,IAAI;cAMtB,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAS9E;;;OAGG;IACI,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIzC;;;OAGG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIxC;;;OAGG;IACI,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI1C,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,oBAAoB,CAY1B;IAEF,OAAO,CAAC,iBAAiB,CAavB;IAEF,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,wBAAwB;IAgBhC,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,UAAU;IAmGlB,OAAO,CAAC,cAAc;cAoBH,MAAM,IAAI,cAAc;CAe5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,eAAe,EAAE,kBAAkB,CAAC;KACrC;CACF"}
1
+ {"version":3,"file":"tab-group.d.ts","sourceRoot":"","sources":["../../../../../src/elements/tabs/tab-group/tab-group.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AASvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAI1C,MAAM,MAAM,yBAAyB,GAAG;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,kBAAkB,CAAC;IACnC,SAAS,EAAE,aAAa,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACjD,WAAW,EAAE,aAAa,GAAG,SAAS,CAAC;CACxC,CAAC;AAEF,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,IAAI,IAAI,CAAC;IACjB,UAAU,IAAI,IAAI,CAAC;IACnB,MAAM,IAAI,IAAI,CAAC;IACf,OAAO,IAAI,IAAI,CAAC;IAChB,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,2BAA2B,CAAC;IAC9C,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;CACxB;;AAQD;;;;;;GAMG;AACH,qBAEM,kBAAmB,SAAQ,uBAA6B;IAC5D,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,gBAAuB,MAAM;;MAElB;IAEX,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,YAAY,CAAC,CAA0B;IAC/C,OAAO,CAAC,gBAAgB,CAAe;IACvC,OAAO,CAAC,kBAAkB,CAAe;IACzC,OAAO,CAAC,qBAAqB,CAI1B;IACH,OAAO,CAAC,uBAAuB,CAI5B;IACH,OAAO,CAAC,yBAAyB,CAI9B;IAEH;;;OAGG;IACH,IACW,IAAI,CAAC,KAAK,EAAE,uBAAuB,CAAC,MAAM,CAAC,EAGrD;IACD,IAAW,IAAI,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAEjD;IACD,OAAO,CAAC,KAAK,CAAyD;IAEtE;;;OAGG;IACH,SAEgB,oBAAoB,EAAE,MAAM,CAAK;IAEjD,6CAA6C;IAC7C,OAAO,CAAC,mBAAmB,CAGzB;;cAOiB,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAS9E;;;OAGG;IACI,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIzC;;;OAGG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIxC;;;OAGG;IACI,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI1C,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,oBAAoB,CAY1B;IAEF,OAAO,CAAC,iBAAiB,CAavB;IAEF,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,wBAAwB;IAgBhC,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,UAAU;IAmGlB,OAAO,CAAC,cAAc;cAoBH,MAAM,IAAI,cAAc;CAe5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,eAAe,EAAE,kBAAkB,CAAC;KACrC;CACF"}
@@ -5,14 +5,13 @@ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot
5
5
  var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
6
6
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
7
7
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
8
- import { __runInitializers, __esDecorate } from "tslib";
8
+ import { __esDecorate, __runInitializers } from "tslib";
9
9
  import { MutationController } from "@lit-labs/observers/mutation-controller.js";
10
10
  import { ResizeController } from "@lit-labs/observers/resize-controller.js";
11
11
  import { css, LitElement, html } from "lit";
12
12
  import { customElement, property } from "lit/decorators.js";
13
13
  import { ref } from "lit/directives/ref.js";
14
14
  import { isArrowKeyPressed, getNextElementIndex } from "../core/a11y.js";
15
- import { SbbConnectedAbortController } from "../core/controllers.js";
16
15
  import { forceType } from "../core/decorators.js";
17
16
  import { isLean } from "../core/dom.js";
18
17
  import { EventEmitter, throttle } from "../core/eventing.js";
@@ -80,10 +79,10 @@ let SbbTabGroupElement = (() => {
80
79
  let _initialSelectedIndex_extraInitializers = [];
81
80
  var SbbTabGroupElement2 = (_a = class extends _classSuper {
82
81
  constructor() {
83
- super(...arguments);
82
+ var _a2;
83
+ super();
84
84
  __privateAdd(this, _initialSelectedIndex_accessor_storage);
85
85
  this._tabs = (__runInitializers(this, _instanceExtraInitializers), []);
86
- this._abort = new SbbConnectedAbortController(this);
87
86
  this._tabAttributeObserver = new MutationController(this, {
88
87
  target: null,
89
88
  config: tabObserverConfig,
@@ -103,13 +102,13 @@ let SbbTabGroupElement = (() => {
103
102
  __privateSet(this, _initialSelectedIndex_accessor_storage, __runInitializers(this, _initialSelectedIndex_initializers, 0));
104
103
  this._selectedTabChanged = (__runInitializers(this, _initialSelectedIndex_extraInitializers), new EventEmitter(this, SbbTabGroupElement2.events.didChange));
105
104
  this._onContentSlotChange = () => {
106
- var _a2, _b;
105
+ var _a3, _b;
107
106
  this._tabContentElement = this.shadowRoot.querySelector("div.tab-content");
108
107
  const loadedTabs = this._getTabs().filter((tab) => !this._tabs.includes(tab));
109
108
  if (loadedTabs.length) {
110
109
  loadedTabs.forEach((tab) => this._configure(tab));
111
110
  this._tabs = this._tabs.concat(loadedTabs);
112
- (_b = (_a2 = loadedTabs.find((tab) => tab.active)) == null ? void 0 : _a2.tabGroupActions) == null ? void 0 : _b.select();
111
+ (_b = (_a3 = loadedTabs.find((tab) => tab.active)) == null ? void 0 : _a3.tabGroupActions) == null ? void 0 : _b.select();
113
112
  }
114
113
  };
115
114
  this._onTabsSlotChange = () => {
@@ -117,13 +116,14 @@ let SbbTabGroupElement = (() => {
117
116
  if (tabs.length < this._tabs.length) {
118
117
  const removedTabs = this._tabs.filter((tab) => !tabs.includes(tab));
119
118
  removedTabs.forEach((removedTab) => {
120
- var _a2;
121
- (_a2 = removedTab.tab) == null ? void 0 : _a2.remove();
119
+ var _a3;
120
+ (_a3 = removedTab.tab) == null ? void 0 : _a3.remove();
122
121
  });
123
122
  this._tabs = tabs;
124
123
  }
125
124
  this._tabs.forEach((tab) => tab.setAttribute("data-size", this.size));
126
125
  };
126
+ (_a2 = this.addEventListener) == null ? void 0 : _a2.call(this, "keydown", (e) => this._handleKeyDown(e));
127
127
  }
128
128
  /**
129
129
  * Size variant, either s, l or xl.
@@ -146,11 +146,6 @@ let SbbTabGroupElement = (() => {
146
146
  set initialSelectedIndex(value) {
147
147
  __privateSet(this, _initialSelectedIndex_accessor_storage, value);
148
148
  }
149
- connectedCallback() {
150
- super.connectedCallback();
151
- const signal = this._abort.signal;
152
- this.addEventListener("keydown", (e) => this._handleKeyDown(e), { signal });
153
- }
154
149
  firstUpdated(changedProperties) {
155
150
  super.firstUpdated(changedProperties);
156
151
  this._tabs = this._getTabs();
@@ -393,4 +388,4 @@ let SbbTabGroupElement = (() => {
393
388
  export {
394
389
  SbbTabGroupElement
395
390
  };
396
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvdGFicy90YWItZ3JvdXAvdGFiLWdyb3VwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE11dGF0aW9uQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvbXV0YXRpb24tY29udHJvbGxlci5qcyc7XG5pbXBvcnQgeyBSZXNpemVDb250cm9sbGVyIH0gZnJvbSAnQGxpdC1sYWJzL29ic2VydmVycy9yZXNpemUtY29udHJvbGxlci5qcyc7XG5pbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB7IGdldE5leHRFbGVtZW50SW5kZXgsIGlzQXJyb3dLZXlQcmVzc2VkIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGlzTGVhbiB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLmpzJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgdGhyb3R0bGUgfSBmcm9tICcuLi8uLi9jb3JlL2V2ZW50aW5nLmpzJztcbmltcG9ydCB7IFNiYkh5ZHJhdGlvbk1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJUYWJMYWJlbEVsZW1lbnQgfSBmcm9tICcuLi90YWItbGFiZWwuanMnO1xuaW1wb3J0IHsgU2JiVGFiRWxlbWVudCB9IGZyb20gJy4uL3RhYi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3RhYi1ncm91cC5zY3NzP2xpdCZpbmxpbmUnO1xuXG5leHBvcnQgdHlwZSBTYmJUYWJDaGFuZ2VkRXZlbnREZXRhaWxzID0ge1xuICBhY3RpdmVJbmRleDogbnVtYmVyO1xuICBhY3RpdmVUYWJMYWJlbDogU2JiVGFiTGFiZWxFbGVtZW50O1xuICBhY3RpdmVUYWI6IFNiYlRhYkVsZW1lbnQ7XG4gIHByZXZpb3VzSW5kZXg6IG51bWJlcjtcbiAgcHJldmlvdXNUYWJMYWJlbDogU2JiVGFiTGFiZWxFbGVtZW50IHwgdW5kZWZpbmVkO1xuICBwcmV2aW91c1RhYjogU2JiVGFiRWxlbWVudCB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlU2JiVGFiR3JvdXBBY3Rpb25zIHtcbiAgYWN0aXZhdGUoKTogdm9pZDtcbiAgZGVhY3RpdmF0ZSgpOiB2b2lkO1xuICBlbmFibGUoKTogdm9pZDtcbiAgZGlzYWJsZSgpOiB2b2lkO1xuICBzZWxlY3QoKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYiBleHRlbmRzIFNiYlRhYkxhYmVsRWxlbWVudCB7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIHRhYj86IFNiYlRhYkVsZW1lbnQ7XG4gIGluZGV4PzogbnVtYmVyO1xuICB0YWJHcm91cEFjdGlvbnM/OiBJbnRlcmZhY2VTYmJUYWJHcm91cEFjdGlvbnM7XG4gIHNpemU6ICdzJyB8ICdsJyB8ICd4bCc7XG59XG5cbmNvbnN0IHRhYk9ic2VydmVyQ29uZmlnOiBNdXRhdGlvbk9ic2VydmVySW5pdCA9IHtcbiAgYXR0cmlidXRlRmlsdGVyOiBbJ2FjdGl2ZScsICdkaXNhYmxlZCddLFxufTtcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgb25lIG9yIG1vcmUgdGFicywgZWFjaCBvbmUgd2l0aCBhIGxhYmVsIGFuZCBhIGNvbnRlbnQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgY29udGVudCB0byB0aGUgYHNiYi10YWItZ3JvdXBgIHZpYVxuICogYHNiYi10YWItbGFiZWxgIGFuZCBgc2JiLXRhYmAgaW5zdGFuY2VzLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDxTYmJUYWJDaGFuZ2VkRXZlbnREZXRhaWxzPn0gZGlkQ2hhbmdlIC0gRW1pdHMgYW4gZXZlbnQgb24gc2VsZWN0ZWQgdGFiIGNoYW5nZS5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLXRhYi1ncm91cCcpXG5jbGFzcyBTYmJUYWJHcm91cEVsZW1lbnQgZXh0ZW5kcyBTYmJIeWRyYXRpb25NaXhpbihMaXRFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBkaWRDaGFuZ2U6ICdkaWRDaGFuZ2UnLFxuICB9IGFzIGNvbnN0O1xuXG4gIHByaXZhdGUgX3RhYnM6IEludGVyZmFjZVNiYlRhYkdyb3VwVGFiW10gPSBbXTtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRUYWI/OiBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYjtcbiAgcHJpdmF0ZSBfdGFiR3JvdXBFbGVtZW50ITogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX3RhYkNvbnRlbnRFbGVtZW50ITogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX2Fib3J0ID0gbmV3IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfdGFiQXR0cmlidXRlT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25Db250cm9sbGVyKHRoaXMsIHtcbiAgICB0YXJnZXQ6IG51bGwsXG4gICAgY29uZmlnOiB0YWJPYnNlcnZlckNvbmZpZyxcbiAgICBjYWxsYmFjazogKG11dGF0aW9uc0xpc3QpID0+IHRoaXMuX29uVGFiQXR0cmlidXRlc0NoYW5nZShtdXRhdGlvbnNMaXN0KSxcbiAgfSk7XG4gIHByaXZhdGUgX3RhYkdyb3VwUmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgIGNhbGxiYWNrOiAoZW50cmllcykgPT4gdGhpcy5fb25UYWJHcm91cEVsZW1lbnRSZXNpemUoZW50cmllcyksXG4gIH0pO1xuICBwcml2YXRlIF90YWJDb250ZW50UmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgIGNhbGxiYWNrOiAoZW50cmllcykgPT4gdGhpcy5fb25UYWJDb250ZW50RWxlbWVudFJlc2l6ZShlbnRyaWVzKSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFNpemUgdmFyaWFudCwgZWl0aGVyIHMsIGwgb3IgeGwuXG4gICAqIEBkZWZhdWx0ICdsJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBzZXQgc2l6ZSh2YWx1ZTogSW50ZXJmYWNlU2JiVGFiR3JvdXBUYWJbJ3NpemUnXSkge1xuICAgIHRoaXMuX3NpemUgPSB2YWx1ZTtcbiAgICB0aGlzLl91cGRhdGVTaXplKCk7XG4gIH1cbiAgcHVibGljIGdldCBzaXplKCk6IEludGVyZmFjZVNiYlRhYkdyb3VwVGFiWydzaXplJ10ge1xuICAgIHJldHVybiB0aGlzLl9zaXplO1xuICB9XG4gIHByaXZhdGUgX3NpemU6IEludGVyZmFjZVNiYlRhYkdyb3VwVGFiWydzaXplJ10gPSBpc0xlYW4oKSA/ICdzJyA6ICdsJztcblxuICAvKipcbiAgICogU2V0cyB0aGUgaW5pdGlhbCB0YWIuIElmIGl0IG1hdGNoZXMgYSBkaXNhYmxlZCB0YWIgb3IgZXhjZWVkcyB0aGUgbGVuZ3RoIG9mXG4gICAqIHRoZSB0YWIgZ3JvdXAsIHRoZSBmaXJzdCBlbmFibGVkIHRhYiB3aWxsIGJlIHNlbGVjdGVkLlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2luaXRpYWwtc2VsZWN0ZWQtaW5kZXgnLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIGFjY2Vzc29yIGluaXRpYWxTZWxlY3RlZEluZGV4OiBudW1iZXIgPSAwO1xuXG4gIC8qKiBFbWl0cyBhbiBldmVudCBvbiBzZWxlY3RlZCB0YWIgY2hhbmdlLiAqL1xuICBwcml2YXRlIF9zZWxlY3RlZFRhYkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxTYmJUYWJDaGFuZ2VkRXZlbnREZXRhaWxzPiA9IG5ldyBFdmVudEVtaXR0ZXIoXG4gICAgdGhpcyxcbiAgICBTYmJUYWJHcm91cEVsZW1lbnQuZXZlbnRzLmRpZENoYW5nZSxcbiAgKTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBjb25zdCBzaWduYWwgPSB0aGlzLl9hYm9ydC5zaWduYWw7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGUpID0+IHRoaXMuX2hhbmRsZUtleURvd24oZSksIHsgc2lnbmFsIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgdGhpcy5fdGFicyA9IHRoaXMuX2dldFRhYnMoKTtcbiAgICB0aGlzLl90YWJzLmZvckVhY2goKHRhYikgPT4gdGhpcy5fY29uZmlndXJlKHRhYikpO1xuICAgIHRoaXMuX2luaXRTZWxlY3Rpb24oKTtcbiAgICB0aGlzLl90YWJHcm91cFJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5fdGFiR3JvdXBFbGVtZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlcyBhIHRhYiBieSBpbmRleC5cbiAgICogQHBhcmFtIHRhYkluZGV4IFRoZSBpbmRleCBvZiB0aGUgdGFiIHlvdSB3YW50IHRvIGRpc2FibGUuXG4gICAqL1xuICBwdWJsaWMgZGlzYWJsZVRhYih0YWJJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fdGFic1t0YWJJbmRleF0/LnRhYkdyb3VwQWN0aW9ucz8uZGlzYWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgYSB0YWIgYnkgaW5kZXguXG4gICAqIEBwYXJhbSB0YWJJbmRleCBUaGUgaW5kZXggb2YgdGhlIHRhYiB5b3Ugd2FudCB0byBlbmFibGUuXG4gICAqL1xuICBwdWJsaWMgZW5hYmxlVGFiKHRhYkluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl90YWJzW3RhYkluZGV4XT8udGFiR3JvdXBBY3Rpb25zPy5lbmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZXMgYSB0YWIgYnkgaW5kZXguXG4gICAqIEBwYXJhbSB0YWJJbmRleCBUaGUgaW5kZXggb2YgdGhlIHRhYiB5b3Ugd2FudCB0byBhY3RpdmF0ZS5cbiAgICovXG4gIHB1YmxpYyBhY3RpdmF0ZVRhYih0YWJJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fdGFic1t0YWJJbmRleF0/LnRhYkdyb3VwQWN0aW9ucz8uc2VsZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRUYWJzKCk6IEludGVyZmFjZVNiYlRhYkdyb3VwVGFiW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuY2hpbGRyZW4gPz8gW10pLmZpbHRlcigoY2hpbGQpID0+XG4gICAgICAvXnNiYi10YWItbGFiZWwkL3UudGVzdChjaGlsZC5sb2NhbE5hbWUpLFxuICAgICkgYXMgSW50ZXJmYWNlU2JiVGFiR3JvdXBUYWJbXTtcbiAgfVxuXG4gIHByaXZhdGUgX2VuYWJsZWRUYWJzKCk6IEludGVyZmFjZVNiYlRhYkdyb3VwVGFiW10ge1xuICAgIHJldHVybiB0aGlzLl90YWJzLmZpbHRlcigodCkgPT4gIXQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVNpemUoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCB0YWIgb2YgdGhpcy5fdGFicykge1xuICAgICAgdGFiLnNldEF0dHJpYnV0ZSgnZGF0YS1zaXplJywgdGhpcy5zaXplKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vbkNvbnRlbnRTbG90Q2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuX3RhYkNvbnRlbnRFbGVtZW50ID0gdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCdkaXYudGFiLWNvbnRlbnQnKSE7XG4gICAgY29uc3QgbG9hZGVkVGFicyA9IHRoaXMuX2dldFRhYnMoKS5maWx0ZXIoKHRhYikgPT4gIXRoaXMuX3RhYnMuaW5jbHVkZXModGFiKSk7XG5cbiAgICAvLyBpZiBhIG5ldyB0YWIvY29udGVudCBpcyBhZGRlZCB0byB0aGUgdGFiIGdyb3VwXG4gICAgaWYgKGxvYWRlZFRhYnMubGVuZ3RoKSB7XG4gICAgICBsb2FkZWRUYWJzLmZvckVhY2goKHRhYikgPT4gdGhpcy5fY29uZmlndXJlKHRhYikpO1xuICAgICAgdGhpcy5fdGFicyA9IHRoaXMuX3RhYnMuY29uY2F0KGxvYWRlZFRhYnMpO1xuXG4gICAgICAvLyBJZiB0aGVyZSBpcyBhbiBhY3RpdmUgdGFiIGluIHRoZSBuZXcgYmF0Y2gsIGl0IGJlY29tZXMgdGhlIG5ldyBzZWxlY3RlZFxuICAgICAgbG9hZGVkVGFicy5maW5kKCh0YWIpID0+IHRhYi5hY3RpdmUpPy50YWJHcm91cEFjdGlvbnM/LnNlbGVjdCgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9vblRhYnNTbG90Q2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IHRhYnMgPSB0aGlzLl9nZXRUYWJzKCk7XG5cbiAgICAvLyBpZiBhIHRhYiBpcyByZW1vdmVkIGZyb20gdGhlIHRhYiBncm91cFxuICAgIGlmICh0YWJzLmxlbmd0aCA8IHRoaXMuX3RhYnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCByZW1vdmVkVGFicyA9IHRoaXMuX3RhYnMuZmlsdGVyKCh0YWIpID0+ICF0YWJzLmluY2x1ZGVzKHRhYikpO1xuXG4gICAgICByZW1vdmVkVGFicy5mb3JFYWNoKChyZW1vdmVkVGFiKSA9PiB7XG4gICAgICAgIHJlbW92ZWRUYWIudGFiPy5yZW1vdmUoKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fdGFicyA9IHRhYnM7XG4gICAgfVxuICAgIHRoaXMuX3RhYnMuZm9yRWFjaCgodGFiOiBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYikgPT4gdGFiLnNldEF0dHJpYnV0ZSgnZGF0YS1zaXplJywgdGhpcy5zaXplKSk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfYXNzaWduSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHNiYi10YWItcGFuZWwtJHsrK25leHRJZH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmluaXRpYWxTZWxlY3RlZEluZGV4ID49IDAgJiZcbiAgICAgIHRoaXMuaW5pdGlhbFNlbGVjdGVkSW5kZXggPCB0aGlzLl90YWJzLmxlbmd0aCAmJlxuICAgICAgIXRoaXMuX3RhYnNbdGhpcy5pbml0aWFsU2VsZWN0ZWRJbmRleF0uZGlzYWJsZWRcbiAgICApIHtcbiAgICAgIHRoaXMuX3RhYnNbdGhpcy5pbml0aWFsU2VsZWN0ZWRJbmRleF0udGFiR3JvdXBBY3Rpb25zPy5zZWxlY3QoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZW5hYmxlZFRhYnMoKVswXT8udGFiR3JvdXBBY3Rpb25zPy5zZWxlY3QoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vblRhYkF0dHJpYnV0ZXNDaGFuZ2UobXV0YXRpb25zTGlzdDogTXV0YXRpb25SZWNvcmRbXSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25zTGlzdCkge1xuICAgICAgaWYgKG11dGF0aW9uLnR5cGUgIT09ICdhdHRyaWJ1dGVzJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB0YWIgPSBtdXRhdGlvbi50YXJnZXQgYXMgSW50ZXJmYWNlU2JiVGFiR3JvdXBUYWI7XG5cbiAgICAgIGlmIChtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lID09PSAnZGlzYWJsZWQnKSB7XG4gICAgICAgIGlmICh0YWIuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpICYmIHRhYiAhPT0gdGhpcy5fc2VsZWN0ZWRUYWIpIHtcbiAgICAgICAgICB0YWIudGFiR3JvdXBBY3Rpb25zPy5kaXNhYmxlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGFiLmRpc2FibGVkKSB7XG4gICAgICAgICAgdGFiLnRhYkdyb3VwQWN0aW9ucz8uZW5hYmxlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lID09PSAnYWN0aXZlJykge1xuICAgICAgICBpZiAodGFiLmhhc0F0dHJpYnV0ZSgnYWN0aXZlJykgJiYgIXRhYi5kaXNhYmxlZCkge1xuICAgICAgICAgIHRhYi50YWJHcm91cEFjdGlvbnM/LnNlbGVjdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRhYiA9PT0gdGhpcy5fc2VsZWN0ZWRUYWIpIHtcbiAgICAgICAgICB0YWIudG9nZ2xlQXR0cmlidXRlKCdhY3RpdmUnLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uVGFiR3JvdXBFbGVtZW50UmVzaXplKGVudHJpZXM6IFJlc2l6ZU9ic2VydmVyRW50cnlbXSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgY29uc3QgdGFiVGl0bGVzID0gKFxuICAgICAgICBlbnRyeS50YXJnZXQuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTFNsb3RFbGVtZW50XG4gICAgICApLmFzc2lnbmVkRWxlbWVudHMoKSBhcyBTYmJUYWJMYWJlbEVsZW1lbnRbXTtcblxuICAgICAgZm9yIChjb25zdCB0YWIgb2YgdGFiVGl0bGVzKSB7XG4gICAgICAgIHRhYi50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAgICAgJ2RhdGEtaGFzLWRpdmlkZXInLFxuICAgICAgICAgIHRhYiA9PT0gdGFiVGl0bGVzWzBdIHx8IHRhYi5vZmZzZXRMZWZ0ID09PSB0YWJUaXRsZXNbMF0ub2Zmc2V0TGVmdCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItdGFiLWdyb3VwLXdpZHRoJywgYCR7dGhpcy5fdGFiR3JvdXBFbGVtZW50LmNsaWVudFdpZHRofXB4YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25UYWJDb250ZW50RWxlbWVudFJlc2l6ZShlbnRyaWVzOiBSZXNpemVPYnNlcnZlckVudHJ5W10pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RhYkNvbnRlbnRFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgY29uc3QgY29udGVudEhlaWdodCA9IE1hdGguZmxvb3IoZW50cnkuY29udGVudFJlY3QuaGVpZ2h0KTtcblxuICAgICAgdGhpcy5fdGFiQ29udGVudEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7Y29udGVudEhlaWdodH1weGA7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY29uZmlndXJlKHRhYkxhYmVsOiBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYik6IHZvaWQge1xuICAgIHRhYkxhYmVsLnRhYkdyb3VwQWN0aW9ucyA9IHtcbiAgICAgIGFjdGl2YXRlOiAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRhYkxhYmVsLnRvZ2dsZUF0dHJpYnV0ZSgnYWN0aXZlJywgdHJ1ZSk7XG4gICAgICAgIHRhYkxhYmVsLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRhYkxhYmVsLnRhYkluZGV4ID0gMDtcbiAgICAgICAgdGFiTGFiZWwuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgJ3RydWUnKTtcbiAgICAgICAgdGFiTGFiZWwudGFiPy50b2dnbGVBdHRyaWJ1dGUoJ2FjdGl2ZScsIHRydWUpO1xuICAgICAgfSxcbiAgICAgIGRlYWN0aXZhdGU6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGFiTGFiZWwucmVtb3ZlQXR0cmlidXRlKCdhY3RpdmUnKTtcbiAgICAgICAgdGFiTGFiZWwuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHRhYkxhYmVsLnRhYkluZGV4ID0gLTE7XG4gICAgICAgIHRhYkxhYmVsLnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsICdmYWxzZScpO1xuICAgICAgICB0YWJMYWJlbC50YWI/LnJlbW92ZUF0dHJpYnV0ZSgnYWN0aXZlJyk7XG4gICAgICB9LFxuICAgICAgZGlzYWJsZTogKCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAodGFiTGFiZWwuZGlzYWJsZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0YWJMYWJlbC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykpIHtcbiAgICAgICAgICB0YWJMYWJlbC50b2dnbGVBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGFiTGFiZWwuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB0YWJMYWJlbC50YWJJbmRleCA9IC0xO1xuICAgICAgICB0YWJMYWJlbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCAnZmFsc2UnKTtcbiAgICAgICAgdGFiTGFiZWwudGFiPy5yZW1vdmVBdHRyaWJ1dGUoJ2FjdGl2ZScpO1xuICAgICAgICBpZiAodGFiTGFiZWwuYWN0aXZlKSB7XG4gICAgICAgICAgdGFiTGFiZWwucmVtb3ZlQXR0cmlidXRlKCdhY3RpdmUnKTtcbiAgICAgICAgICB0YWJMYWJlbC5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9lbmFibGVkVGFicygpWzBdPy50YWJHcm91cEFjdGlvbnM/LnNlbGVjdCgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW5hYmxlOiAoKTogdm9pZCA9PiB7XG4gICAgICAgIGlmICh0YWJMYWJlbC5kaXNhYmxlZCkge1xuICAgICAgICAgIHRhYkxhYmVsLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcbiAgICAgICAgICB0YWJMYWJlbC5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc2VsZWN0OiAoKTogdm9pZCA9PiB7XG4gICAgICAgIGlmICh0YWJMYWJlbCAhPT0gdGhpcy5fc2VsZWN0ZWRUYWIgJiYgIXRhYkxhYmVsLmRpc2FibGVkKSB7XG4gICAgICAgICAgY29uc3QgcHJldlRhYiA9IHRoaXMuX3NlbGVjdGVkVGFiO1xuXG4gICAgICAgICAgaWYgKHByZXZUYWIpIHtcbiAgICAgICAgICAgIHByZXZUYWIudGFiR3JvdXBBY3Rpb25zPy5kZWFjdGl2YXRlKCk7XG4gICAgICAgICAgICB0aGlzLl90YWJDb250ZW50UmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKHByZXZUYWIudGFiISk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGFiTGFiZWwudGFiR3JvdXBBY3Rpb25zPy5hY3RpdmF0ZSgpO1xuICAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGFiID0gdGFiTGFiZWw7XG5cbiAgICAgICAgICB0aGlzLl90YWJDb250ZW50UmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0YWJMYWJlbC50YWIhKTtcbiAgICAgICAgICBjb25zdCB0YWJzID0gdGhpcy5fdGFicztcbiAgICAgICAgICB0aGlzLl9zZWxlY3RlZFRhYkNoYW5nZWQuZW1pdCh7XG4gICAgICAgICAgICBhY3RpdmVJbmRleDogdGFicy5maW5kSW5kZXgoKGUpID0+IGUgPT09IHRhYkxhYmVsKSxcbiAgICAgICAgICAgIGFjdGl2ZVRhYkxhYmVsOiB0YWJMYWJlbCxcbiAgICAgICAgICAgIGFjdGl2ZVRhYjogdGFiTGFiZWwudGFiIGFzIFNiYlRhYkVsZW1lbnQsXG4gICAgICAgICAgICBwcmV2aW91c0luZGV4OiB0YWJzLmZpbmRJbmRleCgoZSkgPT4gZSA9PT0gcHJldlRhYiksXG4gICAgICAgICAgICBwcmV2aW91c1RhYkxhYmVsOiBwcmV2VGFiLFxuICAgICAgICAgICAgcHJldmlvdXNUYWI6IHByZXZUYWI/LnRhYiBhcyBTYmJUYWJFbGVtZW50LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYgJiYgdGFiTGFiZWwuZGlzYWJsZWQpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1lvdSBjYW5ub3QgYWN0aXZhdGUgYSBkaXNhYmxlZCB0YWInKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgaWYgKHRhYkxhYmVsLm5leHRFbGVtZW50U2libGluZz8ubG9jYWxOYW1lID09PSAnc2JiLXRhYicpIHtcbiAgICAgIHRhYkxhYmVsLnRhYiA9IHRhYkxhYmVsLm5leHRFbGVtZW50U2libGluZyBhcyBTYmJUYWJFbGVtZW50O1xuICAgICAgdGFiTGFiZWwudGFiLmlkID0gdGhpcy5fYXNzaWduSWQoKTtcbiAgICAgIGlmICh0YWJMYWJlbC50YWIgaW5zdGFuY2VvZiBTYmJUYWJFbGVtZW50KSB7XG4gICAgICAgIHRhYkxhYmVsLnRhYi50YWJJbmRleCA9IDA7XG4gICAgICAgIHRhYkxhYmVsLnRhYi5jb25maWd1cmUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYpIHtcbiAgICAgIHRhYkxhYmVsLmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJlbmQnLCAnPHNiYi10YWI+Tm8gY29udGVudC48L3NiYi10YWI+Jyk7XG4gICAgICB0YWJMYWJlbC50YWIgPSB0YWJMYWJlbC5uZXh0RWxlbWVudFNpYmxpbmcgYXMgU2JiVGFiRWxlbWVudDtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYE1pc3NpbmcgY29udGVudDogeW91IHNob3VsZCBwcm92aWRlIGEgcmVsYXRlZCBjb250ZW50IGZvciB0aGUgdGFiICR7dGFiTGFiZWwub3V0ZXJIVE1MfS5gLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGFiTGFiZWwudGFiSW5kZXggPSAtMTtcbiAgICB0YWJMYWJlbC5kaXNhYmxlZCA9IHRhYkxhYmVsLmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcbiAgICB0YWJMYWJlbC5hY3RpdmUgPSB0YWJMYWJlbC5oYXNBdHRyaWJ1dGUoJ2FjdGl2ZScpICYmICF0YWJMYWJlbC5kaXNhYmxlZDtcbiAgICB0YWJMYWJlbC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAndGFiJyk7XG4gICAgdGFiTGFiZWwuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgU3RyaW5nKHRhYkxhYmVsLmFjdGl2ZSkpO1xuICAgIHRhYkxhYmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgdGFiTGFiZWwudGFiR3JvdXBBY3Rpb25zPy5zZWxlY3QoKTtcbiAgICB9KTtcbiAgICBpZiAodGFiTGFiZWwudGFiKSB7XG4gICAgICB0YWJMYWJlbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnLCB0YWJMYWJlbC50YWIuaWQpO1xuICAgICAgdGFiTGFiZWwudGFiLnNldEF0dHJpYnV0ZSgncm9sZScsICd0YWJwYW5lbCcpO1xuICAgICAgdGFiTGFiZWwudGFiLnRvZ2dsZUF0dHJpYnV0ZSgnYWN0aXZlJywgdGFiTGFiZWwuYWN0aXZlKTtcbiAgICB9XG5cbiAgICB0aGlzLl90YWJBdHRyaWJ1dGVPYnNlcnZlci5vYnNlcnZlKHRhYkxhYmVsKTtcbiAgICB0YWJMYWJlbC5zbG90ID0gJ3RhYi1iYXInO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlS2V5RG93bihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVkVGFiczogSW50ZXJmYWNlU2JiVGFiR3JvdXBUYWJbXSA9IHRoaXMuX2VuYWJsZWRUYWJzKCk7XG5cbiAgICBpZiAoXG4gICAgICAhZW5hYmxlZFRhYnMgfHxcbiAgICAgIC8vIGRvbid0IHRyYXAgbmVzdGVkIGhhbmRsaW5nXG4gICAgICAoKGV2dC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpICE9PSB0aGlzICYmIChldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5wYXJlbnRFbGVtZW50ICE9PSB0aGlzKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc0Fycm93S2V5UHJlc3NlZChldnQpKSB7XG4gICAgICBjb25zdCBjdXJyZW50OiBudW1iZXIgPSBlbmFibGVkVGFicy5maW5kSW5kZXgoKHQ6IEludGVyZmFjZVNiYlRhYkdyb3VwVGFiKSA9PiB0LmFjdGl2ZSk7XG4gICAgICBjb25zdCBuZXh0SW5kZXg6IG51bWJlciA9IGdldE5leHRFbGVtZW50SW5kZXgoZXZ0LCBjdXJyZW50LCBlbmFibGVkVGFicy5sZW5ndGgpO1xuICAgICAgZW5hYmxlZFRhYnNbbmV4dEluZGV4XT8udGFiR3JvdXBBY3Rpb25zPy5zZWxlY3QoKTtcbiAgICAgIGVuYWJsZWRUYWJzW25leHRJbmRleF0/LmZvY3VzKCk7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0YWItZ3JvdXBcIlxuICAgICAgICByb2xlPVwidGFibGlzdFwiXG4gICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpID0+ICh0aGlzLl90YWJHcm91cEVsZW1lbnQgPSBlbCBhcyBIVE1MRWxlbWVudCkpfVxuICAgICAgPlxuICAgICAgICA8c2xvdCBuYW1lPVwidGFiLWJhclwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fb25UYWJzU2xvdENoYW5nZX0+PC9zbG90PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWItY29udGVudFwiPlxuICAgICAgICA8c2xvdCBAc2xvdGNoYW5nZT0ke3Rocm90dGxlKHRoaXMuX29uQ29udGVudFNsb3RDaGFuZ2UsIDE1MCl9Pjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi10YWItZ3JvdXAnOiBTYmJUYWJHcm91cEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJTYmJUYWJHcm91cEVsZW1lbnQiLCJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTRDQSxNQUFNLG9CQUEwQztBQUFBLEVBQzlDLGlCQUFpQixDQUFDLFVBQVUsVUFBVTs7QUFHeEMsSUFBSSxTQUFTO0lBV1Asc0JBQWtCLE1BQUE7OzBCQUR2QixjQUFjLGVBQWUsQ0FBQzs7OztvQkFDRSxrQkFBa0IsVUFBVTs7Ozs7O0FBQXBDQSxNQUFBQSx1QkFBQSxtQkFBUSxZQUE2QjtBQUFBOztBQStDNUQ7QUF6Q1EsV0FBQSxTQU5KLGtCQUFBLE1BQUEsMEJBQUEsR0FNdUMsQ0FBQTtBQUluQyxXQUFBLFNBQVMsSUFBSSw0QkFBNEIsSUFBSTtBQUM3QyxXQUFBLHdCQUF3QixJ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
391
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvdGFicy90YWItZ3JvdXAvdGFiLWdyb3VwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE11dGF0aW9uQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvbXV0YXRpb24tY29udHJvbGxlci5qcyc7XG5pbXBvcnQgeyBSZXNpemVDb250cm9sbGVyIH0gZnJvbSAnQGxpdC1sYWJzL29ic2VydmVycy9yZXNpemUtY29udHJvbGxlci5qcyc7XG5pbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB7IGdldE5leHRFbGVtZW50SW5kZXgsIGlzQXJyb3dLZXlQcmVzc2VkIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IGZvcmNlVHlwZSB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBpc0xlYW4gfSBmcm9tICcuLi8uLi9jb3JlL2RvbS5qcyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIHRocm90dGxlIH0gZnJvbSAnLi4vLi4vY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBTYmJIeWRyYXRpb25NaXhpbiB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiVGFiTGFiZWxFbGVtZW50IH0gZnJvbSAnLi4vdGFiLWxhYmVsLmpzJztcbmltcG9ydCB7IFNiYlRhYkVsZW1lbnQgfSBmcm9tICcuLi90YWIuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi90YWItZ3JvdXAuc2Nzcz9saXQmaW5saW5lJztcblxuZXhwb3J0IHR5cGUgU2JiVGFiQ2hhbmdlZEV2ZW50RGV0YWlscyA9IHtcbiAgYWN0aXZlSW5kZXg6IG51bWJlcjtcbiAgYWN0aXZlVGFiTGFiZWw6IFNiYlRhYkxhYmVsRWxlbWVudDtcbiAgYWN0aXZlVGFiOiBTYmJUYWJFbGVtZW50O1xuICBwcmV2aW91c0luZGV4OiBudW1iZXI7XG4gIHByZXZpb3VzVGFiTGFiZWw6IFNiYlRhYkxhYmVsRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgcHJldmlvdXNUYWI6IFNiYlRhYkVsZW1lbnQgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEludGVyZmFjZVNiYlRhYkdyb3VwQWN0aW9ucyB7XG4gIGFjdGl2YXRlKCk6IHZvaWQ7XG4gIGRlYWN0aXZhdGUoKTogdm9pZDtcbiAgZW5hYmxlKCk6IHZvaWQ7XG4gIGRpc2FibGUoKTogdm9pZDtcbiAgc2VsZWN0KCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlU2JiVGFiR3JvdXBUYWIgZXh0ZW5kcyBTYmJUYWJMYWJlbEVsZW1lbnQge1xuICBhY3RpdmU6IGJvb2xlYW47XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICB0YWI/OiBTYmJUYWJFbGVtZW50O1xuICBpbmRleD86IG51bWJlcjtcbiAgdGFiR3JvdXBBY3Rpb25zPzogSW50ZXJmYWNlU2JiVGFiR3JvdXBBY3Rpb25zO1xuICBzaXplOiAncycgfCAnbCcgfCAneGwnO1xufVxuXG5jb25zdCB0YWJPYnNlcnZlckNvbmZpZzogTXV0YXRpb25PYnNlcnZlckluaXQgPSB7XG4gIGF0dHJpYnV0ZUZpbHRlcjogWydhY3RpdmUnLCAnZGlzYWJsZWQnXSxcbn07XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIEl0IGRpc3BsYXlzIG9uZSBvciBtb3JlIHRhYnMsIGVhY2ggb25lIHdpdGggYSBsYWJlbCBhbmQgYSBjb250ZW50LlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGNvbnRlbnQgdG8gdGhlIGBzYmItdGFiLWdyb3VwYCB2aWFcbiAqIGBzYmItdGFiLWxhYmVsYCBhbmQgYHNiYi10YWJgIGluc3RhbmNlcy5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8U2JiVGFiQ2hhbmdlZEV2ZW50RGV0YWlscz59IGRpZENoYW5nZSAtIEVtaXRzIGFuIGV2ZW50IG9uIHNlbGVjdGVkIHRhYiBjaGFuZ2UuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi10YWItZ3JvdXAnKVxuY2xhc3MgU2JiVGFiR3JvdXBFbGVtZW50IGV4dGVuZHMgU2JiSHlkcmF0aW9uTWl4aW4oTGl0RWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgZGlkQ2hhbmdlOiAnZGlkQ2hhbmdlJyxcbiAgfSBhcyBjb25zdDtcblxuICBwcml2YXRlIF90YWJzOiBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYltdID0gW107XG4gIHByaXZhdGUgX3NlbGVjdGVkVGFiPzogSW50ZXJmYWNlU2JiVGFiR3JvdXBUYWI7XG4gIHByaXZhdGUgX3RhYkdyb3VwRWxlbWVudCE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF90YWJDb250ZW50RWxlbWVudCE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF90YWJBdHRyaWJ1dGVPYnNlcnZlciA9IG5ldyBNdXRhdGlvbkNvbnRyb2xsZXIodGhpcywge1xuICAgIHRhcmdldDogbnVsbCxcbiAgICBjb25maWc6IHRhYk9ic2VydmVyQ29uZmlnLFxuICAgIGNhbGxiYWNrOiAobXV0YXRpb25zTGlzdCkgPT4gdGhpcy5fb25UYWJBdHRyaWJ1dGVzQ2hhbmdlKG11dGF0aW9uc0xpc3QpLFxuICB9KTtcbiAgcHJpdmF0ZSBfdGFiR3JvdXBSZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVDb250cm9sbGVyKHRoaXMsIHtcbiAgICB0YXJnZXQ6IG51bGwsXG4gICAgc2tpcEluaXRpYWw6IHRydWUsXG4gICAgY2FsbGJhY2s6IChlbnRyaWVzKSA9PiB0aGlzLl9vblRhYkdyb3VwRWxlbWVudFJlc2l6ZShlbnRyaWVzKSxcbiAgfSk7XG4gIHByaXZhdGUgX3RhYkNvbnRlbnRSZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVDb250cm9sbGVyKHRoaXMsIHtcbiAgICB0YXJnZXQ6IG51bGwsXG4gICAgc2tpcEluaXRpYWw6IHRydWUsXG4gICAgY2FsbGJhY2s6IChlbnRyaWVzKSA9PiB0aGlzLl9vblRhYkNvbnRlbnRFbGVtZW50UmVzaXplKGVudHJpZXMpLFxuICB9KTtcblxuICAvKipcbiAgICogU2l6ZSB2YXJpYW50LCBlaXRoZXIgcywgbCBvciB4bC5cbiAgICogQGRlZmF1bHQgJ2wnIC8gJ3MnIChsZWFuKVxuICAgKi9cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIHNldCBzaXplKHZhbHVlOiBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYlsnc2l6ZSddKSB7XG4gICAgdGhpcy5fc2l6ZSA9IHZhbHVlO1xuICAgIHRoaXMuX3VwZGF0ZVNpemUoKTtcbiAgfVxuICBwdWJsaWMgZ2V0IHNpemUoKTogSW50ZXJmYWNlU2JiVGFiR3JvdXBUYWJbJ3NpemUnXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NpemU7XG4gIH1cbiAgcHJpdmF0ZSBfc2l6ZTogSW50ZXJmYWNlU2JiVGFiR3JvdXBUYWJbJ3NpemUnXSA9IGlzTGVhbigpID8gJ3MnIDogJ2wnO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpbml0aWFsIHRhYi4gSWYgaXQgbWF0Y2hlcyBhIGRpc2FibGVkIHRhYiBvciBleGNlZWRzIHRoZSBsZW5ndGggb2ZcbiAgICogdGhlIHRhYiBncm91cCwgdGhlIGZpcnN0IGVuYWJsZWQgdGFiIHdpbGwgYmUgc2VsZWN0ZWQuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaW5pdGlhbC1zZWxlY3RlZC1pbmRleCcsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgYWNjZXNzb3IgaW5pdGlhbFNlbGVjdGVkSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgLyoqIEVtaXRzIGFuIGV2ZW50IG9uIHNlbGVjdGVkIHRhYiBjaGFuZ2UuICovXG4gIHByaXZhdGUgX3NlbGVjdGVkVGFiQ2hhbmdlZDogRXZlbnRFbWl0dGVyPFNiYlRhYkNoYW5nZWRFdmVudERldGFpbHM+ID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYlRhYkdyb3VwRWxlbWVudC5ldmVudHMuZGlkQ2hhbmdlLFxuICApO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdrZXlkb3duJywgKGUpID0+IHRoaXMuX2hhbmRsZUtleURvd24oZSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgdGhpcy5fdGFicyA9IHRoaXMuX2dldFRhYnMoKTtcbiAgICB0aGlzLl90YWJzLmZvckVhY2goKHRhYikgPT4gdGhpcy5fY29uZmlndXJlKHRhYikpO1xuICAgIHRoaXMuX2luaXRTZWxlY3Rpb24oKTtcbiAgICB0aGlzLl90YWJHcm91cFJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5fdGFiR3JvdXBFbGVtZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlcyBhIHRhYiBieSBpbmRleC5cbiAgICogQHBhcmFtIHRhYkluZGV4IFRoZSBpbmRleCBvZiB0aGUgdGFiIHlvdSB3YW50IHRvIGRpc2FibGUuXG4gICAqL1xuICBwdWJsaWMgZGlzYWJsZVRhYih0YWJJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fdGFic1t0YWJJbmRleF0/LnRhYkdyb3VwQWN0aW9ucz8uZGlzYWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgYSB0YWIgYnkgaW5kZXguXG4gICAqIEBwYXJhbSB0YWJJbmRleCBUaGUgaW5kZXggb2YgdGhlIHRhYiB5b3Ugd2FudCB0byBlbmFibGUuXG4gICAqL1xuICBwdWJsaWMgZW5hYmxlVGFiKHRhYkluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl90YWJzW3RhYkluZGV4XT8udGFiR3JvdXBBY3Rpb25zPy5lbmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZXMgYSB0YWIgYnkgaW5kZXguXG4gICAqIEBwYXJhbSB0YWJJbmRleCBUaGUgaW5kZXggb2YgdGhlIHRhYiB5b3Ugd2FudCB0byBhY3RpdmF0ZS5cbiAgICovXG4gIHB1YmxpYyBhY3RpdmF0ZVRhYih0YWJJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fdGFic1t0YWJJbmRleF0/LnRhYkdyb3VwQWN0aW9ucz8uc2VsZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRUYWJzKCk6IEludGVyZmFjZVNiYlRhYkdyb3VwVGFiW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuY2hpbGRyZW4gPz8gW10pLmZpbHRlcigoY2hpbGQpID0+XG4gICAgICAvXnNiYi10YWItbGFiZWwkL3UudGVzdChjaGlsZC5sb2NhbE5hbWUpLFxuICAgICkgYXMgSW50ZXJmYWNlU2JiVGFiR3JvdXBUYWJbXTtcbiAgfVxuXG4gIHByaXZhdGUgX2VuYWJsZWRUYWJzKCk6IEludGVyZmFjZVNiYlRhYkdyb3VwVGFiW10ge1xuICAgIHJldHVybiB0aGlzLl90YWJzLmZpbHRlcigodCkgPT4gIXQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVNpemUoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCB0YWIgb2YgdGhpcy5fdGFicykge1xuICAgICAgdGFiLnNldEF0dHJpYnV0ZSgnZGF0YS1zaXplJywgdGhpcy5zaXplKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vbkNvbnRlbnRTbG90Q2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuX3RhYkNvbnRlbnRFbGVtZW50ID0gdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCdkaXYudGFiLWNvbnRlbnQnKSE7XG4gICAgY29uc3QgbG9hZGVkVGFicyA9IHRoaXMuX2dldFRhYnMoKS5maWx0ZXIoKHRhYikgPT4gIXRoaXMuX3RhYnMuaW5jbHVkZXModGFiKSk7XG5cbiAgICAvLyBpZiBhIG5ldyB0YWIvY29udGVudCBpcyBhZGRlZCB0byB0aGUgdGFiIGdyb3VwXG4gICAgaWYgKGxvYWRlZFRhYnMubGVuZ3RoKSB7XG4gICAgICBsb2FkZWRUYWJzLmZvckVhY2goKHRhYikgPT4gdGhpcy5fY29uZmlndXJlKHRhYikpO1xuICAgICAgdGhpcy5fdGFicyA9IHRoaXMuX3RhYnMuY29uY2F0KGxvYWRlZFRhYnMpO1xuXG4gICAgICAvLyBJZiB0aGVyZSBpcyBhbiBhY3RpdmUgdGFiIGluIHRoZSBuZXcgYmF0Y2gsIGl0IGJlY29tZXMgdGhlIG5ldyBzZWxlY3RlZFxuICAgICAgbG9hZGVkVGFicy5maW5kKCh0YWIpID0+IHRhYi5hY3RpdmUpPy50YWJHcm91cEFjdGlvbnM/LnNlbGVjdCgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9vblRhYnNTbG90Q2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IHRhYnMgPSB0aGlzLl9nZXRUYWJzKCk7XG5cbiAgICAvLyBpZiBhIHRhYiBpcyByZW1vdmVkIGZyb20gdGhlIHRhYiBncm91cFxuICAgIGlmICh0YWJzLmxlbmd0aCA8IHRoaXMuX3RhYnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCByZW1vdmVkVGFicyA9IHRoaXMuX3RhYnMuZmlsdGVyKCh0YWIpID0+ICF0YWJzLmluY2x1ZGVzKHRhYikpO1xuXG4gICAgICByZW1vdmVkVGFicy5mb3JFYWNoKChyZW1vdmVkVGFiKSA9PiB7XG4gICAgICAgIHJlbW92ZWRUYWIudGFiPy5yZW1vdmUoKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fdGFicyA9IHRhYnM7XG4gICAgfVxuICAgIHRoaXMuX3RhYnMuZm9yRWFjaCgodGFiOiBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYikgPT4gdGFiLnNldEF0dHJpYnV0ZSgnZGF0YS1zaXplJywgdGhpcy5zaXplKSk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfYXNzaWduSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHNiYi10YWItcGFuZWwtJHsrK25leHRJZH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmluaXRpYWxTZWxlY3RlZEluZGV4ID49IDAgJiZcbiAgICAgIHRoaXMuaW5pdGlhbFNlbGVjdGVkSW5kZXggPCB0aGlzLl90YWJzLmxlbmd0aCAmJlxuICAgICAgIXRoaXMuX3RhYnNbdGhpcy5pbml0aWFsU2VsZWN0ZWRJbmRleF0uZGlzYWJsZWRcbiAgICApIHtcbiAgICAgIHRoaXMuX3RhYnNbdGhpcy5pbml0aWFsU2VsZWN0ZWRJbmRleF0udGFiR3JvdXBBY3Rpb25zPy5zZWxlY3QoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZW5hYmxlZFRhYnMoKVswXT8udGFiR3JvdXBBY3Rpb25zPy5zZWxlY3QoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vblRhYkF0dHJpYnV0ZXNDaGFuZ2UobXV0YXRpb25zTGlzdDogTXV0YXRpb25SZWNvcmRbXSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25zTGlzdCkge1xuICAgICAgaWYgKG11dGF0aW9uLnR5cGUgIT09ICdhdHRyaWJ1dGVzJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB0YWIgPSBtdXRhdGlvbi50YXJnZXQgYXMgSW50ZXJmYWNlU2JiVGFiR3JvdXBUYWI7XG5cbiAgICAgIGlmIChtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lID09PSAnZGlzYWJsZWQnKSB7XG4gICAgICAgIGlmICh0YWIuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpICYmIHRhYiAhPT0gdGhpcy5fc2VsZWN0ZWRUYWIpIHtcbiAgICAgICAgICB0YWIudGFiR3JvdXBBY3Rpb25zPy5kaXNhYmxlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGFiLmRpc2FibGVkKSB7XG4gICAgICAgICAgdGFiLnRhYkdyb3VwQWN0aW9ucz8uZW5hYmxlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lID09PSAnYWN0aXZlJykge1xuICAgICAgICBpZiAodGFiLmhhc0F0dHJpYnV0ZSgnYWN0aXZlJykgJiYgIXRhYi5kaXNhYmxlZCkge1xuICAgICAgICAgIHRhYi50YWJHcm91cEFjdGlvbnM/LnNlbGVjdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRhYiA9PT0gdGhpcy5fc2VsZWN0ZWRUYWIpIHtcbiAgICAgICAgICB0YWIudG9nZ2xlQXR0cmlidXRlKCdhY3RpdmUnLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uVGFiR3JvdXBFbGVtZW50UmVzaXplKGVudHJpZXM6IFJlc2l6ZU9ic2VydmVyRW50cnlbXSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgY29uc3QgdGFiVGl0bGVzID0gKFxuICAgICAgICBlbnRyeS50YXJnZXQuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTFNsb3RFbGVtZW50XG4gICAgICApLmFzc2lnbmVkRWxlbWVudHMoKSBhcyBTYmJUYWJMYWJlbEVsZW1lbnRbXTtcblxuICAgICAgZm9yIChjb25zdCB0YWIgb2YgdGFiVGl0bGVzKSB7XG4gICAgICAgIHRhYi50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAgICAgJ2RhdGEtaGFzLWRpdmlkZXInLFxuICAgICAgICAgIHRhYiA9PT0gdGFiVGl0bGVzWzBdIHx8IHRhYi5vZmZzZXRMZWZ0ID09PSB0YWJUaXRsZXNbMF0ub2Zmc2V0TGVmdCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItdGFiLWdyb3VwLXdpZHRoJywgYCR7dGhpcy5fdGFiR3JvdXBFbGVtZW50LmNsaWVudFdpZHRofXB4YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25UYWJDb250ZW50RWxlbWVudFJlc2l6ZShlbnRyaWVzOiBSZXNpemVPYnNlcnZlckVudHJ5W10pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RhYkNvbnRlbnRFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgY29uc3QgY29udGVudEhlaWdodCA9IE1hdGguZmxvb3IoZW50cnkuY29udGVudFJlY3QuaGVpZ2h0KTtcblxuICAgICAgdGhpcy5fdGFiQ29udGVudEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7Y29udGVudEhlaWdodH1weGA7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY29uZmlndXJlKHRhYkxhYmVsOiBJbnRlcmZhY2VTYmJUYWJHcm91cFRhYik6IHZvaWQge1xuICAgIHRhYkxhYmVsLnRhYkdyb3VwQWN0aW9ucyA9IHtcbiAgICAgIGFjdGl2YXRlOiAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRhYkxhYmVsLnRvZ2dsZUF0dHJpYnV0ZSgnYWN0aXZlJywgdHJ1ZSk7XG4gICAgICAgIHRhYkxhYmVsLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRhYkxhYmVsLnRhYkluZGV4ID0gMDtcbiAgICAgICAgdGFiTGFiZWwuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgJ3RydWUnKTtcbiAgICAgICAgdGFiTGFiZWwudGFiPy50b2dnbGVBdHRyaWJ1dGUoJ2FjdGl2ZScsIHRydWUpO1xuICAgICAgfSxcbiAgICAgIGRlYWN0aXZhdGU6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGFiTGFiZWwucmVtb3ZlQXR0cmlidXRlKCdhY3RpdmUnKTtcbiAgICAgICAgdGFiTGFiZWwuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHRhYkxhYmVsLnRhYkluZGV4ID0gLTE7XG4gICAgICAgIHRhYkxhYmVsLnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsICdmYWxzZScpO1xuICAgICAgICB0YWJMYWJlbC50YWI/LnJlbW92ZUF0dHJpYnV0ZSgnYWN0aXZlJyk7XG4gICAgICB9LFxuICAgICAgZGlzYWJsZTogKCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAodGFiTGFiZWwuZGlzYWJsZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0YWJMYWJlbC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykpIHtcbiAgICAgICAgICB0YWJMYWJlbC50b2dnbGVBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGFiTGFiZWwuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB0YWJMYWJlbC50YWJJbmRleCA9IC0xO1xuICAgICAgICB0YWJMYWJlbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCAnZmFsc2UnKTtcbiAgICAgICAgdGFiTGFiZWwudGFiPy5yZW1vdmVBdHRyaWJ1dGUoJ2FjdGl2ZScpO1xuICAgICAgICBpZiAodGFiTGFiZWwuYWN0aXZlKSB7XG4gICAgICAgICAgdGFiTGFiZWwucmVtb3ZlQXR0cmlidXRlKCdhY3RpdmUnKTtcbiAgICAgICAgICB0YWJMYWJlbC5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9lbmFibGVkVGFicygpWzBdPy50YWJHcm91cEFjdGlvbnM/LnNlbGVjdCgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW5hYmxlOiAoKTogdm9pZCA9PiB7XG4gICAgICAgIGlmICh0YWJMYWJlbC5kaXNhYmxlZCkge1xuICAgICAgICAgIHRhYkxhYmVsLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcbiAgICAgICAgICB0YWJMYWJlbC5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc2VsZWN0OiAoKTogdm9pZCA9PiB7XG4gICAgICAgIGlmICh0YWJMYWJlbCAhPT0gdGhpcy5fc2VsZWN0ZWRUYWIgJiYgIXRhYkxhYmVsLmRpc2FibGVkKSB7XG4gICAgICAgICAgY29uc3QgcHJldlRhYiA9IHRoaXMuX3NlbGVjdGVkVGFiO1xuXG4gICAgICAgICAgaWYgKHByZXZUYWIpIHtcbiAgICAgICAgICAgIHByZXZUYWIudGFiR3JvdXBBY3Rpb25zPy5kZWFjdGl2YXRlKCk7XG4gICAgICAgICAgICB0aGlzLl90YWJDb250ZW50UmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKHByZXZUYWIudGFiISk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGFiTGFiZWwudGFiR3JvdXBBY3Rpb25zPy5hY3RpdmF0ZSgpO1xuICAgICAgICAgIHRoaXMuX3NlbGVjdGVkVGFiID0gdGFiTGFiZWw7XG5cbiAgICAgICAgICB0aGlzLl90YWJDb250ZW50UmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0YWJMYWJlbC50YWIhKTtcbiAgICAgICAgICBjb25zdCB0YWJzID0gdGhpcy5fdGFicztcbiAgICAgICAgICB0aGlzLl9zZWxlY3RlZFRhYkNoYW5nZWQuZW1pdCh7XG4gICAgICAgICAgICBhY3RpdmVJbmRleDogdGFicy5maW5kSW5kZXgoKGUpID0+IGUgPT09IHRhYkxhYmVsKSxcbiAgICAgICAgICAgIGFjdGl2ZVRhYkxhYmVsOiB0YWJMYWJlbCxcbiAgICAgICAgICAgIGFjdGl2ZVRhYjogdGFiTGFiZWwudGFiIGFzIFNiYlRhYkVsZW1lbnQsXG4gICAgICAgICAgICBwcmV2aW91c0luZGV4OiB0YWJzLmZpbmRJbmRleCgoZSkgPT4gZSA9PT0gcHJldlRhYiksXG4gICAgICAgICAgICBwcmV2aW91c1RhYkxhYmVsOiBwcmV2VGFiLFxuICAgICAgICAgICAgcHJldmlvdXNUYWI6IHByZXZUYWI/LnRhYiBhcyBTYmJUYWJFbGVtZW50LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYgJiYgdGFiTGFiZWwuZGlzYWJsZWQpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1lvdSBjYW5ub3QgYWN0aXZhdGUgYSBkaXNhYmxlZCB0YWInKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgaWYgKHRhYkxhYmVsLm5leHRFbGVtZW50U2libGluZz8ubG9jYWxOYW1lID09PSAnc2JiLXRhYicpIHtcbiAgICAgIHRhYkxhYmVsLnRhYiA9IHRhYkxhYmVsLm5leHRFbGVtZW50U2libGluZyBhcyBTYmJUYWJFbGVtZW50O1xuICAgICAgdGFiTGFiZWwudGFiLmlkID0gdGhpcy5fYXNzaWduSWQoKTtcbiAgICAgIGlmICh0YWJMYWJlbC50YWIgaW5zdGFuY2VvZiBTYmJUYWJFbGVtZW50KSB7XG4gICAgICAgIHRhYkxhYmVsLnRhYi50YWJJbmRleCA9IDA7XG4gICAgICAgIHRhYkxhYmVsLnRhYi5jb25maWd1cmUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYpIHtcbiAgICAgIHRhYkxhYmVsLmluc2VydEFkamFjZW50SFRNTCgnYWZ0ZXJlbmQnLCAnPHNiYi10YWI+Tm8gY29udGVudC48L3NiYi10YWI+Jyk7XG4gICAgICB0YWJMYWJlbC50YWIgPSB0YWJMYWJlbC5uZXh0RWxlbWVudFNpYmxpbmcgYXMgU2JiVGFiRWxlbWVudDtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYE1pc3NpbmcgY29udGVudDogeW91IHNob3VsZCBwcm92aWRlIGEgcmVsYXRlZCBjb250ZW50IGZvciB0aGUgdGFiICR7dGFiTGFiZWwub3V0ZXJIVE1MfS5gLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGFiTGFiZWwudGFiSW5kZXggPSAtMTtcbiAgICB0YWJMYWJlbC5kaXNhYmxlZCA9IHRhYkxhYmVsLmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKTtcbiAgICB0YWJMYWJlbC5hY3RpdmUgPSB0YWJMYWJlbC5oYXNBdHRyaWJ1dGUoJ2FjdGl2ZScpICYmICF0YWJMYWJlbC5kaXNhYmxlZDtcbiAgICB0YWJMYWJlbC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAndGFiJyk7XG4gICAgdGFiTGFiZWwuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgU3RyaW5nKHRhYkxhYmVsLmFjdGl2ZSkpO1xuICAgIHRhYkxhYmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgdGFiTGFiZWwudGFiR3JvdXBBY3Rpb25zPy5zZWxlY3QoKTtcbiAgICB9KTtcbiAgICBpZiAodGFiTGFiZWwudGFiKSB7XG4gICAgICB0YWJMYWJlbC5zZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnLCB0YWJMYWJlbC50YWIuaWQpO1xuICAgICAgdGFiTGFiZWwudGFiLnNldEF0dHJpYnV0ZSgncm9sZScsICd0YWJwYW5lbCcpO1xuICAgICAgdGFiTGFiZWwudGFiLnRvZ2dsZUF0dHJpYnV0ZSgnYWN0aXZlJywgdGFiTGFiZWwuYWN0aXZlKTtcbiAgICB9XG5cbiAgICB0aGlzLl90YWJBdHRyaWJ1dGVPYnNlcnZlci5vYnNlcnZlKHRhYkxhYmVsKTtcbiAgICB0YWJMYWJlbC5zbG90ID0gJ3RhYi1iYXInO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlS2V5RG93bihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVkVGFiczogSW50ZXJmYWNlU2JiVGFiR3JvdXBUYWJbXSA9IHRoaXMuX2VuYWJsZWRUYWJzKCk7XG5cbiAgICBpZiAoXG4gICAgICAhZW5hYmxlZFRhYnMgfHxcbiAgICAgIC8vIGRvbid0IHRyYXAgbmVzdGVkIGhhbmRsaW5nXG4gICAgICAoKGV2dC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpICE9PSB0aGlzICYmIChldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5wYXJlbnRFbGVtZW50ICE9PSB0aGlzKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc0Fycm93S2V5UHJlc3NlZChldnQpKSB7XG4gICAgICBjb25zdCBjdXJyZW50OiBudW1iZXIgPSBlbmFibGVkVGFicy5maW5kSW5kZXgoKHQ6IEludGVyZmFjZVNiYlRhYkdyb3VwVGFiKSA9PiB0LmFjdGl2ZSk7XG4gICAgICBjb25zdCBuZXh0SW5kZXg6IG51bWJlciA9IGdldE5leHRFbGVtZW50SW5kZXgoZXZ0LCBjdXJyZW50LCBlbmFibGVkVGFicy5sZW5ndGgpO1xuICAgICAgZW5hYmxlZFRhYnNbbmV4dEluZGV4XT8udGFiR3JvdXBBY3Rpb25zPy5zZWxlY3QoKTtcbiAgICAgIGVuYWJsZWRUYWJzW25leHRJbmRleF0/LmZvY3VzKCk7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0YWItZ3JvdXBcIlxuICAgICAgICByb2xlPVwidGFibGlzdFwiXG4gICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpID0+ICh0aGlzLl90YWJHcm91cEVsZW1lbnQgPSBlbCBhcyBIVE1MRWxlbWVudCkpfVxuICAgICAgPlxuICAgICAgICA8c2xvdCBuYW1lPVwidGFiLWJhclwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fb25UYWJzU2xvdENoYW5nZX0+PC9zbG90PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWItY29udGVudFwiPlxuICAgICAgICA8c2xvdCBAc2xvdGNoYW5nZT0ke3Rocm90dGxlKHRoaXMuX29uQ29udGVudFNsb3RDaGFuZ2UsIDE1MCl9Pjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi10YWItZ3JvdXAnOiBTYmJUYWJHcm91cEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJTYmJUYWJHcm91cEVsZW1lbnQiLCJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkNBLE1BQU0sb0JBQTBDO0FBQUEsRUFDOUMsaUJBQWlCLENBQUMsVUFBVSxVQUFVOztBQUd4QyxJQUFJLFNBQVM7SUFXUCxzQkFBa0IsTUFBQTs7MEJBRHZCLGNBQWMsZUFBZSxDQUFDOzs7O29CQUNFLGtCQUFrQixVQUFVOzs7Ozs7QUFBcENBLE1BQUFBLHVCQUFBLG1CQUFRLFlBQTZCO0FBQUEsSUFzRDVELGNBQUE7OztBQVJBO0FBeENRLFdBQUEsU0FOSixrQkFBQSxNQUFBLDBCQUFBLEdBTXVDLENBQUE7QUFJbkMsV0FBQSx3QkFBd0IsSUFBSSxtQkFBbUIsTUFBTTtBQUFBLFFBQzNELFFBQVE7QUFBQSxRQUNSLFFBQVE7QUFBQSxRQUNSLFVBQVUsQ0FBQyxrQkFBa0IsS0FBSyx1QkFBdUIsYUFBYTtBQUFBLE1BQUEsQ0FDdkU7QUFDTyxXQUFBLDBCQUEwQixJQUFJLGlCQUFpQixNQUFNO0FBQUEsUUFDM0QsUUFBUTtBQUFBLFFBQ1IsYUFBYTtBQUFBLFFBQ2IsVUFBVSxDQUFDLFlBQVksS0FBSyx5QkFBeUIsT0FBTztBQUFBLE1BQUEsQ0FDN0Q7QUFDTyxXQUFBLDRCQUE0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
@@ -36,7 +36,7 @@ export declare class SbbTagElement extends SbbTagElement_base {
36
36
  private _didChange;
37
37
  /** Change event emitter */
38
38
  private _change;
39
- private _abort;
39
+ constructor();
40
40
  connectedCallback(): void;
41
41
  /** Method triggered on button click. Inverts the checked value and emits events. */
42
42
  private _handleClick;
@@ -1 +1 @@
1
- {"version":3,"file":"tag.d.ts","sourceRoot":"","sources":["../../../../../src/elements/tag/tag/tag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAI1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAWnE,MAAM,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC;;AAEnC;;;;;;;;;GASG;AACH,qBAGM,aAAc,SAAQ,kBAAsE;IAChG,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,gBAAuB,MAAM;;;;MAIlB;IAEX,uCAAuC;IACvC,SAEgB,MAAM,EAAE,MAAM,CAAM;IAEpC,kCAAkC;IAClC,SAEgB,OAAO,EAAE,OAAO,CAAS;IAEzC;;;OAGG;IACH,SAEgB,IAAI,EAAE,UAAU,CAAwB;IAExD,4CAA4C;IAC5C,OAAO,CAAC,MAAM,CAAmC;IAEjD,0BAA0B;IAC1B,OAAO,CAAC,MAAM,CAGX;IAEH,4FAA4F;IAC5F,OAAO,CAAC,UAAU,CAEf;IAEH,2BAA2B;IAC3B,OAAO,CAAC,OAAO,CAEZ;IAEH,OAAO,CAAC,MAAM,CAAyC;IAEvC,iBAAiB,IAAI,IAAI;IAMzC,oFAAoF;IACpF,OAAO,CAAC,YAAY;cAgBD,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAazD,cAAc,IAAI,cAAc;CAWpD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,SAAS,EAAE,aAAa,CAAC;KAC1B;CACF"}
1
+ {"version":3,"file":"tag.d.ts","sourceRoot":"","sources":["../../../../../src/elements/tag/tag/tag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAI1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAUnE,MAAM,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC;;AAEnC;;;;;;;;;GASG;AACH,qBAGM,aAAc,SAAQ,kBAAsE;IAChG,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,gBAAuB,MAAM;;;;MAIlB;IAEX,uCAAuC;IACvC,SAEgB,MAAM,EAAE,MAAM,CAAM;IAEpC,kCAAkC;IAClC,SAEgB,OAAO,EAAE,OAAO,CAAS;IAEzC;;;OAGG;IACH,SAEgB,IAAI,EAAE,UAAU,CAAwB;IAExD,4CAA4C;IAC5C,OAAO,CAAC,MAAM,CAAmC;IAEjD,0BAA0B;IAC1B,OAAO,CAAC,MAAM,CAGX;IAEH,4FAA4F;IAC5F,OAAO,CAAC,UAAU,CAEf;IAEH,2BAA2B;IAC3B,OAAO,CAAC,OAAO,CAEZ;;IAOa,iBAAiB,IAAI,IAAI;IAKzC,oFAAoF;IACpF,OAAO,CAAC,YAAY;cAgBD,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAazD,cAAc,IAAI,cAAc;CAWpD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,SAAS,EAAE,aAAa,CAAC;KAC1B;CACF"}
@@ -31,7 +31,7 @@ export declare class SbbTagGroupElement extends SbbTagGroupElement_base {
31
31
  * If set multiple to false, the value is a string (or null).
32
32
  * If set multiple to true, the value is an array.
33
33
  */
34
- set value(value: string | string[] | null);
34
+ set value(value: string | (string | null)[] | null);
35
35
  get value(): string | (string | null)[] | null;
36
36
  private _value;
37
37
  /** The child instances of sbb-tag as an array. */
@@ -1 +1 @@
1
- {"version":3,"file":"tag-group.d.ts","sourceRoot":"","sources":["../../../../../src/elements/tag/tag-group/tag-group.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAKb,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;;AAI3D;;;;GAIG;AACH,qBAEM,kBAAmB,SAAQ,uBAEhC;IACC,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,mBAA4B,mBAAmB,WAAsB;IAErE;;OAEG;IACH,SAEgB,sBAAsB,EAAE,MAAM,CAAM;IAEpD;;;;;OAKG;IACH,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C;;;OAGG;IACH,SAA6C,IAAI,EAAE,UAAU,CAAwB;IAErF;;;;OAIG;IACH,IACW,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EAyB/C;IACD,IAAW,KAAK,IAAI,MAAM,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAMpD;IACD,OAAO,CAAC,MAAM,CAAkC;IAEhD,kDAAkD;IAClD,IAAW,IAAI,IAAI,aAAa,EAAE,CAEjC;cAEkB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI;cA0B3E,MAAM,IAAI,cAAc;CAU5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,eAAe,EAAE,kBAAkB,CAAC;KACrC;CACF"}
1
+ {"version":3,"file":"tag-group.d.ts","sourceRoot":"","sources":["../../../../../src/elements/tag/tag-group/tag-group.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAKb,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;;AAI3D;;;;GAIG;AACH,qBAEM,kBAAmB,SAAQ,uBAEhC;IACC,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,mBAA4B,mBAAmB,WAAsB;IAErE;;OAEG;IACH,SAEgB,sBAAsB,EAAE,MAAM,CAAM;IAEpD;;;;;OAKG;IACH,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C;;;OAGG;IACH,SAA6C,IAAI,EAAE,UAAU,CAAwB;IAErF;;;;OAIG;IACH,IACW,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,EAyBxD;IACD,IAAW,KAAK,IAAI,MAAM,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAMpD;IACD,OAAO,CAAC,MAAM,CAA2C;IAEzD,kDAAkD;IAClD,IAAW,IAAI,IAAI,aAAa,EAAE,CAEjC;cAEkB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI;cA0B3E,MAAM,IAAI,cAAc;CAU5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,eAAe,EAAE,kBAAkB,CAAC;KACrC;CACF"}