@ng-nest/ui 18.0.5 → 18.0.7

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 (578) hide show
  1. package/checkbox/checkbox.component.d.ts +1 -1
  2. package/core/config/config.d.ts +6 -0
  3. package/esm2022/affix/affix.component.mjs +4 -4
  4. package/esm2022/affix/affix.module.mjs +4 -4
  5. package/esm2022/affix/affix.property.mjs +3 -3
  6. package/esm2022/alert/alert.component.mjs +5 -5
  7. package/esm2022/alert/alert.module.mjs +4 -4
  8. package/esm2022/alert/alert.property.mjs +3 -3
  9. package/esm2022/anchor/anchor-inner.component.mjs +3 -3
  10. package/esm2022/anchor/anchor.component.mjs +5 -5
  11. package/esm2022/anchor/anchor.module.mjs +4 -4
  12. package/esm2022/anchor/anchor.property.mjs +6 -6
  13. package/esm2022/api/api.component.mjs +4 -4
  14. package/esm2022/api/api.module.mjs +4 -4
  15. package/esm2022/auto-complete/auto-complete-portal.component.mjs +3 -3
  16. package/esm2022/auto-complete/auto-complete.component.mjs +5 -5
  17. package/esm2022/auto-complete/auto-complete.module.mjs +4 -4
  18. package/esm2022/auto-complete/auto-complete.property.mjs +3 -3
  19. package/esm2022/avatar/avatar-group.component.mjs +3 -3
  20. package/esm2022/avatar/avatar.component.mjs +5 -5
  21. package/esm2022/avatar/avatar.module.mjs +4 -4
  22. package/esm2022/avatar/avatar.property.mjs +6 -6
  23. package/esm2022/back-top/back-top.component.mjs +5 -5
  24. package/esm2022/back-top/back-top.module.mjs +4 -4
  25. package/esm2022/back-top/back-top.property.mjs +3 -3
  26. package/esm2022/badge/badge.component.mjs +5 -5
  27. package/esm2022/badge/badge.module.mjs +4 -4
  28. package/esm2022/badge/badge.property.mjs +3 -3
  29. package/esm2022/base-form/base-form.module.mjs +4 -4
  30. package/esm2022/base-form/base-form.property.mjs +6 -6
  31. package/esm2022/button/button.component.mjs +5 -5
  32. package/esm2022/button/button.module.mjs +4 -4
  33. package/esm2022/button/button.property.mjs +6 -6
  34. package/esm2022/button/buttons.component.mjs +4 -4
  35. package/esm2022/calendar/calendar.component.mjs +5 -5
  36. package/esm2022/calendar/calendar.module.mjs +4 -4
  37. package/esm2022/calendar/calendar.property.mjs +3 -3
  38. package/esm2022/card/card.component.mjs +5 -5
  39. package/esm2022/card/card.module.mjs +4 -4
  40. package/esm2022/card/card.property.mjs +3 -3
  41. package/esm2022/carousel/carousel-panel.component.mjs +5 -5
  42. package/esm2022/carousel/carousel.component.mjs +5 -5
  43. package/esm2022/carousel/carousel.module.mjs +4 -4
  44. package/esm2022/carousel/carousel.property.mjs +6 -6
  45. package/esm2022/cascade/cascade-portal.component.mjs +3 -3
  46. package/esm2022/cascade/cascade.component.mjs +5 -5
  47. package/esm2022/cascade/cascade.module.mjs +4 -4
  48. package/esm2022/cascade/cascade.property.mjs +3 -3
  49. package/esm2022/checkbox/checkbox.component.mjs +5 -5
  50. package/esm2022/checkbox/checkbox.module.mjs +4 -4
  51. package/esm2022/checkbox/checkbox.property.mjs +3 -3
  52. package/esm2022/collapse/collapse-panel.component.mjs +5 -5
  53. package/esm2022/collapse/collapse.component.mjs +4 -4
  54. package/esm2022/collapse/collapse.module.mjs +4 -4
  55. package/esm2022/collapse/collapse.property.mjs +6 -6
  56. package/esm2022/color/color.component.mjs +4 -4
  57. package/esm2022/color/color.module.mjs +4 -4
  58. package/esm2022/color/color.property.mjs +3 -3
  59. package/esm2022/color-picker/color-picker-portal.component.mjs +4 -4
  60. package/esm2022/color-picker/color-picker.component.mjs +5 -5
  61. package/esm2022/color-picker/color-picker.module.mjs +4 -4
  62. package/esm2022/color-picker/color-picker.property.mjs +3 -3
  63. package/esm2022/comment/comment-reply.component.mjs +3 -3
  64. package/esm2022/comment/comment.component.mjs +5 -5
  65. package/esm2022/comment/comment.module.mjs +4 -4
  66. package/esm2022/comment/comment.property.mjs +6 -6
  67. package/esm2022/container/aside.component.mjs +4 -4
  68. package/esm2022/container/container.component.mjs +4 -4
  69. package/esm2022/container/container.module.mjs +4 -4
  70. package/esm2022/container/container.property.mjs +12 -12
  71. package/esm2022/container/footer.component.mjs +4 -4
  72. package/esm2022/container/header.component.mjs +4 -4
  73. package/esm2022/container/main.component.mjs +4 -4
  74. package/esm2022/core/config/config.mjs +1 -1
  75. package/esm2022/core/config/config.service.mjs +3 -3
  76. package/esm2022/core/services/http.service.mjs +3 -3
  77. package/esm2022/core/services/preloading-strategy.service.mjs +3 -3
  78. package/esm2022/core/services/storage.service.mjs +3 -3
  79. package/esm2022/core/theme/theme.service.mjs +3 -3
  80. package/esm2022/crumb/crumb.component.mjs +5 -5
  81. package/esm2022/crumb/crumb.module.mjs +4 -4
  82. package/esm2022/crumb/crumb.property.mjs +3 -3
  83. package/esm2022/date-picker/date-picker-portal.component.mjs +3 -3
  84. package/esm2022/date-picker/date-picker.component.mjs +5 -5
  85. package/esm2022/date-picker/date-picker.module.mjs +4 -4
  86. package/esm2022/date-picker/date-picker.property.mjs +18 -18
  87. package/esm2022/date-picker/date-quarter.pipe.mjs +3 -3
  88. package/esm2022/date-picker/date-range-portal.component.mjs +3 -3
  89. package/esm2022/date-picker/date-range.component.mjs +5 -5
  90. package/esm2022/date-picker/picker-date.component.mjs +3 -3
  91. package/esm2022/date-picker/picker-month.component.mjs +3 -3
  92. package/esm2022/date-picker/picker-quarter.component.mjs +3 -3
  93. package/esm2022/date-picker/picker-year.component.mjs +3 -3
  94. package/esm2022/description/description-item.component.mjs +3 -3
  95. package/esm2022/description/description.component.mjs +3 -3
  96. package/esm2022/description/description.module.mjs +4 -4
  97. package/esm2022/description/description.property.mjs +6 -6
  98. package/esm2022/dialog/dialog-container.component.mjs +5 -5
  99. package/esm2022/dialog/dialog-portal.component.mjs +5 -5
  100. package/esm2022/dialog/dialog-portal.directives.mjs +18 -18
  101. package/esm2022/dialog/dialog.component.mjs +5 -5
  102. package/esm2022/dialog/dialog.module.mjs +4 -4
  103. package/esm2022/dialog/dialog.property.mjs +6 -6
  104. package/esm2022/dialog/dialog.service.mjs +3 -3
  105. package/esm2022/doc/doc.component.mjs +4 -4
  106. package/esm2022/doc/doc.module.mjs +4 -4
  107. package/esm2022/drag/drag.directive.mjs +3 -3
  108. package/esm2022/drag/drag.module.mjs +4 -4
  109. package/esm2022/drag/drag.property.mjs +3 -3
  110. package/esm2022/drawer/drawer-container.component.mjs +5 -5
  111. package/esm2022/drawer/drawer-portal.component.mjs +5 -5
  112. package/esm2022/drawer/drawer-portal.directives.mjs +9 -9
  113. package/esm2022/drawer/drawer.component.mjs +5 -5
  114. package/esm2022/drawer/drawer.module.mjs +4 -4
  115. package/esm2022/drawer/drawer.property.mjs +6 -6
  116. package/esm2022/drawer/drawer.service.mjs +3 -3
  117. package/esm2022/dropdown/dropdown-portal.component.mjs +3 -3
  118. package/esm2022/dropdown/dropdown.component.mjs +4 -4
  119. package/esm2022/dropdown/dropdown.module.mjs +4 -4
  120. package/esm2022/dropdown/dropdown.property.mjs +3 -3
  121. package/esm2022/empty/empty.component.mjs +5 -5
  122. package/esm2022/empty/empty.module.mjs +4 -4
  123. package/esm2022/empty/empty.property.mjs +3 -3
  124. package/esm2022/examples/examples.component.mjs +4 -4
  125. package/esm2022/examples/examples.module.mjs +4 -4
  126. package/esm2022/find/find.component.mjs +5 -5
  127. package/esm2022/find/find.module.mjs +4 -4
  128. package/esm2022/find/find.property.mjs +3 -3
  129. package/esm2022/form/control.component.mjs +3 -3
  130. package/esm2022/form/form.component.mjs +5 -5
  131. package/esm2022/form/form.module.mjs +4 -4
  132. package/esm2022/form/form.property.mjs +6 -6
  133. package/esm2022/highlight/highlight.component.mjs +5 -5
  134. package/esm2022/highlight/highlight.module.mjs +4 -4
  135. package/esm2022/highlight/highlight.property.mjs +3 -3
  136. package/esm2022/highlight/highlight.service.mjs +3 -3
  137. package/esm2022/i18n/i18n.directive.mjs +3 -3
  138. package/esm2022/i18n/i18n.module.mjs +4 -4
  139. package/esm2022/i18n/i18n.pipe.mjs +3 -3
  140. package/esm2022/i18n/i18n.property.mjs +1 -1
  141. package/esm2022/i18n/i18n.service.mjs +3 -3
  142. package/esm2022/i18n/languages/ar_EG.mjs +8 -2
  143. package/esm2022/i18n/languages/bg_BG.mjs +8 -2
  144. package/esm2022/i18n/languages/ca_ES.mjs +8 -2
  145. package/esm2022/i18n/languages/cs_CZ.mjs +8 -2
  146. package/esm2022/i18n/languages/da_DK.mjs +8 -2
  147. package/esm2022/i18n/languages/de_DE.mjs +8 -2
  148. package/esm2022/i18n/languages/el_GR.mjs +8 -2
  149. package/esm2022/i18n/languages/en_GB.mjs +8 -2
  150. package/esm2022/i18n/languages/en_US.mjs +8 -2
  151. package/esm2022/i18n/languages/es_ES.mjs +8 -2
  152. package/esm2022/i18n/languages/et_EE.mjs +8 -2
  153. package/esm2022/i18n/languages/fa_IR.mjs +8 -2
  154. package/esm2022/i18n/languages/fi_FI.mjs +8 -2
  155. package/esm2022/i18n/languages/fr_BE.mjs +8 -2
  156. package/esm2022/i18n/languages/fr_FR.mjs +8 -2
  157. package/esm2022/i18n/languages/he_IL.mjs +8 -2
  158. package/esm2022/i18n/languages/hi_IN.mjs +8 -2
  159. package/esm2022/i18n/languages/hr_HR.mjs +8 -2
  160. package/esm2022/i18n/languages/hu_HU.mjs +8 -2
  161. package/esm2022/i18n/languages/hy_AM.mjs +8 -2
  162. package/esm2022/i18n/languages/id_ID.mjs +8 -2
  163. package/esm2022/i18n/languages/is_IS.mjs +8 -2
  164. package/esm2022/i18n/languages/it_IT.mjs +8 -2
  165. package/esm2022/i18n/languages/ja_JP.mjs +8 -2
  166. package/esm2022/i18n/languages/ka_GE.mjs +8 -2
  167. package/esm2022/i18n/languages/kn_IN.mjs +8 -2
  168. package/esm2022/i18n/languages/ko_KR.mjs +8 -2
  169. package/esm2022/i18n/languages/ku_IQ.mjs +8 -2
  170. package/esm2022/i18n/languages/lv_LV.mjs +8 -2
  171. package/esm2022/i18n/languages/mn_MN.mjs +8 -2
  172. package/esm2022/i18n/languages/ms_MY.mjs +8 -2
  173. package/esm2022/i18n/languages/nb_NO.mjs +8 -2
  174. package/esm2022/i18n/languages/ne_NP.mjs +8 -2
  175. package/esm2022/i18n/languages/nl_BE.mjs +8 -2
  176. package/esm2022/i18n/languages/nl_NL.mjs +8 -2
  177. package/esm2022/i18n/languages/pl_PL.mjs +8 -2
  178. package/esm2022/i18n/languages/pt_BR.mjs +8 -2
  179. package/esm2022/i18n/languages/pt_PT.mjs +8 -2
  180. package/esm2022/i18n/languages/ro_RO.mjs +8 -2
  181. package/esm2022/i18n/languages/ru_RU.mjs +8 -2
  182. package/esm2022/i18n/languages/sk_SK.mjs +8 -2
  183. package/esm2022/i18n/languages/sl_SI.mjs +8 -2
  184. package/esm2022/i18n/languages/sr_RS.mjs +8 -2
  185. package/esm2022/i18n/languages/sv_SE.mjs +8 -2
  186. package/esm2022/i18n/languages/ta_IN.mjs +8 -2
  187. package/esm2022/i18n/languages/th_TH.mjs +8 -2
  188. package/esm2022/i18n/languages/tr_TR.mjs +8 -2
  189. package/esm2022/i18n/languages/uk_UA.mjs +8 -2
  190. package/esm2022/i18n/languages/vi_VN.mjs +8 -2
  191. package/esm2022/i18n/languages/zh_CN.mjs +8 -2
  192. package/esm2022/i18n/languages/zh_TW.mjs +8 -2
  193. package/esm2022/icon/icon.component.mjs +4 -4
  194. package/esm2022/icon/icon.module.mjs +4 -4
  195. package/esm2022/icon/icon.property.mjs +3 -3
  196. package/esm2022/icon/icon.service.mjs +3 -3
  197. package/esm2022/image/image-group.component.mjs +3 -3
  198. package/esm2022/image/image-preview.component.mjs +5 -5
  199. package/esm2022/image/image.component.mjs +5 -5
  200. package/esm2022/image/image.module.mjs +4 -4
  201. package/esm2022/image/image.property.mjs +6 -6
  202. package/esm2022/inner/inner.component.mjs +4 -4
  203. package/esm2022/inner/inner.module.mjs +4 -4
  204. package/esm2022/inner/inner.property.mjs +3 -3
  205. package/esm2022/input/input-group.component.mjs +3 -3
  206. package/esm2022/input/input.component.mjs +5 -5
  207. package/esm2022/input/input.module.mjs +4 -4
  208. package/esm2022/input/input.property.mjs +6 -6
  209. package/esm2022/input-number/input-number.component.mjs +5 -5
  210. package/esm2022/input-number/input-number.module.mjs +4 -4
  211. package/esm2022/input-number/input-number.property.mjs +3 -3
  212. package/esm2022/keyword/keyword.directive.mjs +3 -3
  213. package/esm2022/keyword/keyword.module.mjs +4 -4
  214. package/esm2022/keyword/keyword.property.mjs +3 -3
  215. package/esm2022/layout/col.component.mjs +3 -3
  216. package/esm2022/layout/layout.module.mjs +4 -4
  217. package/esm2022/layout/layout.property.mjs +6 -6
  218. package/esm2022/layout/row.component.mjs +3 -3
  219. package/esm2022/link/link.component.mjs +5 -5
  220. package/esm2022/link/link.module.mjs +4 -4
  221. package/esm2022/link/link.property.mjs +3 -3
  222. package/esm2022/list/list-drop-group.directive.mjs +3 -3
  223. package/esm2022/list/list-option.component.mjs +3 -3
  224. package/esm2022/list/list.component.mjs +11 -11
  225. package/esm2022/list/list.module.mjs +4 -4
  226. package/esm2022/list/list.property.mjs +6 -6
  227. package/esm2022/loading/loading.component.mjs +5 -5
  228. package/esm2022/loading/loading.module.mjs +4 -4
  229. package/esm2022/loading/loading.property.mjs +3 -3
  230. package/esm2022/menu/menu-node.component.mjs +3 -3
  231. package/esm2022/menu/menu.component.mjs +3 -3
  232. package/esm2022/menu/menu.module.mjs +4 -4
  233. package/esm2022/menu/menu.property.mjs +6 -6
  234. package/esm2022/message/message.component.mjs +3 -3
  235. package/esm2022/message/message.module.mjs +4 -4
  236. package/esm2022/message/message.service.mjs +3 -3
  237. package/esm2022/message-box/message-box.component.mjs +3 -3
  238. package/esm2022/message-box/message-box.module.mjs +4 -4
  239. package/esm2022/message-box/message-box.service.mjs +3 -3
  240. package/esm2022/notification/notification.component.mjs +3 -3
  241. package/esm2022/notification/notification.module.mjs +4 -4
  242. package/esm2022/notification/notification.service.mjs +3 -3
  243. package/esm2022/outlet/outlet.directive.mjs +3 -3
  244. package/esm2022/outlet/outlet.module.mjs +4 -4
  245. package/esm2022/page-header/page-header.component.mjs +5 -5
  246. package/esm2022/page-header/page-header.module.mjs +4 -4
  247. package/esm2022/page-header/page-header.property.mjs +3 -3
  248. package/esm2022/pagination/pagination.component.mjs +91 -29
  249. package/esm2022/pagination/pagination.module.mjs +4 -4
  250. package/esm2022/pagination/pagination.property.mjs +23 -8
  251. package/esm2022/pattern/pattern.component.mjs +4 -4
  252. package/esm2022/pattern/pattern.module.mjs +4 -4
  253. package/esm2022/popconfirm/popconfirm.component.mjs +5 -5
  254. package/esm2022/popconfirm/popconfirm.module.mjs +4 -4
  255. package/esm2022/popconfirm/popconfirm.property.mjs +3 -3
  256. package/esm2022/popover/popover-portal.component.mjs +5 -5
  257. package/esm2022/popover/popover.directive.mjs +3 -3
  258. package/esm2022/popover/popover.module.mjs +4 -4
  259. package/esm2022/popover/popover.property.mjs +3 -3
  260. package/esm2022/portal/portal.module.mjs +4 -4
  261. package/esm2022/portal/portal.service.mjs +3 -3
  262. package/esm2022/progress/progress.component.mjs +5 -5
  263. package/esm2022/progress/progress.module.mjs +4 -4
  264. package/esm2022/progress/progress.property.mjs +3 -3
  265. package/esm2022/radio/radio.component.mjs +5 -5
  266. package/esm2022/radio/radio.module.mjs +4 -4
  267. package/esm2022/radio/radio.property.mjs +3 -3
  268. package/esm2022/rate/rate.component.mjs +5 -5
  269. package/esm2022/rate/rate.module.mjs +4 -4
  270. package/esm2022/rate/rate.property.mjs +3 -3
  271. package/esm2022/resizable/resizable.directive.mjs +3 -3
  272. package/esm2022/resizable/resizable.module.mjs +4 -4
  273. package/esm2022/resizable/resizable.property.mjs +3 -3
  274. package/esm2022/result/result.component.mjs +5 -5
  275. package/esm2022/result/result.module.mjs +4 -4
  276. package/esm2022/result/result.property.mjs +3 -3
  277. package/esm2022/ripple/ripple.directive.mjs +3 -3
  278. package/esm2022/ripple/ripple.module.mjs +4 -4
  279. package/esm2022/ripple/ripple.property.mjs +3 -3
  280. package/esm2022/select/select-portal.component.mjs +3 -3
  281. package/esm2022/select/select.component.mjs +5 -5
  282. package/esm2022/select/select.module.mjs +4 -4
  283. package/esm2022/select/select.property.mjs +5 -5
  284. package/esm2022/skeleton/skeleton.component.mjs +3 -3
  285. package/esm2022/skeleton/skeleton.module.mjs +4 -4
  286. package/esm2022/skeleton/skeleton.property.mjs +3 -3
  287. package/esm2022/slider/slider.component.mjs +5 -5
  288. package/esm2022/slider/slider.module.mjs +4 -4
  289. package/esm2022/slider/slider.property.mjs +3 -3
  290. package/esm2022/slider-select/slider-select.component.mjs +5 -5
  291. package/esm2022/slider-select/slider-select.module.mjs +4 -4
  292. package/esm2022/slider-select/slider-select.property.mjs +3 -3
  293. package/esm2022/statistic/countdown.component.mjs +3 -3
  294. package/esm2022/statistic/statistic.component.mjs +3 -3
  295. package/esm2022/statistic/statistic.module.mjs +4 -4
  296. package/esm2022/statistic/statistic.property.mjs +6 -6
  297. package/esm2022/steps/steps.component.mjs +5 -5
  298. package/esm2022/steps/steps.module.mjs +4 -4
  299. package/esm2022/steps/steps.property.mjs +3 -3
  300. package/esm2022/switch/switch.component.mjs +5 -5
  301. package/esm2022/switch/switch.module.mjs +4 -4
  302. package/esm2022/switch/switch.property.mjs +3 -3
  303. package/esm2022/table/table-body.component.mjs +3 -3
  304. package/esm2022/table/table-foot.component.mjs +3 -3
  305. package/esm2022/table/table-head.component.mjs +4 -4
  306. package/esm2022/table/table.component.mjs +5 -5
  307. package/esm2022/table/table.module.mjs +4 -4
  308. package/esm2022/table/table.property.mjs +28 -13
  309. package/esm2022/tabs/tab-content.component.mjs +3 -3
  310. package/esm2022/tabs/tab-link.directive.mjs +6 -6
  311. package/esm2022/tabs/tab.component.mjs +3 -3
  312. package/esm2022/tabs/tabs.component.mjs +5 -5
  313. package/esm2022/tabs/tabs.module.mjs +4 -4
  314. package/esm2022/tabs/tabs.property.mjs +6 -6
  315. package/esm2022/tag/tag.component.mjs +5 -5
  316. package/esm2022/tag/tag.module.mjs +4 -4
  317. package/esm2022/tag/tag.property.mjs +3 -3
  318. package/esm2022/text-retract/text-retract.component.mjs +5 -5
  319. package/esm2022/text-retract/text-retract.module.mjs +4 -4
  320. package/esm2022/text-retract/text-retract.property.mjs +3 -3
  321. package/esm2022/textarea/textarea.component.mjs +5 -5
  322. package/esm2022/textarea/textarea.module.mjs +4 -4
  323. package/esm2022/textarea/textarea.property.mjs +3 -3
  324. package/esm2022/theme/theme.component.mjs +5 -5
  325. package/esm2022/theme/theme.module.mjs +4 -4
  326. package/esm2022/theme/theme.property.mjs +3 -3
  327. package/esm2022/time-ago/time-ago.module.mjs +4 -4
  328. package/esm2022/time-ago/time-ago.pipe.mjs +3 -3
  329. package/esm2022/time-picker/time-picker-frame.component.mjs +5 -5
  330. package/esm2022/time-picker/time-picker-portal.component.mjs +3 -3
  331. package/esm2022/time-picker/time-picker.component.mjs +5 -5
  332. package/esm2022/time-picker/time-picker.module.mjs +4 -4
  333. package/esm2022/time-picker/time-picker.property.mjs +3 -3
  334. package/esm2022/time-range/time-range.module.mjs +4 -4
  335. package/esm2022/time-range/time-range.pipe.mjs +3 -3
  336. package/esm2022/timeline/timeline.component.mjs +5 -5
  337. package/esm2022/timeline/timeline.module.mjs +4 -4
  338. package/esm2022/timeline/timeline.property.mjs +3 -3
  339. package/esm2022/tooltip/tooltip-portal.component.mjs +5 -5
  340. package/esm2022/tooltip/tooltip.directive.mjs +3 -3
  341. package/esm2022/tooltip/tooltip.module.mjs +4 -4
  342. package/esm2022/tooltip/tooltip.property.mjs +3 -3
  343. package/esm2022/transfer/transfer.component.mjs +5 -5
  344. package/esm2022/transfer/transfer.module.mjs +4 -4
  345. package/esm2022/transfer/transfer.property.mjs +3 -3
  346. package/esm2022/tree/tree-node.component.mjs +5 -5
  347. package/esm2022/tree/tree.component.mjs +4 -4
  348. package/esm2022/tree/tree.module.mjs +4 -4
  349. package/esm2022/tree/tree.property.mjs +6 -6
  350. package/esm2022/tree/tree.service.mjs +3 -3
  351. package/esm2022/tree-file/tree-file.component.mjs +5 -5
  352. package/esm2022/tree-file/tree-file.module.mjs +4 -4
  353. package/esm2022/tree-file/tree-file.property.mjs +3 -3
  354. package/esm2022/tree-select/tree-select-portal.component.mjs +3 -3
  355. package/esm2022/tree-select/tree-select.component.mjs +5 -5
  356. package/esm2022/tree-select/tree-select.module.mjs +4 -4
  357. package/esm2022/tree-select/tree-select.property.mjs +3 -3
  358. package/esm2022/typography/typography.component.mjs +4 -4
  359. package/esm2022/typography/typography.module.mjs +4 -4
  360. package/esm2022/typography/typography.property.mjs +3 -3
  361. package/esm2022/upload/upload-portal.component.mjs +5 -5
  362. package/esm2022/upload/upload.component.mjs +5 -5
  363. package/esm2022/upload/upload.module.mjs +4 -4
  364. package/esm2022/upload/upload.property.mjs +3 -3
  365. package/fesm2022/ng-nest-ui-affix.mjs +11 -11
  366. package/fesm2022/ng-nest-ui-affix.mjs.map +1 -1
  367. package/fesm2022/ng-nest-ui-alert.mjs +11 -11
  368. package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
  369. package/fesm2022/ng-nest-ui-anchor.mjs +17 -17
  370. package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
  371. package/fesm2022/ng-nest-ui-api.mjs +8 -8
  372. package/fesm2022/ng-nest-ui-api.mjs.map +1 -1
  373. package/fesm2022/ng-nest-ui-auto-complete.mjs +14 -14
  374. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  375. package/fesm2022/ng-nest-ui-avatar.mjs +17 -17
  376. package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
  377. package/fesm2022/ng-nest-ui-back-top.mjs +11 -11
  378. package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
  379. package/fesm2022/ng-nest-ui-badge.mjs +11 -11
  380. package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
  381. package/fesm2022/ng-nest-ui-base-form.mjs +10 -10
  382. package/fesm2022/ng-nest-ui-button.mjs +18 -18
  383. package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
  384. package/fesm2022/ng-nest-ui-calendar.mjs +11 -11
  385. package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
  386. package/fesm2022/ng-nest-ui-card.mjs +11 -11
  387. package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
  388. package/fesm2022/ng-nest-ui-carousel.mjs +18 -18
  389. package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
  390. package/fesm2022/ng-nest-ui-cascade.mjs +14 -14
  391. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  392. package/fesm2022/ng-nest-ui-checkbox.mjs +11 -11
  393. package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
  394. package/fesm2022/ng-nest-ui-collapse.mjs +18 -18
  395. package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
  396. package/fesm2022/ng-nest-ui-color-picker.mjs +14 -14
  397. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  398. package/fesm2022/ng-nest-ui-color.mjs +11 -11
  399. package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
  400. package/fesm2022/ng-nest-ui-comment.mjs +17 -17
  401. package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
  402. package/fesm2022/ng-nest-ui-container.mjs +36 -36
  403. package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
  404. package/fesm2022/ng-nest-ui-core.mjs +15 -15
  405. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  406. package/fesm2022/ng-nest-ui-crumb.mjs +11 -11
  407. package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
  408. package/fesm2022/ng-nest-ui-date-picker.mjs +51 -51
  409. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  410. package/fesm2022/ng-nest-ui-description.mjs +16 -16
  411. package/fesm2022/ng-nest-ui-dialog.mjs +44 -44
  412. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  413. package/fesm2022/ng-nest-ui-doc.mjs +8 -8
  414. package/fesm2022/ng-nest-ui-doc.mjs.map +1 -1
  415. package/fesm2022/ng-nest-ui-drag.mjs +10 -10
  416. package/fesm2022/ng-nest-ui-drawer.mjs +35 -35
  417. package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
  418. package/fesm2022/ng-nest-ui-dropdown.mjs +14 -14
  419. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  420. package/fesm2022/ng-nest-ui-empty.mjs +11 -11
  421. package/fesm2022/ng-nest-ui-empty.mjs.map +1 -1
  422. package/fesm2022/ng-nest-ui-examples.mjs +8 -8
  423. package/fesm2022/ng-nest-ui-examples.mjs.map +1 -1
  424. package/fesm2022/ng-nest-ui-find.mjs +11 -11
  425. package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
  426. package/fesm2022/ng-nest-ui-form.mjs +17 -17
  427. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  428. package/fesm2022/ng-nest-ui-highlight.mjs +14 -14
  429. package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
  430. package/fesm2022/ng-nest-ui-i18n.mjs +370 -64
  431. package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
  432. package/fesm2022/ng-nest-ui-icon.mjs +14 -14
  433. package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
  434. package/fesm2022/ng-nest-ui-image.mjs +21 -21
  435. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  436. package/fesm2022/ng-nest-ui-inner.mjs +11 -11
  437. package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
  438. package/fesm2022/ng-nest-ui-input-number.mjs +11 -11
  439. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  440. package/fesm2022/ng-nest-ui-input.mjs +17 -17
  441. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  442. package/fesm2022/ng-nest-ui-keyword.mjs +10 -10
  443. package/fesm2022/ng-nest-ui-layout.mjs +16 -16
  444. package/fesm2022/ng-nest-ui-link.mjs +11 -11
  445. package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
  446. package/fesm2022/ng-nest-ui-list.mjs +26 -26
  447. package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
  448. package/fesm2022/ng-nest-ui-loading.mjs +11 -11
  449. package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
  450. package/fesm2022/ng-nest-ui-menu.mjs +16 -16
  451. package/fesm2022/ng-nest-ui-message-box.mjs +10 -10
  452. package/fesm2022/ng-nest-ui-message.mjs +10 -10
  453. package/fesm2022/ng-nest-ui-notification.mjs +10 -10
  454. package/fesm2022/ng-nest-ui-outlet.mjs +7 -7
  455. package/fesm2022/ng-nest-ui-page-header.mjs +11 -11
  456. package/fesm2022/ng-nest-ui-page-header.mjs.map +1 -1
  457. package/fesm2022/ng-nest-ui-pagination.mjs +116 -39
  458. package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
  459. package/fesm2022/ng-nest-ui-pattern.mjs +8 -8
  460. package/fesm2022/ng-nest-ui-pattern.mjs.map +1 -1
  461. package/fesm2022/ng-nest-ui-popconfirm.mjs +11 -11
  462. package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
  463. package/fesm2022/ng-nest-ui-popover.mjs +14 -14
  464. package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
  465. package/fesm2022/ng-nest-ui-portal.mjs +7 -7
  466. package/fesm2022/ng-nest-ui-progress.mjs +11 -11
  467. package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
  468. package/fesm2022/ng-nest-ui-radio.mjs +11 -11
  469. package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
  470. package/fesm2022/ng-nest-ui-rate.mjs +11 -11
  471. package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
  472. package/fesm2022/ng-nest-ui-resizable.mjs +10 -10
  473. package/fesm2022/ng-nest-ui-result.mjs +11 -11
  474. package/fesm2022/ng-nest-ui-result.mjs.map +1 -1
  475. package/fesm2022/ng-nest-ui-ripple.mjs +10 -10
  476. package/fesm2022/ng-nest-ui-select.mjs +15 -15
  477. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  478. package/fesm2022/ng-nest-ui-skeleton.mjs +10 -10
  479. package/fesm2022/ng-nest-ui-slider-select.mjs +11 -11
  480. package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
  481. package/fesm2022/ng-nest-ui-slider.mjs +11 -11
  482. package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
  483. package/fesm2022/ng-nest-ui-statistic.mjs +16 -16
  484. package/fesm2022/ng-nest-ui-steps.mjs +11 -11
  485. package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
  486. package/fesm2022/ng-nest-ui-switch.mjs +11 -11
  487. package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
  488. package/fesm2022/ng-nest-ui-table.mjs +44 -29
  489. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  490. package/fesm2022/ng-nest-ui-tabs.mjs +26 -26
  491. package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
  492. package/fesm2022/ng-nest-ui-tag.mjs +11 -11
  493. package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
  494. package/fesm2022/ng-nest-ui-text-retract.mjs +11 -11
  495. package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
  496. package/fesm2022/ng-nest-ui-textarea.mjs +11 -11
  497. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  498. package/fesm2022/ng-nest-ui-theme.mjs +11 -11
  499. package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
  500. package/fesm2022/ng-nest-ui-time-ago.mjs +7 -7
  501. package/fesm2022/ng-nest-ui-time-picker.mjs +18 -18
  502. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  503. package/fesm2022/ng-nest-ui-time-range.mjs +7 -7
  504. package/fesm2022/ng-nest-ui-timeline.mjs +11 -11
  505. package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
  506. package/fesm2022/ng-nest-ui-tooltip.mjs +14 -14
  507. package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
  508. package/fesm2022/ng-nest-ui-transfer.mjs +11 -11
  509. package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
  510. package/fesm2022/ng-nest-ui-tree-file.mjs +11 -11
  511. package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
  512. package/fesm2022/ng-nest-ui-tree-select.mjs +14 -14
  513. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  514. package/fesm2022/ng-nest-ui-tree.mjs +20 -20
  515. package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
  516. package/fesm2022/ng-nest-ui-typography.mjs +11 -11
  517. package/fesm2022/ng-nest-ui-typography.mjs.map +1 -1
  518. package/fesm2022/ng-nest-ui-upload.mjs +15 -15
  519. package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
  520. package/i18n/i18n.property.d.ts +6 -0
  521. package/i18n/languages/ar_EG.d.ts +6 -0
  522. package/i18n/languages/bg_BG.d.ts +6 -0
  523. package/i18n/languages/ca_ES.d.ts +6 -0
  524. package/i18n/languages/cs_CZ.d.ts +6 -0
  525. package/i18n/languages/da_DK.d.ts +6 -0
  526. package/i18n/languages/de_DE.d.ts +6 -0
  527. package/i18n/languages/el_GR.d.ts +6 -0
  528. package/i18n/languages/en_GB.d.ts +6 -0
  529. package/i18n/languages/en_US.d.ts +6 -0
  530. package/i18n/languages/es_ES.d.ts +6 -0
  531. package/i18n/languages/et_EE.d.ts +6 -0
  532. package/i18n/languages/fa_IR.d.ts +6 -0
  533. package/i18n/languages/fi_FI.d.ts +6 -0
  534. package/i18n/languages/fr_BE.d.ts +6 -0
  535. package/i18n/languages/fr_FR.d.ts +6 -0
  536. package/i18n/languages/he_IL.d.ts +6 -0
  537. package/i18n/languages/hi_IN.d.ts +6 -0
  538. package/i18n/languages/hr_HR.d.ts +6 -0
  539. package/i18n/languages/hu_HU.d.ts +6 -0
  540. package/i18n/languages/hy_AM.d.ts +6 -0
  541. package/i18n/languages/id_ID.d.ts +6 -0
  542. package/i18n/languages/is_IS.d.ts +6 -0
  543. package/i18n/languages/it_IT.d.ts +6 -0
  544. package/i18n/languages/ja_JP.d.ts +6 -0
  545. package/i18n/languages/ka_GE.d.ts +6 -0
  546. package/i18n/languages/kn_IN.d.ts +6 -0
  547. package/i18n/languages/ko_KR.d.ts +6 -0
  548. package/i18n/languages/ku_IQ.d.ts +6 -0
  549. package/i18n/languages/lv_LV.d.ts +6 -0
  550. package/i18n/languages/mn_MN.d.ts +6 -0
  551. package/i18n/languages/ms_MY.d.ts +6 -0
  552. package/i18n/languages/nb_NO.d.ts +6 -0
  553. package/i18n/languages/ne_NP.d.ts +6 -0
  554. package/i18n/languages/nl_BE.d.ts +6 -0
  555. package/i18n/languages/nl_NL.d.ts +6 -0
  556. package/i18n/languages/pl_PL.d.ts +6 -0
  557. package/i18n/languages/pt_BR.d.ts +6 -0
  558. package/i18n/languages/pt_PT.d.ts +6 -0
  559. package/i18n/languages/ro_RO.d.ts +6 -0
  560. package/i18n/languages/ru_RU.d.ts +6 -0
  561. package/i18n/languages/sk_SK.d.ts +6 -0
  562. package/i18n/languages/sl_SI.d.ts +6 -0
  563. package/i18n/languages/sr_RS.d.ts +6 -0
  564. package/i18n/languages/sv_SE.d.ts +6 -0
  565. package/i18n/languages/ta_IN.d.ts +6 -0
  566. package/i18n/languages/th_TH.d.ts +6 -0
  567. package/i18n/languages/tr_TR.d.ts +6 -0
  568. package/i18n/languages/uk_UA.d.ts +6 -0
  569. package/i18n/languages/vi_VN.d.ts +6 -0
  570. package/i18n/languages/zh_CN.d.ts +6 -0
  571. package/i18n/languages/zh_TW.d.ts +6 -0
  572. package/package.json +115 -115
  573. package/pagination/pagination.component.d.ts +24 -0
  574. package/pagination/pagination.property.d.ts +31 -5
  575. package/radio/radio.component.d.ts +1 -1
  576. package/select/select.property.d.ts +1 -4
  577. package/style/mixins/reset.scss +4 -2
  578. package/table/table.property.d.ts +17 -1
@@ -262,10 +262,10 @@ export class XTreeNodeComponent extends XTreeNodeProperty {
262
262
  trackByAction(_index, item) {
263
263
  return item.id;
264
264
  }
265
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: XTreeNodeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
266
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: XTreeNodeComponent, isStandalone: true, selector: "x-tree-node, [x-tree-node]", outputs: { nodeMouseenter: "nodeMouseenter" }, host: { listeners: { "mouseenter": "onMouseenter($event)", "mouseleave": "onMouseleave()" }, properties: { "class.x-tree-node": "this.rootClass" } }, usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"x-tree-node-content\"\r\n [class.x-activated]=\"activated()\"\r\n [class.x-disabled]=\"disabled()\"\r\n [class.x-tree-node-sub]=\"!leaf()\"\r\n [class.x-tree-node-last]=\"isChildrenLast()\"\r\n [style.padding-left.px]=\"paddingLeft() + fontSize() / 2\"\r\n [style.height]=\"height() ? height() : nodeHeight() ? nodeHeight() : ''\"\r\n [style.align-items]=\"alignItems() ? alignItems() : nodeAlignItems()\"\r\n (click)=\"!disabled() && onActivate($event, node())\"\r\n>\r\n @if (tree.showLine() && level()! > 0) {\r\n <div class=\"x-tree-node-line\" [style.width.px]=\"paddingLeft()\">\r\n @for (i of verticalLevel(); track i) {\r\n <div\r\n class=\"x-tree-node-line-vertical\"\r\n [hidden]=\"isParentLast()[i - 1]\"\r\n [class.is-last]=\"i === verticalLevel().length\"\r\n [style.left.px]=\"getVerticalLeft(i)\"\r\n ></div>\r\n }\r\n <div\r\n class=\"x-tree-node-line-horizontal\"\r\n [style.width.px]=\"verticalWidth()\"\r\n [style.left.px]=\"getVerticalLeft(verticalLevel().length)\"\r\n ></div>\r\n </div>\r\n }\r\n @if (showDragIndicator()) {\r\n <div class=\"x-tree-node-drag-indicator\" [style.width]=\"indicatorWidth()\" [ngStyle]=\"indicatorStyle()\"></div>\r\n }\r\n @if (loading()) {\r\n <x-icon class=\"x-tree-node-loading\" type=\"fto-loader\" [spin]=\"loading()!\"></x-icon>\r\n } @else {\r\n <div\r\n class=\"x-tree-node-right\"\r\n [class.is-leaf]=\"leaf()\"\r\n [class.is-open]=\"open()\"\r\n [class.is-template]=\"tree.expandedIcon()\"\r\n [style.width.px]=\"verticalWidth() * 2\"\r\n (click)=\"!tree.nodeOpen() && onToggle($event, node())\"\r\n >\r\n @if (tree.expandedIcon()) {\r\n <ng-container *xOutlet=\"tree.expandedIcon(); context: { $node: node() }\"></ng-container>\r\n } @else {\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n }\r\n </div>\r\n }\r\n @if (tree.checkbox()) {\r\n <x-checkbox\r\n [data]=\"[{ label: '', id: id() }]\"\r\n [(ngModel)]=\"checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"indeterminate()!\"\r\n [disabled]=\"disabled()!\"\r\n (click)=\"$event.stopPropagation()\"\r\n single\r\n ></x-checkbox>\r\n }\r\n @if (!tree.labelTpl()) {\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"nowrap() === false || nowrap() === true ? nowrap() : nodeNowrap()\"\r\n [title]=\"label()\"\r\n x-keyword\r\n [text]=\"tree.keywordText()\"\r\n [caseSensitive]=\"tree.caseSensitive()\"\r\n >{{ label() }}</span\r\n >\r\n } @else {\r\n <ng-container *xOutlet=\"tree.labelTpl(); context: { $node: node() }\"></ng-container>\r\n }\r\n <span class=\"x-tree-node-operations\">\r\n @for (action of tree.actions(); track action.id) {\r\n <x-link [icon]=\"action.icon\" [title]=\"action.label\" (click)=\"onAction($event, action, node())\"></x-link>\r\n }\r\n </span>\r\n @if (tree.multiple() && activated()) {\r\n <x-icon class=\"x-tree-node-checked\" type=\"fto-check\"></x-icon>\r\n }\r\n</div>\r\n", styles: ["x-tree-node{display:block}.x-tree-node{display:block;margin:0;padding:0}.x-tree-node-content{position:relative;display:flex;border-radius:var(--x-border-radius);margin:.125rem 0;padding-right:.5rem;line-height:var(--x-height-small);cursor:pointer}.x-tree-node-content x-icon{padding:.25rem;font-size:1.25rem;transition:var(--x-animation-duration-base)}.x-tree-node-content x-icon:hover{color:var(--x-text-200)}.x-tree-node-content x-checkbox{margin-right:.325rem;padding:.25rem 0}.x-tree-node-content.x-disabled{color:var(--x-text-400)}.x-tree-node-content:not(.x-disabled):hover{background-color:var(--x-background-a200)}.x-tree-node-content:not(.x-disabled):hover .x-tree-node-operations{display:flex;align-items:center}.x-tree-node-content:not(.x-disabled).x-activated{background-color:var(--x-primary-900);color:var(--x-primary)}.x-tree-node-content:not(.x-disabled).x-tree-node-checked{color:var(--x-primary)}.x-tree-node-right,.x-tree-node-loading{color:var(--x-text-300);margin-right:.125rem}.x-tree-node-right{display:flex;align-items:center;justify-content:center}.x-tree-node-right.is-leaf{visibility:hidden}.x-tree-node-right.is-open:not(.is-template) x-icon{transform:rotate(90deg)}.x-tree-node-line{position:absolute;left:.5rem;height:calc(100% + .25rem);display:flex;align-items:center;justify-content:space-between}.x-tree-node-line-vertical{position:absolute;height:100%;border-right:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-tree-node-line-horizontal{position:absolute;border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-tree-node-last .x-tree-node-line-vertical.is-last{height:50%;top:0}.x-tree-node-operations{display:none}.x-tree-node-operations .x-link{padding:0 .125rem}.x-tree-node-label{flex:1;-webkit-user-select:none;user-select:none}.x-tree-node-label.nowrap{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.x-tree-node-drag-indicator{position:absolute;height:.0625rem;border-radius:var(--x-border-radius);background-color:var(--x-primary);right:0;z-index:1}.x-tree-node-drag-indicator:before{position:absolute;top:-.125rem;left:-.2625rem;width:.325rem;height:.325rem;background-color:transparent;border-color:var(--x-primary);border-style:solid;border-width:.0625rem .0625rem 0 0;content:\" \";transform:rotate(45deg)}body>x-tree-node{display:block}body>x-tree-node.cdk-drag-preview .x-tree-node-content{position:relative;display:flex;border-radius:var(--x-border-radius);margin:.125rem 0;padding-right:.5rem;line-height:var(--x-height-small);cursor:pointer}body>x-tree-node.cdk-drag-preview .x-tree-node-content x-icon{padding:.25rem;font-size:1.25rem;transition:var(--x-animation-duration-base)}body>x-tree-node.cdk-drag-preview .x-tree-node-content x-icon:hover{color:var(--x-text-200)}body>x-tree-node.cdk-drag-preview .x-tree-node-content x-checkbox{margin-right:.325rem;padding:.25rem 0}body>x-tree-node.cdk-drag-preview .x-tree-node-content.x-disabled{color:var(--x-text-400)}body>x-tree-node.cdk-drag-preview .x-tree-node-content:not(.x-disabled):hover{background-color:var(--x-background-a200)}body>x-tree-node.cdk-drag-preview .x-tree-node-content:not(.x-disabled):hover .x-tree-node-operations{display:flex;align-items:center}body>x-tree-node.cdk-drag-preview .x-tree-node-content:not(.x-disabled).x-activated{background-color:var(--x-primary-900);color:var(--x-primary)}body>x-tree-node.cdk-drag-preview .x-tree-node-content:not(.x-disabled).x-tree-node-checked{color:var(--x-primary)}body>x-tree-node.cdk-drag-preview .x-tree-node-right,body>x-tree-node.cdk-drag-preview .x-tree-node-loading{color:var(--x-text-300);margin-right:.125rem}body>x-tree-node.cdk-drag-preview .x-tree-node-right{display:flex;align-items:center;justify-content:center}body>x-tree-node.cdk-drag-preview .x-tree-node-right.is-leaf{visibility:hidden}body>x-tree-node.cdk-drag-preview .x-tree-node-right.is-open:not(.is-template) x-icon{transform:rotate(90deg)}body>x-tree-node.cdk-drag-preview .x-tree-node-line{position:absolute;left:.5rem;height:calc(100% + .25rem);display:flex;align-items:center;justify-content:space-between}body>x-tree-node.cdk-drag-preview .x-tree-node-line-vertical{position:absolute;height:100%;border-right:var(--x-border-width) var(--x-border-style) var(--x-border)}body>x-tree-node.cdk-drag-preview .x-tree-node-line-horizontal{position:absolute;border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}body>x-tree-node.cdk-drag-preview .x-tree-node-last .x-tree-node-line-vertical.is-last{height:50%;top:0}body>x-tree-node.cdk-drag-preview .x-tree-node-operations{display:none}body>x-tree-node.cdk-drag-preview .x-tree-node-operations .x-link{padding:0 .125rem}body>x-tree-node.cdk-drag-preview .x-tree-node-label{flex:1;-webkit-user-select:none;user-select:none}body>x-tree-node.cdk-drag-preview .x-tree-node-label.nowrap{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}body>x-tree-node.cdk-drag-preview .x-tree-node-drag-indicator{position:absolute;height:.0625rem;border-radius:var(--x-border-radius);background-color:var(--x-primary);right:0;z-index:1}body>x-tree-node.cdk-drag-preview .x-tree-node-drag-indicator:before{position:absolute;top:-.125rem;left:-.2625rem;width:.325rem;height:.325rem;background-color:transparent;border-color:var(--x-primary);border-style:solid;border-width:.0625rem .0625rem 0 0;content:\" \";transform:rotate(45deg)}body>x-tree-node.cdk-drag-preview .x-tree-node-content{border-color:var(--x-border);color:var(--x-text-400);background-color:var(--x-background-a100);opacity:.5}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "component", type: XCheckboxComponent, selector: "x-checkbox" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: XLinkComponent, selector: "x-link" }, { kind: "directive", type: XKeywordDirective, selector: "[x-keyword]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
265
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XTreeNodeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
266
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: XTreeNodeComponent, isStandalone: true, selector: "x-tree-node, [x-tree-node]", outputs: { nodeMouseenter: "nodeMouseenter" }, host: { listeners: { "mouseenter": "onMouseenter($event)", "mouseleave": "onMouseleave()" }, properties: { "class.x-tree-node": "this.rootClass" } }, usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"x-tree-node-content\"\r\n [class.x-activated]=\"activated()\"\r\n [class.x-disabled]=\"disabled()\"\r\n [class.x-tree-node-sub]=\"!leaf()\"\r\n [class.x-tree-node-last]=\"isChildrenLast()\"\r\n [style.padding-left.px]=\"paddingLeft() + fontSize() / 2\"\r\n [style.height]=\"height() ? height() : nodeHeight() ? nodeHeight() : ''\"\r\n [style.align-items]=\"alignItems() ? alignItems() : nodeAlignItems()\"\r\n (click)=\"!disabled() && onActivate($event, node())\"\r\n>\r\n @if (tree.showLine() && level()! > 0) {\r\n <div class=\"x-tree-node-line\" [style.width.px]=\"paddingLeft()\">\r\n @for (i of verticalLevel(); track i) {\r\n <div\r\n class=\"x-tree-node-line-vertical\"\r\n [hidden]=\"isParentLast()[i - 1]\"\r\n [class.is-last]=\"i === verticalLevel().length\"\r\n [style.left.px]=\"getVerticalLeft(i)\"\r\n ></div>\r\n }\r\n <div\r\n class=\"x-tree-node-line-horizontal\"\r\n [style.width.px]=\"verticalWidth()\"\r\n [style.left.px]=\"getVerticalLeft(verticalLevel().length)\"\r\n ></div>\r\n </div>\r\n }\r\n @if (showDragIndicator()) {\r\n <div class=\"x-tree-node-drag-indicator\" [style.width]=\"indicatorWidth()\" [ngStyle]=\"indicatorStyle()\"></div>\r\n }\r\n @if (loading()) {\r\n <x-icon class=\"x-tree-node-loading\" type=\"fto-loader\" [spin]=\"loading()!\"></x-icon>\r\n } @else {\r\n <div\r\n class=\"x-tree-node-right\"\r\n [class.is-leaf]=\"leaf()\"\r\n [class.is-open]=\"open()\"\r\n [class.is-template]=\"tree.expandedIcon()\"\r\n [style.width.px]=\"verticalWidth() * 2\"\r\n (click)=\"!tree.nodeOpen() && onToggle($event, node())\"\r\n >\r\n @if (tree.expandedIcon()) {\r\n <ng-container *xOutlet=\"tree.expandedIcon(); context: { $node: node() }\"></ng-container>\r\n } @else {\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n }\r\n </div>\r\n }\r\n @if (tree.checkbox()) {\r\n <x-checkbox\r\n [data]=\"[{ label: '', id: id() }]\"\r\n [(ngModel)]=\"checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"indeterminate()!\"\r\n [disabled]=\"disabled()!\"\r\n (click)=\"$event.stopPropagation()\"\r\n single\r\n ></x-checkbox>\r\n }\r\n @if (!tree.labelTpl()) {\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"nowrap() === false || nowrap() === true ? nowrap() : nodeNowrap()\"\r\n [title]=\"label()\"\r\n x-keyword\r\n [text]=\"tree.keywordText()\"\r\n [caseSensitive]=\"tree.caseSensitive()\"\r\n >{{ label() }}</span\r\n >\r\n } @else {\r\n <ng-container *xOutlet=\"tree.labelTpl(); context: { $node: node() }\"></ng-container>\r\n }\r\n <span class=\"x-tree-node-operations\">\r\n @for (action of tree.actions(); track action.id) {\r\n <x-link [icon]=\"action.icon\" [title]=\"action.label\" (click)=\"onAction($event, action, node())\"></x-link>\r\n }\r\n </span>\r\n @if (tree.multiple() && activated()) {\r\n <x-icon class=\"x-tree-node-checked\" type=\"fto-check\"></x-icon>\r\n }\r\n</div>\r\n", styles: ["x-tree-node{display:block}.x-tree-node{display:block}.x-tree-node{margin:0;padding:0}.x-tree-node-content{position:relative;display:flex;border-radius:var(--x-border-radius);margin:.125rem 0;padding-right:.5rem;line-height:var(--x-height-small);cursor:pointer}.x-tree-node-content x-icon{padding:.25rem;font-size:1.25rem;transition:var(--x-animation-duration-base)}.x-tree-node-content x-icon:hover{color:var(--x-text-200)}.x-tree-node-content x-checkbox{margin-right:.325rem;padding:.25rem 0}.x-tree-node-content.x-disabled{color:var(--x-text-400)}.x-tree-node-content:not(.x-disabled):hover{background-color:var(--x-background-a200)}.x-tree-node-content:not(.x-disabled):hover .x-tree-node-operations{display:flex;align-items:center}.x-tree-node-content:not(.x-disabled).x-activated{background-color:var(--x-primary-900);color:var(--x-primary)}.x-tree-node-content:not(.x-disabled).x-tree-node-checked{color:var(--x-primary)}.x-tree-node-right,.x-tree-node-loading{color:var(--x-text-300);margin-right:.125rem}.x-tree-node-right{display:flex;align-items:center;justify-content:center}.x-tree-node-right.is-leaf{visibility:hidden}.x-tree-node-right.is-open:not(.is-template) x-icon{transform:rotate(90deg)}.x-tree-node-line{position:absolute;left:.5rem;height:calc(100% + .25rem);display:flex;align-items:center;justify-content:space-between}.x-tree-node-line-vertical{position:absolute;height:100%;border-right:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-tree-node-line-horizontal{position:absolute;border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-tree-node-last .x-tree-node-line-vertical.is-last{height:50%;top:0}.x-tree-node-operations{display:none}.x-tree-node-operations .x-link{padding:0 .125rem}.x-tree-node-label{flex:1;-webkit-user-select:none;user-select:none}.x-tree-node-label.nowrap{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.x-tree-node-drag-indicator{position:absolute;height:.0625rem;border-radius:var(--x-border-radius);background-color:var(--x-primary);right:0;z-index:1}.x-tree-node-drag-indicator:before{position:absolute;top:-.125rem;left:-.2625rem;width:.325rem;height:.325rem;background-color:transparent;border-color:var(--x-primary);border-style:solid;border-width:.0625rem .0625rem 0 0;content:\" \";transform:rotate(45deg)}body>x-tree-node{display:block}body>x-tree-node.cdk-drag-preview .x-tree-node-content{position:relative;display:flex;border-radius:var(--x-border-radius);margin:.125rem 0;padding-right:.5rem;line-height:var(--x-height-small);cursor:pointer}body>x-tree-node.cdk-drag-preview .x-tree-node-content x-icon{padding:.25rem;font-size:1.25rem;transition:var(--x-animation-duration-base)}body>x-tree-node.cdk-drag-preview .x-tree-node-content x-icon:hover{color:var(--x-text-200)}body>x-tree-node.cdk-drag-preview .x-tree-node-content x-checkbox{margin-right:.325rem;padding:.25rem 0}body>x-tree-node.cdk-drag-preview .x-tree-node-content.x-disabled{color:var(--x-text-400)}body>x-tree-node.cdk-drag-preview .x-tree-node-content:not(.x-disabled):hover{background-color:var(--x-background-a200)}body>x-tree-node.cdk-drag-preview .x-tree-node-content:not(.x-disabled):hover .x-tree-node-operations{display:flex;align-items:center}body>x-tree-node.cdk-drag-preview .x-tree-node-content:not(.x-disabled).x-activated{background-color:var(--x-primary-900);color:var(--x-primary)}body>x-tree-node.cdk-drag-preview .x-tree-node-content:not(.x-disabled).x-tree-node-checked{color:var(--x-primary)}body>x-tree-node.cdk-drag-preview .x-tree-node-right,body>x-tree-node.cdk-drag-preview .x-tree-node-loading{color:var(--x-text-300);margin-right:.125rem}body>x-tree-node.cdk-drag-preview .x-tree-node-right{display:flex;align-items:center;justify-content:center}body>x-tree-node.cdk-drag-preview .x-tree-node-right.is-leaf{visibility:hidden}body>x-tree-node.cdk-drag-preview .x-tree-node-right.is-open:not(.is-template) x-icon{transform:rotate(90deg)}body>x-tree-node.cdk-drag-preview .x-tree-node-line{position:absolute;left:.5rem;height:calc(100% + .25rem);display:flex;align-items:center;justify-content:space-between}body>x-tree-node.cdk-drag-preview .x-tree-node-line-vertical{position:absolute;height:100%;border-right:var(--x-border-width) var(--x-border-style) var(--x-border)}body>x-tree-node.cdk-drag-preview .x-tree-node-line-horizontal{position:absolute;border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}body>x-tree-node.cdk-drag-preview .x-tree-node-last .x-tree-node-line-vertical.is-last{height:50%;top:0}body>x-tree-node.cdk-drag-preview .x-tree-node-operations{display:none}body>x-tree-node.cdk-drag-preview .x-tree-node-operations .x-link{padding:0 .125rem}body>x-tree-node.cdk-drag-preview .x-tree-node-label{flex:1;-webkit-user-select:none;user-select:none}body>x-tree-node.cdk-drag-preview .x-tree-node-label.nowrap{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}body>x-tree-node.cdk-drag-preview .x-tree-node-drag-indicator{position:absolute;height:.0625rem;border-radius:var(--x-border-radius);background-color:var(--x-primary);right:0;z-index:1}body>x-tree-node.cdk-drag-preview .x-tree-node-drag-indicator:before{position:absolute;top:-.125rem;left:-.2625rem;width:.325rem;height:.325rem;background-color:transparent;border-color:var(--x-primary);border-style:solid;border-width:.0625rem .0625rem 0 0;content:\" \";transform:rotate(45deg)}body>x-tree-node.cdk-drag-preview .x-tree-node-content{border-color:var(--x-border);color:var(--x-text-400);background-color:var(--x-background-a100);opacity:.5}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "component", type: XCheckboxComponent, selector: "x-checkbox" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: XLinkComponent, selector: "x-link" }, { kind: "directive", type: XKeywordDirective, selector: "[x-keyword]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
267
267
  }
268
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: XTreeNodeComponent, decorators: [{
268
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: XTreeNodeComponent, decorators: [{
269
269
  type: Component,
270
270
  args: [{ selector: `${XTreeNodePrefix}, [${XTreeNodePrefix}]`, standalone: true, imports: [
271
271
  NgStyle,
@@ -275,7 +275,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
275
275
  XOutletDirective,
276
276
  XLinkComponent,
277
277
  XKeywordDirective
278
- ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"x-tree-node-content\"\r\n [class.x-activated]=\"activated()\"\r\n [class.x-disabled]=\"disabled()\"\r\n [class.x-tree-node-sub]=\"!leaf()\"\r\n [class.x-tree-node-last]=\"isChildrenLast()\"\r\n [style.padding-left.px]=\"paddingLeft() + fontSize() / 2\"\r\n [style.height]=\"height() ? height() : nodeHeight() ? nodeHeight() : ''\"\r\n [style.align-items]=\"alignItems() ? alignItems() : nodeAlignItems()\"\r\n (click)=\"!disabled() && onActivate($event, node())\"\r\n>\r\n @if (tree.showLine() && level()! > 0) {\r\n <div class=\"x-tree-node-line\" [style.width.px]=\"paddingLeft()\">\r\n @for (i of verticalLevel(); track i) {\r\n <div\r\n class=\"x-tree-node-line-vertical\"\r\n [hidden]=\"isParentLast()[i - 1]\"\r\n [class.is-last]=\"i === verticalLevel().length\"\r\n [style.left.px]=\"getVerticalLeft(i)\"\r\n ></div>\r\n }\r\n <div\r\n class=\"x-tree-node-line-horizontal\"\r\n [style.width.px]=\"verticalWidth()\"\r\n [style.left.px]=\"getVerticalLeft(verticalLevel().length)\"\r\n ></div>\r\n </div>\r\n }\r\n @if (showDragIndicator()) {\r\n <div class=\"x-tree-node-drag-indicator\" [style.width]=\"indicatorWidth()\" [ngStyle]=\"indicatorStyle()\"></div>\r\n }\r\n @if (loading()) {\r\n <x-icon class=\"x-tree-node-loading\" type=\"fto-loader\" [spin]=\"loading()!\"></x-icon>\r\n } @else {\r\n <div\r\n class=\"x-tree-node-right\"\r\n [class.is-leaf]=\"leaf()\"\r\n [class.is-open]=\"open()\"\r\n [class.is-template]=\"tree.expandedIcon()\"\r\n [style.width.px]=\"verticalWidth() * 2\"\r\n (click)=\"!tree.nodeOpen() && onToggle($event, node())\"\r\n >\r\n @if (tree.expandedIcon()) {\r\n <ng-container *xOutlet=\"tree.expandedIcon(); context: { $node: node() }\"></ng-container>\r\n } @else {\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n }\r\n </div>\r\n }\r\n @if (tree.checkbox()) {\r\n <x-checkbox\r\n [data]=\"[{ label: '', id: id() }]\"\r\n [(ngModel)]=\"checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"indeterminate()!\"\r\n [disabled]=\"disabled()!\"\r\n (click)=\"$event.stopPropagation()\"\r\n single\r\n ></x-checkbox>\r\n }\r\n @if (!tree.labelTpl()) {\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"nowrap() === false || nowrap() === true ? nowrap() : nodeNowrap()\"\r\n [title]=\"label()\"\r\n x-keyword\r\n [text]=\"tree.keywordText()\"\r\n [caseSensitive]=\"tree.caseSensitive()\"\r\n >{{ label() }}</span\r\n >\r\n } @else {\r\n <ng-container *xOutlet=\"tree.labelTpl(); context: { $node: node() }\"></ng-container>\r\n }\r\n <span class=\"x-tree-node-operations\">\r\n @for (action of tree.actions(); track action.id) {\r\n <x-link [icon]=\"action.icon\" [title]=\"action.label\" (click)=\"onAction($event, action, node())\"></x-link>\r\n }\r\n </span>\r\n @if (tree.multiple() && activated()) {\r\n <x-icon class=\"x-tree-node-checked\" type=\"fto-check\"></x-icon>\r\n }\r\n</div>\r\n", styles: ["x-tree-node{display:block}.x-tree-node{display:block;margin:0;padding:0}.x-tree-node-content{position:relative;display:flex;border-radius:var(--x-border-radius);margin:.125rem 0;padding-right:.5rem;line-height:var(--x-height-small);cursor:pointer}.x-tree-node-content x-icon{padding:.25rem;font-size:1.25rem;transition:var(--x-animation-duration-base)}.x-tree-node-content x-icon:hover{color:var(--x-text-200)}.x-tree-node-content x-checkbox{margin-right:.325rem;padding:.25rem 0}.x-tree-node-content.x-disabled{color:var(--x-text-400)}.x-tree-node-content:not(.x-disabled):hover{background-color:var(--x-background-a200)}.x-tree-node-content:not(.x-disabled):hover .x-tree-node-operations{display:flex;align-items:center}.x-tree-node-content:not(.x-disabled).x-activated{background-color:var(--x-primary-900);color:var(--x-primary)}.x-tree-node-content:not(.x-disabled).x-tree-node-checked{color:var(--x-primary)}.x-tree-node-right,.x-tree-node-loading{color:var(--x-text-300);margin-right:.125rem}.x-tree-node-right{display:flex;align-items:center;justify-content:center}.x-tree-node-right.is-leaf{visibility:hidden}.x-tree-node-right.is-open:not(.is-template) x-icon{transform:rotate(90deg)}.x-tree-node-line{position:absolute;left:.5rem;height:calc(100% + .25rem);display:flex;align-items:center;justify-content:space-between}.x-tree-node-line-vertical{position:absolute;height:100%;border-right:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-tree-node-line-horizontal{position:absolute;border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-tree-node-last .x-tree-node-line-vertical.is-last{height:50%;top:0}.x-tree-node-operations{display:none}.x-tree-node-operations .x-link{padding:0 .125rem}.x-tree-node-label{flex:1;-webkit-user-select:none;user-select:none}.x-tree-node-label.nowrap{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.x-tree-node-drag-indicator{position:absolute;height:.0625rem;border-radius:var(--x-border-radius);background-color:var(--x-primary);right:0;z-index:1}.x-tree-node-drag-indicator:before{position:absolute;top:-.125rem;left:-.2625rem;width:.325rem;height:.325rem;background-color:transparent;border-color:var(--x-primary);border-style:solid;border-width:.0625rem .0625rem 0 0;content:\" \";transform:rotate(45deg)}body>x-tree-node{display:block}body>x-tree-node.cdk-drag-preview .x-tree-node-content{position:relative;display:flex;border-radius:var(--x-border-radius);margin:.125rem 0;padding-right:.5rem;line-height:var(--x-height-small);cursor:pointer}body>x-tree-node.cdk-drag-preview .x-tree-node-content x-icon{padding:.25rem;font-size:1.25rem;transition:var(--x-animation-duration-base)}body>x-tree-node.cdk-drag-preview .x-tree-node-content x-icon:hover{color:var(--x-text-200)}body>x-tree-node.cdk-drag-preview .x-tree-node-content x-checkbox{margin-right:.325rem;padding:.25rem 0}body>x-tree-node.cdk-drag-preview .x-tree-node-content.x-disabled{color:var(--x-text-400)}body>x-tree-node.cdk-drag-preview .x-tree-node-content:not(.x-disabled):hover{background-color:var(--x-background-a200)}body>x-tree-node.cdk-drag-preview .x-tree-node-content:not(.x-disabled):hover .x-tree-node-operations{display:flex;align-items:center}body>x-tree-node.cdk-drag-preview .x-tree-node-content:not(.x-disabled).x-activated{background-color:var(--x-primary-900);color:var(--x-primary)}body>x-tree-node.cdk-drag-preview .x-tree-node-content:not(.x-disabled).x-tree-node-checked{color:var(--x-primary)}body>x-tree-node.cdk-drag-preview .x-tree-node-right,body>x-tree-node.cdk-drag-preview .x-tree-node-loading{color:var(--x-text-300);margin-right:.125rem}body>x-tree-node.cdk-drag-preview .x-tree-node-right{display:flex;align-items:center;justify-content:center}body>x-tree-node.cdk-drag-preview .x-tree-node-right.is-leaf{visibility:hidden}body>x-tree-node.cdk-drag-preview .x-tree-node-right.is-open:not(.is-template) x-icon{transform:rotate(90deg)}body>x-tree-node.cdk-drag-preview .x-tree-node-line{position:absolute;left:.5rem;height:calc(100% + .25rem);display:flex;align-items:center;justify-content:space-between}body>x-tree-node.cdk-drag-preview .x-tree-node-line-vertical{position:absolute;height:100%;border-right:var(--x-border-width) var(--x-border-style) var(--x-border)}body>x-tree-node.cdk-drag-preview .x-tree-node-line-horizontal{position:absolute;border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}body>x-tree-node.cdk-drag-preview .x-tree-node-last .x-tree-node-line-vertical.is-last{height:50%;top:0}body>x-tree-node.cdk-drag-preview .x-tree-node-operations{display:none}body>x-tree-node.cdk-drag-preview .x-tree-node-operations .x-link{padding:0 .125rem}body>x-tree-node.cdk-drag-preview .x-tree-node-label{flex:1;-webkit-user-select:none;user-select:none}body>x-tree-node.cdk-drag-preview .x-tree-node-label.nowrap{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}body>x-tree-node.cdk-drag-preview .x-tree-node-drag-indicator{position:absolute;height:.0625rem;border-radius:var(--x-border-radius);background-color:var(--x-primary);right:0;z-index:1}body>x-tree-node.cdk-drag-preview .x-tree-node-drag-indicator:before{position:absolute;top:-.125rem;left:-.2625rem;width:.325rem;height:.325rem;background-color:transparent;border-color:var(--x-primary);border-style:solid;border-width:.0625rem .0625rem 0 0;content:\" \";transform:rotate(45deg)}body>x-tree-node.cdk-drag-preview .x-tree-node-content{border-color:var(--x-border);color:var(--x-text-400);background-color:var(--x-background-a100);opacity:.5}\n"] }]
278
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"x-tree-node-content\"\r\n [class.x-activated]=\"activated()\"\r\n [class.x-disabled]=\"disabled()\"\r\n [class.x-tree-node-sub]=\"!leaf()\"\r\n [class.x-tree-node-last]=\"isChildrenLast()\"\r\n [style.padding-left.px]=\"paddingLeft() + fontSize() / 2\"\r\n [style.height]=\"height() ? height() : nodeHeight() ? nodeHeight() : ''\"\r\n [style.align-items]=\"alignItems() ? alignItems() : nodeAlignItems()\"\r\n (click)=\"!disabled() && onActivate($event, node())\"\r\n>\r\n @if (tree.showLine() && level()! > 0) {\r\n <div class=\"x-tree-node-line\" [style.width.px]=\"paddingLeft()\">\r\n @for (i of verticalLevel(); track i) {\r\n <div\r\n class=\"x-tree-node-line-vertical\"\r\n [hidden]=\"isParentLast()[i - 1]\"\r\n [class.is-last]=\"i === verticalLevel().length\"\r\n [style.left.px]=\"getVerticalLeft(i)\"\r\n ></div>\r\n }\r\n <div\r\n class=\"x-tree-node-line-horizontal\"\r\n [style.width.px]=\"verticalWidth()\"\r\n [style.left.px]=\"getVerticalLeft(verticalLevel().length)\"\r\n ></div>\r\n </div>\r\n }\r\n @if (showDragIndicator()) {\r\n <div class=\"x-tree-node-drag-indicator\" [style.width]=\"indicatorWidth()\" [ngStyle]=\"indicatorStyle()\"></div>\r\n }\r\n @if (loading()) {\r\n <x-icon class=\"x-tree-node-loading\" type=\"fto-loader\" [spin]=\"loading()!\"></x-icon>\r\n } @else {\r\n <div\r\n class=\"x-tree-node-right\"\r\n [class.is-leaf]=\"leaf()\"\r\n [class.is-open]=\"open()\"\r\n [class.is-template]=\"tree.expandedIcon()\"\r\n [style.width.px]=\"verticalWidth() * 2\"\r\n (click)=\"!tree.nodeOpen() && onToggle($event, node())\"\r\n >\r\n @if (tree.expandedIcon()) {\r\n <ng-container *xOutlet=\"tree.expandedIcon(); context: { $node: node() }\"></ng-container>\r\n } @else {\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n }\r\n </div>\r\n }\r\n @if (tree.checkbox()) {\r\n <x-checkbox\r\n [data]=\"[{ label: '', id: id() }]\"\r\n [(ngModel)]=\"checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"indeterminate()!\"\r\n [disabled]=\"disabled()!\"\r\n (click)=\"$event.stopPropagation()\"\r\n single\r\n ></x-checkbox>\r\n }\r\n @if (!tree.labelTpl()) {\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"nowrap() === false || nowrap() === true ? nowrap() : nodeNowrap()\"\r\n [title]=\"label()\"\r\n x-keyword\r\n [text]=\"tree.keywordText()\"\r\n [caseSensitive]=\"tree.caseSensitive()\"\r\n >{{ label() }}</span\r\n >\r\n } @else {\r\n <ng-container *xOutlet=\"tree.labelTpl(); context: { $node: node() }\"></ng-container>\r\n }\r\n <span class=\"x-tree-node-operations\">\r\n @for (action of tree.actions(); track action.id) {\r\n <x-link [icon]=\"action.icon\" [title]=\"action.label\" (click)=\"onAction($event, action, node())\"></x-link>\r\n }\r\n </span>\r\n @if (tree.multiple() && activated()) {\r\n <x-icon class=\"x-tree-node-checked\" type=\"fto-check\"></x-icon>\r\n }\r\n</div>\r\n", styles: ["x-tree-node{display:block}.x-tree-node{display:block}.x-tree-node{margin:0;padding:0}.x-tree-node-content{position:relative;display:flex;border-radius:var(--x-border-radius);margin:.125rem 0;padding-right:.5rem;line-height:var(--x-height-small);cursor:pointer}.x-tree-node-content x-icon{padding:.25rem;font-size:1.25rem;transition:var(--x-animation-duration-base)}.x-tree-node-content x-icon:hover{color:var(--x-text-200)}.x-tree-node-content x-checkbox{margin-right:.325rem;padding:.25rem 0}.x-tree-node-content.x-disabled{color:var(--x-text-400)}.x-tree-node-content:not(.x-disabled):hover{background-color:var(--x-background-a200)}.x-tree-node-content:not(.x-disabled):hover .x-tree-node-operations{display:flex;align-items:center}.x-tree-node-content:not(.x-disabled).x-activated{background-color:var(--x-primary-900);color:var(--x-primary)}.x-tree-node-content:not(.x-disabled).x-tree-node-checked{color:var(--x-primary)}.x-tree-node-right,.x-tree-node-loading{color:var(--x-text-300);margin-right:.125rem}.x-tree-node-right{display:flex;align-items:center;justify-content:center}.x-tree-node-right.is-leaf{visibility:hidden}.x-tree-node-right.is-open:not(.is-template) x-icon{transform:rotate(90deg)}.x-tree-node-line{position:absolute;left:.5rem;height:calc(100% + .25rem);display:flex;align-items:center;justify-content:space-between}.x-tree-node-line-vertical{position:absolute;height:100%;border-right:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-tree-node-line-horizontal{position:absolute;border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-tree-node-last .x-tree-node-line-vertical.is-last{height:50%;top:0}.x-tree-node-operations{display:none}.x-tree-node-operations .x-link{padding:0 .125rem}.x-tree-node-label{flex:1;-webkit-user-select:none;user-select:none}.x-tree-node-label.nowrap{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.x-tree-node-drag-indicator{position:absolute;height:.0625rem;border-radius:var(--x-border-radius);background-color:var(--x-primary);right:0;z-index:1}.x-tree-node-drag-indicator:before{position:absolute;top:-.125rem;left:-.2625rem;width:.325rem;height:.325rem;background-color:transparent;border-color:var(--x-primary);border-style:solid;border-width:.0625rem .0625rem 0 0;content:\" \";transform:rotate(45deg)}body>x-tree-node{display:block}body>x-tree-node.cdk-drag-preview .x-tree-node-content{position:relative;display:flex;border-radius:var(--x-border-radius);margin:.125rem 0;padding-right:.5rem;line-height:var(--x-height-small);cursor:pointer}body>x-tree-node.cdk-drag-preview .x-tree-node-content x-icon{padding:.25rem;font-size:1.25rem;transition:var(--x-animation-duration-base)}body>x-tree-node.cdk-drag-preview .x-tree-node-content x-icon:hover{color:var(--x-text-200)}body>x-tree-node.cdk-drag-preview .x-tree-node-content x-checkbox{margin-right:.325rem;padding:.25rem 0}body>x-tree-node.cdk-drag-preview .x-tree-node-content.x-disabled{color:var(--x-text-400)}body>x-tree-node.cdk-drag-preview .x-tree-node-content:not(.x-disabled):hover{background-color:var(--x-background-a200)}body>x-tree-node.cdk-drag-preview .x-tree-node-content:not(.x-disabled):hover .x-tree-node-operations{display:flex;align-items:center}body>x-tree-node.cdk-drag-preview .x-tree-node-content:not(.x-disabled).x-activated{background-color:var(--x-primary-900);color:var(--x-primary)}body>x-tree-node.cdk-drag-preview .x-tree-node-content:not(.x-disabled).x-tree-node-checked{color:var(--x-primary)}body>x-tree-node.cdk-drag-preview .x-tree-node-right,body>x-tree-node.cdk-drag-preview .x-tree-node-loading{color:var(--x-text-300);margin-right:.125rem}body>x-tree-node.cdk-drag-preview .x-tree-node-right{display:flex;align-items:center;justify-content:center}body>x-tree-node.cdk-drag-preview .x-tree-node-right.is-leaf{visibility:hidden}body>x-tree-node.cdk-drag-preview .x-tree-node-right.is-open:not(.is-template) x-icon{transform:rotate(90deg)}body>x-tree-node.cdk-drag-preview .x-tree-node-line{position:absolute;left:.5rem;height:calc(100% + .25rem);display:flex;align-items:center;justify-content:space-between}body>x-tree-node.cdk-drag-preview .x-tree-node-line-vertical{position:absolute;height:100%;border-right:var(--x-border-width) var(--x-border-style) var(--x-border)}body>x-tree-node.cdk-drag-preview .x-tree-node-line-horizontal{position:absolute;border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}body>x-tree-node.cdk-drag-preview .x-tree-node-last .x-tree-node-line-vertical.is-last{height:50%;top:0}body>x-tree-node.cdk-drag-preview .x-tree-node-operations{display:none}body>x-tree-node.cdk-drag-preview .x-tree-node-operations .x-link{padding:0 .125rem}body>x-tree-node.cdk-drag-preview .x-tree-node-label{flex:1;-webkit-user-select:none;user-select:none}body>x-tree-node.cdk-drag-preview .x-tree-node-label.nowrap{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}body>x-tree-node.cdk-drag-preview .x-tree-node-drag-indicator{position:absolute;height:.0625rem;border-radius:var(--x-border-radius);background-color:var(--x-primary);right:0;z-index:1}body>x-tree-node.cdk-drag-preview .x-tree-node-drag-indicator:before{position:absolute;top:-.125rem;left:-.2625rem;width:.325rem;height:.325rem;background-color:transparent;border-color:var(--x-primary);border-style:solid;border-width:.0625rem .0625rem 0 0;content:\" \";transform:rotate(45deg)}body>x-tree-node.cdk-drag-preview .x-tree-node-content{border-color:var(--x-border);color:var(--x-text-400);background-color:var(--x-background-a100);opacity:.5}\n"] }]
279
279
  }], propDecorators: { rootClass: [{
280
280
  type: HostBinding,
281
281
  args: ['class.x-tree-node']
@@ -286,4 +286,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
286
286
  type: HostListener,
287
287
  args: ['mouseleave']
288
288
  }] } });
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RyZWUvdHJlZS1ub2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RyZWUvdHJlZS1ub2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWEsaUJBQWlCLEVBQWUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RixPQUFPLEVBQUUsUUFBUSxFQUFZLGNBQWMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9C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QjtnQkFLUSxZQUFZO3NCQUFuRCxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFJVixZQUFZO3NCQUF2QyxZQUFZO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBFbGVtZW50UmVmLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBpbmplY3QsXHJcbiAgY29tcHV0ZWQsXHJcbiAgc2lnbmFsLFxyXG4gIG91dHB1dFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYVHJlZU5vZGVQcmVmaXgsIFhUcmVlTm9kZSwgWFRyZWVOb2RlUHJvcGVydHksIFhUcmVlQWN0aW9uIH0gZnJvbSAnLi90cmVlLnByb3BlcnR5JztcclxuaW1wb3J0IHsgWElzRW1wdHksIFhCb29sZWFuLCBYQ29tcHV0ZWRTdHlsZSwgWFRvQ3NzUHgsIFhJc09iamVjdEFycmF5LCBYSXNBcnJheSB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFhUcmVlU2VydmljZSB9IGZyb20gJy4vdHJlZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRE9DVU1FTlQsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBYSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2ljb24nO1xyXG5pbXBvcnQgeyBYQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9jaGVja2JveCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBYS2V5d29yZERpcmVjdGl2ZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2tleXdvcmQnO1xyXG5pbXBvcnQgeyBYTGlua0NvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2xpbmsnO1xyXG5pbXBvcnQgeyBYT3V0bGV0RGlyZWN0aXZlIH0gZnJvbSAnQG5nLW5lc3QvdWkvb3V0bGV0JztcclxuaW1wb3J0IHsgWFRyZWVDb21wb25lbnQgfSBmcm9tICcuL3RyZWUuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYVHJlZU5vZGVQcmVmaXh9LCBbJHtYVHJlZU5vZGVQcmVmaXh9XWAsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ1N0eWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBYSWNvbkNvbXBvbmVudCxcclxuICAgIFhDaGVja2JveENvbXBvbmVudCxcclxuICAgIFhPdXRsZXREaXJlY3RpdmUsXHJcbiAgICBYTGlua0NvbXBvbmVudCxcclxuICAgIFhLZXl3b3JkRGlyZWN0aXZlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS1ub2RlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90cmVlLW5vZGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYVHJlZU5vZGVDb21wb25lbnQgZXh0ZW5kcyBYVHJlZU5vZGVQcm9wZXJ0eSB7XHJcbiAgdHJlZSA9IGluamVjdChYVHJlZUNvbXBvbmVudCwgeyBvcHRpb25hbDogdHJ1ZSwgaG9zdDogdHJ1ZSB9KSE7XHJcbiAgbm9kZU1vdXNlZW50ZXIgPSBvdXRwdXQ8eyBldmVudDogTW91c2VFdmVudDsgbm9kZTogWFRyZWVOb2RlOyBlbGU6IEVsZW1lbnRSZWYgfT4oKTtcclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLngtdHJlZS1ub2RlJykgcm9vdENsYXNzID0gdHJ1ZTtcclxuICBwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcclxuICBmb250U2l6ZSA9IGNvbXB1dGVkKCgpID0+IHBhcnNlRmxvYXQoWENvbXB1dGVkU3R5bGUodGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdmb250LXNpemUnKSkpO1xyXG4gIHByaXZhdGUgdW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicsIFsnJGV2ZW50J10pIG9uTW91c2VlbnRlcihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5ub2RlTW91c2VlbnRlci5lbWl0KHsgZXZlbnQ6IGV2ZW50LCBub2RlOiB0aGlzLm5vZGUoKSwgZWxlOiB0aGlzLmVsZW1lbnRSZWYgfSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJykgb25Nb3VzZWxlYXZlKF9ldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLnRyZWUuZHJhZ2dpbmcoKSkgcmV0dXJuO1xyXG4gICAgY29uc3QgaG92ZXJUcmVlTm9kZSA9IHRoaXMudHJlZS5ob3ZlclRyZWVOb2RlKCk7XHJcbiAgICBob3ZlclRyZWVOb2RlICYmIGhvdmVyVHJlZU5vZGUuY2hhbmdlICYmIGhvdmVyVHJlZU5vZGUuY2hhbmdlKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzaG93RHJhZ0luZGljYXRvciA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIHJldHVybiB0aGlzLnRyZWUuZHJhZ2dpbmcoKSAmJiB0aGlzLnRyZWUuaG92ZXJUcmVlTm9kZSgpPy5pZCA9PT0gdGhpcy5pZCgpO1xyXG4gIH0pO1xyXG5cclxuICBpc0NoaWxkcmVuTGFzdCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGxldCBwYXJlbnQgPSB0aGlzLnRyZWUubm9kZXMoKS5maW5kKCh4OiBYVHJlZU5vZGUpID0+IHguaWQgPT09IHRoaXMucGlkKCkpO1xyXG4gICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC5jaGlsZHJlbikgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgaW5kZXggPSBwYXJlbnQuY2hpbGRyZW4uaW5kZXhPZih0aGlzLm5vZGUoKSk7XHJcbiAgICByZXR1cm4gaW5kZXggKyAxID09PSBwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoO1xyXG4gIH0pO1xyXG5cclxuICBpc1BhcmVudExhc3QgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBsZXQgcGFyZW50cyA9IHRoaXMudHJlZVNlcnZpY2UuZ2V0UGFyZW50cyh0aGlzLnRyZWUubm9kZXMoKSwgdGhpcy5ub2RlKCkpO1xyXG4gICAgaWYgKHBhcmVudHMubGVuZ3RoIDw9IDEpIHJldHVybiBbXTtcclxuICAgIGNvbnN0IHJlczogYm9vbGVhbltdID0gW107XHJcbiAgICBwYXJlbnRzLnJlZHVjZSgocHJlOiBYVHJlZU5vZGUsIGN1cnI6IFhUcmVlTm9kZSkgPT4ge1xyXG4gICAgICBpZiAocHJlID09PSBudWxsKSByZXR1cm4gY3VycjtcclxuICAgICAgY29uc3QgaW5kZXggPSBjdXJyLmNoaWxkcmVuPy5pbmRleE9mKHByZSkhO1xyXG4gICAgICByZXMucHVzaChpbmRleCArIDEgPT09IGN1cnIuY2hpbGRyZW4/Lmxlbmd0aCEpO1xyXG4gICAgICByZXR1cm4gY3VycjtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiByZXMucmV2ZXJzZSgpO1xyXG4gIH0pO1xyXG5cclxuICB2ZXJ0aWNhbExldmVsID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMubGV2ZWwoKSEgPiAwKSB7XHJcbiAgICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLmxldmVsKCkhIH0pLm1hcCgoX3gsIGluZGV4KSA9PiBpbmRleCArIDEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICB2ZXJ0aWNhbFdpZHRoID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgcmV0dXJuIFhUb0Nzc1B4KHRoaXMudHJlZS5zcGFjaW5nKCksIHRoaXMuZm9udFNpemUoKSkgLyAyO1xyXG4gIH0pO1xyXG5cclxuICBwYWRkaW5nTGVmdCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmxldmVsKCkhID8gdGhpcy5sZXZlbCgpISA6IDApICogWFRvQ3NzUHgodGhpcy50cmVlLnNwYWNpbmcoKSwgdGhpcy5mb250U2l6ZSgpKSk7XHJcblxyXG4gIGluZGljYXRvcldpZHRoID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgcmV0dXJuIGBjYWxjKDEwMCUgLSAke3RoaXMucGFkZGluZ0xlZnQoKSArICh0aGlzLmxlYWYoKSA/IHRoaXMuZm9udFNpemUoKSAqIDEuNSA6IDApfXB4KWA7XHJcbiAgfSk7XHJcblxyXG4gIGluZGljYXRvclN0eWxlID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMudHJlZS5kcmFnUG9zaXRpb24oKSA9PT0gMSkge1xyXG4gICAgICByZXR1cm4geyBib3R0b206IGAtJHswLjA2MjUgKiB0aGlzLmZvbnRTaXplKCl9cHhgIH07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudHJlZS5kcmFnUG9zaXRpb24oKSA9PT0gLTEpIHtcclxuICAgICAgcmV0dXJuIHsgdG9wOiBgLSR7MC4wNjI1ICogdGhpcy5mb250U2l6ZSgpfXB4YCB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHt9O1xyXG4gIH0pO1xyXG5cclxuICBjaGFuZ2VkID0gc2lnbmFsKGZhbHNlKTtcclxuXHJcbiAgYWN0aXZhdGVkID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgdGhpcy5jaGFuZ2VkKCk7XHJcbiAgICBjb25zdCBhY3RpdmF0ZWRJZCA9IHRoaXMudHJlZS5hY3RpdmF0ZWRJZCgpO1xyXG4gICAgaWYgKHRoaXMudHJlZS5tdWx0aXBsZSgpKSB7XHJcbiAgICAgIGlmICh0aGlzLnRyZWUub2JqZWN0QXJyYXkoKSkge1xyXG4gICAgICAgIHJldHVybiBYSXNPYmplY3RBcnJheTxYVHJlZU5vZGVbXT4oYWN0aXZhdGVkSWQpICYmIGFjdGl2YXRlZElkLm1hcCgoeDogWFRyZWVOb2RlKSA9PiB4LmlkKS5pbmNsdWRlcyh0aGlzLmlkKCkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBYSXNBcnJheTxhbnlbXT4oYWN0aXZhdGVkSWQpICYmIGFjdGl2YXRlZElkLmluY2x1ZGVzKHRoaXMuaWQoKSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBhY3RpdmF0ZWRJZCA9PT0gdGhpcy5pZCgpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSB0cmVlU2VydmljZSA9IGluamVjdChYVHJlZVNlcnZpY2UpO1xyXG4gIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMubm9kZSgpO1xyXG4gICAgbm9kZS5jaGFuZ2UgPSAoY2hlY2s6IGJvb2xlYW4pID0+IHtcclxuICAgICAgaWYgKGNoZWNrKSB0aGlzLnNldENoZWNrYm94KCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH07XHJcbiAgICBpZiAoIXRoaXMudHJlZS5sZXZlbENoZWNrKCkpIHJldHVybjtcclxuICAgIGlmICh0aGlzLmNoZWNrZWQoKSkgdGhpcy5zZXRDaGVja2JveCgpO1xyXG4gICAgdGhpcy5zZXRJbmRldGVybWluYXRlKHRoaXMubm9kZSgpKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy51blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy51blN1YmplY3QuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIG9uQWN0aXZhdGUoZXZlbnQ6IEV2ZW50LCBub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGNvbnN0IGNoYW5nZTogRnVuY3Rpb24gPSB0aGlzLnRyZWUuYWN0aXZhdGVkTm9kZSgpPy5jaGFuZ2UgYXMgRnVuY3Rpb247XHJcbiAgICB0aGlzLnRyZWUubm9kZU9wZW4oKSAmJiAhdGhpcy5sZWFmKCkgJiYgdGhpcy5vblRvZ2dsZShldmVudCwgbm9kZSk7XHJcbiAgICBjb25zdCBvbkNoYW5nZSA9ICgpID0+IHtcclxuICAgICAgY2hhbmdlICYmIGNoYW5nZSgpO1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLnRyZWUub25seUxlYWYoKSAmJiAhdGhpcy5sZWFmKCkpIHtcclxuICAgICAgb25DaGFuZ2UoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudHJlZS5tdWx0aXBsZSgpKSB7XHJcbiAgICAgIGlmICghdGhpcy50cmVlLmFjdGl2YXRlZElkKCkpIHRoaXMudHJlZS5hY3RpdmF0ZWRJZC5zZXQoW10pO1xyXG4gICAgICBpZiAodGhpcy50cmVlLm9iamVjdEFycmF5KCkpIHtcclxuICAgICAgICBjb25zdCBpZHMgPSB0aGlzLnRyZWUuYWN0aXZhdGVkSWQoKS5tYXAoKHg6IFhUcmVlTm9kZSkgPT4geC5pZCk7XHJcbiAgICAgICAgaWYgKGlkcy5pbmNsdWRlcyhub2RlLmlkKSkge1xyXG4gICAgICAgICAgdGhpcy50cmVlLmFjdGl2YXRlZElkLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgICAgICB4LnNwbGljZShpZHMuaW5kZXhPZihub2RlLmlkKSwgMSk7XHJcbiAgICAgICAgICAgIHJldHVybiBbLi4ueF07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50cmVlLmFjdGl2YXRlZElkLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgICAgICB4LnB1c2gobm9kZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBbLi4ueF07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMudHJlZS5hY3RpdmF0ZWRJZCgpLmluY2x1ZGVzKG5vZGUuaWQpKSB7XHJcbiAgICAgICAgICB0aGlzLnRyZWUuYWN0aXZhdGVkSWQudXBkYXRlKCh4KSA9PiB7XHJcbiAgICAgICAgICAgIHguc3BsaWNlKHRoaXMudHJlZS5hY3RpdmF0ZWRJZCgpLmluZGV4T2Yobm9kZS5pZCksIDEpO1xyXG4gICAgICAgICAgICByZXR1cm4gWy4uLnhdO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudHJlZS5hY3RpdmF0ZWRJZC51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICAgICAgeC5wdXNoKG5vZGUuaWQpO1xyXG4gICAgICAgICAgICByZXR1cm4gWy4uLnhdO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRyZWUuYWN0aXZhdGVkSWQuc2V0KG5vZGUuaWQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudHJlZS5hY3RpdmF0ZWROb2RlKCkpIHtcclxuICAgICAgaWYgKHRoaXMudHJlZS5hY3RpdmF0ZWROb2RlKCk/LmlkID09PSBub2RlLmlkICYmICF0aGlzLnRyZWUuYWxsb3dNYW55QWN0aXZhdGVkKCkpIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudHJlZS5hY3RpdmF0ZWROb2RlLnNldChub2RlKTtcclxuICAgIHRoaXMuY2hhbmdlZC51cGRhdGUoKHgpID0+ICF4KTtcclxuICAgIHRoaXMudHJlZS5hY3RpdmF0ZWRDaGFuZ2UuZW1pdChub2RlKTtcclxuICAgIHRoaXMudHJlZS5ub2RlQ2xpY2suZW1pdChub2RlKTtcclxuICAgIG9uQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBvbkNoZWNrYm94Q2hhbmdlKCkge1xyXG4gICAgdGhpcy5zZXRDaGVja2JveCgpO1xyXG4gICAgdGhpcy50cmVlLmNoZWNrYm94Q2hhbmdlLmVtaXQodGhpcy5ub2RlKCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VmVydGljYWxMZWZ0KGk6IG51bWJlcikge1xyXG4gICAgY29uc3Qgc3BhY2luZyA9IFhUb0Nzc1B4KHRoaXMudHJlZS5zcGFjaW5nKCksIHRoaXMuZm9udFNpemUoKSk7XHJcbiAgICByZXR1cm4gKGkgLSAxKSAqIHNwYWNpbmcgKyBzcGFjaW5nIC8gMjtcclxuICB9XHJcblxyXG4gIHNldENoZWNrYm94KCkge1xyXG4gICAgaWYgKCF0aGlzLnRyZWUubGV2ZWxDaGVjaygpKSByZXR1cm47XHJcbiAgICB0aGlzLm5vZGUoKS5pbmRldGVybWluYXRlID0gdGhpcy5jaGVja2VkKCk7XHJcbiAgICB0aGlzLm5vZGUoKS5jaGlsZHJlbiAmJiB0aGlzLnNldENoaWxkcmVuQ2hlY2tib3godGhpcy5jaGVja2VkKCkhKTtcclxuICAgIGNvbnN0IHNldFBhcmVudCA9IChub2RlOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgbGV0IHBhcmVudCA9IHRoaXMudHJlZS5ub2RlcygpLmZpbmQoKHg6IFhUcmVlTm9kZSkgPT4geC5pZCA9PT0gbm9kZS5waWQpO1xyXG4gICAgICBpZiAoIXBhcmVudCB8fCBYSXNFbXB0eShwYXJlbnQuY2hpbGRyZW4pKSByZXR1cm47XHJcbiAgICAgIGxldCBjaGVja2VkTGlzdCA9IHBhcmVudC5jaGlsZHJlbj8uZmlsdGVyKCh5OiBYVHJlZU5vZGUpID0+IHkuY2hlY2tlZCk7XHJcbiAgICAgIGxldCBpbmRldGVybWluYXRlTGlzdCA9IHBhcmVudC5jaGlsZHJlbj8uZmlsdGVyKCh5OiBYVHJlZU5vZGUpID0+IHkuaW5kZXRlcm1pbmF0ZSk7XHJcbiAgICAgIHBhcmVudC5jaGVja2VkID0gY2hlY2tlZExpc3Q/Lmxlbmd0aCA9PT0gcGFyZW50LmNoaWxkcmVuPy5sZW5ndGg7XHJcbiAgICAgIHBhcmVudC5pbmRldGVybWluYXRlID0gKGNoZWNrZWRMaXN0IGFzIFhUcmVlTm9kZVtdKS5sZW5ndGggPiAwIHx8IChpbmRldGVybWluYXRlTGlzdCBhcyBYVHJlZU5vZGVbXSkubGVuZ3RoID4gMDtcclxuICAgICAgcGFyZW50LmNoYW5nZSAmJiBwYXJlbnQuY2hhbmdlKCk7XHJcbiAgICAgIHNldFBhcmVudChwYXJlbnQpO1xyXG4gICAgfTtcclxuICAgIHNldFBhcmVudCh0aGlzLm5vZGUoKSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRDaGlsZHJlbkNoZWNrYm94KGNoZWNrZWQ6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IHNldENoaWxkcmVuID0gKGNoaWxkcmVuOiBYVHJlZU5vZGVbXSwgaXNDaGVja2VkOiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGlmIChYSXNFbXB0eShjaGlsZHJlbikpIHJldHVybjtcclxuICAgICAgZm9yIChsZXQgeCBvZiBjaGlsZHJlbikge1xyXG4gICAgICAgIGlmICh4LmRpc2FibGVkKSBjb250aW51ZTtcclxuICAgICAgICB4LmNoZWNrZWQgPSBpc0NoZWNrZWQ7XHJcbiAgICAgICAgeC5pbmRldGVybWluYXRlID0gaXNDaGVja2VkO1xyXG4gICAgICAgIHguY2hhbmdlICYmIHguY2hhbmdlKCk7XHJcbiAgICAgICAgc2V0Q2hpbGRyZW4oeC5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSwgaXNDaGVja2VkKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHNldENoaWxkcmVuKHRoaXMubm9kZSgpLmNoaWxkcmVuIGFzIFhUcmVlTm9kZVtdLCBjaGVja2VkKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNldFBhcmVudENoZWNrYm94KCkge1xyXG4gICAgaWYgKFhJc0VtcHR5KHRoaXMubm9kZSgpLmNoaWxkcmVuKSkgcmV0dXJuO1xyXG4gICAgbGV0IGNoZWNrZWRMaXN0ID0gdGhpcy5ub2RlKCkuY2hpbGRyZW4/LmZpbHRlcigoeCkgPT4geC5jaGVja2VkKTtcclxuICAgIGxldCBpbmRldGVybWluYXRlTGlzdCA9IHRoaXMubm9kZSgpLmNoaWxkcmVuPy5maWx0ZXIoKHgpID0+IHguaW5kZXRlcm1pbmF0ZSk7XHJcbiAgICB0aGlzLm5vZGUoKS5jaGVja2VkID0gY2hlY2tlZExpc3Q/Lmxlbmd0aCA9PT0gdGhpcy5ub2RlKCkuY2hpbGRyZW4/Lmxlbmd0aDtcclxuICAgIHRoaXMubm9kZSgpLmluZGV0ZXJtaW5hdGUgPVxyXG4gICAgICAoY2hlY2tlZExpc3QgYXMgWFRyZWVOb2RlW10pLmxlbmd0aCA+IDAgfHwgKGluZGV0ZXJtaW5hdGVMaXN0IGFzIFhUcmVlTm9kZVtdKS5sZW5ndGggPiAwO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0SW5kZXRlcm1pbmF0ZShub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGNvbnN0IGdldENoaWxkcmVuID0gKGNoaWxkcmVuOiBYVHJlZU5vZGVbXSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkoY2hpbGRyZW4pKSByZXR1cm47XHJcbiAgICAgIGNoaWxkcmVuLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgICBpZiAoeC5pbmRldGVybWluYXRlIHx8IHguY2hlY2tlZCkge1xyXG4gICAgICAgICAgbm9kZS5pbmRldGVybWluYXRlID0gdHJ1ZTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZ2V0Q2hpbGRyZW4oeC5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIGdldENoaWxkcmVuKG5vZGUuY2hpbGRyZW4gYXMgWFRyZWVOb2RlW10pO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Tm9kZURpc2FibGVkKGRpc2FibGVkPzogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIGRpc2FibGVkIGFzIFhCb29sZWFuO1xyXG4gIH1cclxuXHJcbiAgb25BY3Rpb24oZXZlbnQ6IEV2ZW50LCBhY3Rpb246IFhUcmVlQWN0aW9uLCBub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGFjdGlvbi5oYW5kbGVyICYmIGFjdGlvbi5oYW5kbGVyKG5vZGUpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvblRvZ2dsZShldmVudDogRXZlbnQsIG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgdGhpcy50b2dnbGUuZW1pdChub2RlKTtcclxuICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUl0ZW0oX2luZGV4OiBudW1iZXIsIGl0ZW06IFhUcmVlTm9kZSkge1xyXG4gICAgcmV0dXJuIGAke2l0ZW0uaWR9LSR7aXRlbS5sZXZlbH1gO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUFjdGlvbihfaW5kZXg6IG51bWJlciwgaXRlbTogWFRyZWVBY3Rpb24pIHtcclxuICAgIHJldHVybiBpdGVtLmlkO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJ4LXRyZWUtbm9kZS1jb250ZW50XCJcclxuICBbY2xhc3MueC1hY3RpdmF0ZWRdPVwiYWN0aXZhdGVkKClcIlxyXG4gIFtjbGFzcy54LWRpc2FibGVkXT1cImRpc2FibGVkKClcIlxyXG4gIFtjbGFzcy54LXRyZWUtbm9kZS1zdWJdPVwiIWxlYWYoKVwiXHJcbiAgW2NsYXNzLngtdHJlZS1ub2RlLWxhc3RdPVwiaXNDaGlsZHJlbkxhc3QoKVwiXHJcbiAgW3N0eWxlLnBhZGRpbmctbGVmdC5weF09XCJwYWRkaW5nTGVmdCgpICsgZm9udFNpemUoKSAvIDJcIlxyXG4gIFtzdHlsZS5oZWlnaHRdPVwiaGVpZ2h0KCkgPyBoZWlnaHQoKSA6IG5vZGVIZWlnaHQoKSA/IG5vZGVIZWlnaHQoKSA6ICcnXCJcclxuICBbc3R5bGUuYWxpZ24taXRlbXNdPVwiYWxpZ25JdGVtcygpID8gYWxpZ25JdGVtcygpIDogbm9kZUFsaWduSXRlbXMoKVwiXHJcbiAgKGNsaWNrKT1cIiFkaXNhYmxlZCgpICYmIG9uQWN0aXZhdGUoJGV2ZW50LCBub2RlKCkpXCJcclxuPlxyXG4gIEBpZiAodHJlZS5zaG93TGluZSgpICYmIGxldmVsKCkhID4gMCkge1xyXG4gICAgPGRpdiBjbGFzcz1cIngtdHJlZS1ub2RlLWxpbmVcIiBbc3R5bGUud2lkdGgucHhdPVwicGFkZGluZ0xlZnQoKVwiPlxyXG4gICAgICBAZm9yIChpIG9mIHZlcnRpY2FsTGV2ZWwoKTsgdHJhY2sgaSkge1xyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwieC10cmVlLW5vZGUtbGluZS12ZXJ0aWNhbFwiXHJcbiAgICAgICAgICBbaGlkZGVuXT1cImlzUGFyZW50TGFzdCgpW2kgLSAxXVwiXHJcbiAgICAgICAgICBbY2xhc3MuaXMtbGFzdF09XCJpID09PSB2ZXJ0aWNhbExldmVsKCkubGVuZ3RoXCJcclxuICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImdldFZlcnRpY2FsTGVmdChpKVwiXHJcbiAgICAgICAgPjwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cIngtdHJlZS1ub2RlLWxpbmUtaG9yaXpvbnRhbFwiXHJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInZlcnRpY2FsV2lkdGgoKVwiXHJcbiAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiZ2V0VmVydGljYWxMZWZ0KHZlcnRpY2FsTGV2ZWwoKS5sZW5ndGgpXCJcclxuICAgICAgPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG4gIEBpZiAoc2hvd0RyYWdJbmRpY2F0b3IoKSkge1xyXG4gICAgPGRpdiBjbGFzcz1cIngtdHJlZS1ub2RlLWRyYWctaW5kaWNhdG9yXCIgW3N0eWxlLndpZHRoXT1cImluZGljYXRvcldpZHRoKClcIiBbbmdTdHlsZV09XCJpbmRpY2F0b3JTdHlsZSgpXCI+PC9kaXY+XHJcbiAgfVxyXG4gIEBpZiAobG9hZGluZygpKSB7XHJcbiAgICA8eC1pY29uIGNsYXNzPVwieC10cmVlLW5vZGUtbG9hZGluZ1wiIHR5cGU9XCJmdG8tbG9hZGVyXCIgW3NwaW5dPVwibG9hZGluZygpIVwiPjwveC1pY29uPlxyXG4gIH0gQGVsc2Uge1xyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cIngtdHJlZS1ub2RlLXJpZ2h0XCJcclxuICAgICAgW2NsYXNzLmlzLWxlYWZdPVwibGVhZigpXCJcclxuICAgICAgW2NsYXNzLmlzLW9wZW5dPVwib3BlbigpXCJcclxuICAgICAgW2NsYXNzLmlzLXRlbXBsYXRlXT1cInRyZWUuZXhwYW5kZWRJY29uKClcIlxyXG4gICAgICBbc3R5bGUud2lkdGgucHhdPVwidmVydGljYWxXaWR0aCgpICogMlwiXHJcbiAgICAgIChjbGljayk9XCIhdHJlZS5ub2RlT3BlbigpICYmIG9uVG9nZ2xlKCRldmVudCwgbm9kZSgpKVwiXHJcbiAgICA+XHJcbiAgICAgIEBpZiAodHJlZS5leHBhbmRlZEljb24oKSkge1xyXG4gICAgICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJ0cmVlLmV4cGFuZGVkSWNvbigpOyBjb250ZXh0OiB7ICRub2RlOiBub2RlKCkgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8eC1pY29uIHR5cGU9XCJmdG8tY2hldnJvbi1yaWdodFwiPjwveC1pY29uPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbiAgQGlmICh0cmVlLmNoZWNrYm94KCkpIHtcclxuICAgIDx4LWNoZWNrYm94XHJcbiAgICAgIFtkYXRhXT1cIlt7IGxhYmVsOiAnJywgaWQ6IGlkKCkgfV1cIlxyXG4gICAgICBbKG5nTW9kZWwpXT1cImNoZWNrZWRcIlxyXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKClcIlxyXG4gICAgICBbaW5kZXRlcm1pbmF0ZV09XCJpbmRldGVybWluYXRlKCkhXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKCkhXCJcclxuICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgIHNpbmdsZVxyXG4gICAgPjwveC1jaGVja2JveD5cclxuICB9XHJcbiAgQGlmICghdHJlZS5sYWJlbFRwbCgpKSB7XHJcbiAgICA8c3BhblxyXG4gICAgICBjbGFzcz1cIngtdHJlZS1ub2RlLWxhYmVsXCJcclxuICAgICAgW2NsYXNzLm5vd3JhcF09XCJub3dyYXAoKSA9PT0gZmFsc2UgfHwgbm93cmFwKCkgPT09IHRydWUgPyBub3dyYXAoKSA6IG5vZGVOb3dyYXAoKVwiXHJcbiAgICAgIFt0aXRsZV09XCJsYWJlbCgpXCJcclxuICAgICAgeC1rZXl3b3JkXHJcbiAgICAgIFt0ZXh0XT1cInRyZWUua2V5d29yZFRleHQoKVwiXHJcbiAgICAgIFtjYXNlU2Vuc2l0aXZlXT1cInRyZWUuY2FzZVNlbnNpdGl2ZSgpXCJcclxuICAgICAgPnt7IGxhYmVsKCkgfX08L3NwYW5cclxuICAgID5cclxuICB9IEBlbHNlIHtcclxuICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJ0cmVlLmxhYmVsVHBsKCk7IGNvbnRleHQ6IHsgJG5vZGU6IG5vZGUoKSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgfVxyXG4gIDxzcGFuIGNsYXNzPVwieC10cmVlLW5vZGUtb3BlcmF0aW9uc1wiPlxyXG4gICAgQGZvciAoYWN0aW9uIG9mIHRyZWUuYWN0aW9ucygpOyB0cmFjayBhY3Rpb24uaWQpIHtcclxuICAgICAgPHgtbGluayBbaWNvbl09XCJhY3Rpb24uaWNvblwiIFt0aXRsZV09XCJhY3Rpb24ubGFiZWxcIiAoY2xpY2spPVwib25BY3Rpb24oJGV2ZW50LCBhY3Rpb24sIG5vZGUoKSlcIj48L3gtbGluaz5cclxuICAgIH1cclxuICA8L3NwYW4+XHJcbiAgQGlmICh0cmVlLm11bHRpcGxlKCkgJiYgYWN0aXZhdGVkKCkpIHtcclxuICAgIDx4LWljb24gY2xhc3M9XCJ4LXRyZWUtbm9kZS1jaGVja2VkXCIgdHlwZT1cImZ0by1jaGVja1wiPjwveC1pY29uPlxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RyZWUvdHJlZS1ub2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RyZWUvdHJlZS1ub2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWEsaUJBQWlCLEVBQWUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RixPQUFPLEVBQUUsUUFBUSxFQUFZLGNBQWMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9C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QjtnQkFLUSxZQUFZO3NCQUFuRCxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFJVixZQUFZO3NCQUF2QyxZQUFZO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBFbGVtZW50UmVmLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBpbmplY3QsXHJcbiAgY29tcHV0ZWQsXHJcbiAgc2lnbmFsLFxyXG4gIG91dHB1dFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYVHJlZU5vZGVQcmVmaXgsIFhUcmVlTm9kZSwgWFRyZWVOb2RlUHJvcGVydHksIFhUcmVlQWN0aW9uIH0gZnJvbSAnLi90cmVlLnByb3BlcnR5JztcclxuaW1wb3J0IHsgWElzRW1wdHksIFhCb29sZWFuLCBYQ29tcHV0ZWRTdHlsZSwgWFRvQ3NzUHgsIFhJc09iamVjdEFycmF5LCBYSXNBcnJheSB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFhUcmVlU2VydmljZSB9IGZyb20gJy4vdHJlZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRE9DVU1FTlQsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBYSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2ljb24nO1xyXG5pbXBvcnQgeyBYQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9jaGVja2JveCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBYS2V5d29yZERpcmVjdGl2ZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2tleXdvcmQnO1xyXG5pbXBvcnQgeyBYTGlua0NvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2xpbmsnO1xyXG5pbXBvcnQgeyBYT3V0bGV0RGlyZWN0aXZlIH0gZnJvbSAnQG5nLW5lc3QvdWkvb3V0bGV0JztcclxuaW1wb3J0IHsgWFRyZWVDb21wb25lbnQgfSBmcm9tICcuL3RyZWUuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYVHJlZU5vZGVQcmVmaXh9LCBbJHtYVHJlZU5vZGVQcmVmaXh9XWAsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ1N0eWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBYSWNvbkNvbXBvbmVudCxcclxuICAgIFhDaGVja2JveENvbXBvbmVudCxcclxuICAgIFhPdXRsZXREaXJlY3RpdmUsXHJcbiAgICBYTGlua0NvbXBvbmVudCxcclxuICAgIFhLZXl3b3JkRGlyZWN0aXZlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS1ub2RlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90cmVlLW5vZGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYVHJlZU5vZGVDb21wb25lbnQgZXh0ZW5kcyBYVHJlZU5vZGVQcm9wZXJ0eSB7XHJcbiAgdHJlZSA9IGluamVjdChYVHJlZUNvbXBvbmVudCwgeyBvcHRpb25hbDogdHJ1ZSwgaG9zdDogdHJ1ZSB9KSE7XHJcbiAgbm9kZU1vdXNlZW50ZXIgPSBvdXRwdXQ8eyBldmVudDogTW91c2VFdmVudDsgbm9kZTogWFRyZWVOb2RlOyBlbGU6IEVsZW1lbnRSZWYgfT4oKTtcclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLngtdHJlZS1ub2RlJykgcm9vdENsYXNzID0gdHJ1ZTtcclxuICBwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcclxuICBmb250U2l6ZSA9IGNvbXB1dGVkKCgpID0+IHBhcnNlRmxvYXQoWENvbXB1dGVkU3R5bGUodGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdmb250LXNpemUnKSkpO1xyXG4gIHByaXZhdGUgdW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicsIFsnJGV2ZW50J10pIG9uTW91c2VlbnRlcihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5ub2RlTW91c2VlbnRlci5lbWl0KHsgZXZlbnQ6IGV2ZW50LCBub2RlOiB0aGlzLm5vZGUoKSwgZWxlOiB0aGlzLmVsZW1lbnRSZWYgfSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJykgb25Nb3VzZWxlYXZlKF9ldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLnRyZWUuZHJhZ2dpbmcoKSkgcmV0dXJuO1xyXG4gICAgY29uc3QgaG92ZXJUcmVlTm9kZSA9IHRoaXMudHJlZS5ob3ZlclRyZWVOb2RlKCk7XHJcbiAgICBob3ZlclRyZWVOb2RlICYmIGhvdmVyVHJlZU5vZGUuY2hhbmdlICYmIGhvdmVyVHJlZU5vZGUuY2hhbmdlKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzaG93RHJhZ0luZGljYXRvciA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIHJldHVybiB0aGlzLnRyZWUuZHJhZ2dpbmcoKSAmJiB0aGlzLnRyZWUuaG92ZXJUcmVlTm9kZSgpPy5pZCA9PT0gdGhpcy5pZCgpO1xyXG4gIH0pO1xyXG5cclxuICBpc0NoaWxkcmVuTGFzdCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGxldCBwYXJlbnQgPSB0aGlzLnRyZWUubm9kZXMoKS5maW5kKCh4OiBYVHJlZU5vZGUpID0+IHguaWQgPT09IHRoaXMucGlkKCkpO1xyXG4gICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVudC5jaGlsZHJlbikgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgaW5kZXggPSBwYXJlbnQuY2hpbGRyZW4uaW5kZXhPZih0aGlzLm5vZGUoKSk7XHJcbiAgICByZXR1cm4gaW5kZXggKyAxID09PSBwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoO1xyXG4gIH0pO1xyXG5cclxuICBpc1BhcmVudExhc3QgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBsZXQgcGFyZW50cyA9IHRoaXMudHJlZVNlcnZpY2UuZ2V0UGFyZW50cyh0aGlzLnRyZWUubm9kZXMoKSwgdGhpcy5ub2RlKCkpO1xyXG4gICAgaWYgKHBhcmVudHMubGVuZ3RoIDw9IDEpIHJldHVybiBbXTtcclxuICAgIGNvbnN0IHJlczogYm9vbGVhbltdID0gW107XHJcbiAgICBwYXJlbnRzLnJlZHVjZSgocHJlOiBYVHJlZU5vZGUsIGN1cnI6IFhUcmVlTm9kZSkgPT4ge1xyXG4gICAgICBpZiAocHJlID09PSBudWxsKSByZXR1cm4gY3VycjtcclxuICAgICAgY29uc3QgaW5kZXggPSBjdXJyLmNoaWxkcmVuPy5pbmRleE9mKHByZSkhO1xyXG4gICAgICByZXMucHVzaChpbmRleCArIDEgPT09IGN1cnIuY2hpbGRyZW4/Lmxlbmd0aCEpO1xyXG4gICAgICByZXR1cm4gY3VycjtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiByZXMucmV2ZXJzZSgpO1xyXG4gIH0pO1xyXG5cclxuICB2ZXJ0aWNhbExldmVsID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMubGV2ZWwoKSEgPiAwKSB7XHJcbiAgICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLmxldmVsKCkhIH0pLm1hcCgoX3gsIGluZGV4KSA9PiBpbmRleCArIDEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICB2ZXJ0aWNhbFdpZHRoID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgcmV0dXJuIFhUb0Nzc1B4KHRoaXMudHJlZS5zcGFjaW5nKCksIHRoaXMuZm9udFNpemUoKSkgLyAyO1xyXG4gIH0pO1xyXG5cclxuICBwYWRkaW5nTGVmdCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmxldmVsKCkhID8gdGhpcy5sZXZlbCgpISA6IDApICogWFRvQ3NzUHgodGhpcy50cmVlLnNwYWNpbmcoKSwgdGhpcy5mb250U2l6ZSgpKSk7XHJcblxyXG4gIGluZGljYXRvcldpZHRoID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgcmV0dXJuIGBjYWxjKDEwMCUgLSAke3RoaXMucGFkZGluZ0xlZnQoKSArICh0aGlzLmxlYWYoKSA/IHRoaXMuZm9udFNpemUoKSAqIDEuNSA6IDApfXB4KWA7XHJcbiAgfSk7XHJcblxyXG4gIGluZGljYXRvclN0eWxlID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMudHJlZS5kcmFnUG9zaXRpb24oKSA9PT0gMSkge1xyXG4gICAgICByZXR1cm4geyBib3R0b206IGAtJHswLjA2MjUgKiB0aGlzLmZvbnRTaXplKCl9cHhgIH07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudHJlZS5kcmFnUG9zaXRpb24oKSA9PT0gLTEpIHtcclxuICAgICAgcmV0dXJuIHsgdG9wOiBgLSR7MC4wNjI1ICogdGhpcy5mb250U2l6ZSgpfXB4YCB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHt9O1xyXG4gIH0pO1xyXG5cclxuICBjaGFuZ2VkID0gc2lnbmFsKGZhbHNlKTtcclxuXHJcbiAgYWN0aXZhdGVkID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgdGhpcy5jaGFuZ2VkKCk7XHJcbiAgICBjb25zdCBhY3RpdmF0ZWRJZCA9IHRoaXMudHJlZS5hY3RpdmF0ZWRJZCgpO1xyXG4gICAgaWYgKHRoaXMudHJlZS5tdWx0aXBsZSgpKSB7XHJcbiAgICAgIGlmICh0aGlzLnRyZWUub2JqZWN0QXJyYXkoKSkge1xyXG4gICAgICAgIHJldHVybiBYSXNPYmplY3RBcnJheTxYVHJlZU5vZGVbXT4oYWN0aXZhdGVkSWQpICYmIGFjdGl2YXRlZElkLm1hcCgoeDogWFRyZWVOb2RlKSA9PiB4LmlkKS5pbmNsdWRlcyh0aGlzLmlkKCkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBYSXNBcnJheTxhbnlbXT4oYWN0aXZhdGVkSWQpICYmIGFjdGl2YXRlZElkLmluY2x1ZGVzKHRoaXMuaWQoKSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBhY3RpdmF0ZWRJZCA9PT0gdGhpcy5pZCgpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSB0cmVlU2VydmljZSA9IGluamVjdChYVHJlZVNlcnZpY2UpO1xyXG4gIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMubm9kZSgpO1xyXG4gICAgbm9kZS5jaGFuZ2UgPSAoY2hlY2s6IGJvb2xlYW4pID0+IHtcclxuICAgICAgaWYgKGNoZWNrKSB0aGlzLnNldENoZWNrYm94KCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH07XHJcbiAgICBpZiAoIXRoaXMudHJlZS5sZXZlbENoZWNrKCkpIHJldHVybjtcclxuICAgIGlmICh0aGlzLmNoZWNrZWQoKSkgdGhpcy5zZXRDaGVja2JveCgpO1xyXG4gICAgdGhpcy5zZXRJbmRldGVybWluYXRlKHRoaXMubm9kZSgpKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy51blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy51blN1YmplY3QuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIG9uQWN0aXZhdGUoZXZlbnQ6IEV2ZW50LCBub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGNvbnN0IGNoYW5nZTogRnVuY3Rpb24gPSB0aGlzLnRyZWUuYWN0aXZhdGVkTm9kZSgpPy5jaGFuZ2UgYXMgRnVuY3Rpb247XHJcbiAgICB0aGlzLnRyZWUubm9kZU9wZW4oKSAmJiAhdGhpcy5sZWFmKCkgJiYgdGhpcy5vblRvZ2dsZShldmVudCwgbm9kZSk7XHJcbiAgICBjb25zdCBvbkNoYW5nZSA9ICgpID0+IHtcclxuICAgICAgY2hhbmdlICYmIGNoYW5nZSgpO1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLnRyZWUub25seUxlYWYoKSAmJiAhdGhpcy5sZWFmKCkpIHtcclxuICAgICAgb25DaGFuZ2UoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudHJlZS5tdWx0aXBsZSgpKSB7XHJcbiAgICAgIGlmICghdGhpcy50cmVlLmFjdGl2YXRlZElkKCkpIHRoaXMudHJlZS5hY3RpdmF0ZWRJZC5zZXQoW10pO1xyXG4gICAgICBpZiAodGhpcy50cmVlLm9iamVjdEFycmF5KCkpIHtcclxuICAgICAgICBjb25zdCBpZHMgPSB0aGlzLnRyZWUuYWN0aXZhdGVkSWQoKS5tYXAoKHg6IFhUcmVlTm9kZSkgPT4geC5pZCk7XHJcbiAgICAgICAgaWYgKGlkcy5pbmNsdWRlcyhub2RlLmlkKSkge1xyXG4gICAgICAgICAgdGhpcy50cmVlLmFjdGl2YXRlZElkLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgICAgICB4LnNwbGljZShpZHMuaW5kZXhPZihub2RlLmlkKSwgMSk7XHJcbiAgICAgICAgICAgIHJldHVybiBbLi4ueF07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50cmVlLmFjdGl2YXRlZElkLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgICAgICB4LnB1c2gobm9kZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBbLi4ueF07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMudHJlZS5hY3RpdmF0ZWRJZCgpLmluY2x1ZGVzKG5vZGUuaWQpKSB7XHJcbiAgICAgICAgICB0aGlzLnRyZWUuYWN0aXZhdGVkSWQudXBkYXRlKCh4KSA9PiB7XHJcbiAgICAgICAgICAgIHguc3BsaWNlKHRoaXMudHJlZS5hY3RpdmF0ZWRJZCgpLmluZGV4T2Yobm9kZS5pZCksIDEpO1xyXG4gICAgICAgICAgICByZXR1cm4gWy4uLnhdO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudHJlZS5hY3RpdmF0ZWRJZC51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICAgICAgeC5wdXNoKG5vZGUuaWQpO1xyXG4gICAgICAgICAgICByZXR1cm4gWy4uLnhdO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRyZWUuYWN0aXZhdGVkSWQuc2V0KG5vZGUuaWQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudHJlZS5hY3RpdmF0ZWROb2RlKCkpIHtcclxuICAgICAgaWYgKHRoaXMudHJlZS5hY3RpdmF0ZWROb2RlKCk/LmlkID09PSBub2RlLmlkICYmICF0aGlzLnRyZWUuYWxsb3dNYW55QWN0aXZhdGVkKCkpIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudHJlZS5hY3RpdmF0ZWROb2RlLnNldChub2RlKTtcclxuICAgIHRoaXMuY2hhbmdlZC51cGRhdGUoKHgpID0+ICF4KTtcclxuICAgIHRoaXMudHJlZS5hY3RpdmF0ZWRDaGFuZ2UuZW1pdChub2RlKTtcclxuICAgIHRoaXMudHJlZS5ub2RlQ2xpY2suZW1pdChub2RlKTtcclxuICAgIG9uQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBvbkNoZWNrYm94Q2hhbmdlKCkge1xyXG4gICAgdGhpcy5zZXRDaGVja2JveCgpO1xyXG4gICAgdGhpcy50cmVlLmNoZWNrYm94Q2hhbmdlLmVtaXQodGhpcy5ub2RlKCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VmVydGljYWxMZWZ0KGk6IG51bWJlcikge1xyXG4gICAgY29uc3Qgc3BhY2luZyA9IFhUb0Nzc1B4KHRoaXMudHJlZS5zcGFjaW5nKCksIHRoaXMuZm9udFNpemUoKSk7XHJcbiAgICByZXR1cm4gKGkgLSAxKSAqIHNwYWNpbmcgKyBzcGFjaW5nIC8gMjtcclxuICB9XHJcblxyXG4gIHNldENoZWNrYm94KCkge1xyXG4gICAgaWYgKCF0aGlzLnRyZWUubGV2ZWxDaGVjaygpKSByZXR1cm47XHJcbiAgICB0aGlzLm5vZGUoKS5pbmRldGVybWluYXRlID0gdGhpcy5jaGVja2VkKCk7XHJcbiAgICB0aGlzLm5vZGUoKS5jaGlsZHJlbiAmJiB0aGlzLnNldENoaWxkcmVuQ2hlY2tib3godGhpcy5jaGVja2VkKCkhKTtcclxuICAgIGNvbnN0IHNldFBhcmVudCA9IChub2RlOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgbGV0IHBhcmVudCA9IHRoaXMudHJlZS5ub2RlcygpLmZpbmQoKHg6IFhUcmVlTm9kZSkgPT4geC5pZCA9PT0gbm9kZS5waWQpO1xyXG4gICAgICBpZiAoIXBhcmVudCB8fCBYSXNFbXB0eShwYXJlbnQuY2hpbGRyZW4pKSByZXR1cm47XHJcbiAgICAgIGxldCBjaGVja2VkTGlzdCA9IHBhcmVudC5jaGlsZHJlbj8uZmlsdGVyKCh5OiBYVHJlZU5vZGUpID0+IHkuY2hlY2tlZCk7XHJcbiAgICAgIGxldCBpbmRldGVybWluYXRlTGlzdCA9IHBhcmVudC5jaGlsZHJlbj8uZmlsdGVyKCh5OiBYVHJlZU5vZGUpID0+IHkuaW5kZXRlcm1pbmF0ZSk7XHJcbiAgICAgIHBhcmVudC5jaGVja2VkID0gY2hlY2tlZExpc3Q/Lmxlbmd0aCA9PT0gcGFyZW50LmNoaWxkcmVuPy5sZW5ndGg7XHJcbiAgICAgIHBhcmVudC5pbmRldGVybWluYXRlID0gKGNoZWNrZWRMaXN0IGFzIFhUcmVlTm9kZVtdKS5sZW5ndGggPiAwIHx8IChpbmRldGVybWluYXRlTGlzdCBhcyBYVHJlZU5vZGVbXSkubGVuZ3RoID4gMDtcclxuICAgICAgcGFyZW50LmNoYW5nZSAmJiBwYXJlbnQuY2hhbmdlKCk7XHJcbiAgICAgIHNldFBhcmVudChwYXJlbnQpO1xyXG4gICAgfTtcclxuICAgIHNldFBhcmVudCh0aGlzLm5vZGUoKSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRDaGlsZHJlbkNoZWNrYm94KGNoZWNrZWQ6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IHNldENoaWxkcmVuID0gKGNoaWxkcmVuOiBYVHJlZU5vZGVbXSwgaXNDaGVja2VkOiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGlmIChYSXNFbXB0eShjaGlsZHJlbikpIHJldHVybjtcclxuICAgICAgZm9yIChsZXQgeCBvZiBjaGlsZHJlbikge1xyXG4gICAgICAgIGlmICh4LmRpc2FibGVkKSBjb250aW51ZTtcclxuICAgICAgICB4LmNoZWNrZWQgPSBpc0NoZWNrZWQ7XHJcbiAgICAgICAgeC5pbmRldGVybWluYXRlID0gaXNDaGVja2VkO1xyXG4gICAgICAgIHguY2hhbmdlICYmIHguY2hhbmdlKCk7XHJcbiAgICAgICAgc2V0Q2hpbGRyZW4oeC5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSwgaXNDaGVja2VkKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHNldENoaWxkcmVuKHRoaXMubm9kZSgpLmNoaWxkcmVuIGFzIFhUcmVlTm9kZVtdLCBjaGVja2VkKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNldFBhcmVudENoZWNrYm94KCkge1xyXG4gICAgaWYgKFhJc0VtcHR5KHRoaXMubm9kZSgpLmNoaWxkcmVuKSkgcmV0dXJuO1xyXG4gICAgbGV0IGNoZWNrZWRMaXN0ID0gdGhpcy5ub2RlKCkuY2hpbGRyZW4/LmZpbHRlcigoeCkgPT4geC5jaGVja2VkKTtcclxuICAgIGxldCBpbmRldGVybWluYXRlTGlzdCA9IHRoaXMubm9kZSgpLmNoaWxkcmVuPy5maWx0ZXIoKHgpID0+IHguaW5kZXRlcm1pbmF0ZSk7XHJcbiAgICB0aGlzLm5vZGUoKS5jaGVja2VkID0gY2hlY2tlZExpc3Q/Lmxlbmd0aCA9PT0gdGhpcy5ub2RlKCkuY2hpbGRyZW4/Lmxlbmd0aDtcclxuICAgIHRoaXMubm9kZSgpLmluZGV0ZXJtaW5hdGUgPVxyXG4gICAgICAoY2hlY2tlZExpc3QgYXMgWFRyZWVOb2RlW10pLmxlbmd0aCA+IDAgfHwgKGluZGV0ZXJtaW5hdGVMaXN0IGFzIFhUcmVlTm9kZVtdKS5sZW5ndGggPiAwO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0SW5kZXRlcm1pbmF0ZShub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGNvbnN0IGdldENoaWxkcmVuID0gKGNoaWxkcmVuOiBYVHJlZU5vZGVbXSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkoY2hpbGRyZW4pKSByZXR1cm47XHJcbiAgICAgIGNoaWxkcmVuLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgICBpZiAoeC5pbmRldGVybWluYXRlIHx8IHguY2hlY2tlZCkge1xyXG4gICAgICAgICAgbm9kZS5pbmRldGVybWluYXRlID0gdHJ1ZTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZ2V0Q2hpbGRyZW4oeC5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIGdldENoaWxkcmVuKG5vZGUuY2hpbGRyZW4gYXMgWFRyZWVOb2RlW10pO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Tm9kZURpc2FibGVkKGRpc2FibGVkPzogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIGRpc2FibGVkIGFzIFhCb29sZWFuO1xyXG4gIH1cclxuXHJcbiAgb25BY3Rpb24oZXZlbnQ6IEV2ZW50LCBhY3Rpb246IFhUcmVlQWN0aW9uLCBub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGFjdGlvbi5oYW5kbGVyICYmIGFjdGlvbi5oYW5kbGVyKG5vZGUpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvblRvZ2dsZShldmVudDogRXZlbnQsIG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgdGhpcy50b2dnbGUuZW1pdChub2RlKTtcclxuICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUl0ZW0oX2luZGV4OiBudW1iZXIsIGl0ZW06IFhUcmVlTm9kZSkge1xyXG4gICAgcmV0dXJuIGAke2l0ZW0uaWR9LSR7aXRlbS5sZXZlbH1gO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUFjdGlvbihfaW5kZXg6IG51bWJlciwgaXRlbTogWFRyZWVBY3Rpb24pIHtcclxuICAgIHJldHVybiBpdGVtLmlkO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJ4LXRyZWUtbm9kZS1jb250ZW50XCJcclxuICBbY2xhc3MueC1hY3RpdmF0ZWRdPVwiYWN0aXZhdGVkKClcIlxyXG4gIFtjbGFzcy54LWRpc2FibGVkXT1cImRpc2FibGVkKClcIlxyXG4gIFtjbGFzcy54LXRyZWUtbm9kZS1zdWJdPVwiIWxlYWYoKVwiXHJcbiAgW2NsYXNzLngtdHJlZS1ub2RlLWxhc3RdPVwiaXNDaGlsZHJlbkxhc3QoKVwiXHJcbiAgW3N0eWxlLnBhZGRpbmctbGVmdC5weF09XCJwYWRkaW5nTGVmdCgpICsgZm9udFNpemUoKSAvIDJcIlxyXG4gIFtzdHlsZS5oZWlnaHRdPVwiaGVpZ2h0KCkgPyBoZWlnaHQoKSA6IG5vZGVIZWlnaHQoKSA/IG5vZGVIZWlnaHQoKSA6ICcnXCJcclxuICBbc3R5bGUuYWxpZ24taXRlbXNdPVwiYWxpZ25JdGVtcygpID8gYWxpZ25JdGVtcygpIDogbm9kZUFsaWduSXRlbXMoKVwiXHJcbiAgKGNsaWNrKT1cIiFkaXNhYmxlZCgpICYmIG9uQWN0aXZhdGUoJGV2ZW50LCBub2RlKCkpXCJcclxuPlxyXG4gIEBpZiAodHJlZS5zaG93TGluZSgpICYmIGxldmVsKCkhID4gMCkge1xyXG4gICAgPGRpdiBjbGFzcz1cIngtdHJlZS1ub2RlLWxpbmVcIiBbc3R5bGUud2lkdGgucHhdPVwicGFkZGluZ0xlZnQoKVwiPlxyXG4gICAgICBAZm9yIChpIG9mIHZlcnRpY2FsTGV2ZWwoKTsgdHJhY2sgaSkge1xyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwieC10cmVlLW5vZGUtbGluZS12ZXJ0aWNhbFwiXHJcbiAgICAgICAgICBbaGlkZGVuXT1cImlzUGFyZW50TGFzdCgpW2kgLSAxXVwiXHJcbiAgICAgICAgICBbY2xhc3MuaXMtbGFzdF09XCJpID09PSB2ZXJ0aWNhbExldmVsKCkubGVuZ3RoXCJcclxuICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImdldFZlcnRpY2FsTGVmdChpKVwiXHJcbiAgICAgICAgPjwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cIngtdHJlZS1ub2RlLWxpbmUtaG9yaXpvbnRhbFwiXHJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInZlcnRpY2FsV2lkdGgoKVwiXHJcbiAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiZ2V0VmVydGljYWxMZWZ0KHZlcnRpY2FsTGV2ZWwoKS5sZW5ndGgpXCJcclxuICAgICAgPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG4gIEBpZiAoc2hvd0RyYWdJbmRpY2F0b3IoKSkge1xyXG4gICAgPGRpdiBjbGFzcz1cIngtdHJlZS1ub2RlLWRyYWctaW5kaWNhdG9yXCIgW3N0eWxlLndpZHRoXT1cImluZGljYXRvcldpZHRoKClcIiBbbmdTdHlsZV09XCJpbmRpY2F0b3JTdHlsZSgpXCI+PC9kaXY+XHJcbiAgfVxyXG4gIEBpZiAobG9hZGluZygpKSB7XHJcbiAgICA8eC1pY29uIGNsYXNzPVwieC10cmVlLW5vZGUtbG9hZGluZ1wiIHR5cGU9XCJmdG8tbG9hZGVyXCIgW3NwaW5dPVwibG9hZGluZygpIVwiPjwveC1pY29uPlxyXG4gIH0gQGVsc2Uge1xyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cIngtdHJlZS1ub2RlLXJpZ2h0XCJcclxuICAgICAgW2NsYXNzLmlzLWxlYWZdPVwibGVhZigpXCJcclxuICAgICAgW2NsYXNzLmlzLW9wZW5dPVwib3BlbigpXCJcclxuICAgICAgW2NsYXNzLmlzLXRlbXBsYXRlXT1cInRyZWUuZXhwYW5kZWRJY29uKClcIlxyXG4gICAgICBbc3R5bGUud2lkdGgucHhdPVwidmVydGljYWxXaWR0aCgpICogMlwiXHJcbiAgICAgIChjbGljayk9XCIhdHJlZS5ub2RlT3BlbigpICYmIG9uVG9nZ2xlKCRldmVudCwgbm9kZSgpKVwiXHJcbiAgICA+XHJcbiAgICAgIEBpZiAodHJlZS5leHBhbmRlZEljb24oKSkge1xyXG4gICAgICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJ0cmVlLmV4cGFuZGVkSWNvbigpOyBjb250ZXh0OiB7ICRub2RlOiBub2RlKCkgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8eC1pY29uIHR5cGU9XCJmdG8tY2hldnJvbi1yaWdodFwiPjwveC1pY29uPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbiAgQGlmICh0cmVlLmNoZWNrYm94KCkpIHtcclxuICAgIDx4LWNoZWNrYm94XHJcbiAgICAgIFtkYXRhXT1cIlt7IGxhYmVsOiAnJywgaWQ6IGlkKCkgfV1cIlxyXG4gICAgICBbKG5nTW9kZWwpXT1cImNoZWNrZWRcIlxyXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKClcIlxyXG4gICAgICBbaW5kZXRlcm1pbmF0ZV09XCJpbmRldGVybWluYXRlKCkhXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKCkhXCJcclxuICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgIHNpbmdsZVxyXG4gICAgPjwveC1jaGVja2JveD5cclxuICB9XHJcbiAgQGlmICghdHJlZS5sYWJlbFRwbCgpKSB7XHJcbiAgICA8c3BhblxyXG4gICAgICBjbGFzcz1cIngtdHJlZS1ub2RlLWxhYmVsXCJcclxuICAgICAgW2NsYXNzLm5vd3JhcF09XCJub3dyYXAoKSA9PT0gZmFsc2UgfHwgbm93cmFwKCkgPT09IHRydWUgPyBub3dyYXAoKSA6IG5vZGVOb3dyYXAoKVwiXHJcbiAgICAgIFt0aXRsZV09XCJsYWJlbCgpXCJcclxuICAgICAgeC1rZXl3b3JkXHJcbiAgICAgIFt0ZXh0XT1cInRyZWUua2V5d29yZFRleHQoKVwiXHJcbiAgICAgIFtjYXNlU2Vuc2l0aXZlXT1cInRyZWUuY2FzZVNlbnNpdGl2ZSgpXCJcclxuICAgICAgPnt7IGxhYmVsKCkgfX08L3NwYW5cclxuICAgID5cclxuICB9IEBlbHNlIHtcclxuICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJ0cmVlLmxhYmVsVHBsKCk7IGNvbnRleHQ6IHsgJG5vZGU6IG5vZGUoKSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgfVxyXG4gIDxzcGFuIGNsYXNzPVwieC10cmVlLW5vZGUtb3BlcmF0aW9uc1wiPlxyXG4gICAgQGZvciAoYWN0aW9uIG9mIHRyZWUuYWN0aW9ucygpOyB0cmFjayBhY3Rpb24uaWQpIHtcclxuICAgICAgPHgtbGluayBbaWNvbl09XCJhY3Rpb24uaWNvblwiIFt0aXRsZV09XCJhY3Rpb24ubGFiZWxcIiAoY2xpY2spPVwib25BY3Rpb24oJGV2ZW50LCBhY3Rpb24sIG5vZGUoKSlcIj48L3gtbGluaz5cclxuICAgIH1cclxuICA8L3NwYW4+XHJcbiAgQGlmICh0cmVlLm11bHRpcGxlKCkgJiYgYWN0aXZhdGVkKCkpIHtcclxuICAgIDx4LWljb24gY2xhc3M9XCJ4LXRyZWUtbm9kZS1jaGVja2VkXCIgdHlwZT1cImZ0by1jaGVja1wiPjwveC1pY29uPlxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==