@ng-nest/ui 17.0.0 → 17.0.2

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 (661) hide show
  1. package/affix/affix.component.d.ts +1 -2
  2. package/affix/affix.module.d.ts +1 -3
  3. package/alert/alert.component.d.ts +4 -5
  4. package/alert/alert.module.d.ts +1 -8
  5. package/anchor/anchor-inner.component.d.ts +1 -1
  6. package/anchor/anchor.component.d.ts +6 -7
  7. package/anchor/anchor.module.d.ts +2 -6
  8. package/api/api.component.d.ts +4 -4
  9. package/api/api.module.d.ts +1 -2
  10. package/auto-complete/auto-complete-portal.component.d.ts +3 -5
  11. package/auto-complete/auto-complete.component.d.ts +12 -13
  12. package/auto-complete/auto-complete.module.d.ts +1 -9
  13. package/avatar/avatar-group.component.d.ts +1 -2
  14. package/avatar/avatar.component.d.ts +6 -7
  15. package/avatar/avatar.module.d.ts +2 -6
  16. package/back-top/back-top.component.d.ts +7 -12
  17. package/back-top/back-top.module.d.ts +1 -5
  18. package/badge/badge.component.d.ts +3 -8
  19. package/badge/badge.module.d.ts +1 -3
  20. package/base-form/base-form.component.d.ts +1 -1
  21. package/base-form/base-form.module.d.ts +1 -2
  22. package/border/border.component.d.ts +4 -4
  23. package/border/border.module.d.ts +1 -1
  24. package/button/button.component.d.ts +8 -10
  25. package/button/button.module.d.ts +1 -5
  26. package/button/buttons.component.d.ts +4 -5
  27. package/calendar/calendar.component.d.ts +9 -13
  28. package/calendar/calendar.module.d.ts +1 -10
  29. package/card/card.component.d.ts +2 -6
  30. package/card/card.module.d.ts +1 -5
  31. package/carousel/carousel-panel.component.d.ts +10 -13
  32. package/carousel/carousel.component.d.ts +4 -7
  33. package/carousel/carousel.module.d.ts +1 -5
  34. package/cascade/cascade-portal.component.d.ts +4 -5
  35. package/cascade/cascade.component.d.ts +14 -13
  36. package/cascade/cascade.module.d.ts +1 -9
  37. package/checkbox/checkbox.component.d.ts +6 -8
  38. package/checkbox/checkbox.module.d.ts +1 -8
  39. package/collapse/collapse-panel.component.d.ts +5 -8
  40. package/collapse/collapse.component.d.ts +3 -7
  41. package/collapse/collapse.module.d.ts +1 -5
  42. package/color/color.component.d.ts +4 -5
  43. package/color/color.module.d.ts +1 -3
  44. package/color-picker/color-picker-portal.component.d.ts +7 -11
  45. package/color-picker/color-picker.component.d.ts +11 -12
  46. package/color-picker/color-picker.module.d.ts +1 -11
  47. package/comment/comment-reply.component.d.ts +4 -9
  48. package/comment/comment.component.d.ts +5 -9
  49. package/comment/comment.module.d.ts +1 -11
  50. package/container/aside.component.d.ts +5 -5
  51. package/container/container.component.d.ts +2 -3
  52. package/container/container.module.d.ts +1 -3
  53. package/container/footer.component.d.ts +5 -7
  54. package/container/header.component.d.ts +5 -7
  55. package/container/main.component.d.ts +4 -4
  56. package/crumb/crumb.component.d.ts +4 -5
  57. package/crumb/crumb.module.d.ts +1 -5
  58. package/date-picker/date-picker-portal.component.d.ts +5 -9
  59. package/date-picker/date-picker.component.d.ts +14 -16
  60. package/date-picker/date-picker.module.d.ts +2 -21
  61. package/date-picker/date-quarter.pipe.d.ts +1 -1
  62. package/date-picker/date-range-portal.component.d.ts +1 -1
  63. package/date-picker/date-range.component.d.ts +16 -18
  64. package/date-picker/picker-date.component.d.ts +8 -11
  65. package/date-picker/picker-month.component.d.ts +8 -11
  66. package/date-picker/picker-quarter.component.d.ts +9 -14
  67. package/date-picker/picker-year.component.d.ts +5 -8
  68. package/description/description-item.component.d.ts +1 -2
  69. package/description/description.component.d.ts +4 -5
  70. package/description/description.module.d.ts +2 -5
  71. package/dialog/dialog-container.component.d.ts +1 -2
  72. package/dialog/dialog-portal.component.d.ts +1 -1
  73. package/dialog/dialog-portal.directives.d.ts +13 -17
  74. package/dialog/dialog.component.d.ts +15 -17
  75. package/dialog/dialog.module.d.ts +1 -14
  76. package/dialog/dialog.service.d.ts +8 -10
  77. package/doc/doc.component.d.ts +6 -6
  78. package/doc/doc.module.d.ts +1 -2
  79. package/drag/drag.directive.d.ts +5 -6
  80. package/drag/drag.module.d.ts +1 -2
  81. package/drawer/drawer-container.component.d.ts +1 -2
  82. package/drawer/drawer-portal.component.d.ts +1 -2
  83. package/drawer/drawer-portal.directives.d.ts +5 -6
  84. package/drawer/drawer.component.d.ts +10 -15
  85. package/drawer/drawer.module.d.ts +2 -8
  86. package/drawer/drawer.service.d.ts +5 -7
  87. package/dropdown/dropdown-portal.component.d.ts +1 -1
  88. package/dropdown/dropdown.component.d.ts +10 -13
  89. package/dropdown/dropdown.module.d.ts +1 -7
  90. package/empty/empty.component.d.ts +4 -7
  91. package/empty/empty.module.d.ts +1 -6
  92. package/esm2022/affix/affix.component.mjs +10 -10
  93. package/esm2022/affix/affix.module.mjs +4 -7
  94. package/esm2022/alert/alert.component.mjs +26 -18
  95. package/esm2022/alert/alert.module.mjs +4 -12
  96. package/esm2022/alert/alert.property.mjs +1 -1
  97. package/esm2022/anchor/anchor-inner.component.mjs +3 -2
  98. package/esm2022/anchor/anchor.component.mjs +21 -21
  99. package/esm2022/anchor/anchor.module.mjs +4 -9
  100. package/esm2022/anchor/anchor.property.mjs +1 -1
  101. package/esm2022/api/api.component.mjs +13 -11
  102. package/esm2022/api/api.module.mjs +4 -6
  103. package/esm2022/auto-complete/auto-complete-portal.component.mjs +14 -15
  104. package/esm2022/auto-complete/auto-complete.component.mjs +43 -30
  105. package/esm2022/auto-complete/auto-complete.module.mjs +5 -14
  106. package/esm2022/avatar/avatar-group.component.mjs +6 -6
  107. package/esm2022/avatar/avatar.component.mjs +17 -18
  108. package/esm2022/avatar/avatar.module.mjs +4 -9
  109. package/esm2022/avatar/avatar.property.mjs +1 -1
  110. package/esm2022/back-top/back-top.component.mjs +25 -29
  111. package/esm2022/back-top/back-top.module.mjs +4 -9
  112. package/esm2022/badge/badge.component.mjs +18 -22
  113. package/esm2022/badge/badge.module.mjs +4 -7
  114. package/esm2022/base-form/base-form.component.mjs +9 -4
  115. package/esm2022/base-form/base-form.module.mjs +4 -5
  116. package/esm2022/base-form/base-form.property.mjs +1 -1
  117. package/esm2022/border/border.component.mjs +13 -11
  118. package/esm2022/border/border.module.mjs +3 -3
  119. package/esm2022/button/button.component.mjs +19 -23
  120. package/esm2022/button/button.module.mjs +4 -9
  121. package/esm2022/button/button.property.mjs +1 -1
  122. package/esm2022/button/buttons.component.mjs +15 -14
  123. package/esm2022/calendar/calendar.component.mjs +35 -25
  124. package/esm2022/calendar/calendar.module.mjs +4 -14
  125. package/esm2022/card/card.component.mjs +14 -16
  126. package/esm2022/card/card.module.mjs +4 -9
  127. package/esm2022/carousel/carousel-panel.component.mjs +37 -33
  128. package/esm2022/carousel/carousel.component.mjs +19 -22
  129. package/esm2022/carousel/carousel.module.mjs +5 -10
  130. package/esm2022/carousel/carousel.property.mjs +1 -1
  131. package/esm2022/cascade/cascade-portal.component.mjs +19 -17
  132. package/esm2022/cascade/cascade.component.mjs +37 -30
  133. package/esm2022/cascade/cascade.module.mjs +5 -14
  134. package/esm2022/checkbox/checkbox.component.mjs +31 -23
  135. package/esm2022/checkbox/checkbox.module.mjs +4 -12
  136. package/esm2022/collapse/collapse-panel.component.mjs +19 -20
  137. package/esm2022/collapse/collapse.component.mjs +11 -14
  138. package/esm2022/collapse/collapse.module.mjs +4 -9
  139. package/esm2022/color/color.component.mjs +15 -16
  140. package/esm2022/color/color.module.mjs +4 -7
  141. package/esm2022/color-picker/color-picker-portal.component.mjs +53 -35
  142. package/esm2022/color-picker/color-picker.component.mjs +36 -35
  143. package/esm2022/color-picker/color-picker.module.mjs +5 -42
  144. package/esm2022/comment/comment-reply.component.mjs +18 -18
  145. package/esm2022/comment/comment.component.mjs +32 -24
  146. package/esm2022/comment/comment.module.mjs +4 -41
  147. package/esm2022/comment/comment.property.mjs +1 -1
  148. package/esm2022/container/aside.component.mjs +15 -12
  149. package/esm2022/container/container.component.mjs +14 -13
  150. package/esm2022/container/container.module.mjs +5 -35
  151. package/esm2022/container/footer.component.mjs +17 -20
  152. package/esm2022/container/header.component.mjs +17 -20
  153. package/esm2022/container/main.component.mjs +14 -11
  154. package/esm2022/core/config/config.service.mjs +8 -3
  155. package/esm2022/core/services/preloading-strategy.service.mjs +4 -3
  156. package/esm2022/crumb/crumb.component.mjs +15 -15
  157. package/esm2022/crumb/crumb.module.mjs +4 -9
  158. package/esm2022/date-picker/date-picker-portal.component.mjs +36 -27
  159. package/esm2022/date-picker/date-picker.component.mjs +51 -46
  160. package/esm2022/date-picker/date-picker.module.mjs +5 -106
  161. package/esm2022/date-picker/date-quarter.pipe.mjs +3 -3
  162. package/esm2022/date-picker/date-range-portal.component.mjs +22 -11
  163. package/esm2022/date-picker/date-range.component.mjs +53 -51
  164. package/esm2022/date-picker/picker-date.component.mjs +44 -38
  165. package/esm2022/date-picker/picker-month.component.mjs +30 -28
  166. package/esm2022/date-picker/picker-quarter.component.mjs +30 -30
  167. package/esm2022/date-picker/picker-year.component.mjs +25 -23
  168. package/esm2022/description/description-item.component.mjs +7 -9
  169. package/esm2022/description/description.component.mjs +13 -13
  170. package/esm2022/description/description.module.mjs +4 -8
  171. package/esm2022/dialog/dialog-container.component.mjs +8 -7
  172. package/esm2022/dialog/dialog-portal.component.mjs +27 -11
  173. package/esm2022/dialog/dialog-portal.directives.mjs +39 -39
  174. package/esm2022/dialog/dialog-ref.mjs +1 -1
  175. package/esm2022/dialog/dialog.component.mjs +40 -47
  176. package/esm2022/dialog/dialog.module.mjs +11 -69
  177. package/esm2022/dialog/dialog.service.mjs +15 -16
  178. package/esm2022/doc/doc.component.mjs +12 -9
  179. package/esm2022/doc/doc.module.mjs +4 -6
  180. package/esm2022/drag/drag.directive.mjs +10 -10
  181. package/esm2022/drag/drag.module.mjs +4 -6
  182. package/esm2022/drawer/drawer-container.component.mjs +8 -7
  183. package/esm2022/drawer/drawer-portal.component.mjs +12 -11
  184. package/esm2022/drawer/drawer-portal.directives.mjs +17 -16
  185. package/esm2022/drawer/drawer.component.mjs +23 -32
  186. package/esm2022/drawer/drawer.module.mjs +9 -25
  187. package/esm2022/drawer/drawer.service.mjs +14 -14
  188. package/esm2022/dropdown/dropdown-portal.component.mjs +7 -5
  189. package/esm2022/dropdown/dropdown.component.mjs +31 -24
  190. package/esm2022/dropdown/dropdown.module.mjs +5 -12
  191. package/esm2022/empty/empty.component.mjs +21 -17
  192. package/esm2022/empty/empty.module.mjs +4 -10
  193. package/esm2022/examples/examples.component.mjs +12 -9
  194. package/esm2022/examples/examples.module.mjs +4 -6
  195. package/esm2022/find/find.component.mjs +48 -29
  196. package/esm2022/find/find.module.mjs +4 -52
  197. package/esm2022/form/control.component.mjs +69 -39
  198. package/esm2022/form/form.component.mjs +27 -18
  199. package/esm2022/form/form.module.mjs +4 -69
  200. package/esm2022/highlight/highlight.component.mjs +26 -23
  201. package/esm2022/highlight/highlight.module.mjs +4 -8
  202. package/esm2022/i18n/i18n.directive.mjs +13 -10
  203. package/esm2022/i18n/i18n.module.mjs +3 -3
  204. package/esm2022/i18n/i18n.pipe.mjs +4 -3
  205. package/esm2022/i18n/i18n.service.mjs +7 -11
  206. package/esm2022/icon/icon.component.mjs +20 -21
  207. package/esm2022/icon/icon.module.mjs +4 -9
  208. package/esm2022/icon/icon.property.mjs +1 -1
  209. package/esm2022/icon/icon.service.mjs +35 -34
  210. package/esm2022/image/image-group.component.mjs +4 -3
  211. package/esm2022/image/image-preview.component.mjs +26 -31
  212. package/esm2022/image/image.component.mjs +30 -29
  213. package/esm2022/image/image.module.mjs +4 -13
  214. package/esm2022/inner/inner.component.mjs +14 -13
  215. package/esm2022/inner/inner.module.mjs +4 -7
  216. package/esm2022/input/input-group.component.mjs +12 -13
  217. package/esm2022/input/input.component.mjs +33 -34
  218. package/esm2022/input/input.module.mjs +4 -11
  219. package/esm2022/input-number/input-number.component.mjs +23 -26
  220. package/esm2022/input-number/input-number.module.mjs +4 -11
  221. package/esm2022/keyword/keyword.directive.mjs +13 -13
  222. package/esm2022/keyword/keyword.module.mjs +4 -7
  223. package/esm2022/keyword/keyword.property.mjs +3 -3
  224. package/esm2022/layout/col.component.mjs +14 -18
  225. package/esm2022/layout/layout.module.mjs +4 -7
  226. package/esm2022/layout/layout.property.mjs +1 -1
  227. package/esm2022/layout/row.component.mjs +12 -12
  228. package/esm2022/link/link.component.mjs +17 -18
  229. package/esm2022/link/link.module.mjs +4 -10
  230. package/esm2022/list/list-drop-group.directive.mjs +3 -2
  231. package/esm2022/list/list-option.component.mjs +16 -16
  232. package/esm2022/list/list.component.mjs +38 -32
  233. package/esm2022/list/list.module.mjs +4 -52
  234. package/esm2022/loading/loading.component.mjs +19 -21
  235. package/esm2022/loading/loading.module.mjs +4 -10
  236. package/esm2022/menu/menu-node.component.mjs +17 -17
  237. package/esm2022/menu/menu.component.mjs +21 -23
  238. package/esm2022/menu/menu.module.mjs +4 -11
  239. package/esm2022/message/message.component.mjs +10 -11
  240. package/esm2022/message/message.module.mjs +5 -12
  241. package/esm2022/message/message.service.mjs +12 -12
  242. package/esm2022/message-box/message-box.component.mjs +20 -8
  243. package/esm2022/message-box/message-box.module.mjs +5 -47
  244. package/esm2022/message-box/message-box.service.mjs +12 -11
  245. package/esm2022/notification/notification.component.mjs +10 -11
  246. package/esm2022/notification/notification.module.mjs +5 -12
  247. package/esm2022/notification/notification.service.mjs +14 -10
  248. package/esm2022/outlet/outlet.directive.mjs +9 -9
  249. package/esm2022/outlet/outlet.module.mjs +4 -6
  250. package/esm2022/page-header/page-header.component.mjs +19 -18
  251. package/esm2022/page-header/page-header.module.mjs +4 -8
  252. package/esm2022/pagination/pagination.component.mjs +39 -29
  253. package/esm2022/pagination/pagination.module.mjs +4 -13
  254. package/esm2022/pattern/pattern.component.mjs +12 -9
  255. package/esm2022/pattern/pattern.module.mjs +4 -6
  256. package/esm2022/popconfirm/popconfirm.component.mjs +24 -25
  257. package/esm2022/popconfirm/popconfirm.module.mjs +4 -11
  258. package/esm2022/popover/popover-portal.component.mjs +15 -14
  259. package/esm2022/popover/popover.directive.mjs +16 -18
  260. package/esm2022/popover/popover.module.mjs +5 -11
  261. package/esm2022/portal/portal.module.mjs +6 -9
  262. package/esm2022/portal/portal.service.mjs +12 -11
  263. package/esm2022/progress/progress.component.mjs +16 -18
  264. package/esm2022/progress/progress.module.mjs +4 -9
  265. package/esm2022/radio/radio.component.mjs +21 -21
  266. package/esm2022/radio/radio.module.mjs +4 -12
  267. package/esm2022/rate/rate.component.mjs +22 -21
  268. package/esm2022/rate/rate.module.mjs +4 -11
  269. package/esm2022/resizable/resizable.directive.mjs +56 -45
  270. package/esm2022/resizable/resizable.module.mjs +5 -7
  271. package/esm2022/resizable/resizable.property.mjs +3 -3
  272. package/esm2022/result/result.component.mjs +15 -18
  273. package/esm2022/result/result.module.mjs +4 -9
  274. package/esm2022/ripple/ripple.directive.mjs +11 -10
  275. package/esm2022/ripple/ripple.module.mjs +5 -8
  276. package/esm2022/select/select-portal.component.mjs +6 -4
  277. package/esm2022/select/select.component.mjs +52 -50
  278. package/esm2022/select/select.module.mjs +5 -46
  279. package/esm2022/skeleton/skeleton.component.mjs +14 -16
  280. package/esm2022/skeleton/skeleton.module.mjs +4 -8
  281. package/esm2022/slider/slider.component.mjs +38 -35
  282. package/esm2022/slider/slider.module.mjs +5 -11
  283. package/esm2022/slider-select/slider-select.component.mjs +45 -37
  284. package/esm2022/slider-select/slider-select.module.mjs +4 -36
  285. package/esm2022/statistic/countdown.component.mjs +14 -15
  286. package/esm2022/statistic/statistic.component.mjs +13 -13
  287. package/esm2022/statistic/statistic.module.mjs +4 -9
  288. package/esm2022/steps/steps.component.mjs +17 -18
  289. package/esm2022/steps/steps.module.mjs +4 -9
  290. package/esm2022/switch/switch.component.mjs +18 -17
  291. package/esm2022/switch/switch.module.mjs +4 -11
  292. package/esm2022/table/table-body.component.mjs +19 -9
  293. package/esm2022/table/table-foot.component.mjs +12 -15
  294. package/esm2022/table/table-head.component.mjs +33 -27
  295. package/esm2022/table/table.component.mjs +20 -10
  296. package/esm2022/table/table.module.mjs +4 -69
  297. package/esm2022/tabs/tab-content.component.mjs +12 -9
  298. package/esm2022/tabs/tab-link.directive.mjs +7 -5
  299. package/esm2022/tabs/tab.component.mjs +11 -10
  300. package/esm2022/tabs/tabs.component.mjs +28 -26
  301. package/esm2022/tabs/tabs.module.mjs +5 -26
  302. package/esm2022/tag/tag.component.mjs +16 -19
  303. package/esm2022/tag/tag.module.mjs +4 -9
  304. package/esm2022/text-retract/text-retract.component.mjs +17 -18
  305. package/esm2022/text-retract/text-retract.module.mjs +4 -10
  306. package/esm2022/textarea/textarea.component.mjs +24 -24
  307. package/esm2022/textarea/textarea.module.mjs +4 -10
  308. package/esm2022/theme/theme.component.mjs +44 -30
  309. package/esm2022/theme/theme.module.mjs +4 -40
  310. package/esm2022/time-ago/time-ago.module.mjs +4 -6
  311. package/esm2022/time-ago/time-ago.pipe.mjs +20 -20
  312. package/esm2022/time-picker/time-picker-frame.component.mjs +31 -29
  313. package/esm2022/time-picker/time-picker-portal.component.mjs +19 -19
  314. package/esm2022/time-picker/time-picker.component.mjs +39 -40
  315. package/esm2022/time-picker/time-picker.module.mjs +5 -46
  316. package/esm2022/time-range/time-range.module.mjs +4 -4
  317. package/esm2022/time-range/time-range.pipe.mjs +3 -3
  318. package/esm2022/timeline/timeline.component.mjs +17 -19
  319. package/esm2022/timeline/timeline.module.mjs +4 -11
  320. package/esm2022/tooltip/tooltip-portal.component.mjs +15 -14
  321. package/esm2022/tooltip/tooltip.directive.mjs +15 -18
  322. package/esm2022/tooltip/tooltip.module.mjs +5 -11
  323. package/esm2022/transfer/transfer.component.mjs +68 -54
  324. package/esm2022/transfer/transfer.module.mjs +4 -57
  325. package/esm2022/tree/tree-node.component.mjs +36 -29
  326. package/esm2022/tree/tree.component.mjs +10 -12
  327. package/esm2022/tree/tree.module.mjs +4 -41
  328. package/esm2022/tree/tree.service.mjs +4 -3
  329. package/esm2022/tree-file/tree-file.component.mjs +34 -30
  330. package/esm2022/tree-file/tree-file.module.mjs +4 -13
  331. package/esm2022/tree-select/tree-select-portal.component.mjs +25 -25
  332. package/esm2022/tree-select/tree-select.component.mjs +53 -51
  333. package/esm2022/tree-select/tree-select.module.mjs +6 -54
  334. package/esm2022/typography/typography.component.mjs +11 -11
  335. package/esm2022/typography/typography.module.mjs +4 -7
  336. package/esm2022/upload/upload-portal.component.mjs +11 -12
  337. package/esm2022/upload/upload.component.mjs +42 -39
  338. package/esm2022/upload/upload.module.mjs +4 -53
  339. package/examples/examples.component.d.ts +6 -6
  340. package/examples/examples.module.d.ts +1 -2
  341. package/fesm2022/ng-nest-ui-affix.mjs +12 -15
  342. package/fesm2022/ng-nest-ui-affix.mjs.map +1 -1
  343. package/fesm2022/ng-nest-ui-alert.mjs +26 -25
  344. package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
  345. package/fesm2022/ng-nest-ui-anchor.mjs +24 -26
  346. package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
  347. package/fesm2022/ng-nest-ui-api.mjs +15 -15
  348. package/fesm2022/ng-nest-ui-api.mjs.map +1 -1
  349. package/fesm2022/ng-nest-ui-auto-complete.mjs +58 -50
  350. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  351. package/fesm2022/ng-nest-ui-avatar.mjs +23 -27
  352. package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
  353. package/fesm2022/ng-nest-ui-back-top.mjs +26 -33
  354. package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
  355. package/fesm2022/ng-nest-ui-badge.mjs +20 -26
  356. package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
  357. package/fesm2022/ng-nest-ui-base-form.mjs +11 -6
  358. package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
  359. package/fesm2022/ng-nest-ui-border.mjs +14 -12
  360. package/fesm2022/ng-nest-ui-border.mjs.map +1 -1
  361. package/fesm2022/ng-nest-ui-button.mjs +30 -38
  362. package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
  363. package/fesm2022/ng-nest-ui-calendar.mjs +35 -33
  364. package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
  365. package/fesm2022/ng-nest-ui-card.mjs +15 -21
  366. package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
  367. package/fesm2022/ng-nest-ui-carousel.mjs +52 -54
  368. package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
  369. package/fesm2022/ng-nest-ui-cascade.mjs +54 -51
  370. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  371. package/fesm2022/ng-nest-ui-checkbox.mjs +32 -30
  372. package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
  373. package/fesm2022/ng-nest-ui-collapse.mjs +27 -36
  374. package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
  375. package/fesm2022/ng-nest-ui-color-picker.mjs +84 -98
  376. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  377. package/fesm2022/ng-nest-ui-color.mjs +16 -18
  378. package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
  379. package/fesm2022/ng-nest-ui-comment.mjs +43 -72
  380. package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
  381. package/fesm2022/ng-nest-ui-container.mjs +61 -94
  382. package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
  383. package/fesm2022/ng-nest-ui-core.mjs +10 -4
  384. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  385. package/fesm2022/ng-nest-ui-crumb.mjs +16 -20
  386. package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
  387. package/fesm2022/ng-nest-ui-date-picker.mjs +247 -293
  388. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  389. package/fesm2022/ng-nest-ui-description.mjs +19 -25
  390. package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
  391. package/fesm2022/ng-nest-ui-dialog.mjs +180 -223
  392. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  393. package/fesm2022/ng-nest-ui-doc.mjs +13 -12
  394. package/fesm2022/ng-nest-ui-doc.mjs.map +1 -1
  395. package/fesm2022/ng-nest-ui-drag.mjs +13 -14
  396. package/fesm2022/ng-nest-ui-drag.mjs.map +1 -1
  397. package/fesm2022/ng-nest-ui-drawer.mjs +114 -133
  398. package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
  399. package/fesm2022/ng-nest-ui-dropdown.mjs +39 -33
  400. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  401. package/fesm2022/ng-nest-ui-empty.mjs +21 -24
  402. package/fesm2022/ng-nest-ui-empty.mjs.map +1 -1
  403. package/fesm2022/ng-nest-ui-examples.mjs +13 -12
  404. package/fesm2022/ng-nest-ui-examples.mjs.map +1 -1
  405. package/fesm2022/ng-nest-ui-find.mjs +49 -76
  406. package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
  407. package/fesm2022/ng-nest-ui-form.mjs +88 -112
  408. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  409. package/fesm2022/ng-nest-ui-highlight.mjs +28 -27
  410. package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
  411. package/fesm2022/ng-nest-ui-i18n.mjs +21 -21
  412. package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
  413. package/fesm2022/ng-nest-ui-icon.mjs +55 -57
  414. package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
  415. package/fesm2022/ng-nest-ui-image.mjs +50 -61
  416. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  417. package/fesm2022/ng-nest-ui-inner.mjs +15 -17
  418. package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
  419. package/fesm2022/ng-nest-ui-input-number.mjs +25 -31
  420. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  421. package/fesm2022/ng-nest-ui-input.mjs +41 -49
  422. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  423. package/fesm2022/ng-nest-ui-keyword.mjs +17 -19
  424. package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
  425. package/fesm2022/ng-nest-ui-layout.mjs +25 -31
  426. package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
  427. package/fesm2022/ng-nest-ui-link.mjs +18 -24
  428. package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
  429. package/fesm2022/ng-nest-ui-list.mjs +51 -86
  430. package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
  431. package/fesm2022/ng-nest-ui-loading.mjs +20 -27
  432. package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
  433. package/fesm2022/ng-nest-ui-menu.mjs +33 -41
  434. package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
  435. package/fesm2022/ng-nest-ui-message-box.mjs +33 -58
  436. package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
  437. package/fesm2022/ng-nest-ui-message.mjs +22 -28
  438. package/fesm2022/ng-nest-ui-message.mjs.map +1 -1
  439. package/fesm2022/ng-nest-ui-notification.mjs +24 -26
  440. package/fesm2022/ng-nest-ui-notification.mjs.map +1 -1
  441. package/fesm2022/ng-nest-ui-outlet.mjs +11 -13
  442. package/fesm2022/ng-nest-ui-outlet.mjs.map +1 -1
  443. package/fesm2022/ng-nest-ui-page-header.mjs +20 -23
  444. package/fesm2022/ng-nest-ui-page-header.mjs.map +1 -1
  445. package/fesm2022/ng-nest-ui-pagination.mjs +39 -37
  446. package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
  447. package/fesm2022/ng-nest-ui-pattern.mjs +13 -12
  448. package/fesm2022/ng-nest-ui-pattern.mjs.map +1 -1
  449. package/fesm2022/ng-nest-ui-popconfirm.mjs +25 -33
  450. package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
  451. package/fesm2022/ng-nest-ui-popover.mjs +31 -35
  452. package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
  453. package/fesm2022/ng-nest-ui-portal.mjs +25 -25
  454. package/fesm2022/ng-nest-ui-portal.mjs.map +1 -1
  455. package/fesm2022/ng-nest-ui-progress.mjs +16 -22
  456. package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
  457. package/fesm2022/ng-nest-ui-radio.mjs +22 -28
  458. package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
  459. package/fesm2022/ng-nest-ui-rate.mjs +23 -27
  460. package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
  461. package/fesm2022/ng-nest-ui-resizable.mjs +62 -52
  462. package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
  463. package/fesm2022/ng-nest-ui-result.mjs +16 -23
  464. package/fesm2022/ng-nest-ui-result.mjs.map +1 -1
  465. package/fesm2022/ng-nest-ui-ripple.mjs +14 -15
  466. package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
  467. package/fesm2022/ng-nest-ui-select.mjs +59 -92
  468. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  469. package/fesm2022/ng-nest-ui-skeleton.mjs +15 -20
  470. package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
  471. package/fesm2022/ng-nest-ui-slider-select.mjs +46 -66
  472. package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
  473. package/fesm2022/ng-nest-ui-slider.mjs +40 -42
  474. package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
  475. package/fesm2022/ng-nest-ui-statistic.mjs +25 -30
  476. package/fesm2022/ng-nest-ui-statistic.mjs.map +1 -1
  477. package/fesm2022/ng-nest-ui-steps.mjs +18 -23
  478. package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
  479. package/fesm2022/ng-nest-ui-switch.mjs +19 -23
  480. package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
  481. package/fesm2022/ng-nest-ui-table.mjs +86 -128
  482. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  483. package/fesm2022/ng-nest-ui-tabs.mjs +52 -63
  484. package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
  485. package/fesm2022/ng-nest-ui-tag.mjs +17 -24
  486. package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
  487. package/fesm2022/ng-nest-ui-text-retract.mjs +17 -23
  488. package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
  489. package/fesm2022/ng-nest-ui-textarea.mjs +25 -29
  490. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  491. package/fesm2022/ng-nest-ui-theme.mjs +45 -64
  492. package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
  493. package/fesm2022/ng-nest-ui-time-ago.mjs +21 -23
  494. package/fesm2022/ng-nest-ui-time-ago.mjs.map +1 -1
  495. package/fesm2022/ng-nest-ui-time-picker.mjs +82 -119
  496. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  497. package/fesm2022/ng-nest-ui-time-range.mjs +5 -5
  498. package/fesm2022/ng-nest-ui-time-range.mjs.map +1 -1
  499. package/fesm2022/ng-nest-ui-timeline.mjs +18 -26
  500. package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
  501. package/fesm2022/ng-nest-ui-tooltip.mjs +30 -35
  502. package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
  503. package/fesm2022/ng-nest-ui-transfer.mjs +68 -104
  504. package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
  505. package/fesm2022/ng-nest-ui-tree-file.mjs +35 -39
  506. package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
  507. package/fesm2022/ng-nest-ui-tree-select.mjs +77 -119
  508. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  509. package/fesm2022/ng-nest-ui-tree.mjs +48 -76
  510. package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
  511. package/fesm2022/ng-nest-ui-typography.mjs +13 -15
  512. package/fesm2022/ng-nest-ui-typography.mjs.map +1 -1
  513. package/fesm2022/ng-nest-ui-upload.mjs +51 -95
  514. package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
  515. package/find/find.component.d.ts +6 -7
  516. package/find/find.module.d.ts +1 -13
  517. package/form/control.component.d.ts +6 -7
  518. package/form/form.component.d.ts +4 -6
  519. package/form/form.module.d.ts +1 -24
  520. package/highlight/highlight.component.d.ts +12 -10
  521. package/highlight/highlight.module.d.ts +1 -4
  522. package/i18n/i18n.directive.d.ts +6 -7
  523. package/i18n/i18n.module.d.ts +1 -1
  524. package/i18n/i18n.pipe.d.ts +1 -1
  525. package/i18n/i18n.service.d.ts +3 -2
  526. package/icon/icon.component.d.ts +7 -9
  527. package/icon/icon.module.d.ts +1 -3
  528. package/icon/icon.property.d.ts +1 -1
  529. package/icon/icon.service.d.ts +6 -7
  530. package/image/image-group.component.d.ts +1 -1
  531. package/image/image-preview.component.d.ts +5 -10
  532. package/image/image.component.d.ts +9 -14
  533. package/image/image.module.d.ts +3 -11
  534. package/inner/inner.component.d.ts +2 -3
  535. package/inner/inner.module.d.ts +1 -3
  536. package/input/input-group.component.d.ts +3 -6
  537. package/input/input.component.d.ts +8 -10
  538. package/input/input.module.d.ts +2 -8
  539. package/input-number/input-number.component.d.ts +5 -6
  540. package/input-number/input-number.module.d.ts +1 -7
  541. package/keyword/keyword.directive.d.ts +3 -4
  542. package/keyword/keyword.module.d.ts +1 -3
  543. package/keyword/keyword.property.d.ts +1 -1
  544. package/layout/col.component.d.ts +5 -7
  545. package/layout/layout.module.d.ts +1 -3
  546. package/layout/row.component.d.ts +3 -4
  547. package/link/link.component.d.ts +5 -7
  548. package/link/link.module.d.ts +1 -6
  549. package/list/list-drop-group.directive.d.ts +1 -1
  550. package/list/list-option.component.d.ts +6 -7
  551. package/list/list.component.d.ts +9 -12
  552. package/list/list.module.d.ts +1 -13
  553. package/loading/loading.component.d.ts +7 -10
  554. package/loading/loading.module.d.ts +1 -6
  555. package/menu/menu-node.component.d.ts +6 -7
  556. package/menu/menu.component.d.ts +4 -7
  557. package/menu/menu.module.d.ts +1 -7
  558. package/message/message.component.d.ts +3 -6
  559. package/message/message.module.d.ts +1 -5
  560. package/message/message.service.d.ts +4 -5
  561. package/message-box/message-box.component.d.ts +1 -1
  562. package/message-box/message-box.module.d.ts +1 -11
  563. package/message-box/message-box.service.d.ts +2 -5
  564. package/notification/notification.component.d.ts +3 -6
  565. package/notification/notification.module.d.ts +1 -5
  566. package/notification/notification.service.d.ts +1 -3
  567. package/outlet/outlet.directive.d.ts +4 -5
  568. package/outlet/outlet.module.d.ts +1 -2
  569. package/package.json +72 -72
  570. package/page-header/page-header.component.d.ts +5 -7
  571. package/page-header/page-header.module.d.ts +1 -4
  572. package/pagination/pagination.component.d.ts +8 -10
  573. package/pagination/pagination.module.d.ts +1 -9
  574. package/pattern/pattern.component.d.ts +4 -4
  575. package/pattern/pattern.module.d.ts +1 -2
  576. package/popconfirm/popconfirm.component.d.ts +6 -9
  577. package/popconfirm/popconfirm.module.d.ts +1 -7
  578. package/popover/popover-portal.component.d.ts +4 -5
  579. package/popover/popover.directive.d.ts +9 -10
  580. package/popover/popover.module.d.ts +1 -6
  581. package/portal/portal.module.d.ts +1 -3
  582. package/portal/portal.service.d.ts +3 -4
  583. package/progress/progress.component.d.ts +3 -7
  584. package/progress/progress.module.d.ts +1 -5
  585. package/radio/radio.component.d.ts +6 -8
  586. package/radio/radio.module.d.ts +1 -8
  587. package/rate/rate.component.d.ts +6 -8
  588. package/rate/rate.module.d.ts +1 -7
  589. package/resizable/resizable.directive.d.ts +5 -7
  590. package/resizable/resizable.module.d.ts +1 -2
  591. package/resizable/resizable.property.d.ts +1 -1
  592. package/result/result.component.d.ts +3 -7
  593. package/result/result.module.d.ts +1 -5
  594. package/ripple/ripple.directive.d.ts +4 -5
  595. package/ripple/ripple.module.d.ts +1 -3
  596. package/select/select-portal.component.d.ts +1 -1
  597. package/select/select.component.d.ts +14 -15
  598. package/select/select.module.d.ts +1 -12
  599. package/skeleton/skeleton.component.d.ts +3 -6
  600. package/skeleton/skeleton.module.d.ts +1 -4
  601. package/slider/slider.component.d.ts +5 -7
  602. package/slider/slider.module.d.ts +1 -7
  603. package/slider-select/slider-select.component.d.ts +6 -7
  604. package/slider-select/slider-select.module.d.ts +1 -9
  605. package/statistic/countdown.component.d.ts +6 -7
  606. package/statistic/statistic.component.d.ts +2 -3
  607. package/statistic/statistic.module.d.ts +1 -5
  608. package/steps/steps.component.d.ts +4 -7
  609. package/steps/steps.module.d.ts +1 -5
  610. package/style/core/base.scss +0 -7
  611. package/style/core/index.css +1 -8
  612. package/style/core/index.css.map +1 -1
  613. package/style/params/colors.scss +1 -1
  614. package/switch/switch.component.d.ts +6 -7
  615. package/switch/switch.module.d.ts +1 -7
  616. package/table/table-body.component.d.ts +1 -1
  617. package/table/table-foot.component.d.ts +3 -6
  618. package/table/table-head.component.d.ts +5 -7
  619. package/table/table.component.d.ts +1 -1
  620. package/table/table.module.d.ts +4 -17
  621. package/tabs/tab-content.component.d.ts +6 -6
  622. package/tabs/tab-link.directive.d.ts +2 -2
  623. package/tabs/tab.component.d.ts +2 -3
  624. package/tabs/tabs.component.d.ts +8 -9
  625. package/tabs/tabs.module.d.ts +3 -9
  626. package/tag/tag.component.d.ts +4 -8
  627. package/tag/tag.module.d.ts +1 -5
  628. package/text-retract/text-retract.component.d.ts +6 -10
  629. package/text-retract/text-retract.module.d.ts +1 -6
  630. package/textarea/textarea.component.d.ts +5 -7
  631. package/textarea/textarea.module.d.ts +1 -6
  632. package/theme/theme.component.d.ts +8 -9
  633. package/theme/theme.module.d.ts +1 -10
  634. package/time-ago/time-ago.module.d.ts +1 -1
  635. package/time-ago/time-ago.pipe.d.ts +6 -9
  636. package/time-picker/time-picker-frame.component.d.ts +5 -6
  637. package/time-picker/time-picker-portal.component.d.ts +5 -7
  638. package/time-picker/time-picker.component.d.ts +14 -16
  639. package/time-picker/time-picker.module.d.ts +2 -13
  640. package/time-range/time-range.module.d.ts +1 -1
  641. package/time-range/time-range.pipe.d.ts +1 -1
  642. package/timeline/timeline.component.d.ts +5 -8
  643. package/timeline/timeline.module.d.ts +1 -7
  644. package/tooltip/tooltip-portal.component.d.ts +4 -5
  645. package/tooltip/tooltip.directive.d.ts +8 -9
  646. package/tooltip/tooltip.module.d.ts +1 -6
  647. package/transfer/transfer.component.d.ts +6 -9
  648. package/transfer/transfer.module.d.ts +1 -15
  649. package/tree/tree-node.component.d.ts +6 -10
  650. package/tree/tree.component.d.ts +1 -1
  651. package/tree/tree.module.d.ts +1 -11
  652. package/tree-file/tree-file.component.d.ts +5 -10
  653. package/tree-file/tree-file.module.d.ts +1 -9
  654. package/tree-select/tree-select-portal.component.d.ts +5 -7
  655. package/tree-select/tree-select.component.d.ts +14 -15
  656. package/tree-select/tree-select.module.d.ts +1 -14
  657. package/typography/typography.component.d.ts +3 -4
  658. package/typography/typography.module.d.ts +1 -3
  659. package/upload/upload-portal.component.d.ts +5 -7
  660. package/upload/upload.component.d.ts +12 -15
  661. package/upload/upload.module.d.ts +1 -14
@@ -1,69 +1,16 @@
1
1
  import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
2
  import { XTransferComponent } from './transfer.component';
4
- import { FormsModule } from '@angular/forms';
5
- import { XCheckboxModule } from '@ng-nest/ui/checkbox';
6
- import { XButtonModule } from '@ng-nest/ui/button';
7
- import { DragDropModule } from '@angular/cdk/drag-drop';
8
- import { XInputModule } from '@ng-nest/ui/input';
9
- import { XOutletModule } from '@ng-nest/ui/outlet';
10
- import { XTransferProperty } from './transfer.property';
11
- import { XBaseFormModule } from '@ng-nest/ui/base-form';
12
- import { XTreeModule } from '@ng-nest/ui/tree';
13
- import { XTableModule } from '@ng-nest/ui/table';
14
- import { XKeywordModule } from '@ng-nest/ui/keyword';
15
- import { XLinkModule } from '@ng-nest/ui/link';
16
- import { XI18nModule } from '@ng-nest/ui/i18n';
17
3
  import * as i0 from "@angular/core";
18
4
  export class XTransferModule {
19
5
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: XTransferModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
20
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.2", ngImport: i0, type: XTransferModule, declarations: [XTransferComponent, XTransferProperty], imports: [CommonModule,
21
- FormsModule,
22
- DragDropModule,
23
- XOutletModule,
24
- XCheckboxModule,
25
- XButtonModule,
26
- XInputModule,
27
- XBaseFormModule,
28
- XTreeModule,
29
- XTableModule,
30
- XKeywordModule,
31
- XLinkModule,
32
- XI18nModule], exports: [XTransferComponent] }); }
33
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: XTransferModule, imports: [CommonModule,
34
- FormsModule,
35
- DragDropModule,
36
- XOutletModule,
37
- XCheckboxModule,
38
- XButtonModule,
39
- XInputModule,
40
- XBaseFormModule,
41
- XTreeModule,
42
- XTableModule,
43
- XKeywordModule,
44
- XLinkModule,
45
- XI18nModule] }); }
6
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.2", ngImport: i0, type: XTransferModule, imports: [XTransferComponent], exports: [XTransferComponent] }); }
7
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: XTransferModule, imports: [XTransferComponent] }); }
46
8
  }
47
9
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: XTransferModule, decorators: [{
48
10
  type: NgModule,
49
11
  args: [{
50
- declarations: [XTransferComponent, XTransferProperty],
51
12
  exports: [XTransferComponent],
52
- imports: [
53
- CommonModule,
54
- FormsModule,
55
- DragDropModule,
56
- XOutletModule,
57
- XCheckboxModule,
58
- XButtonModule,
59
- XInputModule,
60
- XBaseFormModule,
61
- XTreeModule,
62
- XTableModule,
63
- XKeywordModule,
64
- XLinkModule,
65
- XI18nModule
66
- ]
13
+ imports: [XTransferComponent]
67
14
  }]
68
15
  }] });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdHJhbnNmZXIvdHJhbnNmZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQXFCL0MsTUFBTSxPQUFPLGVBQWU7aUlBQWYsZUFBZTtrSUFBZixlQUFlLGlCQWxCWCxrQkFBa0IsRUFBRSxpQkFBaUIsYUFHbEQsWUFBWTtZQUNaLFdBQVc7WUFDWCxjQUFjO1lBQ2QsYUFBYTtZQUNiLGVBQWU7WUFDZixhQUFhO1lBQ2IsWUFBWTtZQUNaLGVBQWU7WUFDZixXQUFXO1lBQ1gsWUFBWTtZQUNaLGNBQWM7WUFDZCxXQUFXO1lBQ1gsV0FBVyxhQWRILGtCQUFrQjtrSUFpQmpCLGVBQWUsWUFmeEIsWUFBWTtZQUNaLFdBQVc7WUFDWCxjQUFjO1lBQ2QsYUFBYTtZQUNiLGVBQWU7WUFDZixhQUFhO1lBQ2IsWUFBWTtZQUNaLGVBQWU7WUFDZixXQUFXO1lBQ1gsWUFBWTtZQUNaLGNBQWM7WUFDZCxXQUFXO1lBQ1gsV0FBVzs7MkZBR0YsZUFBZTtrQkFuQjNCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsaUJBQWlCLENBQUM7b0JBQ3JELE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO29CQUM3QixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsV0FBVztxQkFDWjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFhUcmFuc2ZlckNvbXBvbmVudCB9IGZyb20gJy4vdHJhbnNmZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFhDaGVja2JveE1vZHVsZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2NoZWNrYm94JztcclxuaW1wb3J0IHsgWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2J1dHRvbic7XHJcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IFhJbnB1dE1vZHVsZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2lucHV0JztcclxuaW1wb3J0IHsgWE91dGxldE1vZHVsZSB9IGZyb20gJ0BuZy1uZXN0L3VpL291dGxldCc7XHJcbmltcG9ydCB7IFhUcmFuc2ZlclByb3BlcnR5IH0gZnJvbSAnLi90cmFuc2Zlci5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IFhCYXNlRm9ybU1vZHVsZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2Jhc2UtZm9ybSc7XHJcbmltcG9ydCB7IFhUcmVlTW9kdWxlIH0gZnJvbSAnQG5nLW5lc3QvdWkvdHJlZSc7XHJcbmltcG9ydCB7IFhUYWJsZU1vZHVsZSB9IGZyb20gJ0BuZy1uZXN0L3VpL3RhYmxlJztcclxuaW1wb3J0IHsgWEtleXdvcmRNb2R1bGUgfSBmcm9tICdAbmctbmVzdC91aS9rZXl3b3JkJztcclxuaW1wb3J0IHsgWExpbmtNb2R1bGUgfSBmcm9tICdAbmctbmVzdC91aS9saW5rJztcclxuaW1wb3J0IHsgWEkxOG5Nb2R1bGUgfSBmcm9tICdAbmctbmVzdC91aS9pMThuJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbWFRyYW5zZmVyQ29tcG9uZW50LCBYVHJhbnNmZXJQcm9wZXJ0eV0sXHJcbiAgZXhwb3J0czogW1hUcmFuc2ZlckNvbXBvbmVudF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBEcmFnRHJvcE1vZHVsZSxcclxuICAgIFhPdXRsZXRNb2R1bGUsXHJcbiAgICBYQ2hlY2tib3hNb2R1bGUsXHJcbiAgICBYQnV0dG9uTW9kdWxlLFxyXG4gICAgWElucHV0TW9kdWxlLFxyXG4gICAgWEJhc2VGb3JtTW9kdWxlLFxyXG4gICAgWFRyZWVNb2R1bGUsXHJcbiAgICBYVGFibGVNb2R1bGUsXHJcbiAgICBYS2V5d29yZE1vZHVsZSxcclxuICAgIFhMaW5rTW9kdWxlLFxyXG4gICAgWEkxOG5Nb2R1bGVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYVHJhbnNmZXJNb2R1bGUge31cclxuIl19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdHJhbnNmZXIvdHJhbnNmZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBTTFELE1BQU0sT0FBTyxlQUFlO2lJQUFmLGVBQWU7a0lBQWYsZUFBZSxZQUZoQixrQkFBa0IsYUFEbEIsa0JBQWtCO2tJQUdqQixlQUFlLFlBRmhCLGtCQUFrQjs7MkZBRWpCLGVBQWU7a0JBSjNCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhUcmFuc2ZlckNvbXBvbmVudCB9IGZyb20gJy4vdHJhbnNmZXIuY29tcG9uZW50JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZXhwb3J0czogW1hUcmFuc2ZlckNvbXBvbmVudF0sXHJcbiAgaW1wb3J0czogW1hUcmFuc2ZlckNvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFhUcmFuc2Zlck1vZHVsZSB7fVxyXG4iXX0=
@@ -1,18 +1,30 @@
1
- import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, HostListener, Input, Output, EventEmitter } from '@angular/core';
1
+ import { Component, ViewEncapsulation, ElementRef, ChangeDetectorRef, ChangeDetectionStrategy, HostBinding, HostListener, Input, Output, EventEmitter, inject } from '@angular/core';
2
2
  import { XTreeNodePrefix, XTreeNodeProperty } from './tree.property';
3
- import { XIsEmpty } from '@ng-nest/ui/core';
3
+ import { XIsEmpty, XConfigService } from '@ng-nest/ui/core';
4
4
  import { Subject } from 'rxjs';
5
+ import { XTreeService } from './tree.service';
6
+ import { CommonModule } from '@angular/common';
7
+ import { XIconComponent } from '@ng-nest/ui/icon';
8
+ import { XCheckboxComponent } from '@ng-nest/ui/checkbox';
9
+ import { FormsModule } from '@angular/forms';
10
+ import { XKeywordDirective } from '@ng-nest/ui/keyword';
11
+ import { XLinkComponent } from '@ng-nest/ui/link';
12
+ import { XOutletDirective } from '@ng-nest/ui/outlet';
5
13
  import * as i0 from "@angular/core";
6
- import * as i1 from "@ng-nest/ui/core";
7
- import * as i2 from "./tree.service";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "@angular/forms";
10
- import * as i5 from "@ng-nest/ui/icon";
11
- import * as i6 from "@ng-nest/ui/checkbox";
12
- import * as i7 from "@ng-nest/ui/outlet";
13
- import * as i8 from "@ng-nest/ui/link";
14
- import * as i9 from "@ng-nest/ui/keyword";
14
+ import * as i1 from "@angular/common";
15
+ import * as i2 from "@angular/forms";
15
16
  export class XTreeNodeComponent extends XTreeNodeProperty {
17
+ constructor() {
18
+ super(...arguments);
19
+ this.nodeMouseenter = new EventEmitter();
20
+ this.rootClass = true;
21
+ this._loading = false;
22
+ this._unSubject = new Subject();
23
+ this.cdr = inject(ChangeDetectorRef);
24
+ this.treeService = inject(XTreeService);
25
+ this.elementRef = inject(ElementRef);
26
+ this.configService = inject(XConfigService);
27
+ }
16
28
  get loading() {
17
29
  return this._loading;
18
30
  }
@@ -95,19 +107,6 @@ export class XTreeNodeComponent extends XTreeNodeProperty {
95
107
  return this.tree.activatedId === this.node.id;
96
108
  }
97
109
  }
98
- constructor(renderer, elementRef, cdr, configService, ngZone, treeService) {
99
- super();
100
- this.renderer = renderer;
101
- this.elementRef = elementRef;
102
- this.cdr = cdr;
103
- this.configService = configService;
104
- this.ngZone = ngZone;
105
- this.treeService = treeService;
106
- this.nodeMouseenter = new EventEmitter();
107
- this.rootClass = true;
108
- this._loading = false;
109
- this._unSubject = new Subject();
110
- }
111
110
  ngOnInit() {
112
111
  this.node.change = (check) => {
113
112
  if (check)
@@ -250,13 +249,21 @@ export class XTreeNodeComponent extends XTreeNodeProperty {
250
249
  trackByAction(_index, item) {
251
250
  return item.id;
252
251
  }
253
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: XTreeNodeComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.XConfigService }, { token: i0.NgZone }, { token: i2.XTreeService }], target: i0.ɵɵFactoryTarget.Component }); }
254
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: XTreeNodeComponent, selector: "x-tree-node, [x-tree-node]", inputs: { tree: "tree" }, 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]=\"getActivated\"\r\n [class.x-disabled]=\"node.disabled\"\r\n [class.x-tree-node-sub]=\"!node.leaf\"\r\n [class.x-tree-node-last]=\"isChildrenLast\"\r\n [style.padding-left.rem]=\"paddingLeft\"\r\n [style.height.rem]=\"node.height ? node.height : nodeHeight ? nodeHeight : ''\"\r\n [style.align-items]=\"node.alignItems ? node.alignItems : nodeAlignItems\"\r\n (click)=\"!node.disabled && onActivate($event, node)\"\r\n>\r\n <div class=\"x-tree-node-line\" *ngIf=\"tree.showLine && numLevel > 0\" [style.width.rem]=\"paddingLeft\">\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.rem]=\"getVerticalLeft(i)\"\r\n *ngFor=\"let i of verticalLevel\"\r\n ></div>\r\n <div\r\n class=\"x-tree-node-line-horizontal\"\r\n [style.width.rem]=\"verticalWidth\"\r\n [style.left.rem]=\"getVerticalLeft(verticalLevel.length)\"\r\n ></div>\r\n </div>\r\n <div class=\"x-tree-node-drag-indicator\" *ngIf=\"showDragIndicator\" [style.width]=\"indicatorWidth\" [ngStyle]=\"indicatorStyle\"></div>\r\n <ng-container *ngIf=\"!node.loading\">\r\n <div\r\n class=\"x-tree-node-right\"\r\n [class.is-leaf]=\"node.leaf\"\r\n [class.is-open]=\"node.open\"\r\n [class.is-template]=\"tree.expandedIcon\"\r\n [style.width.rem]=\"verticalWidth * 2\"\r\n (click)=\"!tree.nodeOpen && tree.onToggle($event, node)\"\r\n >\r\n <ng-container *ngIf=\"tree.expandedIcon; else defaultIconTpl\">\r\n <ng-container *xOutlet=\"tree.expandedIcon; context: { $node: node }\"></ng-container>\r\n </ng-container>\r\n <ng-template #defaultIconTpl>\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n\r\n <x-icon class=\"x-tree-node-loading\" *ngIf=\"node.loading\" type=\"fto-loader\" [spin]=\"node.loading\"></x-icon>\r\n <x-checkbox\r\n *ngIf=\"tree.checkbox\"\r\n [data]=\"[{ label: '', id: node.id }]\"\r\n [(ngModel)]=\"node.checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"node.indeterminate\"\r\n [disabled]=\"node.disabled!\"\r\n (click)=\"$event.stopPropagation()\"\r\n ></x-checkbox>\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"node.nowrap === false || node.nowrap === true ? node.nowrap : nodeNowrap\"\r\n [title]=\"node.label\"\r\n x-keyword\r\n [text]=\"tree.keywordText\"\r\n [caseSensitive]=\"tree.caseSensitive\"\r\n *ngIf=\"!tree.labelTpl; else labelTpl\"\r\n >{{ node.label }}</span\r\n >\r\n <ng-template #labelTpl>\r\n <ng-container *xOutlet=\"tree.labelTpl; context: { $node: node }\"></ng-container>\r\n </ng-template>\r\n <span class=\"x-tree-node-operations\">\r\n <x-link\r\n *ngFor=\"let action of tree.actions; trackBy: trackByAction\"\r\n [icon]=\"action.icon\"\r\n [title]=\"action.label\"\r\n (click)=\"onAction($event, action, node)\"\r\n ></x-link>\r\n </span>\r\n <x-icon class=\"x-tree-node-checked\" type=\"fto-check\" *ngIf=\"tree.multiple && getActivated\"></x-icon>\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);cursor:pointer}.x-tree-node-content x-icon{padding:.25rem;font-size:1rem;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);background-color:var(--x-background-a200)}.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-background-a400);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:0;height:100%;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);cursor:pointer}body>x-tree-node.cdk-drag-preview .x-tree-node-content x-icon{padding:.25rem;font-size:1rem;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);background-color:var(--x-background-a200)}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-background-a400);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:0;height:100%;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: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.XIconComponent, selector: "x-icon" }, { kind: "component", type: i6.XCheckboxComponent, selector: "x-checkbox" }, { kind: "directive", type: i7.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: i8.XLinkComponent, selector: "x-link" }, { kind: "directive", type: i9.XKeywordDirective, selector: "[x-keyword]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
252
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: XTreeNodeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
253
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: XTreeNodeComponent, isStandalone: true, selector: "x-tree-node, [x-tree-node]", inputs: { tree: "tree" }, 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]=\"getActivated\"\r\n [class.x-disabled]=\"node.disabled\"\r\n [class.x-tree-node-sub]=\"!node.leaf\"\r\n [class.x-tree-node-last]=\"isChildrenLast\"\r\n [style.padding-left.rem]=\"paddingLeft\"\r\n [style.height.rem]=\"node.height ? node.height : nodeHeight ? nodeHeight : ''\"\r\n [style.align-items]=\"node.alignItems ? node.alignItems : nodeAlignItems\"\r\n (click)=\"!node.disabled && onActivate($event, node)\"\r\n>\r\n <div class=\"x-tree-node-line\" *ngIf=\"tree.showLine && numLevel > 0\" [style.width.rem]=\"paddingLeft\">\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.rem]=\"getVerticalLeft(i)\"\r\n *ngFor=\"let i of verticalLevel\"\r\n ></div>\r\n <div\r\n class=\"x-tree-node-line-horizontal\"\r\n [style.width.rem]=\"verticalWidth\"\r\n [style.left.rem]=\"getVerticalLeft(verticalLevel.length)\"\r\n ></div>\r\n </div>\r\n <div class=\"x-tree-node-drag-indicator\" *ngIf=\"showDragIndicator\" [style.width]=\"indicatorWidth\" [ngStyle]=\"indicatorStyle\"></div>\r\n <ng-container *ngIf=\"!node.loading\">\r\n <div\r\n class=\"x-tree-node-right\"\r\n [class.is-leaf]=\"node.leaf\"\r\n [class.is-open]=\"node.open\"\r\n [class.is-template]=\"tree.expandedIcon\"\r\n [style.width.rem]=\"verticalWidth * 2\"\r\n (click)=\"!tree.nodeOpen && tree.onToggle($event, node)\"\r\n >\r\n <ng-container *ngIf=\"tree.expandedIcon; else defaultIconTpl\">\r\n <ng-container *xOutlet=\"tree.expandedIcon; context: { $node: node }\"></ng-container>\r\n </ng-container>\r\n <ng-template #defaultIconTpl>\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n\r\n <x-icon class=\"x-tree-node-loading\" *ngIf=\"node.loading\" type=\"fto-loader\" [spin]=\"node.loading\"></x-icon>\r\n <x-checkbox\r\n *ngIf=\"tree.checkbox\"\r\n [data]=\"[{ label: '', id: node.id }]\"\r\n [(ngModel)]=\"node.checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"node.indeterminate\"\r\n [disabled]=\"node.disabled!\"\r\n (click)=\"$event.stopPropagation()\"\r\n ></x-checkbox>\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"node.nowrap === false || node.nowrap === true ? node.nowrap : nodeNowrap\"\r\n [title]=\"node.label\"\r\n x-keyword\r\n [text]=\"tree.keywordText\"\r\n [caseSensitive]=\"tree.caseSensitive\"\r\n *ngIf=\"!tree.labelTpl; else labelTpl\"\r\n >{{ node.label }}</span\r\n >\r\n <ng-template #labelTpl>\r\n <ng-container *xOutlet=\"tree.labelTpl; context: { $node: node }\"></ng-container>\r\n </ng-template>\r\n <span class=\"x-tree-node-operations\">\r\n <x-link\r\n *ngFor=\"let action of tree.actions; trackBy: trackByAction\"\r\n [icon]=\"action.icon\"\r\n [title]=\"action.label\"\r\n (click)=\"onAction($event, action, node)\"\r\n ></x-link>\r\n </span>\r\n <x-icon class=\"x-tree-node-checked\" type=\"fto-check\" *ngIf=\"tree.multiple && getActivated\"></x-icon>\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);cursor:pointer}.x-tree-node-content x-icon{padding:.25rem;font-size:1rem;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);background-color:var(--x-background-a200)}.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-background-a400);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:0;height:100%;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);cursor:pointer}body>x-tree-node.cdk-drag-preview .x-tree-node-content x-icon{padding:.25rem;font-size:1rem;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);background-color:var(--x-background-a200)}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-background-a400);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:0;height:100%;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: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.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 }); }
255
254
  }
256
255
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: XTreeNodeComponent, decorators: [{
257
256
  type: Component,
258
- args: [{ selector: `${XTreeNodePrefix}, [${XTreeNodePrefix}]`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"x-tree-node-content\"\r\n [class.x-activated]=\"getActivated\"\r\n [class.x-disabled]=\"node.disabled\"\r\n [class.x-tree-node-sub]=\"!node.leaf\"\r\n [class.x-tree-node-last]=\"isChildrenLast\"\r\n [style.padding-left.rem]=\"paddingLeft\"\r\n [style.height.rem]=\"node.height ? node.height : nodeHeight ? nodeHeight : ''\"\r\n [style.align-items]=\"node.alignItems ? node.alignItems : nodeAlignItems\"\r\n (click)=\"!node.disabled && onActivate($event, node)\"\r\n>\r\n <div class=\"x-tree-node-line\" *ngIf=\"tree.showLine && numLevel > 0\" [style.width.rem]=\"paddingLeft\">\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.rem]=\"getVerticalLeft(i)\"\r\n *ngFor=\"let i of verticalLevel\"\r\n ></div>\r\n <div\r\n class=\"x-tree-node-line-horizontal\"\r\n [style.width.rem]=\"verticalWidth\"\r\n [style.left.rem]=\"getVerticalLeft(verticalLevel.length)\"\r\n ></div>\r\n </div>\r\n <div class=\"x-tree-node-drag-indicator\" *ngIf=\"showDragIndicator\" [style.width]=\"indicatorWidth\" [ngStyle]=\"indicatorStyle\"></div>\r\n <ng-container *ngIf=\"!node.loading\">\r\n <div\r\n class=\"x-tree-node-right\"\r\n [class.is-leaf]=\"node.leaf\"\r\n [class.is-open]=\"node.open\"\r\n [class.is-template]=\"tree.expandedIcon\"\r\n [style.width.rem]=\"verticalWidth * 2\"\r\n (click)=\"!tree.nodeOpen && tree.onToggle($event, node)\"\r\n >\r\n <ng-container *ngIf=\"tree.expandedIcon; else defaultIconTpl\">\r\n <ng-container *xOutlet=\"tree.expandedIcon; context: { $node: node }\"></ng-container>\r\n </ng-container>\r\n <ng-template #defaultIconTpl>\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n\r\n <x-icon class=\"x-tree-node-loading\" *ngIf=\"node.loading\" type=\"fto-loader\" [spin]=\"node.loading\"></x-icon>\r\n <x-checkbox\r\n *ngIf=\"tree.checkbox\"\r\n [data]=\"[{ label: '', id: node.id }]\"\r\n [(ngModel)]=\"node.checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"node.indeterminate\"\r\n [disabled]=\"node.disabled!\"\r\n (click)=\"$event.stopPropagation()\"\r\n ></x-checkbox>\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"node.nowrap === false || node.nowrap === true ? node.nowrap : nodeNowrap\"\r\n [title]=\"node.label\"\r\n x-keyword\r\n [text]=\"tree.keywordText\"\r\n [caseSensitive]=\"tree.caseSensitive\"\r\n *ngIf=\"!tree.labelTpl; else labelTpl\"\r\n >{{ node.label }}</span\r\n >\r\n <ng-template #labelTpl>\r\n <ng-container *xOutlet=\"tree.labelTpl; context: { $node: node }\"></ng-container>\r\n </ng-template>\r\n <span class=\"x-tree-node-operations\">\r\n <x-link\r\n *ngFor=\"let action of tree.actions; trackBy: trackByAction\"\r\n [icon]=\"action.icon\"\r\n [title]=\"action.label\"\r\n (click)=\"onAction($event, action, node)\"\r\n ></x-link>\r\n </span>\r\n <x-icon class=\"x-tree-node-checked\" type=\"fto-check\" *ngIf=\"tree.multiple && getActivated\"></x-icon>\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);cursor:pointer}.x-tree-node-content x-icon{padding:.25rem;font-size:1rem;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);background-color:var(--x-background-a200)}.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-background-a400);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:0;height:100%;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);cursor:pointer}body>x-tree-node.cdk-drag-preview .x-tree-node-content x-icon{padding:.25rem;font-size:1rem;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);background-color:var(--x-background-a200)}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-background-a400);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:0;height:100%;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"] }]
259
- }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.XConfigService }, { type: i0.NgZone }, { type: i2.XTreeService }], propDecorators: { tree: [{
257
+ args: [{ selector: `${XTreeNodePrefix}, [${XTreeNodePrefix}]`, standalone: true, imports: [
258
+ CommonModule,
259
+ FormsModule,
260
+ XIconComponent,
261
+ XCheckboxComponent,
262
+ XOutletDirective,
263
+ XLinkComponent,
264
+ XKeywordDirective
265
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"x-tree-node-content\"\r\n [class.x-activated]=\"getActivated\"\r\n [class.x-disabled]=\"node.disabled\"\r\n [class.x-tree-node-sub]=\"!node.leaf\"\r\n [class.x-tree-node-last]=\"isChildrenLast\"\r\n [style.padding-left.rem]=\"paddingLeft\"\r\n [style.height.rem]=\"node.height ? node.height : nodeHeight ? nodeHeight : ''\"\r\n [style.align-items]=\"node.alignItems ? node.alignItems : nodeAlignItems\"\r\n (click)=\"!node.disabled && onActivate($event, node)\"\r\n>\r\n <div class=\"x-tree-node-line\" *ngIf=\"tree.showLine && numLevel > 0\" [style.width.rem]=\"paddingLeft\">\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.rem]=\"getVerticalLeft(i)\"\r\n *ngFor=\"let i of verticalLevel\"\r\n ></div>\r\n <div\r\n class=\"x-tree-node-line-horizontal\"\r\n [style.width.rem]=\"verticalWidth\"\r\n [style.left.rem]=\"getVerticalLeft(verticalLevel.length)\"\r\n ></div>\r\n </div>\r\n <div class=\"x-tree-node-drag-indicator\" *ngIf=\"showDragIndicator\" [style.width]=\"indicatorWidth\" [ngStyle]=\"indicatorStyle\"></div>\r\n <ng-container *ngIf=\"!node.loading\">\r\n <div\r\n class=\"x-tree-node-right\"\r\n [class.is-leaf]=\"node.leaf\"\r\n [class.is-open]=\"node.open\"\r\n [class.is-template]=\"tree.expandedIcon\"\r\n [style.width.rem]=\"verticalWidth * 2\"\r\n (click)=\"!tree.nodeOpen && tree.onToggle($event, node)\"\r\n >\r\n <ng-container *ngIf=\"tree.expandedIcon; else defaultIconTpl\">\r\n <ng-container *xOutlet=\"tree.expandedIcon; context: { $node: node }\"></ng-container>\r\n </ng-container>\r\n <ng-template #defaultIconTpl>\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n\r\n <x-icon class=\"x-tree-node-loading\" *ngIf=\"node.loading\" type=\"fto-loader\" [spin]=\"node.loading\"></x-icon>\r\n <x-checkbox\r\n *ngIf=\"tree.checkbox\"\r\n [data]=\"[{ label: '', id: node.id }]\"\r\n [(ngModel)]=\"node.checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"node.indeterminate\"\r\n [disabled]=\"node.disabled!\"\r\n (click)=\"$event.stopPropagation()\"\r\n ></x-checkbox>\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"node.nowrap === false || node.nowrap === true ? node.nowrap : nodeNowrap\"\r\n [title]=\"node.label\"\r\n x-keyword\r\n [text]=\"tree.keywordText\"\r\n [caseSensitive]=\"tree.caseSensitive\"\r\n *ngIf=\"!tree.labelTpl; else labelTpl\"\r\n >{{ node.label }}</span\r\n >\r\n <ng-template #labelTpl>\r\n <ng-container *xOutlet=\"tree.labelTpl; context: { $node: node }\"></ng-container>\r\n </ng-template>\r\n <span class=\"x-tree-node-operations\">\r\n <x-link\r\n *ngFor=\"let action of tree.actions; trackBy: trackByAction\"\r\n [icon]=\"action.icon\"\r\n [title]=\"action.label\"\r\n (click)=\"onAction($event, action, node)\"\r\n ></x-link>\r\n </span>\r\n <x-icon class=\"x-tree-node-checked\" type=\"fto-check\" *ngIf=\"tree.multiple && getActivated\"></x-icon>\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);cursor:pointer}.x-tree-node-content x-icon{padding:.25rem;font-size:1rem;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);background-color:var(--x-background-a200)}.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-background-a400);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:0;height:100%;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);cursor:pointer}body>x-tree-node.cdk-drag-preview .x-tree-node-content x-icon{padding:.25rem;font-size:1rem;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);background-color:var(--x-background-a200)}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-background-a400);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:0;height:100%;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"] }]
266
+ }], propDecorators: { tree: [{
260
267
  type: Input
261
268
  }], nodeMouseenter: [{
262
269
  type: Output
@@ -270,4 +277,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
270
277
  type: HostListener,
271
278
  args: ['mouseleave']
272
279
  }] } });
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RyZWUvdHJlZS1ub2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RyZWUvdHJlZS1ub2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBSWpCLHVCQUF1QixFQUN2QixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWEsaUJBQWlCLEVBQWUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RixPQUFPLEVBQUUsUUFBUSxFQUE0QixNQUFNLGtCQUFrQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7O0FBVS9CLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxpQkFBaUI7SUFNdkQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBVyxPQUFPLENBQUMsS0FBSztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFHRCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUM1RSxDQUFDO0lBRXVDLFlBQVksQ0FBQyxLQUFpQjtRQUNwRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFB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Q0wsQ0FBQyxDQUFDO1FBQ0YsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUF1QixDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsZUFBZSxDQUFDLFFBQWtCO1FBQ2hDLE9BQU8sUUFBb0IsQ0FBQztJQUM5QixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVksRUFBRSxNQUFtQixFQUFFLElBQWU7UUFDekQsTUFBTSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWMsRUFBRSxJQUFlO1FBQ3pDLE9BQU8sR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWMsRUFBRSxJQUFpQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQztpSUFwUFUsa0JBQWtCO3FIQUFsQixrQkFBa0Isd1RDMUIvQiwyckdBNkVBOzsyRkRuRGEsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNFLEdBQUcsZUFBZSxNQUFNLGVBQWUsR0FBRyxpQkFHckMsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTtvTkFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQzJCLFNBQVM7c0JBQTFDLFdBQVc7dUJBQUMsbUJBQW1CO2dCQWdCUSxZQUFZO3NCQUFuRCxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFJVixZQUFZO3NCQUF2QyxZQUFZO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBSZW5kZXJlcjIsXHJcbiAgRWxlbWVudFJlZixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBIb3N0QmluZGluZyxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgTmdab25lLFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXJcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWFRyZWVOb2RlUHJlZml4LCBYVHJlZU5vZGUsIFhUcmVlTm9kZVByb3BlcnR5LCBYVHJlZUFjdGlvbiB9IGZyb20gJy4vdHJlZS5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IFhJc0VtcHR5LCBYQ29uZmlnU2VydmljZSwgWEJvb2xlYW4gfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBYVHJlZVNlcnZpY2UgfSBmcm9tICcuL3RyZWUuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WFRyZWVOb2RlUHJlZml4fSwgWyR7WFRyZWVOb2RlUHJlZml4fV1gLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVlLW5vZGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RyZWUtbm9kZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFhUcmVlTm9kZUNvbXBvbmVudCBleHRlbmRzIFhUcmVlTm9kZVByb3BlcnR5IHtcclxuICBASW5wdXQoKSB0cmVlOiBhbnk7XHJcbiAgQE91dHB1dCgpIG5vZGVNb3VzZWVudGVyID0gbmV3IEV2ZW50RW1pdHRlcjx7IGV2ZW50OiBNb3VzZUV2ZW50OyBub2RlOiBYVHJlZU5vZGU7IGVsZTogRWxlbWVudFJlZiB9PigpO1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MueC10cmVlLW5vZGUnKSByb290Q2xhc3MgPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIF9sb2FkaW5nID0gZmFsc2U7XHJcbiAgcHVibGljIGdldCBsb2FkaW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmc7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgbG9hZGluZyh2YWx1ZSkge1xyXG4gICAgdGhpcy5fbG9hZGluZyA9IHZhbHVlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBnZXQgc2hvd0RyYWdJbmRpY2F0b3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50cmVlLmRyYWdnaW5nICYmIHRoaXMudHJlZS5ob3ZlclRyZWVOb2RlPy5pZCA9PT0gdGhpcy5ub2RlLmlkO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicsIFsnJGV2ZW50J10pIG9uTW91c2VlbnRlcihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5ub2RlTW91c2VlbnRlci5lbWl0KHsgZXZlbnQ6IGV2ZW50LCBub2RlOiB0aGlzLm5vZGUsIGVsZTogdGhpcy5lbGVtZW50UmVmIH0pO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpIG9uTW91c2VsZWF2ZShfZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy50cmVlLmRyYWdnaW5nKSByZXR1cm47XHJcbiAgICB0aGlzLnRyZWUuaG92ZXJUcmVlTm9kZT8uY2hhbmdlICYmIHRoaXMudHJlZS5ob3ZlclRyZWVOb2RlPy5jaGFuZ2UoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGdldCBpc0NoaWxkcmVuTGFzdCgpIHtcclxuICAgIGxldCBwYXJlbnQgPSB0aGlzLnRyZWUubm9kZXMuZmluZCgoeDogWFRyZWVOb2RlKSA9PiB4LmlkID09PSB0aGlzLm5vZGUucGlkKTtcclxuICAgIGlmICghcGFyZW50KSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBpbmRleCA9IHBhcmVudC5jaGlsZHJlbi5pbmRleE9mKHRoaXMubm9kZSk7XHJcbiAgICByZXR1cm4gaW5kZXggKyAxID09PSBwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzUGFyZW50TGFzdCgpIHtcclxuICAgIGxldCBwYXJlbnRzID0gdGhpcy50cmVlU2VydmljZS5nZXRQYXJlbnRzKHRoaXMudHJlZS5ub2RlcywgdGhpcy5ub2RlKTtcclxuICAgIGlmIChwYXJlbnRzLmxlbmd0aCA8PSAxKSByZXR1cm4gW107XHJcbiAgICBjb25zdCByZXM6IGJvb2xlYW5bXSA9IFtdO1xyXG4gICAgcGFyZW50cy5yZWR1Y2UoKHByZTogWFRyZWVOb2RlLCBjdXJyOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgaWYgKHByZSA9PT0gbnVsbCkgcmV0dXJuIGN1cnI7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gY3Vyci5jaGlsZHJlbj8uaW5kZXhPZihwcmUpITtcclxuICAgICAgcmVzLnB1c2goaW5kZXggKyAxID09PSBjdXJyLmNoaWxkcmVuPy5sZW5ndGghKTtcclxuICAgICAgcmV0dXJuIGN1cnI7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcmVzLnJldmVyc2UoKTtcclxuICB9XHJcblxyXG4gIGdldCBudW1MZXZlbCgpIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5sZXZlbCk7XHJcbiAgfVxyXG5cclxuICBnZXQgdmVydGljYWxMZXZlbCgpIHtcclxuICAgIGlmICh0aGlzLm51bUxldmVsID4gMCkge1xyXG4gICAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5udW1MZXZlbCB9KS5tYXAoKF94LCBpbmRleCkgPT4gaW5kZXggKyAxKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCB2ZXJ0aWNhbFdpZHRoKCkge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLnRyZWUuc3BhY2luZykgLyAyO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBhZGRpbmdMZWZ0KCkge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLm5vZGU/LmxldmVsID8gdGhpcy5ub2RlLmxldmVsIDogMCkgKiBOdW1iZXIodGhpcy50cmVlLnNwYWNpbmcpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGluZGljYXRvcldpZHRoKCkge1xyXG4gICAgcmV0dXJuIGBjYWxjKDEwMCUgLSAke3RoaXMucGFkZGluZ0xlZnQgKyAodGhpcy5ub2RlLmxlYWYgPyAxLjUgOiAwKX1yZW0pYDtcclxuICB9XHJcblxyXG4gIGdldCBpbmRpY2F0b3JTdHlsZSgpIHtcclxuICAgIGlmICh0aGlzLnRyZWUuZHJhZ1Bvc2l0aW9uID09PSAxKSB7XHJcbiAgICAgIHJldHVybiB7IGJvdHRvbTogYCR7LTAuMDYyNX1yZW1gIH07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudHJlZS5kcmFnUG9zaXRpb24gPT09IC0xKSB7XHJcbiAgICAgIHJldHVybiB7IHRvcDogYCR7LTAuMDYyNX1yZW1gIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge307XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0QWN0aXZhdGVkKCkge1xyXG4gICAgaWYgKHRoaXMudHJlZS5tdWx0aXBsZSkge1xyXG4gICAgICBpZiAodGhpcy50cmVlLm9iamVjdEFycmF5KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJlZS5hY3RpdmF0ZWRJZD8ubWFwKCh4OiBYVHJlZU5vZGUpID0+IHguaWQpLmluY2x1ZGVzKHRoaXMubm9kZS5pZCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJlZS5hY3RpdmF0ZWRJZD8uaW5jbHVkZXModGhpcy5ub2RlLmlkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMudHJlZS5hY3RpdmF0ZWRJZCA9PT0gdGhpcy5ub2RlLmlkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IFhDb25maWdTZXJ2aWNlLFxyXG4gICAgcHVibGljIG5nWm9uZTogTmdab25lLFxyXG4gICAgcHVibGljIHRyZWVTZXJ2aWNlOiBYVHJlZVNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMubm9kZS5jaGFuZ2UgPSAoY2hlY2s6IGJvb2xlYW4pID0+IHtcclxuICAgICAgaWYgKGNoZWNrKSB0aGlzLnNldENoZWNrYm94KCk7XHJcbiAgICAgIHRoaXM/LmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5sZXZlbCA9IHRoaXMubm9kZT8ubGV2ZWwgPyB0aGlzLm5vZGUubGV2ZWwgOiAwO1xyXG4gICAgaWYgKCF0aGlzLnRyZWUubGV2ZWxDaGVjaykgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMubm9kZS5jaGVja2VkKSB0aGlzLnNldENoZWNrYm94KCk7XHJcbiAgICB0aGlzLnNldEluZGV0ZXJtaW5hdGUodGhpcy5ub2RlKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMuX3VuU3ViamVjdC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgb25BY3RpdmF0ZShldmVudDogRXZlbnQsIG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgY29uc3QgY2hhbmdlOiBGdW5jdGlvbiA9IHRoaXMudHJlZS5hY3RpdmF0ZWROb2RlPy5jaGFuZ2UgYXMgRnVuY3Rpb247XHJcbiAgICB0aGlzLnRyZWUubm9kZU9wZW4gJiYgIW5vZGUubGVhZiAmJiB0aGlzLnRyZWUub25Ub2dnbGUoZXZlbnQsIG5vZGUpO1xyXG4gICAgY29uc3Qgb25DaGFuZ2UgPSAoKSA9PiB7XHJcbiAgICAgIGNoYW5nZSAmJiBjaGFuZ2UoKTtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH07XHJcbiAgICBpZiAodGhpcy50cmVlLm9ubHlMZWFmICYmICFub2RlLmxlYWYpIHtcclxuICAgICAgb25DaGFuZ2UoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudHJlZS5tdWx0aXBsZSkge1xyXG4gICAgICBpZiAoIXRoaXMudHJlZS5hY3RpdmF0ZWRJZCkgdGhpcy50cmVlLmFjdGl2YXRlZElkID0gW107XHJcbiAgICAgIGlmICh0aGlzLnRyZWUub2JqZWN0QXJyYXkpIHtcclxuICAgICAgICBjb25zdCBpZHMgPSB0aGlzLnRyZWUuYWN0aXZhdGVkSWQubWFwKCh4OiBYVHJlZU5vZGUpID0+IHguaWQpO1xyXG4gICAgICAgIGlmIChpZHMuaW5jbHVkZXMobm9kZS5pZCkpIHtcclxuICAgICAgICAgIHRoaXMudHJlZS5hY3RpdmF0ZWRJZC5zcGxpY2UoaWRzLmluZGV4T2Yobm9kZS5pZCksIDEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRyZWUuYWN0aXZhdGVkSWQucHVzaChub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMudHJlZS5hY3RpdmF0ZWRJZC5pbmNsdWRlcyhub2RlLmlkKSkge1xyXG4gICAgICAgICAgdGhpcy50cmVlLmFjdGl2YXRlZElkLnNwbGljZSh0aGlzLnRyZWUuYWN0aXZhdGVkSWQuaW5kZXhPZihub2RlLmlkKSwgMSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudHJlZS5hY3RpdmF0ZWRJZC5wdXNoKG5vZGUuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50cmVlLmFjdGl2YXRlZElkID0gbm9kZS5pZDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnRyZWUuYWN0aXZhdGVkTm9kZSkge1xyXG4gICAgICBpZiAodGhpcy50cmVlLmFjdGl2YXRlZE5vZGUuaWQgPT09IG5vZGUuaWQgJiYgIXRoaXMudHJlZS5hbGxvd01hbnlBY3RpdmF0ZWQpIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudHJlZS5hY3RpdmF0ZWROb2RlID0gbm9kZTtcclxuICAgIHRoaXMudHJlZS5hY3RpdmF0ZWRJZENoYW5nZS5lbWl0KHRoaXMudHJlZS5hY3RpdmF0ZWRJZCk7XHJcbiAgICB0aGlzLnRyZWUuYWN0aXZhdGVkQ2hhbmdlLmVtaXQobm9kZSk7XHJcbiAgICB0aGlzLnRyZWUubm9kZUNsaWNrLmVtaXQobm9kZSk7XHJcbiAgICBvbkNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgb25DaGVja2JveENoYW5nZSgpIHtcclxuICAgIHRoaXMuc2V0Q2hlY2tib3goKTtcclxuICAgIHRoaXMudHJlZS5jaGVja2JveENoYW5nZS5lbWl0KHRoaXMubm9kZSk7XHJcbiAgfVxyXG5cclxuICBnZXRWZXJ0aWNhbExlZnQoaTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gKGkgLSAxKSAqIE51bWJlcih0aGlzLnRyZWUuc3BhY2luZykgKyBOdW1iZXIodGhpcy50cmVlLnNwYWNpbmcpIC8gMjtcclxuICB9XHJcblxyXG4gIHNldENoZWNrYm94KCkge1xyXG4gICAgaWYgKCF0aGlzLnRyZWUubGV2ZWxDaGVjaykgcmV0dXJuO1xyXG4gICAgdGhpcy5ub2RlLmluZGV0ZXJtaW5hdGUgPSB0aGlzLm5vZGUuY2hlY2tlZDtcclxuICAgIHRoaXMubm9kZS5jaGlsZHJlbiAmJiB0aGlzLnNldENoaWxkcmVuQ2hlY2tib3godGhpcy5ub2RlLmNoZWNrZWQgYXMgYm9vbGVhbik7XHJcbiAgICBjb25zdCBzZXRQYXJlbnQgPSAobm9kZTogWFRyZWVOb2RlKSA9PiB7XHJcbiAgICAgIGxldCBwYXJlbnQgPSB0aGlzLnRyZWUubm9kZXMuZmluZCgoeDogWFRyZWVOb2RlKSA9PiB4LmlkID09PSBub2RlLnBpZCk7XHJcbiAgICAgIGlmICghcGFyZW50IHx8IFhJc0VtcHR5KHBhcmVudC5jaGlsZHJlbikpIHJldHVybjtcclxuICAgICAgbGV0IGNoZWNrZWRMaXN0ID0gcGFyZW50LmNoaWxkcmVuPy5maWx0ZXIoKHk6IFhUcmVlTm9kZSkgPT4geS5jaGVja2VkKTtcclxuICAgICAgbGV0IGluZGV0ZXJtaW5hdGVMaXN0ID0gcGFyZW50LmNoaWxkcmVuPy5maWx0ZXIoKHk6IFhUcmVlTm9kZSkgPT4geS5pbmRldGVybWluYXRlKTtcclxuICAgICAgcGFyZW50LmNoZWNrZWQgPSBjaGVja2VkTGlzdD8ubGVuZ3RoID09PSBwYXJlbnQuY2hpbGRyZW4/Lmxlbmd0aDtcclxuICAgICAgcGFyZW50LmluZGV0ZXJtaW5hdGUgPSAoY2hlY2tlZExpc3QgYXMgWFRyZWVOb2RlW10pLmxlbmd0aCA+IDAgfHwgKGluZGV0ZXJtaW5hdGVMaXN0IGFzIFhUcmVlTm9kZVtdKS5sZW5ndGggPiAwO1xyXG4gICAgICBwYXJlbnQuY2hhbmdlICYmIHBhcmVudC5jaGFuZ2UoKTtcclxuICAgICAgc2V0UGFyZW50KHBhcmVudCk7XHJcbiAgICB9O1xyXG4gICAgc2V0UGFyZW50KHRoaXMubm9kZSk7XHJcbiAgfVxyXG5cclxuICBzZXRDaGlsZHJlbkNoZWNrYm94KGNoZWNrZWQ6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IHNldENoaWxkcmVuID0gKGNoaWxkcmVuOiBYVHJlZU5vZGVbXSwgaXNDaGVja2VkOiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGlmIChYSXNFbXB0eShjaGlsZHJlbikpIHJldHVybjtcclxuICAgICAgZm9yIChsZXQgeCBvZiBjaGlsZHJlbikge1xyXG4gICAgICAgIGlmICh4LmRpc2FibGVkKSBjb250aW51ZTtcclxuICAgICAgICB4LmNoZWNrZWQgPSBpc0NoZWNrZWQ7XHJcbiAgICAgICAgeC5pbmRldGVybWluYXRlID0gaXNDaGVja2VkO1xyXG4gICAgICAgIHguY2hhbmdlICYmIHguY2hhbmdlKCk7XHJcbiAgICAgICAgc2V0Q2hpbGRyZW4oeC5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSwgaXNDaGVja2VkKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHNldENoaWxkcmVuKHRoaXMubm9kZS5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSwgY2hlY2tlZCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRQYXJlbnRDaGVja2JveCgpIHtcclxuICAgIGlmIChYSXNFbXB0eSh0aGlzLm5vZGUuY2hpbGRyZW4pKSByZXR1cm47XHJcbiAgICBsZXQgY2hlY2tlZExpc3QgPSB0aGlzLm5vZGUuY2hpbGRyZW4/LmZpbHRlcigoeCkgPT4geC5jaGVja2VkKTtcclxuICAgIGxldCBpbmRldGVybWluYXRlTGlzdCA9IHRoaXMubm9kZS5jaGlsZHJlbj8uZmlsdGVyKCh4KSA9PiB4LmluZGV0ZXJtaW5hdGUpO1xyXG4gICAgdGhpcy5ub2RlLmNoZWNrZWQgPSBjaGVja2VkTGlzdD8ubGVuZ3RoID09PSB0aGlzLm5vZGUuY2hpbGRyZW4/Lmxlbmd0aDtcclxuICAgIHRoaXMubm9kZS5pbmRldGVybWluYXRlID0gKGNoZWNrZWRMaXN0IGFzIFhUcmVlTm9kZVtdKS5sZW5ndGggPiAwIHx8IChpbmRldGVybWluYXRlTGlzdCBhcyBYVHJlZU5vZGVbXSkubGVuZ3RoID4gMDtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNldEluZGV0ZXJtaW5hdGUobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBjb25zdCBnZXRDaGlsZHJlbiA9IChjaGlsZHJlbjogWFRyZWVOb2RlW10pID0+IHtcclxuICAgICAgaWYgKFhJc0VtcHR5KGNoaWxkcmVuKSkgcmV0dXJuO1xyXG4gICAgICBjaGlsZHJlbi5mb3JFYWNoKCh4KSA9PiB7XHJcbiAgICAgICAgaWYgKHguaW5kZXRlcm1pbmF0ZSB8fCB4LmNoZWNrZWQpIHtcclxuICAgICAgICAgIG5vZGUuaW5kZXRlcm1pbmF0ZSA9IHRydWU7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGdldENoaWxkcmVuKHguY2hpbGRyZW4gYXMgWFRyZWVOb2RlW10pO1xyXG4gICAgICB9KTtcclxuICAgIH07XHJcbiAgICBnZXRDaGlsZHJlbihub2RlLmNoaWxkcmVuIGFzIFhUcmVlTm9kZVtdKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGdldE5vZGVEaXNhYmxlZChkaXNhYmxlZD86IGJvb2xlYW4pIHtcclxuICAgIHJldHVybiBkaXNhYmxlZCBhcyBYQm9vbGVhbjtcclxuICB9XHJcblxyXG4gIG9uQWN0aW9uKGV2ZW50OiBFdmVudCwgYWN0aW9uOiBYVHJlZUFjdGlvbiwgbm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBhY3Rpb24uaGFuZGxlciAmJiBhY3Rpb24uaGFuZGxlcihub2RlKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUl0ZW0oX2luZGV4OiBudW1iZXIsIGl0ZW06IFhUcmVlTm9kZSkge1xyXG4gICAgcmV0dXJuIGAke2l0ZW0uaWR9LSR7aXRlbS5sZXZlbH1gO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUFjdGlvbihfaW5kZXg6IG51bWJlciwgaXRlbTogWFRyZWVBY3Rpb24pIHtcclxuICAgIHJldHVybiBpdGVtLmlkO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJ4LXRyZWUtbm9kZS1jb250ZW50XCJcclxuICBbY2xhc3MueC1hY3RpdmF0ZWRdPVwiZ2V0QWN0aXZhdGVkXCJcclxuICBbY2xhc3MueC1kaXNhYmxlZF09XCJub2RlLmRpc2FibGVkXCJcclxuICBbY2xhc3MueC10cmVlLW5vZGUtc3ViXT1cIiFub2RlLmxlYWZcIlxyXG4gIFtjbGFzcy54LXRyZWUtbm9kZS1sYXN0XT1cImlzQ2hpbGRyZW5MYXN0XCJcclxuICBbc3R5bGUucGFkZGluZy1sZWZ0LnJlbV09XCJwYWRkaW5nTGVmdFwiXHJcbiAgW3N0eWxlLmhlaWdodC5yZW1dPVwibm9kZS5oZWlnaHQgPyBub2RlLmhlaWdodCA6IG5vZGVIZWlnaHQgPyBub2RlSGVpZ2h0IDogJydcIlxyXG4gIFtzdHlsZS5hbGlnbi1pdGVtc109XCJub2RlLmFsaWduSXRlbXMgPyBub2RlLmFsaWduSXRlbXMgOiBub2RlQWxpZ25JdGVtc1wiXHJcbiAgKGNsaWNrKT1cIiFub2RlLmRpc2FibGVkICYmIG9uQWN0aXZhdGUoJGV2ZW50LCBub2RlKVwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwieC10cmVlLW5vZGUtbGluZVwiICpuZ0lmPVwidHJlZS5zaG93TGluZSAmJiBudW1MZXZlbCA+IDBcIiBbc3R5bGUud2lkdGgucmVtXT1cInBhZGRpbmdMZWZ0XCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwieC10cmVlLW5vZGUtbGluZS12ZXJ0aWNhbFwiXHJcbiAgICAgIFtoaWRkZW5dPVwiaXNQYXJlbnRMYXN0W2kgLSAxXVwiXHJcbiAgICAgIFtjbGFzcy5pcy1sYXN0XT1cImkgPT09IHZlcnRpY2FsTGV2ZWwubGVuZ3RoXCJcclxuICAgICAgW3N0eWxlLmxlZnQucmVtXT1cImdldFZlcnRpY2FsTGVmdChpKVwiXHJcbiAgICAgICpuZ0Zvcj1cImxldCBpIG9mIHZlcnRpY2FsTGV2ZWxcIlxyXG4gICAgPjwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cIngtdHJlZS1ub2RlLWxpbmUtaG9yaXpvbnRhbFwiXHJcbiAgICAgIFtzdHlsZS53aWR0aC5yZW1dPVwidmVydGljYWxXaWR0aFwiXHJcbiAgICAgIFtzdHlsZS5sZWZ0LnJlbV09XCJnZXRWZXJ0aWNhbExlZnQodmVydGljYWxMZXZlbC5sZW5ndGgpXCJcclxuICAgID48L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwieC10cmVlLW5vZGUtZHJhZy1pbmRpY2F0b3JcIiAqbmdJZj1cInNob3dEcmFnSW5kaWNhdG9yXCIgW3N0eWxlLndpZHRoXT1cImluZGljYXRvcldpZHRoXCIgW25nU3R5bGVdPVwiaW5kaWNhdG9yU3R5bGVcIj48L2Rpdj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW5vZGUubG9hZGluZ1wiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cIngtdHJlZS1ub2RlLXJpZ2h0XCJcclxuICAgICAgW2NsYXNzLmlzLWxlYWZdPVwibm9kZS5sZWFmXCJcclxuICAgICAgW2NsYXNzLmlzLW9wZW5dPVwibm9kZS5vcGVuXCJcclxuICAgICAgW2NsYXNzLmlzLXRlbXBsYXRlXT1cInRyZWUuZXhwYW5kZWRJY29uXCJcclxuICAgICAgW3N0eWxlLndpZHRoLnJlbV09XCJ2ZXJ0aWNhbFdpZHRoICogMlwiXHJcbiAgICAgIChjbGljayk9XCIhdHJlZS5ub2RlT3BlbiAmJiB0cmVlLm9uVG9nZ2xlKCRldmVudCwgbm9kZSlcIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidHJlZS5leHBhbmRlZEljb247IGVsc2UgZGVmYXVsdEljb25UcGxcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwidHJlZS5leHBhbmRlZEljb247IGNvbnRleHQ6IHsgJG5vZGU6IG5vZGUgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SWNvblRwbD5cclxuICAgICAgICA8eC1pY29uIHR5cGU9XCJmdG8tY2hldnJvbi1yaWdodFwiPjwveC1pY29uPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDx4LWljb24gY2xhc3M9XCJ4LXRyZWUtbm9kZS1sb2FkaW5nXCIgKm5nSWY9XCJub2RlLmxvYWRpbmdcIiB0eXBlPVwiZnRvLWxvYWRlclwiIFtzcGluXT1cIm5vZGUubG9hZGluZ1wiPjwveC1pY29uPlxyXG4gIDx4LWNoZWNrYm94XHJcbiAgICAqbmdJZj1cInRyZWUuY2hlY2tib3hcIlxyXG4gICAgW2RhdGFdPVwiW3sgbGFiZWw6ICcnLCBpZDogbm9kZS5pZCB9XVwiXHJcbiAgICBbKG5nTW9kZWwpXT1cIm5vZGUuY2hlY2tlZFwiXHJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKClcIlxyXG4gICAgW2luZGV0ZXJtaW5hdGVdPVwibm9kZS5pbmRldGVybWluYXRlXCJcclxuICAgIFtkaXNhYmxlZF09XCJub2RlLmRpc2FibGVkIVwiXHJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICA+PC94LWNoZWNrYm94PlxyXG4gIDxzcGFuXHJcbiAgICBjbGFzcz1cIngtdHJlZS1ub2RlLWxhYmVsXCJcclxuICAgIFtjbGFzcy5ub3dyYXBdPVwibm9kZS5ub3dyYXAgPT09IGZhbHNlIHx8IG5vZGUubm93cmFwID09PSB0cnVlID8gbm9kZS5ub3dyYXAgOiBub2RlTm93cmFwXCJcclxuICAgIFt0aXRsZV09XCJub2RlLmxhYmVsXCJcclxuICAgIHgta2V5d29yZFxyXG4gICAgW3RleHRdPVwidHJlZS5rZXl3b3JkVGV4dFwiXHJcbiAgICBbY2FzZVNlbnNpdGl2ZV09XCJ0cmVlLmNhc2VTZW5zaXRpdmVcIlxyXG4gICAgKm5nSWY9XCIhdHJlZS5sYWJlbFRwbDsgZWxzZSBsYWJlbFRwbFwiXHJcbiAgICA+e3sgbm9kZS5sYWJlbCB9fTwvc3BhblxyXG4gID5cclxuICA8bmctdGVtcGxhdGUgI2xhYmVsVHBsPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqeE91dGxldD1cInRyZWUubGFiZWxUcGw7IGNvbnRleHQ6IHsgJG5vZGU6IG5vZGUgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPHNwYW4gY2xhc3M9XCJ4LXRyZWUtbm9kZS1vcGVyYXRpb25zXCI+XHJcbiAgICA8eC1saW5rXHJcbiAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgdHJlZS5hY3Rpb25zOyB0cmFja0J5OiB0cmFja0J5QWN0aW9uXCJcclxuICAgICAgW2ljb25dPVwiYWN0aW9uLmljb25cIlxyXG4gICAgICBbdGl0bGVdPVwiYWN0aW9uLmxhYmVsXCJcclxuICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uKCRldmVudCwgYWN0aW9uLCBub2RlKVwiXHJcbiAgICA+PC94LWxpbms+XHJcbiAgPC9zcGFuPlxyXG4gIDx4LWljb24gY2xhc3M9XCJ4LXRyZWUtbm9kZS1jaGVja2VkXCIgdHlwZT1cImZ0by1jaGVja1wiICpuZ0lmPVwidHJlZS5tdWx0aXBsZSAmJiBnZXRBY3RpdmF0ZWRcIj48L3gtaWNvbj5cclxuPC9kaXY+XHJcbiJdfQ==
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RyZWUvdHJlZS1ub2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3RyZWUvdHJlZS1ub2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWEsaUJBQWlCLEVBQWUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RixPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBWSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQW1CdEQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGlCQUFpQjtJQWpCekQ7O1FBbUJZLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQTJELENBQUM7UUFDckUsY0FBUyxHQUFHLElBQUksQ0FBQztRQUUzQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBU2pCLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBaUZqQyxRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0MsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztLQTZJeEM7SUF6T0MsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBVyxPQUFPLENBQUMsS0FBSztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFHRCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUM1RSxDQUFDO0lBRXVDLFlBQVksQ0FBQyxLQUFpQjtRQUNwRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFMkIsWUFBWSxDQUFDLE1BQWtCO1FBQ3pELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNyRSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLEtBQUssQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsT0FBTyxLQUFLLEdBQUcsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEUsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNuQyxNQUFNLEdBQUcsR0FBYyxFQUFFLENBQUM7UUFDMUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQWMsRUFBRSxJQUFlLEVBQUUsRUFBRTtZQUNqRCxJQUFJLEdBQUcsS0FBSyxJQUFJO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBRSxDQUFDO1lBQzNDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU8sQ0FBQyxDQUFDO1lBQy9DLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDNUU7YUFBTTtZQUNMLE9BQU8sRUFBRSxDQUFDO1NBQ1g7SUFDSCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLGVBQWUsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDNUUsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxLQUFLLENBQUMsRUFBRTtZQUNoQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLEtBQUssRUFBRSxDQUFDO1NBQ3BDO2FBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksS0FBSyxDQUFDLENBQUMsRUFBRTtZQUN4QyxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEtBQUssRUFBRSxDQUFDO1NBQ2pDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN0QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ2xGO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDdEQ7U0FDRjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztTQUMvQztJQUNILENBQUM7SUFPRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFjLEVBQUUsRUFBRTtZQUNwQyxJQUFJLEtBQUs7Z0JBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzlCLElBQUksRUFBRSxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTztRQUNsQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBWSxFQUFFLElBQWU7UUFDdEMsTUFBTSxNQUFNLEdBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBa0IsQ0FBQztRQUNyRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRTtZQUNwQixNQUFNLElBQUksTUFBTSxFQUFFLENBQUM7WUFDbkIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQztRQUNGLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3BDLFFBQVEsRUFBRSxDQUFDO1lBQ1gsT0FBTztTQUNSO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO2dCQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUN2RCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUN6QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtvQkFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUN2RDtxQkFBTTtvQkFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2xDO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO29CQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDekU7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDckM7YUFDRjtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMzQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0I7Z0JBQUUsT0FBTztTQUNyRjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsUUFBUSxFQUFFLENBQUM7SUFDYixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELGVBQWUsQ0FBQyxDQUFTO1FBQ3ZCLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBa0IsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBZSxFQUFFLEVBQUU7WUFDcEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2RSxJQUFJLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO2dCQUFFLE9BQU87WUFDakQsSUFBSSxXQUFXLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2RSxJQUFJLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDbkYsTUFBTSxDQUFDLE9BQU8sR0FBRyxXQUFXLEVBQUUsTUFBTSxLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO1lBQ2pFLE1BQU0sQ0FBQyxhQUFhLEdBQUksV0FBMkIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFLLGlCQUFpQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDaEgsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BCLENBQUMsQ0FBQztRQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELG1CQUFtQixDQUFDLE9BQWdCO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLENBQUMsUUFBcUIsRUFBRSxTQUFrQixFQUFFLEVBQUU7WUFDaEUsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDO2dCQUFFLE9BQU87WUFDL0IsS0FBSyxJQUFJLENBQUMsSUFBSSxRQUFRLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxDQUFDLFFBQVE7b0JBQUUsU0FBUztnQkFDekIsQ0FBQyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO2dCQUM1QixDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdkIsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUF1QixFQUFFLFNBQVMsQ0FBQyxDQUFDO2FBQ25EO1FBQ0gsQ0FBQyxDQUFDO1FBQ0YsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBdUIsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUFFLE9BQU87UUFDekMsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0QsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLEVBQUUsTUFBTSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQztRQUN2RSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBSSxXQUEyQixDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUssaUJBQWlDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNuSCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFlO1FBQzlCLE1BQU0sV0FBVyxHQUFHLENBQUMsUUFBcUIsRUFBRSxFQUFFO1lBQzVDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQztnQkFBRSxPQUFPO1lBQy9CLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDckIsSUFBSSxDQUFDLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUU7b0JBQ2hDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO29CQUMxQixPQUFPO2lCQUNSO2dCQUNELFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBdUIsQ0FBQyxDQUFDO1lBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBQ0YsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUF1QixDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsZUFBZSxDQUFDLFFBQWtCO1FBQ2hDLE9BQU8sUUFBb0IsQ0FBQztJQUM5QixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVksRUFBRSxNQUFtQixFQUFFLElBQWU7UUFDekQsTUFBTSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWMsRUFBRSxJQUFlO1FBQ3pDLE9BQU8sR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWMsRUFBRSxJQUFpQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQztpSUE5T1Usa0JBQWtCO3FIQUFsQixrQkFBa0IsNFVDMUMvQiwyckdBNkVBLGk0S0RoREksWUFBWSxvVkFDWixXQUFXLCtWQUNYLGNBQWMsbURBQ2Qsa0JBQWtCLHVEQUNsQixnQkFBZ0IsNkZBQ2hCLGNBQWMsbURBQ2QsaUJBQWlCOzsyRkFPUixrQkFBa0I7a0JBakI5QixTQUFTOytCQUNFLEdBQUcsZUFBZSxNQUFNLGVBQWUsR0FBRyxjQUN4QyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsaUJBQWlCO3FCQUNsQixpQkFHYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTTtnQkFDMkIsU0FBUztzQkFBMUMsV0FBVzt1QkFBQyxtQkFBbUI7Z0JBZ0JRLFlBQVk7c0JBQW5ELFlBQVk7dUJBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUlWLFlBQVk7c0JBQXZDLFlBQVk7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgaW5qZWN0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhUcmVlTm9kZVByZWZpeCwgWFRyZWVOb2RlLCBYVHJlZU5vZGVQcm9wZXJ0eSwgWFRyZWVBY3Rpb24gfSBmcm9tICcuL3RyZWUucHJvcGVydHknO1xyXG5pbXBvcnQgeyBYSXNFbXB0eSwgWENvbmZpZ1NlcnZpY2UsIFhCb29sZWFuIH0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgWFRyZWVTZXJ2aWNlIH0gZnJvbSAnLi90cmVlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBYSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2ljb24nO1xyXG5pbXBvcnQgeyBYQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9jaGVja2JveCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBYS2V5d29yZERpcmVjdGl2ZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2tleXdvcmQnO1xyXG5pbXBvcnQgeyBYTGlua0NvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2xpbmsnO1xyXG5pbXBvcnQgeyBYT3V0bGV0RGlyZWN0aXZlIH0gZnJvbSAnQG5nLW5lc3QvdWkvb3V0bGV0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYVHJlZU5vZGVQcmVmaXh9LCBbJHtYVHJlZU5vZGVQcmVmaXh9XWAsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFhJY29uQ29tcG9uZW50LFxyXG4gICAgWENoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgWE91dGxldERpcmVjdGl2ZSxcclxuICAgIFhMaW5rQ29tcG9uZW50LFxyXG4gICAgWEtleXdvcmREaXJlY3RpdmVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVlLW5vZGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RyZWUtbm9kZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFhUcmVlTm9kZUNvbXBvbmVudCBleHRlbmRzIFhUcmVlTm9kZVByb3BlcnR5IHtcclxuICBASW5wdXQoKSB0cmVlOiBhbnk7XHJcbiAgQE91dHB1dCgpIG5vZGVNb3VzZWVudGVyID0gbmV3IEV2ZW50RW1pdHRlcjx7IGV2ZW50OiBNb3VzZUV2ZW50OyBub2RlOiBYVHJlZU5vZGU7IGVsZTogRWxlbWVudFJlZiB9PigpO1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MueC10cmVlLW5vZGUnKSByb290Q2xhc3MgPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIF9sb2FkaW5nID0gZmFsc2U7XHJcbiAgcHVibGljIGdldCBsb2FkaW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmc7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgbG9hZGluZyh2YWx1ZSkge1xyXG4gICAgdGhpcy5fbG9hZGluZyA9IHZhbHVlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdW5TdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBnZXQgc2hvd0RyYWdJbmRpY2F0b3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50cmVlLmRyYWdnaW5nICYmIHRoaXMudHJlZS5ob3ZlclRyZWVOb2RlPy5pZCA9PT0gdGhpcy5ub2RlLmlkO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicsIFsnJGV2ZW50J10pIG9uTW91c2VlbnRlcihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5ub2RlTW91c2VlbnRlci5lbWl0KHsgZXZlbnQ6IGV2ZW50LCBub2RlOiB0aGlzLm5vZGUsIGVsZTogdGhpcy5lbGVtZW50UmVmIH0pO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpIG9uTW91c2VsZWF2ZShfZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy50cmVlLmRyYWdnaW5nKSByZXR1cm47XHJcbiAgICB0aGlzLnRyZWUuaG92ZXJUcmVlTm9kZT8uY2hhbmdlICYmIHRoaXMudHJlZS5ob3ZlclRyZWVOb2RlPy5jaGFuZ2UoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGdldCBpc0NoaWxkcmVuTGFzdCgpIHtcclxuICAgIGxldCBwYXJlbnQgPSB0aGlzLnRyZWUubm9kZXMuZmluZCgoeDogWFRyZWVOb2RlKSA9PiB4LmlkID09PSB0aGlzLm5vZGUucGlkKTtcclxuICAgIGlmICghcGFyZW50KSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBpbmRleCA9IHBhcmVudC5jaGlsZHJlbi5pbmRleE9mKHRoaXMubm9kZSk7XHJcbiAgICByZXR1cm4gaW5kZXggKyAxID09PSBwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzUGFyZW50TGFzdCgpIHtcclxuICAgIGxldCBwYXJlbnRzID0gdGhpcy50cmVlU2VydmljZS5nZXRQYXJlbnRzKHRoaXMudHJlZS5ub2RlcywgdGhpcy5ub2RlKTtcclxuICAgIGlmIChwYXJlbnRzLmxlbmd0aCA8PSAxKSByZXR1cm4gW107XHJcbiAgICBjb25zdCByZXM6IGJvb2xlYW5bXSA9IFtdO1xyXG4gICAgcGFyZW50cy5yZWR1Y2UoKHByZTogWFRyZWVOb2RlLCBjdXJyOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgaWYgKHByZSA9PT0gbnVsbCkgcmV0dXJuIGN1cnI7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gY3Vyci5jaGlsZHJlbj8uaW5kZXhPZihwcmUpITtcclxuICAgICAgcmVzLnB1c2goaW5kZXggKyAxID09PSBjdXJyLmNoaWxkcmVuPy5sZW5ndGghKTtcclxuICAgICAgcmV0dXJuIGN1cnI7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcmVzLnJldmVyc2UoKTtcclxuICB9XHJcblxyXG4gIGdldCBudW1MZXZlbCgpIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5sZXZlbCk7XHJcbiAgfVxyXG5cclxuICBnZXQgdmVydGljYWxMZXZlbCgpIHtcclxuICAgIGlmICh0aGlzLm51bUxldmVsID4gMCkge1xyXG4gICAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5udW1MZXZlbCB9KS5tYXAoKF94LCBpbmRleCkgPT4gaW5kZXggKyAxKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCB2ZXJ0aWNhbFdpZHRoKCkge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLnRyZWUuc3BhY2luZykgLyAyO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBhZGRpbmdMZWZ0KCkge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLm5vZGU/LmxldmVsID8gdGhpcy5ub2RlLmxldmVsIDogMCkgKiBOdW1iZXIodGhpcy50cmVlLnNwYWNpbmcpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGluZGljYXRvcldpZHRoKCkge1xyXG4gICAgcmV0dXJuIGBjYWxjKDEwMCUgLSAke3RoaXMucGFkZGluZ0xlZnQgKyAodGhpcy5ub2RlLmxlYWYgPyAxLjUgOiAwKX1yZW0pYDtcclxuICB9XHJcblxyXG4gIGdldCBpbmRpY2F0b3JTdHlsZSgpIHtcclxuICAgIGlmICh0aGlzLnRyZWUuZHJhZ1Bvc2l0aW9uID09PSAxKSB7XHJcbiAgICAgIHJldHVybiB7IGJvdHRvbTogYCR7LTAuMDYyNX1yZW1gIH07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudHJlZS5kcmFnUG9zaXRpb24gPT09IC0xKSB7XHJcbiAgICAgIHJldHVybiB7IHRvcDogYCR7LTAuMDYyNX1yZW1gIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge307XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0QWN0aXZhdGVkKCkge1xyXG4gICAgaWYgKHRoaXMudHJlZS5tdWx0aXBsZSkge1xyXG4gICAgICBpZiAodGhpcy50cmVlLm9iamVjdEFycmF5KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJlZS5hY3RpdmF0ZWRJZD8ubWFwKCh4OiBYVHJlZU5vZGUpID0+IHguaWQpLmluY2x1ZGVzKHRoaXMubm9kZS5pZCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJlZS5hY3RpdmF0ZWRJZD8uaW5jbHVkZXModGhpcy5ub2RlLmlkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMudHJlZS5hY3RpdmF0ZWRJZCA9PT0gdGhpcy5ub2RlLmlkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIHByaXZhdGUgdHJlZVNlcnZpY2UgPSBpbmplY3QoWFRyZWVTZXJ2aWNlKTtcclxuICBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xyXG4gIGNvbmZpZ1NlcnZpY2UgPSBpbmplY3QoWENvbmZpZ1NlcnZpY2UpO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMubm9kZS5jaGFuZ2UgPSAoY2hlY2s6IGJvb2xlYW4pID0+IHtcclxuICAgICAgaWYgKGNoZWNrKSB0aGlzLnNldENoZWNrYm94KCk7XHJcbiAgICAgIHRoaXM/LmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5sZXZlbCA9IHRoaXMubm9kZT8ubGV2ZWwgPyB0aGlzLm5vZGUubGV2ZWwgOiAwO1xyXG4gICAgaWYgKCF0aGlzLnRyZWUubGV2ZWxDaGVjaykgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMubm9kZS5jaGVja2VkKSB0aGlzLnNldENoZWNrYm94KCk7XHJcbiAgICB0aGlzLnNldEluZGV0ZXJtaW5hdGUodGhpcy5ub2RlKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMuX3VuU3ViamVjdC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgb25BY3RpdmF0ZShldmVudDogRXZlbnQsIG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgY29uc3QgY2hhbmdlOiBGdW5jdGlvbiA9IHRoaXMudHJlZS5hY3RpdmF0ZWROb2RlPy5jaGFuZ2UgYXMgRnVuY3Rpb247XHJcbiAgICB0aGlzLnRyZWUubm9kZU9wZW4gJiYgIW5vZGUubGVhZiAmJiB0aGlzLnRyZWUub25Ub2dnbGUoZXZlbnQsIG5vZGUpO1xyXG4gICAgY29uc3Qgb25DaGFuZ2UgPSAoKSA9PiB7XHJcbiAgICAgIGNoYW5nZSAmJiBjaGFuZ2UoKTtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH07XHJcbiAgICBpZiAodGhpcy50cmVlLm9ubHlMZWFmICYmICFub2RlLmxlYWYpIHtcclxuICAgICAgb25DaGFuZ2UoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudHJlZS5tdWx0aXBsZSkge1xyXG4gICAgICBpZiAoIXRoaXMudHJlZS5hY3RpdmF0ZWRJZCkgdGhpcy50cmVlLmFjdGl2YXRlZElkID0gW107XHJcbiAgICAgIGlmICh0aGlzLnRyZWUub2JqZWN0QXJyYXkpIHtcclxuICAgICAgICBjb25zdCBpZHMgPSB0aGlzLnRyZWUuYWN0aXZhdGVkSWQubWFwKCh4OiBYVHJlZU5vZGUpID0+IHguaWQpO1xyXG4gICAgICAgIGlmIChpZHMuaW5jbHVkZXMobm9kZS5pZCkpIHtcclxuICAgICAgICAgIHRoaXMudHJlZS5hY3RpdmF0ZWRJZC5zcGxpY2UoaWRzLmluZGV4T2Yobm9kZS5pZCksIDEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRyZWUuYWN0aXZhdGVkSWQucHVzaChub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMudHJlZS5hY3RpdmF0ZWRJZC5pbmNsdWRlcyhub2RlLmlkKSkge1xyXG4gICAgICAgICAgdGhpcy50cmVlLmFjdGl2YXRlZElkLnNwbGljZSh0aGlzLnRyZWUuYWN0aXZhdGVkSWQuaW5kZXhPZihub2RlLmlkKSwgMSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudHJlZS5hY3RpdmF0ZWRJZC5wdXNoKG5vZGUuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50cmVlLmFjdGl2YXRlZElkID0gbm9kZS5pZDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnRyZWUuYWN0aXZhdGVkTm9kZSkge1xyXG4gICAgICBpZiAodGhpcy50cmVlLmFjdGl2YXRlZE5vZGUuaWQgPT09IG5vZGUuaWQgJiYgIXRoaXMudHJlZS5hbGxvd01hbnlBY3RpdmF0ZWQpIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudHJlZS5hY3RpdmF0ZWROb2RlID0gbm9kZTtcclxuICAgIHRoaXMudHJlZS5hY3RpdmF0ZWRJZENoYW5nZS5lbWl0KHRoaXMudHJlZS5hY3RpdmF0ZWRJZCk7XHJcbiAgICB0aGlzLnRyZWUuYWN0aXZhdGVkQ2hhbmdlLmVtaXQobm9kZSk7XHJcbiAgICB0aGlzLnRyZWUubm9kZUNsaWNrLmVtaXQobm9kZSk7XHJcbiAgICBvbkNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgb25DaGVja2JveENoYW5nZSgpIHtcclxuICAgIHRoaXMuc2V0Q2hlY2tib3goKTtcclxuICAgIHRoaXMudHJlZS5jaGVja2JveENoYW5nZS5lbWl0KHRoaXMubm9kZSk7XHJcbiAgfVxyXG5cclxuICBnZXRWZXJ0aWNhbExlZnQoaTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gKGkgLSAxKSAqIE51bWJlcih0aGlzLnRyZWUuc3BhY2luZykgKyBOdW1iZXIodGhpcy50cmVlLnNwYWNpbmcpIC8gMjtcclxuICB9XHJcblxyXG4gIHNldENoZWNrYm94KCkge1xyXG4gICAgaWYgKCF0aGlzLnRyZWUubGV2ZWxDaGVjaykgcmV0dXJuO1xyXG4gICAgdGhpcy5ub2RlLmluZGV0ZXJtaW5hdGUgPSB0aGlzLm5vZGUuY2hlY2tlZDtcclxuICAgIHRoaXMubm9kZS5jaGlsZHJlbiAmJiB0aGlzLnNldENoaWxkcmVuQ2hlY2tib3godGhpcy5ub2RlLmNoZWNrZWQgYXMgYm9vbGVhbik7XHJcbiAgICBjb25zdCBzZXRQYXJlbnQgPSAobm9kZTogWFRyZWVOb2RlKSA9PiB7XHJcbiAgICAgIGxldCBwYXJlbnQgPSB0aGlzLnRyZWUubm9kZXMuZmluZCgoeDogWFRyZWVOb2RlKSA9PiB4LmlkID09PSBub2RlLnBpZCk7XHJcbiAgICAgIGlmICghcGFyZW50IHx8IFhJc0VtcHR5KHBhcmVudC5jaGlsZHJlbikpIHJldHVybjtcclxuICAgICAgbGV0IGNoZWNrZWRMaXN0ID0gcGFyZW50LmNoaWxkcmVuPy5maWx0ZXIoKHk6IFhUcmVlTm9kZSkgPT4geS5jaGVja2VkKTtcclxuICAgICAgbGV0IGluZGV0ZXJtaW5hdGVMaXN0ID0gcGFyZW50LmNoaWxkcmVuPy5maWx0ZXIoKHk6IFhUcmVlTm9kZSkgPT4geS5pbmRldGVybWluYXRlKTtcclxuICAgICAgcGFyZW50LmNoZWNrZWQgPSBjaGVja2VkTGlzdD8ubGVuZ3RoID09PSBwYXJlbnQuY2hpbGRyZW4/Lmxlbmd0aDtcclxuICAgICAgcGFyZW50LmluZGV0ZXJtaW5hdGUgPSAoY2hlY2tlZExpc3QgYXMgWFRyZWVOb2RlW10pLmxlbmd0aCA+IDAgfHwgKGluZGV0ZXJtaW5hdGVMaXN0IGFzIFhUcmVlTm9kZVtdKS5sZW5ndGggPiAwO1xyXG4gICAgICBwYXJlbnQuY2hhbmdlICYmIHBhcmVudC5jaGFuZ2UoKTtcclxuICAgICAgc2V0UGFyZW50KHBhcmVudCk7XHJcbiAgICB9O1xyXG4gICAgc2V0UGFyZW50KHRoaXMubm9kZSk7XHJcbiAgfVxyXG5cclxuICBzZXRDaGlsZHJlbkNoZWNrYm94KGNoZWNrZWQ6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IHNldENoaWxkcmVuID0gKGNoaWxkcmVuOiBYVHJlZU5vZGVbXSwgaXNDaGVja2VkOiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGlmIChYSXNFbXB0eShjaGlsZHJlbikpIHJldHVybjtcclxuICAgICAgZm9yIChsZXQgeCBvZiBjaGlsZHJlbikge1xyXG4gICAgICAgIGlmICh4LmRpc2FibGVkKSBjb250aW51ZTtcclxuICAgICAgICB4LmNoZWNrZWQgPSBpc0NoZWNrZWQ7XHJcbiAgICAgICAgeC5pbmRldGVybWluYXRlID0gaXNDaGVja2VkO1xyXG4gICAgICAgIHguY2hhbmdlICYmIHguY2hhbmdlKCk7XHJcbiAgICAgICAgc2V0Q2hpbGRyZW4oeC5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSwgaXNDaGVja2VkKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHNldENoaWxkcmVuKHRoaXMubm9kZS5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSwgY2hlY2tlZCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRQYXJlbnRDaGVja2JveCgpIHtcclxuICAgIGlmIChYSXNFbXB0eSh0aGlzLm5vZGUuY2hpbGRyZW4pKSByZXR1cm47XHJcbiAgICBsZXQgY2hlY2tlZExpc3QgPSB0aGlzLm5vZGUuY2hpbGRyZW4/LmZpbHRlcigoeCkgPT4geC5jaGVja2VkKTtcclxuICAgIGxldCBpbmRldGVybWluYXRlTGlzdCA9IHRoaXMubm9kZS5jaGlsZHJlbj8uZmlsdGVyKCh4KSA9PiB4LmluZGV0ZXJtaW5hdGUpO1xyXG4gICAgdGhpcy5ub2RlLmNoZWNrZWQgPSBjaGVja2VkTGlzdD8ubGVuZ3RoID09PSB0aGlzLm5vZGUuY2hpbGRyZW4/Lmxlbmd0aDtcclxuICAgIHRoaXMubm9kZS5pbmRldGVybWluYXRlID0gKGNoZWNrZWRMaXN0IGFzIFhUcmVlTm9kZVtdKS5sZW5ndGggPiAwIHx8IChpbmRldGVybWluYXRlTGlzdCBhcyBYVHJlZU5vZGVbXSkubGVuZ3RoID4gMDtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNldEluZGV0ZXJtaW5hdGUobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBjb25zdCBnZXRDaGlsZHJlbiA9IChjaGlsZHJlbjogWFRyZWVOb2RlW10pID0+IHtcclxuICAgICAgaWYgKFhJc0VtcHR5KGNoaWxkcmVuKSkgcmV0dXJuO1xyXG4gICAgICBjaGlsZHJlbi5mb3JFYWNoKCh4KSA9PiB7XHJcbiAgICAgICAgaWYgKHguaW5kZXRlcm1pbmF0ZSB8fCB4LmNoZWNrZWQpIHtcclxuICAgICAgICAgIG5vZGUuaW5kZXRlcm1pbmF0ZSA9IHRydWU7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGdldENoaWxkcmVuKHguY2hpbGRyZW4gYXMgWFRyZWVOb2RlW10pO1xyXG4gICAgICB9KTtcclxuICAgIH07XHJcbiAgICBnZXRDaGlsZHJlbihub2RlLmNoaWxkcmVuIGFzIFhUcmVlTm9kZVtdKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGdldE5vZGVEaXNhYmxlZChkaXNhYmxlZD86IGJvb2xlYW4pIHtcclxuICAgIHJldHVybiBkaXNhYmxlZCBhcyBYQm9vbGVhbjtcclxuICB9XHJcblxyXG4gIG9uQWN0aW9uKGV2ZW50OiBFdmVudCwgYWN0aW9uOiBYVHJlZUFjdGlvbiwgbm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBhY3Rpb24uaGFuZGxlciAmJiBhY3Rpb24uaGFuZGxlcihub2RlKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUl0ZW0oX2luZGV4OiBudW1iZXIsIGl0ZW06IFhUcmVlTm9kZSkge1xyXG4gICAgcmV0dXJuIGAke2l0ZW0uaWR9LSR7aXRlbS5sZXZlbH1gO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUFjdGlvbihfaW5kZXg6IG51bWJlciwgaXRlbTogWFRyZWVBY3Rpb24pIHtcclxuICAgIHJldHVybiBpdGVtLmlkO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJ4LXRyZWUtbm9kZS1jb250ZW50XCJcclxuICBbY2xhc3MueC1hY3RpdmF0ZWRdPVwiZ2V0QWN0aXZhdGVkXCJcclxuICBbY2xhc3MueC1kaXNhYmxlZF09XCJub2RlLmRpc2FibGVkXCJcclxuICBbY2xhc3MueC10cmVlLW5vZGUtc3ViXT1cIiFub2RlLmxlYWZcIlxyXG4gIFtjbGFzcy54LXRyZWUtbm9kZS1sYXN0XT1cImlzQ2hpbGRyZW5MYXN0XCJcclxuICBbc3R5bGUucGFkZGluZy1sZWZ0LnJlbV09XCJwYWRkaW5nTGVmdFwiXHJcbiAgW3N0eWxlLmhlaWdodC5yZW1dPVwibm9kZS5oZWlnaHQgPyBub2RlLmhlaWdodCA6IG5vZGVIZWlnaHQgPyBub2RlSGVpZ2h0IDogJydcIlxyXG4gIFtzdHlsZS5hbGlnbi1pdGVtc109XCJub2RlLmFsaWduSXRlbXMgPyBub2RlLmFsaWduSXRlbXMgOiBub2RlQWxpZ25JdGVtc1wiXHJcbiAgKGNsaWNrKT1cIiFub2RlLmRpc2FibGVkICYmIG9uQWN0aXZhdGUoJGV2ZW50LCBub2RlKVwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwieC10cmVlLW5vZGUtbGluZVwiICpuZ0lmPVwidHJlZS5zaG93TGluZSAmJiBudW1MZXZlbCA+IDBcIiBbc3R5bGUud2lkdGgucmVtXT1cInBhZGRpbmdMZWZ0XCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwieC10cmVlLW5vZGUtbGluZS12ZXJ0aWNhbFwiXHJcbiAgICAgIFtoaWRkZW5dPVwiaXNQYXJlbnRMYXN0W2kgLSAxXVwiXHJcbiAgICAgIFtjbGFzcy5pcy1sYXN0XT1cImkgPT09IHZlcnRpY2FsTGV2ZWwubGVuZ3RoXCJcclxuICAgICAgW3N0eWxlLmxlZnQucmVtXT1cImdldFZlcnRpY2FsTGVmdChpKVwiXHJcbiAgICAgICpuZ0Zvcj1cImxldCBpIG9mIHZlcnRpY2FsTGV2ZWxcIlxyXG4gICAgPjwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cIngtdHJlZS1ub2RlLWxpbmUtaG9yaXpvbnRhbFwiXHJcbiAgICAgIFtzdHlsZS53aWR0aC5yZW1dPVwidmVydGljYWxXaWR0aFwiXHJcbiAgICAgIFtzdHlsZS5sZWZ0LnJlbV09XCJnZXRWZXJ0aWNhbExlZnQodmVydGljYWxMZXZlbC5sZW5ndGgpXCJcclxuICAgID48L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwieC10cmVlLW5vZGUtZHJhZy1pbmRpY2F0b3JcIiAqbmdJZj1cInNob3dEcmFnSW5kaWNhdG9yXCIgW3N0eWxlLndpZHRoXT1cImluZGljYXRvcldpZHRoXCIgW25nU3R5bGVdPVwiaW5kaWNhdG9yU3R5bGVcIj48L2Rpdj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW5vZGUubG9hZGluZ1wiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cIngtdHJlZS1ub2RlLXJpZ2h0XCJcclxuICAgICAgW2NsYXNzLmlzLWxlYWZdPVwibm9kZS5sZWFmXCJcclxuICAgICAgW2NsYXNzLmlzLW9wZW5dPVwibm9kZS5vcGVuXCJcclxuICAgICAgW2NsYXNzLmlzLXRlbXBsYXRlXT1cInRyZWUuZXhwYW5kZWRJY29uXCJcclxuICAgICAgW3N0eWxlLndpZHRoLnJlbV09XCJ2ZXJ0aWNhbFdpZHRoICogMlwiXHJcbiAgICAgIChjbGljayk9XCIhdHJlZS5ub2RlT3BlbiAmJiB0cmVlLm9uVG9nZ2xlKCRldmVudCwgbm9kZSlcIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidHJlZS5leHBhbmRlZEljb247IGVsc2UgZGVmYXVsdEljb25UcGxcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwidHJlZS5leHBhbmRlZEljb247IGNvbnRleHQ6IHsgJG5vZGU6IG5vZGUgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SWNvblRwbD5cclxuICAgICAgICA8eC1pY29uIHR5cGU9XCJmdG8tY2hldnJvbi1yaWdodFwiPjwveC1pY29uPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDx4LWljb24gY2xhc3M9XCJ4LXRyZWUtbm9kZS1sb2FkaW5nXCIgKm5nSWY9XCJub2RlLmxvYWRpbmdcIiB0eXBlPVwiZnRvLWxvYWRlclwiIFtzcGluXT1cIm5vZGUubG9hZGluZ1wiPjwveC1pY29uPlxyXG4gIDx4LWNoZWNrYm94XHJcbiAgICAqbmdJZj1cInRyZWUuY2hlY2tib3hcIlxyXG4gICAgW2RhdGFdPVwiW3sgbGFiZWw6ICcnLCBpZDogbm9kZS5pZCB9XVwiXHJcbiAgICBbKG5nTW9kZWwpXT1cIm5vZGUuY2hlY2tlZFwiXHJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKClcIlxyXG4gICAgW2luZGV0ZXJtaW5hdGVdPVwibm9kZS5pbmRldGVybWluYXRlXCJcclxuICAgIFtkaXNhYmxlZF09XCJub2RlLmRpc2FibGVkIVwiXHJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICA+PC94LWNoZWNrYm94PlxyXG4gIDxzcGFuXHJcbiAgICBjbGFzcz1cIngtdHJlZS1ub2RlLWxhYmVsXCJcclxuICAgIFtjbGFzcy5ub3dyYXBdPVwibm9kZS5ub3dyYXAgPT09IGZhbHNlIHx8IG5vZGUubm93cmFwID09PSB0cnVlID8gbm9kZS5ub3dyYXAgOiBub2RlTm93cmFwXCJcclxuICAgIFt0aXRsZV09XCJub2RlLmxhYmVsXCJcclxuICAgIHgta2V5d29yZFxyXG4gICAgW3RleHRdPVwidHJlZS5rZXl3b3JkVGV4dFwiXHJcbiAgICBbY2FzZVNlbnNpdGl2ZV09XCJ0cmVlLmNhc2VTZW5zaXRpdmVcIlxyXG4gICAgKm5nSWY9XCIhdHJlZS5sYWJlbFRwbDsgZWxzZSBsYWJlbFRwbFwiXHJcbiAgICA+e3sgbm9kZS5sYWJlbCB9fTwvc3BhblxyXG4gID5cclxuICA8bmctdGVtcGxhdGUgI2xhYmVsVHBsPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqeE91dGxldD1cInRyZWUubGFiZWxUcGw7IGNvbnRleHQ6IHsgJG5vZGU6IG5vZGUgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPHNwYW4gY2xhc3M9XCJ4LXRyZWUtbm9kZS1vcGVyYXRpb25zXCI+XHJcbiAgICA8eC1saW5rXHJcbiAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgdHJlZS5hY3Rpb25zOyB0cmFja0J5OiB0cmFja0J5QWN0aW9uXCJcclxuICAgICAgW2ljb25dPVwiYWN0aW9uLmljb25cIlxyXG4gICAgICBbdGl0bGVdPVwiYWN0aW9uLmxhYmVsXCJcclxuICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uKCRldmVudCwgYWN0aW9uLCBub2RlKVwiXHJcbiAgICA+PC94LWxpbms+XHJcbiAgPC9zcGFuPlxyXG4gIDx4LWljb24gY2xhc3M9XCJ4LXRyZWUtbm9kZS1jaGVja2VkXCIgdHlwZT1cImZ0by1jaGVja1wiICpuZ0lmPVwidHJlZS5tdWx0aXBsZSAmJiBnZXRBY3RpdmF0ZWRcIj48L3gtaWNvbj5cclxuPC9kaXY+XHJcbiJdfQ==