@fundamental-ngx/core 0.42.0-rc.8 → 0.42.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 (448) hide show
  1. package/alert/alert.component.d.ts +5 -4
  2. package/alert/alert.module.d.ts +2 -1
  3. package/avatar/avatar.component.d.ts +2 -4
  4. package/avatar-group/directives/avatar-group-focusable-avatar.directive.d.ts +2 -6
  5. package/avatar-group/directives/avatar-group-overflow-button.directive.d.ts +2 -4
  6. package/bar/bar.component.d.ts +2 -4
  7. package/busy-indicator/busy-indicator-extended/busy-indicator-extended.directive.d.ts +2 -4
  8. package/button/button.component.d.ts +2 -6
  9. package/card/card-content.component.d.ts +2 -4
  10. package/card/card-counter.directive.d.ts +2 -4
  11. package/card/card-header.component.d.ts +2 -4
  12. package/card/card-loader.component.d.ts +2 -4
  13. package/card/card-second-subtitle.directive.d.ts +2 -4
  14. package/card/card-subtitle.directive.d.ts +2 -4
  15. package/card/card-title.directive.d.ts +2 -4
  16. package/card/card.component.d.ts +3 -5
  17. package/card/kpi/card-kpi-analytics-content.directive.d.ts +2 -4
  18. package/card/kpi/card-kpi-analytics-label.directive.d.ts +2 -4
  19. package/card/kpi/card-kpi-analytics.directive.d.ts +2 -4
  20. package/card/kpi/card-kpi-header.component.d.ts +2 -4
  21. package/card/kpi/card-kpi-scale-icon.directive.d.ts +2 -4
  22. package/card/kpi/card-kpi-scale-text.directive.d.ts +2 -4
  23. package/card/kpi/card-kpi-value.directive.d.ts +2 -4
  24. package/combobox/combobox.module.d.ts +2 -1
  25. package/dialog/base/dialog-base.class.d.ts +2 -2
  26. package/dialog/dialog-body/dialog-body.component.d.ts +2 -4
  27. package/dialog/dialog-container/dialog-container.component.d.ts +0 -2
  28. package/dialog/dialog-service/dialog.service.d.ts +4 -0
  29. package/dialog/dialog.component.d.ts +0 -2
  30. package/dynamic-page/dynamic-page-content/dynamic-page-content.component.d.ts +4 -6
  31. package/dynamic-page/dynamic-page-header/actions/dynamic-page-layout-actions.component.d.ts +2 -4
  32. package/dynamic-side-content/dynamic-side-content.component.d.ts +3 -5
  33. package/esm2020/alert/alert.component.mjs +7 -19
  34. package/esm2020/alert/alert.module.mjs +5 -4
  35. package/esm2020/avatar/avatar.component.mjs +6 -10
  36. package/esm2020/avatar-group/directives/avatar-group-focusable-avatar.directive.mjs +4 -12
  37. package/esm2020/avatar-group/directives/avatar-group-overflow-body.directive.mjs +2 -2
  38. package/esm2020/avatar-group/directives/avatar-group-overflow-button.directive.mjs +3 -7
  39. package/esm2020/bar/bar.component.mjs +3 -7
  40. package/esm2020/breadcrumb/breadcrumb-item.component.mjs +2 -2
  41. package/esm2020/breadcrumb/breadcrumb.component.mjs +2 -2
  42. package/esm2020/busy-indicator/busy-indicator-extended/busy-indicator-extended.directive.mjs +4 -8
  43. package/esm2020/button/button.component.mjs +3 -9
  44. package/esm2020/card/card-content.component.mjs +3 -7
  45. package/esm2020/card/card-counter.directive.mjs +3 -7
  46. package/esm2020/card/card-header.component.mjs +4 -8
  47. package/esm2020/card/card-loader.component.mjs +3 -7
  48. package/esm2020/card/card-second-subtitle.directive.mjs +3 -7
  49. package/esm2020/card/card-subtitle.directive.mjs +3 -7
  50. package/esm2020/card/card-title.directive.mjs +3 -7
  51. package/esm2020/card/card.component.mjs +3 -7
  52. package/esm2020/card/kpi/card-kpi-analytics-content.directive.mjs +3 -7
  53. package/esm2020/card/kpi/card-kpi-analytics-label.directive.mjs +3 -7
  54. package/esm2020/card/kpi/card-kpi-analytics.directive.mjs +3 -7
  55. package/esm2020/card/kpi/card-kpi-header.component.mjs +3 -7
  56. package/esm2020/card/kpi/card-kpi-scale-icon.directive.mjs +3 -7
  57. package/esm2020/card/kpi/card-kpi-scale-text.directive.mjs +3 -7
  58. package/esm2020/card/kpi/card-kpi-value.directive.mjs +3 -7
  59. package/esm2020/checkbox/checkbox/checkbox.component.mjs +5 -5
  60. package/esm2020/combobox/combobox.component.mjs +5 -4
  61. package/esm2020/combobox/combobox.module.mjs +8 -4
  62. package/esm2020/content-density/services/content-density-observer.service.mjs +3 -3
  63. package/esm2020/datetime-picker/datetime-picker.component.mjs +7 -4
  64. package/esm2020/dialog/base/dialog-base.class.mjs +4 -4
  65. package/esm2020/dialog/dialog-body/dialog-body.component.mjs +3 -7
  66. package/esm2020/dialog/dialog-container/dialog-container.component.mjs +1 -5
  67. package/esm2020/dialog/dialog-service/dialog.service.mjs +10 -2
  68. package/esm2020/dialog/dialog.component.mjs +3 -7
  69. package/esm2020/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +4 -8
  70. package/esm2020/dynamic-page/dynamic-page-header/actions/dynamic-page-layout-actions.component.mjs +5 -9
  71. package/esm2020/dynamic-side-content/dynamic-side-content.component.mjs +3 -7
  72. package/esm2020/facets/content/facet-content.component.mjs +4 -8
  73. package/esm2020/facets/facet/facet.component.mjs +13 -19
  74. package/esm2020/feed-input/directives/feed-input-avatar.directive.mjs +3 -7
  75. package/esm2020/feed-list-item/components/item/feed-list-item.component.mjs +3 -7
  76. package/esm2020/feed-list-item/components/list/feed-list.component.mjs +3 -7
  77. package/esm2020/form/form-control/form-control.component.mjs +3 -7
  78. package/esm2020/form/form-group/form-group.component.mjs +3 -7
  79. package/esm2020/form/form-message/form-message.component.mjs +3 -7
  80. package/esm2020/grid-list/components/grid-list-item/grid-list-item.component.mjs +3 -3
  81. package/esm2020/icon/icon.component.mjs +3 -7
  82. package/esm2020/illustrated-message/illustrated-message.component.mjs +3 -7
  83. package/esm2020/info-label/info-label.component.mjs +3 -7
  84. package/esm2020/inline-help/inline-help.directive.mjs +26 -15
  85. package/esm2020/input-group/input-group-directives.mjs +6 -14
  86. package/esm2020/input-group/input-group.component.mjs +2 -2
  87. package/esm2020/layout-grid/directives/layout-grid-col.directive.mjs +3 -7
  88. package/esm2020/layout-grid/layout-grid.component.mjs +3 -7
  89. package/esm2020/layout-panel/layout-panel-footer/layout-panel-footer.component.mjs +3 -7
  90. package/esm2020/link/link.component.mjs +9 -13
  91. package/esm2020/list/directives/list-icon.directive.mjs +3 -7
  92. package/esm2020/list/directives/list-navigation-item-text.directive.mjs +3 -7
  93. package/esm2020/list/list-message.directive.mjs +3 -7
  94. package/esm2020/menu/menu-mobile/menu-mobile.component.mjs +2 -2
  95. package/esm2020/message-box/message-box-container/message-box-container.component.mjs +1 -5
  96. package/esm2020/message-box/message-box.component.mjs +1 -5
  97. package/esm2020/message-page/message-page.component.mjs +3 -7
  98. package/esm2020/message-strip/alert/default-config.mjs +11 -0
  99. package/esm2020/message-strip/alert/index.mjs +6 -0
  100. package/esm2020/message-strip/alert/message-strip-alert/message-strip-alert.component.mjs +68 -0
  101. package/esm2020/message-strip/alert/message-strip-alert-container/message-strip-alert-container.component.mjs +57 -0
  102. package/esm2020/message-strip/alert/message-strip-alert-container-footer/message-strip-alert-container-footer.component.mjs +65 -0
  103. package/esm2020/message-strip/alert/message-strip-alert.position.mjs +2 -0
  104. package/esm2020/message-strip/alert/message-strip-alert.ref.mjs +3 -0
  105. package/esm2020/message-strip/alert/message-strip-alert.service.mjs +195 -0
  106. package/esm2020/message-strip/alert/message-strip-configuration-type.mjs +2 -0
  107. package/esm2020/message-strip/alert/open-message-strip-alert.config.mjs +2 -0
  108. package/esm2020/message-strip/alert/tokens.mjs +14 -0
  109. package/esm2020/message-strip/auto-dismiss-message-strip.directive.mjs +98 -0
  110. package/esm2020/message-strip/fundamental-ngx-core-message-strip.mjs +2 -2
  111. package/esm2020/message-strip/index.mjs +6 -0
  112. package/esm2020/message-strip/message-strip-type.mjs +2 -0
  113. package/esm2020/message-strip/message-strip.component.mjs +16 -20
  114. package/esm2020/message-strip/message-strip.module.mjs +6 -9
  115. package/esm2020/multi-combobox/multi-combobox.component.mjs +6 -6
  116. package/esm2020/multi-input/multi-input.component.mjs +33 -19
  117. package/esm2020/notification/directives/notification-indicator.directive.mjs +3 -7
  118. package/esm2020/notification/notification-group/notification-group.component.mjs +3 -7
  119. package/esm2020/notification/notification-utils/notification-group-base.mjs +2 -2
  120. package/esm2020/object-marker/object-marker.component.mjs +3 -7
  121. package/esm2020/object-number/object-number.component.mjs +3 -7
  122. package/esm2020/object-status/object-status.component.mjs +3 -7
  123. package/esm2020/panel/panel.component.mjs +3 -7
  124. package/esm2020/product-switch/product-switch-body/product-switch-body.component.mjs +1 -1
  125. package/esm2020/radio/radio-button/radio-button.component.mjs +2 -2
  126. package/esm2020/rating-indicator/components/rating-indicator.component.mjs +3 -7
  127. package/esm2020/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.mjs +4 -8
  128. package/esm2020/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs +3 -7
  129. package/esm2020/segmented-button/segmented-button.component.mjs +4 -4
  130. package/esm2020/select/select.component.mjs +3 -3
  131. package/esm2020/slider/slider.component.mjs +3 -7
  132. package/esm2020/status-indicator/status-indicator.component.mjs +4 -8
  133. package/esm2020/table/directives/table-cell.directive.mjs +31 -26
  134. package/esm2020/table/directives/table-icon.directive.mjs +3 -9
  135. package/esm2020/table/directives/table-row.directive.mjs +34 -19
  136. package/esm2020/table/table-wrapper.component.mjs +2 -2
  137. package/esm2020/table/table.component.mjs +1 -1
  138. package/esm2020/tabs/tab-item/tab-item.directive.mjs +3 -7
  139. package/esm2020/tabs/tab-nav/tab-nav.component.mjs +3 -9
  140. package/esm2020/tabs/tab-utils/tab-directives.mjs +3 -9
  141. package/esm2020/tile/directives/numeric-content.directives.mjs +14 -34
  142. package/esm2020/tile/directives/tile.directives.mjs +9 -21
  143. package/esm2020/tile/tile.component.mjs +2 -2
  144. package/esm2020/token/token-input.directive.mjs +3 -7
  145. package/esm2020/token/tokenizer.component.mjs +20 -22
  146. package/esm2020/toolbar/toolbar.component.mjs +2 -2
  147. package/esm2020/tree/components/tree-item/tree-item.component.mjs +1 -1
  148. package/esm2020/tree/models/base-tree-item.class.mjs +2 -6
  149. package/esm2020/tree/tree.component.mjs +3 -7
  150. package/esm2020/upload-collection/upload-collection-item.directive.mjs +2 -2
  151. package/esm2020/wizard/wizard.component.mjs +2 -2
  152. package/facets/content/facet-content.component.d.ts +2 -4
  153. package/facets/facet/facet.component.d.ts +2 -6
  154. package/feed-input/directives/feed-input-avatar.directive.d.ts +2 -4
  155. package/feed-list-item/components/item/feed-list-item.component.d.ts +2 -4
  156. package/feed-list-item/components/list/feed-list.component.d.ts +2 -4
  157. package/fesm2015/fundamental-ngx-core-alert.mjs +48 -58
  158. package/fesm2015/fundamental-ngx-core-alert.mjs.map +1 -1
  159. package/fesm2015/fundamental-ngx-core-avatar-group.mjs +6 -18
  160. package/fesm2015/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  161. package/fesm2015/fundamental-ngx-core-avatar.mjs +5 -9
  162. package/fesm2015/fundamental-ngx-core-avatar.mjs.map +1 -1
  163. package/fesm2015/fundamental-ngx-core-bar.mjs +2 -6
  164. package/fesm2015/fundamental-ngx-core-bar.mjs.map +1 -1
  165. package/fesm2015/fundamental-ngx-core-breadcrumb.mjs +2 -2
  166. package/fesm2015/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  167. package/fesm2015/fundamental-ngx-core-busy-indicator.mjs +3 -7
  168. package/fesm2015/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  169. package/fesm2015/fundamental-ngx-core-button.mjs +2 -8
  170. package/fesm2015/fundamental-ngx-core-button.mjs.map +1 -1
  171. package/fesm2015/fundamental-ngx-core-card.mjs +31 -91
  172. package/fesm2015/fundamental-ngx-core-card.mjs.map +1 -1
  173. package/fesm2015/fundamental-ngx-core-checkbox.mjs +4 -4
  174. package/fesm2015/fundamental-ngx-core-checkbox.mjs.map +1 -1
  175. package/fesm2015/fundamental-ngx-core-combobox.mjs +10 -5
  176. package/fesm2015/fundamental-ngx-core-combobox.mjs.map +1 -1
  177. package/fesm2015/fundamental-ngx-core-content-density.mjs +2 -2
  178. package/fesm2015/fundamental-ngx-core-content-density.mjs.map +1 -1
  179. package/fesm2015/fundamental-ngx-core-datetime-picker.mjs +6 -3
  180. package/fesm2015/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  181. package/fesm2015/fundamental-ngx-core-dialog.mjs +16 -21
  182. package/fesm2015/fundamental-ngx-core-dialog.mjs.map +1 -1
  183. package/fesm2015/fundamental-ngx-core-dynamic-page.mjs +7 -15
  184. package/fesm2015/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  185. package/fesm2015/fundamental-ngx-core-dynamic-side-content.mjs +2 -6
  186. package/fesm2015/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
  187. package/fesm2015/fundamental-ngx-core-facets.mjs +15 -25
  188. package/fesm2015/fundamental-ngx-core-facets.mjs.map +1 -1
  189. package/fesm2015/fundamental-ngx-core-feed-input.mjs +2 -6
  190. package/fesm2015/fundamental-ngx-core-feed-input.mjs.map +1 -1
  191. package/fesm2015/fundamental-ngx-core-feed-list-item.mjs +4 -12
  192. package/fesm2015/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  193. package/fesm2015/fundamental-ngx-core-form.mjs +6 -18
  194. package/fesm2015/fundamental-ngx-core-form.mjs.map +1 -1
  195. package/fesm2015/fundamental-ngx-core-grid-list.mjs +2 -2
  196. package/fesm2015/fundamental-ngx-core-grid-list.mjs.map +1 -1
  197. package/fesm2015/fundamental-ngx-core-icon.mjs +2 -6
  198. package/fesm2015/fundamental-ngx-core-icon.mjs.map +1 -1
  199. package/fesm2015/fundamental-ngx-core-illustrated-message.mjs +2 -6
  200. package/fesm2015/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
  201. package/fesm2015/fundamental-ngx-core-info-label.mjs +2 -6
  202. package/fesm2015/fundamental-ngx-core-info-label.mjs.map +1 -1
  203. package/fesm2015/fundamental-ngx-core-inline-help.mjs +24 -13
  204. package/fesm2015/fundamental-ngx-core-inline-help.mjs.map +1 -1
  205. package/fesm2015/fundamental-ngx-core-input-group.mjs +6 -14
  206. package/fesm2015/fundamental-ngx-core-input-group.mjs.map +1 -1
  207. package/fesm2015/fundamental-ngx-core-layout-grid.mjs +4 -12
  208. package/fesm2015/fundamental-ngx-core-layout-grid.mjs.map +1 -1
  209. package/fesm2015/fundamental-ngx-core-layout-panel.mjs +2 -6
  210. package/fesm2015/fundamental-ngx-core-layout-panel.mjs.map +1 -1
  211. package/fesm2015/fundamental-ngx-core-link.mjs +8 -12
  212. package/fesm2015/fundamental-ngx-core-link.mjs.map +1 -1
  213. package/fesm2015/fundamental-ngx-core-list.mjs +6 -18
  214. package/fesm2015/fundamental-ngx-core-list.mjs.map +1 -1
  215. package/fesm2015/fundamental-ngx-core-menu.mjs +1 -1
  216. package/fesm2015/fundamental-ngx-core-menu.mjs.map +1 -1
  217. package/fesm2015/fundamental-ngx-core-message-box.mjs +0 -8
  218. package/fesm2015/fundamental-ngx-core-message-box.mjs.map +1 -1
  219. package/fesm2015/fundamental-ngx-core-message-page.mjs +2 -6
  220. package/fesm2015/fundamental-ngx-core-message-page.mjs.map +1 -1
  221. package/fesm2015/fundamental-ngx-core-message-strip.mjs +488 -28
  222. package/fesm2015/fundamental-ngx-core-message-strip.mjs.map +1 -1
  223. package/fesm2015/fundamental-ngx-core-multi-combobox.mjs +5 -5
  224. package/fesm2015/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  225. package/fesm2015/fundamental-ngx-core-multi-input.mjs +33 -17
  226. package/fesm2015/fundamental-ngx-core-multi-input.mjs.map +1 -1
  227. package/fesm2015/fundamental-ngx-core-notification.mjs +5 -13
  228. package/fesm2015/fundamental-ngx-core-notification.mjs.map +1 -1
  229. package/fesm2015/fundamental-ngx-core-object-marker.mjs +2 -6
  230. package/fesm2015/fundamental-ngx-core-object-marker.mjs.map +1 -1
  231. package/fesm2015/fundamental-ngx-core-object-number.mjs +2 -6
  232. package/fesm2015/fundamental-ngx-core-object-number.mjs.map +1 -1
  233. package/fesm2015/fundamental-ngx-core-object-status.mjs +2 -6
  234. package/fesm2015/fundamental-ngx-core-object-status.mjs.map +1 -1
  235. package/fesm2015/fundamental-ngx-core-panel.mjs +2 -6
  236. package/fesm2015/fundamental-ngx-core-panel.mjs.map +1 -1
  237. package/fesm2015/fundamental-ngx-core-product-switch.mjs +1 -1
  238. package/fesm2015/fundamental-ngx-core-product-switch.mjs.map +1 -1
  239. package/fesm2015/fundamental-ngx-core-radio.mjs +1 -1
  240. package/fesm2015/fundamental-ngx-core-radio.mjs.map +1 -1
  241. package/fesm2015/fundamental-ngx-core-rating-indicator.mjs +2 -6
  242. package/fesm2015/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  243. package/fesm2015/fundamental-ngx-core-resizable-card-layout.mjs +5 -13
  244. package/fesm2015/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
  245. package/fesm2015/fundamental-ngx-core-segmented-button.mjs +3 -3
  246. package/fesm2015/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  247. package/fesm2015/fundamental-ngx-core-select.mjs +2 -2
  248. package/fesm2015/fundamental-ngx-core-select.mjs.map +1 -1
  249. package/fesm2015/fundamental-ngx-core-slider.mjs +2 -6
  250. package/fesm2015/fundamental-ngx-core-slider.mjs.map +1 -1
  251. package/fesm2015/fundamental-ngx-core-status-indicator.mjs +3 -7
  252. package/fesm2015/fundamental-ngx-core-status-indicator.mjs.map +1 -1
  253. package/fesm2015/fundamental-ngx-core-table.mjs +64 -48
  254. package/fesm2015/fundamental-ngx-core-table.mjs.map +1 -1
  255. package/fesm2015/fundamental-ngx-core-tabs.mjs +6 -22
  256. package/fesm2015/fundamental-ngx-core-tabs.mjs.map +1 -1
  257. package/fesm2015/fundamental-ngx-core-tile.mjs +22 -54
  258. package/fesm2015/fundamental-ngx-core-tile.mjs.map +1 -1
  259. package/fesm2015/fundamental-ngx-core-token.mjs +22 -28
  260. package/fesm2015/fundamental-ngx-core-token.mjs.map +1 -1
  261. package/fesm2015/fundamental-ngx-core-toolbar.mjs +1 -1
  262. package/fesm2015/fundamental-ngx-core-toolbar.mjs.map +1 -1
  263. package/fesm2015/fundamental-ngx-core-tree.mjs +3 -11
  264. package/fesm2015/fundamental-ngx-core-tree.mjs.map +1 -1
  265. package/fesm2015/fundamental-ngx-core-upload-collection.mjs +1 -1
  266. package/fesm2015/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  267. package/fesm2015/fundamental-ngx-core-wizard.mjs +1 -1
  268. package/fesm2015/fundamental-ngx-core-wizard.mjs.map +1 -1
  269. package/fesm2020/fundamental-ngx-core-alert.mjs +48 -58
  270. package/fesm2020/fundamental-ngx-core-alert.mjs.map +1 -1
  271. package/fesm2020/fundamental-ngx-core-avatar-group.mjs +6 -18
  272. package/fesm2020/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  273. package/fesm2020/fundamental-ngx-core-avatar.mjs +5 -9
  274. package/fesm2020/fundamental-ngx-core-avatar.mjs.map +1 -1
  275. package/fesm2020/fundamental-ngx-core-bar.mjs +2 -6
  276. package/fesm2020/fundamental-ngx-core-bar.mjs.map +1 -1
  277. package/fesm2020/fundamental-ngx-core-breadcrumb.mjs +2 -2
  278. package/fesm2020/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  279. package/fesm2020/fundamental-ngx-core-busy-indicator.mjs +3 -7
  280. package/fesm2020/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  281. package/fesm2020/fundamental-ngx-core-button.mjs +2 -8
  282. package/fesm2020/fundamental-ngx-core-button.mjs.map +1 -1
  283. package/fesm2020/fundamental-ngx-core-card.mjs +31 -91
  284. package/fesm2020/fundamental-ngx-core-card.mjs.map +1 -1
  285. package/fesm2020/fundamental-ngx-core-checkbox.mjs +4 -4
  286. package/fesm2020/fundamental-ngx-core-checkbox.mjs.map +1 -1
  287. package/fesm2020/fundamental-ngx-core-combobox.mjs +10 -5
  288. package/fesm2020/fundamental-ngx-core-combobox.mjs.map +1 -1
  289. package/fesm2020/fundamental-ngx-core-content-density.mjs +2 -2
  290. package/fesm2020/fundamental-ngx-core-content-density.mjs.map +1 -1
  291. package/fesm2020/fundamental-ngx-core-datetime-picker.mjs +6 -3
  292. package/fesm2020/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  293. package/fesm2020/fundamental-ngx-core-dialog.mjs +16 -21
  294. package/fesm2020/fundamental-ngx-core-dialog.mjs.map +1 -1
  295. package/fesm2020/fundamental-ngx-core-dynamic-page.mjs +7 -15
  296. package/fesm2020/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  297. package/fesm2020/fundamental-ngx-core-dynamic-side-content.mjs +2 -6
  298. package/fesm2020/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
  299. package/fesm2020/fundamental-ngx-core-facets.mjs +15 -25
  300. package/fesm2020/fundamental-ngx-core-facets.mjs.map +1 -1
  301. package/fesm2020/fundamental-ngx-core-feed-input.mjs +2 -6
  302. package/fesm2020/fundamental-ngx-core-feed-input.mjs.map +1 -1
  303. package/fesm2020/fundamental-ngx-core-feed-list-item.mjs +4 -12
  304. package/fesm2020/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  305. package/fesm2020/fundamental-ngx-core-form.mjs +6 -18
  306. package/fesm2020/fundamental-ngx-core-form.mjs.map +1 -1
  307. package/fesm2020/fundamental-ngx-core-grid-list.mjs +2 -2
  308. package/fesm2020/fundamental-ngx-core-grid-list.mjs.map +1 -1
  309. package/fesm2020/fundamental-ngx-core-icon.mjs +2 -6
  310. package/fesm2020/fundamental-ngx-core-icon.mjs.map +1 -1
  311. package/fesm2020/fundamental-ngx-core-illustrated-message.mjs +2 -6
  312. package/fesm2020/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
  313. package/fesm2020/fundamental-ngx-core-info-label.mjs +2 -6
  314. package/fesm2020/fundamental-ngx-core-info-label.mjs.map +1 -1
  315. package/fesm2020/fundamental-ngx-core-inline-help.mjs +24 -13
  316. package/fesm2020/fundamental-ngx-core-inline-help.mjs.map +1 -1
  317. package/fesm2020/fundamental-ngx-core-input-group.mjs +6 -14
  318. package/fesm2020/fundamental-ngx-core-input-group.mjs.map +1 -1
  319. package/fesm2020/fundamental-ngx-core-layout-grid.mjs +4 -12
  320. package/fesm2020/fundamental-ngx-core-layout-grid.mjs.map +1 -1
  321. package/fesm2020/fundamental-ngx-core-layout-panel.mjs +2 -6
  322. package/fesm2020/fundamental-ngx-core-layout-panel.mjs.map +1 -1
  323. package/fesm2020/fundamental-ngx-core-link.mjs +8 -12
  324. package/fesm2020/fundamental-ngx-core-link.mjs.map +1 -1
  325. package/fesm2020/fundamental-ngx-core-list.mjs +6 -18
  326. package/fesm2020/fundamental-ngx-core-list.mjs.map +1 -1
  327. package/fesm2020/fundamental-ngx-core-menu.mjs +1 -1
  328. package/fesm2020/fundamental-ngx-core-menu.mjs.map +1 -1
  329. package/fesm2020/fundamental-ngx-core-message-box.mjs +0 -8
  330. package/fesm2020/fundamental-ngx-core-message-box.mjs.map +1 -1
  331. package/fesm2020/fundamental-ngx-core-message-page.mjs +2 -6
  332. package/fesm2020/fundamental-ngx-core-message-page.mjs.map +1 -1
  333. package/fesm2020/fundamental-ngx-core-message-strip.mjs +493 -28
  334. package/fesm2020/fundamental-ngx-core-message-strip.mjs.map +1 -1
  335. package/fesm2020/fundamental-ngx-core-multi-combobox.mjs +5 -5
  336. package/fesm2020/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  337. package/fesm2020/fundamental-ngx-core-multi-input.mjs +31 -17
  338. package/fesm2020/fundamental-ngx-core-multi-input.mjs.map +1 -1
  339. package/fesm2020/fundamental-ngx-core-notification.mjs +5 -13
  340. package/fesm2020/fundamental-ngx-core-notification.mjs.map +1 -1
  341. package/fesm2020/fundamental-ngx-core-object-marker.mjs +2 -6
  342. package/fesm2020/fundamental-ngx-core-object-marker.mjs.map +1 -1
  343. package/fesm2020/fundamental-ngx-core-object-number.mjs +2 -6
  344. package/fesm2020/fundamental-ngx-core-object-number.mjs.map +1 -1
  345. package/fesm2020/fundamental-ngx-core-object-status.mjs +2 -6
  346. package/fesm2020/fundamental-ngx-core-object-status.mjs.map +1 -1
  347. package/fesm2020/fundamental-ngx-core-panel.mjs +2 -6
  348. package/fesm2020/fundamental-ngx-core-panel.mjs.map +1 -1
  349. package/fesm2020/fundamental-ngx-core-product-switch.mjs +1 -1
  350. package/fesm2020/fundamental-ngx-core-product-switch.mjs.map +1 -1
  351. package/fesm2020/fundamental-ngx-core-radio.mjs +1 -1
  352. package/fesm2020/fundamental-ngx-core-radio.mjs.map +1 -1
  353. package/fesm2020/fundamental-ngx-core-rating-indicator.mjs +2 -6
  354. package/fesm2020/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  355. package/fesm2020/fundamental-ngx-core-resizable-card-layout.mjs +5 -13
  356. package/fesm2020/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
  357. package/fesm2020/fundamental-ngx-core-segmented-button.mjs +3 -3
  358. package/fesm2020/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  359. package/fesm2020/fundamental-ngx-core-select.mjs +2 -2
  360. package/fesm2020/fundamental-ngx-core-select.mjs.map +1 -1
  361. package/fesm2020/fundamental-ngx-core-slider.mjs +2 -6
  362. package/fesm2020/fundamental-ngx-core-slider.mjs.map +1 -1
  363. package/fesm2020/fundamental-ngx-core-status-indicator.mjs +3 -7
  364. package/fesm2020/fundamental-ngx-core-status-indicator.mjs.map +1 -1
  365. package/fesm2020/fundamental-ngx-core-table.mjs +64 -48
  366. package/fesm2020/fundamental-ngx-core-table.mjs.map +1 -1
  367. package/fesm2020/fundamental-ngx-core-tabs.mjs +6 -22
  368. package/fesm2020/fundamental-ngx-core-tabs.mjs.map +1 -1
  369. package/fesm2020/fundamental-ngx-core-tile.mjs +22 -54
  370. package/fesm2020/fundamental-ngx-core-tile.mjs.map +1 -1
  371. package/fesm2020/fundamental-ngx-core-token.mjs +21 -27
  372. package/fesm2020/fundamental-ngx-core-token.mjs.map +1 -1
  373. package/fesm2020/fundamental-ngx-core-toolbar.mjs +1 -1
  374. package/fesm2020/fundamental-ngx-core-toolbar.mjs.map +1 -1
  375. package/fesm2020/fundamental-ngx-core-tree.mjs +3 -11
  376. package/fesm2020/fundamental-ngx-core-tree.mjs.map +1 -1
  377. package/fesm2020/fundamental-ngx-core-upload-collection.mjs +1 -1
  378. package/fesm2020/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  379. package/fesm2020/fundamental-ngx-core-wizard.mjs +1 -1
  380. package/fesm2020/fundamental-ngx-core-wizard.mjs.map +1 -1
  381. package/form/form-control/form-control.component.d.ts +2 -4
  382. package/form/form-group/form-group.component.d.ts +2 -4
  383. package/form/form-message/form-message.component.d.ts +2 -4
  384. package/fundamental-ngx-core-v0.42.0.tgz +0 -0
  385. package/icon/icon.component.d.ts +2 -4
  386. package/illustrated-message/illustrated-message.component.d.ts +2 -4
  387. package/info-label/info-label.component.d.ts +2 -4
  388. package/inline-help/inline-help.directive.d.ts +9 -3
  389. package/input-group/input-group-directives.d.ts +5 -9
  390. package/layout-grid/directives/layout-grid-col.directive.d.ts +2 -4
  391. package/layout-grid/layout-grid.component.d.ts +2 -4
  392. package/layout-panel/layout-panel-footer/layout-panel-footer.component.d.ts +4 -6
  393. package/link/link.component.d.ts +2 -4
  394. package/list/directives/list-icon.directive.d.ts +4 -5
  395. package/list/directives/list-navigation-item-text.directive.d.ts +2 -4
  396. package/list/list-message.directive.d.ts +2 -4
  397. package/message-box/message-box-container/message-box-container.component.d.ts +0 -2
  398. package/message-box/message-box.component.d.ts +0 -2
  399. package/message-page/message-page.component.d.ts +2 -4
  400. package/message-strip/alert/default-config.d.ts +5 -0
  401. package/message-strip/alert/index.d.ts +9 -0
  402. package/message-strip/alert/message-strip-alert/message-strip-alert.component.d.ts +52 -0
  403. package/message-strip/alert/message-strip-alert-container/message-strip-alert-container.component.d.ts +28 -0
  404. package/message-strip/alert/message-strip-alert-container-footer/message-strip-alert-container-footer.component.d.ts +36 -0
  405. package/message-strip/alert/message-strip-alert.position.d.ts +3 -0
  406. package/message-strip/alert/message-strip-alert.ref.d.ts +14 -0
  407. package/message-strip/alert/message-strip-alert.service.d.ts +52 -0
  408. package/message-strip/alert/message-strip-configuration-type.d.ts +15 -0
  409. package/message-strip/alert/open-message-strip-alert.config.d.ts +22 -0
  410. package/message-strip/alert/tokens.d.ts +20 -0
  411. package/message-strip/auto-dismiss-message-strip.directive.d.ts +35 -0
  412. package/message-strip/index.d.ts +5 -5
  413. package/message-strip/message-strip-type.d.ts +2 -0
  414. package/message-strip/message-strip.component.d.ts +7 -9
  415. package/message-strip/message-strip.module.d.ts +2 -4
  416. package/multi-combobox/multi-combobox.component.d.ts +1 -1
  417. package/multi-input/multi-input.component.d.ts +10 -6
  418. package/notification/directives/notification-indicator.directive.d.ts +2 -4
  419. package/notification/notification-group/notification-group.component.d.ts +2 -4
  420. package/object-marker/object-marker.component.d.ts +2 -4
  421. package/object-number/object-number.component.d.ts +2 -4
  422. package/object-status/object-status.component.d.ts +2 -4
  423. package/package.json +3 -3
  424. package/panel/panel.component.d.ts +2 -4
  425. package/radio/radio-button/radio-button.component.d.ts +1 -1
  426. package/rating-indicator/components/rating-indicator.component.d.ts +2 -4
  427. package/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.d.ts +2 -4
  428. package/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.d.ts +2 -4
  429. package/schematics/add-dependencies/index.js +4 -4
  430. package/slider/slider.component.d.ts +2 -4
  431. package/status-indicator/status-indicator.component.d.ts +2 -4
  432. package/table/directives/table-cell.directive.d.ts +6 -12
  433. package/table/directives/table-icon.directive.d.ts +2 -6
  434. package/table/directives/table-row.directive.d.ts +10 -10
  435. package/tabs/tab-item/tab-item.directive.d.ts +2 -4
  436. package/tabs/tab-nav/tab-nav.component.d.ts +4 -8
  437. package/tabs/tab-utils/tab-directives.d.ts +2 -6
  438. package/tile/directives/numeric-content.directives.d.ts +10 -20
  439. package/tile/directives/tile.directives.d.ts +6 -12
  440. package/tile/tile.component.d.ts +1 -1
  441. package/token/token-input.directive.d.ts +2 -4
  442. package/token/tokenizer.component.d.ts +2 -4
  443. package/toolbar/toolbar.component.d.ts +1 -1
  444. package/tree/models/base-tree-item.class.d.ts +1 -3
  445. package/tree/tree.component.d.ts +1 -3
  446. package/esm2020/message-strip/public_api.mjs +0 -3
  447. package/fundamental-ngx-core-v0.42.0-rc.8.tgz +0 -0
  448. package/message-strip/public_api.d.ts +0 -2
@@ -90,7 +90,7 @@ export class TreeComponent {
90
90
  /** @hidden */
91
91
  this._destroy$ = inject(DestroyedService);
92
92
  /** @hidden */
93
- this._elementRef = inject(ElementRef);
93
+ this.elementRef = inject(ElementRef);
94
94
  /** @hidden */
95
95
  this._treeService = inject(TreeService);
96
96
  /** @hidden */
@@ -223,7 +223,7 @@ export class TreeComponent {
223
223
  this._eventSub?.unsubscribe();
224
224
  this._eventSub = new Subscription();
225
225
  this._sortedTreeItems.forEach((item) => {
226
- this._eventSub.add(fromEvent(item.elementRef().nativeElement, 'keydown').subscribe((event) => {
226
+ this._eventSub.add(fromEvent(item.elementRef.nativeElement, 'keydown').subscribe((event) => {
227
227
  this._onItemKeyDown(event, item);
228
228
  }));
229
229
  this._eventSub.add(fromEvent(item.itemContainer?.nativeElement, 'focus').subscribe(() => {
@@ -255,10 +255,6 @@ export class TreeComponent {
255
255
  return components;
256
256
  }
257
257
  /** @hidden */
258
- elementRef() {
259
- return this._elementRef;
260
- }
261
- /** @hidden */
262
258
  buildComponentCssClass() {
263
259
  return [
264
260
  this.class,
@@ -439,4 +435,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
439
435
  type: HostListener,
440
436
  args: ['keydown', ['$event']]
441
437
  }] } });
442
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90cmVlL3RyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdHJlZS90cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RGLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBQ04sU0FBUyxFQUVULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFDSCxhQUFhLEVBRWIsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFFUCxVQUFVLEVBR1YsZ0JBQWdCLEVBQ25CLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTlHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFB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QUFZO3NCQURYLE1BQU07Z0JBS1AsY0FBYztzQkFEYixNQUFNO2dCQVFILFdBQVc7c0JBRGQsWUFBWTt1QkFBQyxvQkFBb0I7Z0JBOEJsQyxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsaUJBQWlCO2dCQUt0QixtQkFBbUI7c0JBRDNCLGVBQWU7dUJBQUMsWUFBWSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFnUXBELHNCQUFzQixNQWlCZCxRQUFRO3NCQURmLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IERPV05fQVJST1csIExFRlRfQVJST1csIFJJR0hUX0FSUk9XLCBVUF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZURpcmVjdGl2ZSwgRkRfREFUQV9TT1VSQ0VfVFJBTlNGT1JNRVIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBDdmFEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIGFwcGx5Q3NzQ2xhc3MsXG4gICAgQ3NzQ2xhc3NCdWlsZGVyLFxuICAgIERlc3Ryb3llZFNlcnZpY2UsXG4gICAgS2V5VXRpbCxcbiAgICBOdWxsYWJsZSxcbiAgICBSdGxTZXJ2aWNlLFxuICAgIFNlbGVjdGFibGVMaXN0VmFsdWVUeXBlLFxuICAgIFNlbGVjdENvbXBvbmVudFJvb3RUb2tlbixcbiAgICBTZWxlY3Rpb25TZXJ2aWNlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIGZyb21FdmVudCwgc3RhcnRXaXRoLCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGZFRyZWVBY2NlcHRhYmxlRGF0YVNvdXJjZSwgRmRUcmVlRGF0YVNvdXJjZSwgRmRUcmVlSXRlbVR5cGUgfSBmcm9tICcuL2RhdGEtc291cmNlL3RyZWUtZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHsgVHJlZURhdGFTb3VyY2VQYXJzZXIgfSBmcm9tICcuL2RhdGEtc291cmNlL3RyZWUtZGF0YS1zb3VyY2UtcGFyc2VyJztcbmltcG9ydCB7IFRyZWVJdGVtRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3RyZWUtaXRlbS1kZWYuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRyZWVJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3RyZWUtaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQmFzZVRyZWVJdGVtIH0gZnJvbSAnLi9tb2RlbHMvYmFzZS10cmVlLWl0ZW0uY2xhc3MnO1xuaW1wb3J0IHsgVHJlZVNlcnZpY2UgfSBmcm9tICcuL3RyZWUuc2VydmljZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25QbGFjZW1lbnQsIFNlbGVjdGlvblR5cGUgfSBmcm9tICcuL21vZGVscy9zZWxlY3Rpb24tdHlwZSc7XG5pbXBvcnQgeyBUcmVlSXRlbSwgVHJlZUl0ZW1HZW5lcmljIH0gZnJvbSAnLi9tb2RlbHMvdHJlZS1pdGVtJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC10cmVlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdHJlZS5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi90cmVlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgZGlyZWN0aXZlOiBEYXRhU291cmNlRGlyZWN0aXZlLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgICAgICAgICAgIGlucHV0czogWydkYXRhU291cmNlJ10sXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgICAgICAgICAgIG91dHB1dHM6IFsnZGF0YUNoYW5nZWQnXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBkaXJlY3RpdmU6IEN2YURpcmVjdGl2ZSxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gICAgICAgICAgICBpbnB1dHM6IFsnbmFtZScsICdpZCcsICdzdGF0ZScsICdzdGF0ZU1lc3NhZ2UnLCAnZGlzYWJsZWQnLCAncmVhZG9ubHknXVxuICAgICAgICB9XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgIHJvbGU6ICd0cmVlJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoKSxcbiAgICAgICAgVHJlZVNlcnZpY2UsXG4gICAgICAgIFNlbGVjdGlvblNlcnZpY2UsXG4gICAgICAgIERlc3Ryb3llZFNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0RBVEFfU09VUkNFX1RSQU5TRk9STUVSLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IFRyZWVEYXRhU291cmNlUGFyc2VyXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVDb21wb25lbnQ8UCBleHRlbmRzIEZkVHJlZUFjY2VwdGFibGVEYXRhU291cmNlLCBUIGV4dGVuZHMgVHJlZUl0ZW0gPSBGZFRyZWVJdGVtVHlwZTxQPj5cbiAgICBpbXBsZW1lbnRzIENzc0NsYXNzQnVpbGRlciwgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIFNlbGVjdENvbXBvbmVudFJvb3RUb2tlbiwgT25EZXN0cm95XG57XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNsYXNzOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSB0cmVlIHNob3VsZCBiZSBib3JkZXJsZXNzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbm9Cb3JkZXIgPSBmYWxzZTtcblxuICAgIC8qKiBUeXBlIG9mIHRyZWUgaXRlbXMgc2VsZWN0aW9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0aW9uOiBTZWxlY3Rpb25UeXBlID0gJ25vbmUnO1xuXG4gICAgLyoqIFBsYWNlbWVudCBvZiB0aGUgc2VsZWN0aW9uIGNvbnRyb2wuICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3Rpb25QbGFjZW1lbnQ6IFNlbGVjdGlvblBsYWNlbWVudCA9ICdub25lJztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIHNlY3Rpb25zIHNob3VsZCBiZSBkZXBlbmRlbnQgZm9yIHNlbGVjdGlvbiBtb2RlLlxuICAgICAqIElmIHRydWUsIHNlbGVjdGlvbiBjb250cm9sIHdpbGwgc2hpZnQsIGFjY29yZGluZyB0byB0aGUgbGV2ZWwuXG4gICAgICogSWYgZmFsc2UsIHNlbGVjdGlvbiBjb250cm9sIHdpbGwgc3RheSBvbiB0aGUgc2FtZSBwbGFjZSBpZ25vcmluZyB0aGUgaXRlbSBsZXZlbC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGluZGVwZW5kZW50U2VjdGlvbnMgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIFRyZWUgY29tcG9uZW50IGhhcyBuYXZpZ2F0aW9uIGluZGljYXRvcnMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgbmF2aWdhdGlvbkluZGljYXRvcih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMuX25hdmlnYXRpb25JbmRpY2F0b3IpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uSW5kaWNhdG9yID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX3RyZWVTZXJ2aWNlLnNldE5hdmlnYXRpb25JbmRpY2F0b3IodmFsdWUpO1xuICAgIH1cblxuICAgIGdldCBuYXZpZ2F0aW9uSW5kaWNhdG9yKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvbkluZGljYXRvcjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX25hdmlnYXRpb25JbmRpY2F0b3IgPSBmYWxzZTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZGF0YSBsb2FkaW5nIGlzIHN0YXJ0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgZGF0YVJlcXVlc3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZGF0YSBsb2FkaW5nIGlzIGZpbmlzaGVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGRhdGFSZWNlaXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gc2VsZWN0ZWQgc3RhdGUgY2hhbmdlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaXRlbXM6IFRyZWVJdGVtPFRyZWVJdGVtR2VuZXJpYzxUPj5bXSA9IFtdO1xuXG4gICAgLyoqIFRyZWUgaXRlbSB0ZW1wbGF0ZSBkZWZpbml0aW9uLiAqL1xuICAgIEBDb250ZW50Q2hpbGQoVHJlZUl0ZW1EZWZEaXJlY3RpdmUpXG4gICAgc2V0IHRyZWVJdGVtRGVmKHZhbHVlOiBOdWxsYWJsZTxUcmVlSXRlbURlZkRpcmVjdGl2ZT4pIHtcbiAgICAgICAgdGhpcy5fdHJlZUl0ZW1EZWYgPSB2YWx1ZTtcbiAgICAgICAgLy8gU2V0IG5ldyByZW5kZXJlclxuICAgICAgICB0aGlzLl90cmVlU2VydmljZS50cmVlSXRlbVRlbXBsYXRlUmVmID0gdmFsdWU/LnRlbXBsYXRlUmVmO1xuICAgICAgICB0aGlzLl9pdGVtcyA9IHRoaXMuX3RyZWVTZXJ2aWNlLm5vcm1hbGl6ZVRyZWVJdGVtcyh0aGlzLl9pdGVtcyk7XG4gICAgfVxuXG4gICAgZ2V0IHRyZWVJdGVtRGVmKCk6IE51bGxhYmxlPFRyZWVJdGVtRGVmRGlyZWN0aXZlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90cmVlSXRlbURlZjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBtdWx0aXBsZSgpOiBCb29sZWFuSW5wdXQge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24gPT09ICdtdWx0aXBsZSc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgdG9nZ2xlKCk6IEJvb2xlYW5JbnB1dCB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBVc2VkIGZvciBza2VsZXRvbiB0byBhcHBlYXIgYmVmb3JlIGZpcnN0IG1lYW5pbmdmdWwgZGF0YSBiZWluZyBsb2FkZWQuXG4gICAgICovXG4gICAgX2luaXRpYWxEYXRhTG9hZGVkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oVHJlZUl0ZW1EaXJlY3RpdmUpXG4gICAgX3RyZWVJdGVtRGlyZWN0aXZlczogUXVlcnlMaXN0PFRyZWVJdGVtRGlyZWN0aXZlPFRyZWVJdGVtLCBhbnk+PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihCYXNlVHJlZUl0ZW0sIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICByZWFkb25seSBfcHJvamVjdGVkVHJlZUl0ZW1zOiBRdWVyeUxpc3Q8QmFzZVRyZWVJdGVtPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdHJlZUl0ZW1EZWY6IE51bGxhYmxlPFRyZWVJdGVtRGVmRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29udGVudERlbnNpdHlPYnNlcnZlciA9IGluamVjdChDb250ZW50RGVuc2l0eU9ic2VydmVyKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGF0YVNvdXJjZURpcmVjdGl2ZSA9IGluamVjdDxEYXRhU291cmNlRGlyZWN0aXZlPFQsIEZkVHJlZURhdGFTb3VyY2U8VD4+PihEYXRhU291cmNlRGlyZWN0aXZlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBpbmplY3QoRGVzdHJveWVkU2VydmljZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RyZWVTZXJ2aWNlID0gaW5qZWN0KFRyZWVTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfc2VsZWN0aW9uU2VydmljZSA9IGluamVjdChTZWxlY3Rpb25TZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcnRsID0gaW5qZWN0KFJ0bFNlcnZpY2UsIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY3ZhRGlyZWN0aXZlID0gaW5qZWN0KEN2YURpcmVjdGl2ZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZXhwYW5kZWRMZXZlbDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9mb2N1c0tleU1hbmFnZXI6IEZvY3VzS2V5TWFuYWdlcjxCYXNlVHJlZUl0ZW0+O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFNvcnRlZCB0cmVlIGl0ZW0gY29tcG9uZW50cy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9zb3J0ZWRUcmVlSXRlbXM6IEJhc2VUcmVlSXRlbVtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQWxsIHRyZWUgaXRlbSBjb21wb25lbnRzLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2FsbEl0ZW1zOiBCYXNlVHJlZUl0ZW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9ldmVudFN1YjogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZWxlY3Rpb25TdWI6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGlvblNlcnZpY2UucmVnaXN0ZXJSb290Q29tcG9uZW50KHRoaXMpO1xuICAgICAgICB0aGlzLl9jb250ZW50RGVuc2l0eU9ic2VydmVyLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29wZW5EYXRhU3RyZWFtKCk7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuXG4gICAgICAgIHRoaXMuX3RyZWVTZXJ2aWNlLmV4cGFuZGVkTGV2ZWwucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKGxldmVsKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9leHBhbmRlZExldmVsID0gbGV2ZWw7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3RyZWVTZXJ2aWNlLmRldGVjdENoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uICE9PSAnbm9uZScpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvblNlcnZpY2Uuc2V0VmFsdWUodGhpcy5fY3ZhRGlyZWN0aXZlLnZhbHVlKTtcblxuICAgICAgICAgICAgdGhpcy5fY3ZhRGlyZWN0aXZlLm5nQ29udHJvbD8udmFsdWVDaGFuZ2VzPy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uU2VydmljZS5zZXRWYWx1ZSh0aGlzLl9jdmFEaXJlY3RpdmUudmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG5cbiAgICAgICAgaWYgKCdzZWxlY3Rpb24nIGluIGNoYW5nZXMgfHwgJ3NlbGVjdGlvblBsYWNlbWVudCcgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5fdHJlZVNlcnZpY2Uuc2V0U2VsZWN0aW9uTW9kZSh0aGlzLnNlbGVjdGlvbiwgdGhpcy5zZWxlY3Rpb25QbGFjZW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5fc2V0U2VsZWN0aW9uTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9saXN0ZW5Ub1RyZWVJdGVtc0NoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuVG9UcmVlSXRlbURpcmVjdGl2ZUNoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fZXZlbnRTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3NlbGVjdGlvblN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFNlbGVjdGlvbkxpc3RlbmVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb25TdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbiAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLnNldFZhbHVlKHRoaXMuX2N2YURpcmVjdGl2ZS52YWx1ZSk7XG5cbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvblN1YiA9IHRoaXMuX2N2YURpcmVjdGl2ZS5uZ0NvbnRyb2w/LnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgICAgID8ucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLnNldFZhbHVlKHRoaXMuX2N2YURpcmVjdGl2ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvVHJlZUl0ZW1EaXJlY3RpdmVDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90cmVlSXRlbURpcmVjdGl2ZXMuY2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLnRyZWVJdGVtRGVmICE9PSB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2FsbEl0ZW1zID0gdGhpcy5fdHJlZUl0ZW1EaXJlY3RpdmVzLnRvQXJyYXkoKS5tYXAoKGl0ZW0pID0+IGl0ZW0udHJlZUl0ZW0hKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmbGF0dGVuZWRJdGVtcyA9IHRoaXMuX3NvcnRUcmVlSXRlbXModGhpcy5fYWxsSXRlbXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldEZsYXR0ZW5lZEl0ZW1zKGZsYXR0ZW5lZEl0ZW1zKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9UcmVlSXRlbXNDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wcm9qZWN0ZWRUcmVlSXRlbXMuY2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy50cmVlSXRlbURlZiksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWxsSXRlbXMgPSB0aGlzLl9wcm9qZWN0ZWRUcmVlSXRlbXMudG9BcnJheSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5lZEl0ZW1zID0gdGhpcy5fc29ydFRyZWVJdGVtcyh0aGlzLl9hbGxJdGVtcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0RmxhdHRlbmVkSXRlbXMoZmxhdHRlbmVkSXRlbXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRGbGF0dGVuZWRJdGVtcyhpdGVtczogQmFzZVRyZWVJdGVtW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc29ydGVkVHJlZUl0ZW1zID0gaXRlbXM7XG5cbiAgICAgICAgY29uc3QgYWN0aXZlSXRlbSA9IHRoaXMuX2ZvY3VzS2V5TWFuYWdlcj8uYWN0aXZlSXRlbTtcbiAgICAgICAgY29uc3QgbmV3QWN0aXZlSXRlbUluZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtID09PSBhY3RpdmVJdGVtKTtcbiAgICAgICAgdGhpcy5fZm9jdXNLZXlNYW5hZ2VyPy5kZXN0cm95KCk7XG5cbiAgICAgICAgdGhpcy5fZm9jdXNLZXlNYW5hZ2VyID0gbmV3IEZvY3VzS2V5TWFuYWdlcihpdGVtcylcbiAgICAgICAgICAgIC53aXRoVmVydGljYWxPcmllbnRhdGlvbih0cnVlKVxuICAgICAgICAgICAgLnNraXBQcmVkaWNhdGUoKGl0ZW0pID0+ICFpdGVtLmtleWJvYXJkQWNjZXNzaWJsZSk7XG5cbiAgICAgICAgaWYgKG5ld0FjdGl2ZUl0ZW1JbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c0tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbShuZXdBY3RpdmVJdGVtSW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uU2VydmljZS5pbml0aWFsaXplKHRoaXMuX3NvcnRlZFRyZWVJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uc2VsZWN0YWJsZUxpc3RJdGVtKSk7XG5cbiAgICAgICAgdGhpcy5fc2V0dXBFdmVudExpc3RlbmVycygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uSXRlbUZvY3VzZWQodHJlZUl0ZW06IEJhc2VUcmVlSXRlbSk6IHZvaWQge1xuICAgICAgICBsZXQgZm9jdXNlZEluZGV4ID0gLTE7XG4gICAgICAgIHRoaXMuX3NvcnRlZFRyZWVJdGVtcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNGb2N1c2VkID0gdHJlZUl0ZW0gPT09IGl0ZW07XG4gICAgICAgICAgICBpdGVtLnNldENvbnRhaW5lclRhYkluZGV4KGlzRm9jdXNlZCA/IDAgOiAtMSk7XG4gICAgICAgICAgICBpZiAoaXNGb2N1c2VkKSB7XG4gICAgICAgICAgICAgICAgZm9jdXNlZEluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChmb2N1c2VkSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9mb2N1c0tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbShmb2N1c2VkSW5kZXgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0dXBFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZXZlbnRTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2V2ZW50U3ViID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgICAgIHRoaXMuX3NvcnRlZFRyZWVJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9ldmVudFN1Yi5hZGQoXG4gICAgICAgICAgICAgICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGl0ZW0uZWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQsICdrZXlkb3duJykuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkl0ZW1LZXlEb3duKGV2ZW50LCBpdGVtKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuX2V2ZW50U3ViLmFkZChcbiAgICAgICAgICAgICAgICBmcm9tRXZlbnQoaXRlbS5pdGVtQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LCAnZm9jdXMnKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkl0ZW1Gb2N1c2VkKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NvcnRUcmVlSXRlbXMoaXRlbXM6IEJhc2VUcmVlSXRlbVtdKTogQmFzZVRyZWVJdGVtW10ge1xuICAgICAgICBjb25zdCBjb21wb25lbnRzOiBCYXNlVHJlZUl0ZW1bXSA9IFtdO1xuICAgICAgICBjb25zdCByb290SXRlbXMgPSBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ubGV2ZWwgPT09IDEpO1xuXG4gICAgICAgIHJvb3RJdGVtcy5mb3JFYWNoKCh0cmVlSXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHRyZWVJdGVtLnNldFBvc2l0aW9uKHJvb3RJdGVtcy5sZW5ndGgsIGluZGV4ICsgMSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmICghaXRlbSB8fCBjb21wb25lbnRzLmluY2x1ZGVzKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb21wb25lbnRzLnB1c2goaXRlbSk7XG5cbiAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY2hpbGRJdGVtcyA9IHRoaXMuX3NvcnRUcmVlSXRlbXModGhpcy5fYWxsSXRlbXMuZmlsdGVyKChpKSA9PiBpLnBhcmVudElkID09PSBpdGVtLmlkKSk7XG5cbiAgICAgICAgICAgIGNoaWxkSXRlbXMuZm9yRWFjaCgodHJlZUl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgdHJlZUl0ZW0uc2V0UG9zaXRpb24oY2hpbGRJdGVtcy5sZW5ndGgsIGluZGV4ICsgMSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29tcG9uZW50cy5wdXNoKC4uLmNoaWxkSXRlbXMpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gY29tcG9uZW50cztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGVsZW1lbnRSZWYoKTogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBhcHBseUNzc0NsYXNzXG4gICAgYnVpbGRDb21wb25lbnRDc3NDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLmNsYXNzLFxuICAgICAgICAgICAgdGhpcy5fZXhwYW5kZWRMZXZlbCA/IGBleHBhbmRlZC1sZXZlbC0ke3RoaXMuX2V4cGFuZGVkTGV2ZWx9YCA6ICcnLFxuICAgICAgICAgICAgdGhpcy5ub0JvcmRlciA/ICdmZC10cmVlLS1uby1ib3JkZXInIDogJycsXG4gICAgICAgICAgICB0aGlzLl9pdGVtcy5sZW5ndGggPT09IDAgJiYgdGhpcy5faW5pdGlhbERhdGFMb2FkZWQgPyAnZmQtdHJlZS0tbm8tZGF0YScgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuaW5kZXBlbmRlbnRTZWN0aW9ucyA/ICdmZC10cmVlLS1pbmRlcGVuZGVudC1tdWx0aS1zZWxlY3Rpb24nIDogJycsXG4gICAgICAgICAgICAnZmQtdHJlZSdcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogS2V5Ym9hcmQgbmF2aWdhdGlvblxuICAgICAqIEBwYXJhbSBldmVudCBLZXlib2FyZCBldmVudC5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBwcml2YXRlIF9vbktleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0RPV05fQVJST1csIFVQX0FSUk9XXSkpIHtcbiAgICAgICAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzS2V5TWFuYWdlcj8ub25LZXlkb3duKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uSXRlbUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHRyZWVJdGVtOiBOdWxsYWJsZTxCYXNlVHJlZUl0ZW0+KTogdm9pZCB7XG4gICAgICAgIGlmICghdHJlZUl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzUnRsID0gISF0aGlzLl9ydGw/LnJ0bC52YWx1ZTtcbiAgICAgICAgY29uc3QgZXhwYW5kS2V5ID0gaXNSdGwgPyBMRUZUX0FSUk9XIDogUklHSFRfQVJST1c7XG4gICAgICAgIGNvbnN0IGNvbGxhcHNlS2V5ID0gaXNSdGwgPyBSSUdIVF9BUlJPVyA6IExFRlRfQVJST1c7XG5cbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBleHBhbmRLZXkpICYmICh0cmVlSXRlbS5oYXNEc0NoaWxkcmVuIHx8IHRyZWVJdGVtLmhhc1Byb2plY3RlZENoaWxkcmVuKSkge1xuICAgICAgICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICB0aGlzLl9leHBhbmRUcmVlU2VjdGlvbih0cmVlSXRlbSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIGNvbGxhcHNlS2V5KSkge1xuICAgICAgICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICB0aGlzLl9jb2xsYXBzZVRyZWVTZWN0aW9uKHRyZWVJdGVtKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RyYWNrRm4oaW5kZXg6IG51bWJlciwgaXRlbTogVHJlZUl0ZW08VHJlZUl0ZW1HZW5lcmljPFQ+Pik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBpdGVtLmlkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZXhwYW5kVHJlZVNlY3Rpb24odHJlZUl0ZW06IEJhc2VUcmVlSXRlbSk6IHZvaWQge1xuICAgICAgICBpZiAodHJlZUl0ZW0uZXhwYW5kZWQpIHtcbiAgICAgICAgICAgIC8vIFNoaWZ0IGZvY3VzIG9uIHRoZSBmaXJzdCBjaGlsZCBpdGVtXG4gICAgICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLl9zb3J0ZWRUcmVlSXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSB0cmVlSXRlbS5pZCk7XG4gICAgICAgICAgICBjb25zdCBuZXh0SXRlbSA9IHRoaXMuX3NvcnRlZFRyZWVJdGVtc1tpdGVtSW5kZXggKyAxXTtcbiAgICAgICAgICAgIGlmIChuZXh0SXRlbT8ucGFyZW50SWQgPT09IHRyZWVJdGVtLmlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZm9jdXNLZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oaXRlbUluZGV4ICsgMSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyZWVJdGVtLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbGxhcHNlVHJlZVNlY3Rpb24odHJlZUl0ZW06IEJhc2VUcmVlSXRlbSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRyZWVJdGVtLmV4cGFuZGVkICYmIHRyZWVJdGVtLnBhcmVudElkKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRJdGVtSW5kZXggPSB0aGlzLl9zb3J0ZWRUcmVlSXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSB0cmVlSXRlbS5wYXJlbnRJZCk7XG5cbiAgICAgICAgICAgIGlmIChwYXJlbnRJdGVtSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZvY3VzS2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKHBhcmVudEl0ZW1JbmRleCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRyZWVJdGVtLmV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9vcGVuRGF0YVN0cmVhbSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLl9kYXRhU291cmNlRGlyZWN0aXZlLmRhdGFTb3VyY2VQcm92aWRlcj8uZGF0YVJlcXVlc3RlZC5zdWJzY3JpYmUodGhpcy5kYXRhUmVxdWVzdGVkKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLl9kYXRhU291cmNlRGlyZWN0aXZlLmRhdGFTb3VyY2VQcm92aWRlcj8uZGF0YVJlY2VpdmVkLnN1YnNjcmliZSh0aGlzLmRhdGFSZWNlaXZlZClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLl9kYXRhU291cmNlRGlyZWN0aXZlLmRhdGFTb3VyY2VQcm92aWRlcj8uZGF0YVJlY2VpdmVkXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcigocmVjZWl2ZWQpID0+IHJlY2VpdmVkKSxcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuX2RhdGFTb3VyY2VEaXJlY3RpdmUuZGF0YUNoYW5nZWQkKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2luaXRpYWxEYXRhTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faXRlbXMgPSB0aGlzLl90cmVlU2VydmljZS5ub3JtYWxpemVUcmVlSXRlbXMoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2VEaXJlY3RpdmUuZGF0YVNvdXJjZVByb3ZpZGVyPy5tYXRjaCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBTZWxlY3QgbGlzdCBpbnRlcmZhY2UgbWV0aG9kIGltcGxlbWVudGF0aW9uLlxuICAgICAqIFNldHMgdmFsdWUgZm9yIGNvbnRyb2wgdmFsdWUgYWNjZXNzb3IgYW5kIGVtaXRzIGl0LlxuICAgICAqIEBwYXJhbSB2YWx1ZSB2YWx1ZSBvZiB0aGUgc2VsZWN0aW9uLlxuICAgICAqL1xuICAgIG9uQ2hhbmdlKHZhbHVlOiBTZWxlY3RhYmxlTGlzdFZhbHVlVHlwZTxhbnk+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N2YURpcmVjdGl2ZS5zZXRWYWx1ZSh2YWx1ZSwgdHJ1ZSk7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNkYXRhU291cmNlUmVuZGVyZXI+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiFfaW5pdGlhbERhdGFMb2FkZWQgPyBsb2FkaW5nUmVuZGVyZXIgOiBkYXRhTG9hZGVkVHBsXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiAxIH1cIlxuICAgID48L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNsb2FkaW5nUmVuZGVyZXIgbGV0LWxldmVsPlxuICAgICAgICA8ZGl2ICpmZGtSZXBlYXQ9XCI1XCIgcm9sZT1cInRyZWVpdGVtXCIgW2F0dHIuYXJpYS1sZXZlbF09XCJsZXZlbFwiIGNsYXNzPVwiZmQtdHJlZV9faXRlbVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLXRyZWVfX2l0ZW0tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLXRyZWVfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC10cmVlX190ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtc2tlbGV0b24gdHlwZT1cInRleHRcIiB3aWR0aD1cIjEwMHB4XCIgdGV4dExpbmVzPVwiMVwiPjwvZmQtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNkYXRhTG9hZGVkVHBsPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2l0ZW1zLmxlbmd0aCA+IDAgJiYgdHJlZUl0ZW1EZWY7IGVsc2Ugbm9EYXRhVHBsXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIF9pdGVtczsgdHJhY2tCeTogX3RyYWNrRm5cIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicmVuZGVyZXJcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjcmVuZGVyZXIgbGV0LWl0ZW0+XG4gICAgICAgIDxuZy1jb250YWluZXIgZmRUcmVlSXRlbSBmZGtTZWxlY3RhYmxlSXRlbSAjdHJlZUl0ZW1EaXJlY3RpdmU9XCJmZFRyZWVJdGVtXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtLnJlbmRlcmVyXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRJbmplY3Rvcl09XCJ0cmVlSXRlbURpcmVjdGl2ZS5pbmplY3RvclwiXG4gICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgdHJlZUl0ZW1EaXJlY3RpdmUudHJlZUl0ZW0/Lmhhc0RzQ2hpbGRyZW4gJiZcbiAgICAgICAgICAgICAgICAhIXRyZWVJdGVtRGlyZWN0aXZlLnRyZWVJdGVtPy5leHBhbmRlZCAmJlxuICAgICAgICAgICAgICAgICF0cmVlSXRlbURpcmVjdGl2ZS50cmVlSXRlbT8uY2hpbGRyZW5Mb2FkZWRcbiAgICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxvYWRpbmdSZW5kZXJlclwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtLmxldmVsICsgMSB9XCJcbiAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRyZWVJdGVtRGlyZWN0aXZlLnRyZWVJdGVtPy5jaGlsZHJlbiBhcyBjaGlsZEl0ZW1zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtdHJlZVwiICpuZ0lmPVwiY2hpbGRJdGVtcyAmJiBjaGlsZEl0ZW1zLmxlbmd0aCA+IDAgJiYgISF0cmVlSXRlbURpcmVjdGl2ZT8udHJlZUl0ZW0/LmV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgY2hpbGRJdGVtczsgdHJhY2tCeTogX3RyYWNrRm5cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJyZW5kZXJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNoaWxkIH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNub0RhdGFUcGw+XG4gICAgICAgIDxkaXYgcm9sZT1cInRyZWVpdGVtXCIgYXJpYS1sZXZlbD1cIjFcIiBjbGFzcz1cImZkLXRyZWVfX2l0ZW1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC10cmVlX19pdGVtLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC10cmVlX19jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtdHJlZV9fdGV4dFwiPnt7ICdjb3JlVHJlZS5ub0RhdGEnIHwgZmRUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3Byb2plY3RlZENvbnRlbnRSZW5kZXJlcj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJmZC10cmVlLWl0ZW1cIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidHJlZUl0ZW1EZWYgPyBkYXRhU291cmNlUmVuZGVyZXIgOiBwcm9qZWN0ZWRDb250ZW50UmVuZGVyZXJcIj48L25nLXRlbXBsYXRlPlxuIl19
438
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90cmVlL3RyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdHJlZS90cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RGLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBQ04sU0FBUyxFQUVULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFDSCxhQUFhLEVBRWIsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFFUCxVQUFVLEVBR1YsZ0JBQWdCLEVBQ25CLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTlHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFB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QUFvQjtnQkE4QmxDLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxpQkFBaUI7Z0JBS3RCLG1CQUFtQjtzQkFEM0IsZUFBZTt1QkFBQyxZQUFZLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQTJQcEQsc0JBQXNCLE1BaUJkLFFBQVE7c0JBRGYsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c0tleU1hbmFnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRE9XTl9BUlJPVywgTEVGVF9BUlJPVywgUklHSFRfQVJST1csIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhU291cmNlRGlyZWN0aXZlLCBGRF9EQVRBX1NPVVJDRV9UUkFOU0ZPUk1FUiB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2RhdGEtc291cmNlJztcbmltcG9ydCB7IEN2YURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgYXBwbHlDc3NDbGFzcyxcbiAgICBDc3NDbGFzc0J1aWxkZXIsXG4gICAgRGVzdHJveWVkU2VydmljZSxcbiAgICBLZXlVdGlsLFxuICAgIE51bGxhYmxlLFxuICAgIFJ0bFNlcnZpY2UsXG4gICAgU2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGUsXG4gICAgU2VsZWN0Q29tcG9uZW50Um9vdFRva2VuLFxuICAgIFNlbGVjdGlvblNlcnZpY2Vcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlciwgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgZnJvbUV2ZW50LCBzdGFydFdpdGgsIFN1YnNjcmlwdGlvbiwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZkVHJlZUFjY2VwdGFibGVEYXRhU291cmNlLCBGZFRyZWVEYXRhU291cmNlLCBGZFRyZWVJdGVtVHlwZSB9IGZyb20gJy4vZGF0YS1zb3VyY2UvdHJlZS1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBUcmVlRGF0YVNvdXJjZVBhcnNlciB9IGZyb20gJy4vZGF0YS1zb3VyY2UvdHJlZS1kYXRhLXNvdXJjZS1wYXJzZXInO1xuaW1wb3J0IHsgVHJlZUl0ZW1EZWZEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdHJlZS1pdGVtLWRlZi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVHJlZUl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdHJlZS1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCYXNlVHJlZUl0ZW0gfSBmcm9tICcuL21vZGVscy9iYXNlLXRyZWUtaXRlbS5jbGFzcyc7XG5pbXBvcnQgeyBUcmVlU2VydmljZSB9IGZyb20gJy4vdHJlZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNlbGVjdGlvblBsYWNlbWVudCwgU2VsZWN0aW9uVHlwZSB9IGZyb20gJy4vbW9kZWxzL3NlbGVjdGlvbi10eXBlJztcbmltcG9ydCB7IFRyZWVJdGVtLCBUcmVlSXRlbUdlbmVyaWMgfSBmcm9tICcuL21vZGVscy90cmVlLWl0ZW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXRyZWUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90cmVlLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlVXJsczogWycuL3RyZWUuY29tcG9uZW50LnNjc3MnXSxcbiAgICBob3N0RGlyZWN0aXZlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBkaXJlY3RpdmU6IERhdGFTb3VyY2VEaXJlY3RpdmUsXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICAgICAgICAgICAgaW5wdXRzOiBbJ2RhdGFTb3VyY2UnXSxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICAgICAgICAgICAgb3V0cHV0czogWydkYXRhQ2hhbmdlZCddXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRpcmVjdGl2ZTogQ3ZhRGlyZWN0aXZlLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgICAgICAgICAgIGlucHV0czogWyduYW1lJywgJ2lkJywgJ3N0YXRlJywgJ3N0YXRlTWVzc2FnZScsICdkaXNhYmxlZCcsICdyZWFkb25seSddXG4gICAgICAgIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgcm9sZTogJ3RyZWUnXG4gICAgfSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycygpLFxuICAgICAgICBUcmVlU2VydmljZSxcbiAgICAgICAgU2VsZWN0aW9uU2VydmljZSxcbiAgICAgICAgRGVzdHJveWVkU2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRfREFUQV9TT1VSQ0VfVFJBTlNGT1JNRVIsXG4gICAgICAgICAgICB1c2VDbGFzczogVHJlZURhdGFTb3VyY2VQYXJzZXJcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVHJlZUNvbXBvbmVudDxQIGV4dGVuZHMgRmRUcmVlQWNjZXB0YWJsZURhdGFTb3VyY2UsIFQgZXh0ZW5kcyBUcmVlSXRlbSA9IEZkVHJlZUl0ZW1UeXBlPFA+PlxuICAgIGltcGxlbWVudHMgQ3NzQ2xhc3NCdWlsZGVyLCBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgU2VsZWN0Q29tcG9uZW50Um9vdFRva2VuLCBPbkRlc3Ryb3lcbntcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xhc3M6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIHRyZWUgc2hvdWxkIGJlIGJvcmRlcmxlc3MuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBub0JvcmRlciA9IGZhbHNlO1xuXG4gICAgLyoqIFR5cGUgb2YgdHJlZSBpdGVtcyBzZWxlY3Rpb24uICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3Rpb246IFNlbGVjdGlvblR5cGUgPSAnbm9uZSc7XG5cbiAgICAvKiogUGxhY2VtZW50IG9mIHRoZSBzZWxlY3Rpb24gY29udHJvbC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGlvblBsYWNlbWVudDogU2VsZWN0aW9uUGxhY2VtZW50ID0gJ25vbmUnO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgc2VjdGlvbnMgc2hvdWxkIGJlIGRlcGVuZGVudCBmb3Igc2VsZWN0aW9uIG1vZGUuXG4gICAgICogSWYgdHJ1ZSwgc2VsZWN0aW9uIGNvbnRyb2wgd2lsbCBzaGlmdCwgYWNjb3JkaW5nIHRvIHRoZSBsZXZlbC5cbiAgICAgKiBJZiBmYWxzZSwgc2VsZWN0aW9uIGNvbnRyb2wgd2lsbCBzdGF5IG9uIHRoZSBzYW1lIHBsYWNlIGlnbm9yaW5nIHRoZSBpdGVtIGxldmVsLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5kZXBlbmRlbnRTZWN0aW9ucyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgVHJlZSBjb21wb25lbnQgaGFzIG5hdmlnYXRpb24gaW5kaWNhdG9ycy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBuYXZpZ2F0aW9uSW5kaWNhdG9yKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fbmF2aWdhdGlvbkluZGljYXRvcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX25hdmlnYXRpb25JbmRpY2F0b3IgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fdHJlZVNlcnZpY2Uuc2V0TmF2aWdhdGlvbkluZGljYXRvcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IG5hdmlnYXRpb25JbmRpY2F0b3IoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uSW5kaWNhdG9yO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbmF2aWdhdGlvbkluZGljYXRvciA9IGZhbHNlO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBkYXRhIGxvYWRpbmcgaXMgc3RhcnRlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBkYXRhUmVxdWVzdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBkYXRhIGxvYWRpbmcgaXMgZmluaXNoZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgZGF0YVJlY2VpdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBzZWxlY3RlZCBzdGF0ZSBjaGFuZ2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pdGVtczogVHJlZUl0ZW08VHJlZUl0ZW1HZW5lcmljPFQ+PltdID0gW107XG5cbiAgICAvKiogVHJlZSBpdGVtIHRlbXBsYXRlIGRlZmluaXRpb24uICovXG4gICAgQENvbnRlbnRDaGlsZChUcmVlSXRlbURlZkRpcmVjdGl2ZSlcbiAgICBzZXQgdHJlZUl0ZW1EZWYodmFsdWU6IE51bGxhYmxlPFRyZWVJdGVtRGVmRGlyZWN0aXZlPikge1xuICAgICAgICB0aGlzLl90cmVlSXRlbURlZiA9IHZhbHVlO1xuICAgICAgICAvLyBTZXQgbmV3IHJlbmRlcmVyXG4gICAgICAgIHRoaXMuX3RyZWVTZXJ2aWNlLnRyZWVJdGVtVGVtcGxhdGVSZWYgPSB2YWx1ZT8udGVtcGxhdGVSZWY7XG4gICAgICAgIHRoaXMuX2l0ZW1zID0gdGhpcy5fdHJlZVNlcnZpY2Uubm9ybWFsaXplVHJlZUl0ZW1zKHRoaXMuX2l0ZW1zKTtcbiAgICB9XG5cbiAgICBnZXQgdHJlZUl0ZW1EZWYoKTogTnVsbGFibGU8VHJlZUl0ZW1EZWZEaXJlY3RpdmU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyZWVJdGVtRGVmO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IG11bHRpcGxlKCk6IEJvb2xlYW5JbnB1dCB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbiA9PT0gJ211bHRpcGxlJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCB0b2dnbGUoKTogQm9vbGVhbklucHV0IHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFVzZWQgZm9yIHNrZWxldG9uIHRvIGFwcGVhciBiZWZvcmUgZmlyc3QgbWVhbmluZ2Z1bCBkYXRhIGJlaW5nIGxvYWRlZC5cbiAgICAgKi9cbiAgICBfaW5pdGlhbERhdGFMb2FkZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZHJlbihUcmVlSXRlbURpcmVjdGl2ZSlcbiAgICBfdHJlZUl0ZW1EaXJlY3RpdmVzOiBRdWVyeUxpc3Q8VHJlZUl0ZW1EaXJlY3RpdmU8VHJlZUl0ZW0sIGFueT4+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKEJhc2VUcmVlSXRlbSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHJlYWRvbmx5IF9wcm9qZWN0ZWRUcmVlSXRlbXM6IFF1ZXJ5TGlzdDxCYXNlVHJlZUl0ZW0+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90cmVlSXRlbURlZjogTnVsbGFibGU8VHJlZUl0ZW1EZWZEaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb250ZW50RGVuc2l0eU9ic2VydmVyID0gaW5qZWN0KENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhU291cmNlRGlyZWN0aXZlID0gaW5qZWN0PERhdGFTb3VyY2VEaXJlY3RpdmU8VCwgRmRUcmVlRGF0YVNvdXJjZTxUPj4+KERhdGFTb3VyY2VEaXJlY3RpdmUpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IGluamVjdChEZXN0cm95ZWRTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RyZWVTZXJ2aWNlID0gaW5qZWN0KFRyZWVTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfc2VsZWN0aW9uU2VydmljZSA9IGluamVjdChTZWxlY3Rpb25TZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcnRsID0gaW5qZWN0KFJ0bFNlcnZpY2UsIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY3ZhRGlyZWN0aXZlID0gaW5qZWN0KEN2YURpcmVjdGl2ZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZXhwYW5kZWRMZXZlbDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9mb2N1c0tleU1hbmFnZXI6IEZvY3VzS2V5TWFuYWdlcjxCYXNlVHJlZUl0ZW0+O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFNvcnRlZCB0cmVlIGl0ZW0gY29tcG9uZW50cy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9zb3J0ZWRUcmVlSXRlbXM6IEJhc2VUcmVlSXRlbVtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQWxsIHRyZWUgaXRlbSBjb21wb25lbnRzLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2FsbEl0ZW1zOiBCYXNlVHJlZUl0ZW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9ldmVudFN1YjogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZWxlY3Rpb25TdWI6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGlvblNlcnZpY2UucmVnaXN0ZXJSb290Q29tcG9uZW50KHRoaXMpO1xuICAgICAgICB0aGlzLl9jb250ZW50RGVuc2l0eU9ic2VydmVyLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29wZW5EYXRhU3RyZWFtKCk7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuXG4gICAgICAgIHRoaXMuX3RyZWVTZXJ2aWNlLmV4cGFuZGVkTGV2ZWwucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKGxldmVsKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9leHBhbmRlZExldmVsID0gbGV2ZWw7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3RyZWVTZXJ2aWNlLmRldGVjdENoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uICE9PSAnbm9uZScpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvblNlcnZpY2Uuc2V0VmFsdWUodGhpcy5fY3ZhRGlyZWN0aXZlLnZhbHVlKTtcblxuICAgICAgICAgICAgdGhpcy5fY3ZhRGlyZWN0aXZlLm5nQ29udHJvbD8udmFsdWVDaGFuZ2VzPy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uU2VydmljZS5zZXRWYWx1ZSh0aGlzLl9jdmFEaXJlY3RpdmUudmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG5cbiAgICAgICAgaWYgKCdzZWxlY3Rpb24nIGluIGNoYW5nZXMgfHwgJ3NlbGVjdGlvblBsYWNlbWVudCcgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5fdHJlZVNlcnZpY2Uuc2V0U2VsZWN0aW9uTW9kZSh0aGlzLnNlbGVjdGlvbiwgdGhpcy5zZWxlY3Rpb25QbGFjZW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5fc2V0U2VsZWN0aW9uTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9saXN0ZW5Ub1RyZWVJdGVtc0NoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuVG9UcmVlSXRlbURpcmVjdGl2ZUNoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fZXZlbnRTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3NlbGVjdGlvblN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFNlbGVjdGlvbkxpc3RlbmVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb25TdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbiAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLnNldFZhbHVlKHRoaXMuX2N2YURpcmVjdGl2ZS52YWx1ZSk7XG5cbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvblN1YiA9IHRoaXMuX2N2YURpcmVjdGl2ZS5uZ0NvbnRyb2w/LnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgICAgID8ucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25TZXJ2aWNlLnNldFZhbHVlKHRoaXMuX2N2YURpcmVjdGl2ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvVHJlZUl0ZW1EaXJlY3RpdmVDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90cmVlSXRlbURpcmVjdGl2ZXMuY2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLnRyZWVJdGVtRGVmICE9PSB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2FsbEl0ZW1zID0gdGhpcy5fdHJlZUl0ZW1EaXJlY3RpdmVzLnRvQXJyYXkoKS5tYXAoKGl0ZW0pID0+IGl0ZW0udHJlZUl0ZW0hKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmbGF0dGVuZWRJdGVtcyA9IHRoaXMuX3NvcnRUcmVlSXRlbXModGhpcy5fYWxsSXRlbXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldEZsYXR0ZW5lZEl0ZW1zKGZsYXR0ZW5lZEl0ZW1zKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9UcmVlSXRlbXNDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wcm9qZWN0ZWRUcmVlSXRlbXMuY2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy50cmVlSXRlbURlZiksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWxsSXRlbXMgPSB0aGlzLl9wcm9qZWN0ZWRUcmVlSXRlbXMudG9BcnJheSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5lZEl0ZW1zID0gdGhpcy5fc29ydFRyZWVJdGVtcyh0aGlzLl9hbGxJdGVtcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0RmxhdHRlbmVkSXRlbXMoZmxhdHRlbmVkSXRlbXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRGbGF0dGVuZWRJdGVtcyhpdGVtczogQmFzZVRyZWVJdGVtW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc29ydGVkVHJlZUl0ZW1zID0gaXRlbXM7XG5cbiAgICAgICAgY29uc3QgYWN0aXZlSXRlbSA9IHRoaXMuX2ZvY3VzS2V5TWFuYWdlcj8uYWN0aXZlSXRlbTtcbiAgICAgICAgY29uc3QgbmV3QWN0aXZlSXRlbUluZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtID09PSBhY3RpdmVJdGVtKTtcbiAgICAgICAgdGhpcy5fZm9jdXNLZXlNYW5hZ2VyPy5kZXN0cm95KCk7XG5cbiAgICAgICAgdGhpcy5fZm9jdXNLZXlNYW5hZ2VyID0gbmV3IEZvY3VzS2V5TWFuYWdlcihpdGVtcylcbiAgICAgICAgICAgIC53aXRoVmVydGljYWxPcmllbnRhdGlvbih0cnVlKVxuICAgICAgICAgICAgLnNraXBQcmVkaWNhdGUoKGl0ZW0pID0+ICFpdGVtLmtleWJvYXJkQWNjZXNzaWJsZSk7XG5cbiAgICAgICAgaWYgKG5ld0FjdGl2ZUl0ZW1JbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c0tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbShuZXdBY3RpdmVJdGVtSW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uU2VydmljZS5pbml0aWFsaXplKHRoaXMuX3NvcnRlZFRyZWVJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uc2VsZWN0YWJsZUxpc3RJdGVtKSk7XG5cbiAgICAgICAgdGhpcy5fc2V0dXBFdmVudExpc3RlbmVycygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uSXRlbUZvY3VzZWQodHJlZUl0ZW06IEJhc2VUcmVlSXRlbSk6IHZvaWQge1xuICAgICAgICBsZXQgZm9jdXNlZEluZGV4ID0gLTE7XG4gICAgICAgIHRoaXMuX3NvcnRlZFRyZWVJdGVtcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNGb2N1c2VkID0gdHJlZUl0ZW0gPT09IGl0ZW07XG4gICAgICAgICAgICBpdGVtLnNldENvbnRhaW5lclRhYkluZGV4KGlzRm9jdXNlZCA/IDAgOiAtMSk7XG4gICAgICAgICAgICBpZiAoaXNGb2N1c2VkKSB7XG4gICAgICAgICAgICAgICAgZm9jdXNlZEluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChmb2N1c2VkSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9mb2N1c0tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbShmb2N1c2VkSW5kZXgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0dXBFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZXZlbnRTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2V2ZW50U3ViID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgICAgIHRoaXMuX3NvcnRlZFRyZWVJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9ldmVudFN1Yi5hZGQoXG4gICAgICAgICAgICAgICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGl0ZW0uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAna2V5ZG93bicpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25JdGVtS2V5RG93bihldmVudCwgaXRlbSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9ldmVudFN1Yi5hZGQoXG4gICAgICAgICAgICAgICAgZnJvbUV2ZW50KGl0ZW0uaXRlbUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCwgJ2ZvY3VzJykuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25JdGVtRm9jdXNlZChpdGVtKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zb3J0VHJlZUl0ZW1zKGl0ZW1zOiBCYXNlVHJlZUl0ZW1bXSk6IEJhc2VUcmVlSXRlbVtdIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50czogQmFzZVRyZWVJdGVtW10gPSBbXTtcbiAgICAgICAgY29uc3Qgcm9vdEl0ZW1zID0gaXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmxldmVsID09PSAxKTtcblxuICAgICAgICByb290SXRlbXMuZm9yRWFjaCgodHJlZUl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB0cmVlSXRlbS5zZXRQb3NpdGlvbihyb290SXRlbXMubGVuZ3RoLCBpbmRleCArIDEpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWl0ZW0gfHwgY29tcG9uZW50cy5pbmNsdWRlcyhpdGVtKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29tcG9uZW50cy5wdXNoKGl0ZW0pO1xuXG4gICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNoaWxkSXRlbXMgPSB0aGlzLl9zb3J0VHJlZUl0ZW1zKHRoaXMuX2FsbEl0ZW1zLmZpbHRlcigoaSkgPT4gaS5wYXJlbnRJZCA9PT0gaXRlbS5pZCkpO1xuXG4gICAgICAgICAgICBjaGlsZEl0ZW1zLmZvckVhY2goKHRyZWVJdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyZWVJdGVtLnNldFBvc2l0aW9uKGNoaWxkSXRlbXMubGVuZ3RoLCBpbmRleCArIDEpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbXBvbmVudHMucHVzaCguLi5jaGlsZEl0ZW1zKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudHM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAYXBwbHlDc3NDbGFzc1xuICAgIGJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5jbGFzcyxcbiAgICAgICAgICAgIHRoaXMuX2V4cGFuZGVkTGV2ZWwgPyBgZXhwYW5kZWQtbGV2ZWwtJHt0aGlzLl9leHBhbmRlZExldmVsfWAgOiAnJyxcbiAgICAgICAgICAgIHRoaXMubm9Cb3JkZXIgPyAnZmQtdHJlZS0tbm8tYm9yZGVyJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5faXRlbXMubGVuZ3RoID09PSAwICYmIHRoaXMuX2luaXRpYWxEYXRhTG9hZGVkID8gJ2ZkLXRyZWUtLW5vLWRhdGEnIDogJycsXG4gICAgICAgICAgICB0aGlzLmluZGVwZW5kZW50U2VjdGlvbnMgPyAnZmQtdHJlZS0taW5kZXBlbmRlbnQtbXVsdGktc2VsZWN0aW9uJyA6ICcnLFxuICAgICAgICAgICAgJ2ZkLXRyZWUnXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEtleWJvYXJkIG5hdmlnYXRpb25cbiAgICAgKiBAcGFyYW0gZXZlbnQgS2V5Ym9hcmQgZXZlbnQuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgcHJpdmF0ZSBfb25LZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtET1dOX0FSUk9XLCBVUF9BUlJPV10pKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c0tleU1hbmFnZXI/Lm9uS2V5ZG93bihldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkl0ZW1LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB0cmVlSXRlbTogTnVsbGFibGU8QmFzZVRyZWVJdGVtPik6IHZvaWQge1xuICAgICAgICBpZiAoIXRyZWVJdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc1J0bCA9ICEhdGhpcy5fcnRsPy5ydGwudmFsdWU7XG4gICAgICAgIGNvbnN0IGV4cGFuZEtleSA9IGlzUnRsID8gTEVGVF9BUlJPVyA6IFJJR0hUX0FSUk9XO1xuICAgICAgICBjb25zdCBjb2xsYXBzZUtleSA9IGlzUnRsID8gUklHSFRfQVJST1cgOiBMRUZUX0FSUk9XO1xuXG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgZXhwYW5kS2V5KSAmJiAodHJlZUl0ZW0uaGFzRHNDaGlsZHJlbiB8fCB0cmVlSXRlbS5oYXNQcm9qZWN0ZWRDaGlsZHJlbikpIHtcbiAgICAgICAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgdGhpcy5fZXhwYW5kVHJlZVNlY3Rpb24odHJlZUl0ZW0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBjb2xsYXBzZUtleSkpIHtcbiAgICAgICAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgdGhpcy5fY29sbGFwc2VUcmVlU2VjdGlvbih0cmVlSXRlbSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90cmFja0ZuKGluZGV4OiBudW1iZXIsIGl0ZW06IFRyZWVJdGVtPFRyZWVJdGVtR2VuZXJpYzxUPj4pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaXRlbS5pZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2V4cGFuZFRyZWVTZWN0aW9uKHRyZWVJdGVtOiBCYXNlVHJlZUl0ZW0pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRyZWVJdGVtLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAvLyBTaGlmdCBmb2N1cyBvbiB0aGUgZmlyc3QgY2hpbGQgaXRlbVxuICAgICAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5fc29ydGVkVHJlZUl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gdHJlZUl0ZW0uaWQpO1xuICAgICAgICAgICAgY29uc3QgbmV4dEl0ZW0gPSB0aGlzLl9zb3J0ZWRUcmVlSXRlbXNbaXRlbUluZGV4ICsgMV07XG4gICAgICAgICAgICBpZiAobmV4dEl0ZW0/LnBhcmVudElkID09PSB0cmVlSXRlbS5pZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZvY3VzS2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKGl0ZW1JbmRleCArIDEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0cmVlSXRlbS5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb2xsYXBzZVRyZWVTZWN0aW9uKHRyZWVJdGVtOiBCYXNlVHJlZUl0ZW0pOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0cmVlSXRlbS5leHBhbmRlZCAmJiB0cmVlSXRlbS5wYXJlbnRJZCkge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50SXRlbUluZGV4ID0gdGhpcy5fc29ydGVkVHJlZUl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gdHJlZUl0ZW0ucGFyZW50SWQpO1xuXG4gICAgICAgICAgICBpZiAocGFyZW50SXRlbUluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9mb2N1c0tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbShwYXJlbnRJdGVtSW5kZXgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0cmVlSXRlbS5leHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb3BlbkRhdGFTdHJlYW0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZURpcmVjdGl2ZS5kYXRhU291cmNlUHJvdmlkZXI/LmRhdGFSZXF1ZXN0ZWQuc3Vic2NyaWJlKHRoaXMuZGF0YVJlcXVlc3RlZClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZURpcmVjdGl2ZS5kYXRhU291cmNlUHJvdmlkZXI/LmRhdGFSZWNlaXZlZC5zdWJzY3JpYmUodGhpcy5kYXRhUmVjZWl2ZWQpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZURpcmVjdGl2ZS5kYXRhU291cmNlUHJvdmlkZXI/LmRhdGFSZWNlaXZlZFxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKHJlY2VpdmVkKSA9PiByZWNlaXZlZCksXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLl9kYXRhU291cmNlRGlyZWN0aXZlLmRhdGFDaGFuZ2VkJClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbml0aWFsRGF0YUxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2l0ZW1zID0gdGhpcy5fdHJlZVNlcnZpY2Uubm9ybWFsaXplVHJlZUl0ZW1zKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9kYXRhU291cmNlRGlyZWN0aXZlLmRhdGFTb3VyY2VQcm92aWRlcj8ubWF0Y2goKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogU2VsZWN0IGxpc3QgaW50ZXJmYWNlIG1ldGhvZCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgKiBTZXRzIHZhbHVlIGZvciBjb250cm9sIHZhbHVlIGFjY2Vzc29yIGFuZCBlbWl0cyBpdC5cbiAgICAgKiBAcGFyYW0gdmFsdWUgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbi5cbiAgICAgKi9cbiAgICBvbkNoYW5nZSh2YWx1ZTogU2VsZWN0YWJsZUxpc3RWYWx1ZVR5cGU8YW55Pik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdmFEaXJlY3RpdmUuc2V0VmFsdWUodmFsdWUsIHRydWUpO1xuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjZGF0YVNvdXJjZVJlbmRlcmVyPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCIhX2luaXRpYWxEYXRhTG9hZGVkID8gbG9hZGluZ1JlbmRlcmVyIDogZGF0YUxvYWRlZFRwbFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogMSB9XCJcbiAgICA+PC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGluZ1JlbmRlcmVyIGxldC1sZXZlbD5cbiAgICAgICAgPGRpdiAqZmRrUmVwZWF0PVwiNVwiIHJvbGU9XCJ0cmVlaXRlbVwiIFthdHRyLmFyaWEtbGV2ZWxdPVwibGV2ZWxcIiBjbGFzcz1cImZkLXRyZWVfX2l0ZW1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC10cmVlX19pdGVtLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC10cmVlX19jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtdHJlZV9fdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXNrZWxldG9uIHR5cGU9XCJ0ZXh0XCIgd2lkdGg9XCIxMDBweFwiIHRleHRMaW5lcz1cIjFcIj48L2ZkLXNrZWxldG9uPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjZGF0YUxvYWRlZFRwbD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9pdGVtcy5sZW5ndGggPiAwICYmIHRyZWVJdGVtRGVmOyBlbHNlIG5vRGF0YVRwbFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBfaXRlbXM7IHRyYWNrQnk6IF90cmFja0ZuXCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJlbmRlcmVyXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI3JlbmRlcmVyIGxldC1pdGVtPlxuICAgICAgICA8bmctY29udGFpbmVyIGZkVHJlZUl0ZW0gZmRrU2VsZWN0YWJsZUl0ZW0gI3RyZWVJdGVtRGlyZWN0aXZlPVwiZmRUcmVlSXRlbVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbS5yZW5kZXJlclwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0SW5qZWN0b3JdPVwidHJlZUl0ZW1EaXJlY3RpdmUuaW5qZWN0b3JcIlxuICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIHRyZWVJdGVtRGlyZWN0aXZlLnRyZWVJdGVtPy5oYXNEc0NoaWxkcmVuICYmXG4gICAgICAgICAgICAgICAgISF0cmVlSXRlbURpcmVjdGl2ZS50cmVlSXRlbT8uZXhwYW5kZWQgJiZcbiAgICAgICAgICAgICAgICAhdHJlZUl0ZW1EaXJlY3RpdmUudHJlZUl0ZW0/LmNoaWxkcmVuTG9hZGVkXG4gICAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJsb2FkaW5nUmVuZGVyZXJcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbS5sZXZlbCArIDEgfVwiXG4gICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0cmVlSXRlbURpcmVjdGl2ZS50cmVlSXRlbT8uY2hpbGRyZW4gYXMgY2hpbGRJdGVtc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLXRyZWVcIiAqbmdJZj1cImNoaWxkSXRlbXMgJiYgY2hpbGRJdGVtcy5sZW5ndGggPiAwICYmICEhdHJlZUl0ZW1EaXJlY3RpdmU/LnRyZWVJdGVtPy5leHBhbmRlZFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNoaWxkSXRlbXM7IHRyYWNrQnk6IF90cmFja0ZuXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicmVuZGVyZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjaGlsZCB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjbm9EYXRhVHBsPlxuICAgICAgICA8ZGl2IHJvbGU9XCJ0cmVlaXRlbVwiIGFyaWEtbGV2ZWw9XCIxXCIgY2xhc3M9XCJmZC10cmVlX19pdGVtXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtdHJlZV9faXRlbS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtdHJlZV9fY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLXRyZWVfX3RleHRcIj57eyAnY29yZVRyZWUubm9EYXRhJyB8IGZkVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNwcm9qZWN0ZWRDb250ZW50UmVuZGVyZXI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZmQtdHJlZS1pdGVtXCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyZWVJdGVtRGVmID8gZGF0YVNvdXJjZVJlbmRlcmVyIDogcHJvamVjdGVkQ29udGVudFJlbmRlcmVyXCI+PC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -83,7 +83,7 @@ export class UploadCollectionItemDirective {
83
83
  const styles = [];
84
84
  styles.push(this._titleDirective.elRef.nativeElement.style);
85
85
  this._titleContainerDirective?._objectMarkerComponents?.forEach((objectMarker) => {
86
- styles.push(objectMarker.elementRef().nativeElement.style);
86
+ styles.push(objectMarker.elementRef.nativeElement.style);
87
87
  });
88
88
  event
89
89
  ? styles.forEach((style) => (style.display = 'none'))
@@ -181,4 +181,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
181
181
  type: HostListener,
182
182
  args: ['window:resize', []]
183
183
  }] } });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWNvbGxlY3Rpb24taXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi91cGxvYWQtY29sbGVjdGlvbi91cGxvYWQtY29sbGVjdGlvbi1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsWUFBWSxFQUNaLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDJFQUEyRSxDQUFDO0FBQ2pJLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUNILHVDQUF1QyxFQUN2Qyw4QkFBOEIsRUFDakMsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBTzdELE1BQU0sT0FBTyw2QkFBNkI7SUFnRHRDLGNBQWM7SUFDZCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDekQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFDeEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVM7WUFDOUMsZUFBZSxHQUFHLGVBQWUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyw0QkFB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QUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUNsRDtJQUNMLENBQUM7OzBIQTVNUSw2QkFBNkI7OEdBQTdCLDZCQUE2QixvV0FVeEIsaUNBQWlDLGtGQUlqQyw4QkFBOEIsd0ZBSTlCLG9DQUFvQywyRkFJcEMsdUNBQXVDOzJGQXRCNUMsNkJBQTZCO2tCQUx6QyxTQUFTO21CQUFDO29CQUNQLDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLDRCQUE0QixFQUFFO2lCQUNoRDtpR0FJRyxRQUFRO3NCQURQLEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQUtOLGtCQUFrQjtzQkFEakIsWUFBWTt1QkFBQyxpQ0FBaUM7Z0JBSy9DLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyw4QkFBOEI7Z0JBSzVDLHFCQUFxQjtzQkFEcEIsWUFBWTt1QkFBQyxvQ0FBb0M7Z0JBS2xELHdCQUF3QjtzQkFEdkIsWUFBWTt1QkFBQyx1Q0FBdUM7Z0JBSzVDLGVBQWU7c0JBRHZCLE1BQU07Z0JBS0UsYUFBYTtzQkFEckIsTUFBTTtnQkE4Q1AsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVwbG9hZENvbGxlY3Rpb25Gb3JtSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vdXBsb2FkLWNvbGxlY3Rpb24tZm9ybS1pdGVtL3VwbG9hZC1jb2xsZWN0aW9uLWZvcm0taXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXBsb2FkQ29sbGVjdGlvbkJ1dHRvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi91cGxvYWQtY29sbGVjdGlvbi1idXR0b24tZ3JvdXAvdXBsb2FkLWNvbGxlY3Rpb24tYnV0dG9uLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgVXBsb2FkQ29sbGVjdGlvblRpdGxlQ29udGFpbmVyRGlyZWN0aXZlLFxuICAgIFVwbG9hZENvbGxlY3Rpb25UaXRsZURpcmVjdGl2ZVxufSBmcm9tICcuL3VwbG9hZC1jb2xsZWN0aW9uLXNpbXBsZS5kaXJlY3RpdmVzJztcbmltcG9ydCB7IExJTktfQ0xBU1NfTkFNRSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saW5rJztcblxuQERpcmVjdGl2ZSh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1tmZC11cGxvYWQtY29sbGVjdGlvbi1pdGVtXScsXG4gICAgaG9zdDogeyBjbGFzczogJ2ZkLXVwbG9hZC1jb2xsZWN0aW9uX19pdGVtJyB9XG59KVxuZXhwb3J0IGNsYXNzIFVwbG9hZENvbGxlY3Rpb25JdGVtRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgICAvKiogVGhlIG5hbWUgb2YgdGhlIGZpbGUsIG5vdCBpbmNsdWRpbmcgdGhlIHR5cGUgZXh0ZW5zaW9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsZU5hbWU6IHN0cmluZztcblxuICAgIC8qKiBUaGUgZmlsZSB0eXBlIGV4dGVuc2lvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIGV4dGVuc2lvbjogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKFVwbG9hZENvbGxlY3Rpb25Gb3JtSXRlbUNvbXBvbmVudClcbiAgICBfZm9ybUl0ZW1Db21wb25lbnQ6IFVwbG9hZENvbGxlY3Rpb25Gb3JtSXRlbUNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChVcGxvYWRDb2xsZWN0aW9uVGl0bGVEaXJlY3RpdmUpXG4gICAgX3RpdGxlRGlyZWN0aXZlOiBVcGxvYWRDb2xsZWN0aW9uVGl0bGVEaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoVXBsb2FkQ29sbGVjdGlvbkJ1dHRvbkdyb3VwQ29tcG9uZW50KVxuICAgIF9idXR0b25Hcm91cENvbXBvbmVudDogVXBsb2FkQ29sbGVjdGlvbkJ1dHRvbkdyb3VwQ29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKFVwbG9hZENvbGxlY3Rpb25UaXRsZUNvbnRhaW5lckRpcmVjdGl2ZSlcbiAgICBfdGl0bGVDb250YWluZXJEaXJlY3RpdmU6IFVwbG9hZENvbGxlY3Rpb25UaXRsZUNvbnRhaW5lckRpcmVjdGl2ZTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHVzZXIgY2hhbmdlcyBhIGZpbGUgbmFtZS4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBmaWxlTmFtZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gcHJlc3NlcyB0aGUgZGVsZXRlIGJ1dHRvbi4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBkZWxldGVDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGZpbGVOYW1lRnVsbDogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0aXRsZVdpZHRoOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiB1c2VkIHRvIGNvbXBhcmUgdG8gdGhlIGN1cnJlbnQgd2lkdGggdG8ga25vdyB3aGV0aGVyIHRvIGNvbGxhcHNlIG9yIGV4cGFuZCB0aXRsZSAqL1xuICAgIHByZXZpb3VzQ29udGFpbmVyV2lkdGg6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29udGFpbmVyV2lkdGg6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbGVOYW1lRnVsbCA9IHRoaXMuZmlsZU5hbWUgKyAnLicgKyB0aGlzLmV4dGVuc2lvbjtcbiAgICAgICAgdGhpcy5fdGl0bGVEaXJlY3RpdmUuZWxSZWYubmF0aXZlRWxlbWVudC50YWJJbmRleCA9ICcwJztcbiAgICAgICAgdGhpcy5fdGl0bGVEaXJlY3RpdmUuZWxSZWYubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPVxuICAgICAgICAgICAgJzxzcGFuIGNsYXNzPVwiJyArIExJTktfQ0xBU1NfTkFNRS5saW5rQ29udGVudCArICdcIj4nICsgdGhpcy5maWxlTmFtZUZ1bGwgKyAnPC9zcGFuPic7XG4gICAgICAgIHRoaXMuX2hhbmRsZURlbGV0ZUNsaWNrZWRTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgdGhpcy5faGFuZGxlT2tDbGlja2VkU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIHRoaXMuX2hhbmRsZUVkaXRDbGlja2VkU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIHRoaXMuX2hhbmRsZUZvcm1JdGVtSW5wdXRDaGFuZ2VkU3Vic2NyaXB0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIFByb2Nlc3MgcmVzaXplIGFmdGVyIGFsbCB0aGUgY2hpbGRyZW4gdmlld3MgaXMgaW5pdGlhbGl6ZWRcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm9uUmVzaXplKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgW10pXG4gICAgb25SZXNpemUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGl0bGVXaWR0aCA9IHRoaXMuZ2V0VGl0bGVXaWR0aCgpO1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldpZHRoID0gdGhpcy5nZXRDb250YWluZXJXaWR0aCgpO1xuXG4gICAgICAgIC8vIGlmIGZpcnN0IGxvYWQgYW5kIG5vIHByZXZpb3VzIGNvbnRhaW5lciB3aWR0aCwgb3IgaWYgY29udGFpbmVyIGJvdW5kYXJ5IGlzIHJlc2l6ZWQgdG8gc21hbGxlciB0aGFuIGJlZm9yZVxuICAgICAgICBpZiAoIXRoaXMucHJldmlvdXNDb250YWluZXJXaWR0aCB8fCB0aGlzLmNvbnRhaW5lcldpZHRoIDwgdGhpcy5wcmV2aW91c0NvbnRhaW5lcldpZHRoKSB7XG4gICAgICAgICAgICAvLyBhbmQgdGhlIHRpdGxlIGV4dGVuZHMgcGFzdCB0aGUgY29udGFpbmVyLCAxLjA1eCBwYWRkaW5nIHRvIHByZXZlbnQgamFnZ3kgcmVzaXppbmcuXG4gICAgICAgICAgICBpZiAodGhpcy50aXRsZVdpZHRoICogMS4wNSA+PSB0aGlzLmNvbnRhaW5lcldpZHRoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemVGaWxlVGl0bGUodGhpcy5fdGl0bGVEaXJlY3RpdmUuZWxSZWYubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJldmlvdXNDb250YWluZXJXaWR0aCAmJiB0aGlzLmNvbnRhaW5lcldpZHRoID4gdGhpcy5wcmV2aW91c0NvbnRhaW5lcldpZHRoKSB7XG4gICAgICAgICAgICAvLyBMb29rcyB0byBleHBhbmQgZmlsZSB0aXRsZSBpZiBjb250YWluZXIgd2lkdGggaXMgcmVzaXplZCB0byBncmVhdGVyIHRoYW4gYmVmb3JlXG4gICAgICAgICAgICAvLyByZXNldCBmaWxlIHRpdGxlIHRvIGluaXRpYWxcbiAgICAgICAgICAgIHRoaXMuX3RpdGxlRGlyZWN0aXZlLmVsUmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5maWxlTmFtZUZ1bGw7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUZpbGVUaXRsZSh0aGlzLmZpbGVOYW1lRnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByZXZpb3VzQ29udGFpbmVyV2lkdGggPSB0aGlzLmNvbnRhaW5lcldpZHRoO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlT2tDbGlja2VkU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgIHRoaXMuX2J1dHRvbkdyb3VwQ29tcG9uZW50Lm9rQ2xpY2tlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9mb3JtSXRlbUNvbXBvbmVudC5maWxlTmFtZSAmJiB0aGlzLl9mb3JtSXRlbUNvbXBvbmVudC5maWxlTmFtZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlTmFtZSA9IHRoaXMuX2Zvcm1JdGVtQ29tcG9uZW50LmZpbGVOYW1lO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90aXRsZURpcmVjdGl2ZS5lbFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlTmFtZUZ1bGwgPSB0aGlzLmZpbGVOYW1lICsgJy4nICsgdGhpcy5leHRlbnNpb247XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpdGxlRGlyZWN0aXZlLmVsUmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5maWxlTmFtZUZ1bGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzaXplRmlsZVRpdGxlKHRoaXMuZmlsZU5hbWVGdWxsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9ybUl0ZW1Db21wb25lbnQuX2VkaXRNb2RlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2J1dHRvbkdyb3VwQ29tcG9uZW50Ll9lZGl0TW9kZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVOYW1lQ2hhbmdlZC5lbWl0KHRoaXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVFZGl0Q2xpY2tlZFN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICB0aGlzLl9idXR0b25Hcm91cENvbXBvbmVudC5lZGl0Q2xpY2tlZC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZm9ybUl0ZW1Db21wb25lbnQuX2VkaXRNb2RlID0gZXZlbnQ7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3RpdGxlQ29udGFpbmVyRGlyZWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpdGxlQ29udGFpbmVyRGlyZWN0aXZlLmFwcGx5Q29udGFpbmVyQ2xhc3MgPSAhZXZlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHN0eWxlczogQ1NTU3R5bGVEZWNsYXJhdGlvbltdID0gW107XG4gICAgICAgICAgICAgICAgc3R5bGVzLnB1c2goKHRoaXMuX3RpdGxlRGlyZWN0aXZlLmVsUmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl90aXRsZUNvbnRhaW5lckRpcmVjdGl2ZT8uX29iamVjdE1hcmtlckNvbXBvbmVudHM/LmZvckVhY2goKG9iamVjdE1hcmtlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdHlsZXMucHVzaChvYmplY3RNYXJrZXIuZWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQuc3R5bGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGV2ZW50XG4gICAgICAgICAgICAgICAgICAgID8gc3R5bGVzLmZvckVhY2goKHN0eWxlKSA9PiAoc3R5bGUuZGlzcGxheSA9ICdub25lJykpXG4gICAgICAgICAgICAgICAgICAgIDogc3R5bGVzLmZvckVhY2goKHN0eWxlKSA9PiAoc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtYmxvY2snKSk7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1JdGVtQ29tcG9uZW50Ll9leHRlbnNpb24gPSB0aGlzLmV4dGVuc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9ybUl0ZW1Db21wb25lbnQuZmlsZU5hbWUgPSB0aGlzLmZpbGVOYW1lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVEZWxldGVDbGlja2VkU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgIHRoaXMuX2J1dHRvbkdyb3VwQ29tcG9uZW50LmRlbGV0ZUNsaWNrZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUNsaWNrZWQuZW1pdCh0aGlzKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVGb3JtSXRlbUlucHV0Q2hhbmdlZFN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICB0aGlzLl9mb3JtSXRlbUNvbXBvbmVudC5maWxlTmFtZUNoYW5nZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2J1dHRvbkdyb3VwQ29tcG9uZW50Ll9va0J1dHRvbi5kaXNhYmxlZCA9IGV2ZW50ID09PSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLl9idXR0b25Hcm91cENvbXBvbmVudC5fb2tCdXR0b24uYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0VGl0bGVXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGl0bGVEaXJlY3RpdmUuZWxSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0Q29udGFpbmVyV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RpdGxlRGlyZWN0aXZlLmVsUmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICpcbiAgICAgKiB0cnVuY2F0ZXMgdGhlIHN0cmluZyBieSBjdXR0aW5nIG91dCBleGNlc3MgbGVuZ3RoIGluIHRoZSBtaWRkbGUgYW5kIHJlcGxhY2luZyB3aXRoICcuLi4nXG4gICAgICovXG4gICAgcHJpdmF0ZSB0cnVuY2F0ZVRpdGxlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgY3V0TGVuZ3RoID0gTWF0aC5mbG9vcihzdHIubGVuZ3RoICogMC44KTtcblxuICAgICAgICBpZiAoc3RyLmxlbmd0aCA+IGN1dExlbmd0aCkge1xuICAgICAgICAgICAgY29uc3Qgc3RyaW5nTGVmdEluZGV4ID0gTWF0aC5mbG9vcihjdXRMZW5ndGggLyAyKTtcbiAgICAgICAgICAgIGNvbnN0IHN0cmluZ1JpZ2h0SW5kZXggPSBzdHIubGVuZ3RoIC0gc3RyaW5nTGVmdEluZGV4ICsgMztcbiAgICAgICAgICAgIHJldHVybiBzdHIuc3Vic3RyaW5nKDAsIHN0cmluZ0xlZnRJbmRleCkgKyAnLi4uJyArIHN0ci5zdWJzdHJpbmcoc3RyaW5nUmlnaHRJbmRleCwgc3RyLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICpcbiAgICAgKiBkZXRlcm1pbmVzIGlmIGZpbGUgdGl0bGUgbmVlZHMgdG8gYmUgdHJ1bmNhdGVkIGdpdmVuIGNvbnRhaW5lciBjb25zdHJhaW50LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVzaXplRmlsZVRpdGxlKHRpdGxlU3RyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgbGV0IGN1clRpdGxlID0gdGl0bGVTdHI7XG4gICAgICAgIHRoaXMuY29udGFpbmVyV2lkdGggPSB0aGlzLmdldENvbnRhaW5lcldpZHRoKCk7XG4gICAgICAgIHRoaXMudGl0bGVXaWR0aCA9IHRoaXMuZ2V0VGl0bGVXaWR0aCgpO1xuXG4gICAgICAgIC8vIHJlcGVhdGVkbHkgdHJ1bmNhdGUgdGhlIHRpdGxlIHVudGlsIGl0IGZpdHMgaW5zaWRlIGNvbnRhaW5lclxuICAgICAgICB3aGlsZSAodGhpcy50aXRsZVdpZHRoICogMS4wNSA+PSB0aGlzLmNvbnRhaW5lcldpZHRoKSB7XG4gICAgICAgICAgICBjb25zdCB0cnVuY2F0ZWRUaXRsZVN0ciA9IHRoaXMudHJ1bmNhdGVUaXRsZShjdXJUaXRsZSk7XG4gICAgICAgICAgICB0aGlzLl90aXRsZURpcmVjdGl2ZS5lbFJlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IHRydW5jYXRlZFRpdGxlU3RyO1xuICAgICAgICAgICAgY3VyVGl0bGUgPSB0cnVuY2F0ZWRUaXRsZVN0cjtcbiAgICAgICAgICAgIHRoaXMudGl0bGVXaWR0aCA9IHRoaXMuZ2V0VGl0bGVXaWR0aCgpO1xuICAgICAgICAgICAgdGhpcy5jb250YWluZXJXaWR0aCA9IHRoaXMuZ2V0Q29udGFpbmVyV2lkdGgoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWNvbGxlY3Rpb24taXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi91cGxvYWQtY29sbGVjdGlvbi91cGxvYWQtY29sbGVjdGlvbi1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsWUFBWSxFQUNaLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDJFQUEyRSxDQUFDO0FBQ2pJLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUNILHVDQUF1QyxFQUN2Qyw4QkFBOEIsRUFDakMsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBTzdELE1BQU0sT0FBTyw2QkFBNkI7SUFnRHRDLGNBQWM7SUFDZCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDekQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFDeEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVM7WUFDOUMsZUFBZSxHQUFHLGVBQWUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyw0QkFB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QUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDbEQ7SUFDTCxDQUFDOzswSEE1TVEsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsb1dBVXhCLGlDQUFpQyxrRkFJakMsOEJBQThCLHdGQUk5QixvQ0FBb0MsMkZBSXBDLHVDQUF1QzsyRkF0QjVDLDZCQUE2QjtrQkFMekMsU0FBUzttQkFBQztvQkFDUCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSw0QkFBNEIsRUFBRTtpQkFDaEQ7aUdBSUcsUUFBUTtzQkFEUCxLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMsaUNBQWlDO2dCQUsvQyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsOEJBQThCO2dCQUs1QyxxQkFBcUI7c0JBRHBCLFlBQVk7dUJBQUMsb0NBQW9DO2dCQUtsRCx3QkFBd0I7c0JBRHZCLFlBQVk7dUJBQUMsdUNBQXVDO2dCQUs1QyxlQUFlO3NCQUR2QixNQUFNO2dCQUtFLGFBQWE7c0JBRHJCLE1BQU07Z0JBOENQLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVcGxvYWRDb2xsZWN0aW9uRm9ybUl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3VwbG9hZC1jb2xsZWN0aW9uLWZvcm0taXRlbS91cGxvYWQtY29sbGVjdGlvbi1mb3JtLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IFVwbG9hZENvbGxlY3Rpb25CdXR0b25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4vdXBsb2FkLWNvbGxlY3Rpb24tYnV0dG9uLWdyb3VwL3VwbG9hZC1jb2xsZWN0aW9uLWJ1dHRvbi1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIFVwbG9hZENvbGxlY3Rpb25UaXRsZUNvbnRhaW5lckRpcmVjdGl2ZSxcbiAgICBVcGxvYWRDb2xsZWN0aW9uVGl0bGVEaXJlY3RpdmVcbn0gZnJvbSAnLi91cGxvYWQtY29sbGVjdGlvbi1zaW1wbGUuZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBMSU5LX0NMQVNTX05BTUUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbGluayc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdbZmQtdXBsb2FkLWNvbGxlY3Rpb24taXRlbV0nLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdmZC11cGxvYWQtY29sbGVjdGlvbl9faXRlbScgfVxufSlcbmV4cG9ydCBjbGFzcyBVcGxvYWRDb2xsZWN0aW9uSXRlbURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqIFRoZSBuYW1lIG9mIHRoZSBmaWxlLCBub3QgaW5jbHVkaW5nIHRoZSB0eXBlIGV4dGVuc2lvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbGVOYW1lOiBzdHJpbmc7XG5cbiAgICAvKiogVGhlIGZpbGUgdHlwZSBleHRlbnNpb24uICovXG4gICAgQElucHV0KClcbiAgICBleHRlbnNpb246IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChVcGxvYWRDb2xsZWN0aW9uRm9ybUl0ZW1Db21wb25lbnQpXG4gICAgX2Zvcm1JdGVtQ29tcG9uZW50OiBVcGxvYWRDb2xsZWN0aW9uRm9ybUl0ZW1Db21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoVXBsb2FkQ29sbGVjdGlvblRpdGxlRGlyZWN0aXZlKVxuICAgIF90aXRsZURpcmVjdGl2ZTogVXBsb2FkQ29sbGVjdGlvblRpdGxlRGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKFVwbG9hZENvbGxlY3Rpb25CdXR0b25Hcm91cENvbXBvbmVudClcbiAgICBfYnV0dG9uR3JvdXBDb21wb25lbnQ6IFVwbG9hZENvbGxlY3Rpb25CdXR0b25Hcm91cENvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChVcGxvYWRDb2xsZWN0aW9uVGl0bGVDb250YWluZXJEaXJlY3RpdmUpXG4gICAgX3RpdGxlQ29udGFpbmVyRGlyZWN0aXZlOiBVcGxvYWRDb2xsZWN0aW9uVGl0bGVDb250YWluZXJEaXJlY3RpdmU7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgYSBmaWxlIG5hbWUuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgZmlsZU5hbWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHByZXNzZXMgdGhlIGRlbGV0ZSBidXR0b24uICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgZGVsZXRlQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBmaWxlTmFtZUZ1bGw6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdGl0bGVXaWR0aDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gdXNlZCB0byBjb21wYXJlIHRvIHRoZSBjdXJyZW50IHdpZHRoIHRvIGtub3cgd2hldGhlciB0byBjb2xsYXBzZSBvciBleHBhbmQgdGl0bGUgKi9cbiAgICBwcmV2aW91c0NvbnRhaW5lcldpZHRoOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnRhaW5lcldpZHRoOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWxlTmFtZUZ1bGwgPSB0aGlzLmZpbGVOYW1lICsgJy4nICsgdGhpcy5leHRlbnNpb247XG4gICAgICAgIHRoaXMuX3RpdGxlRGlyZWN0aXZlLmVsUmVmLm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSAnMCc7XG4gICAgICAgIHRoaXMuX3RpdGxlRGlyZWN0aXZlLmVsUmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID1cbiAgICAgICAgICAgICc8c3BhbiBjbGFzcz1cIicgKyBMSU5LX0NMQVNTX05BTUUubGlua0NvbnRlbnQgKyAnXCI+JyArIHRoaXMuZmlsZU5hbWVGdWxsICsgJzwvc3Bhbj4nO1xuICAgICAgICB0aGlzLl9oYW5kbGVEZWxldGVDbGlja2VkU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIHRoaXMuX2hhbmRsZU9rQ2xpY2tlZFN1YnNjcmlwdGlvbigpO1xuICAgICAgICB0aGlzLl9oYW5kbGVFZGl0Q2xpY2tlZFN1YnNjcmlwdGlvbigpO1xuICAgICAgICB0aGlzLl9oYW5kbGVGb3JtSXRlbUlucHV0Q2hhbmdlZFN1YnNjcmlwdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBQcm9jZXNzIHJlc2l6ZSBhZnRlciBhbGwgdGhlIGNoaWxkcmVuIHZpZXdzIGlzIGluaXRpYWxpemVkXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5vblJlc2l6ZSgpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFtdKVxuICAgIG9uUmVzaXplKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRpdGxlV2lkdGggPSB0aGlzLmdldFRpdGxlV2lkdGgoKTtcbiAgICAgICAgdGhpcy5jb250YWluZXJXaWR0aCA9IHRoaXMuZ2V0Q29udGFpbmVyV2lkdGgoKTtcblxuICAgICAgICAvLyBpZiBmaXJzdCBsb2FkIGFuZCBubyBwcmV2aW91cyBjb250YWluZXIgd2lkdGgsIG9yIGlmIGNvbnRhaW5lciBib3VuZGFyeSBpcyByZXNpemVkIHRvIHNtYWxsZXIgdGhhbiBiZWZvcmVcbiAgICAgICAgaWYgKCF0aGlzLnByZXZpb3VzQ29udGFpbmVyV2lkdGggfHwgdGhpcy5jb250YWluZXJXaWR0aCA8IHRoaXMucHJldmlvdXNDb250YWluZXJXaWR0aCkge1xuICAgICAgICAgICAgLy8gYW5kIHRoZSB0aXRsZSBleHRlbmRzIHBhc3QgdGhlIGNvbnRhaW5lciwgMS4wNXggcGFkZGluZyB0byBwcmV2ZW50IGphZ2d5IHJlc2l6aW5nLlxuICAgICAgICAgICAgaWYgKHRoaXMudGl0bGVXaWR0aCAqIDEuMDUgPj0gdGhpcy5jb250YWluZXJXaWR0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplRmlsZVRpdGxlKHRoaXMuX3RpdGxlRGlyZWN0aXZlLmVsUmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXZpb3VzQ29udGFpbmVyV2lkdGggJiYgdGhpcy5jb250YWluZXJXaWR0aCA+IHRoaXMucHJldmlvdXNDb250YWluZXJXaWR0aCkge1xuICAgICAgICAgICAgLy8gTG9va3MgdG8gZXhwYW5kIGZpbGUgdGl0bGUgaWYgY29udGFpbmVyIHdpZHRoIGlzIHJlc2l6ZWQgdG8gZ3JlYXRlciB0aGFuIGJlZm9yZVxuICAgICAgICAgICAgLy8gcmVzZXQgZmlsZSB0aXRsZSB0byBpbml0aWFsXG4gICAgICAgICAgICB0aGlzLl90aXRsZURpcmVjdGl2ZS5lbFJlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IHRoaXMuZmlsZU5hbWVGdWxsO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVGaWxlVGl0bGUodGhpcy5maWxlTmFtZUZ1bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcmV2aW91c0NvbnRhaW5lcldpZHRoID0gdGhpcy5jb250YWluZXJXaWR0aDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZU9rQ2xpY2tlZFN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICB0aGlzLl9idXR0b25Hcm91cENvbXBvbmVudC5va0NsaWNrZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZm9ybUl0ZW1Db21wb25lbnQuZmlsZU5hbWUgJiYgdGhpcy5fZm9ybUl0ZW1Db21wb25lbnQuZmlsZU5hbWUgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZU5hbWUgPSB0aGlzLl9mb3JtSXRlbUNvbXBvbmVudC5maWxlTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGl0bGVEaXJlY3RpdmUuZWxSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZU5hbWVGdWxsID0gdGhpcy5maWxlTmFtZSArICcuJyArIHRoaXMuZXh0ZW5zaW9uO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90aXRsZURpcmVjdGl2ZS5lbFJlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IHRoaXMuZmlsZU5hbWVGdWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUZpbGVUaXRsZSh0aGlzLmZpbGVOYW1lRnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1JdGVtQ29tcG9uZW50Ll9lZGl0TW9kZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9idXR0b25Hcm91cENvbXBvbmVudC5fZWRpdE1vZGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlTmFtZUNoYW5nZWQuZW1pdCh0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlRWRpdENsaWNrZWRTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgdGhpcy5fYnV0dG9uR3JvdXBDb21wb25lbnQuZWRpdENsaWNrZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1JdGVtQ29tcG9uZW50Ll9lZGl0TW9kZSA9IGV2ZW50O1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl90aXRsZUNvbnRhaW5lckRpcmVjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90aXRsZUNvbnRhaW5lckRpcmVjdGl2ZS5hcHBseUNvbnRhaW5lckNsYXNzID0gIWV2ZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBzdHlsZXM6IENTU1N0eWxlRGVjbGFyYXRpb25bXSA9IFtdO1xuICAgICAgICAgICAgICAgIHN0eWxlcy5wdXNoKCh0aGlzLl90aXRsZURpcmVjdGl2ZS5lbFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5zdHlsZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGl0bGVDb250YWluZXJEaXJlY3RpdmU/Ll9vYmplY3RNYXJrZXJDb21wb25lbnRzPy5mb3JFYWNoKChvYmplY3RNYXJrZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVzLnB1c2gob2JqZWN0TWFya2VyLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgPyBzdHlsZXMuZm9yRWFjaCgoc3R5bGUpID0+IChzdHlsZS5kaXNwbGF5ID0gJ25vbmUnKSlcbiAgICAgICAgICAgICAgICAgICAgOiBzdHlsZXMuZm9yRWFjaCgoc3R5bGUpID0+IChzdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jaycpKTtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9ybUl0ZW1Db21wb25lbnQuX2V4dGVuc2lvbiA9IHRoaXMuZXh0ZW5zaW9uO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9mb3JtSXRlbUNvbXBvbmVudC5maWxlTmFtZSA9IHRoaXMuZmlsZU5hbWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZURlbGV0ZUNsaWNrZWRTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgdGhpcy5fYnV0dG9uR3JvdXBDb21wb25lbnQuZGVsZXRlQ2xpY2tlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlQ2xpY2tlZC5lbWl0KHRoaXMpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZUZvcm1JdGVtSW5wdXRDaGFuZ2VkU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1JdGVtQ29tcG9uZW50LmZpbGVOYW1lQ2hhbmdlZC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYnV0dG9uR3JvdXBDb21wb25lbnQuX29rQnV0dG9uLmRpc2FibGVkID0gZXZlbnQgPT09ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuX2J1dHRvbkdyb3VwQ29tcG9uZW50Ll9va0J1dHRvbi5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXRUaXRsZVdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aXRsZURpcmVjdGl2ZS5lbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXRDb250YWluZXJXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGl0bGVEaXJlY3RpdmUuZWxSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKlxuICAgICAqIHRydW5jYXRlcyB0aGUgc3RyaW5nIGJ5IGN1dHRpbmcgb3V0IGV4Y2VzcyBsZW5ndGggaW4gdGhlIG1pZGRsZSBhbmQgcmVwbGFjaW5nIHdpdGggJy4uLidcbiAgICAgKi9cbiAgICBwcml2YXRlIHRydW5jYXRlVGl0bGUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBjdXRMZW5ndGggPSBNYXRoLmZsb29yKHN0ci5sZW5ndGggKiAwLjgpO1xuXG4gICAgICAgIGlmIChzdHIubGVuZ3RoID4gY3V0TGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBzdHJpbmdMZWZ0SW5kZXggPSBNYXRoLmZsb29yKGN1dExlbmd0aCAvIDIpO1xuICAgICAgICAgICAgY29uc3Qgc3RyaW5nUmlnaHRJbmRleCA9IHN0ci5sZW5ndGggLSBzdHJpbmdMZWZ0SW5kZXggKyAzO1xuICAgICAgICAgICAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoMCwgc3RyaW5nTGVmdEluZGV4KSArICcuLi4nICsgc3RyLnN1YnN0cmluZyhzdHJpbmdSaWdodEluZGV4LCBzdHIubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKlxuICAgICAqIGRldGVybWluZXMgaWYgZmlsZSB0aXRsZSBuZWVkcyB0byBiZSB0cnVuY2F0ZWQgZ2l2ZW4gY29udGFpbmVyIGNvbnN0cmFpbnQuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZXNpemVGaWxlVGl0bGUodGl0bGVTdHI6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBsZXQgY3VyVGl0bGUgPSB0aXRsZVN0cjtcbiAgICAgICAgdGhpcy5jb250YWluZXJXaWR0aCA9IHRoaXMuZ2V0Q29udGFpbmVyV2lkdGgoKTtcbiAgICAgICAgdGhpcy50aXRsZVdpZHRoID0gdGhpcy5nZXRUaXRsZVdpZHRoKCk7XG5cbiAgICAgICAgLy8gcmVwZWF0ZWRseSB0cnVuY2F0ZSB0aGUgdGl0bGUgdW50aWwgaXQgZml0cyBpbnNpZGUgY29udGFpbmVyXG4gICAgICAgIHdoaWxlICh0aGlzLnRpdGxlV2lkdGggKiAxLjA1ID49IHRoaXMuY29udGFpbmVyV2lkdGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHRydW5jYXRlZFRpdGxlU3RyID0gdGhpcy50cnVuY2F0ZVRpdGxlKGN1clRpdGxlKTtcbiAgICAgICAgICAgIHRoaXMuX3RpdGxlRGlyZWN0aXZlLmVsUmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdHJ1bmNhdGVkVGl0bGVTdHI7XG4gICAgICAgICAgICBjdXJUaXRsZSA9IHRydW5jYXRlZFRpdGxlU3RyO1xuICAgICAgICAgICAgdGhpcy50aXRsZVdpZHRoID0gdGhpcy5nZXRUaXRsZVdpZHRoKCk7XG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lcldpZHRoID0gdGhpcy5nZXRDb250YWluZXJXaWR0aCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19