carbon-components-angular 5.8.1 → 5.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/docs/documentation/classes/NumberChange.html +5 -0
  2. package/docs/documentation/components/Accordion.html +1 -1
  3. package/docs/documentation/components/AccordionItem.html +1 -1
  4. package/docs/documentation/components/ActionableNotification.html +1 -1
  5. package/docs/documentation/components/AlertModal.html +1 -1
  6. package/docs/documentation/components/BaseIconButton.html +1 -1
  7. package/docs/documentation/components/BaseNotification.html +1 -1
  8. package/docs/documentation/components/BaseTabHeader.html +1 -1
  9. package/docs/documentation/components/Breadcrumb.html +1 -1
  10. package/docs/documentation/components/BreadcrumbItemComponent.html +1 -1
  11. package/docs/documentation/components/ButtonSet.html +1 -1
  12. package/docs/documentation/components/Checkbox.html +1 -1
  13. package/docs/documentation/components/ClickableTile.html +1 -1
  14. package/docs/documentation/components/CodeSnippet.html +1 -1
  15. package/docs/documentation/components/ComboBox.html +22 -20
  16. package/docs/documentation/components/ContentSwitcher.html +1 -1
  17. package/docs/documentation/components/ContextMenuComponent.html +1 -1
  18. package/docs/documentation/components/ContextMenuDividerComponent.html +1 -1
  19. package/docs/documentation/components/ContextMenuGroupComponent.html +1 -1
  20. package/docs/documentation/components/ContextMenuItemComponent.html +1 -1
  21. package/docs/documentation/components/DatePicker.html +1 -1
  22. package/docs/documentation/components/DatePickerInput.html +1 -1
  23. package/docs/documentation/components/Dialog.html +1 -1
  24. package/docs/documentation/components/Documentation.html +1 -1
  25. package/docs/documentation/components/Dropdown.html +1 -1
  26. package/docs/documentation/components/DropdownList.html +85 -74
  27. package/docs/documentation/components/ExpandableTile.html +1 -1
  28. package/docs/documentation/components/FileComponent.html +1 -1
  29. package/docs/documentation/components/FileUploader.html +46 -42
  30. package/docs/documentation/components/Hamburger.html +1 -1
  31. package/docs/documentation/components/Header.html +1 -1
  32. package/docs/documentation/components/HeaderAction.html +1 -1
  33. package/docs/documentation/components/HeaderGlobal.html +1 -1
  34. package/docs/documentation/components/HeaderItem.html +1 -1
  35. package/docs/documentation/components/HeaderMenu.html +1 -1
  36. package/docs/documentation/components/HeaderNavigation.html +1 -1
  37. package/docs/documentation/components/IconButton.html +1 -1
  38. package/docs/documentation/components/InlineLoading.html +1 -1
  39. package/docs/documentation/components/Label.html +311 -252
  40. package/docs/documentation/components/ListColumn.html +1 -1
  41. package/docs/documentation/components/ListHeader.html +1 -1
  42. package/docs/documentation/components/ListRow.html +1 -1
  43. package/docs/documentation/components/Loading.html +1 -1
  44. package/docs/documentation/components/Modal.html +1 -1
  45. package/docs/documentation/components/ModalFooter.html +1 -1
  46. package/docs/documentation/components/ModalHeader.html +10 -23
  47. package/docs/documentation/components/Notification.html +1 -1
  48. package/docs/documentation/components/NumberComponent.html +105 -64
  49. package/docs/documentation/components/OverflowMenu.html +1 -1
  50. package/docs/documentation/components/OverflowMenuCustomPane.html +1 -1
  51. package/docs/documentation/components/OverflowMenuOption.html +1 -1
  52. package/docs/documentation/components/OverflowMenuPane.html +1 -1
  53. package/docs/documentation/components/Overlay.html +1 -1
  54. package/docs/documentation/components/Pagination.html +10 -10
  55. package/docs/documentation/components/PaginationNav.html +1 -1
  56. package/docs/documentation/components/PaginationNavItem.html +1 -1
  57. package/docs/documentation/components/PaginationOverflow.html +1 -1
  58. package/docs/documentation/components/Panel.html +1 -1
  59. package/docs/documentation/components/Placeholder.html +1 -1
  60. package/docs/documentation/components/PopoverContent.html +1 -1
  61. package/docs/documentation/components/ProgressBar.html +1 -1
  62. package/docs/documentation/components/ProgressIndicator.html +23 -36
  63. package/docs/documentation/components/Radio.html +1 -1
  64. package/docs/documentation/components/RadioGroup.html +1 -1
  65. package/docs/documentation/components/Search.html +1 -1
  66. package/docs/documentation/components/Select.html +1 -1
  67. package/docs/documentation/components/SelectionTile.html +46 -48
  68. package/docs/documentation/components/SideNav.html +1 -1
  69. package/docs/documentation/components/SideNavItem.html +30 -24
  70. package/docs/documentation/components/SideNavMenu.html +5 -9
  71. package/docs/documentation/components/SkeletonPlaceholder.html +1 -1
  72. package/docs/documentation/components/SkeletonText.html +1 -1
  73. package/docs/documentation/components/Slider.html +107 -90
  74. package/docs/documentation/components/StructuredList.html +1 -1
  75. package/docs/documentation/components/SwitcherList.html +1 -1
  76. package/docs/documentation/components/SwitcherListItem.html +1 -1
  77. package/docs/documentation/components/Tab.html +1 -1
  78. package/docs/documentation/components/TabHeaderGroup.html +1 -1
  79. package/docs/documentation/components/TabHeaders.html +120 -31
  80. package/docs/documentation/components/TabSkeleton.html +1 -1
  81. package/docs/documentation/components/Table.html +1 -1
  82. package/docs/documentation/components/TableBody.html +1 -1
  83. package/docs/documentation/components/TableCheckbox.html +1 -1
  84. package/docs/documentation/components/TableContainer.html +1 -1
  85. package/docs/documentation/components/TableData.html +1 -1
  86. package/docs/documentation/components/TableExpandButton.html +1 -1
  87. package/docs/documentation/components/TableExpandedRow.html +1 -1
  88. package/docs/documentation/components/TableHead.html +1 -1
  89. package/docs/documentation/components/TableHeadCell.html +1 -1
  90. package/docs/documentation/components/TableHeadCheckbox.html +1 -1
  91. package/docs/documentation/components/TableHeadExpand.html +1 -1
  92. package/docs/documentation/components/TableHeader.html +1 -1
  93. package/docs/documentation/components/TableRadio.html +1 -1
  94. package/docs/documentation/components/TableRowComponent.html +1 -1
  95. package/docs/documentation/components/TableToolbar.html +8 -8
  96. package/docs/documentation/components/TableToolbarActions.html +1 -1
  97. package/docs/documentation/components/TableToolbarContent.html +1 -1
  98. package/docs/documentation/components/TableToolbarSearch.html +1 -1
  99. package/docs/documentation/components/Tabs.html +1 -1
  100. package/docs/documentation/components/Tag.html +1 -1
  101. package/docs/documentation/components/TagFilter.html +1 -1
  102. package/docs/documentation/components/TextInputLabelComponent.html +1197 -0
  103. package/docs/documentation/components/TextareaLabelComponent.html +1243 -0
  104. package/docs/documentation/components/Tile.html +1 -1
  105. package/docs/documentation/components/TileGroup.html +142 -27
  106. package/docs/documentation/components/TimePicker.html +1 -1
  107. package/docs/documentation/components/TimePickerSelect.html +1 -1
  108. package/docs/documentation/components/Toast.html +28 -44
  109. package/docs/documentation/components/Toggle.html +1 -1
  110. package/docs/documentation/components/Toggletip.html +1 -1
  111. package/docs/documentation/components/Tooltip.html +1 -1
  112. package/docs/documentation/components/TooltipDefinition.html +1 -1
  113. package/docs/documentation/coverage.html +35 -11
  114. package/docs/documentation/directives/DialogDirective.html +9 -11
  115. package/docs/documentation/directives/OverflowMenuDirective.html +2 -2
  116. package/docs/documentation/graph/dependencies.svg +2646 -2598
  117. package/docs/documentation/images/coverage-badge-documentation.svg +1 -1
  118. package/docs/documentation/interfaces/PaginationTranslations.html +4 -4
  119. package/docs/documentation/js/menu-wc.js +15 -9
  120. package/docs/documentation/js/menu-wc_es5.js +1 -1
  121. package/docs/documentation/js/search/search_index.js +2 -2
  122. package/docs/documentation/modules/DatePickerInputModule/dependencies.svg +40 -36
  123. package/docs/documentation/modules/DatePickerInputModule.html +40 -36
  124. package/docs/documentation/modules/DatePickerModule/dependencies.svg +39 -39
  125. package/docs/documentation/modules/DatePickerModule.html +39 -39
  126. package/docs/documentation/modules/FileUploaderModule/dependencies.svg +34 -34
  127. package/docs/documentation/modules/FileUploaderModule.html +34 -34
  128. package/docs/documentation/modules/GridModule/dependencies.svg +60 -60
  129. package/docs/documentation/modules/GridModule.html +60 -60
  130. package/docs/documentation/modules/InputModule/dependencies.svg +107 -59
  131. package/docs/documentation/modules/InputModule.html +126 -60
  132. package/docs/documentation/modules/LoadingModule/dependencies.svg +4 -4
  133. package/docs/documentation/modules/LoadingModule.html +4 -4
  134. package/docs/documentation/modules/NFormsModule/dependencies.svg +10 -4
  135. package/docs/documentation/modules/NFormsModule.html +15 -5
  136. package/docs/documentation/modules/NumberModule/dependencies.svg +4 -4
  137. package/docs/documentation/modules/NumberModule.html +4 -4
  138. package/docs/documentation/modules/ProgressBarModule/dependencies.svg +4 -4
  139. package/docs/documentation/modules/ProgressBarModule.html +4 -4
  140. package/docs/documentation/modules/ProgressIndicatorModule/dependencies.svg +42 -54
  141. package/docs/documentation/modules/ProgressIndicatorModule.html +43 -60
  142. package/docs/documentation/modules/RadioModule/dependencies.svg +4 -8
  143. package/docs/documentation/modules/RadioModule.html +4 -8
  144. package/docs/documentation/modules/SearchModule/dependencies.svg +4 -4
  145. package/docs/documentation/modules/SearchModule.html +4 -4
  146. package/docs/documentation/modules/SliderModule/dependencies.svg +4 -4
  147. package/docs/documentation/modules/SliderModule.html +4 -4
  148. package/docs/documentation/modules/StructuredListModule/dependencies.svg +66 -66
  149. package/docs/documentation/modules/StructuredListModule.html +66 -66
  150. package/docs/documentation/modules/TableModule/dependencies.svg +216 -216
  151. package/docs/documentation/modules/TableModule.html +216 -216
  152. package/docs/documentation/modules/ThemeModule/dependencies.svg +4 -4
  153. package/docs/documentation/modules/ThemeModule.html +4 -4
  154. package/docs/documentation/modules/TilesModule/dependencies.svg +78 -78
  155. package/docs/documentation/modules/TilesModule.html +78 -78
  156. package/docs/documentation/modules/TimePickerModule/dependencies.svg +4 -4
  157. package/docs/documentation/modules/TimePickerModule.html +4 -4
  158. package/docs/documentation/modules/TimePickerSelectModule/dependencies.svg +46 -50
  159. package/docs/documentation/modules/TimePickerSelectModule.html +46 -50
  160. package/docs/documentation/modules/ToggleModule/dependencies.svg +26 -26
  161. package/docs/documentation/modules/ToggleModule.html +26 -26
  162. package/docs/documentation/modules/ToggletipModule/dependencies.svg +37 -37
  163. package/docs/documentation/modules/ToggletipModule.html +37 -37
  164. package/docs/documentation/modules/TooltipModule/dependencies.svg +4 -4
  165. package/docs/documentation/modules/TooltipModule.html +4 -4
  166. package/docs/documentation/modules/UIShellModule/dependencies.svg +4 -4
  167. package/docs/documentation/modules/UIShellModule.html +4 -4
  168. package/docs/documentation/overview.html +2647 -2599
  169. package/docs/documentation.json +1062 -453
  170. package/docs/storybook/1741.0cb8b504.iframe.bundle.js +1 -0
  171. package/docs/storybook/1895.d4241266.iframe.bundle.js +1 -0
  172. package/docs/storybook/{3224.acb75ed6.iframe.bundle.js → 3224.8b16624b.iframe.bundle.js} +1 -1
  173. package/docs/storybook/{3348.91a6fc53.iframe.bundle.js → 3348.683a45b7.iframe.bundle.js} +1 -1
  174. package/docs/storybook/{3931.f22006ff.iframe.bundle.js → 3931.55f9fea9.iframe.bundle.js} +1 -1
  175. package/docs/storybook/5868.3e7f17a9.iframe.bundle.js +1 -0
  176. package/docs/storybook/{1235.8d840d5b.iframe.bundle.js → 7153.87910de3.iframe.bundle.js} +1 -1
  177. package/docs/storybook/7773.6c3cf943.iframe.bundle.js +1 -0
  178. package/docs/storybook/{8341.50a06357.iframe.bundle.js → 8341.83894870.iframe.bundle.js} +1 -1
  179. package/docs/storybook/{901.aa635bd3.iframe.bundle.js → 901.3e5cc559.iframe.bundle.js} +1 -1
  180. package/docs/storybook/combobox-combobox-stories.fdeea2f7.iframe.bundle.js +1 -0
  181. package/docs/storybook/file-uploader-file-uploader-stories.fb6f46e6.iframe.bundle.js +1 -0
  182. package/docs/storybook/iframe.html +2 -2
  183. package/docs/storybook/main.69a14133.iframe.bundle.js +1 -0
  184. package/docs/storybook/{progress-indicator-progress-indicator-stories.7a79da0d.iframe.bundle.js → number-input-number-stories.3ea609db.iframe.bundle.js} +1 -1
  185. package/docs/storybook/{patterns-dialogs-modal-with-table-stories.f2295407.iframe.bundle.js → patterns-dialogs-modal-with-table-stories.494ac5a3.iframe.bundle.js} +1 -1
  186. package/docs/storybook/{patterns-forms-multi-step-form-stories.0d86ee5b.iframe.bundle.js → patterns-forms-multi-step-form-stories.75d0fa39.iframe.bundle.js} +1 -1
  187. package/docs/storybook/patterns-loading-large-loading-stories.8c04d095.iframe.bundle.js +1 -0
  188. package/docs/storybook/progress-indicator-progress-indicator-stories.dcc5c5ca.iframe.bundle.js +1 -0
  189. package/docs/storybook/project.json +1 -1
  190. package/docs/storybook/{runtime~main.c5d3a693.iframe.bundle.js → runtime~main.7228f593.iframe.bundle.js} +1 -1
  191. package/docs/storybook/slider-slider-stories.feee50aa.iframe.bundle.js +1 -0
  192. package/docs/storybook/{tabs-tabs-stories.d36fc351.iframe.bundle.js → tabs-tabs-stories.675b2d72.iframe.bundle.js} +1 -1
  193. package/docs/storybook/ui-shell-ui-shell-stories.90ac54a8.iframe.bundle.js +1 -0
  194. package/esm2020/combobox/combobox.component.mjs +4 -2
  195. package/esm2020/dialog/dialog.directive.mjs +4 -6
  196. package/esm2020/dropdown/list/dropdown-list.component.mjs +39 -30
  197. package/esm2020/file-uploader/file-uploader.component.mjs +16 -13
  198. package/esm2020/forms/forms.module.mjs +7 -4
  199. package/esm2020/forms/index.mjs +2 -2
  200. package/esm2020/input/index.mjs +3 -1
  201. package/esm2020/input/input.module.mjs +13 -3
  202. package/esm2020/input/label.component.mjs +200 -124
  203. package/esm2020/input/text-input-label.component.mjs +211 -0
  204. package/esm2020/input/textarea-label.component.mjs +215 -0
  205. package/esm2020/modal/modal-header.component.mjs +7 -9
  206. package/esm2020/notification/toast.component.mjs +10 -12
  207. package/esm2020/number-input/number.component.mjs +10 -2
  208. package/esm2020/pagination/pagination.component.mjs +9 -9
  209. package/esm2020/progress-indicator/progress-indicator.component.mjs +8 -10
  210. package/esm2020/progress-indicator/progress-indicator.module.mjs +1 -5
  211. package/esm2020/slider/slider.component.mjs +6 -5
  212. package/esm2020/table/toolbar/table-toolbar.component.mjs +7 -7
  213. package/esm2020/tabs/tab-headers.component.mjs +10 -2
  214. package/esm2020/tiles/selection-tile.component.mjs +21 -23
  215. package/esm2020/tiles/tile-group.component.mjs +25 -5
  216. package/esm2020/ui-shell/sidenav/sidenav-item.component.mjs +8 -2
  217. package/esm2020/ui-shell/sidenav/sidenav-menu.component.mjs +4 -9
  218. package/fesm2015/carbon-components-angular-combobox.mjs +3 -1
  219. package/fesm2015/carbon-components-angular-combobox.mjs.map +1 -1
  220. package/fesm2015/carbon-components-angular-dialog.mjs +3 -5
  221. package/fesm2015/carbon-components-angular-dialog.mjs.map +1 -1
  222. package/fesm2015/carbon-components-angular-dropdown.mjs +38 -29
  223. package/fesm2015/carbon-components-angular-dropdown.mjs.map +1 -1
  224. package/fesm2015/carbon-components-angular-file-uploader.mjs +15 -12
  225. package/fesm2015/carbon-components-angular-file-uploader.mjs.map +1 -1
  226. package/fesm2015/carbon-components-angular-forms.mjs +7 -4
  227. package/fesm2015/carbon-components-angular-forms.mjs.map +1 -1
  228. package/fesm2015/carbon-components-angular-input.mjs +572 -74
  229. package/fesm2015/carbon-components-angular-input.mjs.map +1 -1
  230. package/fesm2015/carbon-components-angular-modal.mjs +11 -13
  231. package/fesm2015/carbon-components-angular-modal.mjs.map +1 -1
  232. package/fesm2015/carbon-components-angular-notification.mjs +7 -9
  233. package/fesm2015/carbon-components-angular-notification.mjs.map +1 -1
  234. package/fesm2015/carbon-components-angular-number-input.mjs +9 -1
  235. package/fesm2015/carbon-components-angular-number-input.mjs.map +1 -1
  236. package/fesm2015/carbon-components-angular-pagination.mjs +8 -8
  237. package/fesm2015/carbon-components-angular-pagination.mjs.map +1 -1
  238. package/fesm2015/carbon-components-angular-progress-indicator.mjs +7 -13
  239. package/fesm2015/carbon-components-angular-progress-indicator.mjs.map +1 -1
  240. package/fesm2015/carbon-components-angular-slider.mjs +5 -4
  241. package/fesm2015/carbon-components-angular-slider.mjs.map +1 -1
  242. package/fesm2015/carbon-components-angular-table.mjs +6 -6
  243. package/fesm2015/carbon-components-angular-table.mjs.map +1 -1
  244. package/fesm2015/carbon-components-angular-tabs.mjs +9 -1
  245. package/fesm2015/carbon-components-angular-tabs.mjs.map +1 -1
  246. package/fesm2015/carbon-components-angular-tiles.mjs +43 -26
  247. package/fesm2015/carbon-components-angular-tiles.mjs.map +1 -1
  248. package/fesm2015/carbon-components-angular-ui-shell.mjs +10 -9
  249. package/fesm2015/carbon-components-angular-ui-shell.mjs.map +1 -1
  250. package/fesm2020/carbon-components-angular-combobox.mjs +3 -1
  251. package/fesm2020/carbon-components-angular-combobox.mjs.map +1 -1
  252. package/fesm2020/carbon-components-angular-dialog.mjs +3 -5
  253. package/fesm2020/carbon-components-angular-dialog.mjs.map +1 -1
  254. package/fesm2020/carbon-components-angular-dropdown.mjs +38 -29
  255. package/fesm2020/carbon-components-angular-dropdown.mjs.map +1 -1
  256. package/fesm2020/carbon-components-angular-file-uploader.mjs +15 -12
  257. package/fesm2020/carbon-components-angular-file-uploader.mjs.map +1 -1
  258. package/fesm2020/carbon-components-angular-forms.mjs +7 -4
  259. package/fesm2020/carbon-components-angular-forms.mjs.map +1 -1
  260. package/fesm2020/carbon-components-angular-input.mjs +572 -74
  261. package/fesm2020/carbon-components-angular-input.mjs.map +1 -1
  262. package/fesm2020/carbon-components-angular-modal.mjs +11 -13
  263. package/fesm2020/carbon-components-angular-modal.mjs.map +1 -1
  264. package/fesm2020/carbon-components-angular-notification.mjs +7 -9
  265. package/fesm2020/carbon-components-angular-notification.mjs.map +1 -1
  266. package/fesm2020/carbon-components-angular-number-input.mjs +9 -1
  267. package/fesm2020/carbon-components-angular-number-input.mjs.map +1 -1
  268. package/fesm2020/carbon-components-angular-pagination.mjs +8 -8
  269. package/fesm2020/carbon-components-angular-pagination.mjs.map +1 -1
  270. package/fesm2020/carbon-components-angular-progress-indicator.mjs +7 -13
  271. package/fesm2020/carbon-components-angular-progress-indicator.mjs.map +1 -1
  272. package/fesm2020/carbon-components-angular-slider.mjs +5 -4
  273. package/fesm2020/carbon-components-angular-slider.mjs.map +1 -1
  274. package/fesm2020/carbon-components-angular-table.mjs +6 -6
  275. package/fesm2020/carbon-components-angular-table.mjs.map +1 -1
  276. package/fesm2020/carbon-components-angular-tabs.mjs +9 -1
  277. package/fesm2020/carbon-components-angular-tabs.mjs.map +1 -1
  278. package/fesm2020/carbon-components-angular-tiles.mjs +43 -26
  279. package/fesm2020/carbon-components-angular-tiles.mjs.map +1 -1
  280. package/fesm2020/carbon-components-angular-ui-shell.mjs +10 -9
  281. package/fesm2020/carbon-components-angular-ui-shell.mjs.map +1 -1
  282. package/file-uploader/file-uploader.component.d.ts +2 -1
  283. package/forms/forms.module.d.ts +1 -1
  284. package/forms/index.d.ts +1 -1
  285. package/input/index.d.ts +2 -0
  286. package/input/input.module.d.ts +6 -4
  287. package/input/label.component.d.ts +10 -23
  288. package/input/text-input-label.component.d.ts +85 -0
  289. package/input/textarea-label.component.d.ts +87 -0
  290. package/modal/modal-header.component.d.ts +1 -3
  291. package/notification/toast.component.d.ts +1 -3
  292. package/number-input/number.component.d.ts +5 -1
  293. package/package.json +1 -1
  294. package/progress-indicator/progress-indicator.component.d.ts +1 -3
  295. package/progress-indicator/progress-indicator.module.d.ts +3 -4
  296. package/slider/slider.component.d.ts +3 -2
  297. package/tabs/tab-headers.component.d.ts +5 -3
  298. package/tiles/tile-group.component.d.ts +4 -2
  299. package/ui-shell/sidenav/sidenav-menu.component.d.ts +1 -1
  300. package/docs/storybook/1741.baa0e588.iframe.bundle.js +0 -1
  301. package/docs/storybook/1895.cdd3d03e.iframe.bundle.js +0 -1
  302. package/docs/storybook/5868.bc6e8b2d.iframe.bundle.js +0 -1
  303. package/docs/storybook/7773.ef20c61a.iframe.bundle.js +0 -1
  304. package/docs/storybook/combobox-combobox-stories.cc751a45.iframe.bundle.js +0 -1
  305. package/docs/storybook/file-uploader-file-uploader-stories.f41b9fbb.iframe.bundle.js +0 -1
  306. package/docs/storybook/main.760cce33.iframe.bundle.js +0 -1
  307. package/docs/storybook/number-input-number-stories.aadfb01f.iframe.bundle.js +0 -1
  308. package/docs/storybook/patterns-loading-large-loading-stories.95988daa.iframe.bundle.js +0 -1
  309. package/docs/storybook/slider-slider-stories.fe053915.iframe.bundle.js +0 -1
  310. package/docs/storybook/ui-shell-ui-shell-stories.9dc19b9f.iframe.bundle.js +0 -1
@@ -171,6 +171,11 @@ export class DropdownList {
171
171
  filterBy(query = "") {
172
172
  if (query) {
173
173
  this.displayItems = this.getListItems().filter(item => item.content.toLowerCase().includes(query.toLowerCase()));
174
+ // Reset index if items were found
175
+ // Prevent selecting index in list that are undefined.
176
+ if (this.displayItems) {
177
+ this.index = 0;
178
+ }
174
179
  }
175
180
  else {
176
181
  this.displayItems = this.getListItems();
@@ -214,22 +219,24 @@ export class DropdownList {
214
219
  * Returns the `HTMLElement` for the item that is subsequent to the selected item.
215
220
  */
216
221
  getNextElement() {
217
- if (this.index < this.displayItems.length - 1) {
218
- this.index++;
219
- }
220
- let item = this.displayItems[this.index];
221
- if (item.disabled) {
222
- return this.getNextElement();
223
- }
224
- let elemList = this.listElementList ? this.listElementList.toArray() : [];
225
- // TODO: update to optional chaining after upgrading typescript
226
- // to v3.7+
227
- if (elemList[this.index] && elemList[this.index].nativeElement) {
228
- return elemList[this.index].nativeElement;
229
- }
230
- else {
222
+ // Only return native elements if they are rendered
223
+ const elemList = this.listElementList ? this.listElementList.toArray() : [];
224
+ if (!elemList.length) {
231
225
  return null;
232
226
  }
227
+ /**
228
+ * Start checking from next index
229
+ * Continue looping through the list until a non disabeled element is found or
230
+ * end of list is reached
231
+ */
232
+ for (let i = this.index + 1; i < elemList.length; i++) {
233
+ // If the values in the list are not disabled
234
+ if (!this.displayItems[i].disabled) {
235
+ this.index = i;
236
+ return elemList[i].nativeElement;
237
+ }
238
+ }
239
+ return elemList[this.index].nativeElement;
233
240
  }
234
241
  /**
235
242
  * Returns the `ListItem` that precedes the selected item within `DropdownList`.
@@ -250,22 +257,24 @@ export class DropdownList {
250
257
  * Returns the `HTMLElement` for the item that precedes the selected item.
251
258
  */
252
259
  getPrevElement() {
253
- if (this.index > 0) {
254
- this.index--;
255
- }
256
- let item = this.displayItems[this.index];
257
- if (item.disabled) {
258
- return this.getPrevElement();
259
- }
260
- let elemList = this.listElementList ? this.listElementList.toArray() : [];
261
- // TODO: update to optional chaining after upgrading typescript
262
- // to v3.7+
263
- if (elemList[this.index] && elemList[this.index].nativeElement) {
264
- return elemList[this.index].nativeElement;
265
- }
266
- else {
260
+ // Only return native elements if they are rendered
261
+ const elemList = this.listElementList ? this.listElementList.toArray() : [];
262
+ if (!elemList.length) {
267
263
  return null;
268
264
  }
265
+ /**
266
+ * Start checking from next index
267
+ * Continue looping through the list until a non disabeled element is found or
268
+ * end of list is reached
269
+ */
270
+ for (let i = this.index - 1; i < this.index && i >= 0; i--) {
271
+ // If the values in the list are not disabled
272
+ if (!this.displayItems[i].disabled) {
273
+ this.index = i;
274
+ return elemList[i].nativeElement;
275
+ }
276
+ }
277
+ return elemList[this.index].nativeElement;
269
278
  }
270
279
  /**
271
280
  * Returns the `ListItem` that is selected within `DropdownList`.
@@ -401,7 +410,7 @@ export class DropdownList {
401
410
  */
402
411
  doClick(event, item) {
403
412
  event.preventDefault();
404
- if (!item.disabled) {
413
+ if (item && !item.disabled) {
405
414
  this.list.nativeElement.focus();
406
415
  if (this.type === "single") {
407
416
  item.selected = true;
@@ -616,4 +625,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
616
625
  type: ViewChildren,
617
626
  args: ["listItem"]
618
627
  }] } });
619
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZHJvcGRvd24vbGlzdC9kcm9wZG93bi1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBRU4sWUFBWSxFQUdaLFNBQVMsRUFFVCxZQUFZLEVBR1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQWdCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7OztBQUlsRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBcUVILE1BQU0sT0FBTyxZQUFZO0lBMEd4Qjs7T0FFRztJQUNILFlBQW1CLFVBQXNCLEVBQVksSUFBVSxFQUFZLE1BQXNCO1FBQTlFLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBWSxTQUFJLEdBQUosSUFBSSxDQUFNO1FBQVksV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUEzR3hGLGNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUEwQnpEOztXQUVHO1FBQ00sWUFBTyxHQUE4QixJQUFJLENBQUM7UUFDbkQ7O1dBRUc7UUFDTyxXQUFNLEdBQXNFLElBQUksWUFBWSxFQUFFLENBQUM7UUFDekc7O1dBRUc7UUFDTyxXQUFNLEdBQW9DLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkU7Ozs7Ozs7O1dBUUc7UUFDTyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFLNUQ7OztXQUdHO1FBQ00sU0FBSSxHQUF1QixRQUFRLENBQUM7UUFFN0M7O1dBRUc7UUFDTSxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRTNCOztXQUVHO1FBQ0ksU0FBSSxHQUF1QixJQUFJLENBQUM7UUFDaEMsV0FBTSxHQUFHLFdBQVcsWUFBWSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7UUFDL0Msb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDOUI7Ozs7V0FJRztRQUNJLGlCQUFZLEdBQW9CLEVBQUUsQ0FBQztRQUMxQzs7V0FFRztRQUNPLFVBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQWlCckI7O1dBRUc7UUFDTyxXQUFNLEdBQW9CLEVBQUUsQ0FBQztJQVM2RCxDQUFDO0lBMUdyRzs7T0FFRztJQUNILElBQWEsS0FBSyxDQUFFLEtBQW9EO1FBQ3ZFLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO2dCQUM1QixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDdEM7WUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksVUFBVSxDQUFVLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ3ZELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUM3QyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNuQixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNwQixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3JCLENBQUMsQ0FBQyxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hCO2FBQU07WUFDTixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3ZCO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksS0FBSztRQUNSLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM1QixDQUFDO0lBb0ZEOzs7T0FHRztJQUNILGVBQWU7UUFDZCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1YsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDN0I7UUFDRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUM1QixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdEM7SUFDRixDQUFDO0lBRUQsWUFBWSxDQUFDLFFBQVEsR0FBRyxJQUFJO1FBQzNCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDeEY7YUFBTTtZQUNOLCtFQUErRTtZQUMvRSxnQ0FBZ0M7WUFDaEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUMxQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzNCO0lBQ0YsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhO1FBQ3RCLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLEtBQUssRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVUsQ0FBQyxLQUFLO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRLENBQUMsS0FBSyxHQUFHLEVBQUU7UUFDbEIsSUFBSSxLQUFLLEVBQUU7WUFDVixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2pIO2FBQU07WUFDTixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUN4QztRQUVELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsb0JBQW9CO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQUUsT0FBTztTQUFFO1FBQzNCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzdCO1FBQ0QsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQzthQUM5RCxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDZixFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVixJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzlDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNiO1FBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDL0MsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjO1FBQ2IsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM5QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDYjtRQUNELElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUM3QjtRQUVELElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUUxRSwrREFBK0Q7UUFDL0QsV0FBVztRQUNYLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLGFBQWEsRUFBRTtZQUMvRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxDQUFDO1NBQzFDO2FBQU07WUFDTixPQUFPLElBQUksQ0FBQztTQUNaO0lBQ0YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNWLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2I7UUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDYixJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNiO1FBQ0QsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQzdCO1FBRUQsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRTFFLCtEQUErRDtRQUMvRCxXQUFXO1FBQ1gsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxFQUFFO1lBQy9ELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUM7U0FDMUM7YUFBTTtZQUNOLE9BQU8sSUFBSSxDQUFDO1NBQ1o7SUFDRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjO1FBQ2IsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDNUI7UUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQjtRQUNoQixJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1NBQ2hEO1FBQ0QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUM7SUFDakUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWTtRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNwQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1YsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzFCLE9BQU8sRUFBRSxDQUFDO1NBQ1Y7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxpQkFBaUIsQ0FBQyxLQUFzQjtRQUN2Qyw0REFBNEQ7UUFDNUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDMUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxzREFBc0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDckg7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRTtZQUN0Qiw0RkFBNEY7WUFDNUYsS0FBSyxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUU7Z0JBQ3hDLGdCQUFnQjtnQkFDaEIsSUFBSSxXQUFXLEdBQXNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNoRSx5REFBeUQ7Z0JBQ3pELE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQztnQkFDNUIsd0JBQXdCO2dCQUN4QixXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDMUMsS0FBSyxJQUFJLE9BQU8sSUFBSSxLQUFLLEVBQUU7b0JBQzFCLGdCQUFnQjtvQkFDaEIsSUFBSSxXQUFXLEdBQXNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUNoRSx5REFBeUQ7b0JBQ3pELE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQztvQkFDNUIsd0JBQXdCO29CQUN4QixXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDMUMsaUJBQWlCO29CQUNqQixJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUU7d0JBQ3RDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQzt3QkFDcEMsc0RBQXNEO3dCQUN0RCxNQUFNO3FCQUNOO3lCQUFNO3dCQUNOLE9BQU8sQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO3FCQUN6QjtpQkFDRDthQUNEO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTO1FBQ1IsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNuQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDbkI7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2YsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1YsaURBQWlEO1FBQ2pELHlEQUF5RDtRQUN6RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEQ7YUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRTtZQUNqQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDdEI7SUFDRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZLENBQUMsS0FBb0I7UUFDaEMsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcsRUFBRTtZQUMvQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQy9FLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUN2QjtZQUNELElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxPQUFPLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO2FBQzNDO1NBQ0Q7YUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssV0FBVyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssU0FBUyxFQUFFO1lBQ2hFLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssV0FBVyxFQUFFO2dCQUM5QixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO2lCQUNyRDtxQkFBTTtvQkFDTixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDL0I7YUFDRDtpQkFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssU0FBUyxFQUFFO2dCQUNuQyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDO2lCQUN2QztxQkFBTTtvQkFDTixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDNUI7YUFDRDtZQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuRCxDQUFDLENBQUMsQ0FBQztTQUNIO0lBQ0YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJO1FBQ2xCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO2dCQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDckIsc0JBQXNCO2dCQUN0QixLQUFLLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRTtvQkFDMUMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO3dCQUFFLFNBQVMsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO3FCQUFFO2lCQUN2RDthQUNEO2lCQUFNO2dCQUNOLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2FBQy9CO1lBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNuQjtJQUNGLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBSztRQUNoQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUNwRSxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQy9ELE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBSztRQUNmLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQ3BFLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDbEUsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVLENBQUMsS0FBSztRQUNmLE1BQU0sS0FBSyxHQUFZLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQztRQUN4RCxNQUFNLFFBQVEsR0FBWSxLQUFLLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQztRQUN2SCxNQUFNLGlCQUFpQixHQUFHLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVksQ0FBQyxXQUF1QjtRQUNuQyx3RUFBd0U7UUFDeEUsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsZUFBZSxDQUFDLFNBQVMsR0FBRyxJQUFJO1FBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ25HLElBQUksU0FBUyxFQUFFO1lBQ2QsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkQsQ0FBQyxDQUFDLENBQUM7U0FDSDtJQUNGLENBQUM7O0FBaGRNLHNCQUFTLEdBQUcsQ0FBQyxDQUFDO3lHQURULFlBQVk7NkZBQVosWUFBWSwwUEFQYjtRQUNWO1lBQ0MsT0FBTyxFQUFFLG9CQUFvQjtZQUM3QixXQUFXLEVBQUUsWUFBWTtTQUN6QjtLQUNELHVOQWhFUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQTBESDsyRkFRSyxZQUFZO2tCQXBFeEIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsc0NBQXNDO29CQUNoRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUEwREg7b0JBQ1AsU0FBUyxFQUFFO3dCQUNWOzRCQUNDLE9BQU8sRUFBRSxvQkFBb0I7NEJBQzdCLFdBQVcsY0FBYzt5QkFDekI7cUJBQ0Q7aUJBQ0Q7aUpBR1MsU0FBUztzQkFBakIsS0FBSztnQkFJTyxLQUFLO3NCQUFqQixLQUFLO2dCQXlCRyxPQUFPO3NCQUFmLEtBQUs7Z0JBSUksTUFBTTtzQkFBZixNQUFNO2dCQUlHLE1BQU07c0JBQWYsTUFBTTtnQkFVRyxVQUFVO3NCQUFuQixNQUFNO2dCQUk4QixJQUFJO3NCQUF4QyxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSzFCLElBQUk7c0JBQVosS0FBSztnQkFLRyxVQUFVO3NCQUFsQixLQUFLO2dCQXFCOEIsZUFBZTtzQkFBbEQsWUFBWTt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRJbnB1dCxcblx0T3V0cHV0LFxuXHRPbkRlc3Ryb3ksXG5cdEV2ZW50RW1pdHRlcixcblx0VGVtcGxhdGVSZWYsXG5cdEFmdGVyVmlld0luaXQsXG5cdFZpZXdDaGlsZCxcblx0RWxlbWVudFJlZixcblx0Vmlld0NoaWxkcmVuLFxuXHRRdWVyeUxpc3QsXG5cdEFwcGxpY2F0aW9uUmVmXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBpc09ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgb2YgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuaW1wb3J0IHsgSTE4biB9IGZyb20gXCJjYXJib24tY29tcG9uZW50cy1hbmd1bGFyL2kxOG5cIjtcbmltcG9ydCB7IEFic3RyYWN0RHJvcGRvd25WaWV3IH0gZnJvbSBcIi4uL2Fic3RyYWN0LWRyb3Bkb3duLXZpZXcuY2xhc3NcIjtcbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSBcIi4uL2xpc3QtaXRlbS5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IHdhdGNoRm9jdXNKdW1wIH0gZnJvbSBcIi4uL2Ryb3Bkb3dudG9vbHNcIjtcbmltcG9ydCB7IFNjcm9sbEN1c3RvbUV2ZW50IH0gZnJvbSBcIi4vc2Nyb2xsLWN1c3RvbS1ldmVudC5pbnRlcmZhY2VcIjtcblxuXG4vKipcbiAqIGBgYGh0bWxcbiAqIDxjZHMtZHJvcGRvd24tbGlzdCBbaXRlbXNdPVwibGlzdEl0ZW1zXCI+PC9jZHMtZHJvcGRvd24tbGlzdD5cbiAqIGBgYFxuICogYGBgdHlwZXNjcmlwdFxuICogbGlzdEl0ZW1zID0gW1xuICogXHR7XG4gKiBcdFx0Y29udGVudDogXCJpdGVtIG9uZVwiLFxuICogXHRcdHNlbGVjdGVkOiBmYWxzZVxuICogXHR9LFxuICogXHR7XG4gKiBcdFx0Y29udGVudDogXCJpdGVtIHR3b1wiLFxuICogXHRcdHNlbGVjdGVkOiBmYWxzZSxcbiAqIFx0fSxcbiAqIFx0e1xuICogXHRcdGNvbnRlbnQ6IFwiaXRlbSB0aHJlZVwiLFxuICogXHRcdHNlbGVjdGVkOiBmYWxzZVxuICogXHR9LFxuICogXHR7XG4gKiBcdFx0Y29udGVudDogXCJpdGVtIGZvdXJcIixcbiAqIFx0XHRzZWxlY3RlZDogZmFsc2VcbiAqIFx0fVxuICogXTtcbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwiY2RzLWRyb3Bkb3duLWxpc3QsIGlibS1kcm9wZG93bi1saXN0XCIsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PHVsXG5cdFx0XHQjbGlzdFxuXHRcdFx0W2lkXT1cImxpc3RJZFwiXG5cdFx0XHRyb2xlPVwibGlzdGJveFwiXG5cdFx0XHRjbGFzcz1cImNkcy0tbGlzdC1ib3hfX21lbnUgY2RzLS1tdWx0aS1zZWxlY3RcIlxuXHRcdFx0KHNjcm9sbCk9XCJlbWl0U2Nyb2xsKCRldmVudClcIlxuXHRcdFx0KGtleWRvd24pPVwibmF2aWdhdGVMaXN0KCRldmVudClcIlxuXHRcdFx0dGFiaW5kZXg9XCItMVwiXG5cdFx0XHRbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG5cdFx0XHRbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdPVwiaGlnaGxpZ2h0ZWRJdGVtXCI+XG5cdFx0XHQ8bGlcblx0XHRcdFx0cm9sZT1cIm9wdGlvblwiXG5cdFx0XHRcdCpuZ0Zvcj1cImxldCBpdGVtIG9mIGRpc3BsYXlJdGVtczsgbGV0IGkgPSBpbmRleFwiXG5cdFx0XHRcdChjbGljayk9XCJkb0NsaWNrKCRldmVudCwgaXRlbSlcIlxuXHRcdFx0XHRjbGFzcz1cImNkcy0tbGlzdC1ib3hfX21lbnUtaXRlbVwiXG5cdFx0XHRcdFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXRlbS5zZWxlY3RlZFwiXG5cdFx0XHRcdFtpZF09XCJnZXRJdGVtSWQoaSlcIlxuXHRcdFx0XHRbYXR0ci50aXRsZV09XCIgc2hvd1RpdGxlcyA/IGl0ZW0uY29udGVudCA6IG51bGxcIlxuXHRcdFx0XHRbYXR0ci5kaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkID8gdHJ1ZSA6IG51bGxcIlxuXHRcdFx0XHRbbmdDbGFzc109XCJ7XG5cdFx0XHRcdFx0J2Nkcy0tbGlzdC1ib3hfX21lbnUtaXRlbS0tYWN0aXZlJzogaXRlbS5zZWxlY3RlZCxcblx0XHRcdFx0XHQnY2RzLS1saXN0LWJveF9fbWVudS1pdGVtLS1oaWdobGlnaHRlZCc6IGhpZ2hsaWdodGVkSXRlbSA9PT0gZ2V0SXRlbUlkKGkpXG5cdFx0XHRcdH1cIj5cblx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdCNsaXN0SXRlbVxuXHRcdFx0XHRcdHRhYmluZGV4PVwiLTFcIlxuXHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1saXN0LWJveF9fbWVudS1pdGVtX19vcHRpb25cIj5cblx0XHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0XHQqbmdJZj1cIiFsaXN0VHBsICYmIHR5cGUgPT09ICdtdWx0aSdcIlxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLWZvcm0taXRlbSBjZHMtLWNoZWNrYm94LXdyYXBwZXJcIj5cblx0XHRcdFx0XHRcdDxsYWJlbFxuXHRcdFx0XHRcdFx0XHRbYXR0ci5kYXRhLWNvbnRhaW5lZC1jaGVja2JveC1zdGF0ZV09XCJpdGVtLnNlbGVjdGVkXCJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLWNoZWNrYm94LWxhYmVsXCI+XG5cdFx0XHRcdFx0XHRcdDxpbnB1dFxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1jaGVja2JveFwiXG5cdFx0XHRcdFx0XHRcdFx0dHlwZT1cImNoZWNrYm94XCJcblx0XHRcdFx0XHRcdFx0XHRbY2hlY2tlZF09XCJpdGVtLnNlbGVjdGVkXCJcblx0XHRcdFx0XHRcdFx0XHRbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG5cdFx0XHRcdFx0XHRcdFx0dGFiaW5kZXg9XCItMVwiPlxuXHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImNkcy0tY2hlY2tib3gtYXBwZWFyYW5jZVwiPjwvc3Bhbj5cblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJjZHMtLWNoZWNrYm94LWxhYmVsLXRleHRcIj57e2l0ZW0uY29udGVudH19PC9zcGFuPlxuXHRcdFx0XHRcdFx0PC9sYWJlbD5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiIWxpc3RUcGwgJiYgdHlwZSA9PT0gJ3NpbmdsZSdcIj57e2l0ZW0uY29udGVudH19PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0PHN2Z1xuXHRcdFx0XHRcdFx0Km5nSWY9XCIhbGlzdFRwbCAmJiB0eXBlID09PSAnc2luZ2xlJ1wiXG5cdFx0XHRcdFx0XHRjZHNJY29uPVwiY2hlY2ttYXJrXCJcblx0XHRcdFx0XHRcdHNpemU9XCIxNlwiXG5cdFx0XHRcdFx0XHRjbGFzcz1cImNkcy0tbGlzdC1ib3hfX21lbnUtaXRlbV9fc2VsZWN0ZWQtaWNvblwiPlxuXHRcdFx0XHRcdDwvc3ZnPlxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZVxuXHRcdFx0XHRcdFx0Km5nSWY9XCJsaXN0VHBsXCJcblx0XHRcdFx0XHRcdFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aXRlbTogaXRlbX1cIlxuXHRcdFx0XHRcdFx0W25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdFRwbFwiPlxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9saT5cblx0XHQ8L3VsPmAsXG5cdHByb3ZpZGVyczogW1xuXHRcdHtcblx0XHRcdHByb3ZpZGU6IEFic3RyYWN0RHJvcGRvd25WaWV3LFxuXHRcdFx0dXNlRXhpc3Rpbmc6IERyb3Bkb3duTGlzdFxuXHRcdH1cblx0XVxufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkxpc3QgaW1wbGVtZW50cyBBYnN0cmFjdERyb3Bkb3duVmlldywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblx0c3RhdGljIGxpc3RDb3VudCA9IDA7XG5cdEBJbnB1dCgpIGFyaWFMYWJlbCA9IHRoaXMuaTE4bi5nZXQoKS5EUk9QRE9XTl9MSVNULkxBQkVMO1xuXHQvKipcblx0ICogVGhlIGxpc3QgaXRlbXMgYmVsb25naW5nIHRvIHRoZSBgRHJvcGRvd25MaXN0YC5cblx0ICovXG5cdEBJbnB1dCgpIHNldCBpdGVtcyAodmFsdWU6IEFycmF5PExpc3RJdGVtPiB8IE9ic2VydmFibGU8QXJyYXk8TGlzdEl0ZW0+Pikge1xuXHRcdGlmIChpc09ic2VydmFibGUodmFsdWUpKSB7XG5cdFx0XHRpZiAodGhpcy5faXRlbXNTdWJzY3JpcHRpb24pIHtcblx0XHRcdFx0dGhpcy5faXRlbXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuX2l0ZW1zUmVhZHkgPSBuZXcgT2JzZXJ2YWJsZTxib29sZWFuPigob2JzZXJ2ZXIpID0+IHtcblx0XHRcdFx0dGhpcy5faXRlbXNTdWJzY3JpcHRpb24gPSB2YWx1ZS5zdWJzY3JpYmUodiA9PiB7XG5cdFx0XHRcdFx0dGhpcy51cGRhdGVMaXN0KHYpO1xuXHRcdFx0XHRcdG9ic2VydmVyLm5leHQodHJ1ZSk7XG5cdFx0XHRcdFx0b2JzZXJ2ZXIuY29tcGxldGUoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRcdHRoaXMub25JdGVtc1JlYWR5KG51bGwpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnVwZGF0ZUxpc3QodmFsdWUpO1xuXHRcdH1cblx0XHR0aGlzLl9vcmlnaW5hbEl0ZW1zID0gdmFsdWU7XG5cdH1cblxuXHRnZXQgaXRlbXMoKTogQXJyYXk8TGlzdEl0ZW0+IHwgT2JzZXJ2YWJsZTxBcnJheTxMaXN0SXRlbT4+IHtcblx0XHRyZXR1cm4gdGhpcy5fb3JpZ2luYWxJdGVtcztcblx0fVxuXHQvKipcblx0ICogVGVtcGxhdGUgdG8gYmluZCB0byBpdGVtcyBpbiB0aGUgYERyb3Bkb3duTGlzdGAgKG9wdGlvbmFsKS5cblx0ICovXG5cdEBJbnB1dCgpIGxpc3RUcGw6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xuXHQvKipcblx0ICogRXZlbnQgdG8gZW1pdCBzZWxlY3Rpb24gb2YgYSBsaXN0IGl0ZW0gd2l0aGluIHRoZSBgRHJvcGRvd25MaXN0YC5cblx0ICovXG5cdEBPdXRwdXQoKSBzZWxlY3Q6IEV2ZW50RW1pdHRlcjx7IGl0ZW06IExpc3RJdGVtLCBpc1VwZGF0ZT86IGJvb2xlYW4gfSB8IExpc3RJdGVtW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXHQvKipcblx0ICogRXZlbnQgdG8gZW1pdCBzY3JvbGwgZXZlbnQgb2YgYSBsaXN0IHdpdGhpbiB0aGUgYERyb3Bkb3duTGlzdGAuXG5cdCAqL1xuXHRAT3V0cHV0KCkgc2Nyb2xsOiBFdmVudEVtaXR0ZXI8U2Nyb2xsQ3VzdG9tRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXHQvKipcblx0ICogRXZlbnQgdG8gc3VnZ2VzdCBhIGJsdXIgb24gdGhlIHZpZXcuXG5cdCAqIEVtaXRzIF9hZnRlcl8gdGhlIGZpcnN0L2xhc3QgaXRlbSBoYXMgYmVlbiBmb2N1c2VkLlxuXHQgKiBleC5cblx0ICogQXJyb3dVcCAtPiBmb2N1cyBmaXJzdCBpdGVtXG5cdCAqIEFycm93VXAgLT4gZW1pdCBldmVudFxuXHQgKlxuXHQgKiBXaGVuIHRoaXMgZXZlbnQgZmlyZXMgZm9jdXMgc2hvdWxkIGJlIHBsYWNlZCBvbiBzb21lIGVsZW1lbnQgb3V0c2lkZSBvZiB0aGUgbGlzdCAtIGJsdXJyaW5nIHRoZSBsaXN0IGFzIGEgcmVzdWx0XG5cdCAqL1xuXHRAT3V0cHV0KCkgYmx1ckludGVudCA9IG5ldyBFdmVudEVtaXR0ZXI8XCJ0b3BcIiB8IFwiYm90dG9tXCI+KCk7XG5cdC8qKlxuXHQgKiBNYWludGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIHZpZXcgRE9NIGVsZW1lbnQgZm9yIHRoZSB1bm9yZGVyZWQgbGlzdCBvZiBpdGVtcyB3aXRoaW4gdGhlIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0QFZpZXdDaGlsZChcImxpc3RcIiwgeyBzdGF0aWM6IHRydWUgfSkgbGlzdDogRWxlbWVudFJlZjtcblx0LyoqXG5cdCAqIERlZmluZXMgd2hldGhlciBvciBub3QgdGhlIGBEcm9wZG93bkxpc3RgIHN1cHBvcnRzIHNlbGVjdGluZyBtdWx0aXBsZSBpdGVtcyBhcyBvcHBvc2VkIHRvIHNpbmdsZVxuXHQgKiBpdGVtIHNlbGVjdGlvbi5cblx0ICovXG5cdEBJbnB1dCgpIHR5cGU6IFwic2luZ2xlXCIgfCBcIm11bHRpXCIgPSBcInNpbmdsZVwiO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHdoZXRoZXIgdG8gc2hvdyB0aXRsZSBhdHRyaWJ1dGUgb3Igbm90XG5cdCAqL1xuXHRASW5wdXQoKSBzaG93VGl0bGVzID0gdHJ1ZTtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcmVuZGVyaW5nIHNpemUgb2YgdGhlIGBEcm9wZG93bkxpc3RgIGlucHV0IGNvbXBvbmVudC5cblx0ICovXG5cdHB1YmxpYyBzaXplOiBcInNtXCIgfCBcIm1kXCIgfCBcImxnXCIgPSBcIm1kXCI7XG5cdHB1YmxpYyBsaXN0SWQgPSBgbGlzdGJveC0ke0Ryb3Bkb3duTGlzdC5saXN0Q291bnQrK31gO1xuXHRwdWJsaWMgaGlnaGxpZ2h0ZWRJdGVtID0gbnVsbDtcblx0LyoqXG5cdCAqIEhvbGRzIHRoZSBsaXN0IG9mIGl0ZW1zIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIGBEcm9wZG93bkxpc3RgLlxuXHQgKiBJdCBkaWZmZXJzIGZyb20gdGhlIHRoZSBjb21wbGV0ZSBzZXQgb2YgaXRlbXMgd2hlbiBmaWx0ZXJpbmcgaXMgdXNlZCAoYnV0XG5cdCAqIGl0IGlzIGFsd2F5cyBhIHN1YnNldCBvZiB0aGUgdG90YWwgaXRlbXMgaW4gYERyb3Bkb3duTGlzdGApLlxuXHQgKi9cblx0cHVibGljIGRpc3BsYXlJdGVtczogQXJyYXk8TGlzdEl0ZW0+ID0gW107XG5cdC8qKlxuXHQgKiBNYWludGFpbnMgdGhlIGluZGV4IGZvciB0aGUgc2VsZWN0ZWQgaXRlbSB3aXRoaW4gdGhlIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0cHJvdGVjdGVkIGluZGV4ID0gLTE7XG5cdC8qKlxuXHQgKiBBbiBhcnJheSBob2xkaW5nIHRoZSBIVE1MIGxpc3QgZWxlbWVudHMgaW4gdGhlIHZpZXcuXG5cdCAqL1xuXHRAVmlld0NoaWxkcmVuKFwibGlzdEl0ZW1cIikgcHJvdGVjdGVkIGxpc3RFbGVtZW50TGlzdDogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXHQvKipcblx0ICogT2JzZXJ2YWJsZSBib3VuZCB0byBrZXlkb3duIGV2ZW50cyB0byBjb250cm9sIGZpbHRlcmluZy5cblx0ICovXG5cdHByb3RlY3RlZCBmb2N1c0p1bXA7XG5cdC8qKlxuXHQgKiBUcmFja3MgdGhlIGN1cnJlbnQgKGlmIGFueSkgc3Vic2NyaXB0aW9uIHRvIHRoZSBpdGVtcyBvYnNlcnZhYmxlIHNvIHdlIGNhbiBjbGVhbiB1cCB3aGVuIHRoZSBpbnB1dCBpcyB1cGRhdGVkLlxuXHQgKi9cblx0cHJvdGVjdGVkIF9pdGVtc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXHQvKipcblx0ICogVXNlZCB0byByZXRhaW4gdGhlIG9yaWdpbmFsIGl0ZW1zIHBhc3NlZCB0byB0aGUgc2V0dGVyLlxuXHQgKi9cblx0cHJvdGVjdGVkIF9vcmlnaW5hbEl0ZW1zOiBBcnJheTxMaXN0SXRlbT4gfCBPYnNlcnZhYmxlPEFycmF5PExpc3RJdGVtPj47XG5cdC8qKlxuXHQgKiBVc2VmdWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGl0ZW1zLCBzaG91bGQgYmUgYWNjZXNzZWQgdmlhIGBnZXRMaXN0SXRlbXNgLlxuXHQgKi9cblx0cHJvdGVjdGVkIF9pdGVtczogQXJyYXk8TGlzdEl0ZW0+ID0gW107XG5cdC8qKlxuXHQgKiBVc2VkIHRvIHdhaXQgZm9yIGl0ZW1zIGluIGNhc2UgdGhleSBhcmUgcGFzc2VkIHRocm91Z2ggYW4gb2JzZXJ2YWJsZS5cblx0ICovXG5cdHByb3RlY3RlZCBfaXRlbXNSZWFkeTogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBgRHJvcGRvd25MaXN0YC5cblx0ICovXG5cdGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgaTE4bjogSTE4biwgcHJvdGVjdGVkIGFwcFJlZjogQXBwbGljYXRpb25SZWYpIHt9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyBhcnJheSBvZiBsaXN0IGl0ZW1zIGFuZCBpbmRleCBvZiB0aGUgc2VsZWN0ZWQgaXRlbSBhZnRlciB2aWV3IGhhcyByZW5kZXJlZC5cblx0ICogQWRkaXRpb25hbGx5LCBhbnkgT2JzZXJ2YWJsZXMgZm9yIHRoZSBgRHJvcGRvd25MaXN0YCBhcmUgaW5pdGlhbGl6ZWQuXG5cdCAqL1xuXHRuZ0FmdGVyVmlld0luaXQoKSB7XG5cdFx0dGhpcy5pbmRleCA9IHRoaXMuZ2V0TGlzdEl0ZW1zKCkuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5zZWxlY3RlZCk7XG5cdFx0dGhpcy5zZXR1cEZvY3VzT2JzZXJ2YWJsZSgpO1xuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0dGhpcy5kb0VtaXRTZWxlY3QodHJ1ZSk7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyBhbnkgT2JzZXJ2YWJsZXMgb24gZGVzdHJ1Y3Rpb24gb2YgdGhlIGNvbXBvbmVudC5cblx0ICovXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdGlmICh0aGlzLmZvY3VzSnVtcCkge1xuXHRcdFx0dGhpcy5mb2N1c0p1bXAudW5zdWJzY3JpYmUoKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuX2l0ZW1zU3Vic2NyaXB0aW9uKSB7XG5cdFx0XHR0aGlzLl9pdGVtc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXHRcdH1cblx0fVxuXG5cdGRvRW1pdFNlbGVjdChpc1VwZGF0ZSA9IHRydWUpIHtcblx0XHRpZiAodGhpcy50eXBlID09PSBcInNpbmdsZVwiKSB7XG5cdFx0XHR0aGlzLnNlbGVjdC5lbWl0KHsgaXRlbTogdGhpcy5faXRlbXMuZmluZChpdGVtID0+IGl0ZW0uc2VsZWN0ZWQpLCBpc1VwZGF0ZTogaXNVcGRhdGUgfSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGFidXNlIGphdmFzY3JpcHRzIG9iamVjdCBtdXRhYmlsaXR5IHVudGlsIHdlIGNhbiBicmVhayB0aGUgQVBJIGFuZCBzd2l0Y2ggdG9cblx0XHRcdC8vIHsgaXRlbXM6IFtdLCBpc1VwZGF0ZTogdHJ1ZSB9XG5cdFx0XHRjb25zdCBzZWxlY3RlZCA9IHRoaXMuZ2V0U2VsZWN0ZWQoKSB8fCBbXTtcblx0XHRcdHNlbGVjdGVkW1wiaXNVcGRhdGVcIl0gPSBpc1VwZGF0ZTtcblx0XHRcdHRoaXMuc2VsZWN0LmVtaXQoc2VsZWN0ZWQpO1xuXHRcdH1cblx0fVxuXG5cdGdldEl0ZW1JZChpbmRleDogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIGAke3RoaXMubGlzdElkfS0ke2luZGV4fWA7XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgZGlzcGxheWVkIGxpc3Qgb2YgaXRlbXMgYW5kIHRoZW4gcmV0cmlldmVzIHRoZSBtb3N0IGN1cnJlbnQgcHJvcGVydGllcyBmb3IgdGhlIGBEcm9wZG93bkxpc3RgIGZyb20gdGhlIERPTS5cblx0ICovXG5cdHVwZGF0ZUxpc3QoaXRlbXMpIHtcblx0XHR0aGlzLl9pdGVtcyA9IGl0ZW1zLm1hcChpdGVtID0+IE9iamVjdC5hc3NpZ24oe30sIGl0ZW0pKTtcblx0XHR0aGlzLmRpc3BsYXlJdGVtcyA9IHRoaXMuX2l0ZW1zO1xuXHRcdHRoaXMudXBkYXRlSW5kZXgoKTtcblx0XHR0aGlzLnNldHVwRm9jdXNPYnNlcnZhYmxlKCk7XG5cdFx0dGhpcy5kb0VtaXRTZWxlY3QoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGaWx0ZXJzIHRoZSBpdGVtcyBiZWluZyBkaXNwbGF5ZWQgaW4gdGhlIERPTSBsaXN0LlxuXHQgKi9cblx0ZmlsdGVyQnkocXVlcnkgPSBcIlwiKSB7XG5cdFx0aWYgKHF1ZXJ5KSB7XG5cdFx0XHR0aGlzLmRpc3BsYXlJdGVtcyA9IHRoaXMuZ2V0TGlzdEl0ZW1zKCkuZmlsdGVyKGl0ZW0gPT4gaXRlbS5jb250ZW50LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkudG9Mb3dlckNhc2UoKSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmRpc3BsYXlJdGVtcyA9IHRoaXMuZ2V0TGlzdEl0ZW1zKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy51cGRhdGVJbmRleCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIChvciByZS1pbml0aWFsaXplcykgdGhlIE9ic2VydmFibGUgdGhhdCBoYW5kbGVzIHN3aXRjaGluZyBmb2N1cyB0byBhbiBlbGVtZW50IGJhc2VkIG9uXG5cdCAqIGtleSBpbnB1dCBtYXRjaGluZyB0aGUgZmlyc3QgbGV0dGVyIG9mIHRoZSBpdGVtIGluIHRoZSBsaXN0LlxuXHQgKi9cblx0c2V0dXBGb2N1c09ic2VydmFibGUoKSB7XG5cdFx0aWYgKCF0aGlzLmxpc3QpIHsgcmV0dXJuOyB9XG5cdFx0aWYgKHRoaXMuZm9jdXNKdW1wKSB7XG5cdFx0XHR0aGlzLmZvY3VzSnVtcC51bnN1YnNjcmliZSgpO1xuXHRcdH1cblx0XHRsZXQgZWxMaXN0ID0gQXJyYXkuZnJvbSh0aGlzLmxpc3QubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwibGlcIikpO1xuXHRcdHRoaXMuZm9jdXNKdW1wID0gd2F0Y2hGb2N1c0p1bXAodGhpcy5saXN0Lm5hdGl2ZUVsZW1lbnQsIGVsTGlzdClcblx0XHRcdC5zdWJzY3JpYmUoZWwgPT4ge1xuXHRcdFx0XHRlbC5mb2N1cygpO1xuXHRcdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgYExpc3RJdGVtYCB0aGF0IGlzIHN1YnNlcXVlbnQgdG8gdGhlIHNlbGVjdGVkIGl0ZW0gaW4gdGhlIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0Z2V0TmV4dEl0ZW0oKTogTGlzdEl0ZW0ge1xuXHRcdGlmICh0aGlzLmluZGV4IDwgdGhpcy5kaXNwbGF5SXRlbXMubGVuZ3RoIC0gMSkge1xuXHRcdFx0dGhpcy5pbmRleCsrO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5kaXNwbGF5SXRlbXNbdGhpcy5pbmRleF07XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHNlbGVjdGVkIGl0ZW0gaXMgbm90IHRoZSBsYXN0IGl0ZW0gaW4gdGhlIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0aGFzTmV4dEVsZW1lbnQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuaW5kZXggPCB0aGlzLmRpc3BsYXlJdGVtcy5sZW5ndGggLSAxICYmXG5cdFx0XHQoISh0aGlzLmluZGV4ID09PSB0aGlzLmRpc3BsYXlJdGVtcy5sZW5ndGggLSAyKSB8fCAhdGhpcy5kaXNwbGF5SXRlbXNbdGhpcy5pbmRleCArIDFdLmRpc2FibGVkKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBgSFRNTEVsZW1lbnRgIGZvciB0aGUgaXRlbSB0aGF0IGlzIHN1YnNlcXVlbnQgdG8gdGhlIHNlbGVjdGVkIGl0ZW0uXG5cdCAqL1xuXHRnZXROZXh0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG5cdFx0aWYgKHRoaXMuaW5kZXggPCB0aGlzLmRpc3BsYXlJdGVtcy5sZW5ndGggLSAxKSB7XG5cdFx0XHR0aGlzLmluZGV4Kys7XG5cdFx0fVxuXHRcdGxldCBpdGVtID0gdGhpcy5kaXNwbGF5SXRlbXNbdGhpcy5pbmRleF07XG5cdFx0aWYgKGl0ZW0uZGlzYWJsZWQpIHtcblx0XHRcdHJldHVybiB0aGlzLmdldE5leHRFbGVtZW50KCk7XG5cdFx0fVxuXG5cdFx0bGV0IGVsZW1MaXN0ID0gdGhpcy5saXN0RWxlbWVudExpc3QgPyB0aGlzLmxpc3RFbGVtZW50TGlzdC50b0FycmF5KCkgOiBbXTtcblxuXHRcdC8vIFRPRE86IHVwZGF0ZSB0byBvcHRpb25hbCBjaGFpbmluZyBhZnRlciB1cGdyYWRpbmcgdHlwZXNjcmlwdFxuXHRcdC8vIHRvIHYzLjcrXG5cdFx0aWYgKGVsZW1MaXN0W3RoaXMuaW5kZXhdICYmIGVsZW1MaXN0W3RoaXMuaW5kZXhdLm5hdGl2ZUVsZW1lbnQpIHtcblx0XHRcdHJldHVybiBlbGVtTGlzdFt0aGlzLmluZGV4XS5uYXRpdmVFbGVtZW50O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgYExpc3RJdGVtYCB0aGF0IHByZWNlZGVzIHRoZSBzZWxlY3RlZCBpdGVtIHdpdGhpbiBgRHJvcGRvd25MaXN0YC5cblx0ICovXG5cdGdldFByZXZJdGVtKCk6IExpc3RJdGVtIHtcblx0XHRpZiAodGhpcy5pbmRleCA+IDApIHtcblx0XHRcdHRoaXMuaW5kZXgtLTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZGlzcGxheUl0ZW1zW3RoaXMuaW5kZXhdO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYHRydWVgIGlmIHRoZSBzZWxlY3RlZCBpdGVtIGlzIG5vdCB0aGUgZmlyc3QgaW4gdGhlIGxpc3QuXG5cdCAqL1xuXHRoYXNQcmV2RWxlbWVudCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5pbmRleCA+IDAgJiYgKCEodGhpcy5pbmRleCA9PT0gMSkgfHwgIXRoaXMuZGlzcGxheUl0ZW1zWzBdLmRpc2FibGVkKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBgSFRNTEVsZW1lbnRgIGZvciB0aGUgaXRlbSB0aGF0IHByZWNlZGVzIHRoZSBzZWxlY3RlZCBpdGVtLlxuXHQgKi9cblx0Z2V0UHJldkVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuXHRcdGlmICh0aGlzLmluZGV4ID4gMCkge1xuXHRcdFx0dGhpcy5pbmRleC0tO1xuXHRcdH1cblx0XHRsZXQgaXRlbSA9IHRoaXMuZGlzcGxheUl0ZW1zW3RoaXMuaW5kZXhdO1xuXHRcdGlmIChpdGVtLmRpc2FibGVkKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRQcmV2RWxlbWVudCgpO1xuXHRcdH1cblxuXHRcdGxldCBlbGVtTGlzdCA9IHRoaXMubGlzdEVsZW1lbnRMaXN0ID8gdGhpcy5saXN0RWxlbWVudExpc3QudG9BcnJheSgpIDogW107XG5cblx0XHQvLyBUT0RPOiB1cGRhdGUgdG8gb3B0aW9uYWwgY2hhaW5pbmcgYWZ0ZXIgdXBncmFkaW5nIHR5cGVzY3JpcHRcblx0XHQvLyB0byB2My43K1xuXHRcdGlmIChlbGVtTGlzdFt0aGlzLmluZGV4XSAmJiBlbGVtTGlzdFt0aGlzLmluZGV4XS5uYXRpdmVFbGVtZW50KSB7XG5cdFx0XHRyZXR1cm4gZWxlbUxpc3RbdGhpcy5pbmRleF0ubmF0aXZlRWxlbWVudDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGBMaXN0SXRlbWAgdGhhdCBpcyBzZWxlY3RlZCB3aXRoaW4gYERyb3Bkb3duTGlzdGAuXG5cdCAqL1xuXHRnZXRDdXJyZW50SXRlbSgpOiBMaXN0SXRlbSB7XG5cdFx0aWYgKHRoaXMuaW5kZXggPCAwKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5kaXNwbGF5SXRlbXNbMF07XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmRpc3BsYXlJdGVtc1t0aGlzLmluZGV4XTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBgSFRNTEVsZW1lbnRgIGZvciB0aGUgaXRlbSB0aGF0IGlzIHNlbGVjdGVkIHdpdGhpbiB0aGUgYERyb3Bkb3duTGlzdGAuXG5cdCAqL1xuXHRnZXRDdXJyZW50RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG5cdFx0aWYgKHRoaXMuaW5kZXggPCAwKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5saXN0RWxlbWVudExpc3QuZmlyc3QubmF0aXZlRWxlbWVudDtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMubGlzdEVsZW1lbnRMaXN0LnRvQXJyYXkoKVt0aGlzLmluZGV4XS5uYXRpdmVFbGVtZW50O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGl0ZW1zIGFzIGFuIEFycmF5XG5cdCAqL1xuXHRnZXRMaXN0SXRlbXMoKTogQXJyYXk8TGlzdEl0ZW0+IHtcblx0XHRyZXR1cm4gdGhpcy5faXRlbXM7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBhIGxpc3QgY29udGFpbmluZyB0aGUgc2VsZWN0ZWQgaXRlbShzKSBpbiB0aGUgYERyb3Bkb3duTGlzdGAuXG5cdCAqL1xuXHRnZXRTZWxlY3RlZCgpOiBMaXN0SXRlbVtdIHtcblx0XHRsZXQgc2VsZWN0ZWQgPSB0aGlzLmdldExpc3RJdGVtcygpLmZpbHRlcihpdGVtID0+IGl0ZW0uc2VsZWN0ZWQpO1xuXHRcdGlmIChzZWxlY3RlZC5sZW5ndGggPT09IDApIHtcblx0XHRcdHJldHVybiBbXTtcblx0XHR9XG5cdFx0cmV0dXJuIHNlbGVjdGVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRyYW5zZm9ybXMgYXJyYXkgaW5wdXQgbGlzdCBvZiBpdGVtcyB0byB0aGUgY29ycmVjdCBzdGF0ZSBieSB1cGRhdGluZyB0aGUgc2VsZWN0ZWQgaXRlbShzKS5cblx0ICovXG5cdHByb3BhZ2F0ZVNlbGVjdGVkKHZhbHVlOiBBcnJheTxMaXN0SXRlbT4pOiB2b2lkIHtcblx0XHQvLyBpZiB3ZSBnZXQgYSBub24tYXJyYXksIGxvZyBvdXQgYW4gZXJyb3IgKHNpbmNlIGl0IGlzIG9uZSlcblx0XHRpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX0ucHJvcGFnYXRlU2VsZWN0ZWQgZXhwZWN0cyBhbiBBcnJheTxMaXN0SXRlbT4sIGdvdCAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gKTtcblx0XHR9XG5cdFx0dGhpcy5vbkl0ZW1zUmVhZHkoKCkgPT4ge1xuXHRcdFx0Ly8gbG9vcCB0aHJvdWdoIHRoZSBsaXN0IGl0ZW1zIGFuZCB1cGRhdGUgdGhlIGBzZWxlY3RlZGAgc3RhdGUgZm9yIG1hdGNoaW5nIGl0ZW1zIGluIGB2YWx1ZWBcblx0XHRcdGZvciAobGV0IG9sZEl0ZW0gb2YgdGhpcy5nZXRMaXN0SXRlbXMoKSkge1xuXHRcdFx0XHQvLyBjb3B5IHRoZSBpdGVtXG5cdFx0XHRcdGxldCB0ZW1wT2xkSXRlbTogc3RyaW5nIHwgTGlzdEl0ZW0gPSBPYmplY3QuYXNzaWduKHt9LCBvbGRJdGVtKTtcblx0XHRcdFx0Ly8gZGVsZXRlZCBzZWxlY3RlZCBiZWNhdXNlIGl0J3Mgd2hhdCB3ZSBfd2FudF8gdG8gY2hhbmdlXG5cdFx0XHRcdGRlbGV0ZSB0ZW1wT2xkSXRlbS5zZWxlY3RlZDtcblx0XHRcdFx0Ly8gc3RyaW5naWZ5IGZvciBjb21wYXJlXG5cdFx0XHRcdHRlbXBPbGRJdGVtID0gSlNPTi5zdHJpbmdpZnkodGVtcE9sZEl0ZW0pO1xuXHRcdFx0XHRmb3IgKGxldCBuZXdJdGVtIG9mIHZhbHVlKSB7XG5cdFx0XHRcdFx0Ly8gY29weSB0aGUgaXRlbVxuXHRcdFx0XHRcdGxldCB0ZW1wTmV3SXRlbTogc3RyaW5nIHwgTGlzdEl0ZW0gPSBPYmplY3QuYXNzaWduKHt9LCBuZXdJdGVtKTtcblx0XHRcdFx0XHQvLyBkZWxldGVkIHNlbGVjdGVkIGJlY2F1c2UgaXQncyB3aGF0IHdlIF93YW50XyB0byBjaGFuZ2Vcblx0XHRcdFx0XHRkZWxldGUgdGVtcE5ld0l0ZW0uc2VsZWN0ZWQ7XG5cdFx0XHRcdFx0Ly8gc3RyaW5naWZ5IGZvciBjb21wYXJlXG5cdFx0XHRcdFx0dGVtcE5ld0l0ZW0gPSBKU09OLnN0cmluZ2lmeSh0ZW1wTmV3SXRlbSk7XG5cdFx0XHRcdFx0Ly8gZG8gdGhlIGNvbXBhcmVcblx0XHRcdFx0XHRpZiAodGVtcE9sZEl0ZW0uaW5jbHVkZXModGVtcE5ld0l0ZW0pKSB7XG5cdFx0XHRcdFx0XHRvbGRJdGVtLnNlbGVjdGVkID0gbmV3SXRlbS5zZWxlY3RlZDtcblx0XHRcdFx0XHRcdC8vIGlmIHdlJ3ZlIGZvdW5kIGEgbWF0Y2hpbmcgaXRlbSwgd2UgY2FuIHN0b3AgbG9vcGluZ1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG9sZEl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyBmb2N1cyBpbiB0aGUgbGlzdCwgZWZmZWN0aXZlbHkgYSB3cmFwcGVyIGZvciBgZ2V0Q3VycmVudEVsZW1lbnQoKS5mb2N1cygpYFxuXHQgKi9cblx0aW5pdEZvY3VzKCkge1xuXHRcdGlmICh0aGlzLmluZGV4IDwgMCkge1xuXHRcdFx0dGhpcy51cGRhdGVJbmRleCgpO1xuXHRcdH1cblxuXHRcdHRoaXMubGlzdC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLmhpZ2hsaWdodGVkSXRlbSA9IHRoaXMuZ2V0SXRlbUlkKHRoaXMuaW5kZXgpO1xuXHRcdH0pO1xuXHR9XG5cblx0dXBkYXRlSW5kZXgoKSB7XG5cdFx0Ly8gaW5pdGlhbGl6ZSBpbmRleCBvbiB0aGUgZmlyc3Qgc2VsZWN0ZWQgaXRlbSBvclxuXHRcdC8vIG9uIHRoZSBuZXh0IG5vbiBkaXNhYmxlZCBpdGVtIGlmIG5vIGl0ZW1zIGFyZSBzZWxlY3RlZFxuXHRcdGNvbnN0IHNlbGVjdGVkID0gdGhpcy5nZXRTZWxlY3RlZCgpO1xuXHRcdGlmIChzZWxlY3RlZC5sZW5ndGgpIHtcblx0XHRcdHRoaXMuaW5kZXggPSB0aGlzLmRpc3BsYXlJdGVtcy5pbmRleE9mKHNlbGVjdGVkWzBdKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuaGFzTmV4dEVsZW1lbnQoKSkge1xuXHRcdFx0dGhpcy5nZXROZXh0RWxlbWVudCgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBNYW5hZ2VzIHRoZSBrZXlib2FyZCBhY2Nlc3NpYmlsaXR5IGZvciBuYXZpZ2F0aW9uIGFuZCBzZWxlY3Rpb24gd2l0aGluIGEgYERyb3Bkb3duTGlzdGAuXG5cdCAqL1xuXHRuYXZpZ2F0ZUxpc3QoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcblx0XHRpZiAoZXZlbnQua2V5ID09PSBcIkVudGVyXCIgfHwgZXZlbnQua2V5ID09PSBcIiBcIikge1xuXHRcdFx0aWYgKHRoaXMubGlzdEVsZW1lbnRMaXN0LnNvbWUob3B0aW9uID0+IG9wdGlvbi5uYXRpdmVFbGVtZW50ID09PSBldmVudC50YXJnZXQpKSB7XG5cdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZXZlbnQua2V5ID09PSBcIkVudGVyXCIpIHtcblx0XHRcdFx0dGhpcy5kb0NsaWNrKGV2ZW50LCB0aGlzLmdldEN1cnJlbnRJdGVtKCkpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93RG93blwiIHx8IGV2ZW50LmtleSA9PT0gXCJBcnJvd1VwXCIpIHtcblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRpZiAoZXZlbnQua2V5ID09PSBcIkFycm93RG93blwiKSB7XG5cdFx0XHRcdGlmICh0aGlzLmhhc05leHRFbGVtZW50KCkpIHtcblx0XHRcdFx0XHR0aGlzLmdldE5leHRFbGVtZW50KCkuc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiBcImVuZFwifSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5ibHVySW50ZW50LmVtaXQoXCJib3R0b21cIik7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93VXBcIikge1xuXHRcdFx0XHRpZiAodGhpcy5oYXNQcmV2RWxlbWVudCgpKSB7XG5cdFx0XHRcdFx0dGhpcy5nZXRQcmV2RWxlbWVudCgpLnNjcm9sbEludG9WaWV3KCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5ibHVySW50ZW50LmVtaXQoXCJ0b3BcIik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmhpZ2hsaWdodGVkSXRlbSA9IHRoaXMuZ2V0SXRlbUlkKHRoaXMuaW5kZXgpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEVtaXRzIHRoZSBzZWxlY3RlZCBpdGVtIG9yIGl0ZW1zIGFmdGVyIGEgbW91c2UgY2xpY2sgZXZlbnQgaGFzIG9jY3VycmVkLlxuXHQgKi9cblx0ZG9DbGljayhldmVudCwgaXRlbSkge1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0aWYgKCFpdGVtLmRpc2FibGVkKSB7XG5cdFx0XHR0aGlzLmxpc3QubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXHRcdFx0aWYgKHRoaXMudHlwZSA9PT0gXCJzaW5nbGVcIikge1xuXHRcdFx0XHRpdGVtLnNlbGVjdGVkID0gdHJ1ZTtcblx0XHRcdFx0Ly8gcmVzZXQgdGhlIHNlbGVjdGlvblxuXHRcdFx0XHRmb3IgKGxldCBvdGhlckl0ZW0gb2YgdGhpcy5nZXRMaXN0SXRlbXMoKSkge1xuXHRcdFx0XHRcdGlmIChpdGVtICE9PSBvdGhlckl0ZW0pIHsgb3RoZXJJdGVtLnNlbGVjdGVkID0gZmFsc2U7IH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aXRlbS5zZWxlY3RlZCA9ICFpdGVtLnNlbGVjdGVkO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5pbmRleCA9IHRoaXMuZGlzcGxheUl0ZW1zLmluZGV4T2YoaXRlbSk7XG5cdFx0XHR0aGlzLmhpZ2hsaWdodGVkSXRlbSA9IHRoaXMuZ2V0SXRlbUlkKHRoaXMuaW5kZXgpO1xuXHRcdFx0dGhpcy5kb0VtaXRTZWxlY3QoZmFsc2UpO1xuXHRcdFx0dGhpcy5hcHBSZWYudGljaygpO1xuXHRcdH1cblx0fVxuXG5cdG9uSXRlbUZvY3VzKGluZGV4KSB7XG5cdFx0Y29uc3QgZWxlbWVudCA9IHRoaXMubGlzdEVsZW1lbnRMaXN0LnRvQXJyYXkoKVtpbmRleF0ubmF0aXZlRWxlbWVudDtcblx0XHRlbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJjZHMtLWxpc3QtYm94X19tZW51LWl0ZW0tLWhpZ2hsaWdodGVkXCIpO1xuXHRcdGVsZW1lbnQudGFiSW5kZXggPSAwO1xuXHR9XG5cblx0b25JdGVtQmx1cihpbmRleCkge1xuXHRcdGNvbnN0IGVsZW1lbnQgPSB0aGlzLmxpc3RFbGVtZW50TGlzdC50b0FycmF5KClbaW5kZXhdLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwiY2RzLS1saXN0LWJveF9fbWVudS1pdGVtLS1oaWdobGlnaHRlZFwiKTtcblx0XHRlbGVtZW50LnRhYkluZGV4ID0gLTE7XG5cdH1cblxuXHQvKipcblx0ICogRW1pdHMgdGhlIHNjcm9sbCBldmVudCBvZiB0aGUgb3B0aW9ucyBsaXN0XG5cdCAqL1xuXHRlbWl0U2Nyb2xsKGV2ZW50KSB7XG5cdFx0Y29uc3QgYXRUb3A6IGJvb2xlYW4gPSBldmVudC5zcmNFbGVtZW50LnNjcm9sbFRvcCA9PT0gMDtcblx0XHRjb25zdCBhdEJvdHRvbTogYm9vbGVhbiA9IGV2ZW50LnNyY0VsZW1lbnQuc2Nyb2xsSGVpZ2h0IC0gZXZlbnQuc3JjRWxlbWVudC5zY3JvbGxUb3AgPT09IGV2ZW50LnNyY0VsZW1lbnQuY2xpZW50SGVpZ2h0O1xuXHRcdGNvbnN0IGN1c3RvbVNjcm9sbEV2ZW50ID0geyBhdFRvcCwgYXRCb3R0b20sIGV2ZW50IH07XG5cdFx0dGhpcy5zY3JvbGwuZW1pdChjdXN0b21TY3JvbGxFdmVudCk7XG5cdH1cblxuXHQvKipcblx0ICogU3Vic2NyaWJlIHRoZSBmdW5jdGlvbiBwYXNzZWQgdG8gYW4gaW50ZXJuYWwgb2JzZXJ2YWJsZSB0aGF0IHdpbGwgcmVzb2x2ZSBvbmNlIHRoZSBpdGVtcyBhcmUgcmVhZHlcblx0ICovXG5cdG9uSXRlbXNSZWFkeShzdWJjcmlwdGlvbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuXHRcdC8vIHRoaXMgc3Vic2NyaXB0aW9uIHdpbGwgYXV0byB1bnN1YnNjcmliZSBiZWNhdXNlIG9mIHRoZSBgZmlyc3QoKWAgcGlwZVxuXHRcdCh0aGlzLl9pdGVtc1JlYWR5IHx8IG9mKHRydWUpKS5waXBlKGZpcnN0KCkpLnN1YnNjcmliZShzdWJjcmlwdGlvbik7XG5cdH1cblxuXHRyZW9yZGVyU2VsZWN0ZWQobW92ZUZvY3VzID0gdHJ1ZSk6IHZvaWQge1xuXHRcdHRoaXMuZGlzcGxheUl0ZW1zID0gWy4uLnRoaXMuZ2V0U2VsZWN0ZWQoKSwgLi4udGhpcy5nZXRMaXN0SXRlbXMoKS5maWx0ZXIoaXRlbSA9PiAhaXRlbS5zZWxlY3RlZCldO1xuXHRcdGlmIChtb3ZlRm9jdXMpIHtcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLnVwZGF0ZUluZGV4KCk7XG5cdFx0XHRcdHRoaXMuaGlnaGxpZ2h0ZWRJdGVtID0gdGhpcy5nZXRJdGVtSWQodGhpcy5pbmRleCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cbn1cbiJdfQ==
628
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZHJvcGRvd24vbGlzdC9kcm9wZG93bi1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBRU4sWUFBWSxFQUdaLFNBQVMsRUFFVCxZQUFZLEVBR1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQWdCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7OztBQUlsRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBcUVILE1BQU0sT0FBTyxZQUFZO0lBMEd4Qjs7T0FFRztJQUNILFlBQW1CLFVBQXNCLEVBQVksSUFBVSxFQUFZLE1BQXNCO1FBQTlFLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBWSxTQUFJLEdBQUosSUFBSSxDQUFNO1FBQVksV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUEzR3hGLGNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUEwQnpEOztXQUVHO1FBQ00sWUFBTyxHQUE4QixJQUFJLENBQUM7UUFDbkQ7O1dBRUc7UUFDTyxXQUFNLEdBQXNFLElBQUksWUFBWSxFQUFFLENBQUM7UUFDekc7O1dBRUc7UUFDTyxXQUFNLEdBQW9DLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkU7Ozs7Ozs7O1dBUUc7UUFDTyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFLNUQ7OztX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S0csVUFBVTtzQkFBbEIsS0FBSztnQkFxQjhCLGVBQWU7c0JBQWxELFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENvbXBvbmVudCxcblx0SW5wdXQsXG5cdE91dHB1dCxcblx0T25EZXN0cm95LFxuXHRFdmVudEVtaXR0ZXIsXG5cdFRlbXBsYXRlUmVmLFxuXHRBZnRlclZpZXdJbml0LFxuXHRWaWV3Q2hpbGQsXG5cdEVsZW1lbnRSZWYsXG5cdFZpZXdDaGlsZHJlbixcblx0UXVlcnlMaXN0LFxuXHRBcHBsaWNhdGlvblJlZlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgaXNPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIG9mIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5cbmltcG9ydCB7IEkxOG4gfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9pMThuXCI7XG5pbXBvcnQgeyBBYnN0cmFjdERyb3Bkb3duVmlldyB9IGZyb20gXCIuLi9hYnN0cmFjdC1kcm9wZG93bi12aWV3LmNsYXNzXCI7XG5pbXBvcnQgeyBMaXN0SXRlbSB9IGZyb20gXCIuLi9saXN0LWl0ZW0uaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyB3YXRjaEZvY3VzSnVtcCB9IGZyb20gXCIuLi9kcm9wZG93bnRvb2xzXCI7XG5pbXBvcnQgeyBTY3JvbGxDdXN0b21FdmVudCB9IGZyb20gXCIuL3Njcm9sbC1jdXN0b20tZXZlbnQuaW50ZXJmYWNlXCI7XG5cblxuLyoqXG4gKiBgYGBodG1sXG4gKiA8Y2RzLWRyb3Bkb3duLWxpc3QgW2l0ZW1zXT1cImxpc3RJdGVtc1wiPjwvY2RzLWRyb3Bkb3duLWxpc3Q+XG4gKiBgYGBcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGxpc3RJdGVtcyA9IFtcbiAqIFx0e1xuICogXHRcdGNvbnRlbnQ6IFwiaXRlbSBvbmVcIixcbiAqIFx0XHRzZWxlY3RlZDogZmFsc2VcbiAqIFx0fSxcbiAqIFx0e1xuICogXHRcdGNvbnRlbnQ6IFwiaXRlbSB0d29cIixcbiAqIFx0XHRzZWxlY3RlZDogZmFsc2UsXG4gKiBcdH0sXG4gKiBcdHtcbiAqIFx0XHRjb250ZW50OiBcIml0ZW0gdGhyZWVcIixcbiAqIFx0XHRzZWxlY3RlZDogZmFsc2VcbiAqIFx0fSxcbiAqIFx0e1xuICogXHRcdGNvbnRlbnQ6IFwiaXRlbSBmb3VyXCIsXG4gKiBcdFx0c2VsZWN0ZWQ6IGZhbHNlXG4gKiBcdH1cbiAqIF07XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImNkcy1kcm9wZG93bi1saXN0LCBpYm0tZHJvcGRvd24tbGlzdFwiLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDx1bFxuXHRcdFx0I2xpc3Rcblx0XHRcdFtpZF09XCJsaXN0SWRcIlxuXHRcdFx0cm9sZT1cImxpc3Rib3hcIlxuXHRcdFx0Y2xhc3M9XCJjZHMtLWxpc3QtYm94X19tZW51IGNkcy0tbXVsdGktc2VsZWN0XCJcblx0XHRcdChzY3JvbGwpPVwiZW1pdFNjcm9sbCgkZXZlbnQpXCJcblx0XHRcdChrZXlkb3duKT1cIm5hdmlnYXRlTGlzdCgkZXZlbnQpXCJcblx0XHRcdHRhYmluZGV4PVwiLTFcIlxuXHRcdFx0W2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuXHRcdFx0W2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImhpZ2hsaWdodGVkSXRlbVwiPlxuXHRcdFx0PGxpXG5cdFx0XHRcdHJvbGU9XCJvcHRpb25cIlxuXHRcdFx0XHQqbmdGb3I9XCJsZXQgaXRlbSBvZiBkaXNwbGF5SXRlbXM7IGxldCBpID0gaW5kZXhcIlxuXHRcdFx0XHQoY2xpY2spPVwiZG9DbGljaygkZXZlbnQsIGl0ZW0pXCJcblx0XHRcdFx0Y2xhc3M9XCJjZHMtLWxpc3QtYm94X19tZW51LWl0ZW1cIlxuXHRcdFx0XHRbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIml0ZW0uc2VsZWN0ZWRcIlxuXHRcdFx0XHRbaWRdPVwiZ2V0SXRlbUlkKGkpXCJcblx0XHRcdFx0W2F0dHIudGl0bGVdPVwiIHNob3dUaXRsZXMgPyBpdGVtLmNvbnRlbnQgOiBudWxsXCJcblx0XHRcdFx0W2F0dHIuZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZCA/IHRydWUgOiBudWxsXCJcblx0XHRcdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0XHRcdCdjZHMtLWxpc3QtYm94X19tZW51LWl0ZW0tLWFjdGl2ZSc6IGl0ZW0uc2VsZWN0ZWQsXG5cdFx0XHRcdFx0J2Nkcy0tbGlzdC1ib3hfX21lbnUtaXRlbS0taGlnaGxpZ2h0ZWQnOiBoaWdobGlnaHRlZEl0ZW0gPT09IGdldEl0ZW1JZChpKVxuXHRcdFx0XHR9XCI+XG5cdFx0XHRcdDxkaXZcblx0XHRcdFx0XHQjbGlzdEl0ZW1cblx0XHRcdFx0XHR0YWJpbmRleD1cIi0xXCJcblx0XHRcdFx0XHRjbGFzcz1cImNkcy0tbGlzdC1ib3hfX21lbnUtaXRlbV9fb3B0aW9uXCI+XG5cdFx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdFx0Km5nSWY9XCIhbGlzdFRwbCAmJiB0eXBlID09PSAnbXVsdGknXCJcblx0XHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1mb3JtLWl0ZW0gY2RzLS1jaGVja2JveC13cmFwcGVyXCI+XG5cdFx0XHRcdFx0XHQ8bGFiZWxcblx0XHRcdFx0XHRcdFx0W2F0dHIuZGF0YS1jb250YWluZWQtY2hlY2tib3gtc3RhdGVdPVwiaXRlbS5zZWxlY3RlZFwiXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1jaGVja2JveC1sYWJlbFwiPlxuXHRcdFx0XHRcdFx0XHQ8aW5wdXRcblx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cImNkcy0tY2hlY2tib3hcIlxuXHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJjaGVja2JveFwiXG5cdFx0XHRcdFx0XHRcdFx0W2NoZWNrZWRdPVwiaXRlbS5zZWxlY3RlZFwiXG5cdFx0XHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuXHRcdFx0XHRcdFx0XHRcdHRhYmluZGV4PVwiLTFcIj5cblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJjZHMtLWNoZWNrYm94LWFwcGVhcmFuY2VcIj48L3NwYW4+XG5cdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiY2RzLS1jaGVja2JveC1sYWJlbC10ZXh0XCI+e3tpdGVtLmNvbnRlbnR9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdDwvbGFiZWw+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsaXN0VHBsICYmIHR5cGUgPT09ICdzaW5nbGUnXCI+e3tpdGVtLmNvbnRlbnR9fTwvbmctY29udGFpbmVyPlxuXHRcdFx0XHRcdDxzdmdcblx0XHRcdFx0XHRcdCpuZ0lmPVwiIWxpc3RUcGwgJiYgdHlwZSA9PT0gJ3NpbmdsZSdcIlxuXHRcdFx0XHRcdFx0Y2RzSWNvbj1cImNoZWNrbWFya1wiXG5cdFx0XHRcdFx0XHRzaXplPVwiMTZcIlxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLWxpc3QtYm94X19tZW51LWl0ZW1fX3NlbGVjdGVkLWljb25cIj5cblx0XHRcdFx0XHQ8L3N2Zz5cblx0XHRcdFx0XHQ8bmctdGVtcGxhdGVcblx0XHRcdFx0XHRcdCpuZ0lmPVwibGlzdFRwbFwiXG5cdFx0XHRcdFx0XHRbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW06IGl0ZW19XCJcblx0XHRcdFx0XHRcdFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RUcGxcIj5cblx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvbGk+XG5cdFx0PC91bD5gLFxuXHRwcm92aWRlcnM6IFtcblx0XHR7XG5cdFx0XHRwcm92aWRlOiBBYnN0cmFjdERyb3Bkb3duVmlldyxcblx0XHRcdHVzZUV4aXN0aW5nOiBEcm9wZG93bkxpc3Rcblx0XHR9XG5cdF1cbn0pXG5leHBvcnQgY2xhc3MgRHJvcGRvd25MaXN0IGltcGxlbWVudHMgQWJzdHJhY3REcm9wZG93blZpZXcsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cdHN0YXRpYyBsaXN0Q291bnQgPSAwO1xuXHRASW5wdXQoKSBhcmlhTGFiZWwgPSB0aGlzLmkxOG4uZ2V0KCkuRFJPUERPV05fTElTVC5MQUJFTDtcblx0LyoqXG5cdCAqIFRoZSBsaXN0IGl0ZW1zIGJlbG9uZ2luZyB0byB0aGUgYERyb3Bkb3duTGlzdGAuXG5cdCAqL1xuXHRASW5wdXQoKSBzZXQgaXRlbXModmFsdWU6IEFycmF5PExpc3RJdGVtPiB8IE9ic2VydmFibGU8QXJyYXk8TGlzdEl0ZW0+Pikge1xuXHRcdGlmIChpc09ic2VydmFibGUodmFsdWUpKSB7XG5cdFx0XHRpZiAodGhpcy5faXRlbXNTdWJzY3JpcHRpb24pIHtcblx0XHRcdFx0dGhpcy5faXRlbXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuX2l0ZW1zUmVhZHkgPSBuZXcgT2JzZXJ2YWJsZTxib29sZWFuPigob2JzZXJ2ZXIpID0+IHtcblx0XHRcdFx0dGhpcy5faXRlbXNTdWJzY3JpcHRpb24gPSB2YWx1ZS5zdWJzY3JpYmUodiA9PiB7XG5cdFx0XHRcdFx0dGhpcy51cGRhdGVMaXN0KHYpO1xuXHRcdFx0XHRcdG9ic2VydmVyLm5leHQodHJ1ZSk7XG5cdFx0XHRcdFx0b2JzZXJ2ZXIuY29tcGxldGUoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRcdHRoaXMub25JdGVtc1JlYWR5KG51bGwpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnVwZGF0ZUxpc3QodmFsdWUpO1xuXHRcdH1cblx0XHR0aGlzLl9vcmlnaW5hbEl0ZW1zID0gdmFsdWU7XG5cdH1cblxuXHRnZXQgaXRlbXMoKTogQXJyYXk8TGlzdEl0ZW0+IHwgT2JzZXJ2YWJsZTxBcnJheTxMaXN0SXRlbT4+IHtcblx0XHRyZXR1cm4gdGhpcy5fb3JpZ2luYWxJdGVtcztcblx0fVxuXHQvKipcblx0ICogVGVtcGxhdGUgdG8gYmluZCB0byBpdGVtcyBpbiB0aGUgYERyb3Bkb3duTGlzdGAgKG9wdGlvbmFsKS5cblx0ICovXG5cdEBJbnB1dCgpIGxpc3RUcGw6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xuXHQvKipcblx0ICogRXZlbnQgdG8gZW1pdCBzZWxlY3Rpb24gb2YgYSBsaXN0IGl0ZW0gd2l0aGluIHRoZSBgRHJvcGRvd25MaXN0YC5cblx0ICovXG5cdEBPdXRwdXQoKSBzZWxlY3Q6IEV2ZW50RW1pdHRlcjx7IGl0ZW06IExpc3RJdGVtLCBpc1VwZGF0ZT86IGJvb2xlYW4gfSB8IExpc3RJdGVtW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXHQvKipcblx0ICogRXZlbnQgdG8gZW1pdCBzY3JvbGwgZXZlbnQgb2YgYSBsaXN0IHdpdGhpbiB0aGUgYERyb3Bkb3duTGlzdGAuXG5cdCAqL1xuXHRAT3V0cHV0KCkgc2Nyb2xsOiBFdmVudEVtaXR0ZXI8U2Nyb2xsQ3VzdG9tRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXHQvKipcblx0ICogRXZlbnQgdG8gc3VnZ2VzdCBhIGJsdXIgb24gdGhlIHZpZXcuXG5cdCAqIEVtaXRzIF9hZnRlcl8gdGhlIGZpcnN0L2xhc3QgaXRlbSBoYXMgYmVlbiBmb2N1c2VkLlxuXHQgKiBleC5cblx0ICogQXJyb3dVcCAtPiBmb2N1cyBmaXJzdCBpdGVtXG5cdCAqIEFycm93VXAgLT4gZW1pdCBldmVudFxuXHQgKlxuXHQgKiBXaGVuIHRoaXMgZXZlbnQgZmlyZXMgZm9jdXMgc2hvdWxkIGJlIHBsYWNlZCBvbiBzb21lIGVsZW1lbnQgb3V0c2lkZSBvZiB0aGUgbGlzdCAtIGJsdXJyaW5nIHRoZSBsaXN0IGFzIGEgcmVzdWx0XG5cdCAqL1xuXHRAT3V0cHV0KCkgYmx1ckludGVudCA9IG5ldyBFdmVudEVtaXR0ZXI8XCJ0b3BcIiB8IFwiYm90dG9tXCI+KCk7XG5cdC8qKlxuXHQgKiBNYWludGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIHZpZXcgRE9NIGVsZW1lbnQgZm9yIHRoZSB1bm9yZGVyZWQgbGlzdCBvZiBpdGVtcyB3aXRoaW4gdGhlIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0QFZpZXdDaGlsZChcImxpc3RcIiwgeyBzdGF0aWM6IHRydWUgfSkgbGlzdDogRWxlbWVudFJlZjtcblx0LyoqXG5cdCAqIERlZmluZXMgd2hldGhlciBvciBub3QgdGhlIGBEcm9wZG93bkxpc3RgIHN1cHBvcnRzIHNlbGVjdGluZyBtdWx0aXBsZSBpdGVtcyBhcyBvcHBvc2VkIHRvIHNpbmdsZVxuXHQgKiBpdGVtIHNlbGVjdGlvbi5cblx0ICovXG5cdEBJbnB1dCgpIHR5cGU6IFwic2luZ2xlXCIgfCBcIm11bHRpXCIgPSBcInNpbmdsZVwiO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHdoZXRoZXIgdG8gc2hvdyB0aXRsZSBhdHRyaWJ1dGUgb3Igbm90XG5cdCAqL1xuXHRASW5wdXQoKSBzaG93VGl0bGVzID0gdHJ1ZTtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcmVuZGVyaW5nIHNpemUgb2YgdGhlIGBEcm9wZG93bkxpc3RgIGlucHV0IGNvbXBvbmVudC5cblx0ICovXG5cdHB1YmxpYyBzaXplOiBcInNtXCIgfCBcIm1kXCIgfCBcImxnXCIgPSBcIm1kXCI7XG5cdHB1YmxpYyBsaXN0SWQgPSBgbGlzdGJveC0ke0Ryb3Bkb3duTGlzdC5saXN0Q291bnQrK31gO1xuXHRwdWJsaWMgaGlnaGxpZ2h0ZWRJdGVtID0gbnVsbDtcblx0LyoqXG5cdCAqIEhvbGRzIHRoZSBsaXN0IG9mIGl0ZW1zIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIGBEcm9wZG93bkxpc3RgLlxuXHQgKiBJdCBkaWZmZXJzIGZyb20gdGhlIHRoZSBjb21wbGV0ZSBzZXQgb2YgaXRlbXMgd2hlbiBmaWx0ZXJpbmcgaXMgdXNlZCAoYnV0XG5cdCAqIGl0IGlzIGFsd2F5cyBhIHN1YnNldCBvZiB0aGUgdG90YWwgaXRlbXMgaW4gYERyb3Bkb3duTGlzdGApLlxuXHQgKi9cblx0cHVibGljIGRpc3BsYXlJdGVtczogQXJyYXk8TGlzdEl0ZW0+ID0gW107XG5cdC8qKlxuXHQgKiBNYWludGFpbnMgdGhlIGluZGV4IGZvciB0aGUgc2VsZWN0ZWQgaXRlbSB3aXRoaW4gdGhlIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0cHJvdGVjdGVkIGluZGV4ID0gLTE7XG5cdC8qKlxuXHQgKiBBbiBhcnJheSBob2xkaW5nIHRoZSBIVE1MIGxpc3QgZWxlbWVudHMgaW4gdGhlIHZpZXcuXG5cdCAqL1xuXHRAVmlld0NoaWxkcmVuKFwibGlzdEl0ZW1cIikgcHJvdGVjdGVkIGxpc3RFbGVtZW50TGlzdDogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXHQvKipcblx0ICogT2JzZXJ2YWJsZSBib3VuZCB0byBrZXlkb3duIGV2ZW50cyB0byBjb250cm9sIGZpbHRlcmluZy5cblx0ICovXG5cdHByb3RlY3RlZCBmb2N1c0p1bXA7XG5cdC8qKlxuXHQgKiBUcmFja3MgdGhlIGN1cnJlbnQgKGlmIGFueSkgc3Vic2NyaXB0aW9uIHRvIHRoZSBpdGVtcyBvYnNlcnZhYmxlIHNvIHdlIGNhbiBjbGVhbiB1cCB3aGVuIHRoZSBpbnB1dCBpcyB1cGRhdGVkLlxuXHQgKi9cblx0cHJvdGVjdGVkIF9pdGVtc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXHQvKipcblx0ICogVXNlZCB0byByZXRhaW4gdGhlIG9yaWdpbmFsIGl0ZW1zIHBhc3NlZCB0byB0aGUgc2V0dGVyLlxuXHQgKi9cblx0cHJvdGVjdGVkIF9vcmlnaW5hbEl0ZW1zOiBBcnJheTxMaXN0SXRlbT4gfCBPYnNlcnZhYmxlPEFycmF5PExpc3RJdGVtPj47XG5cdC8qKlxuXHQgKiBVc2VmdWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGl0ZW1zLCBzaG91bGQgYmUgYWNjZXNzZWQgdmlhIGBnZXRMaXN0SXRlbXNgLlxuXHQgKi9cblx0cHJvdGVjdGVkIF9pdGVtczogQXJyYXk8TGlzdEl0ZW0+ID0gW107XG5cdC8qKlxuXHQgKiBVc2VkIHRvIHdhaXQgZm9yIGl0ZW1zIGluIGNhc2UgdGhleSBhcmUgcGFzc2VkIHRocm91Z2ggYW4gb2JzZXJ2YWJsZS5cblx0ICovXG5cdHByb3RlY3RlZCBfaXRlbXNSZWFkeTogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBgRHJvcGRvd25MaXN0YC5cblx0ICovXG5cdGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgaTE4bjogSTE4biwgcHJvdGVjdGVkIGFwcFJlZjogQXBwbGljYXRpb25SZWYpIHt9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyBhcnJheSBvZiBsaXN0IGl0ZW1zIGFuZCBpbmRleCBvZiB0aGUgc2VsZWN0ZWQgaXRlbSBhZnRlciB2aWV3IGhhcyByZW5kZXJlZC5cblx0ICogQWRkaXRpb25hbGx5LCBhbnkgT2JzZXJ2YWJsZXMgZm9yIHRoZSBgRHJvcGRvd25MaXN0YCBhcmUgaW5pdGlhbGl6ZWQuXG5cdCAqL1xuXHRuZ0FmdGVyVmlld0luaXQoKSB7XG5cdFx0dGhpcy5pbmRleCA9IHRoaXMuZ2V0TGlzdEl0ZW1zKCkuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5zZWxlY3RlZCk7XG5cdFx0dGhpcy5zZXR1cEZvY3VzT2JzZXJ2YWJsZSgpO1xuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0dGhpcy5kb0VtaXRTZWxlY3QodHJ1ZSk7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyBhbnkgT2JzZXJ2YWJsZXMgb24gZGVzdHJ1Y3Rpb24gb2YgdGhlIGNvbXBvbmVudC5cblx0ICovXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdGlmICh0aGlzLmZvY3VzSnVtcCkge1xuXHRcdFx0dGhpcy5mb2N1c0p1bXAudW5zdWJzY3JpYmUoKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuX2l0ZW1zU3Vic2NyaXB0aW9uKSB7XG5cdFx0XHR0aGlzLl9pdGVtc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXHRcdH1cblx0fVxuXG5cdGRvRW1pdFNlbGVjdChpc1VwZGF0ZSA9IHRydWUpIHtcblx0XHRpZiAodGhpcy50eXBlID09PSBcInNpbmdsZVwiKSB7XG5cdFx0XHR0aGlzLnNlbGVjdC5lbWl0KHsgaXRlbTogdGhpcy5faXRlbXMuZmluZChpdGVtID0+IGl0ZW0uc2VsZWN0ZWQpLCBpc1VwZGF0ZTogaXNVcGRhdGUgfSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGFidXNlIGphdmFzY3JpcHRzIG9iamVjdCBtdXRhYmlsaXR5IHVudGlsIHdlIGNhbiBicmVhayB0aGUgQVBJIGFuZCBzd2l0Y2ggdG9cblx0XHRcdC8vIHsgaXRlbXM6IFtdLCBpc1VwZGF0ZTogdHJ1ZSB9XG5cdFx0XHRjb25zdCBzZWxlY3RlZCA9IHRoaXMuZ2V0U2VsZWN0ZWQoKSB8fCBbXTtcblx0XHRcdHNlbGVjdGVkW1wiaXNVcGRhdGVcIl0gPSBpc1VwZGF0ZTtcblx0XHRcdHRoaXMuc2VsZWN0LmVtaXQoc2VsZWN0ZWQpO1xuXHRcdH1cblx0fVxuXG5cdGdldEl0ZW1JZChpbmRleDogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIGAke3RoaXMubGlzdElkfS0ke2luZGV4fWA7XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgZGlzcGxheWVkIGxpc3Qgb2YgaXRlbXMgYW5kIHRoZW4gcmV0cmlldmVzIHRoZSBtb3N0IGN1cnJlbnQgcHJvcGVydGllcyBmb3IgdGhlIGBEcm9wZG93bkxpc3RgIGZyb20gdGhlIERPTS5cblx0ICovXG5cdHVwZGF0ZUxpc3QoaXRlbXMpIHtcblx0XHR0aGlzLl9pdGVtcyA9IGl0ZW1zLm1hcChpdGVtID0+IE9iamVjdC5hc3NpZ24oe30sIGl0ZW0pKTtcblx0XHR0aGlzLmRpc3BsYXlJdGVtcyA9IHRoaXMuX2l0ZW1zO1xuXHRcdHRoaXMudXBkYXRlSW5kZXgoKTtcblx0XHR0aGlzLnNldHVwRm9jdXNPYnNlcnZhYmxlKCk7XG5cdFx0dGhpcy5kb0VtaXRTZWxlY3QoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGaWx0ZXJzIHRoZSBpdGVtcyBiZWluZyBkaXNwbGF5ZWQgaW4gdGhlIERPTSBsaXN0LlxuXHQgKi9cblx0ZmlsdGVyQnkocXVlcnkgPSBcIlwiKSB7XG5cdFx0aWYgKHF1ZXJ5KSB7XG5cdFx0XHR0aGlzLmRpc3BsYXlJdGVtcyA9IHRoaXMuZ2V0TGlzdEl0ZW1zKCkuZmlsdGVyKGl0ZW0gPT4gaXRlbS5jb250ZW50LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkudG9Mb3dlckNhc2UoKSkpO1xuXHRcdFx0Ly8gUmVzZXQgaW5kZXggaWYgaXRlbXMgd2VyZSBmb3VuZFxuXHRcdFx0Ly8gUHJldmVudCBzZWxlY3RpbmcgaW5kZXggaW4gbGlzdCB0aGF0IGFyZSB1bmRlZmluZWQuXG5cdFx0XHRpZiAodGhpcy5kaXNwbGF5SXRlbXMpIHtcblx0XHRcdFx0dGhpcy5pbmRleCA9IDA7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZGlzcGxheUl0ZW1zID0gdGhpcy5nZXRMaXN0SXRlbXMoKTtcblx0XHR9XG5cblx0XHR0aGlzLnVwZGF0ZUluZGV4KCk7XG5cdH1cblxuXHQvKipcblx0ICogSW5pdGlhbGl6ZXMgKG9yIHJlLWluaXRpYWxpemVzKSB0aGUgT2JzZXJ2YWJsZSB0aGF0IGhhbmRsZXMgc3dpdGNoaW5nIGZvY3VzIHRvIGFuIGVsZW1lbnQgYmFzZWQgb25cblx0ICoga2V5IGlucHV0IG1hdGNoaW5nIHRoZSBmaXJzdCBsZXR0ZXIgb2YgdGhlIGl0ZW0gaW4gdGhlIGxpc3QuXG5cdCAqL1xuXHRzZXR1cEZvY3VzT2JzZXJ2YWJsZSgpIHtcblx0XHRpZiAoIXRoaXMubGlzdCkgeyByZXR1cm47IH1cblx0XHRpZiAodGhpcy5mb2N1c0p1bXApIHtcblx0XHRcdHRoaXMuZm9jdXNKdW1wLnVuc3Vic2NyaWJlKCk7XG5cdFx0fVxuXHRcdGxldCBlbExpc3QgPSBBcnJheS5mcm9tKHRoaXMubGlzdC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJsaVwiKSk7XG5cdFx0dGhpcy5mb2N1c0p1bXAgPSB3YXRjaEZvY3VzSnVtcCh0aGlzLmxpc3QubmF0aXZlRWxlbWVudCwgZWxMaXN0KVxuXHRcdFx0LnN1YnNjcmliZShlbCA9PiB7XG5cdFx0XHRcdGVsLmZvY3VzKCk7XG5cdFx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBgTGlzdEl0ZW1gIHRoYXQgaXMgc3Vic2VxdWVudCB0byB0aGUgc2VsZWN0ZWQgaXRlbSBpbiB0aGUgYERyb3Bkb3duTGlzdGAuXG5cdCAqL1xuXHRnZXROZXh0SXRlbSgpOiBMaXN0SXRlbSB7XG5cdFx0aWYgKHRoaXMuaW5kZXggPCB0aGlzLmRpc3BsYXlJdGVtcy5sZW5ndGggLSAxKSB7XG5cdFx0XHR0aGlzLmluZGV4Kys7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmRpc3BsYXlJdGVtc1t0aGlzLmluZGV4XTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgc2VsZWN0ZWQgaXRlbSBpcyBub3QgdGhlIGxhc3QgaXRlbSBpbiB0aGUgYERyb3Bkb3duTGlzdGAuXG5cdCAqL1xuXHRoYXNOZXh0RWxlbWVudCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5pbmRleCA8IHRoaXMuZGlzcGxheUl0ZW1zLmxlbmd0aCAtIDEgJiZcblx0XHRcdCghKHRoaXMuaW5kZXggPT09IHRoaXMuZGlzcGxheUl0ZW1zLmxlbmd0aCAtIDIpIHx8ICF0aGlzLmRpc3BsYXlJdGVtc1t0aGlzLmluZGV4ICsgMV0uZGlzYWJsZWQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGBIVE1MRWxlbWVudGAgZm9yIHRoZSBpdGVtIHRoYXQgaXMgc3Vic2VxdWVudCB0byB0aGUgc2VsZWN0ZWQgaXRlbS5cblx0ICovXG5cdGdldE5leHRFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcblx0XHQvLyBPbmx5IHJldHVybiBuYXRpdmUgZWxlbWVudHMgaWYgdGhleSBhcmUgcmVuZGVyZWRcblx0XHRjb25zdCBlbGVtTGlzdCA9IHRoaXMubGlzdEVsZW1lbnRMaXN0ID8gdGhpcy5saXN0RWxlbWVudExpc3QudG9BcnJheSgpIDogW107XG5cdFx0aWYgKCFlbGVtTGlzdC5sZW5ndGgpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIFN0YXJ0IGNoZWNraW5nIGZyb20gbmV4dCBpbmRleFxuXHRcdCAqIENvbnRpbnVlIGxvb3BpbmcgdGhyb3VnaCB0aGUgbGlzdCB1bnRpbCBhIG5vbiBkaXNhYmVsZWQgZWxlbWVudCBpcyBmb3VuZCBvclxuXHRcdCAqIGVuZCBvZiBsaXN0IGlzIHJlYWNoZWRcblx0XHQgKi9cblx0XHRmb3IgKGxldCBpID0gdGhpcy5pbmRleCArIDE7IGkgPCBlbGVtTGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0Ly8gSWYgdGhlIHZhbHVlcyBpbiB0aGUgbGlzdCBhcmUgbm90IGRpc2FibGVkXG5cdFx0XHRpZiAoIXRoaXMuZGlzcGxheUl0ZW1zW2ldLmRpc2FibGVkKSB7XG5cdFx0XHRcdHRoaXMuaW5kZXggPSBpO1xuXHRcdFx0XHRyZXR1cm4gZWxlbUxpc3RbaV0ubmF0aXZlRWxlbWVudDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZWxlbUxpc3RbdGhpcy5pbmRleF0ubmF0aXZlRWxlbWVudDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBgTGlzdEl0ZW1gIHRoYXQgcHJlY2VkZXMgdGhlIHNlbGVjdGVkIGl0ZW0gd2l0aGluIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0Z2V0UHJldkl0ZW0oKTogTGlzdEl0ZW0ge1xuXHRcdGlmICh0aGlzLmluZGV4ID4gMCkge1xuXHRcdFx0dGhpcy5pbmRleC0tO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5kaXNwbGF5SXRlbXNbdGhpcy5pbmRleF07XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHNlbGVjdGVkIGl0ZW0gaXMgbm90IHRoZSBmaXJzdCBpbiB0aGUgbGlzdC5cblx0ICovXG5cdGhhc1ByZXZFbGVtZW50KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmluZGV4ID4gMCAmJiAoISh0aGlzLmluZGV4ID09PSAxKSB8fCAhdGhpcy5kaXNwbGF5SXRlbXNbMF0uZGlzYWJsZWQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGBIVE1MRWxlbWVudGAgZm9yIHRoZSBpdGVtIHRoYXQgcHJlY2VkZXMgdGhlIHNlbGVjdGVkIGl0ZW0uXG5cdCAqL1xuXHRnZXRQcmV2RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG5cdFx0Ly8gT25seSByZXR1cm4gbmF0aXZlIGVsZW1lbnRzIGlmIHRoZXkgYXJlIHJlbmRlcmVkXG5cdFx0Y29uc3QgZWxlbUxpc3QgPSB0aGlzLmxpc3RFbGVtZW50TGlzdCA/IHRoaXMubGlzdEVsZW1lbnRMaXN0LnRvQXJyYXkoKSA6IFtdO1xuXHRcdGlmICghZWxlbUxpc3QubGVuZ3RoKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBTdGFydCBjaGVja2luZyBmcm9tIG5leHQgaW5kZXhcblx0XHQgKiBDb250aW51ZSBsb29waW5nIHRocm91Z2ggdGhlIGxpc3QgdW50aWwgYSBub24gZGlzYWJlbGVkIGVsZW1lbnQgaXMgZm91bmQgb3Jcblx0XHQgKiBlbmQgb2YgbGlzdCBpcyByZWFjaGVkXG5cdFx0ICovXG5cdFx0Zm9yIChsZXQgaSA9IHRoaXMuaW5kZXggLSAxOyBpIDwgdGhpcy5pbmRleCAmJiBpID49IDA7IGktLSkge1xuXHRcdFx0Ly8gSWYgdGhlIHZhbHVlcyBpbiB0aGUgbGlzdCBhcmUgbm90IGRpc2FibGVkXG5cdFx0XHRpZiAoIXRoaXMuZGlzcGxheUl0ZW1zW2ldLmRpc2FibGVkKSB7XG5cdFx0XHRcdHRoaXMuaW5kZXggPSBpO1xuXHRcdFx0XHRyZXR1cm4gZWxlbUxpc3RbaV0ubmF0aXZlRWxlbWVudDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZWxlbUxpc3RbdGhpcy5pbmRleF0ubmF0aXZlRWxlbWVudDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBgTGlzdEl0ZW1gIHRoYXQgaXMgc2VsZWN0ZWQgd2l0aGluIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0Z2V0Q3VycmVudEl0ZW0oKTogTGlzdEl0ZW0ge1xuXHRcdGlmICh0aGlzLmluZGV4IDwgMCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZGlzcGxheUl0ZW1zWzBdO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5kaXNwbGF5SXRlbXNbdGhpcy5pbmRleF07XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgYEhUTUxFbGVtZW50YCBmb3IgdGhlIGl0ZW0gdGhhdCBpcyBzZWxlY3RlZCB3aXRoaW4gdGhlIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0Z2V0Q3VycmVudEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuXHRcdGlmICh0aGlzLmluZGV4IDwgMCkge1xuXHRcdFx0cmV0dXJuIHRoaXMubGlzdEVsZW1lbnRMaXN0LmZpcnN0Lm5hdGl2ZUVsZW1lbnQ7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmxpc3RFbGVtZW50TGlzdC50b0FycmF5KClbdGhpcy5pbmRleF0ubmF0aXZlRWxlbWVudDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBpdGVtcyBhcyBhbiBBcnJheVxuXHQgKi9cblx0Z2V0TGlzdEl0ZW1zKCk6IEFycmF5PExpc3RJdGVtPiB7XG5cdFx0cmV0dXJuIHRoaXMuX2l0ZW1zO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYSBsaXN0IGNvbnRhaW5pbmcgdGhlIHNlbGVjdGVkIGl0ZW0ocykgaW4gdGhlIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0Z2V0U2VsZWN0ZWQoKTogTGlzdEl0ZW1bXSB7XG5cdFx0bGV0IHNlbGVjdGVkID0gdGhpcy5nZXRMaXN0SXRlbXMoKS5maWx0ZXIoaXRlbSA9PiBpdGVtLnNlbGVjdGVkKTtcblx0XHRpZiAoc2VsZWN0ZWQubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXHRcdHJldHVybiBzZWxlY3RlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBUcmFuc2Zvcm1zIGFycmF5IGlucHV0IGxpc3Qgb2YgaXRlbXMgdG8gdGhlIGNvcnJlY3Qgc3RhdGUgYnkgdXBkYXRpbmcgdGhlIHNlbGVjdGVkIGl0ZW0ocykuXG5cdCAqL1xuXHRwcm9wYWdhdGVTZWxlY3RlZCh2YWx1ZTogQXJyYXk8TGlzdEl0ZW0+KTogdm9pZCB7XG5cdFx0Ly8gaWYgd2UgZ2V0IGEgbm9uLWFycmF5LCBsb2cgb3V0IGFuIGVycm9yIChzaW5jZSBpdCBpcyBvbmUpXG5cdFx0aWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuXHRcdFx0Y29uc29sZS5lcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9LnByb3BhZ2F0ZVNlbGVjdGVkIGV4cGVjdHMgYW4gQXJyYXk8TGlzdEl0ZW0+LCBnb3QgJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YCk7XG5cdFx0fVxuXHRcdHRoaXMub25JdGVtc1JlYWR5KCgpID0+IHtcblx0XHRcdC8vIGxvb3AgdGhyb3VnaCB0aGUgbGlzdCBpdGVtcyBhbmQgdXBkYXRlIHRoZSBgc2VsZWN0ZWRgIHN0YXRlIGZvciBtYXRjaGluZyBpdGVtcyBpbiBgdmFsdWVgXG5cdFx0XHRmb3IgKGxldCBvbGRJdGVtIG9mIHRoaXMuZ2V0TGlzdEl0ZW1zKCkpIHtcblx0XHRcdFx0Ly8gY29weSB0aGUgaXRlbVxuXHRcdFx0XHRsZXQgdGVtcE9sZEl0ZW06IHN0cmluZyB8IExpc3RJdGVtID0gT2JqZWN0LmFzc2lnbih7fSwgb2xkSXRlbSk7XG5cdFx0XHRcdC8vIGRlbGV0ZWQgc2VsZWN0ZWQgYmVjYXVzZSBpdCdzIHdoYXQgd2UgX3dhbnRfIHRvIGNoYW5nZVxuXHRcdFx0XHRkZWxldGUgdGVtcE9sZEl0ZW0uc2VsZWN0ZWQ7XG5cdFx0XHRcdC8vIHN0cmluZ2lmeSBmb3IgY29tcGFyZVxuXHRcdFx0XHR0ZW1wT2xkSXRlbSA9IEpTT04uc3RyaW5naWZ5KHRlbXBPbGRJdGVtKTtcblx0XHRcdFx0Zm9yIChsZXQgbmV3SXRlbSBvZiB2YWx1ZSkge1xuXHRcdFx0XHRcdC8vIGNvcHkgdGhlIGl0ZW1cblx0XHRcdFx0XHRsZXQgdGVtcE5ld0l0ZW06IHN0cmluZyB8IExpc3RJdGVtID0gT2JqZWN0LmFzc2lnbih7fSwgbmV3SXRlbSk7XG5cdFx0XHRcdFx0Ly8gZGVsZXRlZCBzZWxlY3RlZCBiZWNhdXNlIGl0J3Mgd2hhdCB3ZSBfd2FudF8gdG8gY2hhbmdlXG5cdFx0XHRcdFx0ZGVsZXRlIHRlbXBOZXdJdGVtLnNlbGVjdGVkO1xuXHRcdFx0XHRcdC8vIHN0cmluZ2lmeSBmb3IgY29tcGFyZVxuXHRcdFx0XHRcdHRlbXBOZXdJdGVtID0gSlNPTi5zdHJpbmdpZnkodGVtcE5ld0l0ZW0pO1xuXHRcdFx0XHRcdC8vIGRvIHRoZSBjb21wYXJlXG5cdFx0XHRcdFx0aWYgKHRlbXBPbGRJdGVtLmluY2x1ZGVzKHRlbXBOZXdJdGVtKSkge1xuXHRcdFx0XHRcdFx0b2xkSXRlbS5zZWxlY3RlZCA9IG5ld0l0ZW0uc2VsZWN0ZWQ7XG5cdFx0XHRcdFx0XHQvLyBpZiB3ZSd2ZSBmb3VuZCBhIG1hdGNoaW5nIGl0ZW0sIHdlIGNhbiBzdG9wIGxvb3Bpbmdcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRvbGRJdGVtLnNlbGVjdGVkID0gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogSW5pdGlhbGl6ZXMgZm9jdXMgaW4gdGhlIGxpc3QsIGVmZmVjdGl2ZWx5IGEgd3JhcHBlciBmb3IgYGdldEN1cnJlbnRFbGVtZW50KCkuZm9jdXMoKWBcblx0ICovXG5cdGluaXRGb2N1cygpIHtcblx0XHRpZiAodGhpcy5pbmRleCA8IDApIHtcblx0XHRcdHRoaXMudXBkYXRlSW5kZXgoKTtcblx0XHR9XG5cblx0XHR0aGlzLmxpc3QubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0dGhpcy5oaWdobGlnaHRlZEl0ZW0gPSB0aGlzLmdldEl0ZW1JZCh0aGlzLmluZGV4KTtcblx0XHR9KTtcblx0fVxuXG5cdHVwZGF0ZUluZGV4KCkge1xuXHRcdC8vIGluaXRpYWxpemUgaW5kZXggb24gdGhlIGZpcnN0IHNlbGVjdGVkIGl0ZW0gb3Jcblx0XHQvLyBvbiB0aGUgbmV4dCBub24gZGlzYWJsZWQgaXRlbSBpZiBubyBpdGVtcyBhcmUgc2VsZWN0ZWRcblx0XHRjb25zdCBzZWxlY3RlZCA9IHRoaXMuZ2V0U2VsZWN0ZWQoKTtcblx0XHRpZiAoc2VsZWN0ZWQubGVuZ3RoKSB7XG5cdFx0XHR0aGlzLmluZGV4ID0gdGhpcy5kaXNwbGF5SXRlbXMuaW5kZXhPZihzZWxlY3RlZFswXSk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmhhc05leHRFbGVtZW50KCkpIHtcblx0XHRcdHRoaXMuZ2V0TmV4dEVsZW1lbnQoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogTWFuYWdlcyB0aGUga2V5Ym9hcmQgYWNjZXNzaWJpbGl0eSBmb3IgbmF2aWdhdGlvbiBhbmQgc2VsZWN0aW9uIHdpdGhpbiBhIGBEcm9wZG93bkxpc3RgLlxuXHQgKi9cblx0bmF2aWdhdGVMaXN0KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG5cdFx0aWYgKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiIHx8IGV2ZW50LmtleSA9PT0gXCIgXCIpIHtcblx0XHRcdGlmICh0aGlzLmxpc3RFbGVtZW50TGlzdC5zb21lKG9wdGlvbiA9PiBvcHRpb24ubmF0aXZlRWxlbWVudCA9PT0gZXZlbnQudGFyZ2V0KSkge1xuXHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiKSB7XG5cdFx0XHRcdHRoaXMuZG9DbGljayhldmVudCwgdGhpcy5nZXRDdXJyZW50SXRlbSgpKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd0Rvd25cIiB8fCBldmVudC5rZXkgPT09IFwiQXJyb3dVcFwiKSB7XG5cdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0aWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd0Rvd25cIikge1xuXHRcdFx0XHRpZiAodGhpcy5oYXNOZXh0RWxlbWVudCgpKSB7XG5cdFx0XHRcdFx0dGhpcy5nZXROZXh0RWxlbWVudCgpLnNjcm9sbEludG9WaWV3KHsgYmxvY2s6IFwiZW5kXCIgfSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5ibHVySW50ZW50LmVtaXQoXCJib3R0b21cIik7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93VXBcIikge1xuXHRcdFx0XHRpZiAodGhpcy5oYXNQcmV2RWxlbWVudCgpKSB7XG5cdFx0XHRcdFx0dGhpcy5nZXRQcmV2RWxlbWVudCgpLnNjcm9sbEludG9WaWV3KCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5ibHVySW50ZW50LmVtaXQoXCJ0b3BcIik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmhpZ2hsaWdodGVkSXRlbSA9IHRoaXMuZ2V0SXRlbUlkKHRoaXMuaW5kZXgpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEVtaXRzIHRoZSBzZWxlY3RlZCBpdGVtIG9yIGl0ZW1zIGFmdGVyIGEgbW91c2UgY2xpY2sgZXZlbnQgaGFzIG9jY3VycmVkLlxuXHQgKi9cblx0ZG9DbGljayhldmVudCwgaXRlbSkge1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0aWYgKGl0ZW0gJiYgIWl0ZW0uZGlzYWJsZWQpIHtcblx0XHRcdHRoaXMubGlzdC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cdFx0XHRpZiAodGhpcy50eXBlID09PSBcInNpbmdsZVwiKSB7XG5cdFx0XHRcdGl0ZW0uc2VsZWN0ZWQgPSB0cnVlO1xuXHRcdFx0XHQvLyByZXNldCB0aGUgc2VsZWN0aW9uXG5cdFx0XHRcdGZvciAobGV0IG90aGVySXRlbSBvZiB0aGlzLmdldExpc3RJdGVtcygpKSB7XG5cdFx0XHRcdFx0aWYgKGl0ZW0gIT09IG90aGVySXRlbSkgeyBvdGhlckl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTsgfVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpdGVtLnNlbGVjdGVkID0gIWl0ZW0uc2VsZWN0ZWQ7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmluZGV4ID0gdGhpcy5kaXNwbGF5SXRlbXMuaW5kZXhPZihpdGVtKTtcblx0XHRcdHRoaXMuaGlnaGxpZ2h0ZWRJdGVtID0gdGhpcy5nZXRJdGVtSWQodGhpcy5pbmRleCk7XG5cdFx0XHR0aGlzLmRvRW1pdFNlbGVjdChmYWxzZSk7XG5cdFx0XHR0aGlzLmFwcFJlZi50aWNrKCk7XG5cdFx0fVxuXHR9XG5cblx0b25JdGVtRm9jdXMoaW5kZXgpIHtcblx0XHRjb25zdCBlbGVtZW50ID0gdGhpcy5saXN0RWxlbWVudExpc3QudG9BcnJheSgpW2luZGV4XS5uYXRpdmVFbGVtZW50O1xuXHRcdGVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImNkcy0tbGlzdC1ib3hfX21lbnUtaXRlbS0taGlnaGxpZ2h0ZWRcIik7XG5cdFx0ZWxlbWVudC50YWJJbmRleCA9IDA7XG5cdH1cblxuXHRvbkl0ZW1CbHVyKGluZGV4KSB7XG5cdFx0Y29uc3QgZWxlbWVudCA9IHRoaXMubGlzdEVsZW1lbnRMaXN0LnRvQXJyYXkoKVtpbmRleF0ubmF0aXZlRWxlbWVudDtcblx0XHRlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJjZHMtLWxpc3QtYm94X19tZW51LWl0ZW0tLWhpZ2hsaWdodGVkXCIpO1xuXHRcdGVsZW1lbnQudGFiSW5kZXggPSAtMTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFbWl0cyB0aGUgc2Nyb2xsIGV2ZW50IG9mIHRoZSBvcHRpb25zIGxpc3Rcblx0ICovXG5cdGVtaXRTY3JvbGwoZXZlbnQpIHtcblx0XHRjb25zdCBhdFRvcDogYm9vbGVhbiA9IGV2ZW50LnNyY0VsZW1lbnQuc2Nyb2xsVG9wID09PSAwO1xuXHRcdGNvbnN0IGF0Qm90dG9tOiBib29sZWFuID0gZXZlbnQuc3JjRWxlbWVudC5zY3JvbGxIZWlnaHQgLSBldmVudC5zcmNFbGVtZW50LnNjcm9sbFRvcCA9PT0gZXZlbnQuc3JjRWxlbWVudC5jbGllbnRIZWlnaHQ7XG5cdFx0Y29uc3QgY3VzdG9tU2Nyb2xsRXZlbnQgPSB7IGF0VG9wLCBhdEJvdHRvbSwgZXZlbnQgfTtcblx0XHR0aGlzLnNjcm9sbC5lbWl0KGN1c3RvbVNjcm9sbEV2ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTdWJzY3JpYmUgdGhlIGZ1bmN0aW9uIHBhc3NlZCB0byBhbiBpbnRlcm5hbCBvYnNlcnZhYmxlIHRoYXQgd2lsbCByZXNvbHZlIG9uY2UgdGhlIGl0ZW1zIGFyZSByZWFkeVxuXHQgKi9cblx0b25JdGVtc1JlYWR5KHN1YmNyaXB0aW9uOiAoKSA9PiB2b2lkKTogdm9pZCB7XG5cdFx0Ly8gdGhpcyBzdWJzY3JpcHRpb24gd2lsbCBhdXRvIHVuc3Vic2NyaWJlIGJlY2F1c2Ugb2YgdGhlIGBmaXJzdCgpYCBwaXBlXG5cdFx0KHRoaXMuX2l0ZW1zUmVhZHkgfHwgb2YodHJ1ZSkpLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKHN1YmNyaXB0aW9uKTtcblx0fVxuXG5cdHJlb3JkZXJTZWxlY3RlZChtb3ZlRm9jdXMgPSB0cnVlKTogdm9pZCB7XG5cdFx0dGhpcy5kaXNwbGF5SXRlbXMgPSBbLi4udGhpcy5nZXRTZWxlY3RlZCgpLCAuLi50aGlzLmdldExpc3RJdGVtcygpLmZpbHRlcihpdGVtID0+ICFpdGVtLnNlbGVjdGVkKV07XG5cdFx0aWYgKG1vdmVGb2N1cykge1xuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMudXBkYXRlSW5kZXgoKTtcblx0XHRcdFx0dGhpcy5oaWdobGlnaHRlZEl0ZW0gPSB0aGlzLmdldEl0ZW1JZCh0aGlzLmluZGV4KTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxufVxuIl19
@@ -66,7 +66,8 @@ export class FileUploader {
66
66
  FileUploader.fileUploaderCount++;
67
67
  }
68
68
  /**
69
- * Specifies the property to be used as the return value to `ngModel`
69
+ * Specifies the property to be used as the return value to `ngModel` and reactive forms.
70
+ * Updates `this.files`.
70
71
  */
71
72
  get value() {
72
73
  return this.files;
@@ -126,31 +127,33 @@ export class FileUploader {
126
127
  event.stopPropagation();
127
128
  event.preventDefault();
128
129
  const transferredFiles = Array.from(event.dataTransfer.files);
130
+ const newFiles = new Set(this.files);
129
131
  transferredFiles.filter(({ name, type }) => {
130
132
  // Get the file extension and add a "." to the beginning.
131
133
  const fileExtension = name.split(".").pop().replace(/^/, ".");
132
134
  // Check if the accept array contains the mime type or extension of the file.
133
135
  return this.accept.includes(type) || this.accept.includes(fileExtension) || !this.accept.length;
134
136
  }).forEach(file => {
135
- if (!this.files.size || this.multiple) {
137
+ if (!newFiles.size || this.multiple) {
136
138
  const fileItem = this.createFileItem(file);
137
- this.files.add(fileItem);
139
+ newFiles.add(fileItem);
138
140
  }
139
141
  });
140
- this.filesChange.emit(this.files);
141
- this.value = this.files;
142
+ this.value = newFiles;
143
+ this.filesChange.emit(newFiles);
142
144
  this.dragOver = false;
143
145
  }
144
146
  removeFile(fileItem) {
145
- let shouldEmit = true;
146
- if (this.files) {
147
- shouldEmit = this.files.has(fileItem);
148
- this.files.delete(fileItem);
147
+ // Deleting an item from this.files removes the <ibm-file> component,
148
+ // which triggers its ngOnDestroy(), which fires the (remove) event again.
149
+ // So, (remove) may double-fire and we need to handle it here.
150
+ if (this.files && this.files.has(fileItem)) {
151
+ const newFiles = new Set(this.files);
152
+ newFiles.delete(fileItem);
153
+ this.filesChange.emit(newFiles);
154
+ this.value = newFiles;
149
155
  }
150
156
  this.fileInput.nativeElement.value = "";
151
- if (shouldEmit) {
152
- this.filesChange.emit(this.files);
153
- }
154
157
  }
155
158
  isTemplate(value) {
156
159
  return value instanceof TemplateRef;
@@ -361,4 +364,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
361
364
  }], filesChange: [{
362
365
  type: Output
363
366
  }] } });
364
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmlsZS11cGxvYWRlci9maWxlLXVwbG9hZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFLekUsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRXZCOztHQUVHO0FBMEVILE1BQU0sT0FBTyxZQUFZO0lBZ0Z4QixZQUFzQixJQUFVO1FBQVYsU0FBSSxHQUFKLElBQUksQ0FBTTtRQTNFaEM7Ozs7V0FJRztRQUNNLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7UUFDekQ7O1dBRUc7UUFDTSxlQUFVLEdBQThELFNBQVMsQ0FBQztRQVMzRjs7V0FFRztRQUNNLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFDckI7Ozs7V0FJRztRQUNNLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDekI7O1dBRUc7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBSzFCOztXQUVHO1FBQ00saUJBQVksR0FBdUIsSUFBSSxDQUFDO1FBQ2pEOztXQUVHO1FBQ00sU0FBSSxHQUFHLEtBQUssQ0FBQztRQUt0Qjs7V0FFRztRQUNNLG1CQUFjLEdBQUcsaUJBQWlCLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBSzVFOztXQUVHO1FBQ00sVUFBSyxHQUFHLElBQUksR0FBRyxFQUFZLENBQUM7UUFDckM7O1dBRUc7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWhCLGdCQUFXLEdBQUcsSUFBSSxZ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aEIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBSWtCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFJYixLQUFLO3NCQUFiLEtBQUs7Z0JBSUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRJbnB1dCxcblx0T3V0cHV0LFxuXHRWaWV3Q2hpbGQsXG5cdEV2ZW50RW1pdHRlcixcblx0VGVtcGxhdGVSZWZcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5pbXBvcnQgeyBJMThuIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvaTE4blwiO1xuaW1wb3J0IHsgRmlsZUl0ZW0gfSBmcm9tIFwiLi9maWxlLWl0ZW0uaW50ZXJmYWNlXCI7XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7IH07XG5cbi8qKlxuICogW1NlZSBkZW1vXSguLi8uLi8/cGF0aD0vc3RvcnkvY29tcG9uZW50cy1maWxlLXVwbG9hZGVyLS1iYXNpYylcbiAqL1xuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImNkcy1maWxlLXVwbG9hZGVyLCBpYm0tZmlsZS11cGxvYWRlclwiLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2tlbGV0b247IGVsc2Ugc2tlbGV0b25UZW1wbGF0ZVwiPlxuXHRcdFx0PGxhYmVsIFtmb3JdPVwiZmlsZVVwbG9hZGVySWRcIiBjbGFzcz1cImNkcy0tZmlsZS0tbGFiZWxcIj57e3RpdGxlfX08L2xhYmVsPlxuXHRcdFx0PHAgY2xhc3M9XCJjZHMtLWxhYmVsLWRlc2NyaXB0aW9uXCI+e3tkZXNjcmlwdGlvbn19PC9wPlxuXHRcdFx0PGRpdiBjbGFzcz1cImNkcy0tZmlsZVwiPlxuXHRcdFx0XHQ8bGFiZWxcblx0XHRcdFx0XHQqbmdJZj1cImRyb3BcIlxuXHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1maWxlLWJyb3dzZS1idG5cIlxuXHRcdFx0XHRcdChrZXl1cC5lbnRlcik9XCJmaWxlSW5wdXQuY2xpY2soKVwiXG5cdFx0XHRcdFx0KGtleXVwLnNwYWNlKT1cImZpbGVJbnB1dC5jbGljaygpXCJcblx0XHRcdFx0XHRbbmdDbGFzc109XCJ7J2Nkcy0tZmlsZS1icm93c2UtYnRuLS1kaXNhYmxlZCc6IGRpc2FibGVkfVwiXG5cdFx0XHRcdFx0dGFiaW5kZXg9XCIwXCI+XG5cdFx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLWZpbGVfX2Ryb3AtY29udGFpbmVyXCJcblx0XHRcdFx0XHRcdFtuZ0NsYXNzXT1cInsnY2RzLS1maWxlX19kcm9wLWNvbnRhaW5lci0tZHJhZy1vdmVyJzogZHJhZ092ZXJ9XCJcblx0XHRcdFx0XHRcdHJvbGU9XCJidXR0b25cIlxuXHRcdFx0XHRcdFx0KGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCJcblx0XHRcdFx0XHRcdFthdHRyLmZvcl09XCJmaWxlVXBsb2FkZXJJZFwiXG5cdFx0XHRcdFx0XHQoZHJhZ292ZXIpPVwib25EcmFnT3ZlcigkZXZlbnQpXCJcblx0XHRcdFx0XHRcdChkcmFnbGVhdmUpPVwib25EcmFnTGVhdmUoJGV2ZW50KVwiXG5cdFx0XHRcdFx0XHQoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiPlxuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKGRyb3BUZXh0KVwiPnt7ZHJvcFRleHR9fTwvbmctY29udGFpbmVyPlxuXHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiaXNUZW1wbGF0ZShkcm9wVGV4dClcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkcm9wVGV4dFwiPjwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDwvbGFiZWw+XG5cdFx0XHRcdDxidXR0b25cblx0XHRcdFx0XHQqbmdJZj1cIiFkcm9wXCJcblx0XHRcdFx0XHR0eXBlPVwiYnV0dG9uXCJcblx0XHRcdFx0XHRbY2RzQnV0dG9uXT1cImJ1dHRvblR5cGVcIlxuXHRcdFx0XHRcdChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiXG5cdFx0XHRcdFx0W2F0dHIuZm9yXT1cImZpbGVVcGxvYWRlcklkXCJcblx0XHRcdFx0XHRbc2l6ZV09XCJzaXplXCJcblx0XHRcdFx0XHRbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cblx0XHRcdFx0XHR7e2J1dHRvblRleHR9fVxuXHRcdFx0XHQ8L2J1dHRvbj5cblx0XHRcdFx0PGlucHV0XG5cdFx0XHRcdFx0I2ZpbGVJbnB1dFxuXHRcdFx0XHRcdHR5cGU9XCJmaWxlXCJcblx0XHRcdFx0XHRjbGFzcz1cImNkcy0tZmlsZS1pbnB1dFwiXG5cdFx0XHRcdFx0W2FjY2VwdF09XCJhY2NlcHRcIlxuXHRcdFx0XHRcdFtpZF09XCJmaWxlVXBsb2FkZXJJZFwiXG5cdFx0XHRcdFx0W211bHRpcGxlXT1cIm11bHRpcGxlXCJcblx0XHRcdFx0XHR0YWJpbmRleD1cIi0xXCJcblx0XHRcdFx0XHQoY2hhbmdlKT1cIm9uRmlsZXNBZGRlZCgpXCJcblx0XHRcdFx0XHRbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIi8+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJjZHMtLWZpbGUtY29udGFpbmVyXCI+XG5cdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmlsZUl0ZW0gb2YgZmlsZXNcIj5cblx0XHRcdFx0XHRcdDxjZHMtZmlsZVxuXHRcdFx0XHRcdFx0XHRbZmlsZUl0ZW1dPVwiZmlsZUl0ZW1cIlxuXHRcdFx0XHRcdFx0XHQocmVtb3ZlKT1cInJlbW92ZUZpbGUoZmlsZUl0ZW0pXCJcblx0XHRcdFx0XHRcdFx0W3NpemVdPVwiZmlsZUl0ZW1TaXplXCI+XG5cdFx0XHRcdFx0XHQ8L2Nkcy1maWxlPlxuXHRcdFx0XHRcdDwvbmctY29udGFpbmVyPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvbmctY29udGFpbmVyPlxuXG5cdFx0PG5nLXRlbXBsYXRlICNza2VsZXRvblRlbXBsYXRlPlxuXHRcdFx0PGRpdiBjbGFzcz1cImNkcy0tc2tlbGV0b25fX3RleHRcIiBzdHlsZT1cIndpZHRoOiAxMDBweFwiPjwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImNkcy0tc2tlbGV0b25fX3RleHRcIiBzdHlsZT1cIndpZHRoOiAyMjVweFwiPjwvZGl2PlxuXHRcdFx0PGJ1dHRvbiBjZHNCdXR0b24gc2tlbGV0b249XCJ0cnVlXCI+PC9idXR0b24+XG5cdFx0PC9uZy10ZW1wbGF0ZT5cblx0YCxcblx0cHJvdmlkZXJzOiBbXG5cdFx0e1xuXHRcdFx0cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG5cdFx0XHR1c2VFeGlzdGluZzogRmlsZVVwbG9hZGVyLFxuXHRcdFx0bXVsdGk6IHRydWVcblx0XHR9XG5cdF1cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZGVyIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXHQvKipcblx0ICogQ291bnRlciB1c2VkIHRvIGNyZWF0ZSB1bmlxdWUgaWRzIGZvciBmaWxlLXVwbG9hZGVyIGNvbXBvbmVudHNcblx0ICovXG5cdHN0YXRpYyBmaWxlVXBsb2FkZXJDb3VudCA9IDA7XG5cdC8qKlxuXHQgKiBBY2Nlc3NpYmxlIHRleHQgZm9yIHRoZSBidXR0b24gdGhhdCBvcGVucyB0aGUgdXBsb2FkIHdpbmRvdy5cblx0ICpcblx0ICogRGVmYXVsdHMgdG8gdGhlIGBGSUxFX1VQTE9BREVSLk9QRU5gIHZhbHVlIGZyb20gdGhlIGkxOG4gc2VydmljZVxuXHQgKi9cblx0QElucHV0KCkgYnV0dG9uVGV4dCA9IHRoaXMuaTE4bi5nZXQoKS5GSUxFX1VQTE9BREVSLk9QRU47XG5cdC8qKlxuXHQgKiBUeXBlIHNldCBmb3IgYnV0dG9uXG5cdCAqL1xuXHRASW5wdXQoKSBidXR0b25UeXBlOiBcInByaW1hcnlcIiB8IFwic2Vjb25kYXJ5XCIgfCBcInRlcnRpYXJ5XCIgfCBcImdob3N0XCIgfCBcImRhbmdlclwiID0gXCJwcmltYXJ5XCI7XG5cdC8qKlxuXHQgKiBUZXh0IHNldCB0byB0aGUgdGl0bGVcblx0ICovXG5cdEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUZXh0IHNldCB0byB0aGUgZGVzY3JpcHRpb25cblx0ICovXG5cdEBJbnB1dCgpIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBTcGVjaWZ5IHRoZSB0eXBlcyBvZiBmaWxlcyB0aGF0IHRoZSBpbnB1dCBzaG91bGQgYmUgYWJsZSB0byByZWNlaXZlXG5cdCAqL1xuXHRASW5wdXQoKSBhY2NlcHQgPSBbXTtcblx0LyoqXG5cdCAqIFNldCB0byBgZmFsc2VgIHRvIHRlbGwgdGhlIGNvbXBvbmVudCB0byBvbmx5IGFjY2VwdCBhIHNpbmdsZSBmaWxlIG9uIHVwbG9hZC5cblx0ICpcblx0ICogRGVmYXVsdHMgdG8gYHRydWVgLiBBY2NlcHRzIG11bHRpcGxlIGZpbGVzLlxuXHQgKi9cblx0QElucHV0KCkgbXVsdGlwbGUgPSB0cnVlO1xuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCBmb3IgYSBsb2FkaW5nIGZpbGUgdXBsb2FkZXIuXG5cdCAqL1xuXHRASW5wdXQoKSBza2VsZXRvbiA9IGZhbHNlO1xuXHQvKipcblx0ICogU2V0cyB0aGUgc2l6ZSBvZiB0aGUgYnV0dG9uLlxuXHQgKi9cblx0QElucHV0KCkgc2l6ZTogXCJzbVwiIHwgXCJtZFwiIHwgXCJsZ1wiO1xuXHQvKipcblx0ICogU2V0cyB0aGUgc2l6ZSBvZiB0aGUgZmlsZSBpdGVtc1xuXHQgKi9cblx0QElucHV0KCkgZmlsZUl0ZW1TaXplOiBcInNtXCIgfCBcIm1kXCIgfCBcImxnXCIgPSBcImxnXCI7XG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIHRvIGVuYWJsZSBkcmFnIGFuZCBkcm9wLlxuXHQgKi9cblx0QElucHV0KCkgZHJvcCA9IGZhbHNlO1xuXHQvKipcblx0ICogU2V0cyB0aGUgdGV4dCBzaG93biBpbiBkcmFnIGFuZCBkcm9wIGJveC5cblx0ICovXG5cdEBJbnB1dCgpIGRyb3BUZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXHQvKipcblx0ICogUHJvdmlkZXMgYSB1bmlxdWUgaWQgZm9yIHRoZSB1bmRlcmx5aW5nIGA8aW5wdXQ+YCBub2RlXG5cdCAqL1xuXHRASW5wdXQoKSBmaWxlVXBsb2FkZXJJZCA9IGBmaWxlLXVwbG9hZGVyLSR7RmlsZVVwbG9hZGVyLmZpbGVVcGxvYWRlckNvdW50fWA7XG5cdC8qKlxuXHQgKiBNYWludGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIHZpZXcgRE9NIGVsZW1lbnQgb2YgdGhlIHVuZGVybHlpbmcgPGlucHV0PiBub2RlXG5cdCAqL1xuXHRAVmlld0NoaWxkKFwiZmlsZUlucHV0XCIpIGZpbGVJbnB1dDtcblx0LyoqXG5cdCAqIFRoZSBsaXN0IG9mIGZpbGVzIHRoYXQgaGF2ZSBiZWVuIHN1Ym1pdHRlZCB0byBiZSB1cGxvYWRlZFxuXHQgKi9cblx0QElucHV0KCkgZmlsZXMgPSBuZXcgU2V0PEZpbGVJdGVtPigpO1xuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCB0byBkaXNhYmxlIHVwbG9hZCBidXR0b25cblx0ICovXG5cdEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cblx0QE91dHB1dCgpIGZpbGVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHRoZSBzdGF0ZSBvZiB0aGUgZHJhZyBhbmQgZHJvcCBmaWxlIGNvbnRhaW5lclxuXHQgKi9cblx0cHVibGljIGRyYWdPdmVyID0gZmFsc2U7XG5cblx0cHJvdGVjdGVkIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcblx0cHJvdGVjdGVkIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBTZXQ8RmlsZUl0ZW0+KSA9PiB2b2lkID0gbm9vcDtcblxuXHRjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaTE4bjogSTE4bikge1xuXHRcdEZpbGVVcGxvYWRlci5maWxlVXBsb2FkZXJDb3VudCsrO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgcHJvcGVydHkgdG8gYmUgdXNlZCBhcyB0aGUgcmV0dXJuIHZhbHVlIHRvIGBuZ01vZGVsYFxuXHQgKi9cblx0Z2V0IHZhbHVlKCk6IFNldDxGaWxlSXRlbT4ge1xuXHRcdHJldHVybiB0aGlzLmZpbGVzO1xuXHR9XG5cdHNldCB2YWx1ZSh2OiBTZXQ8RmlsZUl0ZW0+KSB7XG5cdFx0aWYgKHYgIT09IHRoaXMuZmlsZXMpIHtcblx0XHRcdHRoaXMuZmlsZXMgPSB2O1xuXHRcdFx0dGhpcy5vbkNoYW5nZUNhbGxiYWNrKHYpO1xuXHRcdH1cblx0fVxuXG5cdG9uQmx1cigpIHtcblx0XHR0aGlzLm9uVG91Y2hlZENhbGxiYWNrKCk7XG5cdH1cblxuXHRnZXQgZmlsZUxpc3QoKSB7XG5cdFx0cmV0dXJuIEFycmF5LmZyb20odGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcyk7XG5cdH1cblxuXHQvKipcblx0ICogUHJvcGFnYXRlcyB0aGUgaW5qZWN0ZWQgYHZhbHVlYC5cblx0ICovXG5cdHdyaXRlVmFsdWUodmFsdWU6IFNldDxGaWxlSXRlbT4pIHtcblx0XHRpZiAodmFsdWUgIT09IHRoaXMudmFsdWUpIHtcblx0XHRcdHRoaXMuZmlsZXMgPSB2YWx1ZTtcblx0XHR9XG5cdH1cblxuXHRjcmVhdGVGaWxlSXRlbShmaWxlKTogRmlsZUl0ZW0ge1xuXHRcdHJldHVybiB7XG5cdFx0XHR1cGxvYWRlZDogZmFsc2UsXG5cdFx0XHRzdGF0ZTogXCJlZGl0XCIsXG5cdFx0XHRpbnZhbGlkOiBmYWxzZSxcblx0XHRcdGludmFsaWRUZXh0OiBcIlwiLFxuXHRcdFx0ZmlsZTogZmlsZVxuXHRcdH07XG5cdH1cblxuXHRvbkZpbGVzQWRkZWQoKSB7XG5cdFx0Y29uc3QgbmV3RmlsZXMgPSBuZXcgU2V0PEZpbGVJdGVtPih0aGlzLmZpbGVzKTtcblx0XHRpZiAoIXRoaXMubXVsdGlwbGUpIHtcblx0XHRcdG5ld0ZpbGVzLmNsZWFyKCk7XG5cdFx0fVxuXHRcdGZvciAobGV0IGZpbGUgb2YgdGhpcy5maWxlTGlzdCkge1xuXHRcdFx0Y29uc3QgZmlsZUl0ZW0gPSB0aGlzLmNyZWF0ZUZpbGVJdGVtKGZpbGUpO1xuXHRcdFx0bmV3RmlsZXMuYWRkKGZpbGVJdGVtKTtcblx0XHR9XG5cblx0XHR0aGlzLnZhbHVlID0gbmV3RmlsZXM7XG5cdFx0dGhpcy5maWxlc0NoYW5nZS5lbWl0KG5ld0ZpbGVzKTtcblx0fVxuXG5cdG9uRHJhZ092ZXIoZXZlbnQpIHtcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdHRoaXMuZHJhZ092ZXIgPSB0cnVlO1xuXHR9XG5cblx0b25EcmFnTGVhdmUoZXZlbnQpIHtcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdHRoaXMuZHJhZ092ZXIgPSBmYWxzZTtcblx0fVxuXG5cdG9uRHJvcChldmVudCkge1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cblx0XHRjb25zdCB0cmFuc2ZlcnJlZEZpbGVzID0gQXJyYXkuZnJvbShldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xuXG5cdFx0dHJhbnNmZXJyZWRGaWxlcy5maWx0ZXIoKHsgbmFtZSwgdHlwZSB9KSA9PiB7XG5cdFx0XHQvLyBHZXQgdGhlIGZpbGUgZXh0ZW5zaW9uIGFuZCBhZGQgYSBcIi5cIiB0byB0aGUgYmVnaW5uaW5nLlxuXHRcdFx0Y29uc3QgZmlsZUV4dGVuc2lvbiA9IG5hbWUuc3BsaXQoXCIuXCIpLnBvcCgpLnJlcGxhY2UoL14vLCBcIi5cIik7XG5cdFx0XHQvLyBDaGVjayBpZiB0aGUgYWNjZXB0IGFycmF5IGNvbnRhaW5zIHRoZSBtaW1lIHR5cGUgb3IgZXh0ZW5zaW9uIG9mIHRoZSBmaWxlLlxuXHRcdFx0cmV0dXJuIHRoaXMuYWNjZXB0LmluY2x1ZGVzKHR5cGUpIHx8IHRoaXMuYWNjZXB0LmluY2x1ZGVzKGZpbGVFeHRlbnNpb24pIHx8ICF0aGlzLmFjY2VwdC5sZW5ndGg7XG5cdFx0fSkuZm9yRWFjaChmaWxlID0+IHtcblx0XHRcdGlmICghdGhpcy5maWxlcy5zaXplIHx8IHRoaXMubXVsdGlwbGUpIHtcblx0XHRcdFx0Y29uc3QgZmlsZUl0ZW0gPSB0aGlzLmNyZWF0ZUZpbGVJdGVtKGZpbGUpO1xuXHRcdFx0XHR0aGlzLmZpbGVzLmFkZChmaWxlSXRlbSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR0aGlzLmZpbGVzQ2hhbmdlLmVtaXQodGhpcy5maWxlcyk7XG5cdFx0dGhpcy52YWx1ZSA9IHRoaXMuZmlsZXM7XG5cdFx0dGhpcy5kcmFnT3ZlciA9IGZhbHNlO1xuXHR9XG5cblx0cmVtb3ZlRmlsZShmaWxlSXRlbSkge1xuXHRcdGxldCBzaG91bGRFbWl0ID0gdHJ1ZTtcblx0XHRpZiAodGhpcy5maWxlcykge1xuXHRcdFx0c2hvdWxkRW1pdCA9IHRoaXMuZmlsZXMuaGFzKGZpbGVJdGVtKTtcblx0XHRcdHRoaXMuZmlsZXMuZGVsZXRlKGZpbGVJdGVtKTtcblx0XHR9XG5cdFx0dGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XG5cdFx0aWYgKHNob3VsZEVtaXQpIHtcblx0XHRcdHRoaXMuZmlsZXNDaGFuZ2UuZW1pdCh0aGlzLmZpbGVzKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgaXNUZW1wbGF0ZSh2YWx1ZSkge1xuXHRcdHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVycyB0aGUgaW5qZWN0ZWQgZnVuY3Rpb24gdG8gY29udHJvbCB0aGUgdG91Y2ggdXNlIG9mIHRoZSBgRmlsZVVwbG9hZGVyYC5cblx0ICovXG5cdHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcblx0XHR0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XG5cdH1cblx0LyoqXG5cdCAqIFNldHMgYSBtZXRob2QgaW4gb3JkZXIgdG8gcHJvcGFnYXRlIGNoYW5nZXMgYmFjayB0byB0aGUgZm9ybS5cblx0ICovXG5cdHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuXHRcdHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuXHR9XG5cblx0LyoqXG5cdCAqIGBDb250cm9sVmFsdWVBY2Nlc3NvcmAgbWV0aG9kIHRvIHByb2dyYW1tYXRpY2FsbHkgZGlzYWJsZSB0aGUgY2hlY2tib3guXG5cdCAqXG5cdCAqIGV4OiBgdGhpcy5mb3JtR3JvdXAuZ2V0KFwibXlGaWxlVXBsb2FkZXJcIikuZGlzYWJsZSgpO2Bcblx0ICpcblx0ICogQHBhcmFtIGlzRGlzYWJsZWQgYHRydWVgIHRvIGRpc2FibGUgdGhlIGZpbGUgdXBsb2FkZXJcblx0ICovXG5cdHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuXHRcdHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuXHR9XG59XG4iXX0=
367
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmlsZS11cGxvYWRlci9maWxlLXVwbG9hZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFLekUsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRXZCOztHQUVHO0FBMEVILE1BQU0sT0FBTyxZQUFZO0lBZ0Z4QixZQUFzQixJQUFVO1FBQVYsU0FBSSxHQUFKLElBQUksQ0FBTTtRQTNFaEM7Ozs7V0FJRztRQUNNLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7UUFDekQ7O1dBRUc7UUFDTSxlQUFVLEdBQThELFNBQVMsQ0FBQztRQVMzRjs7V0FFRztRQUNNLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFDckI7Ozs7V0FJRztRQUNNLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDekI7O1dBRUc7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBSzFCOztXQUVHO1FBQ00saUJBQVksR0FBdUIsSUFBSSxDQUFDO1FBQ2pEOztXQUVHO1FBQ00sU0FBSSxHQUFHLEtBQUssQ0FBQztRQUt0Qjs7V0FFRztRQUNNLG1CQUFjLEdBQUcsaUJBQWlCLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBSzVFOztXQUVHO1FBQ00sVUFBSyxHQUFHLElBQUksR0FBRyxFQUFZLENBQUM7UUFDckM7O1dBRUc7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWhCLGdCQUFXLEdBQUcsSUFBSSxZ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QWIsS0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLO2dCQUlHLE1BQU07c0JBQWQsS0FBSztnQkFNRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQUlHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUcsY0FBYztzQkFBdEIsS0FBSztnQkFJa0IsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUliLEtBQUs7c0JBQWIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDb21wb25lbnQsXG5cdElucHV0LFxuXHRPdXRwdXQsXG5cdFZpZXdDaGlsZCxcblx0RXZlbnRFbWl0dGVyLFxuXHRUZW1wbGF0ZVJlZlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5cbmltcG9ydCB7IEkxOG4gfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9pMThuXCI7XG5pbXBvcnQgeyBGaWxlSXRlbSB9IGZyb20gXCIuL2ZpbGUtaXRlbS5pbnRlcmZhY2VcIjtcblxuY29uc3Qgbm9vcCA9ICgpID0+IHsgfTtcblxuLyoqXG4gKiBbU2VlIGRlbW9dKC4uLy4uLz9wYXRoPS9zdG9yeS9jb21wb25lbnRzLWZpbGUtdXBsb2FkZXItLWJhc2ljKVxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwiY2RzLWZpbGUtdXBsb2FkZXIsIGlibS1maWxlLXVwbG9hZGVyXCIsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFza2VsZXRvbjsgZWxzZSBza2VsZXRvblRlbXBsYXRlXCI+XG5cdFx0XHQ8bGFiZWwgW2Zvcl09XCJmaWxlVXBsb2FkZXJJZFwiIGNsYXNzPVwiY2RzLS1maWxlLS1sYWJlbFwiPnt7dGl0bGV9fTwvbGFiZWw+XG5cdFx0XHQ8cCBjbGFzcz1cImNkcy0tbGFiZWwtZGVzY3JpcHRpb25cIj57e2Rlc2NyaXB0aW9ufX08L3A+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY2RzLS1maWxlXCI+XG5cdFx0XHRcdDxsYWJlbFxuXHRcdFx0XHRcdCpuZ0lmPVwiZHJvcFwiXG5cdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLWZpbGUtYnJvd3NlLWJ0blwiXG5cdFx0XHRcdFx0KGtleXVwLmVudGVyKT1cImZpbGVJbnB1dC5jbGljaygpXCJcblx0XHRcdFx0XHQoa2V5dXAuc3BhY2UpPVwiZmlsZUlucHV0LmNsaWNrKClcIlxuXHRcdFx0XHRcdFtuZ0NsYXNzXT1cInsnY2RzLS1maWxlLWJyb3dzZS1idG4tLWRpc2FibGVkJzogZGlzYWJsZWR9XCJcblx0XHRcdFx0XHR0YWJpbmRleD1cIjBcIj5cblx0XHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0XHRjbGFzcz1cImNkcy0tZmlsZV9fZHJvcC1jb250YWluZXJcIlxuXHRcdFx0XHRcdFx0W25nQ2xhc3NdPVwieydjZHMtLWZpbGVfX2Ryb3AtY29udGFpbmVyLS1kcmFnLW92ZXInOiBkcmFnT3Zlcn1cIlxuXHRcdFx0XHRcdFx0cm9sZT1cImJ1dHRvblwiXG5cdFx0XHRcdFx0XHQoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIlxuXHRcdFx0XHRcdFx0W2F0dHIuZm9yXT1cImZpbGVVcGxvYWRlcklkXCJcblx0XHRcdFx0XHRcdChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxuXHRcdFx0XHRcdFx0KGRyYWdsZWF2ZSk9XCJvbkRyYWdMZWF2ZSgkZXZlbnQpXCJcblx0XHRcdFx0XHRcdChkcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCI+XG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGUoZHJvcFRleHQpXCI+e3tkcm9wVGV4dH19PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJpc1RlbXBsYXRlKGRyb3BUZXh0KVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRyb3BUZXh0XCI+PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9sYWJlbD5cblx0XHRcdFx0PGJ1dHRvblxuXHRcdFx0XHRcdCpuZ0lmPVwiIWRyb3BcIlxuXHRcdFx0XHRcdHR5cGU9XCJidXR0b25cIlxuXHRcdFx0XHRcdFtjZHNCdXR0b25dPVwiYnV0dG9uVHlwZVwiXG5cdFx0XHRcdFx0KGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCJcblx0XHRcdFx0XHRbYXR0ci5mb3JdPVwiZmlsZVVwbG9hZGVySWRcIlxuXHRcdFx0XHRcdFtzaXplXT1cInNpemVcIlxuXHRcdFx0XHRcdFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuXHRcdFx0XHRcdHt7YnV0dG9uVGV4dH19XG5cdFx0XHRcdDwvYnV0dG9uPlxuXHRcdFx0XHQ8aW5wdXRcblx0XHRcdFx0XHQjZmlsZUlucHV0XG5cdFx0XHRcdFx0dHlwZT1cImZpbGVcIlxuXHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1maWxlLWlucHV0XCJcblx0XHRcdFx0XHRbYWNjZXB0XT1cImFjY2VwdFwiXG5cdFx0XHRcdFx0W2lkXT1cImZpbGVVcGxvYWRlcklkXCJcblx0XHRcdFx0XHRbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuXHRcdFx0XHRcdHRhYmluZGV4PVwiLTFcIlxuXHRcdFx0XHRcdChjaGFuZ2UpPVwib25GaWxlc0FkZGVkKClcIlxuXHRcdFx0XHRcdFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiLz5cblx0XHRcdFx0PGRpdiBjbGFzcz1cImNkcy0tZmlsZS1jb250YWluZXJcIj5cblx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWxlSXRlbSBvZiBmaWxlc1wiPlxuXHRcdFx0XHRcdFx0PGNkcy1maWxlXG5cdFx0XHRcdFx0XHRcdFtmaWxlSXRlbV09XCJmaWxlSXRlbVwiXG5cdFx0XHRcdFx0XHRcdChyZW1vdmUpPVwicmVtb3ZlRmlsZShmaWxlSXRlbSlcIlxuXHRcdFx0XHRcdFx0XHRbc2l6ZV09XCJmaWxlSXRlbVNpemVcIj5cblx0XHRcdFx0XHRcdDwvY2RzLWZpbGU+XG5cdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9uZy1jb250YWluZXI+XG5cblx0XHQ8bmctdGVtcGxhdGUgI3NrZWxldG9uVGVtcGxhdGU+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY2RzLS1za2VsZXRvbl9fdGV4dFwiIHN0eWxlPVwid2lkdGg6IDEwMHB4XCI+PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY2RzLS1za2VsZXRvbl9fdGV4dFwiIHN0eWxlPVwid2lkdGg6IDIyNXB4XCI+PC9kaXY+XG5cdFx0XHQ8YnV0dG9uIGNkc0J1dHRvbiBza2VsZXRvbj1cInRydWVcIj48L2J1dHRvbj5cblx0XHQ8L25nLXRlbXBsYXRlPlxuXHRgLFxuXHRwcm92aWRlcnM6IFtcblx0XHR7XG5cdFx0XHRwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcblx0XHRcdHVzZUV4aXN0aW5nOiBGaWxlVXBsb2FkZXIsXG5cdFx0XHRtdWx0aTogdHJ1ZVxuXHRcdH1cblx0XVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkZXIgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cdC8qKlxuXHQgKiBDb3VudGVyIHVzZWQgdG8gY3JlYXRlIHVuaXF1ZSBpZHMgZm9yIGZpbGUtdXBsb2FkZXIgY29tcG9uZW50c1xuXHQgKi9cblx0c3RhdGljIGZpbGVVcGxvYWRlckNvdW50ID0gMDtcblx0LyoqXG5cdCAqIEFjY2Vzc2libGUgdGV4dCBmb3IgdGhlIGJ1dHRvbiB0aGF0IG9wZW5zIHRoZSB1cGxvYWQgd2luZG93LlxuXHQgKlxuXHQgKiBEZWZhdWx0cyB0byB0aGUgYEZJTEVfVVBMT0FERVIuT1BFTmAgdmFsdWUgZnJvbSB0aGUgaTE4biBzZXJ2aWNlXG5cdCAqL1xuXHRASW5wdXQoKSBidXR0b25UZXh0ID0gdGhpcy5pMThuLmdldCgpLkZJTEVfVVBMT0FERVIuT1BFTjtcblx0LyoqXG5cdCAqIFR5cGUgc2V0IGZvciBidXR0b25cblx0ICovXG5cdEBJbnB1dCgpIGJ1dHRvblR5cGU6IFwicHJpbWFyeVwiIHwgXCJzZWNvbmRhcnlcIiB8IFwidGVydGlhcnlcIiB8IFwiZ2hvc3RcIiB8IFwiZGFuZ2VyXCIgPSBcInByaW1hcnlcIjtcblx0LyoqXG5cdCAqIFRleHQgc2V0IHRvIHRoZSB0aXRsZVxuXHQgKi9cblx0QElucHV0KCkgdGl0bGU6IHN0cmluZztcblx0LyoqXG5cdCAqIFRleHQgc2V0IHRvIHRoZSBkZXNjcmlwdGlvblxuXHQgKi9cblx0QElucHV0KCkgZGVzY3JpcHRpb246IHN0cmluZztcblx0LyoqXG5cdCAqIFNwZWNpZnkgdGhlIHR5cGVzIG9mIGZpbGVzIHRoYXQgdGhlIGlucHV0IHNob3VsZCBiZSBhYmxlIHRvIHJlY2VpdmVcblx0ICovXG5cdEBJbnB1dCgpIGFjY2VwdCA9IFtdO1xuXHQvKipcblx0ICogU2V0IHRvIGBmYWxzZWAgdG8gdGVsbCB0aGUgY29tcG9uZW50IHRvIG9ubHkgYWNjZXB0IGEgc2luZ2xlIGZpbGUgb24gdXBsb2FkLlxuXHQgKlxuXHQgKiBEZWZhdWx0cyB0byBgdHJ1ZWAuIEFjY2VwdHMgbXVsdGlwbGUgZmlsZXMuXG5cdCAqL1xuXHRASW5wdXQoKSBtdWx0aXBsZSA9IHRydWU7XG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIGZvciBhIGxvYWRpbmcgZmlsZSB1cGxvYWRlci5cblx0ICovXG5cdEBJbnB1dCgpIHNrZWxldG9uID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBzaXplIG9mIHRoZSBidXR0b24uXG5cdCAqL1xuXHRASW5wdXQoKSBzaXplOiBcInNtXCIgfCBcIm1kXCIgfCBcImxnXCI7XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBzaXplIG9mIHRoZSBmaWxlIGl0ZW1zXG5cdCAqL1xuXHRASW5wdXQoKSBmaWxlSXRlbVNpemU6IFwic21cIiB8IFwibWRcIiB8IFwibGdcIiA9IFwibGdcIjtcblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgdG8gZW5hYmxlIGRyYWcgYW5kIGRyb3AuXG5cdCAqL1xuXHRASW5wdXQoKSBkcm9wID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSB0ZXh0IHNob3duIGluIGRyYWcgYW5kIGRyb3AgYm94LlxuXHQgKi9cblx0QElucHV0KCkgZHJvcFRleHQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cdC8qKlxuXHQgKiBQcm92aWRlcyBhIHVuaXF1ZSBpZCBmb3IgdGhlIHVuZGVybHlpbmcgYDxpbnB1dD5gIG5vZGVcblx0ICovXG5cdEBJbnB1dCgpIGZpbGVVcGxvYWRlcklkID0gYGZpbGUtdXBsb2FkZXItJHtGaWxlVXBsb2FkZXIuZmlsZVVwbG9hZGVyQ291bnR9YDtcblx0LyoqXG5cdCAqIE1haW50YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgdmlldyBET00gZWxlbWVudCBvZiB0aGUgdW5kZXJseWluZyA8aW5wdXQ+IG5vZGVcblx0ICovXG5cdEBWaWV3Q2hpbGQoXCJmaWxlSW5wdXRcIikgZmlsZUlucHV0O1xuXHQvKipcblx0ICogVGhlIGxpc3Qgb2YgZmlsZXMgdGhhdCBoYXZlIGJlZW4gc3VibWl0dGVkIHRvIGJlIHVwbG9hZGVkXG5cdCAqL1xuXHRASW5wdXQoKSBmaWxlcyA9IG5ldyBTZXQ8RmlsZUl0ZW0+KCk7XG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIHRvIGRpc2FibGUgdXBsb2FkIGJ1dHRvblxuXHQgKi9cblx0QElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuXHRAT3V0cHV0KCkgZmlsZXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuXHQvKipcblx0ICogQ29udHJvbHMgdGhlIHN0YXRlIG9mIHRoZSBkcmFnIGFuZCBkcm9wIGZpbGUgY29udGFpbmVyXG5cdCAqL1xuXHRwdWJsaWMgZHJhZ092ZXIgPSBmYWxzZTtcblxuXHRwcm90ZWN0ZWQgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xuXHRwcm90ZWN0ZWQgb25DaGFuZ2VDYWxsYmFjazogKF86IFNldDxGaWxlSXRlbT4pID0+IHZvaWQgPSBub29wO1xuXG5cdGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpMThuOiBJMThuKSB7XG5cdFx0RmlsZVVwbG9hZGVyLmZpbGVVcGxvYWRlckNvdW50Kys7XG5cdH1cblxuXHQvKipcblx0ICogU3BlY2lmaWVzIHRoZSBwcm9wZXJ0eSB0byBiZSB1c2VkIGFzIHRoZSByZXR1cm4gdmFsdWUgdG8gYG5nTW9kZWxgIGFuZCByZWFjdGl2ZSBmb3Jtcy5cblx0ICogVXBkYXRlcyBgdGhpcy5maWxlc2AuXG5cdCAqL1xuXHRnZXQgdmFsdWUoKTogU2V0PEZpbGVJdGVtPiB7XG5cdFx0cmV0dXJuIHRoaXMuZmlsZXM7XG5cdH1cblx0c2V0IHZhbHVlKHY6IFNldDxGaWxlSXRlbT4pIHtcblx0XHRpZiAodiAhPT0gdGhpcy5maWxlcykge1xuXHRcdFx0dGhpcy5maWxlcyA9IHY7XG5cdFx0XHR0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodik7XG5cdFx0fVxuXHR9XG5cblx0b25CbHVyKCkge1xuXHRcdHRoaXMub25Ub3VjaGVkQ2FsbGJhY2soKTtcblx0fVxuXG5cdGdldCBmaWxlTGlzdCgpIHtcblx0XHRyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQcm9wYWdhdGVzIHRoZSBpbmplY3RlZCBgdmFsdWVgLlxuXHQgKi9cblx0d3JpdGVWYWx1ZSh2YWx1ZTogU2V0PEZpbGVJdGVtPikge1xuXHRcdGlmICh2YWx1ZSAhPT0gdGhpcy52YWx1ZSkge1xuXHRcdFx0dGhpcy5maWxlcyA9IHZhbHVlO1xuXHRcdH1cblx0fVxuXG5cdGNyZWF0ZUZpbGVJdGVtKGZpbGUpOiBGaWxlSXRlbSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHVwbG9hZGVkOiBmYWxzZSxcblx0XHRcdHN0YXRlOiBcImVkaXRcIixcblx0XHRcdGludmFsaWQ6IGZhbHNlLFxuXHRcdFx0aW52YWxpZFRleHQ6IFwiXCIsXG5cdFx0XHRmaWxlOiBmaWxlXG5cdFx0fTtcblx0fVxuXG5cdG9uRmlsZXNBZGRlZCgpIHtcblx0XHRjb25zdCBuZXdGaWxlcyA9IG5ldyBTZXQ8RmlsZUl0ZW0+KHRoaXMuZmlsZXMpO1xuXHRcdGlmICghdGhpcy5tdWx0aXBsZSkge1xuXHRcdFx0bmV3RmlsZXMuY2xlYXIoKTtcblx0XHR9XG5cdFx0Zm9yIChsZXQgZmlsZSBvZiB0aGlzLmZpbGVMaXN0KSB7XG5cdFx0XHRjb25zdCBmaWxlSXRlbSA9IHRoaXMuY3JlYXRlRmlsZUl0ZW0oZmlsZSk7XG5cdFx0XHRuZXdGaWxlcy5hZGQoZmlsZUl0ZW0pO1xuXHRcdH1cblxuXHRcdHRoaXMudmFsdWUgPSBuZXdGaWxlcztcblx0XHR0aGlzLmZpbGVzQ2hhbmdlLmVtaXQobmV3RmlsZXMpO1xuXHR9XG5cblx0b25EcmFnT3ZlcihldmVudCkge1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0dGhpcy5kcmFnT3ZlciA9IHRydWU7XG5cdH1cblxuXHRvbkRyYWdMZWF2ZShldmVudCkge1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0dGhpcy5kcmFnT3ZlciA9IGZhbHNlO1xuXHR9XG5cblx0b25Ecm9wKGV2ZW50KSB7XG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuXHRcdGNvbnN0IHRyYW5zZmVycmVkRmlsZXM6IEFycmF5PEZpbGU+ID0gQXJyYXkuZnJvbShldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xuXHRcdGNvbnN0IG5ld0ZpbGVzID0gbmV3IFNldDxGaWxlSXRlbT4odGhpcy5maWxlcyk7XG5cblx0XHR0cmFuc2ZlcnJlZEZpbGVzLmZpbHRlcigoeyBuYW1lLCB0eXBlIH0pID0+IHtcblx0XHRcdC8vIEdldCB0aGUgZmlsZSBleHRlbnNpb24gYW5kIGFkZCBhIFwiLlwiIHRvIHRoZSBiZWdpbm5pbmcuXG5cdFx0XHRjb25zdCBmaWxlRXh0ZW5zaW9uID0gbmFtZS5zcGxpdChcIi5cIikucG9wKCkucmVwbGFjZSgvXi8sIFwiLlwiKTtcblx0XHRcdC8vIENoZWNrIGlmIHRoZSBhY2NlcHQgYXJyYXkgY29udGFpbnMgdGhlIG1pbWUgdHlwZSBvciBleHRlbnNpb24gb2YgdGhlIGZpbGUuXG5cdFx0XHRyZXR1cm4gdGhpcy5hY2NlcHQuaW5jbHVkZXModHlwZSkgfHwgdGhpcy5hY2NlcHQuaW5jbHVkZXMoZmlsZUV4dGVuc2lvbikgfHwgIXRoaXMuYWNjZXB0Lmxlbmd0aDtcblx0XHR9KS5mb3JFYWNoKGZpbGUgPT4ge1xuXHRcdFx0aWYgKCFuZXdGaWxlcy5zaXplIHx8IHRoaXMubXVsdGlwbGUpIHtcblx0XHRcdFx0Y29uc3QgZmlsZUl0ZW0gPSB0aGlzLmNyZWF0ZUZpbGVJdGVtKGZpbGUpO1xuXHRcdFx0XHRuZXdGaWxlcy5hZGQoZmlsZUl0ZW0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dGhpcy52YWx1ZSA9IG5ld0ZpbGVzO1xuXHRcdHRoaXMuZmlsZXNDaGFuZ2UuZW1pdChuZXdGaWxlcyk7XG5cdFx0dGhpcy5kcmFnT3ZlciA9IGZhbHNlO1xuXHR9XG5cblx0cmVtb3ZlRmlsZShmaWxlSXRlbSkge1xuXHRcdC8vIERlbGV0aW5nIGFuIGl0ZW0gZnJvbSB0aGlzLmZpbGVzIHJlbW92ZXMgdGhlIDxpYm0tZmlsZT4gY29tcG9uZW50LFxuXHRcdC8vIHdoaWNoIHRyaWdnZXJzIGl0cyBuZ09uRGVzdHJveSgpLCB3aGljaCBmaXJlcyB0aGUgKHJlbW92ZSkgZXZlbnQgYWdhaW4uXG5cdFx0Ly8gU28sIChyZW1vdmUpIG1heSBkb3VibGUtZmlyZSBhbmQgd2UgbmVlZCB0byBoYW5kbGUgaXQgaGVyZS5cblx0XHRpZiAodGhpcy5maWxlcyAmJiB0aGlzLmZpbGVzLmhhcyhmaWxlSXRlbSkpIHtcblx0XHRcdGNvbnN0IG5ld0ZpbGVzID0gbmV3IFNldDxGaWxlSXRlbT4odGhpcy5maWxlcyk7XG5cdFx0XHRuZXdGaWxlcy5kZWxldGUoZmlsZUl0ZW0pO1xuXHRcdFx0dGhpcy5maWxlc0NoYW5nZS5lbWl0KG5ld0ZpbGVzKTtcblx0XHRcdHRoaXMudmFsdWUgPSBuZXdGaWxlcztcblx0XHR9XG5cdFx0dGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XG5cdH1cblxuXHRwdWJsaWMgaXNUZW1wbGF0ZSh2YWx1ZSkge1xuXHRcdHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVycyB0aGUgaW5qZWN0ZWQgZnVuY3Rpb24gdG8gY29udHJvbCB0aGUgdG91Y2ggdXNlIG9mIHRoZSBgRmlsZVVwbG9hZGVyYC5cblx0ICovXG5cdHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcblx0XHR0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XG5cdH1cblx0LyoqXG5cdCAqIFNldHMgYSBtZXRob2QgaW4gb3JkZXIgdG8gcHJvcGFnYXRlIGNoYW5nZXMgYmFjayB0byB0aGUgZm9ybS5cblx0ICovXG5cdHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuXHRcdHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuXHR9XG5cblx0LyoqXG5cdCAqIGBDb250cm9sVmFsdWVBY2Nlc3NvcmAgbWV0aG9kIHRvIHByb2dyYW1tYXRpY2FsbHkgZGlzYWJsZSB0aGUgY2hlY2tib3guXG5cdCAqXG5cdCAqIGV4OiBgdGhpcy5mb3JtR3JvdXAuZ2V0KFwibXlGaWxlVXBsb2FkZXJcIikuZGlzYWJsZSgpO2Bcblx0ICpcblx0ICogQHBhcmFtIGlzRGlzYWJsZWQgYHRydWVgIHRvIGRpc2FibGUgdGhlIGZpbGUgdXBsb2FkZXJcblx0ICovXG5cdHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuXHRcdHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuXHR9XG59XG4iXX0=
@@ -22,7 +22,8 @@ NFormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
22
22
  ToggleModule,
23
23
  RadioModule,
24
24
  InputModule,
25
- ButtonModule] });
25
+ ButtonModule,
26
+ InputModule] });
26
27
  NFormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NFormsModule, imports: [CommonModule,
27
28
  FormsModule,
28
29
  CheckboxModule,
@@ -33,7 +34,8 @@ NFormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
33
34
  ToggleModule,
34
35
  RadioModule,
35
36
  InputModule,
36
- ButtonModule] });
37
+ ButtonModule,
38
+ InputModule] });
37
39
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NFormsModule, decorators: [{
38
40
  type: NgModule,
39
41
  args: [{
@@ -42,7 +44,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
42
44
  ToggleModule,
43
45
  RadioModule,
44
46
  InputModule,
45
- ButtonModule
47
+ ButtonModule,
48
+ InputModule
46
49
  ],
47
50
  imports: [
48
51
  CommonModule,
@@ -55,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
55
58
  ]
56
59
  }]
57
60
  }] });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Zvcm1zL2Zvcm1zLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLFVBQVU7QUFDVixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQW9CaEUsTUFBTSxPQUFPLFlBQVk7O3lHQUFaLFlBQVk7MEdBQVosWUFBWSxZQVR2QixZQUFZO1FBQ1osV0FBVztRQUNYLGNBQWM7UUFDZCxZQUFZO1FBQ1osV0FBVztRQUNYLFdBQVc7UUFDWCxZQUFZLGFBYlosY0FBYztRQUNkLFlBQVk7UUFDWixXQUFXO1FBQ1gsV0FBVztRQUNYLFlBQVk7MEdBWUQsWUFBWSxZQVR2QixZQUFZO1FBQ1osV0FBVztRQUNYLGNBQWM7UUFDZCxZQUFZO1FBQ1osV0FBVztRQUNYLFdBQVc7UUFDWCxZQUFZLEVBYlosY0FBYztRQUNkLFlBQVk7UUFDWixXQUFXO1FBQ1gsV0FBVztRQUNYLFlBQVk7MkZBWUQsWUFBWTtrQkFsQnhCLFFBQVE7bUJBQUM7b0JBQ1QsT0FBTyxFQUFFO3dCQUNSLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFdBQVc7d0JBQ1gsWUFBWTtxQkFDWjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1IsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFdBQVc7d0JBQ1gsWUFBWTtxQkFDWjtpQkFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIG1vZHVsZXNcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5cbi8vIGltcG9ydHNcbmltcG9ydCB7IENoZWNrYm94TW9kdWxlIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvY2hlY2tib3hcIjtcbmltcG9ydCB7IFRvZ2dsZU1vZHVsZSB9IGZyb20gXCJjYXJib24tY29tcG9uZW50cy1hbmd1bGFyL3RvZ2dsZVwiO1xuaW1wb3J0IHsgUmFkaW9Nb2R1bGUgfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9yYWRpb1wiO1xuaW1wb3J0IHsgSW5wdXRNb2R1bGUgfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9pbnB1dFwiO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvYnV0dG9uXCI7XG5cbkBOZ01vZHVsZSh7XG5cdGV4cG9ydHM6IFtcblx0XHRDaGVja2JveE1vZHVsZSxcblx0XHRUb2dnbGVNb2R1bGUsXG5cdFx0UmFkaW9Nb2R1bGUsXG5cdFx0SW5wdXRNb2R1bGUsXG5cdFx0QnV0dG9uTW9kdWxlXG5cdF0sXG5cdGltcG9ydHM6IFtcblx0XHRDb21tb25Nb2R1bGUsXG5cdFx0Rm9ybXNNb2R1bGUsXG5cdFx0Q2hlY2tib3hNb2R1bGUsXG5cdFx0VG9nZ2xlTW9kdWxlLFxuXHRcdFJhZGlvTW9kdWxlLFxuXHRcdElucHV0TW9kdWxlLFxuXHRcdEJ1dHRvbk1vZHVsZVxuXHRdXG59KVxuZXhwb3J0IGNsYXNzIE5Gb3Jtc01vZHVsZSB7IH1cbiJdfQ==
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Zvcm1zL2Zvcm1zLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLFVBQVU7QUFDVixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQXFCaEUsTUFBTSxPQUFPLFlBQVk7O3lHQUFaLFlBQVk7MEdBQVosWUFBWSxZQVR2QixZQUFZO1FBQ1osV0FBVztRQUNYLGNBQWM7UUFDZCxZQUFZO1FBQ1osV0FBVztRQUNYLFdBQVc7UUFDWCxZQUFZLGFBZFosY0FBYztRQUNkLFlBQVk7UUFDWixXQUFXO1FBQ1gsV0FBVztRQUNYLFlBQVk7UUFDWixXQUFXOzBHQVlBLFlBQVksWUFUdkIsWUFBWTtRQUNaLFdBQVc7UUFDWCxjQUFjO1FBQ2QsWUFBWTtRQUNaLFdBQVc7UUFDWCxXQUFXO1FBQ1gsWUFBWSxFQWRaLGNBQWM7UUFDZCxZQUFZO1FBQ1osV0FBVztRQUNYLFdBQVc7UUFDWCxZQUFZO1FBQ1osV0FBVzsyRkFZQSxZQUFZO2tCQW5CeEIsUUFBUTttQkFBQztvQkFDVCxPQUFPLEVBQUU7d0JBQ1IsY0FBYzt3QkFDZCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLFdBQVc7cUJBQ1g7b0JBQ0QsT0FBTyxFQUFFO3dCQUNSLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxjQUFjO3dCQUNkLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxXQUFXO3dCQUNYLFlBQVk7cUJBQ1o7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBtb2R1bGVzXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuXG4vLyBpbXBvcnRzXG5pbXBvcnQgeyBDaGVja2JveE1vZHVsZSB9IGZyb20gXCJjYXJib24tY29tcG9uZW50cy1hbmd1bGFyL2NoZWNrYm94XCI7XG5pbXBvcnQgeyBUb2dnbGVNb2R1bGUgfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci90b2dnbGVcIjtcbmltcG9ydCB7IFJhZGlvTW9kdWxlIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvcmFkaW9cIjtcbmltcG9ydCB7IElucHV0TW9kdWxlIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvaW5wdXRcIjtcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gXCJjYXJib24tY29tcG9uZW50cy1hbmd1bGFyL2J1dHRvblwiO1xuXG5ATmdNb2R1bGUoe1xuXHRleHBvcnRzOiBbXG5cdFx0Q2hlY2tib3hNb2R1bGUsXG5cdFx0VG9nZ2xlTW9kdWxlLFxuXHRcdFJhZGlvTW9kdWxlLFxuXHRcdElucHV0TW9kdWxlLFxuXHRcdEJ1dHRvbk1vZHVsZSxcblx0XHRJbnB1dE1vZHVsZVxuXHRdLFxuXHRpbXBvcnRzOiBbXG5cdFx0Q29tbW9uTW9kdWxlLFxuXHRcdEZvcm1zTW9kdWxlLFxuXHRcdENoZWNrYm94TW9kdWxlLFxuXHRcdFRvZ2dsZU1vZHVsZSxcblx0XHRSYWRpb01vZHVsZSxcblx0XHRJbnB1dE1vZHVsZSxcblx0XHRCdXR0b25Nb2R1bGVcblx0XVxufSlcbmV4cG9ydCBjbGFzcyBORm9ybXNNb2R1bGUgeyB9XG4iXX0=
@@ -4,6 +4,6 @@ export { NFormsModule } from "./forms.module";
4
4
  export { CheckboxModule, Checkbox, CheckboxState } from "carbon-components-angular/checkbox";
5
5
  export { ToggleModule, Toggle, ToggleState } from "carbon-components-angular/toggle";
6
6
  export { RadioModule, Radio, RadioChange, RadioGroup } from "carbon-components-angular/radio";
7
- export { InputModule, Label, TextArea, TextInput } from "carbon-components-angular/input";
7
+ export { InputModule, Label, TextArea, TextInput, TextInputLabelComponent, TextareaLabelComponent } from "carbon-components-angular/input";
8
8
  export { ButtonModule, Button, ButtonSet, IconButton } from "carbon-components-angular/button";
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZm9ybXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEJBQTBCO0FBQzFCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxxREFBcUQ7QUFDckQsT0FBTyxFQUNOLGNBQWMsRUFDZCxRQUFRLEVBQ1IsYUFBYSxFQUViLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUNOLFlBQVksRUFDWixNQUFNLEVBQ04sV0FBVyxFQUNYLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxFQUNOLFdBQVcsRUFDWCxLQUFLLEVBQ0wsV0FBVyxFQUNYLFVBQVUsRUFDVixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFDTixXQUFXLEVBQ1gsS0FBSyxFQUNMLFFBQVEsRUFDUixTQUFTLEVBQ1QsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQ04sWUFBWSxFQUNaLE1BQU0sRUFHTixTQUFTLEVBRVQsVUFBVSxFQUNWLE1BQU0sa0NBQWtDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHBvcnQgdGhlIGZvcm1zIG1vZHVsZVxuZXhwb3J0IHsgTkZvcm1zTW9kdWxlIH0gZnJvbSBcIi4vZm9ybXMubW9kdWxlXCI7XG5cbi8vIHJlLWV4cG9ydCBmcm9tIGZvcm0gcmVsYXRlZCBtb2R1bGVzIGFuZCBjb21wb25lbnRzXG5leHBvcnQge1xuXHRDaGVja2JveE1vZHVsZSxcblx0Q2hlY2tib3gsXG5cdENoZWNrYm94U3RhdGUsXG5cdENoZWNrYm94VmFsdWVcbn0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvY2hlY2tib3hcIjtcbmV4cG9ydCB7XG5cdFRvZ2dsZU1vZHVsZSxcblx0VG9nZ2xlLFxuXHRUb2dnbGVTdGF0ZVxufSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci90b2dnbGVcIjtcbmV4cG9ydCB7XG5cdFJhZGlvTW9kdWxlLFxuXHRSYWRpbyxcblx0UmFkaW9DaGFuZ2UsXG5cdFJhZGlvR3JvdXBcbn0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvcmFkaW9cIjtcbmV4cG9ydCB7XG5cdElucHV0TW9kdWxlLFxuXHRMYWJlbCxcblx0VGV4dEFyZWEsXG5cdFRleHRJbnB1dFxufSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9pbnB1dFwiO1xuZXhwb3J0IHtcblx0QnV0dG9uTW9kdWxlLFxuXHRCdXR0b24sXG5cdEJ1dHRvblNpemUsXG5cdEJ1dHRvblR5cGUsXG5cdEJ1dHRvblNldCxcblx0RGFuZ2VyQnV0dG9uVHlwZSxcblx0SWNvbkJ1dHRvblxufSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9idXR0b25cIjtcbiJdfQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZm9ybXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEJBQTBCO0FBQzFCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxxREFBcUQ7QUFDckQsT0FBTyxFQUNOLGNBQWMsRUFDZCxRQUFRLEVBQ1IsYUFBYSxFQUViLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUNOLFlBQVksRUFDWixNQUFNLEVBQ04sV0FBVyxFQUNYLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxFQUNOLFdBQVcsRUFDWCxLQUFLLEVBQ0wsV0FBVyxFQUNYLFVBQVUsRUFDVixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFDTixXQUFXLEVBQ1gsS0FBSyxFQUNMLFFBQVEsRUFDUixTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFDTixZQUFZLEVBQ1osTUFBTSxFQUdOLFNBQVMsRUFFVCxVQUFVLEVBQ1YsTUFBTSxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGV4cG9ydCB0aGUgZm9ybXMgbW9kdWxlXG5leHBvcnQgeyBORm9ybXNNb2R1bGUgfSBmcm9tIFwiLi9mb3Jtcy5tb2R1bGVcIjtcblxuLy8gcmUtZXhwb3J0IGZyb20gZm9ybSByZWxhdGVkIG1vZHVsZXMgYW5kIGNvbXBvbmVudHNcbmV4cG9ydCB7XG5cdENoZWNrYm94TW9kdWxlLFxuXHRDaGVja2JveCxcblx0Q2hlY2tib3hTdGF0ZSxcblx0Q2hlY2tib3hWYWx1ZVxufSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9jaGVja2JveFwiO1xuZXhwb3J0IHtcblx0VG9nZ2xlTW9kdWxlLFxuXHRUb2dnbGUsXG5cdFRvZ2dsZVN0YXRlXG59IGZyb20gXCJjYXJib24tY29tcG9uZW50cy1hbmd1bGFyL3RvZ2dsZVwiO1xuZXhwb3J0IHtcblx0UmFkaW9Nb2R1bGUsXG5cdFJhZGlvLFxuXHRSYWRpb0NoYW5nZSxcblx0UmFkaW9Hcm91cFxufSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9yYWRpb1wiO1xuZXhwb3J0IHtcblx0SW5wdXRNb2R1bGUsXG5cdExhYmVsLFxuXHRUZXh0QXJlYSxcblx0VGV4dElucHV0LFxuXHRUZXh0SW5wdXRMYWJlbENvbXBvbmVudCxcblx0VGV4dGFyZWFMYWJlbENvbXBvbmVudFxufSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9pbnB1dFwiO1xuZXhwb3J0IHtcblx0QnV0dG9uTW9kdWxlLFxuXHRCdXR0b24sXG5cdEJ1dHRvblNpemUsXG5cdEJ1dHRvblR5cGUsXG5cdEJ1dHRvblNldCxcblx0RGFuZ2VyQnV0dG9uVHlwZSxcblx0SWNvbkJ1dHRvblxufSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9idXR0b25cIjtcbiJdfQ==
@@ -2,4 +2,6 @@ export * from "./input.directive";
2
2
  export * from "./input.module";
3
3
  export * from "./label.component";
4
4
  export * from "./text-area.directive";
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5wdXQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2lucHV0LmRpcmVjdGl2ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW5wdXQubW9kdWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9sYWJlbC5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RleHQtYXJlYS5kaXJlY3RpdmVcIjtcbiJdfQ==
5
+ export * from "./text-input-label.component";
6
+ export * from "./textarea-label.component";
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5wdXQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9pbnB1dC5kaXJlY3RpdmVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2lucHV0Lm1vZHVsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGFiZWwuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXh0LWFyZWEuZGlyZWN0aXZlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZXh0LWlucHV0LWxhYmVsLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGV4dGFyZWEtbGFiZWwuY29tcG9uZW50XCI7XG4iXX0=
@@ -6,6 +6,8 @@ import { CommonModule } from "@angular/common";
6
6
  import { Label } from "./label.component";
7
7
  import { TextInput } from "./input.directive";
8
8
  import { TextArea } from "./text-area.directive";
9
+ import { TextareaLabelComponent } from "./textarea-label.component";
10
+ import { TextInputLabelComponent } from "./text-input-label.component";
9
11
  import { IconModule } from "carbon-components-angular/icon";
10
12
  import * as i0 from "@angular/core";
11
13
  export class InputModule {
@@ -13,9 +15,13 @@ export class InputModule {
13
15
  InputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: InputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
16
  InputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: InputModule, declarations: [Label,
15
17
  TextInput,
16
- TextArea], imports: [CommonModule,
18
+ TextArea,
19
+ TextareaLabelComponent,
20
+ TextInputLabelComponent], imports: [CommonModule,
17
21
  FormsModule,
18
22
  IconModule], exports: [Label,
23
+ TextareaLabelComponent,
24
+ TextInputLabelComponent,
19
25
  TextInput,
20
26
  TextArea] });
21
27
  InputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: InputModule, imports: [CommonModule,
@@ -27,10 +33,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
27
33
  declarations: [
28
34
  Label,
29
35
  TextInput,
30
- TextArea
36
+ TextArea,
37
+ TextareaLabelComponent,
38
+ TextInputLabelComponent
31
39
  ],
32
40
  exports: [
33
41
  Label,
42
+ TextareaLabelComponent,
43
+ TextInputLabelComponent,
34
44
  TextInput,
35
45
  TextArea
36
46
  ],
@@ -41,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
41
51
  ]
42
52
  }]
43
53
  }] });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lucHV0L2lucHV0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLFVBQVU7QUFDVixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7O0FBbUI1RCxNQUFNLE9BQU8sV0FBVzs7d0dBQVgsV0FBVzt5R0FBWCxXQUFXLGlCQWZ0QixLQUFLO1FBQ0wsU0FBUztRQUNULFFBQVEsYUFRUixZQUFZO1FBQ1osV0FBVztRQUNYLFVBQVUsYUFQVixLQUFLO1FBQ0wsU0FBUztRQUNULFFBQVE7eUdBUUcsV0FBVyxZQUx0QixZQUFZO1FBQ1osV0FBVztRQUNYLFVBQVU7MkZBR0MsV0FBVztrQkFqQnZCLFFBQVE7bUJBQUM7b0JBQ1QsWUFBWSxFQUFFO3dCQUNiLEtBQUs7d0JBQ0wsU0FBUzt3QkFDVCxRQUFRO3FCQUNSO29CQUNELE9BQU8sRUFBRTt3QkFDUixLQUFLO3dCQUNMLFNBQVM7d0JBQ1QsUUFBUTtxQkFDUjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1IsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFVBQVU7cUJBQ1Y7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBtb2R1bGVzXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuXG4vLyBpbXBvcnRzXG5pbXBvcnQgeyBMYWJlbCB9IGZyb20gXCIuL2xhYmVsLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgVGV4dElucHV0IH0gZnJvbSBcIi4vaW5wdXQuZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBUZXh0QXJlYSB9IGZyb20gXCIuL3RleHQtYXJlYS5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IEljb25Nb2R1bGUgfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9pY29uXCI7XG5cbkBOZ01vZHVsZSh7XG5cdGRlY2xhcmF0aW9uczogW1xuXHRcdExhYmVsLFxuXHRcdFRleHRJbnB1dCxcblx0XHRUZXh0QXJlYVxuXHRdLFxuXHRleHBvcnRzOiBbXG5cdFx0TGFiZWwsXG5cdFx0VGV4dElucHV0LFxuXHRcdFRleHRBcmVhXG5cdF0sXG5cdGltcG9ydHM6IFtcblx0XHRDb21tb25Nb2R1bGUsXG5cdFx0Rm9ybXNNb2R1bGUsXG5cdFx0SWNvbk1vZHVsZVxuXHRdXG59KVxuZXhwb3J0IGNsYXNzIElucHV0TW9kdWxlIHsgfVxuIl19
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lucHV0L2lucHV0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLFVBQVU7QUFDVixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7O0FBdUI1RCxNQUFNLE9BQU8sV0FBVzs7d0dBQVgsV0FBVzt5R0FBWCxXQUFXLGlCQW5CdEIsS0FBSztRQUNMLFNBQVM7UUFDVCxRQUFRO1FBQ1Isc0JBQXNCO1FBQ3RCLHVCQUF1QixhQVV2QixZQUFZO1FBQ1osV0FBVztRQUNYLFVBQVUsYUFUVixLQUFLO1FBQ0wsc0JBQXNCO1FBQ3RCLHVCQUF1QjtRQUN2QixTQUFTO1FBQ1QsUUFBUTt5R0FRRyxXQUFXLFlBTHRCLFlBQVk7UUFDWixXQUFXO1FBQ1gsVUFBVTsyRkFHQyxXQUFXO2tCQXJCdkIsUUFBUTttQkFBQztvQkFDVCxZQUFZLEVBQUU7d0JBQ2IsS0FBSzt3QkFDTCxTQUFTO3dCQUNULFFBQVE7d0JBQ1Isc0JBQXNCO3dCQUN0Qix1QkFBdUI7cUJBQ3ZCO29CQUNELE9BQU8sRUFBRTt3QkFDUixLQUFLO3dCQUNMLHNCQUFzQjt3QkFDdEIsdUJBQXVCO3dCQUN2QixTQUFTO3dCQUNULFFBQVE7cUJBQ1I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNSLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxVQUFVO3FCQUNWO2lCQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gbW9kdWxlc1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcblxuLy8gaW1wb3J0c1xuaW1wb3J0IHsgTGFiZWwgfSBmcm9tIFwiLi9sYWJlbC5jb21wb25lbnRcIjtcbmltcG9ydCB7IFRleHRJbnB1dCB9IGZyb20gXCIuL2lucHV0LmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgVGV4dEFyZWEgfSBmcm9tIFwiLi90ZXh0LWFyZWEuZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBUZXh0YXJlYUxhYmVsQ29tcG9uZW50IH0gZnJvbSBcIi4vdGV4dGFyZWEtbGFiZWwuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBUZXh0SW5wdXRMYWJlbENvbXBvbmVudCB9IGZyb20gXCIuL3RleHQtaW5wdXQtbGFiZWwuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBJY29uTW9kdWxlIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvaWNvblwiO1xuXG5ATmdNb2R1bGUoe1xuXHRkZWNsYXJhdGlvbnM6IFtcblx0XHRMYWJlbCxcblx0XHRUZXh0SW5wdXQsXG5cdFx0VGV4dEFyZWEsXG5cdFx0VGV4dGFyZWFMYWJlbENvbXBvbmVudCxcblx0XHRUZXh0SW5wdXRMYWJlbENvbXBvbmVudFxuXHRdLFxuXHRleHBvcnRzOiBbXG5cdFx0TGFiZWwsXG5cdFx0VGV4dGFyZWFMYWJlbENvbXBvbmVudCxcblx0XHRUZXh0SW5wdXRMYWJlbENvbXBvbmVudCxcblx0XHRUZXh0SW5wdXQsXG5cdFx0VGV4dEFyZWFcblx0XSxcblx0aW1wb3J0czogW1xuXHRcdENvbW1vbk1vZHVsZSxcblx0XHRGb3Jtc01vZHVsZSxcblx0XHRJY29uTW9kdWxlXG5cdF1cbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRNb2R1bGUgeyB9XG4iXX0=