@sbb-esta/lyne-elements 5.0.0-next → 5.0.0-next.1

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 (984) hide show
  1. package/action-group/action-group.component.js +1 -1
  2. package/{action-group.component-L7G0Vv-N.js → action-group.component-B6X5FjkQ.js} +25 -25
  3. package/action-group.js +1 -1
  4. package/action-group.pure.js +1 -1
  5. package/alert/alert/alert.component.js +1 -1
  6. package/alert/alert-group/alert-group.component.js +1 -1
  7. package/{alert-group.component-CAjj3FtE.js → alert-group.component-BCYOVicl.js} +5 -7
  8. package/alert.component-BQsF0R1M.js +161 -0
  9. package/alert.js +2 -2
  10. package/alert.pure.js +2 -2
  11. package/autocomplete/autocomplete-base-element.js +1 -1
  12. package/autocomplete/autocomplete.component.js +3 -2
  13. package/{autocomplete-base-element-BysEZecQ.js → autocomplete-base-element-CSCv_WVh.js} +14 -9
  14. package/autocomplete.js +1 -1
  15. package/autocomplete.pure.js +1 -1
  16. package/{block-link-common-CDrCAdGP.js → block-link-common-BiM6tnUZ.js} +1 -1
  17. package/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
  18. package/{breadcrumb-group.component-Bfm4RZu7.js → breadcrumb-group.component-De3Lu3lx.js} +1 -1
  19. package/breadcrumb.js +1 -1
  20. package/breadcrumb.pure.js +1 -1
  21. package/button/common/button-common.js +1 -1
  22. package/button-common-U0ZsZMjC.js +85 -0
  23. package/button.js +1 -1
  24. package/button.pure.js +1 -1
  25. package/calendar/calendar/calendar.component.js +1 -1
  26. package/{calendar.component-D6mdi1Q3.js → calendar.component-nWdtZYqg.js} +3 -3
  27. package/calendar.js +1 -1
  28. package/calendar.pure.js +1 -1
  29. package/card/card-badge/card-badge.component.js +1 -1
  30. package/{card-badge.component-CsEpGTHm.js → card-badge.component-CEqox6TU.js} +1 -1
  31. package/card.js +1 -1
  32. package/card.pure.js +1 -1
  33. package/checkbox/checkbox.component.js +1 -1
  34. package/checkbox/common/checkbox-common.js +1 -1
  35. package/{checkbox-common-Bo4u1RXX.js → checkbox-common-DSmxKbmR.js} +1 -1
  36. package/{checkbox.component-vjqZh2aC.js → checkbox.component-CR2aIgjA.js} +1 -1
  37. package/checkbox.js +2 -2
  38. package/checkbox.pure.js +2 -2
  39. package/chip/chip-group/chip-group.component.js +1 -1
  40. package/{chip-group.component-DPzfaV_H.js → chip-group.component-DbNctvjy.js} +1 -1
  41. package/chip-label/chip-label.component.js +1 -1
  42. package/chip-label.component-zRiHSxbn.js +77 -0
  43. package/chip-label.js +1 -1
  44. package/chip-label.pure.js +1 -1
  45. package/chip.js +1 -1
  46. package/chip.pure.js +1 -1
  47. package/{compact-paginator.component-DEEhXiMm.js → compact-paginator.component-Dyu9bezr.js} +1 -1
  48. package/core/controllers/overlay-position-controller.js +4 -1
  49. package/core/mixins/named-slot-list-mixin.js +4 -1
  50. package/core/overlay/overlay-trigger-attributes.js +3 -3
  51. package/core/styles/_index.scss +0 -1
  52. package/core/styles/core.scss +81 -78
  53. package/core/styles/host-scrollbar.scss +6 -0
  54. package/core/styles/mixins/helpers.scss +3 -3
  55. package/core/styles/mixins/overlay.scss +2 -2
  56. package/core/styles/mixins/panel.scss +5 -1
  57. package/core/styles/mixins/scrollbar.scss +5 -8
  58. package/core/styles/mixins/typo.scss +2 -2
  59. package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables-as-css.scss +8 -0
  60. package/core/styles/scrollbar.scss +10 -8
  61. package/core/styles/styles.js +2 -2
  62. package/core.css +266 -85
  63. package/core.js +3 -3
  64. package/custom-elements.json +1359 -740
  65. package/datepicker/datepicker/datepicker.component.js +1 -1
  66. package/{datepicker.component-BBmEvmW3.js → datepicker.component-CNQGkdr-.js} +11 -11
  67. package/datepicker.js +1 -1
  68. package/datepicker.pure.js +1 -1
  69. package/development/accordion/accordion.component.d.ts.map +1 -1
  70. package/development/accordion.component-DGUoG6p2.js +1 -1
  71. package/development/action-group/action-group.component.d.ts +2 -4
  72. package/development/action-group/action-group.component.d.ts.map +1 -1
  73. package/development/action-group/action-group.component.js +1 -1
  74. package/development/{action-group.component-CJT4RArG.js → action-group.component-9Bkne2tt.js} +6 -6
  75. package/development/action-group.js +1 -1
  76. package/development/action-group.pure.js +1 -1
  77. package/development/alert/alert/alert.component.d.ts +2 -1
  78. package/development/alert/alert/alert.component.d.ts.map +1 -1
  79. package/development/alert/alert/alert.component.js +1 -1
  80. package/development/alert/alert-group/alert-group.component.d.ts.map +1 -1
  81. package/development/alert/alert-group/alert-group.component.js +1 -1
  82. package/development/alert-group.component-D4KxKTd2.js +186 -0
  83. package/development/alert.component-Pv-Ol6XU.js +213 -0
  84. package/development/alert.js +2 -2
  85. package/development/alert.pure.js +2 -2
  86. package/development/autocomplete/autocomplete-base-element.d.ts +8 -1
  87. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  88. package/development/autocomplete/autocomplete-base-element.js +1 -1
  89. package/development/autocomplete/autocomplete.component.js +4 -3
  90. package/development/autocomplete-base-element-Bwkns3IL.js +686 -0
  91. package/development/autocomplete.js +1 -1
  92. package/development/autocomplete.pure.js +1 -1
  93. package/development/{block-link-common-CwurjMj1.js → block-link-common-qMULXu4g.js} +2 -2
  94. package/development/breadcrumb/breadcrumb/breadcrumb.component.d.ts.map +1 -1
  95. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.d.ts.map +1 -1
  96. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.component.js +1 -1
  97. package/development/breadcrumb-group.component-BC1mWiQE.js +193 -0
  98. package/development/breadcrumb.component-BLxRIaje.js +1 -1
  99. package/development/breadcrumb.js +1 -1
  100. package/development/breadcrumb.pure.js +1 -1
  101. package/development/button/accent-button/accent-button.component.d.ts.map +1 -1
  102. package/development/button/accent-button/accent-button.component.js +1 -1
  103. package/development/button/accent-button-link/accent-button-link.component.d.ts.map +1 -1
  104. package/development/button/accent-button-link/accent-button-link.component.js +1 -1
  105. package/development/button/accent-button-static/accent-button-static.component.d.ts.map +1 -1
  106. package/development/button/accent-button-static/accent-button-static.component.js +1 -1
  107. package/development/button/button/button.component.d.ts.map +1 -1
  108. package/development/button/button/button.component.js +1 -1
  109. package/development/button/button-link/button-link.component.d.ts.map +1 -1
  110. package/development/button/button-link/button-link.component.js +1 -1
  111. package/development/button/button-static/button-static.component.d.ts.map +1 -1
  112. package/development/button/button-static/button-static.component.js +1 -1
  113. package/development/button/common/button-common.d.ts +1 -1
  114. package/development/button/common/button-common.d.ts.map +1 -1
  115. package/development/button/common/button-common.js +1 -1
  116. package/development/button/mini-button/mini-button.component.d.ts.map +1 -1
  117. package/development/button/mini-button/mini-button.component.js +1 -1
  118. package/development/button/mini-button-group/mini-button-group.component.d.ts.map +1 -1
  119. package/development/button/mini-button-link/mini-button-link.component.d.ts.map +1 -1
  120. package/development/button/secondary-button/secondary-button.component.d.ts.map +1 -1
  121. package/development/button/secondary-button/secondary-button.component.js +1 -1
  122. package/development/button/secondary-button-link/secondary-button-link.component.d.ts.map +1 -1
  123. package/development/button/secondary-button-link/secondary-button-link.component.js +1 -1
  124. package/development/button/secondary-button-static/secondary-button-static.component.d.ts.map +1 -1
  125. package/development/button/secondary-button-static/secondary-button-static.component.js +1 -1
  126. package/development/button/transparent-button/transparent-button.component.d.ts.map +1 -1
  127. package/development/button/transparent-button/transparent-button.component.js +1 -1
  128. package/development/button/transparent-button-link/transparent-button-link.component.d.ts.map +1 -1
  129. package/development/button/transparent-button-link/transparent-button-link.component.js +1 -1
  130. package/development/button/transparent-button-static/transparent-button-static.component.d.ts.map +1 -1
  131. package/development/button/transparent-button-static/transparent-button-static.component.js +1 -1
  132. package/development/{button-common-jaQVRdwS.js → button-common-BdW88MAX.js} +5 -5
  133. package/development/button.js +1 -1
  134. package/development/button.pure.js +1 -1
  135. package/development/calendar/calendar/calendar.component.d.ts.map +1 -1
  136. package/development/calendar/calendar/calendar.component.js +1 -1
  137. package/development/calendar/calendar-day/calendar-day.component.d.ts.map +1 -1
  138. package/development/calendar/calendar-month/calendar-month.component.d.ts.map +1 -1
  139. package/development/calendar/calendar-month/calendar-month.component.js +1 -1
  140. package/development/calendar/calendar-weekday/calendar-weekday.component.d.ts.map +1 -1
  141. package/development/calendar/calendar-weekday/calendar-weekday.component.js +1 -1
  142. package/development/calendar/calendar-weeknumber/calendar-weeknumber.component.d.ts.map +1 -1
  143. package/development/calendar/calendar-weeknumber/calendar-weeknumber.component.js +1 -1
  144. package/development/calendar/calendar-year/calendar-year.component.d.ts.map +1 -1
  145. package/development/calendar/calendar-year/calendar-year.component.js +1 -1
  146. package/development/calendar/common/calendar-cell-base-element.d.ts +1 -1
  147. package/development/calendar/common/calendar-cell-base-element.d.ts.map +1 -1
  148. package/development/calendar-cell-base-element-DDNYX7UQ.js +1 -1
  149. package/development/calendar-day.component-CnNml44_.js +1 -1
  150. package/development/calendar.component-B5dz7mau.js +1451 -0
  151. package/development/calendar.js +2 -2
  152. package/development/calendar.pure.js +1 -1
  153. package/development/card/card/card.component.d.ts.map +1 -1
  154. package/development/card/card-badge/card-badge.component.d.ts.map +1 -1
  155. package/development/card/card-badge/card-badge.component.js +1 -1
  156. package/development/card/common/card-action-common.d.ts.map +1 -1
  157. package/development/card-action-common-HYrFMTkA.js +1 -1
  158. package/development/card-badge.component-CQBLpmpo.js +83 -0
  159. package/development/card.component-B2cQYSCD.js +1 -1
  160. package/development/card.js +2 -2
  161. package/development/card.pure.js +1 -1
  162. package/development/carousel/carousel/carousel.component.d.ts.map +1 -1
  163. package/development/carousel/carousel-item/carousel-item.component.d.ts.map +1 -1
  164. package/development/carousel/carousel-list/carousel-list.component.d.ts.map +1 -1
  165. package/development/carousel-item.component-MZIypyNR.js +1 -1
  166. package/development/carousel-list.component-z40-4ANn.js +1 -1
  167. package/development/carousel.component-BHYBvOm7.js +1 -1
  168. package/development/checkbox/checkbox.component.d.ts +1 -1
  169. package/development/checkbox/checkbox.component.d.ts.map +1 -1
  170. package/development/checkbox/checkbox.component.js +1 -1
  171. package/development/checkbox/common/checkbox-common.d.ts +1 -1
  172. package/development/checkbox/common/checkbox-common.d.ts.map +1 -1
  173. package/development/checkbox/common/checkbox-common.js +1 -1
  174. package/development/checkbox-common-DOoEKgML.js +84 -0
  175. package/development/checkbox-group/checkbox-group.component.js +1 -1
  176. package/development/checkbox-panel/checkbox-panel.component.d.ts.map +1 -1
  177. package/development/checkbox-panel/checkbox-panel.component.js +1 -1
  178. package/development/{checkbox.component-DgrfkdyZ.js → checkbox.component-DZjhQhbB.js} +2 -2
  179. package/development/checkbox.js +2 -2
  180. package/development/checkbox.pure.js +2 -2
  181. package/development/chip/chip/chip.component.d.ts.map +1 -1
  182. package/development/chip/chip-group/chip-group.component.d.ts +1 -1
  183. package/development/chip/chip-group/chip-group.component.d.ts.map +1 -1
  184. package/development/chip/chip-group/chip-group.component.js +1 -1
  185. package/development/chip-group.component-B4Mjcep2.js +402 -0
  186. package/development/chip-label/chip-label.component.d.ts +1 -1
  187. package/development/chip-label/chip-label.component.d.ts.map +1 -1
  188. package/development/chip-label/chip-label.component.js +1 -1
  189. package/development/chip-label.component-Cx8mfi0y.js +100 -0
  190. package/development/chip-label.js +1 -1
  191. package/development/chip-label.pure.js +1 -1
  192. package/development/chip.component-zwTaIBf2.js +1 -1
  193. package/development/chip.js +1 -1
  194. package/development/chip.pure.js +1 -1
  195. package/development/clock/clock.component.d.ts.map +1 -1
  196. package/development/clock.component-EqFTxYod.js +1 -1
  197. package/development/compact-paginator.component-CRojCci5.js +51 -0
  198. package/development/container/container/container.component.d.ts.map +1 -1
  199. package/development/container/sticky-bar/sticky-bar.component.d.ts.map +1 -1
  200. package/development/container.component-CM10qyHy.js +1 -1
  201. package/development/core/a11y/input-modality-detector.js +1 -1
  202. package/development/core/base-elements/button-base-element.d.ts +1 -1
  203. package/development/core/base-elements/button-base-element.d.ts.map +1 -1
  204. package/development/core/base-elements/button-base-element.js +1 -1
  205. package/development/core/base-elements/element.js +1 -1
  206. package/development/core/base-elements/selection-group-base-element.d.ts.map +1 -1
  207. package/development/core/controllers/media-matchers-controller.js +1 -1
  208. package/development/core/controllers/overlay-position-controller.js +3 -2
  209. package/development/core/controllers/property-watcher-controller.d.ts +1 -1
  210. package/development/core/controllers/property-watcher-controller.d.ts.map +1 -1
  211. package/development/core/controllers/property-watcher-controller.js +1 -1
  212. package/development/core/datetime/date-adapter.js +1 -1
  213. package/development/core/datetime/native-date-adapter.js +1 -1
  214. package/development/core/datetime/temporal-date-adapter.js +1 -1
  215. package/development/core/decorators/omit-empty-converter.d.ts.map +1 -1
  216. package/development/core/decorators/omit-empty-converter.js +1 -1
  217. package/development/core/eventing/throttle.d.ts +1 -0
  218. package/development/core/eventing/throttle.d.ts.map +1 -1
  219. package/development/core/eventing/throttle.js +2 -1
  220. package/development/core/mixins/disabled-mixin.js +1 -1
  221. package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  222. package/development/core/mixins/form-associated-checkbox-mixin.js +1 -1
  223. package/development/core/mixins/form-associated-input-mixin.js +1 -1
  224. package/development/core/mixins/form-associated-mixin.js +1 -1
  225. package/development/core/mixins/form-associated-radio-button-mixin.js +1 -1
  226. package/development/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  227. package/development/core/mixins/named-slot-list-mixin.js +5 -2
  228. package/development/core/mixins/negative-mixin.js +1 -1
  229. package/development/core/mixins/panel-mixin.d.ts.map +1 -1
  230. package/development/core/mixins/readonly-mixin.js +1 -1
  231. package/development/core/mixins/required-mixin.js +1 -1
  232. package/development/core/overlay/overlay-trigger-attributes.d.ts +4 -4
  233. package/development/core/overlay/overlay-trigger-attributes.d.ts.map +1 -1
  234. package/development/core/overlay/overlay-trigger-attributes.js +12 -12
  235. package/development/core/screen-reader-only/screen-reader-only.component.d.ts.map +1 -1
  236. package/development/core/styles/styles.d.ts +1 -0
  237. package/development/core/styles/styles.d.ts.map +1 -1
  238. package/development/core/styles/styles.js +2 -2
  239. package/development/core/testing/event-spy.js +1 -1
  240. package/development/core.js +3 -3
  241. package/development/date-input/date-input.component.d.ts.map +1 -1
  242. package/development/date-input.component-osVJFOS-.js +1 -1
  243. package/development/datepicker/common/datepicker-button.d.ts +8 -2
  244. package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
  245. package/development/datepicker/common/datepicker-button.js +1 -1
  246. package/development/datepicker/datepicker/datepicker.component.d.ts +3 -0
  247. package/development/datepicker/datepicker/datepicker.component.d.ts.map +1 -1
  248. package/development/datepicker/datepicker/datepicker.component.js +1 -1
  249. package/development/datepicker/datepicker-next-day/datepicker-next-day.component.js +1 -1
  250. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.component.js +1 -1
  251. package/development/datepicker/datepicker-toggle/datepicker-toggle.component.js +1 -1
  252. package/development/datepicker-button-BI5R118p.js +166 -0
  253. package/development/datepicker.component-Chnvwnp7.js +212 -0
  254. package/development/datepicker.js +2 -2
  255. package/development/datepicker.pure.js +2 -2
  256. package/development/dialog/dialog/dialog.component.d.ts +0 -1
  257. package/development/dialog/dialog/dialog.component.d.ts.map +1 -1
  258. package/development/dialog/dialog/dialog.component.js +1 -1
  259. package/development/dialog/dialog-actions/dialog-actions.component.d.ts +0 -1
  260. package/development/dialog/dialog-actions/dialog-actions.component.d.ts.map +1 -1
  261. package/development/dialog/dialog-actions/dialog-actions.component.js +1 -1
  262. package/development/dialog/dialog-close-button/dialog-close-button.component.d.ts.map +1 -1
  263. package/development/dialog/dialog-content/dialog-content.component.d.ts +1 -0
  264. package/development/dialog/dialog-content/dialog-content.component.d.ts.map +1 -1
  265. package/development/dialog/dialog-content/dialog-content.component.js +1 -1
  266. package/development/dialog/dialog-title/dialog-title.component.d.ts.map +1 -1
  267. package/development/{dialog-actions.component-DErVa4WR.js → dialog-actions.component-Bu950dM-.js} +1 -9
  268. package/development/dialog-close-button.component-CxtWzXR4.js +1 -1
  269. package/development/dialog-content.component-DlSxpY_e.js +34 -0
  270. package/development/dialog-title.component-CNMzIUB2.js +1 -1
  271. package/development/dialog.component-BTXyWi17.js +233 -0
  272. package/development/dialog.js +4 -4
  273. package/development/dialog.pure.js +3 -3
  274. package/development/divider/divider.component.d.ts.map +1 -1
  275. package/development/divider.component-BvmLUhzD.js +1 -1
  276. package/development/error.component-TvgLhaZh.js +53 -0
  277. package/development/expansion-panel/expansion-panel/expansion-panel.component.d.ts.map +1 -1
  278. package/development/expansion-panel/expansion-panel-content/expansion-panel-content.component.d.ts.map +1 -1
  279. package/development/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +1 -1
  280. package/development/expansion-panel-content.component-B-SV6ier.js +1 -1
  281. package/development/expansion-panel-header.component-Ok8Qmq5K.js +82 -0
  282. package/development/expansion-panel.component-q7cJOmUs.js +1 -1
  283. package/development/expansion-panel.js +2 -2
  284. package/development/expansion-panel.pure.js +1 -1
  285. package/development/file-selector/common/file-selector-common.d.ts +1 -1
  286. package/development/file-selector/common/file-selector-common.d.ts.map +1 -1
  287. package/development/file-selector/common/file-selector-common.js +1 -1
  288. package/development/file-selector/file-selector/file-selector.component.d.ts.map +1 -1
  289. package/development/file-selector/file-selector/file-selector.component.js +1 -1
  290. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.d.ts.map +1 -1
  291. package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
  292. package/development/file-selector-common-BX5f18cJ.js +409 -0
  293. package/development/file-selector-dropzone.component-DMNom2OW.js +110 -0
  294. package/development/file-selector.js +3 -3
  295. package/development/file-selector.pure.js +2 -2
  296. package/development/flip-card/flip-card/flip-card.component.d.ts.map +1 -1
  297. package/development/flip-card/flip-card-details/flip-card-details.component.d.ts.map +1 -1
  298. package/development/flip-card/flip-card-summary/flip-card-summary.component.d.ts.map +1 -1
  299. package/development/flip-card-details.component-CKRovHqO.js +1 -1
  300. package/development/flip-card-summary.component-THvJF3Cl.js +1 -1
  301. package/development/flip-card.component-qnodzif2.js +1 -1
  302. package/development/flip-card.js +1 -1
  303. package/development/footer/footer.component.d.ts.map +1 -1
  304. package/development/footer/footer.component.js +1 -1
  305. package/development/footer.component-kFeZqO-Q.js +169 -0
  306. package/development/footer.js +1 -1
  307. package/development/footer.pure.js +1 -1
  308. package/development/form-field/error/error.component.d.ts.map +1 -1
  309. package/development/form-field/error/error.component.js +1 -1
  310. package/development/form-field/form-field/form-field.component.d.ts.map +1 -1
  311. package/development/form-field/form-field/form-field.component.js +1 -1
  312. package/development/form-field/form-field-clear/form-field-clear.component.d.ts +3 -0
  313. package/development/form-field/form-field-clear/form-field-clear.component.d.ts.map +1 -1
  314. package/development/form-field/form-field-clear/form-field-clear.component.js +4 -1
  315. package/development/form-field/form-field-text-counter/form-field-text-counter.component.d.ts.map +1 -1
  316. package/development/form-field/form-field-text-counter/form-field-text-counter.component.js +1 -1
  317. package/development/form-field/hint/hint.component.d.ts.map +1 -1
  318. package/development/form-field/hint/hint.component.js +1 -1
  319. package/development/form-field.component-CdTnOAi2.js +703 -0
  320. package/development/form-field.js +3 -3
  321. package/development/form-field.pure.js +3 -3
  322. package/development/header/common/header-action-common.d.ts +1 -1
  323. package/development/header/common/header-action-common.d.ts.map +1 -1
  324. package/development/header/header/header.component.d.ts.map +1 -1
  325. package/development/header/header/header.component.js +1 -1
  326. package/development/header/header-environment/header-environment.component.d.ts.map +1 -1
  327. package/development/header-action-common-BEnsweEr.js +1 -1
  328. package/development/header-environment.component-D-SLP3CC.js +1 -1
  329. package/development/header.component-BmZkCs9m.js +335 -0
  330. package/development/header.js +2 -2
  331. package/development/header.pure.js +1 -1
  332. package/development/hint.component-D5rTFJ-O.js +36 -0
  333. package/development/icon/icon-base.d.ts.map +1 -1
  334. package/development/icon/icon-name-mixin.d.ts +1 -1
  335. package/development/icon/icon-name-mixin.d.ts.map +1 -1
  336. package/development/icon/icon-name-mixin.js +1 -1
  337. package/development/icon-base-VYmbZT1-.js +1 -1
  338. package/development/icon-sidebar/icon-sidebar/icon-sidebar.component.d.ts.map +1 -1
  339. package/development/icon-sidebar/icon-sidebar/icon-sidebar.component.js +1 -1
  340. package/development/icon-sidebar/icon-sidebar-button/icon-sidebar-button.component.d.ts.map +1 -1
  341. package/development/icon-sidebar/icon-sidebar-button/icon-sidebar-button.component.js +1 -1
  342. package/development/icon-sidebar/icon-sidebar-content/icon-sidebar-content.component.d.ts.map +1 -1
  343. package/development/icon-sidebar/icon-sidebar-content/icon-sidebar-content.component.js +1 -1
  344. package/development/icon-sidebar/icon-sidebar-link/icon-sidebar-link.component.d.ts.map +1 -1
  345. package/development/icon-sidebar/icon-sidebar-link/icon-sidebar-link.component.js +1 -1
  346. package/development/icon-sidebar-content.component-CfkM9k--.js +35 -0
  347. package/development/{icon-sidebar.component-xzwoc_4y.js → icon-sidebar.component-Cgvuxg4k.js} +3 -3
  348. package/development/icon-sidebar.js +3 -3
  349. package/development/icon-sidebar.pure.js +2 -2
  350. package/development/image/image.component.d.ts.map +1 -1
  351. package/development/image.component-BuAPmhIt.js +1 -1
  352. package/development/inline-link-common-CONiCeR9.js +1 -1
  353. package/development/journey-header/journey-header.component.d.ts.map +1 -1
  354. package/development/journey-header.component-BKX1K6cf.js +1 -1
  355. package/development/lead-container/lead-container.component.d.ts.map +1 -1
  356. package/development/lead-container.component-B1eW6Xgb.js +1 -1
  357. package/development/link/block-link/block-link.component.d.ts.map +1 -1
  358. package/development/link/block-link/block-link.component.js +1 -1
  359. package/development/link/common/block-link-common.d.ts +1 -1
  360. package/development/link/common/block-link-common.d.ts.map +1 -1
  361. package/development/link/common/block-link-common.js +1 -1
  362. package/development/link/common/inline-link-common.d.ts +1 -1
  363. package/development/link/common/inline-link-common.d.ts.map +1 -1
  364. package/development/link/common/link-common.d.ts +1 -1
  365. package/development/link/common/link-common.d.ts.map +1 -1
  366. package/development/link/link/link.component.d.ts.map +1 -1
  367. package/development/link/link/link.component.js +1 -1
  368. package/development/link-common-4Ag6Mio-.js +1 -1
  369. package/development/link-list/common/link-list-base.d.ts.map +1 -1
  370. package/development/link-list/link-list.component.d.ts.map +1 -1
  371. package/development/link-list-anchor/link-list-anchor.component.d.ts.map +1 -1
  372. package/development/link-list-anchor.component-Cotg5LDT.js +1 -1
  373. package/development/link-list-base-B7vidwUW.js +1 -1
  374. package/development/link-list.component-BFbrLjs0.js +1 -1
  375. package/development/link.js +1 -1
  376. package/development/link.pure.js +1 -1
  377. package/development/loading-indicator/loading-indicator.component.d.ts.map +1 -1
  378. package/development/loading-indicator-circle/loading-indicator-circle.component.d.ts.map +1 -1
  379. package/development/loading-indicator-circle.component-nc-RH0jT.js +1 -1
  380. package/development/loading-indicator.component-DNCUlh6S.js +1 -1
  381. package/development/logo/logo.component.d.ts.map +1 -1
  382. package/development/logo.component-tFe_T36e.js +1 -1
  383. package/development/map-container/map-container.component.d.ts.map +1 -1
  384. package/development/map-container/map-container.component.js +1 -1
  385. package/development/{map-container.component-mzZ_K_fR.js → map-container.component-DvHVJZEZ.js} +2 -3
  386. package/development/map-container.js +1 -1
  387. package/development/map-container.pure.js +1 -1
  388. package/development/menu/common/menu-action-common.d.ts +1 -1
  389. package/development/menu/common/menu-action-common.d.ts.map +1 -1
  390. package/development/menu/common/menu-action-common.js +1 -1
  391. package/development/menu/menu/menu.component.d.ts +1 -1
  392. package/development/menu/menu/menu.component.d.ts.map +1 -1
  393. package/development/menu/menu/menu.component.js +1 -1
  394. package/development/menu/menu-link/menu-link.component.d.ts.map +1 -1
  395. package/development/menu/menu-link/menu-link.component.js +1 -1
  396. package/development/menu-action-common-CEnwq60Z.js +32 -0
  397. package/development/menu.component-DbNRrGYy.js +365 -0
  398. package/development/menu.js +3 -3
  399. package/development/menu.pure.js +2 -2
  400. package/development/message/message.component.d.ts.map +1 -1
  401. package/development/message/message.component.js +1 -1
  402. package/development/message.component-Dzah9lXK.js +43 -0
  403. package/development/message.js +1 -1
  404. package/development/message.pure.js +1 -1
  405. package/development/mini-button-group.component-DNFyLMg_.js +1 -1
  406. package/development/mini-button-link.component-DflgG59S.js +1 -1
  407. package/development/mini-calendar/mini-calendar/mini-calendar.component.d.ts +1 -1
  408. package/development/mini-calendar/mini-calendar/mini-calendar.component.d.ts.map +1 -1
  409. package/development/mini-calendar/mini-calendar-day/mini-calendar-day.component.d.ts.map +1 -1
  410. package/development/mini-calendar/mini-calendar-month/mini-calendar-month.component.d.ts.map +1 -1
  411. package/development/mini-calendar-day.component-Bmx2GYGZ.js +1 -1
  412. package/development/mini-calendar-month.component-CdIsxUAx.js +1 -1
  413. package/development/mini-calendar.component-Ddxgy4Tj.js +1 -1
  414. package/development/mini-calendar.js +1 -1
  415. package/development/navigation/common/navigation-action-common.d.ts +1 -1
  416. package/development/navigation/common/navigation-action-common.d.ts.map +1 -1
  417. package/development/navigation/common/navigation-action-common.js +1 -1
  418. package/development/navigation/navigation/navigation.component.d.ts +1 -1
  419. package/development/navigation/navigation/navigation.component.d.ts.map +1 -1
  420. package/development/navigation/navigation/navigation.component.js +1 -1
  421. package/development/navigation/navigation-list/navigation-list.component.d.ts.map +1 -1
  422. package/development/navigation/navigation-list/navigation-list.component.js +1 -1
  423. package/development/navigation/navigation-marker/navigation-marker.component.d.ts +0 -1
  424. package/development/navigation/navigation-marker/navigation-marker.component.d.ts.map +1 -1
  425. package/development/navigation/navigation-marker/navigation-marker.component.js +1 -1
  426. package/development/navigation/navigation-section/navigation-section.component.d.ts +1 -1
  427. package/development/navigation/navigation-section/navigation-section.component.d.ts.map +1 -1
  428. package/development/navigation/navigation-section/navigation-section.component.js +1 -1
  429. package/development/navigation-action-common-Cv1AOqUk.js +92 -0
  430. package/development/navigation-list.component-CQ4q671G.js +90 -0
  431. package/development/navigation-marker.component-D7ks8vbC.js +121 -0
  432. package/development/navigation-section.component-t36xyaq4.js +346 -0
  433. package/development/navigation.component-Djm0PFOA.js +315 -0
  434. package/development/navigation.js +6 -6
  435. package/development/navigation.pure.js +5 -5
  436. package/development/notification/notification.component.d.ts.map +1 -1
  437. package/development/notification/notification.component.js +1 -1
  438. package/development/notification.component-BgF5aGrn.js +271 -0
  439. package/development/notification.js +1 -1
  440. package/development/notification.pure.js +1 -1
  441. package/development/optgroup-base-element-er7EBllh.js +1 -1
  442. package/development/option/optgroup/optgroup-base-element.d.ts.map +1 -1
  443. package/development/option/option/option-base-element.d.ts.map +1 -1
  444. package/development/option/option/option-base-element.js +3 -1
  445. package/development/option/option/option.component.d.ts +1 -1
  446. package/development/option/option/option.component.d.ts.map +1 -1
  447. package/development/option/option/option.component.js +1 -1
  448. package/development/option/option-hint/option-hint.component.d.ts.map +1 -1
  449. package/development/option-hint.component-DLp9rQrk.js +1 -1
  450. package/development/option.component-B2EO4N0R.js +132 -0
  451. package/development/option.js +1 -1
  452. package/development/option.pure.js +1 -1
  453. package/development/overlay/overlay-base-element.d.ts +1 -1
  454. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  455. package/development/overlay/overlay-base-element.js +6 -6
  456. package/development/overlay/overlay.component.d.ts +0 -1
  457. package/development/overlay/overlay.component.d.ts.map +1 -1
  458. package/development/overlay/overlay.component.js +1 -1
  459. package/development/overlay.component-BcOBxY6k.js +210 -0
  460. package/development/overlay.js +1 -1
  461. package/development/overlay.pure.js +1 -1
  462. package/development/paginator/common/paginator-common.d.ts +1 -1
  463. package/development/paginator/common/paginator-common.d.ts.map +1 -1
  464. package/development/paginator/common/paginator-common.js +1 -1
  465. package/development/paginator/compact-paginator/compact-paginator.component.d.ts.map +1 -1
  466. package/development/paginator/compact-paginator/compact-paginator.component.js +1 -1
  467. package/development/paginator/paginator/paginator.component.d.ts.map +1 -1
  468. package/development/paginator/paginator/paginator.component.js +1 -1
  469. package/development/paginator.component-BlyTYIs0.js +261 -0
  470. package/development/paginator.js +2 -2
  471. package/development/paginator.pure.js +2 -2
  472. package/development/panel-mixin-CKHxLmjh.js +1 -1
  473. package/development/popover/popover.component.d.ts +2 -1
  474. package/development/popover/popover.component.d.ts.map +1 -1
  475. package/development/popover/popover.component.js +1 -1
  476. package/development/popover.component-DM9Bn8xl.js +535 -0
  477. package/development/popover.js +1 -1
  478. package/development/popover.pure.js +1 -1
  479. package/development/radio-button/common/radio-button-common.d.ts +1 -1
  480. package/development/radio-button/common/radio-button-common.d.ts.map +1 -1
  481. package/development/radio-button/common/radio-button-common.js +1 -1
  482. package/development/radio-button/radio-button.component.d.ts.map +1 -1
  483. package/development/radio-button/radio-button.component.js +1 -1
  484. package/development/radio-button-common-ZMs5IFm2.js +125 -0
  485. package/development/radio-button-group/radio-button-group.component.d.ts.map +1 -1
  486. package/development/radio-button-group/radio-button-group.component.js +1 -1
  487. package/development/radio-button-panel/radio-button-panel.component.d.ts.map +1 -1
  488. package/development/radio-button-panel/radio-button-panel.component.js +1 -1
  489. package/development/{radio-button.component-DAgH41z0.js → radio-button.component-DggZ7RZD.js} +2 -2
  490. package/development/radio-button.js +2 -2
  491. package/development/radio-button.pure.js +2 -2
  492. package/development/screen-reader-only.component-D60AmiFy.js +1 -1
  493. package/development/select/select.component.d.ts +1 -1
  494. package/development/select/select.component.d.ts.map +1 -1
  495. package/development/select/select.component.js +1 -1
  496. package/development/select.component-BnHx3v3c.js +806 -0
  497. package/development/select.js +1 -1
  498. package/development/select.pure.js +1 -1
  499. package/development/selection-action-panel/selection-action-panel.component.d.ts.map +1 -1
  500. package/development/selection-action-panel.component-DvhL5Z_Q.js +1 -1
  501. package/development/selection-expansion-panel/selection-expansion-panel.component.d.ts.map +1 -1
  502. package/development/selection-expansion-panel.component-D_HF9lzq.js +1 -1
  503. package/development/selection-group-base-element-rKKX4OAJ.js +1 -1
  504. package/development/sidebar/sidebar/sidebar.component.d.ts.map +1 -1
  505. package/development/sidebar/sidebar/sidebar.component.js +1 -1
  506. package/development/sidebar/sidebar-close-button/sidebar-close-button.component.d.ts.map +1 -1
  507. package/development/sidebar/sidebar-container/sidebar-container.component.d.ts.map +1 -1
  508. package/development/sidebar/sidebar-content/sidebar-content.component.d.ts +1 -2
  509. package/development/sidebar/sidebar-content/sidebar-content.component.d.ts.map +1 -1
  510. package/development/sidebar/sidebar-content/sidebar-content.component.js +1 -1
  511. package/development/sidebar/sidebar-title/sidebar-title.component.d.ts.map +1 -1
  512. package/development/sidebar-close-button.component-DYE0tK-I.js +1 -1
  513. package/development/sidebar-container.component-CC9TtB6I.js +1 -1
  514. package/development/{sidebar-content.component-Os9gd7zB.js → sidebar-content.component-DbcREBUa.js} +8 -5
  515. package/development/sidebar-title.component-DBb5MfIC.js +1 -1
  516. package/development/{sidebar.component-CwuT6dno.js → sidebar.component-zMWbdz0h.js} +2 -2
  517. package/development/sidebar.js +3 -3
  518. package/development/sidebar.pure.js +2 -2
  519. package/development/signet/signet.component.d.ts.map +1 -1
  520. package/development/signet.component-DO73qKor.js +1 -1
  521. package/development/skiplink-list/skiplink-list.component.d.ts.map +1 -1
  522. package/development/skiplink-list.component-DqYT2mmv.js +1 -1
  523. package/development/slider/slider.component.d.ts +1 -1
  524. package/development/slider/slider.component.d.ts.map +1 -1
  525. package/development/slider/slider.component.js +1 -1
  526. package/development/slider.component-CXrGIpkh.js +346 -0
  527. package/development/slider.js +1 -1
  528. package/development/slider.pure.js +1 -1
  529. package/development/status/status.component.d.ts.map +1 -1
  530. package/development/status/status.component.js +1 -1
  531. package/development/status.component-BtJ8ri61.js +110 -0
  532. package/development/status.js +1 -1
  533. package/development/status.pure.js +1 -1
  534. package/development/step-label.component-Dfx9rLcN.js +126 -0
  535. package/development/step.component-D1Gq0VRW.js +146 -0
  536. package/development/stepper/step/step.component.d.ts.map +1 -1
  537. package/development/stepper/step/step.component.js +1 -1
  538. package/development/stepper/step-label/step-label.component.d.ts.map +1 -1
  539. package/development/stepper/step-label/step-label.component.js +1 -1
  540. package/development/stepper/stepper/stepper.component.d.ts.map +1 -1
  541. package/development/stepper.component-BTwJttZt.js +1 -1
  542. package/development/stepper.js +2 -2
  543. package/development/stepper.pure.js +2 -2
  544. package/development/sticky-bar.component-MMBSPa2B.js +1 -1
  545. package/development/styles-DcuJgwEt.js +14 -0
  546. package/development/styles-WppEBrlW.js +14 -0
  547. package/development/tab-group.component-DX7BY7Xy.js +270 -0
  548. package/development/{tab-label.component-Du1W0dxN.js → tab-label.component-Ggx6qaIk.js} +2 -2
  549. package/development/tab-nav-bar.component-BTPTHy2C.js +1 -1
  550. package/development/tab.component-BVhYPy5Y.js +68 -0
  551. package/development/table/table-wrapper/table-wrapper.component.d.ts.map +1 -1
  552. package/development/table/table-wrapper/table-wrapper.component.js +1 -1
  553. package/development/table-wrapper.component-DcLwEDzr.js +119 -0
  554. package/development/table.js +1 -1
  555. package/development/table.pure.js +1 -1
  556. package/development/tabs/common/styles.js +1 -1
  557. package/development/tabs/tab/tab.component.d.ts.map +1 -1
  558. package/development/tabs/tab/tab.component.js +1 -1
  559. package/development/tabs/tab-group/tab-group.component.d.ts +1 -0
  560. package/development/tabs/tab-group/tab-group.component.d.ts.map +1 -1
  561. package/development/tabs/tab-group/tab-group.component.js +1 -1
  562. package/development/tabs/tab-label/tab-label.component.d.ts.map +1 -1
  563. package/development/tabs/tab-label/tab-label.component.js +1 -1
  564. package/development/tabs/tab-nav-bar/tab-nav-bar.component.d.ts.map +1 -1
  565. package/development/tabs.js +4 -4
  566. package/development/tabs.pure.js +4 -4
  567. package/development/tag/tag/tag.component.d.ts +1 -1
  568. package/development/tag/tag/tag.component.d.ts.map +1 -1
  569. package/development/tag/tag/tag.component.js +1 -1
  570. package/development/tag/tag-group/tag-group.component.d.ts.map +1 -1
  571. package/development/tag-group.component-SEbOfnip.js +1 -1
  572. package/development/tag.component-Davxisfj.js +241 -0
  573. package/development/tag.js +1 -1
  574. package/development/tag.pure.js +1 -1
  575. package/development/teaser/teaser.component.d.ts.map +1 -1
  576. package/development/teaser/teaser.component.js +1 -1
  577. package/development/teaser-hero/teaser-hero.component.d.ts +1 -1
  578. package/development/teaser-hero/teaser-hero.component.d.ts.map +1 -1
  579. package/development/teaser-hero/teaser-hero.component.js +1 -1
  580. package/development/teaser-hero.component-bp9IsVmY.js +100 -0
  581. package/development/teaser-hero.js +1 -1
  582. package/development/teaser-hero.pure.js +1 -1
  583. package/development/teaser-panel/teaser-panel.component.d.ts +19 -0
  584. package/development/teaser-panel/teaser-panel.component.d.ts.map +1 -0
  585. package/development/teaser-panel/teaser-panel.component.js +2 -0
  586. package/development/teaser-panel.component-CjSrfJYG.js +32 -0
  587. package/development/teaser-panel.d.ts +2 -0
  588. package/development/teaser-panel.d.ts.map +1 -0
  589. package/development/teaser-panel.js +9 -0
  590. package/development/teaser-panel.pure.d.ts +3 -0
  591. package/development/teaser-panel.pure.d.ts.map +1 -0
  592. package/development/teaser-panel.pure.js +2 -0
  593. package/development/teaser-product/common/teaser-product-common.d.ts +1 -1
  594. package/development/teaser-product/common/teaser-product-common.d.ts.map +1 -1
  595. package/development/teaser-product/common/teaser-product-common.js +1 -1
  596. package/development/teaser-product/teaser-product/teaser-product.component.d.ts +1 -1
  597. package/development/teaser-product/teaser-product/teaser-product.component.d.ts.map +1 -1
  598. package/development/teaser-product/teaser-product/teaser-product.component.js +1 -1
  599. package/development/teaser-product/teaser-product-static/teaser-product-static.component.d.ts.map +1 -1
  600. package/development/teaser-product/teaser-product-static/teaser-product-static.component.js +1 -1
  601. package/development/{teaser-product-common-DhbAGnQN.js → teaser-product-common-DasV_SDa.js} +1 -1
  602. package/development/{teaser-product.component-C3PZbA5W.js → teaser-product.component-CB6fOX7T.js} +1 -1
  603. package/development/teaser-product.js +2 -2
  604. package/development/teaser-product.pure.js +2 -2
  605. package/development/{teaser.component-BJso_6lz.js → teaser.component-C7uXEaPK.js} +2 -2
  606. package/development/teaser.js +1 -1
  607. package/development/teaser.pure.js +1 -1
  608. package/development/time-input/time-input.component.d.ts.map +1 -1
  609. package/development/time-input/time-input.component.js +1 -1
  610. package/development/{time-input.component-BWMBV6fm.js → time-input.component-x-QOtbwE.js} +1 -1
  611. package/development/time-input.js +1 -1
  612. package/development/time-input.pure.js +1 -1
  613. package/development/timetable-form/timetable-form/timetable-form.component.d.ts.map +1 -1
  614. package/development/timetable-form/timetable-form/timetable-form.component.js +1 -1
  615. package/development/timetable-form/timetable-form-details/timetable-form-details.component.d.ts.map +1 -1
  616. package/development/timetable-form/timetable-form-details/timetable-form-details.component.js +1 -1
  617. package/development/timetable-form/timetable-form-field/timetable-form-field.component.js +1 -1
  618. package/development/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.d.ts +3 -0
  619. package/development/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.d.ts.map +1 -1
  620. package/development/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.js +1 -1
  621. package/development/{timetable-form-details.component-C8EdT4rZ.js → timetable-form-details.component-B7mwIQoz.js} +1 -1
  622. package/development/{timetable-form-field.component-CoANLGWk.js → timetable-form-field.component-BIpoMaJW.js} +1 -1
  623. package/development/{timetable-form-swap-button.component-BGziVzB8.js → timetable-form-swap-button.component-CyHdctws.js} +5 -1
  624. package/development/{timetable-form.component-DLjBbFRv.js → timetable-form.component-BBkeono7.js} +1 -1
  625. package/development/timetable-form.js +5 -5
  626. package/development/timetable-form.pure.js +4 -4
  627. package/development/timetable-occupancy/timetable-occupancy.component.d.ts +1 -1
  628. package/development/timetable-occupancy/timetable-occupancy.component.d.ts.map +1 -1
  629. package/development/timetable-occupancy/timetable-occupancy.component.js +1 -1
  630. package/development/timetable-occupancy-icon/timetable-occupancy-icon.component.d.ts.map +1 -1
  631. package/development/timetable-occupancy-icon/timetable-occupancy-icon.component.js +1 -1
  632. package/development/{timetable-occupancy-icon.component-DXFUx67a.js → timetable-occupancy-icon.component-CRayfWIo.js} +1 -1
  633. package/development/timetable-occupancy-icon.js +1 -1
  634. package/development/timetable-occupancy-icon.pure.js +1 -1
  635. package/development/{timetable-occupancy.component-By7X3Sj2.js → timetable-occupancy.component-B-uVA9KC.js} +2 -2
  636. package/development/timetable-occupancy.js +1 -1
  637. package/development/timetable-occupancy.pure.js +1 -1
  638. package/development/title/title-base.d.ts.map +1 -1
  639. package/development/title/title-base.js +1 -1
  640. package/development/title/title.component.d.ts.map +1 -1
  641. package/development/title/title.component.js +1 -1
  642. package/development/{title-base-Bc3biGfy.js → title-base-DKVyL7TQ.js} +2 -2
  643. package/development/{title.component-B7rIqG0N.js → title.component-BEEzA9cF.js} +2 -2
  644. package/development/title.js +2 -2
  645. package/development/title.pure.js +2 -2
  646. package/development/toast/toast.component.d.ts +1 -1
  647. package/development/toast/toast.component.d.ts.map +1 -1
  648. package/development/toast/toast.component.js +1 -1
  649. package/development/toast.component-DvVY7zpe.js +268 -0
  650. package/development/toast.js +1 -1
  651. package/development/toast.pure.js +1 -1
  652. package/development/toggle/toggle/toggle.component.d.ts +1 -1
  653. package/development/toggle/toggle/toggle.component.d.ts.map +1 -1
  654. package/development/toggle/toggle/toggle.component.js +1 -1
  655. package/development/toggle/toggle-option/toggle-option.component.d.ts +1 -0
  656. package/development/toggle/toggle-option/toggle-option.component.d.ts.map +1 -1
  657. package/development/toggle/toggle-option/toggle-option.component.js +1 -1
  658. package/development/toggle-check/toggle-check.component.d.ts.map +1 -1
  659. package/development/toggle-check/toggle-check.component.js +1 -1
  660. package/development/toggle-check.component-LYr7DJj1.js +156 -0
  661. package/development/toggle-check.js +1 -1
  662. package/development/toggle-check.pure.js +1 -1
  663. package/development/toggle-option.component-DRAJ11fp.js +164 -0
  664. package/development/toggle.component-CQYpVyvs.js +244 -0
  665. package/development/toggle.js +2 -2
  666. package/development/toggle.pure.js +2 -2
  667. package/development/tooltip/tooltip.component.d.ts.map +1 -1
  668. package/development/tooltip/tooltip.component.js +1 -1
  669. package/development/tooltip.component-Br7aDPFn.js +369 -0
  670. package/development/tooltip.js +1 -1
  671. package/development/tooltip.pure.js +1 -1
  672. package/development/train/train/train.component.d.ts.map +1 -1
  673. package/development/train/train/train.component.js +1 -1
  674. package/development/train/train-blocked-passage/train-blocked-passage.component.js +1 -1
  675. package/development/train/train-formation/train-formation.component.js +1 -1
  676. package/development/train/train-wagon/train-wagon.component.js +1 -1
  677. package/development/{train-blocked-passage.component-C6XmqBo_.js → train-blocked-passage.component-Bh2dR1gn.js} +1 -1
  678. package/development/{train-formation.component-CfdHRBsd.js → train-formation.component-Dm0t9N_h.js} +2 -2
  679. package/development/{train-wagon.component-zQVbqhIL.js → train-wagon.component-B6V4dPKn.js} +2 -2
  680. package/development/{train.component-D5Z4vgej.js → train.component-BvbNBkZF.js} +1 -1
  681. package/development/train.js +5 -5
  682. package/development/train.pure.js +4 -4
  683. package/development/visual-checkbox/visual-checkbox.component.d.ts.map +1 -1
  684. package/development/visual-checkbox/visual-checkbox.component.js +1 -1
  685. package/development/{visual-checkbox.component-jRksxrOu.js → visual-checkbox.component-DJ30EugM.js} +1 -1
  686. package/development/visual-checkbox.js +1 -1
  687. package/development/visual-checkbox.pure.js +1 -1
  688. package/dialog/dialog/dialog.component.js +1 -1
  689. package/dialog/dialog-actions/dialog-actions.component.js +1 -1
  690. package/dialog/dialog-content/dialog-content.component.js +1 -1
  691. package/{dialog-actions.component-ConxJ3VW.js → dialog-actions.component-DjBJ65tV.js} +4 -8
  692. package/dialog-content.component-C_Gr8BNL.js +22 -0
  693. package/{dialog.component-ca14M0hZ.js → dialog.component-ChB9gCyY.js} +7 -10
  694. package/dialog.js +3 -3
  695. package/dialog.pure.js +3 -3
  696. package/{error.component-BLChP2fE.js → error.component-D3JgDJfN.js} +1 -1
  697. package/expansion-panel/expansion-panel-header/expansion-panel-header.component.js +1 -1
  698. package/{expansion-panel-header.component-DdRIlyms.js → expansion-panel-header.component-DYvq-uUi.js} +1 -1
  699. package/expansion-panel.js +1 -1
  700. package/expansion-panel.pure.js +1 -1
  701. package/file-selector/common/file-selector-common.js +1 -1
  702. package/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
  703. package/{file-selector-common-DpccuOQ4.js → file-selector-common-CMLaHuDP.js} +38 -40
  704. package/{file-selector-dropzone.component-Bz3Wpl0X.js → file-selector-dropzone.component-CWwpvAVD.js} +3 -4
  705. package/file-selector.js +2 -2
  706. package/file-selector.pure.js +2 -2
  707. package/footer/footer.component.js +1 -1
  708. package/{footer.component-Don15vOd.js → footer.component-CdTEaV6u.js} +1 -1
  709. package/footer.js +1 -1
  710. package/footer.pure.js +1 -1
  711. package/form-field/error/error.component.js +1 -1
  712. package/form-field/form-field/form-field.component.js +1 -1
  713. package/form-field/hint/hint.component.js +1 -1
  714. package/{form-field.component-Do5eratI.js → form-field.component-Dtzbp6-e.js} +3 -2
  715. package/form-field.js +3 -3
  716. package/form-field.pure.js +3 -3
  717. package/header/header/header.component.js +1 -1
  718. package/{header.component-BxizSy1O.js → header.component-DoAFSXgO.js} +3 -3
  719. package/header.js +1 -1
  720. package/header.pure.js +1 -1
  721. package/{hint.component-CaF6CBCN.js → hint.component-BB_h0G6v.js} +1 -1
  722. package/icon-sidebar/icon-sidebar/icon-sidebar.component.js +1 -1
  723. package/icon-sidebar/icon-sidebar-content/icon-sidebar-content.component.js +1 -1
  724. package/{icon-sidebar-content.component-DlUqWEAX.js → icon-sidebar-content.component-lFstg91Y.js} +9 -5
  725. package/{icon-sidebar.component-DbA4omxc.js → icon-sidebar.component-D0TtF-kR.js} +11 -11
  726. package/icon-sidebar.js +2 -2
  727. package/icon-sidebar.pure.js +2 -2
  728. package/index.d.ts +2 -0
  729. package/index.js +2 -0
  730. package/link/common/block-link-common.js +1 -1
  731. package/link.js +1 -1
  732. package/link.pure.js +1 -1
  733. package/map-container/map-container.component.js +1 -1
  734. package/{map-container.component-Cqn9mKoo.js → map-container.component-BlrPWANi.js} +1 -2
  735. package/map-container.js +1 -1
  736. package/map-container.pure.js +1 -1
  737. package/menu/common/menu-action-common.js +1 -1
  738. package/menu/menu/menu.component.js +1 -1
  739. package/{menu-action-common-DY4RrfCy.js → menu-action-common-krzD_Ca2.js} +1 -1
  740. package/{menu.component-XvtyRok7.js → menu.component-KdXwqe55.js} +15 -15
  741. package/menu.js +2 -2
  742. package/menu.pure.js +2 -2
  743. package/message/message.component.js +1 -1
  744. package/message.component-CF-_MD7m.js +26 -0
  745. package/message.js +1 -1
  746. package/message.pure.js +1 -1
  747. package/navigation/common/navigation-action-common.js +1 -1
  748. package/navigation/navigation/navigation.component.js +1 -1
  749. package/navigation/navigation-list/navigation-list.component.js +1 -1
  750. package/navigation/navigation-marker/navigation-marker.component.js +1 -1
  751. package/navigation/navigation-section/navigation-section.component.js +1 -1
  752. package/navigation-action-common-BKI1MS1v.js +66 -0
  753. package/{navigation-list.component-DQeyXtOA.js → navigation-list.component-BX-kv06z.js} +13 -13
  754. package/navigation-marker.component-iSodFQRj.js +85 -0
  755. package/navigation-section.component-K4Pa53K7.js +230 -0
  756. package/navigation.component-BFejmwjr.js +202 -0
  757. package/navigation.js +5 -5
  758. package/navigation.pure.js +5 -5
  759. package/notification/notification.component.js +1 -1
  760. package/{notification.component-IsSZe3Ul.js → notification.component-D9oxjMJs.js} +1 -1
  761. package/notification.js +1 -1
  762. package/notification.pure.js +1 -1
  763. package/off-brand-theme.css +317 -138
  764. package/option/option/option-base-element.js +1 -1
  765. package/option/option/option.component.js +1 -1
  766. package/{option.component-C1Mm3ZFh.js → option.component-B8PivDHD.js} +1 -1
  767. package/option.js +1 -1
  768. package/option.pure.js +1 -1
  769. package/overlay/overlay-base-element.js +4 -4
  770. package/overlay/overlay.component.js +1 -1
  771. package/overlay.component-C6i5RA4B.js +160 -0
  772. package/overlay.js +1 -1
  773. package/overlay.pure.js +1 -1
  774. package/package.json +11 -1
  775. package/paginator/compact-paginator/compact-paginator.component.js +1 -1
  776. package/paginator/paginator/paginator.component.js +1 -1
  777. package/{paginator.component-BkECB-iV.js → paginator.component-DA_wUypF.js} +1 -1
  778. package/paginator.js +2 -2
  779. package/paginator.pure.js +2 -2
  780. package/popover/popover.component.js +1 -1
  781. package/{popover.component-BfSXNxKK.js → popover.component-BkhmysoH.js} +18 -15
  782. package/popover.js +1 -1
  783. package/popover.pure.js +1 -1
  784. package/radio-button/common/radio-button-common.js +1 -1
  785. package/radio-button/radio-button.component.js +1 -1
  786. package/{radio-button-common-CQyKqDLJ.js → radio-button-common-iNYco_B8.js} +1 -1
  787. package/{radio-button.component-Cenb6FL5.js → radio-button.component-v5czJYC3.js} +1 -1
  788. package/radio-button.js +2 -2
  789. package/radio-button.pure.js +2 -2
  790. package/safety-theme.css +317 -138
  791. package/scrollbar.css +51 -53
  792. package/select/select.component.js +1 -1
  793. package/{select.component-Cu3ewc4i.js → select.component-De-aDcuf.js} +3 -3
  794. package/select.js +1 -1
  795. package/select.pure.js +1 -1
  796. package/sidebar/sidebar/sidebar.component.js +1 -1
  797. package/sidebar/sidebar-content/sidebar-content.component.js +1 -1
  798. package/{sidebar-content.component-DEgmt4BB.js → sidebar-content.component-CYupfsq_.js} +9 -5
  799. package/{sidebar.component-Bxt8pWMf.js → sidebar.component-Sw06otwx.js} +1 -1
  800. package/sidebar.js +2 -2
  801. package/sidebar.pure.js +2 -2
  802. package/slider/slider.component.js +1 -1
  803. package/{slider.component-B3V7sjSF.js → slider.component-DfMkuXac.js} +1 -1
  804. package/slider.js +1 -1
  805. package/slider.pure.js +1 -1
  806. package/standard-theme.css +317 -138
  807. package/status/status.component.js +1 -1
  808. package/{status.component-CgMvY4Pe.js → status.component-5SKEusnj.js} +1 -1
  809. package/status.js +1 -1
  810. package/status.pure.js +1 -1
  811. package/step-label.component-DM7lQw8b.js +77 -0
  812. package/{step.component-aBAfTJyO.js → step.component-DuLOqjZk.js} +5 -7
  813. package/stepper/step/step.component.js +1 -1
  814. package/stepper/step-label/step-label.component.js +1 -1
  815. package/stepper.js +2 -2
  816. package/stepper.pure.js +2 -2
  817. package/styles-DisU4TWi.js +5 -0
  818. package/styles-swTeDfst.js +5 -0
  819. package/{tab-group.component-sdbLQtoj.js → tab-group.component-B3uz-8FA.js} +31 -27
  820. package/{tab-label.component-CH24fqmB.js → tab-label.component-JjktN30A.js} +1 -1
  821. package/{tab.component-DGzqld4u.js → tab.component-D6hfhlZw.js} +6 -6
  822. package/table/table-wrapper/table-wrapper.component.js +1 -1
  823. package/{table-wrapper.component-C36NdMWS.js → table-wrapper.component-Dxb8kzV3.js} +13 -13
  824. package/table.js +1 -1
  825. package/table.pure.js +1 -1
  826. package/tabs/common/styles.js +1 -1
  827. package/tabs/tab/tab.component.js +1 -1
  828. package/tabs/tab-group/tab-group.component.js +1 -1
  829. package/tabs/tab-label/tab-label.component.js +1 -1
  830. package/tabs.js +4 -4
  831. package/tabs.pure.js +4 -4
  832. package/tag/tag/tag.component.js +1 -1
  833. package/{tag.component-B7YExnbA.js → tag.component-BGYVbfUx.js} +1 -1
  834. package/tag.js +1 -1
  835. package/tag.pure.js +1 -1
  836. package/teaser/teaser.component.js +1 -1
  837. package/teaser-hero/teaser-hero.component.js +1 -1
  838. package/teaser-hero.component-By1HInfz.js +80 -0
  839. package/teaser-hero.js +1 -1
  840. package/teaser-hero.pure.js +1 -1
  841. package/teaser-panel/teaser-panel.component.js +2 -0
  842. package/teaser-panel.component-C4auDYCc.js +21 -0
  843. package/teaser-panel.js +6 -0
  844. package/teaser-panel.pure.js +2 -0
  845. package/teaser-product/common/teaser-product-common.js +1 -1
  846. package/teaser-product/teaser-product/teaser-product.component.js +1 -1
  847. package/teaser-product.js +2 -2
  848. package/teaser-product.pure.js +2 -2
  849. package/{teaser.component-BaxumXCl.js → teaser.component-B2y2AlAx.js} +1 -1
  850. package/teaser.js +1 -1
  851. package/teaser.pure.js +1 -1
  852. package/time-input/time-input.component.js +1 -1
  853. package/time-input.js +1 -1
  854. package/time-input.pure.js +1 -1
  855. package/timetable-form/timetable-form/timetable-form.component.js +1 -1
  856. package/timetable-form/timetable-form-details/timetable-form-details.component.js +1 -1
  857. package/timetable-form/timetable-form-field/timetable-form-field.component.js +1 -1
  858. package/timetable-form/timetable-form-swap-button/timetable-form-swap-button.component.js +1 -1
  859. package/{timetable-form-swap-button.component-BT36u2L9.js → timetable-form-swap-button.component-D9wBQQkG.js} +1 -1
  860. package/timetable-form.js +4 -4
  861. package/timetable-form.pure.js +4 -4
  862. package/timetable-occupancy/timetable-occupancy.component.js +1 -1
  863. package/timetable-occupancy-icon/timetable-occupancy-icon.component.js +1 -1
  864. package/timetable-occupancy-icon.js +1 -1
  865. package/timetable-occupancy-icon.pure.js +1 -1
  866. package/{timetable-occupancy.component-BbHtiw_F.js → timetable-occupancy.component-Dq9RM6qS.js} +1 -1
  867. package/timetable-occupancy.js +1 -1
  868. package/timetable-occupancy.pure.js +1 -1
  869. package/title/title-base.js +1 -1
  870. package/title/title.component.js +1 -1
  871. package/{title-base-Cbe4eNS1.js → title-base-B43-Q_7r.js} +1 -1
  872. package/{title.component-7zqQqbRJ.js → title.component-DXJHJ6p6.js} +1 -1
  873. package/title.js +2 -2
  874. package/title.pure.js +2 -2
  875. package/toast/toast.component.js +1 -1
  876. package/toast.component-2hmfUgsX.js +184 -0
  877. package/toast.js +1 -1
  878. package/toast.pure.js +1 -1
  879. package/toggle/toggle/toggle.component.js +1 -1
  880. package/toggle/toggle-option/toggle-option.component.js +1 -1
  881. package/toggle-check/toggle-check.component.js +1 -1
  882. package/toggle-check.component-WVQ4NM-R.js +116 -0
  883. package/toggle-check.js +1 -1
  884. package/toggle-check.pure.js +1 -1
  885. package/{toggle-option.component-BF95HWOF.js → toggle-option.component-DeePQ-NW.js} +5 -7
  886. package/{toggle.component-2e_7FeR4.js → toggle.component-BGgAnHau.js} +6 -10
  887. package/toggle.js +2 -2
  888. package/toggle.pure.js +2 -2
  889. package/tooltip/tooltip.component.js +1 -1
  890. package/{tooltip.component-C5y6zCtF.js → tooltip.component-Bp-8vRoA.js} +12 -12
  891. package/tooltip.js +1 -1
  892. package/tooltip.pure.js +1 -1
  893. package/train/train/train.component.js +1 -1
  894. package/train/train-blocked-passage/train-blocked-passage.component.js +1 -1
  895. package/train/train-formation/train-formation.component.js +1 -1
  896. package/train/train-wagon/train-wagon.component.js +1 -1
  897. package/{train-formation.component-5AASBGSX.js → train-formation.component-DS4EDwPY.js} +1 -1
  898. package/{train-wagon.component-CLMLEf6I.js → train-wagon.component-LwKwwuta.js} +1 -1
  899. package/train.js +4 -4
  900. package/train.pure.js +4 -4
  901. package/visual-checkbox/visual-checkbox.component.js +1 -1
  902. package/visual-checkbox.js +1 -1
  903. package/visual-checkbox.pure.js +1 -1
  904. package/alert.component-C42LwoGa.js +0 -163
  905. package/button-common-C3wYY-UK.js +0 -85
  906. package/chip-label.component-CUJTTb1-.js +0 -79
  907. package/core/styles/mixins/chip.scss +0 -95
  908. package/development/alert-group.component-DeI6kuwn.js +0 -188
  909. package/development/alert.component-Cn36k_Hf.js +0 -214
  910. package/development/autocomplete-base-element-B5n-eCMO.js +0 -672
  911. package/development/breadcrumb-group.component-DP9X9qV1.js +0 -193
  912. package/development/calendar.component-CByyksy8.js +0 -1450
  913. package/development/card-badge.component-Be4gXazr.js +0 -83
  914. package/development/checkbox-common-DpE48IrV.js +0 -84
  915. package/development/chip-group.component-CxM8l839.js +0 -402
  916. package/development/chip-label.component-C1CGL8zb.js +0 -102
  917. package/development/compact-paginator.component-DiMeNNTc.js +0 -51
  918. package/development/datepicker-button-CIvIHG8k.js +0 -160
  919. package/development/datepicker.component-BEiMYEc-.js +0 -211
  920. package/development/dialog-content.component-B3VB2ptp.js +0 -30
  921. package/development/dialog.component-BYVTZAUU.js +0 -238
  922. package/development/error.component-C8JQQqSB.js +0 -53
  923. package/development/expansion-panel-header.component-CWojFAB-.js +0 -82
  924. package/development/file-selector-common-DE_jT1fa.js +0 -411
  925. package/development/file-selector-dropzone.component-dyv_u-Ga.js +0 -111
  926. package/development/footer.component-Dbc5xFqr.js +0 -169
  927. package/development/form-field.component-DGOrnYkc.js +0 -702
  928. package/development/header.component-Hfgz9sSb.js +0 -336
  929. package/development/hint.component-hKw1TLvO.js +0 -36
  930. package/development/icon-sidebar-content.component-CMzp1ewD.js +0 -31
  931. package/development/menu-action-common-Crx-dDgH.js +0 -32
  932. package/development/menu.component-DOv7PKIi.js +0 -367
  933. package/development/message.component-CrXtMprr.js +0 -43
  934. package/development/navigation-action-common-ZBiv0Xiw.js +0 -93
  935. package/development/navigation-list.component-DilKlDwx.js +0 -90
  936. package/development/navigation-marker.component-BsfPR_uk.js +0 -122
  937. package/development/navigation-section.component-C_9myQKr.js +0 -349
  938. package/development/navigation.component-C8MhqBLY.js +0 -318
  939. package/development/notification.component-CKyNdgbx.js +0 -271
  940. package/development/option.component-Dod6JgbH.js +0 -132
  941. package/development/overlay.component-BuCkqG6Q.js +0 -216
  942. package/development/paginator.component-Cqm7MuRD.js +0 -261
  943. package/development/popover.component-B15jFLe9.js +0 -529
  944. package/development/radio-button-common-u7NYOI2p.js +0 -125
  945. package/development/select.component-CqwBdtsN.js +0 -804
  946. package/development/slider.component-ZBdkbZei.js +0 -346
  947. package/development/status.component-p-egQ_U4.js +0 -110
  948. package/development/step-label.component-CxqPgbzK.js +0 -128
  949. package/development/step.component-B2qbHl0l.js +0 -150
  950. package/development/styles-CcYw6JtZ.js +0 -8
  951. package/development/styles-D_8dMc_0.js +0 -14
  952. package/development/tab-group.component-C3R8ZTbg.js +0 -266
  953. package/development/tab.component-DteuwiHv.js +0 -70
  954. package/development/table-wrapper.component-iSeT-FPH.js +0 -119
  955. package/development/tag.component-CWL9jJTW.js +0 -241
  956. package/development/teaser-hero.component-7KeR7bPf.js +0 -101
  957. package/development/toast.component-Cy13egVy.js +0 -269
  958. package/development/toggle-check.component-CuODx4cx.js +0 -156
  959. package/development/toggle-option.component-BWT4kEZo.js +0 -165
  960. package/development/toggle.component-DjLnSv3R.js +0 -249
  961. package/development/tooltip.component-BtWTK2R0.js +0 -371
  962. package/dialog-content.component-DvJiuDJI.js +0 -19
  963. package/message.component-DgTPvDym.js +0 -26
  964. package/navigation-action-common-Dm47M2BG.js +0 -66
  965. package/navigation-marker.component-1VHe19c9.js +0 -85
  966. package/navigation-section.component-CLcdmPV3.js +0 -231
  967. package/navigation.component-Cnyb5_4R.js +0 -203
  968. package/overlay.component-OzDUV8t1.js +0 -164
  969. package/step-label.component-qdfunibJ.js +0 -77
  970. package/styles-DMLyYaea.js +0 -5
  971. package/styles-x5HG0xjp.js +0 -6
  972. package/teaser-hero.component-CLuVP2ba.js +0 -81
  973. package/toast.component-BY72fOXh.js +0 -185
  974. package/toggle-check.component-DkOBgRQM.js +0 -116
  975. /package/{teaser-product-common-B8NakRRV.js → teaser-product-common-Kz3ApcVE.js} +0 -0
  976. /package/{teaser-product.component-Dqapk40c.js → teaser-product.component-C7KoSqcP.js} +0 -0
  977. /package/{time-input.component-N0DexLd9.js → time-input.component-BVoO7JLV.js} +0 -0
  978. /package/{timetable-form-details.component-CIY5ZAQJ.js → timetable-form-details.component-BQmF3WLu.js} +0 -0
  979. /package/{timetable-form-field.component-LuzgeDdh.js → timetable-form-field.component-DrQuTOJr.js} +0 -0
  980. /package/{timetable-form.component-YNDnJnkX.js → timetable-form.component-AbZF15Tg.js} +0 -0
  981. /package/{timetable-occupancy-icon.component-DPNwMhLs.js → timetable-occupancy-icon.component-B6pF-j0D.js} +0 -0
  982. /package/{train-blocked-passage.component-EET0Kobk.js → train-blocked-passage.component-DIh8dbU9.js} +0 -0
  983. /package/{train.component-D_ysGCwu.js → train.component-DuFi_iBX.js} +0 -0
  984. /package/{visual-checkbox.component-CdqoYyEe.js → visual-checkbox.component-BsjmJgcn.js} +0 -0
@@ -368,4 +368,4 @@ var SbbElement = class extends LitElement {
368
368
  //#endregion
369
369
  export { SbbElement, SbbSlottedChangeEvent, appendAriaElements, removeAriaElements, ɵstateController };
370
370
 
371
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9iYXNlLWVsZW1lbnRzL2VsZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaXNTZXJ2ZXIsXG4gIExpdEVsZW1lbnQsXG4gIHR5cGUgUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsXG59IGZyb20gJ2xpdCc7XG5cbi8vIE1vc3Qgb2Ygb3VyIHRhcmdldCBicm93c2VycyBzdXBwb3J0IHRoZSA6c3RhdGUoKSBwc2V1ZG8gY2xhc3MsIGJ1dCBub3QgYWxsIG9mIHRoZW0uXG4vLyBXZSBwYXRjaCB0aGUgc3RhdGVzIHByb3BlcnR5IG9mIHRoZSBlbGVtZW50IGludGVybmFscyB0byB1c2UgYXR0cmlidXRlcyBpbnN0ZWFkLFxuLy8gaWYgOnN0YXRlKCkgaXMgbm90IHN1cHBvcnRlZC5cbi8vIE5vdGUgdGhhdCBmb3IgU1NSLCB0aGUgc3RhdGVzIHByb3BlcnR5IGlzIGEgc2ltcGxlIFNldCwgaW1wbGVtZW50ZWQgaW4gTGl0IFNTUi5cbnR5cGUgQ3VzdG9tU3RhdGVTZXRJbnRlcmZhY2UgPSBDdXN0b21TdGF0ZVNldDtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmNvbnN0IEN1c3RvbVN0YXRlU2V0UG9seWZpbGw6IChuZXcgKGhvc3Q6IExpdEVsZW1lbnQpID0+IEN1c3RvbVN0YXRlU2V0SW50ZXJmYWNlKSB8IG51bGwgPVxuICBpc1NlcnZlciB8fCAhQ1NTLnN1cHBvcnRzKCdzZWxlY3Rvcig6c3RhdGUobG9hZGluZykpJylcbiAgICA/IGNsYXNzIEN1c3RvbVN0YXRlU2V0XG4gICAgICAgIGV4dGVuZHMgU2V0PHN0cmluZz5cbiAgICAgICAgaW1wbGVtZW50cyBDdXN0b21TdGF0ZVNldEludGVyZmFjZSwgUmVhY3RpdmVDb250cm9sbGVyXG4gICAgICB7XG4gICAgICAgIHByaXZhdGUgX2FwcGxpZWQgPSBpc1NlcnZlcjtcblxuICAgICAgICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfaG9zdDogTGl0RWxlbWVudCkge1xuICAgICAgICAgIHN1cGVyKCk7XG4gICAgICAgICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyKHRoaXMpO1xuICAgICAgICAgIGlmICghaXNTZXJ2ZXIpIHtcbiAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gYXBwbHkgdGhlIGF0dHJpYnV0ZXMgYXMgZWFybHkgYXMgcG9zc2libGUgd2hpY2ggY2FuXG4gICAgICAgICAgICAvLyBlaXRoZXIgYmUgdmlhIHRoaXMgUHJvbWlzZS5yZXNvbHZlKCkgb3IgdGhlIGNvbm5lY3RlZENhbGxiYWNrKCkuXG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHRoaXMuX2FwcGx5U3RhdGVzKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBvdmVycmlkZSBhZGQoc3RhdGU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICAgIGlmICh0aGlzLl9hcHBsaWVkKSB7XG4gICAgICAgICAgICB0aGlzLl90b2dnbGVTdGF0ZShzdGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBzdXBlci5hZGQoc3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIG92ZXJyaWRlIGRlbGV0ZShzdGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgICAgdGhpcy5fdG9nZ2xlU3RhdGUoc3RhdGUsIGZhbHNlKTtcbiAgICAgICAgICByZXR1cm4gc3VwZXIuZGVsZXRlKHN0YXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBvdmVycmlkZSBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgICB0aGlzLmZvckVhY2goKHN0YXRlKSA9PiB0aGlzLmRlbGV0ZShzdGF0ZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGhvc3RDb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgICAgICAgdGhpcy5fYXBwbHlTdGF0ZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByaXZhdGUgX3RvZ2dsZVN0YXRlKHN0YXRlOiBzdHJpbmcsIGVuYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgICB0aGlzLl9ob3N0LnRvZ2dsZUF0dHJpYnV0ZShgc3RhdGUtLSR7c3RhdGV9YCwgZW5hYmxlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBwcml2YXRlIF9hcHBseVN0YXRlcygpOiB2b2lkIHtcbiAgICAgICAgICBpZiAodGhpcy5fYXBwbGllZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9hcHBsaWVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmZvckVhY2goKHN0YXRlKSA9PiB0aGlzLl90b2dnbGVTdGF0ZShzdGF0ZSwgdHJ1ZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgOiBudWxsO1xuXG5pZiAoIWlzU2VydmVyKSB7XG4gIC8vIFRoaXMgaXMgYSBwb2x5ZmlsbCBmb3IgdGhlIGFyaWEgZWxlbWVudHMgcHJvcGVydGllcyBvbiBFbGVtZW50SW50ZXJuYWxzIGFuZCBFbGVtZW50LlxuICBsZXQgbmV4dElkID0gMDtcbiAgY29uc3QgcmVzb2x2ZUhvc3QgPSAob3JpZ2luOiBFbGVtZW50SW50ZXJuYWxzIHwgRWxlbWVudCk6IEVsZW1lbnQgPT5cbiAgICBvcmlnaW4uc2hhZG93Um9vdD8uaG9zdCA/P1xuICAgIChvcmlnaW4gaW5zdGFuY2VvZiBFbGVtZW50XG4gICAgICA/IG9yaWdpblxuICAgICAgOiAoKCkgPT4ge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHJlc29sdmUgcmVsYXRlZCBlbGVtZW50ISBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uJyk7XG4gICAgICAgIH0pKCkpO1xuICBjb25zdCBvYnNlcnZlck9wdGlvbnM6IE11dGF0aW9uT2JzZXJ2ZXJJbml0ID0geyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFsnaWQnXSB9O1xuICBjb25zdCBhc3NpZ25FbGVtZW50ID0gKFxuICAgIGhvc3Q6IEVsZW1lbnQsXG4gICAgYXR0cmlidXRlOiBzdHJpbmcsXG4gICAgZWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIEVsZW1lbnQ+LFxuICApOiB2b2lkID0+IHtcbiAgICAvLyBJbiBjYXNlIGJvdGggRWxlbWVudCBhbmQgRWxlbWVudEludGVybmFscyBwcm9wZXJ0aWVzIGFyZSBzZXQsXG4gICAgLy8gdGhlIGVsZW1lbnQgcmVmZXJlbmNlIGZyb20gRWxlbWVudCBoYXMgcHJpb3JpdHkuXG4gICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IGVsZW1lbnRzW0VsZW1lbnQubmFtZV0gPz8gZWxlbWVudHNbRWxlbWVudEludGVybmFscy5uYW1lXTtcbiAgICBob3N0LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIChhY3RpdmVFbGVtZW50LmlkIHx8PSBgYXJpYS1yZWYtJHtuZXh0SWQrK31gKSk7XG4gIH07XG4gIGNvbnN0IGFzc2lnbkVsZW1lbnRzID0gKFxuICAgIGhvc3Q6IEVsZW1lbnQsXG4gICAgYXR0cmlidXRlOiBzdHJpbmcsXG4gICAgZWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIEVsZW1lbnRbXT4sXG4gICk6IHZvaWQgPT4ge1xuICAgIC8vIEluIGNhc2UgYm90aCBFbGVtZW50IGFuZCBFbGVtZW50SW50ZXJuYWxzIHByb3BlcnRpZXMgYXJlIHNldCxcbiAgICAvLyB3ZSBjb21iaW5lIHRoZSBlbGVtZW50IHJlZmVyZW5jZXMuXG4gICAgaG9zdC5zZXRBdHRyaWJ1dGUoXG4gICAgICBhdHRyaWJ1dGUsXG4gICAgICBPYmplY3QudmFsdWVzKGVsZW1lbnRzKVxuICAgICAgICAucmVkdWNlKChjdXJyZW50LCBuZXh0KSA9PiBjdXJyZW50LmNvbmNhdChuZXh0KSlcbiAgICAgICAgLmZpbHRlcigodiwgaSwgYSkgPT4gYS5pbmRleE9mKHYpID09PSBpKVxuICAgICAgICAubWFwKChlKSA9PiBlLmlkIHx8IChlLmlkID0gYGFyaWEtcmVmLSR7bmV4dElkKyt9YCkpXG4gICAgICAgIC5qb2luKCcgJyksXG4gICAgKTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IHR5cGUgb2YgW0VsZW1lbnRJbnRlcm5hbHMsIEVsZW1lbnRdKSB7XG4gICAgY29uc3QgcHJvdG90eXBlID0gdHlwZS5wcm90b3R5cGU7XG4gICAgaWYgKCEoJ2FyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCcgaW4gcHJvdG90eXBlKSkge1xuICAgICAgY29uc3QgYXR0cmlidXRlID0gJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCc7XG4gICAgICBjb25zdCBzdG9yYWdlID0gbmV3IFdlYWtNYXA8XG4gICAgICAgIEVsZW1lbnQsXG4gICAgICAgIHsgZWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIEVsZW1lbnQ+OyBvYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlciB9XG4gICAgICA+KCk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCAnYXJpYUFjdGl2ZURlc2NlbmRhbnRFbGVtZW50Jywge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldCh0aGlzOiBFbGVtZW50SW50ZXJuYWxzIHwgRWxlbWVudCk6IEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgICBjb25zdCBob3N0ID0gcmVzb2x2ZUhvc3QodGhpcyk7XG4gICAgICAgICAgY29uc3QgaWQgPSBob3N0LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpPy5zcGxpdCgvXFxzKy8pWzBdID8/IG51bGw7XG4gICAgICAgICAgcmV0dXJuIGlkXG4gICAgICAgICAgICA/ICgoaG9zdC5nZXRSb290Tm9kZSgpIGFzIERvY3VtZW50IHwgU2hhZG93Um9vdCkuZ2V0RWxlbWVudEJ5SWQ/LihpZCkgPz8gbnVsbClcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0KHRoaXM6IEVsZW1lbnRJbnRlcm5hbHMgfCBFbGVtZW50LCB2YWx1ZTogRWxlbWVudCB8IG51bGwpIHtcbiAgICAgICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICAgICBgRmFpbGVkIHRvIHNldCB0aGUgJ2FyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCcgcHJvcGVydHkgb24gJyR7dHlwZS5uYW1lfSc6IEZhaWxlZCB0byBjb252ZXJ0IHZhbHVlIHRvICdFbGVtZW50Jy5gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBob3N0ID0gcmVzb2x2ZUhvc3QodGhpcyk7XG4gICAgICAgICAgY29uc3QgZW50cnkgPSBzdG9yYWdlLmdldChob3N0KTtcbiAgICAgICAgICBlbnRyeT8ub2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgICBkZWxldGUgZW50cnkuZWxlbWVudHNbdHlwZS5uYW1lXTtcbiAgICAgICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhlbnRyeSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc3RvcmFnZS5kZWxldGUoaG9zdCk7XG4gICAgICAgICAgICAgICAgaG9zdC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBlbnRyeS5vYnNlcnZlci5vYnNlcnZlKE9iamVjdC52YWx1ZXMoZW50cnkuZWxlbWVudHMpWzBdLCBvYnNlcnZlck9wdGlvbnMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICghZW50cnkpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBFbGVtZW50PiA9IHsgW3R5cGUubmFtZV06IHZhbHVlIH07XG4gICAgICAgICAgICBhc3NpZ25FbGVtZW50KGhvc3QsIGF0dHJpYnV0ZSwgZWxlbWVudHMpO1xuICAgICAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiBhc3NpZ25FbGVtZW50KGhvc3QsIGF0dHJpYnV0ZSwgZWxlbWVudHMpKTtcbiAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUodmFsdWUsIG9ic2VydmVyT3B0aW9ucyk7XG4gICAgICAgICAgICBzdG9yYWdlLnNldChob3N0LCB7IGVsZW1lbnRzLCBvYnNlcnZlciB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW50cnkuZWxlbWVudHNbdHlwZS5uYW1lXSA9IHZhbHVlO1xuICAgICAgICAgICAgYXNzaWduRWxlbWVudChob3N0LCBhdHRyaWJ1dGUsIGVudHJ5LmVsZW1lbnRzKTtcbiAgICAgICAgICAgIE9iamVjdC52YWx1ZXMoZW50cnkuZWxlbWVudHMpLmZvckVhY2goKGUpID0+XG4gICAgICAgICAgICAgIGVudHJ5Lm9ic2VydmVyLm9ic2VydmUoZSwgb2JzZXJ2ZXJPcHRpb25zKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBbXG4gICAgICAnYXJpYUNvbnRyb2xzRWxlbWVudHMnLFxuICAgICAgJ2FyaWFEZXNjcmliZWRCeUVsZW1lbnRzJyxcbiAgICAgICdhcmlhRGV0YWlsc0VsZW1lbnRzJyxcbiAgICAgICdhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMnLFxuICAgICAgJ2FyaWFMYWJlbGxlZEJ5RWxlbWVudHMnLFxuICAgICAgJ2FyaWFPd25zRWxlbWVudHMnLFxuICAgIF0pIHtcbiAgICAgIGlmICghKHByb3BlcnR5IGluIHByb3RvdHlwZSkpIHtcbiAgICAgICAgY29uc3Qgc3RvcmFnZSA9IG5ldyBXZWFrTWFwPFxuICAgICAgICAgIEVsZW1lbnQsXG4gICAgICAgICAgeyBlbGVtZW50czogUmVjb3JkPHN0cmluZywgRWxlbWVudFtdPjsgb2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfVxuICAgICAgICA+KCk7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZSA9IGBhcmlhLSR7cHJvcGVydHkuc2xpY2UoNCwgLTgpLnRvTG93ZXJDYXNlKCl9YDtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBnZXQodGhpczogRWxlbWVudEludGVybmFscyB8IEVsZW1lbnQpOiByZWFkb25seSBFbGVtZW50W10gfCBudWxsIHtcbiAgICAgICAgICAgIGNvbnN0IGhvc3QgPSByZXNvbHZlSG9zdCh0aGlzKTtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gaG9zdFxuICAgICAgICAgICAgICAuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSlcbiAgICAgICAgICAgICAgPy5zcGxpdCgvXFxzKy8pXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHYsIGksIGEpID0+IGEuaW5kZXhPZih2KSA9PT0gaSlcbiAgICAgICAgICAgICAgLm1hcCgoaWQpID0+IChob3N0LmdldFJvb3ROb2RlKCkgYXMgRG9jdW1lbnQgfCBTaGFkb3dSb290KS5nZXRFbGVtZW50QnlJZD8uKGlkKSlcbiAgICAgICAgICAgICAgLmZpbHRlcigoZSkgPT4gZSBpbnN0YW5jZW9mIEVsZW1lbnQpO1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzPy5sZW5ndGggPyBPYmplY3QuZnJlZXplKGVsZW1lbnRzKSA6IG51bGw7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXQodGhpczogRWxlbWVudEludGVybmFscyB8IEVsZW1lbnQsIHZhbHVlOiBFbGVtZW50W10pIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgKCFBcnJheS5pc0FycmF5KHZhbHVlKSB8fCB2YWx1ZS5zb21lKChlbGVtZW50KSA9PiAhKGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50KSkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICAgICAgICBgRmFpbGVkIHRvIHNldCB0aGUgJyR7cHJvcGVydHl9JyBwcm9wZXJ0eSBvbiAnJHt0eXBlLm5hbWV9JzogRmFpbGVkIHRvIGNvbnZlcnQgdmFsdWUgdG8gJ0VsZW1lbnQnLmAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGhvc3QgPSByZXNvbHZlSG9zdCh0aGlzKTtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWU/LmZpbHRlcigodiwgaSwgYSkgPT4gYS5pbmRleE9mKHYpID09PSBpKSA/PyBudWxsO1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSBzdG9yYWdlLmdldChob3N0KTtcbiAgICAgICAgICAgIGVudHJ5Py5vYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBlbnRyeS5lbGVtZW50c1t0eXBlLm5hbWVdO1xuICAgICAgICAgICAgICAgIGlmICghT2JqZWN0LmtleXMoZW50cnkuZWxlbWVudHMpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgc3RvcmFnZS5kZWxldGUoaG9zdCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIE9iamVjdC52YWx1ZXMoZW50cnkuZWxlbWVudHMpXG4gICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGN1cnJlbnQsIG5leHQpID0+IGN1cnJlbnQuY29uY2F0KG5leHQpKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZSkgPT4gZW50cnkub2JzZXJ2ZXIub2JzZXJ2ZShlLCBvYnNlcnZlck9wdGlvbnMpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIWVudHJ5KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBFbGVtZW50W10+ID0geyBbdHlwZS5uYW1lXTogdmFsdWUgfTtcbiAgICAgICAgICAgICAgYXNzaWduRWxlbWVudHMoaG9zdCwgYXR0cmlidXRlLCBlbGVtZW50cyk7XG4gICAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT5cbiAgICAgICAgICAgICAgICBhc3NpZ25FbGVtZW50cyhob3N0LCBhdHRyaWJ1dGUsIGVsZW1lbnRzKSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgoZWxlbWVudCkgPT4gb2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50LCBvYnNlcnZlck9wdGlvbnMpKTtcbiAgICAgICAgICAgICAgc3RvcmFnZS5zZXQoaG9zdCwgeyBlbGVtZW50cywgb2JzZXJ2ZXIgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlbnRyeS5lbGVtZW50c1t0eXBlLm5hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICAgIGFzc2lnbkVsZW1lbnRzKGhvc3QsIGF0dHJpYnV0ZSwgZW50cnkuZWxlbWVudHMpO1xuICAgICAgICAgICAgICBPYmplY3QudmFsdWVzKGVudHJ5LmVsZW1lbnRzKVxuICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGN1cnJlbnQsIG5leHQpID0+IGN1cnJlbnQuY29uY2F0KG5leHQpKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChlKSA9PiBlbnRyeS5vYnNlcnZlci5vYnNlcnZlKGUsIG9ic2VydmVyT3B0aW9ucykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBhdHRhY2hlZEVsZW1lbnRJbnRlcm5hbHMgPSBuZXcgV2Vha01hcDxFbGVtZW50LCBFbGVtZW50SW50ZXJuYWxzPigpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNiYlN0YXRlQ29udHJvbGxlciB7XG4gIGFkZCh2YWx1ZTogc3RyaW5nKTogdGhpcztcbiAgZGVsZXRlKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuO1xuICBoYXModmFsdWU6IHN0cmluZyk6IGJvb2xlYW47XG4gIHRvZ2dsZSh2YWx1ZTogc3RyaW5nLCBmb3JjZT86IGJvb2xlYW4pOiB2b2lkO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzdGF0ZSBjb250cm9sbGVyIGZvciB0aGUgZ2l2ZW4gZWxlbWVudC5cbiAqIE5PVCBJTlRFTkRFRCBUTyBCRSBVU0VEIEJZIENPTlNVTUVSUyFcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gybVzdGF0ZUNvbnRyb2xsZXIoZWxlbWVudDogRWxlbWVudCk6IFNiYlN0YXRlQ29udHJvbGxlcjtcbmV4cG9ydCBmdW5jdGlvbiDJtXN0YXRlQ29udHJvbGxlcihlbGVtZW50OiBFbGVtZW50IHwgdW5kZWZpbmVkIHwgbnVsbCk6IFNiYlN0YXRlQ29udHJvbGxlciB8IG51bGw7XG5leHBvcnQgZnVuY3Rpb24gybVzdGF0ZUNvbnRyb2xsZXIoZWxlbWVudDogRWxlbWVudCB8IHVuZGVmaW5lZCB8IG51bGwpOiBTYmJTdGF0ZUNvbnRyb2xsZXIgfCBudWxsIHtcbiAgaWYgKCFlbGVtZW50KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3Qgc3RhdGVzID0gYXR0YWNoZWRFbGVtZW50SW50ZXJuYWxzLmdldChlbGVtZW50KT8uc3RhdGVzO1xuICBjb25zdCB0b2dnbGU6IFNiYlN0YXRlQ29udHJvbGxlclsndG9nZ2xlJ10gPSBmdW5jdGlvbiAodGhpczogU2JiU3RhdGVDb250cm9sbGVyLCB2YWx1ZSwgZm9yY2UpIHtcbiAgICBpZiAoZm9yY2UgfHwgKGZvcmNlICE9PSBmYWxzZSAmJiAhdGhpcy5oYXModmFsdWUpKSkge1xuICAgICAgdGhpcy5hZGQodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlbGV0ZSh2YWx1ZSk7XG4gICAgfVxuICB9O1xuICBpZiAoc3RhdGVzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFkZCh2YWx1ZSkge1xuICAgICAgICBzdGF0ZXMuYWRkKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgZGVsZXRlOiAodmFsdWUpID0+IHN0YXRlcy5kZWxldGUodmFsdWUpLFxuICAgICAgaGFzOiAodmFsdWUpID0+IHN0YXRlcy5oYXModmFsdWUpLFxuICAgICAgdG9nZ2xlLFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgLy8gSWYgbm8gRWxlbWVudEludGVybmFscyBpcyBhdHRhY2hlZCwgd2UgZmFsbCBiYWNrIHRvIHVzaW5nIGF0dHJpYnV0ZXMuIEUuZy4gZm9yIHRyaWdnZXJzLlxuICAgIHJldHVybiB7XG4gICAgICBhZGQodmFsdWUpIHtcbiAgICAgICAgZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoYHN0YXRlLS0ke3ZhbHVlfWAsIHRydWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICBkZWxldGU6ICh2YWx1ZSkgPT4gZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoYHN0YXRlLS0ke3ZhbHVlfWAsIGZhbHNlKSxcbiAgICAgIGhhczogKHZhbHVlKSA9PiBlbGVtZW50Lmhhc0F0dHJpYnV0ZShgc3RhdGUtLSR7dmFsdWV9YCksXG4gICAgICB0b2dnbGUsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2JiU2xvdHRlZENoYW5nZUV2ZW50IGV4dGVuZHMgRXZlbnQge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHNsb3Q6IEhUTUxTbG90RWxlbWVudCkge1xuICAgIHN1cGVyKCdzbG90dGVkY2hhbmdlJywgeyBjb21wb3NlZDogdHJ1ZSB9KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNiYlByb3BlcnR5VmFsdWVzIHtcbiAgb2xkVmFsdWU/OiB1bmtub3duO1xuICB2YWx1ZT86IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JiUmVhY3RpdmVDb250cm9sbGVyIGV4dGVuZHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgaG9zdFByb3BlcnR5VXBkYXRlPyhcbiAgICBuYW1lOiBQcm9wZXJ0eUtleSxcbiAgICB2YWx1ZXM/OiBTYmJQcm9wZXJ0eVZhbHVlcyxcbiAgICBvcHRpb25zPzogUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgKTogdm9pZDtcbn1cblxuLyoqXG4gKiBBcHBlbmRzIHRoZSBnaXZlbiBlbGVtZW50cyB0byB0aGUgZ2l2ZW4gYXJpYSB2YWx1ZSBhbmQgcmV0dXJucyB0aGVcbiAqIGNvbWJpbmVkIHZhbHVlIGFzIGEgbmV3IGFycmF5IG9yIG51bGwsIGlmIGJvdGggdmFsdWVzIHdlcmUgZW1wdHkuXG4gKi9cbmV4cG9ydCBjb25zdCBhcHBlbmRBcmlhRWxlbWVudHMgPSAoXG4gIGFyaWFWYWx1ZTogcmVhZG9ubHkgRWxlbWVudFtdIHwgbnVsbCxcbiAgLi4ubmV3RWxlbWVudHM6IChFbGVtZW50IHwgbnVsbClbXVxuKTogRWxlbWVudFtdIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGVsZW1lbnRzID0gbmV3RWxlbWVudHMuZmlsdGVyKCh2KTogdiBpcyBFbGVtZW50ID0+ICEhdik7XG4gIHJldHVybiBhcmlhVmFsdWU/Lmxlbmd0aCA/IGFyaWFWYWx1ZS5jb25jYXQoZWxlbWVudHMpIDogbmV3RWxlbWVudHMubGVuZ3RoID8gZWxlbWVudHMgOiBudWxsO1xufTtcblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBnaXZlbiBlbGVtZW50cyBmcm9tIHRoZSBnaXZlbiBhcmlhIHZhbHVlIGFuZCByZXR1cm5zXG4gKiB0aGUgcmVtYWluaW5nIGVsZW1lbnRzIGFzIGEgbmV3IGFycmF5IG9yIG51bGwsIGlmIHRoZSByZXN1bHQgaXMgZW1wdHkuXG4gKi9cbmV4cG9ydCBjb25zdCByZW1vdmVBcmlhRWxlbWVudHMgPSAoXG4gIGFyaWFWYWx1ZTogcmVhZG9ubHkgRWxlbWVudFtdIHwgbnVsbCxcbiAgLi4ucmVtb3ZhYmxlRWxlbWVudHM6IChFbGVtZW50IHwgbnVsbClbXVxuKTogRWxlbWVudFtdIHwgbnVsbCA9PiB7XG4gIHJlbW92YWJsZUVsZW1lbnRzID0gcmVtb3ZhYmxlRWxlbWVudHMuZmlsdGVyKCh2KSA9PiAhIXYpO1xuICBjb25zdCBlbGVtZW50cyA9IGFyaWFWYWx1ZT8uZmlsdGVyKCh2KSA9PiAhcmVtb3ZhYmxlRWxlbWVudHMuaW5jbHVkZXModikpID8/IG51bGw7XG4gIHJldHVybiBlbGVtZW50cz8ubGVuZ3RoID8gZWxlbWVudHMgOiBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgU2JiRWxlbWVudFR5cGUgPSB0eXBlb2YgU2JiRWxlbWVudDtcblxuZXhwb3J0IGludGVyZmFjZSBTYmJFbGVtZW50Q29uc3RydWN0b3Ige1xuICBlbGVtZW50RGVwZW5kZW5jaWVzPzogU2JiRWxlbWVudFR5cGVbXTtcbiAgcm9sZT86IEVsZW1lbnRJbnRlcm5hbHNbJ3JvbGUnXTtcbn1cblxuLyoqXG4gKiBBIGJhc2UgY2xhc3MgZm9yIGFsbCBTQkIgZWxlbWVudHMuXG4gKiBJbmNsdWRlcyBhdHRhY2hpbmcgRWxlbWVudEludGVybmFscywgaGFuZGxpbmcgaHlkcmF0aW9uLCBhbmQgbWFuYWdpbmcgc3RhdGUuXG4gKi9cbi8vIFRPRE8oYnJlYWtpbmctY2hhbmdlKTogSW5saW5lIGFuZCByZW1vdmUgU2JiRWxlbWVudEludGVybmFsc01peGluIGFuZCBTYmJIeWRyYXRpb25NaXhpbiBhcyBhIGJyZWFraW5nIGNoYW5nZVxuZXhwb3J0IGNsYXNzIFNiYkVsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBbJ18kc2JiRWxlbWVudCQnXSA9IHRydWU7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZztcbiAgcHVibGljIHN0YXRpYyBlbGVtZW50RGVwZW5kZW5jaWVzPzogU2JiRWxlbWVudFR5cGVbXTtcbiAgcHVibGljIHN0YXRpYyByb2xlPzogRWxlbWVudEludGVybmFsc1sncm9sZSddO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGludGVybmFsczogRWxlbWVudEludGVybmFscyA9IHRoaXMuYXR0YWNoSW50ZXJuYWxzKCk7XG5cbiAgcHJpdmF0ZSBfY29udHJvbGxlcnM/OiBTZXQ8U2JiUmVhY3RpdmVDb250cm9sbGVyPjtcbiAgcHJpdmF0ZSBfaHlkcmF0aW9uUmVxdWlyZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX2h5ZHJhdGlvbkNvbXBsZXRlID0gbmV3IFByb21pc2U8Ym9vbGVhbj4oXG4gICAgKHJlc29sdmUpID0+ICh0aGlzLl9yZXNvbHZlSHlkcmF0aW9uID0gcmVzb2x2ZSksXG4gICk7XG4gIHByaXZhdGUgX3Jlc29sdmVIeWRyYXRpb24hOiAoaHlkcmF0aW9uUmVxdWlyZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHByaXZhdGUgX3RleHRPYnNlcnZlcj86IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZWxlbWVudCBoYXMgY29tcGxldGVkIGh5ZHJhdGlvbi5cbiAgICogVGhlIFByb21pc2UgdmFsdWUgaXMgYSBib29sZWFuIHRoYXQgaXMgYHRydWVgIGlmIHRoZSBlbGVtZW50IHJlcXVpcmVkIGh5ZHJhdGlvblxuICAgKiBhbmQgYGZhbHNlYCBpZiBub3QuXG4gICAqXG4gICAqIEByZXR1cm4gQSBwcm9taXNlIG9mIGEgYm9vbGVhbiB0aGF0IHJlc29sdmVzIHRvIHRydWUgb25jZSB0aGUgaHlkcmF0aW9uIGNvbXBsZXRlZC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZ2V0IGh5ZHJhdGlvbkNvbXBsZXRlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9oeWRyYXRpb25Db21wbGV0ZTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHdoZXRoZXIgaHlkcmF0aW9uIGlzIHJlcXVpcmVkIGFuZCBub3QgY29tcGxldGVkLiAqL1xuICBwcm90ZWN0ZWQgZ2V0IGh5ZHJhdGlvblJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oeWRyYXRpb25SZXF1aXJlZDtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGF0dGFjaGVkRWxlbWVudEludGVybmFscy5zZXQodGhpcywgdGhpcy5pbnRlcm5hbHMpO1xuICAgIGlmIChDdXN0b21TdGF0ZVNldFBvbHlmaWxsKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5pbnRlcm5hbHMsICdzdGF0ZXMnLCB7XG4gICAgICAgIHZhbHVlOiBuZXcgQ3VzdG9tU3RhdGVTZXRQb2x5ZmlsbCh0aGlzKSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBXZSB1c2UgdGhlIEN1c3RvbVN0YXRlU2V0IHBvbHlmaWxsIGluIFNTUiwgd2hpY2ggcmVuZGVycyB0aGUgc3RhdGUgYXMgYXR0cmlidXRlc1xuICAgICAgLy8gd2hpY2ggY2FuIGJlIHRyYW5zZmVycmVkIHRvIGNsaWVudCBzaWRlLCB3aGVyZSB3ZSBjYW4gdGhlbiBjb252ZXJ0IFtzdGF0ZS0tKl1cbiAgICAgIC8vIGF0dHJpYnV0ZXMgdG8gaW50ZXJuYWwgc3RhdGUuXG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgdGhpcy5nZXRBdHRyaWJ1dGVOYW1lcygpLmZpbHRlcigobikgPT4gbi5zdGFydHNXaXRoKCdzdGF0ZS0tJykpKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQobmFtZS5zbGljZSg3KSk7XG4gICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByb2xlID0gKHRoaXMuY29uc3RydWN0b3IgYXMgU2JiRWxlbWVudENvbnN0cnVjdG9yKS5yb2xlO1xuICAgIGlmIChyb2xlKSB7XG4gICAgICB0aGlzLmludGVybmFscy5yb2xlID0gcm9sZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayB3aGV0aGVyIGh5ZHJhdGlvbiBpcyBuZWVkZWQgYnkgY2hlY2tpbmcgd2hldGhlciB0aGUgc2hhZG93IHJvb3RcbiAgICAvLyBpcyBhdmFpbGFibGUgZHVyaW5nIGNvbnN0cnVjdGlvbi91cGdyYWRlIHBoYXNlLlxuICAgIHRoaXMuX2h5ZHJhdGlvblJlcXVpcmVkID0gISF0aGlzLnNoYWRvd1Jvb3Q7XG4gICAgaWYgKCF0aGlzLl9oeWRyYXRpb25SZXF1aXJlZCkge1xuICAgICAgdGhpcy5fcmVzb2x2ZUh5ZHJhdGlvbihmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIER1cmluZyBoeWRyYXRpb24gcGhhc2UsIHdlIHdhbnQgdG8gc3VwcHJlc3Mgc2xvdGNoYW5nZSBldmVudHMgYXMgdGhleVxuICAgICAgLy8gY2FuIGNhdXNlIHJlbmRlciBkaWZmZXJlbmNlcywgd2hpY2ggd291bGQgYnJlYWsgaHlkcmF0aW9uLiBBZnRlclxuICAgICAgLy8gaHlkcmF0aW9uIGlzIGNvbXBsZXRlLCB3ZSBkaXNwYXRjaCBhIG1hbnVhbCBzbG90Y2hhbmdlIGV2ZW50LCBpZiB0aGVyZVxuICAgICAgLy8gYXJlIGVsZW1lbnRzIGFzc2lnbmVkIHRvIGEgc2xvdC5cbiAgICAgIGNvbnN0IHN1cHByZXNzU2xvdGNoYW5nZUV2ZW50ID0gKGV2ZW50OiBFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAodGhpcy5faHlkcmF0aW9uUmVxdWlyZWQpIHtcbiAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGV2ZW50T3B0aW9uczogRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7IGNhcHR1cmU6IHRydWUgfTtcbiAgICAgIGNvbnN0IHNsb3RzID0gdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yQWxsKCdzbG90Jyk7XG4gICAgICBpZiAoc2xvdHM/Lmxlbmd0aCkge1xuICAgICAgICBzbG90cy5mb3JFYWNoKChzbG90KSA9PlxuICAgICAgICAgIHNsb3QuYWRkRXZlbnRMaXN0ZW5lcignc2xvdGNoYW5nZScsIHN1cHByZXNzU2xvdGNoYW5nZUV2ZW50LCBldmVudE9wdGlvbnMpLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmh5ZHJhdGlvbkNvbXBsZXRlLnRoZW4oKCkgPT5cbiAgICAgICAgICBzbG90cy5mb3JFYWNoKChzbG90KSA9PiB7XG4gICAgICAgICAgICBzbG90LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCBzdXBwcmVzc1Nsb3RjaGFuZ2VFdmVudCwgZXZlbnRPcHRpb25zKTtcbiAgICAgICAgICAgIGlmIChzbG90LmFzc2lnbmVkTm9kZXMoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgICAgICAgICAgICBzbG90LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdzbG90Y2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogUmVnaXN0ZXIgdGhlIGN1c3RvbSBlbGVtZW50IGluIHRoZSBnbG9iYWwgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LiAqL1xuICBwdWJsaWMgc3RhdGljIGRlZmluZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZWxlbWVudE5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRoZSBzdGF0aWMgcHJvcGVydHkgXCJlbGVtZW50TmFtZVwiIGlzIG5vdCBkZWZpbmVkIG9uICR7dGhpcy5uYW1lfS4gUGxlYXNlIGRlZmluZSBpdCB0byByZWdpc3RlciB0aGUgY3VzdG9tIGVsZW1lbnQuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudENsYXNzID0gY3VzdG9tRWxlbWVudHMuZ2V0KHRoaXMuZWxlbWVudE5hbWUpO1xuICAgIGlmICghZWxlbWVudENsYXNzKSB7XG4gICAgICBjdXN0b21FbGVtZW50cy5kZWZpbmUodGhpcy5lbGVtZW50TmFtZSwgdGhpcyBhcyB1bmtub3duIGFzIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcik7XG5cbiAgICAgIGNvbnN0IGVsZW1lbnREZXBlbmRlbmNpZXM6IFNiYkVsZW1lbnRUeXBlW10gPSBbXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuICAgICAgbGV0IGN0b3I6IFNiYkVsZW1lbnRUeXBlID0gdGhpcztcbiAgICAgIHdoaWxlIChjdG9yWydfJHNiYkVsZW1lbnQkJ10pIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY3Rvci5lbGVtZW50RGVwZW5kZW5jaWVzKSkge1xuICAgICAgICAgIGVsZW1lbnREZXBlbmRlbmNpZXMucHVzaCguLi5jdG9yLmVsZW1lbnREZXBlbmRlbmNpZXMpO1xuICAgICAgICB9XG4gICAgICAgIGN0b3IgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY3Rvcik7XG4gICAgICB9XG4gICAgICBuZXcgU2V0KGVsZW1lbnREZXBlbmRlbmNpZXMpLmZvckVhY2goKGRlcGVuZGVuY3kpID0+IGRlcGVuZGVuY3kuZGVmaW5lKCkpO1xuICAgIH0gZWxzZSBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFViAmJiBlbGVtZW50Q2xhc3MgIT09IHRoaXMpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFRoZSBjdXN0b20gZWxlbWVudCB3aXRoIG5hbWUgXCIke3RoaXMuZWxlbWVudE5hbWV9XCIgaXMgYWxyZWFkeSBkZWZpbmVkLiBTa2lwcGluZy5gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY3JlYXRlUmVuZGVyUm9vdCgpOiBIVE1MRWxlbWVudCB8IERvY3VtZW50RnJhZ21lbnQge1xuICAgIGNvbnN0IHJvb3QgPSBzdXBlci5jcmVhdGVSZW5kZXJSb290KCk7XG4gICAgdGhpcy5zaGFkb3dSb290Py5hZGRFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdlJywgKGUpID0+XG4gICAgICB0aGlzLl9zbG90Y2hhbmdlSGFuZGxlcihlLCBlLnRhcmdldCBhcyBIVE1MU2xvdEVsZW1lbnQpLFxuICAgICk7XG4gICAgdGhpcy5zaGFkb3dSb290Py5hZGRFdmVudExpc3RlbmVyKCdzbG90dGVkY2hhbmdlJywgKGUpID0+IHRoaXMuX3Nsb3RjaGFuZ2VIYW5kbGVyKGUsIGUuc2xvdCksIHtcbiAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5zaGFkb3dSb290XG4gICAgICA/LnF1ZXJ5U2VsZWN0b3JBbGw/Lignc2xvdCcpXG4gICAgICAuZm9yRWFjaCgoc2xvdCkgPT4gdGhpcy5faGFuZGxlU2xvdENoYW5nZUZvclNsb3R0ZWRTdGF0ZShzbG90KSk7XG5cbiAgICByZXR1cm4gcm9vdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBgUmVhY3RpdmVDb250cm9sbGVyYCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgZWxlbWVudCdzIHJlYWN0aXZlXG4gICAqIHVwZGF0ZSBjeWNsZS4gVGhlIGVsZW1lbnQgYXV0b21hdGljYWxseSBjYWxscyBpbnRvIGFueSByZWdpc3RlcmVkXG4gICAqIGNvbnRyb2xsZXJzIGR1cmluZyBpdHMgbGlmZWN5Y2xlIGNhbGxiYWNrcy5cbiAgICpcbiAgICogSWYgdGhlIGVsZW1lbnQgaXMgY29ubmVjdGVkIHdoZW4gYGFkZENvbnRyb2xsZXIoKWAgaXMgY2FsbGVkLCB0aGVcbiAgICogY29udHJvbGxlcidzIGBob3N0Q29ubmVjdGVkKClgIGNhbGxiYWNrIHdpbGwgYmUgaW1tZWRpYXRlbHkgY2FsbGVkLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFkZENvbnRyb2xsZXIoY29udHJvbGxlcjogU2JiUmVhY3RpdmVDb250cm9sbGVyKTogdm9pZCB7XG4gICAgc3VwZXIuYWRkQ29udHJvbGxlcihjb250cm9sbGVyKTtcbiAgICAodGhpcy5fY29udHJvbGxlcnMgPz89IG5ldyBTZXQoKSkuYWRkKGNvbnRyb2xsZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBgUmVhY3RpdmVDb250cm9sbGVyYCBmcm9tIHRoZSBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHJlbW92ZUNvbnRyb2xsZXIoY29udHJvbGxlcjogU2JiUmVhY3RpdmVDb250cm9sbGVyKTogdm9pZCB7XG4gICAgc3VwZXIucmVtb3ZlQ29udHJvbGxlcihjb250cm9sbGVyKTtcbiAgICB0aGlzLl9jb250cm9sbGVycz8uZGVsZXRlKGNvbnRyb2xsZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3RzIGFuIHVwZGF0ZSB3aGljaCBpcyBwcm9jZXNzZWQgYXN5bmNocm9ub3VzbHkuIFRoaXMgc2hvdWxkIGJlIGNhbGxlZFxuICAgKiB3aGVuIGFuIGVsZW1lbnQgc2hvdWxkIHVwZGF0ZSBiYXNlZCBvbiBzb21lIHN0YXRlIG5vdCB0cmlnZ2VyZWQgYnkgc2V0dGluZ1xuICAgKiBhIHJlYWN0aXZlIHByb3BlcnR5LiBJbiB0aGlzIGNhc2UsIHBhc3Mgbm8gYXJndW1lbnRzLiBJdCBzaG91bGQgYWxzbyBiZVxuICAgKiBjYWxsZWQgd2hlbiBtYW51YWxseSBpbXBsZW1lbnRpbmcgYSBwcm9wZXJ0eSBzZXR0ZXIuIEluIHRoaXMgY2FzZSwgcGFzcyB0aGVcbiAgICogcHJvcGVydHkgYG5hbWVgIGFuZCBgb2xkVmFsdWVgIHRvIGVuc3VyZSB0aGF0IGFueSBjb25maWd1cmVkIHByb3BlcnR5XG4gICAqIG9wdGlvbnMgYXJlIGhvbm9yZWQuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIG5hbWUgb2YgcmVxdWVzdGluZyBwcm9wZXJ0eVxuICAgKiBAcGFyYW0gb2xkVmFsdWUgb2xkIHZhbHVlIG9mIHJlcXVlc3RpbmcgcHJvcGVydHlcbiAgICogQHBhcmFtIG9wdGlvbnMgcHJvcGVydHkgb3B0aW9ucyB0byB1c2UgaW5zdGVhZCBvZiB0aGUgcHJldmlvdXNseVxuICAgKiAgICAgY29uZmlndXJlZCBvcHRpb25zXG4gICAqIEBwYXJhbSB1c2VOZXdWYWx1ZSBpZiB0cnVlLCB0aGUgbmV3VmFsdWUgYXJndW1lbnQgaXMgdXNlZCBpbnN0ZWFkIG9mXG4gICAqICAgICByZWFkaW5nIHRoZSBwcm9wZXJ0eSB2YWx1ZS4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gdXNlIGlmIHRoZSByZWFjdGl2ZVxuICAgKiAgICAgcHJvcGVydHkgaXMgYSBzdGFuZGFyZCBwcml2YXRlIGFjY2Vzc29yLCBhcyBvcHBvc2VkIHRvIGEgcGxhaW5cbiAgICogICAgIHByb3BlcnR5LCBzaW5jZSBwcml2YXRlIG1lbWJlcnMgY2FuJ3QgYmUgZHluYW1pY2FsbHkgcmVhZCBieSBuYW1lLlxuICAgKiBAcGFyYW0gbmV3VmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgcHJvcGVydHkuIFRoaXMgaXMgb25seSB1c2VkIGlmXG4gICAqICAgICBgdXNlTmV3VmFsdWVgIGlzIHRydWUuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgcmVxdWVzdFVwZGF0ZShcbiAgICBuYW1lPzogUHJvcGVydHlLZXksXG4gICAgb2xkVmFsdWU/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICAgIHVzZU5ld1ZhbHVlPzogYm9vbGVhbixcbiAgICBuZXdWYWx1ZT86IHVua25vd24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMsIHVzZU5ld1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIGNvbnN0IHZhbHVlczogU2JiUHJvcGVydHlWYWx1ZXMgPSB7XG4gICAgICAgIG9sZFZhbHVlLFxuICAgICAgICB2YWx1ZTogdXNlTmV3VmFsdWUgPyBuZXdWYWx1ZSA6IHRoaXNbbmFtZSBhcyBrZXlvZiB0aGlzXSxcbiAgICAgIH07XG4gICAgICB0aGlzLl9jb250cm9sbGVycz8uZm9yRWFjaCgoY29udHJvbGxlcikgPT5cbiAgICAgICAgY29udHJvbGxlci5ob3N0UHJvcGVydHlVcGRhdGU/LihuYW1lLCB2YWx1ZXMsIG9wdGlvbnMpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIC8vIFdoZW4gaHlkcmF0aW9uIGlzIG5lZWRlZCwgd2Ugd2FpdCB0aGUgaHlkcmF0aW9uIHByb2Nlc3MgdG8gZmluaXNoLCB3aGljaCBpcyBwYXRjaGVkXG4gICAgLy8gaW50byB0aGUgdXBkYXRlIG1ldGhvZCBvZiB0aGUgTGl0RWxlbWVudCBiYXNlIGNsYXNzLlxuICAgIHN1cGVyLnVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAodGhpcy5faHlkcmF0aW9uUmVxdWlyZWQpIHtcbiAgICAgIHRoaXMuX2h5ZHJhdGlvblJlcXVpcmVkID0gZmFsc2U7XG4gICAgICB0aGlzLl9yZXNvbHZlSHlkcmF0aW9uKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVTdGF0ZSh2YWx1ZTogc3RyaW5nLCBmb3JjZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoZm9yY2UgfHwgKGZvcmNlICE9PSBmYWxzZSAmJiAhdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmhhcyh2YWx1ZSkpKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2xvdGNoYW5nZUhhbmRsZXIoZXZlbnQ6IEV2ZW50LCBzbG90OiBIVE1MU2xvdEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCByZXNvbHZlZFNsb3QgPSB0aGlzLnNoYWRvd1Jvb3QhLmNvbnRhaW5zKHNsb3QpXG4gICAgICA/IHNsb3RcbiAgICAgIDogZXZlbnRcbiAgICAgICAgICAuY29tcG9zZWRQYXRoKClcbiAgICAgICAgICAuZmluZChcbiAgICAgICAgICAgIChlbCk6IGVsIGlzIEhUTUxTbG90RWxlbWVudCA9PlxuICAgICAgICAgICAgICBlbCBpbnN0YW5jZW9mIEhUTUxTbG90RWxlbWVudCAmJiB0aGlzLnNoYWRvd1Jvb3QhLmNvbnRhaW5zKGVsKSxcbiAgICAgICAgICApO1xuICAgIGlmIChyZXNvbHZlZFNsb3QpIHtcbiAgICAgIHRoaXMuX2hhbmRsZVNsb3RDaGFuZ2VGb3JTbG90dGVkU3RhdGUocmVzb2x2ZWRTbG90KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVTbG90Q2hhbmdlRm9yU2xvdHRlZFN0YXRlKHNsb3Q6IEhUTUxTbG90RWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuX3VwZGF0ZVNsb3R0ZWRTdGF0ZShzbG90KTtcbiAgICBpZiAoIXNsb3QubmFtZSkge1xuICAgICAgdGhpcy5fb2JzZXJ2ZVRleHROb2Rlc0luU2xvdChzbG90KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVTbG90dGVkU3RhdGUoc2xvdDogSFRNTFNsb3RFbGVtZW50KTogdm9pZCB7XG4gICAgY29uc3Qgc3RhdGVOYW1lID0gc2xvdC5uYW1lID8gYHNsb3R0ZWQtJHtzbG90Lm5hbWV9YCA6ICdzbG90dGVkJztcbiAgICBjb25zdCBoYXNTbG90dGVkQ29udGVudCA9IHRoaXMuX2hhc1Nsb3R0ZWRDb250ZW50KHNsb3QpO1xuICAgIGlmIChoYXNTbG90dGVkQ29udGVudCAmJiAhdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmhhcyhzdGF0ZU5hbWUpKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKHN0YXRlTmFtZSk7XG4gICAgICAvKiogQGludGVybmFsICovXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IFNiYlNsb3R0ZWRDaGFuZ2VFdmVudChzbG90KSk7XG4gICAgfSBlbHNlIGlmICghaGFzU2xvdHRlZENvbnRlbnQgJiYgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmhhcyhzdGF0ZU5hbWUpKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKHN0YXRlTmFtZSk7XG4gICAgICAvKiogQGludGVybmFsICovXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IFNiYlNsb3R0ZWRDaGFuZ2VFdmVudChzbG90KSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb2JzZXJ2ZVRleHROb2Rlc0luU2xvdChzbG90OiBIVE1MU2xvdEVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLl90ZXh0T2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICAvLyBPbmx5IGNyZWF0ZSB0aGUgTXV0YXRpb25PYnNlcnZlciB3aGVuIGl0IGlzIGFjdHVhbGx5IG5lZWRlZCB0byBvcHRpbWl6ZSBwZXJmb3JtYW5jZS5cbiAgICB0aGlzLl90ZXh0T2JzZXJ2ZXIgPz89IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcbiAgICAgIGNvbnN0IHNsb3QgPSB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3I8SFRNTFNsb3RFbGVtZW50Pignc2xvdDpub3QoW25hbWVdKScpO1xuICAgICAgaWYgKHNsb3QpIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlU2xvdHRlZFN0YXRlKHNsb3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fdGV4dE9ic2VydmVyIS5kaXNjb25uZWN0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8gVGV4dCBub2RlcyBjYW4gYmUgZW1wdHkgYW5kIGZpbGxlZCBsYXRlciAob3IgdmljZSB2ZXJzYSkuXG4gICAgLy8gRmlsbGluZyBhbiBleGlzdGluZyBub2RlIGxhdGVyIHdvdWxkIG5vdCB0cmlnZ2VyIGFub3RoZXIgc2xvdGNoYW5nZSBldmVudC5cbiAgICAvLyBUaGVyZWZvcmUsIHdlIG5lZWQgdG8gb2JzZXJ2ZSB0ZXh0IG5vZGVzIGFuZCBjaGVjayBpZiB0aGV5IGJlY29tZSBmaWxsZWQgb3IgZW1wdHkuXG4gICAgLy8gVGhpcyBpcyBvbmx5IG5lZWRlZCBmb3IgdGhlIHVubmFtZWQgc2xvdCBhcyBmb3IgZXZlcnkgb3RoZXIgdGhlcmUgd291bGRcbiAgICAvLyBiZSBhIHRhZyB3aGljaCB0cmlnZ2VycyB0aGUgc2xvdCBjaGFuZ2UgZXZlbnQuXG4gICAgLy8gVGhlIG1haW4gcmVhc29uIGlzIHRoYXQgQW5ndWxhciBjcmVhdGVzIGVtcHR5IHRleHQgbm9kZXMgYW5kIGZpbGxzIHRoZW0gbGF0ZXIuXG4gICAgc2xvdFxuICAgICAgLmFzc2lnbmVkTm9kZXMoKVxuICAgICAgLmZpbHRlcigobikgPT4gbi5ub2RlVHlwZSA9PT0gbi5URVhUX05PREUpXG4gICAgICAuZm9yRWFjaCgobm9kZSkgPT4gdGhpcy5fdGV4dE9ic2VydmVyIS5vYnNlcnZlKG5vZGUsIHsgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KSk7XG4gIH1cblxuICBwcml2YXRlIF9oYXNTbG90dGVkQ29udGVudChzbG90OiBIVE1MU2xvdEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc2xvdC5uYW1lXG4gICAgICA/IHNsb3RcbiAgICAgICAgICAuYXNzaWduZWRFbGVtZW50cygpXG4gICAgICAgICAgLnNvbWUoKG5vZGUpID0+ICEobm9kZSBpbnN0YW5jZW9mIEhUTUxTbG90RWxlbWVudCkgfHwgdGhpcy5faGFzU2xvdHRlZENvbnRlbnQobm9kZSkpXG4gICAgICA6IHNsb3QuYXNzaWduZWROb2RlcygpLnNvbWUoKG5vZGUpID0+IHtcbiAgICAgICAgICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIEhUTUxTbG90RWxlbWVudFxuICAgICAgICAgICAgPyB0aGlzLl9oYXNTbG90dGVkQ29udGVudChub2RlKVxuICAgICAgICAgICAgOiBub2RlLm5vZGVUeXBlICE9PSBub2RlLlRFWFRfTk9ERSB8fCAhIW5vZGUudGV4dENvbnRlbnQ/LnRyaW0oKTtcbiAgICAgICAgfSk7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRFdmVudE1hcCB7XG4gICAgc2xvdHRlZGNoYW5nZTogU2JiU2xvdHRlZENoYW5nZUV2ZW50O1xuICB9XG4gIGludGVyZmFjZSBTaGFkb3dSb290RXZlbnRNYXAge1xuICAgIHNsb3R0ZWRjaGFuZ2U6IFNiYlNsb3R0ZWRDaGFuZ2VFdmVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQWNBLElBQU0seUJBQ0osWUFBWSxDQUFDLElBQUksU0FBUyxrREFBNEIsR0FDbEQsTUFBTSx1QkFDSSxJQUFXO0NBS25CLFlBQTJCLE9BQWlCO0FBQzFDLFNBQU87QUFEa0IsT0FBQSxRQUFBO0FBRm5CLE9BQUEsV0FBVztBQUlqQixPQUFLLE1BQU0sY0FBYyxLQUFLO0FBQzlCLE1BQUksQ0FBQyxTQUdILFNBQVEsU0FBUyxDQUFDLFdBQVcsS0FBSyxjQUFjLENBQUM7O0NBSXJDLElBQUksT0FBYTtBQUMvQixNQUFJLEtBQUssU0FDUCxN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
371
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9iYXNlLWVsZW1lbnRzL2VsZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaXNTZXJ2ZXIsXG4gIExpdEVsZW1lbnQsXG4gIHR5cGUgUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsXG59IGZyb20gJ2xpdCc7XG5cbi8vIE1vc3Qgb2Ygb3VyIHRhcmdldCBicm93c2VycyBzdXBwb3J0IHRoZSA6c3RhdGUoKSBwc2V1ZG8gY2xhc3MsIGJ1dCBub3QgYWxsIG9mIHRoZW0uXG4vLyBXZSBwYXRjaCB0aGUgc3RhdGVzIHByb3BlcnR5IG9mIHRoZSBlbGVtZW50IGludGVybmFscyB0byB1c2UgYXR0cmlidXRlcyBpbnN0ZWFkLFxuLy8gaWYgOnN0YXRlKCkgaXMgbm90IHN1cHBvcnRlZC5cbi8vIE5vdGUgdGhhdCBmb3IgU1NSLCB0aGUgc3RhdGVzIHByb3BlcnR5IGlzIGEgc2ltcGxlIFNldCwgaW1wbGVtZW50ZWQgaW4gTGl0IFNTUi5cbnR5cGUgQ3VzdG9tU3RhdGVTZXRJbnRlcmZhY2UgPSBDdXN0b21TdGF0ZVNldDtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmNvbnN0IEN1c3RvbVN0YXRlU2V0UG9seWZpbGw6IChuZXcgKGhvc3Q6IExpdEVsZW1lbnQpID0+IEN1c3RvbVN0YXRlU2V0SW50ZXJmYWNlKSB8IG51bGwgPVxuICBpc1NlcnZlciB8fCAhQ1NTLnN1cHBvcnRzKCdzZWxlY3Rvcig6c3RhdGUobG9hZGluZykpJylcbiAgICA/IGNsYXNzIEN1c3RvbVN0YXRlU2V0XG4gICAgICAgIGV4dGVuZHMgU2V0PHN0cmluZz5cbiAgICAgICAgaW1wbGVtZW50cyBDdXN0b21TdGF0ZVNldEludGVyZmFjZSwgUmVhY3RpdmVDb250cm9sbGVyXG4gICAgICB7XG4gICAgICAgIHByaXZhdGUgX2FwcGxpZWQgPSBpc1NlcnZlcjtcblxuICAgICAgICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfaG9zdDogTGl0RWxlbWVudCkge1xuICAgICAgICAgIHN1cGVyKCk7XG4gICAgICAgICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyKHRoaXMpO1xuICAgICAgICAgIGlmICghaXNTZXJ2ZXIpIHtcbiAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gYXBwbHkgdGhlIGF0dHJpYnV0ZXMgYXMgZWFybHkgYXMgcG9zc2libGUgd2hpY2ggY2FuXG4gICAgICAgICAgICAvLyBlaXRoZXIgYmUgdmlhIHRoaXMgUHJvbWlzZS5yZXNvbHZlKCkgb3IgdGhlIGNvbm5lY3RlZENhbGxiYWNrKCkuXG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHRoaXMuX2FwcGx5U3RhdGVzKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBvdmVycmlkZSBhZGQoc3RhdGU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICAgIGlmICh0aGlzLl9hcHBsaWVkKSB7XG4gICAgICAgICAgICB0aGlzLl90b2dnbGVTdGF0ZShzdGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBzdXBlci5hZGQoc3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIG92ZXJyaWRlIGRlbGV0ZShzdGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgICAgdGhpcy5fdG9nZ2xlU3RhdGUoc3RhdGUsIGZhbHNlKTtcbiAgICAgICAgICByZXR1cm4gc3VwZXIuZGVsZXRlKHN0YXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBvdmVycmlkZSBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgICB0aGlzLmZvckVhY2goKHN0YXRlKSA9PiB0aGlzLmRlbGV0ZShzdGF0ZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGhvc3RDb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgICAgICAgdGhpcy5fYXBwbHlTdGF0ZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByaXZhdGUgX3RvZ2dsZVN0YXRlKHN0YXRlOiBzdHJpbmcsIGVuYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgICB0aGlzLl9ob3N0LnRvZ2dsZUF0dHJpYnV0ZShgc3RhdGUtLSR7c3RhdGV9YCwgZW5hYmxlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBwcml2YXRlIF9hcHBseVN0YXRlcygpOiB2b2lkIHtcbiAgICAgICAgICBpZiAodGhpcy5fYXBwbGllZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9hcHBsaWVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmZvckVhY2goKHN0YXRlKSA9PiB0aGlzLl90b2dnbGVTdGF0ZShzdGF0ZSwgdHJ1ZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgOiBudWxsO1xuXG5pZiAoIWlzU2VydmVyKSB7XG4gIC8vIFRoaXMgaXMgYSBwb2x5ZmlsbCBmb3IgdGhlIGFyaWEgZWxlbWVudHMgcHJvcGVydGllcyBvbiBFbGVtZW50SW50ZXJuYWxzIGFuZCBFbGVtZW50LlxuICBsZXQgbmV4dElkID0gMDtcbiAgY29uc3QgcmVzb2x2ZUhvc3QgPSAob3JpZ2luOiBFbGVtZW50SW50ZXJuYWxzIHwgRWxlbWVudCk6IEVsZW1lbnQgPT5cbiAgICBvcmlnaW4uc2hhZG93Um9vdD8uaG9zdCA/P1xuICAgIChvcmlnaW4gaW5zdGFuY2VvZiBFbGVtZW50XG4gICAgICA/IG9yaWdpblxuICAgICAgOiAoKCkgPT4ge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHJlc29sdmUgcmVsYXRlZCBlbGVtZW50ISBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uJyk7XG4gICAgICAgIH0pKCkpO1xuICBjb25zdCBvYnNlcnZlck9wdGlvbnM6IE11dGF0aW9uT2JzZXJ2ZXJJbml0ID0geyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFsnaWQnXSB9O1xuICBjb25zdCBhc3NpZ25FbGVtZW50ID0gKFxuICAgIGhvc3Q6IEVsZW1lbnQsXG4gICAgYXR0cmlidXRlOiBzdHJpbmcsXG4gICAgZWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIEVsZW1lbnQ+LFxuICApOiB2b2lkID0+IHtcbiAgICAvLyBJbiBjYXNlIGJvdGggRWxlbWVudCBhbmQgRWxlbWVudEludGVybmFscyBwcm9wZXJ0aWVzIGFyZSBzZXQsXG4gICAgLy8gdGhlIGVsZW1lbnQgcmVmZXJlbmNlIGZyb20gRWxlbWVudCBoYXMgcHJpb3JpdHkuXG4gICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IGVsZW1lbnRzW0VsZW1lbnQubmFtZV0gPz8gZWxlbWVudHNbRWxlbWVudEludGVybmFscy5uYW1lXTtcbiAgICBob3N0LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIChhY3RpdmVFbGVtZW50LmlkIHx8PSBgYXJpYS1yZWYtJHtuZXh0SWQrK31gKSk7XG4gIH07XG4gIGNvbnN0IGFzc2lnbkVsZW1lbnRzID0gKFxuICAgIGhvc3Q6IEVsZW1lbnQsXG4gICAgYXR0cmlidXRlOiBzdHJpbmcsXG4gICAgZWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIEVsZW1lbnRbXT4sXG4gICk6IHZvaWQgPT4ge1xuICAgIC8vIEluIGNhc2UgYm90aCBFbGVtZW50IGFuZCBFbGVtZW50SW50ZXJuYWxzIHByb3BlcnRpZXMgYXJlIHNldCxcbiAgICAvLyB3ZSBjb21iaW5lIHRoZSBlbGVtZW50IHJlZmVyZW5jZXMuXG4gICAgaG9zdC5zZXRBdHRyaWJ1dGUoXG4gICAgICBhdHRyaWJ1dGUsXG4gICAgICBPYmplY3QudmFsdWVzKGVsZW1lbnRzKVxuICAgICAgICAucmVkdWNlKChjdXJyZW50LCBuZXh0KSA9PiBjdXJyZW50LmNvbmNhdChuZXh0KSlcbiAgICAgICAgLmZpbHRlcigodiwgaSwgYSkgPT4gYS5pbmRleE9mKHYpID09PSBpKVxuICAgICAgICAubWFwKChlKSA9PiBlLmlkIHx8IChlLmlkID0gYGFyaWEtcmVmLSR7bmV4dElkKyt9YCkpXG4gICAgICAgIC5qb2luKCcgJyksXG4gICAgKTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IHR5cGUgb2YgW0VsZW1lbnRJbnRlcm5hbHMsIEVsZW1lbnRdKSB7XG4gICAgY29uc3QgcHJvdG90eXBlID0gdHlwZS5wcm90b3R5cGU7XG4gICAgaWYgKCEoJ2FyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCcgaW4gcHJvdG90eXBlKSkge1xuICAgICAgY29uc3QgYXR0cmlidXRlID0gJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCc7XG4gICAgICBjb25zdCBzdG9yYWdlID0gbmV3IFdlYWtNYXA8XG4gICAgICAgIEVsZW1lbnQsXG4gICAgICAgIHsgZWxlbWVudHM6IFJlY29yZDxzdHJpbmcsIEVsZW1lbnQ+OyBvYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlciB9XG4gICAgICA+KCk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCAnYXJpYUFjdGl2ZURlc2NlbmRhbnRFbGVtZW50Jywge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldCh0aGlzOiBFbGVtZW50SW50ZXJuYWxzIHwgRWxlbWVudCk6IEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgICBjb25zdCBob3N0ID0gcmVzb2x2ZUhvc3QodGhpcyk7XG4gICAgICAgICAgY29uc3QgaWQgPSBob3N0LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpPy5zcGxpdCgvXFxzKy8pWzBdID8/IG51bGw7XG4gICAgICAgICAgcmV0dXJuIGlkXG4gICAgICAgICAgICA/ICgoaG9zdC5nZXRSb290Tm9kZSgpIGFzIERvY3VtZW50IHwgU2hhZG93Um9vdCkuZ2V0RWxlbWVudEJ5SWQ/LihpZCkgPz8gbnVsbClcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0KHRoaXM6IEVsZW1lbnRJbnRlcm5hbHMgfCBFbGVtZW50LCB2YWx1ZTogRWxlbWVudCB8IG51bGwpIHtcbiAgICAgICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICAgICBgRmFpbGVkIHRvIHNldCB0aGUgJ2FyaWFBY3RpdmVEZXNjZW5kYW50RWxlbWVudCcgcHJvcGVydHkgb24gJyR7dHlwZS5uYW1lfSc6IEZhaWxlZCB0byBjb252ZXJ0IHZhbHVlIHRvICdFbGVtZW50Jy5gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBob3N0ID0gcmVzb2x2ZUhvc3QodGhpcyk7XG4gICAgICAgICAgY29uc3QgZW50cnkgPSBzdG9yYWdlLmdldChob3N0KTtcbiAgICAgICAgICBlbnRyeT8ub2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgICBkZWxldGUgZW50cnkuZWxlbWVudHNbdHlwZS5uYW1lXTtcbiAgICAgICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhlbnRyeSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc3RvcmFnZS5kZWxldGUoaG9zdCk7XG4gICAgICAgICAgICAgICAgaG9zdC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBlbnRyeS5vYnNlcnZlci5vYnNlcnZlKE9iamVjdC52YWx1ZXMoZW50cnkuZWxlbWVudHMpWzBdLCBvYnNlcnZlck9wdGlvbnMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICghZW50cnkpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBFbGVtZW50PiA9IHsgW3R5cGUubmFtZV06IHZhbHVlIH07XG4gICAgICAgICAgICBhc3NpZ25FbGVtZW50KGhvc3QsIGF0dHJpYnV0ZSwgZWxlbWVudHMpO1xuICAgICAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiBhc3NpZ25FbGVtZW50KGhvc3QsIGF0dHJpYnV0ZSwgZWxlbWVudHMpKTtcbiAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUodmFsdWUsIG9ic2VydmVyT3B0aW9ucyk7XG4gICAgICAgICAgICBzdG9yYWdlLnNldChob3N0LCB7IGVsZW1lbnRzLCBvYnNlcnZlciB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW50cnkuZWxlbWVudHNbdHlwZS5uYW1lXSA9IHZhbHVlO1xuICAgICAgICAgICAgYXNzaWduRWxlbWVudChob3N0LCBhdHRyaWJ1dGUsIGVudHJ5LmVsZW1lbnRzKTtcbiAgICAgICAgICAgIE9iamVjdC52YWx1ZXMoZW50cnkuZWxlbWVudHMpLmZvckVhY2goKGUpID0+XG4gICAgICAgICAgICAgIGVudHJ5Lm9ic2VydmVyLm9ic2VydmUoZSwgb2JzZXJ2ZXJPcHRpb25zKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBbXG4gICAgICAnYXJpYUNvbnRyb2xzRWxlbWVudHMnLFxuICAgICAgJ2FyaWFEZXNjcmliZWRCeUVsZW1lbnRzJyxcbiAgICAgICdhcmlhRGV0YWlsc0VsZW1lbnRzJyxcbiAgICAgICdhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMnLFxuICAgICAgJ2FyaWFMYWJlbGxlZEJ5RWxlbWVudHMnLFxuICAgICAgJ2FyaWFPd25zRWxlbWVudHMnLFxuICAgIF0pIHtcbiAgICAgIGlmICghKHByb3BlcnR5IGluIHByb3RvdHlwZSkpIHtcbiAgICAgICAgY29uc3Qgc3RvcmFnZSA9IG5ldyBXZWFrTWFwPFxuICAgICAgICAgIEVsZW1lbnQsXG4gICAgICAgICAgeyBlbGVtZW50czogUmVjb3JkPHN0cmluZywgRWxlbWVudFtdPjsgb2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfVxuICAgICAgICA+KCk7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZSA9IGBhcmlhLSR7cHJvcGVydHkuc2xpY2UoNCwgLTgpLnRvTG93ZXJDYXNlKCl9YDtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwgcHJvcGVydHksIHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBnZXQodGhpczogRWxlbWVudEludGVybmFscyB8IEVsZW1lbnQpOiByZWFkb25seSBFbGVtZW50W10gfCBudWxsIHtcbiAgICAgICAgICAgIGNvbnN0IGhvc3QgPSByZXNvbHZlSG9zdCh0aGlzKTtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gaG9zdFxuICAgICAgICAgICAgICAuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSlcbiAgICAgICAgICAgICAgPy5zcGxpdCgvXFxzKy8pXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHYsIGksIGEpID0+IGEuaW5kZXhPZih2KSA9PT0gaSlcbiAgICAgICAgICAgICAgLm1hcCgoaWQpID0+IChob3N0LmdldFJvb3ROb2RlKCkgYXMgRG9jdW1lbnQgfCBTaGFkb3dSb290KS5nZXRFbGVtZW50QnlJZD8uKGlkKSlcbiAgICAgICAgICAgICAgLmZpbHRlcigoZSkgPT4gZSBpbnN0YW5jZW9mIEVsZW1lbnQpO1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzPy5sZW5ndGggPyBPYmplY3QuZnJlZXplKGVsZW1lbnRzKSA6IG51bGw7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXQodGhpczogRWxlbWVudEludGVybmFscyB8IEVsZW1lbnQsIHZhbHVlOiBFbGVtZW50W10pIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgKCFBcnJheS5pc0FycmF5KHZhbHVlKSB8fCB2YWx1ZS5zb21lKChlbGVtZW50KSA9PiAhKGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50KSkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICAgICAgICBgRmFpbGVkIHRvIHNldCB0aGUgJyR7cHJvcGVydHl9JyBwcm9wZXJ0eSBvbiAnJHt0eXBlLm5hbWV9JzogRmFpbGVkIHRvIGNvbnZlcnQgdmFsdWUgdG8gJ0VsZW1lbnQnLmAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGhvc3QgPSByZXNvbHZlSG9zdCh0aGlzKTtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWU/LmZpbHRlcigodiwgaSwgYSkgPT4gYS5pbmRleE9mKHYpID09PSBpKSA/PyBudWxsO1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSBzdG9yYWdlLmdldChob3N0KTtcbiAgICAgICAgICAgIGVudHJ5Py5vYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBlbnRyeS5lbGVtZW50c1t0eXBlLm5hbWVdO1xuICAgICAgICAgICAgICAgIGlmICghT2JqZWN0LmtleXMoZW50cnkuZWxlbWVudHMpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgc3RvcmFnZS5kZWxldGUoaG9zdCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIE9iamVjdC52YWx1ZXMoZW50cnkuZWxlbWVudHMpXG4gICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGN1cnJlbnQsIG5leHQpID0+IGN1cnJlbnQuY29uY2F0KG5leHQpKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZSkgPT4gZW50cnkub2JzZXJ2ZXIub2JzZXJ2ZShlLCBvYnNlcnZlck9wdGlvbnMpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIWVudHJ5KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBFbGVtZW50W10+ID0geyBbdHlwZS5uYW1lXTogdmFsdWUgfTtcbiAgICAgICAgICAgICAgYXNzaWduRWxlbWVudHMoaG9zdCwgYXR0cmlidXRlLCBlbGVtZW50cyk7XG4gICAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT5cbiAgICAgICAgICAgICAgICBhc3NpZ25FbGVtZW50cyhob3N0LCBhdHRyaWJ1dGUsIGVsZW1lbnRzKSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgoZWxlbWVudCkgPT4gb2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50LCBvYnNlcnZlck9wdGlvbnMpKTtcbiAgICAgICAgICAgICAgc3RvcmFnZS5zZXQoaG9zdCwgeyBlbGVtZW50cywgb2JzZXJ2ZXIgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlbnRyeS5lbGVtZW50c1t0eXBlLm5hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICAgIGFzc2lnbkVsZW1lbnRzKGhvc3QsIGF0dHJpYnV0ZSwgZW50cnkuZWxlbWVudHMpO1xuICAgICAgICAgICAgICBPYmplY3QudmFsdWVzKGVudHJ5LmVsZW1lbnRzKVxuICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGN1cnJlbnQsIG5leHQpID0+IGN1cnJlbnQuY29uY2F0KG5leHQpKVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChlKSA9PiBlbnRyeS5vYnNlcnZlci5vYnNlcnZlKGUsIG9ic2VydmVyT3B0aW9ucykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBhdHRhY2hlZEVsZW1lbnRJbnRlcm5hbHMgPSBuZXcgV2Vha01hcDxFbGVtZW50LCBFbGVtZW50SW50ZXJuYWxzPigpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNiYlN0YXRlQ29udHJvbGxlciB7XG4gIGFkZCh2YWx1ZTogc3RyaW5nKTogdGhpcztcbiAgZGVsZXRlKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuO1xuICBoYXModmFsdWU6IHN0cmluZyk6IGJvb2xlYW47XG4gIHRvZ2dsZSh2YWx1ZTogc3RyaW5nLCBmb3JjZT86IGJvb2xlYW4pOiB2b2lkO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzdGF0ZSBjb250cm9sbGVyIGZvciB0aGUgZ2l2ZW4gZWxlbWVudC5cbiAqIE5PVCBJTlRFTkRFRCBUTyBCRSBVU0VEIEJZIENPTlNVTUVSUyFcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gybVzdGF0ZUNvbnRyb2xsZXIoZWxlbWVudDogRWxlbWVudCk6IFNiYlN0YXRlQ29udHJvbGxlcjtcbmV4cG9ydCBmdW5jdGlvbiDJtXN0YXRlQ29udHJvbGxlcihlbGVtZW50OiBFbGVtZW50IHwgdW5kZWZpbmVkIHwgbnVsbCk6IFNiYlN0YXRlQ29udHJvbGxlciB8IG51bGw7XG5leHBvcnQgZnVuY3Rpb24gybVzdGF0ZUNvbnRyb2xsZXIoZWxlbWVudDogRWxlbWVudCB8IHVuZGVmaW5lZCB8IG51bGwpOiBTYmJTdGF0ZUNvbnRyb2xsZXIgfCBudWxsIHtcbiAgaWYgKCFlbGVtZW50KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3Qgc3RhdGVzID0gYXR0YWNoZWRFbGVtZW50SW50ZXJuYWxzLmdldChlbGVtZW50KT8uc3RhdGVzO1xuICBjb25zdCB0b2dnbGU6IFNiYlN0YXRlQ29udHJvbGxlclsndG9nZ2xlJ10gPSBmdW5jdGlvbiAodGhpczogU2JiU3RhdGVDb250cm9sbGVyLCB2YWx1ZSwgZm9yY2UpIHtcbiAgICBpZiAoZm9yY2UgfHwgKGZvcmNlICE9PSBmYWxzZSAmJiAhdGhpcy5oYXModmFsdWUpKSkge1xuICAgICAgdGhpcy5hZGQodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlbGV0ZSh2YWx1ZSk7XG4gICAgfVxuICB9O1xuICBpZiAoc3RhdGVzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFkZCh2YWx1ZSkge1xuICAgICAgICBzdGF0ZXMuYWRkKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgZGVsZXRlOiAodmFsdWUpID0+IHN0YXRlcy5kZWxldGUodmFsdWUpLFxuICAgICAgaGFzOiAodmFsdWUpID0+IHN0YXRlcy5oYXModmFsdWUpLFxuICAgICAgdG9nZ2xlLFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgLy8gSWYgbm8gRWxlbWVudEludGVybmFscyBpcyBhdHRhY2hlZCwgd2UgZmFsbCBiYWNrIHRvIHVzaW5nIGF0dHJpYnV0ZXMuIEUuZy4gZm9yIHRyaWdnZXJzLlxuICAgIHJldHVybiB7XG4gICAgICBhZGQodmFsdWUpIHtcbiAgICAgICAgZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoYHN0YXRlLS0ke3ZhbHVlfWAsIHRydWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICBkZWxldGU6ICh2YWx1ZSkgPT4gZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoYHN0YXRlLS0ke3ZhbHVlfWAsIGZhbHNlKSxcbiAgICAgIGhhczogKHZhbHVlKSA9PiBlbGVtZW50Lmhhc0F0dHJpYnV0ZShgc3RhdGUtLSR7dmFsdWV9YCksXG4gICAgICB0b2dnbGUsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2JiU2xvdHRlZENoYW5nZUV2ZW50IGV4dGVuZHMgRXZlbnQge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHNsb3Q6IEhUTUxTbG90RWxlbWVudCkge1xuICAgIHN1cGVyKCdzbG90dGVkY2hhbmdlJywgeyBjb21wb3NlZDogdHJ1ZSB9KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNiYlByb3BlcnR5VmFsdWVzIHtcbiAgb2xkVmFsdWU/OiB1bmtub3duO1xuICB2YWx1ZT86IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JiUmVhY3RpdmVDb250cm9sbGVyIGV4dGVuZHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgaG9zdFByb3BlcnR5VXBkYXRlPyhcbiAgICBuYW1lOiBQcm9wZXJ0eUtleSxcbiAgICB2YWx1ZXM/OiBTYmJQcm9wZXJ0eVZhbHVlcyxcbiAgICBvcHRpb25zPzogUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgKTogdm9pZDtcbn1cblxuLyoqXG4gKiBBcHBlbmRzIHRoZSBnaXZlbiBlbGVtZW50cyB0byB0aGUgZ2l2ZW4gYXJpYSB2YWx1ZSBhbmQgcmV0dXJucyB0aGVcbiAqIGNvbWJpbmVkIHZhbHVlIGFzIGEgbmV3IGFycmF5IG9yIG51bGwsIGlmIGJvdGggdmFsdWVzIHdlcmUgZW1wdHkuXG4gKi9cbmV4cG9ydCBjb25zdCBhcHBlbmRBcmlhRWxlbWVudHMgPSAoXG4gIGFyaWFWYWx1ZTogcmVhZG9ubHkgRWxlbWVudFtdIHwgbnVsbCxcbiAgLi4ubmV3RWxlbWVudHM6IChFbGVtZW50IHwgbnVsbClbXVxuKTogRWxlbWVudFtdIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGVsZW1lbnRzID0gbmV3RWxlbWVudHMuZmlsdGVyKCh2KTogdiBpcyBFbGVtZW50ID0+ICEhdik7XG4gIHJldHVybiBhcmlhVmFsdWU/Lmxlbmd0aCA/IGFyaWFWYWx1ZS5jb25jYXQoZWxlbWVudHMpIDogbmV3RWxlbWVudHMubGVuZ3RoID8gZWxlbWVudHMgOiBudWxsO1xufTtcblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBnaXZlbiBlbGVtZW50cyBmcm9tIHRoZSBnaXZlbiBhcmlhIHZhbHVlIGFuZCByZXR1cm5zXG4gKiB0aGUgcmVtYWluaW5nIGVsZW1lbnRzIGFzIGEgbmV3IGFycmF5IG9yIG51bGwsIGlmIHRoZSByZXN1bHQgaXMgZW1wdHkuXG4gKi9cbmV4cG9ydCBjb25zdCByZW1vdmVBcmlhRWxlbWVudHMgPSAoXG4gIGFyaWFWYWx1ZTogcmVhZG9ubHkgRWxlbWVudFtdIHwgbnVsbCxcbiAgLi4ucmVtb3ZhYmxlRWxlbWVudHM6IChFbGVtZW50IHwgbnVsbClbXVxuKTogRWxlbWVudFtdIHwgbnVsbCA9PiB7XG4gIHJlbW92YWJsZUVsZW1lbnRzID0gcmVtb3ZhYmxlRWxlbWVudHMuZmlsdGVyKCh2KSA9PiAhIXYpO1xuICBjb25zdCBlbGVtZW50cyA9IGFyaWFWYWx1ZT8uZmlsdGVyKCh2KSA9PiAhcmVtb3ZhYmxlRWxlbWVudHMuaW5jbHVkZXModikpID8/IG51bGw7XG4gIHJldHVybiBlbGVtZW50cz8ubGVuZ3RoID8gZWxlbWVudHMgOiBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgU2JiRWxlbWVudFR5cGUgPSB0eXBlb2YgU2JiRWxlbWVudDtcblxuZXhwb3J0IGludGVyZmFjZSBTYmJFbGVtZW50Q29uc3RydWN0b3Ige1xuICBlbGVtZW50RGVwZW5kZW5jaWVzPzogU2JiRWxlbWVudFR5cGVbXTtcbiAgcm9sZT86IEVsZW1lbnRJbnRlcm5hbHNbJ3JvbGUnXTtcbn1cblxuLyoqXG4gKiBBIGJhc2UgY2xhc3MgZm9yIGFsbCBTQkIgZWxlbWVudHMuXG4gKiBJbmNsdWRlcyBhdHRhY2hpbmcgRWxlbWVudEludGVybmFscywgaGFuZGxpbmcgaHlkcmF0aW9uLCBhbmQgbWFuYWdpbmcgc3RhdGUuXG4gKi9cbi8vIFRPRE8oYnJlYWtpbmctY2hhbmdlKTogSW5saW5lIGFuZCByZW1vdmUgU2JiRWxlbWVudEludGVybmFsc01peGluIGFuZCBTYmJIeWRyYXRpb25NaXhpbiBhcyBhIGJyZWFraW5nIGNoYW5nZVxuZXhwb3J0IGNsYXNzIFNiYkVsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBbJ18kc2JiRWxlbWVudCQnXSA9IHRydWU7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZztcbiAgcHVibGljIHN0YXRpYyBlbGVtZW50RGVwZW5kZW5jaWVzPzogU2JiRWxlbWVudFR5cGVbXTtcbiAgcHVibGljIHN0YXRpYyByb2xlPzogRWxlbWVudEludGVybmFsc1sncm9sZSddO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGludGVybmFsczogRWxlbWVudEludGVybmFscyA9IHRoaXMuYXR0YWNoSW50ZXJuYWxzKCk7XG5cbiAgcHJpdmF0ZSBfY29udHJvbGxlcnM/OiBTZXQ8U2JiUmVhY3RpdmVDb250cm9sbGVyPjtcbiAgcHJpdmF0ZSBfaHlkcmF0aW9uUmVxdWlyZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX2h5ZHJhdGlvbkNvbXBsZXRlID0gbmV3IFByb21pc2U8Ym9vbGVhbj4oXG4gICAgKHJlc29sdmUpID0+ICh0aGlzLl9yZXNvbHZlSHlkcmF0aW9uID0gcmVzb2x2ZSksXG4gICk7XG4gIHByaXZhdGUgX3Jlc29sdmVIeWRyYXRpb24hOiAoaHlkcmF0aW9uUmVxdWlyZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHByaXZhdGUgX3RleHRPYnNlcnZlcj86IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZWxlbWVudCBoYXMgY29tcGxldGVkIGh5ZHJhdGlvbi5cbiAgICogVGhlIFByb21pc2UgdmFsdWUgaXMgYSBib29sZWFuIHRoYXQgaXMgYHRydWVgIGlmIHRoZSBlbGVtZW50IHJlcXVpcmVkIGh5ZHJhdGlvblxuICAgKiBhbmQgYGZhbHNlYCBpZiBub3QuXG4gICAqXG4gICAqIEByZXR1cm4gQSBwcm9taXNlIG9mIGEgYm9vbGVhbiB0aGF0IHJlc29sdmVzIHRvIHRydWUgb25jZSB0aGUgaHlkcmF0aW9uIGNvbXBsZXRlZC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZ2V0IGh5ZHJhdGlvbkNvbXBsZXRlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9oeWRyYXRpb25Db21wbGV0ZTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHdoZXRoZXIgaHlkcmF0aW9uIGlzIHJlcXVpcmVkIGFuZCBub3QgY29tcGxldGVkLiAqL1xuICBwcm90ZWN0ZWQgZ2V0IGh5ZHJhdGlvblJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oeWRyYXRpb25SZXF1aXJlZDtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGF0dGFjaGVkRWxlbWVudEludGVybmFscy5zZXQodGhpcywgdGhpcy5pbnRlcm5hbHMpO1xuICAgIGlmIChDdXN0b21TdGF0ZVNldFBvbHlmaWxsKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5pbnRlcm5hbHMsICdzdGF0ZXMnLCB7XG4gICAgICAgIHZhbHVlOiBuZXcgQ3VzdG9tU3RhdGVTZXRQb2x5ZmlsbCh0aGlzKSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBXZSB1c2UgdGhlIEN1c3RvbVN0YXRlU2V0IHBvbHlmaWxsIGluIFNTUiwgd2hpY2ggcmVuZGVycyB0aGUgc3RhdGUgYXMgYXR0cmlidXRlc1xuICAgICAgLy8gd2hpY2ggY2FuIGJlIHRyYW5zZmVycmVkIHRvIGNsaWVudCBzaWRlLCB3aGVyZSB3ZSBjYW4gdGhlbiBjb252ZXJ0IFtzdGF0ZS0tKl1cbiAgICAgIC8vIGF0dHJpYnV0ZXMgdG8gaW50ZXJuYWwgc3RhdGUuXG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgdGhpcy5nZXRBdHRyaWJ1dGVOYW1lcygpLmZpbHRlcigobikgPT4gbi5zdGFydHNXaXRoKCdzdGF0ZS0tJykpKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQobmFtZS5zbGljZSg3KSk7XG4gICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByb2xlID0gKHRoaXMuY29uc3RydWN0b3IgYXMgU2JiRWxlbWVudENvbnN0cnVjdG9yKS5yb2xlO1xuICAgIGlmIChyb2xlKSB7XG4gICAgICB0aGlzLmludGVybmFscy5yb2xlID0gcm9sZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayB3aGV0aGVyIGh5ZHJhdGlvbiBpcyBuZWVkZWQgYnkgY2hlY2tpbmcgd2hldGhlciB0aGUgc2hhZG93IHJvb3RcbiAgICAvLyBpcyBhdmFpbGFibGUgZHVyaW5nIGNvbnN0cnVjdGlvbi91cGdyYWRlIHBoYXNlLlxuICAgIHRoaXMuX2h5ZHJhdGlvblJlcXVpcmVkID0gISF0aGlzLnNoYWRvd1Jvb3Q7XG4gICAgaWYgKCF0aGlzLl9oeWRyYXRpb25SZXF1aXJlZCkge1xuICAgICAgdGhpcy5fcmVzb2x2ZUh5ZHJhdGlvbihmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIER1cmluZyBoeWRyYXRpb24gcGhhc2UsIHdlIHdhbnQgdG8gc3VwcHJlc3Mgc2xvdGNoYW5nZSBldmVudHMgYXMgdGhleVxuICAgICAgLy8gY2FuIGNhdXNlIHJlbmRlciBkaWZmZXJlbmNlcywgd2hpY2ggd291bGQgYnJlYWsgaHlkcmF0aW9uLiBBZnRlclxuICAgICAgLy8gaHlkcmF0aW9uIGlzIGNvbXBsZXRlLCB3ZSBkaXNwYXRjaCBhIG1hbnVhbCBzbG90Y2hhbmdlIGV2ZW50LCBpZiB0aGVyZVxuICAgICAgLy8gYXJlIGVsZW1lbnRzIGFzc2lnbmVkIHRvIGEgc2xvdC5cbiAgICAgIGNvbnN0IHN1cHByZXNzU2xvdGNoYW5nZUV2ZW50ID0gKGV2ZW50OiBFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAodGhpcy5faHlkcmF0aW9uUmVxdWlyZWQpIHtcbiAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGV2ZW50T3B0aW9uczogRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSB7IGNhcHR1cmU6IHRydWUgfTtcbiAgICAgIGNvbnN0IHNsb3RzID0gdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yQWxsKCdzbG90Jyk7XG4gICAgICBpZiAoc2xvdHM/Lmxlbmd0aCkge1xuICAgICAgICBzbG90cy5mb3JFYWNoKChzbG90KSA9PlxuICAgICAgICAgIHNsb3QuYWRkRXZlbnRMaXN0ZW5lcignc2xvdGNoYW5nZScsIHN1cHByZXNzU2xvdGNoYW5nZUV2ZW50LCBldmVudE9wdGlvbnMpLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmh5ZHJhdGlvbkNvbXBsZXRlLnRoZW4oKCkgPT5cbiAgICAgICAgICBzbG90cy5mb3JFYWNoKChzbG90KSA9PiB7XG4gICAgICAgICAgICBzbG90LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCBzdXBwcmVzc1Nsb3RjaGFuZ2VFdmVudCwgZXZlbnRPcHRpb25zKTtcbiAgICAgICAgICAgIGlmIChzbG90LmFzc2lnbmVkTm9kZXMoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgICAgICAgICAgICBzbG90LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdzbG90Y2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogUmVnaXN0ZXIgdGhlIGN1c3RvbSBlbGVtZW50IGluIHRoZSBnbG9iYWwgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LiAqL1xuICBwdWJsaWMgc3RhdGljIGRlZmluZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZWxlbWVudE5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRoZSBzdGF0aWMgcHJvcGVydHkgXCJlbGVtZW50TmFtZVwiIGlzIG5vdCBkZWZpbmVkIG9uICR7dGhpcy5uYW1lfS4gUGxlYXNlIGRlZmluZSBpdCB0byByZWdpc3RlciB0aGUgY3VzdG9tIGVsZW1lbnQuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudENsYXNzID0gY3VzdG9tRWxlbWVudHMuZ2V0KHRoaXMuZWxlbWVudE5hbWUpO1xuICAgIGlmICghZWxlbWVudENsYXNzKSB7XG4gICAgICBjdXN0b21FbGVtZW50cy5kZWZpbmUodGhpcy5lbGVtZW50TmFtZSwgdGhpcyBhcyB1bmtub3duIGFzIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcik7XG5cbiAgICAgIGNvbnN0IGVsZW1lbnREZXBlbmRlbmNpZXM6IFNiYkVsZW1lbnRUeXBlW10gPSBbXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuICAgICAgbGV0IGN0b3I6IFNiYkVsZW1lbnRUeXBlID0gdGhpcztcbiAgICAgIHdoaWxlIChjdG9yWydfJHNiYkVsZW1lbnQkJ10pIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY3Rvci5lbGVtZW50RGVwZW5kZW5jaWVzKSkge1xuICAgICAgICAgIGVsZW1lbnREZXBlbmRlbmNpZXMucHVzaCguLi5jdG9yLmVsZW1lbnREZXBlbmRlbmNpZXMpO1xuICAgICAgICB9XG4gICAgICAgIGN0b3IgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY3Rvcik7XG4gICAgICB9XG4gICAgICBuZXcgU2V0KGVsZW1lbnREZXBlbmRlbmNpZXMpLmZvckVhY2goKGRlcGVuZGVuY3kpID0+IGRlcGVuZGVuY3kuZGVmaW5lKCkpO1xuICAgIH0gZWxzZSBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFViAmJiBlbGVtZW50Q2xhc3MgIT09IHRoaXMpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFRoZSBjdXN0b20gZWxlbWVudCB3aXRoIG5hbWUgXCIke3RoaXMuZWxlbWVudE5hbWV9XCIgaXMgYWxyZWFkeSBkZWZpbmVkLiBTa2lwcGluZy5gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY3JlYXRlUmVuZGVyUm9vdCgpOiBIVE1MRWxlbWVudCB8IERvY3VtZW50RnJhZ21lbnQge1xuICAgIGNvbnN0IHJvb3QgPSBzdXBlci5jcmVhdGVSZW5kZXJSb290KCk7XG4gICAgdGhpcy5zaGFkb3dSb290Py5hZGRFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdlJywgKGUpID0+XG4gICAgICB0aGlzLl9zbG90Y2hhbmdlSGFuZGxlcihlLCBlLnRhcmdldCBhcyBIVE1MU2xvdEVsZW1lbnQpLFxuICAgICk7XG4gICAgdGhpcy5zaGFkb3dSb290Py5hZGRFdmVudExpc3RlbmVyKCdzbG90dGVkY2hhbmdlJywgKGUpID0+IHRoaXMuX3Nsb3RjaGFuZ2VIYW5kbGVyKGUsIGUuc2xvdCksIHtcbiAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5zaGFkb3dSb290XG4gICAgICA/LnF1ZXJ5U2VsZWN0b3JBbGw/Lignc2xvdCcpXG4gICAgICAuZm9yRWFjaCgoc2xvdCkgPT4gdGhpcy5faGFuZGxlU2xvdENoYW5nZUZvclNsb3R0ZWRTdGF0ZShzbG90KSk7XG5cbiAgICByZXR1cm4gcm9vdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBgUmVhY3RpdmVDb250cm9sbGVyYCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgZWxlbWVudCdzIHJlYWN0aXZlXG4gICAqIHVwZGF0ZSBjeWNsZS4gVGhlIGVsZW1lbnQgYXV0b21hdGljYWxseSBjYWxscyBpbnRvIGFueSByZWdpc3RlcmVkXG4gICAqIGNvbnRyb2xsZXJzIGR1cmluZyBpdHMgbGlmZWN5Y2xlIGNhbGxiYWNrcy5cbiAgICpcbiAgICogSWYgdGhlIGVsZW1lbnQgaXMgY29ubmVjdGVkIHdoZW4gYGFkZENvbnRyb2xsZXIoKWAgaXMgY2FsbGVkLCB0aGVcbiAgICogY29udHJvbGxlcidzIGBob3N0Q29ubmVjdGVkKClgIGNhbGxiYWNrIHdpbGwgYmUgaW1tZWRpYXRlbHkgY2FsbGVkLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFkZENvbnRyb2xsZXIoY29udHJvbGxlcjogU2JiUmVhY3RpdmVDb250cm9sbGVyKTogdm9pZCB7XG4gICAgc3VwZXIuYWRkQ29udHJvbGxlcihjb250cm9sbGVyKTtcbiAgICAodGhpcy5fY29udHJvbGxlcnMgPz89IG5ldyBTZXQoKSkuYWRkKGNvbnRyb2xsZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBgUmVhY3RpdmVDb250cm9sbGVyYCBmcm9tIHRoZSBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHJlbW92ZUNvbnRyb2xsZXIoY29udHJvbGxlcjogU2JiUmVhY3RpdmVDb250cm9sbGVyKTogdm9pZCB7XG4gICAgc3VwZXIucmVtb3ZlQ29udHJvbGxlcihjb250cm9sbGVyKTtcbiAgICB0aGlzLl9jb250cm9sbGVycz8uZGVsZXRlKGNvbnRyb2xsZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3RzIGFuIHVwZGF0ZSB3aGljaCBpcyBwcm9jZXNzZWQgYXN5bmNocm9ub3VzbHkuIFRoaXMgc2hvdWxkIGJlIGNhbGxlZFxuICAgKiB3aGVuIGFuIGVsZW1lbnQgc2hvdWxkIHVwZGF0ZSBiYXNlZCBvbiBzb21lIHN0YXRlIG5vdCB0cmlnZ2VyZWQgYnkgc2V0dGluZ1xuICAgKiBhIHJlYWN0aXZlIHByb3BlcnR5LiBJbiB0aGlzIGNhc2UsIHBhc3Mgbm8gYXJndW1lbnRzLiBJdCBzaG91bGQgYWxzbyBiZVxuICAgKiBjYWxsZWQgd2hlbiBtYW51YWxseSBpbXBsZW1lbnRpbmcgYSBwcm9wZXJ0eSBzZXR0ZXIuIEluIHRoaXMgY2FzZSwgcGFzcyB0aGVcbiAgICogcHJvcGVydHkgYG5hbWVgIGFuZCBgb2xkVmFsdWVgIHRvIGVuc3VyZSB0aGF0IGFueSBjb25maWd1cmVkIHByb3BlcnR5XG4gICAqIG9wdGlvbnMgYXJlIGhvbm9yZWQuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIG5hbWUgb2YgcmVxdWVzdGluZyBwcm9wZXJ0eVxuICAgKiBAcGFyYW0gb2xkVmFsdWUgb2xkIHZhbHVlIG9mIHJlcXVlc3RpbmcgcHJvcGVydHlcbiAgICogQHBhcmFtIG9wdGlvbnMgcHJvcGVydHkgb3B0aW9ucyB0byB1c2UgaW5zdGVhZCBvZiB0aGUgcHJldmlvdXNseVxuICAgKiAgICAgY29uZmlndXJlZCBvcHRpb25zXG4gICAqIEBwYXJhbSB1c2VOZXdWYWx1ZSBpZiB0cnVlLCB0aGUgbmV3VmFsdWUgYXJndW1lbnQgaXMgdXNlZCBpbnN0ZWFkIG9mXG4gICAqICAgICByZWFkaW5nIHRoZSBwcm9wZXJ0eSB2YWx1ZS4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gdXNlIGlmIHRoZSByZWFjdGl2ZVxuICAgKiAgICAgcHJvcGVydHkgaXMgYSBzdGFuZGFyZCBwcml2YXRlIGFjY2Vzc29yLCBhcyBvcHBvc2VkIHRvIGEgcGxhaW5cbiAgICogICAgIHByb3BlcnR5LCBzaW5jZSBwcml2YXRlIG1lbWJlcnMgY2FuJ3QgYmUgZHluYW1pY2FsbHkgcmVhZCBieSBuYW1lLlxuICAgKiBAcGFyYW0gbmV3VmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgcHJvcGVydHkuIFRoaXMgaXMgb25seSB1c2VkIGlmXG4gICAqICAgICBgdXNlTmV3VmFsdWVgIGlzIHRydWUuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgcmVxdWVzdFVwZGF0ZShcbiAgICBuYW1lPzogUHJvcGVydHlLZXksXG4gICAgb2xkVmFsdWU/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICAgIHVzZU5ld1ZhbHVlPzogYm9vbGVhbixcbiAgICBuZXdWYWx1ZT86IHVua25vd24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMsIHVzZU5ld1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIGNvbnN0IHZhbHVlczogU2JiUHJvcGVydHlWYWx1ZXMgPSB7XG4gICAgICAgIG9sZFZhbHVlLFxuICAgICAgICB2YWx1ZTogdXNlTmV3VmFsdWUgPyBuZXdWYWx1ZSA6IHRoaXNbbmFtZSBhcyBrZXlvZiB0aGlzXSxcbiAgICAgIH07XG4gICAgICB0aGlzLl9jb250cm9sbGVycz8uZm9yRWFjaCgoY29udHJvbGxlcikgPT5cbiAgICAgICAgY29udHJvbGxlci5ob3N0UHJvcGVydHlVcGRhdGU/LihuYW1lLCB2YWx1ZXMsIG9wdGlvbnMpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIC8vIFdoZW4gaHlkcmF0aW9uIGlzIG5lZWRlZCwgd2Ugd2FpdCB0aGUgaHlkcmF0aW9uIHByb2Nlc3MgdG8gZmluaXNoLCB3aGljaCBpcyBwYXRjaGVkXG4gICAgLy8gaW50byB0aGUgdXBkYXRlIG1ldGhvZCBvZiB0aGUgTGl0RWxlbWVudCBiYXNlIGNsYXNzLlxuICAgIHN1cGVyLnVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAodGhpcy5faHlkcmF0aW9uUmVxdWlyZWQpIHtcbiAgICAgIHRoaXMuX2h5ZHJhdGlvblJlcXVpcmVkID0gZmFsc2U7XG4gICAgICB0aGlzLl9yZXNvbHZlSHlkcmF0aW9uKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVTdGF0ZSh2YWx1ZTogc3RyaW5nLCBmb3JjZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoZm9yY2UgfHwgKGZvcmNlICE9PSBmYWxzZSAmJiAhdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmhhcyh2YWx1ZSkpKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2xvdGNoYW5nZUhhbmRsZXIoZXZlbnQ6IEV2ZW50LCBzbG90OiBIVE1MU2xvdEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCByZXNvbHZlZFNsb3QgPSB0aGlzLnNoYWRvd1Jvb3QhLmNvbnRhaW5zKHNsb3QpXG4gICAgICA/IHNsb3RcbiAgICAgIDogZXZlbnRcbiAgICAgICAgICAuY29tcG9zZWRQYXRoKClcbiAgICAgICAgICAuZmluZChcbiAgICAgICAgICAgIChlbCk6IGVsIGlzIEhUTUxTbG90RWxlbWVudCA9PlxuICAgICAgICAgICAgICBlbCBpbnN0YW5jZW9mIEhUTUxTbG90RWxlbWVudCAmJiB0aGlzLnNoYWRvd1Jvb3QhLmNvbnRhaW5zKGVsKSxcbiAgICAgICAgICApO1xuICAgIGlmIChyZXNvbHZlZFNsb3QpIHtcbiAgICAgIHRoaXMuX2hhbmRsZVNsb3RDaGFuZ2VGb3JTbG90dGVkU3RhdGUocmVzb2x2ZWRTbG90KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVTbG90Q2hhbmdlRm9yU2xvdHRlZFN0YXRlKHNsb3Q6IEhUTUxTbG90RWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuX3VwZGF0ZVNsb3R0ZWRTdGF0ZShzbG90KTtcbiAgICBpZiAoIXNsb3QubmFtZSkge1xuICAgICAgdGhpcy5fb2JzZXJ2ZVRleHROb2Rlc0luU2xvdChzbG90KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVTbG90dGVkU3RhdGUoc2xvdDogSFRNTFNsb3RFbGVtZW50KTogdm9pZCB7XG4gICAgY29uc3Qgc3RhdGVOYW1lID0gc2xvdC5uYW1lID8gYHNsb3R0ZWQtJHtzbG90Lm5hbWV9YCA6ICdzbG90dGVkJztcbiAgICBjb25zdCBoYXNTbG90dGVkQ29udGVudCA9IHRoaXMuX2hhc1Nsb3R0ZWRDb250ZW50KHNsb3QpO1xuICAgIGlmIChoYXNTbG90dGVkQ29udGVudCAmJiAhdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmhhcyhzdGF0ZU5hbWUpKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKHN0YXRlTmFtZSk7XG4gICAgICAvKiogQGludGVybmFsICovXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IFNiYlNsb3R0ZWRDaGFuZ2VFdmVudChzbG90KSk7XG4gICAgfSBlbHNlIGlmICghaGFzU2xvdHRlZENvbnRlbnQgJiYgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmhhcyhzdGF0ZU5hbWUpKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKHN0YXRlTmFtZSk7XG4gICAgICAvKiogQGludGVybmFsICovXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IFNiYlNsb3R0ZWRDaGFuZ2VFdmVudChzbG90KSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb2JzZXJ2ZVRleHROb2Rlc0luU2xvdChzbG90OiBIVE1MU2xvdEVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLl90ZXh0T2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICAvLyBPbmx5IGNyZWF0ZSB0aGUgTXV0YXRpb25PYnNlcnZlciB3aGVuIGl0IGlzIGFjdHVhbGx5IG5lZWRlZCB0byBvcHRpbWl6ZSBwZXJmb3JtYW5jZS5cbiAgICB0aGlzLl90ZXh0T2JzZXJ2ZXIgPz89IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcbiAgICAgIGNvbnN0IHNsb3QgPSB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3I8SFRNTFNsb3RFbGVtZW50Pignc2xvdDpub3QoW25hbWVdKScpO1xuICAgICAgaWYgKHNsb3QpIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlU2xvdHRlZFN0YXRlKHNsb3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fdGV4dE9ic2VydmVyIS5kaXNjb25uZWN0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8gVGV4dCBub2RlcyBjYW4gYmUgZW1wdHkgYW5kIGZpbGxlZCBsYXRlciAob3IgdmljZSB2ZXJzYSkuXG4gICAgLy8gRmlsbGluZyBhbiBleGlzdGluZyBub2RlIGxhdGVyIHdvdWxkIG5vdCB0cmlnZ2VyIGFub3RoZXIgc2xvdGNoYW5nZSBldmVudC5cbiAgICAvLyBUaGVyZWZvcmUsIHdlIG5lZWQgdG8gb2JzZXJ2ZSB0ZXh0IG5vZGVzIGFuZCBjaGVjayBpZiB0aGV5IGJlY29tZSBmaWxsZWQgb3IgZW1wdHkuXG4gICAgLy8gVGhpcyBpcyBvbmx5IG5lZWRlZCBmb3IgdGhlIHVubmFtZWQgc2xvdCBhcyBmb3IgZXZlcnkgb3RoZXIgdGhlcmUgd291bGRcbiAgICAvLyBiZSBhIHRhZyB3aGljaCB0cmlnZ2VycyB0aGUgc2xvdCBjaGFuZ2UgZXZlbnQuXG4gICAgLy8gVGhlIG1haW4gcmVhc29uIGlzIHRoYXQgQW5ndWxhciBjcmVhdGVzIGVtcHR5IHRleHQgbm9kZXMgYW5kIGZpbGxzIHRoZW0gbGF0ZXIuXG4gICAgc2xvdFxuICAgICAgLmFzc2lnbmVkTm9kZXMoKVxuICAgICAgLmZpbHRlcigobikgPT4gbi5ub2RlVHlwZSA9PT0gbi5URVhUX05PREUpXG4gICAgICAuZm9yRWFjaCgobm9kZSkgPT4gdGhpcy5fdGV4dE9ic2VydmVyIS5vYnNlcnZlKG5vZGUsIHsgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KSk7XG4gIH1cblxuICBwcml2YXRlIF9oYXNTbG90dGVkQ29udGVudChzbG90OiBIVE1MU2xvdEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc2xvdC5uYW1lXG4gICAgICA/IHNsb3RcbiAgICAgICAgICAuYXNzaWduZWRFbGVtZW50cygpXG4gICAgICAgICAgLnNvbWUoKG5vZGUpID0+ICEobm9kZSBpbnN0YW5jZW9mIEhUTUxTbG90RWxlbWVudCkgfHwgdGhpcy5faGFzU2xvdHRlZENvbnRlbnQobm9kZSkpXG4gICAgICA6IHNsb3QuYXNzaWduZWROb2RlcygpLnNvbWUoKG5vZGUpID0+IHtcbiAgICAgICAgICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIEhUTUxTbG90RWxlbWVudFxuICAgICAgICAgICAgPyB0aGlzLl9oYXNTbG90dGVkQ29udGVudChub2RlKVxuICAgICAgICAgICAgOiBub2RlLm5vZGVUeXBlICE9PSBub2RlLlRFWFRfTk9ERSB8fCAhIW5vZGUudGV4dENvbnRlbnQ/LnRyaW0oKTtcbiAgICAgICAgfSk7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRFdmVudE1hcCB7XG4gICAgc2xvdHRlZGNoYW5nZTogU2JiU2xvdHRlZENoYW5nZUV2ZW50O1xuICB9XG4gIGludGVyZmFjZSBTaGFkb3dSb290RXZlbnRNYXAge1xuICAgIHNsb3R0ZWRjaGFuZ2U6IFNiYlNsb3R0ZWRDaGFuZ2VFdmVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQWNBLElBQU0seUJBQ0osWUFBWSxDQUFDLElBQUksU0FBUyxrREFBNEIsR0FDbEQsTUFBTSx1QkFDSSxJQUFXO0NBS25CLFlBQTJCLE9BQWlCO0FBQzFDLFNBQU87QUFEa0IsT0FBQSxRQUFBO0FBRm5CLE9BQUEsV0FBVztBQUlqQixPQUFLLE1BQU0sY0FBYyxLQUFLO0FBQzlCLE1BQUksQ0FBQyxTQUdILFNBQVEsU0FBUyxDQUFDLFdBQVcsS0FBSyxjQUFjLENBQUM7O0NBSXJDLElBQUksT0FBYTtBQUMvQixNQUFJLEtBQUssU0FDUCxN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
@@ -1 +1 @@
1
- {"version":3,"file":"selection-group-base-element.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/base-elements/selection-group-base-element.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAIb,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAKhF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;;AAG1C;;;;;GAKG;AACH,8BAAsB,4BAA4B,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,iCAEhF;IACC,OAAuB,MAAM,EAAE,cAAc,CAAuC;IAEpF;;;OAGG;IACH,SAA4B,IAAI,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,CAAyB;IAE3E,wDAAwD;IACxD,SACgB,cAAc,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAEhE,8EAA8E;IAC9E,SACgB,WAAW,EAAE,cAAc,CAAgB;IAE3D,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC9D,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAEzD;;;OAGG;IACH,IAAW,iBAAiB,IAAI,CAAC,EAAE,CAMlC;IAED,SAAS;cAWU,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAe5E,SAAS,CAAC,YAAY,IAAI,IAAI;cAEX,MAAM,IAAI,cAAc;CAM5C"}
1
+ {"version":3,"file":"selection-group-base-element.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/base-elements/selection-group-base-element.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,KAAK,CAAC;AAIb,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAKhF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;;AAG1C;;;;;GAKG;AACH,8BAAsB,4BAA4B,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,iCAEhF;IACC,OAAuB,MAAM,EAAE,cAAc,CAAuC;IAEpF;;;OAGG;IACH,SAA4B,IAAI,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,CAAyB;IAE3E,wDAAwD;IACxD,SACgB,cAAc,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAEhE,8EAA8E;IAC9E,SACgB,WAAW,EAAE,cAAc,CAAgB;IAE3D,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC9D,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAEzD;;;OAGG;IACH,IAAW,iBAAiB,IAAI,CAAC,EAAE,CAMlC;IAED,SAAS;cAWU,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAe5E,SAAS,CAAC,YAAY,IAAI,IAAI;cAEX,MAAM,IAAI,cAAc;CAM5C"}
@@ -144,4 +144,4 @@ var SbbDarkModeController = class SbbDarkModeController extends SbbMediaMatcherC
144
144
  //#endregion
145
145
  export { SbbDarkModeController, SbbMediaMatcherController, SbbMediaQueryBreakpointLargeAndAbove, SbbMediaQueryBreakpointLargeAndBelow, SbbMediaQueryBreakpointSmallAndAbove, SbbMediaQueryBreakpointSmallAndBelow, SbbMediaQueryBreakpointUltraAndAbove, SbbMediaQueryBreakpointZeroAndAbove, SbbMediaQueryDarkMode, SbbMediaQueryForcedColors, SbbMediaQueryHover, SbbMediaQueryPointerCoarse };
146
146
 
147
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtbWF0Y2hlcnMtY29udHJvbGxlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9jb250cm9sbGVycy9tZWRpYS1tYXRjaGVycy1jb250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNiYkJyZWFrcG9pbnRMYXJnZU1heCxcbiAgU2JiQnJlYWtwb2ludExhcmdlTWluLFxuICBTYmJCcmVha3BvaW50U21hbGxNYXgsXG4gIFNiYkJyZWFrcG9pbnRTbWFsbE1pbixcbiAgU2JiQnJlYWtwb2ludFVsdHJhTWluLFxuICBTYmJCcmVha3BvaW50WmVyb01pbixcbn0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZGVzaWduLXRva2Vucyc7XG5pbXBvcnQgeyBpc1NlcnZlciwgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB0eXBlIHsgU2JiRWxlbWVudCB9IGZyb20gJy4uL2Jhc2UtZWxlbWVudHMvZWxlbWVudC50cyc7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlGb3JjZWRDb2xvcnMgPSAnKGZvcmNlZC1jb2xvcnM6IGFjdGl2ZSknO1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlEYXJrTW9kZSA9ICcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJztcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5SG92ZXIgPSAnKGFueS1ob3ZlcjogaG92ZXIpJztcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5UG9pbnRlckNvYXJzZSA9ICcocG9pbnRlcjogY29hcnNlKSc7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRaZXJvQW5kQWJvdmUgPSBgKG1pbi13aWR0aDogJHtTYmJCcmVha3BvaW50WmVyb01pbn0pYDtcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFNtYWxsQW5kQWJvdmUgPSBgKG1pbi13aWR0aDogJHtTYmJCcmVha3BvaW50U21hbGxNaW59KWA7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRMYXJnZUFuZEFib3ZlID0gYChtaW4td2lkdGg6ICR7U2JiQnJlYWtwb2ludExhcmdlTWlufSlgO1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlCcmVha3BvaW50VWx0cmFBbmRBYm92ZSA9IGAobWluLXdpZHRoOiAke1NiYkJyZWFrcG9pbnRVbHRyYU1pbn0pYDtcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFNtYWxsQW5kQmVsb3cgPSBgKG1heC13aWR0aDogJHtTYmJCcmVha3BvaW50U21hbGxNYXh9KWA7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRMYXJnZUFuZEJlbG93ID0gYChtYXgtd2lkdGg6ICR7U2JiQnJlYWtwb2ludExhcmdlTWF4fSlgO1xuLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cblxuLyoqXG4gKiBBIGNhbGxiYWNrLCB3aGljaCBpcyBpbnZva2VkIHdoZW4gdGhlIGFzc29jaWF0ZWQgbWVkaWEgcXVlcnkgbWF0Y2hcbiAqIHN0YXR1cyBjaGFuZ2VzLlxuICovXG5leHBvcnQgdHlwZSBTYmJNZWRpYU1hdGNoZXJIYW5kbGVyID0gKG1hdGNoZXM6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbmludGVyZmFjZSBNZWRpYVF1ZXJ5RW50cnkge1xuICBtZWRpYVF1ZXJ5TGlzdDogTWVkaWFRdWVyeUxpc3Q7XG4gIGV2ZW50SGFuZGxlcjogKGV2ZW50OiBNZWRpYVF1ZXJ5TGlzdEV2ZW50KSA9PiB2b2lkO1xuICBoYW5kbGVyczogU2V0PFNiYk1lZGlhTWF0Y2hlckhhbmRsZXI+O1xufVxuXG4vKipcbiAqIFdlIHdhbnQgdG8gY2FjaGUgTWVkaWFRdWVyeUxpc3QgaW5zdGFuY2VzIGFuZCBjb3JyZXNwb25kaW5nXG4gKiBldmVudCBoYW5kbGVycywgYXMgYSBtdWx0aXR1ZGUgb2YgZXZlbnQgaGFuZGxlcnMgb24gZ2xvYmFsIG9iamVjdHNcbiAqIGNhbiBkZWdyYWRlIHBlcmZvcm1hbmNlIHdpdGggdGltZS5cbiAqL1xuY29uc3QgbWVkaWFRdWVyeVJlZ2lzdHJ5ID0gbmV3IE1hcDxzdHJpbmcsIE1lZGlhUXVlcnlFbnRyeT4oKTtcblxuLyoqXG4gKiBUaGlzIGNvbnRyb2xsZXIgYWxsb3dzIGxpc3RlbmluZyB0byBtZWRpYSBxdWVyeSBjaGFuZ2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBuZXcgU2JiTWVkaWFNYXRjaGVyQ29udHJvbGxlcih0aGlzLCB7XG4gKiAgIFtTYmJGb3JjZWRDb2xvcnNRdWVyeV06IChtYXRjaGVzKSA9PiBkb1NvbWV0aGluZyhtYXRjaGVzKSxcbiAqIH0pXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJNZWRpYU1hdGNoZXJDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIGhvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QsXG4gICAgcHJpdmF0ZSBfcXVlcmllczogUmVjb3JkPHN0cmluZywgU2JiTWVkaWFNYXRjaGVySGFuZGxlcj4sXG4gICkge1xuICAgIGhvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIHF1ZXJ5IG1hdGNoZXMuIFJldHVybnMgbnVsbCB3aXRoIFNTUi5cbiAgICogQHBhcmFtIHF1ZXJ5IFRoZSBxdWVyeSB0byBjaGVjayBhZ2FpbnN0LlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBxdWVyeSBtYXRjaGVzIG9yIG51bGwgd2l0aCBTU1IuXG4gICAqL1xuICBwdWJsaWMgbWF0Y2hlcyhxdWVyeTogc3RyaW5nKTogYm9vbGVhbiB8IG51bGwge1xuICAgIC8vIElmIHdlIHVzZSB0aGUgY2FjaGVkIGluc3RhbmNlLCBXZWJraXQgc2VlbXMgdG8gdXBkYXRlIHRoZSBzdGF0ZSBhIHRpY2sgdG9vIGxhdGUuXG4gICAgLy8gRHVlIHRvIHRoaXMgd2UgZGlyZWN0bHkgdXNlIG1hdGNoTWVkaWEgaGVyZS5cbiAgICByZXR1cm4gaXNTZXJ2ZXIgPyBudWxsIDogbWF0Y2hNZWRpYShxdWVyeSkubWF0Y2hlcztcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3F1ZXJ5LCBoYW5kbGVyXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9xdWVyaWVzKSkge1xuICAgICAgY29uc3QgbWVkaWFRdWVyeSA9IG1lZGlhUXVlcnlSZWdpc3RyeS5nZXQocXVlcnkpO1xuICAgICAgaWYgKG1lZGlhUXVlcnkpIHtcbiAgICAgICAgbWVkaWFRdWVyeS5oYW5kbGVycy5hZGQoaGFuZGxlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtZWRpYVF1ZXJ5TGlzdCA9IG1hdGNoTWVkaWEocXVlcnkpO1xuICAgICAgICBjb25zdCBoYW5kbGVycyA9IG5ldyBTZXQoW2hhbmRsZXJdKTtcbiAgICAgICAgY29uc3QgZXZlbnRIYW5kbGVyID0gKGU6IE1lZGlhUXVlcnlMaXN0RXZlbnQpOiB2b2lkID0+XG4gICAgICAgICAgaGFuZGxlcnMuZm9yRWFjaCgoaCkgPT4gaChlLm1hdGNoZXMpKTtcbiAgICAgICAgbWVkaWFRdWVyeUxpc3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZXZlbnRIYW5kbGVyKTtcbiAgICAgICAgbWVkaWFRdWVyeVJlZ2lzdHJ5LnNldChxdWVyeSwgeyBtZWRpYVF1ZXJ5TGlzdCwgaGFuZGxlcnMsIGV2ZW50SGFuZGxlciB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IFtxdWVyeSwgaGFuZGxlcl0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fcXVlcmllcykpIHtcbiAgICAgIGNvbnN0IG1lZGlhUXVlcnkgPSBtZWRpYVF1ZXJ5UmVnaXN0cnkuZ2V0KHF1ZXJ5KTtcbiAgICAgIGlmIChtZWRpYVF1ZXJ5KSB7XG4gICAgICAgIG1lZGlhUXVlcnkuaGFuZGxlcnMuZGVsZXRlKGhhbmRsZXIpO1xuICAgICAgICBpZiAoIW1lZGlhUXVlcnkuaGFuZGxlcnMuc2l6ZSkge1xuICAgICAgICAgIG1lZGlhUXVlcnlSZWdpc3RyeS5kZWxldGUocXVlcnkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBTYmJNZWRpYU1hdGNoZXJDb250cm9sbGVyLCB3aGljaFxuICogdGFrZXMgdGhlIGNvbG9yLXNjaGVtZSBDU1MgcHJvcGVydHkgaW50byBhY2NvdW50IHdoZW4gZGV0ZXJtaW5pbmdcbiAqIHRoZSBkYXJrIG1vZGUgc3RhdGUgYW5kIHVwZGF0ZXMgYSA6c3RhdGUoZGFyaykgb24gdGhlIGhvc3QuXG4gKlxuICogQGV4YW1wbGVcbiAqIG5ldyBTYmJEYXJrTW9kZUNvbnRyb2xsZXIodGhpcywgKGlzRGFya01vZGUpID0+IGRvU29tZXRoaW5nKGlzRGFya01vZGUpKTtcbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkRhcmtNb2RlQ29udHJvbGxlciBleHRlbmRzIFNiYk1lZGlhTWF0Y2hlckNvbnRyb2xsZXIge1xuICAvKiogVGhlIGN1cnJlbnQgbW9kZSBiYXNlZCBvbiB0aGUgY2xhc3MgYXR0cmlidXRlIG9mIHRoZSA8aHRtbD4gZWxlbWVudC4gKi9cbiAgcHJpdmF0ZSBzdGF0aWMgX2N1cnJlbnRNb2RlOiAnc2JiLWxpZ2h0LWRhcmsnIHwgJ3NiYi1saWdodCcgfCAnc2JiLWRhcmsnIHwgbnVsbCA9XG4gICAgdGhpcy5fcmVhZExpZ2h0RGFya0NsYXNzKCk7XG5cbiAgLyoqIE11dGF0aW9uT2JzZXJ2ZXIgdGhhdCBvYnNlcnZlcyB0aGUgXCJjbGFzc1wiIGF0dHJpYnV0ZSBvZiB0aGUgPGh0bWw+IGVsZW1lbnQuICovXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9vYnNlcnZlciA9ICFpc1NlcnZlclxuICAgID8gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuICAgICAgICBpZiAobXV0YXRpb25zWzBdLm9sZFZhbHVlICE9PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdjbGFzcycpKSB7XG4gICAgICAgICAgY29uc3QgbmV3TW9kZSA9IHRoaXMuX3JlYWRMaWdodERhcmtDbGFzcygpO1xuICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50TW9kZSAhPT0gbmV3TW9kZSkge1xuICAgICAgICAgICAgU2JiRGFya01vZGVDb250cm9sbGVyLnJlcXVlc3RVcGRhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRNb2RlID0gbmV3TW9kZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgOiBudWxsO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9vYnNlcnZlckNvbmZpZyA9IHtcbiAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnY2xhc3MnXSxcbiAgICBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSxcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXI6ICgpID0+IHZvaWQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2hvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QgJiBTYmJFbGVtZW50LFxuICAgIG9uQ2hhbmdlOiBTYmJNZWRpYU1hdGNoZXJIYW5kbGVyLFxuICApIHtcbiAgICBjb25zdCBvbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXI6ICgpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgICBvbkNoYW5nZSh0aGlzLm1hdGNoZXMoKSk7XG4gICAgICB0aGlzLl9ob3N0Wyd0b2dnbGVTdGF0ZSddPy4oJ2RhcmsnLCB0aGlzLm1hdGNoZXMoKSk7XG4gICAgfTtcbiAgICBzdXBlcihfaG9zdCwge1xuICAgICAgW1NiYk1lZGlhUXVlcnlEYXJrTW9kZV06IG9uQ2hhbmdlV2l0aFN0YXRlVXBkYXRlcixcbiAgICB9KTtcbiAgICB0aGlzLl9vbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXIgPSBvbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXI7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfcmVhZExpZ2h0RGFya0NsYXNzKCk6ICdzYmItbGlnaHQtZGFyaycgfCAnc2JiLWxpZ2h0JyB8ICdzYmItZGFyaycgfCBudWxsIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBjbGFzc0xpc3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0O1xuICAgIHJldHVybiAoXG4gICAgICAoWydzYmItbGlnaHQtZGFyaycsICdzYmItZGFyaycsICdzYmItbGlnaHQnXSBhcyBjb25zdCkuZmluZCgobW9kZSkgPT5cbiAgICAgICAgY2xhc3NMaXN0LmNvbnRhaW5zKG1vZGUpLFxuICAgICAgKSA/PyBudWxsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0cyBhbiB1cGRhdGUgb2YgdGhlIGRhcmsgbW9kZSBzdGF0ZS4gVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGUgY29sb3Itc2NoZW1lXG4gICAqIENTUyBwcm9wZXJ0eSBjaGFuZ2VzLCBhcyB0aGUgbWVkaWEgcXVlcnkgZG9lcyBub3QgcGljayB0aGlzIHVwIGF1dG9tYXRpY2FsbHkuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbHluZS9uZWVkcy1zdXBlci1jYWxsLXJ1bGVcbiAgcHVibGljIHN0YXRpYyByZXF1ZXN0VXBkYXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVudHJ5ID0gbWVkaWFRdWVyeVJlZ2lzdHJ5LmdldChTYmJNZWRpYVF1ZXJ5RGFya01vZGUpO1xuICAgIGlmIChlbnRyeSkge1xuICAgICAgZW50cnkuaGFuZGxlcnMuZm9yRWFjaCgoaCkgPT4gaChlbnRyeS5tZWRpYVF1ZXJ5TGlzdC5tYXRjaGVzKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGhvc3RDb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgY29uc3QgaXNGaXJzdExpc3RlbmVyID1cbiAgICAgIChtZWRpYVF1ZXJ5UmVnaXN0cnkuZ2V0KFNiYk1lZGlhUXVlcnlEYXJrTW9kZSk/LmhhbmRsZXJzLnNpemUgPz8gMCkgPT09IDA7XG4gICAgc3VwZXIuaG9zdENvbm5lY3RlZCgpO1xuXG4gICAgaWYgKGlzRmlyc3RMaXN0ZW5lcikge1xuICAgICAgU2JiRGFya01vZGVDb250cm9sbGVyLl9vYnNlcnZlciEub2JzZXJ2ZShcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFxuICAgICAgICBTYmJEYXJrTW9kZUNvbnRyb2xsZXIuX29ic2VydmVyQ29uZmlnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9vbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBob3N0RGlzY29ubmVjdGVkKCk6IHZvaWQge1xuICAgIHN1cGVyLmhvc3REaXNjb25uZWN0ZWQoKTtcblxuICAgIGlmICgobWVkaWFRdWVyeVJlZ2lzdHJ5LmdldChTYmJNZWRpYVF1ZXJ5RGFya01vZGUpPy5oYW5kbGVycy5zaXplID8/IDApID09PSAwKSB7XG4gICAgICBTYmJEYXJrTW9kZUNvbnRyb2xsZXIuX29ic2VydmVyIS5kaXNjb25uZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIG1hdGNoZXMoKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzU2VydmVyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGNvbG9yU2NoZW1lID0gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9ob3N0KS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvci1zY2hlbWUnKTtcbiAgICBjb25zdCBkYXJrQXZhaWxhYmxlID0gY29sb3JTY2hlbWUuaW5jbHVkZXMoJ2RhcmsnKTtcbiAgICBjb25zdCBkYXJrT25seSA9IGNvbG9yU2NoZW1lLnRyaW0oKSA9PT0gJ2RhcmsnO1xuICAgIGNvbnN0IHByZWZlcnJlZERhcmtNb2RlID0gc3VwZXIubWF0Y2hlcyhTYmJNZWRpYVF1ZXJ5RGFya01vZGUpIGFzIGJvb2xlYW47XG5cbiAgICByZXR1cm4gKHByZWZlcnJlZERhcmtNb2RlICYmIGRhcmtBdmFpbGFibGUpIHx8IGRhcmtPbmx5O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7OztBQWFBLElBQWEsNEJBQTRCO0FBQ3pDLElBQWEsd0JBQXdCO0FBQ3JDLElBQWEscUJBQXFCO0FBQ2xDLElBQWEsNkJBQTZCO0FBQzFDLElBQWEsc0NBQXNDLGVBQWUscUJBQW9CO0FBQ3RGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCOzs7Ozs7QUFvQnhGLElBQU0scUNBQXFCLElBQUksS0FBOEI7Ozs7Ozs7OztBQVU3RCxJQUFhLDRCQUFiLE1BQXNDO0NBQ3BDLFlBQ0UsTUFDUSxVQUFnRDtBQUFoRCxPQUFBLFdBQUE7QUFFUixPQUFLLGNBQWMsS0FBSzs7Ozs7OztDQVFuQixRQUFRLE9BQWE7QUFHMUIsU0FBTyxXQUFXLE9BQU8sV0FBVyxNQUFNLENBQUM7O0NBR3RDLGdCQUFhO0FBQ2xCLE1BQUksU0FDRjtBQUdGLE9BQUssTUFBTSxDQUFDLE9BQU8sWUFBWSxPQUFPLFFBQVEs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
147
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtbWF0Y2hlcnMtY29udHJvbGxlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9jb250cm9sbGVycy9tZWRpYS1tYXRjaGVycy1jb250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNiYkJyZWFrcG9pbnRMYXJnZU1heCxcbiAgU2JiQnJlYWtwb2ludExhcmdlTWluLFxuICBTYmJCcmVha3BvaW50U21hbGxNYXgsXG4gIFNiYkJyZWFrcG9pbnRTbWFsbE1pbixcbiAgU2JiQnJlYWtwb2ludFVsdHJhTWluLFxuICBTYmJCcmVha3BvaW50WmVyb01pbixcbn0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZGVzaWduLXRva2Vucyc7XG5pbXBvcnQgeyBpc1NlcnZlciwgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB0eXBlIHsgU2JiRWxlbWVudCB9IGZyb20gJy4uL2Jhc2UtZWxlbWVudHMvZWxlbWVudC50cyc7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlGb3JjZWRDb2xvcnMgPSAnKGZvcmNlZC1jb2xvcnM6IGFjdGl2ZSknO1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlEYXJrTW9kZSA9ICcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJztcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5SG92ZXIgPSAnKGFueS1ob3ZlcjogaG92ZXIpJztcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5UG9pbnRlckNvYXJzZSA9ICcocG9pbnRlcjogY29hcnNlKSc7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRaZXJvQW5kQWJvdmUgPSBgKG1pbi13aWR0aDogJHtTYmJCcmVha3BvaW50WmVyb01pbn0pYDtcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFNtYWxsQW5kQWJvdmUgPSBgKG1pbi13aWR0aDogJHtTYmJCcmVha3BvaW50U21hbGxNaW59KWA7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRMYXJnZUFuZEFib3ZlID0gYChtaW4td2lkdGg6ICR7U2JiQnJlYWtwb2ludExhcmdlTWlufSlgO1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlCcmVha3BvaW50VWx0cmFBbmRBYm92ZSA9IGAobWluLXdpZHRoOiAke1NiYkJyZWFrcG9pbnRVbHRyYU1pbn0pYDtcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFNtYWxsQW5kQmVsb3cgPSBgKG1heC13aWR0aDogJHtTYmJCcmVha3BvaW50U21hbGxNYXh9KWA7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUJyZWFrcG9pbnRMYXJnZUFuZEJlbG93ID0gYChtYXgtd2lkdGg6ICR7U2JiQnJlYWtwb2ludExhcmdlTWF4fSlgO1xuLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cblxuLyoqXG4gKiBBIGNhbGxiYWNrLCB3aGljaCBpcyBpbnZva2VkIHdoZW4gdGhlIGFzc29jaWF0ZWQgbWVkaWEgcXVlcnkgbWF0Y2hcbiAqIHN0YXR1cyBjaGFuZ2VzLlxuICovXG5leHBvcnQgdHlwZSBTYmJNZWRpYU1hdGNoZXJIYW5kbGVyID0gKG1hdGNoZXM6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbmludGVyZmFjZSBNZWRpYVF1ZXJ5RW50cnkge1xuICBtZWRpYVF1ZXJ5TGlzdDogTWVkaWFRdWVyeUxpc3Q7XG4gIGV2ZW50SGFuZGxlcjogKGV2ZW50OiBNZWRpYVF1ZXJ5TGlzdEV2ZW50KSA9PiB2b2lkO1xuICBoYW5kbGVyczogU2V0PFNiYk1lZGlhTWF0Y2hlckhhbmRsZXI+O1xufVxuXG4vKipcbiAqIFdlIHdhbnQgdG8gY2FjaGUgTWVkaWFRdWVyeUxpc3QgaW5zdGFuY2VzIGFuZCBjb3JyZXNwb25kaW5nXG4gKiBldmVudCBoYW5kbGVycywgYXMgYSBtdWx0aXR1ZGUgb2YgZXZlbnQgaGFuZGxlcnMgb24gZ2xvYmFsIG9iamVjdHNcbiAqIGNhbiBkZWdyYWRlIHBlcmZvcm1hbmNlIHdpdGggdGltZS5cbiAqL1xuY29uc3QgbWVkaWFRdWVyeVJlZ2lzdHJ5ID0gbmV3IE1hcDxzdHJpbmcsIE1lZGlhUXVlcnlFbnRyeT4oKTtcblxuLyoqXG4gKiBUaGlzIGNvbnRyb2xsZXIgYWxsb3dzIGxpc3RlbmluZyB0byBtZWRpYSBxdWVyeSBjaGFuZ2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBuZXcgU2JiTWVkaWFNYXRjaGVyQ29udHJvbGxlcih0aGlzLCB7XG4gKiAgIFtTYmJGb3JjZWRDb2xvcnNRdWVyeV06IChtYXRjaGVzKSA9PiBkb1NvbWV0aGluZyhtYXRjaGVzKSxcbiAqIH0pXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJNZWRpYU1hdGNoZXJDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIGhvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QsXG4gICAgcHJpdmF0ZSBfcXVlcmllczogUmVjb3JkPHN0cmluZywgU2JiTWVkaWFNYXRjaGVySGFuZGxlcj4sXG4gICkge1xuICAgIGhvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIHF1ZXJ5IG1hdGNoZXMuIFJldHVybnMgbnVsbCB3aXRoIFNTUi5cbiAgICogQHBhcmFtIHF1ZXJ5IFRoZSBxdWVyeSB0byBjaGVjayBhZ2FpbnN0LlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBxdWVyeSBtYXRjaGVzIG9yIG51bGwgd2l0aCBTU1IuXG4gICAqL1xuICBwdWJsaWMgbWF0Y2hlcyhxdWVyeTogc3RyaW5nKTogYm9vbGVhbiB8IG51bGwge1xuICAgIC8vIElmIHdlIHVzZSB0aGUgY2FjaGVkIGluc3RhbmNlLCBXZWJraXQgc2VlbXMgdG8gdXBkYXRlIHRoZSBzdGF0ZSBhIHRpY2sgdG9vIGxhdGUuXG4gICAgLy8gRHVlIHRvIHRoaXMgd2UgZGlyZWN0bHkgdXNlIG1hdGNoTWVkaWEgaGVyZS5cbiAgICByZXR1cm4gaXNTZXJ2ZXIgPyBudWxsIDogbWF0Y2hNZWRpYShxdWVyeSkubWF0Y2hlcztcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3F1ZXJ5LCBoYW5kbGVyXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9xdWVyaWVzKSkge1xuICAgICAgY29uc3QgbWVkaWFRdWVyeSA9IG1lZGlhUXVlcnlSZWdpc3RyeS5nZXQocXVlcnkpO1xuICAgICAgaWYgKG1lZGlhUXVlcnkpIHtcbiAgICAgICAgbWVkaWFRdWVyeS5oYW5kbGVycy5hZGQoaGFuZGxlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtZWRpYVF1ZXJ5TGlzdCA9IG1hdGNoTWVkaWEocXVlcnkpO1xuICAgICAgICBjb25zdCBoYW5kbGVycyA9IG5ldyBTZXQoW2hhbmRsZXJdKTtcbiAgICAgICAgY29uc3QgZXZlbnRIYW5kbGVyID0gKGU6IE1lZGlhUXVlcnlMaXN0RXZlbnQpOiB2b2lkID0+XG4gICAgICAgICAgaGFuZGxlcnMuZm9yRWFjaCgoaCkgPT4gaChlLm1hdGNoZXMpKTtcbiAgICAgICAgbWVkaWFRdWVyeUxpc3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZXZlbnRIYW5kbGVyKTtcbiAgICAgICAgbWVkaWFRdWVyeVJlZ2lzdHJ5LnNldChxdWVyeSwgeyBtZWRpYVF1ZXJ5TGlzdCwgaGFuZGxlcnMsIGV2ZW50SGFuZGxlciB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IFtxdWVyeSwgaGFuZGxlcl0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fcXVlcmllcykpIHtcbiAgICAgIGNvbnN0IG1lZGlhUXVlcnkgPSBtZWRpYVF1ZXJ5UmVnaXN0cnkuZ2V0KHF1ZXJ5KTtcbiAgICAgIGlmIChtZWRpYVF1ZXJ5KSB7XG4gICAgICAgIG1lZGlhUXVlcnkuaGFuZGxlcnMuZGVsZXRlKGhhbmRsZXIpO1xuICAgICAgICBpZiAoIW1lZGlhUXVlcnkuaGFuZGxlcnMuc2l6ZSkge1xuICAgICAgICAgIG1lZGlhUXVlcnlSZWdpc3RyeS5kZWxldGUocXVlcnkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBTYmJNZWRpYU1hdGNoZXJDb250cm9sbGVyLCB3aGljaFxuICogdGFrZXMgdGhlIGNvbG9yLXNjaGVtZSBDU1MgcHJvcGVydHkgaW50byBhY2NvdW50IHdoZW4gZGV0ZXJtaW5pbmdcbiAqIHRoZSBkYXJrIG1vZGUgc3RhdGUgYW5kIHVwZGF0ZXMgYSA6c3RhdGUoZGFyaykgb24gdGhlIGhvc3QuXG4gKlxuICogQGV4YW1wbGVcbiAqIG5ldyBTYmJEYXJrTW9kZUNvbnRyb2xsZXIodGhpcywgKGlzRGFya01vZGUpID0+IGRvU29tZXRoaW5nKGlzRGFya01vZGUpKTtcbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkRhcmtNb2RlQ29udHJvbGxlciBleHRlbmRzIFNiYk1lZGlhTWF0Y2hlckNvbnRyb2xsZXIge1xuICAvKiogVGhlIGN1cnJlbnQgbW9kZSBiYXNlZCBvbiB0aGUgY2xhc3MgYXR0cmlidXRlIG9mIHRoZSA8aHRtbD4gZWxlbWVudC4gKi9cbiAgcHJpdmF0ZSBzdGF0aWMgX2N1cnJlbnRNb2RlOiAnc2JiLWxpZ2h0LWRhcmsnIHwgJ3NiYi1saWdodCcgfCAnc2JiLWRhcmsnIHwgbnVsbCA9XG4gICAgdGhpcy5fcmVhZExpZ2h0RGFya0NsYXNzKCk7XG5cbiAgLyoqIE11dGF0aW9uT2JzZXJ2ZXIgdGhhdCBvYnNlcnZlcyB0aGUgXCJjbGFzc1wiIGF0dHJpYnV0ZSBvZiB0aGUgPGh0bWw+IGVsZW1lbnQuICovXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9vYnNlcnZlciA9ICFpc1NlcnZlclxuICAgID8gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuICAgICAgICBpZiAobXV0YXRpb25zWzBdLm9sZFZhbHVlICE9PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdjbGFzcycpKSB7XG4gICAgICAgICAgY29uc3QgbmV3TW9kZSA9IHRoaXMuX3JlYWRMaWdodERhcmtDbGFzcygpO1xuICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50TW9kZSAhPT0gbmV3TW9kZSkge1xuICAgICAgICAgICAgU2JiRGFya01vZGVDb250cm9sbGVyLnJlcXVlc3RVcGRhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRNb2RlID0gbmV3TW9kZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgOiBudWxsO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9vYnNlcnZlckNvbmZpZyA9IHtcbiAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnY2xhc3MnXSxcbiAgICBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSxcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXI6ICgpID0+IHZvaWQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2hvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QgJiBTYmJFbGVtZW50LFxuICAgIG9uQ2hhbmdlOiBTYmJNZWRpYU1hdGNoZXJIYW5kbGVyLFxuICApIHtcbiAgICBjb25zdCBvbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXI6ICgpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgICBvbkNoYW5nZSh0aGlzLm1hdGNoZXMoKSk7XG4gICAgICB0aGlzLl9ob3N0Wyd0b2dnbGVTdGF0ZSddPy4oJ2RhcmsnLCB0aGlzLm1hdGNoZXMoKSk7XG4gICAgfTtcbiAgICBzdXBlcihfaG9zdCwge1xuICAgICAgW1NiYk1lZGlhUXVlcnlEYXJrTW9kZV06IG9uQ2hhbmdlV2l0aFN0YXRlVXBkYXRlcixcbiAgICB9KTtcbiAgICB0aGlzLl9vbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXIgPSBvbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXI7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfcmVhZExpZ2h0RGFya0NsYXNzKCk6ICdzYmItbGlnaHQtZGFyaycgfCAnc2JiLWxpZ2h0JyB8ICdzYmItZGFyaycgfCBudWxsIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBjbGFzc0xpc3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0O1xuICAgIHJldHVybiAoXG4gICAgICAoWydzYmItbGlnaHQtZGFyaycsICdzYmItZGFyaycsICdzYmItbGlnaHQnXSBhcyBjb25zdCkuZmluZCgobW9kZSkgPT5cbiAgICAgICAgY2xhc3NMaXN0LmNvbnRhaW5zKG1vZGUpLFxuICAgICAgKSA/PyBudWxsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0cyBhbiB1cGRhdGUgb2YgdGhlIGRhcmsgbW9kZSBzdGF0ZS4gVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGUgY29sb3Itc2NoZW1lXG4gICAqIENTUyBwcm9wZXJ0eSBjaGFuZ2VzLCBhcyB0aGUgbWVkaWEgcXVlcnkgZG9lcyBub3QgcGljayB0aGlzIHVwIGF1dG9tYXRpY2FsbHkuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbHluZS9uZWVkcy1zdXBlci1jYWxsLXJ1bGVcbiAgcHVibGljIHN0YXRpYyByZXF1ZXN0VXBkYXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVudHJ5ID0gbWVkaWFRdWVyeVJlZ2lzdHJ5LmdldChTYmJNZWRpYVF1ZXJ5RGFya01vZGUpO1xuICAgIGlmIChlbnRyeSkge1xuICAgICAgZW50cnkuaGFuZGxlcnMuZm9yRWFjaCgoaCkgPT4gaChlbnRyeS5tZWRpYVF1ZXJ5TGlzdC5tYXRjaGVzKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGhvc3RDb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgY29uc3QgaXNGaXJzdExpc3RlbmVyID1cbiAgICAgIChtZWRpYVF1ZXJ5UmVnaXN0cnkuZ2V0KFNiYk1lZGlhUXVlcnlEYXJrTW9kZSk/LmhhbmRsZXJzLnNpemUgPz8gMCkgPT09IDA7XG4gICAgc3VwZXIuaG9zdENvbm5lY3RlZCgpO1xuXG4gICAgaWYgKGlzRmlyc3RMaXN0ZW5lcikge1xuICAgICAgU2JiRGFya01vZGVDb250cm9sbGVyLl9vYnNlcnZlciEub2JzZXJ2ZShcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFxuICAgICAgICBTYmJEYXJrTW9kZUNvbnRyb2xsZXIuX29ic2VydmVyQ29uZmlnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9vbkNoYW5nZVdpdGhTdGF0ZVVwZGF0ZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBob3N0RGlzY29ubmVjdGVkKCk6IHZvaWQge1xuICAgIHN1cGVyLmhvc3REaXNjb25uZWN0ZWQoKTtcblxuICAgIGlmICgobWVkaWFRdWVyeVJlZ2lzdHJ5LmdldChTYmJNZWRpYVF1ZXJ5RGFya01vZGUpPy5oYW5kbGVycy5zaXplID8/IDApID09PSAwKSB7XG4gICAgICBTYmJEYXJrTW9kZUNvbnRyb2xsZXIuX29ic2VydmVyIS5kaXNjb25uZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIG1hdGNoZXMoKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzU2VydmVyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGNvbG9yU2NoZW1lID0gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9ob3N0KS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvci1zY2hlbWUnKTtcbiAgICBjb25zdCBkYXJrQXZhaWxhYmxlID0gY29sb3JTY2hlbWUuaW5jbHVkZXMoJ2RhcmsnKTtcbiAgICBjb25zdCBkYXJrT25seSA9IGNvbG9yU2NoZW1lLnRyaW0oKSA9PT0gJ2RhcmsnO1xuICAgIGNvbnN0IHByZWZlcnJlZERhcmtNb2RlID0gc3VwZXIubWF0Y2hlcyhTYmJNZWRpYVF1ZXJ5RGFya01vZGUpIGFzIGJvb2xlYW47XG5cbiAgICByZXR1cm4gKHByZWZlcnJlZERhcmtNb2RlICYmIGRhcmtBdmFpbGFibGUpIHx8IGRhcmtPbmx5O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7OztBQWFBLElBQWEsNEJBQTRCO0FBQ3pDLElBQWEsd0JBQXdCO0FBQ3JDLElBQWEscUJBQXFCO0FBQ2xDLElBQWEsNkJBQTZCO0FBQzFDLElBQWEsc0NBQXNDLGVBQWUscUJBQW9CO0FBQ3RGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCO0FBQ3hGLElBQWEsdUNBQXVDLGVBQWUsc0JBQXFCOzs7Ozs7QUFvQnhGLElBQU0scUNBQXFCLElBQUksS0FBOEI7Ozs7Ozs7OztBQVU3RCxJQUFhLDRCQUFiLE1BQXNDO0NBQ3BDLFlBQ0UsTUFDUSxVQUFnRDtBQUFoRCxPQUFBLFdBQUE7QUFFUixPQUFLLGNBQWMsS0FBSzs7Ozs7OztDQVFuQixRQUFRLE9BQWE7QUFHMUIsU0FBTyxXQUFXLE9BQU8sV0FBVyxNQUFNLENBQUM7O0NBR3RDLGdCQUFhO0FBQ2xCLE1BQUksU0FDRjtBQUdGLE9BQUssTUFBTSxDQUFDLE9BQU8sWUFBWSxPQUFPLFFBQVEs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
@@ -291,11 +291,12 @@ var SbbOverlayPositionController = class {
291
291
  _readPositionsFromCss() {
292
292
  if (!this._usePolyfill) return;
293
293
  this._overlayStyles ??= getComputedStyle(this._overlay);
294
- this._positions = [this._overlayStyles.getPropertyValue("--sbb-overlay-position-area") || "block-end", ...this._overlayStyles.getPropertyValue("--sbb-overlay-position-try-fallbacks").split(",").map((f) => f.trim()).filter((f) => !!f)];
294
+ const positions = [this._overlayStyles.getPropertyValue("--sbb-overlay-position-area") || "block-end", ...this._overlayStyles.getPropertyValue("--sbb-overlay-position-try-fallbacks").split(",").map((f) => f.trim()).filter((f) => !!f)];
295
+ this._positions = positions;
295
296
  if (this._lastPosition && !this._positions.includes(this._lastPosition)) this._lastPosition = void 0;
296
297
  }
297
298
  };
298
299
  //#endregion
299
300
  export { SbbOverlayPositionController };
300
301
 
301
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1wb3NpdGlvbi1jb250cm9sbGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL292ZXJsYXktcG9zaXRpb24tY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1NlcnZlciwgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmNvbnN0IGNzc0FuY2hvclBvc2l0aW9uU3VwcG9ydGVkID0gIWlzU2VydmVyICYmIENTUy5zdXBwb3J0cygnYW5jaG9yLW5hbWUnLCAnLS10ZXN0Jyk7XG5cbmNvbnN0IHBoeXNpY2FsU3VwcG9ydGVkUG9zaXRpb25zID0gW1xuICAndG9wJyxcbiAgJ2JvdHRvbScsXG4gICdsZWZ0JyxcbiAgJ3JpZ2h0JyxcbiAgJ3RvcCBzcGFuLWxlZnQnLFxuICAndG9wIHNwYW4tcmlnaHQnLFxuICAnYm90dG9tIHNwYW4tbGVmdCcsXG4gICdib3R0b20gc3Bhbi1yaWdodCcsXG4gICdsZWZ0IHNwYW4tdG9wJyxcbiAgJ2xlZnQgc3Bhbi1ib3R0b20nLFxuICAncmlnaHQgc3Bhbi10b3AnLFxuICAncmlnaHQgc3Bhbi1ib3R0b20nLFxuXTtcblxuLy8gTm90ZTogaWYgeW91IGFkZCBuZXcgbG9naWNhbCBzdXBwb3J0ZWQgcG9zaXRpb25zLCB1cGRhdGUgYWxzbyB0aGUgJ3J0bFBvc2l0aW9uTWFwcGluZydcbmNvbnN0IGxvZ2ljYWxTdXBwb3J0ZWRQb3NpdGlvbnMgPSBbXG4gICdibG9jay1zdGFydCcsXG4gICdibG9jay1lbmQnLFxuICAnaW5saW5lLXN0YXJ0JyxcbiAgJ2lubGluZS1lbmQnLFxuICAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtZW5kJyxcbiAgJ2Jsb2NrLWVuZCBzcGFuLWlubGluZS1zdGFydCcsXG4gICdibG9jay1lbmQgc3Bhbi1pbmxpbmUtZW5kJyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLXN0YXJ0JyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLWVuZCcsXG4gICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stc3RhcnQnLFxuICAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLWVuZCcsXG5dO1xuXG5jb25zdCBydGxQb3NpdGlvbk1hcHBpbmc6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICdibG9jay1zdGFydCc6ICdibG9jay1zdGFydCcsXG4gICdibG9jay1lbmQnOiAnYmxvY2stZW5kJyxcbiAgJ2lubGluZS1zdGFydCc6ICdpbmxpbmUtZW5kJyxcbiAgJ2lubGluZS1lbmQnOiAnaW5saW5lLXN0YXJ0JyxcbiAgJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLXN0YXJ0JzogJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLWVuZCcsXG4gICdibG9jay1zdGFydCBzcGFuLWlubGluZS1lbmQnOiAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnYmxvY2stZW5kIHNwYW4taW5saW5lLXN0YXJ0JzogJ2Jsb2NrLWVuZCBzcGFuLWlubGluZS1lbmQnLFxuICAnYmxvY2stZW5kIHNwYW4taW5saW5lLWVuZCc6ICdibG9jay1lbmQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnaW5saW5lLXN0YXJ0IHNwYW4tYmxvY2stc3RhcnQnOiAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLXN0YXJ0JyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLWVuZCc6ICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stZW5kJyxcbiAgJ2lubGluZS1lbmQgc3Bhbi1ibG9jay1zdGFydCc6ICdpbmxpbmUtc3RhcnQgc3Bhbi1ibG9jay1zdGFydCcsXG4gICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stZW5kJzogJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLWVuZCcsXG59O1xuXG5jb25zdCBzdXBwb3J0ZWRQb3NpdGlvbnMgPSBbLi4ucGh5c2ljYWxTdXBwb3J0ZWRQb3NpdGlvbnMsIC4uLmxvZ2ljYWxTdXBwb3J0ZWRQb3NpdGlvbnNdO1xubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogQ29udHJvbGxlciBmb3IgbWFuYWdpbmcgb3ZlcmxheXMgcG9zaXRpb25pbmcuIEFsc28gYWN0cyBhcyBhIHBvbHlmaWxsIHdoZW4gbmF0aXZlXG4gKiBDU1MgQW5jaG9yIFBvc2l0aW9uaW5nIGlzIG5vdCBzdXBwb3J0ZWQgKGVub3VnaCkuXG4gKiBBcHBsaWVzIHVuaXF1ZSBhbmNob3IgbmFtZXMgd2hlbiB1c2luZyBuYXRpdmUgQ1NTIEFuY2hvciBQb3NpdGlvbmluZ1xuICogb3IgY2FsY3VsYXRlcyBhbmQgYXBwbGllcyBjb3JyZWN0IHBvc2l0aW9ucyBpbiBwb2x5ZmlsbCBtb2RlLlxuICpcbiAqIEFsc28sIHRoZSBjb250cm9sbGVyIHNldHMgdGhlICdkYXRhLXBvc2l0aW9uJyBhdHRyaWJ1dGUgb24gdGhlIG92ZXJsYXkgZWxlbWVudC5cbiAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXBwbHkgc3BlY2lmaWMgc3R5bGVzIGJhc2VkIG9uIHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSBvdmVybGF5LlxuICpcbiAqICMjIyBJbXBsZW1lbnRhdGlvblxuICogRGVmaW5lIGFuZCBhcHBseSB0aGUgZm9sbG93aW5nIENTUyB2YXJpYWJsZXMgb24gdGhlIG92ZXJsYXkgZWxlbWVudDpcbiAqIGBgYHNjc3NcbiAqICAgLS1zYmItb3ZlcmxheS1wb3NpdGlvbi1hcmVhOiBibG9jay1lbmQ7IC8vIERlZmF1bHRcbiAqICAgLS1zYmItb3ZlcmxheS1wb3NpdGlvbi10cnktZmFsbGJhY2tzOiBibG9jay1zdGFydCwgaW5saW5lLWVuZCwgaW5saW5lLXN0YXJ0OyAvLyBGYWxsYmFja3NcbiAqXG4gKiAgIHBvc2l0aW9uLWFyZWE6IHZhcigtLXNiYi1vdmVybGF5LXBvc2l0aW9uLWFyZWEpO1xuICogICBwb3NpdGlvbi10cnktZmFsbGJhY2tzOiB2YXIoLS1zYmItb3ZlcmxheS1wb3NpdGlvbi10cnktZmFsbGJhY2tzKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgU2JiT3ZlcmxheVBvc2l0aW9uQ29udHJvbGxlciBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc2l6ZU9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gdGhpcy5fcmVxdWVzdENhbGN1bGF0ZVBvc2l0aW9uKCkpXG4gICAgOiBudWxsITtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3ZlcmxheTogUmVhY3RpdmVDb250cm9sbGVySG9zdCAmIEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9hYm9ydENvbnRyb2xsZXI/OiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX2FuY2hvcj86IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9vdmVybGF5U3R5bGVzPzogQ1NTU3R5bGVEZWNsYXJhdGlvbjtcbiAgcHJpdmF0ZSBfZnJhbWU/OiBSZXR1cm5UeXBlPHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU+O1xuICBwcml2YXRlIF9hbmNob3JOYW1lID0gYC0tc2JiLW92ZXJsYXktYW5jaG9yLSR7KytuZXh0SWR9YDtcbiAgcHJpdmF0ZSBfcG9zaXRpb25zOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIF9sYXN0UG9zaXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqIEdldCB0aGUgY3VycmVudCBwb3NpdGlvbi4gKGUuZy4gYmxvY2stZW5kLCBibG9jay1zdGFydCwgZXRjLikgKi9cbiAgcHVibGljIGdldCBjdXJyZW50UG9zaXRpb24oKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fdXNlUG9seWZpbGwpIHtcbiAgICAgIHJldHVybiB0aGlzLl9sYXN0UG9zaXRpb24gPz8gdGhpcy5fcG9zaXRpb25zWzBdID8/ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9vdmVybGF5U3R5bGVzID8/PSBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX292ZXJsYXkpO1xuICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXlTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgncG9zaXRpb24tYXJlYScpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0ICYgSFRNTEVsZW1lbnQsXG4gICAgcHJpdmF0ZSBfdXNlUG9seWZpbGwgPSAhY3NzQW5jaG9yUG9zaXRpb25TdXBwb3J0ZWQsXG4gICkge1xuICAgIGhvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgICB0aGlzLl9vdmVybGF5ID0gaG9zdDtcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdXNlUG9seWZpbGwpIHtcbiAgICAgIHRoaXMuX292ZXJsYXkuc3R5bGUuc2V0UHJvcGVydHkoJ3Bvc2l0aW9uLWFuY2hvcicsIHRoaXMuX2FuY2hvck5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXNldCB0aGUgJ3Bvc2l0aW9uLWFyZWEnIHZhbHVlIHRvIGF2b2lkIGFueSB1bndhbnRlZCBzaWRlIGVmZmVjdCB3aGVuIHVzaW5nIHRoZSBwb2x5ZmlsbC5cbiAgICAgIHRoaXMuX292ZXJsYXkuc3R5bGUuc2V0UHJvcGVydHkoJ3Bvc2l0aW9uLWFyZWEnLCAnaW5pdGlhbCcpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBob3N0VXBkYXRlKCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9yZWFkUG9zaXRpb25zRnJvbUNzcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbm5lY3RzIHRoZSBvdmVybGF5IHRvIHRoZSBnaXZlbiB0cmlnZ2VyIGVsZW1lbnQgYW5kIGRldGVybWluZXMgdGhlIG9wdGltYWwgcG9zaXRpb24uXG4gICAqIFVzdWFsbHksIHRoaXMgaXMgY2FsbGVkIHdoZW4gdGhlIG92ZXJsYXkgaXMgb3BlbmVkLlxuICAgKiBAcGFyYW0gYW5jaG9yIFRoZSBhbmNob3IgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBjb25uZWN0KGFuY2hvcjogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYW5jaG9yKSB7XG4gICAgICB0aGlzLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gICAgdGhpcy5fYW5jaG9yID0gYW5jaG9yO1xuXG4gICAgaWYgKCF0aGlzLl91c2VQb2x5ZmlsbCkge1xuICAgICAgdGhpcy5fYW5jaG9yLnN0eWxlLnNldFByb3BlcnR5KCdhbmNob3ItbmFtZScsIHRoaXMuX2FuY2hvck5hbWUhKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yZWFkUG9zaXRpb25zRnJvbUNzcygpO1xuICAgIHRoaXMuX2NhbGN1bGF0ZVBvc2l0aW9uKCk7XG4gICAgdGhpcy5fYWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX2Fib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAgIC8vIFdlIG5lZWQgdG8gdXNlIGNhcHR1cmUgaGVyZSB0byByZWFjdCB0byBhbGwgc2Nyb2xsIGV2ZW50cy5cbiAgICAvLyBJZiBjYXB0dXJlIHdhcyBub3QgdXNlZCwgdGhlbiBzY3JvbGwgZXZlbnRzIGluc2lkZSBzZXBhcmF0ZSBzY3JvbGxcbiAgICAvLyBjb250YWluZXJzIHdvdWxkIG5vdCBiZSBjYXVnaHQuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4gdGhpcy5fcmVxdWVzdENhbGN1bGF0ZVBvc2l0aW9uKCksIHtcbiAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9hYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB0aGlzLl9yZXF1ZXN0Q2FsY3VsYXRlUG9zaXRpb24oKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fYWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKGFuY2hvciwgeyBib3g6ICdib3JkZXItYm94JyB9KTtcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX292ZXJsYXksIHsgYm94OiAnYm9yZGVyLWJveCcgfSk7XG4gIH1cblxuICBwdWJsaWMgZGlzY29ubmVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbmNob3I/LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdhbmNob3ItbmFtZScpO1xuICAgIHRoaXMuX2FuY2hvciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9hYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVxdWVzdENhbGN1bGF0ZVBvc2l0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2ZyYW1lID8/PSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5fY2FsY3VsYXRlUG9zaXRpb24oKTtcbiAgICAgIHRoaXMuX2ZyYW1lID0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2FsY3VsYXRlUG9zaXRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hbmNob3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fdXNlUG9seWZpbGwpIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5fZ2V0T3B0aW1hbFBvc2l0aW9uKHRoaXMuX3Bvc2l0aW9ucyk7XG4gICAgICB0aGlzLl9hcHBseU92ZXJsYXlQb3NpdGlvbihwb3NpdGlvbi5wb3NpdGlvbiwgcG9zaXRpb24ubGVmdCwgcG9zaXRpb24udG9wKTtcbiAgICB9XG5cbiAgICB0aGlzLl9vdmVybGF5LnNldEF0dHJpYnV0ZSgnZGF0YS1wb3NpdGlvbicsIHRoaXMuY3VycmVudFBvc2l0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBvcHRpbWFsIHBvc2l0aW9uIHRoYXQgZml0cyB0aGUgb3ZlcmxheS5cbiAgICogQHBhcmFtIHBvc2l0aW9ucyBUaGUgbGlzdCBvZiBwb3NpdGlvbnMgdG8gY2hlY2suXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9nZXRPcHRpbWFsUG9zaXRpb24ocG9zaXRpb25zOiBzdHJpbmdbXSk6IHtcbiAgICBsZWZ0OiBudW1iZXI7XG4gICAgdG9wOiBudW1iZXI7XG4gICAgcG9zaXRpb246IHN0cmluZztcbiAgICBmaXRzPzogYm9vbGVhbjtcbiAgfSB7XG4gICAgY29uc3QgeyBvZmZzZXRIZWlnaHQ6IG92ZXJsYXlIZWlnaHQsIG9mZnNldFdpZHRoOiBvdmVybGF5V2lkdGggfSA9IHRoaXMuX292ZXJsYXk7XG4gICAgY29uc3QgeyBpbm5lckhlaWdodDogdmlld3BvcnRIZWlnaHQsIGlubmVyV2lkdGg6IHZpZXdwb3J0V2lkdGggfSA9IHdpbmRvdztcbiAgICBjb25zdCB7XG4gICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AsXG4gICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCxcbiAgICAgIGhlaWdodDogdHJpZ2dlckhlaWdodCxcbiAgICAgIHdpZHRoOiB0cmlnZ2VyV2lkdGgsXG4gICAgfSA9IHRoaXMuX2FuY2hvciEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBjb25zdCBpc1J0bCA9IHRoaXMuX292ZXJsYXkubWF0Y2hlcygnOmRpcihydGwpJyk7XG4gICAgY29uc3QgdG9wU3BhY2UgPSB0cmlnZ2VyT2Zmc2V0VG9wO1xuICAgIGNvbnN0IGJvdHRvbVNwYWNlID0gdmlld3BvcnRIZWlnaHQgLSB0cmlnZ2VySGVpZ2h0IC0gdHJpZ2dlck9mZnNldFRvcDtcbiAgICBjb25zdCBsZWZ0U3BhY2UgPSB0cmlnZ2VyT2Zmc2V0TGVmdDtcbiAgICBjb25zdCByaWdodFNwYWNlID0gdmlld3BvcnRXaWR0aCAtIHRyaWdnZXJXaWR0aCAtIHRyaWdnZXJPZmZzZXRMZWZ0O1xuXG4gICAgLy8gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgb3ZlcmxheSBhbmQgdGhlIHRyaWdnZXIgd2lkdGgvaGVpZ2h0LlxuICAgIGNvbnN0IG92ZXJsYXlXaWR0aE5ldCA9IG92ZXJsYXlXaWR0aCAtIHRyaWdnZXJXaWR0aDtcbiAgICBjb25zdCBvdmVybGF5SGVpZ2h0TmV0ID0gb3ZlcmxheUhlaWdodCAtIHRyaWdnZXJIZWlnaHQ7XG5cbiAgICAvLyBUaGUgYW1vdW50IHRoYXQgd291bGQgZXhjZWVkIHRoZSB0cmlnZ2VyIGlmIHRoZSBvdmVybGF5IHdlcmUgY2VudGVyZWQgb24gaXQuXG4gICAgY29uc3Qgb3ZlcmxheVdpZHRoT3ZlcmxhcCA9IG92ZXJsYXlXaWR0aE5ldCAvIDI7XG4gICAgY29uc3Qgb3ZlcmxheUhlaWdodE92ZXJsYXAgPSBvdmVybGF5SGVpZ2h0TmV0IC8gMjtcblxuICAgIHRoaXMuX292ZXJsYXkuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAnLS1zYmItb3ZlcmxheS1jb250cm9sbGVyLXRyaWdnZXItaGVpZ2h0JyxcbiAgICAgIGAke3RyaWdnZXJIZWlnaHR9cHhgLFxuICAgICk7XG4gICAgdGhpcy5fb3ZlcmxheS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItb3ZlcmxheS1jb250cm9sbGVyLXRyaWdnZXItd2lkdGgnLCBgJHt0cmlnZ2VyV2lkdGh9cHhgKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWFzc2lnbm1lbnRcbiAgICBsZXQgcmVzdWx0OiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLl9nZXRPcHRpbWFsUG9zaXRpb24+ID0geyBsZWZ0OiAwLCB0b3A6IDAsIHBvc2l0aW9uOiAnJyB9O1xuICAgIGxldCBmaXJzdFBvc2l0aW9uOiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLl9nZXRPcHRpbWFsUG9zaXRpb24+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGZvciAoY29uc3QgcG9zaXRpb24gb2YgcG9zaXRpb25zKSB7XG4gICAgICAvLyBJZiBydGwgaXMgZW5hYmxlZCwgd2UgbWFwIHRoZSBsb2dpY2FsIHBvc2l0aW9uIHRvIHRoZWlyIFJUTCBlcXVpdmFsZW50LiAoZS5nLiAnaW5saW5lLXN0YXJ0JyAtPiAnaW5saW5lLWVuZCcpXG4gICAgICBjb25zdCBwaHlzaWNhbFBvc2l0aW9uID1cbiAgICAgICAgaXNSdGwgJiYgbG9naWNhbFN1cHBvcnRlZFBvc2l0aW9ucy5pbmNsdWRlcyhwb3NpdGlvbilcbiAgICAgICAgICA/IHJ0bFBvc2l0aW9uTWFwcGluZ1twb3NpdGlvbl1cbiAgICAgICAgICA6IHBvc2l0aW9uO1xuXG4gICAgICBzd2l0Y2ggKHBoeXNpY2FsUG9zaXRpb24pIHtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgY2FzZSAnYmxvY2stZW5kJzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoT3ZlcmxhcCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCArIHRyaWdnZXJIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOlxuICAgICAgICAgICAgICBvdmVybGF5SGVpZ2h0IDw9IGJvdHRvbVNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aE92ZXJsYXAgPD0gbGVmdFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aE92ZXJsYXAgPD0gcmlnaHRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICBjYXNlICdibG9jay1zdGFydCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCAtIG92ZXJsYXlXaWR0aE92ZXJsYXAsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgLSBvdmVybGF5SGVpZ2h0LFxuICAgICAgICAgICAgZml0czpcbiAgICAgICAgICAgICAgb3ZlcmxheUhlaWdodCA8PSB0b3BTcGFjZSAmJlxuICAgICAgICAgICAgICBvdmVybGF5V2lkdGhPdmVybGFwIDw9IGxlZnRTcGFjZSAmJlxuICAgICAgICAgICAgICBvdmVybGF5V2lkdGhPdmVybGFwIDw9IHJpZ2h0U3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICBjYXNlICdpbmxpbmUtZW5kJzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0ICsgdHJpZ2dlcldpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wIC0gb3ZlcmxheUhlaWdodE92ZXJsYXAsXG4gICAgICAgICAgICBmaXRzOlxuICAgICAgICAgICAgICBvdmVybGF5V2lkdGggPD0gcmlnaHRTcGFjZSAmJlxuICAgICAgICAgICAgICBvdmVybGF5SGVpZ2h0T3ZlcmxhcCA8PSB0b3BTcGFjZSAmJlxuICAgICAgICAgICAgICBvdmVybGF5SGVpZ2h0T3ZlcmxhcCA8PSBib3R0b21TcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgY2FzZSAnaW5saW5lLXN0YXJ0JzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wIC0gb3ZlcmxheUhlaWdodE92ZXJsYXAsXG4gICAgICAgICAgICBmaXRzOlxuICAgICAgICAgICAgICBvdmVybGF5V2lkdGggPD0gbGVmdFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlIZWlnaHRPdmVybGFwIDw9IHRvcFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlIZWlnaHRPdmVybGFwIDw9IGJvdHRvbVNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3RvcCBzcGFuLWxlZnQnOlxuICAgICAgICBjYXNlICdibG9jay1zdGFydCBzcGFuLWlubGluZS1zdGFydCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCAtIG92ZXJsYXlXaWR0aE5ldCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCAtIG92ZXJsYXlIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOiBvdmVybGF5SGVpZ2h0IDw9IHRvcFNwYWNlICYmIG92ZXJsYXlXaWR0aE5ldCA8PSBsZWZ0U3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndG9wIHNwYW4tcmlnaHQnOlxuICAgICAgICBjYXNlICdibG9jay1zdGFydCBzcGFuLWlubGluZS1lbmQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgLSBvdmVybGF5SGVpZ2h0LFxuICAgICAgICAgICAgZml0czogb3ZlcmxheUhlaWdodCA8PSB0b3BTcGFjZSAmJiBvdmVybGF5V2lkdGhOZXQgPD0gcmlnaHRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib3R0b20gc3Bhbi1sZWZ0JzpcbiAgICAgICAgY2FzZSAnYmxvY2stZW5kIHNwYW4taW5saW5lLXN0YXJ0JzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoTmV0LFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wICsgdHJpZ2dlckhlaWdodCxcbiAgICAgICAgICAgIGZpdHM6IG92ZXJsYXlIZWlnaHQgPD0gYm90dG9tU3BhY2UgJiYgb3ZlcmxheVdpZHRoTmV0IDw9IGxlZnRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib3R0b20gc3Bhbi1yaWdodCc6XG4gICAgICAgIGNhc2UgJ2Jsb2NrLWVuZCBzcGFuLWlubGluZS1lbmQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgKyB0cmlnZ2VySGVpZ2h0LFxuICAgICAgICAgICAgZml0czogb3ZlcmxheUhlaWdodCA8PSBib3R0b21TcGFjZSAmJiBvdmVybGF5V2lkdGhOZXQgPD0gcmlnaHRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsZWZ0IHNwYW4tdG9wJzpcbiAgICAgICAgY2FzZSAnaW5saW5lLXN0YXJ0IHNwYW4tYmxvY2stc3RhcnQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgLSBvdmVybGF5V2lkdGgsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgKyB0cmlnZ2VySGVpZ2h0IC0gb3ZlcmxheUhlaWdodCxcbiAgICAgICAgICAgIGZpdHM6IG92ZXJsYXlXaWR0aCA8PSBsZWZ0U3BhY2UgJiYgb3ZlcmxheUhlaWdodE5ldCA8PSB0b3BTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsZWZ0IHNwYW4tYm90dG9tJzpcbiAgICAgICAgY2FzZSAnaW5saW5lLXN0YXJ0IHNwYW4tYmxvY2stZW5kJzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wLFxuICAgICAgICAgICAgZml0czogb3ZlcmxheVdpZHRoIDw9IGxlZnRTcGFjZSAmJiBvdmVybGF5SGVpZ2h0TmV0IDw9IGJvdHRvbVNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JpZ2h0IHNwYW4tdG9wJzpcbiAgICAgICAgY2FzZSAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLXN0YXJ0JzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0ICsgdHJpZ2dlcldpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wICsgdHJpZ2dlckhlaWdodCAtIG92ZXJsYXlIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOiBvdmVybGF5V2lkdGggPD0gcmlnaHRTcGFjZSAmJiBvdmVybGF5SGVpZ2h0TmV0IDw9IHRvcFNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JpZ2h0IHNwYW4tYm90dG9tJzpcbiAgICAgICAgY2FzZSAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLWVuZCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCArIHRyaWdnZXJXaWR0aCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCxcbiAgICAgICAgICAgIGZpdHM6IG92ZXJsYXlXaWR0aCA8PSByaWdodFNwYWNlICYmIG92ZXJsYXlIZWlnaHROZXQgPD0gYm90dG9tU3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQuZml0cykge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgZmlyc3RQb3NpdGlvbiA/Pz0gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIElmIG5vIHBvc2l0aW9uIGZpdHMsIHdlIHJldHVybiB0aGUgZmlyc3Qgb25lLlxuICAgIHJldHVybiBmaXJzdFBvc2l0aW9uITtcbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5T3ZlcmxheVBvc2l0aW9uKHBvc2l0aW9uOiBzdHJpbmcsIGxlZnQ6IG51bWJlciwgdG9wOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9sYXN0UG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICB0aGlzLl9vdmVybGF5LnN0eWxlLmxlZnQgPSBgJHtsZWZ0fXB4YDtcbiAgICB0aGlzLl9vdmVybGF5LnN0eWxlLnRvcCA9IGAke3RvcH1weGA7XG4gIH1cblxuICAvKipcbiAgICogT25seSB1c2VkIGluIHBvbHlmaWxsIG1vZGUuXG4gICAqIFJlYWRzIHRoZSBsaXN0IG9mIHRoZSBjb25maWd1cmVkIHBvc2l0aW9ucyBmcm9tIHRoZSBDU1MgdmFyaWFibGVzLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfcmVhZFBvc2l0aW9uc0Zyb21Dc3MoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl91c2VQb2x5ZmlsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9vdmVybGF5U3R5bGVzID8/PSBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX292ZXJsYXkpO1xuICAgIGNvbnN0IHBvc2l0aW9ucyA9IFtcbiAgICAgIHRoaXMuX292ZXJsYXlTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zYmItb3ZlcmxheS1wb3NpdGlvbi1hcmVhJykgfHwgJ2Jsb2NrLWVuZCcsXG4gICAgICAuLi50aGlzLl9vdmVybGF5U3R5bGVzXG4gICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKCctLXNiYi1vdmVybGF5LXBvc2l0aW9uLXRyeS1mYWxsYmFja3MnKVxuICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAubWFwKChmKSA9PiBmLnRyaW0oKSlcbiAgICAgICAgLmZpbHRlcigoZikgPT4gISFmKSxcbiAgICBdO1xuXG4gICAgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYgJiYgcG9zaXRpb25zLnNvbWUoKHApID0+ICFzdXBwb3J0ZWRQb3NpdGlvbnMuaW5jbHVkZXMocCkpKSB7XG4gICAgICBjb25zdCB1bnN1cHBvcnRlZFBvc2l0aW9ucyA9IHBvc2l0aW9uc1xuICAgICAgICAuZmlsdGVyKChwKSA9PiAhc3VwcG9ydGVkUG9zaXRpb25zLmluY2x1ZGVzKHApKVxuICAgICAgICAuc29ydCgpXG4gICAgICAgIC5qb2luKCcsICcpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5zdXBwb3J0ZWQgcG9zaXRpb24tdHJ5LWZhbGxiYWNrcyAke3Vuc3VwcG9ydGVkUG9zaXRpb25zfSAoU3VwcG9ydGVkOiAke3N1cHBvcnRlZFBvc2l0aW9ucy5qb2luKCcsICcpfSlgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wb3NpdGlvbnMgPSBwb3NpdGlvbnM7XG4gICAgaWYgKHRoaXMuX2xhc3RQb3NpdGlvbiAmJiAhdGhpcy5fcG9zaXRpb25zLmluY2x1ZGVzKHRoaXMuX2xhc3RQb3NpdGlvbikpIHtcbiAgICAgIHRoaXMuX2xhc3RQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFFQSxJQUFNLDZCQUE2QixDQUFDLFlBQVksSUFBSSxTQUFTLGVBQWUsU0FBUztBQUVyRixJQUFNLDZCQUE2QjtDQUNqQztDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDRDtBQUdELElBQU0sNEJBQTRCO0NBQ2hDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNEO0FBRUQsSUFBTSxxQkFBZ0Q7Q0FDcEQsZUFBZTtDQUNmLGFBQWE7Q0FDYixnQkFBZ0I7Q0FDaEIsY0FBYztDQUNkLGlDQUFpQztDQUNqQywrQkFBK0I7Q0FDL0IsK0JBQStCO0NBQy9CLDZCQUE2QjtDQUM3QixpQ0FBaUM7Q0FDakMsK0JBQStCO0NBQy9CLCtCQUErQjtDQUMvQiw2QkFBNkI7Q0FDOUI7QUFFMEIsQ0FBQyxHQUFHLDRCQUE0QixHQUFHLDBCQUEwQjtBQUN4RixJQUFJLFNBQVM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJiLElBQWEsK0JBQWIsTUFBeUM7O0NBY3ZDLElBQVcsa0JBQWU7QUFDeEIsTUFBSSxLQUFLLGFBQ1AsUUFBTyxLQUFLLGlCQUFpQixLQUFLLFdBQVcsTUFBTTtPQUM5QztBQUNMLFFBQUssbUJBQW1CLGlCQUFpQixLQUFLLFNBQVM7QUFDdkQsVUFBTyxLQUFLLGVBQWUsaUJBQWlCLGdCQUFnQjs7O0NBSWhFLFlBQ0UsTUFDUSxlQUFlLENBQUMsNEJBQTBCO0FBQTFDLE9BQUEsZUFBQTtBQXhCTyxPQUFBLGtCQUFrQixDQUFDLFdBQ2hDLElBQUkscUJBQXFCLEtBQUssMkJBQTJCLENBQUMsR0FDMUQ7QUFNSSxPQUFBLGNBQWMsd0JBQXdCLEVBQUU7QUFDeEMsT0FBQSxhQUF1QixFQUFFO0FBaUIvQixPQUFLLGNBQWMsS0FBSztBQUN4QixPQUFLLFdBQVc7O0NBR1gsZ0JBQWE7QUFDbEIsTUFBSSxDQUFDLEtBQUssYUFDUixNQUFLLFNBQVMsTUFBTSxZQUFZLG1CQUFtQixLQUFLLFlBQVk7TUFHcEUsTUFBSyxTQUFTLE1BQU0sWUFBWSxpQkFBaUIsVUFBVTs7Q0FJeEQsYUFBVTtBQUNmLE1BQUksU0FDRjtBQUVGLE9BQUssdUJBQXVCOzs7Ozs7O0NBUXZCLFFBQVEsUUFBbUI7QUFDaEMsTUFBSSxTQUNGO0FBR0YsTUFBSSxLQUFLLFFBQ1AsTUFBSyxZQUFZO0FBRW5CLE9BQUssVUFBVTtBQUVmLE1BQUksQ0FBQyxLQUFLLGFBQ1IsTUFBSyxRQUFRLE1BQU0sWUFBWSxlQUFlLEtBQUssWUFBYTtBQUdsRSxPQUFLLHVCQUF1QjtBQUM1QixPQUFLLG9CQUFvQjtBQUN6QixPQUFLLGtCQUFrQixPQUFPO0FBQzlCLE9BQUssbUJBQW1CLElBQUksaUJBQWlCO0FBSzdDLFdBQVMsaUJBQWlCLGdCQUFnQixLQUFLLDJCQUEyQixFQUFFO0dBQzFFLFNBQVM7R0FDVCxTQUFTO0dBQ1QsUUFBUSxLQUFLLGlCQUFpQjtHQUMvQixDQUFDO0FBQ0YsU0FBTyxpQkFBaUIsZ0JBQWdCLEtBQUssMkJBQTJCLEVBQUU7R0FDeEUsU0FBUztHQUNULFFBQVEsS0FBSyxpQkFBaUI7R0FDL0IsQ0FBQztBQUNGLE9BQUssZ0JBQWdCLFFBQVEsUUFBUSxFQUFFLEtBQUssY0FBYyxDQUFDO0FBQzNELE9BQUssZ0JBQWdCLFFBQVEsS0FBSyxVQUFVLEVBQUUsS0FBSyxjQUFjLENBQUM7O0NBRzdELGFBQVU7QUFDZixPQUFLLFNBQVMsTUFBTSxlQUFlLGNBQWM7QUFDakQsT0FBSyxVQUFVLEtBQUE7QUFDZixPQUFLLGtCQUFrQixPQUFPO0FBQzlCLE9BQUssZ0JBQWdCLFlBQVk7O0NBRzNCLDRCQUF5QjtBQUMvQixPQUFLLFdBQVcsNEJBQTJCO0FBQ3pDLFFBQUssb0JBQW9CO0FBQ3pCLFFBQUssU0FBUyxLQUFBO0lBQ2Q7O0NBR0kscUJBQWtCO0FBQ3hCLE1BQUksQ0FBQyxLQUFLLFFBQ1I7QUFHRixNQUFJLEtBQUssY0FBYztHQUNyQixNQUFNLFdBQVcsS0FBSyxvQkFBb0IsS0FBSyxXQUFXO0FBQzFELFFBQUssc0JBQXNCLFNBQVMsVUFBVSxTQUFTLE1BQU0sU0FBUyxJQUFJOztBQUc1RSxPQUFLLFNBQVMsYUFBYSxpQkFBaUIsS0FBSyxnQkFBZ0I7Ozs7Ozs7Q0FRM0Qsb0JBQW9CLFdBQW1CO0VBTTdDLE1BQU0sRUFBRSxjQUFjLGVBQWUsYUFBYSxpQkFBaUIsS0FBSztFQUN4RSxNQUFNLEVBQUUsYUFBYSxnQkFBZ0IsWUFBWSxrQkFBa0I7RUFDbkUsTUFBTSxFQUNKLEtBQUssa0JBQ0wsTUFBTSxtQkFDTixRQUFRLGVBQ1IsT0FBTyxpQkFDTCxLQUFLLFFBQVMsdUJBQXVCO0VBRXpDLE1BQU0sUUFBUSxLQUFLLFNBQVMsUUFBUSxZQUFZO0VBQ2hELE1BQU0sV0FBVztFQUNqQixNQUFNLGNBQWMsaUJBQWlCLGdCQUFnQjtFQUNyRCxNQUFNLFlBQVk7RUFDbEIsTUFBTSxhQUFhLGdCQUFnQixlQUFlO0VBR2xELE1BQU0sa0JBQWtCLGVBQWU7RUFDdkMsTUFBTSxtQkFBbUIsZ0JBQWdCO0VBR3pDLE1BQU0sc0JBQXNCLGtCQUFrQjtFQUM5QyxNQUFNLHVCQUF1QixtQkFBbUI7QUFFaEQsT0FBSyxTQUFTLE1BQU0sWUFDbEIsMkNBQ0EsR0FBRyxjQUFhLElBQ2pCO0FBQ0QsT0FBSyxTQUFTLE1BQU0sWUFBWSwwQ0FBMEMsR0FBRyxhQUFZLElBQUs7RUFHOUYsSUFBSSxTQUFzRDtHQUFFLE1BQU07R0FBRyxLQUFLO0dBQUcsVUFBVTtHQUFJO0VBQzNGLElBQUksZ0JBQXlFLEtBQUE7QUFDN0UsT0FBSyxNQUFNLFlBQVksV0FBVztBQU9oQyxXQUpFLFNBQVMsMEJBQTBCLFNBQVMsU0FBUyxHQUNqRCxtQkFBbUIsWUFDbkIsVUFFTjtJQUNFO0lBQ0EsS0FBSztJQUNMLEtBQUs7QUFDSCxjQUFTO01BQ1A7TUFDQSxNQUFNLG9CQUFvQjtNQUMxQixLQUFLLG1CQUFtQjtNQUN4QixNQUNFLGlCQUFpQixlQUNqQix1QkFBdUIsYUFDdkIsdUJBQXVCO01BQzFCO0FBQ0Q7SUFDRixLQUFLO0lBQ0wsS0FBSztBQUNILGNBQVM7TUFDUDtNQUNBLE1BQU0sb0JBQW9CO01BQzFCLEtBQUssbUJBQW1CO01BQ3hCLE1BQ0UsaUJBQWlCLFlBQ2pCLHVCQUF1QixhQUN2Qix1QkFBdUI7TUFDMUI7QUFDRDtJQUNGLEtBQUs7SUFDTCxLQUFLO0FBQ0gsY0FBUztNQUNQO01BQ0EsTUFBTSxvQkFBb0I7TUFDMUIsS0FBSyxtQkFBbUI7TUFDeEIsTUFDRSxnQkFBZ0IsY0FDaEIsd0JBQXdCLFlBQ3hCLHdCQUF3QjtNQUMzQjtBQUNEO0lBQ0YsS0FBSztJQUNMLEtBQUs7QUFDSCxjQUFTO01BQ1A7TUFDQSxNQUFNLG9CQUFvQjtNQUMxQixLQUFLLG1CQUFtQjtNQUN4QixNQUNFLGdCQUFnQixhQUNoQix3QkFBd0IsWUFDeEIsd0JBQXdCO01BQzNCO0FBQ0Q7SUFDRixLQUFLO0lBQ0wsS0FBSztBQUNILGNBQVM7TUFDUDtNQUNBLE1BQU0sb0JBQW9CO01BQzFCLEtBQUssbUJBQW1CO01BQ3hCLE1BQU0saUJBQWlCLFlBQVksbUJBQW1CO01BQ3ZEO0FBQ0Q7SUFDRixLQUFLO0lBQ0wsS0FBSztBQUNILGNBQVM7TUFDUDtNQUNBLE1BQU07TUFDTixLQUFLLG1CQUFtQjtNQUN4QixNQUFNLGlCQUFpQixZQUFZLG1CQUFtQjtNQUN2RDtBQUNEO0lBQ0YsS0FBSztJQUNMLEtBQUs7QUFDSCxjQUFTO01BQ1A7TUFDQSxNQUFNLG9CQUFvQjtNQUMxQixLQUFLLG1CQUFtQjtNQUN4QixNQUFNLGlCQUFpQixlQUFlLG1CQUFtQjtNQUMxRDtBQUNEO0lBQ0YsS0FBSztJQUNMLEtBQUs7QUFDSCxjQUFTO01BQ1A7TUFDQSxNQUFNO01BQ04sS0FBSyxtQkFBbUI7TUFDeEIsTUFBTSxpQkFBaUIsZUFBZSxtQkFBbUI7TUFDMUQ7QUFDRDtJQUNGLEtBQUs7SUFDTCxLQUFLO0FBQ0gsY0FBUztNQUNQO01BQ0EsTUFBTSxvQkFBb0I7TUFDMUIsS0FBSyxtQkFBbUIsZ0JBQWdCO01BQ3hDLE1BQU0sZ0JBQWdCLGFBQWEsb0JBQW9CO01BQ3hEO0FBQ0Q7SUFDRixLQUFLO0lBQ0wsS0FBSztBQUNILGNBQVM7TUFDUDtNQUNBLE1BQU0sb0JBQW9CO01BQzFCLEtBQUs7TUFDTCxNQUFNLGdCQUFnQixhQUFhLG9CQUFvQjtNQUN4RDtBQUNEO0lBQ0YsS0FBSztJQUNMLEtBQUs7QUFDSCxjQUFTO01BQ1A7TUFDQSxNQUFNLG9CQUFvQjtNQUMxQixLQUFLLG1CQUFtQixnQkFBZ0I7TUFDeEMsTUFBTSxnQkFBZ0IsY0FBYyxvQkFBb0I7TUFDekQ7QUFDRDtJQUNGLEtBQUs7SUFDTCxLQUFLO0FBQ0gsY0FBUztNQUNQO01BQ0EsTUFBTSxvQkFBb0I7TUFDMUIsS0FBSztNQUNMLE1BQU0sZ0JBQWdCLGNBQWMsb0JBQW9CO01BQ3pEO0FBQ0Q7O0FBRUosT0FBSSxPQUFPLEtBQ1QsUUFBTztBQUVULHFCQUFrQjs7QUFJcEIsU0FBTzs7Q0FHRCxzQkFBc0IsVUFBa0IsTUFBYyxLQUFXO0FBQ3ZFLE9BQUssZ0JBQWdCO0FBQ3JCLE9BQUssU0FBUyxNQUFNLE9BQU8sR0FBRyxLQUFJO0FBQ2xDLE9BQUssU0FBUyxNQUFNLE1BQU0sR0FBRyxJQUFHOzs7Ozs7O0NBUTFCLHdCQUFxQjtBQUMzQixNQUFJLENBQUMsS0FBSyxhQUNSO0FBRUYsT0FBSyxtQkFBbUIsaUJBQWlCLEtBQUssU0FBUztBQW9CdkQsT0FBSyxhQW5CYSxDQUNoQixLQUFLLGVBQWUsaUJBQWlCLDhCQUE4QixJQUFJLGFBQ3ZFLEdBQUcsS0FBSyxlQUNMLGlCQUFpQix1Q0FBdUMsQ0FDeEQsTUFBTSxJQUFJLENBQ1YsS0FBSyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQ3BCLFFBQVEsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUN0QjtBQWFELE1BQUksS0FBSyxpQkFBaUIsQ0FBQyxLQUFLLFdBQVcsU0FBUyxLQUFLLGNBQWMsQ0FDckUsTUFBSyxnQkFBZ0IsS0FBQSJ9
302
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1wb3NpdGlvbi1jb250cm9sbGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL292ZXJsYXktcG9zaXRpb24tY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1NlcnZlciwgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmNvbnN0IGNzc0FuY2hvclBvc2l0aW9uU3VwcG9ydGVkID0gIWlzU2VydmVyICYmIENTUy5zdXBwb3J0cygnYW5jaG9yLW5hbWUnLCAnLS10ZXN0Jyk7XG5cbmNvbnN0IHBoeXNpY2FsU3VwcG9ydGVkUG9zaXRpb25zID0gW1xuICAndG9wJyxcbiAgJ2JvdHRvbScsXG4gICdsZWZ0JyxcbiAgJ3JpZ2h0JyxcbiAgJ3RvcCBzcGFuLWxlZnQnLFxuICAndG9wIHNwYW4tcmlnaHQnLFxuICAnYm90dG9tIHNwYW4tbGVmdCcsXG4gICdib3R0b20gc3Bhbi1yaWdodCcsXG4gICdsZWZ0IHNwYW4tdG9wJyxcbiAgJ2xlZnQgc3Bhbi1ib3R0b20nLFxuICAncmlnaHQgc3Bhbi10b3AnLFxuICAncmlnaHQgc3Bhbi1ib3R0b20nLFxuXTtcblxuLy8gTm90ZTogaWYgeW91IGFkZCBuZXcgbG9naWNhbCBzdXBwb3J0ZWQgcG9zaXRpb25zLCB1cGRhdGUgYWxzbyB0aGUgJ3J0bFBvc2l0aW9uTWFwcGluZydcbmNvbnN0IGxvZ2ljYWxTdXBwb3J0ZWRQb3NpdGlvbnMgPSBbXG4gICdibG9jay1zdGFydCcsXG4gICdibG9jay1lbmQnLFxuICAnaW5saW5lLXN0YXJ0JyxcbiAgJ2lubGluZS1lbmQnLFxuICAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtZW5kJyxcbiAgJ2Jsb2NrLWVuZCBzcGFuLWlubGluZS1zdGFydCcsXG4gICdibG9jay1lbmQgc3Bhbi1pbmxpbmUtZW5kJyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLXN0YXJ0JyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLWVuZCcsXG4gICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stc3RhcnQnLFxuICAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLWVuZCcsXG5dO1xuXG5jb25zdCBydGxQb3NpdGlvbk1hcHBpbmc6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICdibG9jay1zdGFydCc6ICdibG9jay1zdGFydCcsXG4gICdibG9jay1lbmQnOiAnYmxvY2stZW5kJyxcbiAgJ2lubGluZS1zdGFydCc6ICdpbmxpbmUtZW5kJyxcbiAgJ2lubGluZS1lbmQnOiAnaW5saW5lLXN0YXJ0JyxcbiAgJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLXN0YXJ0JzogJ2Jsb2NrLXN0YXJ0IHNwYW4taW5saW5lLWVuZCcsXG4gICdibG9jay1zdGFydCBzcGFuLWlubGluZS1lbmQnOiAnYmxvY2stc3RhcnQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnYmxvY2stZW5kIHNwYW4taW5saW5lLXN0YXJ0JzogJ2Jsb2NrLWVuZCBzcGFuLWlubGluZS1lbmQnLFxuICAnYmxvY2stZW5kIHNwYW4taW5saW5lLWVuZCc6ICdibG9jay1lbmQgc3Bhbi1pbmxpbmUtc3RhcnQnLFxuICAnaW5saW5lLXN0YXJ0IHNwYW4tYmxvY2stc3RhcnQnOiAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLXN0YXJ0JyxcbiAgJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLWVuZCc6ICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stZW5kJyxcbiAgJ2lubGluZS1lbmQgc3Bhbi1ibG9jay1zdGFydCc6ICdpbmxpbmUtc3RhcnQgc3Bhbi1ibG9jay1zdGFydCcsXG4gICdpbmxpbmUtZW5kIHNwYW4tYmxvY2stZW5kJzogJ2lubGluZS1zdGFydCBzcGFuLWJsb2NrLWVuZCcsXG59O1xuXG5jb25zdCBzdXBwb3J0ZWRQb3NpdGlvbnMgPSBbLi4ucGh5c2ljYWxTdXBwb3J0ZWRQb3NpdGlvbnMsIC4uLmxvZ2ljYWxTdXBwb3J0ZWRQb3NpdGlvbnNdO1xubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogQ29udHJvbGxlciBmb3IgbWFuYWdpbmcgb3ZlcmxheXMgcG9zaXRpb25pbmcuIEFsc28gYWN0cyBhcyBhIHBvbHlmaWxsIHdoZW4gbmF0aXZlXG4gKiBDU1MgQW5jaG9yIFBvc2l0aW9uaW5nIGlzIG5vdCBzdXBwb3J0ZWQgKGVub3VnaCkuXG4gKiBBcHBsaWVzIHVuaXF1ZSBhbmNob3IgbmFtZXMgd2hlbiB1c2luZyBuYXRpdmUgQ1NTIEFuY2hvciBQb3NpdGlvbmluZ1xuICogb3IgY2FsY3VsYXRlcyBhbmQgYXBwbGllcyBjb3JyZWN0IHBvc2l0aW9ucyBpbiBwb2x5ZmlsbCBtb2RlLlxuICpcbiAqIEFsc28sIHRoZSBjb250cm9sbGVyIHNldHMgdGhlICdkYXRhLXBvc2l0aW9uJyBhdHRyaWJ1dGUgb24gdGhlIG92ZXJsYXkgZWxlbWVudC5cbiAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXBwbHkgc3BlY2lmaWMgc3R5bGVzIGJhc2VkIG9uIHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSBvdmVybGF5LlxuICpcbiAqICMjIyBJbXBsZW1lbnRhdGlvblxuICogRGVmaW5lIGFuZCBhcHBseSB0aGUgZm9sbG93aW5nIENTUyB2YXJpYWJsZXMgb24gdGhlIG92ZXJsYXkgZWxlbWVudDpcbiAqIGBgYHNjc3NcbiAqICAgLS1zYmItb3ZlcmxheS1wb3NpdGlvbi1hcmVhOiBibG9jay1lbmQ7IC8vIERlZmF1bHRcbiAqICAgLS1zYmItb3ZlcmxheS1wb3NpdGlvbi10cnktZmFsbGJhY2tzOiBibG9jay1zdGFydCwgaW5saW5lLWVuZCwgaW5saW5lLXN0YXJ0OyAvLyBGYWxsYmFja3NcbiAqXG4gKiAgIHBvc2l0aW9uLWFyZWE6IHZhcigtLXNiYi1vdmVybGF5LXBvc2l0aW9uLWFyZWEpO1xuICogICBwb3NpdGlvbi10cnktZmFsbGJhY2tzOiB2YXIoLS1zYmItb3ZlcmxheS1wb3NpdGlvbi10cnktZmFsbGJhY2tzKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgU2JiT3ZlcmxheVBvc2l0aW9uQ29udHJvbGxlciBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc2l6ZU9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gdGhpcy5fcmVxdWVzdENhbGN1bGF0ZVBvc2l0aW9uKCkpXG4gICAgOiBudWxsITtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3ZlcmxheTogUmVhY3RpdmVDb250cm9sbGVySG9zdCAmIEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9hYm9ydENvbnRyb2xsZXI/OiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX2FuY2hvcj86IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9vdmVybGF5U3R5bGVzPzogQ1NTU3R5bGVEZWNsYXJhdGlvbjtcbiAgcHJpdmF0ZSBfZnJhbWU/OiBSZXR1cm5UeXBlPHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU+O1xuICBwcml2YXRlIF9hbmNob3JOYW1lID0gYC0tc2JiLW92ZXJsYXktYW5jaG9yLSR7KytuZXh0SWR9YDtcbiAgcHJpdmF0ZSBfcG9zaXRpb25zOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIF9sYXN0UG9zaXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqIEdldCB0aGUgY3VycmVudCBwb3NpdGlvbi4gKGUuZy4gYmxvY2stZW5kLCBibG9jay1zdGFydCwgZXRjLikgKi9cbiAgcHVibGljIGdldCBjdXJyZW50UG9zaXRpb24oKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fdXNlUG9seWZpbGwpIHtcbiAgICAgIHJldHVybiB0aGlzLl9sYXN0UG9zaXRpb24gPz8gdGhpcy5fcG9zaXRpb25zWzBdID8/ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9vdmVybGF5U3R5bGVzID8/PSBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX292ZXJsYXkpO1xuICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXlTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgncG9zaXRpb24tYXJlYScpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0ICYgSFRNTEVsZW1lbnQsXG4gICAgcHJpdmF0ZSBfdXNlUG9seWZpbGwgPSAhY3NzQW5jaG9yUG9zaXRpb25TdXBwb3J0ZWQsXG4gICkge1xuICAgIGhvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgICB0aGlzLl9vdmVybGF5ID0gaG9zdDtcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdXNlUG9seWZpbGwpIHtcbiAgICAgIHRoaXMuX292ZXJsYXkuc3R5bGUuc2V0UHJvcGVydHkoJ3Bvc2l0aW9uLWFuY2hvcicsIHRoaXMuX2FuY2hvck5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXNldCB0aGUgJ3Bvc2l0aW9uLWFyZWEnIHZhbHVlIHRvIGF2b2lkIGFueSB1bndhbnRlZCBzaWRlIGVmZmVjdCB3aGVuIHVzaW5nIHRoZSBwb2x5ZmlsbC5cbiAgICAgIHRoaXMuX292ZXJsYXkuc3R5bGUuc2V0UHJvcGVydHkoJ3Bvc2l0aW9uLWFyZWEnLCAnaW5pdGlhbCcpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBob3N0VXBkYXRlKCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9yZWFkUG9zaXRpb25zRnJvbUNzcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbm5lY3RzIHRoZSBvdmVybGF5IHRvIHRoZSBnaXZlbiB0cmlnZ2VyIGVsZW1lbnQgYW5kIGRldGVybWluZXMgdGhlIG9wdGltYWwgcG9zaXRpb24uXG4gICAqIFVzdWFsbHksIHRoaXMgaXMgY2FsbGVkIHdoZW4gdGhlIG92ZXJsYXkgaXMgb3BlbmVkLlxuICAgKiBAcGFyYW0gYW5jaG9yIFRoZSBhbmNob3IgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBjb25uZWN0KGFuY2hvcjogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYW5jaG9yKSB7XG4gICAgICB0aGlzLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gICAgdGhpcy5fYW5jaG9yID0gYW5jaG9yO1xuXG4gICAgaWYgKCF0aGlzLl91c2VQb2x5ZmlsbCkge1xuICAgICAgdGhpcy5fYW5jaG9yLnN0eWxlLnNldFByb3BlcnR5KCdhbmNob3ItbmFtZScsIHRoaXMuX2FuY2hvck5hbWUhKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yZWFkUG9zaXRpb25zRnJvbUNzcygpO1xuICAgIHRoaXMuX2NhbGN1bGF0ZVBvc2l0aW9uKCk7XG4gICAgdGhpcy5fYWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX2Fib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAgIC8vIFdlIG5lZWQgdG8gdXNlIGNhcHR1cmUgaGVyZSB0byByZWFjdCB0byBhbGwgc2Nyb2xsIGV2ZW50cy5cbiAgICAvLyBJZiBjYXB0dXJlIHdhcyBub3QgdXNlZCwgdGhlbiBzY3JvbGwgZXZlbnRzIGluc2lkZSBzZXBhcmF0ZSBzY3JvbGxcbiAgICAvLyBjb250YWluZXJzIHdvdWxkIG5vdCBiZSBjYXVnaHQuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4gdGhpcy5fcmVxdWVzdENhbGN1bGF0ZVBvc2l0aW9uKCksIHtcbiAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9hYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB0aGlzLl9yZXF1ZXN0Q2FsY3VsYXRlUG9zaXRpb24oKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fYWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKGFuY2hvciwgeyBib3g6ICdib3JkZXItYm94JyB9KTtcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX292ZXJsYXksIHsgYm94OiAnYm9yZGVyLWJveCcgfSk7XG4gIH1cblxuICBwdWJsaWMgZGlzY29ubmVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbmNob3I/LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdhbmNob3ItbmFtZScpO1xuICAgIHRoaXMuX2FuY2hvciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9hYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVxdWVzdENhbGN1bGF0ZVBvc2l0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2ZyYW1lID8/PSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5fY2FsY3VsYXRlUG9zaXRpb24oKTtcbiAgICAgIHRoaXMuX2ZyYW1lID0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2FsY3VsYXRlUG9zaXRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hbmNob3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fdXNlUG9seWZpbGwpIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5fZ2V0T3B0aW1hbFBvc2l0aW9uKHRoaXMuX3Bvc2l0aW9ucyk7XG4gICAgICB0aGlzLl9hcHBseU92ZXJsYXlQb3NpdGlvbihwb3NpdGlvbi5wb3NpdGlvbiwgcG9zaXRpb24ubGVmdCwgcG9zaXRpb24udG9wKTtcbiAgICB9XG5cbiAgICB0aGlzLl9vdmVybGF5LnNldEF0dHJpYnV0ZSgnZGF0YS1wb3NpdGlvbicsIHRoaXMuY3VycmVudFBvc2l0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBvcHRpbWFsIHBvc2l0aW9uIHRoYXQgZml0cyB0aGUgb3ZlcmxheS5cbiAgICogQHBhcmFtIHBvc2l0aW9ucyBUaGUgbGlzdCBvZiBwb3NpdGlvbnMgdG8gY2hlY2suXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9nZXRPcHRpbWFsUG9zaXRpb24ocG9zaXRpb25zOiBzdHJpbmdbXSk6IHtcbiAgICBsZWZ0OiBudW1iZXI7XG4gICAgdG9wOiBudW1iZXI7XG4gICAgcG9zaXRpb246IHN0cmluZztcbiAgICBmaXRzPzogYm9vbGVhbjtcbiAgfSB7XG4gICAgY29uc3QgeyBvZmZzZXRIZWlnaHQ6IG92ZXJsYXlIZWlnaHQsIG9mZnNldFdpZHRoOiBvdmVybGF5V2lkdGggfSA9IHRoaXMuX292ZXJsYXk7XG4gICAgY29uc3QgeyBpbm5lckhlaWdodDogdmlld3BvcnRIZWlnaHQsIGlubmVyV2lkdGg6IHZpZXdwb3J0V2lkdGggfSA9IHdpbmRvdztcbiAgICBjb25zdCB7XG4gICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AsXG4gICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCxcbiAgICAgIGhlaWdodDogdHJpZ2dlckhlaWdodCxcbiAgICAgIHdpZHRoOiB0cmlnZ2VyV2lkdGgsXG4gICAgfSA9IHRoaXMuX2FuY2hvciEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBjb25zdCBpc1J0bCA9IHRoaXMuX292ZXJsYXkubWF0Y2hlcygnOmRpcihydGwpJyk7XG4gICAgY29uc3QgdG9wU3BhY2UgPSB0cmlnZ2VyT2Zmc2V0VG9wO1xuICAgIGNvbnN0IGJvdHRvbVNwYWNlID0gdmlld3BvcnRIZWlnaHQgLSB0cmlnZ2VySGVpZ2h0IC0gdHJpZ2dlck9mZnNldFRvcDtcbiAgICBjb25zdCBsZWZ0U3BhY2UgPSB0cmlnZ2VyT2Zmc2V0TGVmdDtcbiAgICBjb25zdCByaWdodFNwYWNlID0gdmlld3BvcnRXaWR0aCAtIHRyaWdnZXJXaWR0aCAtIHRyaWdnZXJPZmZzZXRMZWZ0O1xuXG4gICAgLy8gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgb3ZlcmxheSBhbmQgdGhlIHRyaWdnZXIgd2lkdGgvaGVpZ2h0LlxuICAgIGNvbnN0IG92ZXJsYXlXaWR0aE5ldCA9IG92ZXJsYXlXaWR0aCAtIHRyaWdnZXJXaWR0aDtcbiAgICBjb25zdCBvdmVybGF5SGVpZ2h0TmV0ID0gb3ZlcmxheUhlaWdodCAtIHRyaWdnZXJIZWlnaHQ7XG5cbiAgICAvLyBUaGUgYW1vdW50IHRoYXQgd291bGQgZXhjZWVkIHRoZSB0cmlnZ2VyIGlmIHRoZSBvdmVybGF5IHdlcmUgY2VudGVyZWQgb24gaXQuXG4gICAgY29uc3Qgb3ZlcmxheVdpZHRoT3ZlcmxhcCA9IG92ZXJsYXlXaWR0aE5ldCAvIDI7XG4gICAgY29uc3Qgb3ZlcmxheUhlaWdodE92ZXJsYXAgPSBvdmVybGF5SGVpZ2h0TmV0IC8gMjtcblxuICAgIHRoaXMuX292ZXJsYXkuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAnLS1zYmItb3ZlcmxheS1jb250cm9sbGVyLXRyaWdnZXItaGVpZ2h0JyxcbiAgICAgIGAke3RyaWdnZXJIZWlnaHR9cHhgLFxuICAgICk7XG4gICAgdGhpcy5fb3ZlcmxheS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYmItb3ZlcmxheS1jb250cm9sbGVyLXRyaWdnZXItd2lkdGgnLCBgJHt0cmlnZ2VyV2lkdGh9cHhgKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWFzc2lnbm1lbnRcbiAgICBsZXQgcmVzdWx0OiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLl9nZXRPcHRpbWFsUG9zaXRpb24+ID0geyBsZWZ0OiAwLCB0b3A6IDAsIHBvc2l0aW9uOiAnJyB9O1xuICAgIGxldCBmaXJzdFBvc2l0aW9uOiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLl9nZXRPcHRpbWFsUG9zaXRpb24+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGZvciAoY29uc3QgcG9zaXRpb24gb2YgcG9zaXRpb25zKSB7XG4gICAgICAvLyBJZiBydGwgaXMgZW5hYmxlZCwgd2UgbWFwIHRoZSBsb2dpY2FsIHBvc2l0aW9uIHRvIHRoZWlyIFJUTCBlcXVpdmFsZW50LiAoZS5nLiAnaW5saW5lLXN0YXJ0JyAtPiAnaW5saW5lLWVuZCcpXG4gICAgICBjb25zdCBwaHlzaWNhbFBvc2l0aW9uID1cbiAgICAgICAgaXNSdGwgJiYgbG9naWNhbFN1cHBvcnRlZFBvc2l0aW9ucy5pbmNsdWRlcyhwb3NpdGlvbilcbiAgICAgICAgICA/IHJ0bFBvc2l0aW9uTWFwcGluZ1twb3NpdGlvbl1cbiAgICAgICAgICA6IHBvc2l0aW9uO1xuXG4gICAgICBzd2l0Y2ggKHBoeXNpY2FsUG9zaXRpb24pIHtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgY2FzZSAnYmxvY2stZW5kJzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoT3ZlcmxhcCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCArIHRyaWdnZXJIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOlxuICAgICAgICAgICAgICBvdmVybGF5SGVpZ2h0IDw9IGJvdHRvbVNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aE92ZXJsYXAgPD0gbGVmdFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlXaWR0aE92ZXJsYXAgPD0gcmlnaHRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICBjYXNlICdibG9jay1zdGFydCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCAtIG92ZXJsYXlXaWR0aE92ZXJsYXAsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgLSBvdmVybGF5SGVpZ2h0LFxuICAgICAgICAgICAgZml0czpcbiAgICAgICAgICAgICAgb3ZlcmxheUhlaWdodCA8PSB0b3BTcGFjZSAmJlxuICAgICAgICAgICAgICBvdmVybGF5V2lkdGhPdmVybGFwIDw9IGxlZnRTcGFjZSAmJlxuICAgICAgICAgICAgICBvdmVybGF5V2lkdGhPdmVybGFwIDw9IHJpZ2h0U3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICBjYXNlICdpbmxpbmUtZW5kJzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0ICsgdHJpZ2dlcldpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wIC0gb3ZlcmxheUhlaWdodE92ZXJsYXAsXG4gICAgICAgICAgICBmaXRzOlxuICAgICAgICAgICAgICBvdmVybGF5V2lkdGggPD0gcmlnaHRTcGFjZSAmJlxuICAgICAgICAgICAgICBvdmVybGF5SGVpZ2h0T3ZlcmxhcCA8PSB0b3BTcGFjZSAmJlxuICAgICAgICAgICAgICBvdmVybGF5SGVpZ2h0T3ZlcmxhcCA8PSBib3R0b21TcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgY2FzZSAnaW5saW5lLXN0YXJ0JzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wIC0gb3ZlcmxheUhlaWdodE92ZXJsYXAsXG4gICAgICAgICAgICBmaXRzOlxuICAgICAgICAgICAgICBvdmVybGF5V2lkdGggPD0gbGVmdFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlIZWlnaHRPdmVybGFwIDw9IHRvcFNwYWNlICYmXG4gICAgICAgICAgICAgIG92ZXJsYXlIZWlnaHRPdmVybGFwIDw9IGJvdHRvbVNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3RvcCBzcGFuLWxlZnQnOlxuICAgICAgICBjYXNlICdibG9jay1zdGFydCBzcGFuLWlubGluZS1zdGFydCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCAtIG92ZXJsYXlXaWR0aE5ldCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCAtIG92ZXJsYXlIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOiBvdmVybGF5SGVpZ2h0IDw9IHRvcFNwYWNlICYmIG92ZXJsYXlXaWR0aE5ldCA8PSBsZWZ0U3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndG9wIHNwYW4tcmlnaHQnOlxuICAgICAgICBjYXNlICdibG9jay1zdGFydCBzcGFuLWlubGluZS1lbmQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgLSBvdmVybGF5SGVpZ2h0LFxuICAgICAgICAgICAgZml0czogb3ZlcmxheUhlaWdodCA8PSB0b3BTcGFjZSAmJiBvdmVybGF5V2lkdGhOZXQgPD0gcmlnaHRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib3R0b20gc3Bhbi1sZWZ0JzpcbiAgICAgICAgY2FzZSAnYmxvY2stZW5kIHNwYW4taW5saW5lLXN0YXJ0JzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoTmV0LFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wICsgdHJpZ2dlckhlaWdodCxcbiAgICAgICAgICAgIGZpdHM6IG92ZXJsYXlIZWlnaHQgPD0gYm90dG9tU3BhY2UgJiYgb3ZlcmxheVdpZHRoTmV0IDw9IGxlZnRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib3R0b20gc3Bhbi1yaWdodCc6XG4gICAgICAgIGNhc2UgJ2Jsb2NrLWVuZCBzcGFuLWlubGluZS1lbmQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgKyB0cmlnZ2VySGVpZ2h0LFxuICAgICAgICAgICAgZml0czogb3ZlcmxheUhlaWdodCA8PSBib3R0b21TcGFjZSAmJiBvdmVybGF5V2lkdGhOZXQgPD0gcmlnaHRTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsZWZ0IHNwYW4tdG9wJzpcbiAgICAgICAgY2FzZSAnaW5saW5lLXN0YXJ0IHNwYW4tYmxvY2stc3RhcnQnOlxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgbGVmdDogdHJpZ2dlck9mZnNldExlZnQgLSBvdmVybGF5V2lkdGgsXG4gICAgICAgICAgICB0b3A6IHRyaWdnZXJPZmZzZXRUb3AgKyB0cmlnZ2VySGVpZ2h0IC0gb3ZlcmxheUhlaWdodCxcbiAgICAgICAgICAgIGZpdHM6IG92ZXJsYXlXaWR0aCA8PSBsZWZ0U3BhY2UgJiYgb3ZlcmxheUhlaWdodE5ldCA8PSB0b3BTcGFjZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsZWZ0IHNwYW4tYm90dG9tJzpcbiAgICAgICAgY2FzZSAnaW5saW5lLXN0YXJ0IHNwYW4tYmxvY2stZW5kJzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0IC0gb3ZlcmxheVdpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wLFxuICAgICAgICAgICAgZml0czogb3ZlcmxheVdpZHRoIDw9IGxlZnRTcGFjZSAmJiBvdmVybGF5SGVpZ2h0TmV0IDw9IGJvdHRvbVNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JpZ2h0IHNwYW4tdG9wJzpcbiAgICAgICAgY2FzZSAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLXN0YXJ0JzpcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIGxlZnQ6IHRyaWdnZXJPZmZzZXRMZWZ0ICsgdHJpZ2dlcldpZHRoLFxuICAgICAgICAgICAgdG9wOiB0cmlnZ2VyT2Zmc2V0VG9wICsgdHJpZ2dlckhlaWdodCAtIG92ZXJsYXlIZWlnaHQsXG4gICAgICAgICAgICBmaXRzOiBvdmVybGF5V2lkdGggPD0gcmlnaHRTcGFjZSAmJiBvdmVybGF5SGVpZ2h0TmV0IDw9IHRvcFNwYWNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JpZ2h0IHNwYW4tYm90dG9tJzpcbiAgICAgICAgY2FzZSAnaW5saW5lLWVuZCBzcGFuLWJsb2NrLWVuZCc6XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBsZWZ0OiB0cmlnZ2VyT2Zmc2V0TGVmdCArIHRyaWdnZXJXaWR0aCxcbiAgICAgICAgICAgIHRvcDogdHJpZ2dlck9mZnNldFRvcCxcbiAgICAgICAgICAgIGZpdHM6IG92ZXJsYXlXaWR0aCA8PSByaWdodFNwYWNlICYmIG92ZXJsYXlIZWlnaHROZXQgPD0gYm90dG9tU3BhY2UsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQuZml0cykge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgZmlyc3RQb3NpdGlvbiA/Pz0gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIElmIG5vIHBvc2l0aW9uIGZpdHMsIHdlIHJldHVybiB0aGUgZmlyc3Qgb25lLlxuICAgIHJldHVybiBmaXJzdFBvc2l0aW9uITtcbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5T3ZlcmxheVBvc2l0aW9uKHBvc2l0aW9uOiBzdHJpbmcsIGxlZnQ6IG51bWJlciwgdG9wOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9sYXN0UG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICB0aGlzLl9vdmVybGF5LnN0eWxlLmxlZnQgPSBgJHtsZWZ0fXB4YDtcbiAgICB0aGlzLl9vdmVybGF5LnN0eWxlLnRvcCA9IGAke3RvcH1weGA7XG4gIH1cblxuICAvKipcbiAgICogT25seSB1c2VkIGluIHBvbHlmaWxsIG1vZGUuXG4gICAqIFJlYWRzIHRoZSBsaXN0IG9mIHRoZSBjb25maWd1cmVkIHBvc2l0aW9ucyBmcm9tIHRoZSBDU1MgdmFyaWFibGVzLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfcmVhZFBvc2l0aW9uc0Zyb21Dc3MoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl91c2VQb2x5ZmlsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9vdmVybGF5U3R5bGVzID8/PSBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX292ZXJsYXkpO1xuICAgIGNvbnN0IHBvc2l0aW9ucyA9IFtcbiAgICAgIHRoaXMuX292ZXJsYXlTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zYmItb3ZlcmxheS1wb3NpdGlvbi1hcmVhJykgfHwgJ2Jsb2NrLWVuZCcsXG4gICAgICAuLi50aGlzLl9vdmVybGF5U3R5bGVzXG4gICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKCctLXNiYi1vdmVybGF5LXBvc2l0aW9uLXRyeS1mYWxsYmFja3MnKVxuICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAubWFwKChmKSA9PiBmLnRyaW0oKSlcbiAgICAgICAgLmZpbHRlcigoZikgPT4gISFmKSxcbiAgICBdO1xuXG4gICAgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYgJiYgcG9zaXRpb25zLnNvbWUoKHApID0+ICFzdXBwb3J0ZWRQb3NpdGlvbnMuaW5jbHVkZXMocCkpKSB7XG4gICAgICBjb25zdCB1bnN1cHBvcnRlZFBvc2l0aW9ucyA9IHBvc2l0aW9uc1xuICAgICAgICAuZmlsdGVyKChwKSA9PiAhc3VwcG9ydGVkUG9zaXRpb25zLmluY2x1ZGVzKHApKVxuICAgICAgICAuc29ydCgpXG4gICAgICAgIC5qb2luKCcsICcpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5zdXBwb3J0ZWQgcG9zaXRpb24tdHJ5LWZhbGxiYWNrcyAke3Vuc3VwcG9ydGVkUG9zaXRpb25zfSAoU3VwcG9ydGVkOiAke3N1cHBvcnRlZFBvc2l0aW9ucy5qb2luKCcsICcpfSlgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wb3NpdGlvbnMgPSBwb3NpdGlvbnM7XG4gICAgaWYgKHRoaXMuX2xhc3RQb3NpdGlvbiAmJiAhdGhpcy5fcG9zaXRpb25zLmluY2x1ZGVzKHRoaXMuX2xhc3RQb3NpdGlvbikpIHtcbiAgICAgIHRoaXMuX2xhc3RQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFFQSxJQUFNLDZCQUE2QixDQUFDLFlBQVksSUFBSSxTQUFTLGVBQWUsU0FBUztBQUVyRixJQUFNLDZCQUE2QjtDQUNqQztDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDRDtBQUdELElBQU0sNEJBQTRCO0NBQ2hDO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNEO0FBRUQsSUFBTSxxQkFBZ0Q7Q0FDcEQsZUFBZTtDQUNmLGFBQWE7Q0FDYixnQkFBZ0I7Q0FDaEIsY0FBYztDQUNkLGlDQUFpQztDQUNqQywrQkFBK0I7Q0FDL0IsK0JBQStCO0NBQy9CLDZCQUE2QjtDQUM3QixpQ0FBaUM7Q0FDakMsK0JBQStCO0NBQy9CLCtCQUErQjtDQUMvQiw2QkFBNkI7Q0FDOUI7QUFFMEIsQ0FBQyxHQUFHLDRCQUE0QixHQUFHLDBCQUEwQjtBQUN4RixJQUFJLFNBQVM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJiLElBQWEsK0JBQWIsTUFBeUM7O0NBY3ZDLElBQVcsa0JBQWU7QUFDeEIsTUFBSSxLQUFLLGFBQ1AsUUFBTyxLQUFLLGlCQUFpQixLQUFLLFdBQVcsTUFBTTtPQUM5QztBQUNMLFFBQUssbUJBQW1CLGlCQUFpQixLQUFLLFNBQVM7QUFDdkQsVUFBTyxLQUFLLGVBQWUsaUJBQWlCLGdCQUFnQjs7O0NBSWhFLFlBQ0UsTUFDUSxlQUFlLENBQUMsNEJBQTBCO0FBQTFDLE9BQUEsZUFBQTtBQXhCTyxPQUFBLGtCQUFrQixDQUFDLFdBQ2hDLElBQUkscUJBQXFCLEtBQUssMkJBQTJCLENBQUMsR0FDMUQ7QUFNSSxPQUFB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
@@ -1,4 +1,4 @@
1
- import { ReactiveControllerHost, LitElement, ReactiveController } from 'lit';
1
+ import { LitElement, ReactiveController, ReactiveControllerHost } from 'lit';
2
2
  type PropertyWatcherHandler<T extends LitElement> = (reference: T) => void;
3
3
  export declare class SbbPropertyWatcherController<T extends LitElement> implements ReactiveController {
4
4
  private readonly _host;
@@ -1 +1 @@
1
- {"version":3,"file":"property-watcher-controller.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/controllers/property-watcher-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,kBAAkB,EAExB,MAAM,KAAK,CAAC;AAEb,KAAK,sBAAsB,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,IAAI,CAAC;AAwE3E,qBAAa,4BAA4B,CAAC,CAAC,SAAS,UAAU,CAAE,YAAW,kBAAkB;IAKzF,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAN5B,OAAO,CAAC,UAAU,CAAC,CAAW;IAC9B,OAAO,CAAC,SAAS,CAAC,CAAkC;gBAGjC,KAAK,EAAE,sBAAsB,GAAG,WAAW,EAC3C,kBAAkB,EAAE,MAAM,CAAC,GAAG,IAAI,EAClC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;IAK1E,aAAa,IAAI,IAAI;IAIrB,gBAAgB,IAAI,IAAI;IAMxB,OAAO,IAAI,IAAI;IA6Bf,UAAU,IAAI,IAAI;CAmB1B"}
1
+ {"version":3,"file":"property-watcher-controller.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/controllers/property-watcher-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC5B,MAAM,KAAK,CAAC;AAEb,KAAK,sBAAsB,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,IAAI,CAAC;AAwE3E,qBAAa,4BAA4B,CAAC,CAAC,SAAS,UAAU,CAAE,YAAW,kBAAkB;IAKzF,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAN5B,OAAO,CAAC,UAAU,CAAC,CAAW;IAC9B,OAAO,CAAC,SAAS,CAAC,CAAkC;gBAGjC,KAAK,EAAE,sBAAsB,GAAG,WAAW,EAC3C,kBAAkB,EAAE,MAAM,CAAC,GAAG,IAAI,EAClC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;IAK1E,aAAa,IAAI,IAAI;IAIrB,gBAAgB,IAAI,IAAI;IAMxB,OAAO,IAAI,IAAI;IA6Bf,UAAU,IAAI,IAAI;CAmB1B"}
@@ -93,4 +93,4 @@ var SbbPropertyWatcherController = class {
93
93
  //#endregion
94
94
  export { SbbPropertyWatcherController };
95
95
 
96
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktd2F0Y2hlci1jb250cm9sbGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL3Byb3BlcnR5LXdhdGNoZXItY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0eXBlIFJlYWN0aXZlQ29udHJvbGxlckhvc3QsXG4gIHR5cGUgTGl0RWxlbWVudCxcbiAgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsXG4gIGlzU2VydmVyLFxufSBmcm9tICdsaXQnO1xuXG50eXBlIFByb3BlcnR5V2F0Y2hlckhhbmRsZXI8VCBleHRlbmRzIExpdEVsZW1lbnQ+ID0gKHJlZmVyZW5jZTogVCkgPT4gdm9pZDtcblxuY2xhc3MgUHJvcGVydHlXYXRjaGVyPFQgZXh0ZW5kcyBMaXRFbGVtZW50PiBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIHByaXZhdGUgX3ZhbHVlOiB1bmtub3duO1xuICBwcml2YXRlIF9oYW5kbGVycyA9IG5ldyBTZXQ8UHJvcGVydHlXYXRjaGVySGFuZGxlcjxUPj4oKTtcbiAgcHJpdmF0ZSBfaG9zdERlZmluZWRQcm9taXNlOiBQcm9taXNlPHZvaWQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2hhbmRsZXJzLnNpemU7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaG9zdDogVCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wcm9wZXJ0eTogc3RyaW5nLFxuICApIHtcbiAgICBpZiAoIWlzU2VydmVyKSB7XG4gICAgICBpZiAoY3VzdG9tRWxlbWVudHMuZ2V0KHRoaXMuX2hvc3QubG9jYWxOYW1lKSkge1xuICAgICAgICBjdXN0b21FbGVtZW50cy51cGdyYWRlKHRoaXMuX2hvc3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVGhlIGhvc3QgZWxlbWVudCBpcyBub3QgeWV0IGRlZmluZWQsIHdhaXQgZm9yIGl0cyBkZWZpbml0aW9uIGJlZm9yZSB1cGdyYWRpbmdcbiAgICAgICAgdGhpcy5faG9zdERlZmluZWRQcm9taXNlID0gY3VzdG9tRWxlbWVudHMud2hlbkRlZmluZWQodGhpcy5faG9zdC5sb2NhbE5hbWUpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGN1c3RvbUVsZW1lbnRzLnVwZ3JhZGUodGhpcy5faG9zdCk7XG4gICAgICAgICAgdGhpcy5faG9zdERlZmluZWRQcm9taXNlID0gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3ZhbHVlID0gKHRoaXMuX2hvc3QgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbdGhpcy5fcHJvcGVydHldO1xuICB9XG5cbiAgcHVibGljIGFkZEhhbmRsZXIoaGFuZGxlcjogUHJvcGVydHlXYXRjaGVySGFuZGxlcjxUPik6IHZvaWQge1xuICAgIGlmICghdGhpcy5faGFuZGxlcnMuc2l6ZSkge1xuICAgICAgLy8gV2UgY2hlY2sgaWYgdGhlIGFkZENvbnRyb2xsZXIgbWV0aG9kIGlzIGF2YWlsYWJsZSAoZWxlbWVudCB3YXMgZGVmaW5lZCAmJiB1cGdyYWRlZCksIG90aGVyd2lzZSB3ZSB3YWl0IGZvciB0aGUgaG9zdCB0byBiZSBkZWZpbmVkXG4gICAgICBpZiAodGhpcy5faG9zdC5hZGRDb250cm9sbGVyKSB7XG4gICAgICAgIHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5faG9zdERlZmluZWRQcm9taXNlKSB7XG4gICAgICAgIHRoaXMuX2hvc3REZWZpbmVkUHJvbWlzZS50aGVuKCgpID0+IHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcih0aGlzKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2hhbmRsZXJzLmFkZChoYW5kbGVyKTtcblxuICAgIGlmICghdGhpcy5faG9zdERlZmluZWRQcm9taXNlKSB7XG4gICAgICBoYW5kbGVyKHRoaXMuX2hvc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9ob3N0RGVmaW5lZFByb21pc2UudGhlbigoKSA9PiBoYW5kbGVyKHRoaXMuX2hvc3QpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlSGFuZGxlcihoYW5kbGVyOiBQcm9wZXJ0eVdhdGNoZXJIYW5kbGVyPFQ+KTogdm9pZCB7XG4gICAgdGhpcy5faGFuZGxlcnMuZGVsZXRlKGhhbmRsZXIpO1xuICAgIGlmICghdGhpcy5faGFuZGxlcnMuc2l6ZSkge1xuICAgICAgLy8gV2UgY2hlY2sgaWYgdGhlIHJlbW92ZUNvbnRyb2xsZXIgbWV0aG9kIGlzIGF2YWlsYWJsZSAoZWxlbWVudCB3YXMgZGVmaW5lZCAmJiB1cGdyYWRlZCksIG90aGVyd2lzZSB3ZSB3YWl0IGZvciB0aGUgaG9zdCB0byBiZSBkZWZpbmVkXG4gICAgICBpZiAodGhpcy5faG9zdC5yZW1vdmVDb250cm9sbGVyKSB7XG4gICAgICAgIHRoaXMuX2hvc3QucmVtb3ZlQ29udHJvbGxlcih0aGlzKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5faG9zdERlZmluZWRQcm9taXNlKSB7XG4gICAgICAgIHRoaXMuX2hvc3REZWZpbmVkUHJvbWlzZS50aGVuKCgpID0+IHRoaXMuX2hvc3QucmVtb3ZlQ29udHJvbGxlcih0aGlzKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhvc3RVcGRhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gKHRoaXMuX2hvc3QgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbdGhpcy5fcHJvcGVydHldO1xuICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IGN1cnJlbnRWYWx1ZTtcbiAgICAgIGZvciAoY29uc3QgaGFuZGxlciBvZiB0aGlzLl9oYW5kbGVycykge1xuICAgICAgICBoYW5kbGVyKHRoaXMuX2hvc3QpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBwcm9wZXJ0eVdhdGNoZXJzID0gbmV3IFdlYWtNYXA8TGl0RWxlbWVudCwgTWFwPHN0cmluZywgUHJvcGVydHlXYXRjaGVyPGFueT4+PigpO1xuXG5leHBvcnQgY2xhc3MgU2JiUHJvcGVydHlXYXRjaGVyQ29udHJvbGxlcjxUIGV4dGVuZHMgTGl0RWxlbWVudD4gaW1wbGVtZW50cyBSZWFjdGl2ZUNvbnRyb2xsZXIge1xuICBwcml2YXRlIF9yZWZlcmVuY2U/OiBUIHwgbnVsbDtcbiAgcHJpdmF0ZSBfd2F0Y2hlcnM/OiBNYXA8c3RyaW5nLCBQcm9wZXJ0eVdhdGNoZXI8VD4+O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0ICYgSFRNTEVsZW1lbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcmVmZXJlbmNlUmVzb2x2ZXI6ICgpID0+IFQgfCBudWxsLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2hhbmRsZXJzOiBQYXJ0aWFsPFJlY29yZDxrZXlvZiBULCBQcm9wZXJ0eVdhdGNoZXJIYW5kbGVyPFQ+Pj4sXG4gICkge1xuICAgIHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuY29ubmVjdCgpO1xuICB9XG5cbiAgcHVibGljIGhvc3REaXNjb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3JlZmVyZW5jZSAhPT0gdGhpcy5fcmVmZXJlbmNlUmVzb2x2ZXIoKSkge1xuICAgICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNvbm5lY3QoKTogdm9pZCB7XG4gICAgY29uc3QgcmVmZXJlbmNlID0gdGhpcy5fcmVmZXJlbmNlUmVzb2x2ZXIoKTtcbiAgICBpZiAodGhpcy5fcmVmZXJlbmNlID09PSByZWZlcmVuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5fcmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICAgIGlmICghdGhpcy5fcmVmZXJlbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCB3YXRjaGVycyA9IHByb3BlcnR5V2F0Y2hlcnMuZ2V0KHRoaXMuX3JlZmVyZW5jZSkgYXNcbiAgICAgIHwgTWFwPHN0cmluZywgUHJvcGVydHlXYXRjaGVyPFQ+PlxuICAgICAgfCB1bmRlZmluZWQ7XG4gICAgaWYgKCF3YXRjaGVycykge1xuICAgICAgd2F0Y2hlcnMgPSBuZXcgTWFwKCk7XG4gICAgICBwcm9wZXJ0eVdhdGNoZXJzLnNldCh0aGlzLl9yZWZlcmVuY2UsIHdhdGNoZXJzKTtcbiAgICB9XG4gICAgdGhpcy5fd2F0Y2hlcnMgPSB3YXRjaGVycztcblxuICAgIGZvciAoY29uc3QgW3Byb3BlcnR5LCBoYW5kbGVyXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9oYW5kbGVycykpIHtcbiAgICAgIGxldCB3YXRjaGVyID0gdGhpcy5fd2F0Y2hlcnMuZ2V0KHByb3BlcnR5KTtcbiAgICAgIGlmICghd2F0Y2hlcikge1xuICAgICAgICB3YXRjaGVyID0gbmV3IFByb3BlcnR5V2F0Y2hlcjxUPih0aGlzLl9yZWZlcmVuY2UsIHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fd2F0Y2hlcnMuc2V0KHByb3BlcnR5LCB3YXRjaGVyKTtcbiAgICAgIH1cbiAgICAgIHdhdGNoZXIuYWRkSGFuZGxlcihoYW5kbGVyKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGlzY29ubmVjdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3JlZmVyZW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3Byb3BlcnR5LCBoYW5kbGVyXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9oYW5kbGVycykpIHtcbiAgICAgIGNvbnN0IHdhdGNoZXIgPSB0aGlzLl93YXRjaGVycz8uZ2V0KHByb3BlcnR5KTtcbiAgICAgIGlmICh3YXRjaGVyKSB7XG4gICAgICAgIHdhdGNoZXIucmVtb3ZlSGFuZGxlcihoYW5kbGVyKTtcbiAgICAgICAgaWYgKCF3YXRjaGVyLnNpemUpIHtcbiAgICAgICAgICB0aGlzLl93YXRjaGVycyEuZGVsZXRlKHByb3BlcnR5KTtcbiAgICAgICAgICBpZiAoIXRoaXMuX3dhdGNoZXJzIS5zaXplICYmIHRoaXMuX3JlZmVyZW5jZSkge1xuICAgICAgICAgICAgcHJvcGVydHlXYXRjaGVycy5kZWxldGUodGhpcy5fcmVmZXJlbmNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fcmVmZXJlbmNlID0gbnVsbDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQVNBLElBQU0sa0JBQU4sTUFBcUI7Q0FLbkIsSUFBVyxPQUFJO0FBQ2IsU0FBTyxLQUFLLFVBQVU7O0NBR3hCLFlBQ21CLE9BQ0EsV0FBaUI7QUFEakIsT0FBQSxRQUFBO0FBQ0EsT0FBQSxZQUFBO0FBVFgsT0FBQSw0QkFBWSxJQUFJLEtBQWdDO0FBQ2hELE9BQUEsc0JBQTRDO0FBVWxELE1BQUksQ0FBQyxTQUNILEtBQUksZUFBZSxJQUFJLEtBQUssTUFBTSxVQUFVLENBQzFDLGdCQUFlLFFBQVEsS0FBSyxNQUFNO01BR2xDLE1BQUssc0JBQXNCLGVBQWUsWUFBWSxLQUFLLE1BQU0sVUFBVSxDQUFDLFdBQVU7QUFDcEYsa0JBQWUsUUFBUSxLQUFLLE1BQU07QUFDbEMsUUFBSyxzQkFBc0I7SUFDM0I7QUFHTixPQUFLLFNBQVUsS0FBSyxNQUE2QyxLQUFLOztDQUdqRSxXQUFXLFNBQWtDO0FBQ2xELE1BQUksQ0FBQyxLQUFLLFVBQVU7T0FFZCxLQUFLLE1BQU0sY0FDYixNQUFLLE1BQU0sY0FBYyxLQUFLO1lBQ3JCLEtBQUssb0JBQ2QsTUFBSyxvQkFBb0IsV0FBVyxLQUFLLE1BQU0sY0FBYyxLQUFLLENBQUM7O0FBR3ZFLE9BQUssVUFBVSxJQUFJLFFBQVE7QUFFM0IsTUFBSSxDQUFDLEtBQUssb0JBQ1IsU0FBUSxLQUFLLE1BQU07TUFFbkIsTUFBSyxvQkFBb0IsV0FBVyxRQUFRLEtBQUssTUFBTSxDQUFDOztDQUlyRCxjQUFjLFNBQWtDO0FBQ3JELE9BQUssVUFBVSxPQUFPLFFBQVE7QUFDOUIsTUFBSSxDQUFDLEtBQUssVUFBVTtPQUVkLEtBQUssTUFBTSxpQkFDYixNQUFLLE1BQU0saUJBQWlCLEtBQUs7WUFDeEIsS0FBSyxvQkFDZCxNQUFLLG9CQUFvQixXQUFXLEtBQUssTUFBTSxpQkFBaUIsS0FBSyxDQUFDOzs7Q0FLckUsYUFBVTtFQUNmLE1BQU0sZUFBZ0IsS0FBSyxNQUE2QyxLQUFLO0FBQzdFLE1BQUksS0FBSyxXQUFXLGNBQWM7QUFDaEMsUUFBSyxTQUFTO0FBQ2QsUUFBSyxNQUFNLFdBQVcsS0FBSyxVQUN6QixTQUFRLEtBQUssTUFBTTs7OztBQU0zQixJQUFNLG1DQUFtQixJQUFJLFNBQXdEO0FBRXJGLElBQWEsK0JBQWIsTUFBeUM7Q0FJdkMsWUFDbUIsT0FDQSxvQkFDQSxXQUE4RDtBQUY5RCxPQUFBLFFBQUE7QUFDQSxPQUFBLHFCQUFBO0FBQ0EsT0FBQSxZQUFBO0FBRWpCLE9BQUssTUFBTSxjQUFjLEtBQUs7O0NBR3pCLGdCQUFhO0FBQ2xCLE9BQUssU0FBUzs7Q0FHVCxtQkFBZ0I7QUFDckIsTUFBSSxLQUFLLGVBQWUsS0FBSyxvQkFBb0IsQ0FDL0MsTUFBSyxZQUFZOztDQUlkLFVBQU87RUFDWixNQUFNLFlBQVksS0FBSyxvQkFBb0I7QUFDM0MsTUFBSSxLQUFLLGVBQWUsVUFDdEI7QUFFRixPQUFLLFlBQVk7QUFDakIsT0FBSyxhQUFhO0FBQ2xCLE1BQUksQ0FBQyxLQUFLLFdBQ1I7RUFFRixJQUFJLFdBQVcsaUJBQWlCLElBQUksS0FBSyxXQUU1QjtBQUNiLE1BQUksQ0FBQyxVQUFVO0FBQ2IsOEJBQVcsSUFBSSxLQUFLO0FBQ3BCLG9CQUFpQixJQUFJLEtBQUssWUFBWSxTQUFTOztBQUVqRCxPQUFLLFlBQVk7QUFFakIsT0FBSyxNQUFNLENBQUMsVUFBVSxZQUFZLE9BQU8sUUFBUSxLQUFLLFVBQVUsRUFBRTtHQUNoRSxJQUFJLFVBQVUsS0FBSyxVQUFVLElBQUksU0FBUztBQUMxQyxPQUFJLENBQUMsU0FBUztBQUNaLGNBQVUsSUFBSSxnQkFBbUIsS0FBSyxZQUFZLFNBQVM7QUFDM0QsU0FBSyxVQUFVLElBQUksVUFBVSxRQUFROztBQUV2QyxXQUFRLFdBQVcsUUFBUTs7O0NBSXhCLGFBQVU7QUFDZixNQUFJLENBQUMsS0FBSyxXQUNSO0FBR0YsT0FBSyxNQUFNLENBQUMsVUFBVSxZQUFZLE9BQU8sUUFBUSxLQUFLLFVBQVUsRUFBRTtHQUNoRSxNQUFNLFVBQVUsS0FBSyxXQUFXLElBQUksU0FBUztBQUM3QyxPQUFJLFNBQVM7QUFDWCxZQUFRLGNBQWMsUUFBUTtBQUM5QixRQUFJLENBQUMsUUFBUSxNQUFNO0FBQ2pCLFVBQUssVUFBVyxPQUFPLFNBQVM7QUFDaEMsU0FBSSxDQUFDLEtBQUssVUFBVyxRQUFRLEtBQUssV0FDaEMsa0JBQWlCLE9BQU8sS0FBSyxXQUFXOzs7O0FBS2hELE9BQUssYUFBYSJ9
96
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktd2F0Y2hlci1jb250cm9sbGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL3Byb3BlcnR5LXdhdGNoZXItY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpc1NlcnZlcixcbiAgdHlwZSBMaXRFbGVtZW50LFxuICB0eXBlIFJlYWN0aXZlQ29udHJvbGxlcixcbiAgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0LFxufSBmcm9tICdsaXQnO1xuXG50eXBlIFByb3BlcnR5V2F0Y2hlckhhbmRsZXI8VCBleHRlbmRzIExpdEVsZW1lbnQ+ID0gKHJlZmVyZW5jZTogVCkgPT4gdm9pZDtcblxuY2xhc3MgUHJvcGVydHlXYXRjaGVyPFQgZXh0ZW5kcyBMaXRFbGVtZW50PiBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIHByaXZhdGUgX3ZhbHVlOiB1bmtub3duO1xuICBwcml2YXRlIF9oYW5kbGVycyA9IG5ldyBTZXQ8UHJvcGVydHlXYXRjaGVySGFuZGxlcjxUPj4oKTtcbiAgcHJpdmF0ZSBfaG9zdERlZmluZWRQcm9taXNlOiBQcm9taXNlPHZvaWQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2hhbmRsZXJzLnNpemU7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaG9zdDogVCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wcm9wZXJ0eTogc3RyaW5nLFxuICApIHtcbiAgICBpZiAoIWlzU2VydmVyKSB7XG4gICAgICBpZiAoY3VzdG9tRWxlbWVudHMuZ2V0KHRoaXMuX2hvc3QubG9jYWxOYW1lKSkge1xuICAgICAgICBjdXN0b21FbGVtZW50cy51cGdyYWRlKHRoaXMuX2hvc3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVGhlIGhvc3QgZWxlbWVudCBpcyBub3QgeWV0IGRlZmluZWQsIHdhaXQgZm9yIGl0cyBkZWZpbml0aW9uIGJlZm9yZSB1cGdyYWRpbmdcbiAgICAgICAgdGhpcy5faG9zdERlZmluZWRQcm9taXNlID0gY3VzdG9tRWxlbWVudHMud2hlbkRlZmluZWQodGhpcy5faG9zdC5sb2NhbE5hbWUpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGN1c3RvbUVsZW1lbnRzLnVwZ3JhZGUodGhpcy5faG9zdCk7XG4gICAgICAgICAgdGhpcy5faG9zdERlZmluZWRQcm9taXNlID0gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3ZhbHVlID0gKHRoaXMuX2hvc3QgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbdGhpcy5fcHJvcGVydHldO1xuICB9XG5cbiAgcHVibGljIGFkZEhhbmRsZXIoaGFuZGxlcjogUHJvcGVydHlXYXRjaGVySGFuZGxlcjxUPik6IHZvaWQge1xuICAgIGlmICghdGhpcy5faGFuZGxlcnMuc2l6ZSkge1xuICAgICAgLy8gV2UgY2hlY2sgaWYgdGhlIGFkZENvbnRyb2xsZXIgbWV0aG9kIGlzIGF2YWlsYWJsZSAoZWxlbWVudCB3YXMgZGVmaW5lZCAmJiB1cGdyYWRlZCksIG90aGVyd2lzZSB3ZSB3YWl0IGZvciB0aGUgaG9zdCB0byBiZSBkZWZpbmVkXG4gICAgICBpZiAodGhpcy5faG9zdC5hZGRDb250cm9sbGVyKSB7XG4gICAgICAgIHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5faG9zdERlZmluZWRQcm9taXNlKSB7XG4gICAgICAgIHRoaXMuX2hvc3REZWZpbmVkUHJvbWlzZS50aGVuKCgpID0+IHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcih0aGlzKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2hhbmRsZXJzLmFkZChoYW5kbGVyKTtcblxuICAgIGlmICghdGhpcy5faG9zdERlZmluZWRQcm9taXNlKSB7XG4gICAgICBoYW5kbGVyKHRoaXMuX2hvc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9ob3N0RGVmaW5lZFByb21pc2UudGhlbigoKSA9PiBoYW5kbGVyKHRoaXMuX2hvc3QpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlSGFuZGxlcihoYW5kbGVyOiBQcm9wZXJ0eVdhdGNoZXJIYW5kbGVyPFQ+KTogdm9pZCB7XG4gICAgdGhpcy5faGFuZGxlcnMuZGVsZXRlKGhhbmRsZXIpO1xuICAgIGlmICghdGhpcy5faGFuZGxlcnMuc2l6ZSkge1xuICAgICAgLy8gV2UgY2hlY2sgaWYgdGhlIHJlbW92ZUNvbnRyb2xsZXIgbWV0aG9kIGlzIGF2YWlsYWJsZSAoZWxlbWVudCB3YXMgZGVmaW5lZCAmJiB1cGdyYWRlZCksIG90aGVyd2lzZSB3ZSB3YWl0IGZvciB0aGUgaG9zdCB0byBiZSBkZWZpbmVkXG4gICAgICBpZiAodGhpcy5faG9zdC5yZW1vdmVDb250cm9sbGVyKSB7XG4gICAgICAgIHRoaXMuX2hvc3QucmVtb3ZlQ29udHJvbGxlcih0aGlzKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5faG9zdERlZmluZWRQcm9taXNlKSB7XG4gICAgICAgIHRoaXMuX2hvc3REZWZpbmVkUHJvbWlzZS50aGVuKCgpID0+IHRoaXMuX2hvc3QucmVtb3ZlQ29udHJvbGxlcih0aGlzKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhvc3RVcGRhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gKHRoaXMuX2hvc3QgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbdGhpcy5fcHJvcGVydHldO1xuICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IGN1cnJlbnRWYWx1ZTtcbiAgICAgIGZvciAoY29uc3QgaGFuZGxlciBvZiB0aGlzLl9oYW5kbGVycykge1xuICAgICAgICBoYW5kbGVyKHRoaXMuX2hvc3QpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBwcm9wZXJ0eVdhdGNoZXJzID0gbmV3IFdlYWtNYXA8TGl0RWxlbWVudCwgTWFwPHN0cmluZywgUHJvcGVydHlXYXRjaGVyPGFueT4+PigpO1xuXG5leHBvcnQgY2xhc3MgU2JiUHJvcGVydHlXYXRjaGVyQ29udHJvbGxlcjxUIGV4dGVuZHMgTGl0RWxlbWVudD4gaW1wbGVtZW50cyBSZWFjdGl2ZUNvbnRyb2xsZXIge1xuICBwcml2YXRlIF9yZWZlcmVuY2U/OiBUIHwgbnVsbDtcbiAgcHJpdmF0ZSBfd2F0Y2hlcnM/OiBNYXA8c3RyaW5nLCBQcm9wZXJ0eVdhdGNoZXI8VD4+O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0ICYgSFRNTEVsZW1lbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcmVmZXJlbmNlUmVzb2x2ZXI6ICgpID0+IFQgfCBudWxsLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2hhbmRsZXJzOiBQYXJ0aWFsPFJlY29yZDxrZXlvZiBULCBQcm9wZXJ0eVdhdGNoZXJIYW5kbGVyPFQ+Pj4sXG4gICkge1xuICAgIHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuY29ubmVjdCgpO1xuICB9XG5cbiAgcHVibGljIGhvc3REaXNjb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3JlZmVyZW5jZSAhPT0gdGhpcy5fcmVmZXJlbmNlUmVzb2x2ZXIoKSkge1xuICAgICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNvbm5lY3QoKTogdm9pZCB7XG4gICAgY29uc3QgcmVmZXJlbmNlID0gdGhpcy5fcmVmZXJlbmNlUmVzb2x2ZXIoKTtcbiAgICBpZiAodGhpcy5fcmVmZXJlbmNlID09PSByZWZlcmVuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5fcmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICAgIGlmICghdGhpcy5fcmVmZXJlbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCB3YXRjaGVycyA9IHByb3BlcnR5V2F0Y2hlcnMuZ2V0KHRoaXMuX3JlZmVyZW5jZSkgYXNcbiAgICAgIHwgTWFwPHN0cmluZywgUHJvcGVydHlXYXRjaGVyPFQ+PlxuICAgICAgfCB1bmRlZmluZWQ7XG4gICAgaWYgKCF3YXRjaGVycykge1xuICAgICAgd2F0Y2hlcnMgPSBuZXcgTWFwKCk7XG4gICAgICBwcm9wZXJ0eVdhdGNoZXJzLnNldCh0aGlzLl9yZWZlcmVuY2UsIHdhdGNoZXJzKTtcbiAgICB9XG4gICAgdGhpcy5fd2F0Y2hlcnMgPSB3YXRjaGVycztcblxuICAgIGZvciAoY29uc3QgW3Byb3BlcnR5LCBoYW5kbGVyXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9oYW5kbGVycykpIHtcbiAgICAgIGxldCB3YXRjaGVyID0gdGhpcy5fd2F0Y2hlcnMuZ2V0KHByb3BlcnR5KTtcbiAgICAgIGlmICghd2F0Y2hlcikge1xuICAgICAgICB3YXRjaGVyID0gbmV3IFByb3BlcnR5V2F0Y2hlcjxUPih0aGlzLl9yZWZlcmVuY2UsIHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fd2F0Y2hlcnMuc2V0KHByb3BlcnR5LCB3YXRjaGVyKTtcbiAgICAgIH1cbiAgICAgIHdhdGNoZXIuYWRkSGFuZGxlcihoYW5kbGVyKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGlzY29ubmVjdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3JlZmVyZW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3Byb3BlcnR5LCBoYW5kbGVyXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9oYW5kbGVycykpIHtcbiAgICAgIGNvbnN0IHdhdGNoZXIgPSB0aGlzLl93YXRjaGVycz8uZ2V0KHByb3BlcnR5KTtcbiAgICAgIGlmICh3YXRjaGVyKSB7XG4gICAgICAgIHdhdGNoZXIucmVtb3ZlSGFuZGxlcihoYW5kbGVyKTtcbiAgICAgICAgaWYgKCF3YXRjaGVyLnNpemUpIHtcbiAgICAgICAgICB0aGlzLl93YXRjaGVycyEuZGVsZXRlKHByb3BlcnR5KTtcbiAgICAgICAgICBpZiAoIXRoaXMuX3dhdGNoZXJzIS5zaXplICYmIHRoaXMuX3JlZmVyZW5jZSkge1xuICAgICAgICAgICAgcHJvcGVydHlXYXRjaGVycy5kZWxldGUodGhpcy5fcmVmZXJlbmNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fcmVmZXJlbmNlID0gbnVsbDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQVNBLElBQU0sa0JBQU4sTUFBcUI7Q0FLbkIsSUFBVyxPQUFJO0FBQ2IsU0FBTyxLQUFLLFVBQVU7O0NBR3hCLFlBQ21CLE9BQ0EsV0FBaUI7QUFEakIsT0FBQSxRQUFBO0FBQ0EsT0FBQSxZQUFBO0FBVFgsT0FBQSw0QkFBWSxJQUFJLEtBQWdDO0FBQ2hELE9BQUEsc0JBQTRDO0FBVWxELE1BQUksQ0FBQyxTQUNILEtBQUksZUFBZSxJQUFJLEtBQUssTUFBTSxVQUFVLENBQzFDLGdCQUFlLFFBQVEsS0FBSyxNQUFNO01BR2xDLE1BQUssc0JBQXNCLGVBQWUsWUFBWSxLQUFLLE1BQU0sVUFBVSxDQUFDLFdBQVU7QUFDcEYsa0JBQWUsUUFBUSxLQUFLLE1BQU07QUFDbEMsUUFBSyxzQkFBc0I7SUFDM0I7QUFHTixPQUFLLFNBQVUsS0FBSyxNQUE2QyxLQUFLOztDQUdqRSxXQUFXLFNBQWtDO0FBQ2xELE1BQUksQ0FBQyxLQUFLLFVBQVU7T0FFZCxLQUFLLE1BQU0sY0FDYixNQUFLLE1BQU0sY0FBYyxLQUFLO1lBQ3JCLEtBQUssb0JBQ2QsTUFBSyxvQkFBb0IsV0FBVyxLQUFLLE1BQU0sY0FBYyxLQUFLLENBQUM7O0FBR3ZFLE9BQUssVUFBVSxJQUFJLFFBQVE7QUFFM0IsTUFBSSxDQUFDLEtBQUssb0JBQ1IsU0FBUSxLQUFLLE1BQU07TUFFbkIsTUFBSyxvQkFBb0IsV0FBVyxRQUFRLEtBQUssTUFBTSxDQUFDOztDQUlyRCxjQUFjLFNBQWtDO0FBQ3JELE9BQUssVUFBVSxPQUFPLFFBQVE7QUFDOUIsTUFBSSxDQUFDLEtBQUssVUFBVTtPQUVkLEtBQUssTUFBTSxpQkFDYixNQUFLLE1BQU0saUJBQWlCLEtBQUs7WUFDeEIsS0FBSyxvQkFDZCxNQUFLLG9CQUFvQixXQUFXLEtBQUssTUFBTSxpQkFBaUIsS0FBSyxDQUFDOzs7Q0FLckUsYUFBVTtFQUNmLE1BQU0sZUFBZ0IsS0FBSyxNQUE2QyxLQUFLO0FBQzdFLE1BQUksS0FBSyxXQUFXLGNBQWM7QUFDaEMsUUFBSyxTQUFTO0FBQ2QsUUFBSyxNQUFNLFdBQVcsS0FBSyxVQUN6QixTQUFRLEtBQUssTUFBTTs7OztBQU0zQixJQUFNLG1DQUFtQixJQUFJLFNBQXdEO0FBRXJGLElBQWEsK0JBQWIsTUFBeUM7Q0FJdkMsWUFDbUIsT0FDQSxvQkFDQSxXQUE4RDtBQUY5RCxPQUFBLFFBQUE7QUFDQSxPQUFBLHFCQUFBO0FBQ0EsT0FBQSxZQUFBO0FBRWpCLE9BQUssTUFBTSxjQUFjLEtBQUs7O0NBR3pCLGdCQUFhO0FBQ2xCLE9BQUssU0FBUzs7Q0FHVCxtQkFBZ0I7QUFDckIsTUFBSSxLQUFLLGVBQWUsS0FBSyxvQkFBb0IsQ0FDL0MsTUFBSyxZQUFZOztDQUlkLFVBQU87RUFDWixNQUFNLFlBQVksS0FBSyxvQkFBb0I7QUFDM0MsTUFBSSxLQUFLLGVBQWUsVUFDdEI7QUFFRixPQUFLLFlBQVk7QUFDakIsT0FBSyxhQUFhO0FBQ2xCLE1BQUksQ0FBQyxLQUFLLFdBQ1I7RUFFRixJQUFJLFdBQVcsaUJBQWlCLElBQUksS0FBSyxXQUU1QjtBQUNiLE1BQUksQ0FBQyxVQUFVO0FBQ2IsOEJBQVcsSUFBSSxLQUFLO0FBQ3BCLG9CQUFpQixJQUFJLEtBQUssWUFBWSxTQUFTOztBQUVqRCxPQUFLLFlBQVk7QUFFakIsT0FBSyxNQUFNLENBQUMsVUFBVSxZQUFZLE9BQU8sUUFBUSxLQUFLLFVBQVUsRUFBRTtHQUNoRSxJQUFJLFVBQVUsS0FBSyxVQUFVLElBQUksU0FBUztBQUMxQyxPQUFJLENBQUMsU0FBUztBQUNaLGNBQVUsSUFBSSxnQkFBbUIsS0FBSyxZQUFZLFNBQVM7QUFDM0QsU0FBSyxVQUFVLElBQUksVUFBVSxRQUFROztBQUV2QyxXQUFRLFdBQVcsUUFBUTs7O0NBSXhCLGFBQVU7QUFDZixNQUFJLENBQUMsS0FBSyxXQUNSO0FBR0YsT0FBSyxNQUFNLENBQUMsVUFBVSxZQUFZLE9BQU8sUUFBUSxLQUFLLFVBQVUsRUFBRTtHQUNoRSxNQUFNLFVBQVUsS0FBSyxXQUFXLElBQUksU0FBUztBQUM3QyxPQUFJLFNBQVM7QUFDWCxZQUFRLGNBQWMsUUFBUTtBQUM5QixRQUFJLENBQUMsUUFBUSxNQUFNO0FBQ2pCLFVBQUssVUFBVyxPQUFPLFNBQVM7QUFDaEMsU0FBSSxDQUFDLEtBQUssVUFBVyxRQUFRLEtBQUssV0FDaEMsa0JBQWlCLE9BQU8sS0FBSyxXQUFXOzs7O0FBS2hELE9BQUssYUFBYSJ9
@@ -148,4 +148,4 @@ var DateAdapter = class {
148
148
  //#endregion
149
149
  export { DAYS_PER_ROW, DateAdapter, FORMAT_DATE, FRIDAY, ISO8601_FORMAT_DATE, MONDAY, MONTHS_PER_PAGE, MONTHS_PER_ROW, SATURDAY, SUNDAY, THURSDAY, TUESDAY, WEDNESDAY, YEARS_PER_PAGE, YEARS_PER_ROW };
150
150
 
151
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1hZGFwdGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RhdGV0aW1lL2RhdGUtYWRhcHRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRk9STUFUX0RBVEUgPVxuICAvKDA/WzEtOV18WzEyXVswLTldfDNbMDFdKVsuLFxcXFwvXFwtXFxzXSgwP1sxLTldfDFbMC0yXSlbLixcXFxcL1xcLVxcc10oWzAtOV17MSw0fSQpPy87XG5leHBvcnQgY29uc3QgSVNPODYwMV9GT1JNQVRfREFURSA9IC9eKFswLTldezR9KS0oMFsxLTldfDFbMC0yXSktKDBbMS05XXxbMS0zXVswLTldKSQvO1xuZXhwb3J0IGNvbnN0IE1PTkRBWSA9IDE7XG5leHBvcnQgY29uc3QgVFVFU0RBWSA9IDI7XG5leHBvcnQgY29uc3QgV0VETkVTREFZID0gMztcbmV4cG9ydCBjb25zdCBUSFVSU0RBWSA9IDQ7XG5leHBvcnQgY29uc3QgRlJJREFZID0gNTtcbmV4cG9ydCBjb25zdCBTQVRVUkRBWSA9IDY7XG5leHBvcnQgY29uc3QgU1VOREFZID0gMDtcblxuLy8gVE9ETyhicmVha2luZy1jaGFuZ2UpOiBNb3ZlIHRoZXNlIHZhcmlhYmxlcyB0byBjYWxlbmRhclxuZXhwb3J0IGNvbnN0IERBWVNfUEVSX1JPVzogbnVtYmVyID0gNztcbmV4cG9ydCBjb25zdCBNT05USFNfUEVSX1JPVzogbnVtYmVyID0gNDtcbmV4cG9ydCBjb25zdCBZRUFSU19QRVJfUk9XOiBudW1iZXIgPSA0O1xuZXhwb3J0IGNvbnN0IE1PTlRIU19QRVJfUEFHRTogbnVtYmVyID0gMTI7XG5leHBvcnQgY29uc3QgWUVBUlNfUEVSX1BBR0U6IG51bWJlciA9IDI0O1xuXG4vKipcbiAqIEFic3RyYWN0IGRhdGUgZnVuY3Rpb25hbGl0eS5cbiAqXG4gKiBBZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9ibG9iL21haW4vc3JjL21hdGVyaWFsL2NvcmUvZGF0ZXRpbWUvZGF0ZS1hZGFwdGVyLnRzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYXRlQWRhcHRlcjxUID0gYW55PiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1dG9mZlllYXJPZmZzZXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQHBhcmFtIGN1dG9mZlllYXJPZmZzZXQgVGhlIHRocmVzaG9sZCBvbiB3aGV0aGVyIGEgdHdvLWRpZ2l0IHllYXJcbiAgICogc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYmVsb25naW5nIHRvIDIwMDAgb3IgMTkwMC4gZS5nLiB3aXRoIDE1IChkZWZhdWx0KVxuICAgKiB0aGUgY3VycmVudCB5ZWFyIHBsdXMgMTUgd2lsbCBiZSB0cmVhdGVkIGFzIGJlbG9uZ2luZyB0byAyMDAwLCBhbmQgdGhlIHJlc3QgdG8gMTkwMC5cbiAgICogU28gZS5nLiB3aXRoIHRoZSBjdXJyZW50IHllYXIgMjAyNSwgNDAgd2lsbCBiZSB0cmVhdGVkIGFzIDIwNDAsIHdoaWxlIDQxIHdpbGwgYmUgdHJlYXRlZCBhcyAxOTQxLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGN1dG9mZlllYXJPZmZzZXQ6IG51bWJlciA9IDE1KSB7XG4gICAgdGhpcy5fY3V0b2ZmWWVhck9mZnNldCA9IGN1dG9mZlllYXJPZmZzZXQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB5ZWFyIGFzIGEgbnVtYmVyLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldFllYXIoZGF0ZTogVCk6IG51bWJlcjtcblxuICAvKipcbiAgICogR2V0IHRoZSBtb250aCBhcyBhIG51bWJlci5cbiAgICogQXR0ZW50aW9uOiBUaGlzIHJldHVybnMgMS0xMiBhbmQgbWl0aWdhdGVzIHRoZSBkZWZhdWx0IEphdmFTY3JpcHQgRGF0ZSBiZWhhdmlvci5cbiAgICogQHBhcmFtIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRNb250aChkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRheSBvZiB0aGUgbW9udGggYXMgYSBudW1iZXIuXG4gICAqIEBwYXJhbSBkYXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0RGF0ZShkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIERheSBvZiB0aGUgd2VlayBhcyBhIG51bWJlci5cbiAgICogQHBhcmFtIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXlPZldlZWsoZGF0ZTogVCk6IG51bWJlcjtcblxuICAvKiogR2V0IHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDA6IHN1bmRheTsgMTogbW9uZGF5OyBldGMuKS4gKi9cbiAgcHVibGljIGFic3RyYWN0IGdldEZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlcjtcblxuICAvKipcbiAgICogR2V0IHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIG1vbnRoLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldE51bURheXNJbk1vbnRoKGRhdGU6IFQpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSBtb250aHMgaW4gYSBnaXZlbiBzdHlsZS5cbiAgICogQHBhcmFtIHN0eWxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW107XG5cbiAgLyoqIEdldCBhIHN0cmluZyBhcnJheSB3aXRoIGxlbmd0aCA9IDMxLCBmaWxsZWQgd2l0aCB0aGUgZGF5cyBpbiBhIG1vbnRoLCBzdGFydGluZyBmcm9tIDEuICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXRlTmFtZXMoKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSB3ZWVrIGRheXMgaW4gYSBnaXZlbiBzdHlsZS5cbiAgICogQHBhcmFtIHN0eWxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0RGF5T2ZXZWVrTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdO1xuXG4gIC8qKiBDcmVhdGVzIHRvZGF5J3MgZGF0ZS4gKi9cbiAgcHVibGljIGFic3RyYWN0IHRvZGF5KCk6IFQ7XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gYGRhdGVgIGlzIHZhbGlkLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGlzVmFsaWQoZGF0ZTogVCB8IG51bGwgfCB1bmRlZmluZWQpOiBkYXRlIGlzIFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBieSBjbG9uaW5nIHRoZSBnaXZlbiBvbmUuXG4gICAqIEBwYXJhbSBkYXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgY2xvbmUoZGF0ZTogVCk6IFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSwgZ2l2ZW4gZGF5LCBtb250aCBhbmQgeWVhcjsgd2l0aG91dCBkYXRlJ3Mgb3ZlcmZsb3cuXG4gICAqIEBwYXJhbSB5ZWFyXG4gICAqIEBwYXJhbSBtb250aCBUaGUgbW9udGggb2YgdGhlIGRhdGUgKDEtaW5kZXhlZCwgMSA9IEphbnVhcnkpLiBNdXN0IGJlIGFuIGludGVnZXIgMSAtIDEyLlxuICAgKiBAcGFyYW0gZGF5XG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgY3JlYXRlRGF0ZSh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyKTogVDtcblxuICAvKipcbiAgICogQXR0ZW1wdHMgdG8gZGVzZXJpYWxpemUgYSB2YWx1ZSB0byBhIHZhbGlkIGRhdGUgb2JqZWN0LiBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHBhcnNpbmcgaW4gdGhhdFxuICAgKiBkZXNlcmlhbGl6ZSBzaG91bGQgb25seSBhY2NlcHQgbm9uLWFtYmlndW91cywgbG9jYWxlLWluZGVwZW5kZW50IGZvcm1hdHMgKGUuZy4gYSBJU08gODYwMVxuICAgKiBzdHJpbmcpLiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBhbGxvdyBhbnkgZGVzZXJpYWxpemF0aW9uLCBpdCBzaW1wbHkgY2hlY2tzIHRoYXRcbiAgICogdGhlIGdpdmVuIHZhbHVlIGlzIGFscmVhZHkgYSB2YWxpZCBkYXRlIG9iamVjdCBvciBudWxsLlxuICAgKiBAcGFyYW0gdmFsdWUgRWl0aGVyIGEgZGF0ZSBvYmplY3QsIElTTyBzdHJpbmcgb3IgYW4gZW1wdHkgdmFsdWUuXG4gICAqIEByZXR1cm5zIFRoZSBkYXRlIGlmIHRoZSBpbnB1dCBpcyB2YWxpZCwgYG51bGxgIG90aGVyd2lzZS5cbiAgICovXG4gIHB1YmxpYyBkZXNlcmlhbGl6ZSh2YWx1ZTogVCB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBUIHwgbnVsbCB7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgPT0gbnVsbCB8fFxuICAgICAgKHRoaXMuaXNEYXRlSW5zdGFuY2UodmFsdWUpICYmIHRoaXMuaXNWYWxpZCh2YWx1ZSBhcyBUIHwgbnVsbCB8IHVuZGVmaW5lZCkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdmFsdWUgYXMgVCB8IG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmludmFsaWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGRhdGUgYWRkaW5nIHRoZSBudW1iZXIgb2YgcHJvdmlkZWQgYHllYXJzYCB0byB0aGUgcHJvdmlkZWQgYGRhdGVgLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZS5cbiAgICogQHBhcmFtIHllYXJzIFRoZSBudW1iZXIgb2YgeWVhcnMgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGFkZENhbGVuZGFyWWVhcnMoZGF0ZTogVCwgeWVhcnM6IG51bWJlcik6IFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgbW9udGhzYCB0byB0aGUgcHJvdmlkZWQgYGRhdGVgLlxuICAgKiBJZiB0aGUgY2FsY3VsYXRlZCBtb250aCBoYXMgZmV3ZXIgZGF5cyB0aGFuIHRoZSBvcmlnaW5hbCBvbmUsIHRoZSBkYXRlIGlzIHNldCB0byB0aGUgbGFzdCBkYXkgb2YgdGhlIG1vbnRoLlxuICAgKiBFLmcuIHdpdGggYGRhdGVgID0gbmV3IERhdGUoMjAyMiwgMCwgMzEpIGFuZCBgbW9udGhzYCA9IDEsIGl0IHJldHVybnMgbmV3IERhdGUoMjAyMiwgMSwgMjgpLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZS5cbiAgICogQHBhcmFtIG1vbnRocyBUaGUgbnVtYmVyIG9mIG1vbnRocyB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYWRkQ2FsZW5kYXJNb250aHMoZGF0ZTogVCwgbW9udGhzOiBudW1iZXIpOiBUO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGRhdGUgYnkgYWRkaW5nIHRoZSBudW1iZXIgb2YgcHJvdmlkZWQgYGRheXNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlLlxuICAgKiBAcGFyYW0gZGF5cyBUaGUgbnVtYmVyIG9mIGRheXMgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGFkZENhbGVuZGFyRGF5cyhkYXRlOiBULCBkYXlzOiBudW1iZXIpOiBUO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRhdGUgaW4gdGhlIGxvY2FsIGZvcm1hdC5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZm9ybWF0XG4gICAqIEByZXR1cm5zIFRoZSBgZGF0ZWAgaW4gdGhlIGxvY2FsIGZvcm1hdCBhcyBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0QWNjZXNzaWJpbGl0eUZvcm1hdERhdGUoZGF0ZTogVCB8IHN0cmluZyk6IHN0cmluZztcblxuICAvKipcbiAgICogR2V0IHRoZSBnaXZlbiBzdHJpbmcgYXMgRGF0ZS5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSBkYXRlIGluIHRoZSBmb3JtYXQgREQuTU0uWVlZWS5cbiAgICovXG4gIHB1YmxpYyBwYXJzZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFQgfCBudWxsIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgZGF0ZTogVCB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGlzb01hdGNoID0gdmFsdWUubWF0Y2goSVNPODYwMV9GT1JNQVRfREFURSk7XG4gICAgdHJ5IHtcbiAgICAgIGRhdGUgPSBpc29NYXRjaCA/IHRoaXMuY3JlYXRlRGF0ZSgraXNvTWF0Y2hbMV0sICtpc29NYXRjaFsyXSwgK2lzb01hdGNoWzNdKSA6IG51bGw7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBlbXB0eSAqL1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1ZhbGlkKGRhdGUpKSB7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICBjb25zdCBzdHJpcHBlZFZhbHVlID0gdmFsdWUucmVwbGFjZSgvXFxEL2csICcgJykudHJpbSgpO1xuXG4gICAgY29uc3QgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsIHwgdW5kZWZpbmVkID0gc3RyaXBwZWRWYWx1ZT8ubWF0Y2goRk9STUFUX0RBVEUpO1xuICAgIGlmIChcbiAgICAgICFtYXRjaCB8fFxuICAgICAgbWF0Y2guaW5kZXggIT09IDAgfHxcbiAgICAgIG1hdGNoLmxlbmd0aCA8PSAyIHx8XG4gICAgICBtYXRjaC5zb21lKChlKSA9PiBlID09PSB1bmRlZmluZWQpIHx8XG4gICAgICAhdGhpcy5pc1ZhbGlkKHRoaXMuY3JlYXRlRGF0ZSgrbWF0Y2hbM10sICttYXRjaFsyXSwgK21hdGNoWzFdKSlcbiAgICApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCB5ZWFyID0gK21hdGNoWzNdO1xuXG4gICAgaWYgKHR5cGVvZiB5ZWFyID09PSAnbnVtYmVyJyAmJiB5ZWFyIDwgMTAwICYmIHllYXIgPj0gMCkge1xuICAgICAgY29uc3Qgc2hpZnQgPSB0aGlzLmdldFllYXIodGhpcy50b2RheSgpKSAtIDIwMDAgKyB0aGlzLl9jdXRvZmZZZWFyT2Zmc2V0O1xuICAgICAgeWVhciA9IHllYXIgPD0gc2hpZnQgPyAyMDAwICsgeWVhciA6IDE5MDAgKyB5ZWFyO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZURhdGUoeWVhciwgK21hdGNoWzJdLCArbWF0Y2hbMV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCB0aGUgZ2l2ZW4gZGF0ZSBhcyBzdHJpbmcuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGZvcm1hdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgb3B0aW9ucyBvYmplY3Qgd2l0aCB3ZWVrZGF5U3R5bGUgYXMgcHJvcGVydHlcbiAgICovXG4gIHB1YmxpYyBmb3JtYXQoXG4gICAgZGF0ZTogVCB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgb3B0aW9ucz86IHsgd2Vla2RheVN0eWxlPzogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnIHwgJ25vbmUnIH0sXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IG5ldyBEYXRlKHRoaXMudG9Jc284NjAxKGRhdGUhKSArICdUMDA6MDA6MDAnKTtcbiAgICBjb25zdCBkYXRlRm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2RlLUNIJywge1xuICAgICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgICBtb250aDogJzItZGlnaXQnLFxuICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnM/LndlZWtkYXlTdHlsZSA9PT0gJ25vbmUnKSB7XG4gICAgICByZXR1cm4gZGF0ZUZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xuICAgIH1cblxuICAgIGNvbnN0IHdlZWtkYXlTdHlsZSA9IG9wdGlvbnM/LndlZWtkYXlTdHlsZSA/PyAnc2hvcnQnO1xuICAgIGxldCB3ZWVrZGF5ID0gdGhpcy5nZXREYXlPZldlZWtOYW1lcyh3ZWVrZGF5U3R5bGUpW3RoaXMuZ2V0RGF5T2ZXZWVrKGRhdGUhKV07XG4gICAgd2Vla2RheSA9IHdlZWtkYXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB3ZWVrZGF5LnN1YnN0cmluZygxKTtcbiAgICAvLyBXZSBoYXZlIHRoZSBzcGVjaWFsIHJlcXVpcmVtZW50IGZvciBkYXRlIGZvcm1hdHMgYXQgU0JCLCB3aGVyZSB0aGUgc2hvcnQgZm9ybVxuICAgIC8vIGZvciB3ZWVrZGF5cyBzaG91bGQgYmUgdHdvIGNoYXJhY3RlcnMgaW4gbGVuZ3RoLlxuICAgIGlmICh3ZWVrZGF5U3R5bGUgPT09ICdzaG9ydCcpIHtcbiAgICAgIHdlZWtkYXkgPSB3ZWVrZGF5LnN1YnN0cmluZygwLCAyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7d2Vla2RheX0sICR7ZGF0ZUZvcm1hdHRlci5mb3JtYXQodmFsdWUpfWA7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGBvYmpgIGlzIGEgRGF0ZS5cbiAgICogQHBhcmFtIG9iaiBUaGUgb2JqZWN0IHRvIGNoZWNrLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGlzRGF0ZUluc3RhbmNlKG9iajogYW55KTogYm9vbGVhbjtcblxuICAvKipcbiAgICogR2V0cyBkYXRlIGluc3RhbmNlIHRoYXQgaXMgbm90IHZhbGlkLlxuICAgKiBAcmV0dXJucyBBbiBpbnZhbGlkIGRhdGUuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaW52YWxpZCgpOiBUO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGdpdmVuIGRhdGUgYXMgSVNPIFN0cmluZy5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY29udmVydCB0byBJU08gU3RyaW5nLlxuICAgKi9cbiAgcHVibGljIHRvSXNvODYwMShkYXRlOiBUKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYWQgPSAodmFsdWU6IG51bWJlciwgbGVuZ3RoID0gMik6IHN0cmluZyA9PiBgJHt2YWx1ZX1gLnBhZFN0YXJ0KGxlbmd0aCwgJzAnKTtcbiAgICByZXR1cm4gYCR7cGFkKHRoaXMuZ2V0WWVhcihkYXRlKSwgNCl9LSR7cGFkKHRoaXMuZ2V0TW9udGgoZGF0ZSkpfS0ke3BhZCh0aGlzLmdldERhdGUoZGF0ZSkpfWA7XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gYSBwb3RlbnRpYWwgZGF0ZSBvYmplY3QsIHJldHVybnMgdGhhdCBzYW1lIGRhdGUgb2JqZWN0IGlmIGl0IGlzXG4gICAqIGEgdmFsaWQgZGF0ZSwgb3IgYG51bGxgIGlmIGl0J3Mgbm90IGEgdmFsaWQgZGF0ZS5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSBvYmplY3QgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIEEgZGF0ZSBvciBgbnVsbGAuXG4gICAqL1xuICBwdWJsaWMgZ2V0VmFsaWREYXRlT3JOdWxsKHZhbHVlOiB1bmtub3duKTogVCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmlzRGF0ZUluc3RhbmNlKHZhbHVlKSAmJiB0aGlzLmlzVmFsaWQodmFsdWUgYXMgVCkgPyAodmFsdWUgYXMgVCkgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIGRheSBvZiB0aGUgd2VlayBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aCwgYW5kIHRoZW4gaXRzIG9mZnNldCBmcm9tIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAqL1xuICBwdWJsaWMgZ2V0Rmlyc3RXZWVrT2Zmc2V0KGRhdGU6IFQpOiBudW1iZXIge1xuICAgIGNvbnN0IGZpcnN0T2ZNb250aCA9IHRoaXMuY3JlYXRlRGF0ZSh0aGlzLmdldFllYXIoZGF0ZSksIHRoaXMuZ2V0TW9udGgoZGF0ZSksIDEpITtcbiAgICByZXR1cm4gKDcgKyB0aGlzLmdldERheU9mV2VlayhmaXJzdE9mTW9udGgpIC0gdGhpcy5nZXRGaXJzdERheU9mV2VlaygpKSAlIDc7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZXMgdHdvIGRhdGVzLlxuICAgKiBAcGFyYW0gZmlyc3QgVGhlIGZpcnN0IGRhdGUgdG8gY29tcGFyZS5cbiAgICogQHBhcmFtIHNlY29uZCBUaGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZS5cbiAgICogQHJldHVybnMgMCBpZiB0aGUgZGF0ZXMgYXJlIGVxdWFsLCBhIG51bWJlciBsZXNzIHRoYW4gMCBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBlYXJsaWVyLFxuICAgKiAgICAgYSBudW1iZXIgZ3JlYXRlciB0aGFuIDAgaWYgdGhlIGZpcnN0IGRhdGUgaXMgbGF0ZXIuXG4gICAqL1xuICBwdWJsaWMgY29tcGFyZURhdGUoZmlyc3Q6IFQsIHNlY29uZDogVCk6IG51bWJlciB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZ2V0WWVhcihmaXJzdCkgLSB0aGlzLmdldFllYXIoc2Vjb25kKSB8fFxuICAgICAgdGhpcy5nZXRNb250aChmaXJzdCkgLSB0aGlzLmdldE1vbnRoKHNlY29uZCkgfHxcbiAgICAgIHRoaXMuZ2V0RGF0ZShmaXJzdCkgLSB0aGlzLmdldERhdGUoc2Vjb25kKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHR3byBkYXRlcyBhcmUgZXF1YWwuXG4gICAqIEBwYXJhbSBmaXJzdCBUaGUgZmlyc3QgZGF0ZSB0byBjaGVjay5cbiAgICogQHBhcmFtIHNlY29uZCBUaGUgc2Vjb25kIGRhdGUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHR3byBkYXRlcyBhcmUgZXF1YWwuXG4gICAqICAgICBOdWxsIGRhdGVzIGFyZSBjb25zaWRlcmVkIGVxdWFsIHRvIG90aGVyIG51bGwgZGF0ZXMuXG4gICAqL1xuICBwdWJsaWMgc2FtZURhdGUoZmlyc3Q6IFQgfCBudWxsLCBzZWNvbmQ6IFQgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKGZpcnN0ICYmIHNlY29uZCkge1xuICAgICAgY29uc3QgZmlyc3RWYWxpZCA9IHRoaXMuaXNWYWxpZChmaXJzdCk7XG4gICAgICBjb25zdCBzZWNvbmRWYWxpZCA9IHRoaXMuaXNWYWxpZChzZWNvbmQpO1xuICAgICAgaWYgKGZpcnN0VmFsaWQgJiYgc2Vjb25kVmFsaWQpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmNvbXBhcmVEYXRlKGZpcnN0LCBzZWNvbmQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpcnN0VmFsaWQgPT0gc2Vjb25kVmFsaWQ7XG4gICAgfVxuICAgIHJldHVybiBmaXJzdCA9PSBzZWNvbmQ7XG4gIH1cblxuICAvKipcbiAgICogQ2xhbXAgdGhlIGdpdmVuIGRhdGUgYmV0d2VlbiBtaW4gYW5kIG1heCBkYXRlcy5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY2xhbXAuXG4gICAqIEBwYXJhbSBtaW4gVGhlIG1pbmltdW0gdmFsdWUgdG8gYWxsb3cuIElmIG51bGwgb3Igb21pdHRlZCBubyBtaW4gaXMgZW5mb3JjZWQuXG4gICAqIEBwYXJhbSBtYXggVGhlIG1heGltdW0gdmFsdWUgdG8gYWxsb3cuIElmIG51bGwgb3Igb21pdHRlZCBubyBtYXggaXMgZW5mb3JjZWQuXG4gICAqIEByZXR1cm5zIGBtaW5gIGlmIGBkYXRlYCBpcyBsZXNzIHRoYW4gYG1pbmAsIGBtYXhgIGlmIGRhdGUgaXMgZ3JlYXRlciB0aGFuIGBtYXhgLFxuICAgKiAgICAgb3RoZXJ3aXNlIGBkYXRlYC5cbiAgICovXG4gIHB1YmxpYyBjbGFtcERhdGUoZGF0ZTogVCwgbWluPzogVCB8IG51bGwsIG1heD86IFQgfCBudWxsKTogVCB7XG4gICAgaWYgKG1pbiAmJiB0aGlzLmNvbXBhcmVEYXRlKGRhdGUsIG1pbikgPCAwKSB7XG4gICAgICByZXR1cm4gbWluO1xuICAgIH1cbiAgICBpZiAobWF4ICYmIHRoaXMuY29tcGFyZURhdGUoZGF0ZSwgbWF4KSA+IDApIHtcbiAgICAgIHJldHVybiBtYXg7XG4gICAgfVxuICAgIHJldHVybiBkYXRlO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFhLGNBQ1g7QUFDRixJQUFhLHNCQUFzQjtBQUNuQyxJQUFhLFNBQVM7QUFDdEIsSUFBYSxVQUFVO0FBQ3ZCLElBQWEsWUFBWTtBQUN6QixJQUFhLFdBQVc7QUFDeEIsSUFBYSxTQUFTO0FBQ3RCLElBQWEsV0FBVztBQUN4QixJQUFhLFNBQVM7QUFHdEIsSUFBYSxlQUF1QjtBQUNwQyxJQUFhLGlCQUF5QjtBQUN0QyxJQUFhLGdCQUF3QjtBQUNyQyxJQUFhLGtCQUEwQjtBQUN2QyxJQUFhLGlCQUF5Qjs7Ozs7O0FBT3RDLElBQXNCLGNBQXRCLE1BQWlDOzs7Ozs7O0NBUy9CLFlBQW1CLG1CQUEyQixJQUFFO0FBQzlDLE9BQUssb0JBQW9COzs7Ozs7Ozs7O0NBbUZwQixZQUFZLE9BQW9DO0FBQ3JELE1BQ0UsU0FBUyxRQUNSLEtBQUssZUFBZSxNQUFNLElBQUksS0FBSyxRQUFRLE1BQThCLENBRTFFLFFBQU87QUFFVCxTQUFPLEtBQUssU0FBUzs7Ozs7O0NBcUNoQixNQUFNLE9BQWdDO0FBQzNDLE1BQUksQ0FBQyxNQUNILFFBQU87RUFHVCxJQUFJLE9BQWlCO0VBQ3JCLE1BQU0sV0FBVyxNQUFNLE1BQU0sb0JBQW9CO0FBQ2pELE1BQUk7QUFDRixVQUFPLFdBQVcsS0FBSyxXQUFXLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUc7VUFDeEU7QUFHUixNQUFJLEtBQUssUUFBUSxLQUFLLENBQ3BCLFFBQU87RUFLVCxNQUFNLFFBRmdCLE1BQU0sUUFBUSxPQUFPLElBQUksQ0FBQyxNQUFNLEVBRVksTUFBTSxZQUFZO0FBQ3BGLE1BQ0UsQ0FBQyxTQUNE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
151
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1hZGFwdGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RhdGV0aW1lL2RhdGUtYWRhcHRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRk9STUFUX0RBVEUgPVxuICAvKDA/WzEtOV18WzEyXVswLTldfDNbMDFdKVsuLFxcXFwvXFwtXFxzXSgwP1sxLTldfDFbMC0yXSlbLixcXFxcL1xcLVxcc10oWzAtOV17MSw0fSQpPy87XG5leHBvcnQgY29uc3QgSVNPODYwMV9GT1JNQVRfREFURSA9IC9eKFswLTldezR9KS0oMFsxLTldfDFbMC0yXSktKDBbMS05XXxbMS0zXVswLTldKSQvO1xuZXhwb3J0IGNvbnN0IE1PTkRBWSA9IDE7XG5leHBvcnQgY29uc3QgVFVFU0RBWSA9IDI7XG5leHBvcnQgY29uc3QgV0VETkVTREFZID0gMztcbmV4cG9ydCBjb25zdCBUSFVSU0RBWSA9IDQ7XG5leHBvcnQgY29uc3QgRlJJREFZID0gNTtcbmV4cG9ydCBjb25zdCBTQVRVUkRBWSA9IDY7XG5leHBvcnQgY29uc3QgU1VOREFZID0gMDtcblxuLy8gVE9ETyhicmVha2luZy1jaGFuZ2UpOiBNb3ZlIHRoZXNlIHZhcmlhYmxlcyB0byBjYWxlbmRhclxuZXhwb3J0IGNvbnN0IERBWVNfUEVSX1JPVzogbnVtYmVyID0gNztcbmV4cG9ydCBjb25zdCBNT05USFNfUEVSX1JPVzogbnVtYmVyID0gNDtcbmV4cG9ydCBjb25zdCBZRUFSU19QRVJfUk9XOiBudW1iZXIgPSA0O1xuZXhwb3J0IGNvbnN0IE1PTlRIU19QRVJfUEFHRTogbnVtYmVyID0gMTI7XG5leHBvcnQgY29uc3QgWUVBUlNfUEVSX1BBR0U6IG51bWJlciA9IDI0O1xuXG4vKipcbiAqIEFic3RyYWN0IGRhdGUgZnVuY3Rpb25hbGl0eS5cbiAqXG4gKiBBZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9ibG9iL21haW4vc3JjL21hdGVyaWFsL2NvcmUvZGF0ZXRpbWUvZGF0ZS1hZGFwdGVyLnRzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYXRlQWRhcHRlcjxUID0gYW55PiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1dG9mZlllYXJPZmZzZXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQHBhcmFtIGN1dG9mZlllYXJPZmZzZXQgVGhlIHRocmVzaG9sZCBvbiB3aGV0aGVyIGEgdHdvLWRpZ2l0IHllYXJcbiAgICogc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYmVsb25naW5nIHRvIDIwMDAgb3IgMTkwMC4gZS5nLiB3aXRoIDE1IChkZWZhdWx0KVxuICAgKiB0aGUgY3VycmVudCB5ZWFyIHBsdXMgMTUgd2lsbCBiZSB0cmVhdGVkIGFzIGJlbG9uZ2luZyB0byAyMDAwLCBhbmQgdGhlIHJlc3QgdG8gMTkwMC5cbiAgICogU28gZS5nLiB3aXRoIHRoZSBjdXJyZW50IHllYXIgMjAyNSwgNDAgd2lsbCBiZSB0cmVhdGVkIGFzIDIwNDAsIHdoaWxlIDQxIHdpbGwgYmUgdHJlYXRlZCBhcyAxOTQxLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGN1dG9mZlllYXJPZmZzZXQ6IG51bWJlciA9IDE1KSB7XG4gICAgdGhpcy5fY3V0b2ZmWWVhck9mZnNldCA9IGN1dG9mZlllYXJPZmZzZXQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB5ZWFyIGFzIGEgbnVtYmVyLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldFllYXIoZGF0ZTogVCk6IG51bWJlcjtcblxuICAvKipcbiAgICogR2V0IHRoZSBtb250aCBhcyBhIG51bWJlci5cbiAgICogQXR0ZW50aW9uOiBUaGlzIHJldHVybnMgMS0xMiBhbmQgbWl0aWdhdGVzIHRoZSBkZWZhdWx0IEphdmFTY3JpcHQgRGF0ZSBiZWhhdmlvci5cbiAgICogQHBhcmFtIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRNb250aChkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRheSBvZiB0aGUgbW9udGggYXMgYSBudW1iZXIuXG4gICAqIEBwYXJhbSBkYXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0RGF0ZShkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIERheSBvZiB0aGUgd2VlayBhcyBhIG51bWJlci5cbiAgICogQHBhcmFtIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXlPZldlZWsoZGF0ZTogVCk6IG51bWJlcjtcblxuICAvKiogR2V0IHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDA6IHN1bmRheTsgMTogbW9uZGF5OyBldGMuKS4gKi9cbiAgcHVibGljIGFic3RyYWN0IGdldEZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlcjtcblxuICAvKipcbiAgICogR2V0IHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIG1vbnRoLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldE51bURheXNJbk1vbnRoKGRhdGU6IFQpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSBtb250aHMgaW4gYSBnaXZlbiBzdHlsZS5cbiAgICogQHBhcmFtIHN0eWxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW107XG5cbiAgLyoqIEdldCBhIHN0cmluZyBhcnJheSB3aXRoIGxlbmd0aCA9IDMxLCBmaWxsZWQgd2l0aCB0aGUgZGF5cyBpbiBhIG1vbnRoLCBzdGFydGluZyBmcm9tIDEuICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXRlTmFtZXMoKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSB3ZWVrIGRheXMgaW4gYSBnaXZlbiBzdHlsZS5cbiAgICogQHBhcmFtIHN0eWxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0RGF5T2ZXZWVrTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdO1xuXG4gIC8qKiBDcmVhdGVzIHRvZGF5J3MgZGF0ZS4gKi9cbiAgcHVibGljIGFic3RyYWN0IHRvZGF5KCk6IFQ7XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gYGRhdGVgIGlzIHZhbGlkLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGlzVmFsaWQoZGF0ZTogVCB8IG51bGwgfCB1bmRlZmluZWQpOiBkYXRlIGlzIFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBieSBjbG9uaW5nIHRoZSBnaXZlbiBvbmUuXG4gICAqIEBwYXJhbSBkYXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgY2xvbmUoZGF0ZTogVCk6IFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSwgZ2l2ZW4gZGF5LCBtb250aCBhbmQgeWVhcjsgd2l0aG91dCBkYXRlJ3Mgb3ZlcmZsb3cuXG4gICAqIEBwYXJhbSB5ZWFyXG4gICAqIEBwYXJhbSBtb250aCBUaGUgbW9udGggb2YgdGhlIGRhdGUgKDEtaW5kZXhlZCwgMSA9IEphbnVhcnkpLiBNdXN0IGJlIGFuIGludGVnZXIgMSAtIDEyLlxuICAgKiBAcGFyYW0gZGF5XG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgY3JlYXRlRGF0ZSh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyKTogVDtcblxuICAvKipcbiAgICogQXR0ZW1wdHMgdG8gZGVzZXJpYWxpemUgYSB2YWx1ZSB0byBhIHZhbGlkIGRhdGUgb2JqZWN0LiBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHBhcnNpbmcgaW4gdGhhdFxuICAgKiBkZXNlcmlhbGl6ZSBzaG91bGQgb25seSBhY2NlcHQgbm9uLWFtYmlndW91cywgbG9jYWxlLWluZGVwZW5kZW50IGZvcm1hdHMgKGUuZy4gYSBJU08gODYwMVxuICAgKiBzdHJpbmcpLiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBhbGxvdyBhbnkgZGVzZXJpYWxpemF0aW9uLCBpdCBzaW1wbHkgY2hlY2tzIHRoYXRcbiAgICogdGhlIGdpdmVuIHZhbHVlIGlzIGFscmVhZHkgYSB2YWxpZCBkYXRlIG9iamVjdCBvciBudWxsLlxuICAgKiBAcGFyYW0gdmFsdWUgRWl0aGVyIGEgZGF0ZSBvYmplY3QsIElTTyBzdHJpbmcgb3IgYW4gZW1wdHkgdmFsdWUuXG4gICAqIEByZXR1cm5zIFRoZSBkYXRlIGlmIHRoZSBpbnB1dCBpcyB2YWxpZCwgYG51bGxgIG90aGVyd2lzZS5cbiAgICovXG4gIHB1YmxpYyBkZXNlcmlhbGl6ZSh2YWx1ZTogVCB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBUIHwgbnVsbCB7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgPT0gbnVsbCB8fFxuICAgICAgKHRoaXMuaXNEYXRlSW5zdGFuY2UodmFsdWUpICYmIHRoaXMuaXNWYWxpZCh2YWx1ZSBhcyBUIHwgbnVsbCB8IHVuZGVmaW5lZCkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdmFsdWUgYXMgVCB8IG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmludmFsaWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGRhdGUgYWRkaW5nIHRoZSBudW1iZXIgb2YgcHJvdmlkZWQgYHllYXJzYCB0byB0aGUgcHJvdmlkZWQgYGRhdGVgLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZS5cbiAgICogQHBhcmFtIHllYXJzIFRoZSBudW1iZXIgb2YgeWVhcnMgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGFkZENhbGVuZGFyWWVhcnMoZGF0ZTogVCwgeWVhcnM6IG51bWJlcik6IFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgbW9udGhzYCB0byB0aGUgcHJvdmlkZWQgYGRhdGVgLlxuICAgKiBJZiB0aGUgY2FsY3VsYXRlZCBtb250aCBoYXMgZmV3ZXIgZGF5cyB0aGFuIHRoZSBvcmlnaW5hbCBvbmUsIHRoZSBkYXRlIGlzIHNldCB0byB0aGUgbGFzdCBkYXkgb2YgdGhlIG1vbnRoLlxuICAgKiBFLmcuIHdpdGggYGRhdGVgID0gbmV3IERhdGUoMjAyMiwgMCwgMzEpIGFuZCBgbW9udGhzYCA9IDEsIGl0IHJldHVybnMgbmV3IERhdGUoMjAyMiwgMSwgMjgpLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZS5cbiAgICogQHBhcmFtIG1vbnRocyBUaGUgbnVtYmVyIG9mIG1vbnRocyB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYWRkQ2FsZW5kYXJNb250aHMoZGF0ZTogVCwgbW9udGhzOiBudW1iZXIpOiBUO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGRhdGUgYnkgYWRkaW5nIHRoZSBudW1iZXIgb2YgcHJvdmlkZWQgYGRheXNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlLlxuICAgKiBAcGFyYW0gZGF5cyBUaGUgbnVtYmVyIG9mIGRheXMgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGFkZENhbGVuZGFyRGF5cyhkYXRlOiBULCBkYXlzOiBudW1iZXIpOiBUO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRhdGUgaW4gdGhlIGxvY2FsIGZvcm1hdC5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZm9ybWF0XG4gICAqIEByZXR1cm5zIFRoZSBgZGF0ZWAgaW4gdGhlIGxvY2FsIGZvcm1hdCBhcyBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0QWNjZXNzaWJpbGl0eUZvcm1hdERhdGUoZGF0ZTogVCB8IHN0cmluZyk6IHN0cmluZztcblxuICAvKipcbiAgICogR2V0IHRoZSBnaXZlbiBzdHJpbmcgYXMgRGF0ZS5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSBkYXRlIGluIHRoZSBmb3JtYXQgREQuTU0uWVlZWS5cbiAgICovXG4gIHB1YmxpYyBwYXJzZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFQgfCBudWxsIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgZGF0ZTogVCB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGlzb01hdGNoID0gdmFsdWUubWF0Y2goSVNPODYwMV9GT1JNQVRfREFURSk7XG4gICAgdHJ5IHtcbiAgICAgIGRhdGUgPSBpc29NYXRjaCA/IHRoaXMuY3JlYXRlRGF0ZSgraXNvTWF0Y2hbMV0sICtpc29NYXRjaFsyXSwgK2lzb01hdGNoWzNdKSA6IG51bGw7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBlbXB0eSAqL1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1ZhbGlkKGRhdGUpKSB7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICBjb25zdCBzdHJpcHBlZFZhbHVlID0gdmFsdWUucmVwbGFjZSgvXFxEL2csICcgJykudHJpbSgpO1xuXG4gICAgY29uc3QgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsIHwgdW5kZWZpbmVkID0gc3RyaXBwZWRWYWx1ZT8ubWF0Y2goRk9STUFUX0RBVEUpO1xuICAgIGlmIChcbiAgICAgICFtYXRjaCB8fFxuICAgICAgbWF0Y2guaW5kZXggIT09IDAgfHxcbiAgICAgIG1hdGNoLmxlbmd0aCA8PSAyIHx8XG4gICAgICBtYXRjaC5zb21lKChlKSA9PiBlID09PSB1bmRlZmluZWQpIHx8XG4gICAgICAhdGhpcy5pc1ZhbGlkKHRoaXMuY3JlYXRlRGF0ZSgrbWF0Y2hbM10sICttYXRjaFsyXSwgK21hdGNoWzFdKSlcbiAgICApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCB5ZWFyID0gK21hdGNoWzNdO1xuXG4gICAgaWYgKHR5cGVvZiB5ZWFyID09PSAnbnVtYmVyJyAmJiB5ZWFyIDwgMTAwICYmIHllYXIgPj0gMCkge1xuICAgICAgY29uc3Qgc2hpZnQgPSB0aGlzLmdldFllYXIodGhpcy50b2RheSgpKSAtIDIwMDAgKyB0aGlzLl9jdXRvZmZZZWFyT2Zmc2V0O1xuICAgICAgeWVhciA9IHllYXIgPD0gc2hpZnQgPyAyMDAwICsgeWVhciA6IDE5MDAgKyB5ZWFyO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZURhdGUoeWVhciwgK21hdGNoWzJdLCArbWF0Y2hbMV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCB0aGUgZ2l2ZW4gZGF0ZSBhcyBzdHJpbmcuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGZvcm1hdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgb3B0aW9ucyBvYmplY3Qgd2l0aCB3ZWVrZGF5U3R5bGUgYXMgcHJvcGVydHlcbiAgICovXG4gIHB1YmxpYyBmb3JtYXQoXG4gICAgZGF0ZTogVCB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgb3B0aW9ucz86IHsgd2Vla2RheVN0eWxlPzogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnIHwgJ25vbmUnIH0sXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IG5ldyBEYXRlKHRoaXMudG9Jc284NjAxKGRhdGUhKSArICdUMDA6MDA6MDAnKTtcbiAgICBjb25zdCBkYXRlRm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2RlLUNIJywge1xuICAgICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgICBtb250aDogJzItZGlnaXQnLFxuICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnM/LndlZWtkYXlTdHlsZSA9PT0gJ25vbmUnKSB7XG4gICAgICByZXR1cm4gZGF0ZUZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xuICAgIH1cblxuICAgIGNvbnN0IHdlZWtkYXlTdHlsZSA9IG9wdGlvbnM/LndlZWtkYXlTdHlsZSA/PyAnc2hvcnQnO1xuICAgIGxldCB3ZWVrZGF5ID0gdGhpcy5nZXREYXlPZldlZWtOYW1lcyh3ZWVrZGF5U3R5bGUpW3RoaXMuZ2V0RGF5T2ZXZWVrKGRhdGUhKV07XG4gICAgd2Vla2RheSA9IHdlZWtkYXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB3ZWVrZGF5LnN1YnN0cmluZygxKTtcbiAgICAvLyBXZSBoYXZlIHRoZSBzcGVjaWFsIHJlcXVpcmVtZW50IGZvciBkYXRlIGZvcm1hdHMgYXQgU0JCLCB3aGVyZSB0aGUgc2hvcnQgZm9ybVxuICAgIC8vIGZvciB3ZWVrZGF5cyBzaG91bGQgYmUgdHdvIGNoYXJhY3RlcnMgaW4gbGVuZ3RoLlxuICAgIGlmICh3ZWVrZGF5U3R5bGUgPT09ICdzaG9ydCcpIHtcbiAgICAgIHdlZWtkYXkgPSB3ZWVrZGF5LnN1YnN0cmluZygwLCAyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7d2Vla2RheX0sICR7ZGF0ZUZvcm1hdHRlci5mb3JtYXQodmFsdWUpfWA7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGBvYmpgIGlzIGEgRGF0ZS5cbiAgICogQHBhcmFtIG9iaiBUaGUgb2JqZWN0IHRvIGNoZWNrLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGlzRGF0ZUluc3RhbmNlKG9iajogYW55KTogYm9vbGVhbjtcblxuICAvKipcbiAgICogR2V0cyBkYXRlIGluc3RhbmNlIHRoYXQgaXMgbm90IHZhbGlkLlxuICAgKiBAcmV0dXJucyBBbiBpbnZhbGlkIGRhdGUuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaW52YWxpZCgpOiBUO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGdpdmVuIGRhdGUgYXMgSVNPIFN0cmluZy5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY29udmVydCB0byBJU08gU3RyaW5nLlxuICAgKi9cbiAgcHVibGljIHRvSXNvODYwMShkYXRlOiBUKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYWQgPSAodmFsdWU6IG51bWJlciwgbGVuZ3RoID0gMik6IHN0cmluZyA9PiBgJHt2YWx1ZX1gLnBhZFN0YXJ0KGxlbmd0aCwgJzAnKTtcbiAgICByZXR1cm4gYCR7cGFkKHRoaXMuZ2V0WWVhcihkYXRlKSwgNCl9LSR7cGFkKHRoaXMuZ2V0TW9udGgoZGF0ZSkpfS0ke3BhZCh0aGlzLmdldERhdGUoZGF0ZSkpfWA7XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gYSBwb3RlbnRpYWwgZGF0ZSBvYmplY3QsIHJldHVybnMgdGhhdCBzYW1lIGRhdGUgb2JqZWN0IGlmIGl0IGlzXG4gICAqIGEgdmFsaWQgZGF0ZSwgb3IgYG51bGxgIGlmIGl0J3Mgbm90IGEgdmFsaWQgZGF0ZS5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSBvYmplY3QgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIEEgZGF0ZSBvciBgbnVsbGAuXG4gICAqL1xuICBwdWJsaWMgZ2V0VmFsaWREYXRlT3JOdWxsKHZhbHVlOiB1bmtub3duKTogVCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmlzRGF0ZUluc3RhbmNlKHZhbHVlKSAmJiB0aGlzLmlzVmFsaWQodmFsdWUgYXMgVCkgPyAodmFsdWUgYXMgVCkgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIGRheSBvZiB0aGUgd2VlayBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aCwgYW5kIHRoZW4gaXRzIG9mZnNldCBmcm9tIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAqL1xuICBwdWJsaWMgZ2V0Rmlyc3RXZWVrT2Zmc2V0KGRhdGU6IFQpOiBudW1iZXIge1xuICAgIGNvbnN0IGZpcnN0T2ZNb250aCA9IHRoaXMuY3JlYXRlRGF0ZSh0aGlzLmdldFllYXIoZGF0ZSksIHRoaXMuZ2V0TW9udGgoZGF0ZSksIDEpITtcbiAgICByZXR1cm4gKDcgKyB0aGlzLmdldERheU9mV2VlayhmaXJzdE9mTW9udGgpIC0gdGhpcy5nZXRGaXJzdERheU9mV2VlaygpKSAlIDc7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZXMgdHdvIGRhdGVzLlxuICAgKiBAcGFyYW0gZmlyc3QgVGhlIGZpcnN0IGRhdGUgdG8gY29tcGFyZS5cbiAgICogQHBhcmFtIHNlY29uZCBUaGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZS5cbiAgICogQHJldHVybnMgMCBpZiB0aGUgZGF0ZXMgYXJlIGVxdWFsLCBhIG51bWJlciBsZXNzIHRoYW4gMCBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBlYXJsaWVyLFxuICAgKiAgICAgYSBudW1iZXIgZ3JlYXRlciB0aGFuIDAgaWYgdGhlIGZpcnN0IGRhdGUgaXMgbGF0ZXIuXG4gICAqL1xuICBwdWJsaWMgY29tcGFyZURhdGUoZmlyc3Q6IFQsIHNlY29uZDogVCk6IG51bWJlciB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZ2V0WWVhcihmaXJzdCkgLSB0aGlzLmdldFllYXIoc2Vjb25kKSB8fFxuICAgICAgdGhpcy5nZXRNb250aChmaXJzdCkgLSB0aGlzLmdldE1vbnRoKHNlY29uZCkgfHxcbiAgICAgIHRoaXMuZ2V0RGF0ZShmaXJzdCkgLSB0aGlzLmdldERhdGUoc2Vjb25kKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHR3byBkYXRlcyBhcmUgZXF1YWwuXG4gICAqIEBwYXJhbSBmaXJzdCBUaGUgZmlyc3QgZGF0ZSB0byBjaGVjay5cbiAgICogQHBhcmFtIHNlY29uZCBUaGUgc2Vjb25kIGRhdGUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHR3byBkYXRlcyBhcmUgZXF1YWwuXG4gICAqICAgICBOdWxsIGRhdGVzIGFyZSBjb25zaWRlcmVkIGVxdWFsIHRvIG90aGVyIG51bGwgZGF0ZXMuXG4gICAqL1xuICBwdWJsaWMgc2FtZURhdGUoZmlyc3Q6IFQgfCBudWxsLCBzZWNvbmQ6IFQgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKGZpcnN0ICYmIHNlY29uZCkge1xuICAgICAgY29uc3QgZmlyc3RWYWxpZCA9IHRoaXMuaXNWYWxpZChmaXJzdCk7XG4gICAgICBjb25zdCBzZWNvbmRWYWxpZCA9IHRoaXMuaXNWYWxpZChzZWNvbmQpO1xuICAgICAgaWYgKGZpcnN0VmFsaWQgJiYgc2Vjb25kVmFsaWQpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmNvbXBhcmVEYXRlKGZpcnN0LCBzZWNvbmQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpcnN0VmFsaWQgPT0gc2Vjb25kVmFsaWQ7XG4gICAgfVxuICAgIHJldHVybiBmaXJzdCA9PSBzZWNvbmQ7XG4gIH1cblxuICAvKipcbiAgICogQ2xhbXAgdGhlIGdpdmVuIGRhdGUgYmV0d2VlbiBtaW4gYW5kIG1heCBkYXRlcy5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY2xhbXAuXG4gICAqIEBwYXJhbSBtaW4gVGhlIG1pbmltdW0gdmFsdWUgdG8gYWxsb3cuIElmIG51bGwgb3Igb21pdHRlZCBubyBtaW4gaXMgZW5mb3JjZWQuXG4gICAqIEBwYXJhbSBtYXggVGhlIG1heGltdW0gdmFsdWUgdG8gYWxsb3cuIElmIG51bGwgb3Igb21pdHRlZCBubyBtYXggaXMgZW5mb3JjZWQuXG4gICAqIEByZXR1cm5zIGBtaW5gIGlmIGBkYXRlYCBpcyBsZXNzIHRoYW4gYG1pbmAsIGBtYXhgIGlmIGRhdGUgaXMgZ3JlYXRlciB0aGFuIGBtYXhgLFxuICAgKiAgICAgb3RoZXJ3aXNlIGBkYXRlYC5cbiAgICovXG4gIHB1YmxpYyBjbGFtcERhdGUoZGF0ZTogVCwgbWluPzogVCB8IG51bGwsIG1heD86IFQgfCBudWxsKTogVCB7XG4gICAgaWYgKG1pbiAmJiB0aGlzLmNvbXBhcmVEYXRlKGRhdGUsIG1pbikgPCAwKSB7XG4gICAgICByZXR1cm4gbWluO1xuICAgIH1cbiAgICBpZiAobWF4ICYmIHRoaXMuY29tcGFyZURhdGUoZGF0ZSwgbWF4KSA+IDApIHtcbiAgICAgIHJldHVybiBtYXg7XG4gICAgfVxuICAgIHJldHVybiBkYXRlO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFhLGNBQ1g7QUFDRixJQUFhLHNCQUFzQjtBQUNuQyxJQUFhLFNBQVM7QUFDdEIsSUFBYSxVQUFVO0FBQ3ZCLElBQWEsWUFBWTtBQUN6QixJQUFhLFdBQVc7QUFDeEIsSUFBYSxTQUFTO0FBQ3RCLElBQWEsV0FBVztBQUN4QixJQUFhLFNBQVM7QUFHdEIsSUFBYSxlQUF1QjtBQUNwQyxJQUFhLGlCQUF5QjtBQUN0QyxJQUFhLGdCQUF3QjtBQUNyQyxJQUFhLGtCQUEwQjtBQUN2QyxJQUFhLGlCQUF5Qjs7Ozs7O0FBT3RDLElBQXNCLGNBQXRCLE1BQWlDOzs7Ozs7O0NBUy9CLFlBQW1CLG1CQUEyQixJQUFFO0FBQzlDLE9BQUssb0JBQW9COzs7Ozs7Ozs7O0NBbUZwQixZQUFZLE9BQW9DO0FBQ3JELE1BQ0UsU0FBUyxRQUNSLEtBQUssZUFBZSxNQUFNLElBQUksS0FBSyxRQUFRLE1BQThCLENBRTFFLFFBQU87QUFFVCxTQUFPLEtBQUssU0FBUzs7Ozs7O0NBcUNoQixNQUFNLE9BQWdDO0FBQzNDLE1BQUksQ0FBQyxNQUNILFFBQU87RUFHVCxJQUFJLE9BQWlCO0VBQ3JCLE1BQU0sV0FBVyxNQUFNLE1BQU0sb0JBQW9CO0FBQ2pELE1BQUk7QUFDRixVQUFPLFdBQVcsS0FBSyxXQUFXLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUc7VUFDeEU7QUFHUixNQUFJLEtBQUssUUFBUSxLQUFLLENBQ3BCLFFBQU87RUFLVCxNQUFNLFFBRmdCLE1BQU0sUUFBUSxPQUFPLElBQUksQ0FBQyxNQUVHLEVBQWUsTUFBTSxZQUFZO0FBQ3BGLE1BQ0UsQ0FBQyxTQUNELE1BQU0sVUFBVSxLQUNoQixNQUFNLFVBQVUsS0FDaEIsTUFBTSxNQUFNLE1BQU0sTUFBTSxLQUFBLEVBQVUsSUFDbEMsQ0FBQyxLQUFLLFFBQVEsS0FBSyxXQUFXLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FFL0QsUUFBTztFQUdULElBQUksT0FBTyxDQUFDLE1BQU07QUFFbEIsTUFBSSxPQUFPLFNBQVMsWUFBWSxPQUFPLE9BQU8sUUFBUSxHQUFHO0dBQ3ZELE1BQU0sUUFBUSxLQUFLLFFBQVEsS0FBSyxPQUFPLENBQUMsR0FBRyxNQUFPLEtBQUs7QUFDdkQsVUFBTyxRQUFRLFFBQVEsTUFBTyxPQUFPLE9BQU87O0FBRzlDLFNBQU8sS0FBSyxXQUFXLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLEdBQUc7Ozs7Ozs7Q0FRN0MsT0FDTCxNQUNBLFNBQWlFO0FBRWpFLE1BQUksQ0FBQyxLQUFLLFFBQVEsS0FBSyxDQUNyQixRQUFPO0VBR1QsTUFBTSx3QkFBUSxJQUFJLEtBQUssS0FBSyxVQUFVLEtBQU0sR0FBRyxZQUFZO0VBQzNELE1BQU0sZ0JBQWdCLElBQUksS0FBSyxlQUFlLFNBQVM7R0FDckQsS0FBSztHQUNMLE9BQU87R0FDUCxNQUFNO0dBQ1AsQ0FBQztBQUVGLE1BQUksU0FBUyxpQkFBaUIsT0FDNUIsUUFBTyxjQUFjLE9BQU8sTUFBTTtFQUdwQyxNQUFNLGVBQWUsU0FBUyxnQkFBZ0I7RUFDOUMsSUFBSSxVQUFVLEtBQUssa0JBQWtCLGFBQWEsQ0FBQyxLQUFLLGFBQWEsS0FBTTtBQUMzRSxZQUFVLFFBQVEsT0FBTyxFQUFFLENBQUMsYUFBYSxHQUFHLFFBQVEsVUFBVSxFQUFFO0FBR2hFLE1BQUksaUJBQWlCLFFBQ25CLFdBQVUsUUFBUSxVQUFVLEdBQUcsRUFBRTtBQUduQyxTQUFPLEdBQUcsUUFBTyxJQUFLLGNBQWMsT0FBTyxNQUFNOzs7Ozs7Q0FtQjVDLFVBQVUsTUFBTztFQUN0QixNQUFNLE9BQU8sT0FBZSxTQUFTLE1BQWMsR0FBRyxRQUFRLFNBQVMsUUFBUSxJQUFJO0FBQ25GLFNBQU8sR0FBRyxJQUFJLEtBQUssUUFBUSxLQUFLLEVBQUUsRUFBRSxDQUFBLEdBQUksSUFBSSxLQUFLLFNBQVMsS0FBSyxDQUFDLENBQUEsR0FBSSxJQUFJLEtBQUssUUFBUSxLQUFLLENBQUM7Ozs7Ozs7O0NBU3RGLG1CQUFtQixPQUFjO0FBQ3RDLFNBQU8sS0FBSyxlQUFlLE1BQU0sSUFBSSxLQUFLLFFBQVEsTUFBVyxHQUFJLFFBQWM7Ozs7O0NBTTFFLG1CQUFtQixNQUFPO0VBQy9CLE1BQU0sZUFBZSxLQUFLLFdBQVcsS0FBSyxRQUFRLEtBQUssRUFBRSxLQUFLLFNBQVMsS0FBSyxFQUFFLEVBQUc7QUFDakYsVUFBUSxJQUFJLEtBQUssYUFBYSxhQUFhLEdBQUcsS0FBSyxtQkFBbUIsSUFBSTs7Ozs7Ozs7O0NBVXJFLFlBQVksT0FBVSxRQUFTO0FBQ3BDLFNBQ0UsS0FBSyxRQUFRLE1BQU0sR0FBRyxLQUFLLFFBQVEsT0FBTyxJQUMxQyxLQUFLLFNBQVMsTUFBTSxHQUFHLEtBQUssU0FBUyxPQUFPLElBQzVDLEtBQUssUUFBUSxNQUFNLEdBQUcsS0FBSyxRQUFRLE9BQU87Ozs7Ozs7OztDQVd2QyxTQUFTLE9BQWlCLFFBQWdCO0FBQy9DLE1BQUksU0FBUyxRQUFRO0dBQ25CLE1BQU0sYUFBYSxLQUFLLFFBQVEsTUFBTTtHQUN0QyxNQUFNLGNBQWMsS0FBSyxRQUFRLE9BQU87QUFDeEMsT0FBSSxjQUFjLFlBQ2hCLFFBQU8sQ0FBQyxLQUFLLFlBQVksT0FBTyxPQUFPO0FBRXpDLFVBQU8sY0FBYzs7QUFFdkIsU0FBTyxTQUFTOzs7Ozs7Ozs7O0NBV1gsVUFBVSxNQUFTLEtBQWdCLEtBQWM7QUFDdEQsTUFBSSxPQUFPLEtBQUssWUFBWSxNQUFNLElBQUksR0FBRyxFQUN2QyxRQUFPO0FBRVQsTUFBSSxPQUFPLEtBQUssWUFBWSxNQUFNLElBQUksR0FBRyxFQUN2QyxRQUFPO0FBRVQsU0FBTyJ9