@eui/components 18.2.15 → 18.2.16-snapshot-1756456305763

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 (521) hide show
  1. package/docs/changelog.html +6401 -0
  2. package/docs/classes/BreadCrumbItem.html +3 -3
  3. package/docs/classes/CdkDragMock.html +3 -3
  4. package/docs/classes/CdkDropListMock.html +3 -3
  5. package/docs/classes/CustomNodeSelectFnHelper.html +3 -3
  6. package/docs/classes/EuiAppShellServiceMock.html +3 -3
  7. package/docs/classes/EuiChip.html +3 -3
  8. package/docs/classes/EuiChipTooltip.html +3 -3
  9. package/docs/classes/EuiDialogComponentInstances.html +3 -3
  10. package/docs/classes/EuiDialogConfig.html +3 -3
  11. package/docs/classes/EuiMessageBoxComponentInstances.html +3 -3
  12. package/docs/classes/EuiMessageBoxConfig.html +3 -3
  13. package/docs/classes/EuiTimebarItemUI.html +3 -3
  14. package/docs/classes/EuiTooltipConfig.html +3 -3
  15. package/docs/classes/EuiTreeHelper.html +3 -3
  16. package/docs/classes/EuiTreePagination.html +3 -3
  17. package/docs/classes/EuiWizardStep.html +3 -3
  18. package/docs/classes/HTMLCollection.html +3 -3
  19. package/docs/classes/MultisortParam.html +3 -3
  20. package/docs/classes/OpenedDialog.html +3 -3
  21. package/docs/classes/RouterMock.html +3 -3
  22. package/docs/classes/SmoothScroll.html +3 -3
  23. package/docs/classes/TranslateServiceMock-1.html +3 -3
  24. package/docs/classes/TranslateServiceMock.html +3 -3
  25. package/docs/classes/UxAutocompleteTagDragServiceMock.html +3 -3
  26. package/docs/components/ChartComponent.html +3 -3
  27. package/docs/components/DefaultComponent-1.html +3 -3
  28. package/docs/components/DefaultComponent.html +3 -3
  29. package/docs/components/EuiAccordionComponent.html +3 -3
  30. package/docs/components/EuiAccordionItemComponent.html +3 -3
  31. package/docs/components/EuiAlertComponent.html +3 -3
  32. package/docs/components/EuiAlertTitleComponent.html +3 -3
  33. package/docs/components/EuiAppBreadcrumbComponent.html +3 -3
  34. package/docs/components/EuiAppComponent.html +3 -3
  35. package/docs/components/EuiAppFooterComponent.html +3 -3
  36. package/docs/components/EuiAppHeaderComponent.html +3 -3
  37. package/docs/components/EuiAppSidebarBodyComponent.html +3 -3
  38. package/docs/components/EuiAppSidebarComponent.html +3 -3
  39. package/docs/components/EuiAppSidebarDrawerComponent.html +3 -3
  40. package/docs/components/EuiAppSidebarFooterComponent.html +3 -3
  41. package/docs/components/EuiAppSidebarHeaderComponent.html +3 -3
  42. package/docs/components/EuiAppSidebarHeaderUserProfileComponent.html +3 -3
  43. package/docs/components/EuiAppSidebarMenuComponent.html +3 -3
  44. package/docs/components/EuiAppToolbarComponent.html +3 -3
  45. package/docs/components/EuiAppTopMessageComponent.html +3 -3
  46. package/docs/components/EuiAutocompleteAsyncTestComponent.html +3 -3
  47. package/docs/components/EuiAutocompleteChipsAsyncTestComponent.html +3 -3
  48. package/docs/components/EuiAutocompleteChipsTestComponent.html +3 -3
  49. package/docs/components/EuiAutocompleteComponent.html +3 -3
  50. package/docs/components/EuiAutocompleteOptionComponent.html +3 -3
  51. package/docs/components/EuiAutocompleteOptionGroupComponent.html +3 -3
  52. package/docs/components/EuiAutocompleteTestComponent.html +3 -3
  53. package/docs/components/EuiAvatarBadgeComponent.html +3 -3
  54. package/docs/components/EuiAvatarComponent.html +3 -3
  55. package/docs/components/EuiAvatarIconComponent.html +3 -3
  56. package/docs/components/EuiAvatarImageComponent.html +3 -3
  57. package/docs/components/EuiAvatarListComponent.html +3 -3
  58. package/docs/components/EuiAvatarTextComponent.html +3 -3
  59. package/docs/components/EuiBadgeComponent.html +3 -3
  60. package/docs/components/EuiBlockContentComponent.html +3 -3
  61. package/docs/components/EuiBlockDocumentComponent.html +3 -3
  62. package/docs/components/EuiBreadcrumbComponent.html +3 -3
  63. package/docs/components/EuiBreadcrumbItemComponent.html +3 -3
  64. package/docs/components/EuiButtonComponent.html +3 -3
  65. package/docs/components/EuiButtonGroupComponent.html +3 -3
  66. package/docs/components/EuiButtonV2Component.html +3 -3
  67. package/docs/components/EuiCardComponent.html +3 -3
  68. package/docs/components/EuiCardContentComponent.html +3 -3
  69. package/docs/components/EuiCardFooterActionButtonsComponent.html +3 -3
  70. package/docs/components/EuiCardFooterActionIconsComponent.html +3 -3
  71. package/docs/components/EuiCardFooterComponent.html +3 -3
  72. package/docs/components/EuiCardFooterMenuComponent.html +3 -3
  73. package/docs/components/EuiCardFooterMenuContentComponent.html +3 -3
  74. package/docs/components/EuiCardHeaderBodyComponent.html +3 -3
  75. package/docs/components/EuiCardHeaderComponent.html +3 -3
  76. package/docs/components/EuiCardHeaderLeftContentComponent.html +3 -3
  77. package/docs/components/EuiCardHeaderRightContentComponent.html +3 -3
  78. package/docs/components/EuiCardHeaderSubtitleComponent.html +3 -3
  79. package/docs/components/EuiCardHeaderTitleComponent.html +3 -3
  80. package/docs/components/EuiCardMediaComponent.html +3 -3
  81. package/docs/components/EuiChipComponent.html +3 -3
  82. package/docs/components/EuiChipListComponent.html +4 -4
  83. package/docs/components/EuiDashboardButtonComponent.html +3 -3
  84. package/docs/components/EuiDashboardCardComponent.html +3 -3
  85. package/docs/components/EuiDashboardCardContentComponent.html +3 -3
  86. package/docs/components/EuiDashboardCardStatusContentComponent.html +3 -3
  87. package/docs/components/EuiDateRangeSelectorComponent.html +3 -3
  88. package/docs/components/EuiDatepickerComponent.html +3 -3
  89. package/docs/components/EuiDialogComponent.html +3 -3
  90. package/docs/components/EuiDialogContainerComponent.html +41 -4
  91. package/docs/components/EuiDimmerComponent.html +3 -3
  92. package/docs/components/EuiDisableContentComponent.html +3 -3
  93. package/docs/components/EuiDiscussionThreadComponent.html +3 -3
  94. package/docs/components/EuiDiscussionThreadItemComponent.html +3 -3
  95. package/docs/components/EuiDropdownComponent.html +4 -4
  96. package/docs/components/EuiDropdownItemComponent.html +78 -5
  97. package/docs/components/EuiEditorComponent.html +3 -3
  98. package/docs/components/EuiEditorCountersComponent.html +3 -3
  99. package/docs/components/EuiEditorHtmlViewComponent.html +3 -3
  100. package/docs/components/EuiEditorImageDialogComponent.html +3 -3
  101. package/docs/components/EuiEditorJsonViewComponent.html +3 -3
  102. package/docs/components/EuiFeedbackMessageComponent.html +3 -3
  103. package/docs/components/EuiFieldsetComponent.html +3 -3
  104. package/docs/components/EuiFilePreviewComponent.html +35 -4
  105. package/docs/components/EuiFileUploadComponent.html +3 -3
  106. package/docs/components/EuiFileUploadProgressComponent.html +3 -3
  107. package/docs/components/EuiFooterComponent.html +3 -3
  108. package/docs/components/EuiGrowlComponent.html +3 -3
  109. package/docs/components/EuiHeaderAppComponent.html +3 -3
  110. package/docs/components/EuiHeaderAppNameComponent.html +3 -3
  111. package/docs/components/EuiHeaderAppNameLogoComponent.html +3 -3
  112. package/docs/components/EuiHeaderAppSubtitleComponent.html +3 -3
  113. package/docs/components/EuiHeaderComponent.html +3 -3
  114. package/docs/components/EuiHeaderEnvironmentComponent.html +3 -3
  115. package/docs/components/EuiHeaderLogoComponent.html +3 -3
  116. package/docs/components/EuiHeaderRightContentComponent.html +3 -3
  117. package/docs/components/EuiHeaderSearchComponent.html +3 -3
  118. package/docs/components/EuiHeaderUserProfileComponent.html +3 -3
  119. package/docs/components/EuiIconButtonComponent.html +3 -3
  120. package/docs/components/EuiIconButtonExpanderComponent.html +3 -3
  121. package/docs/components/EuiIconColorComponent.html +3 -3
  122. package/docs/components/EuiIconInputComponent.html +3 -3
  123. package/docs/components/EuiIconStateComponent.html +3 -3
  124. package/docs/components/EuiIconSvgComponent.html +3 -3
  125. package/docs/components/EuiIconToggleComponent.html +3 -3
  126. package/docs/components/EuiInputCheckboxComponent.html +3 -3
  127. package/docs/components/EuiInputGroupComponent.html +3 -3
  128. package/docs/components/EuiInputNumberComponent.html +3 -3
  129. package/docs/components/EuiInputRadioComponent.html +3 -3
  130. package/docs/components/EuiInputTextComponent.html +3 -3
  131. package/docs/components/EuiLabelComponent.html +3 -3
  132. package/docs/components/EuiLanguageSelectorComponent.html +3 -3
  133. package/docs/components/EuiListComponent.html +3 -3
  134. package/docs/components/EuiListItemComponent.html +3 -3
  135. package/docs/components/EuiMenuComponent.html +3 -3
  136. package/docs/components/EuiMenuItemComponent.html +3 -3
  137. package/docs/components/EuiMessageBoxComponent.html +3 -3
  138. package/docs/components/EuiModalSelectorComponent.html +3 -3
  139. package/docs/components/EuiNavbarComponent.html +3 -3
  140. package/docs/components/EuiNavbarItemComponent.html +3 -3
  141. package/docs/components/EuiNotificationItemComponent.html +3 -3
  142. package/docs/components/EuiNotificationItemV2Component.html +3 -3
  143. package/docs/components/EuiNotificationsComponent.html +3 -3
  144. package/docs/components/EuiNotificationsV2Component.html +3 -3
  145. package/docs/components/EuiOverlayBodyComponent.html +3 -3
  146. package/docs/components/EuiOverlayComponent.html +3 -3
  147. package/docs/components/EuiOverlayFooterComponent.html +3 -3
  148. package/docs/components/EuiOverlayHeaderComponent.html +3 -3
  149. package/docs/components/EuiOverlayHeaderTitleComponent.html +3 -3
  150. package/docs/components/EuiPageBreadcrumbComponent.html +3 -3
  151. package/docs/components/EuiPageColumnComponent.html +3 -3
  152. package/docs/components/EuiPageColumnsComponent.html +3 -3
  153. package/docs/components/EuiPageComponent.html +3 -3
  154. package/docs/components/EuiPageContentComponent.html +3 -3
  155. package/docs/components/EuiPageFooterComponent.html +3 -3
  156. package/docs/components/EuiPageHeaderActionItemsComponent.html +3 -3
  157. package/docs/components/EuiPageHeaderBodyComponent.html +3 -3
  158. package/docs/components/EuiPageHeaderComponent.html +3 -3
  159. package/docs/components/EuiPageHeaderSubLabelComponent.html +3 -3
  160. package/docs/components/EuiPageHeroHeaderComponent.html +3 -3
  161. package/docs/components/EuiPageTopContentComponent.html +3 -3
  162. package/docs/components/EuiPaginatorComponent.html +4 -4
  163. package/docs/components/EuiPopoverComponent.html +3 -3
  164. package/docs/components/EuiProgressBarComponent.html +3 -3
  165. package/docs/components/EuiProgressCircleComponent.html +3 -3
  166. package/docs/components/EuiResizableComponent.html +3 -3
  167. package/docs/components/EuiSearchFavouriteQueriesComponent.html +3 -3
  168. package/docs/components/EuiSelectComponent.html +3 -3
  169. package/docs/components/EuiSidebarMenuComponent.html +3 -3
  170. package/docs/components/EuiSidebarToggleComponent.html +3 -3
  171. package/docs/components/EuiSkeletonComponent.html +3 -3
  172. package/docs/components/EuiSlideToggleComponent.html +3 -3
  173. package/docs/components/EuiSlideToggleTestComponent.html +3 -3
  174. package/docs/components/EuiSplitButtonComponent.html +3 -3
  175. package/docs/components/EuiTabComponent.html +3 -3
  176. package/docs/components/EuiTabContentComponent.html +3 -3
  177. package/docs/components/EuiTabLabelComponent.html +3 -3
  178. package/docs/components/EuiTableComponent.html +3 -3
  179. package/docs/components/EuiTableExpandableRowComponent.html +3 -3
  180. package/docs/components/EuiTableFilterComponent.html +3 -3
  181. package/docs/components/EuiTableSelectableHeaderComponent.html +3 -3
  182. package/docs/components/EuiTableSelectableRowComponent.html +3 -3
  183. package/docs/components/EuiTableSortableColComponent.html +3 -3
  184. package/docs/components/EuiTableV2Component.html +3 -3
  185. package/docs/components/EuiTableV2FilterComponent.html +3 -3
  186. package/docs/components/EuiTableV2SelectableHeaderComponent.html +3 -3
  187. package/docs/components/EuiTableV2SelectableRowComponent.html +3 -3
  188. package/docs/components/EuiTableV2SortableColComponent.html +3 -3
  189. package/docs/components/EuiTabsComponent.html +3 -3
  190. package/docs/components/EuiTextareaComponent.html +3 -3
  191. package/docs/components/EuiTimeRangepickerComponent.html +3 -3
  192. package/docs/components/EuiTimebarComponent.html +3 -3
  193. package/docs/components/EuiTimelineComponent.html +3 -3
  194. package/docs/components/EuiTimelineItemComponent.html +3 -3
  195. package/docs/components/EuiTimepickerComponent.html +3 -3
  196. package/docs/components/EuiToolbarAppComponent.html +3 -3
  197. package/docs/components/EuiToolbarCenterComponent.html +3 -3
  198. package/docs/components/EuiToolbarComponent.html +3 -3
  199. package/docs/components/EuiToolbarEnvironmentComponent.html +3 -3
  200. package/docs/components/EuiToolbarItemComponent.html +3 -3
  201. package/docs/components/EuiToolbarItemsComponent.html +3 -3
  202. package/docs/components/EuiToolbarLogoComponent.html +3 -3
  203. package/docs/components/EuiToolbarMenuComponent.html +4 -4
  204. package/docs/components/EuiToolbarNavbarComponent.html +3 -3
  205. package/docs/components/EuiToolbarNavbarItemComponent.html +3 -3
  206. package/docs/components/EuiToolbarSearchComponent.html +3 -3
  207. package/docs/components/EuiToolbarSelectorComponent.html +3 -3
  208. package/docs/components/EuiTooltipContainerComponent.html +3 -3
  209. package/docs/components/EuiTreeComponent.html +3 -3
  210. package/docs/components/EuiTreeListComponent.html +3 -3
  211. package/docs/components/EuiTreeListItemComponent.html +3 -3
  212. package/docs/components/EuiTreeListItemContentComponent.html +3 -3
  213. package/docs/components/EuiTreeListToolbarComponent.html +3 -3
  214. package/docs/components/EuiUserProfileCardComponent.html +3 -3
  215. package/docs/components/EuiUserProfileComponent.html +3 -3
  216. package/docs/components/EuiUserProfileMenuComponent.html +3 -3
  217. package/docs/components/EuiUserProfileMenuItemComponent.html +3 -3
  218. package/docs/components/EuiWizardComponent.html +3 -3
  219. package/docs/components/EuiWizardStepComponent.html +3 -3
  220. package/docs/components/PaginationComponent.html +3 -3
  221. package/docs/components/PlaygroundComponent-1.html +3 -3
  222. package/docs/components/PlaygroundComponent.html +3 -3
  223. package/docs/components/PlaygroundStickyLastColumnComponent.html +3 -3
  224. package/docs/components/QuillEditorComponent.html +3 -3
  225. package/docs/components/VirtualScrollAsyncComponent.html +3 -3
  226. package/docs/components/VirtualScrollComponent.html +3 -3
  227. package/docs/dependencies.html +2 -196
  228. package/docs/directives/AutoResizeDirective.html +3 -3
  229. package/docs/directives/BaseStatesDirective.html +3 -3
  230. package/docs/directives/EuiAccordionItemHeaderDirective.html +3 -3
  231. package/docs/directives/EuiActionButtonsDirective.html +3 -3
  232. package/docs/directives/EuiAppPageWrapperDirective.html +3 -3
  233. package/docs/directives/EuiArrowKeyNavigableDirective.html +3 -3
  234. package/docs/directives/EuiChipListAppendContentDirective.html +3 -3
  235. package/docs/directives/EuiClearableDirective.html +3 -3
  236. package/docs/directives/EuiDashboardButtonIconDirective.html +3 -3
  237. package/docs/directives/EuiDashboardButtonLabelDirective.html +3 -3
  238. package/docs/directives/EuiDialogFooterDirective.html +3 -3
  239. package/docs/directives/EuiDialogHeaderDirective.html +3 -3
  240. package/docs/directives/EuiDropdownContentDirective.html +3 -3
  241. package/docs/directives/EuiDropdownTreeDirective.html +3 -3
  242. package/docs/directives/EuiEditorCustomToolbarTagDirective.html +3 -3
  243. package/docs/directives/EuiEditorMaxlengthDirective.html +3 -3
  244. package/docs/directives/EuiFieldsetLabelExtraContentTagDirective.html +3 -3
  245. package/docs/directives/EuiFieldsetLabelRightContentTagDirective.html +3 -3
  246. package/docs/directives/EuiHasPermissionDirective.html +3 -3
  247. package/docs/directives/EuiInputNumberDirective.html +3 -3
  248. package/docs/directives/EuiLetterFormatDirective.html +3 -3
  249. package/docs/directives/EuiLoadingDirective.html +3 -3
  250. package/docs/directives/EuiMaxLengthDirective.html +3 -3
  251. package/docs/directives/EuiMessageBoxFooterDirective.html +3 -3
  252. package/docs/directives/EuiMonthYearFormatDirective.html +3 -3
  253. package/docs/directives/EuiNgSelectOptionDirective.html +3 -3
  254. package/docs/directives/EuiPageColumnBodyContentDirective.html +3 -3
  255. package/docs/directives/EuiPageColumnFooterContentDirective.html +3 -3
  256. package/docs/directives/EuiPageColumnHeaderBodyContentDirective.html +3 -3
  257. package/docs/directives/EuiPageColumnHeaderCollapsedContentDirective.html +3 -3
  258. package/docs/directives/EuiPageColumnHeaderLeftContentDirective.html +3 -3
  259. package/docs/directives/EuiPageColumnHeaderRightContentDirective.html +3 -3
  260. package/docs/directives/EuiPopoverArrowPositionDirective.html +3 -3
  261. package/docs/directives/EuiResizableDirective.html +3 -3
  262. package/docs/directives/EuiScrollHandlerDirective.html +3 -3
  263. package/docs/directives/EuiScrollHandlerElementDirective.html +3 -3
  264. package/docs/directives/EuiSelectControlValueAccessor.html +3 -3
  265. package/docs/directives/EuiSelectMultipleControlValueAccessor.html +3 -3
  266. package/docs/directives/EuiSelectMultipleOption.html +3 -3
  267. package/docs/directives/EuiSmoothScrollDirective.html +3 -3
  268. package/docs/directives/EuiSmoothScrollToDirective.html +3 -3
  269. package/docs/directives/EuiTabSubLabelDirective.html +3 -3
  270. package/docs/directives/EuiTableStickyColumnDirective.html +3 -3
  271. package/docs/directives/EuiTableV2ExpandableRowDirective.html +3 -3
  272. package/docs/directives/EuiTableV2StickyColDirective.html +3 -3
  273. package/docs/directives/EuiTabsRightContentTagDirective.html +3 -3
  274. package/docs/directives/EuiTemplateDirective.html +3 -3
  275. package/docs/directives/EuiTooltipDirective.html +3 -3
  276. package/docs/directives/EuiTreeFormControlDirective.html +3 -3
  277. package/docs/directives/EuiTreeListItemDetailsContentTagDirective.html +3 -3
  278. package/docs/directives/EuiTreeListItemLabelTagDirective.html +3 -3
  279. package/docs/directives/EuiTreeListItemSubContainerContentTagDirective.html +3 -3
  280. package/docs/directives/EuiYearFormatDirective.html +3 -3
  281. package/docs/directives/InputDirective.html +3 -3
  282. package/docs/directives/TranslateMockDirective.html +3 -3
  283. package/docs/index.html +16 -70
  284. package/docs/injectables/EuiBreadcrumbService.html +3 -3
  285. package/docs/injectables/EuiChipListDragService.html +3 -3
  286. package/docs/injectables/EuiDialogService.html +3 -3
  287. package/docs/injectables/EuiDropdownService.html +3 -3
  288. package/docs/injectables/EuiFileUploadUtilsService.html +3 -3
  289. package/docs/injectables/EuiMessageBoxService.html +3 -3
  290. package/docs/injectables/EuiSearchUsersFavQueriesService.html +3 -3
  291. package/docs/injectables/EuiTableSelectableRowService.html +3 -3
  292. package/docs/injectables/EuiTableSortService.html +3 -3
  293. package/docs/injectables/EuiTableV2SelectableRowService.html +3 -3
  294. package/docs/injectables/EuiTableV2SortService.html +3 -3
  295. package/docs/injectables/EuiWizardService.html +3 -3
  296. package/docs/injectables/LoaderService.html +3 -3
  297. package/docs/injectables/UiStateService.html +3 -3
  298. package/docs/interfaces/AnnotationLabel.html +3 -3
  299. package/docs/interfaces/AnnotationStyle.html +3 -3
  300. package/docs/interfaces/ApexAnnotations.html +3 -3
  301. package/docs/interfaces/ApexChart.html +3 -3
  302. package/docs/interfaces/ApexDataLabels.html +3 -3
  303. package/docs/interfaces/ApexDiscretePoint.html +3 -3
  304. package/docs/interfaces/ApexDropShadow.html +3 -3
  305. package/docs/interfaces/ApexFill.html +3 -3
  306. package/docs/interfaces/ApexForecastDataPoints.html +3 -3
  307. package/docs/interfaces/ApexGrid.html +3 -3
  308. package/docs/interfaces/ApexLegend.html +3 -3
  309. package/docs/interfaces/ApexLocale.html +3 -3
  310. package/docs/interfaces/ApexMarkers.html +3 -3
  311. package/docs/interfaces/ApexNoData.html +3 -3
  312. package/docs/interfaces/ApexOptions.html +3 -3
  313. package/docs/interfaces/ApexPlotOptions.html +3 -3
  314. package/docs/interfaces/ApexResponsive.html +3 -3
  315. package/docs/interfaces/ApexStates.html +3 -3
  316. package/docs/interfaces/ApexStroke.html +3 -3
  317. package/docs/interfaces/ApexTheme.html +3 -3
  318. package/docs/interfaces/ApexTitleSubtitle.html +3 -3
  319. package/docs/interfaces/ApexTooltip.html +3 -3
  320. package/docs/interfaces/ApexXAxis.html +3 -3
  321. package/docs/interfaces/ApexYAxis.html +3 -3
  322. package/docs/interfaces/BetterTableModule.html +3 -3
  323. package/docs/interfaces/Blur.html +3 -3
  324. package/docs/interfaces/CleaveEventOnChange.html +3 -3
  325. package/docs/interfaces/CleaveInstance.html +3 -3
  326. package/docs/interfaces/ContentChange.html +3 -3
  327. package/docs/interfaces/CustomOption.html +3 -3
  328. package/docs/interfaces/EuiAutoCompleteItem.html +3 -3
  329. package/docs/interfaces/EuiChipDragDrop.html +3 -3
  330. package/docs/interfaces/EuiDateRangeSelectorDates.html +3 -3
  331. package/docs/interfaces/EuiDateTimePickerConfig.html +3 -3
  332. package/docs/interfaces/EuiDialogInterface.html +3 -3
  333. package/docs/interfaces/EuiDiscussionThreadItem.html +3 -3
  334. package/docs/interfaces/EuiEditorImageDialogConfig.html +3 -3
  335. package/docs/interfaces/EuiPaginationEvent.html +3 -3
  336. package/docs/interfaces/EuiTimePicker.html +3 -3
  337. package/docs/interfaces/EuiTimeRangePickerConfig.html +3 -3
  338. package/docs/interfaces/EuiTooltipInterface.html +3 -3
  339. package/docs/interfaces/EuiTreeContentBlockModel.html +3 -3
  340. package/docs/interfaces/EuiTreeItem.html +3 -3
  341. package/docs/interfaces/EuiTreeListFilterParams.html +3 -3
  342. package/docs/interfaces/EuiUploadedFileInterface.html +3 -3
  343. package/docs/interfaces/Focus.html +3 -3
  344. package/docs/interfaces/HTMLOption.html +3 -3
  345. package/docs/interfaces/IEuiWizardStep.html +3 -3
  346. package/docs/interfaces/ImageAnnotations.html +3 -3
  347. package/docs/interfaces/MultiSelectionLogic.html +3 -3
  348. package/docs/interfaces/NotificationMetadata.html +3 -3
  349. package/docs/interfaces/ObjectConstructor.html +3 -3
  350. package/docs/interfaces/OpenedDialogInterface.html +3 -3
  351. package/docs/interfaces/PaginationEvent.html +3 -3
  352. package/docs/interfaces/PointAnnotations.html +3 -3
  353. package/docs/interfaces/QuillConfig.html +3 -3
  354. package/docs/interfaces/QuillDynamicConfig.html +3 -3
  355. package/docs/interfaces/QuillModules.html +3 -3
  356. package/docs/interfaces/Range.html +3 -3
  357. package/docs/interfaces/SelectConfigModel.html +3 -3
  358. package/docs/interfaces/SelectionChange.html +3 -3
  359. package/docs/interfaces/SingleSelectionLogic.html +3 -3
  360. package/docs/interfaces/Sort.html +3 -3
  361. package/docs/interfaces/SortEvent.html +3 -3
  362. package/docs/interfaces/TextAnnotations.html +3 -3
  363. package/docs/interfaces/ToolbarItemConfig.html +3 -3
  364. package/docs/interfaces/UIState.html +3 -3
  365. package/docs/interfaces/UserProfile.html +3 -3
  366. package/docs/interfaces/Window.html +3 -3
  367. package/docs/interfaces/XAxisAnnotations.html +3 -3
  368. package/docs/interfaces/YAxisAnnotations.html +3 -3
  369. package/docs/js/menu-wc.js +12 -7
  370. package/docs/js/menu-wc_es5.js +1 -1
  371. package/docs/js/search/search_index.js +2 -2
  372. package/docs/license.html +2 -2
  373. package/docs/miscellaneous/enumerations.html +4 -4
  374. package/docs/miscellaneous/functions.html +9 -9
  375. package/docs/miscellaneous/typealiases.html +40 -40
  376. package/docs/miscellaneous/variables.html +120 -120
  377. package/docs/modules/EuiAccordionModule.html +3 -3
  378. package/docs/modules/EuiAlertModule.html +3 -3
  379. package/docs/modules/EuiAllModule.html +3 -3
  380. package/docs/modules/EuiAppBreadcrumbModule.html +3 -3
  381. package/docs/modules/EuiAppFooterModule.html +3 -3
  382. package/docs/modules/EuiAppHeaderModule.html +3 -3
  383. package/docs/modules/EuiAppModule.html +3 -3
  384. package/docs/modules/EuiAppSidebarModule.html +3 -3
  385. package/docs/modules/EuiAppToolbarModule.html +3 -3
  386. package/docs/modules/EuiAppTopMessageModule.html +3 -3
  387. package/docs/modules/EuiAutocompleteModule.html +3 -3
  388. package/docs/modules/EuiAvatarModule.html +3 -3
  389. package/docs/modules/EuiBadgeModule.html +3 -3
  390. package/docs/modules/EuiBlockContentModule.html +3 -3
  391. package/docs/modules/EuiBlockDocumentModule.html +3 -3
  392. package/docs/modules/EuiBreadcrumbModule.html +3 -3
  393. package/docs/modules/EuiButtonGroupModule.html +3 -3
  394. package/docs/modules/EuiButtonModule.html +3 -3
  395. package/docs/modules/EuiButtonV2Module.html +3 -3
  396. package/docs/modules/EuiCardModule.html +3 -3
  397. package/docs/modules/EuiChartsModule.html +3 -3
  398. package/docs/modules/EuiChipListModule.html +3 -3
  399. package/docs/modules/EuiChipModule.html +3 -3
  400. package/docs/modules/EuiCoerceBooleanPipeModule.html +3 -3
  401. package/docs/modules/EuiDashboardButtonModule.html +3 -3
  402. package/docs/modules/EuiDashboardCardModule.html +3 -3
  403. package/docs/modules/EuiDateRangeSelectorModule.html +3 -3
  404. package/docs/modules/EuiDatepickerModule.html +3 -3
  405. package/docs/modules/EuiDialogModule.html +3 -3
  406. package/docs/modules/EuiDimmerModule.html +3 -3
  407. package/docs/modules/EuiDisableContentModule.html +3 -3
  408. package/docs/modules/EuiDiscussionThreadModule.html +3 -3
  409. package/docs/modules/EuiDropdownContentModule.html +3 -3
  410. package/docs/modules/EuiDropdownModule.html +3 -3
  411. package/docs/modules/EuiDropdownTreeDirectiveModule.html +3 -3
  412. package/docs/modules/EuiEditorModule.html +3 -3
  413. package/docs/modules/EuiFeedbackMessageModule.html +3 -3
  414. package/docs/modules/EuiFieldsetModule.html +3 -3
  415. package/docs/modules/EuiFileUploadModule.html +3 -3
  416. package/docs/modules/EuiFooterModule.html +3 -3
  417. package/docs/modules/EuiGrowlModule.html +3 -3
  418. package/docs/modules/EuiHasPermissionDirectiveModule.html +3 -3
  419. package/docs/modules/EuiHeaderModule.html +3 -3
  420. package/docs/modules/EuiIconButtonExpanderModule.html +3 -3
  421. package/docs/modules/EuiIconButtonModule.html +3 -3
  422. package/docs/modules/EuiIconColorModule.html +3 -3
  423. package/docs/modules/EuiIconInputModule.html +3 -3
  424. package/docs/modules/EuiIconModule.html +3 -3
  425. package/docs/modules/EuiIconStateModule.html +3 -3
  426. package/docs/modules/EuiIconToggleModule.html +3 -3
  427. package/docs/modules/EuiInputCheckboxModule.html +3 -3
  428. package/docs/modules/EuiInputGroupModule.html +3 -3
  429. package/docs/modules/EuiInputNumberDirectiveModule.html +3 -3
  430. package/docs/modules/EuiInputNumberModule.html +3 -3
  431. package/docs/modules/EuiInputRadioModule.html +3 -3
  432. package/docs/modules/EuiInputTextModule.html +3 -3
  433. package/docs/modules/EuiLabelModule.html +3 -3
  434. package/docs/modules/EuiLanguageSelectorModule.html +3 -3
  435. package/docs/modules/EuiLayoutModule.html +3 -3
  436. package/docs/modules/EuiListModule.html +3 -3
  437. package/docs/modules/EuiMaxLengthDirectiveModule.html +3 -3
  438. package/docs/modules/EuiMenuModule.html +3 -3
  439. package/docs/modules/EuiMessageBoxModule.html +3 -3
  440. package/docs/modules/EuiNavbarModule.html +3 -3
  441. package/docs/modules/EuiNotificationsModule.html +3 -3
  442. package/docs/modules/EuiNotificationsV2Module.html +3 -3
  443. package/docs/modules/EuiOverlayModule.html +3 -3
  444. package/docs/modules/EuiPageModule.html +3 -3
  445. package/docs/modules/EuiPaginatorModule.html +3 -3
  446. package/docs/modules/EuiPopoverModule.html +3 -3
  447. package/docs/modules/EuiProgressBarModule.html +3 -3
  448. package/docs/modules/EuiProgressCircleModule.html +3 -3
  449. package/docs/modules/EuiResizableDirectiveModule.html +3 -3
  450. package/docs/modules/EuiScrollHandlerDirectiveModule.html +3 -3
  451. package/docs/modules/EuiSearchFavouriteQueriesModule.html +3 -3
  452. package/docs/modules/EuiSelectModule.html +3 -3
  453. package/docs/modules/EuiSidebarMenuModule.html +3 -3
  454. package/docs/modules/EuiSidebarToggleModule.html +3 -3
  455. package/docs/modules/EuiSkeletonModule.html +3 -3
  456. package/docs/modules/EuiSlideToggleModule.html +3 -3
  457. package/docs/modules/EuiSmoothScrollDirectiveModule.html +3 -3
  458. package/docs/modules/EuiSplitButtonModule.html +3 -3
  459. package/docs/modules/EuiTableModule.html +3 -3
  460. package/docs/modules/EuiTableV2Module.html +3 -3
  461. package/docs/modules/EuiTabsModule.html +3 -3
  462. package/docs/modules/EuiTemplateDirectiveModule.html +3 -3
  463. package/docs/modules/EuiTextAreaModule.html +3 -3
  464. package/docs/modules/EuiTimebarModule.html +3 -3
  465. package/docs/modules/EuiTimelineModule.html +3 -3
  466. package/docs/modules/EuiTimepickerModule.html +3 -3
  467. package/docs/modules/EuiToolbarModule.html +3 -3
  468. package/docs/modules/EuiTooltipDirectiveModule.html +3 -3
  469. package/docs/modules/EuiTreeFormControlDirectiveModule.html +3 -3
  470. package/docs/modules/EuiTreeListModule.html +3 -3
  471. package/docs/modules/EuiTreeModule.html +3 -3
  472. package/docs/modules/EuiTruncatePipeModule.html +3 -3
  473. package/docs/modules/EuiUserProfileModule.html +3 -3
  474. package/docs/modules/EuiWizardModule.html +3 -3
  475. package/docs/modules/QuillModule.html +3 -3
  476. package/docs/modules/TranslateMockModule.html +3 -3
  477. package/docs/modules.html +2 -2
  478. package/docs/overview.html +241 -0
  479. package/docs/pipes/ClassFilterPipe.html +3 -3
  480. package/docs/pipes/EuiCoerceBooleanPipe.html +3 -3
  481. package/docs/pipes/EuiFileSizePipe.html +3 -3
  482. package/docs/pipes/EuiTableHighlightFilterPipe.html +3 -3
  483. package/docs/pipes/EuiTableV2HighlightPipe.html +3 -3
  484. package/docs/pipes/EuiTruncatePipe.html +3 -3
  485. package/docs/pipes/TranslateMockPipe.html +3 -3
  486. package/docs/properties.html +3 -7
  487. package/esm2022/eui-chip-list/eui-chip-list.component.mjs +3 -3
  488. package/esm2022/eui-dialog/container/eui-dialog-container.component.mjs +7 -4
  489. package/esm2022/eui-dropdown/dropdown-item/eui-dropdown-item.component.mjs +11 -4
  490. package/esm2022/eui-dropdown/eui-dropdown.component.mjs +27 -6
  491. package/esm2022/eui-file-upload/file-preview/file-preview.component.mjs +7 -3
  492. package/esm2022/eui-paginator/eui-paginator.component.mjs +3 -3
  493. package/esm2022/eui-table-v2/eui-table-v2.component.mjs +17 -11
  494. package/esm2022/eui-table-v2/selectable-row/eui-table-v2-selectable-row.component.mjs +4 -2
  495. package/esm2022/layout/eui-toolbar/toolbar-menu/toolbar-menu.component.mjs +3 -3
  496. package/eui-dialog/container/eui-dialog-container.component.d.ts +2 -1
  497. package/eui-dialog/container/eui-dialog-container.component.d.ts.map +1 -1
  498. package/eui-dropdown/dropdown-item/eui-dropdown-item.component.d.ts +4 -3
  499. package/eui-dropdown/dropdown-item/eui-dropdown-item.component.d.ts.map +1 -1
  500. package/eui-dropdown/eui-dropdown.component.d.ts.map +1 -1
  501. package/eui-file-upload/file-preview/file-preview.component.d.ts +1 -0
  502. package/eui-file-upload/file-preview/file-preview.component.d.ts.map +1 -1
  503. package/eui-table-v2/eui-table-v2.component.d.ts.map +1 -1
  504. package/eui-table-v2/selectable-row/eui-table-v2-selectable-row.component.d.ts.map +1 -1
  505. package/fesm2022/eui-components-eui-chip-list.mjs +2 -2
  506. package/fesm2022/eui-components-eui-chip-list.mjs.map +1 -1
  507. package/fesm2022/eui-components-eui-dialog.mjs +6 -3
  508. package/fesm2022/eui-components-eui-dialog.mjs.map +1 -1
  509. package/fesm2022/eui-components-eui-dropdown.mjs +36 -8
  510. package/fesm2022/eui-components-eui-dropdown.mjs.map +1 -1
  511. package/fesm2022/eui-components-eui-file-upload.mjs +6 -2
  512. package/fesm2022/eui-components-eui-file-upload.mjs.map +1 -1
  513. package/fesm2022/eui-components-eui-paginator.mjs +2 -2
  514. package/fesm2022/eui-components-eui-paginator.mjs.map +1 -1
  515. package/fesm2022/eui-components-eui-table-v2.mjs +19 -11
  516. package/fesm2022/eui-components-eui-table-v2.mjs.map +1 -1
  517. package/fesm2022/eui-components-layout.mjs +2 -2
  518. package/fesm2022/eui-components-layout.mjs.map +1 -1
  519. package/package.json +507 -507
  520. package/LICENSE +0 -296
  521. package/README.md +0 -26
@@ -238,8 +238,10 @@ export class EuiTableV2Component {
238
238
  observer.next(filteredMutations);
239
239
  }
240
240
  });
241
- const config = { attributes: true, subtree: true, attributeFilter: ['style'] };
242
- this.mutationObserver.observe(this.theadRef.nativeElement, config);
241
+ if (this.theadRef) {
242
+ const config = { attributes: true, subtree: true, attributeFilter: ['style'] };
243
+ this.mutationObserver.observe(this.theadRef.nativeElement, config);
244
+ }
243
245
  });
244
246
  mutationObservable.pipe(debounceTime(250), takeUntil(this.destroy$)).subscribe((mutations) => {
245
247
  this.stickyFeatureHandler();
@@ -247,6 +249,11 @@ export class EuiTableV2Component {
247
249
  if (!this.isAsync && !this.isVirtualScroll) {
248
250
  this.tableFeaturesHandlerSubscription.unsubscribe();
249
251
  this.tableFeaturesHandler();
252
+ if (this.preselectedRows) {
253
+ setTimeout(() => {
254
+ this.euiTableV2SelectableRowService.selectRows(this.preselectedRows);
255
+ });
256
+ }
250
257
  }
251
258
  this.selectRowsFeatureHandler();
252
259
  this.sortFeatureHandler();
@@ -347,9 +354,6 @@ export class EuiTableV2Component {
347
354
  this.euiTableV2SelectableRowService.unregisterRows();
348
355
  this.euiTableV2SelectableRowService.registerRows(this.dataRendered);
349
356
  }
350
- if (this.preselectedRows) {
351
- this.euiTableV2SelectableRowService.selectRows(this.preselectedRows);
352
- }
353
357
  this.cd.detectChanges();
354
358
  if (this.hasStickyCols) {
355
359
  this.stickyFeatureHandler();
@@ -438,11 +442,13 @@ export class EuiTableV2Component {
438
442
  const thItems = Array.from(this.theadRef.nativeElement.querySelectorAll('.eui-table-v2__col--sticky'));
439
443
  processStickyItems(thItems);
440
444
  }
441
- const bodyTrItems = Array.from(this.tbodyRef.nativeElement.querySelectorAll('tr'));
442
- bodyTrItems.forEach((tr) => {
443
- const tdItems = Array.from(tr.querySelectorAll('.eui-table-v2__col--sticky'));
444
- processStickyItems(tdItems);
445
- });
445
+ if (this.tbodyRef) {
446
+ const bodyTrItems = Array.from(this.tbodyRef.nativeElement.querySelectorAll('tr'));
447
+ bodyTrItems.forEach((tr) => {
448
+ const tdItems = Array.from(tr.querySelectorAll('.eui-table-v2__col--sticky'));
449
+ processStickyItems(tdItems);
450
+ });
451
+ }
446
452
  if (this.tfootRef) {
447
453
  const tdItems = Array.from(this.tfootRef.nativeElement.querySelectorAll('.eui-table-v2__col--sticky'));
448
454
  processStickyItems(tdItems);
@@ -572,4 +578,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
572
578
  }], sortChange: [{
573
579
  type: Output
574
580
  }] } });
575
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRhYmxlLXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V1aS10YWJsZS12Mi9ldWktdGFibGUtdjIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLXRhYmxlLXYyL2V1aS10YWJsZS12Mi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQTRDLFNBQVMsRUFBaUIsVUFBVSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFDckosaUJBQWlCLEVBQUUsdUJBQXVCLEVBQXFCLE1BQU0sRUFBRSxZQUFZLEVBQTRCLGVBQWUsRUFDbkgsTUFBTSxlQUFlLENBQUM7QUFFckMsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJeEgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFN0QsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFaEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7O0FBRzdFLE1BQU0sQ0FBTixJQUFZLGlCQUdYO0FBSEQsV0FBWSxpQkFBaUI7SUFDekIsOEJBQVMsQ0FBQTtJQUNULGtDQUFhLENBQUE7QUFDakIsQ0FBQyxFQUhXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFHNUI7QUFnQkQsTUFBTSxPQUFPLG1CQUFtQjtJQUM1QixJQUNXLFVBQVU7UUFDakIsT0FBTztZQUNILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsZ0NBQWdDLENBQUM7WUFDeEUsSUFBSSxDQUFDLGVBQWUs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QXdCO3NCQUEzRixTQUFTO3VCQUFDLDBCQUEwQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDcUMsK0JBQStCO3NCQUEzSCxTQUFTO3VCQUFDLGlDQUFpQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUMxRCxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ0UsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNFLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFFWCxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIENvbnRlbnRDaGlsZHJlbiwgUXVlcnlMaXN0LCBBZnRlckNvbnRlbnRJbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0LCBFbGVtZW50UmVmLCBib29sZWFuQXR0cmlidXRlLCBIb3N0QmluZGluZyxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzLCBudW1iZXJBdHRyaWJ1dGUsIENoYW5nZURldGVjdG9yUmVmLFxuICAgIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgY29tYmluZUxhdGVzdCwgZGVib3VuY2VUaW1lLCBza2lwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExpc3RSYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5cbmltcG9ydCB7IEV1aVBhZ2luYXRpb25FdmVudCwgRXVpUGFnaW5hdG9yQ29tcG9uZW50IH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL2V1aS1wYWdpbmF0b3InO1xuaW1wb3J0IHsgRXVpVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBCYXNlU3RhdGVzRGlyZWN0aXZlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL3NoYXJlZCc7XG5cbmltcG9ydCB7IEV1aVRhYmxlVjJTZWxlY3RhYmxlUm93U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZXVpLXRhYmxlLXYyLXNlbGVjdGFibGUtcm93LnNlcnZpY2UnO1xuaW1wb3J0IHsgRXVpVGFibGVWMkZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4vZmlsdGVyL2V1aS10YWJsZS12Mi1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEV1aVRhYmxlVjJTb3J0U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZXVpLXRhYmxlLXYyLXNvcnQuc2VydmljZSc7XG5pbXBvcnQgeyBTb3J0LCBTb3J0T3JkZXIgfSBmcm9tICcuL21vZGVscy9zb3J0Lm1vZGVsJztcblxuZXhwb3J0IGVudW0gU2Nyb2xsaW5EaXJlY3Rpb24ge1xuICAgIFVQID0gJ1VQJyxcbiAgICBET1dOID0gJ0RPV04nLFxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2V1aS10YWJsZS12MiwgdGFibGVbZXVpVGFibGVWMl0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktdGFibGUtdjIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3N0eWxlcy9faW5kZXguc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbRXVpVGFibGVWMlNlbGVjdGFibGVSb3dTZXJ2aWNlLCBFdWlUYWJsZVYyU29ydFNlcnZpY2VdLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRpcmVjdGl2ZTogQmFzZVN0YXRlc0RpcmVjdGl2ZSxcbiAgICAgICAgICAgIGlucHV0czogW10sXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpVGFibGVWMkNvbXBvbmVudDxEQVRBID0gdW5rbm93bj4gaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBwdWJsaWMgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuYmFzZVN0YXRlc0RpcmVjdGl2ZS5nZXRDc3NDbGFzc2VzKCdldWktdGFibGUtZGVmYXVsdCBldWktdGFibGUtdjInKSxcbiAgICAgICAgICAgIHRoaXMuaXNWaXJ0dWFsU2Nyb2xsID8gJ2V1aS10YWJsZS12Mi0tdmlydHVhbC1zY3JvbGwnIDogJycsXG4gICAgICAgICAgICB0aGlzLmhhc1N0aWNreUhlYWRlciA/ICdldWktdGFibGUtdjItLXN0aWNreSBldWktdGFibGUtdjItLXN0aWNreS1oZWFkZXInIDogJycsXG4gICAgICAgICAgICB0aGlzLmhhc1N0aWNreUZvb3RlciA/ICdldWktdGFibGUtdjItLXN0aWNreSBldWktdGFibGUtdjItLXN0aWNreS1mb290ZXInIDogJycsXG4gICAgICAgICAgICB0aGlzLmhhc1N0aWNreUNvbHMgPyAnZXVpLXRhYmxlLXYyLS1zdGlja3kgZXVpLXRhYmxlLXYyLS1zdGlja3ktY29scycgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuaXNUYWJsZVJlc3BvbnNpdmUgPyAnZXVpLXRhYmxlLWRlZmF1bHQtLXJlc3BvbnNpdmUnIDogJycsXG4gICAgICAgICAgICB0aGlzLmlzQ29sc09yZGVyYWJsZSA/ICdldWktdGFibGUtdjItLWNvbHMtb3JkZXJhYmxlJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPyAnZXVpLXRhYmxlLXYyLS1sb2FkaW5nJyA6ICcnLFxuICAgICAgICBdXG4gICAgICAgICAgICAuam9pbignICcpXG4gICAgICAgICAgICAudHJpbSgpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGRhdGE6IERBVEFbXSA9IFtdO1xuICAgIEBJbnB1dCgpIHByb3BJZCA9ICdpZCc7XG4gICAgQElucHV0KCkgaXRlbVNpemUgPSA0MTtcbiAgICBASW5wdXQoKSBwYWdpbmF0b3I6IEV1aVBhZ2luYXRvckNvbXBvbmVudDtcbiAgICBASW5wdXQoKSBmaWx0ZXI6IEV1aVRhYmxlVjJGaWx0ZXJDb21wb25lbnQ7XG4gICAgQElucHV0KCkgcHJlc2VsZWN0ZWRSb3dzOiBEQVRBW10gPSBbXTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc1ZpcnR1YWxTY3JvbGwgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNWaXJ0dWFsU2Nyb2xsQ2FjaGUgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzU3RpY2t5SGVhZGVyID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhhc1N0aWNreUZvb3RlciA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoYXNTdGlja3lDb2xzID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzVGFibGVSZXNwb25zaXZlID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzQXN5bmMgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB2aXJ0dWFsU2Nyb2xsQXN5bmNJdGVtc0xlbmd0aCA9IDA7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdmlydHVhbFNjcm9sbE5iUm93cyA9IDUwO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0NvbHNPcmRlcmFibGUgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzU2VsZWN0T25seVZpc2libGVSb3dzID0gdHJ1ZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNUYWJsZUJvcmRlcmVkID0gZmFsc2U7XG4gICAgLyoqIEBkZXByZWNhdGVkIFRoaXMgd2lsbCBiZSByZW1vdmVkIGluIG5leHQgdmVyc2lvbiAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc1RhYmxlQ29uZGVuc2VkID0gZmFsc2U7XG5cbiAgICBwcm90ZWN0ZWQgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcbiAgICBwcm90ZWN0ZWQgYm9keVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogREFUQTsgaW5kZXg6IG51bWJlciB9PjtcbiAgICBwcm90ZWN0ZWQgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcbiAgICBwcm90ZWN0ZWQgbm9EYXRhVGVtcGxhdGU6IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcbiAgICBwcm90ZWN0ZWQgbG9hZGluZyA9IFtdO1xuICAgIHByb3RlY3RlZCBuYkNvbHM6IEhUTUxUYWJsZUNlbGxFbGVtZW50W10gPSBbXTtcbiAgICBwcm90ZWN0ZWQgZGF0YVJlbmRlcmVkOiBEQVRBW10gPSBbXTtcbiAgICBwcm90ZWN0ZWQgY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0T3ZlcmZsb3dWYWx1ZTogKCdoaWRkZW4nIHwgJ2F1dG8nKSA9ICdhdXRvJztcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oRXVpVGVtcGxhdGVEaXJlY3RpdmUpIHRlbXBsYXRlczogUXVlcnlMaXN0PEV1aVRlbXBsYXRlRGlyZWN0aXZlPjtcblxuICAgIEBWaWV3Q2hpbGQoJ2Nka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwcm90ZWN0ZWQgY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG4gICAgQFZpZXdDaGlsZCgnY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0RWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRWxlbWVudFJlZiB9KSBwcm90ZWN0ZWQgY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0RWxlbWVudDogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCd0aGVhZFJlZicpIHRoZWFkUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCd0Ym9keVJlZicpIHRib2R5UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCd0Zm9vdFJlZicpIHRmb290UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIEBPdXRwdXQoKSBzY3JvbGxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHJvd3NTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPERBVEFbXT4oKTtcbiAgICBAT3V0cHV0KCkgc29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydFtdPigpO1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSB2aXJ0dWFsU2Nyb2xsTGFzdE11bHRpcGxlID0gMDtcbiAgICBwcml2YXRlIHZpcnR1YWxTY3JvbGxTcGxpY2VGcm9tID0gMDtcbiAgICBwcml2YXRlIHNjcm9sbGVkSW5kZXggPSAwO1xuICAgIHByaXZhdGUgbmJJdGVtRGlzcGxheWVkID0gMDtcbiAgICBwcml2YXRlIHNjcm9sbGluZ0RpcmVjdGlvbjogU2Nyb2xsaW5EaXJlY3Rpb247XG4gICAgcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyO1xuICAgIHByaXZhdGUgZGF0YVNyYzogREFUQVtdID0gW107XG4gICAgcHJpdmF0ZSBwYWdlID0gMDtcbiAgICBwcml2YXRlIHBhZ2VTaXplID0gMDtcbiAgICBwcml2YXRlIHRhYmxlRmVhdHVyZXNIYW5kbGVyU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIHByaXZhdGUgZmlsdGVyZWREYXRhOiBEQVRBW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgICBwcml2YXRlIGV1aVRhYmxlVjJTZWxlY3RhYmxlUm93U2VydmljZTogRXVpVGFibGVWMlNlbGVjdGFibGVSb3dTZXJ2aWNlPERBVEE+LFxuICAgICAgICAgICAgICAgIHByaXZhdGUgZXVpVGFibGVWMlNvcnRTZXJ2aWNlOiBFdWlUYWJsZVYyU29ydFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBiYXNlU3RhdGVzRGlyZWN0aXZlOiBCYXNlU3RhdGVzRGlyZWN0aXZlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgICAgICAgICApIHt9XG5cbiAgICBuZ09uQ2hhbmdlcyhjOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXVpVGFibGVWMlNlbGVjdGFibGVSb3dTZXJ2aWNlLnNldFByb3BJZCh0aGlzLnByb3BJZCk7XG4gICAgICAgIGlmICh0aGlzLmlzVmlydHVhbFNjcm9sbCkge1xuICAgICAgICAgICAgaWYgKGMuZGF0YSAmJiBjLmRhdGEuaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhUmVuZGVyZWQgPSBbLi4uYy5kYXRhLmN1cnJlbnRWYWx1ZSwgLi4uQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy52aXJ0dWFsU2Nyb2xsQXN5bmNJdGVtc0xlbmd0aCAtIGMuZGF0YS5jdXJyZW50VmFsdWUubGVuZ3RoIH0pXTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZXVpVGFibGVWMlNlbGVjdGFibGVSb3dTZXJ2aWNlLnVucmVnaXN0ZXJSb3dzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ldWlUYWJsZVYyU2VsZWN0YWJsZVJvd1NlcnZpY2UucmVnaXN0ZXJSb3dzKHRoaXMuZGF0YVJlbmRlcmVkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGMuZGF0YSAmJiAhYy5kYXRhLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQXN5bmMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gWy4uLnRoaXMuZGF0YVJlbmRlcmVkXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNWaXJ0dWFsU2Nyb2xsQ2FjaGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVJlbmRlcmVkID0gWy4uLnNvdXJjZS5zbGljZSgwLCB0aGlzLnZpcnR1YWxTY3JvbGxTcGxpY2VGcm9tKSwgLi4uYy5kYXRhLmN1cnJlbnRWYWx1ZSwgLi4uc291cmNlLnNsaWNlKHRoaXMudmlydHVhbFNjcm9sbFNwbGljZUZyb20gKyB0aGlzLnZpcnR1YWxTY3JvbGxOYlJvd3MpXTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVJlbmRlcmVkID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLkFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMudmlydHVhbFNjcm9sbFNwbGljZUZyb20gLSB0aGlzLm5iSXRlbURpc3BsYXllZCB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5zb3VyY2Uuc2xpY2UodGhpcy52aXJ0dWFsU2Nyb2xsU3BsaWNlRnJvbSAtIHRoaXMubmJJdGVtRGlzcGxheWVkLCB0aGlzLnZpcnR1YWxTY3JvbGxTcGxpY2VGcm9tKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmRhdGEuY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnNvdXJjZS5zbGljZSh0aGlzLnZpcnR1YWxTY3JvbGxTcGxpY2VGcm9tICsgdGhpcy52aXJ0dWFsU2Nyb2xsTmJSb3dzLCB0aGlzLnZpcnR1YWxTY3JvbGxTcGxpY2VGcm9tICsgdGhpcy52aXJ0dWFsU2Nyb2xsTmJSb3dzICsgdGhpcy5uYkl0ZW1EaXNwbGF5ZWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLkFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMudmlydHVhbFNjcm9sbEFzeW5jSXRlbXNMZW5ndGggLSAodGhpcy52aXJ0dWFsU2Nyb2xsU3BsaWNlRnJvbSArIHRoaXMudmlydHVhbFNjcm9sbE5iUm93cyArIHRoaXMubmJJdGVtRGlzcGxheWVkKSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoYyAmJiBjLnZpcnR1YWxTY3JvbGxBc3luY0l0ZW1zTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYy52aXJ0dWFsU2Nyb2xsQXN5bmNJdGVtc0xlbmd0aC5wcmV2aW91c1ZhbHVlID4gYy52aXJ0dWFsU2Nyb2xsQXN5bmNJdGVtc0xlbmd0aC5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFSZW5kZXJlZCA9IHRoaXMuZGF0YVJlbmRlcmVkLnNsaWNlKDAsIGMudmlydHVhbFNjcm9sbEFzeW5jSXRlbXNMZW5ndGguY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhUmVuZGVyZWQgPSBbLi4uYy5kYXRhLmN1cnJlbnRWYWx1ZSwgLi4uQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy52aXJ0dWFsU2Nyb2xsQXN5bmNJdGVtc0xlbmd0aCAtIGMuZGF0YS5jdXJyZW50VmFsdWUubGVuZ3RoIH0pXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXVpVGFibGVWMlNlbGVjdGFibGVSb3dTZXJ2aWNlLnVucmVnaXN0ZXJSb3dzKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXVpVGFibGVWMlNlbGVjdGFibGVSb3dTZXJ2aWNlLnJlZ2lzdGVyUm93cyh0aGlzLmRhdGFSZW5kZXJlZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2Nyb2xsaW5nRGlyZWN0aW9uID09PSBTY3JvbGxpbkRpcmVjdGlvbi5ET1dOKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHRoaXMuaGFzVW5kZWZpbmVkSW5SYW5nZSh0aGlzLnNjcm9sbGVkSW5kZXgsIHRoaXMubmJJdGVtRGlzcGxheWVkLCB0aGlzLmRhdGFSZW5kZXJlZCkgIT09IC0xIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxlZEluZGV4ID09PSB0aGlzLnZpcnR1YWxTY3JvbGxTcGxpY2VGcm9tICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMuZGF0YVJlbmRlcmVkW3RoaXMuc2Nyb2xsZWRJbmRleCAtIDFdKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzVW5kZWZpbmVkSW5SYW5nZSh0aGlzLnNjcm9sbGVkSW5kZXgsIHRoaXMubmJJdGVtRGlzcGxheWVkLCB0aGlzLmRhdGFSZW5kZXJlZCkgIT09IHRoaXMuZGF0YVJlbmRlcmVkLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdyZXBvc2l0aW9uIGRvd24nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LnNjcm9sbFRvSW5kZXgodGhpcy52aXJ0dWFsU2Nyb2xsU3BsaWNlRnJvbSArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2Nyb2xsaW5nRGlyZWN0aW9uID09PSBTY3JvbGxpbkRpcmVjdGlvbi5VUCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaGFzVW5kZWZpbmVkSW5SYW5nZSh0aGlzLnNjcm9sbGVkSW5kZXgsIHRoaXMubmJJdGVtRGlzcGxheWVkLCB0aGlzLmRhdGFSZW5kZXJlZCkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ3JlcG9zaXRpb24gdXAnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LnNjcm9sbFRvSW5kZXgodGhpcy52aXJ0dWFsU2Nyb2xsU3BsaWNlRnJvbSArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGlja3lGZWF0dXJlSGFuZGxlcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjICYmIGMuZGF0YSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxlbmd0aENoYW5nZWQgPSB0aGlzLmRhdGFTcmMubGVuZ3RoICE9PSBjLmRhdGEuY3VycmVudFZhbHVlLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFTcmMgPSBjLmRhdGEuY3VycmVudFZhbHVlID8gWy4uLmMuZGF0YS5jdXJyZW50VmFsdWVdIDogW107XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IgJiYgbGVuZ3RoQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5nb0ZpcnN0UGFnZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0FzeW5jICYmICFjLmRhdGEuaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVGZWF0dXJlc0hhbmRsZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUZlYXR1cmVzSGFuZGxlcigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZXVpVGFibGVWMlNlbGVjdGFibGVSb3dTZXJ2aWNlLnJlZ2lzdGVyUm93cyh0aGlzLmRhdGFTcmMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGMgJiYgYy5wYWdpbmF0b3I/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLnNldExlbmd0aCh0aGlzLmRhdGEubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWMucGFnaW5hdG9yPy5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IuZ29GaXJzdFBhZ2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIHRoaXMuZGF0YSBjYW4gYmUgY2hhbmdlZCBhbnl0aW1lLCB0aGVuIHRoaXMgZWxzZSBjYW4gYmUgZXhlY3V0ZWQgYXQgdGhhdCB0aW1lLCB0ZXN0aW5nIHRoaXMucGFnaW5hdG9yIGFsbG93cyB0byBtYWtlIHN1cmVcbiAgICAgICAgICAgICAgICAvLyB0aGUgdXNlciB3YW50cyB0byBkaXNhYmxlIHBhZ2luYXRpb24gb3IgY2hhbmdlIHRoZSBkYXRhc291cmNlXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnBhZ2luYXRvcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFSZW5kZXJlZCA9IHRoaXMuZGF0YVNyYztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYyAmJiBjLnByZXNlbGVjdGVkUm93cyAmJiAhYy5wcmVzZWxlY3RlZFJvd3MuaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlVjJTZWxlY3RhYmxlUm93U2VydmljZS5zZWxlY3RSb3dzKGMucHJlc2VsZWN0ZWRSb3dzLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhU3JjID0gWy4uLnRoaXMuZGF0YV07XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5nZXRUeXBlKCkgPT09ICdoZWFkZXInKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXRlbS5nZXRUeXBlKCkgPT09ICdib2R5Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9keVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLmdldFR5cGUoKSA9PT0gJ2Zvb3RlcicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvb3RlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLmdldFR5cGUoKSA9PT0gJ25vRGF0YScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vRGF0YVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGVzdChpbmRleCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydC5zY3JvbGxUb0luZGV4KGluZGV4KVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGlja3lGZWF0dXJlSGFuZGxlcigpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzVmlydHVhbFNjcm9sbCkge1xuICAgICAgICAgICAgdGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ/LnJlbmRlcmVkUmFuZ2VTdHJlYW1cbiAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoNTAwKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGxpc3RSYW5nZTogTGlzdFJhbmdlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RpY2t5RmVhdHVyZUhhbmRsZXIoKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgdGhlYWRFbGVtZW50cyA9IEFycmF5LmZyb20odGhpcy50aGVhZFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RoJykpO1xuICAgICAgICAgICAgdGhpcy5uYkNvbHMgPSBuZXcgQXJyYXkodGhlYWRFbGVtZW50cy5sZW5ndGgpO1xuXG4gICAgICAgICAgICB0aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydC5zY3JvbGxlZEluZGV4Q2hhbmdlXG4gICAgICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwMCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChzY3JvbGxlZEluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNBc3luYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxpbmdEaXJlY3Rpb24gPSBzY3JvbGxlZEluZGV4ID4gdGhpcy5zY3JvbGxlZEluZGV4ID8gU2Nyb2xsaW5EaXJlY3Rpb24uRE9XTiA6IFNjcm9sbGluRGlyZWN0aW9uLlVQO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxlZEluZGV4ID0gc2Nyb2xsZWRJbmRleDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQuc2V0VG90YWxDb250ZW50U2l6ZSh0aGlzLnZpcnR1YWxTY3JvbGxBc3luY0l0ZW1zTGVuZ3RoICogdGhpcy5pdGVtU2l6ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNjcm9sbE9mZnNldCA9IHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0Lm1lYXN1cmVTY3JvbGxPZmZzZXQoJ3RvcCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kSW5kZXggPSBNYXRoLmNlaWwoKHNjcm9sbE9mZnNldCArIHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LmdldFZpZXdwb3J0U2l6ZSgpKSAvIHRoaXMuaXRlbVNpemUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYkl0ZW1EaXNwbGF5ZWQgPSBlbmRJbmRleCAtIHNjcm9sbGVkSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2aXJ0dWFsU2Nyb2xsQ3VycmVudE11bHRpcGxlID0gTWF0aC5mbG9vcigoc2Nyb2xsZWRJbmRleCArIHRoaXMubmJJdGVtRGlzcGxheWVkKSAvIHRoaXMudmlydHVhbFNjcm9sbE5iUm93cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY3JvbGxlZEluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFSZW5kZXJlZFtzY3JvbGxlZEluZGV4XSB8fCAodGhpcy5zY3JvbGxpbmdEaXJlY3Rpb24gPT09IFNjcm9sbGluRGlyZWN0aW9uLlVQICYmIHRoaXMuZGF0YVJlbmRlcmVkW3Njcm9sbGVkSW5kZXggLSAxXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ3ZpcnR1YWxTY3JvbGxDdXJyZW50TXVsdGlwbGUnLCB2aXJ0dWFsU2Nyb2xsQ3VycmVudE11bHRpcGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygndGhpcy52aXJ0dWFsU2Nyb2xsTGFzdE11bHRpcGxlJywgdGhpcy52aXJ0dWFsU2Nyb2xsTGFzdE11bHRpcGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygndmlydHVhbFNjcm9sbEN1cnJlbnRNdWx0aXBsZSA+IHRoaXMudmlydHVhbFNjcm9sbExhc3RNdWx0aXBsZScsIHZpcnR1YWxTY3JvbGxDdXJyZW50TXVsdGlwbGUgPiB0aGlzLnZpcnR1YWxTY3JvbGxMYXN0TXVsdGlwbGUpXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpcnR1YWxTY3JvbGxDdXJyZW50TXVsdGlwbGUgPiB0aGlzLnZpcnR1YWxTY3JvbGxMYXN0TXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlydHVhbFNjcm9sbFNwbGljZUZyb20gPSB2aXJ0dWFsU2Nyb2xsQ3VycmVudE11bHRpcGxlICogdGhpcy52aXJ0dWFsU2Nyb2xsTmJSb3dzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxDaGFuZ2UuZW1pdCh7IHN0YXJ0OiB2aXJ0dWFsU2Nyb2xsQ3VycmVudE11bHRpcGxlICogdGhpcy52aXJ0dWFsU2Nyb2xsTmJSb3dzLCBlbmQ6IHRoaXMudmlydHVhbFNjcm9sbE5iUm93cyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxTcGxpY2VGcm9tID0gdGhpcy5yb3VuZERvd24oc2Nyb2xsZWRJbmRleCwgdGhpcy52aXJ0dWFsU2Nyb2xsTmJSb3dzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsQ2hhbmdlLmVtaXQoeyBzdGFydDogdGhpcy52aXJ0dWFsU2Nyb2xsU3BsaWNlRnJvbSwgZW5kOiB0aGlzLnZpcnR1YWxTY3JvbGxOYlJvd3MgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxMYXN0TXVsdGlwbGUgPSB2aXJ0dWFsU2Nyb2xsQ3VycmVudE11bHRpcGxlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5jbGllbnRIZWlnaHQgKyAncHgnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbXV0YXRpb25PYnNlcnZhYmxlID0gbmV3IE9ic2VydmFibGU8TXV0YXRpb25SZWNvcmRbXT4oKG9ic2VydmVyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRNdXRhdGlvbnMgPSBtdXRhdGlvbnMuZmlsdGVyKChtdXRhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRpb24udGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0aW9uLnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICd0aCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0aW9uLmF0dHJpYnV0ZU5hbWUgPT09ICdzdHlsZSdcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZE11dGF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoZmlsdGVyZWRNdXRhdGlvbnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBjb25maWcgPSB7IGF0dHJpYnV0ZXM6IHRydWUsIHN1YnRyZWU6IHRydWUsIGF0dHJpYnV0ZUZpbHRlcjogWydzdHlsZSddIH07XG4gICAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnRoZWFkUmVmLm5hdGl2ZUVsZW1lbnQsIGNvbmZpZyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG11dGF0aW9uT2JzZXJ2YWJsZS5waXBlKGRlYm91bmNlVGltZSgyNTApLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgobXV0YXRpb25zKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0aWNreUZlYXR1cmVIYW5kbGVyKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghdGhpcy5pc0FzeW5jICYmICF0aGlzLmlzVmlydHVhbFNjcm9sbCkge1xuICAgICAgICAgICAgdGhpcy50YWJsZUZlYXR1cmVzSGFuZGxlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy50YWJsZUZlYXR1cmVzSGFuZGxlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWxlY3RSb3dzRmVhdHVyZUhhbmRsZXIoKTtcbiAgICAgICAgdGhpcy5zb3J0RmVhdHVyZUhhbmRsZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgICAgICB0aGlzLnRhYmxlRmVhdHVyZXNIYW5kbGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTW92ZXMgYW4gZWxlbWVudCB3aXRoaW4gdGhlIHJlbmRlcmVkIGRhdGEgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaXRlbUlkIC0gVGhlIGlkZW50aWZpZXIgKGRlZmF1bHQ6IGlkKSBvZiB0aGUgZWxlbWVudCB0byBtb3ZlLlxuICAgICAqIEBwYXJhbSBmcm9tSW5kZXggLSBUaGUgY3VycmVudCBpbmRleCBvZiB0aGUgZWxlbWVudCB0byBtb3ZlLlxuICAgICAqIEBwYXJhbSB0b0luZGV4IC0gVGhlIG5ldyBkZXNpcmVkIHBvc2l0aW9uIGZvciB0aGUgZWxlbWVudC5cbiAgICAgKi9cbiAgICBwdWJsaWMgbW92ZUl0ZW0oaXRlbUlkOiBudW1iZXIgfCBzdHJpbmcsIGZyb21JbmRleDogbnVtYmVyLCB0b0luZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbVBvc2l0aW9uID0gdGhpcy5kYXRhUmVuZGVyZWQuZmluZEluZGV4KGQgPT4gZCAmJiBkW3RoaXMucHJvcElkXSA9PT0gaXRlbUlkKTtcbiAgICAgICAgY29uc3QgbW92ZSA9IHRvSW5kZXggLSBmcm9tSW5kZXg7XG5cbiAgICAgICAgY29uc3Qgc291cmNlID0gWy4uLnRoaXMuZGF0YVJlbmRlcmVkXTtcbiAgICAgICAgY29uc3QgW2VsZW1lbnRUb01vdmVdID0gc291cmNlLnNwbGljZShpdGVtUG9zaXRpb24sIDEpO1xuXG4gICAgICAgIHNvdXJjZS5zcGxpY2UoaXRlbVBvc2l0aW9uICsgbW92ZSwgMCwgZWxlbWVudFRvTW92ZSk7XG5cbiAgICAgICAgdGhpcy5kYXRhUmVuZGVyZWQgPSBzb3VyY2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IGFsbCByb3dzXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdEFsbFJvd3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXVpVGFibGVWMlNlbGVjdGFibGVSb3dTZXJ2aWNlLnNlbGVjdEFsbFJvd3MoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbnNlbGVjdCBhbGwgcm93c1xuICAgICAqL1xuICAgIHB1YmxpYyB1bnNlbGVjdEFsbFJvd3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXVpVGFibGVWMlNlbGVjdGFibGVSb3dTZXJ2aWNlLnVuc2VsZWN0QWxsUm93cygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybiBhbiBhcnJheSB3aXRoIHRoZSBkYXRhIG1hdGNoaW5nIHRoZSBzdHJpbmcgZmlsdGVyXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RmlsdGVyZWREYXRhKCk6IERBVEFbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlcmVkRGF0YTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTb3J0IHRoZSB0YWJsZSdzIGRhdGEuXG4gICAgICogQHBhcmFtIHNvcnRzIEFuIGFycmF5IG9mIFNvcnRPcmRlci4gU2VlIHtAbGluayBTb3J0T3JkZXJ9XG4gICAgICovXG4gICAgcHVibGljIHNldFNvcnQoc29ydHM6IFNvcnRbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmV1aVRhYmxlVjJTb3J0U2VydmljZS5zZXRTb3J0cyhzb3J0cyk7XG4gICAgfVxuXG4gICAgcHVibGljIGZpbHRlckRhdGEoZmlsdGVyOiBzdHJpbmcsIHI6IERBVEFbXSk6IERBVEFbXSB7XG4gICAgICAgIGNvbnN0IHJvd3MgPSBmaWx0ZXIgP1xuICAgICAgICAgICAgci5maWx0ZXIoKHJvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmcgPSB0aGlzLmdldFByb3BzKHJvdywgZmlsdGVyKS5maWx0ZXIoKHApID0+IHAubWF0Y2ggPT09IHRydWUpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoaW5nPy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgfSkgOiByO1xuXG4gICAgICAgIHRoaXMuZXVpVGFibGVWMlNlbGVjdGFibGVSb3dTZXJ2aWNlLnVucmVnaXN0ZXJSb3dzKCk7XG4gICAgICAgIHRoaXMuZXVpVGFibGVWMlNlbGVjdGFibGVSb3dTZXJ2aWNlLnJlZ2lzdGVyUm93cyhyb3dzKTtcblxuICAgICAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IHJvd3M7XG5cbiAgICAgICAgcmV0dXJuIHJvd3M7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBzdGlja3lIZWFkZXJUb3BQb3NpdGlvbigpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0IHx8ICF0aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydFsnX3JlbmRlcmVkQ29udGVudE9mZnNldCddKSB7XG4gICAgICAgICAgICByZXR1cm4gJzAnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICgtdGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnRbJ19yZW5kZXJlZENvbnRlbnRPZmZzZXQnXSAtIDEpICsgJ3B4JztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHN0aWNreUZvb3RlckJvdHRvbVBvc2l0aW9uKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfHwgIXRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0WydfcmVuZGVyZWRDb250ZW50T2Zmc2V0J10pIHtcbiAgICAgICAgICAgIHJldHVybiAnLTFweCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnRbJ19yZW5kZXJlZENvbnRlbnRPZmZzZXQnXSAtIDEgKyAncHgnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0V2lkdGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudD8ucGFyZW50RWxlbWVudD8uY2xpZW50V2lkdGggfHwgMCkgKyAncHgnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgaG9zdFdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0YWJsZUZlYXR1cmVzSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWJsZUZlYXR1cmVzSGFuZGxlclN1YnNjcmlwdGlvbiA9IGNvbWJpbmVMYXRlc3QoXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRvciA/IHRoaXMucGFnaW5hdG9yLnBhZ2UkIDogbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKSxcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyID8gdGhpcy5maWx0ZXIuZmlsdGVyJCA6IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCksXG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlVjJTb3J0U2VydmljZS5zb3J0cyxcbiAgICAgICAgKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChbcGFnaW5hdGlvbiwgZmlsdGVyLCBzb3J0c106IFtFdWlQYWdpbmF0aW9uRXZlbnQsIHN0cmluZywgU29ydFtdXSkgPT4ge1xuICAgICAgICAgICAgbGV0IHIgPSBbLi4udGhpcy5kYXRhU3JjXTtcblxuICAgICAgICAgICAgaWYgKHNvcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByID0gdGhpcy5zb3J0RGF0YShzb3J0cywgcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHIgPSB0aGlzLmZpbHRlckRhdGEoZmlsdGVyLCByKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMucGFnaW5hdG9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3Iuc2V0TGVuZ3RoKHIubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICByID0gdGhpcy5wYWdpbmF0ZVJvd3MocGFnaW5hdGlvbiwgcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZGF0YVJlbmRlcmVkID0gcjtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0T25seVZpc2libGVSb3dzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ldWlUYWJsZVYyU2VsZWN0YWJsZVJvd1NlcnZpY2UudW5zZWxlY3RBbGxSb3dzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ldWlUYWJsZVYyU2VsZWN0YWJsZVJvd1NlcnZpY2UudW5yZWdpc3RlclJvd3MoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmV1aVRhYmxlVjJTZWxlY3RhYmxlUm93U2VydmljZS5yZWdpc3RlclJvd3ModGhpcy5kYXRhUmVuZGVyZWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5wcmVzZWxlY3RlZFJvd3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV1aVRhYmxlVjJTZWxlY3RhYmxlUm93U2VydmljZS5zZWxlY3RSb3dzKHRoaXMucHJlc2VsZWN0ZWRSb3dzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmhhc1N0aWNreUNvbHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0aWNreUZlYXR1cmVIYW5kbGVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc29ydERhdGEoc29ydENyaXRlcmlhczogeyBzb3J0OiBzdHJpbmcsIG9yZGVyOiBTb3J0T3JkZXIgfVtdLCByOiBEQVRBW10pOiBEQVRBW10ge1xuICAgICAgICBpZiAoc29ydENyaXRlcmlhcy5ldmVyeShjcml0ZXJpYSA9PiBjcml0ZXJpYS5vcmRlciA9PT0gbnVsbCkpIHtcbiAgICAgICAgICAgIHJldHVybiByLnNsaWNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gci5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNyaXRlcmlhIG9mIHNvcnRDcml0ZXJpYXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhVmFsdWUgPSB0aGlzLmdldE9ialByb3AoYSwgY3JpdGVyaWEuc29ydCk7XG4gICAgICAgICAgICAgICAgY29uc3QgYlZhbHVlID0gdGhpcy5nZXRPYmpQcm9wKGIsIGNyaXRlcmlhLnNvcnQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGFWYWx1ZSA9PT0gYlZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChhVmFsdWUgPT09IG51bGwgfHwgYVZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyaXRlcmlhLm9yZGVyID09PSAnYXNjJyA/IC0xIDogMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGJWYWx1ZSA9PT0gbnVsbCB8fCBiVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JpdGVyaWEub3JkZXIgPT09ICdhc2MnID8gMSA6IC0xO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYVZhbHVlID09PSAnYm9vbGVhbicgJiYgdHlwZW9mIGJWYWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcml0ZXJpYS5vcmRlciA9PT0gJ2FzYycgPyAoYVZhbHVlID8gLTEgOiAxKSA6IChiVmFsdWUgPyAtMSA6IDEpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYVZhbHVlID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgYlZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JpdGVyaWEub3JkZXIgPT09ICdhc2MnID8gYVZhbHVlIC0gYlZhbHVlIDogYlZhbHVlIC0gYVZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGFWYWx1ZVN0ciA9IHR5cGVvZiBhVmFsdWUgPT09ICdzdHJpbmcnID8gYVZhbHVlLnRvTG93ZXJDYXNlKCkgOiBhVmFsdWU7XG4gICAgICAgICAgICAgICAgY29uc3QgYlZhbHVlU3RyID0gdHlwZW9mIGJWYWx1ZSA9PT0gJ3N0cmluZycgPyBiVmFsdWUudG9Mb3dlckNhc2UoKSA6IGJWYWx1ZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBhcmlzb24gPSBjcml0ZXJpYS5vcmRlciA9PT0gJ2FzYycgPyBhVmFsdWVTdHIubG9jYWxlQ29tcGFyZShiVmFsdWVTdHIpIDogYlZhbHVlU3RyLmxvY2FsZUNvbXBhcmUoYVZhbHVlU3RyKTtcblxuICAgICAgICAgICAgICAgIGlmIChjb21wYXJpc29uICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wYXJpc29uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFnaW5hdGVSb3dzKHBhZ2luYXRpb246IEV1aVBhZ2luYXRpb25FdmVudCwgcjogREFUQVtdKTogREFUQVtdIHtcbiAgICAgICAgdGhpcy5wYWdlID0gcGFnaW5hdGlvbi5wYWdlO1xuICAgICAgICB0aGlzLnBhZ2VTaXplID0gcGFnaW5hdGlvbi5wYWdlU2l6ZTtcblxuICAgICAgICByZXR1cm4gci5zbGljZSh0aGlzLnBhZ2UgKiB0aGlzLnBhZ2VTaXplLCB0aGlzLnBhZ2UgKiB0aGlzLnBhZ2VTaXplICsgdGhpcy5wYWdlU2l6ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByb3VuZERvd24oaW5kZXg6IG51bWJlciwgbmJSb3dzOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihpbmRleCAvIG5iUm93cykgKiBuYlJvd3M7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNVbmRlZmluZWRJblJhbmdlKHN0YXJ0SW5kZXg6IG51bWJlciwgbGltaXQ6IG51bWJlciwgZGF0YVJlbmRlcmVkOiBEQVRBW10pOiBudW1iZXIge1xuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnRJbmRleDsgaSA8IHN0YXJ0SW5kZXggKyBsaW1pdDsgaSArKykge1xuICAgICAgICAgICAgaWYgKGRhdGFSZW5kZXJlZFtpXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGlja3lGZWF0dXJlSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Py5wYXJlbnRFbGVtZW50Py5jbGllbnRXaWR0aCB8fCAwO1xuXG4gICAgICAgICAgICBjb25zdCBwcm9jZXNzU3RpY2t5SXRlbXMgPSAoaXRlbXM6IEhUTUxUYWJsZUNlbGxFbGVtZW50W10pOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzU3RpY2t5Rmlyc3RDb2wgPSBpdGVtLm9mZnNldExlZnQgKyBpdGVtLmNsaWVudFdpZHRoIDwgY29udGFpbmVyV2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzU3RpY2t5TGFzdENvbCA9IGl0ZW0ub2Zmc2V0TGVmdCArIGl0ZW0uY2xpZW50V2lkdGggPiBjb250YWluZXJXaWR0aDtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtc1N0aWNreSA9IGlzU3RpY2t5Rmlyc3RDb2xcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbXMuZmlsdGVyKChpdCkgPT4gaXQub2Zmc2V0TGVmdCArIGl0LmNsaWVudFdpZHRoIDwgY29udGFpbmVyV2lkdGgpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGlzU3RpY2t5TGFzdENvbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtcy5maWx0ZXIoKGl0KSA9PiBpdC5vZmZzZXRMZWZ0ICsgaXQuY2xpZW50V2lkdGggPiBjb250YWluZXJXaWR0aClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogW107XG5cbiAgICAgICAgICAgICAgICAgICAgaXRlbXNTdGlja3kuZm9yRWFjaCgoaXQsIGopID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHcgPSBpdGVtc1N0aWNreVtqIC0gMV0/LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gaXNTdGlja3lGaXJzdENvbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQoaXRlbXNTdGlja3lbaiAtIDFdPy5zdHlsZS5sZWZ0LCAxMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHBhcnNlSW50KGl0ZW1zU3RpY2t5W2ogLSAxXT8uc3R5bGUucmlnaHQsIDEwKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU3RpY2t5Rmlyc3RDb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5zdHlsZS5sZWZ0ID0gKGogPT09IDAgPyAwIDogdyArIG9mZnNldCkgKyAncHgnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc1N0aWNreUxhc3RDb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5zdHlsZS5yaWdodCA9IChqID09PSAwID8gMCA6IHcgKyBvZmZzZXQpICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGogKyAxID09PSBpdGVtc1N0aWNreS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGl0LCBgZXVpLXRhYmxlLXYyX19jb2wtLXN0aWNreS1zaGFkb3dlZC0ke2lzU3RpY2t5Rmlyc3RDb2wgPyAnZmlyc3QnIDogJ2xhc3QnfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRoZWFkUmVmKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhJdGVtczogSFRNTFRhYmxlQ2VsbEVsZW1lbnRbXSA9IEFycmF5LmZyb20odGhpcy50aGVhZFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ldWktdGFibGUtdjJfX2NvbC0tc3RpY2t5JykpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3NTdGlja3lJdGVtcyh0aEl0ZW1zKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgYm9keVRySXRlbXMgPSBBcnJheS5mcm9tKHRoaXMudGJvZHlSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0cicpKTtcbiAgICAgICAgICAgIGJvZHlUckl0ZW1zLmZvckVhY2goKHRyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGRJdGVtczogSFRNTFRhYmxlQ2VsbEVsZW1lbnRbXSA9IEFycmF5LmZyb20odHIucXVlcnlTZWxlY3RvckFsbCgnLmV1aS10YWJsZS12Ml9fY29sLS1zdGlja3knKSk7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc1N0aWNreUl0ZW1zKHRkSXRlbXMpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRmb290UmVmKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGRJdGVtczogSFRNTFRhYmxlQ2VsbEVsZW1lbnRbXSA9IEFycmF5LmZyb20odGhpcy50Zm9vdFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ldWktdGFibGUtdjJfX2NvbC0tc3RpY2t5JykpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3NTdGlja3lJdGVtcyh0ZEl0ZW1zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMjUwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbGVjdFJvd3NGZWF0dXJlSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ldWlUYWJsZVYyU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0ZWRSb3dzLnBpcGUoc2tpcCgxKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHNlbGVjdGVkKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJvd3NTZWxlY3QuZW1pdChzZWxlY3RlZCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc29ydEZlYXR1cmVIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV1aVRhYmxlVjJTb3J0U2VydmljZS5zb3J0cy5waXBlKHNraXAoMSksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChzb3J0czogU29ydFtdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdChzb3J0cyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UHJvcHMocm93OiBEQVRBLCBmaWx0ZXI6IHN0cmluZyk6IHsga2V5OiBzdHJpbmc7IG1hdGNoOiBib29sZWFuOyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH1bXSB7XG4gICAgICAgIGNvbnN0IGlzT2JqZWN0ID0gKHZhbDogc3RyaW5nIHwgbnVtYmVyKTogYm9vbGVhbiA9PiB2YWwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCc7XG4gICAgICAgIGNvbnN0IGFkZERlbGltaXRlciA9IChhOiBzdHJpbmcsIGI6IHN0cmluZyk6IHN0cmluZyA9PiAoYSAmJiBhICE9PSAnMCcgPyBgJHthfS4ke2J9YCA6IGIpO1xuICAgICAgICBjb25zdCBwcm9wczogeyBrZXk6IHN0cmluZywgbWF0Y2g6IGJvb2xlYW4sIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfVtdID0gW107XG4gICAgICAgIGNvbnN0IHBhdGhzID0gKHBhdGhPYmo6IERBVEEsIGhlYWQgPSAnJyk6IHN0cmluZ1tdID0+IHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhwYXRoT2JqKS5yZWR1Y2UoKHByb2R1Y3QsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gYWRkRGVsaW1pdGVyKGhlYWQsIGtleSk7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAodjogc3RyaW5nIHwgbnVtYmVyKTogYm9vbGVhbiA9PiB2ICYmIHR5cGVvZiB2ICE9PSAnb2JqZWN0JyAmJiB2Py50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXI/LnRyaW0oKS50b0xvd2VyQ2FzZSgpKSAhPT0gLTE7XG5cbiAgICAgICAgICAgICAgICBpZiAoa2V5ICE9PSAnMCcgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5wdXNoKHsga2V5OiBhZGREZWxpbWl0ZXIoaGVhZCwga2V5KSwgbWF0Y2g6IG1hdGNoKHZhbHVlKSwgdmFsdWUgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzT2JqZWN0KHZhbHVlKSA/IHByb2R1Y3QuY29uY2F0KHBhdGhzKHZhbHVlLCBmdWxsUGF0aCkpIDogcHJvZHVjdC5jb25jYXQoZnVsbFBhdGgpO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBhdGhzKHJvdyk7XG4gICAgICAgIHJldHVybiBwcm9wcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE9ialByb3Aob2JqOiBEQVRBLCBwcm9wOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gcHJvcCA/IHByb3Auc3BsaXQoJy4nKS5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IChwcmV2ID8gcHJldltjdXJyXSA6IG51bGwpLCBvYmogfHwgc2VsZikgOiBudWxsO1xuICAgIH1cbn1cbiIsIjwhLS0gPGJ1dHRvbiAoY2xpY2spPVwidGVzdCgxOTI1MClcIj4xOTI1MDwvYnV0dG9uPlxuPGJ1dHRvbiAoY2xpY2spPVwidGVzdCg3ODk1KVwiPjc4OTU8L2J1dHRvbj5cbjxidXR0b24gKGNsaWNrKT1cInRlc3QoMTY4NjApXCI+MTY4NjA8L2J1dHRvbj5cbjxidXR0b24gKGNsaWNrKT1cInRlc3QoMTY4NzApXCI+MTY4NzA8L2J1dHRvbj5cbjxidXR0b24gKGNsaWNrKT1cInRlc3QoMTY4ODApXCI+MTY4ODA8L2J1dHRvbj5cbjxidXR0b24gKGNsaWNrKT1cInRlc3QoMTY4OTApXCI+MTY4OTA8L2J1dHRvbj5cbjxidXR0b24gKGNsaWNrKT1cInRlc3QoMTY5MDApXCI+MTY5MDA8L2J1dHRvbj5cbjxidXR0b24gKGNsaWNrKT1cInRlc3QoMjY5OTgpXCI+MjY5OTg8L2J1dHRvbj5cbjxidXR0b24gKGNsaWNrKT1cInRlc3QoMjgwMDApXCI+MjgwMDA8L2J1dHRvbj4gLS0+XG5AaWYgKGlzVmlydHVhbFNjcm9sbCkge1xuICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAgICAgI2Nka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydFxuICAgICAgICAjY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0RWxlbWVudFxuICAgICAgICBjbGFzcz1cImV1aS10YWJsZS12Ml9fc2Nyb2xsLXZpZXdwb3J0XCJcbiAgICAgICAgW2l0ZW1TaXplXT1cIml0ZW1TaXplXCJcbiAgICAgICAgW3N0eWxlLm92ZXJmbG93XT1cImNka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydE92ZXJmbG93VmFsdWVcIlxuICAgICAgICB0YWJpbmRleD1cIjBcIj5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwie3sgY3NzQ2xhc3NlcyB9fVwiIFtzdHlsZS53aWR0aF09XCJob3N0V2lkdGhcIj5cbiAgICAgICAgICAgIEBpZiAoaGVhZGVyVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICA8dGhlYWQgI3RoZWFkUmVmIFtzdHlsZS50b3BdPVwic3RpY2t5SGVhZGVyVG9wUG9zaXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChib2R5VGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICA8dGJvZHkgI3Rib2R5UmVmPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpjZGtWaXJ0dWFsRm9yPVwibGV0IHJvdyBvZiBkYXRhUmVuZGVyZWQ7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChyb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYm9keVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIGluZGV4OiBpIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNrZWxldG9uTG9hZGluZ1wiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIEBpZiAobm9EYXRhVGVtcGxhdGUgJiYgKGRhdGE/Lmxlbmd0aCA9PT0gMCB8fCBkYXRhUmVuZGVyZWQ/Lmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJub0RhdGFUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChmb290ZXJUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgIDx0Zm9vdCAjdGZvb3RSZWYgW3N0eWxlLmJvdHRvbV09XCJzdGlja3lGb290ZXJCb3R0b21Qb3NpdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9vdGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvdGZvb3Q+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdGFibGU+XG4gICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG59IEBlbHNlIHtcbiAgICBAaWYgKGhlYWRlclRlbXBsYXRlKSB7XG4gICAgICAgIDx0aGVhZCAjdGhlYWRSZWY+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3RoZWFkPlxuICAgIH1cbiAgICBAaWYgKGJvZHlUZW1wbGF0ZSkge1xuICAgICAgICA8dGJvZHkgI3Rib2R5UmVmPlxuICAgICAgICAgICAgQGZvciAocm93IG9mIGRhdGFSZW5kZXJlZDsgbGV0IGkgPSAkaW5kZXg7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYm9keVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCBpbmRleDogaSB9XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKG5vRGF0YVRlbXBsYXRlICYmIChkYXRhPy5sZW5ndGggPT09IDAgfHwgZGF0YVJlbmRlcmVkPy5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vRGF0YVRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC90Ym9keT5cbiAgICB9XG4gICAgQGlmIChmb290ZXJUZW1wbGF0ZSkge1xuICAgICAgICA8dGZvb3QgI3Rmb290UmVmPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvb3RlclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC90Zm9vdD5cbiAgICB9XG59XG5cbjxuZy10ZW1wbGF0ZSAjc2tlbGV0b25Mb2FkaW5nPlxuICAgIDx0ciBbc3R5bGUuaGVpZ2h0LnB4XT1cIml0ZW1TaXplXCI+XG4gICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgX18gb2YgbmJDb2xzXCI+PGV1aS1za2VsZXRvbiBsaW5lIGV1aVJvdW5kZWQ+PC9ldWktc2tlbGV0b24+PC90ZD5cbiAgICA8L3RyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
581
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRhYmxlLXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V1aS10YWJsZS12Mi9ldWktdGFibGUtdjIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLXRhYmxlLXYyL2V1aS10YWJsZS12Mi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQTRDLFNBQVMsRUFBaUIsVUFBVSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFDckosaUJBQWlCLEVBQUUsdUJBQXVCLEVBQXFCLE1BQU0sRUFBRSxZQUFZLEVBQTRCLGVBQWUsRUFDbkgsTUFBTSxlQUFlLENBQUM7QUFFckMsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJeEgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFN0QsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFaEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7O0FBRzdFLE1BQU0sQ0FBTixJQUFZLGlCQUdYO0FBSEQsV0FBWSxpQkFBaUI7SUFDekIsOEJBQVMsQ0FBQTtJQUNULGtDQUFhLENBQUE7QUFDakIsQ0FBQyxFQUhXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFHNUI7QUFnQkQsTUFBTSxPQUFPLG1CQUFtQjtJQUM1QixJQUNXLFVBQVU7UUFDakIsT0FBTztZQUNILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsZ0NBQWdDLENBQUM7WUFDeEUsSUFBSSxDQUFDLGVBQWUs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RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUVFLGdCQUFnQjtzQkFBdkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFXQyxTQUFTO3NCQUEvQyxlQUFlO3VCQUFDLG9CQUFvQjtnQkFFK0Isd0JBQXdCO3NCQUEzRixTQUFTO3VCQUFDLDBCQUEwQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDcUMsK0JBQStCO3NCQUEzSCxTQUFTO3VCQUFDLGlDQUFpQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUMxRCxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ0UsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNFLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFFWCxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIENvbnRlbnRDaGlsZHJlbiwgUXVlcnlMaXN0LCBBZnRlckNvbnRlbnRJbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0LCBFbGVtZW50UmVmLCBib29sZWFuQXR0cmlidXRlLCBIb3N0QmluZGluZyxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzLCBudW1iZXJBdHRyaWJ1dGUsIENoYW5nZURldGVjdG9yUmVmLFxuICAgIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgY29tYmluZUxhdGVzdCwgZGVib3VuY2VUaW1lLCBza2lwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExpc3RSYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5cbmltcG9ydCB7IEV1aVBhZ2luYXRpb25FdmVudCwgRXVpUGFnaW5hdG9yQ29tcG9uZW50IH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL2V1aS1wYWdpbmF0b3InO1xuaW1wb3J0IHsgRXVpVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBCYXNlU3RhdGVzRGlyZWN0aXZlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL3NoYXJlZCc7XG5cbmltcG9ydCB7IEV1aVRhYmxlVjJTZWxlY3RhYmxlUm93U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZXVpLXRhYmxlLXYyLXNlbGVjdGFibGUtcm93LnNlcnZpY2UnO1xuaW1wb3J0IHsgRXVpVGFibGVWMkZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4vZmlsdGVyL2V1aS10YWJsZS12Mi1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEV1aVRhYmxlVjJTb3J0U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZXVpLXRhYmxlLXYyLXNvcnQuc2VydmljZSc7XG5pbXBvcnQgeyBTb3J0LCBTb3J0T3JkZXIgfSBmcm9tICcuL21vZGVscy9zb3J0Lm1vZGVsJztcblxuZXhwb3J0IGVudW0gU2Nyb2xsaW5EaXJlY3Rpb24ge1xuICAgIFVQID0gJ1VQJyxcbiAgICBET1dOID0gJ0RPV04nLFxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2V1aS10YWJsZS12MiwgdGFibGVbZXVpVGFibGVWMl0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktdGFibGUtdjIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3N0eWxlcy9faW5kZXguc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbRXVpVGFibGVWMlNlbGVjdGFibGVSb3dTZXJ2aWNlLCBFdWlUYWJsZVYyU29ydFNlcnZpY2VdLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRpcmVjdGl2ZTogQmFzZVN0YXRlc0RpcmVjdGl2ZSxcbiAgICAgICAgICAgIGlucHV0czogW10sXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpVGFibGVWMkNvbXBvbmVudDxEQVRBID0gdW5rbm93bj4gaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBwdWJsaWMgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuYmFzZVN0YXRlc0RpcmVjdGl2ZS5nZXRDc3NDbGFzc2VzKCdldWktdGFibGUtZGVmYXVsdCBldWktdGFibGUtdjInKSxcbiAgICAgICAgICAgIHRoaXMuaXNWaXJ0dWFsU2Nyb2xsID8gJ2V1aS10YWJsZS12Mi0tdmlydHVhbC1zY3JvbGwnIDogJycsXG4gICAgICAgICAgICB0aGlzLmhhc1N0aWNreUhlYWRlciA/ICdldWktdGFibGUtdjItLXN0aWNreSBldWktdGFibGUtdjItLXN0aWNreS1oZWFkZXInIDogJycsXG4gICAgICAgICAgICB0aGlzLmhhc1N0aWNreUZvb3RlciA/ICdldWktdGFibGUtdjItLXN0aWNreSBldWktdGFibGUtdjItLXN0aWNreS1mb290ZXInIDogJycsXG4gICAgICAgICAgICB0aGlzLmhhc1N0aWNreUNvbHMgPyAnZXVpLXRhYmxlLXYyLS1zdGlja3kgZXVpLXRhYmxlLXYyLS1zdGlja3ktY29scycgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuaXNUYWJsZVJlc3BvbnNpdmUgPyAnZXVpLXRhYmxlLWRlZmF1bHQtLXJlc3BvbnNpdmUnIDogJycsXG4gICAgICAgICAgICB0aGlzLmlzQ29sc09yZGVyYWJsZSA/ICdldWktdGFibGUtdjItLWNvbHMtb3JkZXJhYmxlJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPyAnZXVpLXRhYmxlLXYyLS1sb2FkaW5nJyA6ICcnLFxuICAgICAgICBdXG4gICAgICAgICAgICAuam9pbignICcpXG4gICAgICAgICAgICAudHJpbSgpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGRhdGE6IERBVEFbXSA9IFtdO1xuICAgIEBJbnB1dCgpIHByb3BJZCA9ICdpZCc7XG4gICAgQElucHV0KCkgaXRlbVNpemUgPSA0MTtcbiAgICBASW5wdXQoKSBwYWdpbmF0b3I6IEV1aVBhZ2luYXRvckNvbXBvbmVudDtcbiAgICBASW5wdXQoKSBmaWx0ZXI6IEV1aVRhYmxlVjJGaWx0ZXJDb21wb25lbnQ7XG4gICAgQElucHV0KCkgcHJlc2VsZWN0ZWRSb3dzOiBEQVRBW10gPSBbXTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc1ZpcnR1YWxTY3JvbGwgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNWaXJ0dWFsU2Nyb2xsQ2FjaGUgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzU3RpY2t5SGVhZGVyID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhhc1N0aWNreUZvb3RlciA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoYXNTdGlja3lDb2xzID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzVGFibGVSZXNwb25zaXZlID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzQXN5bmMgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB2aXJ0dWFsU2Nyb2xsQXN5bmNJdGVtc0xlbmd0aCA9IDA7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdmlydHVhbFNjcm9sbE5iUm93cyA9IDUwO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0NvbHNPcmRlcmFibGUgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzU2VsZWN0T25seVZpc2libGVSb3dzID0gdHJ1ZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNUYWJsZUJvcmRlcmVkID0gZmFsc2U7XG4gICAgLyoqIEBkZXByZWNhdGVkIFRoaXMgd2lsbCBiZSByZW1vdmVkIGluIG5leHQgdmVyc2lvbiAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc1RhYmxlQ29uZGVuc2VkID0gZmFsc2U7XG5cbiAgICBwcm90ZWN0ZWQgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcbiAgICBwcm90ZWN0ZWQgYm9keVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogREFUQTsgaW5kZXg6IG51bWJlciB9PjtcbiAgICBwcm90ZWN0ZWQgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcbiAgICBwcm90ZWN0ZWQgbm9EYXRhVGVtcGxhdGU6IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcbiAgICBwcm90ZWN0ZWQgbG9hZGluZyA9IFtdO1xuICAgIHByb3RlY3RlZCBuYkNvbHM6IEhUTUxUYWJsZUNlbGxFbGVtZW50W10gPSBbXTtcbiAgICBwcm90ZWN0ZWQgZGF0YVJlbmRlcmVkOiBEQVRBW10gPSBbXTtcbiAgICBwcm90ZWN0ZWQgY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0T3ZlcmZsb3dWYWx1ZTogKCdoaWRkZW4nIHwgJ2F1dG8nKSA9ICdhdXRvJztcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oRXVpVGVtcGxhdGVEaXJlY3RpdmUpIHRlbXBsYXRlczogUXVlcnlMaXN0PEV1aVRlbXBsYXRlRGlyZWN0aXZlPjtcblxuICAgIEBWaWV3Q2hpbGQoJ2Nka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwcm90ZWN0ZWQgY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG4gICAgQFZpZXdDaGlsZCgnY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0RWxlbWVudCcsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRWxlbWVudFJlZiB9KSBwcm90ZWN0ZWQgY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0RWxlbWVudDogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCd0aGVhZFJlZicpIHRoZWFkUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCd0Ym9keVJlZicpIHRib2R5UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCd0Zm9vdFJlZicpIHRmb290UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIEBPdXRwdXQoKSBzY3JvbGxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHJvd3NTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPERBVEFbXT4oKTtcbiAgICBAT3V0cHV0KCkgc29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydFtdPigpO1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSB2aXJ0dWFsU2Nyb2xsTGFzdE11bHRpcGxlID0gMDtcbiAgICBwcml2YXRlIHZpcnR1YWxTY3JvbGxTcGxpY2VGcm9tID0gMDtcbiAgICBwcml2YXRlIHNjcm9sbGVkSW5kZXggPSAwO1xuICAgIHByaXZhdGUgbmJJdGVtRGlzcGxheWVkID0gMDtcbiAgICBwcml2YXRlIHNjcm9sbGluZ0RpcmVjdGlvbjogU2Nyb2xsaW5EaXJlY3Rpb247XG4gICAgcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyO1xuICAgIHByaXZhdGUgZGF0YVNyYzogREFUQVtdID0gW107XG4gICAgcHJpdmF0ZSBwYWdlID0gMDtcbiAgICBwcml2YXRlIHBhZ2VTaXplID0gMDtcbiAgICBwcml2YXRlIHRhYmxlRmVhdHVyZXNIYW5kbGVyU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIHByaXZhdGUgZmlsdGVyZWREYXRhOiBEQVRBW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgICBwcml2YXRlIGV1aVRhYmxlVjJTZWxlY3RhYmxlUm93U2VydmljZTogRXVpVGFibGVWMlNlbGVjdGFibGVSb3dTZXJ2aWNlPERBVEE+LFxuICAgICAgICAgICAgICAgIHByaXZhdGUgZXVpVGFibGVWMlNvcnRTZXJ2aWNlOiBFdWlUYWJsZVYyU29ydFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBiYXNlU3RhdGVzRGlyZWN0aXZlOiBCYXNlU3RhdGVzRGlyZWN0aXZlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgICAgICAgICApIHt9XG5cbiAgICBuZ09uQ2hhbmdlcyhjOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXVpVGFibGVWMlNlbGVjdGFibGVSb3dTZXJ2aWNlLnNldFByb3BJZCh0aGlzLnByb3BJZCk7XG4gICAgICAgIGlmICh0aGlzLmlzVmlydHVhbFNjcm9sbCkge1xuICAgICAgICAgICAgaWYgKGMuZGF0YSAmJiBjLmRhdGEuaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhUmVuZGVyZWQgPSBbLi4uYy5kYXRhLmN1cnJlbnRWYWx1ZSwgLi4uQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy52aXJ0dWFsU2Nyb2xsQXN5bmNJdGVtc0xlbmd0aCAtIGMuZGF0YS5jdXJyZW50VmFsdWUubGVuZ3RoIH0pXTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZXVpVGFibGVWMlNlbGVjdGFibGVSb3dTZXJ2aWNlLnVucmVnaXN0ZXJSb3dzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ldWlUYWJsZVYyU2VsZWN0YWJsZVJvd1NlcnZpY2UucmVnaXN0ZXJSb3dzKHRoaXMuZGF0YVJlbmRlcmVkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGMuZGF0YSAmJiAhYy5kYXRhLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQXN5bmMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gWy4uLnRoaXMuZGF0YVJlbmRlcmVkXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNWaXJ0dWFsU2Nyb2xsQ2FjaGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVJlbmRlcmVkID0gWy4uLnNvdXJjZS5zbGljZSgwLCB0aGlzLnZpcnR1YWxTY3JvbGxTcGxpY2VGcm9tKSwgLi4uYy5kYXRhLmN1cnJlbnRWYWx1ZSwgLi4uc291cmNlLnNsaWNlKHRoaXMudmlydHVhbFNjcm9sbFNwbGljZUZyb20gKyB0aGlzLnZpcnR1YWxTY3JvbGxOYlJvd3MpXTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVJlbmRlcmVkID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLkFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMudmlydHVhbFNjcm9sbFNwbGljZUZyb20gLSB0aGlzLm5iSXRlbURpc3BsYXllZCB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5zb3VyY2Uuc2xpY2UodGhpcy52aXJ0dWFsU2Nyb2xsU3BsaWNlRnJvbSAtIHRoaXMubmJJdGVtRGlzcGxheWVkLCB0aGlzLnZpcnR1YWxTY3JvbGxTcGxpY2VGcm9tKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmRhdGEuY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnNvdXJjZS5zbGljZSh0aGlzLnZpcnR1YWxTY3JvbGxTcGxpY2VGcm9tICsgdGhpcy52aXJ0dWFsU2Nyb2xsTmJSb3dzLCB0aGlzLnZpcnR1YWxTY3JvbGxTcGxpY2VGcm9tICsgdGhpcy52aXJ0dWFsU2Nyb2xsTmJSb3dzICsgdGhpcy5uYkl0ZW1EaXNwbGF5ZWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLkFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMudmlydHVhbFNjcm9sbEFzeW5jSXRlbXNMZW5ndGggLSAodGhpcy52aXJ0dWFsU2Nyb2xsU3BsaWNlRnJvbSArIHRoaXMudmlydHVhbFNjcm9sbE5iUm93cyArIHRoaXMubmJJdGVtRGlzcGxheWVkKSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoYyAmJiBjLnZpcnR1YWxTY3JvbGxBc3luY0l0ZW1zTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYy52aXJ0dWFsU2Nyb2xsQXN5bmNJdGVtc0xlbmd0aC5wcmV2aW91c1ZhbHVlID4gYy52aXJ0dWFsU2Nyb2xsQXN5bmNJdGVtc0xlbmd0aC5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFSZW5kZXJlZCA9IHRoaXMuZGF0YVJlbmRlcmVkLnNsaWNlKDAsIGMudmlydHVhbFNjcm9sbEFzeW5jSXRlbXNMZW5ndGguY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhUmVuZGVyZWQgPSBbLi4uYy5kYXRhLmN1cnJlbnRWYWx1ZSwgLi4uQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy52aXJ0dWFsU2Nyb2xsQXN5bmNJdGVtc0xlbmd0aCAtIGMuZGF0YS5jdXJyZW50VmFsdWUubGVuZ3RoIH0pXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXVpVGFibGVWMlNlbGVjdGFibGVSb3dTZXJ2aWNlLnVucmVnaXN0ZXJSb3dzKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXVpVGFibGVWMlNlbGVjdGFibGVSb3dTZXJ2aWNlLnJlZ2lzdGVyUm93cyh0aGlzLmRhdGFSZW5kZXJlZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2Nyb2xsaW5nRGlyZWN0aW9uID09PSBTY3JvbGxpbkRpcmVjdGlvbi5ET1dOKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHRoaXMuaGFzVW5kZWZpbmVkSW5SYW5nZSh0aGlzLnNjcm9sbGVkSW5kZXgsIHRoaXMubmJJdGVtRGlzcGxheWVkLCB0aGlzLmRhdGFSZW5kZXJlZCkgIT09IC0xIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxlZEluZGV4ID09PSB0aGlzLnZpcnR1YWxTY3JvbGxTcGxpY2VGcm9tICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMuZGF0YVJlbmRlcmVkW3RoaXMuc2Nyb2xsZWRJbmRleCAtIDFdKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzVW5kZWZpbmVkSW5SYW5nZSh0aGlzLnNjcm9sbGVkSW5kZXgsIHRoaXMubmJJdGVtRGlzcGxheWVkLCB0aGlzLmRhdGFSZW5kZXJlZCkgIT09IHRoaXMuZGF0YVJlbmRlcmVkLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdyZXBvc2l0aW9uIGRvd24nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LnNjcm9sbFRvSW5kZXgodGhpcy52aXJ0dWFsU2Nyb2xsU3BsaWNlRnJvbSArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2Nyb2xsaW5nRGlyZWN0aW9uID09PSBTY3JvbGxpbkRpcmVjdGlvbi5VUCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaGFzVW5kZWZpbmVkSW5SYW5nZSh0aGlzLnNjcm9sbGVkSW5kZXgsIHRoaXMubmJJdGVtRGlzcGxheWVkLCB0aGlzLmRhdGFSZW5kZXJlZCkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ3JlcG9zaXRpb24gdXAnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LnNjcm9sbFRvSW5kZXgodGhpcy52aXJ0dWFsU2Nyb2xsU3BsaWNlRnJvbSArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGlja3lGZWF0dXJlSGFuZGxlcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjICYmIGMuZGF0YSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxlbmd0aENoYW5nZWQgPSB0aGlzLmRhdGFTcmMubGVuZ3RoICE9PSBjLmRhdGEuY3VycmVudFZhbHVlLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFTcmMgPSBjLmRhdGEuY3VycmVudFZhbHVlID8gWy4uLmMuZGF0YS5jdXJyZW50VmFsdWVdIDogW107XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IgJiYgbGVuZ3RoQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5nb0ZpcnN0UGFnZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0FzeW5jICYmICFjLmRhdGEuaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVGZWF0dXJlc0hhbmRsZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUZlYXR1cmVzSGFuZGxlcigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZXVpVGFibGVWMlNlbGVjdGFibGVSb3dTZXJ2aWNlLnJlZ2lzdGVyUm93cyh0aGlzLmRhdGFTcmMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGMgJiYgYy5wYWdpbmF0b3I/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLnNldExlbmd0aCh0aGlzLmRhdGEubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWMucGFnaW5hdG9yPy5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IuZ29GaXJzdFBhZ2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIHRoaXMuZGF0YSBjYW4gYmUgY2hhbmdlZCBhbnl0aW1lLCB0aGVuIHRoaXMgZWxzZSBjYW4gYmUgZXhlY3V0ZWQgYXQgdGhhdCB0aW1lLCB0ZXN0aW5nIHRoaXMucGFnaW5hdG9yIGFsbG93cyB0byBtYWtlIHN1cmVcbiAgICAgICAgICAgICAgICAvLyB0aGUgdXNlciB3YW50cyB0byBkaXNhYmxlIHBhZ2luYXRpb24gb3IgY2hhbmdlIHRoZSBkYXRhc291cmNlXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnBhZ2luYXRvcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFSZW5kZXJlZCA9IHRoaXMuZGF0YVNyYztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYyAmJiBjLnByZXNlbGVjdGVkUm93cyAmJiAhYy5wcmVzZWxlY3RlZFJvd3MuaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlVjJTZWxlY3RhYmxlUm93U2VydmljZS5zZWxlY3RSb3dzKGMucHJlc2VsZWN0ZWRSb3dzLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhU3JjID0gWy4uLnRoaXMuZGF0YV07XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5nZXRUeXBlKCkgPT09ICdoZWFkZXInKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXRlbS5nZXRUeXBlKCkgPT09ICdib2R5Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9keVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLmdldFR5cGUoKSA9PT0gJ2Zvb3RlcicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvb3RlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLmdldFR5cGUoKSA9PT0gJ25vRGF0YScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vRGF0YVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGVzdChpbmRleCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydC5zY3JvbGxUb0luZGV4KGluZGV4KVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGlja3lGZWF0dXJlSGFuZGxlcigpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzVmlydHVhbFNjcm9sbCkge1xuICAgICAgICAgICAgdGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ/LnJlbmRlcmVkUmFuZ2VTdHJlYW1cbiAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoNTAwKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGxpc3RSYW5nZTogTGlzdFJhbmdlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RpY2t5RmVhdHVyZUhhbmRsZXIoKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgdGhlYWRFbGVtZW50cyA9IEFycmF5LmZyb20odGhpcy50aGVhZFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RoJykpO1xuICAgICAgICAgICAgdGhpcy5uYkNvbHMgPSBuZXcgQXJyYXkodGhlYWRFbGVtZW50cy5sZW5ndGgpO1xuXG4gICAgICAgICAgICB0aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydC5zY3JvbGxlZEluZGV4Q2hhbmdlXG4gICAgICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwMCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChzY3JvbGxlZEluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNBc3luYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxpbmdEaXJlY3Rpb24gPSBzY3JvbGxlZEluZGV4ID4gdGhpcy5zY3JvbGxlZEluZGV4ID8gU2Nyb2xsaW5EaXJlY3Rpb24uRE9XTiA6IFNjcm9sbGluRGlyZWN0aW9uLlVQO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxlZEluZGV4ID0gc2Nyb2xsZWRJbmRleDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQuc2V0VG90YWxDb250ZW50U2l6ZSh0aGlzLnZpcnR1YWxTY3JvbGxBc3luY0l0ZW1zTGVuZ3RoICogdGhpcy5pdGVtU2l6ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNjcm9sbE9mZnNldCA9IHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0Lm1lYXN1cmVTY3JvbGxPZmZzZXQoJ3RvcCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kSW5kZXggPSBNYXRoLmNlaWwoKHNjcm9sbE9mZnNldCArIHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LmdldFZpZXdwb3J0U2l6ZSgpKSAvIHRoaXMuaXRlbVNpemUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYkl0ZW1EaXNwbGF5ZWQgPSBlbmRJbmRleCAtIHNjcm9sbGVkSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2aXJ0dWFsU2Nyb2xsQ3VycmVudE11bHRpcGxlID0gTWF0aC5mbG9vcigoc2Nyb2xsZWRJbmRleCArIHRoaXMubmJJdGVtRGlzcGxheWVkKSAvIHRoaXMudmlydHVhbFNjcm9sbE5iUm93cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY3JvbGxlZEluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFSZW5kZXJlZFtzY3JvbGxlZEluZGV4XSB8fCAodGhpcy5zY3JvbGxpbmdEaXJlY3Rpb24gPT09IFNjcm9sbGluRGlyZWN0aW9uLlVQICYmIHRoaXMuZGF0YVJlbmRlcmVkW3Njcm9sbGVkSW5kZXggLSAxXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ3ZpcnR1YWxTY3JvbGxDdXJyZW50TXVsdGlwbGUnLCB2aXJ0dWFsU2Nyb2xsQ3VycmVudE11bHRpcGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygndGhpcy52aXJ0dWFsU2Nyb2xsTGFzdE11bHRpcGxlJywgdGhpcy52aXJ0dWFsU2Nyb2xsTGFzdE11bHRpcGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygndmlydHVhbFNjcm9sbEN1cnJlbnRNdWx0aXBsZSA+IHRoaXMudmlydHVhbFNjcm9sbExhc3RNdWx0aXBsZScsIHZpcnR1YWxTY3JvbGxDdXJyZW50TXVsdGlwbGUgPiB0aGlzLnZpcnR1YWxTY3JvbGxMYXN0TXVsdGlwbGUpXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpcnR1YWxTY3JvbGxDdXJyZW50TXVsdGlwbGUgPiB0aGlzLnZpcnR1YWxTY3JvbGxMYXN0TXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlydHVhbFNjcm9sbFNwbGljZUZyb20gPSB2aXJ0dWFsU2Nyb2xsQ3VycmVudE11bHRpcGxlICogdGhpcy52aXJ0dWFsU2Nyb2xsTmJSb3dzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxDaGFuZ2UuZW1pdCh7IHN0YXJ0OiB2aXJ0dWFsU2Nyb2xsQ3VycmVudE11bHRpcGxlICogdGhpcy52aXJ0dWFsU2Nyb2xsTmJSb3dzLCBlbmQ6IHRoaXMudmlydHVhbFNjcm9sbE5iUm93cyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxTcGxpY2VGcm9tID0gdGhpcy5yb3VuZERvd24oc2Nyb2xsZWRJbmRleCwgdGhpcy52aXJ0dWFsU2Nyb2xsTmJSb3dzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsQ2hhbmdlLmVtaXQoeyBzdGFydDogdGhpcy52aXJ0dWFsU2Nyb2xsU3BsaWNlRnJvbSwgZW5kOiB0aGlzLnZpcnR1YWxTY3JvbGxOYlJvd3MgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxMYXN0TXVsdGlwbGUgPSB2aXJ0dWFsU2Nyb2xsQ3VycmVudE11bHRpcGxlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5jbGllbnRIZWlnaHQgKyAncHgnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbXV0YXRpb25PYnNlcnZhYmxlID0gbmV3IE9ic2VydmFibGU8TXV0YXRpb25SZWNvcmRbXT4oKG9ic2VydmVyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRNdXRhdGlvbnMgPSBtdXRhdGlvbnMuZmlsdGVyKChtdXRhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRpb24udGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0aW9uLnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICd0aCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0aW9uLmF0dHJpYnV0ZU5hbWUgPT09ICdzdHlsZSdcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZE11dGF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoZmlsdGVyZWRNdXRhdGlvbnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy50aGVhZFJlZikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHsgYXR0cmlidXRlczogdHJ1ZSwgc3VidHJlZTogdHJ1ZSwgYXR0cmlidXRlRmlsdGVyOiBbJ3N0eWxlJ10gfTtcbiAgICAgICAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnRoZWFkUmVmLm5hdGl2ZUVsZW1lbnQsIGNvbmZpZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG11dGF0aW9uT2JzZXJ2YWJsZS5waXBlKGRlYm91bmNlVGltZSgyNTApLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgobXV0YXRpb25zKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0aWNreUZlYXR1cmVIYW5kbGVyKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghdGhpcy5pc0FzeW5jICYmICF0aGlzLmlzVmlydHVhbFNjcm9sbCkge1xuICAgICAgICAgICAgdGhpcy50YWJsZUZlYXR1cmVzSGFuZGxlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy50YWJsZUZlYXR1cmVzSGFuZGxlcigpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5wcmVzZWxlY3RlZFJvd3MpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ldWlUYWJsZVYyU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0Um93cyh0aGlzLnByZXNlbGVjdGVkUm93cyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdFJvd3NGZWF0dXJlSGFuZGxlcigpO1xuICAgICAgICB0aGlzLnNvcnRGZWF0dXJlSGFuZGxlcigpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgICAgIHRoaXMudGFibGVGZWF0dXJlc0hhbmRsZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNb3ZlcyBhbiBlbGVtZW50IHdpdGhpbiB0aGUgcmVuZGVyZWQgZGF0YSBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtSWQgLSBUaGUgaWRlbnRpZmllciAoZGVmYXVsdDogaWQpIG9mIHRoZSBlbGVtZW50IHRvIG1vdmUuXG4gICAgICogQHBhcmFtIGZyb21JbmRleCAtIFRoZSBjdXJyZW50IGluZGV4IG9mIHRoZSBlbGVtZW50IHRvIG1vdmUuXG4gICAgICogQHBhcmFtIHRvSW5kZXggLSBUaGUgbmV3IGRlc2lyZWQgcG9zaXRpb24gZm9yIHRoZSBlbGVtZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBtb3ZlSXRlbShpdGVtSWQ6IG51bWJlciB8IHN0cmluZywgZnJvbUluZGV4OiBudW1iZXIsIHRvSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBpdGVtUG9zaXRpb24gPSB0aGlzLmRhdGFSZW5kZXJlZC5maW5kSW5kZXgoZCA9PiBkICYmIGRbdGhpcy5wcm9wSWRdID09PSBpdGVtSWQpO1xuICAgICAgICBjb25zdCBtb3ZlID0gdG9JbmRleCAtIGZyb21JbmRleDtcblxuICAgICAgICBjb25zdCBzb3VyY2UgPSBbLi4udGhpcy5kYXRhUmVuZGVyZWRdO1xuICAgICAgICBjb25zdCBbZWxlbWVudFRvTW92ZV0gPSBzb3VyY2Uuc3BsaWNlKGl0ZW1Qb3NpdGlvbiwgMSk7XG5cbiAgICAgICAgc291cmNlLnNwbGljZShpdGVtUG9zaXRpb24gKyBtb3ZlLCAwLCBlbGVtZW50VG9Nb3ZlKTtcblxuICAgICAgICB0aGlzLmRhdGFSZW5kZXJlZCA9IHNvdXJjZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3QgYWxsIHJvd3NcbiAgICAgKi9cbiAgICBwdWJsaWMgc2VsZWN0QWxsUm93cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ldWlUYWJsZVYyU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0QWxsUm93cygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVuc2VsZWN0IGFsbCByb3dzXG4gICAgICovXG4gICAgcHVibGljIHVuc2VsZWN0QWxsUm93cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ldWlUYWJsZVYyU2VsZWN0YWJsZVJvd1NlcnZpY2UudW5zZWxlY3RBbGxSb3dzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGFuIGFycmF5IHdpdGggdGhlIGRhdGEgbWF0Y2hpbmcgdGhlIHN0cmluZyBmaWx0ZXJcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRGaWx0ZXJlZERhdGEoKTogREFUQVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyZWREYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNvcnQgdGhlIHRhYmxlJ3MgZGF0YS5cbiAgICAgKiBAcGFyYW0gc29ydHMgQW4gYXJyYXkgb2YgU29ydE9yZGVyLiBTZWUge0BsaW5rIFNvcnRPcmRlcn1cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0U29ydChzb3J0czogU29ydFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXVpVGFibGVWMlNvcnRTZXJ2aWNlLnNldFNvcnRzKHNvcnRzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmlsdGVyRGF0YShmaWx0ZXI6IHN0cmluZywgcjogREFUQVtdKTogREFUQVtdIHtcbiAgICAgICAgY29uc3Qgcm93cyA9IGZpbHRlciA/XG4gICAgICAgICAgICByLmZpbHRlcigocm93KSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGluZyA9IHRoaXMuZ2V0UHJvcHMocm93LCBmaWx0ZXIpLmZpbHRlcigocCkgPT4gcC5tYXRjaCA9PT0gdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hpbmc/Lmxlbmd0aCA+IDA7XG4gICAgICAgICAgICB9KSA6IHI7XG5cbiAgICAgICAgdGhpcy5ldWlUYWJsZVYyU2VsZWN0YWJsZVJvd1NlcnZpY2UudW5yZWdpc3RlclJvd3MoKTtcbiAgICAgICAgdGhpcy5ldWlUYWJsZVYyU2VsZWN0YWJsZVJvd1NlcnZpY2UucmVnaXN0ZXJSb3dzKHJvd3MpO1xuXG4gICAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gcm93cztcblxuICAgICAgICByZXR1cm4gcm93cztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHN0aWNreUhlYWRlclRvcFBvc2l0aW9uKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfHwgIXRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0WydfcmVuZGVyZWRDb250ZW50T2Zmc2V0J10pIHtcbiAgICAgICAgICAgIHJldHVybiAnMCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKC10aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydFsnX3JlbmRlcmVkQ29udGVudE9mZnNldCddIC0gMSkgKyAncHgnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgc3RpY2t5Rm9vdGVyQm90dG9tUG9zaXRpb24oKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB8fCAhdGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnRbJ19yZW5kZXJlZENvbnRlbnRPZmZzZXQnXSkge1xuICAgICAgICAgICAgcmV0dXJuICctMXB4JztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydFsnX3JlbmRlcmVkQ29udGVudE9mZnNldCddIC0gMSArICdweCc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnRXaWR0aCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Py5wYXJlbnRFbGVtZW50Py5jbGllbnRXaWR0aCB8fCAwKSArICdweCc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBob3N0V2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB0cmFja0J5Rm4oaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRhYmxlRmVhdHVyZXNIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRhYmxlRmVhdHVyZXNIYW5kbGVyU3Vic2NyaXB0aW9uID0gY29tYmluZUxhdGVzdChcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yID8gdGhpcy5wYWdpbmF0b3IucGFnZSQgOiBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpLFxuICAgICAgICAgICAgdGhpcy5maWx0ZXIgPyB0aGlzLmZpbHRlci5maWx0ZXIkIDogbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKSxcbiAgICAgICAgICAgIHRoaXMuZXVpVGFibGVWMlNvcnRTZXJ2aWNlLnNvcnRzLFxuICAgICAgICApLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKFtwYWdpbmF0aW9uLCBmaWx0ZXIsIHNvcnRzXTogW0V1aVBhZ2luYXRpb25FdmVudCwgc3RyaW5nLCBTb3J0W11dKSA9PiB7XG4gICAgICAgICAgICBsZXQgciA9IFsuLi50aGlzLmRhdGFTcmNdO1xuXG4gICAgICAgICAgICBpZiAoc29ydHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHIgPSB0aGlzLnNvcnREYXRhKHNvcnRzLCByKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgciA9IHRoaXMuZmlsdGVyRGF0YShmaWx0ZXIsIHIpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5zZXRMZW5ndGgoci5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHIgPSB0aGlzLnBhZ2luYXRlUm93cyhwYWdpbmF0aW9uLCByKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5kYXRhUmVuZGVyZWQgPSByO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RPbmx5VmlzaWJsZVJvd3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV1aVRhYmxlVjJTZWxlY3RhYmxlUm93U2VydmljZS51bnNlbGVjdEFsbFJvd3MoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmV1aVRhYmxlVjJTZWxlY3RhYmxlUm93U2VydmljZS51bnJlZ2lzdGVyUm93cygpO1xuICAgICAgICAgICAgICAgIHRoaXMuZXVpVGFibGVWMlNlbGVjdGFibGVSb3dTZXJ2aWNlLnJlZ2lzdGVyUm93cyh0aGlzLmRhdGFSZW5kZXJlZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5oYXNTdGlja3lDb2xzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGlja3lGZWF0dXJlSGFuZGxlcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnREYXRhKHNvcnRDcml0ZXJpYXM6IHsgc29ydDogc3RyaW5nLCBvcmRlcjogU29ydE9yZGVyIH1bXSwgcjogREFUQVtdKTogREFUQVtdIHtcbiAgICAgICAgaWYgKHNvcnRDcml0ZXJpYXMuZXZlcnkoY3JpdGVyaWEgPT4gY3JpdGVyaWEub3JkZXIgPT09IG51bGwpKSB7XG4gICAgICAgICAgICByZXR1cm4gci5zbGljZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHIuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjcml0ZXJpYSBvZiBzb3J0Q3JpdGVyaWFzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYVZhbHVlID0gdGhpcy5nZXRPYmpQcm9wKGEsIGNyaXRlcmlhLnNvcnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJWYWx1ZSA9IHRoaXMuZ2V0T2JqUHJvcChiLCBjcml0ZXJpYS5zb3J0KTtcblxuICAgICAgICAgICAgICAgIGlmIChhVmFsdWUgPT09IGJWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoYVZhbHVlID09PSBudWxsIHx8IGFWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcml0ZXJpYS5vcmRlciA9PT0gJ2FzYycgPyAtMSA6IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChiVmFsdWUgPT09IG51bGwgfHwgYlZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyaXRlcmlhLm9yZGVyID09PSAnYXNjJyA/IDEgOiAtMTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFWYWx1ZSA9PT0gJ2Jvb2xlYW4nICYmIHR5cGVvZiBiVmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JpdGVyaWEub3JkZXIgPT09ICdhc2MnID8gKGFWYWx1ZSA/IC0xIDogMSkgOiAoYlZhbHVlID8gLTEgOiAxKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFWYWx1ZSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGJWYWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyaXRlcmlhLm9yZGVyID09PSAnYXNjJyA/IGFWYWx1ZSAtIGJWYWx1ZSA6IGJWYWx1ZSAtIGFWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBhVmFsdWVTdHIgPSB0eXBlb2YgYVZhbHVlID09PSAnc3RyaW5nJyA/IGFWYWx1ZS50b0xvd2VyQ2FzZSgpIDogYVZhbHVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJWYWx1ZVN0ciA9IHR5cGVvZiBiVmFsdWUgPT09ICdzdHJpbmcnID8gYlZhbHVlLnRvTG93ZXJDYXNlKCkgOiBiVmFsdWU7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjb21wYXJpc29uID0gY3JpdGVyaWEub3JkZXIgPT09ICdhc2MnID8gYVZhbHVlU3RyLmxvY2FsZUNvbXBhcmUoYlZhbHVlU3RyKSA6IGJWYWx1ZVN0ci5sb2NhbGVDb21wYXJlKGFWYWx1ZVN0cik7XG5cbiAgICAgICAgICAgICAgICBpZiAoY29tcGFyaXNvbiAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGFyaXNvbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhZ2luYXRlUm93cyhwYWdpbmF0aW9uOiBFdWlQYWdpbmF0aW9uRXZlbnQsIHI6IERBVEFbXSk6IERBVEFbXSB7XG4gICAgICAgIHRoaXMucGFnZSA9IHBhZ2luYXRpb24ucGFnZTtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IHBhZ2luYXRpb24ucGFnZVNpemU7XG5cbiAgICAgICAgcmV0dXJuIHIuc2xpY2UodGhpcy5wYWdlICogdGhpcy5wYWdlU2l6ZSwgdGhpcy5wYWdlICogdGhpcy5wYWdlU2l6ZSArIHRoaXMucGFnZVNpemUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcm91bmREb3duKGluZGV4OiBudW1iZXIsIG5iUm93czogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoaW5kZXggLyBuYlJvd3MpICogbmJSb3dzO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzVW5kZWZpbmVkSW5SYW5nZShzdGFydEluZGV4OiBudW1iZXIsIGxpbWl0OiBudW1iZXIsIGRhdGFSZW5kZXJlZDogREFUQVtdKTogbnVtYmVyIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0SW5kZXg7IGkgPCBzdGFydEluZGV4ICsgbGltaXQ7IGkgKyspIHtcbiAgICAgICAgICAgIGlmIChkYXRhUmVuZGVyZWRbaV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RpY2t5RmVhdHVyZUhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudD8ucGFyZW50RWxlbWVudD8uY2xpZW50V2lkdGggfHwgMDtcblxuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc1N0aWNreUl0ZW1zID0gKGl0ZW1zOiBIVE1MVGFibGVDZWxsRWxlbWVudFtdKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1N0aWNreUZpcnN0Q29sID0gaXRlbS5vZmZzZXRMZWZ0ICsgaXRlbS5jbGllbnRXaWR0aCA8IGNvbnRhaW5lcldpZHRoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1N0aWNreUxhc3RDb2wgPSBpdGVtLm9mZnNldExlZnQgKyBpdGVtLmNsaWVudFdpZHRoID4gY29udGFpbmVyV2lkdGg7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbXNTdGlja3kgPSBpc1N0aWNreUZpcnN0Q29sXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW1zLmZpbHRlcigoaXQpID0+IGl0Lm9mZnNldExlZnQgKyBpdC5jbGllbnRXaWR0aCA8IGNvbnRhaW5lcldpZHRoKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBpc1N0aWNreUxhc3RDb2xcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbXMuZmlsdGVyKChpdCkgPT4gaXQub2Zmc2V0TGVmdCArIGl0LmNsaWVudFdpZHRoID4gY29udGFpbmVyV2lkdGgpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zU3RpY2t5LmZvckVhY2goKGl0LCBqKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3ID0gaXRlbXNTdGlja3lbaiAtIDFdPy5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IGlzU3RpY2t5Rmlyc3RDb2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KGl0ZW1zU3RpY2t5W2ogLSAxXT8uc3R5bGUubGVmdCwgMTApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwYXJzZUludChpdGVtc1N0aWNreVtqIC0gMV0/LnN0eWxlLnJpZ2h0LCAxMCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1N0aWNreUZpcnN0Q29sKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuc3R5bGUubGVmdCA9IChqID09PSAwID8gMCA6IHcgKyBvZmZzZXQpICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNTdGlja3lMYXN0Q29sKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuc3R5bGUucmlnaHQgPSAoaiA9PT0gMCA/IDAgOiB3ICsgb2Zmc2V0KSArICdweCc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqICsgMSA9PT0gaXRlbXNTdGlja3kubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhpdCwgYGV1aS10YWJsZS12Ml9fY29sLS1zdGlja3ktc2hhZG93ZWQtJHtpc1N0aWNreUZpcnN0Q29sID8gJ2ZpcnN0JyA6ICdsYXN0J31gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAodGhpcy50aGVhZFJlZikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoSXRlbXM6IEhUTUxUYWJsZUNlbGxFbGVtZW50W10gPSBBcnJheS5mcm9tKHRoaXMudGhlYWRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZXVpLXRhYmxlLXYyX19jb2wtLXN0aWNreScpKTtcbiAgICAgICAgICAgICAgICBwcm9jZXNzU3RpY2t5SXRlbXModGhJdGVtcyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRib2R5UmVmKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYm9keVRySXRlbXMgPSBBcnJheS5mcm9tKHRoaXMudGJvZHlSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0cicpKTtcbiAgICAgICAgICAgICAgICBib2R5VHJJdGVtcy5mb3JFYWNoKCh0cikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZEl0ZW1zOiBIVE1MVGFibGVDZWxsRWxlbWVudFtdID0gQXJyYXkuZnJvbSh0ci5xdWVyeVNlbGVjdG9yQWxsKCcuZXVpLXRhYmxlLXYyX19jb2wtLXN0aWNreScpKTtcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1N0aWNreUl0ZW1zKHRkSXRlbXMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy50Zm9vdFJlZikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRkSXRlbXM6IEhUTUxUYWJsZUNlbGxFbGVtZW50W10gPSBBcnJheS5mcm9tKHRoaXMudGZvb3RSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZXVpLXRhYmxlLXYyX19jb2wtLXN0aWNreScpKTtcbiAgICAgICAgICAgICAgICBwcm9jZXNzU3RpY2t5SXRlbXModGRJdGVtcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDI1MCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3RSb3dzRmVhdHVyZUhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXVpVGFibGVWMlNlbGVjdGFibGVSb3dTZXJ2aWNlLnNlbGVjdGVkUm93cy5waXBlKHNraXAoMSksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yb3dzU2VsZWN0LmVtaXQoc2VsZWN0ZWQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRGZWF0dXJlSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ldWlUYWJsZVYyU29ydFNlcnZpY2Uuc29ydHMucGlwZShza2lwKDEpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoc29ydHM6IFNvcnRbXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zb3J0Q2hhbmdlLmVtaXQoc29ydHMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFByb3BzKHJvdzogREFUQSwgZmlsdGVyOiBzdHJpbmcpOiB7IGtleTogc3RyaW5nOyBtYXRjaDogYm9vbGVhbjsgdmFsdWU6IHN0cmluZyB8IG51bWJlciB9W10ge1xuICAgICAgICBjb25zdCBpc09iamVjdCA9ICh2YWw6IHN0cmluZyB8IG51bWJlcik6IGJvb2xlYW4gPT4gdmFsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnO1xuICAgICAgICBjb25zdCBhZGREZWxpbWl0ZXIgPSAoYTogc3RyaW5nLCBiOiBzdHJpbmcpOiBzdHJpbmcgPT4gKGEgJiYgYSAhPT0gJzAnID8gYCR7YX0uJHtifWAgOiBiKTtcbiAgICAgICAgY29uc3QgcHJvcHM6IHsga2V5OiBzdHJpbmcsIG1hdGNoOiBib29sZWFuLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH1bXSA9IFtdO1xuICAgICAgICBjb25zdCBwYXRocyA9IChwYXRoT2JqOiBEQVRBLCBoZWFkID0gJycpOiBzdHJpbmdbXSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMocGF0aE9iaikucmVkdWNlKChwcm9kdWN0LCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmdWxsUGF0aCA9IGFkZERlbGltaXRlcihoZWFkLCBrZXkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gKHY6IHN0cmluZyB8IG51bWJlcik6IGJvb2xlYW4gPT4gdiAmJiB0eXBlb2YgdiAhPT0gJ29iamVjdCcgJiYgdj8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZmlsdGVyPy50cmltKCkudG9Mb3dlckNhc2UoKSkgIT09IC0xO1xuXG4gICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gJzAnICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMucHVzaCh7IGtleTogYWRkRGVsaW1pdGVyKGhlYWQsIGtleSksIG1hdGNoOiBtYXRjaCh2YWx1ZSksIHZhbHVlIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBpc09iamVjdCh2YWx1ZSkgPyBwcm9kdWN0LmNvbmNhdChwYXRocyh2YWx1ZSwgZnVsbFBhdGgpKSA6IHByb2R1Y3QuY29uY2F0KGZ1bGxQYXRoKTtcbiAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgfTtcblxuICAgICAgICBwYXRocyhyb3cpO1xuICAgICAgICByZXR1cm4gcHJvcHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRPYmpQcm9wKG9iajogREFUQSwgcHJvcDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHByb3AgPyBwcm9wLnNwbGl0KCcuJykucmVkdWNlKChwcmV2LCBjdXJyKSA9PiAocHJldiA/IHByZXZbY3Vycl0gOiBudWxsKSwgb2JqIHx8IHNlbGYpIDogbnVsbDtcbiAgICB9XG59XG4iLCI8IS0tIDxidXR0b24gKGNsaWNrKT1cInRlc3QoMTkyNTApXCI+MTkyNTA8L2J1dHRvbj5cbjxidXR0b24gKGNsaWNrKT1cInRlc3QoNzg5NSlcIj43ODk1PC9idXR0b24+XG48YnV0dG9uIChjbGljayk9XCJ0ZXN0KDE2ODYwKVwiPjE2ODYwPC9idXR0b24+XG48YnV0dG9uIChjbGljayk9XCJ0ZXN0KDE2ODcwKVwiPjE2ODcwPC9idXR0b24+XG48YnV0dG9uIChjbGljayk9XCJ0ZXN0KDE2ODgwKVwiPjE2ODgwPC9idXR0b24+XG48YnV0dG9uIChjbGljayk9XCJ0ZXN0KDE2ODkwKVwiPjE2ODkwPC9idXR0b24+XG48YnV0dG9uIChjbGljayk9XCJ0ZXN0KDE2OTAwKVwiPjE2OTAwPC9idXR0b24+XG48YnV0dG9uIChjbGljayk9XCJ0ZXN0KDI2OTk4KVwiPjI2OTk4PC9idXR0b24+XG48YnV0dG9uIChjbGljayk9XCJ0ZXN0KDI4MDAwKVwiPjI4MDAwPC9idXR0b24+IC0tPlxuQGlmIChpc1ZpcnR1YWxTY3JvbGwpIHtcbiAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgICAgICNjZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnRcbiAgICAgICAgI2Nka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydEVsZW1lbnRcbiAgICAgICAgY2xhc3M9XCJldWktdGFibGUtdjJfX3Njcm9sbC12aWV3cG9ydFwiXG4gICAgICAgIFtpdGVtU2l6ZV09XCJpdGVtU2l6ZVwiXG4gICAgICAgIFtzdHlsZS5vdmVyZmxvd109XCJjZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnRPdmVyZmxvd1ZhbHVlXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCI+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInt7IGNzc0NsYXNzZXMgfX1cIiBbc3R5bGUud2lkdGhdPVwiaG9zdFdpZHRoXCI+XG4gICAgICAgICAgICBAaWYgKGhlYWRlclRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgPHRoZWFkICN0aGVhZFJlZiBbc3R5bGUudG9wXT1cInN0aWNreUhlYWRlclRvcFBvc2l0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoYm9keVRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgPHRib2R5ICN0Ym9keVJlZj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqY2RrVmlydHVhbEZvcj1cImxldCByb3cgb2YgZGF0YVJlbmRlcmVkOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocm93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJvZHlUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCBpbmRleDogaSB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJza2VsZXRvbkxvYWRpbmdcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICBAaWYgKG5vRGF0YVRlbXBsYXRlICYmIChkYXRhPy5sZW5ndGggPT09IDAgfHwgZGF0YVJlbmRlcmVkPy5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9EYXRhVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZm9vdGVyVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICA8dGZvb3QgI3Rmb290UmVmIFtzdHlsZS5ib3R0b21dPVwic3RpY2t5Rm9vdGVyQm90dG9tUG9zaXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvb3RlclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3Rmb290PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L3RhYmxlPlxuICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxufSBAZWxzZSB7XG4gICAgQGlmIChoZWFkZXJUZW1wbGF0ZSkge1xuICAgICAgICA8dGhlYWQgI3RoZWFkUmVmPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC90aGVhZD5cbiAgICB9XG4gICAgQGlmIChib2R5VGVtcGxhdGUpIHtcbiAgICAgICAgPHRib2R5ICN0Ym9keVJlZj5cbiAgICAgICAgICAgIEBmb3IgKHJvdyBvZiBkYXRhUmVuZGVyZWQ7IGxldCBpID0gJGluZGV4OyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJvZHlUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdywgaW5kZXg6IGkgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChub0RhdGFUZW1wbGF0ZSAmJiAoZGF0YT8ubGVuZ3RoID09PSAwIHx8IGRhdGFSZW5kZXJlZD8ubGVuZ3RoID09PSAwKSkge1xuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJub0RhdGFUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdGJvZHk+XG4gICAgfVxuICAgIEBpZiAoZm9vdGVyVGVtcGxhdGUpIHtcbiAgICAgICAgPHRmb290ICN0Zm9vdFJlZj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJmb290ZXJUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdGZvb3Q+XG4gICAgfVxufVxuXG48bmctdGVtcGxhdGUgI3NrZWxldG9uTG9hZGluZz5cbiAgICA8dHIgW3N0eWxlLmhlaWdodC5weF09XCJpdGVtU2l6ZVwiPlxuICAgICAgICA8dGQgKm5nRm9yPVwibGV0IF9fIG9mIG5iQ29sc1wiPjxldWktc2tlbGV0b24gbGluZSBldWlSb3VuZGVkPjwvZXVpLXNrZWxldG9uPjwvdGQ+XG4gICAgPC90cj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -31,6 +31,8 @@ export class EuiTableV2SelectableRowComponent {
31
31
  this.euiDataTableSelectableRowService.unselectRow(this.isDataSelectable);
32
32
  }
33
33
  }
34
+ const selected = this.euiDataTableSelectableRowService.selectedRows$.getValue();
35
+ this.isChecked = selected.some((s) => s[this.propId] === this.isDataSelectable?.[this.propId]);
34
36
  }
35
37
  ngOnInit() {
36
38
  if (this.isKeyboardSelectable && this.isDataSelectable) {
@@ -61,7 +63,7 @@ export class EuiTableV2SelectableRowComponent {
61
63
  }
62
64
  this.propId = this.euiDataTableSelectableRowService.getPropId();
63
65
  this.euiDataTableSelectableRowService.selectedRows.pipe(takeUntil(this.destroy$)).subscribe((selected) => {
64
- this.isChecked = selected.find((s) => s[this.propId] === this.isDataSelectable[this.propId]) !== undefined;
66
+ this.isChecked = selected.find((s) => s[this.propId] === this.isDataSelectable?.[this.propId]) !== undefined;
65
67
  });
66
68
  }
67
69
  ngOnDestroy() {
@@ -95,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
95
97
  type: HostBinding,
96
98
  args: ['class']
97
99
  }] } });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRhYmxlLXYyLXNlbGVjdGFibGUtcm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2V1aS10YWJsZS12Mi9zZWxlY3RhYmxlLXJvdy9ldWktdGFibGUtdjItc2VsZWN0YWJsZS1yb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vZXVpLXRhYmxlLXYyL3NlbGVjdGFibGUtcm93L2V1aS10YWJsZS12Mi1zZWxlY3RhYmxlLXJvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBd0IsV0FBVyxFQUFFLGdCQUFnQixFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUN6SSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBU3JELE1BQU0sT0FBTyxnQ0FBZ0M7SUFRekMsSUFDVyxVQUFVO1FBQ2pCLE9BQU87WUFDSCxtQkFBbUI7WUFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM1RCxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUN0RDthQUNJLElBQUksQ0FBQyxHQUFHLENBQUM7YUFDVCxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsWUFBb0IsZ0NBQXNFLEVBQVUsVUFBc0I7UUFBdEcscUNBQWdDLEdBQWhDLGdDQUFnQyxDQUFzQztRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFqQmxGLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBRTdELFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxhQUFRLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7SUFhaUUsQ0FBQztJQUU5SCxXQUFXLENB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LENBQUM7UUFDL0csQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLGtCQUFrQixDQUFDLENBQVE7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBSSxDQUFDLENBQUMsTUFBMkIsQ0FBQyxPQUFPLENBQUM7UUFFeEQsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMzRSxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDN0UsQ0FBQztJQUNMLENBQUM7K0dBL0VRLGdDQUFnQzttR0FBaEMsZ0NBQWdDLDBIQUVyQixnQkFBZ0IsMEVBQ2hCLGdCQUFnQix3R0NieEMsNmNBWUE7OzRGREZhLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFFSSxzQkFBc0I7NEhBSXZCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDa0MsU0FBUztzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxvQkFBb0I7c0JBQTNELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBTTNCLFVBQVU7c0JBRHBCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIEhvc3RCaW5kaW5nLCBib29sZWFuQXR0cmlidXRlLCBFbGVtZW50UmVmLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBFdWlUYWJsZVYyU2VsZWN0YWJsZVJvd1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9ldWktdGFibGUtdjItc2VsZWN0YWJsZS1yb3cuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIHNlbGVjdG9yOiAndHJbaXNEYXRhU2VsZWN0YWJsZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktdGFibGUtdjItc2VsZWN0YWJsZS1yb3cuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlUYWJsZVYyU2VsZWN0YWJsZVJvd0NvbXBvbmVudDxEQVRBPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpIGlzRGF0YVNlbGVjdGFibGU6IERBVEE7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzQ2hlY2tlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0tleWJvYXJkU2VsZWN0YWJsZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBwcm9wSWQgPSAnaWQnO1xuICAgIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgcHVibGljIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAnZXVpLXRhYmxlLXYyX19yb3cnLFxuICAgICAgICAgICAgdGhpcy5pc0RhdGFTZWxlY3RhYmxlID8gJ2V1aS10YWJsZS12Ml9fcm93LS1zZWxlY3RhYmxlJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5pc0NoZWNrZWQgPyAnZXVpLXRhYmxlLXYyX19yb3ctLXNlbGVjdGVkJyA6ICcnLFxuICAgICAgICBdXG4gICAgICAgICAgICAuam9pbignICcpXG4gICAgICAgICAgICAudHJpbSgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZXVpRGF0YVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2U6IEV1aVRhYmxlVjJTZWxlY3RhYmxlUm93U2VydmljZTxEQVRBPiwgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgbmdPbkNoYW5nZXMoYzogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoYyAmJiBjLmlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgaWYgKGMuaXNDaGVja2VkLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXVpRGF0YVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0Um93KHRoaXMuaXNEYXRhU2VsZWN0YWJsZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZXVpRGF0YVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UudW5zZWxlY3RSb3codGhpcy5pc0RhdGFTZWxlY3RhYmxlKTtcbiAgICAgICAgICAgIH0gICBcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0tleWJvYXJkU2VsZWN0YWJsZSAmJiB0aGlzLmlzRGF0YVNlbGVjdGFibGUpIHtcbiAgICAgICAgICAgIGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY2xpY2snKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5jdHJsS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0NoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXVpRGF0YVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0Um93KHRoaXMuaXNEYXRhU2VsZWN0YWJsZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV1aURhdGFUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLnVuc2VsZWN0Um93KHRoaXMuaXNEYXRhU2VsZWN0YWJsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvd3MgPSB0aGlzLmV1aURhdGFUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLmdldFJvd3MoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdFNlbGVjdGVkUm93ID0gdGhpcy5ldWlEYXRhVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5nZXRMYXN0U2VsZWN0ZWRSb3coKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdFNlbGVjdGVkUm93UG9zaXRpb24gPSByb3dzLmluZGV4T2YobGFzdFNlbGVjdGVkUm93KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSByb3dzLmluZGV4T2YodGhpcy5pc0RhdGFTZWxlY3RhYmxlKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCByYW5nZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0U2VsZWN0ZWRSb3dQb3NpdGlvbiA+IHBvc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyByb3dzLnNsaWNlKHBvc2l0aW9uLCBsYXN0U2VsZWN0ZWRSb3dQb3NpdGlvbiArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiByb3dzLnNsaWNlKGxhc3RTZWxlY3RlZFJvd1Bvc2l0aW9uLCBwb3NpdGlvbiArIDEpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXVpRGF0YVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0Um93cyhyYW5nZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpPy5lbXB0eSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXVpRGF0YVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0Um93cyhbdGhpcy5pc0RhdGFTZWxlY3RhYmxlXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByb3BJZCA9IHRoaXMuZXVpRGF0YVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UuZ2V0UHJvcElkKCk7XG4gICAgICAgIHRoaXMuZXVpRGF0YVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0ZWRSb3dzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHNlbGVjdGVkKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzQ2hlY2tlZCA9IHNlbGVjdGVkLmZpbmQoKHMpID0+IHNbdGhpcy5wcm9wSWRdID09PSB0aGlzLmlzRGF0YVNlbGVjdGFibGVbdGhpcy5wcm9wSWRdKSAhPT0gdW5kZWZpbmVkO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZUNoZWNrZWRTdGF0ZShlOiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzQ2hlY2tlZCA9IChlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jaGVja2VkO1xuXG4gICAgICAgIGlmICh0aGlzLmlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgdGhpcy5ldWlEYXRhVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5zZWxlY3RSb3codGhpcy5pc0RhdGFTZWxlY3RhYmxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZXVpRGF0YVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UudW5zZWxlY3RSb3codGhpcy5pc0RhdGFTZWxlY3RhYmxlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpZiAoaXNEYXRhU2VsZWN0YWJsZSkge1xuICAgIDx0ZCBjbGFzcz1cImV1aS10YWJsZV9fY2VsbC1zZWxlY3RcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV1aS10YWJsZV9fY2VsbC1zZWxlY3QtY2hlY2tib3gtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBldWlJbnB1dENoZWNrQm94XG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpc0NoZWNrZWQgPyAnZGVmYXVsdCBjaGVja2JveCBjaGVja2VkJyA6ICdkZWZhdWx0IGNoZWNrYm94IHVuY2hlY2tlZCdcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXNDaGVja2VkXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUNoZWNrZWRTdGF0ZSgkZXZlbnQpXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC90ZD5cbn1cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRhYmxlLXYyLXNlbGVjdGFibGUtcm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2V1aS10YWJsZS12Mi9zZWxlY3RhYmxlLXJvdy9ldWktdGFibGUtdjItc2VsZWN0YWJsZS1yb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vZXVpLXRhYmxlLXYyL3NlbGVjdGFibGUtcm93L2V1aS10YWJsZS12Mi1zZWxlY3RhYmxlLXJvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBd0IsV0FBVyxFQUFFLGdCQUFnQixFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUN6SSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBU3JELE1BQU0sT0FBTyxnQ0FBZ0M7SUFRekMsSUFDVyxVQUFVO1FBQ2pCLE9BQU87WUFDSCxtQkFBbUI7WUFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM1RCxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUN0RDthQUNJLElBQUksQ0FBQyxHQUFHLENBQUM7YUFDVCxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsWUFBb0IsZ0NBQXNFLEVBQVUsVUFBc0I7UUFBdEcscUNBQWdDLEdBQWhDLGdDQUFnQyxDQUFzQztRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFqQmxGLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBRTdELFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxhQUFRLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7SUFhaUUsQ0FBQztJQUU5SCxXQUFXLENB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QVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFNM0IsVUFBVTtzQkFEcEIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgSG9zdEJpbmRpbmcsIGJvb2xlYW5BdHRyaWJ1dGUsIEVsZW1lbnRSZWYsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEV1aVRhYmxlVjJTZWxlY3RhYmxlUm93U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2V1aS10YWJsZS12Mi1zZWxlY3RhYmxlLXJvdy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgc2VsZWN0b3I6ICd0cltpc0RhdGFTZWxlY3RhYmxlXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2V1aS10YWJsZS12Mi1zZWxlY3RhYmxlLXJvdy5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEV1aVRhYmxlVjJTZWxlY3RhYmxlUm93Q29tcG9uZW50PERBVEE+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgaXNEYXRhU2VsZWN0YWJsZTogREFUQTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNDaGVja2VkID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzS2V5Ym9hcmRTZWxlY3RhYmxlID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHByb3BJZCA9ICdpZCc7XG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBwdWJsaWMgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICdldWktdGFibGUtdjJfX3JvdycsXG4gICAgICAgICAgICB0aGlzLmlzRGF0YVNlbGVjdGFibGUgPyAnZXVpLXRhYmxlLXYyX19yb3ctLXNlbGVjdGFibGUnIDogJycsXG4gICAgICAgICAgICB0aGlzLmlzQ2hlY2tlZCA/ICdldWktdGFibGUtdjJfX3Jvdy0tc2VsZWN0ZWQnIDogJycsXG4gICAgICAgIF1cbiAgICAgICAgICAgIC5qb2luKCcgJylcbiAgICAgICAgICAgIC50cmltKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBldWlEYXRhVGFibGVTZWxlY3RhYmxlUm93U2VydmljZTogRXVpVGFibGVWMlNlbGVjdGFibGVSb3dTZXJ2aWNlPERBVEE+LCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICBuZ09uQ2hhbmdlcyhjOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjICYmIGMuaXNDaGVja2VkKSB7XG4gICAgICAgICAgICBpZiAoYy5pc0NoZWNrZWQuY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ldWlEYXRhVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5zZWxlY3RSb3codGhpcy5pc0RhdGFTZWxlY3RhYmxlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ldWlEYXRhVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS51bnNlbGVjdFJvdyh0aGlzLmlzRGF0YVNlbGVjdGFibGUpO1xuICAgICAgICAgICAgfSAgIFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmV1aURhdGFUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLnNlbGVjdGVkUm93cyQuZ2V0VmFsdWUoKTtcbiAgICAgICAgdGhpcy5pc0NoZWNrZWQgPSBzZWxlY3RlZC5zb21lKChzKSA9PiBzW3RoaXMucHJvcElkXSA9PT0gdGhpcy5pc0RhdGFTZWxlY3RhYmxlPy5bdGhpcy5wcm9wSWRdKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNLZXlib2FyZFNlbGVjdGFibGUgJiYgdGhpcy5pc0RhdGFTZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsaWNrJykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNDaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV1aURhdGFUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLnNlbGVjdFJvdyh0aGlzLmlzRGF0YVNlbGVjdGFibGUpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ldWlEYXRhVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS51bnNlbGVjdFJvdyh0aGlzLmlzRGF0YVNlbGVjdGFibGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dzID0gdGhpcy5ldWlEYXRhVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5nZXRSb3dzKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RTZWxlY3RlZFJvdyA9IHRoaXMuZXVpRGF0YVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UuZ2V0TGFzdFNlbGVjdGVkUm93KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RTZWxlY3RlZFJvd1Bvc2l0aW9uID0gcm93cy5pbmRleE9mKGxhc3RTZWxlY3RlZFJvdyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gcm93cy5pbmRleE9mKHRoaXMuaXNEYXRhU2VsZWN0YWJsZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmFuZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFNlbGVjdGVkUm93UG9zaXRpb24gPiBwb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcm93cy5zbGljZShwb3NpdGlvbiwgbGFzdFNlbGVjdGVkUm93UG9zaXRpb24gKyAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcm93cy5zbGljZShsYXN0U2VsZWN0ZWRSb3dQb3NpdGlvbiwgcG9zaXRpb24gKyAxKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmV1aURhdGFUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLnNlbGVjdFJvd3MocmFuZ2UpO1xuXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKT8uZW1wdHkoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmV1aURhdGFUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLnNlbGVjdFJvd3MoW3RoaXMuaXNEYXRhU2VsZWN0YWJsZV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcm9wSWQgPSB0aGlzLmV1aURhdGFUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLmdldFByb3BJZCgpO1xuICAgICAgICB0aGlzLmV1aURhdGFUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLnNlbGVjdGVkUm93cy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0NoZWNrZWQgPSBzZWxlY3RlZC5maW5kKChzKSA9PiBzW3RoaXMucHJvcElkXSA9PT0gdGhpcy5pc0RhdGFTZWxlY3RhYmxlPy5bdGhpcy5wcm9wSWRdKSAhPT0gdW5kZWZpbmVkO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZUNoZWNrZWRTdGF0ZShlOiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzQ2hlY2tlZCA9IChlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jaGVja2VkO1xuXG4gICAgICAgIGlmICh0aGlzLmlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgdGhpcy5ldWlEYXRhVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5zZWxlY3RSb3codGhpcy5pc0RhdGFTZWxlY3RhYmxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZXVpRGF0YVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UudW5zZWxlY3RSb3codGhpcy5pc0RhdGFTZWxlY3RhYmxlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpZiAoaXNEYXRhU2VsZWN0YWJsZSkge1xuICAgIDx0ZCBjbGFzcz1cImV1aS10YWJsZV9fY2VsbC1zZWxlY3RcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV1aS10YWJsZV9fY2VsbC1zZWxlY3QtY2hlY2tib3gtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBldWlJbnB1dENoZWNrQm94XG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpc0NoZWNrZWQgPyAnZGVmYXVsdCBjaGVja2JveCBjaGVja2VkJyA6ICdkZWZhdWx0IGNoZWNrYm94IHVuY2hlY2tlZCdcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXNDaGVja2VkXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUNoZWNrZWRTdGF0ZSgkZXZlbnQpXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC90ZD5cbn1cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==