@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
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <meta http-equiv="x-ua-compatible" content="ie=edge">
6
- <title>csdr documentation</title>
6
+ <title>eui documentation</title>
7
7
  <meta name="description" content="">
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1">
9
9
 
@@ -64,7 +64,7 @@
64
64
  </script>
65
65
 
66
66
  <div class="navbar navbar-default navbar-fixed-top d-block d-sm-none">
67
- <a href="../" class="navbar-brand">csdr documentation</a>
67
+ <a href="../" class="navbar-brand">eui documentation</a>
68
68
  <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
69
69
  </div>
70
70
 
@@ -112,7 +112,7 @@
112
112
  <h3>File</h3>
113
113
  </p>
114
114
  <p class="comment">
115
- <code>packages/eui/packages/components/testing/mocks/translate.module.mock.ts</code>
115
+ <code>packages/components/testing/mocks/translate.module.mock.ts</code>
116
116
  </p>
117
117
 
118
118
 
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <meta http-equiv="x-ua-compatible" content="ie=edge">
6
- <title>csdr documentation</title>
6
+ <title>eui documentation</title>
7
7
  <meta name="description" content="">
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1">
9
9
 
@@ -64,7 +64,7 @@
64
64
  </script>
65
65
 
66
66
  <div class="navbar navbar-default navbar-fixed-top d-block d-sm-none">
67
- <a href="./" class="navbar-brand">csdr documentation</a>
67
+ <a href="./" class="navbar-brand">eui documentation</a>
68
68
  <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
69
69
  </div>
70
70
 
@@ -101,11 +101,7 @@
101
101
  </ol>
102
102
  <ul class="properties-list">
103
103
  <li>
104
- <b>Version</b> : 17.0.0</li>
105
- <li>
106
- <b>License</b> : EUPL-1.1</li>
107
- <li>
108
- <b>Repository</b> : https://citnet.tech.ec.europa.eu/CITnet/stash/projects/csdr/repos/root</li>
104
+ <b>Version</b> : 18.2.16-snapshot-1756456305763</li>
109
105
  </ul>
110
106
 
111
107
 
@@ -224,7 +224,7 @@ export class EuiChipListComponent {
224
224
  return tab;
225
225
  }
226
226
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EuiChipListComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.EuiChipListDragService }, { token: i2.DomSanitizer }, { token: i3.BaseStatesDirective }], target: i0.ɵɵFactoryTarget.Component }); }
227
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: EuiChipListComponent, selector: "eui-chip-list, div[euiChipList], ul[euiChipList]", inputs: { chips: "chips", toggleLinkMoreLabel: "toggleLinkMoreLabel", toggleLinkLessLabel: "toggleLinkLessLabel", chipsSortOrder: "chipsSortOrder", dragAndDropSourceName: "dragAndDropSourceName", dragAndDropConnectedTo: "dragAndDropConnectedTo", ariaLabel: "ariaLabel", dropListOrientation: "dropListOrientation", isSquared: ["isSquared", "isSquared", booleanAttribute], isChipsRemovable: ["isChipsRemovable", "isChipsRemovable", booleanAttribute], isMaxVisibleChipsOpened: ["isMaxVisibleChipsOpened", "isMaxVisibleChipsOpened", booleanAttribute], isChipsSorted: ["isChipsSorted", "isChipsSorted", booleanAttribute], isChipsDragAndDrop: ["isChipsDragAndDrop", "isChipsDragAndDrop", booleanAttribute], isGrid: ["isGrid", "isGrid", booleanAttribute], maxVisibleChipsCount: ["maxVisibleChipsCount", "maxVisibleChipsCount", numberAttribute], chipsLabelTruncateCount: ["chipsLabelTruncateCount", "chipsLabelTruncateCount", numberAttribute] }, outputs: { chipsInit: "chipsInit", chipRemove: "chipRemove", chipDragStart: "chipDragStart", chipDragRelease: "chipDragRelease", chipDrop: "chipDrop", chiplistFocus: "chiplistFocus" }, host: { properties: { "attr.aria-label": "this.ariaLabel", "class": "this.cssClasses" } }, queries: [{ propertyName: "euiChipsContent", predicate: i0.forwardRef(() => EuiChipComponent) }], viewQueries: [{ propertyName: "chipListDropList", first: true, predicate: ["chipListDropList"], descendants: true, read: CdkDropList }, { propertyName: "chipListDragAndDropItems", first: true, predicate: ["chipListDragAndDropItems"], descendants: true, read: CdkDropList }, { propertyName: "euiChipItems", predicate: ["euiChipItem"], descendants: true, read: ElementRef }], usesOnChanges: true, hostDirectives: [{ directive: i3.BaseStatesDirective, inputs: ["euiPrimary", "euiPrimary", "euiSecondary", "euiSecondary", "euiSuccess", "euiSuccess", "euiInfo", "euiInfo", "euiWarning", "euiWarning", "euiDanger", "euiDanger", "euiAccent", "euiAccent", "euiVariant", "euiVariant", "euiOutline", "euiOutline", "euiDisabled", "euiDisabled"] }], ngImport: i0, template: "<div class=\"eui-chip-list-container\">\n <div class=\"eui-chip-list-wrapper\">\n\n @if (!isGrid) {\n <div\n role=\"list\"\n #chipList\n #chipListDropList\n #chipListDragAndDropItems\n cdkDropList\n [cdkDropListOrientation]=\"dropListOrientation\"\n [cdkDropListDisabled]=\"!isChipsDragAndDrop\"\n [cdkDropListData]=\"chips ? { chips } : { chips: [] }\"\n [cdkDropListConnectedTo]=\"droppableArea\"\n (cdkDropListDropped)=\"drop($event)\"\n (focus)=\"onFocus()\"\n class=\"eui-chip-list__list\">\n\n @for ( chip of chips; track chip; let i = $index; ) {\n @if (\n (maxVisibleChipsCount && isMaxVisibleChipsOpened) ||\n (maxVisibleChipsCount && maxVisibleChipsCount > i) ||\n !maxVisibleChipsCount\n ) {\n <div\n class=\"eui-chip-list__chip-container\"\n [class.eui-chip--hidden]=\"maxVisibleChipsCount > i\"\n cdkDrag\n [cdkDragData]=\"chip\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragReleased)=\"onDragReleased($event)\">\n <eui-chip\n #euiChipItem\n [data]=\"chip.data ? chip.data : chip\"\n [attr.role]=\"'listitem'\"\n ariaLabel=\"{{ getChipLabel(chip) }}\"\n [euiInternalId]=\"chip.euiInternalId\"\n [isChipRemovable]=\"chip.isChipRemovable || (isChipsRemovable && chip.isRemovable) !== false\"\n [euiOutline]=\"chip.euiOutline || this.baseStatesDirective?.euiOutline || chip.isOutline\"\n [euiVariant]=\"chip.typeClass || this.baseStatesDirective?.euiVariant || chip.baseStatesDirective?.euiVariant\"\n [euiDisabled]=\"chip.euiDisabled || this.baseStatesDirective?.euiDisabled || chip.isDisabled\"\n [euiTooltip]=\"chip.tooltipMessage\"\n [position]=\"chip.tooltip?.position\"\n [contentAlignment]=\"chip.tooltip?.contentAlignment\"\n (remove)=\"onRemove($event)\">\n\n @if (chip.iconSvgName) {\n <eui-icon-svg [icon]=\"chip.iconSvgName\" />\n }\n @if (chip.iconClass) {\n <span class=\"{{ chip.iconClass }}\"></span>\n }\n @if (chipsLabelTruncateCount) {\n <span title=\"{{ getChipLabel(chip) }}\">\n {{ getChipLabel(chip) | euiTruncate: chipsLabelTruncateCount }}\n </span>\n } @else {\n <span class=\"eui-chip-list__chip-content\" [innerHTML]=\"getChipContent(chip)\"></span>\n } \n </eui-chip>\n </div>\n }\n }\n <ng-container *ngTemplateOutlet=\"euiChipListAppendContent\"></ng-container>\n <ng-container *ngTemplateOutlet=\"additionalContent\"></ng-container>\n </div>\n\n } @else { // isGrid\n\n <div class=\"eui-chip-list__group\" cdkDropListGroup>\n @for ( chip of chips; track chip; let i = $index; ) {\n @if (\n (maxVisibleChipsCount && isMaxVisibleChipsOpened) ||\n (maxVisibleChipsCount && maxVisibleChipsCount > i) ||\n !maxVisibleChipsCount\n )\n {\n <div\n role=\"list\"\n #chipList\n #chipListDropList\n #chipListDragAndDropItems\n cdkDropList\n [cdkDropListDisabled]=\"!isChipsDragAndDrop\"\n [cdkDropListData]=\"{ chip: chip, index: i }\"\n (focus)=\"onFocus()\"\n (cdkDropListDropped)=\"onDropGrid($event)\"\n class=\"eui-chip-list__custom\">\n <div\n class=\"eui-chip-list__chip-container\"\n cdkDrag\n [cdkDragData]=\"{ chip: chip, index: i }\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragReleased)=\"onDragReleased($event)\"\n (cdkDragEntered)=\"onDragEnter($event)\">\n <eui-chip\n #euiChipItem\n [data]=\"chip.data ? chip.data : chip\"\n [id]=\"chip.id\"\n [attr.role]=\"'listitem'\"\n ariaLabel=\"{{ getChipLabel(chip) }}\"\n [euiInternalId]=\"chip.euiInternalId\"\n [isChipRemovable]=\"chip.isChipRemovable || (isChipsRemovable && chip.isRemovable) !== false\"\n [euiOutline]=\"chip.euiOutline || this.baseStatesDirective?.euiOutline || chip.isOutline\"\n [euiVariant]=\"chip.typeClass || this.baseStatesDirective?.euiVariant || chip.baseStatesDirective?.euiVariant\"\n [euiDisabled]=\"chip.euiDisabled || this.baseStatesDirective?.euiDisabled || chip.isDisabled\"\n [euiTooltip]=\"chip.tooltipMessage\"\n [position]=\"chip.tooltip?.position\"\n [contentAlignment]=\"chip.tooltip?.contentAlignment\"\n (remove)=\"onRemove($event)\">\n \n @if (chip.iconSvgName) {\n <eui-icon-svg [icon]=\"chip.iconSvgName\" />\n }\n @if (chipsLabelTruncateCount) {\n <span title=\"{{ getChipLabel(chip) }}\">\n {{ getChipLabel(chip) | euiTruncate: chipsLabelTruncateCount }}\n </span>\n } @else {\n <span class=\"eui-chip-list__chip-content\" [innerHTML]=\"getChipContent(chip)\"></span>\n }\n </eui-chip>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"euiChipListAppendContent\"></ng-container>\n <ng-container *ngTemplateOutlet=\"additionalContent\"></ng-container>\n }\n }\n </div>\n }\n </div>\n</div>\n\n<ng-template #euiChipListAppendContent>\n <ng-content select=\"euiChipListAppendContent\"></ng-content>\n</ng-template>\n\n<ng-template #additionalContent>\n @if (maxVisibleChipsCount && chips && chips.length > maxVisibleChipsCount) {\n <div class=\"eui-chip-list__expand-button-wrapper\">\n <button\n euiButton\n euiBasicButton\n euiSecondary\n euiSizeS\n type=\"button\"\n class=\"eui-chip-list__expand-button\"\n (click)=\"toggleTags()\">\n\n @if (isMaxVisibleChipsOpened) {\n <eui-icon-svg icon=\"chevron-back:sharp\" aria-label=\"Collapse icon\" />\n @if (toggleLinkLessLabel) {\n {{ toggleLinkLessLabel | translate }}\n }\n } @else {\n @if (toggleLinkMoreLabel) {\n {{ toggleLinkMoreLabel | translate }}\n }\n <eui-icon-svg icon=\"chevron-forward:sharp\" aria-label=\"Expand icon\" />\n }\n </button>\n </div>\n }\n</ng-template>\n", styles: [".eui-18 .eui-chip-list{align-items:center;display:flex;margin:0;padding:0}.eui-18 .eui-chip-list .eui-chip-list-container{align-items:center;display:flex;margin-bottom:var(--eui-s-2xs)}.eui-18 .eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper{align-items:center;display:flex;width:100%;flex-wrap:wrap}.eui-18 .eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__list{flex-wrap:wrap;gap:var(--eui-s-xs)}.eui-18 .eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__chip-container{align-items:center;display:inline-flex}.eui-18 .eui-chip-list[ischipsdraganddrop] .eui-chip-list-container{width:100%}.eui-18 .eui-chip-list__group{display:flex;flex-wrap:wrap;gap:var(--eui-s-xs)}.eui-18 .eui-chip-list__chip-container.cdk-drag:not(.cdk-drag-disabled){cursor:move!important}.eui-18 .eui-chip-list__custom{min-width:auto!important;width:auto!important}.eui-18 .eui-chip-list__chip-content{display:flex;align-items:center;gap:var(--eui-s-xs)}@media screen and (max-width: 767px){.eui-18 .eui-chip-list .eui-chip-list-container{flex-wrap:wrap}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-18 .eui-chip-list .eui-chip-list-container{flex-wrap:wrap}}\n"], dependencies: [{ kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.EuiChipComponent, selector: "eui-chip, span[euiChip], li[euiChip]", inputs: ["ariaLabel", "e2eAttr", "euiInternalId", "tooltipMessage", "id", "data", "isChipRemovable", "isSquared", "isFilled"], outputs: ["remove"] }, { kind: "component", type: i6.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "euiIconButton", "euiLineWrap", "isChecked", "euiDisabled"], outputs: ["buttonClick"] }, { kind: "component", type: i7.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "fillColor", "set", "size", "style", "iconUrl", "transform", "euiVariant", "aria-label", "ariaHidden", "focusable", "isLoading", "isInputIcon", "euiStart", "euiEnd"] }, { kind: "directive", type: i8.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i8.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i9.EuiTooltipDirective, selector: "[euiTooltip]", inputs: ["e2eAttr", "showDelay", "hideDelay", "contentAlignment", "position", "isDisabled", "euiTooltip", "euiTooltipPrimary", "euiTooltipSecondary", "euiTooltipInfo", "euiTooltipSuccess", "euiTooltipWarning", "euiTooltipDanger", "euiTooltipAccent"], exportAs: ["euiTooltip"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }, { kind: "pipe", type: i11.EuiTruncatePipe, name: "euiTruncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
227
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: EuiChipListComponent, selector: "eui-chip-list, div[euiChipList], ul[euiChipList]", inputs: { chips: "chips", toggleLinkMoreLabel: "toggleLinkMoreLabel", toggleLinkLessLabel: "toggleLinkLessLabel", chipsSortOrder: "chipsSortOrder", dragAndDropSourceName: "dragAndDropSourceName", dragAndDropConnectedTo: "dragAndDropConnectedTo", ariaLabel: "ariaLabel", dropListOrientation: "dropListOrientation", isSquared: ["isSquared", "isSquared", booleanAttribute], isChipsRemovable: ["isChipsRemovable", "isChipsRemovable", booleanAttribute], isMaxVisibleChipsOpened: ["isMaxVisibleChipsOpened", "isMaxVisibleChipsOpened", booleanAttribute], isChipsSorted: ["isChipsSorted", "isChipsSorted", booleanAttribute], isChipsDragAndDrop: ["isChipsDragAndDrop", "isChipsDragAndDrop", booleanAttribute], isGrid: ["isGrid", "isGrid", booleanAttribute], maxVisibleChipsCount: ["maxVisibleChipsCount", "maxVisibleChipsCount", numberAttribute], chipsLabelTruncateCount: ["chipsLabelTruncateCount", "chipsLabelTruncateCount", numberAttribute] }, outputs: { chipsInit: "chipsInit", chipRemove: "chipRemove", chipDragStart: "chipDragStart", chipDragRelease: "chipDragRelease", chipDrop: "chipDrop", chiplistFocus: "chiplistFocus" }, host: { properties: { "attr.aria-label": "this.ariaLabel", "class": "this.cssClasses" } }, queries: [{ propertyName: "euiChipsContent", predicate: i0.forwardRef(() => EuiChipComponent) }], viewQueries: [{ propertyName: "chipListDropList", first: true, predicate: ["chipListDropList"], descendants: true, read: CdkDropList }, { propertyName: "chipListDragAndDropItems", first: true, predicate: ["chipListDragAndDropItems"], descendants: true, read: CdkDropList }, { propertyName: "euiChipItems", predicate: ["euiChipItem"], descendants: true, read: ElementRef }], usesOnChanges: true, hostDirectives: [{ directive: i3.BaseStatesDirective, inputs: ["euiPrimary", "euiPrimary", "euiSecondary", "euiSecondary", "euiSuccess", "euiSuccess", "euiInfo", "euiInfo", "euiWarning", "euiWarning", "euiDanger", "euiDanger", "euiAccent", "euiAccent", "euiVariant", "euiVariant", "euiOutline", "euiOutline", "euiDisabled", "euiDisabled"] }], ngImport: i0, template: "<div class=\"eui-chip-list-container\">\n <div class=\"eui-chip-list-wrapper\">\n\n @if (!isGrid) {\n <div\n role=\"list\"\n #chipList\n #chipListDropList\n #chipListDragAndDropItems\n cdkDropList\n [cdkDropListOrientation]=\"dropListOrientation\"\n [cdkDropListDisabled]=\"!isChipsDragAndDrop\"\n [cdkDropListData]=\"chips ? { chips } : { chips: [] }\"\n [cdkDropListConnectedTo]=\"droppableArea\"\n (cdkDropListDropped)=\"drop($event)\"\n (focus)=\"onFocus()\"\n class=\"eui-chip-list__list\">\n\n @for ( chip of chips; track chip; let i = $index; ) {\n @if (\n (maxVisibleChipsCount && isMaxVisibleChipsOpened) ||\n (maxVisibleChipsCount && maxVisibleChipsCount > i) ||\n !maxVisibleChipsCount\n ) {\n <div\n class=\"eui-chip-list__chip-container\"\n [class.eui-chip--hidden]=\"maxVisibleChipsCount > i\"\n cdkDrag\n [cdkDragData]=\"chip\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragReleased)=\"onDragReleased($event)\">\n <eui-chip\n #euiChipItem\n [data]=\"chip.data ? chip.data : chip\"\n [attr.role]=\"'listitem'\"\n ariaLabel=\"{{ getChipLabel(chip) }}\"\n [euiInternalId]=\"chip.euiInternalId\"\n [isFilled]=\"chip.isFilled\"\n [isChipRemovable]=\"chip.isChipRemovable || (isChipsRemovable && chip.isRemovable) !== false\"\n [euiOutline]=\"chip.euiOutline || this.baseStatesDirective?.euiOutline || chip.isOutline\"\n [euiVariant]=\"chip.typeClass || this.baseStatesDirective?.euiVariant || chip.baseStatesDirective?.euiVariant\"\n [euiDisabled]=\"chip.euiDisabled || this.baseStatesDirective?.euiDisabled || chip.isDisabled\"\n [euiTooltip]=\"chip.tooltipMessage\"\n [position]=\"chip.tooltip?.position\"\n [contentAlignment]=\"chip.tooltip?.contentAlignment\"\n (remove)=\"onRemove($event)\">\n\n @if (chip.iconSvgName) {\n <eui-icon-svg [icon]=\"chip.iconSvgName\" />\n }\n @if (chip.iconClass) {\n <span class=\"{{ chip.iconClass }}\"></span>\n }\n @if (chipsLabelTruncateCount) {\n <span title=\"{{ getChipLabel(chip) }}\">\n {{ getChipLabel(chip) | euiTruncate: chipsLabelTruncateCount }}\n </span>\n } @else {\n <span class=\"eui-chip-list__chip-content\" [innerHTML]=\"getChipContent(chip)\"></span>\n } \n </eui-chip>\n </div>\n }\n }\n <ng-container *ngTemplateOutlet=\"euiChipListAppendContent\"></ng-container>\n <ng-container *ngTemplateOutlet=\"additionalContent\"></ng-container>\n </div>\n\n } @else { // isGrid\n\n <div class=\"eui-chip-list__group\" cdkDropListGroup>\n @for ( chip of chips; track chip; let i = $index; ) {\n @if (\n (maxVisibleChipsCount && isMaxVisibleChipsOpened) ||\n (maxVisibleChipsCount && maxVisibleChipsCount > i) ||\n !maxVisibleChipsCount\n )\n {\n <div\n role=\"list\"\n #chipList\n #chipListDropList\n #chipListDragAndDropItems\n cdkDropList\n [cdkDropListDisabled]=\"!isChipsDragAndDrop\"\n [cdkDropListData]=\"{ chip: chip, index: i }\"\n (focus)=\"onFocus()\"\n (cdkDropListDropped)=\"onDropGrid($event)\"\n class=\"eui-chip-list__custom\">\n <div\n class=\"eui-chip-list__chip-container\"\n cdkDrag\n [cdkDragData]=\"{ chip: chip, index: i }\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragReleased)=\"onDragReleased($event)\"\n (cdkDragEntered)=\"onDragEnter($event)\">\n <eui-chip\n #euiChipItem\n [data]=\"chip.data ? chip.data : chip\"\n [id]=\"chip.id\"\n [attr.role]=\"'listitem'\"\n ariaLabel=\"{{ getChipLabel(chip) }}\"\n [euiInternalId]=\"chip.euiInternalId\"\n [isFilled]=\"chip.isFilled\"\n [isChipRemovable]=\"chip.isChipRemovable || (isChipsRemovable && chip.isRemovable) !== false\"\n [euiOutline]=\"chip.euiOutline || this.baseStatesDirective?.euiOutline || chip.isOutline\"\n [euiVariant]=\"chip.typeClass || this.baseStatesDirective?.euiVariant || chip.baseStatesDirective?.euiVariant\"\n [euiDisabled]=\"chip.euiDisabled || this.baseStatesDirective?.euiDisabled || chip.isDisabled\"\n [euiTooltip]=\"chip.tooltipMessage\"\n [position]=\"chip.tooltip?.position\"\n [contentAlignment]=\"chip.tooltip?.contentAlignment\"\n (remove)=\"onRemove($event)\">\n \n @if (chip.iconSvgName) {\n <eui-icon-svg [icon]=\"chip.iconSvgName\" />\n }\n @if (chipsLabelTruncateCount) {\n <span title=\"{{ getChipLabel(chip) }}\">\n {{ getChipLabel(chip) | euiTruncate: chipsLabelTruncateCount }}\n </span>\n } @else {\n <span class=\"eui-chip-list__chip-content\" [innerHTML]=\"getChipContent(chip)\"></span>\n }\n </eui-chip>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"euiChipListAppendContent\"></ng-container>\n <ng-container *ngTemplateOutlet=\"additionalContent\"></ng-container>\n }\n }\n </div>\n }\n </div>\n</div>\n\n<ng-template #euiChipListAppendContent>\n <ng-content select=\"euiChipListAppendContent\"></ng-content>\n</ng-template>\n\n<ng-template #additionalContent>\n @if (maxVisibleChipsCount && chips && chips.length > maxVisibleChipsCount) {\n <div class=\"eui-chip-list__expand-button-wrapper\">\n <button\n euiButton\n euiBasicButton\n euiSecondary\n euiSizeS\n type=\"button\"\n class=\"eui-chip-list__expand-button\"\n (click)=\"toggleTags()\">\n\n @if (isMaxVisibleChipsOpened) {\n <eui-icon-svg icon=\"chevron-back:sharp\" aria-label=\"Collapse icon\" />\n @if (toggleLinkLessLabel) {\n {{ toggleLinkLessLabel | translate }}\n }\n } @else {\n @if (toggleLinkMoreLabel) {\n {{ toggleLinkMoreLabel | translate }}\n }\n <eui-icon-svg icon=\"chevron-forward:sharp\" aria-label=\"Expand icon\" />\n }\n </button>\n </div>\n }\n</ng-template>\n", styles: [".eui-18 .eui-chip-list{align-items:center;display:flex;margin:0;padding:0}.eui-18 .eui-chip-list .eui-chip-list-container{align-items:center;display:flex;margin-bottom:var(--eui-s-2xs)}.eui-18 .eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper{align-items:center;display:flex;width:100%;flex-wrap:wrap}.eui-18 .eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__list{flex-wrap:wrap;gap:var(--eui-s-xs)}.eui-18 .eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__chip-container{align-items:center;display:inline-flex}.eui-18 .eui-chip-list[ischipsdraganddrop] .eui-chip-list-container{width:100%}.eui-18 .eui-chip-list__group{display:flex;flex-wrap:wrap;gap:var(--eui-s-xs)}.eui-18 .eui-chip-list__chip-container.cdk-drag:not(.cdk-drag-disabled){cursor:move!important}.eui-18 .eui-chip-list__custom{min-width:auto!important;width:auto!important}.eui-18 .eui-chip-list__chip-content{display:flex;align-items:center;gap:var(--eui-s-xs)}@media screen and (max-width: 767px){.eui-18 .eui-chip-list .eui-chip-list-container{flex-wrap:wrap}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-18 .eui-chip-list .eui-chip-list-container{flex-wrap:wrap}}\n"], dependencies: [{ kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.EuiChipComponent, selector: "eui-chip, span[euiChip], li[euiChip]", inputs: ["ariaLabel", "e2eAttr", "euiInternalId", "tooltipMessage", "id", "data", "isChipRemovable", "isSquared", "isFilled"], outputs: ["remove"] }, { kind: "component", type: i6.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "euiIconButton", "euiLineWrap", "isChecked", "euiDisabled"], outputs: ["buttonClick"] }, { kind: "component", type: i7.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "fillColor", "set", "size", "style", "iconUrl", "transform", "euiVariant", "aria-label", "ariaHidden", "focusable", "isLoading", "isInputIcon", "euiStart", "euiEnd"] }, { kind: "directive", type: i8.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i8.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i9.EuiTooltipDirective, selector: "[euiTooltip]", inputs: ["e2eAttr", "showDelay", "hideDelay", "contentAlignment", "position", "isDisabled", "euiTooltip", "euiTooltipPrimary", "euiTooltipSecondary", "euiTooltipInfo", "euiTooltipSuccess", "euiTooltipWarning", "euiTooltipDanger", "euiTooltipAccent"], exportAs: ["euiTooltip"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }, { kind: "pipe", type: i11.EuiTruncatePipe, name: "euiTruncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
228
228
  }
229
229
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EuiChipListComponent, decorators: [{
230
230
  type: Component,
@@ -244,7 +244,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
244
244
  'euiDisabled',
245
245
  ],
246
246
  },
247
- ], template: "<div class=\"eui-chip-list-container\">\n <div class=\"eui-chip-list-wrapper\">\n\n @if (!isGrid) {\n <div\n role=\"list\"\n #chipList\n #chipListDropList\n #chipListDragAndDropItems\n cdkDropList\n [cdkDropListOrientation]=\"dropListOrientation\"\n [cdkDropListDisabled]=\"!isChipsDragAndDrop\"\n [cdkDropListData]=\"chips ? { chips } : { chips: [] }\"\n [cdkDropListConnectedTo]=\"droppableArea\"\n (cdkDropListDropped)=\"drop($event)\"\n (focus)=\"onFocus()\"\n class=\"eui-chip-list__list\">\n\n @for ( chip of chips; track chip; let i = $index; ) {\n @if (\n (maxVisibleChipsCount && isMaxVisibleChipsOpened) ||\n (maxVisibleChipsCount && maxVisibleChipsCount > i) ||\n !maxVisibleChipsCount\n ) {\n <div\n class=\"eui-chip-list__chip-container\"\n [class.eui-chip--hidden]=\"maxVisibleChipsCount > i\"\n cdkDrag\n [cdkDragData]=\"chip\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragReleased)=\"onDragReleased($event)\">\n <eui-chip\n #euiChipItem\n [data]=\"chip.data ? chip.data : chip\"\n [attr.role]=\"'listitem'\"\n ariaLabel=\"{{ getChipLabel(chip) }}\"\n [euiInternalId]=\"chip.euiInternalId\"\n [isChipRemovable]=\"chip.isChipRemovable || (isChipsRemovable && chip.isRemovable) !== false\"\n [euiOutline]=\"chip.euiOutline || this.baseStatesDirective?.euiOutline || chip.isOutline\"\n [euiVariant]=\"chip.typeClass || this.baseStatesDirective?.euiVariant || chip.baseStatesDirective?.euiVariant\"\n [euiDisabled]=\"chip.euiDisabled || this.baseStatesDirective?.euiDisabled || chip.isDisabled\"\n [euiTooltip]=\"chip.tooltipMessage\"\n [position]=\"chip.tooltip?.position\"\n [contentAlignment]=\"chip.tooltip?.contentAlignment\"\n (remove)=\"onRemove($event)\">\n\n @if (chip.iconSvgName) {\n <eui-icon-svg [icon]=\"chip.iconSvgName\" />\n }\n @if (chip.iconClass) {\n <span class=\"{{ chip.iconClass }}\"></span>\n }\n @if (chipsLabelTruncateCount) {\n <span title=\"{{ getChipLabel(chip) }}\">\n {{ getChipLabel(chip) | euiTruncate: chipsLabelTruncateCount }}\n </span>\n } @else {\n <span class=\"eui-chip-list__chip-content\" [innerHTML]=\"getChipContent(chip)\"></span>\n } \n </eui-chip>\n </div>\n }\n }\n <ng-container *ngTemplateOutlet=\"euiChipListAppendContent\"></ng-container>\n <ng-container *ngTemplateOutlet=\"additionalContent\"></ng-container>\n </div>\n\n } @else { // isGrid\n\n <div class=\"eui-chip-list__group\" cdkDropListGroup>\n @for ( chip of chips; track chip; let i = $index; ) {\n @if (\n (maxVisibleChipsCount && isMaxVisibleChipsOpened) ||\n (maxVisibleChipsCount && maxVisibleChipsCount > i) ||\n !maxVisibleChipsCount\n )\n {\n <div\n role=\"list\"\n #chipList\n #chipListDropList\n #chipListDragAndDropItems\n cdkDropList\n [cdkDropListDisabled]=\"!isChipsDragAndDrop\"\n [cdkDropListData]=\"{ chip: chip, index: i }\"\n (focus)=\"onFocus()\"\n (cdkDropListDropped)=\"onDropGrid($event)\"\n class=\"eui-chip-list__custom\">\n <div\n class=\"eui-chip-list__chip-container\"\n cdkDrag\n [cdkDragData]=\"{ chip: chip, index: i }\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragReleased)=\"onDragReleased($event)\"\n (cdkDragEntered)=\"onDragEnter($event)\">\n <eui-chip\n #euiChipItem\n [data]=\"chip.data ? chip.data : chip\"\n [id]=\"chip.id\"\n [attr.role]=\"'listitem'\"\n ariaLabel=\"{{ getChipLabel(chip) }}\"\n [euiInternalId]=\"chip.euiInternalId\"\n [isChipRemovable]=\"chip.isChipRemovable || (isChipsRemovable && chip.isRemovable) !== false\"\n [euiOutline]=\"chip.euiOutline || this.baseStatesDirective?.euiOutline || chip.isOutline\"\n [euiVariant]=\"chip.typeClass || this.baseStatesDirective?.euiVariant || chip.baseStatesDirective?.euiVariant\"\n [euiDisabled]=\"chip.euiDisabled || this.baseStatesDirective?.euiDisabled || chip.isDisabled\"\n [euiTooltip]=\"chip.tooltipMessage\"\n [position]=\"chip.tooltip?.position\"\n [contentAlignment]=\"chip.tooltip?.contentAlignment\"\n (remove)=\"onRemove($event)\">\n \n @if (chip.iconSvgName) {\n <eui-icon-svg [icon]=\"chip.iconSvgName\" />\n }\n @if (chipsLabelTruncateCount) {\n <span title=\"{{ getChipLabel(chip) }}\">\n {{ getChipLabel(chip) | euiTruncate: chipsLabelTruncateCount }}\n </span>\n } @else {\n <span class=\"eui-chip-list__chip-content\" [innerHTML]=\"getChipContent(chip)\"></span>\n }\n </eui-chip>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"euiChipListAppendContent\"></ng-container>\n <ng-container *ngTemplateOutlet=\"additionalContent\"></ng-container>\n }\n }\n </div>\n }\n </div>\n</div>\n\n<ng-template #euiChipListAppendContent>\n <ng-content select=\"euiChipListAppendContent\"></ng-content>\n</ng-template>\n\n<ng-template #additionalContent>\n @if (maxVisibleChipsCount && chips && chips.length > maxVisibleChipsCount) {\n <div class=\"eui-chip-list__expand-button-wrapper\">\n <button\n euiButton\n euiBasicButton\n euiSecondary\n euiSizeS\n type=\"button\"\n class=\"eui-chip-list__expand-button\"\n (click)=\"toggleTags()\">\n\n @if (isMaxVisibleChipsOpened) {\n <eui-icon-svg icon=\"chevron-back:sharp\" aria-label=\"Collapse icon\" />\n @if (toggleLinkLessLabel) {\n {{ toggleLinkLessLabel | translate }}\n }\n } @else {\n @if (toggleLinkMoreLabel) {\n {{ toggleLinkMoreLabel | translate }}\n }\n <eui-icon-svg icon=\"chevron-forward:sharp\" aria-label=\"Expand icon\" />\n }\n </button>\n </div>\n }\n</ng-template>\n", styles: [".eui-18 .eui-chip-list{align-items:center;display:flex;margin:0;padding:0}.eui-18 .eui-chip-list .eui-chip-list-container{align-items:center;display:flex;margin-bottom:var(--eui-s-2xs)}.eui-18 .eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper{align-items:center;display:flex;width:100%;flex-wrap:wrap}.eui-18 .eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__list{flex-wrap:wrap;gap:var(--eui-s-xs)}.eui-18 .eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__chip-container{align-items:center;display:inline-flex}.eui-18 .eui-chip-list[ischipsdraganddrop] .eui-chip-list-container{width:100%}.eui-18 .eui-chip-list__group{display:flex;flex-wrap:wrap;gap:var(--eui-s-xs)}.eui-18 .eui-chip-list__chip-container.cdk-drag:not(.cdk-drag-disabled){cursor:move!important}.eui-18 .eui-chip-list__custom{min-width:auto!important;width:auto!important}.eui-18 .eui-chip-list__chip-content{display:flex;align-items:center;gap:var(--eui-s-xs)}@media screen and (max-width: 767px){.eui-18 .eui-chip-list .eui-chip-list-container{flex-wrap:wrap}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-18 .eui-chip-list .eui-chip-list-container{flex-wrap:wrap}}\n"] }]
247
+ ], template: "<div class=\"eui-chip-list-container\">\n <div class=\"eui-chip-list-wrapper\">\n\n @if (!isGrid) {\n <div\n role=\"list\"\n #chipList\n #chipListDropList\n #chipListDragAndDropItems\n cdkDropList\n [cdkDropListOrientation]=\"dropListOrientation\"\n [cdkDropListDisabled]=\"!isChipsDragAndDrop\"\n [cdkDropListData]=\"chips ? { chips } : { chips: [] }\"\n [cdkDropListConnectedTo]=\"droppableArea\"\n (cdkDropListDropped)=\"drop($event)\"\n (focus)=\"onFocus()\"\n class=\"eui-chip-list__list\">\n\n @for ( chip of chips; track chip; let i = $index; ) {\n @if (\n (maxVisibleChipsCount && isMaxVisibleChipsOpened) ||\n (maxVisibleChipsCount && maxVisibleChipsCount > i) ||\n !maxVisibleChipsCount\n ) {\n <div\n class=\"eui-chip-list__chip-container\"\n [class.eui-chip--hidden]=\"maxVisibleChipsCount > i\"\n cdkDrag\n [cdkDragData]=\"chip\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragReleased)=\"onDragReleased($event)\">\n <eui-chip\n #euiChipItem\n [data]=\"chip.data ? chip.data : chip\"\n [attr.role]=\"'listitem'\"\n ariaLabel=\"{{ getChipLabel(chip) }}\"\n [euiInternalId]=\"chip.euiInternalId\"\n [isFilled]=\"chip.isFilled\"\n [isChipRemovable]=\"chip.isChipRemovable || (isChipsRemovable && chip.isRemovable) !== false\"\n [euiOutline]=\"chip.euiOutline || this.baseStatesDirective?.euiOutline || chip.isOutline\"\n [euiVariant]=\"chip.typeClass || this.baseStatesDirective?.euiVariant || chip.baseStatesDirective?.euiVariant\"\n [euiDisabled]=\"chip.euiDisabled || this.baseStatesDirective?.euiDisabled || chip.isDisabled\"\n [euiTooltip]=\"chip.tooltipMessage\"\n [position]=\"chip.tooltip?.position\"\n [contentAlignment]=\"chip.tooltip?.contentAlignment\"\n (remove)=\"onRemove($event)\">\n\n @if (chip.iconSvgName) {\n <eui-icon-svg [icon]=\"chip.iconSvgName\" />\n }\n @if (chip.iconClass) {\n <span class=\"{{ chip.iconClass }}\"></span>\n }\n @if (chipsLabelTruncateCount) {\n <span title=\"{{ getChipLabel(chip) }}\">\n {{ getChipLabel(chip) | euiTruncate: chipsLabelTruncateCount }}\n </span>\n } @else {\n <span class=\"eui-chip-list__chip-content\" [innerHTML]=\"getChipContent(chip)\"></span>\n } \n </eui-chip>\n </div>\n }\n }\n <ng-container *ngTemplateOutlet=\"euiChipListAppendContent\"></ng-container>\n <ng-container *ngTemplateOutlet=\"additionalContent\"></ng-container>\n </div>\n\n } @else { // isGrid\n\n <div class=\"eui-chip-list__group\" cdkDropListGroup>\n @for ( chip of chips; track chip; let i = $index; ) {\n @if (\n (maxVisibleChipsCount && isMaxVisibleChipsOpened) ||\n (maxVisibleChipsCount && maxVisibleChipsCount > i) ||\n !maxVisibleChipsCount\n )\n {\n <div\n role=\"list\"\n #chipList\n #chipListDropList\n #chipListDragAndDropItems\n cdkDropList\n [cdkDropListDisabled]=\"!isChipsDragAndDrop\"\n [cdkDropListData]=\"{ chip: chip, index: i }\"\n (focus)=\"onFocus()\"\n (cdkDropListDropped)=\"onDropGrid($event)\"\n class=\"eui-chip-list__custom\">\n <div\n class=\"eui-chip-list__chip-container\"\n cdkDrag\n [cdkDragData]=\"{ chip: chip, index: i }\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragReleased)=\"onDragReleased($event)\"\n (cdkDragEntered)=\"onDragEnter($event)\">\n <eui-chip\n #euiChipItem\n [data]=\"chip.data ? chip.data : chip\"\n [id]=\"chip.id\"\n [attr.role]=\"'listitem'\"\n ariaLabel=\"{{ getChipLabel(chip) }}\"\n [euiInternalId]=\"chip.euiInternalId\"\n [isFilled]=\"chip.isFilled\"\n [isChipRemovable]=\"chip.isChipRemovable || (isChipsRemovable && chip.isRemovable) !== false\"\n [euiOutline]=\"chip.euiOutline || this.baseStatesDirective?.euiOutline || chip.isOutline\"\n [euiVariant]=\"chip.typeClass || this.baseStatesDirective?.euiVariant || chip.baseStatesDirective?.euiVariant\"\n [euiDisabled]=\"chip.euiDisabled || this.baseStatesDirective?.euiDisabled || chip.isDisabled\"\n [euiTooltip]=\"chip.tooltipMessage\"\n [position]=\"chip.tooltip?.position\"\n [contentAlignment]=\"chip.tooltip?.contentAlignment\"\n (remove)=\"onRemove($event)\">\n \n @if (chip.iconSvgName) {\n <eui-icon-svg [icon]=\"chip.iconSvgName\" />\n }\n @if (chipsLabelTruncateCount) {\n <span title=\"{{ getChipLabel(chip) }}\">\n {{ getChipLabel(chip) | euiTruncate: chipsLabelTruncateCount }}\n </span>\n } @else {\n <span class=\"eui-chip-list__chip-content\" [innerHTML]=\"getChipContent(chip)\"></span>\n }\n </eui-chip>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"euiChipListAppendContent\"></ng-container>\n <ng-container *ngTemplateOutlet=\"additionalContent\"></ng-container>\n }\n }\n </div>\n }\n </div>\n</div>\n\n<ng-template #euiChipListAppendContent>\n <ng-content select=\"euiChipListAppendContent\"></ng-content>\n</ng-template>\n\n<ng-template #additionalContent>\n @if (maxVisibleChipsCount && chips && chips.length > maxVisibleChipsCount) {\n <div class=\"eui-chip-list__expand-button-wrapper\">\n <button\n euiButton\n euiBasicButton\n euiSecondary\n euiSizeS\n type=\"button\"\n class=\"eui-chip-list__expand-button\"\n (click)=\"toggleTags()\">\n\n @if (isMaxVisibleChipsOpened) {\n <eui-icon-svg icon=\"chevron-back:sharp\" aria-label=\"Collapse icon\" />\n @if (toggleLinkLessLabel) {\n {{ toggleLinkLessLabel | translate }}\n }\n } @else {\n @if (toggleLinkMoreLabel) {\n {{ toggleLinkMoreLabel | translate }}\n }\n <eui-icon-svg icon=\"chevron-forward:sharp\" aria-label=\"Expand icon\" />\n }\n </button>\n </div>\n }\n</ng-template>\n", styles: [".eui-18 .eui-chip-list{align-items:center;display:flex;margin:0;padding:0}.eui-18 .eui-chip-list .eui-chip-list-container{align-items:center;display:flex;margin-bottom:var(--eui-s-2xs)}.eui-18 .eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper{align-items:center;display:flex;width:100%;flex-wrap:wrap}.eui-18 .eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__list{flex-wrap:wrap;gap:var(--eui-s-xs)}.eui-18 .eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__chip-container{align-items:center;display:inline-flex}.eui-18 .eui-chip-list[ischipsdraganddrop] .eui-chip-list-container{width:100%}.eui-18 .eui-chip-list__group{display:flex;flex-wrap:wrap;gap:var(--eui-s-xs)}.eui-18 .eui-chip-list__chip-container.cdk-drag:not(.cdk-drag-disabled){cursor:move!important}.eui-18 .eui-chip-list__custom{min-width:auto!important;width:auto!important}.eui-18 .eui-chip-list__chip-content{display:flex;align-items:center;gap:var(--eui-s-xs)}@media screen and (max-width: 767px){.eui-18 .eui-chip-list .eui-chip-list-container{flex-wrap:wrap}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-18 .eui-chip-list .eui-chip-list-container{flex-wrap:wrap}}\n"] }]
248
248
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.EuiChipListDragService }, { type: i2.DomSanitizer }, { type: i3.BaseStatesDirective }], propDecorators: { chips: [{
249
249
  type: Input
250
250
  }], toggleLinkMoreLabel: [{
@@ -325,4 +325,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
325
325
  type: Directive,
326
326
  args: [{ selector: 'euiChipListAppendContent' }]
327
327
  }] });
328
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWNoaXAtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9ldWktY2hpcC1saXN0L2V1aS1jaGlwLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWNoaXAtbGlzdC9ldWktY2hpcC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsZUFBZSxFQUtmLFlBQVksRUFDWixNQUFNLEVBRU4sU0FBUyxFQUdULFVBQVUsRUFDVixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLGVBQWUsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFFSCxlQUFlLEVBQ2YsV0FBVyxFQUNYLGlCQUFpQixHQUlwQixNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJckYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUEyQjdELE1BQU0sT0FBTyxvQkFBb0I7SUEyQjdCLElBQ0ksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBYUQsWUFDWSxFQUFxQixFQUNyQixzQkFBOEMsRUFDOUMsWUFBMEIsRUFDeEIsbUJBQXdDO1FBSDFDLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDeEIs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QUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUdILFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxPQUFPO2dCQVNpQyxlQUFlO3NCQUFuRSxlQUFlO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDRyxnQkFBZ0I7c0JBQXJFLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNVLHdCQUF3QjtzQkFBckYsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ1QsWUFBWTtzQkFBOUQsWUFBWTt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFOztBQXNPckQsb0JBQW9CO0FBRXBCLE1BQU0sT0FBTyxpQ0FBaUM7K0dBQWpDLGlDQUFpQzttR0FBakMsaUNBQWlDOzs0RkFBakMsaUNBQWlDO2tCQUQ3QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLDBCQUEwQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgVmlld0NoaWxkLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBPbkluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBPdXRwdXQsXG4gICAgT25EZXN0cm95LFxuICAgIERpcmVjdGl2ZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBFbGVtZW50UmVmLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFN1YmplY3QsIHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIENka0RyYWdEcm9wLFxuICAgIG1vdmVJdGVtSW5BcnJheSxcbiAgICBDZGtEcm9wTGlzdCxcbiAgICB0cmFuc2ZlckFycmF5SXRlbSxcbiAgICBDZGtEcmFnU3RhcnQsXG4gICAgQ2RrRHJhZ0VudGVyLFxuICAgIENka0RyYWdSZWxlYXNlLFxufSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuaW1wb3J0IHsgRXVpQ2hpcENvbXBvbmVudCwgRXVpQ2hpcCwgRXVpQ2hpcFRvb2x0aXAgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZXVpLWNoaXAnO1xuXG5pbXBvcnQgeyBFdWlDaGlwRHJhZ0Ryb3AgfSBmcm9tICcuL21vZGVscy9ldWktY2hpcC1kcmFnLWRyb3AubW9kZWwnO1xuaW1wb3J0IHsgRXVpQ2hpcExpc3REcmFnU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZXVpLWNoaXAtbGlzdC1kcmFnLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZVN0YXRlc0RpcmVjdGl2ZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9zaGFyZWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXVpLWNoaXAtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc2VsZWN0b3I6ICdldWktY2hpcC1saXN0LCBkaXZbZXVpQ2hpcExpc3RdLCB1bFtldWlDaGlwTGlzdF0nLFxuICAgIHN0eWxlVXJsczogWycuL3N0eWxlcy9faW5kZXguc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgZGlyZWN0aXZlOiBCYXNlU3RhdGVzRGlyZWN0aXZlLFxuICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgICAgJ2V1aVByaW1hcnknLFxuICAgICAgICAgICAgICAgICdldWlTZWNvbmRhcnknLFxuICAgICAgICAgICAgICAgICdldWlTdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAnZXVpSW5mbycsXG4gICAgICAgICAgICAgICAgJ2V1aVdhcm5pbmcnLFxuICAgICAgICAgICAgICAgICdldWlEYW5nZXInLFxuICAgICAgICAgICAgICAgICdldWlBY2NlbnQnLFxuICAgICAgICAgICAgICAgICdldWlWYXJpYW50JyxcblxuICAgICAgICAgICAgICAgICdldWlPdXRsaW5lJyxcbiAgICAgICAgICAgICAgICAnZXVpRGlzYWJsZWQnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlDaGlwTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBPbkluaXQge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQElucHV0KCkgY2hpcHM6IGFueVtdO1xuICAgIEBJbnB1dCgpIHRvZ2dsZUxpbmtNb3JlTGFiZWw6IHN0cmluZyA9IG51bGw7XG4gICAgQElucHV0KCkgdG9nZ2xlTGlua0xlc3NMYWJlbDogc3RyaW5nID0gbnVsbDtcbiAgICBASW5wdXQoKSBjaGlwc1NvcnRPcmRlcjogJ0FTQycgfCAnREVTQycgPSAnQVNDJztcbiAgICBASW5wdXQoKSBkcmFnQW5kRHJvcFNvdXJjZU5hbWU6IHN0cmluZztcbiAgICBASW5wdXQoKSBkcmFnQW5kRHJvcENvbm5lY3RlZFRvOiBzdHJpbmdbXSA9IFtdO1xuICAgIEBJbnB1dCgpIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJykgYXJpYUxhYmVsID0gJ2VVSSBDaGlwIExpc3QnO1xuICAgIEBJbnB1dCgpIGRyb3BMaXN0T3JpZW50YXRpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcgPSAnaG9yaXpvbnRhbCc7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNTcXVhcmVkID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzQ2hpcHNSZW1vdmFibGUgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNDaGlwc1NvcnRlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0NoaXBzRHJhZ0FuZERyb3AgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNHcmlkID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgbWF4VmlzaWJsZUNoaXBzQ291bnQgPSBudWxsO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50ID0gbnVsbDtcblxuICAgIEBPdXRwdXQoKSBjaGlwc0luaXQgPSBuZXcgRXZlbnRFbWl0dGVyPENka0Ryb3BMaXN0PigpO1xuICAgIEBPdXRwdXQoKSBjaGlwUmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGNoaXBzOiBFdWlDaGlwW107IHJlbW92ZWQ6IEV1aUNoaXAgfCB7IGNoaXA6IEV1aUNoaXA7IGV2ZW50OiBFdmVudCB9IH0+KCk7XG4gICAgQE91dHB1dCgpIGNoaXBEcmFnU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPEV1aUNoaXBEcmFnRHJvcD4oKTtcbiAgICBAT3V0cHV0KCkgY2hpcERyYWdSZWxlYXNlID0gbmV3IEV2ZW50RW1pdHRlcjxFdWlDaGlwRHJhZ0Ryb3A+KCk7XG4gICAgQE91dHB1dCgpIGNoaXBEcm9wID0gbmV3IEV2ZW50RW1pdHRlcjxFdWlDaGlwRHJhZ0Ryb3A+KCk7XG4gICAgQE91dHB1dCgpIGNoaXBsaXN0Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlU3RhdGVzRGlyZWN0aXZlLmdldENzc0NsYXNzZXMoJ2V1aS1jaGlwLWxpc3QnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZHJvcHBhYmxlQXJlYTogKENka0Ryb3BMaXN0IHwgc3RyaW5nKVtdO1xuICAgIHB1YmxpYyBjb25uZWN0Q29tcG9uZW50OiBDZGtEcm9wTGlzdFtdID0gW107XG4gICAgcHVibGljIGUyZUF0dHIgPSAnZXVpLWNoaXAtbGlzdCc7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRXVpQ2hpcENvbXBvbmVudCkpIGV1aUNoaXBzQ29udGVudDogUXVlcnlMaXN0PEV1aUNoaXBDb21wb25lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoJ2NoaXBMaXN0RHJvcExpc3QnLCB7IHJlYWQ6IENka0Ryb3BMaXN0IH0pIGNoaXBMaXN0RHJvcExpc3Q6IENka0Ryb3BMaXN0O1xuICAgIEBWaWV3Q2hpbGQoJ2NoaXBMaXN0RHJhZ0FuZERyb3BJdGVtcycsIHsgcmVhZDogQ2RrRHJvcExpc3QgfSkgY2hpcExpc3REcmFnQW5kRHJvcEl0ZW1zOiBDZGtEcm9wTGlzdDtcbiAgICBAVmlld0NoaWxkcmVuKCdldWlDaGlwSXRlbScsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBldWlDaGlwSXRlbXM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICAgIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGV1aUNoaXBMaXN0RHJhZ1NlcnZpY2U6IEV1aUNoaXBMaXN0RHJhZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByb3RlY3RlZCBiYXNlU3RhdGVzRGlyZWN0aXZlOiBCYXNlU3RhdGVzRGlyZWN0aXZlLFxuICAgICkge1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGMuY2hpcHMgJiYgdGhpcy5pc0NoaXBzU29ydGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNoaXBzID0gdGhpcy5vcmRlckl0ZW1zKHRoaXMuY2hpcHMsIHRoaXMuY2hpcHNTb3J0T3JkZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLmNoaXBzPy5tYXAoKGNoaXApID0+ICh7XG4gICAgICAgICAgICAuLi5jaGlwLFxuICAgICAgICAgICAgdG9vbHRpcDogbmV3IEV1aUNoaXBUb29sdGlwKGNoaXAudG9vbHRpcCksXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLmNoaXBzPy5tYXAoKGNoaXApID0+ICh7XG4gICAgICAgICAgICAuLi5jaGlwLFxuICAgICAgICAgICAgdG9vbHRpcDogbmV3IEV1aUNoaXBUb29sdGlwKGNoaXAudG9vbHRpcCksXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpcHNJbml0LmVtaXQodGhpcy5jaGlwTGlzdERyYWdBbmREcm9wSXRlbXMpO1xuICAgICAgICBpZiAodGhpcy5pc0NoaXBzU29ydGVkICYmIHRoaXMuY2hpcHMpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLm9yZGVySXRlbXModGhpcy5jaGlwcywgdGhpcy5jaGlwc1NvcnRPcmRlcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuZXVpQ2hpcExpc3REcmFnU2VydmljZS5zZXRDb21wb25lbnRDb25uZWN0b3IodGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZHJhZ0FuZERyb3BDb25uZWN0ZWRUbykge1xuICAgICAgICAgICAgdGhpcy5ldWlDaGlwTGlzdERyYWdTZXJ2aWNlLnNldERyb3BwYWJsZUFyZWEodGhpcy5jaGlwTGlzdERyb3BMaXN0LCB0aGlzLmRyYWdBbmREcm9wQ29ubmVjdGVkVG8pO1xuICAgICAgICAgICAgdGhpcy5kcmFnQW5kRHJvcENvbm5lY3RlZFRvLmZvckVhY2goKGNvbm5lY3RUbykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdENvbXBvbmVudCA9IHRoaXMuZXVpQ2hpcExpc3REcmFnU2VydmljZS5jb21wb25lbnRDb25uZWN0b3JbY29ubmVjdFRvXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyb3BwYWJsZUFyZWEgPSB0aGlzLmV1aUNoaXBMaXN0RHJhZ1NlcnZpY2UuZHJvcHBhYmxlQXJlYVt0aGlzLmRyYWdBbmREcm9wU291cmNlTmFtZV07XG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5ldWlDaGlwTGlzdERyYWdTZXJ2aWNlLmNvbXBvbmVudENvbm5lY3RvcikubWFwKChjb25uZWN0VG8pID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXVpQ2hpcExpc3REcmFnU2VydmljZS5jb21wb25lbnRDb25uZWN0b3JbY29ubmVjdFRvXS5wdXNoKHRoaXMuY2hpcExpc3REcmFnQW5kRHJvcEl0ZW1zKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5ldWlDaGlwc0NvbnRlbnQuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0cnVlKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZXVpQ2hpcHNDb250ZW50LnRvQXJyYXkoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGlwcyA9IHRoaXMuZXVpQ2hpcHNDb250ZW50LnRvQXJyYXkoKS5tYXAoKGNoaXApID0+IE9iamVjdC5hc3NpZ24oY2hpcCwgeyBldWlJbnRlcm5hbElkOiB0aGlzLmdlbmVyYXRlSWQoKSB9KSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NoaXBzU29ydGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLm9yZGVySXRlbXModGhpcy5jaGlwcywgdGhpcy5jaGlwc1NvcnRPcmRlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ldWlDaGlwTGlzdERyYWdTZXJ2aWNlLnJlc2V0Q29ubmVjdG9yKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGVUYWdzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzTWF4VmlzaWJsZUNoaXBzT3BlbmVkID0gIXRoaXMuaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQ7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGdldENoaXBDb250ZW50KGV1aUNoaXA6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBldWlDaGlwLmNoaXBMYWJlbCA/IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGV1aUNoaXAuY2hpcExhYmVsLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKSA6IGV1aUNoaXAubGFiZWw7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGdldENoaXBMYWJlbChldWlDaGlwOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZXVpQ2hpcC5jaGlwTGFiZWwgPyBldWlDaGlwLmNoaXBMYWJlbC5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50IDogZXVpQ2hpcC5sYWJlbDtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgZ2V0Q2hpcEljb25CZWZvcmUoZXVpQ2hpcDogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBldWlDaGlwLmljb25CZWZvcmU7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGdldENoaXBJY29uQWZ0ZXIoZXVpQ2hpcDogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBldWlDaGlwLmljb25BZnRlcjtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgb25SZW1vdmUocmVtb3ZlZDogRXVpQ2hpcENvbXBvbmVudCB8IEV1aUNoaXAgfCB7IGNoaXA6IEV1aUNoaXBDb21wb25lbnQgfCBFdWlDaGlwOyBldmVudD86IEV2ZW50IH0gfCBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2hpcHMgPSB0aGlzLmV1aUNoaXBzQ29udGVudC50b0FycmF5KCkubGVuZ3RoID4gMCA/IHRoaXMuY2hpcHMubWFwKChjKSA9PiBjLmRhdGEpIDogdGhpcy5jaGlwcztcbiAgICAgICAgY29uc3QgcmVtb3ZlZENoaXAgPSByZW1vdmVkIGFzIHsgY2hpcDogRXVpQ2hpcDsgZXZlbnQ6IEV2ZW50IH07XG4gICAgICAgIGxldCBpbmRleCA9IHJlbW92ZWRDaGlwIGluc3RhbmNlb2YgRXVpQ2hpcCA/IGNoaXBzLmluZGV4T2YocmVtb3ZlZENoaXApIDogY2hpcHMuaW5kZXhPZihyZW1vdmVkQ2hpcC5jaGlwKTtcblxuICAgICAgICBpZiAoaW5kZXggPT09IC0xICYmIHJlbW92ZWQuaWQpIHtcbiAgICAgICAgICAgIGluZGV4ID0gY2hpcHMubWFwKChjaGlwKSA9PiBjaGlwLmlkKS5pbmRleE9mKHJlbW92ZWQuaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGlwcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAgIHRoaXMuY2hpcFJlbW92ZS5lbWl0KHtcbiAgICAgICAgICAgIGNoaXBzOiB0aGlzLmV1aUNoaXBzQ29udGVudC50b0FycmF5KCkubGVuZ3RoID4gMCA/IHRoaXMuY2hpcHMubWFwKChjKSA9PiBjLmRhdGEpIDogdGhpcy5jaGlwcyxcbiAgICAgICAgICAgIHJlbW92ZWQ6IHJlbW92ZWRDaGlwLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25EcmFnRW50ZXIoZXZlbnQ6IENka0RyYWdFbnRlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBkcm9wTGlzdCA9IGV2ZW50LmNvbnRhaW5lcjtcbiAgICAgICAgY29uc3QgcGhDb250YWluZXIgPSBkcm9wTGlzdC5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHBoRWxlbWVudCA9IHBoQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy5jZGstZHJhZy1wbGFjZWhvbGRlcicpO1xuICAgICAgICBwaENvbnRhaW5lci5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShwaEVsZW1lbnQsIHBoQ29udGFpbmVyKTtcbiAgICAgICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuY2hpcHMsIGV2ZW50Lml0ZW0uZGF0YS5pbmRleCwgZXZlbnQuY29udGFpbmVyLmRhdGEuaW5kZXgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRyb3BHcmlkKGU6IENka0RyYWdEcm9wPHsgY2hpcDogRXVpQ2hpcDsgaW5kZXg6IG51bWJlciB9Pik6IHZvaWQge1xuICAgICAgICB0aGlzLmNoaXBEcm9wLmVtaXQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2Ryb3BwZWQnLFxuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IHRoaXMuZHJhZ0FuZERyb3BTb3VyY2VOYW1lLFxuICAgICAgICAgICAgICAgIGNoaXA6IGUuaXRlbS5kYXRhLmNoaXAsXG4gICAgICAgICAgICAgICAgY2hpcHM6IHRoaXMuY2hpcHMsXG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGRyb3AoZTogQ2RrRHJhZ0Ryb3A8eyBjaGlwczogYW55W10gfT4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGUucHJldmlvdXNDb250YWluZXIgPT09IGUuY29udGFpbmVyKSB7XG4gICAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoZS5jb250YWluZXIuZGF0YVsnY2hpcHMnXSwgZS5wcmV2aW91c0luZGV4LCBlLmN1cnJlbnRJbmRleCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cmFuc2ZlckFycmF5SXRlbShcbiAgICAgICAgICAgICAgICBlLnByZXZpb3VzQ29udGFpbmVyLmRhdGFbJ2NoaXBzJ10sXG4gICAgICAgICAgICAgICAgZS5jb250YWluZXIuZGF0YVsnY2hpcHMnXSxcbiAgICAgICAgICAgICAgICBlLnByZXZpb3VzQ29udGFpbmVyLmRhdGFbJ2NoaXBzJ10uaW5kZXhPZihlLml0ZW0uZGF0YSksXG4gICAgICAgICAgICAgICAgZS5jdXJyZW50SW5kZXgsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgIHRoaXMuY2hpcHMgPSBlLmNvbnRhaW5lci5kYXRhWydjaGlwcyddLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hpcERyb3AuZW1pdChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZHJvcHBlZCcsXG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogdGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWUsXG4gICAgICAgICAgICAgICAgY2hpcDogZS5pdGVtLmRhdGEsXG4gICAgICAgICAgICAgICAgY2hpcHM6IGUuY29udGFpbmVyLmRhdGFbJ2NoaXBzJ10sXG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRyYWdTdGFydGVkKGV2ZW50OiBDZGtEcmFnU3RhcnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGlwRHJhZ1N0YXJ0LmVtaXQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3N0YXJ0ZWQnLFxuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IHRoaXMuZHJhZ0FuZERyb3BTb3VyY2VOYW1lLFxuICAgICAgICAgICAgICAgIGNoaXA6IGV2ZW50Wydzb3VyY2UnXS5kYXRhIGluc3RhbmNlb2YgRXVpQ2hpcENvbXBvbmVudCA/IGV2ZW50Wydzb3VyY2UnXS5kYXRhIDogZXZlbnRbJ3NvdXJjZSddLmRhdGEuY2hpcCxcbiAgICAgICAgICAgICAgICBjaGlwczogdGhpcy5jaGlwcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRHJhZ1JlbGVhc2VkKGV2ZW50OiBDZGtEcmFnUmVsZWFzZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoaXBEcmFnUmVsZWFzZS5lbWl0KFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdyZWxlYXNlZCcsXG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogdGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWUsXG4gICAgICAgICAgICAgICAgY2hpcDogZXZlbnRbJ3NvdXJjZSddLmRhdGEgaW5zdGFuY2VvZiBFdWlDaGlwQ29tcG9uZW50ID8gZXZlbnRbJ3NvdXJjZSddLmRhdGEgOiBldmVudFsnc291cmNlJ10uZGF0YS5jaGlwLFxuICAgICAgICAgICAgICAgIGNoaXBzOiB0aGlzLmNoaXBzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoaXBsaXN0Rm9jdXMuZW1pdCh0cnVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdfJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIG9yZGVySXRlbXModGFiOiBhbnksIHNvcnRPcmRlcjogc3RyaW5nKTogYW55W10ge1xuICAgICAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIHRhYi5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYU9iaiA9IGEuY2hpcExhYmVsID8gYS5jaGlwTGFiZWwubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudC50b0xvd2VyQ2FzZSgpIDogYS5sYWJlbC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgY29uc3QgYk9iaiA9IGIuY2hpcExhYmVsID8gYi5jaGlwTGFiZWwubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudC50b0xvd2VyQ2FzZSgpIDogYi5sYWJlbC50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgICAgICBpZiAoc29ydE9yZGVyID09PSAnQVNDJykge1xuICAgICAgICAgICAgICAgIGlmIChhT2JqIDwgYk9iaikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhT2JqID4gYk9iaikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChhT2JqID4gYk9iaikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhT2JqIDwgYk9iaikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0YWI7XG4gICAgfVxufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZXVpQ2hpcExpc3RBcHBlbmRDb250ZW50JyB9KVxuZXhwb3J0IGNsYXNzIEV1aUNoaXBMaXN0QXBwZW5kQ29udGVudERpcmVjdGl2ZSB7fVxuLyogZXNsaW50LWVuYWJsZSAqL1xuIiwiPGRpdiBjbGFzcz1cImV1aS1jaGlwLWxpc3QtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImV1aS1jaGlwLWxpc3Qtd3JhcHBlclwiPlxuXG4gICAgQGlmICghaXNHcmlkKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIHJvbGU9XCJsaXN0XCJcbiAgICAgICAgICAgICNjaGlwTGlzdFxuICAgICAgICAgICAgI2NoaXBMaXN0RHJvcExpc3RcbiAgICAgICAgICAgICNjaGlwTGlzdERyYWdBbmREcm9wSXRlbXNcbiAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICBbY2RrRHJvcExpc3RPcmllbnRhdGlvbl09XCJkcm9wTGlzdE9yaWVudGF0aW9uXCJcbiAgICAgICAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiFpc0NoaXBzRHJhZ0FuZERyb3BcIlxuICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjaGlwcyA/IHsgY2hpcHMgfSA6IHsgY2hpcHM6IFtdIH1cIlxuICAgICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiZHJvcHBhYmxlQXJlYVwiXG4gICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXVpLWNoaXAtbGlzdF9fbGlzdFwiPlxuXG4gICAgICAgICAgICBAZm9yICggY2hpcCBvZiBjaGlwczsgdHJhY2sgY2hpcDsgbGV0IGkgPSAkaW5kZXg7ICkge1xuICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgIChtYXhWaXNpYmxlQ2hpcHNDb3VudCAmJiBpc01heFZpc2libGVDaGlwc09wZW5lZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgKG1heFZpc2libGVDaGlwc0NvdW50ICYmIG1heFZpc2libGVDaGlwc0NvdW50ID4gaSkgfHxcbiAgICAgICAgICAgICAgICAgICAgIW1heFZpc2libGVDaGlwc0NvdW50XG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLWNoaXAtbGlzdF9fY2hpcC1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmV1aS1jaGlwLS1oaWRkZW5dPVwibWF4VmlzaWJsZUNoaXBzQ291bnQgPiBpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjaGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjZGtEcmFnU3RhcnRlZCk9XCJvbkRyYWdTdGFydGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNka0RyYWdSZWxlYXNlZCk9XCJvbkRyYWdSZWxlYXNlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpLWNoaXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZXVpQ2hpcEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJjaGlwLmRhdGEgPyBjaGlwLmRhdGEgOiBjaGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cIidsaXN0aXRlbSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbD1cInt7IGdldENoaXBMYWJlbChjaGlwKSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V1aUludGVybmFsSWRdPVwiY2hpcC5ldWlJbnRlcm5hbElkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNDaGlwUmVtb3ZhYmxlXT1cImNoaXAuaXNDaGlwUmVtb3ZhYmxlIHx8IChpc0NoaXBzUmVtb3ZhYmxlICYmIGNoaXAuaXNSZW1vdmFibGUpICE9PSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V1aU91dGxpbmVdPVwiY2hpcC5ldWlPdXRsaW5lIHx8IHRoaXMuYmFzZVN0YXRlc0RpcmVjdGl2ZT8uZXVpT3V0bGluZSB8fCBjaGlwLmlzT3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V1aVZhcmlhbnRdPVwiY2hpcC50eXBlQ2xhc3MgfHwgdGhpcy5iYXNlU3RhdGVzRGlyZWN0aXZlPy5ldWlWYXJpYW50IHx8IGNoaXAuYmFzZVN0YXRlc0RpcmVjdGl2ZT8uZXVpVmFyaWFudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V1aURpc2FibGVkXT1cImNoaXAuZXVpRGlzYWJsZWQgfHwgdGhpcy5iYXNlU3RhdGVzRGlyZWN0aXZlPy5ldWlEaXNhYmxlZCB8fCBjaGlwLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtldWlUb29sdGlwXT1cImNoaXAudG9vbHRpcE1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvbl09XCJjaGlwLnRvb2x0aXA/LnBvc2l0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudEFsaWdubWVudF09XCJjaGlwLnRvb2x0aXA/LmNvbnRlbnRBbGlnbm1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZW1vdmUpPVwib25SZW1vdmUoJGV2ZW50KVwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChjaGlwLmljb25TdmdOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgW2ljb25dPVwiY2hpcC5pY29uU3ZnTmFtZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY2hpcC5pY29uQ2xhc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ7eyBjaGlwLmljb25DbGFzcyB9fVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChjaGlwc0xhYmVsVHJ1bmNhdGVDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB0aXRsZT1cInt7IGdldENoaXBMYWJlbChjaGlwKSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0Q2hpcExhYmVsKGNoaXApIHwgZXVpVHJ1bmNhdGU6IGNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJldWktY2hpcC1saXN0X19jaGlwLWNvbnRlbnRcIiBbaW5uZXJIVE1MXT1cImdldENoaXBDb250ZW50KGNoaXApXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2V1aS1jaGlwPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXVpQ2hpcExpc3RBcHBlbmRDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWRkaXRpb25hbENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICB9IEBlbHNlIHsgICAvLyBpc0dyaWRcblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLWNoaXAtbGlzdF9fZ3JvdXBcIiBjZGtEcm9wTGlzdEdyb3VwPlxuICAgICAgICAgICAgQGZvciAoIGNoaXAgb2YgY2hpcHM7IHRyYWNrIGNoaXA7IGxldCBpID0gJGluZGV4OyApIHtcbiAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1heFZpc2libGVDaGlwc0NvdW50ICYmIGlzTWF4VmlzaWJsZUNoaXBzT3BlbmVkKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1heFZpc2libGVDaGlwc0NvdW50ICYmIG1heFZpc2libGVDaGlwc0NvdW50ID4gaSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICFtYXhWaXNpYmxlQ2hpcHNDb3VudFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAjY2hpcExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICNjaGlwTGlzdERyb3BMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAjY2hpcExpc3REcmFnQW5kRHJvcEl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwiIWlzQ2hpcHNEcmFnQW5kRHJvcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cInsgY2hpcDogY2hpcCwgaW5kZXg6IGkgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wR3JpZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLWNoaXAtbGlzdF9fY3VzdG9tXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS1jaGlwLWxpc3RfX2NoaXAtY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwieyBjaGlwOiBjaGlwLCBpbmRleDogaSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNka0RyYWdTdGFydGVkKT1cIm9uRHJhZ1N0YXJ0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZGtEcmFnUmVsZWFzZWQpPVwib25EcmFnUmVsZWFzZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZGtEcmFnRW50ZXJlZCk9XCJvbkRyYWdFbnRlcigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxldWktY2hpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2V1aUNoaXBJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJjaGlwLmRhdGEgPyBjaGlwLmRhdGEgOiBjaGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJjaGlwLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiJ2xpc3RpdGVtJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhTGFiZWw9XCJ7eyBnZXRDaGlwTGFiZWwoY2hpcCkgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V1aUludGVybmFsSWRdPVwiY2hpcC5ldWlJbnRlcm5hbElkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0NoaXBSZW1vdmFibGVdPVwiY2hpcC5pc0NoaXBSZW1vdmFibGUgfHwgKGlzQ2hpcHNSZW1vdmFibGUgJiYgY2hpcC5pc1JlbW92YWJsZSkgIT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtldWlPdXRsaW5lXT1cImNoaXAuZXVpT3V0bGluZSB8fCB0aGlzLmJhc2VTdGF0ZXNEaXJlY3RpdmU/LmV1aU91dGxpbmUgfHwgY2hpcC5pc091dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V1aVZhcmlhbnRdPVwiY2hpcC50eXBlQ2xhc3MgfHwgdGhpcy5iYXNlU3RhdGVzRGlyZWN0aXZlPy5ldWlWYXJpYW50IHx8IGNoaXAuYmFzZVN0YXRlc0RpcmVjdGl2ZT8uZXVpVmFyaWFudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXVpRGlzYWJsZWRdPVwiY2hpcC5ldWlEaXNhYmxlZCB8fCB0aGlzLmJhc2VTdGF0ZXNEaXJlY3RpdmU/LmV1aURpc2FibGVkIHx8IGNoaXAuaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXVpVG9vbHRpcF09XCJjaGlwLnRvb2x0aXBNZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvbl09XCJjaGlwLnRvb2x0aXA/LnBvc2l0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50QWxpZ25tZW50XT1cImNoaXAudG9vbHRpcD8uY29udGVudEFsaWdubWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVtb3ZlKT1cIm9uUmVtb3ZlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChjaGlwLmljb25TdmdOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBbaWNvbl09XCJjaGlwLmljb25TdmdOYW1lXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY2hpcHNMYWJlbFRydW5jYXRlQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB0aXRsZT1cInt7IGdldENoaXBMYWJlbChjaGlwKSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRDaGlwTGFiZWwoY2hpcCkgfCBldWlUcnVuY2F0ZTogY2hpcHNMYWJlbFRydW5jYXRlQ291bnQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImV1aS1jaGlwLWxpc3RfX2NoaXAtY29udGVudFwiIFtpbm5lckhUTUxdPVwiZ2V0Q2hpcENvbnRlbnQoY2hpcClcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXVpLWNoaXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXVpQ2hpcExpc3RBcHBlbmRDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhZGRpdGlvbmFsQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZXVpQ2hpcExpc3RBcHBlbmRDb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImV1aUNoaXBMaXN0QXBwZW5kQ29udGVudFwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYWRkaXRpb25hbENvbnRlbnQ+XG4gICAgQGlmIChtYXhWaXNpYmxlQ2hpcHNDb3VudCAmJiBjaGlwcyAmJiBjaGlwcy5sZW5ndGggPiBtYXhWaXNpYmxlQ2hpcHNDb3VudCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLWNoaXAtbGlzdF9fZXhwYW5kLWJ1dHRvbi13cmFwcGVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZXVpQnV0dG9uXG4gICAgICAgICAgICAgICAgZXVpQmFzaWNCdXR0b25cbiAgICAgICAgICAgICAgICBldWlTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICBldWlTaXplU1xuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLWNoaXAtbGlzdF9fZXhwYW5kLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVRhZ3MoKVwiPlxuXG4gICAgICAgICAgICAgICAgQGlmIChpc01heFZpc2libGVDaGlwc09wZW5lZCkge1xuICAgICAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnIGljb249XCJjaGV2cm9uLWJhY2s6c2hhcnBcIiBhcmlhLWxhYmVsPVwiQ29sbGFwc2UgaWNvblwiIC8+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAodG9nZ2xlTGlua0xlc3NMYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAge3sgdG9nZ2xlTGlua0xlc3NMYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAodG9nZ2xlTGlua01vcmVMYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAge3sgdG9nZ2xlTGlua01vcmVMYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImNoZXZyb24tZm9yd2FyZDpzaGFycFwiIGFyaWEtbGFiZWw9XCJFeHBhbmQgaWNvblwiIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWNoaXAtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9ldWktY2hpcC1saXN0L2V1aS1jaGlwLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWNoaXAtbGlzdC9ldWktY2hpcC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsZUFBZSxFQUtmLFlBQVksRUFDWixNQUFNLEVBRU4sU0FBUyxFQUdULFVBQVUsRUFDVixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLGVBQWUsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFFSCxlQUFlLEVBQ2YsV0FBVyxFQUNYLGlCQUFpQixHQUlwQixNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJckYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUEyQjdELE1BQU0sT0FBTyxvQkFBb0I7SUEyQjdCLElBQ0ksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBYUQsWUFDWSxFQUFxQixFQUNyQixzQkFBOEMsRUFDOUMsWUFBMEIsRUFDeEIsbUJBQXdDO1FBSDFDLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDeEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQTVDN0Msd0JBQW1CLEdBQVcsSUFBSSxDQUFDO1FBQ25DLHdCQUFtQixHQUFXLElBQUksQ0FBQztRQUNuQyxtQkFBYyxHQUFtQixLQUFLLENBQUM7UUFFdkMsMkJBQXNCLEdBQWEsRUFBRSxDQUFDO1FBQ04sY0FBUyxHQUFHLGVBQWUsQ0FBQztRQUM1RCx3QkFBbUIsR0FBOEIsWUFBWSxDQUFDO1FBRS9CLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQUNoQyxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0Qix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0IsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNoQix5QkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDNUIsNEJBQXVCLEdBQUcsSUFBSSxDQUFDO1FBRTVELGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFDO1FBQzVDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBNEUsQ0FBQztRQUMxRyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO1FBQ3BELG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFDdEQsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO1FBQy9DLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQVEvQyxxQkFBZ0IsR0FBa0IsRUFBRSxDQUFDO1FBQ3JDLFlBQU8sR0FBRyxlQUFlLENBQUM7UUFPekIsYUFBUSxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO0lBUTVELENBQUM7SUFFRCxXQUFXLENBQUMsQ0FBZ0I7UUFDeEIsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEUsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwQyxHQUFHLElBQUk7WUFDUCxPQUFPLEVBQUUsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUM1QyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLEdBQUcsSUFBSTtZQUNQLE9BQU8sRUFBRSxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQzVDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNuRCxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsc0JBQXNCLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDbEYsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUNqRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQzlDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdEYsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBRUQsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUMzRixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUMxRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ2xHLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN4RixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM1QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRXJILElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ2xFLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM1QixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxVQUFVO1FBQ2IsSUFBSSxDQUFDLHVCQUF1QixHQUFHLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ2pFLENBQUM7SUFFRCxtSEFBbUg7SUFDbkgsOERBQThEO0lBQ3ZELGNBQWMsQ0FBQyxPQUFZO1FBQzlCLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUNwSSxDQUFDO0lBRUQsbUhBQW1IO0lBQ25ILDhEQUE4RDtJQUN2RCxZQUFZLENBQUMsT0FBWTtRQUM1QixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUMzRixDQUFDO0lBRUQsbUhBQW1IO0lBQ25ILDhEQUE4RDtJQUN2RCxpQkFBaUIsQ0FBQyxPQUFZO1FBQ2pDLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUM5QixDQUFDO0lBRUQsbUhBQW1IO0lBQ25ILDhEQUE4RDtJQUN2RCxnQkFBZ0IsQ0FBQyxPQUFZO1FBQ2hDLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUQsbUhBQW1IO0lBQ25ILDhEQUE4RDtJQUN2RCxRQUFRLENBQUMsT0FBK0Y7UUFDM0csTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3JHLE1BQU0sV0FBVyxHQUFHLE9BQTBDLENBQUM7UUFDL0QsSUFBSSxLQUFLLEdBQUcsV0FBVyxZQUFZLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFMUcsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdCLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTVCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQzdGLE9BQU8sRUFBRSxXQUFXO1NBQ3ZCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBbUI7UUFDbEMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNqQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUNuRCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDckUsV0FBVyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQy9ELGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRU0sVUFBVSxDQUFDLENBQWdEO1FBQzlELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNkO1lBQ0ksSUFBSSxFQUFFLFNBQVM7WUFDZixVQUFVLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtZQUN0QyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUN0QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDcEIsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELDhEQUE4RDtJQUN2RCxJQUFJLENBQUMsQ0FBZ0M7UUFDeEMsSUFBSSxDQUFDLENBQUMsaUJBQWlCLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RDLGVBQWUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRixDQUFDO2FBQU0sQ0FBQztZQUNKLGlCQUFpQixDQUNiLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQ2pDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUN6QixDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUN0RCxDQUFDLENBQUMsWUFBWSxDQUNqQixDQUFDO1lBQ0YsbUhBQW1IO1lBQ25ILDhEQUE4RDtZQUM5RCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNkO1lBQ0ksSUFBSSxFQUFFLFNBQVM7WUFDZixVQUFVLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtZQUN0QyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQ2pCLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDbkMsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFtQjtRQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDbkI7WUFDSSxJQUFJLEVBQUUsU0FBUztZQUNmLFVBQVUsRUFBRSxJQUFJLENBQUMscUJBQXFCO1lBQ3RDLElBQUksRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxZQUFZLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDekcsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ3BCLENBQ0osQ0FBQztJQUNOLENBQUM7SUFFTSxjQUFjLENBQUMsS0FBcUI7UUFDdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQ3JCO1lBQ0ksSUFBSSxFQUFFLFVBQVU7WUFDaEIsVUFBVSxFQUFFLElBQUksQ0FBQyxxQkFBcUI7WUFDdEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLFlBQVksZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUN6RyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDcEIsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU8sVUFBVTtRQUNkLE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsbUhBQW1IO0lBQ25ILDhEQUE4RDtJQUN0RCxVQUFVLENBQUMsR0FBUSxFQUFFLFNBQWlCO1FBQzFDLG1IQUFtSDtRQUNuSCw4REFBOEQ7UUFDOUQsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRTtZQUN4QixNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkcsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRXZHLElBQUksU0FBUyxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUN0QixJQUFJLElBQUksR0FBRyxJQUFJLEVBQUUsQ0FBQztvQkFDZCxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNkLENBQUM7Z0JBQ0QsSUFBSSxJQUFJLEdBQUcsSUFBSSxFQUFFLENBQUM7b0JBQ2QsT0FBTyxDQUFDLENBQUM7Z0JBQ2IsQ0FBQztnQkFDRCxPQUFPLENBQUMsQ0FBQztZQUNiLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLElBQUksR0FBRyxJQUFJLEVBQUUsQ0FBQztvQkFDZCxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNkLENBQUM7Z0JBQ0QsSUFBSSxJQUFJLEdBQUcsSUFBSSxFQUFFLENBQUM7b0JBQ2QsT0FBTyxDQUFDLENBQUM7Z0JBQ2IsQ0FBQztnQkFDRCxPQUFPLENBQUMsQ0FBQztZQUNiLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQzsrR0ExUVEsb0JBQW9CO21HQUFwQixvQkFBb0IsZ2FBV1QsZ0JBQWdCLDhEQUNoQixnQkFBZ0IsbUZBQ2hCLGdCQUFnQixxREFDaEIsZ0JBQWdCLG9FQUNoQixnQkFBZ0IsZ0NBQ2hCLGdCQUFnQiwwRUFDaEIsZUFBZSxtRkFDZixlQUFlLHFXQWtCRCxnQkFBZ0IsK0hBQ1gsV0FBVywrSEFDSCxXQUFXLHlGQUNyQixVQUFVLHlZQzNHbkQsa2lSQXNLQTs7NEZEbEdhLG9CQUFvQjtrQkF6QmhDLFNBQVM7K0JBRUksa0RBQWtELG1CQUUzQyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGtCQUNyQjt3QkFDWjs0QkFDSSxTQUFTLEVBQUUsbUJBQW1COzRCQUM5QixNQUFNLEVBQUU7Z0NBQ0osWUFBWTtnQ0FDWixjQUFjO2dDQUNkLFlBQVk7Z0NBQ1osU0FBUztnQ0FDVCxZQUFZO2dDQUNaLFdBQVc7Z0NBQ1gsV0FBVztnQ0FDWCxZQUFZO2dDQUVaLFlBQVk7Z0NBQ1osYUFBYTs2QkFDaEI7eUJBQ0o7cUJBQ0o7d0xBSVEsS0FBSztzQkFBYixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNtQyxTQUFTO3NCQUFqRCxLQUFLOztzQkFBSSxXQUFXO3VCQUFDLGlCQUFpQjtnQkFDOUIsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVrQyxTQUFTO3NCQUFoRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLGdCQUFnQjtzQkFBdkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSx1QkFBdUI7c0JBQTlELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsYUFBYTtzQkFBcEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxrQkFBa0I7c0JBQXpELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsTUFBTTtzQkFBN0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDQyxvQkFBb0I7c0JBQTFELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQUNFLHVCQUF1QjtzQkFBN0QsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBRTNCLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUdILFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxPQUFPO2dCQVNpQyxlQUFlO3NCQUFuRSxlQUFlO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDRyxnQkFBZ0I7c0JBQXJFLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNVLHdCQUF3QjtzQkFBckYsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ1QsWUFBWTtzQkFBOUQsWUFBWTt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFOztBQXNPckQsb0JBQW9CO0FBRXBCLE1BQU0sT0FBTyxpQ0FBaUM7K0dBQWpDLGlDQUFpQzttR0FBakMsaUNBQWlDOzs0RkFBakMsaUNBQWlDO2tCQUQ3QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLDBCQUEwQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgVmlld0NoaWxkLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBPbkluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBPdXRwdXQsXG4gICAgT25EZXN0cm95LFxuICAgIERpcmVjdGl2ZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBFbGVtZW50UmVmLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFN1YmplY3QsIHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIENka0RyYWdEcm9wLFxuICAgIG1vdmVJdGVtSW5BcnJheSxcbiAgICBDZGtEcm9wTGlzdCxcbiAgICB0cmFuc2ZlckFycmF5SXRlbSxcbiAgICBDZGtEcmFnU3RhcnQsXG4gICAgQ2RrRHJhZ0VudGVyLFxuICAgIENka0RyYWdSZWxlYXNlLFxufSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuaW1wb3J0IHsgRXVpQ2hpcENvbXBvbmVudCwgRXVpQ2hpcCwgRXVpQ2hpcFRvb2x0aXAgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZXVpLWNoaXAnO1xuXG5pbXBvcnQgeyBFdWlDaGlwRHJhZ0Ryb3AgfSBmcm9tICcuL21vZGVscy9ldWktY2hpcC1kcmFnLWRyb3AubW9kZWwnO1xuaW1wb3J0IHsgRXVpQ2hpcExpc3REcmFnU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZXVpLWNoaXAtbGlzdC1kcmFnLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZVN0YXRlc0RpcmVjdGl2ZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9zaGFyZWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXVpLWNoaXAtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc2VsZWN0b3I6ICdldWktY2hpcC1saXN0LCBkaXZbZXVpQ2hpcExpc3RdLCB1bFtldWlDaGlwTGlzdF0nLFxuICAgIHN0eWxlVXJsczogWycuL3N0eWxlcy9faW5kZXguc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgZGlyZWN0aXZlOiBCYXNlU3RhdGVzRGlyZWN0aXZlLFxuICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgICAgJ2V1aVByaW1hcnknLFxuICAgICAgICAgICAgICAgICdldWlTZWNvbmRhcnknLFxuICAgICAgICAgICAgICAgICdldWlTdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAnZXVpSW5mbycsXG4gICAgICAgICAgICAgICAgJ2V1aVdhcm5pbmcnLFxuICAgICAgICAgICAgICAgICdldWlEYW5nZXInLFxuICAgICAgICAgICAgICAgICdldWlBY2NlbnQnLFxuICAgICAgICAgICAgICAgICdldWlWYXJpYW50JyxcblxuICAgICAgICAgICAgICAgICdldWlPdXRsaW5lJyxcbiAgICAgICAgICAgICAgICAnZXVpRGlzYWJsZWQnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlDaGlwTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBPbkluaXQge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQElucHV0KCkgY2hpcHM6IGFueVtdO1xuICAgIEBJbnB1dCgpIHRvZ2dsZUxpbmtNb3JlTGFiZWw6IHN0cmluZyA9IG51bGw7XG4gICAgQElucHV0KCkgdG9nZ2xlTGlua0xlc3NMYWJlbDogc3RyaW5nID0gbnVsbDtcbiAgICBASW5wdXQoKSBjaGlwc1NvcnRPcmRlcjogJ0FTQycgfCAnREVTQycgPSAnQVNDJztcbiAgICBASW5wdXQoKSBkcmFnQW5kRHJvcFNvdXJjZU5hbWU6IHN0cmluZztcbiAgICBASW5wdXQoKSBkcmFnQW5kRHJvcENvbm5lY3RlZFRvOiBzdHJpbmdbXSA9IFtdO1xuICAgIEBJbnB1dCgpIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJykgYXJpYUxhYmVsID0gJ2VVSSBDaGlwIExpc3QnO1xuICAgIEBJbnB1dCgpIGRyb3BMaXN0T3JpZW50YXRpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcgPSAnaG9yaXpvbnRhbCc7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNTcXVhcmVkID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzQ2hpcHNSZW1vdmFibGUgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNDaGlwc1NvcnRlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0NoaXBzRHJhZ0FuZERyb3AgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNHcmlkID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgbWF4VmlzaWJsZUNoaXBzQ291bnQgPSBudWxsO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50ID0gbnVsbDtcblxuICAgIEBPdXRwdXQoKSBjaGlwc0luaXQgPSBuZXcgRXZlbnRFbWl0dGVyPENka0Ryb3BMaXN0PigpO1xuICAgIEBPdXRwdXQoKSBjaGlwUmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGNoaXBzOiBFdWlDaGlwW107IHJlbW92ZWQ6IEV1aUNoaXAgfCB7IGNoaXA6IEV1aUNoaXA7IGV2ZW50OiBFdmVudCB9IH0+KCk7XG4gICAgQE91dHB1dCgpIGNoaXBEcmFnU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPEV1aUNoaXBEcmFnRHJvcD4oKTtcbiAgICBAT3V0cHV0KCkgY2hpcERyYWdSZWxlYXNlID0gbmV3IEV2ZW50RW1pdHRlcjxFdWlDaGlwRHJhZ0Ryb3A+KCk7XG4gICAgQE91dHB1dCgpIGNoaXBEcm9wID0gbmV3IEV2ZW50RW1pdHRlcjxFdWlDaGlwRHJhZ0Ryb3A+KCk7XG4gICAgQE91dHB1dCgpIGNoaXBsaXN0Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlU3RhdGVzRGlyZWN0aXZlLmdldENzc0NsYXNzZXMoJ2V1aS1jaGlwLWxpc3QnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZHJvcHBhYmxlQXJlYTogKENka0Ryb3BMaXN0IHwgc3RyaW5nKVtdO1xuICAgIHB1YmxpYyBjb25uZWN0Q29tcG9uZW50OiBDZGtEcm9wTGlzdFtdID0gW107XG4gICAgcHVibGljIGUyZUF0dHIgPSAnZXVpLWNoaXAtbGlzdCc7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRXVpQ2hpcENvbXBvbmVudCkpIGV1aUNoaXBzQ29udGVudDogUXVlcnlMaXN0PEV1aUNoaXBDb21wb25lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoJ2NoaXBMaXN0RHJvcExpc3QnLCB7IHJlYWQ6IENka0Ryb3BMaXN0IH0pIGNoaXBMaXN0RHJvcExpc3Q6IENka0Ryb3BMaXN0O1xuICAgIEBWaWV3Q2hpbGQoJ2NoaXBMaXN0RHJhZ0FuZERyb3BJdGVtcycsIHsgcmVhZDogQ2RrRHJvcExpc3QgfSkgY2hpcExpc3REcmFnQW5kRHJvcEl0ZW1zOiBDZGtEcm9wTGlzdDtcbiAgICBAVmlld0NoaWxkcmVuKCdldWlDaGlwSXRlbScsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBldWlDaGlwSXRlbXM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICAgIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGV1aUNoaXBMaXN0RHJhZ1NlcnZpY2U6IEV1aUNoaXBMaXN0RHJhZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByb3RlY3RlZCBiYXNlU3RhdGVzRGlyZWN0aXZlOiBCYXNlU3RhdGVzRGlyZWN0aXZlLFxuICAgICkge1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGMuY2hpcHMgJiYgdGhpcy5pc0NoaXBzU29ydGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNoaXBzID0gdGhpcy5vcmRlckl0ZW1zKHRoaXMuY2hpcHMsIHRoaXMuY2hpcHNTb3J0T3JkZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLmNoaXBzPy5tYXAoKGNoaXApID0+ICh7XG4gICAgICAgICAgICAuLi5jaGlwLFxuICAgICAgICAgICAgdG9vbHRpcDogbmV3IEV1aUNoaXBUb29sdGlwKGNoaXAudG9vbHRpcCksXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLmNoaXBzPy5tYXAoKGNoaXApID0+ICh7XG4gICAgICAgICAgICAuLi5jaGlwLFxuICAgICAgICAgICAgdG9vbHRpcDogbmV3IEV1aUNoaXBUb29sdGlwKGNoaXAudG9vbHRpcCksXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpcHNJbml0LmVtaXQodGhpcy5jaGlwTGlzdERyYWdBbmREcm9wSXRlbXMpO1xuICAgICAgICBpZiAodGhpcy5pc0NoaXBzU29ydGVkICYmIHRoaXMuY2hpcHMpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLm9yZGVySXRlbXModGhpcy5jaGlwcywgdGhpcy5jaGlwc1NvcnRPcmRlcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuZXVpQ2hpcExpc3REcmFnU2VydmljZS5zZXRDb21wb25lbnRDb25uZWN0b3IodGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZHJhZ0FuZERyb3BDb25uZWN0ZWRUbykge1xuICAgICAgICAgICAgdGhpcy5ldWlDaGlwTGlzdERyYWdTZXJ2aWNlLnNldERyb3BwYWJsZUFyZWEodGhpcy5jaGlwTGlzdERyb3BMaXN0LCB0aGlzLmRyYWdBbmREcm9wQ29ubmVjdGVkVG8pO1xuICAgICAgICAgICAgdGhpcy5kcmFnQW5kRHJvcENvbm5lY3RlZFRvLmZvckVhY2goKGNvbm5lY3RUbykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdENvbXBvbmVudCA9IHRoaXMuZXVpQ2hpcExpc3REcmFnU2VydmljZS5jb21wb25lbnRDb25uZWN0b3JbY29ubmVjdFRvXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyb3BwYWJsZUFyZWEgPSB0aGlzLmV1aUNoaXBMaXN0RHJhZ1NlcnZpY2UuZHJvcHBhYmxlQXJlYVt0aGlzLmRyYWdBbmREcm9wU291cmNlTmFtZV07XG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5ldWlDaGlwTGlzdERyYWdTZXJ2aWNlLmNvbXBvbmVudENvbm5lY3RvcikubWFwKChjb25uZWN0VG8pID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXVpQ2hpcExpc3REcmFnU2VydmljZS5jb21wb25lbnRDb25uZWN0b3JbY29ubmVjdFRvXS5wdXNoKHRoaXMuY2hpcExpc3REcmFnQW5kRHJvcEl0ZW1zKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5ldWlDaGlwc0NvbnRlbnQuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0cnVlKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZXVpQ2hpcHNDb250ZW50LnRvQXJyYXkoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGlwcyA9IHRoaXMuZXVpQ2hpcHNDb250ZW50LnRvQXJyYXkoKS5tYXAoKGNoaXApID0+IE9iamVjdC5hc3NpZ24oY2hpcCwgeyBldWlJbnRlcm5hbElkOiB0aGlzLmdlbmVyYXRlSWQoKSB9KSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NoaXBzU29ydGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLm9yZGVySXRlbXModGhpcy5jaGlwcywgdGhpcy5jaGlwc1NvcnRPcmRlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ldWlDaGlwTGlzdERyYWdTZXJ2aWNlLnJlc2V0Q29ubmVjdG9yKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGVUYWdzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzTWF4VmlzaWJsZUNoaXBzT3BlbmVkID0gIXRoaXMuaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQ7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGdldENoaXBDb250ZW50KGV1aUNoaXA6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBldWlDaGlwLmNoaXBMYWJlbCA/IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGV1aUNoaXAuY2hpcExhYmVsLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKSA6IGV1aUNoaXAubGFiZWw7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGdldENoaXBMYWJlbChldWlDaGlwOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZXVpQ2hpcC5jaGlwTGFiZWwgPyBldWlDaGlwLmNoaXBMYWJlbC5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50IDogZXVpQ2hpcC5sYWJlbDtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgZ2V0Q2hpcEljb25CZWZvcmUoZXVpQ2hpcDogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBldWlDaGlwLmljb25CZWZvcmU7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGdldENoaXBJY29uQWZ0ZXIoZXVpQ2hpcDogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBldWlDaGlwLmljb25BZnRlcjtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgb25SZW1vdmUocmVtb3ZlZDogRXVpQ2hpcENvbXBvbmVudCB8IEV1aUNoaXAgfCB7IGNoaXA6IEV1aUNoaXBDb21wb25lbnQgfCBFdWlDaGlwOyBldmVudD86IEV2ZW50IH0gfCBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2hpcHMgPSB0aGlzLmV1aUNoaXBzQ29udGVudC50b0FycmF5KCkubGVuZ3RoID4gMCA/IHRoaXMuY2hpcHMubWFwKChjKSA9PiBjLmRhdGEpIDogdGhpcy5jaGlwcztcbiAgICAgICAgY29uc3QgcmVtb3ZlZENoaXAgPSByZW1vdmVkIGFzIHsgY2hpcDogRXVpQ2hpcDsgZXZlbnQ6IEV2ZW50IH07XG4gICAgICAgIGxldCBpbmRleCA9IHJlbW92ZWRDaGlwIGluc3RhbmNlb2YgRXVpQ2hpcCA/IGNoaXBzLmluZGV4T2YocmVtb3ZlZENoaXApIDogY2hpcHMuaW5kZXhPZihyZW1vdmVkQ2hpcC5jaGlwKTtcblxuICAgICAgICBpZiAoaW5kZXggPT09IC0xICYmIHJlbW92ZWQuaWQpIHtcbiAgICAgICAgICAgIGluZGV4ID0gY2hpcHMubWFwKChjaGlwKSA9PiBjaGlwLmlkKS5pbmRleE9mKHJlbW92ZWQuaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGlwcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAgIHRoaXMuY2hpcFJlbW92ZS5lbWl0KHtcbiAgICAgICAgICAgIGNoaXBzOiB0aGlzLmV1aUNoaXBzQ29udGVudC50b0FycmF5KCkubGVuZ3RoID4gMCA/IHRoaXMuY2hpcHMubWFwKChjKSA9PiBjLmRhdGEpIDogdGhpcy5jaGlwcyxcbiAgICAgICAgICAgIHJlbW92ZWQ6IHJlbW92ZWRDaGlwLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25EcmFnRW50ZXIoZXZlbnQ6IENka0RyYWdFbnRlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBkcm9wTGlzdCA9IGV2ZW50LmNvbnRhaW5lcjtcbiAgICAgICAgY29uc3QgcGhDb250YWluZXIgPSBkcm9wTGlzdC5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHBoRWxlbWVudCA9IHBoQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy5jZGstZHJhZy1wbGFjZWhvbGRlcicpO1xuICAgICAgICBwaENvbnRhaW5lci5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShwaEVsZW1lbnQsIHBoQ29udGFpbmVyKTtcbiAgICAgICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuY2hpcHMsIGV2ZW50Lml0ZW0uZGF0YS5pbmRleCwgZXZlbnQuY29udGFpbmVyLmRhdGEuaW5kZXgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRyb3BHcmlkKGU6IENka0RyYWdEcm9wPHsgY2hpcDogRXVpQ2hpcDsgaW5kZXg6IG51bWJlciB9Pik6IHZvaWQge1xuICAgICAgICB0aGlzLmNoaXBEcm9wLmVtaXQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2Ryb3BwZWQnLFxuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IHRoaXMuZHJhZ0FuZERyb3BTb3VyY2VOYW1lLFxuICAgICAgICAgICAgICAgIGNoaXA6IGUuaXRlbS5kYXRhLmNoaXAsXG4gICAgICAgICAgICAgICAgY2hpcHM6IHRoaXMuY2hpcHMsXG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGRyb3AoZTogQ2RrRHJhZ0Ryb3A8eyBjaGlwczogYW55W10gfT4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGUucHJldmlvdXNDb250YWluZXIgPT09IGUuY29udGFpbmVyKSB7XG4gICAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoZS5jb250YWluZXIuZGF0YVsnY2hpcHMnXSwgZS5wcmV2aW91c0luZGV4LCBlLmN1cnJlbnRJbmRleCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cmFuc2ZlckFycmF5SXRlbShcbiAgICAgICAgICAgICAgICBlLnByZXZpb3VzQ29udGFpbmVyLmRhdGFbJ2NoaXBzJ10sXG4gICAgICAgICAgICAgICAgZS5jb250YWluZXIuZGF0YVsnY2hpcHMnXSxcbiAgICAgICAgICAgICAgICBlLnByZXZpb3VzQ29udGFpbmVyLmRhdGFbJ2NoaXBzJ10uaW5kZXhPZihlLml0ZW0uZGF0YSksXG4gICAgICAgICAgICAgICAgZS5jdXJyZW50SW5kZXgsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgIHRoaXMuY2hpcHMgPSBlLmNvbnRhaW5lci5kYXRhWydjaGlwcyddLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hpcERyb3AuZW1pdChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZHJvcHBlZCcsXG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogdGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWUsXG4gICAgICAgICAgICAgICAgY2hpcDogZS5pdGVtLmRhdGEsXG4gICAgICAgICAgICAgICAgY2hpcHM6IGUuY29udGFpbmVyLmRhdGFbJ2NoaXBzJ10sXG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRyYWdTdGFydGVkKGV2ZW50OiBDZGtEcmFnU3RhcnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGlwRHJhZ1N0YXJ0LmVtaXQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3N0YXJ0ZWQnLFxuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IHRoaXMuZHJhZ0FuZERyb3BTb3VyY2VOYW1lLFxuICAgICAgICAgICAgICAgIGNoaXA6IGV2ZW50Wydzb3VyY2UnXS5kYXRhIGluc3RhbmNlb2YgRXVpQ2hpcENvbXBvbmVudCA/IGV2ZW50Wydzb3VyY2UnXS5kYXRhIDogZXZlbnRbJ3NvdXJjZSddLmRhdGEuY2hpcCxcbiAgICAgICAgICAgICAgICBjaGlwczogdGhpcy5jaGlwcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRHJhZ1JlbGVhc2VkKGV2ZW50OiBDZGtEcmFnUmVsZWFzZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoaXBEcmFnUmVsZWFzZS5lbWl0KFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdyZWxlYXNlZCcsXG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogdGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWUsXG4gICAgICAgICAgICAgICAgY2hpcDogZXZlbnRbJ3NvdXJjZSddLmRhdGEgaW5zdGFuY2VvZiBFdWlDaGlwQ29tcG9uZW50ID8gZXZlbnRbJ3NvdXJjZSddLmRhdGEgOiBldmVudFsnc291cmNlJ10uZGF0YS5jaGlwLFxuICAgICAgICAgICAgICAgIGNoaXBzOiB0aGlzLmNoaXBzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoaXBsaXN0Rm9jdXMuZW1pdCh0cnVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdfJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIG9yZGVySXRlbXModGFiOiBhbnksIHNvcnRPcmRlcjogc3RyaW5nKTogYW55W10ge1xuICAgICAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIHRhYi5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYU9iaiA9IGEuY2hpcExhYmVsID8gYS5jaGlwTGFiZWwubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudC50b0xvd2VyQ2FzZSgpIDogYS5sYWJlbC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgY29uc3QgYk9iaiA9IGIuY2hpcExhYmVsID8gYi5jaGlwTGFiZWwubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudC50b0xvd2VyQ2FzZSgpIDogYi5sYWJlbC50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgICAgICBpZiAoc29ydE9yZGVyID09PSAnQVNDJykge1xuICAgICAgICAgICAgICAgIGlmIChhT2JqIDwgYk9iaikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhT2JqID4gYk9iaikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChhT2JqID4gYk9iaikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhT2JqIDwgYk9iaikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0YWI7XG4gICAgfVxufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZXVpQ2hpcExpc3RBcHBlbmRDb250ZW50JyB9KVxuZXhwb3J0IGNsYXNzIEV1aUNoaXBMaXN0QXBwZW5kQ29udGVudERpcmVjdGl2ZSB7fVxuLyogZXNsaW50LWVuYWJsZSAqL1xuIiwiPGRpdiBjbGFzcz1cImV1aS1jaGlwLWxpc3QtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImV1aS1jaGlwLWxpc3Qtd3JhcHBlclwiPlxuXG4gICAgQGlmICghaXNHcmlkKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIHJvbGU9XCJsaXN0XCJcbiAgICAgICAgICAgICNjaGlwTGlzdFxuICAgICAgICAgICAgI2NoaXBMaXN0RHJvcExpc3RcbiAgICAgICAgICAgICNjaGlwTGlzdERyYWdBbmREcm9wSXRlbXNcbiAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICBbY2RrRHJvcExpc3RPcmllbnRhdGlvbl09XCJkcm9wTGlzdE9yaWVudGF0aW9uXCJcbiAgICAgICAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiFpc0NoaXBzRHJhZ0FuZERyb3BcIlxuICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjaGlwcyA/IHsgY2hpcHMgfSA6IHsgY2hpcHM6IFtdIH1cIlxuICAgICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiZHJvcHBhYmxlQXJlYVwiXG4gICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXVpLWNoaXAtbGlzdF9fbGlzdFwiPlxuXG4gICAgICAgICAgICBAZm9yICggY2hpcCBvZiBjaGlwczsgdHJhY2sgY2hpcDsgbGV0IGkgPSAkaW5kZXg7ICkge1xuICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgIChtYXhWaXNpYmxlQ2hpcHNDb3VudCAmJiBpc01heFZpc2libGVDaGlwc09wZW5lZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgKG1heFZpc2libGVDaGlwc0NvdW50ICYmIG1heFZpc2libGVDaGlwc0NvdW50ID4gaSkgfHxcbiAgICAgICAgICAgICAgICAgICAgIW1heFZpc2libGVDaGlwc0NvdW50XG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLWNoaXAtbGlzdF9fY2hpcC1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmV1aS1jaGlwLS1oaWRkZW5dPVwibWF4VmlzaWJsZUNoaXBzQ291bnQgPiBpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjaGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjZGtEcmFnU3RhcnRlZCk9XCJvbkRyYWdTdGFydGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNka0RyYWdSZWxlYXNlZCk9XCJvbkRyYWdSZWxlYXNlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpLWNoaXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZXVpQ2hpcEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJjaGlwLmRhdGEgPyBjaGlwLmRhdGEgOiBjaGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cIidsaXN0aXRlbSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbD1cInt7IGdldENoaXBMYWJlbChjaGlwKSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V1aUludGVybmFsSWRdPVwiY2hpcC5ldWlJbnRlcm5hbElkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNGaWxsZWRdPVwiY2hpcC5pc0ZpbGxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzQ2hpcFJlbW92YWJsZV09XCJjaGlwLmlzQ2hpcFJlbW92YWJsZSB8fCAoaXNDaGlwc1JlbW92YWJsZSAmJiBjaGlwLmlzUmVtb3ZhYmxlKSAhPT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtldWlPdXRsaW5lXT1cImNoaXAuZXVpT3V0bGluZSB8fCB0aGlzLmJhc2VTdGF0ZXNEaXJlY3RpdmU/LmV1aU91dGxpbmUgfHwgY2hpcC5pc091dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtldWlWYXJpYW50XT1cImNoaXAudHlwZUNsYXNzIHx8IHRoaXMuYmFzZVN0YXRlc0RpcmVjdGl2ZT8uZXVpVmFyaWFudCB8fCBjaGlwLmJhc2VTdGF0ZXNEaXJlY3RpdmU/LmV1aVZhcmlhbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtldWlEaXNhYmxlZF09XCJjaGlwLmV1aURpc2FibGVkIHx8IHRoaXMuYmFzZVN0YXRlc0RpcmVjdGl2ZT8uZXVpRGlzYWJsZWQgfHwgY2hpcC5pc0Rpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXVpVG9vbHRpcF09XCJjaGlwLnRvb2x0aXBNZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcG9zaXRpb25dPVwiY2hpcC50b29sdGlwPy5wb3NpdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRBbGlnbm1lbnRdPVwiY2hpcC50b29sdGlwPy5jb250ZW50QWxpZ25tZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVtb3ZlKT1cIm9uUmVtb3ZlKCRldmVudClcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY2hpcC5pY29uU3ZnTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnIFtpY29uXT1cImNoaXAuaWNvblN2Z05hbWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNoaXAuaWNvbkNsYXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwie3sgY2hpcC5pY29uQ2xhc3MgfX1cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY2hpcHNMYWJlbFRydW5jYXRlQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9XCJ7eyBnZXRDaGlwTGFiZWwoY2hpcCkgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldENoaXBMYWJlbChjaGlwKSB8IGV1aVRydW5jYXRlOiBjaGlwc0xhYmVsVHJ1bmNhdGVDb3VudCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXVpLWNoaXAtbGlzdF9fY2hpcC1jb250ZW50XCIgW2lubmVySFRNTF09XCJnZXRDaGlwQ29udGVudChjaGlwKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9ldWktY2hpcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImV1aUNoaXBMaXN0QXBwZW5kQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFkZGl0aW9uYWxDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgfSBAZWxzZSB7ICAgLy8gaXNHcmlkXG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV1aS1jaGlwLWxpc3RfX2dyb3VwXCIgY2RrRHJvcExpc3RHcm91cD5cbiAgICAgICAgICAgIEBmb3IgKCBjaGlwIG9mIGNoaXBzOyB0cmFjayBjaGlwOyBsZXQgaSA9ICRpbmRleDsgKSB7XG4gICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXhWaXNpYmxlQ2hpcHNDb3VudCAmJiBpc01heFZpc2libGVDaGlwc09wZW5lZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXhWaXNpYmxlQ2hpcHNDb3VudCAmJiBtYXhWaXNpYmxlQ2hpcHNDb3VudCA+IGkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAhbWF4VmlzaWJsZUNoaXBzQ291bnRcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgI2NoaXBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAjY2hpcExpc3REcm9wTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgI2NoaXBMaXN0RHJhZ0FuZERyb3BJdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiFpc0NoaXBzRHJhZ0FuZERyb3BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJ7IGNoaXA6IGNoaXAsIGluZGV4OiBpIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcEdyaWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS1jaGlwLWxpc3RfX2N1c3RvbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldWktY2hpcC1saXN0X19jaGlwLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cInsgY2hpcDogY2hpcCwgaW5kZXg6IGkgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZGtEcmFnU3RhcnRlZCk9XCJvbkRyYWdTdGFydGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RrRHJhZ1JlbGVhc2VkKT1cIm9uRHJhZ1JlbGVhc2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RrRHJhZ0VudGVyZWQpPVwib25EcmFnRW50ZXIoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXVpLWNoaXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNldWlDaGlwSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiY2hpcC5kYXRhID8gY2hpcC5kYXRhIDogY2hpcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiY2hpcC5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cIidsaXN0aXRlbSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYUxhYmVsPVwie3sgZ2V0Q2hpcExhYmVsKGNoaXApIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtldWlJbnRlcm5hbElkXT1cImNoaXAuZXVpSW50ZXJuYWxJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNGaWxsZWRdPVwiY2hpcC5pc0ZpbGxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNDaGlwUmVtb3ZhYmxlXT1cImNoaXAuaXNDaGlwUmVtb3ZhYmxlIHx8IChpc0NoaXBzUmVtb3ZhYmxlICYmIGNoaXAuaXNSZW1vdmFibGUpICE9PSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXVpT3V0bGluZV09XCJjaGlwLmV1aU91dGxpbmUgfHwgdGhpcy5iYXNlU3RhdGVzRGlyZWN0aXZlPy5ldWlPdXRsaW5lIHx8IGNoaXAuaXNPdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtldWlWYXJpYW50XT1cImNoaXAudHlwZUNsYXNzIHx8IHRoaXMuYmFzZVN0YXRlc0RpcmVjdGl2ZT8uZXVpVmFyaWFudCB8fCBjaGlwLmJhc2VTdGF0ZXNEaXJlY3RpdmU/LmV1aVZhcmlhbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V1aURpc2FibGVkXT1cImNoaXAuZXVpRGlzYWJsZWQgfHwgdGhpcy5iYXNlU3RhdGVzRGlyZWN0aXZlPy5ldWlEaXNhYmxlZCB8fCBjaGlwLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V1aVRvb2x0aXBdPVwiY2hpcC50b29sdGlwTWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcG9zaXRpb25dPVwiY2hpcC50b29sdGlwPy5wb3NpdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudEFsaWdubWVudF09XCJjaGlwLnRvb2x0aXA/LmNvbnRlbnRBbGlnbm1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbW92ZSk9XCJvblJlbW92ZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY2hpcC5pY29uU3ZnTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgW2ljb25dPVwiY2hpcC5pY29uU3ZnTmFtZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9XCJ7eyBnZXRDaGlwTGFiZWwoY2hpcCkgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0Q2hpcExhYmVsKGNoaXApIHwgZXVpVHJ1bmNhdGU6IGNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJldWktY2hpcC1saXN0X19jaGlwLWNvbnRlbnRcIiBbaW5uZXJIVE1MXT1cImdldENoaXBDb250ZW50KGNoaXApXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2V1aS1jaGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImV1aUNoaXBMaXN0QXBwZW5kQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWRkaXRpb25hbENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2V1aUNoaXBMaXN0QXBwZW5kQ29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJldWlDaGlwTGlzdEFwcGVuZENvbnRlbnRcIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2FkZGl0aW9uYWxDb250ZW50PlxuICAgIEBpZiAobWF4VmlzaWJsZUNoaXBzQ291bnQgJiYgY2hpcHMgJiYgY2hpcHMubGVuZ3RoID4gbWF4VmlzaWJsZUNoaXBzQ291bnQpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImV1aS1jaGlwLWxpc3RfX2V4cGFuZC1idXR0b24td3JhcHBlclwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGV1aUJ1dHRvblxuICAgICAgICAgICAgICAgIGV1aUJhc2ljQnV0dG9uXG4gICAgICAgICAgICAgICAgZXVpU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgZXVpU2l6ZVNcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS1jaGlwLWxpc3RfX2V4cGFuZC1idXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVUYWdzKClcIj5cblxuICAgICAgICAgICAgICAgIEBpZiAoaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwiY2hldnJvbi1iYWNrOnNoYXJwXCIgYXJpYS1sYWJlbD1cIkNvbGxhcHNlIGljb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHRvZ2dsZUxpbmtMZXNzTGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRvZ2dsZUxpbmtMZXNzTGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBAaWYgKHRvZ2dsZUxpbmtNb3JlTGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRvZ2dsZUxpbmtNb3JlTGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnIGljb249XCJjaGV2cm9uLWZvcndhcmQ6c2hhcnBcIiBhcmlhLWxhYmVsPVwiRXhwYW5kIGljb25cIiAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuIl19