@sbb-esta/lyne-elements 2.0.3 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/accordion/accordion.d.ts.map +1 -1
  2. package/accordion.js +6 -6
  3. package/action-group.js +3 -3
  4. package/alert/alert.js +8 -8
  5. package/autocomplete/autocomplete-base-element.d.ts +4 -0
  6. package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  7. package/autocomplete-grid/autocomplete-grid-button.js +4 -4
  8. package/autocomplete-grid/autocomplete-grid-cell.js +3 -3
  9. package/autocomplete-grid/autocomplete-grid-optgroup.js +4 -4
  10. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts +1 -1
  11. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts.map +1 -1
  12. package/autocomplete-grid/autocomplete-grid-option.js +10 -10
  13. package/autocomplete-grid/autocomplete-grid-row.js +5 -5
  14. package/autocomplete.js +99 -90
  15. package/breadcrumb/breadcrumb-group.js +5 -5
  16. package/button/accent-button-link.js +9 -9
  17. package/button/accent-button-static.js +6 -6
  18. package/button/accent-button.js +6 -6
  19. package/button/button-link.js +7 -7
  20. package/button/button-static.js +7 -7
  21. package/button/button.js +8 -8
  22. package/button/common.js +15 -15
  23. package/button/mini-button-group.js +8 -8
  24. package/button/secondary-button-link.js +7 -7
  25. package/button/secondary-button-static.js +7 -7
  26. package/button/secondary-button.js +3 -3
  27. package/button/transparent-button-link.js +6 -6
  28. package/button/transparent-button-static.js +5 -5
  29. package/button/transparent-button.js +6 -6
  30. package/card/card-badge.js +11 -11
  31. package/card/card-button.js +5 -5
  32. package/card/card-link.js +7 -7
  33. package/card/card.js +3 -3
  34. package/checkbox/checkbox-panel.js +16 -16
  35. package/checkbox/checkbox.js +15 -15
  36. package/checkbox/common.js +3 -3
  37. package/chip-label.js +3 -3
  38. package/clock.js +10 -10
  39. package/container/container/container.d.ts +1 -1
  40. package/container/container/container.d.ts.map +1 -1
  41. package/container/container.js +23 -23
  42. package/container/sticky-bar/sticky-bar.d.ts +1 -1
  43. package/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  44. package/container/sticky-bar.js +4 -4
  45. package/core/a11y/focus.d.ts.map +1 -1
  46. package/core/a11y.js +8 -8
  47. package/core/base-elements/link-base-element.d.ts +2 -0
  48. package/core/base-elements/link-base-element.d.ts.map +1 -1
  49. package/core/base-elements.js +125 -114
  50. package/core/controllers.js +4 -4
  51. package/core/datetime/date-adapter.d.ts +1 -1
  52. package/core/datetime/date-adapter.d.ts.map +1 -1
  53. package/core/datetime/native-date-adapter.d.ts +1 -1
  54. package/core/datetime/native-date-adapter.d.ts.map +1 -1
  55. package/core/datetime.js +6 -6
  56. package/core/dom/scroll.d.ts +1 -0
  57. package/core/dom/scroll.d.ts.map +1 -1
  58. package/core/dom.js +35 -35
  59. package/core/eventing.js +4 -4
  60. package/core/images.d.ts.map +1 -1
  61. package/core/mixins.js +18 -18
  62. package/core/styles/core.scss +23 -2
  63. package/core/testing.js +14 -14
  64. package/core.css +20 -2
  65. package/custom-elements.json +828 -431
  66. package/datepicker/common/datepicker-association-controllers.d.ts +21 -0
  67. package/datepicker/common/datepicker-association-controllers.d.ts.map +1 -0
  68. package/datepicker/common/datepicker-button.d.ts +17 -9
  69. package/datepicker/common/datepicker-button.d.ts.map +1 -1
  70. package/datepicker/common.d.ts +1 -0
  71. package/datepicker/common.d.ts.map +1 -1
  72. package/datepicker/common.js +130 -92
  73. package/datepicker/datepicker/datepicker.d.ts +19 -4
  74. package/datepicker/datepicker/datepicker.d.ts.map +1 -1
  75. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts +14 -8
  76. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  77. package/datepicker/datepicker-toggle.js +106 -113
  78. package/datepicker/datepicker.js +95 -80
  79. package/development/accordion/accordion.d.ts.map +1 -1
  80. package/development/accordion.js +1 -1
  81. package/development/action-group.js +1 -1
  82. package/development/autocomplete/autocomplete-base-element.d.ts +4 -0
  83. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  84. package/development/autocomplete-grid/autocomplete-grid-cell.js +1 -1
  85. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts +1 -1
  86. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts.map +1 -1
  87. package/development/autocomplete-grid/autocomplete-grid-option.js +3 -3
  88. package/development/autocomplete-grid/autocomplete-grid-row.js +1 -1
  89. package/development/autocomplete.js +37 -8
  90. package/development/breadcrumb/breadcrumb-group.js +3 -3
  91. package/development/button/common.js +69 -70
  92. package/development/calendar.js +1 -1
  93. package/development/card/card-badge.js +1 -1
  94. package/development/card/card.js +1 -1
  95. package/development/chip-label.js +1 -1
  96. package/development/clock.js +1 -1
  97. package/development/container/container/container.d.ts +1 -1
  98. package/development/container/container/container.d.ts.map +1 -1
  99. package/development/container/container.js +18 -2
  100. package/development/container/sticky-bar/sticky-bar.d.ts +1 -1
  101. package/development/container/sticky-bar/sticky-bar.d.ts.map +1 -1
  102. package/development/container/sticky-bar.js +9 -1
  103. package/development/core/a11y/focus.d.ts.map +1 -1
  104. package/development/core/a11y.js +3 -3
  105. package/development/core/base-elements/link-base-element.d.ts +2 -0
  106. package/development/core/base-elements/link-base-element.d.ts.map +1 -1
  107. package/development/core/base-elements.js +22 -5
  108. package/development/core/controllers.js +1 -1
  109. package/development/core/datetime/date-adapter.d.ts +1 -1
  110. package/development/core/datetime/date-adapter.d.ts.map +1 -1
  111. package/development/core/datetime/native-date-adapter.d.ts +1 -1
  112. package/development/core/datetime/native-date-adapter.d.ts.map +1 -1
  113. package/development/core/datetime.js +1 -1
  114. package/development/core/dom/scroll.d.ts +1 -0
  115. package/development/core/dom/scroll.d.ts.map +1 -1
  116. package/development/core/dom.js +4 -1
  117. package/development/core/images.d.ts.map +1 -1
  118. package/development/core/mixins.js +1 -1
  119. package/development/datepicker/common/datepicker-association-controllers.d.ts +21 -0
  120. package/development/datepicker/common/datepicker-association-controllers.d.ts.map +1 -0
  121. package/development/datepicker/common/datepicker-button.d.ts +17 -9
  122. package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
  123. package/development/datepicker/common.d.ts +1 -0
  124. package/development/datepicker/common.d.ts.map +1 -1
  125. package/development/datepicker/common.js +139 -90
  126. package/development/datepicker/datepicker/datepicker.d.ts +19 -4
  127. package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
  128. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts +14 -8
  129. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  130. package/development/datepicker/datepicker-toggle.js +76 -73
  131. package/development/datepicker/datepicker.js +55 -37
  132. package/development/dialog/dialog/dialog.d.ts +2 -0
  133. package/development/dialog/dialog/dialog.d.ts.map +1 -1
  134. package/development/dialog/dialog-content.js +1 -1
  135. package/development/dialog/dialog.js +38 -12
  136. package/development/expansion-panel/expansion-panel-content.js +1 -1
  137. package/development/flip-card/flip-card-details.js +1 -1
  138. package/development/flip-card/flip-card-summary.js +1 -1
  139. package/development/icon.js +1 -1
  140. package/development/image.js +2 -2
  141. package/development/lead-container.js +1 -1
  142. package/development/link-list/link-list-anchor.js +1 -1
  143. package/development/link-list/link-list.js +1 -1
  144. package/development/loading-indicator-circle.js +1 -1
  145. package/development/loading-indicator.js +1 -1
  146. package/development/map-container.js +1 -1
  147. package/development/menu/menu/menu.d.ts.map +1 -1
  148. package/development/menu/menu.js +35 -12
  149. package/development/message.js +1 -1
  150. package/development/navigation/navigation/navigation.d.ts.map +1 -1
  151. package/development/navigation/navigation.js +15 -8
  152. package/development/notification.js +1 -1
  153. package/development/option/optgroup.js +1 -1
  154. package/development/option/option/option-base-element.d.ts +3 -2
  155. package/development/option/option/option-base-element.d.ts.map +1 -1
  156. package/development/option/option.js +16 -9
  157. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  158. package/development/overlay/overlay.d.ts.map +1 -1
  159. package/development/overlay.js +29 -13
  160. package/development/paginator/paginator.js +1 -1
  161. package/development/popover/popover/popover.d.ts.map +1 -1
  162. package/development/popover/popover.js +16 -13
  163. package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  164. package/development/radio-button/radio-button-group.js +2 -2
  165. package/development/{sbb-tokens-BdGhUJjM.js → sbb-tokens-CSAKTXUi.js} +15 -15
  166. package/development/screen-reader-only.js +1 -1
  167. package/development/select/select.d.ts +11 -0
  168. package/development/select/select.d.ts.map +1 -1
  169. package/development/select.js +60 -9
  170. package/development/signet.js +1 -1
  171. package/development/stepper/step.js +1 -1
  172. package/development/tabs/tab.js +1 -1
  173. package/development/time-input.js +1 -1
  174. package/development/title/title-base.d.ts.map +1 -1
  175. package/development/title.js +4 -5
  176. package/development/toast/toast.d.ts.map +1 -1
  177. package/development/toast.js +14 -8
  178. package/development/toggle/toggle.js +2 -2
  179. package/development/train/train-blocked-passage.js +1 -1
  180. package/development/train/train-wagon.js +1 -1
  181. package/dialog/dialog/dialog.d.ts +2 -0
  182. package/dialog/dialog/dialog.d.ts.map +1 -1
  183. package/dialog/dialog-content.js +4 -4
  184. package/dialog/dialog-title.js +8 -8
  185. package/dialog/dialog.js +59 -49
  186. package/divider.js +12 -12
  187. package/expansion-panel/expansion-panel-content.js +3 -3
  188. package/file-selector/file-selector-dropzone.js +5 -5
  189. package/file-selector/file-selector.js +6 -6
  190. package/flip-card/flip-card-details.js +7 -7
  191. package/flip-card/flip-card-summary.js +12 -12
  192. package/header/header-button.js +5 -5
  193. package/header/header-link.js +5 -5
  194. package/icon.js +37 -37
  195. package/image.js +16 -16
  196. package/lead-container.js +3 -3
  197. package/link/block-link-button.js +4 -4
  198. package/link/block-link-static.js +9 -9
  199. package/link/block-link.js +4 -4
  200. package/link/common.js +16 -16
  201. package/link/link-button.js +7 -7
  202. package/link/link-static.js +7 -7
  203. package/link/link.js +4 -4
  204. package/link-list/common.js +12 -12
  205. package/link-list/link-list-anchor.js +3 -3
  206. package/link-list/link-list.js +3 -3
  207. package/loading-indicator-circle.js +14 -14
  208. package/loading-indicator.js +3 -3
  209. package/map-container.js +6 -6
  210. package/menu/common.js +7 -7
  211. package/menu/menu/menu.d.ts.map +1 -1
  212. package/menu/menu-button.js +8 -8
  213. package/menu/menu-link.js +6 -6
  214. package/menu/menu.js +64 -42
  215. package/message.js +3 -3
  216. package/navigation/navigation/navigation.d.ts.map +1 -1
  217. package/navigation/navigation-button.js +4 -4
  218. package/navigation/navigation-link.js +7 -7
  219. package/navigation/navigation-list.js +4 -4
  220. package/navigation/navigation-marker.js +3 -3
  221. package/navigation/navigation.js +21 -20
  222. package/notification.js +19 -19
  223. package/option/optgroup.js +14 -14
  224. package/option/option/option-base-element.d.ts +3 -2
  225. package/option/option/option-base-element.d.ts.map +1 -1
  226. package/option/option.js +115 -103
  227. package/overlay/overlay-base-element.d.ts.map +1 -1
  228. package/overlay/overlay.d.ts.map +1 -1
  229. package/overlay.js +87 -84
  230. package/package.json +1 -1
  231. package/paginator/common.js +6 -6
  232. package/paginator/paginator.js +1 -1
  233. package/popover/popover/popover.d.ts.map +1 -1
  234. package/popover/popover.js +73 -73
  235. package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  236. package/radio-button/radio-button-group.js +1 -1
  237. package/radio-button/radio-button-panel.js +5 -5
  238. package/{sbb-tokens-Dx20OtVg.js → sbb-tokens-BgDF8jIh.js} +14 -14
  239. package/screen-reader-only.js +8 -8
  240. package/select/select.d.ts +11 -0
  241. package/select/select.d.ts.map +1 -1
  242. package/select.js +111 -83
  243. package/signet.js +1 -1
  244. package/slider.js +8 -8
  245. package/standard-theme.css +20 -2
  246. package/status.js +3 -3
  247. package/stepper/step-label.js +4 -4
  248. package/stepper/step.js +3 -3
  249. package/table/table-wrapper.js +4 -4
  250. package/tabs/tab-group.js +24 -24
  251. package/tabs/tab.js +4 -4
  252. package/tag/tag-group.js +7 -7
  253. package/teaser-product/common.js +5 -5
  254. package/teaser-product/teaser-product-static.js +2 -2
  255. package/time-input.js +3 -3
  256. package/timetable-occupancy-icon.js +3 -3
  257. package/timetable-occupancy.js +6 -6
  258. package/title/title-base.d.ts.map +1 -1
  259. package/title.js +41 -42
  260. package/toast/toast.d.ts.map +1 -1
  261. package/toast.js +58 -54
  262. package/toggle/toggle-option.js +11 -11
  263. package/toggle/toggle.js +3 -3
  264. package/toggle-check.js +5 -5
  265. package/train/train-blocked-passage.js +3 -3
  266. package/train/train.js +28 -28
@@ -146,4 +146,4 @@ let SbbAccordionElement = (() => {
146
146
  export {
147
147
  SbbAccordionElement
148
148
  };
149
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvYWNjb3JkaW9uL2FjY29yZGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZm9yY2VUeXBlLCBoYW5kbGVEaXN0aW5jdENoYW5nZSB9IGZyb20gJy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBpc0xlYW4gfSBmcm9tICcuLi9jb3JlL2RvbS5qcyc7XG5pbXBvcnQgeyBpc0V2ZW50UHJldmVudGVkIH0gZnJvbSAnLi4vY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBTYmJIeWRyYXRpb25NaXhpbiB9IGZyb20gJy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRXhwYW5zaW9uUGFuZWxFbGVtZW50IH0gZnJvbSAnLi4vZXhwYW5zaW9uLXBhbmVsLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiVGl0bGVMZXZlbCB9IGZyb20gJy4uL3RpdGxlLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vYWNjb3JkaW9uLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogSXQgY2FuIGJlIHVzZWQgYXMgYSBjb250YWluZXIgZm9yIG9uZSBvciBtb3JlIGBzYmItZXhwYW5zaW9uLXBhbmVsYCBjb21wb25lbnQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1leHBhbnNpb24tcGFuZWxgIGVsZW1lbnRzLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItYWNjb3JkaW9uJylcbmNsYXNzIFNiYkFjY29yZGlvbkVsZW1lbnQgZXh0ZW5kcyBTYmJIeWRyYXRpb25NaXhpbihMaXRFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBsIG9yIHM7IG92ZXJyaWRlcyB0aGUgc2l6ZSBvbiBhbnkgcHJvamVjdGVkIGBzYmItZXhwYW5zaW9uLXBhbmVsYC5cbiAgICogQGRlZmF1bHQgJ2wnIC8gJ3MnIChsZWFuKVxuICAgKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3Igc2l6ZTogJ3MnIHwgJ2wnID0gaXNMZWFuKCkgPyAncycgOiAnbCc7XG5cbiAgLyoqXG4gICAqIFRoZSBoZWFkaW5nIGxldmVsIGZvciB0aGUgc2JiLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJzIHdpdGhpbiB0aGUgY29tcG9uZW50LlxuICAgKiBAY29udHJvbHMgU2JiRXhwYW5zaW9uUGFuZWxFbGVtZW50LnRpdGxlTGV2ZWxcbiAgICovXG4gIEBoYW5kbGVEaXN0aW5jdENoYW5nZSgoZSkgPT4gZS5fc2V0VGl0bGVMZXZlbE9uQ2hpbGRyZW4oKSlcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAndGl0bGUtbGV2ZWwnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciB0aXRsZUxldmVsOiBTYmJUaXRsZUxldmVsIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFdoZXRoZXIgbW9yZSB0aGFuIG9uZSBzYmItZXhwYW5zaW9uLXBhbmVsIGNhbiBiZSBvcGVuIGF0IHRoZSBzYW1lIHRpbWUuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAaGFuZGxlRGlzdGluY3RDaGFuZ2UoKGUsIG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4gZS5fcmVzZXRFeHBhbnNpb25QYW5lbHMobmV3VmFsdWUsICEhb2xkVmFsdWUpKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBtdWx0aTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKFxuICAgICAgJ3dpbGxPcGVuJyxcbiAgICAgIGFzeW5jIChlOiBDdXN0b21FdmVudDx2b2lkPikgPT4ge1xuICAgICAgICBpZiAoIShhd2FpdCBpc0V2ZW50UHJldmVudGVkKGUpKSkge1xuICAgICAgICAgIHRoaXMuX2Nsb3NlUGFuZWxzKGUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBXZSB1c2UgY2FwdHVyZSBoZXJlLCBiZWNhdXNlIHdpbGxPcGVuIGRvZXMgbm90IGJ1YmJsZS5cbiAgICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2V4cGFuc2lvblBhbmVscygpOiBTYmJFeHBhbnNpb25QYW5lbEVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsPy4oJ3NiYi1leHBhbnNpb24tcGFuZWwnKSA/PyBbXSk7XG4gIH1cblxuICBwcml2YXRlIF9jbG9zZVBhbmVscyhlOiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGlmICgoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpPy5sb2NhbE5hbWUgIT09ICdzYmItZXhwYW5zaW9uLXBhbmVsJyB8fCB0aGlzLm11bHRpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZXhwYW5zaW9uUGFuZWxzKClcbiAgICAgIC5maWx0ZXIoKHBhbmVsKSA9PiBwYW5lbCAhPT0gZS50YXJnZXQpXG4gICAgICAuZm9yRWFjaCgocGFuZWwpID0+IChwYW5lbC5leHBhbmRlZCA9IGZhbHNlKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3NpemUnKSkge1xuICAgICAgdGhpcy5fZXhwYW5zaW9uUGFuZWxzKCkuZm9yRWFjaChcbiAgICAgICAgKHBhbmVsOiBTYmJFeHBhbnNpb25QYW5lbEVsZW1lbnQpID0+IChwYW5lbC5zaXplID0gdGhpcy5zaXplKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVzZXRFeHBhbnNpb25QYW5lbHMobmV3VmFsdWU6IGJvb2xlYW4sIG9sZFZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgLy8gSWYgaXQncyBjaGFuZ2luZyBmcm9tIFwibXVsdGkgPSB0cnVlXCIgdG8gXCJtdWx0aSA9IGZhbHNlXCIsIG9wZW4gdGhlIGZpcnN0IHBhbmVsIGFuZCBjbG9zZSBhbGwgdGhlIG90aGVycy5cbiAgICBjb25zdCBleHBhbnNpb25QYW5lbHMgPSB0aGlzLl9leHBhbnNpb25QYW5lbHMoKTtcbiAgICBpZiAoZXhwYW5zaW9uUGFuZWxzLmxlbmd0aCA+IDEgJiYgb2xkVmFsdWUgJiYgIW5ld1ZhbHVlKSB7XG4gICAgICBleHBhbnNpb25QYW5lbHNbMF0uZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgZXhwYW5zaW9uUGFuZWxzXG4gICAgICAgIC5maWx0ZXIoKF8sIGluZGV4OiBudW1iZXIpID0+IGluZGV4ID4gMClcbiAgICAgICAgLmZvckVhY2goKHBhbmVsKSA9PiAocGFuZWwuZXhwYW5kZWQgPSBmYWxzZSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldFRpdGxlTGV2ZWxPbkNoaWxkcmVuKCk6IHZvaWQge1xuICAgIHRoaXMuX2V4cGFuc2lvblBhbmVscygpLmZvckVhY2goXG4gICAgICAocGFuZWw6IFNiYkV4cGFuc2lvblBhbmVsRWxlbWVudCkgPT4gKHBhbmVsLnRpdGxlTGV2ZWwgPSB0aGlzLnRpdGxlTGV2ZWwpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVTbG90Y2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuX2V4cGFuc2lvblBhbmVscygpLmZvckVhY2goXG4gICAgICAocGFuZWw6IFNiYkV4cGFuc2lvblBhbmVsRWxlbWVudCwgaW5kZXg6IG51bWJlciwgYXJyYXk6IFNiYkV4cGFuc2lvblBhbmVsRWxlbWVudFtdKSA9PiB7XG4gICAgICAgIHBhbmVsLnRpdGxlTGV2ZWwgPSB0aGlzLnRpdGxlTGV2ZWw7XG4gICAgICAgIHBhbmVsLnNpemUgPSB0aGlzLnNpemU7XG4gICAgICAgIHBhbmVsLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1hY2NvcmRpb24tZmlyc3QnLCBpbmRleCA9PT0gMCk7XG4gICAgICAgIHBhbmVsLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1hY2NvcmRpb24tbGFzdCcsIGluZGV4ID09PSBhcnJheS5sZW5ndGggLSAxKTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1hY2NvcmRpb25cIj5cbiAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHt0aGlzLl9oYW5kbGVTbG90Y2hhbmdlfT48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItYWNjb3JkaW9uJzogU2JiQWNjb3JkaW9uRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQW9CTSx1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
149
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvYWNjb3JkaW9uL2FjY29yZGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZm9yY2VUeXBlLCBoYW5kbGVEaXN0aW5jdENoYW5nZSB9IGZyb20gJy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBpc0xlYW4gfSBmcm9tICcuLi9jb3JlL2RvbS5qcyc7XG5pbXBvcnQgeyBpc0V2ZW50UHJldmVudGVkIH0gZnJvbSAnLi4vY29yZS9ldmVudGluZy5qcyc7XG5pbXBvcnQgeyBTYmJIeWRyYXRpb25NaXhpbiB9IGZyb20gJy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRXhwYW5zaW9uUGFuZWxFbGVtZW50IH0gZnJvbSAnLi4vZXhwYW5zaW9uLXBhbmVsLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiVGl0bGVMZXZlbCB9IGZyb20gJy4uL3RpdGxlLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vYWNjb3JkaW9uLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogSXQgY2FuIGJlIHVzZWQgYXMgYSBjb250YWluZXIgZm9yIG9uZSBvciBtb3JlIGBzYmItZXhwYW5zaW9uLXBhbmVsYCBjb21wb25lbnQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1leHBhbnNpb24tcGFuZWxgIGVsZW1lbnRzLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItYWNjb3JkaW9uJylcbmNsYXNzIFNiYkFjY29yZGlvbkVsZW1lbnQgZXh0ZW5kcyBTYmJIeWRyYXRpb25NaXhpbihMaXRFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBsIG9yIHM7IG92ZXJyaWRlcyB0aGUgc2l6ZSBvbiBhbnkgcHJvamVjdGVkIGBzYmItZXhwYW5zaW9uLXBhbmVsYC5cbiAgICogQGRlZmF1bHQgJ2wnIC8gJ3MnIChsZWFuKVxuICAgKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3Igc2l6ZTogJ3MnIHwgJ2wnID0gaXNMZWFuKCkgPyAncycgOiAnbCc7XG5cbiAgLyoqXG4gICAqIFRoZSBoZWFkaW5nIGxldmVsIGZvciB0aGUgc2JiLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJzIHdpdGhpbiB0aGUgY29tcG9uZW50LlxuICAgKiBAY29udHJvbHMgU2JiRXhwYW5zaW9uUGFuZWxFbGVtZW50LnRpdGxlTGV2ZWxcbiAgICovXG4gIEBoYW5kbGVEaXN0aW5jdENoYW5nZSgoZTogU2JiQWNjb3JkaW9uRWxlbWVudCkgPT4gZS5fc2V0VGl0bGVMZXZlbE9uQ2hpbGRyZW4oKSlcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAndGl0bGUtbGV2ZWwnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciB0aXRsZUxldmVsOiBTYmJUaXRsZUxldmVsIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFdoZXRoZXIgbW9yZSB0aGFuIG9uZSBzYmItZXhwYW5zaW9uLXBhbmVsIGNhbiBiZSBvcGVuIGF0IHRoZSBzYW1lIHRpbWUuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAaGFuZGxlRGlzdGluY3RDaGFuZ2UoXG4gICAgKGU6IFNiYkFjY29yZGlvbkVsZW1lbnQsIG5ld1ZhbHVlOiBib29sZWFuLCBvbGRWYWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkgPT5cbiAgICAgIGUuX3Jlc2V0RXhwYW5zaW9uUGFuZWxzKG5ld1ZhbHVlLCAhIW9sZFZhbHVlKSxcbiAgKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBtdWx0aTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKFxuICAgICAgJ3dpbGxPcGVuJyxcbiAgICAgIGFzeW5jIChlOiBDdXN0b21FdmVudDx2b2lkPikgPT4ge1xuICAgICAgICBpZiAoIShhd2FpdCBpc0V2ZW50UHJldmVudGVkKGUpKSkge1xuICAgICAgICAgIHRoaXMuX2Nsb3NlUGFuZWxzKGUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBXZSB1c2UgY2FwdHVyZSBoZXJlLCBiZWNhdXNlIHdpbGxPcGVuIGRvZXMgbm90IGJ1YmJsZS5cbiAgICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2V4cGFuc2lvblBhbmVscygpOiBTYmJFeHBhbnNpb25QYW5lbEVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsPy4oJ3NiYi1leHBhbnNpb24tcGFuZWwnKSA/PyBbXSk7XG4gIH1cblxuICBwcml2YXRlIF9jbG9zZVBhbmVscyhlOiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGlmICgoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpPy5sb2NhbE5hbWUgIT09ICdzYmItZXhwYW5zaW9uLXBhbmVsJyB8fCB0aGlzLm11bHRpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZXhwYW5zaW9uUGFuZWxzKClcbiAgICAgIC5maWx0ZXIoKHBhbmVsKSA9PiBwYW5lbCAhPT0gZS50YXJnZXQpXG4gICAgICAuZm9yRWFjaCgocGFuZWwpID0+IChwYW5lbC5leHBhbmRlZCA9IGZhbHNlKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3NpemUnKSkge1xuICAgICAgdGhpcy5fZXhwYW5zaW9uUGFuZWxzKCkuZm9yRWFjaChcbiAgICAgICAgKHBhbmVsOiBTYmJFeHBhbnNpb25QYW5lbEVsZW1lbnQpID0+IChwYW5lbC5zaXplID0gdGhpcy5zaXplKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVzZXRFeHBhbnNpb25QYW5lbHMobmV3VmFsdWU6IGJvb2xlYW4sIG9sZFZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgLy8gSWYgaXQncyBjaGFuZ2luZyBmcm9tIFwibXVsdGkgPSB0cnVlXCIgdG8gXCJtdWx0aSA9IGZhbHNlXCIsIG9wZW4gdGhlIGZpcnN0IHBhbmVsIGFuZCBjbG9zZSBhbGwgdGhlIG90aGVycy5cbiAgICBjb25zdCBleHBhbnNpb25QYW5lbHMgPSB0aGlzLl9leHBhbnNpb25QYW5lbHMoKTtcbiAgICBpZiAoZXhwYW5zaW9uUGFuZWxzLmxlbmd0aCA+IDEgJiYgb2xkVmFsdWUgJiYgIW5ld1ZhbHVlKSB7XG4gICAgICBleHBhbnNpb25QYW5lbHNbMF0uZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgZXhwYW5zaW9uUGFuZWxzXG4gICAgICAgIC5maWx0ZXIoKF8sIGluZGV4OiBudW1iZXIpID0+IGluZGV4ID4gMClcbiAgICAgICAgLmZvckVhY2goKHBhbmVsKSA9PiAocGFuZWwuZXhwYW5kZWQgPSBmYWxzZSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldFRpdGxlTGV2ZWxPbkNoaWxkcmVuKCk6IHZvaWQge1xuICAgIHRoaXMuX2V4cGFuc2lvblBhbmVscygpLmZvckVhY2goXG4gICAgICAocGFuZWw6IFNiYkV4cGFuc2lvblBhbmVsRWxlbWVudCkgPT4gKHBhbmVsLnRpdGxlTGV2ZWwgPSB0aGlzLnRpdGxlTGV2ZWwpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVTbG90Y2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuX2V4cGFuc2lvblBhbmVscygpLmZvckVhY2goXG4gICAgICAocGFuZWw6IFNiYkV4cGFuc2lvblBhbmVsRWxlbWVudCwgaW5kZXg6IG51bWJlciwgYXJyYXk6IFNiYkV4cGFuc2lvblBhbmVsRWxlbWVudFtdKSA9PiB7XG4gICAgICAgIHBhbmVsLnRpdGxlTGV2ZWwgPSB0aGlzLnRpdGxlTGV2ZWw7XG4gICAgICAgIHBhbmVsLnNpemUgPSB0aGlzLnNpemU7XG4gICAgICAgIHBhbmVsLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1hY2NvcmRpb24tZmlyc3QnLCBpbmRleCA9PT0gMCk7XG4gICAgICAgIHBhbmVsLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1hY2NvcmRpb24tbGFzdCcsIGluZGV4ID09PSBhcnJheS5sZW5ndGggLSAxKTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1hY2NvcmRpb25cIj5cbiAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHt0aGlzLl9oYW5kbGVTbG90Y2hhbmdlfT48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItYWNjb3JkaW9uJzog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
@@ -6,7 +6,7 @@ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read fr
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
8
  import { __esDecorate, __runInitializers } from "tslib";
9
- import { css, html, LitElement } from "lit";
9
+ import { css, LitElement, html } from "lit";
10
10
  import { customElement, property } from "lit/decorators.js";
11
11
  import { isLean } from "./core/dom.js";
12
12
  const style = css`*,
@@ -53,6 +53,10 @@ export declare abstract class SbbAutocompleteBaseElement extends SbbAutocomplete
53
53
  /** When an option is selected, update the input value and close the autocomplete. */
54
54
  protected onOptionSelected(event: CustomEvent): void;
55
55
  private _handleSlotchange;
56
+ /**
57
+ * If the 'input' is focused and there's a change in the number of options, open the autocomplete
58
+ */
59
+ private _openOnNewOptions;
56
60
  /** The autocomplete should inherit 'readonly' state from the trigger. */
57
61
  private _readonly;
58
62
  private _componentSetup;
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete-base-element.d.ts","sourceRoot":"","sources":["../../../../src/elements/autocomplete/autocomplete-base-element.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autocomplete-base-element.d.ts","sourceRoot":"","sources":["../../../../src/elements/autocomplete/autocomplete-base-element.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { __esDecorate, __runInitializers } from "tslib";
2
- import { css, html, LitElement } from "lit";
2
+ import { css, LitElement, html } from "lit";
3
3
  import { customElement } from "lit/decorators.js";
4
4
  import { hostAttributes } from "../core/decorators.js";
5
5
  const style = css`*,
@@ -23,7 +23,7 @@ export declare class SbbAutocompleteGridOptionElement extends SbbOptionBaseEleme
23
23
  protected selectionChange: EventEmitter;
24
24
  /** Emits when an option was selected by user. */
25
25
  protected optionSelected: EventEmitter;
26
- protected onOptionAttributesChange(mutationsList: MutationRecord[]): void;
26
+ protected onExternalMutation(mutationsList: MutationRecord[]): void;
27
27
  willUpdate(changedProperties: PropertyValues<this>): void;
28
28
  protected setAttributeFromParent(): void;
29
29
  protected selectByClick(event: MouseEvent): void;
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete-grid-option.d.ts","sourceRoot":"","sources":["../../../../../src/elements/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAI1D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAIvD,eAAO,MAAM,wBAAwB,EAAE,MAAuC,CAAC;AAE/E;;;;;;;;;GASG;AACH,qBAKM,gCAAiC,SAAQ,oBAAoB;IACjE,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,gBAAuB,MAAM;;;MAGlB;IAEX,SAAS,CAAC,QAAQ,SAA4B;IAE9C,sDAAsD;IACtD,SAAS,CAAC,eAAe,EAAE,YAAY,CAGrC;IAEF,iDAAiD;IACjD,SAAS,CAAC,cAAc,EAAE,YAAY,CAGpC;cAEiB,wBAAwB,CAAC,aAAa,EAAE,cAAc,EAAE,GAAG,IAAI;IAQlE,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAWzE,SAAS,CAAC,sBAAsB,IAAI,IAAI;IAexC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAQjD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,8BAA8B,EAAE,gCAAgC,CAAC;KAClE;IAED,UAAU,2BAA2B;QACnC,iCAAiC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;KACtD;CACF"}
1
+ {"version":3,"file":"autocomplete-grid-option.d.ts","sourceRoot":"","sources":["../../../../../src/elements/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAI1D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAIvD,eAAO,MAAM,wBAAwB,EAAE,MAAuC,CAAC;AAE/E;;;;;;;;;GASG;AACH,qBAKM,gCAAiC,SAAQ,oBAAoB;IACjE,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,gBAAuB,MAAM;;;MAGlB;IAEX,SAAS,CAAC,QAAQ,SAA4B;IAE9C,sDAAsD;IACtD,SAAS,CAAC,eAAe,EAAE,YAAY,CAGrC;IAEF,iDAAiD;IACjD,SAAS,CAAC,cAAc,EAAE,YAAY,CAGpC;cAEiB,kBAAkB,CAAC,aAAa,EAAE,cAAc,EAAE,GAAG,IAAI;IAQ5D,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAWzE,SAAS,CAAC,sBAAsB,IAAI,IAAI;IAexC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAQjD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,8BAA8B,EAAE,gCAAgC,CAAC;KAClE;IAED,UAAU,2BAA2B;QACnC,iCAAiC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;KACtD;CACF"}
@@ -89,9 +89,9 @@ let SbbAutocompleteGridOptionElement = (() => {
89
89
  this.selectionChange = new EventEmitter(this, SbbAutocompleteGridOptionElement2.events.selectionChange);
90
90
  this.optionSelected = new EventEmitter(this, SbbAutocompleteGridOptionElement2.events.optionSelected);
91
91
  }
92
- onOptionAttributesChange(mutationsList) {
92
+ onExternalMutation(mutationsList) {
93
93
  var _a2, _b;
94
- super.onOptionAttributesChange(mutationsList);
94
+ super.onExternalMutation(mutationsList);
95
95
  (_b = (_a2 = this.closest) == null ? void 0 : _a2.call(this, "sbb-autocomplete-grid-row")) == null ? void 0 : _b.toggleAttribute("data-disabled", this.disabled || this.disabledFromGroup);
96
96
  }
97
97
  willUpdate(changedProperties) {
@@ -135,4 +135,4 @@ export {
135
135
  SbbAutocompleteGridOptionElement,
136
136
  autocompleteGridOptionId
137
137
  };
138
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWdyaWQtb3B0aW9uLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvYXV0b2NvbXBsZXRlLWdyaWQvYXV0b2NvbXBsZXRlLWdyaWQtb3B0aW9uL2F1dG9jb21wbGV0ZS1ncmlkLW9wdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2V2ZW50aW5nLmpzJztcbmltcG9ydCB7IFNiYk9wdGlvbkJhc2VFbGVtZW50IH0gZnJvbSAnLi4vLi4vb3B0aW9uLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vYXV0b2NvbXBsZXRlLWdyaWQtb3B0aW9uLnNjc3M/bGl0JmlubGluZSc7XG5cbmV4cG9ydCBjb25zdCBhdXRvY29tcGxldGVHcmlkT3B0aW9uSWQ6IHN0cmluZyA9IGBzYmItYXV0b2NvbXBsZXRlLWdyaWQtb3B0aW9uYDtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhbiBvcHRpb24gaXRlbSB3aGljaCBjYW4gYmUgdXNlZCBpbiBgc2JiLWF1dG9jb21wbGV0ZS1ncmlkYC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBjb250ZW50IHRvIHRoZSBvcHRpb24gbGFiZWwuXG4gKiBAc2xvdCBpY29uIC0gVXNlIHRoaXMgc2xvdCB0byBwcm92aWRlIGFuIGljb24uIElmIGBpY29uLW5hbWVgIGlzIHNldCwgYSBzYmItaWNvbiB3aWxsIGJlIHVzZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBhdXRvY29tcGxldGVPcHRpb25TZWxlY3Rpb25DaGFuZ2UgLSBFbWl0cyB3aGVuIHRoZSBvcHRpb24gc2VsZWN0aW9uIHN0YXR1cyBjaGFuZ2VzLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gYXV0b2NvbXBsZXRlT3B0aW9uU2VsZWN0ZWQgLSBFbWl0cyB3aGVuIGFuIG9wdGlvbiB3YXMgc2VsZWN0ZWQgYnkgdXNlci5cbiAqIEBjc3Nwcm9wIFstLXNiYi1vcHRpb24taWNvbi1jb250YWluZXItZGlzcGxheT1ub25lXSAtIENhbiBiZSB1c2VkIHRvIHJlc2VydmUgc3BhY2UgZXZlblxuICogd2hlbiBwcmVzZXJ2ZS1pY29uLXNwYWNlIG9uIGF1dG9jb21wbGV0ZSBpcyBub3Qgc2V0IG9yIGljb25OYW1lIGlzIG5vdCBzZXQuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1hdXRvY29tcGxldGUtZ3JpZC1vcHRpb24nKVxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgcm9sZTogJ2dyaWRjZWxsJyxcbn0pXG5jbGFzcyBTYmJBdXRvY29tcGxldGVHcmlkT3B0aW9uRWxlbWVudCBleHRlbmRzIFNiYk9wdGlvbkJhc2VFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIHNlbGVjdGlvbkNoYW5nZTogJ2F1dG9jb21wbGV0ZU9wdGlvblNlbGVjdGlvbkNoYW5nZScsXG4gICAgb3B0aW9uU2VsZWN0ZWQ6ICdhdXRvY29tcGxldGVPcHRpb25TZWxlY3RlZCcsXG4gIH0gYXMgY29uc3Q7XG5cbiAgcHJvdGVjdGVkIG9wdGlvbklkID0gYXV0b2NvbXBsZXRlR3JpZE9wdGlvbklkO1xuXG4gIC8qKiBFbWl0cyB3aGVuIHRoZSBvcHRpb24gc2VsZWN0aW9uIHN0YXR1cyBjaGFuZ2VzLiAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiQXV0b2NvbXBsZXRlR3JpZE9wdGlvbkVsZW1lbnQuZXZlbnRzLnNlbGVjdGlvbkNoYW5nZSxcbiAgKTtcblxuICAvKiogRW1pdHMgd2hlbiBhbiBvcHRpb24gd2FzIHNlbGVjdGVkIGJ5IHVzZXIuICovXG4gIHByb3RlY3RlZCBvcHRpb25TZWxlY3RlZDogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYkF1dG9jb21wbGV0ZUdyaWRPcHRpb25FbGVtZW50LmV2ZW50cy5vcHRpb25TZWxlY3RlZCxcbiAgKTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgb25PcHRpb25BdHRyaWJ1dGVzQ2hhbmdlKG11dGF0aW9uc0xpc3Q6IE11dGF0aW9uUmVjb3JkW10pOiB2b2lkIHtcbiAgICBzdXBlci5vbk9wdGlvbkF0dHJpYnV0ZXNDaGFuZ2UobXV0YXRpb25zTGlzdCk7XG4gICAgdGhpcy5jbG9zZXN0Py4oJ3NiYi1hdXRvY29tcGxldGUtZ3JpZC1yb3cnKT8udG9nZ2xlQXR0cmlidXRlKFxuICAgICAgJ2RhdGEtZGlzYWJsZWQnLFxuICAgICAgdGhpcy5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkRnJvbUdyb3VwLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkaXNhYmxlZCcpKSB7XG4gICAgICB0aGlzLmNsb3Nlc3Q/Lignc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdycpPy50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAgICdkYXRhLWRpc2FibGVkJyxcbiAgICAgICAgdGhpcy5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkRnJvbUdyb3VwLFxuICAgICAgKTtcbiAgICAgIHRoaXMudXBkYXRlQXJpYURpc2FibGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNldEF0dHJpYnV0ZUZyb21QYXJlbnQoKTogdm9pZCB7XG4gICAgY29uc3QgcGFyZW50R3JvdXAgPSB0aGlzLmNsb3Nlc3QoJ3NiYi1hdXRvY29tcGxldGUtZ3JpZC1vcHRncm91cCcpO1xuICAgIGlmIChwYXJlbnRHcm91cCkge1xuICAgICAgdGhpcy5kaXNhYmxlZEZyb21Hcm91cCA9IHBhcmVudEdyb3VwLmRpc2FibGVkO1xuICAgICAgdGhpcy51cGRhdGVBcmlhRGlzYWJsZWQoKTtcbiAgICB9XG4gICAgdGhpcy5jbG9zZXN0KCdzYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93Jyk/LnRvZ2dsZUF0dHJpYnV0ZShcbiAgICAgICdkYXRhLWRpc2FibGVkJyxcbiAgICAgIHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZEZyb21Hcm91cCxcbiAgICApO1xuXG4gICAgdGhpcy5uZWdhdGl2ZSA9ICEhdGhpcy5jbG9zZXN0KGA6aXMoc2JiLWF1dG9jb21wbGV0ZS1ncmlkW25lZ2F0aXZlXSxzYmItZm9ybS1maWVsZFtuZWdhdGl2ZV0pYCk7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtbmVnYXRpdmUnLCB0aGlzLm5lZ2F0aXZlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RCeUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZEZyb21Hcm91cCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTZWxlY3RlZFZpYVVzZXJJbnRlcmFjdGlvbih0cnVlKTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWF1dG9jb21wbGV0ZS1ncmlkLW9wdGlvbic6IFNiYkF1dG9jb21wbGV0ZUdyaWRPcHRpb25FbGVtZW50O1xuICB9XG5cbiAgaW50ZXJmYWNlIEdsb2JhbEV2ZW50SGFuZGxlcnNFdmVudE1hcCB7XG4gICAgYXV0b2NvbXBsZXRlT3B0aW9uU2VsZWN0aW9uQ2hhbmdlOiBDdXN0b21FdmVudDx2b2lkPjtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlNiYkF1dG9jb21wbGV0ZUdyaWRPcHRpb25FbGVtZW50IiwiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU08sTUFBTSwyQkFBbUM7SUFpQjFDLG9DQUFnQyxNQUFBOztBQUpyQyxNQUFBLG1CQUFBLENBQUEsY0FBYyw4QkFBOEIsR0FDNUMsZUFBZTtBQUFBLElBQ2QsTUFBTTtBQUFBLEVBQUEsQ0FDUCxDQUFDOzs7O29CQUM2QztBQUFSQSxNQUFBQSxxQ0FBQSxtQkFBUSxZQUFvQjtBQUFBOztBQU92RCxXQUFRLFdBQUc7QUFHWCxXQUFBLGtCQUFnQyxJQUFJLGFBQzVDLE1BQ0FBLGtDQUFpQyxPQUFPLGVBQWU7QUFJL0MsV0FBQSxpQkFBK0IsSUFBSSxhQUMzQyxNQUNBQSxrQ0FBaUMsT0FBTyxjQUFjO0FBQUEsSUFBQTtBQUFBLElBR3JDLHlCQUF5QixlQUErQjs7QUFDekUsWUFBTSx5QkFBeUIsYUFBYTtBQUN2QyxhQUFBQyxNQUFBLEtBQUEsWUFBQSxnQkFBQUEsSUFBQSxXQUFVLGlDQUFWLG1CQUF3QyxnQkFDM0MsaUJBQ0EsS0FBSyxZQUFZLEtBQUs7QUFBQSxJQUFpQjtBQUFBLElBSTNCLFdBQVcsbUJBQXVDOztBQUNoRSxZQUFNLFdBQVcsaUJBQWlCO0FBQzlCLFVBQUEsa0JBQWtCLElBQUksVUFBVSxHQUFHO0FBQ2hDLGVBQUFBLE1BQUEsS0FBQSxZQUFBLGdCQUFBQSxJQUFBLFdBQVUsaUNBQVYsbUJBQXdDLGdCQUMzQyxpQkFDQSxLQUFLLFlBQVksS0FBSztBQUV4QixhQUFLLG1CQUFrQjtBQUFBLE1BQUE7QUFBQSxJQUN6QjtBQUFBLElBR1EseUJBQXNCOztBQUN4QixZQUFBLGNBQWMsS0FBSyxRQUFRLGdDQUFnQztBQUNqRSxVQUFJLGFBQWE7QUFDZixhQUFLLG9CQUFvQixZQUFZO0FBQ3JDLGFBQUssbUJBQWtCO0FBQUEsTUFBQTtBQUVwQixPQUFBQSxNQUFBLEtBQUEsUUFBUSwyQkFBMkIsTUFBbkMsZ0JBQUFBLElBQXNDLGdCQUN6QyxpQkFDQSxLQUFLLFlBQVksS0FBSztBQUd4QixXQUFLLFdBQVcsQ0FBQyxDQUFDLEtBQUssUUFBUSwrREFBK0Q7QUFDekYsV0FBQSxnQkFBZ0IsaUJBQWlCLEtBQUssUUFBUTtBQUFBLElBQUE7QUFBQSxJQUczQyxjQUFjLE9BQWlCO0FBQ25DLFVBQUEsS0FBSyxZQUFZLEtBQUssbUJBQW1CO0FBQzNDLGNBQU0sZ0JBQWU7QUFDckI7QUFBQSxNQUFBO0FBR0YsV0FBSyw4QkFBOEIsSUFBSTtBQUFBLElBQUE7QUFBQTs7QUE3RDNDLGlCQStEQyxNQUFBLG1CQUFBLEVBQUEsT0FBQSxXQUFBLEdBQUEsa0JBQUEsRUFBQSxNQUFBLFNBQUEsTUFBQSxXQUFBLE1BQUEsVUFBQSxVQUFBLEdBQUEsTUFBQSx1QkFBQTs7O1FBOUR3QixHQUFNLFNBQW1CLE9BQ3pCLEdBQUEsU0FBUztBQUFBLElBQzlCLGlCQUFpQjtBQUFBLElBQ2pCLGdCQUFnQjtBQUFBLEVBQ1IsR0FMTixrQkFBZ0MsWUFBQSx1QkFBQSxHQUFDOzs7In0=
138
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWdyaWQtb3B0aW9uLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvYXV0b2NvbXBsZXRlLWdyaWQvYXV0b2NvbXBsZXRlLWdyaWQtb3B0aW9uL2F1dG9jb21wbGV0ZS1ncmlkLW9wdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2V2ZW50aW5nLmpzJztcbmltcG9ydCB7IFNiYk9wdGlvbkJhc2VFbGVtZW50IH0gZnJvbSAnLi4vLi4vb3B0aW9uLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vYXV0b2NvbXBsZXRlLWdyaWQtb3B0aW9uLnNjc3M/bGl0JmlubGluZSc7XG5cbmV4cG9ydCBjb25zdCBhdXRvY29tcGxldGVHcmlkT3B0aW9uSWQ6IHN0cmluZyA9IGBzYmItYXV0b2NvbXBsZXRlLWdyaWQtb3B0aW9uYDtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhbiBvcHRpb24gaXRlbSB3aGljaCBjYW4gYmUgdXNlZCBpbiBgc2JiLWF1dG9jb21wbGV0ZS1ncmlkYC5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGUgdW5uYW1lZCBzbG90IHRvIGFkZCBjb250ZW50IHRvIHRoZSBvcHRpb24gbGFiZWwuXG4gKiBAc2xvdCBpY29uIC0gVXNlIHRoaXMgc2xvdCB0byBwcm92aWRlIGFuIGljb24uIElmIGBpY29uLW5hbWVgIGlzIHNldCwgYSBzYmItaWNvbiB3aWxsIGJlIHVzZWQuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSBhdXRvY29tcGxldGVPcHRpb25TZWxlY3Rpb25DaGFuZ2UgLSBFbWl0cyB3aGVuIHRoZSBvcHRpb24gc2VsZWN0aW9uIHN0YXR1cyBjaGFuZ2VzLlxuICogQGV2ZW50IHtDdXN0b21FdmVudDx2b2lkPn0gYXV0b2NvbXBsZXRlT3B0aW9uU2VsZWN0ZWQgLSBFbWl0cyB3aGVuIGFuIG9wdGlvbiB3YXMgc2VsZWN0ZWQgYnkgdXNlci5cbiAqIEBjc3Nwcm9wIFstLXNiYi1vcHRpb24taWNvbi1jb250YWluZXItZGlzcGxheT1ub25lXSAtIENhbiBiZSB1c2VkIHRvIHJlc2VydmUgc3BhY2UgZXZlblxuICogd2hlbiBwcmVzZXJ2ZS1pY29uLXNwYWNlIG9uIGF1dG9jb21wbGV0ZSBpcyBub3Qgc2V0IG9yIGljb25OYW1lIGlzIG5vdCBzZXQuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1hdXRvY29tcGxldGUtZ3JpZC1vcHRpb24nKVxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgcm9sZTogJ2dyaWRjZWxsJyxcbn0pXG5jbGFzcyBTYmJBdXRvY29tcGxldGVHcmlkT3B0aW9uRWxlbWVudCBleHRlbmRzIFNiYk9wdGlvbkJhc2VFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIHNlbGVjdGlvbkNoYW5nZTogJ2F1dG9jb21wbGV0ZU9wdGlvblNlbGVjdGlvbkNoYW5nZScsXG4gICAgb3B0aW9uU2VsZWN0ZWQ6ICdhdXRvY29tcGxldGVPcHRpb25TZWxlY3RlZCcsXG4gIH0gYXMgY29uc3Q7XG5cbiAgcHJvdGVjdGVkIG9wdGlvbklkID0gYXV0b2NvbXBsZXRlR3JpZE9wdGlvbklkO1xuXG4gIC8qKiBFbWl0cyB3aGVuIHRoZSBvcHRpb24gc2VsZWN0aW9uIHN0YXR1cyBjaGFuZ2VzLiAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKFxuICAgIHRoaXMsXG4gICAgU2JiQXV0b2NvbXBsZXRlR3JpZE9wdGlvbkVsZW1lbnQuZXZlbnRzLnNlbGVjdGlvbkNoYW5nZSxcbiAgKTtcblxuICAvKiogRW1pdHMgd2hlbiBhbiBvcHRpb24gd2FzIHNlbGVjdGVkIGJ5IHVzZXIuICovXG4gIHByb3RlY3RlZCBvcHRpb25TZWxlY3RlZDogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcihcbiAgICB0aGlzLFxuICAgIFNiYkF1dG9jb21wbGV0ZUdyaWRPcHRpb25FbGVtZW50LmV2ZW50cy5vcHRpb25TZWxlY3RlZCxcbiAgKTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgb25FeHRlcm5hbE11dGF0aW9uKG11dGF0aW9uc0xpc3Q6IE11dGF0aW9uUmVjb3JkW10pOiB2b2lkIHtcbiAgICBzdXBlci5vbkV4dGVybmFsTXV0YXRpb24obXV0YXRpb25zTGlzdCk7XG4gICAgdGhpcy5jbG9zZXN0Py4oJ3NiYi1hdXRvY29tcGxldGUtZ3JpZC1yb3cnKT8udG9nZ2xlQXR0cmlidXRlKFxuICAgICAgJ2RhdGEtZGlzYWJsZWQnLFxuICAgICAgdGhpcy5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkRnJvbUdyb3VwLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkaXNhYmxlZCcpKSB7XG4gICAgICB0aGlzLmNsb3Nlc3Q/Lignc2JiLWF1dG9jb21wbGV0ZS1ncmlkLXJvdycpPy50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAgICdkYXRhLWRpc2FibGVkJyxcbiAgICAgICAgdGhpcy5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkRnJvbUdyb3VwLFxuICAgICAgKTtcbiAgICAgIHRoaXMudXBkYXRlQXJpYURpc2FibGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNldEF0dHJpYnV0ZUZyb21QYXJlbnQoKTogdm9pZCB7XG4gICAgY29uc3QgcGFyZW50R3JvdXAgPSB0aGlzLmNsb3Nlc3QoJ3NiYi1hdXRvY29tcGxldGUtZ3JpZC1vcHRncm91cCcpO1xuICAgIGlmIChwYXJlbnRHcm91cCkge1xuICAgICAgdGhpcy5kaXNhYmxlZEZyb21Hcm91cCA9IHBhcmVudEdyb3VwLmRpc2FibGVkO1xuICAgICAgdGhpcy51cGRhdGVBcmlhRGlzYWJsZWQoKTtcbiAgICB9XG4gICAgdGhpcy5jbG9zZXN0KCdzYmItYXV0b2NvbXBsZXRlLWdyaWQtcm93Jyk/LnRvZ2dsZUF0dHJpYnV0ZShcbiAgICAgICdkYXRhLWRpc2FibGVkJyxcbiAgICAgIHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZEZyb21Hcm91cCxcbiAgICApO1xuXG4gICAgdGhpcy5uZWdhdGl2ZSA9ICEhdGhpcy5jbG9zZXN0KGA6aXMoc2JiLWF1dG9jb21wbGV0ZS1ncmlkW25lZ2F0aXZlXSxzYmItZm9ybS1maWVsZFtuZWdhdGl2ZV0pYCk7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtbmVnYXRpdmUnLCB0aGlzLm5lZ2F0aXZlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RCeUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZEZyb21Hcm91cCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTZWxlY3RlZFZpYVVzZXJJbnRlcmFjdGlvbih0cnVlKTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWF1dG9jb21wbGV0ZS1ncmlkLW9wdGlvbic6IFNiYkF1dG9jb21wbGV0ZUdyaWRPcHRpb25FbGVtZW50O1xuICB9XG5cbiAgaW50ZXJmYWNlIEdsb2JhbEV2ZW50SGFuZGxlcnNFdmVudE1hcCB7XG4gICAgYXV0b2NvbXBsZXRlT3B0aW9uU2VsZWN0aW9uQ2hhbmdlOiBDdXN0b21FdmVudDx2b2lkPjtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlNiYkF1dG9jb21wbGV0ZUdyaWRPcHRpb25FbGVtZW50IiwiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU08sTUFBTSwyQkFBbUM7SUFpQjFDLG9DQUFnQyxNQUFBOztBQUpyQyxNQUFBLG1CQUFBLENBQUEsY0FBYyw4QkFBOEIsR0FDNUMsZUFBZTtBQUFBLElBQ2QsTUFBTTtBQUFBLEVBQUEsQ0FDUCxDQUFDOzs7O29CQUM2QztBQUFSQSxNQUFBQSxxQ0FBQSxtQkFBUSxZQUFvQjtBQUFBOztBQU92RCxXQUFRLFdBQUc7QUFHWCxXQUFBLGtCQUFnQyxJQUFJLGFBQzVDLE1BQ0FBLGtDQUFpQyxPQUFPLGVBQWU7QUFJL0MsV0FBQSxpQkFBK0IsSUFBSSxhQUMzQyxNQUNBQSxrQ0FBaUMsT0FBTyxjQUFjO0FBQUEsSUFBQTtBQUFBLElBR3JDLG1CQUFtQixlQUErQjs7QUFDbkUsWUFBTSxtQkFBbUIsYUFBYTtBQUNqQyxhQUFBQyxNQUFBLEtBQUEsWUFBQSxnQkFBQUEsSUFBQSxXQUFVLGlDQUFWLG1CQUF3QyxnQkFDM0MsaUJBQ0EsS0FBSyxZQUFZLEtBQUs7QUFBQSxJQUFpQjtBQUFBLElBSTNCLFdBQVcsbUJBQXVDOztBQUNoRSxZQUFNLFdBQVcsaUJBQWlCO0FBQzlCLFVBQUEsa0JBQWtCLElBQUksVUFBVSxHQUFHO0FBQ2hDLGVBQUFBLE1BQUEsS0FBQSxZQUFBLGdCQUFBQSxJQUFBLFdBQVUsaUNBQVYsbUJBQXdDLGdCQUMzQyxpQkFDQSxLQUFLLFlBQVksS0FBSztBQUV4QixhQUFLLG1CQUFrQjtBQUFBLE1BQUE7QUFBQSxJQUN6QjtBQUFBLElBR1EseUJBQXNCOztBQUN4QixZQUFBLGNBQWMsS0FBSyxRQUFRLGdDQUFnQztBQUNqRSxVQUFJLGFBQWE7QUFDZixhQUFLLG9CQUFvQixZQUFZO0FBQ3JDLGFBQUssbUJBQWtCO0FBQUEsTUFBQTtBQUVwQixPQUFBQSxNQUFBLEtBQUEsUUFBUSwyQkFBMkIsTUFBbkMsZ0JBQUFBLElBQXNDLGdCQUN6QyxpQkFDQSxLQUFLLFlBQVksS0FBSztBQUd4QixXQUFLLFdBQVcsQ0FBQyxDQUFDLEtBQUssUUFBUSwrREFBK0Q7QUFDekYsV0FBQSxnQkFBZ0IsaUJBQWlCLEtBQUssUUFBUTtBQUFBLElBQUE7QUFBQSxJQUczQyxjQUFjLE9BQWlCO0FBQ25DLFVBQUEsS0FBSyxZQUFZLEtBQUssbUJBQW1CO0FBQzNDLGNBQU0sZ0JBQWU7QUFDckI7QUFBQSxNQUFBO0FBR0YsV0FBSyw4QkFBOEIsSUFBSTtBQUFBLElBQUE7QUFBQTs7QUE3RDNDLGlCQStEQyxNQUFBLG1CQUFBLEVBQUEsT0FBQSxXQUFBLEdBQUEsa0JBQUEsRUFBQSxNQUFBLFNBQUEsTUFBQSxXQUFBLE1BQUEsVUFBQSxVQUFBLEdBQUEsTUFBQSx1QkFBQTs7O1FBOUR3QixHQUFNLFNBQW1CLE9BQ3pCLEdBQUEsU0FBUztBQUFBLElBQzlCLGlCQUFpQjtBQUFBLElBQ2pCLGdCQUFnQjtBQUFBLEVBQ1IsR0FMTixrQkFBZ0MsWUFBQSx1QkFBQSxHQUFDOzs7In0=
@@ -1,5 +1,5 @@
1
1
  import { __esDecorate, __runInitializers } from "tslib";
2
- import { css, html, LitElement } from "lit";
2
+ import { css, LitElement, html } from "lit";
3
3
  import { customElement } from "lit/decorators.js";
4
4
  import { hostAttributes } from "../core/decorators.js";
5
5
  const style = css`*,
@@ -8,7 +8,7 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
8
8
  import { __runInitializers, __esDecorate } from "tslib";
9
9
  import { property, customElement } from "lit/decorators.js";
10
10
  import { getNextElementIndex } from "./core/a11y.js";
11
- import { forceType, hostAttributes } from "./core/decorators.js";
11
+ import { hostAttributes, forceType } from "./core/decorators.js";
12
12
  import { isZeroAnimationDuration, findReferencedElement, isSafari } from "./core/dom.js";
13
13
  import { isEventOnElement, setOverlayPosition, removeAriaComboBoxAttributes, overlayGapFixCorners, setAriaComboBoxAttributes } from "./core/overlay.js";
14
14
  import { css, isServer, html, nothing } from "lit";
@@ -89,6 +89,10 @@ const style = css`*,
89
89
  --sbb-autocomplete-z-index,
90
90
  var(--sbb-overlay-default-z-index)
91
91
  );
92
+ display: none;
93
+ }
94
+
95
+ :host([data-state]:not([data-state=closed])) {
92
96
  display: block;
93
97
  }
94
98
 
@@ -291,6 +295,12 @@ const style = css`*,
291
295
  const ariaRoleOnHost$1 = isSafari;
292
296
  let SbbAutocompleteBaseElement = (() => {
293
297
  var _origin_accessor_storage, _trigger_accessor_storage, _preserveIconSpace_accessor_storage, _a;
298
+ let _classDecorators = [hostAttributes({
299
+ popover: "manual"
300
+ })];
301
+ let _classDescriptor;
302
+ let _classExtraInitializers = [];
303
+ let _classThis;
294
304
  let _classSuper = SbbNegativeMixin(SbbHydrationMixin(SbbOpenCloseBaseElement));
295
305
  let _origin_decorators;
296
306
  let _origin_initializers = [];
@@ -301,7 +311,7 @@ let SbbAutocompleteBaseElement = (() => {
301
311
  let _preserveIconSpace_decorators;
302
312
  let _preserveIconSpace_initializers = [];
303
313
  let _preserveIconSpace_extraInitializers = [];
304
- return _a = class extends _classSuper {
314
+ _a = class extends _classSuper {
305
315
  constructor() {
306
316
  super(...arguments);
307
317
  __privateAdd(this, _origin_accessor_storage);
@@ -364,12 +374,14 @@ let SbbAutocompleteBaseElement = (() => {
364
374
  }
365
375
  /** Opens the autocomplete. */
366
376
  open() {
377
+ var _a2;
367
378
  if (this.state !== "closed" || !this._overlay || this.options.length === 0 || this._readonly()) {
368
379
  return;
369
380
  }
370
381
  if (!this.willOpen.emit()) {
371
382
  return;
372
383
  }
384
+ (_a2 = this.showPopover) == null ? void 0 : _a2.call(this);
373
385
  this.state = "opening";
374
386
  this._setOverlayPosition();
375
387
  if (this._isZeroAnimationDuration()) {
@@ -446,6 +458,19 @@ let SbbAutocompleteBaseElement = (() => {
446
458
  _handleSlotchange() {
447
459
  var _a2;
448
460
  this._highlightOptions((_a2 = this.triggerElement) == null ? void 0 : _a2.value);
461
+ this._openOnNewOptions();
462
+ }
463
+ /**
464
+ * If the 'input' is focused and there's a change in the number of options, open the autocomplete
465
+ */
466
+ _openOnNewOptions() {
467
+ if ((document == null ? void 0 : document.activeElement) === this.triggerElement) {
468
+ if (this.options.length > 0) {
469
+ this.open();
470
+ } else {
471
+ this.close();
472
+ }
473
+ }
449
474
  }
450
475
  /** The autocomplete should inherit 'readonly' state from the trigger. */
451
476
  _readonly() {
@@ -543,9 +568,10 @@ let SbbAutocompleteBaseElement = (() => {
543
568
  this.didOpen.emit();
544
569
  }
545
570
  _handleClosing() {
546
- var _a2;
571
+ var _a2, _b;
547
572
  this.state = "closed";
548
- (_a2 = this.triggerElement) == null ? void 0 : _a2.setAttribute("aria-expanded", "false");
573
+ (_a2 = this.hidePopover) == null ? void 0 : _a2.call(this);
574
+ (_b = this.triggerElement) == null ? void 0 : _b.setAttribute("aria-expanded", "false");
549
575
  this.resetActiveElement();
550
576
  this._optionContainer.scrollTop = 0;
551
577
  this.didClose.emit();
@@ -621,7 +647,7 @@ let SbbAutocompleteBaseElement = (() => {
621
647
  </div>
622
648
  `;
623
649
  }
624
- }, _origin_accessor_storage = new WeakMap(), _trigger_accessor_storage = new WeakMap(), _preserveIconSpace_accessor_storage = new WeakMap(), (() => {
650
+ }, _origin_accessor_storage = new WeakMap(), _trigger_accessor_storage = new WeakMap(), _preserveIconSpace_accessor_storage = new WeakMap(), _classThis = _a, (() => {
625
651
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
626
652
  _origin_decorators = [property()];
627
653
  _trigger_decorators = [property()];
@@ -635,8 +661,11 @@ let SbbAutocompleteBaseElement = (() => {
635
661
  __esDecorate(_a, null, _preserveIconSpace_decorators, { kind: "accessor", name: "preserveIconSpace", static: false, private: false, access: { has: (obj) => "preserveIconSpace" in obj, get: (obj) => obj.preserveIconSpace, set: (obj, value) => {
636
662
  obj.preserveIconSpace = value;
637
663
  } }, metadata: _metadata }, _preserveIconSpace_initializers, _preserveIconSpace_extraInitializers);
638
- if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
639
- })(), _a.styles = style, _a;
664
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
665
+ _classThis = _classDescriptor.value;
666
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
667
+ })(), _a.styles = style, __runInitializers(_classThis, _classExtraInitializers), _a;
668
+ return _classThis;
640
669
  })();
641
670
  let nextId = 0;
642
671
  const ariaRoleOnHost = isSafari;
@@ -731,4 +760,4 @@ export {
731
760
  SbbAutocompleteBaseElement,
732
761
  SbbAutocompleteElement
733
762
  };
734
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1iYXNlLWVsZW1lbnQudHMiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBpc1NlcnZlcixcbiAgbm90aGluZyxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcblxuaW1wb3J0IHsgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi9jb3JlL2Jhc2UtZWxlbWVudHMuanMnO1xuaW1wb3J0IHsgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyIH0gZnJvbSAnLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgZmluZFJlZmVyZW5jZWRFbGVtZW50LCBpc1NhZmFyaSwgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24gfSBmcm9tICcuLi9jb3JlL2RvbS5qcyc7XG5pbXBvcnQgeyBTYmJOZWdhdGl2ZU1peGluLCBTYmJIeWRyYXRpb25NaXhpbiB9IGZyb20gJy4uL2NvcmUvbWl4aW5zLmpzJztcbmltcG9ydCB7XG4gIGlzRXZlbnRPbkVsZW1lbnQsXG4gIG92ZXJsYXlHYXBGaXhDb3JuZXJzLFxuICByZW1vdmVBcmlhQ29tYm9Cb3hBdHRyaWJ1dGVzLFxuICBzZXRPdmVybGF5UG9zaXRpb24sXG59IGZyb20gJy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYk9wdGlvbkJhc2VFbGVtZW50IH0gZnJvbSAnLi4vb3B0aW9uLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vYXV0b2NvbXBsZXRlLWJhc2UtZWxlbWVudC5zY3NzP2xpdCZpbmxpbmUnO1xuXG4vKipcbiAqIE9uIFNhZmFyaSwgdGhlIGFyaWEgcm9sZSAnbGlzdGJveCcgbXVzdCBiZSBvbiB0aGUgaG9zdCBlbGVtZW50LCBvciBlbHNlIFZvaWNlT3ZlciB3b24ndCB3b3JrIGF0IGFsbC5cbiAqIE9uIHRoZSBvdGhlciBoYW5kLCBKQVdTIGFuZCBOVkRBIG5lZWQgdGhlIHJvbGUgdG8gYmUgXCJjbG9zZXJcIiB0byB0aGUgb3B0aW9ucywgb3IgZWxzZSBvcHRncm91cHMgd29uJ3Qgd29yay5cbiAqL1xuY29uc3QgYXJpYVJvbGVPbkhvc3QgPSBpc1NhZmFyaTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNiYkF1dG9jb21wbGV0ZUJhc2VFbGVtZW50IGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihcbiAgU2JiSHlkcmF0aW9uTWl4aW4oU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQpLFxuKSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCB3aGVyZSB0aGUgYXV0b2NvbXBsZXRlIHdpbGwgYXR0YWNoOyBhY2NlcHRzIGJvdGggYW4gZWxlbWVudCdzIGlkIG9yIGFuIEhUTUxFbGVtZW50LlxuICAgKiBJZiBub3Qgc2V0LCBpdCB3aWxsIHNlYXJjaCBmb3IgdGhlIGZpcnN0ICdzYmItZm9ybS1maWVsZCcgYW5jZXN0b3IuXG4gICAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgYWNjZXNzb3Igb3JpZ2luOiBzdHJpbmcgfCBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgZWxlbWVudCB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgYXV0b2NvbXBsZXRlIG9wZW5pbmc7IGFjY2VwdHMgYm90aCBhbiBlbGVtZW50J3MgaWQgb3IgYW4gSFRNTEVsZW1lbnQuXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBhdXRvY29tcGxldGUgd2lsbCBvcGVuIG9uIGZvY3VzLCBjbGljaywgaW5wdXQgb3IgYEFycm93RG93bmAga2V5cHJlc3Mgb2YgdGhlICd0cmlnZ2VyJyBlbGVtZW50LlxuICAgKiBJZiBub3Qgc2V0LCB3aWxsIHNlYXJjaCBmb3IgdGhlIGZpcnN0ICdpbnB1dCcgY2hpbGQgb2YgYSAnc2JiLWZvcm0tZmllbGQnIGFuY2VzdG9yLlxuICAgKi9cbiAgQHByb3BlcnR5KCkgcHVibGljIGFjY2Vzc29yIHRyaWdnZXI6IHN0cmluZyB8IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKiogV2hldGhlciB0aGUgaWNvbiBzcGFjZSBpcyBwcmVzZXJ2ZWQgd2hlbiBubyBpY29uIGlzIHNldC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3ByZXNlcnZlLWljb24tc3BhY2UnLCByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBwcmVzZXJ2ZUljb25TcGFjZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBSZXR1cm5zIHRoZSBlbGVtZW50IHdoZXJlIGF1dG9jb21wbGV0ZSBvdmVybGF5IGlzIGF0dGFjaGVkIHRvLiAqL1xuICBwdWJsaWMgZ2V0IG9yaWdpbkVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIGlmICghdGhpcy5fb3JpZ2luRWxlbWVudCkge1xuICAgICAgdGhpcy5fb3JpZ2luRWxlbWVudCA9IHRoaXMuX2ZpbmRPcmlnaW5FbGVtZW50KCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9vcmlnaW5FbGVtZW50O1xuICB9XG4gIHByaXZhdGUgX29yaWdpbkVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcblxuICAvKiogUmV0dXJucyB0aGUgdHJpZ2dlciBlbGVtZW50LiAqL1xuICBwdWJsaWMgZ2V0IHRyaWdnZXJFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl90cmlnZ2VyRWxlbWVudDtcbiAgfVxuICBwcml2YXRlIF90cmlnZ2VyRWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3ZlcmxheUlkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwYW5lbFJvbGU6IHN0cmluZztcbiAgLyoqIEBkZXByZWNhdGVkIE5vIGxvbmdlciB1c2VkIGludGVybmFsbHkuICovXG4gIHByb3RlY3RlZCBhYm9ydCA9IG5ldyBTYmJDb25uZWN0ZWRBYm9ydENvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX292ZXJsYXkhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfb3B0aW9uQ29udGFpbmVyITogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX3RyaWdnZXJFdmVudHNDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9kaWRMb2FkID0gZmFsc2U7XG4gIHByaXZhdGUgX2lzUG9pbnRlckRvd25FdmVudE9uTWVudTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgb3B0aW9ucygpOiBTYmJPcHRpb25CYXNlRWxlbWVudFtdO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc3luY05lZ2F0aXZlKCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZXRUcmlnZ2VyQXR0cmlidXRlcyhlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IG9wZW5lZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZWxlY3RCeUtleWJvYXJkKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNldE5leHRBY3RpdmVPcHRpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVzZXRBY3RpdmVFbGVtZW50KCk6IHZvaWQ7XG5cbiAgLyoqIE9wZW5zIHRoZSBhdXRvY29tcGxldGUuICovXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc3RhdGUgIT09ICdjbG9zZWQnIHx8XG4gICAgICAhdGhpcy5fb3ZlcmxheSB8fFxuICAgICAgdGhpcy5vcHRpb25zLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgdGhpcy5fcmVhZG9ubHkoKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMud2lsbE9wZW4uZW1pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuaW5nJztcbiAgICB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24oKTtcblxuICAgIC8vIElmIHRoZSBhbmltYXRpb24gZHVyYXRpb24gaXMgemVybywgdGhlIGFuaW1hdGlvbmVuZCBldmVudCBpcyBub3QgYWx3YXlzIGZpcmVkIHJlbGlhYmx5LlxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkaXJlY3RseSBzZXQgdGhlIGBvcGVuZWRgIHN0YXRlLlxuICAgIGlmICh0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENsb3NlcyB0aGUgYXV0b2NvbXBsZXRlLiAqL1xuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy53aWxsQ2xvc2UuZW1pdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcbiAgICB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLmFib3J0KCk7XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgY2xvc2VkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlQ2xvc2luZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1plcm9BbmltYXRpb25EdXJhdGlvbih0aGlzLCAnLS1zYmItb3B0aW9ucy1wYW5lbC1hbmltYXRpb24tZHVyYXRpb24nKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIGlmIChhcmlhUm9sZU9uSG9zdCkge1xuICAgICAgdGhpcy5pZCB8fD0gdGhpcy5vdmVybGF5SWQ7XG4gICAgfVxuICAgIGNvbnN0IGZvcm1GaWVsZCA9IHRoaXMuY2xvc2VzdCgnc2JiLWZvcm0tZmllbGQnKSA/PyB0aGlzLmNsb3Nlc3QoJ1tkYXRhLWZvcm0tZmllbGRdJyk7XG5cbiAgICBpZiAoZm9ybUZpZWxkKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gZm9ybUZpZWxkLmhhc0F0dHJpYnV0ZSgnbmVnYXRpdmUnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZGlkTG9hZCkge1xuICAgICAgdGhpcy5fY29tcG9uZW50U2V0dXAoKTtcbiAgICB9XG4gICAgdGhpcy5zeW5jTmVnYXRpdmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKFxuICAgICAgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnb3JpZ2luJykgJiYgdGhpcy5vcmlnaW4gIT09IGNoYW5nZWRQcm9wZXJ0aWVzLmdldCgnb3JpZ2luJykpIHx8XG4gICAgICAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCd0cmlnZ2VyJykgJiYgdGhpcy50cmlnZ2VyICE9PSBjaGFuZ2VkUHJvcGVydGllcy5nZXQoJ3RyaWdnZXInKSlcbiAgICApIHtcbiAgICAgIHRoaXMuX2NvbXBvbmVudFNldHVwKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJykpIHtcbiAgICAgIHRoaXMuc3luY05lZ2F0aXZlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgdGhpcy5fY29tcG9uZW50U2V0dXAoKTtcbiAgICB0aGlzLl9kaWRMb2FkID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX3RyaWdnZXJFdmVudHNDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXI/LmFib3J0KCk7XG4gIH1cblxuICAvKiogV2hlbiBhbiBvcHRpb24gaXMgc2VsZWN0ZWQsIHVwZGF0ZSB0aGUgaW5wdXQgdmFsdWUgYW5kIGNsb3NlIHRoZSBhdXRvY29tcGxldGUuICovXG4gIHByb3RlY3RlZCBvbk9wdGlvblNlbGVjdGVkKGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBTYmJPcHRpb25CYXNlRWxlbWVudDtcbiAgICBpZiAoIXRhcmdldC5zZWxlY3RlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIERlc2VsZWN0IHRoZSBwcmV2aW91cyBvcHRpb25zXG4gICAgdGhpcy5vcHRpb25zXG4gICAgICAuZmlsdGVyKChvcHRpb24pID0+IG9wdGlvbi5pZCAhPT0gdGFyZ2V0LmlkICYmIG9wdGlvbi5zZWxlY3RlZClcbiAgICAgIC5mb3JFYWNoKChvcHRpb24pID0+IChvcHRpb24uc2VsZWN0ZWQgPSBmYWxzZSkpO1xuXG4gICAgaWYgKHRoaXMudHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIC8vIFNldCB0aGUgb3B0aW9uIHZhbHVlXG4gICAgICAvLyBJbiBvcmRlciB0byBzdXBwb3J0IFJlYWN0IG9uQ2hhbmdlIGV2ZW50LCB3ZSBoYXZlIHRvIGdldCB0aGUgc2V0dGVyIGFuZCBjYWxsIGl0LlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xMTYwMCNpc3N1ZWNvbW1lbnQtMzQ1ODEzMTMwXG4gICAgICBjb25zdCBzZXRWYWx1ZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFRNTElucHV0RWxlbWVudC5wcm90b3R5cGUsICd2YWx1ZScpIS5zZXQhO1xuICAgICAgc2V0VmFsdWUuY2FsbCh0aGlzLnRyaWdnZXJFbGVtZW50LCB0YXJnZXQudmFsdWUpO1xuXG4gICAgICAvLyBNYW51YWxseSB0cmlnZ2VyIHRoZSBjaGFuZ2UgZXZlbnRzXG4gICAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZVNsb3RjaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5faGlnaGxpZ2h0T3B0aW9ucyh0aGlzLnRyaWdnZXJFbGVtZW50Py52YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIGF1dG9jb21wbGV0ZSBzaG91bGQgaW5oZXJpdCAncmVhZG9ubHknIHN0YXRlIGZyb20gdGhlIHRyaWdnZXIuICovXG4gIHByaXZhdGUgX3JlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJFbGVtZW50Py5oYXNBdHRyaWJ1dGUoJ3JlYWRvbmx5JykgPz8gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9jb21wb25lbnRTZXR1cCgpOiB2b2lkIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fdHJpZ2dlckV2ZW50c0NvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcblxuICAgIHRoaXMuX29yaWdpbkVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAnZGF0YS1vcHRpb24tcGFuZWwtb3JpZ2luLWJvcmRlcmxlc3MnLFxuICAgICAgISF0aGlzLmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKT8uaGFzQXR0cmlidXRlKCdib3JkZXJsZXNzJyksXG4gICAgKTtcblxuICAgIHRoaXMuX2JpbmRUbyh0aGlzLl9nZXRUcmlnZ2VyRWxlbWVudCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgZWxlbWVudCB3aGVyZSB0aGUgYXV0b2NvbXBsZXRlIHdpbGwgYmUgYXR0YWNoZWQuXG4gICAqIEByZXR1cm5zICdvcmlnaW4nIG9yIHRoZSBmaXJzdCAnc2JiLWZvcm0tZmllbGQnIGFuY2VzdG9yLlxuICAgKi9cbiAgcHJpdmF0ZSBfZmluZE9yaWdpbkVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIGxldCByZXN1bHQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuICAgIGlmICghdGhpcy5vcmlnaW4pIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpPy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPy4oJyNvdmVybGF5LWFuY2hvcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSBmaW5kUmVmZXJlbmNlZEVsZW1lbnQodGhpcy5vcmlnaW4pO1xuICAgIH1cblxuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDYW5ub3QgZmluZCB0aGUgb3JpZ2luIGVsZW1lbnQuIFBsZWFzZSBzcGVjaWZ5IGEgdmFsaWQgZWxlbWVudCBvciByZWFkIHRoZSBcIm9yaWdpblwiIHByb3AgZG9jdW1lbnRhdGlvbicsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIGVsZW1lbnQgdGhhdCB3aWxsIHRyaWdnZXIgdGhlIGF1dG9jb21wbGV0ZSBvcGVuaW5nLlxuICAgKiBAcmV0dXJucyAndHJpZ2dlcicgb3IgdGhlIGZpcnN0ICdpbnB1dCcgaW5zaWRlIHRoZSBvcmlnaW4gZWxlbWVudC5cbiAgICovXG4gIHByaXZhdGUgX2dldFRyaWdnZXJFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgIGlmICghdGhpcy50cmlnZ2VyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJyk/LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBmaW5kUmVmZXJlbmNlZEVsZW1lbnQ8SFRNTElucHV0RWxlbWVudD4odGhpcy50cmlnZ2VyKTtcblxuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDYW5ub3QgZmluZCB0aGUgdHJpZ2dlciBlbGVtZW50LiBQbGVhc2Ugc3BlY2lmeSBhIHZhbGlkIGVsZW1lbnQgb3IgcmVhZCB0aGUgXCJ0cmlnZ2VyXCIgcHJvcCBkb2N1bWVudGF0aW9uJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgX2JpbmRUbyh0cmlnZ2VyRWxlbTogSFRNTElucHV0RWxlbWVudCk6IHZvaWQge1xuICAgIGlmICghdHJpZ2dlckVsZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZXNldCBhdHRyaWJ1dGVzIHRvIHRoZSBvbGQgdHJpZ2dlciBhbmQgYWRkIHRoZW0gdG8gdGhlIG5ldyBvbmVcbiAgICB0aGlzLl9yZW1vdmVUcmlnZ2VyQXR0cmlidXRlcyh0aGlzLnRyaWdnZXJFbGVtZW50KTtcbiAgICB0aGlzLnNldFRyaWdnZXJBdHRyaWJ1dGVzKHRyaWdnZXJFbGVtKTtcblxuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gdHJpZ2dlckVsZW07XG5cbiAgICB0aGlzLl9zZXR1cFRyaWdnZXJFdmVudHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwVHJpZ2dlckV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl90cmlnZ2VyRXZlbnRzQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAgIC8vIE9wZW4gdGhlIG92ZXJsYXkgb24gZm9jdXMsIGNsaWNrLCBpbnB1dCBhbmQgYEFycm93RG93bmAgZXZlbnRcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsICgpID0+IHRoaXMub3BlbigpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX3RyaWdnZXJFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHRoaXMub3BlbigpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX3RyaWdnZXJFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2lucHV0JyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgdGhpcy5faGlnaGxpZ2h0T3B0aW9ucygoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlKTtcbiAgICAgIH0sXG4gICAgICB7IHNpZ25hbDogdGhpcy5fdHJpZ2dlckV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsIH0sXG4gICAgKTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLl9jbG9zZWRQYW5lbEtleWJvYXJkSW50ZXJhY3Rpb24oZXZlbnQpLFxuICAgICAgeyBzaWduYWw6IHRoaXMuX3RyaWdnZXJFdmVudHNDb250cm9sbGVyLnNpZ25hbCB9LFxuICAgICk7XG4gIH1cblxuICAvLyBTZXQgb3ZlcmxheSBwb3NpdGlvbiwgd2lkdGggYW5kIG1heCBoZWlnaHRcbiAgcHJpdmF0ZSBfc2V0T3ZlcmxheVBvc2l0aW9uKCk6IHZvaWQge1xuICAgIHNldE92ZXJsYXlQb3NpdGlvbihcbiAgICAgIHRoaXMuX292ZXJsYXksXG4gICAgICB0aGlzLm9yaWdpbkVsZW1lbnQsXG4gICAgICB0aGlzLl9vcHRpb25Db250YWluZXIsXG4gICAgICB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3IoJy5zYmItYXV0b2NvbXBsZXRlX19jb250YWluZXInKSEsXG4gICAgICB0aGlzLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogT24gb3Blbi9jbG9zZSBhbmltYXRpb24gZW5kLlxuICAgKiBJbiByYXJlIGNhc2VzIGl0IGNhbiBiZSB0aGF0IHRoZSBhbmltYXRpb25FbmQgZXZlbnQgaXMgdHJpZ2dlcmVkIHR3aWNlLlxuICAgKiBUbyBhdm9pZCBlbnRlcmluZyBhIGNvcnJ1cHQgc3RhdGUsIGV4aXQgd2hlbiBzdGF0ZSBpcyBub3QgZXhwZWN0ZWQuXG4gICAqL1xuICBwcml2YXRlIF9vbkFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ29wZW4nICYmIHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJykge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVPcGVuaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmVkJztcbiAgICB0aGlzLl9hdHRhY2hPcGVuUGFuZWxFdmVudHMoKTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xuICAgIHRoaXMuZGlkT3Blbi5lbWl0KCk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVDbG9zaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2VkJztcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcbiAgICB0aGlzLnJlc2V0QWN0aXZlRWxlbWVudCgpO1xuICAgIHRoaXMuX29wdGlvbkNvbnRhaW5lci5zY3JvbGxUb3AgPSAwO1xuICAgIHRoaXMuZGlkQ2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXR0YWNoT3BlblBhbmVsRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICAvLyBSZWNhbGN1bGF0ZSB0aGUgb3ZlcmxheSBwb3NpdGlvbiBvbiBzY3JvbGwgYW5kIHdpbmRvdyByZXNpemVcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24oKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgICAvLyBXaXRob3V0IGNhcHR1cmUsIG90aGVyIHNjcm9sbCBjb250ZXh0cyB3b3VsZCBub3QgYnViYmxlIHRvIHRoaXMgZXZlbnQgbGlzdGVuZXIuXG4gICAgICAvLyBDYXB0dXJlIGFsbG93cyB1cyB0byByZWFjdCB0byBhbGwgc2Nyb2xsIGNvbnRleHRzIGluIHRoaXMgRE9NLlxuICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4gdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCksIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgLy8gQ2xvc2UgYXV0b2NvbXBsZXRlIG9uIGJhY2tkcm9wIGNsaWNrXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgKGV2KSA9PiB0aGlzLl9wb2ludGVyRG93bkxpc3RlbmVyKGV2KSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgKGV2KSA9PiB0aGlzLl9jbG9zZU9uQmFja2Ryb3BDbGljayhldiksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICAvLyBLZXlib2FyZCBpbnRlcmFjdGlvbnNcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLm9wZW5lZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudCksXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgcG9pbnRlcmRvd24gZXZlbnQgdGFyZ2V0IGlzIHRyaWdnZXJlZCBvbiB0aGUgbWVudS5cbiAgcHJpdmF0ZSBfcG9pbnRlckRvd25MaXN0ZW5lciA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgdGhpcy5faXNQb2ludGVyRG93bkV2ZW50T25NZW51ID0gaXNFdmVudE9uRWxlbWVudCh0aGlzLl9vdmVybGF5LCBldmVudCk7XG4gIH07XG5cbiAgLy8gSWYgdGhlIGNsaWNrIGlzIG91dHNpZGUgdGhlIGF1dG9jb21wbGV0ZSwgY2xvc2VzIHRoZSBwYW5lbC5cbiAgcHJpdmF0ZSBfY2xvc2VPbkJhY2tkcm9wQ2xpY2sgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgIGlmIChcbiAgICAgICF0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbk1lbnUgJiZcbiAgICAgICFpc0V2ZW50T25FbGVtZW50KHRoaXMuX292ZXJsYXksIGV2ZW50KSAmJlxuICAgICAgIWlzRXZlbnRPbkVsZW1lbnQodGhpcy5vcmlnaW5FbGVtZW50LCBldmVudClcbiAgICApIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfY2xvc2VkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdjbG9zZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBIaWdobGlnaHQgdGhlIHNlYXJjaGVkIHRleHQgb24gdGhlIG9wdGlvbnMuICovXG4gIHByaXZhdGUgX2hpZ2hsaWdodE9wdGlvbnMoc2VhcmNoVGVybT86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChzZWFyY2hUZXJtID09PSBudWxsIHx8IHNlYXJjaFRlcm0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9wdGlvbnMuZm9yRWFjaCgob3B0aW9uKSA9PiBvcHRpb24uaGlnaGxpZ2h0KHNlYXJjaFRlcm0pKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZVRyaWdnZXJBdHRyaWJ1dGVzKGVsZW1lbnQ/OiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XG4gICAgcmVtb3ZlQXJpYUNvbWJvQm94QXR0cmlidXRlcyhlbGVtZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX2dhcC1maXhcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItYXV0b2NvbXBsZXRlX19jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX2dhcC1maXhcIj4ke292ZXJsYXlHYXBGaXhDb3JuZXJzKCl9PC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBAYW5pbWF0aW9uZW5kPSR7dGhpcy5fb25BbmltYXRpb25FbmR9XG4gICAgICAgICAgY2xhc3M9XCJzYmItYXV0b2NvbXBsZXRlX19wYW5lbFwiXG4gICAgICAgICAgP2RhdGEtb3Blbj0ke3RoaXMuc3RhdGUgPT09ICdvcGVuZWQnIHx8IHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJ31cbiAgICAgICAgICAke3JlZigob3ZlcmxheVJlZj86IEVsZW1lbnQpID0+ICh0aGlzLl9vdmVybGF5ID0gb3ZlcmxheVJlZiBhcyBIVE1MRWxlbWVudCkpfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX3dyYXBwZXJcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJzYmItYXV0b2NvbXBsZXRlX19vcHRpb25zXCJcbiAgICAgICAgICAgICAgcm9sZT0keyFhcmlhUm9sZU9uSG9zdCA/IHRoaXMucGFuZWxSb2xlIDogbm90aGluZ31cbiAgICAgICAgICAgICAgaWQ9JHshYXJpYVJvbGVPbkhvc3QgPyB0aGlzLm92ZXJsYXlJZCA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgICR7cmVmKChjb250YWluZXJSZWYpID0+ICh0aGlzLl9vcHRpb25Db250YWluZXIgPSBjb250YWluZXJSZWYgYXMgSFRNTEVsZW1lbnQpKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHt0aGlzLl9oYW5kbGVTbG90Y2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG4iLCJpbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBnZXROZXh0RWxlbWVudEluZGV4IH0gZnJvbSAnLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGlzU2FmYXJpIH0gZnJvbSAnLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgc2V0QXJpYUNvbWJvQm94QXR0cmlidXRlcyB9IGZyb20gJy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYk9wdEdyb3VwRWxlbWVudCwgU2JiT3B0aW9uRWxlbWVudCB9IGZyb20gJy4uL29wdGlvbi5qcyc7XG5cbmltcG9ydCB7IFNiYkF1dG9jb21wbGV0ZUJhc2VFbGVtZW50IH0gZnJvbSAnLi9hdXRvY29tcGxldGUtYmFzZS1lbGVtZW50LmpzJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogT24gU2FmYXJpLCB0aGUgYXJpYSByb2xlICdsaXN0Ym94JyBtdXN0IGJlIG9uIHRoZSBob3N0IGVsZW1lbnQsIG9yIGVsc2UgVm9pY2VPdmVyIHdvbid0IHdvcmsgYXQgYWxsLlxuICogT24gdGhlIG90aGVyIGhhbmQsIEpBV1MgYW5kIE5WREEgbmVlZCB0aGUgcm9sZSB0byBiZSBcImNsb3NlclwiIHRvIHRoZSBvcHRpb25zLCBvciBlbHNlIG9wdGdyb3VwcyB3b24ndCB3b3JrLlxuICovXG5jb25zdCBhcmlhUm9sZU9uSG9zdCA9IGlzU2FmYXJpO1xuXG4vKipcbiAqIENvbWJpbmVkIHdpdGggYSBuYXRpdmUgaW5wdXQsIGl0IGRpc3BsYXlzIGEgcGFuZWwgd2l0aCBhIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbnMuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1vcHRpb25gIG9yIGBzYmItb3B0Z3JvdXBgIGVsZW1lbnRzIHRvIHRoZSBgc2JiLWF1dG9jb21wbGV0ZWAuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsT3BlbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLWF1dG9jb21wbGV0ZWAgc3RhcnRzIHRoZSBvcGVuaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZE9wZW4gLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1hdXRvY29tcGxldGVgIGlzIG9wZW5lZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IHdpbGxDbG9zZSAtIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLWF1dG9jb21wbGV0ZWAgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZENsb3NlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItYXV0b2NvbXBsZXRlYCBpcyBjbG9zZWQuXG4gKiBAY3NzcHJvcCBbLS1zYmItYXV0b2NvbXBsZXRlLXotaW5kZXg9dmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KV0gLSBUbyBzcGVjaWZ5IGEgY3VzdG9tIHN0YWNrIG9yZGVyLFxuICogdGhlIGB6LWluZGV4YCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyB0aGlzIENTUyB2YXJpYWJsZS4gVGhlIGRlZmF1bHQgYHotaW5kZXhgIG9mIHRoZVxuICogY29tcG9uZW50IGlzIHNldCB0byBgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KWAgd2l0aCBhIHZhbHVlIG9mIGAxMDAwYC5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWF1dG9jb21wbGV0ZScpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICByb2xlOiBhcmlhUm9sZU9uSG9zdCA/ICdsaXN0Ym94JyA6IG51bGwsXG59KVxuY2xhc3MgU2JiQXV0b2NvbXBsZXRlRWxlbWVudCBleHRlbmRzIFNiYkF1dG9jb21wbGV0ZUJhc2VFbGVtZW50IHtcbiAgcHJvdGVjdGVkIG92ZXJsYXlJZCA9IGBzYmItYXV0b2NvbXBsZXRlLSR7KytuZXh0SWR9YDtcbiAgcHJvdGVjdGVkIHBhbmVsUm9sZSA9ICdsaXN0Ym94JztcbiAgcHJpdmF0ZSBfYWN0aXZlSXRlbUluZGV4ID0gLTE7XG5cbiAgcHJvdGVjdGVkIGdldCBvcHRpb25zKCk6IFNiYk9wdGlvbkVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsPy4oJ3NiYi1vcHRpb24nKSA/PyBbXSk7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Lignb3B0aW9uU2VsZWN0aW9uQ2hhbmdlJywgKGU6IEN1c3RvbUV2ZW50PHZvaWQ+KSA9PlxuICAgICAgdGhpcy5vbk9wdGlvblNlbGVjdGVkKGUpLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3luY05lZ2F0aXZlKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbD8uKCdzYmItZGl2aWRlcicpLmZvckVhY2goKGRpdmlkZXIpID0+IChkaXZpZGVyLm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZSkpO1xuXG4gICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPy48U2JiT3B0aW9uRWxlbWVudCB8IFNiYk9wdEdyb3VwRWxlbWVudD4oXG4gICAgICAnc2JiLW9wdGlvbiwgc2JiLW9wdGdyb3VwJyxcbiAgICApLmZvckVhY2goKGVsZW1lbnQpID0+IGVsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCdkYXRhLW5lZ2F0aXZlJywgdGhpcy5uZWdhdGl2ZSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9wZW5lZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb3BlbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICB0aGlzLnNlbGVjdEJ5S2V5Ym9hcmQoZXZlbnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLnNldE5leHRBY3RpdmVPcHRpb24oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0QnlLZXlib2FyZChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgYWN0aXZlT3B0aW9uID0gdGhpcy5vcHRpb25zW3RoaXMuX2FjdGl2ZUl0ZW1JbmRleF07XG5cbiAgICBpZiAoYWN0aXZlT3B0aW9uKSB7XG4gICAgICBhY3RpdmVPcHRpb24uc2V0U2VsZWN0ZWRWaWFVc2VySW50ZXJhY3Rpb24odHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNldE5leHRBY3RpdmVPcHRpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKFxuICAgICAgKG9wdCkgPT4gIW9wdC5kaXNhYmxlZCAmJiAhb3B0Lmhhc0F0dHJpYnV0ZSgnZGF0YS1ncm91cC1kaXNhYmxlZCcpLFxuICAgICk7XG5cbiAgICAvLyBHZXQgYW5kIGFjdGl2YXRlIHRoZSBuZXh0IGFjdGl2ZSBvcHRpb25cbiAgICBjb25zdCBuZXh0ID0gZ2V0TmV4dEVsZW1lbnRJbmRleChldmVudCwgdGhpcy5fYWN0aXZlSXRlbUluZGV4LCBmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoKTtcbiAgICBjb25zdCBuZXh0QWN0aXZlT3B0aW9uID0gZmlsdGVyZWRPcHRpb25zW25leHRdO1xuICAgIG5leHRBY3RpdmVPcHRpb24uc2V0QWN0aXZlKHRydWUpO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50JywgbmV4dEFjdGl2ZU9wdGlvbi5pZCk7XG4gICAgbmV4dEFjdGl2ZU9wdGlvbi5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcgfSk7XG5cbiAgICAvLyBSZXNldCB0aGUgcHJldmlvdXMgYWN0aXZlIG9wdGlvblxuICAgIGNvbnN0IGxhc3RBY3RpdmVPcHRpb24gPSBmaWx0ZXJlZE9wdGlvbnNbdGhpcy5fYWN0aXZlSXRlbUluZGV4XTtcbiAgICBpZiAobGFzdEFjdGl2ZU9wdGlvbikge1xuICAgICAgbGFzdEFjdGl2ZU9wdGlvbi5zZXRBY3RpdmUoZmFsc2UpO1xuICAgIH1cblxuICAgIHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCA9IG5leHQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzZXRBY3RpdmVFbGVtZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSB0aGlzLm9wdGlvbnNbdGhpcy5fYWN0aXZlSXRlbUluZGV4XTtcblxuICAgIGlmIChhY3RpdmVFbGVtZW50KSB7XG4gICAgICBhY3RpdmVFbGVtZW50LnNldEFjdGl2ZShmYWxzZSk7XG4gICAgfVxuICAgIHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCA9IC0xO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50Jyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0VHJpZ2dlckF0dHJpYnV0ZXMoZWxlbWVudDogSFRNTElucHV0RWxlbWVudCk6IHZvaWQge1xuICAgIHNldEFyaWFDb21ib0JveEF0dHJpYnV0ZXMoZWxlbWVudCwgYXJpYVJvbGVPbkhvc3QgPyB0aGlzLmlkIDogdGhpcy5vdmVybGF5SWQsIGZhbHNlKTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWF1dG9jb21wbGV0ZSc6IFNiYkF1dG9jb21wbGV0ZUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJhcmlhUm9sZU9uSG9zdCIsIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQThCQSxNQUFNQSxtQkFBaUI7SUFFRCw4QkFBMEIsTUFBQTs7QUFBUyxNQUFBLGNBQUEsaUJBQ3ZELGtCQUFrQix1QkFBdUIsQ0FBQzs7Ozs7Ozs7OztBQUR0QixTQUFBLG1CQUFtQyxZQUV4RDtBQUFBOztBQU9hO0FBT0E7QUFLWjtBQVo0Qix5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
763
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1iYXNlLWVsZW1lbnQudHMiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBpc1NlcnZlcixcbiAgbm90aGluZyxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbn0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcblxuaW1wb3J0IHsgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi9jb3JlL2Jhc2UtZWxlbWVudHMuanMnO1xuaW1wb3J0IHsgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyIH0gZnJvbSAnLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBmb3JjZVR5cGUsIGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGZpbmRSZWZlcmVuY2VkRWxlbWVudCwgaXNTYWZhcmksIGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uIH0gZnJvbSAnLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgU2JiTmVnYXRpdmVNaXhpbiwgU2JiSHlkcmF0aW9uTWl4aW4gfSBmcm9tICcuLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQge1xuICBpc0V2ZW50T25FbGVtZW50LFxuICBvdmVybGF5R2FwRml4Q29ybmVycyxcbiAgcmVtb3ZlQXJpYUNvbWJvQm94QXR0cmlidXRlcyxcbiAgc2V0T3ZlcmxheVBvc2l0aW9uLFxufSBmcm9tICcuLi9jb3JlL292ZXJsYXkuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPcHRpb25CYXNlRWxlbWVudCB9IGZyb20gJy4uL29wdGlvbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2F1dG9jb21wbGV0ZS1iYXNlLWVsZW1lbnQuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBPbiBTYWZhcmksIHRoZSBhcmlhIHJvbGUgJ2xpc3Rib3gnIG11c3QgYmUgb24gdGhlIGhvc3QgZWxlbWVudCwgb3IgZWxzZSBWb2ljZU92ZXIgd29uJ3Qgd29yayBhdCBhbGwuXG4gKiBPbiB0aGUgb3RoZXIgaGFuZCwgSkFXUyBhbmQgTlZEQSBuZWVkIHRoZSByb2xlIHRvIGJlIFwiY2xvc2VyXCIgdG8gdGhlIG9wdGlvbnMsIG9yIGVsc2Ugb3B0Z3JvdXBzIHdvbid0IHdvcmsuXG4gKi9cbmNvbnN0IGFyaWFSb2xlT25Ib3N0ID0gaXNTYWZhcmk7XG5cbmV4cG9ydFxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgcG9wb3ZlcjogJ21hbnVhbCcsXG59KVxuYWJzdHJhY3QgY2xhc3MgU2JiQXV0b2NvbXBsZXRlQmFzZUVsZW1lbnQgZXh0ZW5kcyBTYmJOZWdhdGl2ZU1peGluKFxuICBTYmJIeWRyYXRpb25NaXhpbihTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCksXG4pIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHdoZXJlIHRoZSBhdXRvY29tcGxldGUgd2lsbCBhdHRhY2g7IGFjY2VwdHMgYm90aCBhbiBlbGVtZW50J3MgaWQgb3IgYW4gSFRNTEVsZW1lbnQuXG4gICAqIElmIG5vdCBzZXQsIGl0IHdpbGwgc2VhcmNoIGZvciB0aGUgZmlyc3QgJ3NiYi1mb3JtLWZpZWxkJyBhbmNlc3Rvci5cbiAgICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBhY2Nlc3NvciBvcmlnaW46IHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnB1dCBlbGVtZW50IHRoYXQgd2lsbCB0cmlnZ2VyIHRoZSBhdXRvY29tcGxldGUgb3BlbmluZzsgYWNjZXB0cyBib3RoIGFuIGVsZW1lbnQncyBpZCBvciBhbiBIVE1MRWxlbWVudC5cbiAgICogQnkgZGVmYXVsdCwgdGhlIGF1dG9jb21wbGV0ZSB3aWxsIG9wZW4gb24gZm9jdXMsIGNsaWNrLCBpbnB1dCBvciBgQXJyb3dEb3duYCBrZXlwcmVzcyBvZiB0aGUgJ3RyaWdnZXInIGVsZW1lbnQuXG4gICAqIElmIG5vdCBzZXQsIHdpbGwgc2VhcmNoIGZvciB0aGUgZmlyc3QgJ2lucHV0JyBjaGlsZCBvZiBhICdzYmItZm9ybS1maWVsZCcgYW5jZXN0b3IuXG4gICAqL1xuICBAcHJvcGVydHkoKSBwdWJsaWMgYWNjZXNzb3IgdHJpZ2dlcjogc3RyaW5nIHwgSFRNTElucHV0RWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBpY29uIHNwYWNlIGlzIHByZXNlcnZlZCB3aGVuIG5vIGljb24gaXMgc2V0LiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncHJlc2VydmUtaWNvbi1zcGFjZScsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHByZXNlcnZlSWNvblNwYWNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFJldHVybnMgdGhlIGVsZW1lbnQgd2hlcmUgYXV0b2NvbXBsZXRlIG92ZXJsYXkgaXMgYXR0YWNoZWQgdG8uICovXG4gIHB1YmxpYyBnZXQgb3JpZ2luRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgaWYgKCF0aGlzLl9vcmlnaW5FbGVtZW50KSB7XG4gICAgICB0aGlzLl9vcmlnaW5FbGVtZW50ID0gdGhpcy5fZmluZE9yaWdpbkVsZW1lbnQoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX29yaWdpbkVsZW1lbnQ7XG4gIH1cbiAgcHJpdmF0ZSBfb3JpZ2luRWxlbWVudD86IEhUTUxFbGVtZW50O1xuXG4gIC8qKiBSZXR1cm5zIHRoZSB0cmlnZ2VyIGVsZW1lbnQuICovXG4gIHB1YmxpYyBnZXQgdHJpZ2dlckVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3RyaWdnZXJFbGVtZW50O1xuICB9XG4gIHByaXZhdGUgX3RyaWdnZXJFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvdmVybGF5SWQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHBhbmVsUm9sZTogc3RyaW5nO1xuICAvKiogQGRlcHJlY2F0ZWQgTm8gbG9uZ2VyIHVzZWQgaW50ZXJuYWxseS4gKi9cbiAgcHJvdGVjdGVkIGFib3J0ID0gbmV3IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfb3ZlcmxheSE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9vcHRpb25Db250YWluZXIhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfdHJpZ2dlckV2ZW50c0NvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX2RpZExvYWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaXNQb2ludGVyRG93bkV2ZW50T25NZW51OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBvcHRpb25zKCk6IFNiYk9wdGlvbkJhc2VFbGVtZW50W107XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzeW5jTmVnYXRpdmUoKTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNldFRyaWdnZXJBdHRyaWJ1dGVzKGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3BlbmVkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNlbGVjdEJ5S2V5Ym9hcmQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0TmV4dEFjdGl2ZU9wdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZXNldEFjdGl2ZUVsZW1lbnQoKTogdm9pZDtcblxuICAvKiogT3BlbnMgdGhlIGF1dG9jb21wbGV0ZS4gKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcgfHxcbiAgICAgICF0aGlzLl9vdmVybGF5IHx8XG4gICAgICB0aGlzLm9wdGlvbnMubGVuZ3RoID09PSAwIHx8XG4gICAgICB0aGlzLl9yZWFkb25seSgpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy53aWxsT3Blbi5lbWl0KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dQb3BvdmVyPy4oKTtcbiAgICB0aGlzLnN0YXRlID0gJ29wZW5pbmcnO1xuICAgIHRoaXMuX3NldE92ZXJsYXlQb3NpdGlvbigpO1xuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYG9wZW5lZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkpIHtcbiAgICAgIHRoaXMuX2hhbmRsZU9wZW5pbmcoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2xvc2VzIHRoZSBhdXRvY29tcGxldGUuICovXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ29wZW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLndpbGxDbG9zZS5lbWl0KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlID0gJ2Nsb3NpbmcnO1xuICAgIHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuYWJvcnQoKTtcblxuICAgIC8vIElmIHRoZSBhbmltYXRpb24gZHVyYXRpb24gaXMgemVybywgdGhlIGFuaW1hdGlvbmVuZCBldmVudCBpcyBub3QgYWx3YXlzIGZpcmVkIHJlbGlhYmx5LlxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkaXJlY3RseSBzZXQgdGhlIGBjbG9zZWRgIHN0YXRlLlxuICAgIGlmICh0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKHRoaXMsICctLXNiYi1vcHRpb25zLXBhbmVsLWFuaW1hdGlvbi1kdXJhdGlvbicpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgaWYgKGFyaWFSb2xlT25Ib3N0KSB7XG4gICAgICB0aGlzLmlkIHx8PSB0aGlzLm92ZXJsYXlJZDtcbiAgICB9XG4gICAgY29uc3QgZm9ybUZpZWxkID0gdGhpcy5jbG9zZXN0KCdzYmItZm9ybS1maWVsZCcpID8/IHRoaXMuY2xvc2VzdCgnW2RhdGEtZm9ybS1maWVsZF0nKTtcblxuICAgIGlmIChmb3JtRmllbGQpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSBmb3JtRmllbGQuaGFzQXR0cmlidXRlKCduZWdhdGl2ZScpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9kaWRMb2FkKSB7XG4gICAgICB0aGlzLl9jb21wb25lbnRTZXR1cCgpO1xuICAgIH1cbiAgICB0aGlzLnN5bmNOZWdhdGl2ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoXG4gICAgICAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdvcmlnaW4nKSAmJiB0aGlzLm9yaWdpbiAhPT0gY2hhbmdlZFByb3BlcnRpZXMuZ2V0KCdvcmlnaW4nKSkgfHxcbiAgICAgIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3RyaWdnZXInKSAmJiB0aGlzLnRyaWdnZXIgIT09IGNoYW5nZWRQcm9wZXJ0aWVzLmdldCgndHJpZ2dlcicpKVxuICAgICkge1xuICAgICAgdGhpcy5fY29tcG9uZW50U2V0dXAoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbmVnYXRpdmUnKSkge1xuICAgICAgdGhpcy5zeW5jTmVnYXRpdmUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLl9jb21wb25lbnRTZXR1cCgpO1xuICAgIHRoaXMuX2RpZExvYWQgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fdHJpZ2dlckV2ZW50c0NvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIC8qKiBXaGVuIGFuIG9wdGlvbiBpcyBzZWxlY3RlZCwgdXBkYXRlIHRoZSBpbnB1dCB2YWx1ZSBhbmQgY2xvc2UgdGhlIGF1dG9jb21wbGV0ZS4gKi9cbiAgcHJvdGVjdGVkIG9uT3B0aW9uU2VsZWN0ZWQoZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIFNiYk9wdGlvbkJhc2VFbGVtZW50O1xuICAgIGlmICghdGFyZ2V0LnNlbGVjdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRGVzZWxlY3QgdGhlIHByZXZpb3VzIG9wdGlvbnNcbiAgICB0aGlzLm9wdGlvbnNcbiAgICAgIC5maWx0ZXIoKG9wdGlvbikgPT4gb3B0aW9uLmlkICE9PSB0YXJnZXQuaWQgJiYgb3B0aW9uLnNlbGVjdGVkKVxuICAgICAgLmZvckVhY2goKG9wdGlvbikgPT4gKG9wdGlvbi5zZWxlY3RlZCA9IGZhbHNlKSk7XG5cbiAgICBpZiAodGhpcy50cmlnZ2VyRWxlbWVudCkge1xuICAgICAgLy8gU2V0IHRoZSBvcHRpb24gdmFsdWVcbiAgICAgIC8vIEluIG9yZGVyIHRvIHN1cHBvcnQgUmVhY3Qgb25DaGFuZ2UgZXZlbnQsIHdlIGhhdmUgdG8gZ2V0IHRoZSBzZXR0ZXIgYW5kIGNhbGwgaXQuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzExNjAwI2lzc3VlY29tbWVudC0zNDU4MTMxMzBcbiAgICAgIGNvbnN0IHNldFZhbHVlID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihIVE1MSW5wdXRFbGVtZW50LnByb3RvdHlwZSwgJ3ZhbHVlJykhLnNldCE7XG4gICAgICBzZXRWYWx1ZS5jYWxsKHRoaXMudHJpZ2dlckVsZW1lbnQsIHRhcmdldC52YWx1ZSk7XG5cbiAgICAgIC8vIE1hbnVhbGx5IHRyaWdnZXIgdGhlIGNoYW5nZSBldmVudHNcbiAgICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSB9KSk7XG4gICAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IElucHV0RXZlbnQoJ2lucHV0JywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSk7XG4gICAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlU2xvdGNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9oaWdobGlnaHRPcHRpb25zKHRoaXMudHJpZ2dlckVsZW1lbnQ/LnZhbHVlKTtcbiAgICB0aGlzLl9vcGVuT25OZXdPcHRpb25zKCk7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlICdpbnB1dCcgaXMgZm9jdXNlZCBhbmQgdGhlcmUncyBhIGNoYW5nZSBpbiB0aGUgbnVtYmVyIG9mIG9wdGlvbnMsIG9wZW4gdGhlIGF1dG9jb21wbGV0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfb3Blbk9uTmV3T3B0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAoZG9jdW1lbnQ/LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMudHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogVGhlIGF1dG9jb21wbGV0ZSBzaG91bGQgaW5oZXJpdCAncmVhZG9ubHknIHN0YXRlIGZyb20gdGhlIHRyaWdnZXIuICovXG4gIHByaXZhdGUgX3JlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJFbGVtZW50Py5oYXNBdHRyaWJ1dGUoJ3JlYWRvbmx5JykgPz8gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9jb21wb25lbnRTZXR1cCgpOiB2b2lkIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fdHJpZ2dlckV2ZW50c0NvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcblxuICAgIHRoaXMuX29yaWdpbkVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAnZGF0YS1vcHRpb24tcGFuZWwtb3JpZ2luLWJvcmRlcmxlc3MnLFxuICAgICAgISF0aGlzLmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKT8uaGFzQXR0cmlidXRlKCdib3JkZXJsZXNzJyksXG4gICAgKTtcblxuICAgIHRoaXMuX2JpbmRUbyh0aGlzLl9nZXRUcmlnZ2VyRWxlbWVudCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgZWxlbWVudCB3aGVyZSB0aGUgYXV0b2NvbXBsZXRlIHdpbGwgYmUgYXR0YWNoZWQuXG4gICAqIEByZXR1cm5zICdvcmlnaW4nIG9yIHRoZSBmaXJzdCAnc2JiLWZvcm0tZmllbGQnIGFuY2VzdG9yLlxuICAgKi9cbiAgcHJpdmF0ZSBfZmluZE9yaWdpbkVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIGxldCByZXN1bHQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuICAgIGlmICghdGhpcy5vcmlnaW4pIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpPy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPy4oJyNvdmVybGF5LWFuY2hvcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSBmaW5kUmVmZXJlbmNlZEVsZW1lbnQodGhpcy5vcmlnaW4pO1xuICAgIH1cblxuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDYW5ub3QgZmluZCB0aGUgb3JpZ2luIGVsZW1lbnQuIFBsZWFzZSBzcGVjaWZ5IGEgdmFsaWQgZWxlbWVudCBvciByZWFkIHRoZSBcIm9yaWdpblwiIHByb3AgZG9jdW1lbnRhdGlvbicsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIGVsZW1lbnQgdGhhdCB3aWxsIHRyaWdnZXIgdGhlIGF1dG9jb21wbGV0ZSBvcGVuaW5nLlxuICAgKiBAcmV0dXJucyAndHJpZ2dlcicgb3IgdGhlIGZpcnN0ICdpbnB1dCcgaW5zaWRlIHRoZSBvcmlnaW4gZWxlbWVudC5cbiAgICovXG4gIHByaXZhdGUgX2dldFRyaWdnZXJFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgIGlmICghdGhpcy50cmlnZ2VyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJyk/LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBmaW5kUmVmZXJlbmNlZEVsZW1lbnQ8SFRNTElucHV0RWxlbWVudD4odGhpcy50cmlnZ2VyKTtcblxuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDYW5ub3QgZmluZCB0aGUgdHJpZ2dlciBlbGVtZW50LiBQbGVhc2Ugc3BlY2lmeSBhIHZhbGlkIGVsZW1lbnQgb3IgcmVhZCB0aGUgXCJ0cmlnZ2VyXCIgcHJvcCBkb2N1bWVudGF0aW9uJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgX2JpbmRUbyh0cmlnZ2VyRWxlbTogSFRNTElucHV0RWxlbWVudCk6IHZvaWQge1xuICAgIGlmICghdHJpZ2dlckVsZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZXNldCBhdHRyaWJ1dGVzIHRvIHRoZSBvbGQgdHJpZ2dlciBhbmQgYWRkIHRoZW0gdG8gdGhlIG5ldyBvbmVcbiAgICB0aGlzLl9yZW1vdmVUcmlnZ2VyQXR0cmlidXRlcyh0aGlzLnRyaWdnZXJFbGVtZW50KTtcbiAgICB0aGlzLnNldFRyaWdnZXJBdHRyaWJ1dGVzKHRyaWdnZXJFbGVtKTtcblxuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gdHJpZ2dlckVsZW07XG5cbiAgICB0aGlzLl9zZXR1cFRyaWdnZXJFdmVudHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwVHJpZ2dlckV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl90cmlnZ2VyRXZlbnRzQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAgIC8vIE9wZW4gdGhlIG92ZXJsYXkgb24gZm9jdXMsIGNsaWNrLCBpbnB1dCBhbmQgYEFycm93RG93bmAgZXZlbnRcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsICgpID0+IHRoaXMub3BlbigpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX3RyaWdnZXJFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHRoaXMub3BlbigpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX3RyaWdnZXJFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2lucHV0JyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgdGhpcy5faGlnaGxpZ2h0T3B0aW9ucygoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlKTtcbiAgICAgIH0sXG4gICAgICB7IHNpZ25hbDogdGhpcy5fdHJpZ2dlckV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsIH0sXG4gICAgKTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLl9jbG9zZWRQYW5lbEtleWJvYXJkSW50ZXJhY3Rpb24oZXZlbnQpLFxuICAgICAgeyBzaWduYWw6IHRoaXMuX3RyaWdnZXJFdmVudHNDb250cm9sbGVyLnNpZ25hbCB9LFxuICAgICk7XG4gIH1cblxuICAvLyBTZXQgb3ZlcmxheSBwb3NpdGlvbiwgd2lkdGggYW5kIG1heCBoZWlnaHRcbiAgcHJpdmF0ZSBfc2V0T3ZlcmxheVBvc2l0aW9uKCk6IHZvaWQge1xuICAgIHNldE92ZXJsYXlQb3NpdGlvbihcbiAgICAgIHRoaXMuX292ZXJsYXksXG4gICAgICB0aGlzLm9yaWdpbkVsZW1lbnQsXG4gICAgICB0aGlzLl9vcHRpb25Db250YWluZXIsXG4gICAgICB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3IoJy5zYmItYXV0b2NvbXBsZXRlX19jb250YWluZXInKSEsXG4gICAgICB0aGlzLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogT24gb3Blbi9jbG9zZSBhbmltYXRpb24gZW5kLlxuICAgKiBJbiByYXJlIGNhc2VzIGl0IGNhbiBiZSB0aGF0IHRoZSBhbmltYXRpb25FbmQgZXZlbnQgaXMgdHJpZ2dlcmVkIHR3aWNlLlxuICAgKiBUbyBhdm9pZCBlbnRlcmluZyBhIGNvcnJ1cHQgc3RhdGUsIGV4aXQgd2hlbiBzdGF0ZSBpcyBub3QgZXhwZWN0ZWQuXG4gICAqL1xuICBwcml2YXRlIF9vbkFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ29wZW4nICYmIHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJykge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVPcGVuaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmVkJztcbiAgICB0aGlzLl9hdHRhY2hPcGVuUGFuZWxFdmVudHMoKTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xuICAgIHRoaXMuZGlkT3Blbi5lbWl0KCk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVDbG9zaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2VkJztcbiAgICB0aGlzLmhpZGVQb3BvdmVyPy4oKTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcbiAgICB0aGlzLnJlc2V0QWN0aXZlRWxlbWVudCgpO1xuICAgIHRoaXMuX29wdGlvbkNvbnRhaW5lci5zY3JvbGxUb3AgPSAwO1xuICAgIHRoaXMuZGlkQ2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXR0YWNoT3BlblBhbmVsRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICAvLyBSZWNhbGN1bGF0ZSB0aGUgb3ZlcmxheSBwb3NpdGlvbiBvbiBzY3JvbGwgYW5kIHdpbmRvdyByZXNpemVcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24oKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgICAvLyBXaXRob3V0IGNhcHR1cmUsIG90aGVyIHNjcm9sbCBjb250ZXh0cyB3b3VsZCBub3QgYnViYmxlIHRvIHRoaXMgZXZlbnQgbGlzdGVuZXIuXG4gICAgICAvLyBDYXB0dXJlIGFsbG93cyB1cyB0byByZWFjdCB0byBhbGwgc2Nyb2xsIGNvbnRleHRzIGluIHRoaXMgRE9NLlxuICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4gdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCksIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgLy8gQ2xvc2UgYXV0b2NvbXBsZXRlIG9uIGJhY2tkcm9wIGNsaWNrXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgKGV2KSA9PiB0aGlzLl9wb2ludGVyRG93bkxpc3RlbmVyKGV2KSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgKGV2KSA9PiB0aGlzLl9jbG9zZU9uQmFja2Ryb3BDbGljayhldiksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICAvLyBLZXlib2FyZCBpbnRlcmFjdGlvbnNcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLm9wZW5lZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudCksXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgcG9pbnRlcmRvd24gZXZlbnQgdGFyZ2V0IGlzIHRyaWdnZXJlZCBvbiB0aGUgbWVudS5cbiAgcHJpdmF0ZSBfcG9pbnRlckRvd25MaXN0ZW5lciA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgdGhpcy5faXNQb2ludGVyRG93bkV2ZW50T25NZW51ID0gaXNFdmVudE9uRWxlbWVudCh0aGlzLl9vdmVybGF5LCBldmVudCk7XG4gIH07XG5cbiAgLy8gSWYgdGhlIGNsaWNrIGlzIG91dHNpZGUgdGhlIGF1dG9jb21wbGV0ZSwgY2xvc2VzIHRoZSBwYW5lbC5cbiAgcHJpdmF0ZSBfY2xvc2VPbkJhY2tkcm9wQ2xpY2sgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgIGlmIChcbiAgICAgICF0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbk1lbnUgJiZcbiAgICAgICFpc0V2ZW50T25FbGVtZW50KHRoaXMuX292ZXJsYXksIGV2ZW50KSAmJlxuICAgICAgIWlzRXZlbnRPbkVsZW1lbnQodGhpcy5vcmlnaW5FbGVtZW50LCBldmVudClcbiAgICApIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfY2xvc2VkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdjbG9zZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBIaWdobGlnaHQgdGhlIHNlYXJjaGVkIHRleHQgb24gdGhlIG9wdGlvbnMuICovXG4gIHByaXZhdGUgX2hpZ2hsaWdodE9wdGlvbnMoc2VhcmNoVGVybT86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChzZWFyY2hUZXJtID09PSBudWxsIHx8IHNlYXJjaFRlcm0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9wdGlvbnMuZm9yRWFjaCgob3B0aW9uKSA9PiBvcHRpb24uaGlnaGxpZ2h0KHNlYXJjaFRlcm0pKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbW92ZVRyaWdnZXJBdHRyaWJ1dGVzKGVsZW1lbnQ/OiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XG4gICAgcmVtb3ZlQXJpYUNvbWJvQm94QXR0cmlidXRlcyhlbGVtZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX2dhcC1maXhcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItYXV0b2NvbXBsZXRlX19jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX2dhcC1maXhcIj4ke292ZXJsYXlHYXBGaXhDb3JuZXJzKCl9PC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBAYW5pbWF0aW9uZW5kPSR7dGhpcy5fb25BbmltYXRpb25FbmR9XG4gICAgICAgICAgY2xhc3M9XCJzYmItYXV0b2NvbXBsZXRlX19wYW5lbFwiXG4gICAgICAgICAgP2RhdGEtb3Blbj0ke3RoaXMuc3RhdGUgPT09ICdvcGVuZWQnIHx8IHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJ31cbiAgICAgICAgICAke3JlZigob3ZlcmxheVJlZj86IEVsZW1lbnQpID0+ICh0aGlzLl9vdmVybGF5ID0gb3ZlcmxheVJlZiBhcyBIVE1MRWxlbWVudCkpfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX3dyYXBwZXJcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJzYmItYXV0b2NvbXBsZXRlX19vcHRpb25zXCJcbiAgICAgICAgICAgICAgcm9sZT0keyFhcmlhUm9sZU9uSG9zdCA/IHRoaXMucGFuZWxSb2xlIDogbm90aGluZ31cbiAgICAgICAgICAgICAgaWQ9JHshYXJpYVJvbGVPbkhvc3QgPyB0aGlzLm92ZXJsYXlJZCA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgICR7cmVmKChjb250YWluZXJSZWYpID0+ICh0aGlzLl9vcHRpb25Db250YWluZXIgPSBjb250YWluZXJSZWYgYXMgSFRNTEVsZW1lbnQpKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHt0aGlzLl9oYW5kbGVTbG90Y2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG4iLCJpbXBvcnQgeyBjdXN0b21FbGVtZW50IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBnZXROZXh0RWxlbWVudEluZGV4IH0gZnJvbSAnLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGlzU2FmYXJpIH0gZnJvbSAnLi4vY29yZS9kb20uanMnO1xuaW1wb3J0IHsgc2V0QXJpYUNvbWJvQm94QXR0cmlidXRlcyB9IGZyb20gJy4uL2NvcmUvb3ZlcmxheS5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYk9wdEdyb3VwRWxlbWVudCwgU2JiT3B0aW9uRWxlbWVudCB9IGZyb20gJy4uL29wdGlvbi5qcyc7XG5cbmltcG9ydCB7IFNiYkF1dG9jb21wbGV0ZUJhc2VFbGVtZW50IH0gZnJvbSAnLi9hdXRvY29tcGxldGUtYmFzZS1lbGVtZW50LmpzJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogT24gU2FmYXJpLCB0aGUgYXJpYSByb2xlICdsaXN0Ym94JyBtdXN0IGJlIG9uIHRoZSBob3N0IGVsZW1lbnQsIG9yIGVsc2UgVm9pY2VPdmVyIHdvbid0IHdvcmsgYXQgYWxsLlxuICogT24gdGhlIG90aGVyIGhhbmQsIEpBV1MgYW5kIE5WREEgbmVlZCB0aGUgcm9sZSB0byBiZSBcImNsb3NlclwiIHRvIHRoZSBvcHRpb25zLCBvciBlbHNlIG9wdGdyb3VwcyB3b24ndCB3b3JrLlxuICovXG5jb25zdCBhcmlhUm9sZU9uSG9zdCA9IGlzU2FmYXJpO1xuXG4vKipcbiAqIENvbWJpbmVkIHdpdGggYSBuYXRpdmUgaW5wdXQsIGl0IGRpc3BsYXlzIGEgcGFuZWwgd2l0aCBhIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbnMuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1vcHRpb25gIG9yIGBzYmItb3B0Z3JvdXBgIGVsZW1lbnRzIHRvIHRoZSBgc2JiLWF1dG9jb21wbGV0ZWAuXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PHZvaWQ+fSB3aWxsT3BlbiAtIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLWF1dG9jb21wbGV0ZWAgc3RhcnRzIHRoZSBvcGVuaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZE9wZW4gLSBFbWl0cyB3aGVuZXZlciB0aGUgYHNiYi1hdXRvY29tcGxldGVgIGlzIG9wZW5lZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IHdpbGxDbG9zZSAtIEVtaXRzIHdoZW5ldmVyIHRoZSBgc2JiLWF1dG9jb21wbGV0ZWAgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC5cbiAqIEBldmVudCB7Q3VzdG9tRXZlbnQ8dm9pZD59IGRpZENsb3NlIC0gRW1pdHMgd2hlbmV2ZXIgdGhlIGBzYmItYXV0b2NvbXBsZXRlYCBpcyBjbG9zZWQuXG4gKiBAY3NzcHJvcCBbLS1zYmItYXV0b2NvbXBsZXRlLXotaW5kZXg9dmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KV0gLSBUbyBzcGVjaWZ5IGEgY3VzdG9tIHN0YWNrIG9yZGVyLFxuICogdGhlIGB6LWluZGV4YCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyB0aGlzIENTUyB2YXJpYWJsZS4gVGhlIGRlZmF1bHQgYHotaW5kZXhgIG9mIHRoZVxuICogY29tcG9uZW50IGlzIHNldCB0byBgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KWAgd2l0aCBhIHZhbHVlIG9mIGAxMDAwYC5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWF1dG9jb21wbGV0ZScpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICByb2xlOiBhcmlhUm9sZU9uSG9zdCA/ICdsaXN0Ym94JyA6IG51bGwsXG59KVxuY2xhc3MgU2JiQXV0b2NvbXBsZXRlRWxlbWVudCBleHRlbmRzIFNiYkF1dG9jb21wbGV0ZUJhc2VFbGVtZW50IHtcbiAgcHJvdGVjdGVkIG92ZXJsYXlJZCA9IGBzYmItYXV0b2NvbXBsZXRlLSR7KytuZXh0SWR9YDtcbiAgcHJvdGVjdGVkIHBhbmVsUm9sZSA9ICdsaXN0Ym94JztcbiAgcHJpdmF0ZSBfYWN0aXZlSXRlbUluZGV4ID0gLTE7XG5cbiAgcHJvdGVjdGVkIGdldCBvcHRpb25zKCk6IFNiYk9wdGlvbkVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsPy4oJ3NiYi1vcHRpb24nKSA/PyBbXSk7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Lignb3B0aW9uU2VsZWN0aW9uQ2hhbmdlJywgKGU6IEN1c3RvbUV2ZW50PHZvaWQ+KSA9PlxuICAgICAgdGhpcy5vbk9wdGlvblNlbGVjdGVkKGUpLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3luY05lZ2F0aXZlKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbD8uKCdzYmItZGl2aWRlcicpLmZvckVhY2goKGRpdmlkZXIpID0+IChkaXZpZGVyLm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZSkpO1xuXG4gICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsPy48U2JiT3B0aW9uRWxlbWVudCB8IFNiYk9wdEdyb3VwRWxlbWVudD4oXG4gICAgICAnc2JiLW9wdGlvbiwgc2JiLW9wdGdyb3VwJyxcbiAgICApLmZvckVhY2goKGVsZW1lbnQpID0+IGVsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCdkYXRhLW5lZ2F0aXZlJywgdGhpcy5uZWdhdGl2ZSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9wZW5lZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb3BlbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICB0aGlzLnNlbGVjdEJ5S2V5Ym9hcmQoZXZlbnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLnNldE5leHRBY3RpdmVPcHRpb24oZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0QnlLZXlib2FyZChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgYWN0aXZlT3B0aW9uID0gdGhpcy5vcHRpb25zW3RoaXMuX2FjdGl2ZUl0ZW1JbmRleF07XG5cbiAgICBpZiAoYWN0aXZlT3B0aW9uKSB7XG4gICAgICBhY3RpdmVPcHRpb24uc2V0U2VsZWN0ZWRWaWFVc2VySW50ZXJhY3Rpb24odHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNldE5leHRBY3RpdmVPcHRpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKFxuICAgICAgKG9wdCkgPT4gIW9wdC5kaXNhYmxlZCAmJiAhb3B0Lmhhc0F0dHJpYnV0ZSgnZGF0YS1ncm91cC1kaXNhYmxlZCcpLFxuICAgICk7XG5cbiAgICAvLyBHZXQgYW5kIGFjdGl2YXRlIHRoZSBuZXh0IGFjdGl2ZSBvcHRpb25cbiAgICBjb25zdCBuZXh0ID0gZ2V0TmV4dEVsZW1lbnRJbmRleChldmVudCwgdGhpcy5fYWN0aXZlSXRlbUluZGV4LCBmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoKTtcbiAgICBjb25zdCBuZXh0QWN0aXZlT3B0aW9uID0gZmlsdGVyZWRPcHRpb25zW25leHRdO1xuICAgIG5leHRBY3RpdmVPcHRpb24uc2V0QWN0aXZlKHRydWUpO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50JywgbmV4dEFjdGl2ZU9wdGlvbi5pZCk7XG4gICAgbmV4dEFjdGl2ZU9wdGlvbi5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcgfSk7XG5cbiAgICAvLyBSZXNldCB0aGUgcHJldmlvdXMgYWN0aXZlIG9wdGlvblxuICAgIGNvbnN0IGxhc3RBY3RpdmVPcHRpb24gPSBmaWx0ZXJlZE9wdGlvbnNbdGhpcy5fYWN0aXZlSXRlbUluZGV4XTtcbiAgICBpZiAobGFzdEFjdGl2ZU9wdGlvbikge1xuICAgICAgbGFzdEFjdGl2ZU9wdGlvbi5zZXRBY3RpdmUoZmFsc2UpO1xuICAgIH1cblxuICAgIHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCA9IG5leHQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzZXRBY3RpdmVFbGVtZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSB0aGlzLm9wdGlvbnNbdGhpcy5fYWN0aXZlSXRlbUluZGV4XTtcblxuICAgIGlmIChhY3RpdmVFbGVtZW50KSB7XG4gICAgICBhY3RpdmVFbGVtZW50LnNldEFjdGl2ZShmYWxzZSk7XG4gICAgfVxuICAgIHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCA9IC0xO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50Jyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0VHJpZ2dlckF0dHJpYnV0ZXMoZWxlbWVudDogSFRNTElucHV0RWxlbWVudCk6IHZvaWQge1xuICAgIHNldEFyaWFDb21ib0JveEF0dHJpYnV0ZXMoZWxlbWVudCwgYXJpYVJvbGVPbkhvc3QgPyB0aGlzLmlkIDogdGhpcy5vdmVybGF5SWQsIGZhbHNlKTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWF1dG9jb21wbGV0ZSc6IFNiYkF1dG9jb21wbGV0ZUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJhcmlhUm9sZU9uSG9zdCIsIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE4QkEsTUFBTUEsbUJBQWlCO0lBTVIsOEJBQTBCLE1BQUE7O0FBSHhDLE1BQUEsbUJBQUEsQ0FBQSxlQUFlO0FBQUEsSUFDZCxTQUFTO0FBQUEsRUFBQSxDQUNWLENBQUM7Ozs7QUFDZ0QsTUFBQSxjQUFBLGlCQUNoRCxrQkFBa0IsdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7QUFERixFQUFBLG1CQUFRLFlBRWpEO0FBQUE7O0FBT2E7QUFPQTtBQUtaO0FBWjRCLHlCQUFBLDBCQUFBLGtCQUFBLE1BQUEsc0JBQXNDLElBQUk7QUFPMUMseUJBQUEsNEJBQUEsa0JBQUEsTUFBQSx5QkFBQSxHQUFBLGtCQUFBLE1BQUEsdUJBQTRDLElBQUk7QUFLNUQseUJBQUEsc0NBQUEsa0JBQUEsTUFBQSwwQkFBQSxHQUFBLGtCQUFBLE1BQUEsaUNBQTZCLEtBQUs7QUFTMUMsV0FBQSxpQkFBNkIsa0JBQUEsTUFBQSxvQ0FBQTtBQVczQixXQUFBLFFBQVEsSUFBSSw0QkFBNEIsSUFBSTtBQUs5QyxXQUFRLFdBQUc7QUFDWCxXQUF5Qiw0QkFBWTtBQXFVckMsV0FBQSx1QkFBdUIsQ0FBQyxVQUE2QjtBQUMzRCxhQUFLLDRCQUE0QixpQkFBaUIsS0FBSyxVQUFVLEtBQUs7QUFBQSxNQUN4RTtBQUdRLFdB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
@@ -175,8 +175,8 @@ let SbbBreadcrumbGroupElement = (() => {
175
175
  /** Apply the aria-current attribute to the last sbb-breadcrumb element. */
176
176
  _syncBreadcrumbs() {
177
177
  var _a2;
178
- this.listChildren.slice(0, -1).filter((c) => c.hasAttribute("aria-current")).forEach((c) => c.removeAttribute("aria-current"));
179
- (_a2 = this.listChildren[this.listChildren.length - 1]) == null ? void 0 : _a2.setAttribute("aria-current", "page");
178
+ this.listChildren.slice(0, -1).filter((c) => c.hasAttribute("accessibility-current")).forEach((c) => c.removeAttribute("accessibility-current"));
179
+ (_a2 = this.listChildren[this.listChildren.length - 1]) == null ? void 0 : _a2.setAttribute("accessibility-current", "page");
180
180
  if (this.listChildren.length < MIN_BREADCRUMBS_TO_COLLAPSE) {
181
181
  this._state = null;
182
182
  }
@@ -278,4 +278,4 @@ let SbbBreadcrumbGroupElement = (() => {
278
278
  export {
279
279
  SbbBreadcrumbGroupElement
280
280
  };
281
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1ncm91cC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi1ncm91cC9icmVhZGNydW1iLWdyb3VwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc2l6ZUNvbnRyb2xsZXIgfSBmcm9tICdAbGl0LWxhYnMvb2JzZXJ2ZXJzL3Jlc2l6ZS1jb250cm9sbGVyLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIExpdEVsZW1lbnQsXG4gIG5vdGhpbmcsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHtcbiAgZ2V0TmV4dEVsZW1lbnRJbmRleCxcbiAgaXNBcnJvd0tleVByZXNzZWQsXG4gIHNiYklucHV0TW9kYWxpdHlEZXRlY3Rvcixcbn0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgc2V0T3JSZW1vdmVBdHRyaWJ1dGUgfSBmcm9tICcuLi8uLi9jb3JlL2RvbS5qcyc7XG5pbXBvcnQgeyBpMThuQnJlYWRjcnVtYkVsbGlwc2lzQnV0dG9uTGFiZWwgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiTmFtZWRTbG90TGlzdE1peGluLCB0eXBlIFdpdGhMaXN0Q2hpbGRyZW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkJyZWFkY3J1bWJFbGVtZW50IH0gZnJvbSAnLi4vYnJlYWRjcnVtYi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2JyZWFkY3J1bWItZ3JvdXAuc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICcuLi8uLi9pY29uLmpzJztcblxuY29uc3QgTUlOX0JSRUFEQ1JVTUJTX1RPX0NPTExBUFNFID0gMztcblxuLyoqXG4gKiBJdCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRhaW5lciBmb3Igb25lIG9yIG1vcmUgYHNiYi1icmVhZGNydW1iYCBjb21wb25lbnQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1icmVhZGNydW1iYCBlbGVtZW50cy5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWJyZWFkY3J1bWItZ3JvdXAnKVxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgcm9sZTogJ25hdmlnYXRpb24nLFxufSlcbmNsYXNzIFNiYkJyZWFkY3J1bWJHcm91cEVsZW1lbnQgZXh0ZW5kcyBTYmJOYW1lZFNsb3RMaXN0TWl4aW48XG4gIFNiYkJyZWFkY3J1bWJFbGVtZW50LFxuICB0eXBlb2YgTGl0RWxlbWVudFxuPihMaXRFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgbGlzdENoaWxkTG9jYWxOYW1lcyA9IFsnc2JiLWJyZWFkY3J1bWInXTtcblxuICAvKiBUaGUgc3RhdGUgb2YgdGhlIGJyZWFkY3J1bWIgZ3JvdXAuICovXG4gIEBzdGF0ZSgpXG4gIHByaXZhdGUgc2V0IF9zdGF0ZShzdGF0ZTogJ2NvbGxhcHNlZCcgfCAnbWFudWFsbHktZXhwYW5kZWQnIHwgbnVsbCkge1xuICAgIHNldE9yUmVtb3ZlQXR0cmlidXRlKHRoaXMsICdkYXRhLXN0YXRlJywgc3RhdGUpO1xuICB9XG4gIHByaXZhdGUgZ2V0IF9zdGF0ZSgpOiAnY29sbGFwc2VkJyB8ICdtYW51YWxseS1leHBhbmRlZCcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnKSBhcyAnY29sbGFwc2VkJyB8ICdtYW51YWxseS1leHBhbmRlZCcgfCBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgIGNhbGxiYWNrOiAoKSA9PiB0aGlzLl9ldmFsdWF0ZUNvbGxhcHNlZFN0YXRlKCksXG4gIH0pO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX21hcmtGb3JGb2N1cyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdrZXlkb3duJywgKGUpID0+IHRoaXMuX2hhbmRsZUtleURvd24oZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlS2V5RG93bihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5saXN0Q2hpbGRyZW4ubGVuZ3RoIHx8XG4gICAgICAvLyBkb24ndCB0cmFwIG5lc3RlZCBoYW5kbGluZ1xuICAgICAgKChldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAhPT0gdGhpcyAmJiAoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudCAhPT0gdGhpcylcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNBcnJvd0tleVByZXNzZWQoZXZ0KSkge1xuICAgICAgaWYgKHRoaXMuX3N0YXRlID09PSAnY29sbGFwc2VkJykge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9jdXNOZXh0Q29sbGFwc2VkKGV2dCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9mb2N1c05leHQoZXZ0KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWxvYWRlZCcsIHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPFdpdGhMaXN0Q2hpbGRyZW48dGhpcz4+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdsaXN0Q2hpbGRyZW4nKSkge1xuICAgICAgdGhpcy5fc3luY0JyZWFkY3J1bWJzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPFdpdGhMaXN0Q2hpbGRyZW48dGhpcz4+KTogdm9pZCB7XG4gICAgc3VwZXIudXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbGlzdENoaWxkcmVuJykpIHtcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gdGhpcy5fZXZhbHVhdGVDb2xsYXBzZWRTdGF0ZSgpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX21hcmtGb3JGb2N1cyAmJiBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IubW9zdFJlY2VudE1vZGFsaXR5ID09PSAna2V5Ym9hcmQnKSB7XG4gICAgICB0aGlzLmxpc3RDaGlsZHJlblsxXT8uZm9jdXMoKTtcblxuICAgICAgLy8gUmVzZXQgbWFyayBmb3IgZm9jdXNcbiAgICAgIHRoaXMuX21hcmtGb3JGb2N1cyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBBcHBseSB0aGUgYXJpYS1jdXJyZW50IGF0dHJpYnV0ZSB0byB0aGUgbGFzdCBzYmItYnJlYWRjcnVtYiBlbGVtZW50LiAqL1xuICBwcml2YXRlIF9zeW5jQnJlYWRjcnVtYnMoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0Q2hpbGRyZW5cbiAgICAgIC5zbGljZSgwLCAtMSlcbiAgICAgIC5maWx0ZXIoKGMpID0+IGMuaGFzQXR0cmlidXRlKCdhcmlhLWN1cnJlbnQnKSlcbiAgICAgIC5mb3JFYWNoKChjKSA9PiBjLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1jdXJyZW50JykpO1xuICAgIHRoaXMubGlzdENoaWxkcmVuW3RoaXMubGlzdENoaWxkcmVuLmxlbmd0aCAtIDFdPy5zZXRBdHRyaWJ1dGUoJ2FyaWEtY3VycmVudCcsICdwYWdlJyk7XG5cbiAgICAvLyBJZiBpdCBpcyBub3QgZXhwYW5kYWJsZSwgcmVzZXQgc3RhdGVcbiAgICBpZiAodGhpcy5saXN0Q2hpbGRyZW4ubGVuZ3RoIDwgTUlOX0JSRUFEQ1JVTUJTX1RPX0NPTExBUFNFKSB7XG4gICAgICB0aGlzLl9zdGF0ZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGZvY3VzIG9uIHRoZSBjb3JyZWN0IGVsZW1lbnQgd2hlbiB0aGUgZWxsaXBzaXMgYnJlYWRjcnVtYiBpcyBkaXNwbGF5ZWQgYW5kIHRoZSB1c2VyIGlzIG5hdmlnYXRpbmcgd2l0aCBrZXlib2FyZCdzIGFycm93cy5cbiAgICovXG4gIHByaXZhdGUgX2ZvY3VzTmV4dENvbGxhcHNlZChldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBhcnJheUNvbGxhcHNlZDogU2JiQnJlYWRjcnVtYkVsZW1lbnRbXSA9IFtcbiAgICAgIHRoaXMubGlzdENoaWxkcmVuWzBdLFxuICAgICAgdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCcjc2JiLWJyZWFkY3J1bWItZWxsaXBzaXMnKSBhcyBTYmJCcmVhZGNydW1iRWxlbWVudCxcbiAgICAgIHRoaXMubGlzdENoaWxkcmVuW3RoaXMubGlzdENoaWxkcmVuLmxlbmd0aCAtIDFdLFxuICAgIF07XG4gICAgdGhpcy5fZm9jdXNOZXh0KGV2dCwgYXJyYXlDb2xsYXBzZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZm9jdXNOZXh0KFxuICAgIGV2dDogS2V5Ym9hcmRFdmVudCxcbiAgICBicmVhZGNydW1iczogU2JiQnJlYWRjcnVtYkVsZW1lbnRbXSA9IHRoaXMubGlzdENoaWxkcmVuLFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50OiBudW1iZXIgPSBicmVhZGNydW1icy5maW5kSW5kZXgoXG4gICAgICAoZSkgPT4gZSA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCB8fCBlID09PSB0aGlzLnNoYWRvd1Jvb3QhLmFjdGl2ZUVsZW1lbnQsXG4gICAgKTtcbiAgICBjb25zdCBuZXh0SW5kZXg6IG51bWJlciA9IGdldE5leHRFbGVtZW50SW5kZXgoZXZ0LCBjdXJyZW50LCBicmVhZGNydW1icy5sZW5ndGgpO1xuICAgIGJyZWFkY3J1bWJzW25leHRJbmRleF0/LmZvY3VzKCk7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogTm90ZTogZHVlIHRvIEBTdGF0ZSBhbm5vdGF0aW9uIG9uIF9zdGF0ZSwgdGhpcyBtZXRob2QgdHJpZ2dlcnMgYSBuZXcgcmVuZGVyOyBhcyBhIGNvbnNlcXVlbmNlLCB0aGUgZm9jdXMgaXMgbW92ZWRcbiAgICogdG8gdGhlIGBib2R5YCwgc28gaWYgdGhlIGVsbGlwc2lzIGVsZW1lbnQgaGFzIGZvY3VzLCBpdCdzIGFzeW5jaHJvbm91c2x5IGZvcmNlZCB0byB0aGUgZmlyc3QgZWxlbWVudC5cbiAgICovXG4gIHByaXZhdGUgX2V4cGFuZEJyZWFkY3J1bWJzKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlID0gJ21hbnVhbGx5LWV4cGFuZGVkJztcbiAgICB0aGlzLl9tYXJrRm9yRm9jdXMgPSB0cnVlO1xuICB9XG5cbiAgLyoqIEV2YWx1YXRlIGlmIHRoZSBleHBhbmRlZCBicmVhZGNydW1iIGVsZW1lbnQgZml0cyBpbiBwYWdlIHdpZHRoLCBvdGhlcndpc2UgaXQgbmVlZHMgZWxsaXBzaXMgKi9cbiAgcHJpdmF0ZSBfZXZhbHVhdGVDb2xsYXBzZWRTdGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5fc3RhdGUgJiZcbiAgICAgIHRoaXMuc2Nyb2xsV2lkdGggPiB0aGlzLm9mZnNldFdpZHRoICYmXG4gICAgICB0aGlzLmxpc3RDaGlsZHJlbi5sZW5ndGggPj0gTUlOX0JSRUFEQ1JVTUJTX1RPX0NPTExBUFNFXG4gICAgKSB7XG4gICAgICB0aGlzLl9zdGF0ZSA9ICdjb2xsYXBzZWQnO1xuICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIuaG9zdERpc2Nvbm5lY3RlZCgpO1xuICAgICAgdGhpcy5yZW1vdmVDb250cm9sbGVyKHRoaXMuX3Jlc2l6ZU9ic2VydmVyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJDb2xsYXBzZWQoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGxpIGNsYXNzPVwic2JiLWJyZWFkY3J1bWItZ3JvdXBfX2l0ZW1cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cImxpLTBcIj48L3Nsb3Q+XG4gICAgICA8L2xpPlxuICAgICAgPGxpIGNsYXNzPVwic2JiLWJyZWFkY3J1bWItZ3JvdXBfX2l0ZW1cIiBpZD1cInNiYi1icmVhZGNydW1iLWdyb3VwLWVsbGlwc2lzXCI+XG4gICAgICAgIDxzYmItaWNvblxuICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLXNtYWxsLXJpZ2h0LXNtYWxsXCJcbiAgICAgICAgICBjbGFzcz1cInNiYi1icmVhZGNydW1iLWdyb3VwX19kaXZpZGVyLWljb25cIlxuICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGlkPVwic2JiLWJyZWFkY3J1bWItZWxsaXBzaXNcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9JHtpMThuQnJlYWRjcnVtYkVsbGlwc2lzQnV0dG9uTGFiZWxbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgICAgICBAY2xpY2s9JHsoKSA9PiB0aGlzLl9leHBhbmRCcmVhZGNydW1icygpfVxuICAgICAgICA+XG4gICAgICAgICAgLi4uXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBjbGFzcz1cInNiYi1icmVhZGNydW1iLWdyb3VwX19pdGVtXCI+XG4gICAgICAgIDxzYmItaWNvblxuICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLXNtYWxsLXJpZ2h0LXNtYWxsXCJcbiAgICAgICAgICBjbGFzcz1cInNiYi1icmVhZGNydW1iLWdyb3VwX19kaXZpZGVyLWljb25cIlxuICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgPHNsb3QgbmFtZT0ke2BsaS0ke3RoaXMubGlzdENoaWxkcmVuLmxlbmd0aCAtIDF9YH0+PC9zbG90PlxuICAgICAgPC9saT5cbiAgICBgO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyRXhwYW5kZWQoKTogVGVtcGxhdGVSZXN1bHRbXSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdFNsb3RFbnRyaWVzKCkubWFwKFxuICAgICAgKHNsb3QsIGluZGV4LCBhcnJheSkgPT4gaHRtbGBcbiAgICAgICAgPGxpIGNsYXNzPVwic2JiLWJyZWFkY3J1bWItZ3JvdXBfX2l0ZW1cIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPSR7c2xvdC5uYW1lfT48L3Nsb3Q+XG4gICAgICAgICAgJHtpbmRleCAhPT0gYXJyYXkubGVuZ3RoIC0gMVxuICAgICAgICAgICAgPyBodG1sYDxzYmItaWNvblxuICAgICAgICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLXNtYWxsLXJpZ2h0LXNtYWxsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi1icmVhZGNydW1iLWdyb3VwX19kaXZpZGVyLWljb25cIlxuICAgICAgICAgICAgICA+PC9zYmItaWNvbj5gXG4gICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgIDwvbGk+XG4gICAgICBgLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxvbCBjbGFzcz1cInNiYi1icmVhZGNydW1iLWdyb3VwXCI+XG4gICAgICAgICR7dGhpcy5fc3RhdGUgPT09ICdjb2xsYXBzZWQnID8gdGhpcy5fcmVuZGVyQ29sbGFwc2VkKCkgOiB0aGlzLl9yZW5kZXJFeHBhbmRlZCgpfVxuICAgICAgPC9vbD5cbiAgICAgICR7dGhpcy5yZW5kZXJIaWRkZW5TbG90KCl9XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWJyZWFkY3J1bWItZ3JvdXAnOiBTYmJCcmVhZGNydW1iR3JvdXBFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsic3RhdGUiLCJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEyQkEsTUFBTSw4QkFBOEI7SUFZOUIsNkJBQXlCLE1BQUE7O0FBSjlCLE1BQUEsbUJBQUEsQ0FB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
281
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1ncm91cC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi1ncm91cC9icmVhZGNydW1iLWdyb3VwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc2l6ZUNvbnRyb2xsZXIgfSBmcm9tICdAbGl0LWxhYnMvb2JzZXJ2ZXJzL3Jlc2l6ZS1jb250cm9sbGVyLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIExpdEVsZW1lbnQsXG4gIG5vdGhpbmcsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHtcbiAgZ2V0TmV4dEVsZW1lbnRJbmRleCxcbiAgaXNBcnJvd0tleVByZXNzZWQsXG4gIHNiYklucHV0TW9kYWxpdHlEZXRlY3Rvcixcbn0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgc2V0T3JSZW1vdmVBdHRyaWJ1dGUgfSBmcm9tICcuLi8uLi9jb3JlL2RvbS5qcyc7XG5pbXBvcnQgeyBpMThuQnJlYWRjcnVtYkVsbGlwc2lzQnV0dG9uTGFiZWwgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiTmFtZWRTbG90TGlzdE1peGluLCB0eXBlIFdpdGhMaXN0Q2hpbGRyZW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkJyZWFkY3J1bWJFbGVtZW50IH0gZnJvbSAnLi4vYnJlYWRjcnVtYi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2JyZWFkY3J1bWItZ3JvdXAuc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICcuLi8uLi9pY29uLmpzJztcblxuY29uc3QgTUlOX0JSRUFEQ1JVTUJTX1RPX0NPTExBUFNFID0gMztcblxuLyoqXG4gKiBJdCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRhaW5lciBmb3Igb25lIG9yIG1vcmUgYHNiYi1icmVhZGNydW1iYCBjb21wb25lbnQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1icmVhZGNydW1iYCBlbGVtZW50cy5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWJyZWFkY3J1bWItZ3JvdXAnKVxuQGhvc3RBdHRyaWJ1dGVzKHtcbiAgcm9sZTogJ25hdmlnYXRpb24nLFxufSlcbmNsYXNzIFNiYkJyZWFkY3J1bWJHcm91cEVsZW1lbnQgZXh0ZW5kcyBTYmJOYW1lZFNsb3RMaXN0TWl4aW48XG4gIFNiYkJyZWFkY3J1bWJFbGVtZW50LFxuICB0eXBlb2YgTGl0RWxlbWVudFxuPihMaXRFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgbGlzdENoaWxkTG9jYWxOYW1lcyA9IFsnc2JiLWJyZWFkY3J1bWInXTtcblxuICAvKiBUaGUgc3RhdGUgb2YgdGhlIGJyZWFkY3J1bWIgZ3JvdXAuICovXG4gIEBzdGF0ZSgpXG4gIHByaXZhdGUgc2V0IF9zdGF0ZShzdGF0ZTogJ2NvbGxhcHNlZCcgfCAnbWFudWFsbHktZXhwYW5kZWQnIHwgbnVsbCkge1xuICAgIHNldE9yUmVtb3ZlQXR0cmlidXRlKHRoaXMsICdkYXRhLXN0YXRlJywgc3RhdGUpO1xuICB9XG4gIHByaXZhdGUgZ2V0IF9zdGF0ZSgpOiAnY29sbGFwc2VkJyB8ICdtYW51YWxseS1leHBhbmRlZCcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnKSBhcyAnY29sbGFwc2VkJyB8ICdtYW51YWxseS1leHBhbmRlZCcgfCBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgIGNhbGxiYWNrOiAoKSA9PiB0aGlzLl9ldmFsdWF0ZUNvbGxhcHNlZFN0YXRlKCksXG4gIH0pO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX21hcmtGb3JGb2N1cyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdrZXlkb3duJywgKGUpID0+IHRoaXMuX2hhbmRsZUtleURvd24oZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlS2V5RG93bihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5saXN0Q2hpbGRyZW4ubGVuZ3RoIHx8XG4gICAgICAvLyBkb24ndCB0cmFwIG5lc3RlZCBoYW5kbGluZ1xuICAgICAgKChldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAhPT0gdGhpcyAmJiAoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudCAhPT0gdGhpcylcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNBcnJvd0tleVByZXNzZWQoZXZ0KSkge1xuICAgICAgaWYgKHRoaXMuX3N0YXRlID09PSAnY29sbGFwc2VkJykge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9jdXNOZXh0Q29sbGFwc2VkKGV2dCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9mb2N1c05leHQoZXZ0KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWxvYWRlZCcsIHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPFdpdGhMaXN0Q2hpbGRyZW48dGhpcz4+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdsaXN0Q2hpbGRyZW4nKSkge1xuICAgICAgdGhpcy5fc3luY0JyZWFkY3J1bWJzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPFdpdGhMaXN0Q2hpbGRyZW48dGhpcz4+KTogdm9pZCB7XG4gICAgc3VwZXIudXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbGlzdENoaWxkcmVuJykpIHtcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gdGhpcy5fZXZhbHVhdGVDb2xsYXBzZWRTdGF0ZSgpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX21hcmtGb3JGb2N1cyAmJiBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IubW9zdFJlY2VudE1vZGFsaXR5ID09PSAna2V5Ym9hcmQnKSB7XG4gICAgICB0aGlzLmxpc3RDaGlsZHJlblsxXT8uZm9jdXMoKTtcblxuICAgICAgLy8gUmVzZXQgbWFyayBmb3IgZm9jdXNcbiAgICAgIHRoaXMuX21hcmtGb3JGb2N1cyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBBcHBseSB0aGUgYXJpYS1jdXJyZW50IGF0dHJpYnV0ZSB0byB0aGUgbGFzdCBzYmItYnJlYWRjcnVtYiBlbGVtZW50LiAqL1xuICBwcml2YXRlIF9zeW5jQnJlYWRjcnVtYnMoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0Q2hpbGRyZW5cbiAgICAgIC5zbGljZSgwLCAtMSlcbiAgICAgIC5maWx0ZXIoKGMpID0+IGMuaGFzQXR0cmlidXRlKCdhY2Nlc3NpYmlsaXR5LWN1cnJlbnQnKSlcbiAgICAgIC5mb3JFYWNoKChjKSA9PiBjLnJlbW92ZUF0dHJpYnV0ZSgnYWNjZXNzaWJpbGl0eS1jdXJyZW50JykpO1xuICAgIHRoaXMubGlzdENoaWxkcmVuW3RoaXMubGlzdENoaWxkcmVuLmxlbmd0aCAtIDFdPy5zZXRBdHRyaWJ1dGUoJ2FjY2Vzc2liaWxpdHktY3VycmVudCcsICdwYWdlJyk7XG5cbiAgICAvLyBJZiBpdCBpcyBub3QgZXhwYW5kYWJsZSwgcmVzZXQgc3RhdGVcbiAgICBpZiAodGhpcy5saXN0Q2hpbGRyZW4ubGVuZ3RoIDwgTUlOX0JSRUFEQ1JVTUJTX1RPX0NPTExBUFNFKSB7XG4gICAgICB0aGlzLl9zdGF0ZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGZvY3VzIG9uIHRoZSBjb3JyZWN0IGVsZW1lbnQgd2hlbiB0aGUgZWxsaXBzaXMgYnJlYWRjcnVtYiBpcyBkaXNwbGF5ZWQgYW5kIHRoZSB1c2VyIGlzIG5hdmlnYXRpbmcgd2l0aCBrZXlib2FyZCdzIGFycm93cy5cbiAgICovXG4gIHByaXZhdGUgX2ZvY3VzTmV4dENvbGxhcHNlZChldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBhcnJheUNvbGxhcHNlZDogU2JiQnJlYWRjcnVtYkVsZW1lbnRbXSA9IFtcbiAgICAgIHRoaXMubGlzdENoaWxkcmVuWzBdLFxuICAgICAgdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCcjc2JiLWJyZWFkY3J1bWItZWxsaXBzaXMnKSBhcyBTYmJCcmVhZGNydW1iRWxlbWVudCxcbiAgICAgIHRoaXMubGlzdENoaWxkcmVuW3RoaXMubGlzdENoaWxkcmVuLmxlbmd0aCAtIDFdLFxuICAgIF07XG4gICAgdGhpcy5fZm9jdXNOZXh0KGV2dCwgYXJyYXlDb2xsYXBzZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZm9jdXNOZXh0KFxuICAgIGV2dDogS2V5Ym9hcmRFdmVudCxcbiAgICBicmVhZGNydW1iczogU2JiQnJlYWRjcnVtYkVsZW1lbnRbXSA9IHRoaXMubGlzdENoaWxkcmVuLFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50OiBudW1iZXIgPSBicmVhZGNydW1icy5maW5kSW5kZXgoXG4gICAgICAoZSkgPT4gZSA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCB8fCBlID09PSB0aGlzLnNoYWRvd1Jvb3QhLmFjdGl2ZUVsZW1lbnQsXG4gICAgKTtcbiAgICBjb25zdCBuZXh0SW5kZXg6IG51bWJlciA9IGdldE5leHRFbGVtZW50SW5kZXgoZXZ0LCBjdXJyZW50LCBicmVhZGNydW1icy5sZW5ndGgpO1xuICAgIGJyZWFkY3J1bWJzW25leHRJbmRleF0/LmZvY3VzKCk7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogTm90ZTogZHVlIHRvIEBTdGF0ZSBhbm5vdGF0aW9uIG9uIF9zdGF0ZSwgdGhpcyBtZXRob2QgdHJpZ2dlcnMgYSBuZXcgcmVuZGVyOyBhcyBhIGNvbnNlcXVlbmNlLCB0aGUgZm9jdXMgaXMgbW92ZWRcbiAgICogdG8gdGhlIGBib2R5YCwgc28gaWYgdGhlIGVsbGlwc2lzIGVsZW1lbnQgaGFzIGZvY3VzLCBpdCdzIGFzeW5jaHJvbm91c2x5IGZvcmNlZCB0byB0aGUgZmlyc3QgZWxlbWVudC5cbiAgICovXG4gIHByaXZhdGUgX2V4cGFuZEJyZWFkY3J1bWJzKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlID0gJ21hbnVhbGx5LWV4cGFuZGVkJztcbiAgICB0aGlzLl9tYXJrRm9yRm9jdXMgPSB0cnVlO1xuICB9XG5cbiAgLyoqIEV2YWx1YXRlIGlmIHRoZSBleHBhbmRlZCBicmVhZGNydW1iIGVsZW1lbnQgZml0cyBpbiBwYWdlIHdpZHRoLCBvdGhlcndpc2UgaXQgbmVlZHMgZWxsaXBzaXMgKi9cbiAgcHJpdmF0ZSBfZXZhbHVhdGVDb2xsYXBzZWRTdGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5fc3RhdGUgJiZcbiAgICAgIHRoaXMuc2Nyb2xsV2lkdGggPiB0aGlzLm9mZnNldFdpZHRoICYmXG4gICAgICB0aGlzLmxpc3RDaGlsZHJlbi5sZW5ndGggPj0gTUlOX0JSRUFEQ1JVTUJTX1RPX0NPTExBUFNFXG4gICAgKSB7XG4gICAgICB0aGlzLl9zdGF0ZSA9ICdjb2xsYXBzZWQnO1xuICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIuaG9zdERpc2Nvbm5lY3RlZCgpO1xuICAgICAgdGhpcy5yZW1vdmVDb250cm9sbGVyKHRoaXMuX3Jlc2l6ZU9ic2VydmVyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJDb2xsYXBzZWQoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGxpIGNsYXNzPVwic2JiLWJyZWFkY3J1bWItZ3JvdXBfX2l0ZW1cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cImxpLTBcIj48L3Nsb3Q+XG4gICAgICA8L2xpPlxuICAgICAgPGxpIGNsYXNzPVwic2JiLWJyZWFkY3J1bWItZ3JvdXBfX2l0ZW1cIiBpZD1cInNiYi1icmVhZGNydW1iLWdyb3VwLWVsbGlwc2lzXCI+XG4gICAgICAgIDxzYmItaWNvblxuICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLXNtYWxsLXJpZ2h0LXNtYWxsXCJcbiAgICAgICAgICBjbGFzcz1cInNiYi1icmVhZGNydW1iLWdyb3VwX19kaXZpZGVyLWljb25cIlxuICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGlkPVwic2JiLWJyZWFkY3J1bWItZWxsaXBzaXNcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9JHtpMThuQnJlYWRjcnVtYkVsbGlwc2lzQnV0dG9uTGFiZWxbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgICAgICBAY2xpY2s9JHsoKSA9PiB0aGlzLl9leHBhbmRCcmVhZGNydW1icygpfVxuICAgICAgICA+XG4gICAgICAgICAgLi4uXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBjbGFzcz1cInNiYi1icmVhZGNydW1iLWdyb3VwX19pdGVtXCI+XG4gICAgICAgIDxzYmItaWNvblxuICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLXNtYWxsLXJpZ2h0LXNtYWxsXCJcbiAgICAgICAgICBjbGFzcz1cInNiYi1icmVhZGNydW1iLWdyb3VwX19kaXZpZGVyLWljb25cIlxuICAgICAgICA+PC9zYmItaWNvbj5cbiAgICAgICAgPHNsb3QgbmFtZT0ke2BsaS0ke3RoaXMubGlzdENoaWxkcmVuLmxlbmd0aCAtIDF9YH0+PC9zbG90PlxuICAgICAgPC9saT5cbiAgICBgO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyRXhwYW5kZWQoKTogVGVtcGxhdGVSZXN1bHRbXSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdFNsb3RFbnRyaWVzKCkubWFwKFxuICAgICAgKHNsb3QsIGluZGV4LCBhcnJheSkgPT4gaHRtbGBcbiAgICAgICAgPGxpIGNsYXNzPVwic2JiLWJyZWFkY3J1bWItZ3JvdXBfX2l0ZW1cIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPSR7c2xvdC5uYW1lfT48L3Nsb3Q+XG4gICAgICAgICAgJHtpbmRleCAhPT0gYXJyYXkubGVuZ3RoIC0gMVxuICAgICAgICAgICAgPyBodG1sYDxzYmItaWNvblxuICAgICAgICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLXNtYWxsLXJpZ2h0LXNtYWxsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi1icmVhZGNydW1iLWdyb3VwX19kaXZpZGVyLWljb25cIlxuICAgICAgICAgICAgICA+PC9zYmItaWNvbj5gXG4gICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgIDwvbGk+XG4gICAgICBgLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxvbCBjbGFzcz1cInNiYi1icmVhZGNydW1iLWdyb3VwXCI+XG4gICAgICAgICR7dGhpcy5fc3RhdGUgPT09ICdjb2xsYXBzZWQnID8gdGhpcy5fcmVuZGVyQ29sbGFwc2VkKCkgOiB0aGlzLl9yZW5kZXJFeHBhbmRlZCgpfVxuICAgICAgPC9vbD5cbiAgICAgICR7dGhpcy5yZW5kZXJIaWRkZW5TbG90KCl9XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWJyZWFkY3J1bWItZ3JvdXAnOiBTYmJCcmVhZGNydW1iR3JvdXBFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsic3RhdGUiLCJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEyQkEsTUFBTSw4QkFBOEI7SUFZOUIsNkJBQXlC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