igniteui-angular 17.0.0-alpha.2 → 17.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (439) hide show
  1. package/esm2022/lib/accordion/accordion.component.mjs +8 -7
  2. package/esm2022/lib/accordion/accordion.module.mjs +4 -4
  3. package/esm2022/lib/action-strip/action-strip.component.mjs +21 -25
  4. package/esm2022/lib/action-strip/action-strip.module.mjs +4 -4
  5. package/esm2022/lib/action-strip/grid-actions/grid-action-button.component.mjs +7 -6
  6. package/esm2022/lib/action-strip/grid-actions/grid-actions-base.directive.mjs +7 -6
  7. package/esm2022/lib/action-strip/grid-actions/grid-editing-actions.component.mjs +13 -9
  8. package/esm2022/lib/action-strip/grid-actions/grid-pinning-actions.component.mjs +3 -3
  9. package/esm2022/lib/avatar/avatar.component.mjs +3 -3
  10. package/esm2022/lib/avatar/avatar.module.mjs +4 -4
  11. package/esm2022/lib/badge/badge.component.mjs +3 -3
  12. package/esm2022/lib/badge/badge.module.mjs +4 -4
  13. package/esm2022/lib/banner/banner.component.mjs +3 -3
  14. package/esm2022/lib/banner/banner.directives.mjs +3 -3
  15. package/esm2022/lib/banner/banner.module.mjs +4 -4
  16. package/esm2022/lib/buttonGroup/buttonGroup.component.mjs +7 -6
  17. package/esm2022/lib/buttonGroup/buttongroup.module.mjs +4 -4
  18. package/esm2022/lib/calendar/calendar-base.mjs +8 -9
  19. package/esm2022/lib/calendar/calendar.component.mjs +11 -8
  20. package/esm2022/lib/calendar/calendar.directives.mjs +15 -15
  21. package/esm2022/lib/calendar/calendar.module.mjs +4 -4
  22. package/esm2022/lib/calendar/days-view/day-item.component.mjs +13 -9
  23. package/esm2022/lib/calendar/days-view/days-view.component.mjs +9 -7
  24. package/esm2022/lib/calendar/days-view/daysview-navigation.service.mjs +3 -3
  25. package/esm2022/lib/calendar/month-picker/month-picker-base.mjs +3 -3
  26. package/esm2022/lib/calendar/month-picker/month-picker.component.mjs +3 -3
  27. package/esm2022/lib/calendar/months-view/months-view.component.mjs +7 -6
  28. package/esm2022/lib/calendar/months-view.pipe.mjs +6 -6
  29. package/esm2022/lib/calendar/years-view/years-view.component.mjs +10 -9
  30. package/esm2022/lib/card/card.component.mjs +37 -33
  31. package/esm2022/lib/card/card.module.mjs +4 -4
  32. package/esm2022/lib/carousel/carousel.component.mjs +18 -13
  33. package/esm2022/lib/carousel/carousel.directives.mjs +9 -9
  34. package/esm2022/lib/carousel/carousel.module.mjs +4 -4
  35. package/esm2022/lib/carousel/slide.component.mjs +10 -8
  36. package/esm2022/lib/checkbox/checkbox.component.mjs +52 -64
  37. package/esm2022/lib/checkbox/checkbox.module.mjs +4 -4
  38. package/esm2022/lib/chips/chip.component.mjs +19 -12
  39. package/esm2022/lib/chips/chips-area.component.mjs +3 -3
  40. package/esm2022/lib/chips/chips.module.mjs +4 -4
  41. package/esm2022/lib/combo/combo-add-item.component.mjs +3 -3
  42. package/esm2022/lib/combo/combo-dropdown.component.mjs +7 -6
  43. package/esm2022/lib/combo/combo-item.component.mjs +7 -6
  44. package/esm2022/lib/combo/combo.api.mjs +3 -3
  45. package/esm2022/lib/combo/combo.common.mjs +27 -38
  46. package/esm2022/lib/combo/combo.component.mjs +28 -27
  47. package/esm2022/lib/combo/combo.directives.mjs +24 -24
  48. package/esm2022/lib/combo/combo.module.mjs +4 -4
  49. package/esm2022/lib/combo/combo.pipes.mjs +6 -6
  50. package/esm2022/lib/core/density.mjs +3 -3
  51. package/esm2022/lib/core/navigation/directives.mjs +6 -6
  52. package/esm2022/lib/core/navigation/nav.service.mjs +3 -3
  53. package/esm2022/lib/core/selection.mjs +3 -3
  54. package/esm2022/lib/core/touch.mjs +3 -3
  55. package/esm2022/lib/core/utils.mjs +3 -3
  56. package/esm2022/lib/date-common/calendar-container/calendar-container.component.mjs +3 -3
  57. package/esm2022/lib/date-common/picker-base.directive.mjs +7 -6
  58. package/esm2022/lib/date-common/picker-icons.common.mjs +9 -9
  59. package/esm2022/lib/date-picker/date-picker.component.mjs +13 -9
  60. package/esm2022/lib/date-picker/date-picker.module.mjs +4 -4
  61. package/esm2022/lib/date-range-picker/date-range-picker-inputs.common.mjs +15 -15
  62. package/esm2022/lib/date-range-picker/date-range-picker.component.mjs +9 -7
  63. package/esm2022/lib/date-range-picker/date-range-picker.module.mjs +4 -4
  64. package/esm2022/lib/dialog/dialog.component.mjs +17 -12
  65. package/esm2022/lib/dialog/dialog.directives.mjs +6 -6
  66. package/esm2022/lib/dialog/dialog.module.mjs +4 -4
  67. package/esm2022/lib/directives/autocomplete/autocomplete.directive.mjs +6 -6
  68. package/esm2022/lib/directives/autocomplete/autocomplete.module.mjs +4 -4
  69. package/esm2022/lib/directives/button/button.directive.mjs +19 -35
  70. package/esm2022/lib/directives/button/button.module.mjs +4 -4
  71. package/esm2022/lib/directives/date-time-editor/date-time-editor.directive.mjs +7 -6
  72. package/esm2022/lib/directives/date-time-editor/date-time-editor.module.mjs +4 -4
  73. package/esm2022/lib/directives/divider/divider.directive.mjs +9 -7
  74. package/esm2022/lib/directives/divider/divider.module.mjs +4 -4
  75. package/esm2022/lib/directives/drag-drop/drag-drop.directive.mjs +16 -15
  76. package/esm2022/lib/directives/drag-drop/drag-drop.module.mjs +4 -4
  77. package/esm2022/lib/directives/filter/filter.directive.mjs +6 -6
  78. package/esm2022/lib/directives/filter/filter.module.mjs +4 -4
  79. package/esm2022/lib/directives/focus/focus.directive.mjs +6 -6
  80. package/esm2022/lib/directives/focus/focus.module.mjs +4 -4
  81. package/esm2022/lib/directives/focus-trap/focus-trap.directive.mjs +6 -6
  82. package/esm2022/lib/directives/focus-trap/focus-trap.module.mjs +4 -4
  83. package/esm2022/lib/directives/for-of/base.helper.component.mjs +3 -3
  84. package/esm2022/lib/directives/for-of/display.container.mjs +3 -3
  85. package/esm2022/lib/directives/for-of/for_of.directive.mjs +12 -10
  86. package/esm2022/lib/directives/for-of/for_of.module.mjs +4 -4
  87. package/esm2022/lib/directives/for-of/for_of.sync.service.mjs +6 -6
  88. package/esm2022/lib/directives/for-of/horizontal.virtual.helper.component.mjs +3 -3
  89. package/esm2022/lib/directives/for-of/virtual.helper.component.mjs +3 -3
  90. package/esm2022/lib/directives/form-control/form-control.directive.mjs +3 -3
  91. package/esm2022/lib/directives/form-control/form-control.module.mjs +4 -4
  92. package/esm2022/lib/directives/hint/hint.directive.mjs +3 -3
  93. package/esm2022/lib/directives/input/input.directive.mjs +11 -9
  94. package/esm2022/lib/directives/label/label.directive.mjs +3 -3
  95. package/esm2022/lib/directives/layout/layout.directive.mjs +9 -9
  96. package/esm2022/lib/directives/layout/layout.module.mjs +4 -4
  97. package/esm2022/lib/directives/mask/mask-parsing.service.mjs +3 -3
  98. package/esm2022/lib/directives/mask/mask.directive.mjs +7 -6
  99. package/esm2022/lib/directives/mask/mask.module.mjs +4 -4
  100. package/esm2022/lib/directives/notification/notifications.directive.mjs +9 -7
  101. package/esm2022/lib/directives/prefix/prefix.directive.mjs +3 -3
  102. package/esm2022/lib/directives/radio/radio-group.directive.mjs +11 -9
  103. package/esm2022/lib/directives/radio/radio-group.module.mjs +4 -4
  104. package/esm2022/lib/directives/ripple/ripple.directive.mjs +7 -7
  105. package/esm2022/lib/directives/ripple/ripple.module.mjs +4 -4
  106. package/esm2022/lib/directives/scroll-inertia/scroll_inertia.directive.mjs +3 -3
  107. package/esm2022/lib/directives/scroll-inertia/scroll_inertia.module.mjs +4 -4
  108. package/esm2022/lib/directives/suffix/suffix.directive.mjs +3 -3
  109. package/esm2022/lib/directives/template-outlet/template_outlet.directive.mjs +3 -3
  110. package/esm2022/lib/directives/text-highlight/text-highlight.directive.mjs +3 -3
  111. package/esm2022/lib/directives/text-highlight/text-highlight.module.mjs +4 -4
  112. package/esm2022/lib/directives/text-selection/text-selection.directive.mjs +26 -46
  113. package/esm2022/lib/directives/text-selection/text-selection.module.mjs +4 -4
  114. package/esm2022/lib/directives/toggle/toggle.directive.mjs +9 -9
  115. package/esm2022/lib/directives/toggle/toggle.module.mjs +4 -4
  116. package/esm2022/lib/directives/tooltip/tooltip-target.directive.mjs +6 -6
  117. package/esm2022/lib/directives/tooltip/tooltip.component.mjs +3 -3
  118. package/esm2022/lib/directives/tooltip/tooltip.directive.mjs +3 -3
  119. package/esm2022/lib/directives/tooltip/tooltip.module.mjs +4 -4
  120. package/esm2022/lib/drop-down/drop-down-group.component.mjs +7 -6
  121. package/esm2022/lib/drop-down/drop-down-item.base.mjs +11 -8
  122. package/esm2022/lib/drop-down/drop-down-item.component.mjs +3 -3
  123. package/esm2022/lib/drop-down/drop-down-navigation.directive.mjs +3 -3
  124. package/esm2022/lib/drop-down/drop-down.base.mjs +3 -3
  125. package/esm2022/lib/drop-down/drop-down.component.mjs +7 -6
  126. package/esm2022/lib/drop-down/drop-down.module.mjs +4 -4
  127. package/esm2022/lib/expansion-panel/expansion-panel-body.component.mjs +3 -3
  128. package/esm2022/lib/expansion-panel/expansion-panel-header.component.mjs +7 -6
  129. package/esm2022/lib/expansion-panel/expansion-panel.common.mjs +3 -3
  130. package/esm2022/lib/expansion-panel/expansion-panel.component.mjs +7 -6
  131. package/esm2022/lib/expansion-panel/expansion-panel.directives.mjs +9 -9
  132. package/esm2022/lib/expansion-panel/expansion-panel.module.mjs +4 -4
  133. package/esm2022/lib/expansion-panel/toggle-animation-component.mjs +3 -3
  134. package/esm2022/lib/grids/api.service.mjs +3 -3
  135. package/esm2022/lib/grids/cell.component.mjs +7 -6
  136. package/esm2022/lib/grids/column-actions/column-actions-base.directive.mjs +3 -3
  137. package/esm2022/lib/grids/column-actions/column-actions.component.mjs +16 -15
  138. package/esm2022/lib/grids/column-actions/column-hiding.directive.mjs +3 -3
  139. package/esm2022/lib/grids/column-actions/column-pinning.directive.mjs +3 -3
  140. package/esm2022/lib/grids/columns/column-group.component.mjs +13 -9
  141. package/esm2022/lib/grids/columns/column-layout.component.mjs +7 -6
  142. package/esm2022/lib/grids/columns/column.component.mjs +37 -21
  143. package/esm2022/lib/grids/columns/templates.directive.mjs +24 -24
  144. package/esm2022/lib/grids/columns/validators.directive.mjs +21 -21
  145. package/esm2022/lib/grids/common/crud.service.mjs +3 -3
  146. package/esm2022/lib/grids/common/pipes.mjs +54 -54
  147. package/esm2022/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.mjs +3 -3
  148. package/esm2022/lib/grids/filtering/base/grid-filtering-cell.component.mjs +3 -3
  149. package/esm2022/lib/grids/filtering/base/grid-filtering-row.component.mjs +3 -3
  150. package/esm2022/lib/grids/filtering/excel-style/base-filtering.component.mjs +3 -3
  151. package/esm2022/lib/grids/filtering/excel-style/excel-style-clear-filters.component.mjs +3 -3
  152. package/esm2022/lib/grids/filtering/excel-style/excel-style-conditional-filter.component.mjs +3 -3
  153. package/esm2022/lib/grids/filtering/excel-style/excel-style-custom-dialog.component.mjs +3 -3
  154. package/esm2022/lib/grids/filtering/excel-style/excel-style-date-expression.component.mjs +3 -3
  155. package/esm2022/lib/grids/filtering/excel-style/excel-style-default-expression.component.mjs +3 -3
  156. package/esm2022/lib/grids/filtering/excel-style/excel-style-filtering.component.mjs +9 -9
  157. package/esm2022/lib/grids/filtering/excel-style/excel-style-header.component.mjs +11 -8
  158. package/esm2022/lib/grids/filtering/excel-style/excel-style-hiding.component.mjs +3 -3
  159. package/esm2022/lib/grids/filtering/excel-style/excel-style-moving.component.mjs +3 -3
  160. package/esm2022/lib/grids/filtering/excel-style/excel-style-pinning.component.mjs +3 -3
  161. package/esm2022/lib/grids/filtering/excel-style/excel-style-search.component.mjs +6 -6
  162. package/esm2022/lib/grids/filtering/excel-style/excel-style-selecting.component.mjs +3 -3
  163. package/esm2022/lib/grids/filtering/excel-style/excel-style-sorting.component.mjs +3 -3
  164. package/esm2022/lib/grids/filtering/grid-filtering.service.mjs +5 -5
  165. package/esm2022/lib/grids/grid/expandable-cell.component.mjs +3 -3
  166. package/esm2022/lib/grids/grid/grid-api.service.mjs +3 -3
  167. package/esm2022/lib/grids/grid/grid-row.component.mjs +3 -3
  168. package/esm2022/lib/grids/grid/grid-validation.service.mjs +3 -3
  169. package/esm2022/lib/grids/grid/grid.component.mjs +11 -8
  170. package/esm2022/lib/grids/grid/grid.details.pipe.mjs +3 -3
  171. package/esm2022/lib/grids/grid/grid.module.mjs +4 -4
  172. package/esm2022/lib/grids/grid/grid.pipes.mjs +12 -12
  173. package/esm2022/lib/grids/grid/grid.summary.pipe.mjs +3 -3
  174. package/esm2022/lib/grids/grid/groupby-row.component.mjs +3 -3
  175. package/esm2022/lib/grids/grid-base.directive.mjs +33 -19
  176. package/esm2022/lib/grids/grid-footer/grid-footer.component.mjs +3 -3
  177. package/esm2022/lib/grids/grid-mrl-navigation.service.mjs +3 -3
  178. package/esm2022/lib/grids/grid-navigation.service.mjs +3 -3
  179. package/esm2022/lib/grids/grid.common.mjs +3 -3
  180. package/esm2022/lib/grids/grid.directives.mjs +33 -33
  181. package/esm2022/lib/grids/grid.rowEdit.directive.mjs +15 -15
  182. package/esm2022/lib/grids/grouping/grid-group-by-area.component.mjs +3 -3
  183. package/esm2022/lib/grids/grouping/group-by-area.directive.mjs +6 -6
  184. package/esm2022/lib/grids/grouping/tree-grid-group-by-area.component.mjs +8 -7
  185. package/esm2022/lib/grids/headers/grid-header-group.component.mjs +3 -3
  186. package/esm2022/lib/grids/headers/grid-header-row.component.mjs +14 -7
  187. package/esm2022/lib/grids/headers/grid-header.component.mjs +3 -3
  188. package/esm2022/lib/grids/headers/pipes.mjs +9 -9
  189. package/esm2022/lib/grids/hierarchical-grid/hierarchical-cell.component.mjs +3 -3
  190. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-api.service.mjs +3 -3
  191. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.mjs +7 -6
  192. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-navigation.service.mjs +3 -3
  193. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.component.mjs +11 -10
  194. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.module.mjs +4 -4
  195. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.pipes.mjs +6 -6
  196. package/esm2022/lib/grids/hierarchical-grid/hierarchical-row.component.mjs +3 -3
  197. package/esm2022/lib/grids/hierarchical-grid/row-island-api.service.mjs +3 -3
  198. package/esm2022/lib/grids/hierarchical-grid/row-island.component.mjs +7 -6
  199. package/esm2022/lib/grids/moving/moving.drag.directive.mjs +3 -3
  200. package/esm2022/lib/grids/moving/moving.drop.directive.mjs +3 -3
  201. package/esm2022/lib/grids/moving/moving.service.mjs +3 -3
  202. package/esm2022/lib/grids/pivot-grid/pivot-data-selector.component.mjs +13 -9
  203. package/esm2022/lib/grids/pivot-grid/pivot-filtering.service.mjs +3 -3
  204. package/esm2022/lib/grids/pivot-grid/pivot-grid-navigation.service.mjs +3 -3
  205. package/esm2022/lib/grids/pivot-grid/pivot-grid.component.mjs +25 -15
  206. package/esm2022/lib/grids/pivot-grid/pivot-grid.directives.mjs +3 -3
  207. package/esm2022/lib/grids/pivot-grid/pivot-grid.module.mjs +4 -4
  208. package/esm2022/lib/grids/pivot-grid/pivot-grid.pipes.mjs +30 -30
  209. package/esm2022/lib/grids/pivot-grid/pivot-header-row.component.mjs +3 -3
  210. package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-content.component.mjs +3 -3
  211. package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-header-group.component.mjs +3 -3
  212. package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-header.component.mjs +3 -3
  213. package/esm2022/lib/grids/pivot-grid/pivot-row.component.mjs +3 -3
  214. package/esm2022/lib/grids/resizing/pivot-grid/pivot-resize-handle.directive.mjs +3 -3
  215. package/esm2022/lib/grids/resizing/pivot-grid/pivot-resizer.component.mjs +3 -3
  216. package/esm2022/lib/grids/resizing/pivot-grid/pivot-resizing.service.mjs +3 -3
  217. package/esm2022/lib/grids/resizing/resize-handle.directive.mjs +3 -3
  218. package/esm2022/lib/grids/resizing/resizer.component.mjs +3 -3
  219. package/esm2022/lib/grids/resizing/resizer.directive.mjs +3 -3
  220. package/esm2022/lib/grids/resizing/resizing.service.mjs +3 -3
  221. package/esm2022/lib/grids/row-drag.directive.mjs +9 -9
  222. package/esm2022/lib/grids/row.directive.mjs +7 -6
  223. package/esm2022/lib/grids/selection/drag-select.directive.mjs +6 -6
  224. package/esm2022/lib/grids/selection/row-selectors.mjs +9 -9
  225. package/esm2022/lib/grids/selection/selection.service.mjs +3 -3
  226. package/esm2022/lib/grids/state.directive.mjs +3 -3
  227. package/esm2022/lib/grids/summaries/grid-root-summary.pipe.mjs +3 -3
  228. package/esm2022/lib/grids/summaries/grid-summary.service.mjs +10 -8
  229. package/esm2022/lib/grids/summaries/summary-cell.component.mjs +7 -6
  230. package/esm2022/lib/grids/summaries/summary-row.component.mjs +3 -3
  231. package/esm2022/lib/grids/toolbar/common.mjs +15 -15
  232. package/esm2022/lib/grids/toolbar/grid-toolbar-advanced-filtering.component.mjs +3 -3
  233. package/esm2022/lib/grids/toolbar/grid-toolbar-exporter.component.mjs +9 -7
  234. package/esm2022/lib/grids/toolbar/grid-toolbar-hiding.component.mjs +3 -3
  235. package/esm2022/lib/grids/toolbar/grid-toolbar-pinning.component.mjs +3 -3
  236. package/esm2022/lib/grids/toolbar/grid-toolbar.base.mjs +16 -11
  237. package/esm2022/lib/grids/toolbar/grid-toolbar.component.mjs +7 -6
  238. package/esm2022/lib/grids/tree-grid/tree-cell.component.mjs +3 -3
  239. package/esm2022/lib/grids/tree-grid/tree-grid-api.service.mjs +3 -3
  240. package/esm2022/lib/grids/tree-grid/tree-grid-row.component.mjs +3 -3
  241. package/esm2022/lib/grids/tree-grid/tree-grid-selection.service.mjs +3 -3
  242. package/esm2022/lib/grids/tree-grid/tree-grid.component.mjs +7 -6
  243. package/esm2022/lib/grids/tree-grid/tree-grid.directives.mjs +3 -3
  244. package/esm2022/lib/grids/tree-grid/tree-grid.filtering.pipe.mjs +3 -3
  245. package/esm2022/lib/grids/tree-grid/tree-grid.grouping.pipe.mjs +3 -3
  246. package/esm2022/lib/grids/tree-grid/tree-grid.module.mjs +4 -4
  247. package/esm2022/lib/grids/tree-grid/tree-grid.pipes.mjs +21 -21
  248. package/esm2022/lib/grids/tree-grid/tree-grid.summary.pipe.mjs +3 -3
  249. package/esm2022/lib/icon/icon.component.mjs +6 -6
  250. package/esm2022/lib/icon/icon.module.mjs +4 -4
  251. package/esm2022/lib/icon/icon.service.mjs +3 -3
  252. package/esm2022/lib/input-group/input-group.component.mjs +7 -6
  253. package/esm2022/lib/input-group/input-group.module.mjs +4 -4
  254. package/esm2022/lib/list/list-item.component.mjs +9 -7
  255. package/esm2022/lib/list/list.common.mjs +15 -15
  256. package/esm2022/lib/list/list.component.mjs +26 -23
  257. package/esm2022/lib/list/list.module.mjs +4 -4
  258. package/esm2022/lib/navbar/navbar.component.mjs +13 -12
  259. package/esm2022/lib/navbar/navbar.module.mjs +4 -4
  260. package/esm2022/lib/navigation-drawer/navigation-drawer.component.mjs +13 -9
  261. package/esm2022/lib/navigation-drawer/navigation-drawer.directives.mjs +13 -13
  262. package/esm2022/lib/navigation-drawer/navigation-drawer.module.mjs +4 -4
  263. package/esm2022/lib/paginator/paginator-interfaces.mjs +3 -3
  264. package/esm2022/lib/paginator/paginator.component.mjs +12 -12
  265. package/esm2022/lib/paginator/paginator.module.mjs +4 -4
  266. package/esm2022/lib/progressbar/progressbar.common.mjs +6 -6
  267. package/esm2022/lib/progressbar/progressbar.component.mjs +23 -17
  268. package/esm2022/lib/progressbar/progressbar.module.mjs +4 -4
  269. package/esm2022/lib/query-builder/query-builder-header.component.mjs +7 -6
  270. package/esm2022/lib/query-builder/query-builder.component.mjs +6 -6
  271. package/esm2022/lib/query-builder/query-builder.module.mjs +4 -4
  272. package/esm2022/lib/radio/radio.component.mjs +37 -44
  273. package/esm2022/lib/select/select-group.component.mjs +3 -3
  274. package/esm2022/lib/select/select-item.component.mjs +3 -3
  275. package/esm2022/lib/select/select-navigation.directive.mjs +3 -3
  276. package/esm2022/lib/select/select.component.mjs +16 -15
  277. package/esm2022/lib/select/select.module.mjs +4 -4
  278. package/esm2022/lib/services/animation/angular-animation-service.mjs +3 -3
  279. package/esm2022/lib/services/csv/csv-exporter.mjs +3 -3
  280. package/esm2022/lib/services/direction/directionality.mjs +3 -3
  281. package/esm2022/lib/services/excel/excel-exporter.mjs +3 -3
  282. package/esm2022/lib/services/overlay/overlay.mjs +5 -5
  283. package/esm2022/lib/services/transaction/transaction-factory.service.mjs +6 -6
  284. package/esm2022/lib/simple-combo/simple-combo.component.mjs +51 -31
  285. package/esm2022/lib/simple-combo/simple-combo.module.mjs +4 -4
  286. package/esm2022/lib/slider/label/thumb-label.component.mjs +9 -7
  287. package/esm2022/lib/slider/slider.common.mjs +9 -9
  288. package/esm2022/lib/slider/slider.component.mjs +15 -10
  289. package/esm2022/lib/slider/slider.module.mjs +4 -4
  290. package/esm2022/lib/slider/thumb/thumb-slider.component.mjs +11 -8
  291. package/esm2022/lib/slider/ticks/tick.pipe.mjs +3 -3
  292. package/esm2022/lib/slider/ticks/ticks.component.mjs +11 -8
  293. package/esm2022/lib/snackbar/snackbar.component.mjs +3 -3
  294. package/esm2022/lib/snackbar/snackbar.module.mjs +4 -4
  295. package/esm2022/lib/splitter/splitter-pane/splitter-pane.component.mjs +9 -7
  296. package/esm2022/lib/splitter/splitter.component.mjs +6 -6
  297. package/esm2022/lib/splitter/splitter.module.mjs +4 -4
  298. package/esm2022/lib/stepper/step/step.component.mjs +15 -10
  299. package/esm2022/lib/stepper/stepper.component.mjs +9 -7
  300. package/esm2022/lib/stepper/stepper.directive.mjs +21 -21
  301. package/esm2022/lib/stepper/stepper.module.mjs +4 -4
  302. package/esm2022/lib/stepper/stepper.service.mjs +6 -6
  303. package/esm2022/lib/switch/switch.component.mjs +32 -40
  304. package/esm2022/lib/switch/switch.module.mjs +4 -4
  305. package/esm2022/lib/tabs/bottom-nav/bottom-nav-content.component.mjs +3 -3
  306. package/esm2022/lib/tabs/bottom-nav/bottom-nav-header.component.mjs +3 -3
  307. package/esm2022/lib/tabs/bottom-nav/bottom-nav-item.component.mjs +3 -3
  308. package/esm2022/lib/tabs/bottom-nav/bottom-nav.component.mjs +5 -5
  309. package/esm2022/lib/tabs/bottom-nav/bottom-nav.directives.mjs +6 -6
  310. package/esm2022/lib/tabs/bottom-nav/bottom-nav.module.mjs +4 -4
  311. package/esm2022/lib/tabs/tab-content.directive.mjs +3 -3
  312. package/esm2022/lib/tabs/tab-header.directive.mjs +3 -3
  313. package/esm2022/lib/tabs/tab-item.directive.mjs +9 -7
  314. package/esm2022/lib/tabs/tabs/tab-content.component.mjs +3 -3
  315. package/esm2022/lib/tabs/tabs/tab-header.component.mjs +3 -3
  316. package/esm2022/lib/tabs/tabs/tab-item.component.mjs +3 -3
  317. package/esm2022/lib/tabs/tabs/tabs.component.mjs +3 -3
  318. package/esm2022/lib/tabs/tabs/tabs.directives.mjs +6 -6
  319. package/esm2022/lib/tabs/tabs/tabs.module.mjs +4 -4
  320. package/esm2022/lib/tabs/tabs.directive.mjs +11 -17
  321. package/esm2022/lib/time-picker/time-picker.component.mjs +9 -7
  322. package/esm2022/lib/time-picker/time-picker.directives.mjs +6 -6
  323. package/esm2022/lib/time-picker/time-picker.module.mjs +4 -4
  324. package/esm2022/lib/time-picker/time-picker.pipes.mjs +6 -6
  325. package/esm2022/lib/toast/toast.component.mjs +3 -3
  326. package/esm2022/lib/toast/toast.module.mjs +4 -4
  327. package/esm2022/lib/tree/tree-navigation.service.mjs +3 -3
  328. package/esm2022/lib/tree/tree-node/tree-node.component.mjs +18 -13
  329. package/esm2022/lib/tree/tree-selection.service.mjs +3 -3
  330. package/esm2022/lib/tree/tree.component.mjs +13 -12
  331. package/esm2022/lib/tree/tree.module.mjs +4 -4
  332. package/esm2022/lib/tree/tree.service.mjs +3 -3
  333. package/fesm2022/igniteui-angular.mjs +2245 -2106
  334. package/fesm2022/igniteui-angular.mjs.map +1 -1
  335. package/lib/accordion/accordion.component.d.ts +1 -0
  336. package/lib/action-strip/action-strip.component.d.ts +2 -2
  337. package/lib/action-strip/grid-actions/grid-action-button.component.d.ts +1 -0
  338. package/lib/action-strip/grid-actions/grid-actions-base.directive.d.ts +1 -0
  339. package/lib/action-strip/grid-actions/grid-editing-actions.component.d.ts +4 -0
  340. package/lib/buttonGroup/buttonGroup.component.d.ts +1 -0
  341. package/lib/calendar/calendar-base.d.ts +1 -0
  342. package/lib/calendar/calendar.component.d.ts +3 -0
  343. package/lib/calendar/days-view/day-item.component.d.ts +4 -0
  344. package/lib/calendar/days-view/days-view.component.d.ts +2 -0
  345. package/lib/calendar/months-view/months-view.component.d.ts +1 -0
  346. package/lib/calendar/years-view/years-view.component.d.ts +1 -0
  347. package/lib/card/card.component.d.ts +4 -0
  348. package/lib/carousel/carousel.component.d.ts +5 -0
  349. package/lib/carousel/slide.component.d.ts +2 -0
  350. package/lib/checkbox/checkbox.component.d.ts +10 -16
  351. package/lib/chips/chip.component.d.ts +7 -0
  352. package/lib/combo/combo-dropdown.component.d.ts +1 -0
  353. package/lib/combo/combo-item.component.d.ts +1 -0
  354. package/lib/combo/combo.common.d.ts +10 -21
  355. package/lib/combo/combo.component.d.ts +10 -8
  356. package/lib/date-common/picker-base.directive.d.ts +1 -0
  357. package/lib/date-picker/date-picker.component.d.ts +4 -0
  358. package/lib/date-range-picker/date-range-picker.component.d.ts +2 -0
  359. package/lib/dialog/dialog.component.d.ts +5 -0
  360. package/lib/directives/autocomplete/autocomplete.directive.d.ts +1 -0
  361. package/lib/directives/button/button.directive.d.ts +10 -23
  362. package/lib/directives/date-time-editor/date-time-editor.directive.d.ts +1 -0
  363. package/lib/directives/divider/divider.directive.d.ts +2 -0
  364. package/lib/directives/drag-drop/drag-drop.directive.d.ts +1 -0
  365. package/lib/directives/focus/focus.directive.d.ts +1 -0
  366. package/lib/directives/focus-trap/focus-trap.directive.d.ts +1 -0
  367. package/lib/directives/for-of/for_of.directive.d.ts +2 -0
  368. package/lib/directives/input/input.directive.d.ts +2 -2
  369. package/lib/directives/layout/layout.directive.d.ts +1 -0
  370. package/lib/directives/mask/mask.directive.d.ts +1 -0
  371. package/lib/directives/notification/notifications.directive.d.ts +2 -0
  372. package/lib/directives/radio/radio-group.directive.d.ts +2 -2
  373. package/lib/directives/ripple/ripple.directive.d.ts +2 -0
  374. package/lib/directives/text-selection/text-selection.directive.d.ts +2 -17
  375. package/lib/directives/tooltip/tooltip-target.directive.d.ts +1 -0
  376. package/lib/drop-down/drop-down-group.component.d.ts +1 -0
  377. package/lib/drop-down/drop-down-item.base.d.ts +3 -0
  378. package/lib/drop-down/drop-down.component.d.ts +1 -0
  379. package/lib/expansion-panel/expansion-panel-header.component.d.ts +1 -0
  380. package/lib/expansion-panel/expansion-panel.component.d.ts +1 -0
  381. package/lib/grids/cell.component.d.ts +1 -0
  382. package/lib/grids/column-actions/column-actions.component.d.ts +1 -0
  383. package/lib/grids/columns/column-group.component.d.ts +4 -0
  384. package/lib/grids/columns/column-layout.component.d.ts +1 -0
  385. package/lib/grids/columns/column.component.d.ts +16 -0
  386. package/lib/grids/filtering/excel-style/excel-style-header.component.d.ts +3 -0
  387. package/lib/grids/grid/grid.component.d.ts +3 -0
  388. package/lib/grids/grid-base.directive.d.ts +11 -0
  389. package/lib/grids/grouping/tree-grid-group-by-area.component.d.ts +1 -0
  390. package/lib/grids/headers/grid-header-row.component.d.ts +5 -0
  391. package/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.d.ts +1 -0
  392. package/lib/grids/hierarchical-grid/hierarchical-grid.component.d.ts +2 -1
  393. package/lib/grids/hierarchical-grid/row-island.component.d.ts +1 -0
  394. package/lib/grids/pivot-grid/pivot-data-selector.component.d.ts +4 -0
  395. package/lib/grids/pivot-grid/pivot-grid.component.d.ts +10 -0
  396. package/lib/grids/row.directive.d.ts +1 -0
  397. package/lib/grids/selection/drag-select.directive.d.ts +1 -0
  398. package/lib/grids/summaries/summary-cell.component.d.ts +1 -0
  399. package/lib/grids/toolbar/grid-toolbar-exporter.component.d.ts +2 -0
  400. package/lib/grids/toolbar/grid-toolbar.base.d.ts +1 -0
  401. package/lib/grids/toolbar/grid-toolbar.component.d.ts +1 -0
  402. package/lib/grids/tree-grid/tree-grid.component.d.ts +1 -0
  403. package/lib/icon/icon.component.d.ts +1 -0
  404. package/lib/input-group/input-group.component.d.ts +1 -0
  405. package/lib/list/list-item.component.d.ts +2 -0
  406. package/lib/list/list.component.d.ts +3 -0
  407. package/lib/navbar/navbar.component.d.ts +1 -0
  408. package/lib/navigation-drawer/navigation-drawer.component.d.ts +4 -0
  409. package/lib/navigation-drawer/navigation-drawer.directives.d.ts +2 -0
  410. package/lib/progressbar/progressbar.component.d.ts +6 -0
  411. package/lib/query-builder/query-builder-header.component.d.ts +1 -0
  412. package/lib/radio/radio.component.d.ts +5 -4
  413. package/lib/select/select.component.d.ts +1 -0
  414. package/lib/simple-combo/simple-combo.component.d.ts +16 -1
  415. package/lib/slider/label/thumb-label.component.d.ts +2 -0
  416. package/lib/slider/slider.component.d.ts +5 -0
  417. package/lib/slider/thumb/thumb-slider.component.d.ts +4 -1
  418. package/lib/slider/ticks/ticks.component.d.ts +3 -0
  419. package/lib/splitter/splitter-pane/splitter-pane.component.d.ts +2 -0
  420. package/lib/stepper/step/step.component.d.ts +5 -0
  421. package/lib/stepper/stepper.component.d.ts +2 -0
  422. package/lib/switch/switch.component.d.ts +4 -4
  423. package/lib/tabs/bottom-nav/bottom-nav.component.d.ts +1 -1
  424. package/lib/tabs/tab-item.directive.d.ts +2 -0
  425. package/lib/tabs/tabs.directive.d.ts +2 -4
  426. package/lib/time-picker/time-picker.component.d.ts +2 -0
  427. package/lib/tree/tree-node/tree-node.component.d.ts +5 -0
  428. package/lib/tree/tree.component.d.ts +1 -0
  429. package/migrations/common/tsUtils.d.ts +2 -0
  430. package/migrations/common/tsUtils.js +4 -3
  431. package/migrations/update-17_0_0/changes/classes.json +21 -0
  432. package/migrations/update-17_0_0/changes/members.json +21 -0
  433. package/migrations/update-17_0_0/index.js +48 -1
  434. package/package.json +2 -2
  435. package/schematics/tsconfig.tsbuildinfo +1 -1
  436. package/styles/igniteui-indigo-dark.css +1 -1
  437. package/styles/igniteui-indigo-light.css +1 -1
  438. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  439. package/styles/maps/igniteui-indigo-light.css.map +1 -1
@@ -75,10 +75,10 @@ export class IgxExpansionPanelBodyComponent {
75
75
  set labelledBy(val) {
76
76
  this._labelledBy = val;
77
77
  }
78
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: IgxExpansionPanelBodyComponent, deps: [{ token: IGX_EXPANSION_PANEL_COMPONENT }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
79
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-rc.1", type: IgxExpansionPanelBodyComponent, isStandalone: true, selector: "igx-expansion-panel-body", inputs: { role: "role", label: "label", labelledBy: "labelledBy" }, host: { properties: { "class.igx-expansion-panel__body": "this.cssClass", "attr.role": "this.role", "attr.aria-label": "this.label", "attr.aria-labelledby": "this.labelledBy" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
78
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxExpansionPanelBodyComponent, deps: [{ token: IGX_EXPANSION_PANEL_COMPONENT }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
79
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-rc.3", type: IgxExpansionPanelBodyComponent, isStandalone: true, selector: "igx-expansion-panel-body", inputs: { role: "role", label: "label", labelledBy: "labelledBy" }, host: { properties: { "class.igx-expansion-panel__body": "this.cssClass", "attr.role": "this.role", "attr.aria-label": "this.label", "attr.aria-labelledby": "this.labelledBy" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
80
80
  }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: IgxExpansionPanelBodyComponent, decorators: [{
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxExpansionPanelBodyComponent, decorators: [{
82
82
  type: Component,
83
83
  args: [{
84
84
  // eslint-disable-next-line @angular-eslint/directive-selector
@@ -1,4 +1,4 @@
1
- import { Component, ElementRef, HostBinding, HostListener, Input, Host, EventEmitter, Output, ContentChild, Inject, ViewChild } from '@angular/core';
1
+ import { Component, ElementRef, HostBinding, HostListener, Input, Host, EventEmitter, Output, ContentChild, Inject, ViewChild, booleanAttribute } from '@angular/core';
2
2
  import { IgxExpansionPanelIconDirective } from './expansion-panel.directives';
3
3
  import { IGX_EXPANSION_PANEL_COMPONENT } from './expansion-panel.common';
4
4
  import { mkenum } from '../core/utils';
@@ -218,10 +218,10 @@ export class IgxExpansionPanelHeaderComponent {
218
218
  return '';
219
219
  }
220
220
  }
221
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: IgxExpansionPanelHeaderComponent, deps: [{ token: IGX_EXPANSION_PANEL_COMPONENT, host: true }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
222
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-rc.1", type: IgxExpansionPanelHeaderComponent, isStandalone: true, selector: "igx-expansion-panel-header", inputs: { lv: "lv", role: "role", iconPosition: "iconPosition", disabled: "disabled" }, outputs: { interaction: "interaction" }, host: { listeners: { "keydown.Enter": "onAction($event)", "keydown.Space": "onAction($event)", "keydown.Spacebar": "onAction($event)", "click": "onAction($event)", "keydown.Alt.ArrowDown": "openPanel($event)", "keydown.Alt.ArrowUp": "closePanel($event)" }, properties: { "attr.aria-level": "this.lv", "attr.role": "this.role", "class.igx-expansion-panel__header": "this.cssClass", "class.igx-expansion-panel__header--expanded": "this.isExpanded", "class.igx-expansion-panel--disabled": "this.disabled" } }, queries: [{ propertyName: "iconTemplate", first: true, predicate: IgxExpansionPanelIconDirective, descendants: true }, { propertyName: "customIconRef", first: true, predicate: IgxExpansionPanelIconDirective, descendants: true, read: ElementRef }], viewQueries: [{ propertyName: "defaultIconRef", first: true, predicate: IgxIconComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"igx-expansion-panel__header-inner\" [attr.tabindex]=\"tabIndex\" role=\"button\" [attr.id]=\"id\"\n[attr.aria-disabled]=\"disabled\" [attr.aria-expanded]=\"isExpanded\" [attr.aria-controls]=\"controls\">\n <div class=\"igx-expansion-panel__title-wrapper\">\n <ng-content select=\"igx-expansion-panel-title\"></ng-content>\n <ng-content select=\"igx-expansion-panel-description\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div [class]=\"iconPositionClass\">\n <ng-content *ngIf=\"iconTemplate\" select=\"igx-expansion-panel-icon\"></ng-content>\n <igx-icon *ngIf=\"!iconTemplate\">\n {{panel.collapsed? 'expand_more':'expand_less'}}\n </igx-icon>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }] }); }
221
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxExpansionPanelHeaderComponent, deps: [{ token: IGX_EXPANSION_PANEL_COMPONENT, host: true }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
222
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.0.0-rc.3", type: IgxExpansionPanelHeaderComponent, isStandalone: true, selector: "igx-expansion-panel-header", inputs: { lv: "lv", role: "role", iconPosition: "iconPosition", disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { interaction: "interaction" }, host: { listeners: { "keydown.Enter": "onAction($event)", "keydown.Space": "onAction($event)", "keydown.Spacebar": "onAction($event)", "click": "onAction($event)", "keydown.Alt.ArrowDown": "openPanel($event)", "keydown.Alt.ArrowUp": "closePanel($event)" }, properties: { "attr.aria-level": "this.lv", "attr.role": "this.role", "class.igx-expansion-panel__header": "this.cssClass", "class.igx-expansion-panel__header--expanded": "this.isExpanded", "class.igx-expansion-panel--disabled": "this.disabled" } }, queries: [{ propertyName: "iconTemplate", first: true, predicate: IgxExpansionPanelIconDirective, descendants: true }, { propertyName: "customIconRef", first: true, predicate: IgxExpansionPanelIconDirective, descendants: true, read: ElementRef }], viewQueries: [{ propertyName: "defaultIconRef", first: true, predicate: IgxIconComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"igx-expansion-panel__header-inner\" [attr.tabindex]=\"tabIndex\" role=\"button\" [attr.id]=\"id\"\n[attr.aria-disabled]=\"disabled\" [attr.aria-expanded]=\"isExpanded\" [attr.aria-controls]=\"controls\">\n <div class=\"igx-expansion-panel__title-wrapper\">\n <ng-content select=\"igx-expansion-panel-title\"></ng-content>\n <ng-content select=\"igx-expansion-panel-description\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div [class]=\"iconPositionClass\">\n <ng-content *ngIf=\"iconTemplate\" select=\"igx-expansion-panel-icon\"></ng-content>\n <igx-icon *ngIf=\"!iconTemplate\">\n {{panel.collapsed? 'expand_more':'expand_less'}}\n </igx-icon>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }] }); }
223
223
  }
224
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: IgxExpansionPanelHeaderComponent, decorators: [{
224
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxExpansionPanelHeaderComponent, decorators: [{
225
225
  type: Component,
226
226
  args: [{ selector: 'igx-expansion-panel-header', standalone: true, imports: [NgIf, IgxIconComponent], template: "<div class=\"igx-expansion-panel__header-inner\" [attr.tabindex]=\"tabIndex\" role=\"button\" [attr.id]=\"id\"\n[attr.aria-disabled]=\"disabled\" [attr.aria-expanded]=\"isExpanded\" [attr.aria-controls]=\"controls\">\n <div class=\"igx-expansion-panel__title-wrapper\">\n <ng-content select=\"igx-expansion-panel-title\"></ng-content>\n <ng-content select=\"igx-expansion-panel-description\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div [class]=\"iconPositionClass\">\n <ng-content *ngIf=\"iconTemplate\" select=\"igx-expansion-panel-icon\"></ng-content>\n <igx-icon *ngIf=\"!iconTemplate\">\n {{panel.collapsed? 'expand_more':'expand_less'}}\n </igx-icon>\n </div>\n</div>\n" }]
227
227
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -253,7 +253,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ng
253
253
  type: HostBinding,
254
254
  args: ['class.igx-expansion-panel__header--expanded']
255
255
  }], disabled: [{
256
- type: Input
256
+ type: Input,
257
+ args: [{ transform: booleanAttribute }]
257
258
  }, {
258
259
  type: HostBinding,
259
260
  args: ['class.igx-expansion-panel--disabled']
@@ -282,4 +283,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ng
282
283
  type: HostListener,
283
284
  args: ['keydown.Alt.ArrowUp', ['$event']]
284
285
  }] } });
285
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZXhwYW5zaW9uLXBhbmVsL2V4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLElBQUksRUFDSixZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzlFLE9BQU8sRUFBRSw2QkFBNkIsRUFBOEQsTUFBTSwwQkFBMEIsQ0FBQztBQUNySSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFdkM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxNQUFNLENBQUM7SUFDbkQsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxPQUFPO0NBQ2pCLENBQUMsQ0FBQztBQVVILE1BQU0sT0FBTyxnQ0FBZ0M7SUFDekM7OztPQUdHO0lBQ0gsSUFBVyxPQUFPO1FBQ2QsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFL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QyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQzNDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWlCMUIsU0FBUztzQkFEZixZQUFZO3VCQUFDLHVCQUF1QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWN6QyxVQUFVO3NCQURoQixZQUFZO3VCQUFDLHFCQUFxQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgSG9zdCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgT3V0cHV0LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBJbmplY3QsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4RXhwYW5zaW9uUGFuZWxJY29uRGlyZWN0aXZlIH0gZnJvbSAnLi9leHBhbnNpb24tcGFuZWwuZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBJR1hfRVhQQU5TSU9OX1BBTkVMX0NPTVBPTkVOVCwgSWd4RXhwYW5zaW9uUGFuZWxCYXNlLCBJRXhwYW5zaW9uUGFuZWxDYW5jZWxhYmxlRXZlbnRBcmdzICB9IGZyb20gJy4vZXhwYW5zaW9uLXBhbmVsLmNvbW1vbic7XG5pbXBvcnQgeyBta2VudW0gfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IElneEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IEV4cGFuc2lvblBhbmVsSGVhZGVySWNvblBvc2l0aW9uID0gbWtlbnVtKHtcbiAgICBMRUZUOiAnbGVmdCcsXG4gICAgTk9ORTogJ25vbmUnLFxuICAgIFJJR0hUOiAncmlnaHQnXG59KTtcbmV4cG9ydCB0eXBlIEV4cGFuc2lvblBhbmVsSGVhZGVySWNvblBvc2l0aW9uID0gKHR5cGVvZiBFeHBhbnNpb25QYW5lbEhlYWRlckljb25Qb3NpdGlvbilba2V5b2YgdHlwZW9mIEV4cGFuc2lvblBhbmVsSGVhZGVySWNvblBvc2l0aW9uXTtcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2V4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWYsIElneEljb25Db21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIElneEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBgaWd4LWV4cGFuc2lvbi1wYW5lbC1pY29uYCBlbGVtZW50O1xuICAgICAqIElmIGBpY29uUG9zaXRpb25gIGlzIGBOT05FYCAtIHJldHVybiBudWxsO1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaWNvblJlZigpOiBFbGVtZW50UmVmIHtcbiAgICAgICAgY29uc3QgcmVuZGVyZWRUZW1wbGF0ZSA9IHRoaXMuY3VzdG9tSWNvblJlZiAgPz8gdGhpcy5kZWZhdWx0SWNvblJlZjtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblBvc2l0aW9uICE9PSBFeHBhbnNpb25QYW5lbEhlYWRlckljb25Qb3NpdGlvbi5OT05FID8gcmVuZGVyZWRUZW1wbGF0ZSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoSWd4RXhwYW5zaW9uUGFuZWxJY29uRGlyZWN0aXZlKVxuICAgIHB1YmxpYyBzZXQgaWNvblRlbXBsYXRlKHZhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9pY29uVGVtcGxhdGUgPSB2YWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaWNvblRlbXBsYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faWNvblRlbXBsYXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB0aGUgYGFyaWEtbGV2ZWxgIGF0dHJpYnV0ZSBvZiB0aGUgaGVhZGVyXG4gICAgICogR2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBjb25zdCBjdXJyZW50QXJpYUxldmVsID0gdGhpcy5wYW5lbC5oZWFkZXIubHY7XG4gICAgICogYGBgXG4gICAgICogU2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICB0aGlzLnBhbmVsLmhlYWRlci5sdiA9ICc1JztcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBbbHZdPVwibXlDdXN0b21MZXZlbFwiPjwvaWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGV2ZWwnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGx2ID0gJzMnO1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHRoZSBgcm9sZWAgYXR0cmlidXRlIG9mIHRoZSBoZWFkZXJcbiAgICAgKiBHZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IGN1cnJlbnRSb2xlID0gdGhpcy5wYW5lbC5oZWFkZXIucm9sZTtcbiAgICAgKiBgYGBcbiAgICAgKiBTZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIHRoaXMucGFuZWwuaGVhZGVyLnJvbGUgPSAnNSc7XG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgW3JvbGVdPVwiJ2N1c3RvbSdcIj48L2lneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByb2xlID0gJ2hlYWRpbmcnO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY29udHJvbHMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFuZWwuaWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlubmVyRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB0aGUgcG9zaXRpb24gb2YgdGhlIGV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgZXhwYW5kL2NvbGxhcHNlIGljb25cbiAgICAgKiBBY2NlcHRzIGBsZWZ0YCwgYHJpZ2h0YCBvciBgbm9uZWBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IGN1cnJlbnRJY29uUG9zaXRpb24gPSB0aGlzLnBhbmVsLmhlYWRlci5pY29uUG9zaXRpb247XG4gICAgICogYGBgXG4gICAgICogU2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICB0aGlzLnBhbmVsLmhlYWRlci5pY29uUG9zaXRpb24gPSAnbGVmdCc7XG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgW2ljb25Qb3NpdGlvbl09XCIncmlnaHQnXCI+PC9pZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpY29uUG9zaXRpb246IEV4cGFuc2lvblBhbmVsSGVhZGVySWNvblBvc2l0aW9uID0gRXhwYW5zaW9uUGFuZWxIZWFkZXJJY29uUG9zaXRpb24uTEVGVDtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgd2hlbmV2ZXIgYSB1c2VyIGludGVyYWN0cyB3aXRoIHRoZSBoZWFkZXIgaG9zdFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgaGFuZGxlSW50ZXJhY3Rpb24oZXZlbnQ6IElFeHBhbnNpb25QYW5lbENhbmNlbGFibGVFdmVudEFyZ3MpIHtcbiAgICAgKiAgLi4uXG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIChpbnRlcmFjdGlvbik9XCJoYW5kbGVJbnRlcmFjdGlvbigkZXZlbnQpXCI+XG4gICAgICogICAgICAuLi5cbiAgICAgKiAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgaW50ZXJhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPElFeHBhbnNpb25QYW5lbENhbmNlbGFibGVFdmVudEFyZ3MgPigpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWV4cGFuc2lvbi1wYW5lbF9faGVhZGVyJylcbiAgICBwdWJsaWMgY3NzQ2xhc3MgPSAnaWd4LWV4cGFuc2lvbi1wYW5lbF9faGVhZGVyJztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1leHBhbnNpb24tcGFuZWxfX2hlYWRlci0tZXhwYW5kZWQnKVxuICAgIHB1YmxpYyBnZXQgaXNFeHBhbmRlZCgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnBhbmVsLmNvbGxhcHNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgdGhlIHdoZXRoZXIgdGhlIGhlYWRlciBpcyBkaXNhYmxlZFxuICAgICAqIFdoZW4gZGlzYWJsZWQsIHRoZSBoZWFkZXIgd2lsbCBub3QgaGFuZGxlIHVzZXIgZXZlbnRzIGFuZCB3aWxsIHN0b3AgdGhlaXIgcHJvcGFnYXRpb25cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgY29uc3QgaXNEaXNhYmxlZCA9IHRoaXMucGFuZWwuaGVhZGVyLmRpc2FibGVkO1xuICAgICAqIGBgYFxuICAgICAqIFNldFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgdGhpcy5wYW5lbC5oZWFkZXIuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIFtkaXNhYmxlZF09XCJ0cnVlXCI+XG4gICAgICogICAgIC4uLlxuICAgICAqICA8L2lneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZXhwYW5zaW9uLXBhbmVsLS1kaXNhYmxlZCcpXG4gICAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsO1xuICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgICAvLyBWLlMuIEp1bmUgMTF0aCwgMjAyMTogIzk2OTYgVGFiSW5kZXggc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiBwYW5lbCBpcyBkaXNhYmxlZFxuICAgICAgICAgICAgZGVsZXRlIHRoaXMudGFiSW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRhYkluZGV4ID0gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBDb250ZW50Q2hpbGQoSWd4RXhwYW5zaW9uUGFuZWxJY29uRGlyZWN0aXZlLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBwcml2YXRlIGN1c3RvbUljb25SZWY6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBAVmlld0NoaWxkKElneEljb25Db21wb25lbnQsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHByaXZhdGUgZGVmYXVsdEljb25SZWY6IEVsZW1lbnRSZWY7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIGBpZGAgb2YgdGhlIGV4cGFuc2lvbiBwYW5lbCBoZWFkZXIuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBwYW5lbEhlYWRlcklkID0gIHRoaXMucGFuZWwuaGVhZGVyLmlkO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneEV4cGFuc2lvblBhbmVsQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGlkID0gJyc7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgdGFiSW5kZXggPSAwO1xuXG4gICAgLy8gcHJvcGVydGllcyBzZWN0aW9uXG4gICAgcHJpdmF0ZSBfaWNvblRlbXBsYXRlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKEBIb3N0KCkgQEluamVjdChJR1hfRVhQQU5TSU9OX1BBTkVMX0NPTVBPTkVOVCkgcHVibGljIHBhbmVsOiBJZ3hFeHBhbnNpb25QYW5lbEJhc2UsIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICAgICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHRoaXMuaWQgPSBgJHt0aGlzLnBhbmVsLmlkfS1oZWFkZXJgO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkVudGVyJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLlNwYWNlJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLlNwYWNlYmFyJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uQWN0aW9uKGV2dD86IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV2ZW50QXJnczogSUV4cGFuc2lvblBhbmVsQ2FuY2VsYWJsZUV2ZW50QXJncyAgPSB7IGV2ZW50OiBldnQsIG93bmVyOiB0aGlzLnBhbmVsLCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgIHRoaXMuaW50ZXJhY3Rpb24uZW1pdChldmVudEFyZ3MpO1xuICAgICAgICBpZiAoZXZlbnRBcmdzLmNhbmNlbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFuZWwudG9nZ2xlKGV2dCk7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uQWx0LkFycm93RG93bicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9wZW5QYW5lbChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgICBjb25zdCBldmVudEFyZ3M6IElFeHBhbnNpb25QYW5lbENhbmNlbGFibGVFdmVudEFyZ3MgID0geyBldmVudCwgb3duZXI6IHRoaXMucGFuZWwsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgICAgIHRoaXMuaW50ZXJhY3Rpb24uZW1pdChldmVudEFyZ3MpO1xuICAgICAgICAgICAgaWYgKGV2ZW50QXJncy5jYW5jZWwgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBhbmVsLmV4cGFuZChldmVudCk7XG4gICAgICAgIH1cbiAgICAgfVxuXG4gICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkFsdC5BcnJvd1VwJywgWyckZXZlbnQnXSlcbiAgICAgcHVibGljIGNsb3NlUGFuZWwoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmFsdEtleSkge1xuICAgICAgICAgICAgY29uc3QgZXZlbnRBcmdzOiBJRXhwYW5zaW9uUGFuZWxDYW5jZWxhYmxlRXZlbnRBcmdzICA9IHsgZXZlbnQsIG93bmVyOiB0aGlzLnBhbmVsLCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgICAgICB0aGlzLmludGVyYWN0aW9uLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgICAgIGlmIChldmVudEFyZ3MuY2FuY2VsID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wYW5lbC5jb2xsYXBzZShldmVudCk7XG4gICAgICAgIH1cbiAgICAgfVxuXG4gICAgIC8qKlxuICAgICAgKiBAaGlkZGVuXG4gICAgICAqL1xuICAgICBwdWJsaWMgZ2V0IGljb25Qb3NpdGlvbkNsYXNzKCk6IHN0cmluZyB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5pY29uUG9zaXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgKEV4cGFuc2lvblBhbmVsSGVhZGVySWNvblBvc2l0aW9uLkxFRlQpOlxuICAgICAgICAgICAgICAgIHJldHVybiBgaWd4LWV4cGFuc2lvbi1wYW5lbF9faGVhZGVyLWljb24tLXN0YXJ0YDtcbiAgICAgICAgICAgIGNhc2UgKEV4cGFuc2lvblBhbmVsSGVhZGVySWNvblBvc2l0aW9uLlJJR0hUKTpcbiAgICAgICAgICAgICAgICByZXR1cm4gYGlneC1leHBhbnNpb24tcGFuZWxfX2hlYWRlci1pY29uLS1lbmRgO1xuICAgICAgICAgICAgY2FzZSAoRXhwYW5zaW9uUGFuZWxIZWFkZXJJY29uUG9zaXRpb24uTk9ORSk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBpZ3gtZXhwYW5zaW9uLXBhbmVsX19oZWFkZXItaWNvbi0tbm9uZWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaWd4LWV4cGFuc2lvbi1wYW5lbF9faGVhZGVyLWlubmVyXCIgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXhcIiByb2xlPVwiYnV0dG9uXCIgW2F0dHIuaWRdPVwiaWRcIlxuW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNFeHBhbmRlZFwiIFthdHRyLmFyaWEtY29udHJvbHNdPVwiY29udHJvbHNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaWd4LWV4cGFuc2lvbi1wYW5lbF9fdGl0bGUtd3JhcHBlclwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJpZ3gtZXhwYW5zaW9uLXBhbmVsLXRpdGxlXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJpZ3gtZXhwYW5zaW9uLXBhbmVsLWRlc2NyaXB0aW9uXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8ZGl2IFtjbGFzc109XCJpY29uUG9zaXRpb25DbGFzc1wiPlxuICAgICAgICA8bmctY29udGVudCAqbmdJZj1cImljb25UZW1wbGF0ZVwiIHNlbGVjdD1cImlneC1leHBhbnNpb24tcGFuZWwtaWNvblwiPjwvbmctY29udGVudD5cbiAgICAgICAgPGlneC1pY29uICpuZ0lmPVwiIWljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAge3twYW5lbC5jb2xsYXBzZWQ/ICdleHBhbmRfbW9yZSc6J2V4cGFuZF9sZXNzJ319XG4gICAgICAgIDwvaWd4LWljb24+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZXhwYW5zaW9uLXBhbmVsL2V4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLElBQUksRUFDSixZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsNkJBQTZCLEVBQTZELE1BQU0sMEJBQTBCLENBQUM7QUFDcEksT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRXZDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsTUFBTSxDQUFDO0lBQ25ELElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07SUFDWixLQUFLLEVBQUUsT0FBTztDQUNqQixDQUFDLENBQUM7QUFVSCxNQUFNLE9BQU8sZ0NBQWdDO0lBQ3pDOzs7T0FHRztJQUNILElBQVcsT0FBTztRQUNkLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxD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OztzQkFDeEMsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUN4QyxZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDM0MsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBaUIxQixTQUFTO3NCQURmLFlBQVk7dUJBQUMsdUJBQXVCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBYzFDLFVBQVU7c0JBRGhCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBIb3N0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBPdXRwdXQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEluamVjdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElneEV4cGFuc2lvblBhbmVsSWNvbkRpcmVjdGl2ZSB9IGZyb20gJy4vZXhwYW5zaW9uLXBhbmVsLmRpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgSUdYX0VYUEFOU0lPTl9QQU5FTF9DT01QT05FTlQsIElneEV4cGFuc2lvblBhbmVsQmFzZSwgSUV4cGFuc2lvblBhbmVsQ2FuY2VsYWJsZUV2ZW50QXJncyB9IGZyb20gJy4vZXhwYW5zaW9uLXBhbmVsLmNvbW1vbic7XG5pbXBvcnQgeyBta2VudW0gfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IElneEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IEV4cGFuc2lvblBhbmVsSGVhZGVySWNvblBvc2l0aW9uID0gbWtlbnVtKHtcbiAgICBMRUZUOiAnbGVmdCcsXG4gICAgTk9ORTogJ25vbmUnLFxuICAgIFJJR0hUOiAncmlnaHQnXG59KTtcbmV4cG9ydCB0eXBlIEV4cGFuc2lvblBhbmVsSGVhZGVySWNvblBvc2l0aW9uID0gKHR5cGVvZiBFeHBhbnNpb25QYW5lbEhlYWRlckljb25Qb3NpdGlvbilba2V5b2YgdHlwZW9mIEV4cGFuc2lvblBhbmVsSGVhZGVySWNvblBvc2l0aW9uXTtcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2V4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWYsIElneEljb25Db21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIElneEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBgaWd4LWV4cGFuc2lvbi1wYW5lbC1pY29uYCBlbGVtZW50O1xuICAgICAqIElmIGBpY29uUG9zaXRpb25gIGlzIGBOT05FYCAtIHJldHVybiBudWxsO1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaWNvblJlZigpOiBFbGVtZW50UmVmIHtcbiAgICAgICAgY29uc3QgcmVuZGVyZWRUZW1wbGF0ZSA9IHRoaXMuY3VzdG9tSWNvblJlZiA/PyB0aGlzLmRlZmF1bHRJY29uUmVmO1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uUG9zaXRpb24gIT09IEV4cGFuc2lvblBhbmVsSGVhZGVySWNvblBvc2l0aW9uLk5PTkUgPyByZW5kZXJlZFRlbXBsYXRlIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hFeHBhbnNpb25QYW5lbEljb25EaXJlY3RpdmUpXG4gICAgcHVibGljIHNldCBpY29uVGVtcGxhdGUodmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2ljb25UZW1wbGF0ZSA9IHZhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBpY29uVGVtcGxhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pY29uVGVtcGxhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHRoZSBgYXJpYS1sZXZlbGAgYXR0cmlidXRlIG9mIHRoZSBoZWFkZXJcbiAgICAgKiBHZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IGN1cnJlbnRBcmlhTGV2ZWwgPSB0aGlzLnBhbmVsLmhlYWRlci5sdjtcbiAgICAgKiBgYGBcbiAgICAgKiBTZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIHRoaXMucGFuZWwuaGVhZGVyLmx2ID0gJzUnO1xuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIFtsdl09XCJteUN1c3RvbUxldmVsXCI+PC9pZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sZXZlbCcpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbHYgPSAnMyc7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgdGhlIGByb2xlYCBhdHRyaWJ1dGUgb2YgdGhlIGhlYWRlclxuICAgICAqIEdldFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgY29uc3QgY3VycmVudFJvbGUgPSB0aGlzLnBhbmVsLmhlYWRlci5yb2xlO1xuICAgICAqIGBgYFxuICAgICAqIFNldFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgdGhpcy5wYW5lbC5oZWFkZXIucm9sZSA9ICc1JztcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBbcm9sZV09XCInY3VzdG9tJ1wiPjwvaWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJvbGUgPSAnaGVhZGluZyc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBjb250cm9scygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5wYW5lbC5pZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaW5uZXJFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBleHBhbmQvY29sbGFwc2UgaWNvblxuICAgICAqIEFjY2VwdHMgYGxlZnRgLCBgcmlnaHRgIG9yIGBub25lYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgY29uc3QgY3VycmVudEljb25Qb3NpdGlvbiA9IHRoaXMucGFuZWwuaGVhZGVyLmljb25Qb3NpdGlvbjtcbiAgICAgKiBgYGBcbiAgICAgKiBTZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIHRoaXMucGFuZWwuaGVhZGVyLmljb25Qb3NpdGlvbiA9ICdsZWZ0JztcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBbaWNvblBvc2l0aW9uXT1cIidyaWdodCdcIj48L2lneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGljb25Qb3NpdGlvbjogRXhwYW5zaW9uUGFuZWxIZWFkZXJJY29uUG9zaXRpb24gPSBFeHBhbnNpb25QYW5lbEhlYWRlckljb25Qb3NpdGlvbi5MRUZUO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuZXZlciBhIHVzZXIgaW50ZXJhY3RzIHdpdGggdGhlIGhlYWRlciBob3N0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBoYW5kbGVJbnRlcmFjdGlvbihldmVudDogSUV4cGFuc2lvblBhbmVsQ2FuY2VsYWJsZUV2ZW50QXJncykge1xuICAgICAqICAuLi5cbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgKGludGVyYWN0aW9uKT1cImhhbmRsZUludGVyYWN0aW9uKCRldmVudClcIj5cbiAgICAgKiAgICAgIC4uLlxuICAgICAqICA8L2lneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBpbnRlcmFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8SUV4cGFuc2lvblBhbmVsQ2FuY2VsYWJsZUV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1leHBhbnNpb24tcGFuZWxfX2hlYWRlcicpXG4gICAgcHVibGljIGNzc0NsYXNzID0gJ2lneC1leHBhbnNpb24tcGFuZWxfX2hlYWRlcic7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZXhwYW5zaW9uLXBhbmVsX19oZWFkZXItLWV4cGFuZGVkJylcbiAgICBwdWJsaWMgZ2V0IGlzRXhwYW5kZWQoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5wYW5lbC5jb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHRoZSB3aGV0aGVyIHRoZSBoZWFkZXIgaXMgZGlzYWJsZWRcbiAgICAgKiBXaGVuIGRpc2FibGVkLCB0aGUgaGVhZGVyIHdpbGwgbm90IGhhbmRsZSB1c2VyIGV2ZW50cyBhbmQgd2lsbCBzdG9wIHRoZWlyIHByb3BhZ2F0aW9uXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IGlzRGlzYWJsZWQgPSB0aGlzLnBhbmVsLmhlYWRlci5kaXNhYmxlZDtcbiAgICAgKiBgYGBcbiAgICAgKiBTZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIHRoaXMucGFuZWwuaGVhZGVyLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxuICAgICAqICAgICAuLi5cbiAgICAgKiAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1leHBhbnNpb24tcGFuZWwtLWRpc2FibGVkJylcbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBkaXNhYmxlZCh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSB2YWw7XG4gICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICAgIC8vIFYuUy4gSnVuZSAxMXRoLCAyMDIxOiAjOTY5NiBUYWJJbmRleCBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHBhbmVsIGlzIGRpc2FibGVkXG4gICAgICAgICAgICBkZWxldGUgdGhpcy50YWJJbmRleDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudGFiSW5kZXggPSAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hFeHBhbnNpb25QYW5lbEljb25EaXJlY3RpdmUsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHByaXZhdGUgY3VzdG9tSWNvblJlZjogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBWaWV3Q2hpbGQoSWd4SWNvbkNvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgcHJpdmF0ZSBkZWZhdWx0SWNvblJlZjogRWxlbWVudFJlZjtcblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgYGlkYCBvZiB0aGUgZXhwYW5zaW9uIHBhbmVsIGhlYWRlci5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHBhbmVsSGVhZGVySWQgPSAgdGhpcy5wYW5lbC5oZWFkZXIuaWQ7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4RXhwYW5zaW9uUGFuZWxDb21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgaWQgPSAnJztcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyB0YWJJbmRleCA9IDA7XG5cbiAgICAvLyBwcm9wZXJ0aWVzIHNlY3Rpb25cbiAgICBwcml2YXRlIF9pY29uVGVtcGxhdGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoQEhvc3QoKSBASW5qZWN0KElHWF9FWFBBTlNJT05fUEFORUxfQ09NUE9ORU5UKSBwdWJsaWMgcGFuZWw6IElneEV4cGFuc2lvblBhbmVsQmFzZSwgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHRoaXMuaWQgPSBgJHt0aGlzLnBhbmVsLmlkfS1oZWFkZXJgO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkVudGVyJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLlNwYWNlJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLlNwYWNlYmFyJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uQWN0aW9uKGV2dD86IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXZlbnRBcmdzOiBJRXhwYW5zaW9uUGFuZWxDYW5jZWxhYmxlRXZlbnRBcmdzID0geyBldmVudDogZXZ0LCBvd25lcjogdGhpcy5wYW5lbCwgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICB0aGlzLmludGVyYWN0aW9uLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgaWYgKGV2ZW50QXJncy5jYW5jZWwgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhbmVsLnRvZ2dsZShldnQpO1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkFsdC5BcnJvd0Rvd24nLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvcGVuUGFuZWwoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmFsdEtleSkge1xuICAgICAgICAgICAgY29uc3QgZXZlbnRBcmdzOiBJRXhwYW5zaW9uUGFuZWxDYW5jZWxhYmxlRXZlbnRBcmdzID0geyBldmVudCwgb3duZXI6IHRoaXMucGFuZWwsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgICAgIHRoaXMuaW50ZXJhY3Rpb24uZW1pdChldmVudEFyZ3MpO1xuICAgICAgICAgICAgaWYgKGV2ZW50QXJncy5jYW5jZWwgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBhbmVsLmV4cGFuZChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkFsdC5BcnJvd1VwJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgY2xvc2VQYW5lbChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgICBjb25zdCBldmVudEFyZ3M6IElFeHBhbnNpb25QYW5lbENhbmNlbGFibGVFdmVudEFyZ3MgPSB7IGV2ZW50LCBvd25lcjogdGhpcy5wYW5lbCwgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICAgICAgdGhpcy5pbnRlcmFjdGlvbi5lbWl0KGV2ZW50QXJncyk7XG4gICAgICAgICAgICBpZiAoZXZlbnRBcmdzLmNhbmNlbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucGFuZWwuY29sbGFwc2UoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaWNvblBvc2l0aW9uQ2xhc3MoKTogc3RyaW5nIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmljb25Qb3NpdGlvbikge1xuICAgICAgICAgICAgY2FzZSAoRXhwYW5zaW9uUGFuZWxIZWFkZXJJY29uUG9zaXRpb24uTEVGVCk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBpZ3gtZXhwYW5zaW9uLXBhbmVsX19oZWFkZXItaWNvbi0tc3RhcnRgO1xuICAgICAgICAgICAgY2FzZSAoRXhwYW5zaW9uUGFuZWxIZWFkZXJJY29uUG9zaXRpb24uUklHSFQpOlxuICAgICAgICAgICAgICAgIHJldHVybiBgaWd4LWV4cGFuc2lvbi1wYW5lbF9faGVhZGVyLWljb24tLWVuZGA7XG4gICAgICAgICAgICBjYXNlIChFeHBhbnNpb25QYW5lbEhlYWRlckljb25Qb3NpdGlvbi5OT05FKTpcbiAgICAgICAgICAgICAgICByZXR1cm4gYGlneC1leHBhbnNpb24tcGFuZWxfX2hlYWRlci1pY29uLS1ub25lYDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImlneC1leHBhbnNpb24tcGFuZWxfX2hlYWRlci1pbm5lclwiIFthdHRyLnRhYmluZGV4XT1cInRhYkluZGV4XCIgcm9sZT1cImJ1dHRvblwiIFthdHRyLmlkXT1cImlkXCJcblthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzRXhwYW5kZWRcIiBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImNvbnRyb2xzXCI+XG4gICAgPGRpdiBjbGFzcz1cImlneC1leHBhbnNpb24tcGFuZWxfX3RpdGxlLXdyYXBwZXJcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaWd4LWV4cGFuc2lvbi1wYW5lbC10aXRsZVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaWd4LWV4cGFuc2lvbi1wYW5lbC1kZXNjcmlwdGlvblwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPGRpdiBbY2xhc3NdPVwiaWNvblBvc2l0aW9uQ2xhc3NcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgKm5nSWY9XCJpY29uVGVtcGxhdGVcIiBzZWxlY3Q9XCJpZ3gtZXhwYW5zaW9uLXBhbmVsLWljb25cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxpZ3gtaWNvbiAqbmdJZj1cIiFpY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIHt7cGFuZWwuY29sbGFwc2VkPyAnZXhwYW5kX21vcmUnOidleHBhbmRfbGVzcyd9fVxuICAgICAgICA8L2lneC1pY29uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -36,10 +36,10 @@ export class HeaderContentBaseDirective {
36
36
  return null;
37
37
  };
38
38
  }
39
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: HeaderContentBaseDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
40
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.1", type: HeaderContentBaseDirective, ngImport: i0 }); }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: HeaderContentBaseDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
40
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.3", type: HeaderContentBaseDirective, ngImport: i0 }); }
41
41
  }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: HeaderContentBaseDirective, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: HeaderContentBaseDirective, decorators: [{
43
43
  type: Directive
44
44
  }], ctorParameters: () => [{ type: i0.ElementRef }] });
45
45
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5zaW9uLXBhbmVsLmNvbW1vbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLmNvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUE0QixjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBb0JwRixjQUFjO0FBQ2QsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsSUFBSSxjQUFjLENBQXdCLHdCQUF3QixDQUFDLENBQUM7QUFTakgsTUFBTSxPQUFnQiwwQkFBMEI7SUFFNUMsWUFBc0IsT0FBbUI7UUFBbkIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUV6Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7V0FvQkc7UUFDSSxzQkFBaUIsR0FBRyxDQUFDLE9BQW1CLEVBQVUsRUFBRTtZQUN2RCxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFO2dCQUM3QixPQUFPLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO2FBQ3RDO1lBQ0QsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRTtnQkFDbkMsT0FBTyxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNuRDtZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQztJQWhDMkMsQ0FBQzttSEFGNUIsMEJBQTBCO3VHQUExQiwwQkFBMEI7O2dHQUExQiwwQkFBMEI7a0JBRC9DLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDYW5jZWxhYmxlRXZlbnRBcmdzLCBJQmFzZUV2ZW50QXJncyB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElneEV4cGFuc2lvblBhbmVsQmFzZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBjc3NDbGFzczogc3RyaW5nO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIGhlYWRlcklkOiBzdHJpbmc7XG4gICAgY29sbGFwc2VkOiBib29sZWFuO1xuICAgIGFuaW1hdGlvblNldHRpbmdzOiB7IG9wZW5BbmltYXRpb246IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhOyBjbG9zZUFuaW1hdGlvbjogQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGEgfTtcbiAgICBjb250ZW50Q29sbGFwc2VkOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgICBjb250ZW50Q29sbGFwc2luZzogRXZlbnRFbWl0dGVyPGFueT47XG4gICAgY29udGVudEV4cGFuZGVkOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgICBjb250ZW50RXhwYW5kaW5nOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgICBjb2xsYXBzZShldnQ/OiBFdmVudCk7XG4gICAgZXhwYW5kKGV2dD86IEV2ZW50KTtcbiAgICB0b2dnbGUoZXZ0PzogRXZlbnQpO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGNvbnN0IElHWF9FWFBBTlNJT05fUEFORUxfQ09NUE9ORU5UID0gbmV3IEluamVjdGlvblRva2VuPElneEV4cGFuc2lvblBhbmVsQmFzZT4oJ0lneEV4cGFuc2lvblBhbmVsVG9rZW4nKTtcblxuZXhwb3J0IGludGVyZmFjZSBJRXhwYW5zaW9uUGFuZWxFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgZXZlbnQ6IEV2ZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElFeHBhbnNpb25QYW5lbENhbmNlbGFibGVFdmVudEFyZ3MgIGV4dGVuZHMgSUV4cGFuc2lvblBhbmVsRXZlbnRBcmdzLCBDYW5jZWxhYmxlRXZlbnRBcmdzIHt9XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEhlYWRlckNvbnRlbnRCYXNlRGlyZWN0aXZlIHtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBlbGVtZW50OiBFbGVtZW50UmVmKSB7IH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGB0ZXh0Q29udGVudGAgb2YgYW4gZWxlbWVudFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZXhwYW5zaW9uLXBhbmVsLXRpdGxlPlxuICAgICAqICBUb29sdGlwIGNvbnRlbnRcbiAgICAgKiA8L2lneC1leHBhbnNpb24tcGFuZWwtdGl0bGU+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiAgb3IgdGhlIGB0aXRsZWAgY29udGVudFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZXhwYW5zaW9uLXBhbmVsLXRpdGxlIFt0aXRsZV09XCInVG9vbHRpcCBjb250ZW50J1wiPlxuICAgICAqIDwvaWd4LWV4cGFuc2lvbi1wYW5lbC10aXRsZT5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIElmIGJvdGggYXJlIHByb3ZpZGVkLCByZXR1cm5zIHRoZSBgdGl0bGVgIGNvbnRlbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZWxlbWVudFxuICAgICAqIEByZXR1cm5zIHRvb2x0aXAgY29udGVudCBmb3IgYW4gZWxlbWVudFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRUb29sdGlwQ29udGVudCA9IChlbGVtZW50OiBFbGVtZW50UmVmKTogc3RyaW5nID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQubmF0aXZlRWxlbWVudC50aXRsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQubmF0aXZlRWxlbWVudC50aXRsZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudC5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50LnRyaW0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG59XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { Component, ContentChild, EventEmitter, HostBinding, Inject, Input, Output } from '@angular/core';
1
+ import { Component, ContentChild, EventEmitter, HostBinding, Inject, Input, Output, booleanAttribute } from '@angular/core';
2
2
  import { IgxAngularAnimationService } from '../services/animation/angular-animation-service';
3
3
  import { IgxExpansionPanelBodyComponent } from './expansion-panel-body.component';
4
4
  import { IgxExpansionPanelHeaderComponent } from './expansion-panel-header.component';
@@ -247,10 +247,10 @@ export class IgxExpansionPanelComponent extends ToggleAnimationPlayer {
247
247
  close(evt) {
248
248
  this.collapse(evt);
249
249
  }
250
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: IgxExpansionPanelComponent, deps: [{ token: IgxAngularAnimationService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
251
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-rc.1", type: IgxExpansionPanelComponent, isStandalone: true, selector: "igx-expansion-panel", inputs: { animationSettings: "animationSettings", id: "id", collapsed: "collapsed" }, outputs: { collapsedChange: "collapsedChange", contentCollapsing: "contentCollapsing", contentCollapsed: "contentCollapsed", contentExpanding: "contentExpanding", contentExpanded: "contentExpanded" }, host: { properties: { "attr.id": "this.id", "class.igx-expansion-panel": "this.cssClass", "class.igx-expansion-panel--expanded": "this.opened", "attr.aria-expanded": "this.panelExpanded" } }, providers: [{ provide: IGX_EXPANSION_PANEL_COMPONENT, useExisting: IgxExpansionPanelComponent }], queries: [{ propertyName: "body", first: true, predicate: IgxExpansionPanelBodyComponent, descendants: true, read: IgxExpansionPanelBodyComponent }, { propertyName: "header", first: true, predicate: IgxExpansionPanelHeaderComponent, descendants: true, read: IgxExpansionPanelHeaderComponent }], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"igx-expansion-panel-header\"></ng-content>\n<ng-content *ngIf=\"!collapsed\" select=\"igx-expansion-panel-body\"></ng-content>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
250
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxExpansionPanelComponent, deps: [{ token: IgxAngularAnimationService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
251
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.0.0-rc.3", type: IgxExpansionPanelComponent, isStandalone: true, selector: "igx-expansion-panel", inputs: { animationSettings: "animationSettings", id: "id", collapsed: ["collapsed", "collapsed", booleanAttribute] }, outputs: { collapsedChange: "collapsedChange", contentCollapsing: "contentCollapsing", contentCollapsed: "contentCollapsed", contentExpanding: "contentExpanding", contentExpanded: "contentExpanded" }, host: { properties: { "attr.id": "this.id", "class.igx-expansion-panel": "this.cssClass", "class.igx-expansion-panel--expanded": "this.opened", "attr.aria-expanded": "this.panelExpanded" } }, providers: [{ provide: IGX_EXPANSION_PANEL_COMPONENT, useExisting: IgxExpansionPanelComponent }], queries: [{ propertyName: "body", first: true, predicate: IgxExpansionPanelBodyComponent, descendants: true, read: IgxExpansionPanelBodyComponent }, { propertyName: "header", first: true, predicate: IgxExpansionPanelHeaderComponent, descendants: true, read: IgxExpansionPanelHeaderComponent }], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"igx-expansion-panel-header\"></ng-content>\n<ng-content *ngIf=\"!collapsed\" select=\"igx-expansion-panel-body\"></ng-content>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
252
252
  }
253
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: IgxExpansionPanelComponent, decorators: [{
253
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxExpansionPanelComponent, decorators: [{
254
254
  type: Component,
255
255
  args: [{ selector: 'igx-expansion-panel', providers: [{ provide: IGX_EXPANSION_PANEL_COMPONENT, useExisting: IgxExpansionPanelComponent }], standalone: true, imports: [NgIf], template: "<ng-content select=\"igx-expansion-panel-header\"></ng-content>\n<ng-content *ngIf=\"!collapsed\" select=\"igx-expansion-panel-body\"></ng-content>\n" }]
256
256
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -273,7 +273,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ng
273
273
  type: HostBinding,
274
274
  args: ['attr.aria-expanded']
275
275
  }], collapsed: [{
276
- type: Input
276
+ type: Input,
277
+ args: [{ transform: booleanAttribute }]
277
278
  }], collapsedChange: [{
278
279
  type: Output
279
280
  }], contentCollapsing: [{
@@ -291,4 +292,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ng
291
292
  type: ContentChild,
292
293
  args: [IgxExpansionPanelHeaderComponent, { read: IgxExpansionPanelHeaderComponent }]
293
294
  }] } });
294
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFFN0YsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEYsT0FBTyxFQUlILDZCQUE2QixFQUNoQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxxQkFBcUIsRUFBMkIsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRXZDLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztBQVNoQixNQUFNLE9BQU8sMEJBQTJCLFNBQVEscUJBQXFCO0lBQ2pFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0E4Qkc7SUFDSCxJQUNvQixpQkFBaUI7UUFDakMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDbkMsQ0FBQztJQUNELElBQW9CLGlCQUFpQixDQUFDLEtBQThCO1FBQ2hFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENB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TUFBTTtnQkFlRCxlQUFlO3NCQURyQixNQUFNO2dCQXFCQSxJQUFJO3NCQURWLFlBQVk7dUJBQUMsOEJBQThCLEVBQUUsRUFBRSxJQUFJLEVBQUUsOEJBQThCLEVBQUU7Z0JBTy9FLE1BQU07c0JBRFosWUFBWTt1QkFBQyxnQ0FBZ0MsRUFBRSxFQUFFLElBQUksRUFBRSxnQ0FBZ0MsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hBbmd1bGFyQW5pbWF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FuaW1hdGlvbi9hbmd1bGFyLWFuaW1hdGlvbi1zZXJ2aWNlJztcbmltcG9ydCB7IEFuaW1hdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hbmltYXRpb24vYW5pbWF0aW9uJztcbmltcG9ydCB7IElneEV4cGFuc2lvblBhbmVsQm9keUNvbXBvbmVudCB9IGZyb20gJy4vZXhwYW5zaW9uLXBhbmVsLWJvZHkuY29tcG9uZW50JztcbmltcG9ydCB7IElneEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIElFeHBhbnNpb25QYW5lbENhbmNlbGFibGVFdmVudEFyZ3MsXG4gICAgSUV4cGFuc2lvblBhbmVsRXZlbnRBcmdzLFxuICAgIElneEV4cGFuc2lvblBhbmVsQmFzZSxcbiAgICBJR1hfRVhQQU5TSU9OX1BBTkVMX0NPTVBPTkVOVFxufSBmcm9tICcuL2V4cGFuc2lvbi1wYW5lbC5jb21tb24nO1xuaW1wb3J0IHsgVG9nZ2xlQW5pbWF0aW9uUGxheWVyLCBUb2dnbGVBbmltYXRpb25TZXR0aW5ncyB9IGZyb20gJy4vdG9nZ2xlLWFuaW1hdGlvbi1jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmxldCBORVhUX0lEID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtZXhwYW5zaW9uLXBhbmVsJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2V4cGFuc2lvbi1wYW5lbC5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBJR1hfRVhQQU5TSU9OX1BBTkVMX0NPTVBPTkVOVCwgdXNlRXhpc3Rpbmc6IElneEV4cGFuc2lvblBhbmVsQ29tcG9uZW50IH1dLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWZdXG59KVxuZXhwb3J0IGNsYXNzIElneEV4cGFuc2lvblBhbmVsQ29tcG9uZW50IGV4dGVuZHMgVG9nZ2xlQW5pbWF0aW9uUGxheWVyIGltcGxlbWVudHMgSWd4RXhwYW5zaW9uUGFuZWxCYXNlLCBBZnRlckNvbnRlbnRJbml0IHtcbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIGFuaW1hdGlvbiBzZXR0aW5ncyBvZiB0aGUgZXhwYW5zaW9uIHBhbmVsIGNvbXBvbmVudFxuICAgICAqIE9wZW4gYW5kIENsb3NlIGFuaW1hdGlvbiBzaG91bGQgYmUgcGFzc2VkXG4gICAgICpcbiAgICAgKiBHZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IGN1cnJlbnRBbmltYXRpb25zID0gdGhpcy5wYW5lbC5hbmltYXRpb25TZXR0aW5ncztcbiAgICAgKiBgYGBcbiAgICAgKiBTZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGltcG9ydCB7IHNsaWRlSW5MZWZ0LCBzbGlkZU91dFJpZ2h0IH0gZnJvbSAnaWduaXRldWktYW5ndWxhcic7XG4gICAgICogIC4uLlxuICAgICAqICB0aGlzLnBhbmVsLmFuaW1hdGlvbnNTZXR0aW5ncyA9IHtcbiAgICAgKiAgICAgIG9wZW5BbmltYXRpb246IHNsaWRlSW5MZWZ0LFxuICAgICAqICAgICAgY2xvc2VBbmltYXRpb246IHNsaWRlT3V0UmlnaHRcbiAgICAgKiB9O1xuICAgICAqIGBgYFxuICAgICAqIG9yIHZpYSB0ZW1wbGF0ZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgaW1wb3J0IHsgc2xpZGVJbkxlZnQsIHNsaWRlT3V0UmlnaHQgfSBmcm9tICdpZ25pdGV1aS1hbmd1bGFyJztcbiAgICAgKiAgLi4uXG4gICAgICogIG15Q3VzdG9tQW5pbWF0aW9uT2JqZWN0ID0ge1xuICAgICAqICAgICAgb3BlbkFuaW1hdGlvbjogc2xpZGVJbkxlZnQsXG4gICAgICogICAgICBjbG9zZUFuaW1hdGlvbjogc2xpZGVPdXRSaWdodFxuICAgICAqIH07XG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbCBbYW5pbWF0aW9uU2V0dGluZ3NdPSdteUN1c3RvbUFuaW1hdGlvbk9iamVjdCc+XG4gICAgICogIC4uLlxuICAgICAqICA8L2lneC1leHBhbnNpb24tcGFuZWw+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGFuaW1hdGlvblNldHRpbmdzKCk6IFRvZ2dsZUFuaW1hdGlvblNldHRpbmdzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FuaW1hdGlvblNldHRpbmdzO1xuICAgIH1cbiAgICBwdWJsaWMgb3ZlcnJpZGUgc2V0IGFuaW1hdGlvblNldHRpbmdzKHZhbHVlOiBUb2dnbGVBbmltYXRpb25TZXR0aW5ncykge1xuICAgICAgICB0aGlzLl9hbmltYXRpb25TZXR0aW5ncyA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgYGlkYCBvZiB0aGUgZXhwYW5zaW9uIHBhbmVsIGNvbXBvbmVudC5cbiAgICAgKiBJZiBub3Qgc2V0LCBgaWRgIHdpbGwgaGF2ZSB2YWx1ZSBgXCJpZ3gtZXhwYW5zaW9uLXBhbmVsLTBcImA7XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZXhwYW5zaW9uLXBhbmVsIGlkID0gXCJteS1maXJzdC1leHBhbnNpb24tcGFuZWxcIj48L2lneC1leHBhbnNpb24tcGFuZWw+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBwYW5lbElkID0gIHRoaXMucGFuZWwuaWQ7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4RXhwYW5zaW9uUGFuZWxDb21wb25lbnRcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkID0gYGlneC1leHBhbnNpb24tcGFuZWwtJHtORVhUX0lEKyt9YDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1leHBhbnNpb24tcGFuZWwnKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtZXhwYW5zaW9uLXBhbmVsJztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1leHBhbnNpb24tcGFuZWwtLWV4cGFuZGVkJylcbiAgICBwcml2YXRlIG9wZW5lZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1leHBhbmRlZCcpXG4gICAgcHVibGljIGdldCBwYW5lbEV4cGFuZGVkKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMuY29sbGFwc2VkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB3aGV0aGVyIHRoZSBjb21wb25lbnQgaXMgY29sbGFwc2VkIChpdHMgY29udGVudCBpcyBoaWRkZW4pXG4gICAgICogR2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBjb25zdCBteVBhbmVsU3RhdGU6IGJvb2xlYW4gPSB0aGlzLnBhbmVsLmNvbGxhcHNlZDtcbiAgICAgKiBgYGBcbiAgICAgKiBTZXRcbiAgICAgKiBgYGBodG1sXG4gICAgICogIHRoaXMucGFuZWwuY29sbGFwc2VkID0gdHJ1ZTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIFR3by13YXkgZGF0YSBiaW5kaW5nOlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWV4cGFuc2lvbi1wYW5lbCBbKGNvbGxhcHNlZCldPVwibW9kZWwuaXNDb2xsYXBzZWRcIj48L2lneC1leHBhbnNpb24tcGFuZWw+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29sbGFwc2VkID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY29sbGFwc2VkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHRoZSBleHBhbnNpb24gcGFuZWwgc3RhcnRzIGNvbGxhcHNpbmdcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGhhbmRsZUNvbGxhcHNpbmcoZXZlbnQ6IElFeHBhbnNpb25QYW5lbENhbmNlbGFibGVFdmVudEFyZ3MpXG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbCAoY29udGVudENvbGxhcHNpbmcpPVwiaGFuZGxlQ29sbGFwc2luZygkZXZlbnQpXCI+XG4gICAgICogICAgICAuLi5cbiAgICAgKiAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgICBAT3V0cHV0KClcbiAgICAgcHVibGljIGNvbnRlbnRDb2xsYXBzaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxJRXhwYW5zaW9uUGFuZWxDYW5jZWxhYmxlRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHRoZSBleHBhbnNpb24gcGFuZWwgZmluaXNoZXMgY29sbGFwc2luZ1xuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgaGFuZGxlQ29sbGFwc2VkKGV2ZW50OiBJRXhwYW5zaW9uUGFuZWxFdmVudEFyZ3MpXG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbCAoY29udGVudENvbGxhcHNlZCk9XCJoYW5kbGVDb2xsYXBzZWQoJGV2ZW50KVwiPlxuICAgICAqICAgICAgLi4uXG4gICAgICogIDwvaWd4LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY29udGVudENvbGxhcHNlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SUV4cGFuc2lvblBhbmVsRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHRoZSBleHBhbnNpb24gcGFuZWwgc3RhcnRzIGV4cGFuZGluZ1xuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgaGFuZGxlRXhwYW5kaW5nKGV2ZW50OiBJRXhwYW5zaW9uUGFuZWxDYW5jZWxhYmxlRXZlbnRBcmdzKVxuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1leHBhbnNpb24tcGFuZWwgKGNvbnRlbnRFeHBhbmRpbmcpPVwiaGFuZGxlRXhwYW5kaW5nKCRldmVudClcIj5cbiAgICAgKiAgICAgIC4uLlxuICAgICAqICA8L2lneC1leHBhbnNpb24tcGFuZWw+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgIEBPdXRwdXQoKVxuICAgICBwdWJsaWMgY29udGVudEV4cGFuZGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8SUV4cGFuc2lvblBhbmVsQ2FuY2VsYWJsZUV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgZXhwYW5zaW9uIHBhbmVsIGZpbmlzaGVzIGV4cGFuZGluZ1xuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgaGFuZGxlRXhwYW5kZWQoZXZlbnQ6IElFeHBhbnNpb25QYW5lbEV2ZW50QXJncylcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsIChjb250ZW50RXhwYW5kZWQpPVwiaGFuZGxlRXhwYW5kZWQoJGV2ZW50KVwiPlxuICAgICAqICAgICAgLi4uXG4gICAgICogIDwvaWd4LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY29udGVudEV4cGFuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxJRXhwYW5zaW9uUGFuZWxFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBoZWFkZXJJZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGVhZGVyID8gYCR7dGhpcy5pZH0taGVhZGVyYCA6ICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoSWd4RXhwYW5zaW9uUGFuZWxCb2R5Q29tcG9uZW50LCB7IHJlYWQ6IElneEV4cGFuc2lvblBhbmVsQm9keUNvbXBvbmVudCB9KVxuICAgIHB1YmxpYyBib2R5OiBJZ3hFeHBhbnNpb25QYW5lbEJvZHlDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hFeHBhbnNpb25QYW5lbEhlYWRlckNvbXBvbmVudCwgeyByZWFkOiBJZ3hFeHBhbnNpb25QYW5lbEhlYWRlckNvbXBvbmVudCB9KVxuICAgIHB1YmxpYyBoZWFkZXI6IElneEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoSWd4QW5ndWxhckFuaW1hdGlvblNlcnZpY2UpIGFuaW1hdGlvblNlcnZpY2U6IEFuaW1hdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmPzogRWxlbWVudFJlZikge1xuICAgICAgICBzdXBlcihhbmltYXRpb25TZXJ2aWNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmJvZHkgJiYgdGhpcy5oZWFkZXIpIHtcbiAgICAgICAgICAgIC8vIHNjaGVkdWxlIGF0IGVuZCBvZiB0dXJuOlxuICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2R5LmxhYmVsbGVkQnkgPSB0aGlzLmJvZHkubGFiZWxsZWRCeSB8fCB0aGlzLmhlYWRlcklkO1xuICAgICAgICAgICAgICAgIHRoaXMuYm9keS5sYWJlbCA9IHRoaXMuYm9keS5sYWJlbCB8fCB0aGlzLmlkICsgJy1yZWdpb24nO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb2xsYXBzZXMgdGhlIHBhbmVsXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsICNteVBhbmVsPlxuICAgICAqICAgICAgLi4uXG4gICAgICogIDwvaWd4LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgKiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIChjbGljayk9XCJteVBhbmVsLmNvbGxhcHNlKCRldmVudClcIj5Db2xscGFzZSBQYW5lbDwvYnV0dG9uPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBjb2xsYXBzZShldnQ/OiBFdmVudCkge1xuICAgICAgICAvLyBJZiBleHBhbnNpb24gcGFuZWwgaXMgYWxyZWFkeSBjb2xsYXBzZWQgb3IgaXMgY29sbGFwc2luZywgZG8gbm90aGluZ1xuICAgICAgICBpZiAodGhpcy5jb2xsYXBzZWQgfHwgdGhpcy5jbG9zZUFuaW1hdGlvblBsYXllcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFyZ3MgPSB7IGV2ZW50OiBldnQsIHBhbmVsOiB0aGlzLCBvd25lcjogdGhpcywgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICB0aGlzLmNvbnRlbnRDb2xsYXBzaW5nLmVtaXQoYXJncyk7XG4gICAgICAgIGlmIChhcmdzLmNhbmNlbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMucGxheUNsb3NlQW5pbWF0aW9uKFxuICAgICAgICAgICAgdGhpcy5ib2R5Py5lbGVtZW50LFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudENvbGxhcHNlZC5lbWl0KHsgZXZlbnQ6IGV2dCwgb3duZXI6IHRoaXMgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb2xsYXBzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuY29sbGFwc2VkQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhwYW5kcyB0aGUgcGFuZWxcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1leHBhbnNpb24tcGFuZWwgI215UGFuZWw+XG4gICAgICogICAgICAuLi5cbiAgICAgKiAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAqICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZ3hCdXR0b24gKGNsaWNrKT1cIm15UGFuZWwuZXhwYW5kKCRldmVudClcIj5FeHBhbmQgUGFuZWw8L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZXhwYW5kKGV2dD86IEV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5jb2xsYXBzZWQpIHsgLy8gSWYgdGhlIHBhbmVsIGlzIGFscmVhZHkgb3BlbmVkLCBkbyBub3RoaW5nXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXJncyA9IHsgZXZlbnQ6IGV2dCwgcGFuZWw6IHRoaXMsIG93bmVyOiB0aGlzLCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgIHRoaXMuY29udGVudEV4cGFuZGluZy5lbWl0KGFyZ3MpO1xuICAgICAgICBpZiAoYXJncy5jYW5jZWwgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbGxhcHNlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9wZW5lZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY29sbGFwc2VkQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMucGxheU9wZW5BbmltYXRpb24oXG4gICAgICAgICAgICB0aGlzLmJvZHk/LmVsZW1lbnQsXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50RXhwYW5kZWQuZW1pdCh7IGV2ZW50OiBldnQsIG93bmVyOiB0aGlzIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgdGhlIHBhbmVsXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsICNteVBhbmVsPlxuICAgICAqICAgICAgLi4uXG4gICAgICogIDwvaWd4LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgKiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIChjbGljayk9XCJteVBhbmVsLnRvZ2dsZSgkZXZlbnQpXCI+RXhwYW5kIFBhbmVsPC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHRvZ2dsZShldnQ/OiBFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbihldnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbG9zZShldnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW4oZXZ0PzogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5leHBhbmQoZXZ0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2UoZXZ0PzogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5jb2xsYXBzZShldnQpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cImlneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyXCI+PC9uZy1jb250ZW50PlxuPG5nLWNvbnRlbnQgKm5nSWY9XCIhY29sbGFwc2VkXCIgc2VsZWN0PVwiaWd4LWV4cGFuc2lvbi1wYW5lbC1ib2R5XCI+PC9uZy1jb250ZW50PlxuIl19
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRTdGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RGLE9BQU8sRUFJSCw2QkFBNkIsRUFDaEMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUscUJBQXFCLEVBQTJCLE1BQU0sOEJBQThCLENBQUM7QUFDOUYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUV2QyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFTaEIsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHFCQUFxQjtJQUNqRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BOEJHO0lBQ0gsSUFDb0IsaUJBQWlCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ25DLENBQUM7SUFDRCxJQUFvQixpQkFBaUIsQ0FBQyxLQUE4QjtRQUNoRSxJQUFJLENBQUMsa0JBQWtC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QWlCO3NCQUR2QixNQUFNO2dCQWVBLGdCQUFnQjtzQkFEdEIsTUFBTTtnQkFlQSxnQkFBZ0I7c0JBRHRCLE1BQU07Z0JBZUEsZUFBZTtzQkFEckIsTUFBTTtnQkFxQkEsSUFBSTtzQkFEVixZQUFZO3VCQUFDLDhCQUE4QixFQUFFLEVBQUUsSUFBSSxFQUFFLDhCQUE4QixFQUFFO2dCQU8vRSxNQUFNO3NCQURaLFlBQVk7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0NBQWdDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIGJvb2xlYW5BdHRyaWJ1dGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hBbmd1bGFyQW5pbWF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FuaW1hdGlvbi9hbmd1bGFyLWFuaW1hdGlvbi1zZXJ2aWNlJztcbmltcG9ydCB7IEFuaW1hdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hbmltYXRpb24vYW5pbWF0aW9uJztcbmltcG9ydCB7IElneEV4cGFuc2lvblBhbmVsQm9keUNvbXBvbmVudCB9IGZyb20gJy4vZXhwYW5zaW9uLXBhbmVsLWJvZHkuY29tcG9uZW50JztcbmltcG9ydCB7IElneEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIElFeHBhbnNpb25QYW5lbENhbmNlbGFibGVFdmVudEFyZ3MsXG4gICAgSUV4cGFuc2lvblBhbmVsRXZlbnRBcmdzLFxuICAgIElneEV4cGFuc2lvblBhbmVsQmFzZSxcbiAgICBJR1hfRVhQQU5TSU9OX1BBTkVMX0NPTVBPTkVOVFxufSBmcm9tICcuL2V4cGFuc2lvbi1wYW5lbC5jb21tb24nO1xuaW1wb3J0IHsgVG9nZ2xlQW5pbWF0aW9uUGxheWVyLCBUb2dnbGVBbmltYXRpb25TZXR0aW5ncyB9IGZyb20gJy4vdG9nZ2xlLWFuaW1hdGlvbi1jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmxldCBORVhUX0lEID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtZXhwYW5zaW9uLXBhbmVsJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2V4cGFuc2lvbi1wYW5lbC5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBJR1hfRVhQQU5TSU9OX1BBTkVMX0NPTVBPTkVOVCwgdXNlRXhpc3Rpbmc6IElneEV4cGFuc2lvblBhbmVsQ29tcG9uZW50IH1dLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWZdXG59KVxuZXhwb3J0IGNsYXNzIElneEV4cGFuc2lvblBhbmVsQ29tcG9uZW50IGV4dGVuZHMgVG9nZ2xlQW5pbWF0aW9uUGxheWVyIGltcGxlbWVudHMgSWd4RXhwYW5zaW9uUGFuZWxCYXNlLCBBZnRlckNvbnRlbnRJbml0IHtcbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIGFuaW1hdGlvbiBzZXR0aW5ncyBvZiB0aGUgZXhwYW5zaW9uIHBhbmVsIGNvbXBvbmVudFxuICAgICAqIE9wZW4gYW5kIENsb3NlIGFuaW1hdGlvbiBzaG91bGQgYmUgcGFzc2VkXG4gICAgICpcbiAgICAgKiBHZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IGN1cnJlbnRBbmltYXRpb25zID0gdGhpcy5wYW5lbC5hbmltYXRpb25TZXR0aW5ncztcbiAgICAgKiBgYGBcbiAgICAgKiBTZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGltcG9ydCB7IHNsaWRlSW5MZWZ0LCBzbGlkZU91dFJpZ2h0IH0gZnJvbSAnaWduaXRldWktYW5ndWxhcic7XG4gICAgICogIC4uLlxuICAgICAqICB0aGlzLnBhbmVsLmFuaW1hdGlvbnNTZXR0aW5ncyA9IHtcbiAgICAgKiAgICAgIG9wZW5BbmltYXRpb246IHNsaWRlSW5MZWZ0LFxuICAgICAqICAgICAgY2xvc2VBbmltYXRpb246IHNsaWRlT3V0UmlnaHRcbiAgICAgKiB9O1xuICAgICAqIGBgYFxuICAgICAqIG9yIHZpYSB0ZW1wbGF0ZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgaW1wb3J0IHsgc2xpZGVJbkxlZnQsIHNsaWRlT3V0UmlnaHQgfSBmcm9tICdpZ25pdGV1aS1hbmd1bGFyJztcbiAgICAgKiAgLi4uXG4gICAgICogIG15Q3VzdG9tQW5pbWF0aW9uT2JqZWN0ID0ge1xuICAgICAqICAgICAgb3BlbkFuaW1hdGlvbjogc2xpZGVJbkxlZnQsXG4gICAgICogICAgICBjbG9zZUFuaW1hdGlvbjogc2xpZGVPdXRSaWdodFxuICAgICAqIH07XG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbCBbYW5pbWF0aW9uU2V0dGluZ3NdPSdteUN1c3RvbUFuaW1hdGlvbk9iamVjdCc+XG4gICAgICogIC4uLlxuICAgICAqICA8L2lneC1leHBhbnNpb24tcGFuZWw+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGFuaW1hdGlvblNldHRpbmdzKCk6IFRvZ2dsZUFuaW1hdGlvblNldHRpbmdzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FuaW1hdGlvblNldHRpbmdzO1xuICAgIH1cbiAgICBwdWJsaWMgb3ZlcnJpZGUgc2V0IGFuaW1hdGlvblNldHRpbmdzKHZhbHVlOiBUb2dnbGVBbmltYXRpb25TZXR0aW5ncykge1xuICAgICAgICB0aGlzLl9hbmltYXRpb25TZXR0aW5ncyA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgYGlkYCBvZiB0aGUgZXhwYW5zaW9uIHBhbmVsIGNvbXBvbmVudC5cbiAgICAgKiBJZiBub3Qgc2V0LCBgaWRgIHdpbGwgaGF2ZSB2YWx1ZSBgXCJpZ3gtZXhwYW5zaW9uLXBhbmVsLTBcImA7XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtZXhwYW5zaW9uLXBhbmVsIGlkID0gXCJteS1maXJzdC1leHBhbnNpb24tcGFuZWxcIj48L2lneC1leHBhbnNpb24tcGFuZWw+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBwYW5lbElkID0gIHRoaXMucGFuZWwuaWQ7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4RXhwYW5zaW9uUGFuZWxDb21wb25lbnRcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkID0gYGlneC1leHBhbnNpb24tcGFuZWwtJHtORVhUX0lEKyt9YDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1leHBhbnNpb24tcGFuZWwnKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtZXhwYW5zaW9uLXBhbmVsJztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1leHBhbnNpb24tcGFuZWwtLWV4cGFuZGVkJylcbiAgICBwcml2YXRlIG9wZW5lZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1leHBhbmRlZCcpXG4gICAgcHVibGljIGdldCBwYW5lbEV4cGFuZGVkKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMuY29sbGFwc2VkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB3aGV0aGVyIHRoZSBjb21wb25lbnQgaXMgY29sbGFwc2VkIChpdHMgY29udGVudCBpcyBoaWRkZW4pXG4gICAgICogR2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBjb25zdCBteVBhbmVsU3RhdGU6IGJvb2xlYW4gPSB0aGlzLnBhbmVsLmNvbGxhcHNlZDtcbiAgICAgKiBgYGBcbiAgICAgKiBTZXRcbiAgICAgKiBgYGBodG1sXG4gICAgICogIHRoaXMucGFuZWwuY29sbGFwc2VkID0gdHJ1ZTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIFR3by13YXkgZGF0YSBiaW5kaW5nOlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWV4cGFuc2lvbi1wYW5lbCBbKGNvbGxhcHNlZCldPVwibW9kZWwuaXNDb2xsYXBzZWRcIj48L2lneC1leHBhbnNpb24tcGFuZWw+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIGNvbGxhcHNlZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNvbGxhcHNlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgZXhwYW5zaW9uIHBhbmVsIHN0YXJ0cyBjb2xsYXBzaW5nXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBoYW5kbGVDb2xsYXBzaW5nKGV2ZW50OiBJRXhwYW5zaW9uUGFuZWxDYW5jZWxhYmxlRXZlbnRBcmdzKVxuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1leHBhbnNpb24tcGFuZWwgKGNvbnRlbnRDb2xsYXBzaW5nKT1cImhhbmRsZUNvbGxhcHNpbmcoJGV2ZW50KVwiPlxuICAgICAqICAgICAgLi4uXG4gICAgICogIDwvaWd4LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY29udGVudENvbGxhcHNpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElFeHBhbnNpb25QYW5lbENhbmNlbGFibGVFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGV4cGFuc2lvbiBwYW5lbCBmaW5pc2hlcyBjb2xsYXBzaW5nXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBoYW5kbGVDb2xsYXBzZWQoZXZlbnQ6IElFeHBhbnNpb25QYW5lbEV2ZW50QXJncylcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsIChjb250ZW50Q29sbGFwc2VkKT1cImhhbmRsZUNvbGxhcHNlZCgkZXZlbnQpXCI+XG4gICAgICogICAgICAuLi5cbiAgICAgKiAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjb250ZW50Q29sbGFwc2VkID0gbmV3IEV2ZW50RW1pdHRlcjxJRXhwYW5zaW9uUGFuZWxFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGV4cGFuc2lvbiBwYW5lbCBzdGFydHMgZXhwYW5kaW5nXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBoYW5kbGVFeHBhbmRpbmcoZXZlbnQ6IElFeHBhbnNpb25QYW5lbENhbmNlbGFibGVFdmVudEFyZ3MpXG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbCAoY29udGVudEV4cGFuZGluZyk9XCJoYW5kbGVFeHBhbmRpbmcoJGV2ZW50KVwiPlxuICAgICAqICAgICAgLi4uXG4gICAgICogIDwvaWd4LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY29udGVudEV4cGFuZGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8SUV4cGFuc2lvblBhbmVsQ2FuY2VsYWJsZUV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgZXhwYW5zaW9uIHBhbmVsIGZpbmlzaGVzIGV4cGFuZGluZ1xuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgaGFuZGxlRXhwYW5kZWQoZXZlbnQ6IElFeHBhbnNpb25QYW5lbEV2ZW50QXJncylcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsIChjb250ZW50RXhwYW5kZWQpPVwiaGFuZGxlRXhwYW5kZWQoJGV2ZW50KVwiPlxuICAgICAqICAgICAgLi4uXG4gICAgICogIDwvaWd4LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY29udGVudEV4cGFuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxJRXhwYW5zaW9uUGFuZWxFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBoZWFkZXJJZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGVhZGVyID8gYCR7dGhpcy5pZH0taGVhZGVyYCA6ICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoSWd4RXhwYW5zaW9uUGFuZWxCb2R5Q29tcG9uZW50LCB7IHJlYWQ6IElneEV4cGFuc2lvblBhbmVsQm9keUNvbXBvbmVudCB9KVxuICAgIHB1YmxpYyBib2R5OiBJZ3hFeHBhbnNpb25QYW5lbEJvZHlDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hFeHBhbnNpb25QYW5lbEhlYWRlckNvbXBvbmVudCwgeyByZWFkOiBJZ3hFeHBhbnNpb25QYW5lbEhlYWRlckNvbXBvbmVudCB9KVxuICAgIHB1YmxpYyBoZWFkZXI6IElneEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoSWd4QW5ndWxhckFuaW1hdGlvblNlcnZpY2UpIGFuaW1hdGlvblNlcnZpY2U6IEFuaW1hdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmPzogRWxlbWVudFJlZikge1xuICAgICAgICBzdXBlcihhbmltYXRpb25TZXJ2aWNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmJvZHkgJiYgdGhpcy5oZWFkZXIpIHtcbiAgICAgICAgICAgIC8vIHNjaGVkdWxlIGF0IGVuZCBvZiB0dXJuOlxuICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2R5LmxhYmVsbGVkQnkgPSB0aGlzLmJvZHkubGFiZWxsZWRCeSB8fCB0aGlzLmhlYWRlcklkO1xuICAgICAgICAgICAgICAgIHRoaXMuYm9keS5sYWJlbCA9IHRoaXMuYm9keS5sYWJlbCB8fCB0aGlzLmlkICsgJy1yZWdpb24nO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb2xsYXBzZXMgdGhlIHBhbmVsXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsICNteVBhbmVsPlxuICAgICAqICAgICAgLi4uXG4gICAgICogIDwvaWd4LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgKiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIChjbGljayk9XCJteVBhbmVsLmNvbGxhcHNlKCRldmVudClcIj5Db2xscGFzZSBQYW5lbDwvYnV0dG9uPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBjb2xsYXBzZShldnQ/OiBFdmVudCkge1xuICAgICAgICAvLyBJZiBleHBhbnNpb24gcGFuZWwgaXMgYWxyZWFkeSBjb2xsYXBzZWQgb3IgaXMgY29sbGFwc2luZywgZG8gbm90aGluZ1xuICAgICAgICBpZiAodGhpcy5jb2xsYXBzZWQgfHwgdGhpcy5jbG9zZUFuaW1hdGlvblBsYXllcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFyZ3MgPSB7IGV2ZW50OiBldnQsIHBhbmVsOiB0aGlzLCBvd25lcjogdGhpcywgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICB0aGlzLmNvbnRlbnRDb2xsYXBzaW5nLmVtaXQoYXJncyk7XG4gICAgICAgIGlmIChhcmdzLmNhbmNlbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMucGxheUNsb3NlQW5pbWF0aW9uKFxuICAgICAgICAgICAgdGhpcy5ib2R5Py5lbGVtZW50LFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudENvbGxhcHNlZC5lbWl0KHsgZXZlbnQ6IGV2dCwgb3duZXI6IHRoaXMgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb2xsYXBzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuY29sbGFwc2VkQ2hhbmdlLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhwYW5kcyB0aGUgcGFuZWxcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1leHBhbnNpb24tcGFuZWwgI215UGFuZWw+XG4gICAgICogICAgICAuLi5cbiAgICAgKiAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAqICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZ3hCdXR0b24gKGNsaWNrKT1cIm15UGFuZWwuZXhwYW5kKCRldmVudClcIj5FeHBhbmQgUGFuZWw8L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZXhwYW5kKGV2dD86IEV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5jb2xsYXBzZWQpIHsgLy8gSWYgdGhlIHBhbmVsIGlzIGFscmVhZHkgb3BlbmVkLCBkbyBub3RoaW5nXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXJncyA9IHsgZXZlbnQ6IGV2dCwgcGFuZWw6IHRoaXMsIG93bmVyOiB0aGlzLCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgIHRoaXMuY29udGVudEV4cGFuZGluZy5lbWl0KGFyZ3MpO1xuICAgICAgICBpZiAoYXJncy5jYW5jZWwgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbGxhcHNlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9wZW5lZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY29sbGFwc2VkQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMucGxheU9wZW5BbmltYXRpb24oXG4gICAgICAgICAgICB0aGlzLmJvZHk/LmVsZW1lbnQsXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50RXhwYW5kZWQuZW1pdCh7IGV2ZW50OiBldnQsIG93bmVyOiB0aGlzIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgdGhlIHBhbmVsXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsICNteVBhbmVsPlxuICAgICAqICAgICAgLi4uXG4gICAgICogIDwvaWd4LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgKiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIChjbGljayk9XCJteVBhbmVsLnRvZ2dsZSgkZXZlbnQpXCI+RXhwYW5kIFBhbmVsPC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHRvZ2dsZShldnQ/OiBFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbihldnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbG9zZShldnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW4oZXZ0PzogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5leHBhbmQoZXZ0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2UoZXZ0PzogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5jb2xsYXBzZShldnQpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cImlneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyXCI+PC9uZy1jb250ZW50PlxuPG5nLWNvbnRlbnQgKm5nSWY9XCIhY29sbGFwc2VkXCIgc2VsZWN0PVwiaWd4LWV4cGFuc2lvbi1wYW5lbC1ib2R5XCI+PC9uZy1jb250ZW50PlxuIl19
@@ -10,10 +10,10 @@ export class IgxExpansionPanelTitleDirective extends HeaderContentBaseDirective
10
10
  get title() {
11
11
  return this.getTooltipContent(this.element);
12
12
  }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: IgxExpansionPanelTitleDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
14
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.1", type: IgxExpansionPanelTitleDirective, isStandalone: true, selector: "igx-expansion-panel-title", host: { properties: { "class.igx-expansion-panel__header-title": "this.cssClass", "attr.title": "this.title" } }, usesInheritance: true, ngImport: i0 }); }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxExpansionPanelTitleDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
14
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.3", type: IgxExpansionPanelTitleDirective, isStandalone: true, selector: "igx-expansion-panel-title", host: { properties: { "class.igx-expansion-panel__header-title": "this.cssClass", "attr.title": "this.title" } }, usesInheritance: true, ngImport: i0 }); }
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: IgxExpansionPanelTitleDirective, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxExpansionPanelTitleDirective, decorators: [{
17
17
  type: Directive,
18
18
  args: [{
19
19
  // eslint-disable-next-line @angular-eslint/directive-selector
@@ -36,10 +36,10 @@ export class IgxExpansionPanelDescriptionDirective extends HeaderContentBaseDire
36
36
  get title() {
37
37
  return this.getTooltipContent(this.element);
38
38
  }
39
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: IgxExpansionPanelDescriptionDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
40
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.1", type: IgxExpansionPanelDescriptionDirective, isStandalone: true, selector: "igx-expansion-panel-description", host: { properties: { "class.igx-expansion-panel__header-description": "this.cssClass", "attr.title": "this.title" } }, usesInheritance: true, ngImport: i0 }); }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxExpansionPanelDescriptionDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
40
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.3", type: IgxExpansionPanelDescriptionDirective, isStandalone: true, selector: "igx-expansion-panel-description", host: { properties: { "class.igx-expansion-panel__header-description": "this.cssClass", "attr.title": "this.title" } }, usesInheritance: true, ngImport: i0 }); }
41
41
  }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: IgxExpansionPanelDescriptionDirective, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxExpansionPanelDescriptionDirective, decorators: [{
43
43
  type: Directive,
44
44
  args: [{
45
45
  // eslint-disable-next-line @angular-eslint/directive-selector
@@ -55,10 +55,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ng
55
55
  }] } });
56
56
  /** @hidden @internal */
57
57
  export class IgxExpansionPanelIconDirective {
58
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: IgxExpansionPanelIconDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
59
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.1", type: IgxExpansionPanelIconDirective, isStandalone: true, selector: "igx-expansion-panel-icon", ngImport: i0 }); }
58
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxExpansionPanelIconDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
59
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.3", type: IgxExpansionPanelIconDirective, isStandalone: true, selector: "igx-expansion-panel-icon", ngImport: i0 }); }
60
60
  }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: IgxExpansionPanelIconDirective, decorators: [{
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxExpansionPanelIconDirective, decorators: [{
62
62
  type: Directive,
63
63
  args: [{
64
64
  // eslint-disable-next-line @angular-eslint/directive-selector
@@ -10,11 +10,11 @@ import * as i4 from "./expansion-panel.directives";
10
10
  * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components
11
11
  */
12
12
  export class IgxExpansionPanelModule {
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: IgxExpansionPanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
14
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-rc.1", ngImport: i0, type: IgxExpansionPanelModule, imports: [i1.IgxExpansionPanelComponent, i2.IgxExpansionPanelHeaderComponent, i3.IgxExpansionPanelBodyComponent, i4.IgxExpansionPanelDescriptionDirective, i4.IgxExpansionPanelTitleDirective, i4.IgxExpansionPanelIconDirective], exports: [i1.IgxExpansionPanelComponent, i2.IgxExpansionPanelHeaderComponent, i3.IgxExpansionPanelBodyComponent, i4.IgxExpansionPanelDescriptionDirective, i4.IgxExpansionPanelTitleDirective, i4.IgxExpansionPanelIconDirective] }); }
15
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: IgxExpansionPanelModule }); }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxExpansionPanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
14
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxExpansionPanelModule, imports: [i1.IgxExpansionPanelComponent, i2.IgxExpansionPanelHeaderComponent, i3.IgxExpansionPanelBodyComponent, i4.IgxExpansionPanelDescriptionDirective, i4.IgxExpansionPanelTitleDirective, i4.IgxExpansionPanelIconDirective], exports: [i1.IgxExpansionPanelComponent, i2.IgxExpansionPanelHeaderComponent, i3.IgxExpansionPanelBodyComponent, i4.IgxExpansionPanelDescriptionDirective, i4.IgxExpansionPanelTitleDirective, i4.IgxExpansionPanelIconDirective] }); }
15
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxExpansionPanelModule }); }
16
16
  }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: IgxExpansionPanelModule, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: IgxExpansionPanelModule, decorators: [{
18
18
  type: NgModule,
19
19
  args: [{
20
20
  imports: [
@@ -166,10 +166,10 @@ export class ToggleAnimationPlayer {
166
166
  return null;
167
167
  }
168
168
  }
169
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: ToggleAnimationPlayer, deps: [{ token: IgxAngularAnimationService }], target: i0.ɵɵFactoryTarget.Directive }); }
170
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.1", type: ToggleAnimationPlayer, ngImport: i0 }); }
169
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: ToggleAnimationPlayer, deps: [{ token: IgxAngularAnimationService }], target: i0.ɵɵFactoryTarget.Directive }); }
170
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.0-rc.3", type: ToggleAnimationPlayer, ngImport: i0 }); }
171
171
  }
172
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: ToggleAnimationPlayer, decorators: [{
172
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: ToggleAnimationPlayer, decorators: [{
173
173
  type: Directive
174
174
  }], ctorParameters: () => [{ type: undefined, decorators: [{
175
175
  type: Inject,
@@ -550,10 +550,10 @@ export class GridBaseAPIService {
550
550
  return this.get_column_by_name(fieldName) ?
551
551
  this.get_column_by_name(fieldName).sortStrategy : undefined;
552
552
  }
553
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: GridBaseAPIService, deps: [{ token: i1.IgxGridCRUDService }, { token: i2.IgxColumnMovingService }], target: i0.ɵɵFactoryTarget.Injectable }); }
554
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: GridBaseAPIService }); }
553
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: GridBaseAPIService, deps: [{ token: i1.IgxGridCRUDService }, { token: i2.IgxColumnMovingService }], target: i0.ɵɵFactoryTarget.Injectable }); }
554
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: GridBaseAPIService }); }
555
555
  }
556
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.1", ngImport: i0, type: GridBaseAPIService, decorators: [{
556
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.3", ngImport: i0, type: GridBaseAPIService, decorators: [{
557
557
  type: Injectable
558
558
  }], ctorParameters: () => [{ type: i1.IgxGridCRUDService }, { type: i2.IgxColumnMovingService }] });
559
559
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTVFLE9BQU8sRUFBZSxlQUFlLEVBQVMsTUFBTSxxQ0FBcUMsQ0FBQztBQU0xRixPQUFPLEVBQXNCLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7O0FBRW5FOztHQUVHO0FBRUgsTUFBTSxPQUFPLGtCQUFrQjtJQU0zQixZQUNXLFdBQStCLEVBQy9CLEdBQTJCO1FBRDNCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixRQUFHLEdBQUgsR0FBRyxDQUF3QjtRQUo1QixlQUFVLEdBQWtDLElBQUksR0FBRyxFQUE0QixDQUFDO0lBS3RGLENBQUM7SUFFRSxrQkFBa0IsQ0FBQyxJQUFZO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBZSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFTSxnQkFBZ0I7UUFDbkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzdCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZ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QUN2RDthQUFNO1lBQ0gsWUFBWSxDQUFDLG9CQUFvQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQ25EO0lBQ0wsQ0FBQztJQUdTLG1CQUFtQixDQUFDLEtBQVUsRUFBRSxLQUFVLEVBQUUsS0FBYTtRQUMvRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFUyx3QkFBd0IsQ0FBQyxTQUFpQjtRQUNoRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNwRSxDQUFDO21IQWxtQlEsa0JBQWtCO3VIQUFsQixrQkFBa0I7O2dHQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjbG9uZUFycmF5LCByZXZlcnNlTWFwcGVyLCBtZXJnZU9iamVjdHMgfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IERhdGFVdGlsLCBHcmlkQ29sdW1uRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLW9wZXJhdGlvbnMvZGF0YS11dGlsJztcbmltcG9ydCB7IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgfSBmcm9tICcuLi9kYXRhLW9wZXJhdGlvbnMvZmlsdGVyaW5nLWV4cHJlc3Npb25zLXRyZWUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uVHlwZSwgU3RhdGUgfSBmcm9tICcuLi9zZXJ2aWNlcy90cmFuc2FjdGlvbi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBJZ3hDZWxsLCBJZ3hHcmlkQ1JVRFNlcnZpY2UsIElneEVkaXRSb3cgfSBmcm9tICcuL2NvbW1vbi9jcnVkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2VsbFR5cGUsIENvbHVtblR5cGUsIEdyaWRTZXJ2aWNlVHlwZSwgR3JpZFR5cGUsIFJvd1R5cGUgfSBmcm9tICcuL2NvbW1vbi9ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJR3JpZEVkaXRFdmVudEFyZ3MsIElQaW5Sb3dFdmVudEFyZ3MsIElSb3dUb2dnbGVFdmVudEFyZ3MgfSBmcm9tICcuL2NvbW1vbi9ldmVudHMnO1xuaW1wb3J0IHsgSWd4Q29sdW1uTW92aW5nU2VydmljZSB9IGZyb20gJy4vbW92aW5nL21vdmluZy5zZXJ2aWNlJztcbmltcG9ydCB7IElHcm91cGluZ0V4cHJlc3Npb24gfSBmcm9tICcuLi9kYXRhLW9wZXJhdGlvbnMvZ3JvdXBpbmctZXhwcmVzc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSVNvcnRpbmdFeHByZXNzaW9uLCBTb3J0aW5nRGlyZWN0aW9uIH0gZnJvbSAnLi4vZGF0YS1vcGVyYXRpb25zL3NvcnRpbmctc3RyYXRlZ3knO1xuaW1wb3J0IHsgRmlsdGVyVXRpbCB9IGZyb20gJy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctc3RyYXRlZ3knO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEdyaWRCYXNlQVBJU2VydmljZTxUIGV4dGVuZHMgR3JpZFR5cGU+IGltcGxlbWVudHMgR3JpZFNlcnZpY2VUeXBlIHtcblxuXG4gICAgcHVibGljIGdyaWQ6IFQ7XG4gICAgcHJvdGVjdGVkIGRlc3Ryb3lNYXA6IE1hcDxzdHJpbmcsIFN1YmplY3Q8Ym9vbGVhbj4+ID0gbmV3IE1hcDxzdHJpbmcsIFN1YmplY3Q8Ym9vbGVhbj4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGNydWRTZXJ2aWNlOiBJZ3hHcmlkQ1JVRFNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBjbXM6IElneENvbHVtbk1vdmluZ1NlcnZpY2VcbiAgICApIHsgfVxuXG4gICAgcHVibGljIGdldF9jb2x1bW5fYnlfbmFtZShuYW1lOiBzdHJpbmcpOiBDb2x1bW5UeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5jb2x1bW5zLmZpbmQoKGNvbDogQ29sdW1uVHlwZSkgPT4gY29sLmZpZWxkID09PSBuYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0X3N1bW1hcnlfZGF0YSgpIHtcbiAgICAgICAgY29uc3QgZ3JpZCA9IHRoaXMuZ3JpZDtcbiAgICAgICAgbGV0IGRhdGEgPSBncmlkLmZpbHRlcmVkRGF0YTtcbiAgICAgICAgaWYgKGRhdGEgJiYgZ3JpZC5oYXNQaW5uZWRSZWNvcmRzKSB7XG4gICAgICAgICAgICBkYXRhID0gZ3JpZC5fZmlsdGVyZWRVbnBpbm5lZERhdGE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgICAgICBpZiAoZ3JpZC50cmFuc2FjdGlvbnMuZW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBEYXRhVXRpbC5tZXJnZVRyYW5zYWN0aW9ucyhcbiAgICAgICAgICAgICAgICAgICAgY2xvbmVBcnJheShncmlkLmRhdGEpLFxuICAgICAgICAgICAgICAgICAgICBncmlkLnRyYW5zYWN0aW9ucy5nZXRBZ2dyZWdhdGVkQ2hhbmdlcyh0cnVlKSxcbiAgICAgICAgICAgICAgICAgICAgZ3JpZC5wcmltYXJ5S2V5LFxuICAgICAgICAgICAgICAgICAgICBncmlkLmRhdGFDbG9uZVN0cmF0ZWd5XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWxldGVkUm93cyA9IGdyaWQudHJhbnNhY3Rpb25zLmdldFRyYW5zYWN0aW9uTG9nKCkuZmlsdGVyKHQgPT4gdC50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuREVMRVRFKS5tYXAodCA9PiB0LmlkKTtcbiAgICAgICAgICAgICAgICBkZWxldGVkUm93cy5mb3JFYWNoKHJvd0lEID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVtcERhdGEgPSBncmlkLnByaW1hcnlLZXkgPyBkYXRhLm1hcChyZWMgPT4gcmVjW2dyaWQucHJpbWFyeUtleV0pIDogZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0ZW1wRGF0YS5pbmRleE9mKHJvd0lEKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBncmlkLmRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRSb3dEYXRhKHJvd0lEOiBhbnkpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0X2FsbF9kYXRhKHRoaXMuZ3JpZC50cmFuc2FjdGlvbnMuZW5hYmxlZCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRfcm93X2luZGV4X2luX2RhdGEocm93SUQsIGRhdGEpO1xuICAgICAgICByZXR1cm4gZGF0YVtpbmRleF07XG4gICAgfVxuXG4gICAgcHVibGljIGdldF9yb3dfaW5kZXhfaW5fZGF0YShyb3dJRDogYW55LCBkYXRhQ29sbGVjdGlvbj86IGFueVtdKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgZ3JpZCA9IHRoaXMuZ3JpZDtcbiAgICAgICAgaWYgKCFncmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGF0YSA9IGRhdGFDb2xsZWN0aW9uID8/IHRoaXMuZ2V0X2FsbF9kYXRhKGdyaWQudHJhbnNhY3Rpb25zLmVuYWJsZWQpO1xuICAgICAgICByZXR1cm4gZ3JpZC5wcmltYXJ5S2V5ID8gZGF0YS5maW5kSW5kZXgocmVjb3JkID0+IHJlY29yZC5yZWNvcmRSZWYgPyByZWNvcmQucmVjb3JkUmVmW2dyaWQucHJpbWFyeUtleV0gPT09IHJvd0lEXG4gICAgICAgICAgICA6IHJlY29yZFtncmlkLnByaW1hcnlLZXldID09PSByb3dJRCkgOiBkYXRhLmluZGV4T2Yocm93SUQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRfcm93X2J5X2tleShyb3dTZWxlY3RvcjogYW55KTogUm93VHlwZSB7XG4gICAgICAgIGlmICghdGhpcy5ncmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcmltYXJ5S2V5ID0gdGhpcy5ncmlkLnByaW1hcnlLZXk7XG4gICAgICAgIGlmIChwcmltYXJ5S2V5ICE9PSB1bmRlZmluZWQgJiYgcHJpbWFyeUtleSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5kYXRhUm93TGlzdC5maW5kKChyb3cpID0+IHJvdy5kYXRhW3ByaW1hcnlLZXldID09PSByb3dTZWxlY3Rvcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ncmlkLmRhdGFSb3dMaXN0LmZpbmQoKHJvdykgPT4gcm93LmRhdGEgPT09IHJvd1NlbGVjdG9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRfcm93X2J5X2luZGV4KHJvd0luZGV4OiBudW1iZXIpOiBSb3dUeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5yb3dMaXN0LmZpbmQoKHJvdykgPT4gcm93LmluZGV4ID09PSByb3dJbmRleCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcm93SUQgb2YgdGhlIHJlY29yZCBhdCB0aGUgc3BlY2lmaWVkIGRhdGEgdmlldyBpbmRleFxuICAgICAqXG4gICAgICogQHBhcmFtIGluZGV4XG4gICAgICogQHBhcmFtIGRhdGFDb2xsZWN0aW9uXG4gICAgICovXG4gICAgcHVibGljIGdldF9yZWNfaWRfYnlfaW5kZXgoaW5kZXg6IG51bWJlciwgZGF0YUNvbGxlY3Rpb24/OiBhbnlbXSk6IGFueSB7XG4gICAgICAgIGRhdGFDb2xsZWN0aW9uID0gZGF0YUNvbGxlY3Rpb24gfHwgdGhpcy5ncmlkLmRhdGE7XG4gICAgICAgIGlmIChpbmRleCA+PSAwICYmIGluZGV4IDwgZGF0YUNvbGxlY3Rpb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCByZWMgPSBkYXRhQ29sbGVjdGlvbltpbmRleF07XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ncmlkLnByaW1hcnlLZXkgPyByZWNbdGhpcy5ncmlkLnByaW1hcnlLZXldIDogcmVjO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRfY2VsbF9ieV9rZXkocm93U2VsZWN0b3I6IGFueSwgZmllbGQ6IHN0cmluZyk6IENlbGxUeXBlIHtcbiAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5nZXRfcm93X2J5X2tleShyb3dTZWxlY3Rvcik7XG4gICAgICAgIGlmIChyb3cgJiYgcm93LmNlbGxzKSB7XG4gICAgICAgICAgICByZXR1cm4gcm93LmNlbGxzLmZpbmQoKGNlbGwpID0+IGNlbGwuY29sdW1uLmZpZWxkID09PSBmaWVsZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0X2NlbGxfYnlfaW5kZXgocm93SW5kZXg6IG51bWJlciwgY29sdW1uSUQ6IG51bWJlciB8IHN0cmluZyk6IENlbGxUeXBlIHtcbiAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5nZXRfcm93X2J5X2luZGV4KHJvd0luZGV4KTtcbiAgICAgICAgY29uc3QgaGFzQ2VsbHMgPSByb3cgJiYgcm93LmNlbGxzO1xuICAgICAgICBpZiAoaGFzQ2VsbHMgJiYgdHlwZW9mIGNvbHVtbklEID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgcmV0dXJuIHJvdy5jZWxscy5maW5kKChjZWxsKSA9PiBjZWxsLmNvbHVtbi5pbmRleCA9PT0gY29sdW1uSUQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChoYXNDZWxscyAmJiB0eXBlb2YgY29sdW1uSUQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gcm93LmNlbGxzLmZpbmQoKGNlbGwpID0+IGNlbGwuY29sdW1uLmZpZWxkID09PSBjb2x1bW5JRCk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRfY2VsbF9ieV92aXNpYmxlX2luZGV4KHJvd0luZGV4OiBudW1iZXIsIGNvbHVtbkluZGV4OiBudW1iZXIpOiBDZWxsVHlwZSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuZ2V0X3Jvd19ieV9pbmRleChyb3dJbmRleCk7XG4gICAgICAgIGlmIChyb3cgJiYgcm93LmNlbGxzKSB7XG4gICAgICAgICAgICByZXR1cm4gcm93LmNlbGxzLmZpbmQoKGNlbGwpID0+IGNlbGwudmlzaWJsZUNvbHVtbkluZGV4ID09PSBjb2x1bW5JbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlX2NlbGwoY2VsbDogSWd4Q2VsbCk6IElHcmlkRWRpdEV2ZW50QXJncyB7XG4gICAgICAgIGlmICghY2VsbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFyZ3MgPSBjZWxsLmNyZWF0ZUVkaXRFdmVudEFyZ3ModHJ1ZSk7XG5cbiAgICAgICAgdGhpcy5ncmlkLnN1bW1hcnlTZXJ2aWNlLmNsZWFyU3VtbWFyeUNhY2hlKGFyZ3MpO1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRSb3dEYXRhKGNlbGwuaWQucm93SUQpO1xuICAgICAgICBjb25zdCBuZXdSb3dEYXRhID0gcmV2ZXJzZU1hcHBlcihjZWxsLmNvbHVtbi5maWVsZCwgYXJncy5uZXdWYWx1ZSk7XG4gICAgICAgIHRoaXMudXBkYXRlRGF0YSh0aGlzLmdyaWQsIGNlbGwuaWQucm93SUQsIGRhdGEsIGNlbGwucm93RGF0YSwgbmV3Um93RGF0YSk7XG4gICAgICAgIGlmICghdGhpcy5ncmlkLmNydWRTZXJ2aWNlLnJvdykge1xuICAgICAgICAgICAgdGhpcy5ncmlkLnZhbGlkYXRpb24udXBkYXRlKGNlbGwuaWQucm93SUQsIG5ld1Jvd0RhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmdyaWQucHJpbWFyeUtleSA9PT0gY2VsbC5jb2x1bW4uZmllbGQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdyaWQucGlubmVkUmVjb3Jkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93SW5kZXggPSB0aGlzLmdyaWQucGlubmVkUmVjb3Jkcy5pbmRleE9mKGNlbGwucm93RGF0YSk7XG4gICAgICAgICAgICAgICAgaWYgKHJvd0luZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Jvd0lkID0gY2VsbC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm93VHlwZSA9IHRoaXMuZ3JpZC5nZXRSb3dCeUluZGV4KGNlbGwucm93SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVucGluX3JvdyhwcmV2aW91c1Jvd0lkLCByb3dUeXBlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5waW5fcm93KGFyZ3MubmV3VmFsdWUsIHJvd0luZGV4LCByb3dUeXBlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5ncmlkLnNlbGVjdGlvblNlcnZpY2UuaXNSb3dTZWxlY3RlZChjZWxsLmlkLnJvd0lEKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5zZWxlY3Rpb25TZXJ2aWNlLmRlc2VsZWN0Um93KGNlbGwuaWQucm93SUQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5zZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdFJvd0J5SWQoYXJncy5uZXdWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5ncmlkLmhhc1N1bW1hcml6ZWRDb2x1bW5zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLnN1bW1hcnlTZXJ2aWNlLnJlbW92ZVN1bW1hcmllcyhjZWxsLmlkLnJvd0lEKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuZ3JpZC5yb3dFZGl0YWJsZSB8fCAhdGhpcy5jcnVkU2VydmljZS5yb3cgfHxcbiAgICAgICAgICAgIHRoaXMuY3J1ZFNlcnZpY2Uucm93LmlkICE9PSBjZWxsLmlkLnJvd0lEIHx8ICF0aGlzLmdyaWQudHJhbnNhY3Rpb25zLmVuYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5zdW1tYXJ5U2VydmljZS5jbGVhclN1bW1hcnlDYWNoZShhcmdzKTtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5waXBlVHJpZ2dlcisrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFyZ3M7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogQ1JVRCByZWZhY3RvciB0byBub3QgZW1pdCBlZGl0aW5nIGV2dHMuXG4gICAgcHVibGljIHVwZGF0ZV9yb3cocm93OiBJZ3hFZGl0Um93LCB2YWx1ZTogYW55LCBldmVudD86IEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGdyaWQgPSB0aGlzLmdyaWQ7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gZ3JpZC5zZWxlY3Rpb25TZXJ2aWNlLmlzUm93U2VsZWN0ZWQocm93LmlkKTtcbiAgICAgICAgY29uc3Qgcm93SW5FZGl0TW9kZSA9IHRoaXMuY3J1ZFNlcnZpY2Uucm93O1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRfYWxsX2RhdGEoZ3JpZC50cmFuc2FjdGlvbnMuZW5hYmxlZCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRfcm93X2luZGV4X2luX2RhdGEocm93LmlkLCBkYXRhKTtcbiAgICAgICAgY29uc3QgaGFzU3VtbWFyaXplZCA9IGdyaWQuaGFzU3VtbWFyaXplZENvbHVtbnM7XG4gICAgICAgIHRoaXMuY3J1ZFNlcnZpY2UudXBkYXRlUm93RWRpdERhdGEocm93LCB2YWx1ZSk7XG5cbiAgICAgICAgY29uc3QgYXJncyA9IHJvdy5jcmVhdGVFZGl0RXZlbnRBcmdzKHRydWUsIGV2ZW50KTtcblxuICAgICAgICAvLyBJZiBubyB2YWxpZCByb3cgaXMgZm91bmRcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3M7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocm93SW5FZGl0TW9kZSkge1xuICAgICAgICAgICAgY29uc3QgaGFzQ2hhbmdlcyA9IGdyaWQudHJhbnNhY3Rpb25zLmdldFN0YXRlKGFyZ3Mucm93SUQsIHRydWUpO1xuICAgICAgICAgICAgZ3JpZC50cmFuc2FjdGlvbnMuZW5kUGVuZGluZyhmYWxzZSk7XG4gICAgICAgICAgICBpZiAoIWhhc0NoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJncztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghYXJncy5uZXdWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3M7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzU3VtbWFyaXplZCkge1xuICAgICAgICAgICAgZ3JpZC5zdW1tYXJ5U2VydmljZS5yZW1vdmVTdW1tYXJpZXMoYXJncy5yb3dJRCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZURhdGEoZ3JpZCwgcm93LmlkLCBkYXRhW2luZGV4XSwgYXJncy5vbGRWYWx1ZSwgYXJncy5uZXdWYWx1ZSk7XG4gICAgICAgIHRoaXMuZ3JpZC52YWxpZGF0aW9uLnVwZGF0ZShyb3cuaWQsIGFyZ3MubmV3VmFsdWUpO1xuICAgICAgICBjb25zdCBuZXdJZCA9IGdyaWQucHJpbWFyeUtleSA/IGFyZ3MubmV3VmFsdWVbZ3JpZC5wcmltYXJ5S2V5XSA6IGFyZ3MubmV3VmFsdWU7XG4gICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgZ3JpZC5zZWxlY3Rpb25TZXJ2aWNlLmRlc2VsZWN0Um93KHJvdy5pZCk7XG4gICAgICAgICAgICBncmlkLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0Um93QnlJZChuZXdJZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbWFrZSBzdXJlIHNlbGVjdGlvbiBpcyBoYW5kbGVkIHByaW9yIHRvIHVwZGF0aW5nIHRoZSByb3cuaWRcbiAgICAgICAgcm93LmlkID0gbmV3SWQ7XG4gICAgICAgIGlmIChoYXNTdW1tYXJpemVkKSB7XG4gICAgICAgICAgICBncmlkLnN1bW1hcnlTZXJ2aWNlLnJlbW92ZVN1bW1hcmllcyhuZXdJZCk7XG4gICAgICAgIH1cbiAgICAgICAgZ3JpZC5waXBlVHJpZ2dlcisrO1xuXG4gICAgICAgIHJldHVybiBhcmdzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzb3J0KGV4cHJlc3Npb246IElTb3J0aW5nRXhwcmVzc2lvbik6IHZvaWQge1xuICAgICAgICBpZiAoZXhwcmVzc2lvbi5kaXIgPT09IFNvcnRpbmdEaXJlY3Rpb24uTm9uZSkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVfZ3JvdXBpbmdfZXhwcmVzc2lvbihleHByZXNzaW9uLmZpZWxkTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc29ydGluZ1N0YXRlID0gY2xvbmVBcnJheSh0aGlzLmdyaWQuc29ydGluZ0V4cHJlc3Npb25zKTtcbiAgICAgICAgdGhpcy5wcmVwYXJlX3NvcnRpbmdfZXhwcmVzc2lvbihbc29ydGluZ1N0YXRlXSwgZXhwcmVzc2lvbik7XG4gICAgICAgIHRoaXMuZ3JpZC5zb3J0aW5nRXhwcmVzc2lvbnMgPSBzb3J0aW5nU3RhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIHNvcnRfZGVjb3VwbGVkKGV4cHJlc3Npb246IElHcm91cGluZ0V4cHJlc3Npb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKGV4cHJlc3Npb24uZGlyID09PSBTb3J0aW5nRGlyZWN0aW9uLk5vbmUpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlX2dyb3VwaW5nX2V4cHJlc3Npb24oZXhwcmVzc2lvbi5maWVsZE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGdyb3VwaW5nU3RhdGUgPSBjbG9uZUFycmF5KCh0aGlzLmdyaWQgYXMgYW55KS5ncm91cGluZ0V4cHJlc3Npb25zKTtcbiAgICAgICAgdGhpcy5wcmVwYXJlX2dyb3VwaW5nX2V4cHJlc3Npb24oW2dyb3VwaW5nU3RhdGVdLCBleHByZXNzaW9uKTtcbiAgICAgICAgKHRoaXMuZ3JpZCBhcyBhbnkpLmdyb3VwaW5nRXhwcmVzc2lvbnMgPSBncm91cGluZ1N0YXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzb3J0X211bHRpcGxlKGV4cHJlc3Npb25zOiBJU29ydGluZ0V4cHJlc3Npb25bXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBzb3J0aW5nU3RhdGUgPSBjbG9uZUFycmF5KHRoaXMuZ3JpZC5zb3J0aW5nRXhwcmVzc2lvbnMpO1xuXG4gICAgICAgIGZvciAoY29uc3QgZWFjaCBvZiBleHByZXNzaW9ucykge1xuICAgICAgICAgICAgaWYgKGVhY2guZGlyID09PSBTb3J0aW5nRGlyZWN0aW9uLk5vbmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZV9ncm91cGluZ19leHByZXNzaW9uKGVhY2guZmllbGROYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucHJlcGFyZV9zb3J0aW5nX2V4cHJlc3Npb24oW3NvcnRpbmdTdGF0ZV0sIGVhY2gpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ncmlkLnNvcnRpbmdFeHByZXNzaW9ucyA9IHNvcnRpbmdTdGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc29ydF9ncm91cEJ5X211bHRpcGxlKGV4cHJlc3Npb25zOiBJU29ydGluZ0V4cHJlc3Npb25bXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBncm91cGluZ1N0YXRlID0gY2xvbmVBcnJheSgodGhpcy5ncmlkIGFzIGFueSkuZ3JvdXBpbmdFeHByZXNzaW9ucyk7XG5cbiAgICAgICAgZm9yIChjb25zdCBlYWNoIG9mIGV4cHJlc3Npb25zKSB7XG4gICAgICAgICAgICBpZiAoZWFjaC5kaXIgPT09IFNvcnRpbmdEaXJlY3Rpb24uTm9uZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlX2dyb3VwaW5nX2V4cHJlc3Npb24oZWFjaC5maWVsZE5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlX2dyb3VwaW5nX2V4cHJlc3Npb24oW2dyb3VwaW5nU3RhdGVdLCBlYWNoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhcl9zb3J0KGZpZWxkTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHNvcnRpbmdTdGF0ZSA9IHRoaXMuZ3JpZC5zb3J0aW5nRXhwcmVzc2lvbnM7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gc29ydGluZ1N0YXRlLmZpbmRJbmRleCgoZXhwcikgPT4gZXhwci5maWVsZE5hbWUgPT09IGZpZWxkTmFtZSk7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICBzb3J0aW5nU3RhdGUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5zb3J0aW5nRXhwcmVzc2lvbnMgPSBzb3J0aW5nU3RhdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJfZ3JvdXBieShfbmFtZT86IHN0cmluZyB8IEFycmF5PHN0cmluZz4pIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvdWxkX2FwcGx5X251bWJlcl9zdHlsZShjb2x1bW46IENvbHVtblR5cGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5kYXRhVHlwZSA9PT0gR3JpZENvbHVtbkRhdGFUeXBlLk51bWJlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0X2RhdGEoKTogYW55W10ge1xuICAgICAgICBjb25zdCBncmlkID0gdGhpcy5ncmlkO1xuICAgICAgICBjb25zdCBkYXRhID0gZ3JpZC5kYXRhID8gZ3JpZC5kYXRhIDogW107XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRfYWxsX2RhdGEoaW5jbHVkZVRyYW5zYWN0aW9ucyA9IGZhbHNlKTogYW55W10ge1xuICAgICAgICBjb25zdCBncmlkID0gdGhpcy5ncmlkO1xuICAgICAgICBsZXQgZGF0YSA9IGdyaWQgJiYgZ3JpZC5kYXRhID8gZ3JpZC5kYXRhIDogW107XG4gICAgICAgIGRhdGEgPSBpbmNsdWRlVHJhbnNhY3Rpb25zID8gZ3JpZC5kYXRhV2l0aEFkZGVkSW5UcmFuc2FjdGlvblJvd3MgOiBkYXRhO1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0X2ZpbHRlcmVkX2RhdGEoKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkLmZpbHRlcmVkRGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkUm93VG9EYXRhKHJvd0RhdGE6IGFueSwgX3BhcmVudElEPzogYW55KSB7XG4gICAgICAgIC8vIEFkZCByb3cgZ29lcyB0byB0cmFuc2FjdGlvbnMgYW5kIGlmIHJvd0VkaXRhYmxlIGlzIHByb3Blcmx5IGltcGxlbWVudGVkLCBhZGRlZCByb3dzIHdpbGwgZ28gdG8gcGVuZGluZyB0cmFuc2FjdGlvbnNcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSByb3cgaW4gZWRpdCAtID4gY29tbWl0IGFuZCBjbG9zZVxuICAgICAgICBjb25zdCBncmlkID0gdGhpcy5ncmlkO1xuICAgICAgICBjb25zdCByb3dJZCA9IGdyaWQucHJpbWFyeUtleSA/IHJvd0RhdGFbZ3JpZC5wcmltYXJ5S2V5XSA6IHJvd0RhdGE7XG4gICAgICAgIGlmIChncmlkLnRyYW5zYWN0aW9ucy5lbmFibGVkKSB7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24gPSB7IGlkOiByb3dJZCwgdHlwZTogVHJhbnNhY3Rpb25UeXBlLkFERCwgbmV3VmFsdWU6IHJvd0RhdGEgfTtcbiAgICAgICAgICAgIGdyaWQudHJhbnNhY3Rpb25zLmFkZCh0cmFuc2FjdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBncmlkLmRhdGEucHVzaChyb3dEYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBncmlkLnZhbGlkYXRpb24ubWFya0FzVG91Y2hlZChyb3dJZCk7XG4gICAgICAgIGdyaWQudmFsaWRhdGlvbi51cGRhdGUocm93SWQsIHJvd0RhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZWxldGVSb3dGcm9tRGF0YShyb3dJRDogYW55LCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIC8vICBpZiB0aGVyZSBpcyBhIHJvdyAoaW5kZXggIT09IDApIGRlbGV0ZSBpdFxuICAgICAgICAvLyAgaWYgdGhlcmUgaXMgYSByb3cgaW4gQUREIG9yIFVQREFURSBzdGF0ZSBjaGFuZ2UgaXQncyBzdGF0ZSB0byBERUxFVEVcbiAgICAgICAgY29uc3QgZ3JpZCA9IHRoaXMuZ3JpZDtcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgaWYgKGdyaWQudHJhbnNhY3Rpb25zLmVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24gPSB7IGlkOiByb3dJRCwgdHlwZTogVHJhbnNhY3Rpb25UeXBlLkRFTEVURSwgbmV3VmFsdWU6IG51bGwgfTtcbiAgICAgICAgICAgICAgICBncmlkLnRyYW5zYWN0aW9ucy5hZGQodHJhbnNhY3Rpb24sIGdyaWQuZGF0YVtpbmRleF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBncmlkLmRhdGEuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlOiBTdGF0ZSA9IGdyaWQudHJhbnNhY3Rpb25zLmdldFN0YXRlKHJvd0lEKTtcbiAgICAgICAgICAgIGdyaWQudHJhbnNhY3Rpb25zLmFkZCh7IGlkOiByb3dJRCwgdHlwZTogVHJhbnNhY3Rpb25UeXBlLkRFTEVURSwgbmV3VmFsdWU6IG51bGwgfSwgc3RhdGUgJiYgc3RhdGUucmVjb3JkUmVmKTtcbiAgICAgICAgfVxuICAgICAgICBncmlkLnZhbGlkYXRpb24uY2xlYXIocm93SUQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZWxldGVSb3dCeUlkKHJvd0lkOiBhbnkpOiBhbnkge1xuICAgICAgICBsZXQgaW5kZXg6IG51bWJlcjtcbiAgICAgICAgY29uc3QgZ3JpZCA9IHRoaXMuZ3JpZDtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0X2FsbF9kYXRhKCk7XG4gICAgICAgIGlmIChncmlkLnByaW1hcnlLZXkpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93XG4gICAgICAgICAgICBpbmRleCA9IGRhdGEubWFwKChyZWNvcmQpID0+IHJlY29yZFtncmlkLnByaW1hcnlLZXldKS5pbmRleE9mKHJvd0lkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGluZGV4ID0gZGF0YS5pbmRleE9mKHJvd0lkKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGF0ZTogU3RhdGUgPSBncmlkLnRyYW5zYWN0aW9ucy5nZXRTdGF0ZShyb3dJZCk7XG4gICAgICAgIGNvbnN0IGhhc1Jvd0luTm9uRGVsZXRlZFN0YXRlID0gc3RhdGUgJiYgc3RhdGUudHlwZSAhPT0gVHJhbnNhY3Rpb25UeXBlLkRFTEVURTtcblxuICAgICAgICAvLyAgaWYgdGhlcmUgaXMgYSByb3cgKGluZGV4ICE9PSAtMSkgYW5kIHRoZSB3ZSBoYXZlIGNlbGwgaW4gZWRpdCBtb2RlIG9uIHNhbWUgcm93IGV4aXQgZWRpdCBtb2RlXG4gICAgICAgIC8vICBpZiB0aGVyZSBpcyBubyByb3cgKGluZGV4ID09PSAtMSksIGJ1dCB0aGVyZSBpcyBhIHJvdyBpbiBBREQgb3IgVVBEQVRFIHN0YXRlIGRvIGFzIGFib3ZlXG4gICAgICAgIC8vICBPdGhlcndpc2UganVzdCBleGl0IC0gdGhlcmUgaXMgbm90aGluZyB0byBkZWxldGVcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSB8fCBoYXNSb3dJbk5vbkRlbGV0ZWRTdGF0ZSkge1xuICAgICAgICAgICAgLy8gQWx3YXlzIGV4aXQgZWRpdCB3aGVuIHJvdyBpcyBkZWxldGVkXG4gICAgICAgICAgICB0aGlzLmNydWRTZXJ2aWNlLmVuZEVkaXQodHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZWNvcmQgPSBkYXRhW2luZGV4XTtcbiAgICAgICAgY29uc3Qga2V5ID0gcmVjb3JkID8gcmVjb3JkW2dyaWQucHJpbWFyeUtleV0gOiB1bmRlZmluZWQ7XG4gICAgICAgIGdyaWQucm93RGVsZXRlZE5vdGlmaWVyLm5leHQoeyBkYXRhOiByZWNvcmQsIG93bmVyOiBncmlkLCBwcmltYXJ5S2V5OiBrZXkgfSk7XG5cbiAgICAgICAgdGhpcy5kZWxldGVSb3dGcm9tRGF0YShyb3dJZCwgaW5kZXgpO1xuXG4gICAgICAgIGlmIChncmlkLnNlbGVjdGlvblNlcnZpY2UuaXNSb3dTZWxlY3RlZChyb3dJZCkpIHtcbiAgICAgICAgICAgIGdyaWQuc2VsZWN0aW9uU2VydmljZS5kZXNlbGVjdFJvd3NXaXRoTm9FdmVudChbcm93SWRdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdyaWQuc2VsZWN0aW9uU2VydmljZS5jbGVhckhlYWRlckNCU3RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBncmlkLnBpcGVUcmlnZ2VyKys7XG4gICAgICAgIGdyaWQubm90aWZ5Q2hhbmdlcygpO1xuICAgICAgICAvLyBEYXRhIG5lZWRzIHRvIGJlIHJlY2FsY3VsYXRlZCBpZiB0cmFuc2FjdGlvbnMgYXJlIGluIHBsYWNlXG4gICAgICAgIC8vIElmIG5vIHRyYW5zYWN0aW9ucywgYGRhdGFgIHdpbGwgYmUgYSByZWZlcmVuY2UgdG8gdGhlIGdyaWQgZ2V0dGVyLCBvdGhlcndpc2UgaXQgd2lsbCBiZSBzdGFsZVxuICAgICAgICBjb25zdCBkYXRhQWZ0ZXJEZWxldGUgPSBncmlkLnRyYW5zYWN0aW9ucy5lbmFibGVkID8gZ3JpZC5kYXRhV2l0aEFkZGVkSW5UcmFuc2FjdGlvblJvd3MgOiBkYXRhO1xuICAgICAgICBncmlkLnJlZnJlc2hTZWFyY2goKTtcbiAgICAgICAgaWYgKGRhdGFBZnRlckRlbGV0ZS5sZW5ndGggJSBncmlkLnBlclBhZ2UgPT09IDAgJiYgZGF0YUFmdGVyRGVsZXRlLmxlbmd0aCAvIGdyaWQucGVyUGFnZSAtIDEgPCBncmlkLnBhZ2UgJiYgZ3JpZC5wYWdlICE9PSAwKSB7XG4gICAgICAgICAgICBncmlkLnBhZ2UtLTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZWNvcmQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldF9yb3dfaWQocm93RGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkLnByaW1hcnlLZXkgPyByb3dEYXRhW3RoaXMuZ3JpZC5wcmltYXJ5S2V5XSA6IHJvd0RhdGE7XG4gICAgfVxuXG4gICAgcHVibGljIHJvd19kZWxldGVkX3RyYW5zYWN0aW9uKHJvd0lEOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZ3JpZCA9IHRoaXMuZ3JpZDtcbiAgICAgICAgaWYgKCFncmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFncmlkLnRyYW5zYWN0aW9ucy5lbmFibGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RhdGUgPSBncmlkLnRyYW5zYWN0aW9ucy5nZXRTdGF0ZShyb3dJRCk7XG4gICAgICAgIGlmIChzdGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5ERUxFVEU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldF9yb3dfZXhwYW5zaW9uX3N0YXRlKHJlY29yZDogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGdyaWQgPSB0aGlzLmdyaWQ7XG4gICAgICAgIGNvbnN0IHN0YXRlcyA9IGdyaWQuZXhwYW5zaW9uU3RhdGVzO1xuICAgICAgICBjb25zdCByb3dJRCA9IGdyaWQucHJpbWFyeUtleSA/IHJlY29yZFtncmlkLnByaW1hcnlLZXldIDogcmVjb3JkO1xuICAgICAgICBjb25zdCBleHBhbmRlZCA9IHN0YXRlcy5nZXQocm93SUQpO1xuXG4gICAgICAgIGlmIChleHBhbmRlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZXhwYW5kZWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZ3JpZC5nZXREZWZhdWx0RXhwYW5kU3RhdGUocmVjb3JkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRfcm93X2V4cGFuc2lvbl9zdGF0ZShyb3dJRDogYW55LCBleHBhbmRlZDogYm9vbGVhbiwgZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICBjb25zdCBncmlkID0gdGhpcy5ncmlkO1xuICAgICAgICBjb25zdCBleHBhbmRlZFN0YXRlcyA9IGdyaWQuZXhwYW5zaW9uU3RhdGVzO1xuXG4gICAgICAgIGlmICghdGhpcy5hbGxvd19leHBhbnNpb25fc3RhdGVfY2hhbmdlKHJvd0lELCBleHBhbmRlZCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFyZ3M6IElSb3dUb2dnbGVFdmVudEFyZ3MgPSB7XG4gICAgICAgICAgICByb3dJRCxcbiAgICAgICAgICAgIGV4cGFuZGVkLFxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICBjYW5jZWw6IGZhbHNlXG4gICAgICAgIH07XG5cbiAgICAgICAgZ3JpZC5yb3dUb2dnbGUuZW1pdChhcmdzKTtcblxuICAgICAgICBpZiAoYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBleHBhbmRlZFN0YXRlcy5zZXQocm93SUQsIGV4cGFuZGVkKTtcbiAgICAgICAgZ3JpZC5leHBhbnNpb25TdGF0ZXMgPSBleHBhbmRlZFN0YXRlcztcbiAgICAgICAgLy8gSy5ELiAyOCBGZWIsIDIwMjIgIzEwNjM0IERvbid0IHRyaWdnZXIgZW5kRWRpdC9jb21taXQgdXBvbiByb3cgZXhwYW5zaW9uIHN0YXRlIGNoYW5nZVxuICAgICAgICAvLyB0aGlzLmNydWRTZXJ2aWNlLmVuZEVkaXQoZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRfcmVjX2J5X2lkKHJvd0lEKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQucHJpbWFyeUtleSA/IHRoaXMuZ2V0Um93RGF0YShyb3dJRCkgOiByb3dJRDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgcmVjb3JkIGluIHRoZSBkYXRhIHZpZXcgYnkgcGsgb3IgLTEgaWYgbm90IGZvdW5kIG9yIHByaW1hcnlLZXkgaXMgbm90IHNldC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwa1xuICAgICAqIEBwYXJhbSBkYXRhQ29sbGVjdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRfcmVjX2luZGV4X2J5X2lkKHBrOiBzdHJpbmcgfCBudW1iZXIsIGRhdGFDb2xsZWN0aW9uPzogYW55W10pOiBudW1iZXIge1xuICAgICAgICBkYXRhQ29sbGVjdGlvbiA9IGRhdGFDb2xsZWN0aW9uIHx8IHRoaXMuZ3JpZC5kYXRhO1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkLnByaW1hcnlLZXkgPyBkYXRhQ29sbGVjdGlvbi5maW5kSW5kZXgocmVjID0+IHJlY1t0aGlzLmdyaWQucHJpbWFyeUtleV0gPT09IHBrKSA6IC0xO1xuICAgIH1cblxuICAgIHB1YmxpYyBhbGxvd19leHBhbnNpb25fc3RhdGVfY2hhbmdlKHJvd0lELCBleHBhbmRlZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkLmV4cGFuc2lvblN0YXRlcy5nZXQocm93SUQpICE9PSBleHBhbmRlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcHJlcGFyZV9zb3J0aW5nX2V4cHJlc3Npb24oc3RhdGVDb2xsZWN0aW9uczogQXJyYXk8QXJyYXk8YW55Pj4sIGV4cHJlc3Npb246IElTb3J0aW5nRXhwcmVzc2lvbikge1xuICAgICAgICBpZiAoZXhwcmVzc2lvbi5kaXIgPT09IFNvcnRpbmdEaXJlY3Rpb24uTm9uZSkge1xuICAgICAgICAgICAgc3RhdGVDb2xsZWN0aW9ucy5mb3JFYWNoKHN0YXRlID0+IHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5zcGxpY2Uoc3RhdGUuZmluZEluZGV4KChleHByKSA9PiBleHByLmZpZWxkTmFtZSA9PT0gZXhwcmVzc2lvbi5maWVsZE5hbWUpLCAxKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBzdGF0ZXMgaW4gZWFjaCBjb2xsZWN0aW9uIHdpdGggc2FtZSBmaWVsZHMgcG9pbnQgdG8gdGhlIHNhbWUgb2JqZWN0IHJlZmVyZW5jZS5cbiAgICAgICAgICogSWYgdGhlIGRpZmZlcmVudCBzdGF0ZSBjb2xsZWN0aW9ucyBwcm92aWRlZCBoYXZlIGRpZmZlcmVudCBzaXplcyB3ZSBuZWVkIHRvIGdldCB0aGUgbGFyZ2VzdCBvbmUuXG4gICAgICAgICAqIFRoYXQgd2F5IHdlIGNhbiBnZXQgdGhlIHN0YXRlIHJlZmVyZW5jZSBmcm9tIHRoZSBsYXJnZXN0IG9uZSB0aGF0IGhhcyB0aGUgc2FtZSBmaWVsZE5hbWUgYXMgdGhlIGV4cHJlc3Npb24gdG8gcHJlcGFyZS5cbiAgICAgICAgICovXG4gICAgICAgIGxldCBtYXhDb2xsZWN0aW9uID0gc3RhdGVDb2xsZWN0aW9uc1swXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBzdGF0ZUNvbGxlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobWF4Q29sbGVjdGlvbi5sZW5ndGggPCBzdGF0ZUNvbGxlY3Rpb25zW2ldLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIG1heENvbGxlY3Rpb24gPSBzdGF0ZUNvbGxlY3Rpb25zW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1heEV4cHIgPSBtYXhDb2xsZWN0aW9uLmZpbmQoKGV4cHIpID0+IGV4cHIuZmllbGROYW1lID09PSBleHByZXNzaW9uLmZpZWxkTmFtZSk7XG5cbiAgICAgICAgc3RhdGVDb2xsZWN0aW9ucy5mb3JFYWNoKGNvbGxlY3Rpb24gPT4ge1xuICAgICAgICAgICAgY29uc3QgbXlFeHByID0gY29sbGVjdGlvbi5maW5kKChleHByKSA9PiBleHByLmZpZWxkTmFtZSA9PT0gZXhwcmVzc2lvbi5maWVsZE5hbWUpO1xuICAgICAgICAgICAgaWYgKCFteUV4cHIgJiYgIW1heEV4cHIpIHtcbiAgICAgICAgICAgICAgICAvLyBFeHByZXNzaW9uIHdpdGggdGhpcyBmaWVsZE5hbWUgaXMgbWlzc2luZyBmcm9tIHRoZSBjdXJyZW50IGFuZCB0aGUgbWF4IGNvbGxlY3Rpb24uXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbi5wdXNoKGV4cHJlc3Npb24pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghbXlFeHByICYmIG1heEV4cHIpIHtcbiAgICAgICAgICAgICAgICAvLyBFeHByZXNzaW9uIHdpdGggdGhpcyBmaWVsZE5hbWUgaXMgbWlzc2luZyBmcm9tIHRoZSBjdXJyZW50IGFuZCBidXQgdGhlIG1heCBjb2xsZWN0aW9uIGhhcy5cbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLnB1c2gobWF4RXhwcik7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihtYXhFeHByLCBleHByZXNzaW9uKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gVGhlIGN1cnJlbnQgY29sbGVjdGlvbiBoYXMgdGhlIGV4cHJlc3Npb24gc28ganVzdCB1cGRhdGUgaXQuXG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihteUV4cHIsIGV4cHJlc3Npb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcHJlcGFyZV9ncm91cGluZ19leHByZXNzaW9uKHN0YXRlQ29sbGVjdGlvbnM6IEFycmF5PEFycmF5PGFueT4+LCBleHByZXNzaW9uOiBJR3JvdXBpbmdFeHByZXNzaW9uKSB7XG4gICAgICAgIGlmIChleHByZXNzaW9uLmRpciA9PT0gU29ydGluZ0RpcmVjdGlvbi5Ob25lKSB7XG4gICAgICAgICAgICBzdGF0ZUNvbGxlY3Rpb25zLmZvckVhY2goc3RhdGUgPT4ge1xuICAgICAgICAgICAgICAgIHN0YXRlLnNwbGljZShzdGF0ZS5maW5kSW5kZXgoKGV4cHIpID0+IGV4cHIuZmllbGROYW1lID09PSBleHByZXNzaW9uLmZpZWxkTmFtZSksIDEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHN0YXRlcyBpbiBlYWNoIGNvbGxlY3Rpb24gd2l0aCBzYW1lIGZpZWxkcyBwb2ludCB0byB0aGUgc2FtZSBvYmplY3QgcmVmZXJlbmNlLlxuICAgICAgICAgKiBJZiB0aGUgZGlmZmVyZW50IHN0YXRlIGNvbGxlY3Rpb25zIHByb3ZpZGVkIGhhdmUgZGlmZmVyZW50IHNpemVzIHdlIG5lZWQgdG8gZ2V0IHRoZSBsYXJnZXN0IG9uZS5cbiAgICAgICAgICogVGhhdCB3YXkgd2UgY2FuIGdldCB0aGUgc3RhdGUgcmVmZXJlbmNlIGZyb20gdGhlIGxhcmdlc3Qgb25lIHRoYXQgaGFzIHRoZSBzYW1lIGZpZWxkTmFtZSBhcyB0aGUgZXhwcmVzc2lvbiB0byBwcmVwYXJlLlxuICAgICAgICAgKi9cbiAgICAgICAgbGV0IG1heENvbGxlY3Rpb24gPSBzdGF0ZUNvbGxlY3Rpb25zWzBdO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHN0YXRlQ29sbGVjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChtYXhDb2xsZWN0aW9uLmxlbmd0aCA8IHN0YXRlQ29sbGVjdGlvbnNbaV0ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbWF4Q29sbGVjdGlvbiA9IHN0YXRlQ29sbGVjdGlvbnNbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWF4RXhwciA9IG1heENvbGxlY3Rpb24uZmluZCgoZXhwcikgPT4gZXhwci5maWVsZE5hbWUgPT09IGV4cHJlc3Npb24uZmllbGROYW1lKTtcblxuICAgICAgICBzdGF0ZUNvbGxlY3Rpb25zLmZvckVhY2goY29sbGVjdGlvbiA9PiB7XG4gICAgICAgICAgICBjb25zdCBteUV4cHIgPSBjb2xsZWN0aW9uLmZpbmQoKGV4cHIpID0+IGV4cHIuZmllbGROYW1lID09PSBleHByZXNzaW9uLmZpZWxkTmFtZSk7XG4gICAgICAgICAgICBpZiAoIW15RXhwciAmJiAhbWF4RXhwcikge1xuICAgICAgICAgICAgICAgIC8vIEV4cHJlc3Npb24gd2l0aCB0aGlzIGZpZWxkTmFtZSBpcyBtaXNzaW5nIGZyb20gdGhlIGN1cnJlbnQgYW5kIHRoZSBtYXggY29sbGVjdGlvbi5cbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLnB1c2goZXhwcmVzc2lvbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFteUV4cHIgJiYgbWF4RXhwcikge1xuICAgICAgICAgICAgICAgIC8vIEV4cHJlc3Npb24gd2l0aCB0aGlzIGZpZWxkTmFtZSBpcyBtaXNzaW5nIGZyb20gdGhlIGN1cnJlbnQgYW5kIGJ1dCB0aGUgbWF4IGNvbGxlY3Rpb24gaGFzLlxuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24ucHVzaChtYXhFeHByKTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKG1heEV4cHIsIGV4cHJlc3Npb24pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBUaGUgY3VycmVudCBjb2xsZWN0aW9uIGhhcyB0aGUgZXhwcmVzc2lvbiBzbyBqdXN0IHVwZGF0ZSBpdC5cbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKG15RXhwciwgZXhwcmVzc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVfZ3JvdXBpbmdfZXhwcmVzc2lvbihfZmllbGROYW1lKSB7XG4gICAgfVxuXG4gICAgcHVibGljIGZpbHRlckRhdGFCeUV4cHJlc3Npb25zKGV4cHJlc3Npb25zVHJlZTogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSk6IGFueVtdIHtcbiAgICAgICAgbGV0IGRhdGEgPSB0aGlzLmdldF9hbGxfZGF0YSgpO1xuXG4gICAgICAgIGlmIChleHByZXNzaW9uc1RyZWUuZmlsdGVyaW5nT3BlcmFuZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZSA9IHsgZXhwcmVzc2lvbnNUcmVlLCBzdHJhdGVneTogdGhpcy5ncmlkLmZpbHRlclN0cmF0ZWd5IH07XG4gICAgICAgICAgICBkYXRhID0gRmlsdGVyVXRpbC5maWx0ZXIoY2xvbmVBcnJheShkYXRhKSwgc3RhdGUsIHRoaXMuZ3JpZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc29ydERhdGFCeUV4cHJlc3Npb25zKGRhdGE6IGFueVtdLCBleHByZXNzaW9uczogSVNvcnRpbmdFeHByZXNzaW9uW10pIHtcbiAgICAgICAgcmV0dXJuIERhdGFVdGlsLnNvcnQoY2xvbmVBcnJheShkYXRhKSwgZXhwcmVzc2lvbnMsIHRoaXMuZ3JpZC5zb3J0U3RyYXRlZ3ksIHRoaXMuZ3JpZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHBpbl9yb3cocm93SUQ6IGFueSwgaW5kZXg/OiBudW1iZXIsIHJvdz86IFJvd1R5cGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZ3JpZCA9ICh0aGlzLmdyaWQgYXMgYW55KTtcbiAgICAgICAgaWYgKGdyaWQuX3Bpbm5lZFJlY29yZElEcy5pbmRleE9mKHJvd0lEKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBldmVudEFyZ3MgPSB0aGlzLmdldF9waW5fcm93X2V2ZW50X2FyZ3Mocm93SUQsIGluZGV4LCByb3csIHRydWUpO1xuICAgICAgICBncmlkLnJvd1Bpbm5pbmcuZW1pdChldmVudEFyZ3MpO1xuXG4gICAgICAgIGlmIChldmVudEFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5zZXJ0SW5kZXggPSB0eXBlb2YgZXZlbnRBcmdzLmluc2VydEF0SW5kZXggPT09ICdudW1iZXInID8gZXZlbnRBcmdzLmluc2VydEF0SW5kZXggOiBncmlkLl9waW5uZWRSZWNvcmRJRHMubGVuZ3RoO1xuICAgICAgICBncmlkLl9waW5uZWRSZWNvcmRJRHMuc3BsaWNlKGluc2VydEluZGV4LCAwLCByb3dJRCk7XG4gICAgfVxuXG4gICAgcHVibGljIHVucGluX3Jvdyhyb3dJRDogYW55LCByb3c6IFJvd1R5cGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZ3JpZCA9ICh0aGlzLmdyaWQgYXMgYW55KTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBncmlkLl9waW5uZWRSZWNvcmRJRHMuaW5kZXhPZihyb3dJRCk7XG4gICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBldmVudEFyZ3MgPSB0aGlzLmdldF9waW5fcm93X2V2ZW50X2FyZ3Mocm93SUQsIG51bGwgLCByb3csIGZhbHNlKTtcbiAgICAgICAgZ3JpZC5yb3dQaW5uaW5nLmVtaXQoZXZlbnRBcmdzKTtcblxuICAgICAgICBpZiAoZXZlbnRBcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGdyaWQuX3Bpbm5lZFJlY29yZElEcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRfcGluX3Jvd19ldmVudF9hcmdzKHJvd0lEOiBhbnksIGluZGV4PzogbnVtYmVyLCByb3c/OiBSb3dUeXBlLCBwaW5uZWQ/OiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50QXJnczogSVBpblJvd0V2ZW50QXJncyA9IHtcbiAgICAgICAgICAgIGlzUGlubmVkOiBwaW5uZWQgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICByb3dJRCxcbiAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgIGNhbmNlbDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGluZGV4ID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgZXZlbnRBcmdzLmluc2VydEF0SW5kZXggPSBpbmRleCA8PSB0aGlzLmdyaWQucGlubmVkUmVjb3Jkcy5sZW5ndGggPyBpbmRleCA6IHRoaXMuZ3JpZC5waW5uZWRSZWNvcmRzLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZXZlbnRBcmdzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgcmVsYXRlZCByb3cgb2YgcHJvdmlkZWQgZ3JpZCdzIGRhdGEgc291cmNlIHdpdGggcHJvdmlkZWQgbmV3IHJvdyB2YWx1ZVxuICAgICAqXG4gICAgICogQHBhcmFtIGdyaWQgR3JpZCB0byB1cGRhdGUgZGF0YSBmb3JcbiAgICAgKiBAcGFyYW0gcm93SUQgSUQgb2YgdGhlIHJvdyB0byB1cGRhdGVcbiAgICAgKiBAcGFyYW0gcm93VmFsdWVJbkRhdGFTb3VyY2UgSW5pdGlhbCB2YWx1ZSBvZiB0aGUgcm93IGFzIGl0IGlzIGluIGRhdGEgc291cmNlXG4gICAgICogQHBhcmFtIHJvd0N1cnJlbnRWYWx1ZSBDdXJyZW50IHZhbHVlIG9mIHRoZSByb3cgYXMgaXQgaXMgd2l0aCBhcHBsaWVkIHByZXZpb3VzIHRyYW5zYWN0aW9uc1xuICAgICAqIEBwYXJhbSByb3dOZXdWYWx1ZSBOZXcgdmFsdWUgb2YgdGhlIHJvd1xuICAgICAqL1xuICAgIHByb3RlY3RlZCB1cGRhdGVEYXRhKGdyaWQsIHJvd0lELCByb3dWYWx1ZUluRGF0YVNvdXJjZTogYW55LCByb3dDdXJyZW50VmFsdWU6IGFueSwgcm93TmV3VmFsdWU6IHsgW3g6IHN0cmluZ106IGFueSB9KSB7XG4gICAgICAgIGlmIChncmlkLnRyYW5zYWN0aW9ucy5lbmFibGVkKSB7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24gPSB7XG4gICAgICAgICAgICAgICAgaWQ6IHJvd0lELFxuICAgICAgICAgICAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZS5VUERBVEUsXG4gICAgICAgICAgICAgICAgbmV3VmFsdWU6IHJvd05ld1ZhbHVlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZ3JpZC50cmFuc2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9uLCByb3dDdXJyZW50VmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWVyZ2VPYmplY3RzKHJvd1ZhbHVlSW5EYXRhU291cmNlLCByb3dOZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIHByb3RlY3RlZCB1cGRhdGVfcm93X2luX2FycmF5KHZhbHVlOiBhbnksIHJvd0lEOiBhbnksIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgZ3JpZCA9IHRoaXMuZ3JpZDtcbiAgICAgICAgZ3JpZC5kYXRhW2luZGV4XSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRTb3J0U3RyYXRlZ3lQZXJDb2x1bW4oZmllbGROYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0X2NvbHVtbl9ieV9uYW1lKGZpZWxkTmFtZSkgP1xuICAgICAgICAgICAgdGhpcy5nZXRfY29sdW1uX2J5X25hbWUoZmllbGROYW1lKS5zb3J0U3RyYXRlZ3kgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG59XG4iXX0=