ngx-tethys 17.0.0-next.1 → 17.0.0-next.3

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 (745) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/action/action.component.d.ts +3 -3
  3. package/action/action.module.d.ts +1 -1
  4. package/action/actions.component.d.ts +5 -5
  5. package/affix/affix.component.d.ts +3 -3
  6. package/affix/affix.module.d.ts +1 -1
  7. package/alert/alert.component.d.ts +3 -3
  8. package/alert/alert.module.d.ts +1 -1
  9. package/anchor/anchor-link.component.d.ts +5 -5
  10. package/anchor/anchor.component.d.ts +9 -9
  11. package/anchor/anchor.module.d.ts +1 -1
  12. package/arrow-switcher/arrow-switcher.component.d.ts +3 -3
  13. package/arrow-switcher/module.d.ts +1 -1
  14. package/autocomplete/autocomplete.component.d.ts +9 -9
  15. package/autocomplete/autocomplete.trigger.directive.d.ts +6 -6
  16. package/autocomplete/module.d.ts +1 -1
  17. package/autocomplete/overlay/autocomplete-container.component.d.ts +3 -3
  18. package/autocomplete/overlay/autocomplete-ref.d.ts +4 -4
  19. package/autocomplete/overlay/autocomplete.service.d.ts +5 -5
  20. package/avatar/avatar-list/avatar-list.component.d.ts +6 -6
  21. package/avatar/avatar.component.d.ts +3 -3
  22. package/avatar/avatar.module.d.ts +1 -1
  23. package/back-top/back-top.component.d.ts +3 -3
  24. package/back-top/back-top.module.d.ts +1 -1
  25. package/badge/badge.component.d.ts +3 -3
  26. package/badge/badge.module.d.ts +1 -1
  27. package/breadcrumb/breadcrumb-item.component.d.ts +3 -3
  28. package/breadcrumb/breadcrumb.component.d.ts +3 -3
  29. package/breadcrumb/module.d.ts +1 -1
  30. package/button/button-group.component.d.ts +3 -3
  31. package/button/button-icon.component.d.ts +3 -3
  32. package/button/button.component.d.ts +3 -3
  33. package/button/button.module.d.ts +1 -1
  34. package/calendar/calendar-header.component.d.ts +3 -3
  35. package/calendar/calendar.component.d.ts +3 -3
  36. package/calendar/module.d.ts +1 -1
  37. package/card/card.component.d.ts +3 -3
  38. package/card/card.module.d.ts +1 -1
  39. package/card/content.component.d.ts +3 -3
  40. package/card/header.component.d.ts +3 -3
  41. package/carousel/carousel.component.d.ts +3 -3
  42. package/carousel/engine/carousel-base.d.ts +3 -3
  43. package/carousel/engine/carousel-fade.d.ts +2 -2
  44. package/carousel/engine/carousel-noop.d.ts +2 -2
  45. package/carousel/engine/carousel-slide.d.ts +2 -2
  46. package/carousel/module.d.ts +1 -1
  47. package/cascader/cascader.component.d.ts +3 -3
  48. package/cascader/module.d.ts +1 -1
  49. package/checkbox/checkbox.component.d.ts +3 -3
  50. package/checkbox/module.d.ts +1 -1
  51. package/collapse/collapse-item.component.d.ts +5 -5
  52. package/collapse/collapse.component.d.ts +7 -7
  53. package/collapse/module.d.ts +1 -1
  54. package/color-picker/color-picker-custom-panel.component.d.ts +3 -3
  55. package/color-picker/color-picker-panel.component.d.ts +6 -6
  56. package/color-picker/color-picker.component.d.ts +3 -3
  57. package/color-picker/module.d.ts +1 -1
  58. package/color-picker/parts/alpha/alpha.component.d.ts +3 -3
  59. package/color-picker/parts/hue/hue.component.d.ts +3 -3
  60. package/color-picker/parts/indicator/indicator.component.d.ts +3 -3
  61. package/color-picker/parts/inputs/inputs.component.d.ts +3 -3
  62. package/color-picker/parts/saturation/saturation.component.d.ts +3 -3
  63. package/comment/comment.component.d.ts +3 -3
  64. package/comment/comment.module.d.ts +1 -1
  65. package/date-picker/abstract-picker.component.d.ts +2 -2
  66. package/date-picker/base-picker.component.d.ts +5 -5
  67. package/date-picker/date-picker.component.d.ts +4 -4
  68. package/date-picker/date-picker.module.d.ts +1 -1
  69. package/date-picker/lib/calendar/calendar-footer.component.d.ts +3 -3
  70. package/date-picker/lib/date/date-header.component.d.ts +3 -3
  71. package/date-picker/lib/date/date-table-cell.component.d.ts +3 -3
  72. package/date-picker/lib/date/date-table.component.d.ts +3 -3
  73. package/date-picker/lib/date-carousel/date-carousel.component.d.ts +3 -3
  74. package/date-picker/lib/decade/decade-header.component.d.ts +3 -3
  75. package/date-picker/lib/decade/decade-table.component.d.ts +3 -3
  76. package/date-picker/lib/lib-packer.module.d.ts +1 -1
  77. package/date-picker/lib/month/month-header.component.d.ts +3 -3
  78. package/date-picker/lib/month/month-table.component.d.ts +3 -3
  79. package/date-picker/lib/popups/date-popup.component.d.ts +4 -4
  80. package/date-picker/lib/popups/inner-popup.component.d.ts +3 -3
  81. package/date-picker/lib/quarter/quarter-table.component.d.ts +3 -3
  82. package/date-picker/lib/year/year-header.component.d.ts +3 -3
  83. package/date-picker/lib/year/year-table.component.d.ts +3 -3
  84. package/date-picker/month-picker.component.d.ts +4 -4
  85. package/date-picker/picker.component.d.ts +3 -3
  86. package/date-picker/quarter-picker.component.d.ts +4 -4
  87. package/date-picker/range-picker.component.d.ts +4 -4
  88. package/date-picker/week-picker.component.d.ts +4 -4
  89. package/date-picker/year-picker.component.d.ts +4 -4
  90. package/date-range/date-range.component.d.ts +3 -3
  91. package/date-range/module.d.ts +1 -1
  92. package/date-range/optional-dates/optional-dates.component.d.ts +3 -3
  93. package/dialog/body/dialog-body.component.d.ts +3 -3
  94. package/dialog/confirm/confirm.component.d.ts +4 -4
  95. package/dialog/dialog-container.component.d.ts +3 -3
  96. package/dialog/dialog-ref.d.ts +4 -4
  97. package/dialog/dialog.module.d.ts +1 -1
  98. package/dialog/dialog.service.d.ts +5 -5
  99. package/dialog/footer/dialog-footer.component.d.ts +3 -3
  100. package/dialog/header/dialog-header.component.d.ts +5 -5
  101. package/dialog/index.d.ts +1 -1
  102. package/divider/divider.component.d.ts +3 -3
  103. package/divider/divider.module.d.ts +1 -1
  104. package/dot/dot.component.d.ts +3 -3
  105. package/dot/dot.module.d.ts +1 -1
  106. package/dropdown/dropdown-menu.component.d.ts +6 -6
  107. package/dropdown/dropdown-submenu.component.d.ts +3 -3
  108. package/dropdown/module.d.ts +1 -1
  109. package/empty/empty.component.d.ts +3 -3
  110. package/empty/empty.module.d.ts +1 -1
  111. package/esm2022/action/action.component.mjs +10 -10
  112. package/esm2022/action/action.module.mjs +7 -7
  113. package/esm2022/action/actions.component.mjs +7 -7
  114. package/esm2022/affix/affix.component.mjs +7 -7
  115. package/esm2022/affix/affix.module.mjs +5 -5
  116. package/esm2022/alert/alert.component.mjs +8 -8
  117. package/esm2022/alert/alert.module.mjs +6 -6
  118. package/esm2022/anchor/anchor-link.component.mjs +7 -7
  119. package/esm2022/anchor/anchor.component.mjs +11 -11
  120. package/esm2022/anchor/anchor.module.mjs +7 -7
  121. package/esm2022/arrow-switcher/arrow-switcher.component.mjs +13 -13
  122. package/esm2022/arrow-switcher/module.mjs +6 -6
  123. package/esm2022/autocomplete/autocomplete.component.mjs +13 -13
  124. package/esm2022/autocomplete/autocomplete.trigger.directive.mjs +2 -2
  125. package/esm2022/autocomplete/module.mjs +10 -10
  126. package/esm2022/autocomplete/overlay/autocomplete-container.component.mjs +5 -5
  127. package/esm2022/autocomplete/overlay/autocomplete-ref.mjs +1 -1
  128. package/esm2022/autocomplete/overlay/autocomplete.service.mjs +4 -4
  129. package/esm2022/avatar/avatar-list/avatar-list.component.mjs +8 -8
  130. package/esm2022/avatar/avatar.component.mjs +11 -11
  131. package/esm2022/avatar/avatar.module.mjs +7 -7
  132. package/esm2022/back-top/back-top.component.mjs +8 -8
  133. package/esm2022/back-top/back-top.module.mjs +6 -6
  134. package/esm2022/badge/badge.component.mjs +10 -10
  135. package/esm2022/badge/badge.module.mjs +5 -5
  136. package/esm2022/breadcrumb/breadcrumb-item.component.mjs +7 -7
  137. package/esm2022/breadcrumb/breadcrumb.component.mjs +8 -8
  138. package/esm2022/breadcrumb/module.mjs +7 -7
  139. package/esm2022/button/button-group.component.mjs +5 -5
  140. package/esm2022/button/button-icon.component.mjs +9 -9
  141. package/esm2022/button/button.component.mjs +9 -9
  142. package/esm2022/button/button.module.mjs +8 -8
  143. package/esm2022/calendar/calendar-header.component.mjs +8 -8
  144. package/esm2022/calendar/calendar.component.mjs +8 -8
  145. package/esm2022/calendar/module.mjs +11 -11
  146. package/esm2022/card/card.component.mjs +8 -8
  147. package/esm2022/card/card.module.mjs +7 -7
  148. package/esm2022/card/content.component.mjs +5 -5
  149. package/esm2022/card/header.component.mjs +5 -5
  150. package/esm2022/carousel/carousel.component.mjs +13 -13
  151. package/esm2022/carousel/engine/carousel-base.mjs +1 -1
  152. package/esm2022/carousel/engine/carousel-fade.mjs +1 -1
  153. package/esm2022/carousel/engine/carousel-noop.mjs +1 -1
  154. package/esm2022/carousel/engine/carousel-slide.mjs +1 -1
  155. package/esm2022/carousel/module.mjs +5 -5
  156. package/esm2022/cascader/cascader-li.component.mjs +6 -6
  157. package/esm2022/cascader/cascader-search-option.component.mjs +7 -16
  158. package/esm2022/cascader/cascader.component.mjs +22 -22
  159. package/esm2022/cascader/module.mjs +7 -7
  160. package/esm2022/checkbox/checkbox.component.mjs +8 -8
  161. package/esm2022/checkbox/module.mjs +5 -5
  162. package/esm2022/collapse/collapse-item.component.mjs +11 -11
  163. package/esm2022/collapse/collapse.component.mjs +6 -6
  164. package/esm2022/collapse/module.mjs +7 -7
  165. package/esm2022/color-picker/color-picker-custom-panel.component.mjs +11 -11
  166. package/esm2022/color-picker/color-picker-panel.component.mjs +10 -10
  167. package/esm2022/color-picker/color-picker.component.mjs +3 -3
  168. package/esm2022/color-picker/module.mjs +25 -25
  169. package/esm2022/color-picker/parts/alpha/alpha.component.mjs +5 -5
  170. package/esm2022/color-picker/parts/hue/hue.component.mjs +5 -5
  171. package/esm2022/color-picker/parts/indicator/indicator.component.mjs +5 -5
  172. package/esm2022/color-picker/parts/inputs/inputs.component.mjs +7 -7
  173. package/esm2022/color-picker/parts/saturation/saturation.component.mjs +5 -5
  174. package/esm2022/comment/comment.component.mjs +7 -7
  175. package/esm2022/comment/comment.module.mjs +7 -7
  176. package/esm2022/date-picker/abstract-picker.component.mjs +4 -4
  177. package/esm2022/date-picker/abstract-picker.directive.mjs +3 -3
  178. package/esm2022/date-picker/base-picker.component.mjs +8 -8
  179. package/esm2022/date-picker/date-picker.component.mjs +12 -12
  180. package/esm2022/date-picker/date-picker.module.mjs +44 -44
  181. package/esm2022/date-picker/lib/calendar/calendar-footer.component.mjs +10 -10
  182. package/esm2022/date-picker/lib/date/date-header.component.mjs +7 -7
  183. package/esm2022/date-picker/lib/date/date-table-cell.component.mjs +5 -5
  184. package/esm2022/date-picker/lib/date/date-table.component.mjs +7 -7
  185. package/esm2022/date-picker/lib/date-carousel/date-carousel.component.mjs +11 -11
  186. package/esm2022/date-picker/lib/decade/decade-header.component.mjs +7 -7
  187. package/esm2022/date-picker/lib/decade/decade-table.component.mjs +5 -5
  188. package/esm2022/date-picker/lib/lib-packer.module.mjs +79 -79
  189. package/esm2022/date-picker/lib/month/month-header.component.mjs +7 -7
  190. package/esm2022/date-picker/lib/month/month-table.component.mjs +5 -5
  191. package/esm2022/date-picker/lib/popups/date-popup.component.mjs +15 -15
  192. package/esm2022/date-picker/lib/popups/inner-popup.component.mjs +23 -23
  193. package/esm2022/date-picker/lib/quarter/quarter-table.component.mjs +5 -5
  194. package/esm2022/date-picker/lib/year/year-header.component.mjs +7 -7
  195. package/esm2022/date-picker/lib/year/year-table.component.mjs +5 -5
  196. package/esm2022/date-picker/month-picker.component.mjs +12 -12
  197. package/esm2022/date-picker/picker.component.mjs +8 -8
  198. package/esm2022/date-picker/quarter-picker.component.mjs +12 -12
  199. package/esm2022/date-picker/range-picker.component.mjs +12 -12
  200. package/esm2022/date-picker/week-picker.component.mjs +12 -12
  201. package/esm2022/date-picker/year-picker.component.mjs +12 -12
  202. package/esm2022/date-range/date-range.component.mjs +13 -13
  203. package/esm2022/date-range/module.mjs +10 -10
  204. package/esm2022/date-range/optional-dates/optional-dates.component.mjs +7 -7
  205. package/esm2022/dialog/body/dialog-body.component.mjs +5 -5
  206. package/esm2022/dialog/confirm/confirm.component.mjs +10 -18
  207. package/esm2022/dialog/dialog-container.component.mjs +5 -5
  208. package/esm2022/dialog/dialog-ref.mjs +1 -1
  209. package/esm2022/dialog/dialog.module.mjs +22 -22
  210. package/esm2022/dialog/dialog.service.mjs +4 -4
  211. package/esm2022/dialog/footer/dialog-footer.component.mjs +6 -6
  212. package/esm2022/dialog/header/dialog-header.component.mjs +11 -11
  213. package/esm2022/dialog/index.mjs +2 -2
  214. package/esm2022/divider/divider.component.mjs +7 -7
  215. package/esm2022/divider/divider.module.mjs +5 -5
  216. package/esm2022/dot/dot.component.mjs +5 -5
  217. package/esm2022/dot/dot.module.mjs +5 -5
  218. package/esm2022/dropdown/dropdown-menu.component.mjs +9 -9
  219. package/esm2022/dropdown/dropdown-submenu.component.mjs +5 -5
  220. package/esm2022/dropdown/module.mjs +15 -15
  221. package/esm2022/empty/empty.component.mjs +8 -8
  222. package/esm2022/empty/empty.module.mjs +6 -6
  223. package/esm2022/flexible-text/flexible-text.component.mjs +7 -7
  224. package/esm2022/flexible-text/flexible-text.module.mjs +5 -5
  225. package/esm2022/form/form-group-error/form-group-error.component.mjs +8 -8
  226. package/esm2022/form/form-group.component.mjs +8 -8
  227. package/esm2022/form/from-group-footer/form-group-footer.component.mjs +5 -5
  228. package/esm2022/form/module.mjs +18 -18
  229. package/esm2022/grid/module.mjs +6 -6
  230. package/esm2022/grid/thy-grid-item.component.mjs +5 -5
  231. package/esm2022/grid/thy-grid.component.mjs +4 -4
  232. package/esm2022/guider/guider-hint/guider-hint.component.mjs +6 -6
  233. package/esm2022/guider/guider.module.mjs +6 -24
  234. package/esm2022/icon/icon.component.mjs +8 -8
  235. package/esm2022/icon/icon.module.mjs +5 -5
  236. package/esm2022/icon/index.mjs +2 -2
  237. package/esm2022/image/image-group.component.mjs +5 -5
  238. package/esm2022/image/image.directive.mjs +3 -3
  239. package/esm2022/image/image.service.mjs +3 -3
  240. package/esm2022/image/module.mjs +9 -9
  241. package/esm2022/image/preview/image-preview-ref.mjs +1 -1
  242. package/esm2022/image/preview/image-preview.component.mjs +10 -21
  243. package/esm2022/input/input-count.component.mjs +7 -7
  244. package/esm2022/input/input-group.component.mjs +5 -5
  245. package/esm2022/input/input-search.component.mjs +9 -9
  246. package/esm2022/input/input.component.mjs +10 -10
  247. package/esm2022/input/module.mjs +16 -16
  248. package/esm2022/input-number/input-number.component.mjs +14 -14
  249. package/esm2022/input-number/module.mjs +6 -6
  250. package/esm2022/layout/content-main.component.mjs +5 -5
  251. package/esm2022/layout/content-section.component.mjs +5 -5
  252. package/esm2022/layout/content.component.mjs +5 -5
  253. package/esm2022/layout/header.component.mjs +7 -7
  254. package/esm2022/layout/layout.component.mjs +5 -5
  255. package/esm2022/layout/layout.module.mjs +48 -48
  256. package/esm2022/layout/sidebar-content.component.mjs +5 -5
  257. package/esm2022/layout/sidebar-footer.component.mjs +5 -5
  258. package/esm2022/layout/sidebar-header.component.mjs +5 -5
  259. package/esm2022/layout/sidebar.component.mjs +15 -24
  260. package/esm2022/list/list-item-meta.component.mjs +7 -7
  261. package/esm2022/list/list-item.component.mjs +5 -5
  262. package/esm2022/list/list.component.mjs +6 -6
  263. package/esm2022/list/list.module.mjs +9 -26
  264. package/esm2022/list/selection/selection-list.mjs +12 -12
  265. package/esm2022/list/selection/selection.interface.mjs +1 -1
  266. package/esm2022/loading/loading.component.mjs +7 -7
  267. package/esm2022/loading/loading.module.mjs +5 -5
  268. package/esm2022/mention/mention.directive.mjs +3 -3
  269. package/esm2022/mention/mention.module.mjs +5 -24
  270. package/esm2022/mention/suggestions/suggestions.component.mjs +9 -9
  271. package/esm2022/menu/divider/menu-divider.component.mjs +5 -5
  272. package/esm2022/menu/group/menu-group.component.mjs +13 -13
  273. package/esm2022/menu/item/action/menu-item-action.component.mjs +6 -6
  274. package/esm2022/menu/item/icon/menu-item-icon.component.mjs +5 -5
  275. package/esm2022/menu/item/menu-item.component.mjs +7 -7
  276. package/esm2022/menu/item/name/menu-item-name.component.mjs +6 -6
  277. package/esm2022/menu/menu.component.mjs +6 -6
  278. package/esm2022/menu/menu.module.mjs +25 -39
  279. package/esm2022/message/message-container.component.mjs +7 -7
  280. package/esm2022/message/message.component.mjs +7 -7
  281. package/esm2022/message/message.service.mjs +3 -3
  282. package/esm2022/message/module.mjs +7 -7
  283. package/esm2022/nav/icon-nav/icon-nav-link.directive.mjs +7 -7
  284. package/esm2022/nav/icon-nav/icon-nav.component.mjs +5 -5
  285. package/esm2022/nav/nav.component.mjs +11 -11
  286. package/esm2022/nav/nav.module.mjs +14 -14
  287. package/esm2022/notify/module.mjs +7 -7
  288. package/esm2022/notify/notify-container.component.mjs +7 -7
  289. package/esm2022/notify/notify.component.mjs +7 -7
  290. package/esm2022/notify/notify.service.mjs +3 -3
  291. package/esm2022/pagination/pagination.component.mjs +20 -30
  292. package/esm2022/pagination/pagination.module.mjs +6 -25
  293. package/esm2022/popover/body/popover-body.component.mjs +5 -5
  294. package/esm2022/popover/header/popover-header.component.mjs +7 -7
  295. package/esm2022/popover/module.mjs +13 -13
  296. package/esm2022/popover/popover-container.component.mjs +5 -5
  297. package/esm2022/popover/popover-ref.mjs +1 -1
  298. package/esm2022/popover/popover.service.mjs +4 -4
  299. package/esm2022/progress/progress-circle.component.mjs +8 -8
  300. package/esm2022/progress/progress-strip.component.mjs +6 -6
  301. package/esm2022/progress/progress.component.mjs +15 -15
  302. package/esm2022/progress/progress.module.mjs +7 -7
  303. package/esm2022/property/module.mjs +7 -7
  304. package/esm2022/property/properties.component.mjs +6 -6
  305. package/esm2022/property/property-item.component.mjs +11 -11
  306. package/esm2022/property-operation/group/property-operation-group.component.mjs +5 -5
  307. package/esm2022/property-operation/module.mjs +7 -23
  308. package/esm2022/property-operation/property-operation.component.mjs +14 -14
  309. package/esm2022/radio/button/radio-button.component.mjs +8 -8
  310. package/esm2022/radio/group/radio-group.component.mjs +8 -8
  311. package/esm2022/radio/module.mjs +7 -7
  312. package/esm2022/radio/radio.component.mjs +9 -9
  313. package/esm2022/rate/module.mjs +7 -7
  314. package/esm2022/rate/rate-item.component.mjs +9 -9
  315. package/esm2022/rate/rate.component.mjs +13 -13
  316. package/esm2022/resizable/module.mjs +6 -6
  317. package/esm2022/resizable/resize-handle.component.mjs +6 -6
  318. package/esm2022/resizable/resize-handles.component.mjs +8 -8
  319. package/esm2022/result/result.component.mjs +5 -5
  320. package/esm2022/result/result.module.mjs +5 -5
  321. package/esm2022/segment/segment-item.component.mjs +8 -8
  322. package/esm2022/segment/segment.component.mjs +12 -12
  323. package/esm2022/segment/segment.module.mjs +7 -7
  324. package/esm2022/segment/segment.token.mjs +1 -1
  325. package/esm2022/select/custom-select/custom-select.component.mjs +37 -37
  326. package/esm2022/select/index.mjs +3 -3
  327. package/esm2022/select/module.mjs +10 -10
  328. package/esm2022/select/native-select/native-select.component.mjs +103 -0
  329. package/esm2022/shared/option/group/option-group.component.mjs +11 -11
  330. package/esm2022/shared/option/list-option/list-option.component.mjs +8 -8
  331. package/esm2022/shared/option/module.mjs +10 -37
  332. package/esm2022/shared/option/option-group.component.mjs +5 -5
  333. package/esm2022/shared/option/option.component.mjs +8 -8
  334. package/esm2022/shared/option/option.token.mjs +1 -1
  335. package/esm2022/shared/option/options-container.component.mjs +5 -5
  336. package/esm2022/shared/select/module.mjs +6 -6
  337. package/esm2022/shared/select/select-control/select-control.component.mjs +15 -15
  338. package/esm2022/skeleton/module.mjs +9 -26
  339. package/esm2022/skeleton/skeleton-circle.component.mjs +9 -9
  340. package/esm2022/skeleton/skeleton-rectangle.component.mjs +11 -11
  341. package/esm2022/skeleton/skeleton.component.mjs +6 -6
  342. package/esm2022/skeleton/stylized/bullet-list.component.mjs +14 -14
  343. package/esm2022/skeleton/stylized/list.component.mjs +12 -12
  344. package/esm2022/skeleton/stylized/paragraph.component.mjs +14 -14
  345. package/esm2022/slide/slide-body/slide-body-section.component.mjs +5 -5
  346. package/esm2022/slide/slide-body/slide-body.component.mjs +5 -5
  347. package/esm2022/slide/slide-container.component.mjs +5 -5
  348. package/esm2022/slide/slide-footer/slide-footer.component.mjs +5 -5
  349. package/esm2022/slide/slide-header/slide-header.component.mjs +8 -8
  350. package/esm2022/slide/slide-layout/slide-layout.component.mjs +5 -5
  351. package/esm2022/slide/slide-ref.service.mjs +4 -4
  352. package/esm2022/slide/slide.module.mjs +23 -35
  353. package/esm2022/slide/slide.service.mjs +4 -4
  354. package/esm2022/slider/slider.component.mjs +12 -12
  355. package/esm2022/slider/slider.module.mjs +5 -5
  356. package/esm2022/space/space.component.mjs +6 -6
  357. package/esm2022/space/space.module.mjs +5 -5
  358. package/esm2022/statistic/statistic.component.mjs +5 -5
  359. package/esm2022/statistic/statistic.module.mjs +5 -5
  360. package/esm2022/stepper/step-header.component.mjs +8 -8
  361. package/esm2022/stepper/step.component.mjs +5 -5
  362. package/esm2022/stepper/stepper-button.directive.mjs +6 -6
  363. package/esm2022/stepper/stepper.component.mjs +15 -15
  364. package/esm2022/stepper/stepper.module.mjs +7 -19
  365. package/esm2022/strength/strength.component.mjs +7 -7
  366. package/esm2022/strength/strength.module.mjs +5 -5
  367. package/esm2022/switch/switch.component.mjs +8 -8
  368. package/esm2022/switch/switch.module.mjs +5 -5
  369. package/esm2022/table/table-skeleton.component.mjs +12 -12
  370. package/esm2022/table/table.component.mjs +34 -34
  371. package/esm2022/table/table.module.mjs +10 -10
  372. package/esm2022/tabs/tab-content.component.mjs +5 -5
  373. package/esm2022/tabs/tab.component.mjs +6 -6
  374. package/esm2022/tabs/tabs.component.mjs +12 -12
  375. package/esm2022/tabs/tabs.module.mjs +8 -8
  376. package/esm2022/tag/tag.component.mjs +6 -6
  377. package/esm2022/tag/tag.module.mjs +6 -6
  378. package/esm2022/tag/tags.component.mjs +5 -5
  379. package/esm2022/time-picker/inner/inner-time-picker.component.mjs +6 -6
  380. package/esm2022/time-picker/time-picker-panel.component.mjs +12 -12
  381. package/esm2022/time-picker/time-picker.component.mjs +17 -17
  382. package/esm2022/time-picker/time-picker.module.mjs +7 -7
  383. package/esm2022/timeline/timeline-item.component.mjs +5 -5
  384. package/esm2022/timeline/timeline.component.mjs +8 -8
  385. package/esm2022/timeline/timeline.module.mjs +6 -6
  386. package/esm2022/tooltip/tooltip-ref.mjs +3 -3
  387. package/esm2022/tooltip/tooltip.component.mjs +5 -5
  388. package/esm2022/tooltip/tooltip.module.mjs +4 -4
  389. package/esm2022/transfer/transfer-list.component.mjs +7 -18
  390. package/esm2022/transfer/transfer.component.mjs +9 -9
  391. package/esm2022/transfer/transfer.module.mjs +10 -10
  392. package/esm2022/tree/tree-node.component.mjs +5 -5
  393. package/esm2022/tree/tree.component.mjs +17 -17
  394. package/esm2022/tree/tree.module.mjs +7 -7
  395. package/esm2022/tree-select/module.mjs +9 -9
  396. package/esm2022/tree-select/tree-select.component.mjs +29 -29
  397. package/esm2022/typography/module.mjs +6 -6
  398. package/esm2022/typography/text/text.component.mjs +7 -7
  399. package/esm2022/upload/file-select.component.mjs +8 -8
  400. package/esm2022/upload/module.mjs +5 -5
  401. package/esm2022/version.mjs +2 -2
  402. package/esm2022/vote/vote.component.mjs +10 -10
  403. package/esm2022/vote/vote.module.mjs +6 -6
  404. package/fesm2022/ngx-tethys-action.mjs +19 -19
  405. package/fesm2022/ngx-tethys-action.mjs.map +1 -1
  406. package/fesm2022/ngx-tethys-affix.mjs +10 -10
  407. package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
  408. package/fesm2022/ngx-tethys-alert.mjs +12 -12
  409. package/fesm2022/ngx-tethys-alert.mjs.map +1 -1
  410. package/fesm2022/ngx-tethys-anchor.mjs +20 -20
  411. package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
  412. package/fesm2022/ngx-tethys-arrow-switcher.mjs +17 -17
  413. package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
  414. package/fesm2022/ngx-tethys-autocomplete.mjs +26 -26
  415. package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
  416. package/fesm2022/ngx-tethys-avatar.mjs +21 -21
  417. package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
  418. package/fesm2022/ngx-tethys-back-top.mjs +12 -12
  419. package/fesm2022/ngx-tethys-back-top.mjs.map +1 -1
  420. package/fesm2022/ngx-tethys-badge.mjs +13 -13
  421. package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
  422. package/fesm2022/ngx-tethys-breadcrumb.mjs +17 -17
  423. package/fesm2022/ngx-tethys-breadcrumb.mjs.map +1 -1
  424. package/fesm2022/ngx-tethys-button.mjs +24 -24
  425. package/fesm2022/ngx-tethys-button.mjs.map +1 -1
  426. package/fesm2022/ngx-tethys-calendar.mjs +22 -22
  427. package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
  428. package/fesm2022/ngx-tethys-card.mjs +19 -19
  429. package/fesm2022/ngx-tethys-card.mjs.map +1 -1
  430. package/fesm2022/ngx-tethys-carousel.mjs +16 -16
  431. package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
  432. package/fesm2022/ngx-tethys-cascader.mjs +35 -44
  433. package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
  434. package/fesm2022/ngx-tethys-checkbox.mjs +11 -11
  435. package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
  436. package/fesm2022/ngx-tethys-collapse.mjs +19 -19
  437. package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
  438. package/fesm2022/ngx-tethys-color-picker.mjs +54 -54
  439. package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
  440. package/fesm2022/ngx-tethys-comment.mjs +12 -12
  441. package/fesm2022/ngx-tethys-comment.mjs.map +1 -1
  442. package/fesm2022/ngx-tethys-date-picker.mjs +248 -248
  443. package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
  444. package/fesm2022/ngx-tethys-date-range.mjs +24 -24
  445. package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
  446. package/fesm2022/ngx-tethys-dialog.mjs +48 -56
  447. package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
  448. package/fesm2022/ngx-tethys-divider.mjs +10 -10
  449. package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
  450. package/fesm2022/ngx-tethys-dot.mjs +8 -8
  451. package/fesm2022/ngx-tethys-dot.mjs.map +1 -1
  452. package/fesm2022/ngx-tethys-dropdown.mjs +25 -25
  453. package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
  454. package/fesm2022/ngx-tethys-empty.mjs +12 -12
  455. package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
  456. package/fesm2022/ngx-tethys-flexible-text.mjs +10 -10
  457. package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
  458. package/fesm2022/ngx-tethys-form.mjs +33 -33
  459. package/fesm2022/ngx-tethys-form.mjs.map +1 -1
  460. package/fesm2022/ngx-tethys-grid.mjs +11 -11
  461. package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
  462. package/fesm2022/ngx-tethys-guider.mjs +10 -28
  463. package/fesm2022/ngx-tethys-guider.mjs.map +1 -1
  464. package/fesm2022/ngx-tethys-icon.mjs +11 -11
  465. package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
  466. package/fesm2022/ngx-tethys-image.mjs +22 -33
  467. package/fesm2022/ngx-tethys-image.mjs.map +1 -1
  468. package/fesm2022/ngx-tethys-input-number.mjs +18 -18
  469. package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
  470. package/fesm2022/ngx-tethys-input.mjs +37 -37
  471. package/fesm2022/ngx-tethys-input.mjs.map +1 -1
  472. package/fesm2022/ngx-tethys-layout.mjs +86 -95
  473. package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
  474. package/fesm2022/ngx-tethys-list.mjs +31 -48
  475. package/fesm2022/ngx-tethys-list.mjs.map +1 -1
  476. package/fesm2022/ngx-tethys-loading.mjs +10 -10
  477. package/fesm2022/ngx-tethys-loading.mjs.map +1 -1
  478. package/fesm2022/ngx-tethys-mention.mjs +13 -32
  479. package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
  480. package/fesm2022/ngx-tethys-menu.mjs +58 -72
  481. package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
  482. package/fesm2022/ngx-tethys-message.mjs +17 -17
  483. package/fesm2022/ngx-tethys-message.mjs.map +1 -1
  484. package/fesm2022/ngx-tethys-nav.mjs +30 -30
  485. package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
  486. package/fesm2022/ngx-tethys-notify.mjs +17 -17
  487. package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
  488. package/fesm2022/ngx-tethys-pagination.mjs +24 -53
  489. package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
  490. package/fesm2022/ngx-tethys-popover.mjs +26 -26
  491. package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
  492. package/fesm2022/ngx-tethys-progress.mjs +28 -28
  493. package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
  494. package/fesm2022/ngx-tethys-property-operation.mjs +22 -38
  495. package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
  496. package/fesm2022/ngx-tethys-property.mjs +19 -19
  497. package/fesm2022/ngx-tethys-property.mjs.map +1 -1
  498. package/fesm2022/ngx-tethys-radio.mjs +23 -23
  499. package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
  500. package/fesm2022/ngx-tethys-rate.mjs +24 -24
  501. package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
  502. package/fesm2022/ngx-tethys-resizable.mjs +15 -15
  503. package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
  504. package/fesm2022/ngx-tethys-result.mjs +8 -8
  505. package/fesm2022/ngx-tethys-result.mjs.map +1 -1
  506. package/fesm2022/ngx-tethys-segment.mjs +22 -22
  507. package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
  508. package/fesm2022/ngx-tethys-select.mjs +58 -58
  509. package/fesm2022/ngx-tethys-select.mjs.map +1 -1
  510. package/fesm2022/ngx-tethys-shared.mjs +52 -79
  511. package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
  512. package/fesm2022/ngx-tethys-skeleton.mjs +57 -74
  513. package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
  514. package/fesm2022/ngx-tethys-slide.mjs +48 -60
  515. package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
  516. package/fesm2022/ngx-tethys-slider.mjs +15 -15
  517. package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
  518. package/fesm2022/ngx-tethys-space.mjs +9 -9
  519. package/fesm2022/ngx-tethys-space.mjs.map +1 -1
  520. package/fesm2022/ngx-tethys-statistic.mjs +8 -8
  521. package/fesm2022/ngx-tethys-statistic.mjs.map +1 -1
  522. package/fesm2022/ngx-tethys-stepper.mjs +31 -43
  523. package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
  524. package/fesm2022/ngx-tethys-strength.mjs +10 -10
  525. package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
  526. package/fesm2022/ngx-tethys-switch.mjs +11 -11
  527. package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
  528. package/fesm2022/ngx-tethys-table.mjs +51 -51
  529. package/fesm2022/ngx-tethys-table.mjs.map +1 -1
  530. package/fesm2022/ngx-tethys-tabs.mjs +23 -23
  531. package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
  532. package/fesm2022/ngx-tethys-tag.mjs +13 -13
  533. package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
  534. package/fesm2022/ngx-tethys-time-picker.mjs +35 -35
  535. package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
  536. package/fesm2022/ngx-tethys-timeline.mjs +14 -14
  537. package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
  538. package/fesm2022/ngx-tethys-tooltip.mjs +8 -8
  539. package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
  540. package/fesm2022/ngx-tethys-transfer.mjs +21 -32
  541. package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
  542. package/fesm2022/ngx-tethys-tree-select.mjs +36 -36
  543. package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
  544. package/fesm2022/ngx-tethys-tree.mjs +26 -26
  545. package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
  546. package/fesm2022/ngx-tethys-typography.mjs +11 -11
  547. package/fesm2022/ngx-tethys-typography.mjs.map +1 -1
  548. package/fesm2022/ngx-tethys-upload.mjs +11 -11
  549. package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
  550. package/fesm2022/ngx-tethys-vote.mjs +14 -14
  551. package/fesm2022/ngx-tethys-vote.mjs.map +1 -1
  552. package/fesm2022/ngx-tethys.mjs +1 -1
  553. package/fesm2022/ngx-tethys.mjs.map +1 -1
  554. package/flexible-text/flexible-text.component.d.ts +3 -3
  555. package/flexible-text/flexible-text.module.d.ts +1 -1
  556. package/form/form-group-error/form-group-error.component.d.ts +3 -3
  557. package/form/form-group.component.d.ts +3 -3
  558. package/form/from-group-footer/form-group-footer.component.d.ts +3 -3
  559. package/form/module.d.ts +1 -1
  560. package/grid/module.d.ts +1 -1
  561. package/grid/thy-grid-item.component.d.ts +4 -4
  562. package/grid/thy-grid.component.d.ts +2 -2
  563. package/guider/guider-hint/guider-hint.component.d.ts +3 -3
  564. package/guider/guider.module.d.ts +1 -1
  565. package/icon/icon.component.d.ts +3 -3
  566. package/icon/icon.module.d.ts +1 -1
  567. package/icon/index.d.ts +1 -1
  568. package/image/image-group.component.d.ts +3 -3
  569. package/image/module.d.ts +1 -1
  570. package/image/preview/image-preview-ref.d.ts +4 -4
  571. package/image/preview/image-preview.component.d.ts +4 -4
  572. package/input/input-count.component.d.ts +5 -5
  573. package/input/input-group.component.d.ts +4 -4
  574. package/input/input-search.component.d.ts +3 -3
  575. package/input/input.component.d.ts +3 -3
  576. package/input/module.d.ts +1 -1
  577. package/input-number/input-number.component.d.ts +3 -3
  578. package/input-number/module.d.ts +1 -1
  579. package/layout/content-main.component.d.ts +3 -3
  580. package/layout/content-section.component.d.ts +3 -3
  581. package/layout/content.component.d.ts +3 -3
  582. package/layout/header.component.d.ts +3 -3
  583. package/layout/layout.component.d.ts +3 -3
  584. package/layout/layout.module.d.ts +1 -1
  585. package/layout/sidebar-content.component.d.ts +3 -3
  586. package/layout/sidebar-footer.component.d.ts +3 -3
  587. package/layout/sidebar-header.component.d.ts +3 -3
  588. package/layout/sidebar.component.d.ts +3 -3
  589. package/list/list-item-meta.component.d.ts +3 -3
  590. package/list/list-item.component.d.ts +3 -3
  591. package/list/list.component.d.ts +3 -3
  592. package/list/list.module.d.ts +1 -1
  593. package/list/selection/selection-list.d.ts +9 -9
  594. package/list/selection/selection.interface.d.ts +4 -4
  595. package/loading/loading.component.d.ts +3 -3
  596. package/loading/loading.module.d.ts +1 -1
  597. package/mention/mention.directive.d.ts +2 -2
  598. package/mention/mention.module.d.ts +1 -1
  599. package/mention/suggestions/suggestions.component.d.ts +3 -3
  600. package/menu/divider/menu-divider.component.d.ts +3 -3
  601. package/menu/group/menu-group.component.d.ts +3 -3
  602. package/menu/item/action/menu-item-action.component.d.ts +3 -3
  603. package/menu/item/icon/menu-item-icon.component.d.ts +3 -3
  604. package/menu/item/menu-item.component.d.ts +3 -3
  605. package/menu/item/name/menu-item-name.component.d.ts +3 -3
  606. package/menu/menu.component.d.ts +3 -3
  607. package/menu/menu.module.d.ts +1 -1
  608. package/message/message-container.component.d.ts +3 -3
  609. package/message/message.component.d.ts +3 -3
  610. package/message/message.service.d.ts +2 -2
  611. package/message/module.d.ts +1 -1
  612. package/nav/icon-nav/icon-nav-link.directive.d.ts +3 -3
  613. package/nav/icon-nav/icon-nav.component.d.ts +3 -3
  614. package/nav/nav.component.d.ts +3 -3
  615. package/nav/nav.module.d.ts +1 -1
  616. package/notify/module.d.ts +1 -1
  617. package/notify/notify-container.component.d.ts +3 -3
  618. package/notify/notify.component.d.ts +3 -3
  619. package/notify/notify.service.d.ts +2 -2
  620. package/package.json +134 -134
  621. package/pagination/pagination.component.d.ts +3 -3
  622. package/pagination/pagination.module.d.ts +1 -1
  623. package/popover/body/popover-body.component.d.ts +3 -3
  624. package/popover/header/popover-header.component.d.ts +3 -3
  625. package/popover/module.d.ts +1 -1
  626. package/popover/popover-container.component.d.ts +3 -3
  627. package/popover/popover-ref.d.ts +4 -4
  628. package/popover/popover.service.d.ts +5 -5
  629. package/progress/progress-circle.component.d.ts +3 -3
  630. package/progress/progress-strip.component.d.ts +4 -4
  631. package/progress/progress.component.d.ts +6 -6
  632. package/progress/progress.module.d.ts +1 -1
  633. package/property/module.d.ts +1 -1
  634. package/property/properties.component.d.ts +3 -3
  635. package/property/property-item.component.d.ts +5 -5
  636. package/property-operation/group/property-operation-group.component.d.ts +3 -3
  637. package/property-operation/module.d.ts +1 -1
  638. package/property-operation/property-operation.component.d.ts +3 -3
  639. package/radio/button/radio-button.component.d.ts +6 -6
  640. package/radio/group/radio-group.component.d.ts +7 -7
  641. package/radio/module.d.ts +1 -1
  642. package/radio/radio.component.d.ts +6 -6
  643. package/rate/module.d.ts +1 -1
  644. package/rate/rate-item.component.d.ts +3 -3
  645. package/rate/rate.component.d.ts +3 -3
  646. package/resizable/module.d.ts +1 -1
  647. package/resizable/resize-handle.component.d.ts +3 -3
  648. package/resizable/resize-handles.component.d.ts +3 -3
  649. package/result/result.component.d.ts +3 -3
  650. package/result/result.module.d.ts +1 -1
  651. package/schematics/dependencies.js +1 -1
  652. package/schematics/ng-update/data/class-names.js +740 -4
  653. package/schematics/ng-update/update-17/index.spec.js +1 -1
  654. package/schematics/version.d.ts +1 -1
  655. package/schematics/version.js +1 -1
  656. package/segment/segment-item.component.d.ts +3 -3
  657. package/segment/segment.component.d.ts +7 -7
  658. package/segment/segment.module.d.ts +1 -1
  659. package/segment/segment.token.d.ts +3 -3
  660. package/select/custom-select/custom-select.component.d.ts +17 -17
  661. package/select/index.d.ts +2 -2
  662. package/select/module.d.ts +2 -2
  663. package/select/{select.component.d.ts → native-select/native-select.component.d.ts} +4 -4
  664. package/select/{custom-select/styles → styles}/custom-select.scss +1 -1
  665. package/select/{custom-select/styles → styles}/mixin.scss +2 -2
  666. package/select/styles/select.scss +4 -4
  667. package/shared/option/group/option-group.component.d.ts +5 -5
  668. package/shared/option/list-option/list-option.component.d.ts +3 -3
  669. package/shared/option/module.d.ts +1 -1
  670. package/shared/option/option-group.component.d.ts +3 -3
  671. package/shared/option/option.component.d.ts +6 -6
  672. package/shared/option/option.token.d.ts +7 -7
  673. package/shared/option/options-container.component.d.ts +3 -3
  674. package/shared/select/module.d.ts +1 -1
  675. package/shared/select/select-control/select-control.component.d.ts +3 -3
  676. package/shared/select/select-control/select-control.scss +1 -1
  677. package/skeleton/module.d.ts +1 -1
  678. package/skeleton/skeleton-circle.component.d.ts +5 -5
  679. package/skeleton/skeleton-rectangle.component.d.ts +5 -5
  680. package/skeleton/skeleton.component.d.ts +3 -3
  681. package/skeleton/stylized/bullet-list.component.d.ts +3 -3
  682. package/skeleton/stylized/list.component.d.ts +3 -3
  683. package/skeleton/stylized/paragraph.component.d.ts +3 -3
  684. package/slide/slide-body/slide-body-section.component.d.ts +3 -3
  685. package/slide/slide-body/slide-body.component.d.ts +3 -3
  686. package/slide/slide-container.component.d.ts +3 -3
  687. package/slide/slide-footer/slide-footer.component.d.ts +3 -3
  688. package/slide/slide-header/slide-header.component.d.ts +3 -3
  689. package/slide/slide-layout/slide-layout.component.d.ts +3 -3
  690. package/slide/slide-ref.service.d.ts +4 -4
  691. package/slide/slide.module.d.ts +1 -1
  692. package/slide/slide.service.d.ts +5 -5
  693. package/slider/slider.component.d.ts +3 -3
  694. package/slider/slider.module.d.ts +1 -1
  695. package/space/space.component.d.ts +3 -3
  696. package/space/space.module.d.ts +1 -1
  697. package/statistic/statistic.component.d.ts +3 -3
  698. package/statistic/statistic.module.d.ts +1 -1
  699. package/stepper/step-header.component.d.ts +3 -3
  700. package/stepper/step.component.d.ts +4 -4
  701. package/stepper/stepper-button.directive.d.ts +3 -3
  702. package/stepper/stepper.component.d.ts +10 -10
  703. package/stepper/stepper.module.d.ts +1 -1
  704. package/strength/strength.component.d.ts +3 -3
  705. package/strength/strength.module.d.ts +1 -1
  706. package/styles/index.scss +1 -1
  707. package/styles/mixins/index.scss +1 -1
  708. package/switch/switch.component.d.ts +3 -3
  709. package/switch/switch.module.d.ts +1 -1
  710. package/table/table-skeleton.component.d.ts +3 -3
  711. package/table/table.component.d.ts +3 -3
  712. package/table/table.module.d.ts +1 -1
  713. package/tabs/tab-content.component.d.ts +3 -3
  714. package/tabs/tab.component.d.ts +3 -3
  715. package/tabs/tabs.component.d.ts +7 -7
  716. package/tabs/tabs.module.d.ts +1 -1
  717. package/tag/tag.component.d.ts +3 -3
  718. package/tag/tag.module.d.ts +1 -1
  719. package/tag/tags.component.d.ts +3 -3
  720. package/time-picker/inner/inner-time-picker.component.d.ts +3 -3
  721. package/time-picker/time-picker-panel.component.d.ts +3 -3
  722. package/time-picker/time-picker.component.d.ts +3 -3
  723. package/time-picker/time-picker.module.d.ts +1 -1
  724. package/timeline/timeline-item.component.d.ts +3 -3
  725. package/timeline/timeline.component.d.ts +6 -6
  726. package/timeline/timeline.module.d.ts +1 -1
  727. package/tooltip/tooltip.component.d.ts +3 -3
  728. package/tooltip/tooltip.module.d.ts +1 -1
  729. package/transfer/transfer-list.component.d.ts +3 -3
  730. package/transfer/transfer.component.d.ts +3 -3
  731. package/transfer/transfer.module.d.ts +1 -1
  732. package/tree/tree.component.d.ts +3 -3
  733. package/tree/tree.module.d.ts +1 -1
  734. package/tree-select/module.d.ts +1 -1
  735. package/tree-select/tree-select.component.d.ts +8 -8
  736. package/typography/module.d.ts +1 -1
  737. package/typography/text/text.component.d.ts +3 -3
  738. package/upload/file-select.component.d.ts +3 -3
  739. package/upload/module.d.ts +1 -1
  740. package/vote/vote.component.d.ts +3 -3
  741. package/vote/vote.module.d.ts +1 -1
  742. package/divider/examples/color/color.component.scss +0 -5
  743. package/divider/examples/deeper/deeper.component.scss +0 -5
  744. package/divider/examples/with-text/with-text.component.scss +0 -5
  745. package/esm2022/select/select.component.mjs +0 -103
@@ -30,7 +30,7 @@ const treeItemSizeMap = {
30
30
  * 树形控件组件
31
31
  * @name thy-tree
32
32
  */
33
- export class ThyTreeComponent {
33
+ export class ThyTree {
34
34
  get treeNodes() {
35
35
  return this.thyTreeService.treeNodes;
36
36
  }
@@ -507,16 +507,16 @@ export class ThyTreeComponent {
507
507
  this.destroy$.next();
508
508
  this.destroy$.complete();
509
509
  }
510
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ThyTreeComponent, deps: [{ token: i1.ThyTreeService }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
511
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.2", type: ThyTreeComponent, isStandalone: true, selector: "thy-tree", inputs: { thyNodes: "thyNodes", thyShowExpand: "thyShowExpand", thyMultiple: "thyMultiple", thyDraggable: "thyDraggable", thyCheckable: "thyCheckable", thyClickBehavior: "thyClickBehavior", thyCheckStateResolve: "thyCheckStateResolve", thyAsync: "thyAsync", thyType: "thyType", thyIcons: "thyIcons", thySize: "thySize", thyVirtualScroll: "thyVirtualScroll", thyItemSize: "thyItemSize", thyTitleTruncate: "thyTitleTruncate", thySelectedKeys: "thySelectedKeys", thyIndent: "thyIndent", thyBeforeDragStart: "thyBeforeDragStart", thyBeforeDragDrop: "thyBeforeDragDrop" }, outputs: { viewport: "viewport", thyOnClick: "thyOnClick", thyOnCheckboxChange: "thyOnCheckboxChange", thyOnExpandChange: "thyOnExpandChange", thyOnDragDrop: "thyOnDragDrop", thyDblClick: "thyDblClick" }, host: { properties: { "class.thy-multiple-selection-list": "this.thyMultiple", "class.thy-tree-draggable": "this.thyDraggable", "class.thy-virtual-scrolling-tree": "this.thyVirtualScroll", "class.thy-tree": "this.thyTreeClass", "class.thy-tree-dragging": "this.dragging" } }, providers: [
510
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ThyTree, deps: [{ token: i1.ThyTreeService }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
511
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.2", type: ThyTree, isStandalone: true, selector: "thy-tree", inputs: { thyNodes: "thyNodes", thyShowExpand: "thyShowExpand", thyMultiple: "thyMultiple", thyDraggable: "thyDraggable", thyCheckable: "thyCheckable", thyClickBehavior: "thyClickBehavior", thyCheckStateResolve: "thyCheckStateResolve", thyAsync: "thyAsync", thyType: "thyType", thyIcons: "thyIcons", thySize: "thySize", thyVirtualScroll: "thyVirtualScroll", thyItemSize: "thyItemSize", thyTitleTruncate: "thyTitleTruncate", thySelectedKeys: "thySelectedKeys", thyIndent: "thyIndent", thyBeforeDragStart: "thyBeforeDragStart", thyBeforeDragDrop: "thyBeforeDragDrop" }, outputs: { viewport: "viewport", thyOnClick: "thyOnClick", thyOnCheckboxChange: "thyOnCheckboxChange", thyOnExpandChange: "thyOnExpandChange", thyOnDragDrop: "thyOnDragDrop", thyDblClick: "thyDblClick" }, host: { properties: { "class.thy-multiple-selection-list": "this.thyMultiple", "class.thy-tree-draggable": "this.thyDraggable", "class.thy-virtual-scrolling-tree": "this.thyVirtualScroll", "class.thy-tree": "this.thyTreeClass", "class.thy-tree-dragging": "this.dragging" } }, providers: [
512
512
  {
513
513
  provide: NG_VALUE_ACCESSOR,
514
- useExisting: forwardRef(() => ThyTreeComponent),
514
+ useExisting: forwardRef(() => ThyTree),
515
515
  multi: true
516
516
  },
517
517
  {
518
518
  provide: THY_TREE_ABSTRACT_TOKEN,
519
- useExisting: forwardRef(() => ThyTreeComponent)
519
+ useExisting: forwardRef(() => ThyTree)
520
520
  },
521
521
  ThyTreeService
522
522
  ], queries: [{ propertyName: "templateRef", first: true, predicate: ["treeNodeTemplate"], descendants: true, static: true }, { propertyName: "emptyChildrenTemplate", first: true, predicate: ["emptyChildrenTemplate"], descendants: true, static: true }], viewQueries: [{ propertyName: "viewport", first: true, predicate: ["viewport"], descendants: true }, { propertyName: "cdkDrags", predicate: CdkDrag, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<cdk-virtual-scroll-viewport\n #viewport\n *ngIf=\"thyVirtualScroll\"\n [itemSize]=\"thyItemSize\"\n [style.height]=\"'100%'\"\n cdkDropList\n [cdkDropListAutoScrollStep]=\"6\"\n [cdkDropListData]=\"flattenTreeNodes\"\n [cdkDropListSortingDisabled]=\"true\"\n (cdkDropListDropped)=\"onListDropped($event)\"\n >\n <div class=\"virtual-trees-container\">\n <thy-tree-node\n *cdkVirtualFor=\"let node of flattenTreeNodes; trackBy: trackByFn; let i = index\"\n cdkDrag\n [cdkDragData]=\"node\"\n [cdkDragDisabled]=\"!thyDraggable || !(node | treeNodeDraggable : thyBeforeDragStart)\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragEnded)=\"onDragEnded($event)\"\n (cdkDragMoved)=\"emitDragMoved($event)\"\n [node]=\"node\"\n [templateRef]=\"templateRef\"\n [emptyChildrenTemplateRef]=\"emptyChildrenTemplate\"\n [thyAsync]=\"thyAsync\"\n [thyDraggable]=\"thyDraggable\"\n [thyCheckable]=\"thyCheckable\"\n [thyMultiple]=\"thyMultiple\"\n [thyClickBehavior]=\"thyClickBehavior\"\n [thyTitleTruncate]=\"thyTitleTruncate\"\n [thyItemSize]=\"thyItemSize\"\n [thyIndent]=\"thyIndent\"\n (thyOnClick)=\"thyOnClick.emit($event)\"\n (thyDblClick)=\"thyDblClick.emit($event)\"\n (thyOnExpandChange)=\"eventTriggerChanged($event)\"\n (thyOnCheckboxChange)=\"eventTriggerChanged($event)\">\n </thy-tree-node>\n </div>\n</cdk-virtual-scroll-viewport>\n\n<div\n *ngIf=\"!thyVirtualScroll\"\n cdkDropList\n [cdkDropListAutoScrollStep]=\"6\"\n [cdkDropListData]=\"flattenTreeNodes\"\n [cdkDropListSortingDisabled]=\"true\"\n (cdkDropListDropped)=\"onListDropped($event)\">\n <thy-tree-node\n *ngFor=\"let node of flattenTreeNodes; trackBy: trackByFn; let i = index\"\n cdkDrag\n [cdkDragData]=\"node\"\n [cdkDragDisabled]=\"!thyDraggable || !(node | treeNodeDraggable : thyBeforeDragStart)\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragEnded)=\"onDragEnded($event)\"\n (cdkDragMoved)=\"emitDragMoved($event)\"\n [node]=\"node\"\n [templateRef]=\"templateRef\"\n [emptyChildrenTemplateRef]=\"emptyChildrenTemplate\"\n [thyAsync]=\"thyAsync\"\n [thyDraggable]=\"thyDraggable\"\n [thyCheckable]=\"thyCheckable\"\n [thyMultiple]=\"thyMultiple\"\n [thyTitleTruncate]=\"thyTitleTruncate\"\n [thyItemSize]=\"thyItemSize\"\n [thyClickBehavior]=\"thyClickBehavior\"\n [thyIndent]=\"thyIndent\"\n (thyOnClick)=\"thyOnClick.emit($event)\"\n (thyDblClick)=\"thyDblClick.emit($event)\"\n (thyOnExpandChange)=\"eventTriggerChanged($event)\"\n (thyOnCheckboxChange)=\"thyOnCheckboxChange.emit($event)\">\n </thy-tree-node>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "component", type: CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: ThyTreeNodeComponent, selector: "thy-tree-node", inputs: ["node", "thyAsync", "thyMultiple", "thyDraggable", "thyCheckable", "thyClickBehavior", "thyTitleTruncate", "templateRef", "emptyChildrenTemplateRef", "thyItemSize", "thyIndent"], outputs: ["thyOnClick", "thyDblClick", "thyOnExpandChange", "thyOnCheckboxChange"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: ThyTreeNodeDraggablePipe, name: "treeNodeDraggable" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
@@ -524,48 +524,48 @@ export class ThyTreeComponent {
524
524
  __decorate([
525
525
  InputBoolean(),
526
526
  __metadata("design:type", Object)
527
- ], ThyTreeComponent.prototype, "thyMultiple", void 0);
527
+ ], ThyTree.prototype, "thyMultiple", void 0);
528
528
  __decorate([
529
529
  InputBoolean(),
530
530
  __metadata("design:type", Boolean),
531
531
  __metadata("design:paramtypes", [Boolean])
532
- ], ThyTreeComponent.prototype, "thyDraggable", null);
532
+ ], ThyTree.prototype, "thyDraggable", null);
533
533
  __decorate([
534
534
  InputBoolean(),
535
535
  __metadata("design:type", Boolean)
536
- ], ThyTreeComponent.prototype, "thyCheckable", void 0);
536
+ ], ThyTree.prototype, "thyCheckable", void 0);
537
537
  __decorate([
538
538
  InputBoolean(),
539
539
  __metadata("design:type", Object)
540
- ], ThyTreeComponent.prototype, "thyAsync", void 0);
540
+ ], ThyTree.prototype, "thyAsync", void 0);
541
541
  __decorate([
542
542
  InputBoolean(),
543
543
  __metadata("design:type", Object)
544
- ], ThyTreeComponent.prototype, "thyVirtualScroll", void 0);
544
+ ], ThyTree.prototype, "thyVirtualScroll", void 0);
545
545
  __decorate([
546
546
  InputNumber(),
547
547
  __metadata("design:type", Number),
548
548
  __metadata("design:paramtypes", [Number])
549
- ], ThyTreeComponent.prototype, "thyItemSize", null);
549
+ ], ThyTree.prototype, "thyItemSize", null);
550
550
  __decorate([
551
551
  InputBoolean(),
552
552
  __metadata("design:type", Object)
553
- ], ThyTreeComponent.prototype, "thyTitleTruncate", void 0);
553
+ ], ThyTree.prototype, "thyTitleTruncate", void 0);
554
554
  __decorate([
555
555
  InputNumber(),
556
556
  __metadata("design:type", Object)
557
- ], ThyTreeComponent.prototype, "thyIndent", void 0);
558
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ThyTreeComponent, decorators: [{
557
+ ], ThyTree.prototype, "thyIndent", void 0);
558
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ThyTree, decorators: [{
559
559
  type: Component,
560
560
  args: [{ selector: 'thy-tree', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
561
561
  {
562
562
  provide: NG_VALUE_ACCESSOR,
563
- useExisting: forwardRef(() => ThyTreeComponent),
563
+ useExisting: forwardRef(() => ThyTree),
564
564
  multi: true
565
565
  },
566
566
  {
567
567
  provide: THY_TREE_ABSTRACT_TOKEN,
568
- useExisting: forwardRef(() => ThyTreeComponent)
568
+ useExisting: forwardRef(() => ThyTree)
569
569
  },
570
570
  ThyTreeService
571
571
  ], standalone: true, imports: [
@@ -658,4 +658,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
658
658
  type: ViewChildren,
659
659
  args: [CdkDrag]
660
660
  }] } });
661
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHJlZS90cmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy90cmVlL3RyZWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlHLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFLSCxtQkFBbUIsRUFFbkIsWUFBWSxFQUdmLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFP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QyxnQkFBZ0I7Z0JBSTdCLFFBQVE7c0JBRFAsV0FBVzt1QkFBQyx5QkFBeUI7Z0JBR2YsUUFBUTtzQkFBOUIsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXRCb29sZWFuLCBJbnB1dE51bWJlciB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBoZWxwZXJzIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IHVzZUhvc3RSZW5kZXJlciB9IGZyb20gJ0B0ZXRoeXMvY2RrL2RvbSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsIENka0ZpeGVkU2l6ZVZpcnR1YWxTY3JvbGwsIENka1ZpcnR1YWxGb3JPZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVEhZX1RSRUVfQUJTVFJBQ1RfVE9LRU4gfSBmcm9tICcuL3RyZWUtYWJzdHJhY3QnO1xuaW1wb3J0IHsgVGh5VHJlZU5vZGUgfSBmcm9tICcuL3RyZWUtbm9kZS5jbGFzcyc7XG5pbXBvcnQge1xuICAgIFRoeVRyZWVCZWZvcmVEcmFnRHJvcENvbnRleHQsXG4gICAgVGh5VHJlZUJlZm9yZURyYWdTdGFydENvbnRleHQsXG4gICAgVGh5Q2xpY2tCZWhhdmlvcixcbiAgICBUaHlUcmVlRHJhZ0Ryb3BFdmVudCxcbiAgICBUaHlUcmVlRHJvcFBvc2l0aW9uLFxuICAgIFRoeVRyZWVFbWl0RXZlbnQsXG4gICAgVGh5VHJlZUljb25zLFxuICAgIFRoeVRyZWVOb2RlQ2hlY2tTdGF0ZSxcbiAgICBUaHlUcmVlTm9kZURhdGFcbn0gZnJvbSAnLi90cmVlLmNsYXNzJztcbmltcG9ydCB7IFRoeVRyZWVTZXJ2aWNlIH0gZnJvbSAnLi90cmVlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGh5VHJlZU5vZGVDb21wb25lbnQgfSBmcm9tICcuL3RyZWUtbm9kZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdJZiwgTmdGb3IsIERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENka0RyYWcsIENka0RyYWdEcm9wLCBDZGtEcmFnRW5kLCBDZGtEcmFnTW92ZSwgQ2RrRHJhZ1N0YXJ0LCBDZGtEcm9wTGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgYXVkaXRUaW1lLCBmaWx0ZXIsIHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVGh5VHJlZU5vZGVEcmFnZ2FibGVQaXBlIH0gZnJvbSAnLi90cmVlLnBpcGUnO1xuXG50eXBlIFRoeVRyZWVTaXplID0gJ3NtJyB8ICdkZWZhdWx0JztcblxudHlwZSBUaHlUcmVlVHlwZSA9ICdkZWZhdWx0JyB8ICdlc3BlY2lhbCc7XG5cbmNvbnN0IHRyZWVUeXBlQ2xhc3NNYXAgPSB7XG4gICAgZGVmYXVsdDogWyd0aHktdHJlZS1kZWZhdWx0J10sXG4gICAgZXNwZWNpYWw6IFsndGh5LXRyZWUtZXNwZWNpYWwnXVxufTtcblxuY29uc3QgdHJlZUl0ZW1TaXplTWFwID0ge1xuICAgIGRlZmF1bHQ6IDQ0LFxuICAgIHNtOiA0MlxufTtcblxuLyoqXG4gKiDmoJHlvaLmjqfku7bnu4Tku7ZcbiAqIEBuYW1lIHRoeS10cmVlXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LXRyZWUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90cmVlLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRoeVRyZWVDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVEhZX1RSRUVfQUJTVFJBQ1RfVE9LRU4sXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaHlUcmVlQ29tcG9uZW50KVxuICAgICAgICB9LFxuICAgICAgICBUaHlUcmVlU2VydmljZVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nSWYsXG4gICAgICAgIENka0RyYWcsXG4gICAgICAgIENka0Ryb3BMaXN0LFxuICAgICAgICBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsXG4gICAgICAgIENka0ZpeGVkU2l6ZVZpcnR1YWxTY3JvbGwsXG4gICAgICAgIENka1ZpcnR1YWxGb3JPZixcbiAgICAgICAgVGh5VHJlZU5vZGVDb21wb25lbnQsXG4gICAgICAgIE5nRm9yLFxuICAgICAgICBUaHlUcmVlTm9kZURyYWdnYWJsZVBpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRoeVRyZWVDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSBfdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwcml2YXRlIF9lbXB0eUNoaWxkcmVuVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwcml2YXRlIF9kcmFnZ2FibGUgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgX2V4cGFuZGVkS2V5czogKHN0cmluZyB8IG51bWJlcilbXTtcblxuICAgIHByaXZhdGUgX3NlbGVjdGVkS2V5czogKHN0cmluZyB8IG51bWJlcilbXTtcblxuICAgIHByaXZhdGUgaG9zdFJlbmRlcmVyID0gdXNlSG9zdFJlbmRlcmVyKCk7XG5cbiAgICBwcml2YXRlIF9vblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIHByaXZhdGUgX29uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9IChfOiBhbnkpID0+IHt9O1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICAvLyDnvJPlrZggRWxlbWVudCDlkowgRHJhZ1JlZiDnmoTlhbPns7vvvIzmlrnkvr/lnKggSXRlbSDmi5bliqjml7bmn6Xmib5cbiAgICBwcml2YXRlIG5vZGVEcmFnc01hcCA9IG5ldyBNYXA8SFRNTEVsZW1lbnQsIENka0RyYWc8VGh5VHJlZU5vZGU+PigpO1xuXG4gICAgcHJpdmF0ZSBub2RlRHJhZ01vdmVkID0gbmV3IFN1YmplY3Q8Q2RrRHJhZ01vdmU+KCk7XG5cbiAgICAvLyBwcml2YXRlIHN0YXJ0RHJhZ05vZGVFeHBhbmRlZDogYm9vbGVhbjtcblxuICAgIHByaXZhdGUgc3RhcnREcmFnTm9kZUNsb25lOiBUaHlUcmVlTm9kZTtcblxuICAgIC8vIE5vZGUg5ouW5Yqo57uP6L+H55uu5qCH5pe25Li05pe26K6w5b2V55uu5qCHaWTku6Xlj4rnm7jlr7nlupTnm67moIfnmoTkvY3nva5cbiAgICBwcml2YXRlIG5vZGVEcm9wVGFyZ2V0OiB7XG4gICAgICAgIHBvc2l0aW9uPzogVGh5VHJlZURyb3BQb3NpdGlvbjtcbiAgICAgICAga2V5PzogbnVtYmVyIHwgc3RyaW5nO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGRyb3BFbnRlclByZWRpY2F0ZT86IChjb250ZXh0OiB7IHNvdXJjZTogVGh5VHJlZU5vZGU7IHRhcmdldDogVGh5VHJlZU5vZGU7IGRyb3BQb3NpdGlvbjogVGh5VHJlZURyb3BQb3NpdGlvbiB9KSA9PiBib29sZWFuID1cbiAgICAgICAgY29udGV4dCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRoaXMuaXNTaG93RXhwYW5kKGNvbnRleHQudGFyZ2V0KSB8fCAoIXRoaXMuaXNTaG93RXhwYW5kKGNvbnRleHQudGFyZ2V0KSAmJiBjb250ZXh0LmRyb3BQb3NpdGlvbiAhPT0gVGh5VHJlZURyb3BQb3NpdGlvbi5pbilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH07XG5cbiAgICBwdWJsaWMgX3NlbGVjdGlvbk1vZGVsOiBTZWxlY3Rpb25Nb2RlbDxUaHlUcmVlTm9kZT47XG5cbiAgICBwdWJsaWMgZ2V0IHRyZWVOb2RlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5VHJlZVNlcnZpY2UudHJlZU5vZGVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBmbGF0dGVuVHJlZU5vZGVzOiBUaHlUcmVlTm9kZVtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiDomZrmi5/ljJbmu5rliqjnmoTop4blj6NcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgQFZpZXdDaGlsZCgndmlld3BvcnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgdmlld3BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcblxuICAgIC8qKlxuICAgICAqIFRyZWVOb2RlIOWxleeOsOaJgOmcgOeahOaVsOaNrlxuICAgICAqIEB0eXBlIFRoeVRyZWVOb2RlRGF0YVtdXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5Tm9kZXM6IFRoeVRyZWVOb2RlRGF0YVtdO1xuXG4gICAgLyoqXG4gICAgICog6K6+572uIFRyZWVOb2RlIOaYr+WQpuaUr+aMgeWxleW8gFxuICAgICAqIEB0eXBlIGJvb2xlYW4gfCBGdW5jdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVNob3dFeHBhbmQ6IGJvb2xlYW4gfCAoKF86IFRoeVRyZWVOb2RlRGF0YSkgPT4gYm9vbGVhbikgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u5piv5ZCm5pSv5oyB5aSa6YCJ6IqC54K5XG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKGBjbGFzcy50aHktbXVsdGlwbGUtc2VsZWN0aW9uLWxpc3RgKVxuICAgIEBJbnB1dCgpXG4gICAgQElucHV0Qm9vbGVhbigpXG4gICAgdGh5TXVsdGlwbGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOiuvue9riBUcmVlTm9kZSDmmK/lkKbmlK/mjIHmi5bmi73mjpLluo9cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LXRyZWUtZHJhZ2dhYmxlJylcbiAgICBASW5wdXQoKVxuICAgIEBJbnB1dEJvb2xlYW4oKVxuICAgIHNldCB0aHlEcmFnZ2FibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZHJhZ2dhYmxlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHRoeURyYWdnYWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RyYWdnYWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva4gVHJlZU5vZGUg5piv5ZCm5pSv5oyBIENoZWNrYm94IOmAieaLqVxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHRoeUNoZWNrYWJsZTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOeCueWHu+iKgueCueeahOihjOS4uu+8jGBkZWZhdWx0YCDkuLrpgInkuK3lvZPliY3oioLngrnvvIxgc2VsZWN0Q2hlY2tib3hgIOS4uumAieS4reiKgueCueeahCBDaGVja2JveO+8jCBgdGh5Q2hlY2thYmxlYCDkuLogdHJ1ZSDml7bnlJ/mlYjjgIJcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlDbGlja0JlaGF2aW9yOiBUaHlDbGlja0JlaGF2aW9yID0gJ2RlZmF1bHQnO1xuXG4gICAgLyoqXG4gICAgICog6K6+572uIGNoZWNrIOeKtuaAgeeahOiuoeeul+etlueVpVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCB0aHlDaGVja1N0YXRlUmVzb2x2ZShyZXNvbHZlOiAobm9kZTogVGh5VHJlZU5vZGUpID0+IFRoeVRyZWVOb2RlQ2hlY2tTdGF0ZSkge1xuICAgICAgICBpZiAocmVzb2x2ZSkge1xuICAgICAgICAgICAgdGhpcy50aHlUcmVlU2VydmljZS5zZXRDaGVja1N0YXRlUmVzb2x2ZShyZXNvbHZlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9riBUcmVlTm9kZSDmmK/lkKbmlK/mjIHlvILmraXliqDovb1cbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdGh5QXN5bmMgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgX3RoeVR5cGU6IFRoeVRyZWVUeXBlID0gJ2RlZmF1bHQnO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u5LiN5ZCM5bGV56S657G75Z6L55qEIFRyZWXvvIxgZGVmYXVsdGAg5Li65bCP566t5aS05bGV56S677yMIGBlc3BlY2lhbGAg5Li6IOWKoOWHj+WPt+Wbvuagh+WxleekulxuICAgICAqIEB0eXBlIFRoeVRyZWVUeXBlXG4gICAgICogQGRlZmF1bHQgZGVmYXVsdFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeVR5cGUodHlwZTogVGh5VHJlZVR5cGUpIHtcbiAgICAgICAgdGhpcy5fdGh5VHlwZSA9IHR5cGU7XG4gICAgICAgIGlmICh0eXBlID09PSAnZXNwZWNpYWwnKSB7XG4gICAgICAgICAgICB0aGlzLnRoeUljb25zID0geyBleHBhbmQ6ICdtaW51cy1zcXVhcmUnLCBjb2xsYXBzZTogJ3BsdXMtc3F1YXJlJyB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHRoeVR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aHlUeXBlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9ruS4jeWQjCBUcmVlIOWxleW8gOaKmOWPoOeahOWbvuagh++8jGBleHBhbmRgIOS4uuWxleW8gOeKtuaAgeeahOWbvuagh++8jGBjb2xsYXBzZWAg5Li65oqY5Y+g54q25oCB55qE5Zu+5qCHXG4gICAgICogQHR5cGUgeyBleHBhbmQ6IHN0cmluZywgY29sbGFwc2U6IHN0cmluZyB9XG4gICAgICovXG4gICAgQElucHV0KCkgdGh5SWNvbnM6IFRoeVRyZWVJY29ucyA9IHt9O1xuXG4gICAgcHJpdmF0ZSBfdGh5U2l6ZTogVGh5VHJlZVNpemUgPSAnZGVmYXVsdCc7XG4gICAgLyoqXG4gICAgICog5pSv5oyBIGBzbWAgfCBgZGVmYXVsdGAg5Lik56eN5aSn5bCP77yM6buY6K6k5YC85Li6IGBkZWZhdWx0YFxuICAgICAqIEB0eXBlIFRoeVRyZWVTaXplXG4gICAgICogQGRlZmF1bHQgZGVmYXVsdFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeVNpemUoc2l6ZTogVGh5VHJlZVNpemUpIHtcbiAgICAgICAgdGhpcy5fdGh5U2l6ZSA9IHNpemU7XG4gICAgICAgIGlmICh0aGlzLl90aHlTaXplKSB7XG4gICAgICAgICAgICB0aGlzLl90aHlJdGVtU2l6ZSA9IHRyZWVJdGVtU2l6ZU1hcFt0aGlzLl90aHlTaXplXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3RoeUl0ZW1TaXplID0gdHJlZUl0ZW1TaXplTWFwLmRlZmF1bHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgdGh5U2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RoeVNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5piv5ZCm5byA5ZCv6Jma5ouf5rua5YqoXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktdmlydHVhbC1zY3JvbGxpbmctdHJlZScpXG4gICAgQElucHV0KClcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICB0aHlWaXJ0dWFsU2Nyb2xsID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIF90aHlJdGVtU2l6ZSA9IDQ0O1xuXG4gICAgLyoqXG4gICAgICog5byA5ZCv6Jma5ouf5rua5Yqo5pe277yM5Y2V6KGM6IqC54K555qE6auY5bqm77yM5b2TYHRoeVNpemVg5Li6YGRlZmF1bHRg5pe277yM6K+l5Y+C5pWw5omN55Sf5pWIXG4gICAgICogQGRlZmF1bHQgNDRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBJbnB1dE51bWJlcigpXG4gICAgc2V0IHRoeUl0ZW1TaXplKGl0ZW1TaXplOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMudGh5U2l6ZSAhPT0gJ2RlZmF1bHQnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldHRpbmcgdGh5U2l6ZSBhbmQgdGh5SXRlbVNpemUgYXQgdGhlIHNhbWUgdGltZSBpcyBub3QgYWxsb3dlZCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3RoeUl0ZW1TaXplID0gaXRlbVNpemU7XG4gICAgfVxuXG4gICAgZ2V0IHRoeUl0ZW1TaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGh5SXRlbVNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u6IqC54K55ZCN56ew5piv5ZCm5pSv5oyB6LaF5Ye65oiq5Y+WXG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqL1xuICAgIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSB0aHlUaXRsZVRydW5jYXRlID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIOW3sumAieS4reeahCBub2RlIOiKgueCuembhuWQiFxuICAgICAqIEBkZWZhdWx0IFtdXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5U2VsZWN0ZWRLZXlzOiBzdHJpbmdbXTtcblxuICAgIC8qKlxuICAgICAqIOiuvue9rue8qei/m+i3neemu++8jOe8qei/m+i3neemuyA9IHRoeUluZGVudCAqIG5vZGUubGV2ZWxcbiAgICAgKiBAdHlwZSBudW1iZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXROdW1iZXIoKSB0aHlJbmRlbnQgPSAyNTtcblxuICAgIC8qKlxuICAgICAqIOaLluaLveS5i+WJjeeahOWbnuiwg++8jOWHveaVsOi/lOWbniBmYWxzZSDliJnpmLvmraLmi5bmi71cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlCZWZvcmVEcmFnU3RhcnQ6IChjb250ZXh0OiBUaHlUcmVlQmVmb3JlRHJhZ1N0YXJ0Q29udGV4dCkgPT4gYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOaLluaUvuWIsOWFg+e0oOaXtuWbnuiwg++8jOWHveaVsOi/lOWbniBmYWxzZSDliJnpmLvmraLmi5bmlL7liLDlvZPliY3lhYPntKBcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlCZWZvcmVEcmFnRHJvcDogKGNvbnRleHQ6IFRoeVRyZWVCZWZvcmVEcmFnRHJvcENvbnRleHQpID0+IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7lrZAgVHJlZU5vZGUg54K55Ye75LqL5Lu2XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeU9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxUaHlUcmVlRW1pdEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5VHJlZUVtaXRFdmVudD4oKTtcblxuICAgIC8qKlxuICAgICAqIOiuvue9riBjaGVjayDpgInmi6nkuovku7ZcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5T25DaGVja2JveENoYW5nZTogRXZlbnRFbWl0dGVyPFRoeVRyZWVFbWl0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUaHlUcmVlRW1pdEV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u54K55Ye75bGV5byA6Kem5Y+R5LqL5Lu2XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeU9uRXhwYW5kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8VGh5VHJlZUVtaXRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFRoeVRyZWVFbWl0RXZlbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva4gVHJlZU5vZGUg5ouW5ou95LqL5Lu2XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeU9uRHJhZ0Ryb3A6IEV2ZW50RW1pdHRlcjxUaHlUcmVlRHJhZ0Ryb3BFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFRoeVRyZWVEcmFnRHJvcEV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICog5Y+M5Ye7IFRyZWVOb2RlIOS6i+S7tlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlEYmxDbGljazogRXZlbnRFbWl0dGVyPFRoeVRyZWVFbWl0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUaHlUcmVlRW1pdEV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICog6K6+572uIFRyZWVOb2RlIOeahOa4suafk+aooeadv1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3RyZWVOb2RlVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHNldCB0ZW1wbGF0ZVJlZih0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgICAgICBpZiAodGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RlbXBsYXRlUmVmID0gdGVtcGxhdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgdGVtcGxhdGVSZWYoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZVJlZjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7lrZDnmoTnqbrmlbDmja7muLLmn5PmqKHmnb9cbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdlbXB0eUNoaWxkcmVuVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBlbXB0eUNoaWxkcmVuVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgc2V0IGVtcHR5Q2hpbGRyZW5UZW1wbGF0ZVJlZih0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgICAgICBpZiAodGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtcHR5Q2hpbGRyZW5UZW1wbGF0ZVJlZiA9IHRlbXBsYXRlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGVtcHR5Q2hpbGRyZW5UZW1wbGF0ZVJlZigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VtcHR5Q2hpbGRyZW5UZW1wbGF0ZVJlZjtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS10cmVlJylcbiAgICB0aHlUcmVlQ2xhc3MgPSB0cnVlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktdHJlZS1kcmFnZ2luZycpXG4gICAgZHJhZ2dpbmc6IGJvb2xlYW47XG5cbiAgICBAVmlld0NoaWxkcmVuKENka0RyYWcpIGNka0RyYWdzOiBRdWVyeUxpc3Q8Q2RrRHJhZzxUaHlUcmVlTm9kZT4+O1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHRoeVRyZWVTZXJ2aWNlOiBUaHlUcmVlU2VydmljZSwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbml0VGh5Tm9kZXMoKTtcbiAgICAgICAgdGhpcy5fc2V0VHJlZVR5cGUoKTtcbiAgICAgICAgdGhpcy5fc2V0VHJlZVNpemUoKTtcbiAgICAgICAgdGhpcy5faW5zdGFuY2VTZWxlY3Rpb25Nb2RlbCgpO1xuICAgICAgICB0aGlzLl9zZWxlY3RUcmVlTm9kZXModGhpcy50aHlTZWxlY3RlZEtleXMpO1xuXG4gICAgICAgIHRoaXMudGh5VHJlZVNlcnZpY2UuZmxhdHRlbk5vZGVzJC5zdWJzY3JpYmUoZmxhdHRlblRyZWVOb2RlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLmZsYXR0ZW5UcmVlTm9kZXMgPSBmbGF0dGVuVHJlZU5vZGVzO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jZGtEcmFncy5jaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShzdGFydFdpdGgodGhpcy5jZGtEcmFncyksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRyYWdzOiBRdWVyeUxpc3Q8Q2RrRHJhZzxUaHlUcmVlTm9kZT4+KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlRHJhZ3NNYXAuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICBkcmFncy5mb3JFYWNoKGRyYWcgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZHJhZy5kYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjZGtEcmFnIOWPmOWMluaXtu+8jOe8k+WtmCBFbGVtZW50IOS4jiBEcmFnUmVmIOeahOWFs+ezu++8jOaWueS+vyBEcmFnIE1vdmUg5pe25p+l5om+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGVEcmFnc01hcC5zZXQoZHJhZy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIGRyYWcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm5vZGVEcmFnTW92ZWRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIC8vIGF1ZGl0VGltZSgzMCksXG4gICAgICAgICAgICAgICAgLy8gIGF1ZGl0VGltZSDlj6/og73kvJrlr7zoh7Tmi5bliqjnu5PmnZ/lkI7ku43nhLbmiafooYwgbW92ZWQg77yM5omA5Lul6YCa6L+H5Yik5patIGRyYWdnaW5nIOeKtuaAgeadpei/h+a7pOaXoOaViCBtb3ZlZFxuICAgICAgICAgICAgICAgIGZpbHRlcigoZXZlbnQ6IENka0RyYWdNb3ZlKSA9PiBldmVudC5zb3VyY2UuX2RyYWdSZWYuaXNEcmFnZ2luZygpKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25EcmFnTW92ZWQoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy50aHlOb2RlcyAmJiAhY2hhbmdlcy50aHlOb2Rlcy5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2luaXRUaHlOb2RlcygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzLnRoeVR5cGUgJiYgIWNoYW5nZXMudGh5VHlwZS5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFRyZWVUeXBlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXMudGh5TXVsdGlwbGUgJiYgIWNoYW5nZXMudGh5TXVsdGlwbGUuaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnN0YW5jZVNlbGVjdGlvbk1vZGVsKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy50aHlTZWxlY3RlZEtleXMgJiYgIWNoYW5nZXMudGh5U2VsZWN0ZWRLZXlzLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRLZXlzID0gY2hhbmdlcy50aHlTZWxlY3RlZEtleXMuY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0VHJlZU5vZGVzKGNoYW5nZXMudGh5U2VsZWN0ZWRLZXlzLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW5kZXJWaWV3ID0gKCkgPT4ge307XG5cbiAgICBldmVudFRyaWdnZXJDaGFuZ2VkKGV2ZW50OiBUaHlUcmVlRW1pdEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQuZXZlbnROYW1lKSB7XG4gICAgICAgICAgICBjYXNlICdleHBhbmQnOlxuICAgICAgICAgICAgICAgIHRoaXMudGh5T25FeHBhbmRDaGFuZ2UuZW1pdChldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2NoZWNrYm94Q2hhbmdlJzpcbiAgICAgICAgICAgICAgICB0aGlzLnRoeU9uQ2hlY2tib3hDaGFuZ2UuZW1pdChldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9pbml0VGh5Tm9kZXMoKSB7XG4gICAgICAgIHRoaXMuX2V4cGFuZGVkS2V5cyA9IHRoaXMuZ2V0RXhwYW5kZWROb2RlcygpLm1hcChub2RlID0+IG5vZGUua2V5KTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRLZXlzID0gdGhpcy5nZXRTZWxlY3RlZE5vZGVzKCkubWFwKG5vZGUgPT4gbm9kZS5rZXkpO1xuICAgICAgICB0aGlzLnRoeVRyZWVTZXJ2aWNlLmluaXRpYWxpemVUcmVlTm9kZXModGhpcy50aHlOb2Rlcyk7XG4gICAgICAgIHRoaXMuZmxhdHRlblRyZWVOb2RlcyA9IHRoaXMudGh5VHJlZVNlcnZpY2UuZmxhdHRlblRyZWVOb2RlcztcbiAgICAgICAgdGhpcy5fc2VsZWN0VHJlZU5vZGVzKHRoaXMuX3NlbGVjdGVkS2V5cyk7XG4gICAgICAgIHRoaXMudGh5VHJlZVNlcnZpY2UuZXhwYW5kVHJlZU5vZGVzKHRoaXMuX2V4cGFuZGVkS2V5cyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0VHJlZVR5cGUoKSB7XG4gICAgICAgIGlmICh0aGlzLnRoeVR5cGUgJiYgdHJlZVR5cGVDbGFzc01hcFt0aGlzLnRoeVR5cGVdKSB7XG4gICAgICAgICAgICB0cmVlVHlwZUNsYXNzTWFwW3RoaXMudGh5VHlwZV0uZm9yRWFjaChjbGFzc05hbWUgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdFJlbmRlcmVyLmFkZENsYXNzKGNsYXNzTmFtZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3NldFRyZWVTaXplKCkge1xuICAgICAgICBpZiAodGhpcy50aHlTaXplKSB7XG4gICAgICAgICAgICB0aGlzLmhvc3RSZW5kZXJlci5hZGRDbGFzcyhgdGh5LXRyZWUtJHt0aGlzLnRoeVNpemV9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9pbnN0YW5jZVNlbGVjdGlvbk1vZGVsKCkge1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbCA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxhbnk+KHRoaXMudGh5TXVsdGlwbGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NlbGVjdFRyZWVOb2RlcyhrZXlzOiAoc3RyaW5nIHwgbnVtYmVyKVtdKSB7XG4gICAgICAgIChrZXlzIHx8IFtdKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy50aHlUcmVlU2VydmljZS5nZXRUcmVlTm9kZShrZXkpO1xuICAgICAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFRyZWVOb2RlKHRoaXMudGh5VHJlZVNlcnZpY2UuZ2V0VHJlZU5vZGUoa2V5KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlzU2VsZWN0ZWQobm9kZTogVGh5VHJlZU5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQobm9kZSk7XG4gICAgfVxuXG4gICAgdG9nZ2xlVHJlZU5vZGUobm9kZTogVGh5VHJlZU5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUgJiYgIW5vZGUuaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwudG9nZ2xlKG5vZGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xuICAgICAgICByZXR1cm4gaXRlbS5rZXkgfHwgaW5kZXg7XG4gICAgfVxuXG4gICAgaXNTaG93RXhwYW5kKG5vZGU6IFRoeVRyZWVOb2RlKSB7XG4gICAgICAgIGlmIChoZWxwZXJzLmlzRnVuY3Rpb24odGhpcy50aHlTaG93RXhwYW5kKSkge1xuICAgICAgICAgICAgcmV0dXJuICh0aGlzLnRoeVNob3dFeHBhbmQgYXMgRnVuY3Rpb24pKG5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGh5U2hvd0V4cGFuZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IFRoeVRyZWVOb2RlRGF0YVtdKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy50aHlOb2RlcyA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5faW5pdFRoeU5vZGVzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIG9uRHJhZ1N0YXJ0ZWQoZXZlbnQ6IENka0RyYWdTdGFydDxUaHlUcmVlTm9kZT4pIHtcbiAgICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RhcnREcmFnTm9kZUNsb25lID0gT2JqZWN0LmFzc2lnbih7fSwgZXZlbnQuc291cmNlLmRhdGEpO1xuICAgICAgICBpZiAoZXZlbnQuc291cmNlLmRhdGEuaXNFeHBhbmRlZCkge1xuICAgICAgICAgICAgZXZlbnQuc291cmNlLmRhdGEuc2V0RXhwYW5kZWQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZW1pdERyYWdNb3ZlZChldmVudDogQ2RrRHJhZ01vdmUpIHtcbiAgICAgICAgdGhpcy5ub2RlRHJhZ01vdmVkLm5leHQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uRHJhZ01vdmVkKGV2ZW50OiBDZGtEcmFnTW92ZTxUaHlUcmVlTm9kZT4pIHtcbiAgICAgICAgLy8g6YCa6L+H6byg5qCH5L2N572u5p+l5om+5a+55bqU55qE55uu5qCHIEl0ZW0g5YWD57SgXG4gICAgICAgIGxldCBjdXJyZW50UG9pbnRFbGVtZW50ID0gdGhpcy5kb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGV2ZW50LnBvaW50ZXJQb3NpdGlvbi54LCBldmVudC5wb2ludGVyUG9zaXRpb24ueSkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmICghY3VycmVudFBvaW50RWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5jbGVhbnVwRHJhZ0FydGlmYWN0cygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCB0YXJnZXRFbGVtZW50ID0gY3VycmVudFBvaW50RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ3RoeS10cmVlLW5vZGUnKVxuICAgICAgICAgICAgPyBjdXJyZW50UG9pbnRFbGVtZW50XG4gICAgICAgICAgICA6IChjdXJyZW50UG9pbnRFbGVtZW50LmNsb3Nlc3QoJy50aHktdHJlZS1ub2RlJykgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICBpZiAoIXRhcmdldEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYW51cERyYWdBcnRpZmFjdHMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyDnvJPlrZjmlL7nva7nm67moIdJZCDlubborqHnrpfpvKDmoIfnm7jlr7nlupTnmoTkvY3nva5cbiAgICAgICAgdGhpcy5ub2RlRHJvcFRhcmdldCA9IHtcbiAgICAgICAgICAgIGtleTogdGhpcy5ub2RlRHJhZ3NNYXAuZ2V0KHRhcmdldEVsZW1lbnQpPy5kYXRhLmtleSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiB0aGlzLmdldFRhcmdldFBvc2l0aW9uKHRhcmdldEVsZW1lbnQsIGV2ZW50KVxuICAgICAgICB9O1xuICAgICAgICAvLyDmiafooYzlpJbpg6jkvKDlhaXnmoQgZHJvcEVudGVyUHJlZGljYXRlIOWIpOaWreaYr+WQpuWFgeiuuOaLluWFpeebruagh+mhuVxuICAgICAgICBpZiAodGhpcy5kcm9wRW50ZXJQcmVkaWNhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldERyYWdSZWYgPSB0aGlzLm5vZGVEcmFnc01hcC5nZXQodGFyZ2V0RWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wRW50ZXJQcmVkaWNhdGUoe1xuICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IGV2ZW50LnNvdXJjZS5kYXRhLFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IHRhcmdldERyYWdSZWYuZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgZHJvcFBvc2l0aW9uOiB0aGlzLm5vZGVEcm9wVGFyZ2V0LnBvc2l0aW9uXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0Ryb3BQb3NpdGlvblBsYWNlaG9sZGVyKHRhcmdldEVsZW1lbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGVEcm9wVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFudXBEcmFnQXJ0aWZhY3RzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNob3dEcm9wUG9zaXRpb25QbGFjZWhvbGRlcih0YXJnZXRFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRHJhZ0VuZGVkKGV2ZW50OiBDZGtEcmFnRW5kPFRoeVRyZWVOb2RlPikge1xuICAgICAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgICAgIC8vIOaLluaLvee7k+adn+WQjuaBouWkjeWOn+Wni+eahOWxleW8gOeKtuaAgVxuICAgICAgICBldmVudC5zb3VyY2UuZGF0YS5zZXRFeHBhbmRlZCh0aGlzLnN0YXJ0RHJhZ05vZGVDbG9uZS5pc0V4cGFuZGVkKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0RHJhZ05vZGVDbG9uZSA9IG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uTGlzdERyb3BwZWQoZXZlbnQ6IENka0RyYWdEcm9wPFRoeVRyZWVOb2RlW10sIFRoeVRyZWVOb2RlW10sIFRoeVRyZWVOb2RlPikge1xuICAgICAgICBpZiAoIXRoaXMubm9kZURyb3BUYXJnZXQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXNTaG93RXhwYW5kKHRoaXMuc3RhcnREcmFnTm9kZUNsb25lKSAmJiB0aGlzLm5vZGVEcm9wVGFyZ2V0LnBvc2l0aW9uID09PSBUaHlUcmVlRHJvcFBvc2l0aW9uLmluKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFudXBEcmFnQXJ0aWZhY3RzKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzb3VyY2VOb2RlID0gdGhpcy5zdGFydERyYWdOb2RlQ2xvbmU7XG4gICAgICAgIGNvbnN0IHNvdXJjZU5vZGVQYXJlbnQgPSBzb3VyY2VOb2RlLnBhcmVudE5vZGU7XG4gICAgICAgIGNvbnN0IHRhcmdldERyYWdSZWYgPSB0aGlzLmNka0RyYWdzLmZpbmQoaXRlbSA9PiBpdGVtLmRhdGE/LmtleSA9PT0gdGhpcy5ub2RlRHJvcFRhcmdldC5rZXkpO1xuICAgICAgICBjb25zdCB0YXJnZXROb2RlID0gdGFyZ2V0RHJhZ1JlZj8uZGF0YTtcbiAgICAgICAgY29uc3QgdGFyZ2V0Tm9kZVBhcmVudCA9IHRhcmdldE5vZGUucGFyZW50Tm9kZTtcblxuICAgICAgICBjb25zdCBiZWZvcmVEcmFnRHJvcENvbnRleHQ6IFRoeVRyZWVCZWZvcmVEcmFnRHJvcENvbnRleHQgPSB7XG4gICAgICAgICAgICBwcmV2aW91c0l0ZW06IHNvdXJjZU5vZGUsXG4gICAgICAgICAgICBwcmV2aW91c0NvbnRhaW5lckl0ZW1zOiBzb3VyY2VOb2RlUGFyZW50Py5jaGlsZHJlbixcbiAgICAgICAgICAgIGl0ZW06IHRhcmdldE5vZGUsXG4gICAgICAgICAgICBjb250YWluZXJJdGVtczogdGFyZ2V0Tm9kZVBhcmVudD8uY2hpbGRyZW4sXG4gICAgICAgICAgICBwb3NpdGlvbjogdGhpcy5ub2RlRHJvcFRhcmdldC5wb3NpdGlvblxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLnRoeUJlZm9yZURyYWdEcm9wICYmICF0aGlzLnRoeUJlZm9yZURyYWdEcm9wKGJlZm9yZURyYWdEcm9wQ29udGV4dCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYW51cERyYWdBcnRpZmFjdHMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGh5VHJlZVNlcnZpY2UuZGVsZXRlVHJlZU5vZGUoc291cmNlTm9kZSk7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLm5vZGVEcm9wVGFyZ2V0LnBvc2l0aW9uKSB7XG4gICAgICAgICAgICBjYXNlICdiZWZvcmUnOlxuICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZUluc2VydEluZGV4ID0gKHRhcmdldE5vZGVQYXJlbnQ/LmNoaWxkcmVuIHx8IHRoaXMudHJlZU5vZGVzKS5pbmRleE9mKHRhcmdldE5vZGUpO1xuICAgICAgICAgICAgICAgIHRoaXMudGh5VHJlZVNlcnZpY2UuYWRkVHJlZU5vZGUoc291cmNlTm9kZSwgdGFyZ2V0Tm9kZVBhcmVudCwgYmVmb3JlSW5zZXJ0SW5kZXgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYWZ0ZXInOlxuICAgICAgICAgICAgICAgIGNvbnN0IGFmdGVySW5zZXJ0SW5kZXggPSAodGFyZ2V0Tm9kZVBhcmVudD8uY2hpbGRyZW4gfHwgdGhpcy50cmVlTm9kZXMpLmluZGV4T2YodGFyZ2V0Tm9kZSkgKyAxO1xuICAgICAgICAgICAgICAgIHRoaXMudGh5VHJlZVNlcnZpY2UuYWRkVHJlZU5vZGUoc291cmNlTm9kZSwgdGFyZ2V0Tm9kZVBhcmVudCwgYWZ0ZXJJbnNlcnRJbmRleCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdpbic6XG4gICAgICAgICAgICAgICAgdGhpcy50aHlUcmVlU2VydmljZS5hZGRUcmVlTm9kZShzb3VyY2VOb2RlLCB0YXJnZXROb2RlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGh5VHJlZVNlcnZpY2Uuc3luY0ZsYXR0ZW5UcmVlTm9kZXMoKTtcblxuICAgICAgICBsZXQgYWZ0ZXI6IFRoeVRyZWVOb2RlID0gbnVsbDtcbiAgICAgICAgbGV0IHRhcmdlOiBUaHlUcmVlTm9kZSA9IG51bGw7XG4gICAgICAgIGlmIChiZWZvcmVEcmFnRHJvcENvbnRleHQucG9zaXRpb24gPT09IFRoeVRyZWVEcm9wUG9zaXRpb24uYmVmb3JlKSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRDb250YWluZXJOb2RlcyA9IHRhcmdldE5vZGVQYXJlbnQ/LmNoaWxkcmVuIHx8IHRoaXMudHJlZU5vZGVzO1xuICAgICAgICAgICAgYWZ0ZXIgPSB0YXJnZXRDb250YWluZXJOb2Rlc1t0YXJnZXRDb250YWluZXJOb2Rlcy5pbmRleE9mKHRhcmdldE5vZGUpIC0gMl07XG4gICAgICAgICAgICB0YXJnZSA9IHRhcmdldE5vZGVQYXJlbnQ7XG4gICAgICAgIH0gZWxzZSBpZiAoYmVmb3JlRHJhZ0Ryb3BDb250ZXh0LnBvc2l0aW9uID09PSBUaHlUcmVlRHJvcFBvc2l0aW9uLmFmdGVyKSB7XG4gICAgICAgICAgICBhZnRlciA9IHRhcmdldE5vZGU7XG4gICAgICAgICAgICB0YXJnZSA9IHRhcmdldE5vZGVQYXJlbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhZnRlciA9IHRhcmdldE5vZGUuY2hpbGRyZW4/Lmxlbmd0aCA+IDAgPyB0YXJnZXROb2RlLmNoaWxkcmVuW3RhcmdldE5vZGUuY2hpbGRyZW4ubGVuZ3RoIC0gMl0gOiBudWxsO1xuICAgICAgICAgICAgdGFyZ2UgPSB0YXJnZXROb2RlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50aHlPbkRyYWdEcm9wLmVtaXQoe1xuICAgICAgICAgICAgZHJhZ05vZGU6IHRoaXMudGh5VHJlZVNlcnZpY2UuZ2V0VHJlZU5vZGUoc291cmNlTm9kZS5rZXkpLFxuICAgICAgICAgICAgdGFyZ2V0Tm9kZTogdGFyZ2UsXG4gICAgICAgICAgICBhZnRlck5vZGU6IGFmdGVyXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY2xlYW51cERyYWdBcnRpZmFjdHMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRhcmdldFBvc2l0aW9uKHRhcmdldDogSFRNTEVsZW1lbnQsIGV2ZW50OiBDZGtEcmFnTW92ZSkge1xuICAgICAgICBjb25zdCB0YXJnZXRSZWN0ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBiZWZvcmVPckFmdGVyR2FwID0gdGFyZ2V0UmVjdC5oZWlnaHQgKiAwLjM7XG4gICAgICAgIC8vIOWwhiBOb2RlIOmrmOW6puWIhuS4uuS4iuS4reS4i+S4ieaute+8jOWFtuS4reS4iuS4i+eahCBHYXAg5Li6IGhlaWdodCDnmoQgMzAl77yM6YCa6L+H5Yik5pat6byg5qCH5L2N572u5Zyo5ZOq5LiA5q61IGdhcCDmnaXorqHnrpflr7nlupTnmoTkvY3nva5cbiAgICAgICAgaWYgKGV2ZW50LnBvaW50ZXJQb3NpdGlvbi55IC0gdGFyZ2V0UmVjdC50b3AgPCBiZWZvcmVPckFmdGVyR2FwKSB7XG4gICAgICAgICAgICByZXR1cm4gVGh5VHJlZURyb3BQb3NpdGlvbi5iZWZvcmU7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQucG9pbnRlclBvc2l0aW9uLnkgPj0gdGFyZ2V0UmVjdC5ib3R0b20gLSBiZWZvcmVPckFmdGVyR2FwKSB7XG4gICAgICAgICAgICByZXR1cm4gVGh5VHJlZURyb3BQb3NpdGlvbi5hZnRlcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBUaHlUcmVlRHJvcFBvc2l0aW9uLmluO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG93RHJvcFBvc2l0aW9uUGxhY2Vob2xkZXIodGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5jbGVhbnVwRHJvcFBvc2l0aW9uUGxhY2Vob2xkZXIoKTtcbiAgICAgICAgaWYgKHRoaXMubm9kZURyb3BUYXJnZXQgJiYgdGFyZ2V0RWxlbWVudCkge1xuICAgICAgICAgICAgdGFyZ2V0RWxlbWVudC5jbGFzc0xpc3QuYWRkKGBkcm9wLXBvc2l0aW9uLSR7dGhpcy5ub2RlRHJvcFRhcmdldC5wb3NpdGlvbn1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYW51cERyb3BQb3NpdGlvblBsYWNlaG9sZGVyKCkge1xuICAgICAgICB0aGlzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kcm9wLXBvc2l0aW9uLWJlZm9yZScpLmZvckVhY2goZWxlbWVudCA9PiBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2Ryb3AtcG9zaXRpb24tYmVmb3JlJykpO1xuICAgICAgICB0aGlzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kcm9wLXBvc2l0aW9uLWFmdGVyJykuZm9yRWFjaChlbGVtZW50ID0+IGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnZHJvcC1wb3NpdGlvbi1hZnRlcicpKTtcbiAgICAgICAgdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZHJvcC1wb3NpdGlvbi1pbicpLmZvckVhY2goZWxlbWVudCA9PiBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2Ryb3AtcG9zaXRpb24taW4nKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhbnVwRHJhZ0FydGlmYWN0cygpIHtcbiAgICAgICAgdGhpcy5ub2RlRHJvcFRhcmdldCA9IG51bGw7XG4gICAgICAgIHRoaXMuY2xlYW51cERyb3BQb3NpdGlvblBsYWNlaG9sZGVyKCk7XG4gICAgfVxuXG4gICAgLy8gcmVnaW9uIFB1YmxpYyBGdW5jdGlvbnNcblxuICAgIHNlbGVjdFRyZWVOb2RlKG5vZGU6IFRoeVRyZWVOb2RlKSB7XG4gICAgICAgIGlmIChub2RlICYmICFub2RlLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdChub2RlKTtcbiAgICAgICAgICAgIHRoaXMudGh5VHJlZVNlcnZpY2Uuc3luY0ZsYXR0ZW5UcmVlTm9kZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFJvb3ROb2RlcygpOiBUaHlUcmVlTm9kZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJlZU5vZGVzO1xuICAgIH1cblxuICAgIGdldFRyZWVOb2RlKGtleTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoeVRyZWVTZXJ2aWNlLmdldFRyZWVOb2RlKGtleSk7XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0ZWROb2RlKCk6IFRoeVRyZWVOb2RlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbk1vZGVsID8gdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWRbMF0gOiBudWxsO1xuICAgIH1cblxuICAgIGdldFNlbGVjdGVkTm9kZXMoKTogVGh5VHJlZU5vZGVbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25Nb2RlbCA/IHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkIDogW107XG4gICAgfVxuXG4gICAgZ2V0RXhwYW5kZWROb2RlcygpOiBUaHlUcmVlTm9kZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5VHJlZVNlcnZpY2UuZ2V0RXhwYW5kZWROb2RlcygpO1xuICAgIH1cblxuICAgIGdldENoZWNrZWROb2RlcygpOiBUaHlUcmVlTm9kZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5VHJlZVNlcnZpY2UuZ2V0Q2hlY2tlZE5vZGVzKCk7XG4gICAgfVxuXG4gICAgYWRkVHJlZU5vZGUobm9kZTogVGh5VHJlZU5vZGVEYXRhLCBwYXJlbnQ/OiBUaHlUcmVlTm9kZSwgaW5kZXggPSAtMSkge1xuICAgICAgICB0aGlzLnRoeVRyZWVTZXJ2aWNlLmFkZFRyZWVOb2RlKG5ldyBUaHlUcmVlTm9kZShub2RlLCBudWxsLCB0aGlzLnRoeVRyZWVTZXJ2aWNlKSwgcGFyZW50LCBpbmRleCk7XG4gICAgICAgIHRoaXMudGh5VHJlZVNlcnZpY2Uuc3luY0ZsYXR0ZW5UcmVlTm9kZXMoKTtcbiAgICB9XG5cbiAgICBkZWxldGVUcmVlTm9kZShub2RlOiBUaHlUcmVlTm9kZSkge1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKG5vZGUpKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC50b2dnbGUobm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50aHlUcmVlU2VydmljZS5kZWxldGVUcmVlTm9kZShub2RlKTtcbiAgICAgICAgdGhpcy50aHlUcmVlU2VydmljZS5zeW5jRmxhdHRlblRyZWVOb2RlcygpO1xuICAgIH1cblxuICAgIGV4cGFuZEFsbE5vZGVzKCkge1xuICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZ2V0Um9vdE5vZGVzKCk7XG4gICAgICAgIG5vZGVzLmZvckVhY2gobiA9PiBuLnNldEV4cGFuZGVkKHRydWUsIHRydWUpKTtcbiAgICB9XG5cbiAgICBjb2xsYXBzZWRBbGxOb2RlcygpIHtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmdldFJvb3ROb2RlcygpO1xuICAgICAgICBub2Rlcy5mb3JFYWNoKG4gPT4gbi5zZXRFeHBhbmRlZChmYWxzZSwgdHJ1ZSkpO1xuICAgIH1cblxuICAgIC8vIGVuZHJlZ2lvblxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFxuICAjdmlld3BvcnRcbiAgKm5nSWY9XCJ0aHlWaXJ0dWFsU2Nyb2xsXCJcbiAgW2l0ZW1TaXplXT1cInRoeUl0ZW1TaXplXCJcbiAgW3N0eWxlLmhlaWdodF09XCInMTAwJSdcIlxuICBjZGtEcm9wTGlzdFxuICBbY2RrRHJvcExpc3RBdXRvU2Nyb2xsU3RlcF09XCI2XCJcbiAgW2Nka0Ryb3BMaXN0RGF0YV09XCJmbGF0dGVuVHJlZU5vZGVzXCJcbiAgW2Nka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkXT1cInRydWVcIlxuICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uTGlzdERyb3BwZWQoJGV2ZW50KVwiXG4gID5cbiAgPGRpdiBjbGFzcz1cInZpcnR1YWwtdHJlZXMtY29udGFpbmVyXCI+XG4gICAgPHRoeS10cmVlLW5vZGVcbiAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IG5vZGUgb2YgZmxhdHRlblRyZWVOb2RlczsgdHJhY2tCeTogdHJhY2tCeUZuOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgIGNka0RyYWdcbiAgICAgIFtjZGtEcmFnRGF0YV09XCJub2RlXCJcbiAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwiIXRoeURyYWdnYWJsZSB8fCAhKG5vZGUgfCB0cmVlTm9kZURyYWdnYWJsZSA6IHRoeUJlZm9yZURyYWdTdGFydClcIlxuICAgICAgKGNka0RyYWdTdGFydGVkKT1cIm9uRHJhZ1N0YXJ0ZWQoJGV2ZW50KVwiXG4gICAgICAoY2RrRHJhZ0VuZGVkKT1cIm9uRHJhZ0VuZGVkKCRldmVudClcIlxuICAgICAgKGNka0RyYWdNb3ZlZCk9XCJlbWl0RHJhZ01vdmVkKCRldmVudClcIlxuICAgICAgW25vZGVdPVwibm9kZVwiXG4gICAgICBbdGVtcGxhdGVSZWZdPVwidGVtcGxhdGVSZWZcIlxuICAgICAgW2VtcHR5Q2hpbGRyZW5UZW1wbGF0ZVJlZl09XCJlbXB0eUNoaWxkcmVuVGVtcGxhdGVcIlxuICAgICAgW3RoeUFzeW5jXT1cInRoeUFzeW5jXCJcbiAgICAgIFt0aHlEcmFnZ2FibGVdPVwidGh5RHJhZ2dhYmxlXCJcbiAgICAgIFt0aHlDaGVja2FibGVdPVwidGh5Q2hlY2thYmxlXCJcbiAgICAgIFt0aHlNdWx0aXBsZV09XCJ0aHlNdWx0aXBsZVwiXG4gICAgICBbdGh5Q2xpY2tCZWhhdmlvcl09XCJ0aHlDbGlja0JlaGF2aW9yXCJcbiAgICAgIFt0aHlUaXRsZVRydW5jYXRlXT1cInRoeVRpdGxlVHJ1bmNhdGVcIlxuICAgICAgW3RoeUl0ZW1TaXplXT1cInRoeUl0ZW1TaXplXCJcbiAgICAgIFt0aHlJbmRlbnRdPVwidGh5SW5kZW50XCJcbiAgICAgICh0aHlPbkNsaWNrKT1cInRoeU9uQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICh0aHlEYmxDbGljayk9XCJ0aHlEYmxDbGljay5lbWl0KCRldmVudClcIlxuICAgICAgKHRoeU9uRXhwYW5kQ2hhbmdlKT1cImV2ZW50VHJpZ2dlckNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAodGh5T25DaGVja2JveENoYW5nZSk9XCJldmVudFRyaWdnZXJDaGFuZ2VkKCRldmVudClcIj5cbiAgICA8L3RoeS10cmVlLW5vZGU+XG4gIDwvZGl2PlxuPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG5cbjxkaXZcbiAgKm5nSWY9XCIhdGh5VmlydHVhbFNjcm9sbFwiXG4gIGNka0Ryb3BMaXN0XG4gIFtjZGtEcm9wTGlzdEF1dG9TY3JvbGxTdGVwXT1cIjZcIlxuICBbY2RrRHJvcExpc3REYXRhXT1cImZsYXR0ZW5UcmVlTm9kZXNcIlxuICBbY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWRdPVwidHJ1ZVwiXG4gIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25MaXN0RHJvcHBlZCgkZXZlbnQpXCI+XG4gIDx0aHktdHJlZS1ub2RlXG4gICAgKm5nRm9yPVwibGV0IG5vZGUgb2YgZmxhdHRlblRyZWVOb2RlczsgdHJhY2tCeTogdHJhY2tCeUZuOyBsZXQgaSA9IGluZGV4XCJcbiAgICBjZGtEcmFnXG4gICAgW2Nka0RyYWdEYXRhXT1cIm5vZGVcIlxuICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwiIXRoeURyYWdnYWJsZSB8fCAhKG5vZGUgfCB0cmVlTm9kZURyYWdnYWJsZSA6IHRoeUJlZm9yZURyYWdTdGFydClcIlxuICAgIChjZGtEcmFnU3RhcnRlZCk9XCJvbkRyYWdTdGFydGVkKCRldmVudClcIlxuICAgIChjZGtEcmFnRW5kZWQpPVwib25EcmFnRW5kZWQoJGV2ZW50KVwiXG4gICAgKGNka0RyYWdNb3ZlZCk9XCJlbWl0RHJhZ01vdmVkKCRldmVudClcIlxuICAgIFtub2RlXT1cIm5vZGVcIlxuICAgIFt0ZW1wbGF0ZVJlZl09XCJ0ZW1wbGF0ZVJlZlwiXG4gICAgW2VtcHR5Q2hpbGRyZW5UZW1wbGF0ZVJlZl09XCJlbXB0eUNoaWxkcmVuVGVtcGxhdGVcIlxuICAgIFt0aHlBc3luY109XCJ0aHlBc3luY1wiXG4gICAgW3RoeURyYWdnYWJsZV09XCJ0aHlEcmFnZ2FibGVcIlxuICAgIFt0aHlDaGVja2FibGVdPVwidGh5Q2hlY2thYmxlXCJcbiAgICBbdGh5TXVsdGlwbGVdPVwidGh5TXVsdGlwbGVcIlxuICAgIFt0aHlUaXRsZVRydW5jYXRlXT1cInRoeVRpdGxlVHJ1bmNhdGVcIlxuICAgIFt0aHlJdGVtU2l6ZV09XCJ0aHlJdGVtU2l6ZVwiXG4gICAgW3RoeUNsaWNrQmVoYXZpb3JdPVwidGh5Q2xpY2tCZWhhdmlvclwiXG4gICAgW3RoeUluZGVudF09XCJ0aHlJbmRlbnRcIlxuICAgICh0aHlPbkNsaWNrKT1cInRoeU9uQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAodGh5RGJsQ2xpY2spPVwidGh5RGJsQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAodGh5T25FeHBhbmRDaGFuZ2UpPVwiZXZlbnRUcmlnZ2VyQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAodGh5T25DaGVja2JveENoYW5nZSk9XCJ0aHlPbkNoZWNrYm94Q2hhbmdlLmVtaXQoJGV2ZW50KVwiPlxuICA8L3RoeS10cmVlLW5vZGU+XG48L2Rpdj5cbiJdfQ==
661
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHJlZS90cmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy90cmVlL3RyZWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlHLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFLSCxtQkFBbUIsRUFFbkIsWUFBWSxFQUdmLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFP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UUFBUTtzQkFEUCxXQUFXO3VCQUFDLHlCQUF5QjtnQkFHZixRQUFRO3NCQUE5QixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dEJvb2xlYW4sIElucHV0TnVtYmVyIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IGhlbHBlcnMgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuaW1wb3J0IHsgdXNlSG9zdFJlbmRlcmVyIH0gZnJvbSAnQHRldGh5cy9jZGsvZG9tJztcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgQ2RrRml4ZWRTaXplVmlydHVhbFNjcm9sbCwgQ2RrVmlydHVhbEZvck9mIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUSFlfVFJFRV9BQlNUUkFDVF9UT0tFTiB9IGZyb20gJy4vdHJlZS1hYnN0cmFjdCc7XG5pbXBvcnQgeyBUaHlUcmVlTm9kZSB9IGZyb20gJy4vdHJlZS1ub2RlLmNsYXNzJztcbmltcG9ydCB7XG4gICAgVGh5VHJlZUJlZm9yZURyYWdEcm9wQ29udGV4dCxcbiAgICBUaHlUcmVlQmVmb3JlRHJhZ1N0YXJ0Q29udGV4dCxcbiAgICBUaHlDbGlja0JlaGF2aW9yLFxuICAgIFRoeVRyZWVEcmFnRHJvcEV2ZW50LFxuICAgIFRoeVRyZWVEcm9wUG9zaXRpb24sXG4gICAgVGh5VHJlZUVtaXRFdmVudCxcbiAgICBUaHlUcmVlSWNvbnMsXG4gICAgVGh5VHJlZU5vZGVDaGVja1N0YXRlLFxuICAgIFRoeVRyZWVOb2RlRGF0YVxufSBmcm9tICcuL3RyZWUuY2xhc3MnO1xuaW1wb3J0IHsgVGh5VHJlZVNlcnZpY2UgfSBmcm9tICcuL3RyZWUuc2VydmljZSc7XG5pbXBvcnQgeyBUaHlUcmVlTm9kZUNvbXBvbmVudCB9IGZyb20gJy4vdHJlZS1ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ0lmLCBOZ0ZvciwgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2RrRHJhZywgQ2RrRHJhZ0Ryb3AsIENka0RyYWdFbmQsIENka0RyYWdNb3ZlLCBDZGtEcmFnU3RhcnQsIENka0Ryb3BMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBhdWRpdFRpbWUsIGZpbHRlciwgc3RhcnRXaXRoLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUaHlUcmVlTm9kZURyYWdnYWJsZVBpcGUgfSBmcm9tICcuL3RyZWUucGlwZSc7XG5cbnR5cGUgVGh5VHJlZVNpemUgPSAnc20nIHwgJ2RlZmF1bHQnO1xuXG50eXBlIFRoeVRyZWVUeXBlID0gJ2RlZmF1bHQnIHwgJ2VzcGVjaWFsJztcblxuY29uc3QgdHJlZVR5cGVDbGFzc01hcCA9IHtcbiAgICBkZWZhdWx0OiBbJ3RoeS10cmVlLWRlZmF1bHQnXSxcbiAgICBlc3BlY2lhbDogWyd0aHktdHJlZS1lc3BlY2lhbCddXG59O1xuXG5jb25zdCB0cmVlSXRlbVNpemVNYXAgPSB7XG4gICAgZGVmYXVsdDogNDQsXG4gICAgc206IDQyXG59O1xuXG4vKipcbiAqIOagkeW9ouaOp+S7tue7hOS7tlxuICogQG5hbWUgdGh5LXRyZWVcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktdHJlZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RyZWUuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGh5VHJlZSksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUSFlfVFJFRV9BQlNUUkFDVF9UT0tFTixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRoeVRyZWUpXG4gICAgICAgIH0sXG4gICAgICAgIFRoeVRyZWVTZXJ2aWNlXG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgQ2RrRHJhZyxcbiAgICAgICAgQ2RrRHJvcExpc3QsXG4gICAgICAgIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCxcbiAgICAgICAgQ2RrRml4ZWRTaXplVmlydHVhbFNjcm9sbCxcbiAgICAgICAgQ2RrVmlydHVhbEZvck9mLFxuICAgICAgICBUaHlUcmVlTm9kZUNvbXBvbmVudCxcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIFRoeVRyZWVOb2RlRHJhZ2dhYmxlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGh5VHJlZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIF90ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHByaXZhdGUgX2VtcHR5Q2hpbGRyZW5UZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHByaXZhdGUgX2RyYWdnYWJsZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBfZXhwYW5kZWRLZXlzOiAoc3RyaW5nIHwgbnVtYmVyKVtdO1xuXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWRLZXlzOiAoc3RyaW5nIHwgbnVtYmVyKVtdO1xuXG4gICAgcHJpdmF0ZSBob3N0UmVuZGVyZXIgPSB1c2VIb3N0UmVuZGVyZXIoKTtcblxuICAgIHByaXZhdGUgX29uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgcHJpdmF0ZSBfb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKF86IGFueSkgPT4ge307XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICAgIC8vIOe8k+WtmCBFbGVtZW50IOWSjCBEcmFnUmVmIOeahOWFs+ezu++8jOaWueS+v+WcqCBJdGVtIOaLluWKqOaXtuafpeaJvlxuICAgIHByaXZhdGUgbm9kZURyYWdzTWFwID0gbmV3IE1hcDxIVE1MRWxlbWVudCwgQ2RrRHJhZzxUaHlUcmVlTm9kZT4+KCk7XG5cbiAgICBwcml2YXRlIG5vZGVEcmFnTW92ZWQgPSBuZXcgU3ViamVjdDxDZGtEcmFnTW92ZT4oKTtcblxuICAgIC8vIHByaXZhdGUgc3RhcnREcmFnTm9kZUV4cGFuZGVkOiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBzdGFydERyYWdOb2RlQ2xvbmU6IFRoeVRyZWVOb2RlO1xuXG4gICAgLy8gTm9kZSDmi5bliqjnu4/ov4fnm67moIfml7bkuLTml7borrDlvZXnm67moIdpZOS7peWPiuebuOWvueW6lOebruagh+eahOS9jee9rlxuICAgIHByaXZhdGUgbm9kZURyb3BUYXJnZXQ6IHtcbiAgICAgICAgcG9zaXRpb24/OiBUaHlUcmVlRHJvcFBvc2l0aW9uO1xuICAgICAgICBrZXk/OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgfTtcblxuICAgIHByaXZhdGUgZHJvcEVudGVyUHJlZGljYXRlPzogKGNvbnRleHQ6IHsgc291cmNlOiBUaHlUcmVlTm9kZTsgdGFyZ2V0OiBUaHlUcmVlTm9kZTsgZHJvcFBvc2l0aW9uOiBUaHlUcmVlRHJvcFBvc2l0aW9uIH0pID0+IGJvb2xlYW4gPVxuICAgICAgICBjb250ZXh0ID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgdGhpcy5pc1Nob3dFeHBhbmQoY29udGV4dC50YXJnZXQpIHx8ICghdGhpcy5pc1Nob3dFeHBhbmQoY29udGV4dC50YXJnZXQpICYmIGNvbnRleHQuZHJvcFBvc2l0aW9uICE9PSBUaHlUcmVlRHJvcFBvc2l0aW9uLmluKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfTtcblxuICAgIHB1YmxpYyBfc2VsZWN0aW9uTW9kZWw6IFNlbGVjdGlvbk1vZGVsPFRoeVRyZWVOb2RlPjtcblxuICAgIHB1YmxpYyBnZXQgdHJlZU5vZGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlUcmVlU2VydmljZS50cmVlTm9kZXM7XG4gICAgfVxuXG4gICAgcHVibGljIGZsYXR0ZW5UcmVlTm9kZXM6IFRoeVRyZWVOb2RlW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIOiZmuaLn+WMlua7muWKqOeahOinhuWPo1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBAVmlld0NoaWxkKCd2aWV3cG9ydCcsIHsgc3RhdGljOiBmYWxzZSB9KSB2aWV3cG9ydDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gICAgLyoqXG4gICAgICogVHJlZU5vZGUg5bGV546w5omA6ZyA55qE5pWw5o2uXG4gICAgICogQHR5cGUgVGh5VHJlZU5vZGVEYXRhW11cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlOb2RlczogVGh5VHJlZU5vZGVEYXRhW107XG5cbiAgICAvKipcbiAgICAgKiDorr7nva4gVHJlZU5vZGUg5piv5ZCm5pSv5oyB5bGV5byAXG4gICAgICogQHR5cGUgYm9vbGVhbiB8IEZ1bmN0aW9uXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5U2hvd0V4cGFuZDogYm9vbGVhbiB8ICgoXzogVGh5VHJlZU5vZGVEYXRhKSA9PiBib29sZWFuKSA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mmK/lkKbmlK/mjIHlpJrpgInoioLngrlcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoYGNsYXNzLnRoeS1tdWx0aXBsZS1zZWxlY3Rpb24tbGlzdGApXG4gICAgQElucHV0KClcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICB0aHlNdWx0aXBsZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog6K6+572uIFRyZWVOb2RlIOaYr+WQpuaUr+aMgeaLluaLveaOkuW6j1xuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktdHJlZS1kcmFnZ2FibGUnKVxuICAgIEBJbnB1dCgpXG4gICAgQElucHV0Qm9vbGVhbigpXG4gICAgc2V0IHRoeURyYWdnYWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kcmFnZ2FibGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgdGh5RHJhZ2dhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZHJhZ2dhYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9riBUcmVlTm9kZSDmmK/lkKbmlK/mjIEgQ2hlY2tib3gg6YCJ5oupXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdGh5Q2hlY2thYmxlOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog54K55Ye76IqC54K555qE6KGM5Li677yMYGRlZmF1bHRgIOS4uumAieS4reW9k+WJjeiKgueCue+8jGBzZWxlY3RDaGVja2JveGAg5Li66YCJ5Lit6IqC54K555qEIENoZWNrYm9477yMIGB0aHlDaGVja2FibGVgIOS4uiB0cnVlIOaXtueUn+aViOOAglxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUNsaWNrQmVoYXZpb3I6IFRoeUNsaWNrQmVoYXZpb3IgPSAnZGVmYXVsdCc7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva4gY2hlY2sg54q25oCB55qE6K6h566X562W55WlXG4gICAgICovXG4gICAgQElucHV0KCkgc2V0IHRoeUNoZWNrU3RhdGVSZXNvbHZlKHJlc29sdmU6IChub2RlOiBUaHlUcmVlTm9kZSkgPT4gVGh5VHJlZU5vZGVDaGVja1N0YXRlKSB7XG4gICAgICAgIGlmIChyZXNvbHZlKSB7XG4gICAgICAgICAgICB0aGlzLnRoeVRyZWVTZXJ2aWNlLnNldENoZWNrU3RhdGVSZXNvbHZlKHJlc29sdmUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572uIFRyZWVOb2RlIOaYr+WQpuaUr+aMgeW8guatpeWKoOi9vVxuICAgICAqL1xuICAgIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSB0aHlBc3luYyA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBfdGh5VHlwZTogVGh5VHJlZVR5cGUgPSAnZGVmYXVsdCc7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7kuI3lkIzlsZXnpLrnsbvlnovnmoQgVHJlZe+8jGBkZWZhdWx0YCDkuLrlsI/nrq3lpLTlsZXnpLrvvIwgYGVzcGVjaWFsYCDkuLog5Yqg5YeP5Y+35Zu+5qCH5bGV56S6XG4gICAgICogQHR5cGUgVGh5VHJlZVR5cGVcbiAgICAgKiBAZGVmYXVsdCBkZWZhdWx0XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5VHlwZSh0eXBlOiBUaHlUcmVlVHlwZSkge1xuICAgICAgICB0aGlzLl90aHlUeXBlID0gdHlwZTtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdlc3BlY2lhbCcpIHtcbiAgICAgICAgICAgIHRoaXMudGh5SWNvbnMgPSB7IGV4cGFuZDogJ21pbnVzLXNxdWFyZScsIGNvbGxhcHNlOiAncGx1cy1zcXVhcmUnIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgdGh5VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RoeVR5cGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5LiN5ZCMIFRyZWUg5bGV5byA5oqY5Y+g55qE5Zu+5qCH77yMYGV4cGFuZGAg5Li65bGV5byA54q25oCB55qE5Zu+5qCH77yMYGNvbGxhcHNlYCDkuLrmipjlj6DnirbmgIHnmoTlm77moIdcbiAgICAgKiBAdHlwZSB7IGV4cGFuZDogc3RyaW5nLCBjb2xsYXBzZTogc3RyaW5nIH1cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlJY29uczogVGh5VHJlZUljb25zID0ge307XG5cbiAgICBwcml2YXRlIF90aHlTaXplOiBUaHlUcmVlU2l6ZSA9ICdkZWZhdWx0JztcbiAgICAvKipcbiAgICAgKiDmlK/mjIEgYHNtYCB8IGBkZWZhdWx0YCDkuKTnp43lpKflsI/vvIzpu5jorqTlgLzkuLogYGRlZmF1bHRgXG4gICAgICogQHR5cGUgVGh5VHJlZVNpemVcbiAgICAgKiBAZGVmYXVsdCBkZWZhdWx0XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5U2l6ZShzaXplOiBUaHlUcmVlU2l6ZSkge1xuICAgICAgICB0aGlzLl90aHlTaXplID0gc2l6ZTtcbiAgICAgICAgaWYgKHRoaXMuX3RoeVNpemUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RoeUl0ZW1TaXplID0gdHJlZUl0ZW1TaXplTWFwW3RoaXMuX3RoeVNpemVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fdGh5SXRlbVNpemUgPSB0cmVlSXRlbVNpemVNYXAuZGVmYXVsdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCB0aHlTaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGh5U2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mmK/lkKblvIDlkK/omZrmi5/mu5rliqhcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS12aXJ0dWFsLXNjcm9sbGluZy10cmVlJylcbiAgICBASW5wdXQoKVxuICAgIEBJbnB1dEJvb2xlYW4oKVxuICAgIHRoeVZpcnR1YWxTY3JvbGwgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgX3RoeUl0ZW1TaXplID0gNDQ7XG5cbiAgICAvKipcbiAgICAgKiDlvIDlkK/omZrmi5/mu5rliqjml7bvvIzljZXooYzoioLngrnnmoTpq5jluqbvvIzlvZNgdGh5U2l6ZWDkuLpgZGVmYXVsdGDml7bvvIzor6Xlj4LmlbDmiY3nlJ/mlYhcbiAgICAgKiBAZGVmYXVsdCA0NFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQElucHV0TnVtYmVyKClcbiAgICBzZXQgdGh5SXRlbVNpemUoaXRlbVNpemU6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy50aHlTaXplICE9PSAnZGVmYXVsdCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignc2V0dGluZyB0aHlTaXplIGFuZCB0aHlJdGVtU2l6ZSBhdCB0aGUgc2FtZSB0aW1lIGlzIG5vdCBhbGxvd2VkJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGh5SXRlbVNpemUgPSBpdGVtU2l6ZTtcbiAgICB9XG5cbiAgICBnZXQgdGh5SXRlbVNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aHlJdGVtU2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7oioLngrnlkI3np7DmmK/lkKbmlK/mjIHotoXlh7rmiKrlj5ZcbiAgICAgKiBAdHlwZSBib29sZWFuXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHRoeVRpdGxlVHJ1bmNhdGUgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog5bey6YCJ5Lit55qEIG5vZGUg6IqC54K56ZuG5ZCIXG4gICAgICogQGRlZmF1bHQgW11cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlTZWxlY3RlZEtleXM6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u57yp6L+b6Led56a777yM57yp6L+b6Led56a7ID0gdGh5SW5kZW50ICogbm9kZS5sZXZlbFxuICAgICAqIEB0eXBlIG51bWJlclxuICAgICAqL1xuICAgIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIHRoeUluZGVudCA9IDI1O1xuXG4gICAgLyoqXG4gICAgICog5ouW5ou95LmL5YmN55qE5Zue6LCD77yM5Ye95pWw6L+U5ZueIGZhbHNlIOWImemYu+atouaLluaLvVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUJlZm9yZURyYWdTdGFydDogKGNvbnRleHQ6IFRoeVRyZWVCZWZvcmVEcmFnU3RhcnRDb250ZXh0KSA9PiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog5ouW5pS+5Yiw5YWD57Sg5pe25Zue6LCD77yM5Ye95pWw6L+U5ZueIGZhbHNlIOWImemYu+atouaLluaUvuWIsOW9k+WJjeWFg+e0oFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUJlZm9yZURyYWdEcm9wOiAoY29udGV4dDogVGh5VHJlZUJlZm9yZURyYWdEcm9wQ29udGV4dCkgPT4gYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOiuvue9ruWtkCBUcmVlTm9kZSDngrnlh7vkuovku7ZcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5T25DbGljazogRXZlbnRFbWl0dGVyPFRoeVRyZWVFbWl0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUaHlUcmVlRW1pdEV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICog6K6+572uIGNoZWNrIOmAieaLqeS6i+S7tlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlPbkNoZWNrYm94Q2hhbmdlOiBFdmVudEVtaXR0ZXI8VGh5VHJlZUVtaXRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFRoeVRyZWVFbWl0RXZlbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7ngrnlh7vlsZXlvIDop6blj5Hkuovku7ZcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5T25FeHBhbmRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUaHlUcmVlRW1pdEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5VHJlZUVtaXRFdmVudD4oKTtcblxuICAgIC8qKlxuICAgICAqIOiuvue9riBUcmVlTm9kZSDmi5bmi73kuovku7ZcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5T25EcmFnRHJvcDogRXZlbnRFbWl0dGVyPFRoeVRyZWVEcmFnRHJvcEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5VHJlZURyYWdEcm9wRXZlbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDlj4zlh7sgVHJlZU5vZGUg5LqL5Lu2XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeURibENsaWNrOiBFdmVudEVtaXR0ZXI8VGh5VHJlZUVtaXRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFRoeVRyZWVFbWl0RXZlbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva4gVHJlZU5vZGUg55qE5riy5p+T5qih5p2/XG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgndHJlZU5vZGVUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgc2V0IHRlbXBsYXRlUmVmKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgICAgIGlmICh0ZW1wbGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fdGVtcGxhdGVSZWYgPSB0ZW1wbGF0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCB0ZW1wbGF0ZVJlZigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RlbXBsYXRlUmVmO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9ruWtkOeahOepuuaVsOaNrua4suafk+aooeadv1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2VtcHR5Q2hpbGRyZW5UZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pIGVtcHR5Q2hpbGRyZW5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBzZXQgZW1wdHlDaGlsZHJlblRlbXBsYXRlUmVmKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgICAgIGlmICh0ZW1wbGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fZW1wdHlDaGlsZHJlblRlbXBsYXRlUmVmID0gdGVtcGxhdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgZW1wdHlDaGlsZHJlblRlbXBsYXRlUmVmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW1wdHlDaGlsZHJlblRlbXBsYXRlUmVmO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LXRyZWUnKVxuICAgIHRoeVRyZWVDbGFzcyA9IHRydWU7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS10cmVlLWRyYWdnaW5nJylcbiAgICBkcmFnZ2luZzogYm9vbGVhbjtcblxuICAgIEBWaWV3Q2hpbGRyZW4oQ2RrRHJhZykgY2RrRHJhZ3M6IFF1ZXJ5TGlzdDxDZGtEcmFnPFRoeVRyZWVOb2RlPj47XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdGh5VHJlZVNlcnZpY2U6IFRoeVRyZWVTZXJ2aWNlLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50KSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luaXRUaHlOb2RlcygpO1xuICAgICAgICB0aGlzLl9zZXRUcmVlVHlwZSgpO1xuICAgICAgICB0aGlzLl9zZXRUcmVlU2l6ZSgpO1xuICAgICAgICB0aGlzLl9pbnN0YW5jZVNlbGVjdGlvbk1vZGVsKCk7XG4gICAgICAgIHRoaXMuX3NlbGVjdFRyZWVOb2Rlcyh0aGlzLnRoeVNlbGVjdGVkS2V5cyk7XG5cbiAgICAgICAgdGhpcy50aHlUcmVlU2VydmljZS5mbGF0dGVuTm9kZXMkLnN1YnNjcmliZShmbGF0dGVuVHJlZU5vZGVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmxhdHRlblRyZWVOb2RlcyA9IGZsYXR0ZW5UcmVlTm9kZXM7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNka0RyYWdzLmNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKHN0YXJ0V2l0aCh0aGlzLmNka0RyYWdzKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZHJhZ3M6IFF1ZXJ5TGlzdDxDZGtEcmFnPFRoeVRyZWVOb2RlPj4pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGVEcmFnc01hcC5jbGVhcigpO1xuICAgICAgICAgICAgICAgIGRyYWdzLmZvckVhY2goZHJhZyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkcmFnLmRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNka0RyYWcg5Y+Y5YyW5pe277yM57yT5a2YIEVsZW1lbnQg5LiOIERyYWdSZWYg55qE5YWz57O777yM5pa55L6/IERyYWcgTW92ZSDml7bmn6Xmib5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZURyYWdzTWFwLnNldChkcmFnLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgZHJhZyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubm9kZURyYWdNb3ZlZFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgLy8gYXVkaXRUaW1lKDMwKSxcbiAgICAgICAgICAgICAgICAvLyAgYXVkaXRUaW1lIOWPr+iDveS8muWvvOiHtOaLluWKqOe7k+adn+WQjuS7jeeEtuaJp+ihjCBtb3ZlZCDvvIzmiYDku6XpgJrov4fliKTmlq0gZHJhZ2dpbmcg54q25oCB5p2l6L+H5ruk5peg5pWIIG1vdmVkXG4gICAgICAgICAgICAgICAgZmlsdGVyKChldmVudDogQ2RrRHJhZ01vdmUpID0+IGV2ZW50LnNvdXJjZS5fZHJhZ1JlZi5pc0RyYWdnaW5nKCkpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkRyYWdNb3ZlZChldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLnRoeU5vZGVzICYmICFjaGFuZ2VzLnRoeU5vZGVzLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgICAgICAgdGhpcy5faW5pdFRoeU5vZGVzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXMudGh5VHlwZSAmJiAhY2hhbmdlcy50aHlUeXBlLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0VHJlZVR5cGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcy50aHlNdWx0aXBsZSAmJiAhY2hhbmdlcy50aHlNdWx0aXBsZS5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2luc3RhbmNlU2VsZWN0aW9uTW9kZWwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzLnRoeVNlbGVjdGVkS2V5cyAmJiAhY2hhbmdlcy50aHlTZWxlY3RlZEtleXMuaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEtleXMgPSBjaGFuZ2VzLnRoeVNlbGVjdGVkS2V5cy5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RUcmVlTm9kZXMoY2hhbmdlcy50aHlTZWxlY3RlZEtleXMuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbmRlclZpZXcgPSAoKSA9PiB7fTtcblxuICAgIGV2ZW50VHJpZ2dlckNoYW5nZWQoZXZlbnQ6IFRoeVRyZWVFbWl0RXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5ldmVudE5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2V4cGFuZCc6XG4gICAgICAgICAgICAgICAgdGhpcy50aHlPbkV4cGFuZENoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnY2hlY2tib3hDaGFuZ2UnOlxuICAgICAgICAgICAgICAgIHRoaXMudGh5T25DaGVja2JveENoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2luaXRUaHlOb2RlcygpIHtcbiAgICAgICAgdGhpcy5fZXhwYW5kZWRLZXlzID0gdGhpcy5nZXRFeHBhbmRlZE5vZGVzKCkubWFwKG5vZGUgPT4gbm9kZS5rZXkpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZEtleXMgPSB0aGlzLmdldFNlbGVjdGVkTm9kZXMoKS5tYXAobm9kZSA9PiBub2RlLmtleSk7XG4gICAgICAgIHRoaXMudGh5VHJlZVNlcnZpY2UuaW5pdGlhbGl6ZVRyZWVOb2Rlcyh0aGlzLnRoeU5vZGVzKTtcbiAgICAgICAgdGhpcy5mbGF0dGVuVHJlZU5vZGVzID0gdGhpcy50aHlUcmVlU2VydmljZS5mbGF0dGVuVHJlZU5vZGVzO1xuICAgICAgICB0aGlzLl9zZWxlY3RUcmVlTm9kZXModGhpcy5fc2VsZWN0ZWRLZXlzKTtcbiAgICAgICAgdGhpcy50aHlUcmVlU2VydmljZS5leHBhbmRUcmVlTm9kZXModGhpcy5fZXhwYW5kZWRLZXlzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRUcmVlVHlwZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudGh5VHlwZSAmJiB0cmVlVHlwZUNsYXNzTWFwW3RoaXMudGh5VHlwZV0pIHtcbiAgICAgICAgICAgIHRyZWVUeXBlQ2xhc3NNYXBbdGhpcy50aHlUeXBlXS5mb3JFYWNoKGNsYXNzTmFtZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ob3N0UmVuZGVyZXIuYWRkQ2xhc3MoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0VHJlZVNpemUoKSB7XG4gICAgICAgIGlmICh0aGlzLnRoeVNpemUpIHtcbiAgICAgICAgICAgIHRoaXMuaG9zdFJlbmRlcmVyLmFkZENsYXNzKGB0aHktdHJlZS0ke3RoaXMudGh5U2l6ZX1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2luc3RhbmNlU2VsZWN0aW9uTW9kZWwoKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsID0gbmV3IFNlbGVjdGlvbk1vZGVsPGFueT4odGhpcy50aHlNdWx0aXBsZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2VsZWN0VHJlZU5vZGVzKGtleXM6IChzdHJpbmcgfCBudW1iZXIpW10pIHtcbiAgICAgICAgKGtleXMgfHwgW10pLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLnRoeVRyZWVTZXJ2aWNlLmdldFRyZWVOb2RlKGtleSk7XG4gICAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0VHJlZU5vZGUodGhpcy50aHlUcmVlU2VydmljZS5nZXRUcmVlTm9kZShrZXkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZChub2RlOiBUaHlUcmVlTm9kZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChub2RlKTtcbiAgICB9XG5cbiAgICB0b2dnbGVUcmVlTm9kZShub2RlOiBUaHlUcmVlTm9kZSkge1xuICAgICAgICBpZiAobm9kZSAmJiAhbm9kZS5pc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC50b2dnbGUobm9kZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSB7XG4gICAgICAgIHJldHVybiBpdGVtLmtleSB8fCBpbmRleDtcbiAgICB9XG5cbiAgICBpc1Nob3dFeHBhbmQobm9kZTogVGh5VHJlZU5vZGUpIHtcbiAgICAgICAgaWYgKGhlbHBlcnMuaXNGdW5jdGlvbih0aGlzLnRoeVNob3dFeHBhbmQpKSB7XG4gICAgICAgICAgICByZXR1cm4gKHRoaXMudGh5U2hvd0V4cGFuZCBhcyBGdW5jdGlvbikobm9kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aHlTaG93RXhwYW5kO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogVGh5VHJlZU5vZGVEYXRhW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnRoeU5vZGVzID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLl9pbml0VGh5Tm9kZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgb25EcmFnU3RhcnRlZChldmVudDogQ2RrRHJhZ1N0YXJ0PFRoeVRyZWVOb2RlPikge1xuICAgICAgICB0aGlzLmRyYWdnaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdGFydERyYWdOb2RlQ2xvbmUgPSBPYmplY3QuYXNzaWduKHt9LCBldmVudC5zb3VyY2UuZGF0YSk7XG4gICAgICAgIGlmIChldmVudC5zb3VyY2UuZGF0YS5pc0V4cGFuZGVkKSB7XG4gICAgICAgICAgICBldmVudC5zb3VyY2UuZGF0YS5zZXRFeHBhbmRlZChmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlbWl0RHJhZ01vdmVkKGV2ZW50OiBDZGtEcmFnTW92ZSkge1xuICAgICAgICB0aGlzLm5vZGVEcmFnTW92ZWQubmV4dChldmVudCk7XG4gICAgfVxuXG4gICAgb25EcmFnTW92ZWQoZXZlbnQ6IENka0RyYWdNb3ZlPFRoeVRyZWVOb2RlPikge1xuICAgICAgICAvLyDpgJrov4fpvKDmoIfkvY3nva7mn6Xmib7lr7nlupTnmoTnm67moIcgSXRlbSDlhYPntKBcbiAgICAgICAgbGV0IGN1cnJlbnRQb2ludEVsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZXZlbnQucG9pbnRlclBvc2l0aW9uLngsIGV2ZW50LnBvaW50ZXJQb3NpdGlvbi55KSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgaWYgKCFjdXJyZW50UG9pbnRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFudXBEcmFnQXJ0aWZhY3RzKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHRhcmdldEVsZW1lbnQgPSBjdXJyZW50UG9pbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygndGh5LXRyZWUtbm9kZScpXG4gICAgICAgICAgICA/IGN1cnJlbnRQb2ludEVsZW1lbnRcbiAgICAgICAgICAgIDogKGN1cnJlbnRQb2ludEVsZW1lbnQuY2xvc2VzdCgnLnRoeS10cmVlLW5vZGUnKSBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgIGlmICghdGFyZ2V0RWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5jbGVhbnVwRHJhZ0FydGlmYWN0cygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIOe8k+WtmOaUvue9ruebruagh0lkIOW5tuiuoeeul+m8oOagh+ebuOWvueW6lOeahOS9jee9rlxuICAgICAgICB0aGlzLm5vZGVEcm9wVGFyZ2V0ID0ge1xuICAgICAgICAgICAga2V5OiB0aGlzLm5vZGVEcmFnc01hcC5nZXQodGFyZ2V0RWxlbWVudCk/LmRhdGEua2V5LFxuICAgICAgICAgICAgcG9zaXRpb246IHRoaXMuZ2V0VGFyZ2V0UG9zaXRpb24odGFyZ2V0RWxlbWVudCwgZXZlbnQpXG4gICAgICAgIH07XG4gICAgICAgIC8vIOaJp+ihjOWklumDqOS8oOWFpeeahCBkcm9wRW50ZXJQcmVkaWNhdGUg5Yik5pat5piv5ZCm5YWB6K645ouW5YWl55uu5qCH6aG5XG4gICAgICAgIGlmICh0aGlzLmRyb3BFbnRlclByZWRpY2F0ZSkge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0RHJhZ1JlZiA9IHRoaXMubm9kZURyYWdzTWFwLmdldCh0YXJnZXRFbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmRyb3BFbnRlclByZWRpY2F0ZSh7XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZTogZXZlbnQuc291cmNlLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0RHJhZ1JlZi5kYXRhLFxuICAgICAgICAgICAgICAgICAgICBkcm9wUG9zaXRpb246IHRoaXMubm9kZURyb3BUYXJnZXQucG9zaXRpb25cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93RHJvcFBvc2l0aW9uUGxhY2Vob2xkZXIodGFyZ2V0RWxlbWVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubm9kZURyb3BUYXJnZXQgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYW51cERyYWdBcnRpZmFjdHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0Ryb3BQb3NpdGlvblBsYWNlaG9sZGVyKHRhcmdldEVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25EcmFnRW5kZWQoZXZlbnQ6IENka0RyYWdFbmQ8VGh5VHJlZU5vZGU+KSB7XG4gICAgICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgLy8g5ouW5ou957uT5p2f5ZCO5oGi5aSN5Y6f5aeL55qE5bGV5byA54q25oCBXG4gICAgICAgIGV2ZW50LnNvdXJjZS5kYXRhLnNldEV4cGFuZGVkKHRoaXMuc3RhcnREcmFnTm9kZUNsb25lLmlzRXhwYW5kZWQpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnREcmFnTm9kZUNsb25lID0gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25MaXN0RHJvcHBlZChldmVudDogQ2RrRHJhZ0Ryb3A8VGh5VHJlZU5vZGVbXSwgVGh5VHJlZU5vZGVbXSwgVGh5VHJlZU5vZGU+KSB7XG4gICAgICAgIGlmICghdGhpcy5ub2RlRHJvcFRhcmdldCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5pc1Nob3dFeHBhbmQodGhpcy5zdGFydERyYWdOb2RlQ2xvbmUpICYmIHRoaXMubm9kZURyb3BUYXJnZXQucG9zaXRpb24gPT09IFRoeVRyZWVEcm9wUG9zaXRpb24uaW4pIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYW51cERyYWdBcnRpZmFjdHMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNvdXJjZU5vZGUgPSB0aGlzLnN0YXJ0RHJhZ05vZGVDbG9uZTtcbiAgICAgICAgY29uc3Qgc291cmNlTm9kZVBhcmVudCA9IHNvdXJjZU5vZGUucGFyZW50Tm9kZTtcbiAgICAgICAgY29uc3QgdGFyZ2V0RHJhZ1JlZiA9IHRoaXMuY2RrRHJhZ3MuZmluZChpdGVtID0+IGl0ZW0uZGF0YT8ua2V5ID09PSB0aGlzLm5vZGVEcm9wVGFyZ2V0LmtleSk7XG4gICAgICAgIGNvbnN0IHRhcmdldE5vZGUgPSB0YXJnZXREcmFnUmVmPy5kYXRhO1xuICAgICAgICBjb25zdCB0YXJnZXROb2RlUGFyZW50ID0gdGFyZ2V0Tm9kZS5wYXJlbnROb2RlO1xuXG4gICAgICAgIGNvbnN0IGJlZm9yZURyYWdEcm9wQ29udGV4dDogVGh5VHJlZUJlZm9yZURyYWdEcm9wQ29udGV4dCA9IHtcbiAgICAgICAgICAgIHByZXZpb3VzSXRlbTogc291cmNlTm9kZSxcbiAgICAgICAgICAgIHByZXZpb3VzQ29udGFpbmVySXRlbXM6IHNvdXJjZU5vZGVQYXJlbnQ/LmNoaWxkcmVuLFxuICAgICAgICAgICAgaXRlbTogdGFyZ2V0Tm9kZSxcbiAgICAgICAgICAgIGNvbnRhaW5lckl0ZW1zOiB0YXJnZXROb2RlUGFyZW50Py5jaGlsZHJlbixcbiAgICAgICAgICAgIHBvc2l0aW9uOiB0aGlzLm5vZGVEcm9wVGFyZ2V0LnBvc2l0aW9uXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMudGh5QmVmb3JlRHJhZ0Ryb3AgJiYgIXRoaXMudGh5QmVmb3JlRHJhZ0Ryb3AoYmVmb3JlRHJhZ0Ryb3BDb250ZXh0KSkge1xuICAgICAgICAgICAgdGhpcy5jbGVhbnVwRHJhZ0FydGlmYWN0cygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50aHlUcmVlU2VydmljZS5kZWxldGVUcmVlTm9kZShzb3VyY2VOb2RlKTtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMubm9kZURyb3BUYXJnZXQucG9zaXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJ2JlZm9yZSc6XG4gICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlSW5zZXJ0SW5kZXggPSAodGFyZ2V0Tm9kZVBhcmVudD8uY2hpbGRyZW4gfHwgdGhpcy50cmVlTm9kZXMpLmluZGV4T2YodGFyZ2V0Tm9kZSk7XG4gICAgICAgICAgICAgICAgdGhpcy50aHlUcmVlU2VydmljZS5hZGRUcmVlTm9kZShzb3VyY2VOb2RlLCB0YXJnZXROb2RlUGFyZW50LCBiZWZvcmVJbnNlcnRJbmRleCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdhZnRlcic6XG4gICAgICAgICAgICAgICAgY29uc3QgYWZ0ZXJJbnNlcnRJbmRleCA9ICh0YXJnZXROb2RlUGFyZW50Py5jaGlsZHJlbiB8fCB0aGlzLnRyZWVOb2RlcykuaW5kZXhPZih0YXJnZXROb2RlKSArIDE7XG4gICAgICAgICAgICAgICAgdGhpcy50aHlUcmVlU2VydmljZS5hZGRUcmVlTm9kZShzb3VyY2VOb2RlLCB0YXJnZXROb2RlUGFyZW50LCBhZnRlckluc2VydEluZGV4KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2luJzpcbiAgICAgICAgICAgICAgICB0aGlzLnRoeVRyZWVTZXJ2aWNlLmFkZFRyZWVOb2RlKHNvdXJjZU5vZGUsIHRhcmdldE5vZGUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50aHlUcmVlU2VydmljZS5zeW5jRmxhdHRlblRyZWVOb2RlcygpO1xuXG4gICAgICAgIGxldCBhZnRlcjogVGh5VHJlZU5vZGUgPSBudWxsO1xuICAgICAgICBsZXQgdGFyZ2U6IFRoeVRyZWVOb2RlID0gbnVsbDtcbiAgICAgICAgaWYgKGJlZm9yZURyYWdEcm9wQ29udGV4dC5wb3NpdGlvbiA9PT0gVGh5VHJlZURyb3BQb3NpdGlvbi5iZWZvcmUpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldENvbnRhaW5lck5vZGVzID0gdGFyZ2V0Tm9kZVBhcmVudD8uY2hpbGRyZW4gfHwgdGhpcy50cmVlTm9kZXM7XG4gICAgICAgICAgICBhZnRlciA9IHRhcmdldENvbnRhaW5lck5vZGVzW3RhcmdldENvbnRhaW5lck5vZGVzLmluZGV4T2YodGFyZ2V0Tm9kZSkgLSAyXTtcbiAgICAgICAgICAgIHRhcmdlID0gdGFyZ2V0Tm9kZVBhcmVudDtcbiAgICAgICAgfSBlbHNlIGlmIChiZWZvcmVEcmFnRHJvcENvbnRleHQucG9zaXRpb24gPT09IFRoeVRyZWVEcm9wUG9zaXRpb24uYWZ0ZXIpIHtcbiAgICAgICAgICAgIGFmdGVyID0gdGFyZ2V0Tm9kZTtcbiAgICAgICAgICAgIHRhcmdlID0gdGFyZ2V0Tm9kZVBhcmVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFmdGVyID0gdGFyZ2V0Tm9kZS5jaGlsZHJlbj8ubGVuZ3RoID4gMCA/IHRhcmdldE5vZGUuY2hpbGRyZW5bdGFyZ2V0Tm9kZS5jaGlsZHJlbi5sZW5ndGggLSAyXSA6IG51bGw7XG4gICAgICAgICAgICB0YXJnZSA9IHRhcmdldE5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRoeU9uRHJhZ0Ryb3AuZW1pdCh7XG4gICAgICAgICAgICBkcmFnTm9kZTogdGhpcy50aHlUcmVlU2VydmljZS5nZXRUcmVlTm9kZShzb3VyY2VOb2RlLmtleSksXG4gICAgICAgICAgICB0YXJnZXROb2RlOiB0YXJnZSxcbiAgICAgICAgICAgIGFmdGVyTm9kZTogYWZ0ZXJcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jbGVhbnVwRHJhZ0FydGlmYWN0cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VGFyZ2V0UG9zaXRpb24odGFyZ2V0OiBIVE1MRWxlbWVudCwgZXZlbnQ6IENka0RyYWdNb3ZlKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldFJlY3QgPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGJlZm9yZU9yQWZ0ZXJHYXAgPSB0YXJnZXRSZWN0LmhlaWdodCAqIDAuMztcbiAgICAgICAgLy8g5bCGIE5vZGUg6auY5bqm5YiG5Li65LiK5Lit5LiL5LiJ5q6177yM5YW25Lit5LiK5LiL55qEIEdhcCDkuLogaGVpZ2h0IOeahCAzMCXvvIzpgJrov4fliKTmlq3pvKDmoIfkvY3nva7lnKjlk6rkuIDmrrUgZ2FwIOadpeiuoeeul+WvueW6lOeahOS9jee9rlxuICAgICAgICBpZiAoZXZlbnQucG9pbnRlclBvc2l0aW9uLnkgLSB0YXJnZXRSZWN0LnRvcCA8IGJlZm9yZU9yQWZ0ZXJHYXApIHtcbiAgICAgICAgICAgIHJldHVybiBUaHlUcmVlRHJvcFBvc2l0aW9uLmJlZm9yZTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5wb2ludGVyUG9zaXRpb24ueSA+PSB0YXJnZXRSZWN0LmJvdHRvbSAtIGJlZm9yZU9yQWZ0ZXJHYXApIHtcbiAgICAgICAgICAgIHJldHVybiBUaHlUcmVlRHJvcFBvc2l0aW9uLmFmdGVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFRoeVRyZWVEcm9wUG9zaXRpb24uaW47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dEcm9wUG9zaXRpb25QbGFjZWhvbGRlcih0YXJnZXRFbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgICAgICB0aGlzLmNsZWFudXBEcm9wUG9zaXRpb25QbGFjZWhvbGRlcigpO1xuICAgICAgICBpZiAodGhpcy5ub2RlRHJvcFRhcmdldCAmJiB0YXJnZXRFbGVtZW50KSB7XG4gICAgICAgICAgICB0YXJnZXRFbGVtZW50LmNsYXNzTGlzdC5hZGQoYGRyb3AtcG9zaXRpb24tJHt0aGlzLm5vZGVEcm9wVGFyZ2V0LnBvc2l0aW9ufWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhbnVwRHJvcFBvc2l0aW9uUGxhY2Vob2xkZXIoKSB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRyb3AtcG9zaXRpb24tYmVmb3JlJykuZm9yRWFjaChlbGVtZW50ID0+IGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnZHJvcC1wb3NpdGlvbi1iZWZvcmUnKSk7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRyb3AtcG9zaXRpb24tYWZ0ZXInKS5mb3JFYWNoKGVsZW1lbnQgPT4gZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdkcm9wLXBvc2l0aW9uLWFmdGVyJykpO1xuICAgICAgICB0aGlzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kcm9wLXBvc2l0aW9uLWluJykuZm9yRWFjaChlbGVtZW50ID0+IGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnZHJvcC1wb3NpdGlvbi1pbicpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFudXBEcmFnQXJ0aWZhY3RzKCkge1xuICAgICAgICB0aGlzLm5vZGVEcm9wVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5jbGVhbnVwRHJvcFBvc2l0aW9uUGxhY2Vob2xkZXIoKTtcbiAgICB9XG5cbiAgICAvLyByZWdpb24gUHVibGljIEZ1bmN0aW9uc1xuXG4gICAgc2VsZWN0VHJlZU5vZGUobm9kZTogVGh5VHJlZU5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUgJiYgIW5vZGUuaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0KG5vZGUpO1xuICAgICAgICAgICAgdGhpcy50aHlUcmVlU2VydmljZS5zeW5jRmxhdHRlblRyZWVOb2RlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0Um9vdE5vZGVzKCk6IFRoeVRyZWVOb2RlW10ge1xuICAgICAgICByZXR1cm4gdGhpcy50cmVlTm9kZXM7XG4gICAgfVxuXG4gICAgZ2V0VHJlZU5vZGUoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5VHJlZVNlcnZpY2UuZ2V0VHJlZU5vZGUoa2V5KTtcbiAgICB9XG5cbiAgICBnZXRTZWxlY3RlZE5vZGUoKTogVGh5VHJlZU5vZGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwgPyB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZFswXSA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0ZWROb2RlcygpOiBUaHlUcmVlTm9kZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbk1vZGVsID8gdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQgOiBbXTtcbiAgICB9XG5cbiAgICBnZXRFeHBhbmRlZE5vZGVzKCk6IFRoeVRyZWVOb2RlW10ge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlUcmVlU2VydmljZS5nZXRFeHBhbmRlZE5vZGVzKCk7XG4gICAgfVxuXG4gICAgZ2V0Q2hlY2tlZE5vZGVzKCk6IFRoeVRyZWVOb2RlW10ge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlUcmVlU2VydmljZS5nZXRDaGVja2VkTm9kZXMoKTtcbiAgICB9XG5cbiAgICBhZGRUcmVlTm9kZShub2RlOiBUaHlUcmVlTm9kZURhdGEsIHBhcmVudD86IFRoeVRyZWVOb2RlLCBpbmRleCA9IC0xKSB7XG4gICAgICAgIHRoaXMudGh5VHJlZVNlcnZpY2UuYWRkVHJlZU5vZGUobmV3IFRoeVRyZWVOb2RlKG5vZGUsIG51bGwsIHRoaXMudGh5VHJlZVNlcnZpY2UpLCBwYXJlbnQsIGluZGV4KTtcbiAgICAgICAgdGhpcy50aHlUcmVlU2VydmljZS5zeW5jRmxhdHRlblRyZWVOb2RlcygpO1xuICAgIH1cblxuICAgIGRlbGV0ZVRyZWVOb2RlKG5vZGU6IFRoeVRyZWVOb2RlKSB7XG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQobm9kZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnRvZ2dsZShub2RlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRoeVRyZWVTZXJ2aWNlLmRlbGV0ZVRyZWVOb2RlKG5vZGUpO1xuICAgICAgICB0aGlzLnRoeVRyZWVTZXJ2aWNlLnN5bmNGbGF0dGVuVHJlZU5vZGVzKCk7XG4gICAgfVxuXG4gICAgZXhwYW5kQWxsTm9kZXMoKSB7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5nZXRSb290Tm9kZXMoKTtcbiAgICAgICAgbm9kZXMuZm9yRWFjaChuID0+IG4uc2V0RXhwYW5kZWQodHJ1ZSwgdHJ1ZSkpO1xuICAgIH1cblxuICAgIGNvbGxhcHNlZEFsbE5vZGVzKCkge1xuICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZ2V0Um9vdE5vZGVzKCk7XG4gICAgICAgIG5vZGVzLmZvckVhY2gobiA9PiBuLnNldEV4cGFuZGVkKGZhbHNlLCB0cnVlKSk7XG4gICAgfVxuXG4gICAgLy8gZW5kcmVnaW9uXG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iLCI8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICN2aWV3cG9ydFxuICAqbmdJZj1cInRoeVZpcnR1YWxTY3JvbGxcIlxuICBbaXRlbVNpemVdPVwidGh5SXRlbVNpemVcIlxuICBbc3R5bGUuaGVpZ2h0XT1cIicxMDAlJ1wiXG4gIGNka0Ryb3BMaXN0XG4gIFtjZGtEcm9wTGlzdEF1dG9TY3JvbGxTdGVwXT1cIjZcIlxuICBbY2RrRHJvcExpc3REYXRhXT1cImZsYXR0ZW5UcmVlTm9kZXNcIlxuICBbY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWRdPVwidHJ1ZVwiXG4gIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25MaXN0RHJvcHBlZCgkZXZlbnQpXCJcbiAgPlxuICA8ZGl2IGNsYXNzPVwidmlydHVhbC10cmVlcy1jb250YWluZXJcIj5cbiAgICA8dGh5LXRyZWUtbm9kZVxuICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgbm9kZSBvZiBmbGF0dGVuVHJlZU5vZGVzOyB0cmFja0J5OiB0cmFja0J5Rm47IGxldCBpID0gaW5kZXhcIlxuICAgICAgY2RrRHJhZ1xuICAgICAgW2Nka0RyYWdEYXRhXT1cIm5vZGVcIlxuICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCIhdGh5RHJhZ2dhYmxlIHx8ICEobm9kZSB8IHRyZWVOb2RlRHJhZ2dhYmxlIDogdGh5QmVmb3JlRHJhZ1N0YXJ0KVwiXG4gICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwib25EcmFnU3RhcnRlZCgkZXZlbnQpXCJcbiAgICAgIChjZGtEcmFnRW5kZWQpPVwib25EcmFnRW5kZWQoJGV2ZW50KVwiXG4gICAgICAoY2RrRHJhZ01vdmVkKT1cImVtaXREcmFnTW92ZWQoJGV2ZW50KVwiXG4gICAgICBbbm9kZV09XCJub2RlXCJcbiAgICAgIFt0ZW1wbGF0ZVJlZl09XCJ0ZW1wbGF0ZVJlZlwiXG4gICAgICBbZW1wdHlDaGlsZHJlblRlbXBsYXRlUmVmXT1cImVtcHR5Q2hpbGRyZW5UZW1wbGF0ZVwiXG4gICAgICBbdGh5QXN5bmNdPVwidGh5QXN5bmNcIlxuICAgICAgW3RoeURyYWdnYWJsZV09XCJ0aHlEcmFnZ2FibGVcIlxuICAgICAgW3RoeUNoZWNrYWJsZV09XCJ0aHlDaGVja2FibGVcIlxuICAgICAgW3RoeU11bHRpcGxlXT1cInRoeU11bHRpcGxlXCJcbiAgICAgIFt0aHlDbGlja0JlaGF2aW9yXT1cInRoeUNsaWNrQmVoYXZpb3JcIlxuICAgICAgW3RoeVRpdGxlVHJ1bmNhdGVdPVwidGh5VGl0bGVUcnVuY2F0ZVwiXG4gICAgICBbdGh5SXRlbVNpemVdPVwidGh5SXRlbVNpemVcIlxuICAgICAgW3RoeUluZGVudF09XCJ0aHlJbmRlbnRcIlxuICAgICAgKHRoeU9uQ2xpY2spPVwidGh5T25DbGljay5lbWl0KCRldmVudClcIlxuICAgICAgKHRoeURibENsaWNrKT1cInRoeURibENsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAodGh5T25FeHBhbmRDaGFuZ2UpPVwiZXZlbnRUcmlnZ2VyQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICh0aHlPbkNoZWNrYm94Q2hhbmdlKT1cImV2ZW50VHJpZ2dlckNoYW5nZWQoJGV2ZW50KVwiPlxuICAgIDwvdGh5LXRyZWUtbm9kZT5cbiAgPC9kaXY+XG48L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cblxuPGRpdlxuICAqbmdJZj1cIiF0aHlWaXJ0dWFsU2Nyb2xsXCJcbiAgY2RrRHJvcExpc3RcbiAgW2Nka0Ryb3BMaXN0QXV0b1Njcm9sbFN0ZXBdPVwiNlwiXG4gIFtjZGtEcm9wTGlzdERhdGFdPVwiZmxhdHRlblRyZWVOb2Rlc1wiXG4gIFtjZGtEcm9wTGlzdFNvcnRpbmdEaXNhYmxlZF09XCJ0cnVlXCJcbiAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkxpc3REcm9wcGVkKCRldmVudClcIj5cbiAgPHRoeS10cmVlLW5vZGVcbiAgICAqbmdGb3I9XCJsZXQgbm9kZSBvZiBmbGF0dGVuVHJlZU5vZGVzOyB0cmFja0J5OiB0cmFja0J5Rm47IGxldCBpID0gaW5kZXhcIlxuICAgIGNka0RyYWdcbiAgICBbY2RrRHJhZ0RhdGFdPVwibm9kZVwiXG4gICAgW2Nka0RyYWdEaXNhYmxlZF09XCIhdGh5RHJhZ2dhYmxlIHx8ICEobm9kZSB8IHRyZWVOb2RlRHJhZ2dhYmxlIDogdGh5QmVmb3JlRHJhZ1N0YXJ0KVwiXG4gICAgKGNka0RyYWdTdGFydGVkKT1cIm9uRHJhZ1N0YXJ0ZWQoJGV2ZW50KVwiXG4gICAgKGNka0RyYWdFbmRlZCk9XCJvbkRyYWdFbmRlZCgkZXZlbnQpXCJcbiAgICAoY2RrRHJhZ01vdmVkKT1cImVtaXREcmFnTW92ZWQoJGV2ZW50KVwiXG4gICAgW25vZGVdPVwibm9kZVwiXG4gICAgW3RlbXBsYXRlUmVmXT1cInRlbXBsYXRlUmVmXCJcbiAgICBbZW1wdHlDaGlsZHJlblRlbXBsYXRlUmVmXT1cImVtcHR5Q2hpbGRyZW5UZW1wbGF0ZVwiXG4gICAgW3RoeUFzeW5jXT1cInRoeUFzeW5jXCJcbiAgICBbdGh5RHJhZ2dhYmxlXT1cInRoeURyYWdnYWJsZVwiXG4gICAgW3RoeUNoZWNrYWJsZV09XCJ0aHlDaGVja2FibGVcIlxuICAgIFt0aHlNdWx0aXBsZV09XCJ0aHlNdWx0aXBsZVwiXG4gICAgW3RoeVRpdGxlVHJ1bmNhdGVdPVwidGh5VGl0bGVUcnVuY2F0ZVwiXG4gICAgW3RoeUl0ZW1TaXplXT1cInRoeUl0ZW1TaXplXCJcbiAgICBbdGh5Q2xpY2tCZWhhdmlvcl09XCJ0aHlDbGlja0JlaGF2aW9yXCJcbiAgICBbdGh5SW5kZW50XT1cInRoeUluZGVudFwiXG4gICAgKHRoeU9uQ2xpY2spPVwidGh5T25DbGljay5lbWl0KCRldmVudClcIlxuICAgICh0aHlEYmxDbGljayk9XCJ0aHlEYmxDbGljay5lbWl0KCRldmVudClcIlxuICAgICh0aHlPbkV4cGFuZENoYW5nZSk9XCJldmVudFRyaWdnZXJDaGFuZ2VkKCRldmVudClcIlxuICAgICh0aHlPbkNoZWNrYm94Q2hhbmdlKT1cInRoeU9uQ2hlY2tib3hDaGFuZ2UuZW1pdCgkZXZlbnQpXCI+XG4gIDwvdGh5LXRyZWUtbm9kZT5cbjwvZGl2PlxuIl19
@@ -10,7 +10,7 @@ import { CommonModule } from '@angular/common';
10
10
  import { NgModule } from '@angular/core';
11
11
  import { FormsModule } from '@angular/forms';
12
12
  import { ThyTreeNodeComponent } from './tree-node.component';
13
- import { ThyTreeComponent } from './tree.component';
13
+ import { ThyTree } from './tree.component';
14
14
  import { ThyTreeService } from './tree.service';
15
15
  import { DragDropModule } from '@angular/cdk/drag-drop';
16
16
  import { ThyTreeNodeDraggablePipe } from './tree.pipe';
@@ -29,9 +29,9 @@ export class ThyTreeModule {
29
29
  ThyIconModule,
30
30
  ThyCheckboxModule,
31
31
  ScrollingModule,
32
- ThyTreeComponent,
32
+ ThyTree,
33
33
  ThyTreeNodeComponent,
34
- ThyTreeNodeDraggablePipe], exports: [ThyTreeComponent, ThyTreeNodeComponent] }); }
34
+ ThyTreeNodeDraggablePipe], exports: [ThyTree, ThyTreeNodeComponent] }); }
35
35
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ThyTreeModule, providers: [ThyTreeService], imports: [DragDropModule,
36
36
  CommonModule,
37
37
  ThyInputModule,
@@ -44,7 +44,7 @@ export class ThyTreeModule {
44
44
  ThyIconModule,
45
45
  ThyCheckboxModule,
46
46
  ScrollingModule,
47
- ThyTreeComponent,
47
+ ThyTree,
48
48
  ThyTreeNodeComponent] }); }
49
49
  }
50
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ThyTreeModule, decorators: [{
@@ -63,12 +63,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
63
63
  ThyIconModule,
64
64
  ThyCheckboxModule,
65
65
  ScrollingModule,
66
- ThyTreeComponent,
66
+ ThyTree,
67
67
  ThyTreeNodeComponent,
68
68
  ThyTreeNodeDraggablePipe
69
69
  ],
70
- exports: [ThyTreeComponent, ThyTreeNodeComponent],
70
+ exports: [ThyTree, ThyTreeNodeComponent],
71
71
  providers: [ThyTreeService]
72
72
  }]
73
73
  }] });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHJlZS90cmVlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sYUFBYSxDQUFDOztBQXVCdkQsTUFBTSxPQUFPLGFBQWE7OEdBQWIsYUFBYTsrR0FBYixhQUFhLFlBbkJsQixjQUFjO1lBQ2QsWUFBWTtZQUNaLGNBQWM7WUFDZCxlQUFlO1lBQ2YsZUFBZTtZQUNmLFdBQVc7WUFDWCxhQUFhO1lBQ2IsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixhQUFhO1lBQ2IsaUJBQWlCO1lBQ2pCLGVBQWU7WUFDZixnQkFBZ0I7WUFDaEIsb0JBQW9CO1lBQ3BCLHdCQUF3QixhQUVsQixnQkFBZ0IsRUFBRSxvQkFBb0I7K0dBR3ZDLGFBQWEsYUFGWCxDQUFDLGNBQWMsQ0FBQyxZQWpCdkIsY0FBYztZQUNkLFlBQVk7WUFDWixjQUFjO1lBQ2QsZUFBZTtZQUNmLGVBQWU7WUFDZixXQUFXO1lBQ1gsYUFBYTtZQUNiLGVBQWU7WUFDZixnQkFBZ0I7WUFDaEIsYUFBYTtZQUNiLGlCQUFpQjtZQUNqQixlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLG9CQUFvQjs7MkZBTWYsYUFBYTtrQkFyQnpCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFO3dCQUNMLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsb0JBQW9CO3dCQUNwQix3QkFBd0I7cUJBQzNCO29CQUNELE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDO29CQUNqRCxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUM7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGh5QnV0dG9uTW9kdWxlIH0gZnJvbSAnbmd4LXRldGh5cy9idXR0b24nO1xuaW1wb3J0IHsgVGh5Q2hlY2tib3hNb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL2NoZWNrYm94JztcbmltcG9ydCB7IFRoeUljb25Nb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgVGh5SW5wdXRNb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL2lucHV0JztcbmltcG9ydCB7IFRoeUxpc3RNb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL2xpc3QnO1xuaW1wb3J0IHsgVGh5TG9hZGluZ01vZHVsZSB9IGZyb20gJ25neC10ZXRoeXMvbG9hZGluZyc7XG5pbXBvcnQgeyBUaHlPcHRpb25Nb2R1bGUsIFRoeVNoYXJlZE1vZHVsZSB9IGZyb20gJ25neC10ZXRoeXMvc2hhcmVkJztcblxuaW1wb3J0IHsgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBUaHlUcmVlTm9kZUNvbXBvbmVudCB9IGZyb20gJy4vdHJlZS1ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaHlUcmVlQ29tcG9uZW50IH0gZnJvbSAnLi90cmVlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaHlUcmVlU2VydmljZSB9IGZyb20gJy4vdHJlZS5zZXJ2aWNlJztcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBUaHlUcmVlTm9kZURyYWdnYWJsZVBpcGUgfSBmcm9tICcuL3RyZWUucGlwZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBEcmFnRHJvcE1vZHVsZSxcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBUaHlJbnB1dE1vZHVsZSxcbiAgICAgICAgVGh5QnV0dG9uTW9kdWxlLFxuICAgICAgICBUaHlTaGFyZWRNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBUaHlMaXN0TW9kdWxlLFxuICAgICAgICBUaHlPcHRpb25Nb2R1bGUsXG4gICAgICAgIFRoeUxvYWRpbmdNb2R1bGUsXG4gICAgICAgIFRoeUljb25Nb2R1bGUsXG4gICAgICAgIFRoeUNoZWNrYm94TW9kdWxlLFxuICAgICAgICBTY3JvbGxpbmdNb2R1bGUsXG4gICAgICAgIFRoeVRyZWVDb21wb25lbnQsXG4gICAgICAgIFRoeVRyZWVOb2RlQ29tcG9uZW50LFxuICAgICAgICBUaHlUcmVlTm9kZURyYWdnYWJsZVBpcGVcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtUaHlUcmVlQ29tcG9uZW50LCBUaHlUcmVlTm9kZUNvbXBvbmVudF0sXG4gICAgcHJvdmlkZXJzOiBbVGh5VHJlZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFRoeVRyZWVNb2R1bGUge31cbiJdfQ==
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHJlZS90cmVlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUF1QnZELE1BQU0sT0FBTyxhQUFhOzhHQUFiLGFBQWE7K0dBQWIsYUFBYSxZQW5CbEIsY0FBYztZQUNkLFlBQVk7WUFDWixjQUFjO1lBQ2QsZUFBZTtZQUNmLGVBQWU7WUFDZixXQUFXO1lBQ1gsYUFBYTtZQUNiLGVBQWU7WUFDZixnQkFBZ0I7WUFDaEIsYUFBYTtZQUNiLGlCQUFpQjtZQUNqQixlQUFlO1lBQ2YsT0FBTztZQUNQLG9CQUFvQjtZQUNwQix3QkFBd0IsYUFFbEIsT0FBTyxFQUFFLG9CQUFvQjsrR0FHOUIsYUFBYSxhQUZYLENBQUMsY0FBYyxDQUFDLFlBakJ2QixjQUFjO1lBQ2QsWUFBWTtZQUNaLGNBQWM7WUFDZCxlQUFlO1lBQ2YsZUFBZTtZQUNmLFdBQVc7WUFDWCxhQUFhO1lBQ2IsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixhQUFhO1lBQ2IsaUJBQWlCO1lBQ2pCLGVBQWU7WUFDZixPQUFPO1lBQ1Asb0JBQW9COzsyRkFNZixhQUFhO2tCQXJCekIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsY0FBYzt3QkFDZCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsT0FBTzt3QkFDUCxvQkFBb0I7d0JBQ3BCLHdCQUF3QjtxQkFDM0I7b0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLG9CQUFvQixDQUFDO29CQUN4QyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUM7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGh5QnV0dG9uTW9kdWxlIH0gZnJvbSAnbmd4LXRldGh5cy9idXR0b24nO1xuaW1wb3J0IHsgVGh5Q2hlY2tib3hNb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL2NoZWNrYm94JztcbmltcG9ydCB7IFRoeUljb25Nb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgVGh5SW5wdXRNb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL2lucHV0JztcbmltcG9ydCB7IFRoeUxpc3RNb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL2xpc3QnO1xuaW1wb3J0IHsgVGh5TG9hZGluZ01vZHVsZSB9IGZyb20gJ25neC10ZXRoeXMvbG9hZGluZyc7XG5pbXBvcnQgeyBUaHlPcHRpb25Nb2R1bGUsIFRoeVNoYXJlZE1vZHVsZSB9IGZyb20gJ25neC10ZXRoeXMvc2hhcmVkJztcblxuaW1wb3J0IHsgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBUaHlUcmVlTm9kZUNvbXBvbmVudCB9IGZyb20gJy4vdHJlZS1ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaHlUcmVlIH0gZnJvbSAnLi90cmVlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaHlUcmVlU2VydmljZSB9IGZyb20gJy4vdHJlZS5zZXJ2aWNlJztcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBUaHlUcmVlTm9kZURyYWdnYWJsZVBpcGUgfSBmcm9tICcuL3RyZWUucGlwZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBEcmFnRHJvcE1vZHVsZSxcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBUaHlJbnB1dE1vZHVsZSxcbiAgICAgICAgVGh5QnV0dG9uTW9kdWxlLFxuICAgICAgICBUaHlTaGFyZWRNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBUaHlMaXN0TW9kdWxlLFxuICAgICAgICBUaHlPcHRpb25Nb2R1bGUsXG4gICAgICAgIFRoeUxvYWRpbmdNb2R1bGUsXG4gICAgICAgIFRoeUljb25Nb2R1bGUsXG4gICAgICAgIFRoeUNoZWNrYm94TW9kdWxlLFxuICAgICAgICBTY3JvbGxpbmdNb2R1bGUsXG4gICAgICAgIFRoeVRyZWUsXG4gICAgICAgIFRoeVRyZWVOb2RlQ29tcG9uZW50LFxuICAgICAgICBUaHlUcmVlTm9kZURyYWdnYWJsZVBpcGVcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtUaHlUcmVlLCBUaHlUcmVlTm9kZUNvbXBvbmVudF0sXG4gICAgcHJvdmlkZXJzOiBbVGh5VHJlZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFRoeVRyZWVNb2R1bGUge31cbiJdfQ==
@@ -6,7 +6,7 @@ import { ThyEmptyModule } from 'ngx-tethys/empty';
6
6
  import { ThyIconModule } from 'ngx-tethys/icon';
7
7
  import { ThyListModule } from 'ngx-tethys/list';
8
8
  import { ThySelectCommonModule, ThySharedModule } from 'ngx-tethys/shared';
9
- import { ThyTreeSelectComponent, ThyTreeSelectNodesComponent } from './tree-select.component';
9
+ import { ThyTreeSelect, ThyTreeSelectNodes } from './tree-select.component';
10
10
  import * as i0 from "@angular/core";
11
11
  export class ThyTreeSelectModule {
12
12
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ThyTreeSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -18,8 +18,8 @@ export class ThyTreeSelectModule {
18
18
  ThyEmptyModule,
19
19
  ThySelectCommonModule,
20
20
  ThySharedModule,
21
- ThyTreeSelectComponent,
22
- ThyTreeSelectNodesComponent], exports: [ThyTreeSelectComponent, ThyTreeSelectNodesComponent] }); }
21
+ ThyTreeSelect,
22
+ ThyTreeSelectNodes], exports: [ThyTreeSelect, ThyTreeSelectNodes] }); }
23
23
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ThyTreeSelectModule, imports: [CommonModule,
24
24
  FormsModule,
25
25
  OverlayModule,
@@ -28,8 +28,8 @@ export class ThyTreeSelectModule {
28
28
  ThyEmptyModule,
29
29
  ThySelectCommonModule,
30
30
  ThySharedModule,
31
- ThyTreeSelectComponent,
32
- ThyTreeSelectNodesComponent] }); }
31
+ ThyTreeSelect,
32
+ ThyTreeSelectNodes] }); }
33
33
  }
34
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: ThyTreeSelectModule, decorators: [{
35
35
  type: NgModule,
@@ -43,10 +43,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
43
43
  ThyEmptyModule,
44
44
  ThySelectCommonModule,
45
45
  ThySharedModule,
46
- ThyTreeSelectComponent,
47
- ThyTreeSelectNodesComponent
46
+ ThyTreeSelect,
47
+ ThyTreeSelectNodes
48
48
  ],
49
- exports: [ThyTreeSelectComponent, ThyTreeSelectNodesComponent]
49
+ exports: [ThyTreeSelect, ThyTreeSelectNodes]
50
50
  }]
51
51
  }] });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyZWUtc2VsZWN0L21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFpQjlGLE1BQU0sT0FBTyxtQkFBbUI7OEdBQW5CLG1CQUFtQjsrR0FBbkIsbUJBQW1CLFlBYnhCLFlBQVk7WUFDWixXQUFXO1lBQ1gsYUFBYTtZQUNiLGFBQWE7WUFDYixhQUFhO1lBQ2IsY0FBYztZQUNkLHFCQUFxQjtZQUNyQixlQUFlO1lBQ2Ysc0JBQXNCO1lBQ3RCLDJCQUEyQixhQUVyQixzQkFBc0IsRUFBRSwyQkFBMkI7K0dBRXBELG1CQUFtQixZQWJ4QixZQUFZO1lBQ1osV0FBVztZQUNYLGFBQWE7WUFDYixhQUFhO1lBQ2IsYUFBYTtZQUNiLGNBQWM7WUFDZCxxQkFBcUI7WUFDckIsZUFBZTtZQUNmLHNCQUFzQjtZQUN0QiwyQkFBMkI7OzJGQUl0QixtQkFBbUI7a0JBZi9CLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFO3dCQUNMLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixzQkFBc0I7d0JBQ3RCLDJCQUEyQjtxQkFDOUI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsMkJBQTJCLENBQUM7aUJBQ2pFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUaHlFbXB0eU1vZHVsZSB9IGZyb20gJ25neC10ZXRoeXMvZW1wdHknO1xuaW1wb3J0IHsgVGh5SWNvbk1vZHVsZSB9IGZyb20gJ25neC10ZXRoeXMvaWNvbic7XG5pbXBvcnQgeyBUaHlMaXN0TW9kdWxlIH0gZnJvbSAnbmd4LXRldGh5cy9saXN0JztcbmltcG9ydCB7IFRoeVNlbGVjdENvbW1vbk1vZHVsZSwgVGh5U2hhcmVkTW9kdWxlIH0gZnJvbSAnbmd4LXRldGh5cy9zaGFyZWQnO1xuaW1wb3J0IHsgVGh5VHJlZVNlbGVjdENvbXBvbmVudCwgVGh5VHJlZVNlbGVjdE5vZGVzQ29tcG9uZW50IH0gZnJvbSAnLi90cmVlLXNlbGVjdC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgT3ZlcmxheU1vZHVsZSxcbiAgICAgICAgVGh5TGlzdE1vZHVsZSxcbiAgICAgICAgVGh5SWNvbk1vZHVsZSxcbiAgICAgICAgVGh5RW1wdHlNb2R1bGUsXG4gICAgICAgIFRoeVNlbGVjdENvbW1vbk1vZHVsZSxcbiAgICAgICAgVGh5U2hhcmVkTW9kdWxlLFxuICAgICAgICBUaHlUcmVlU2VsZWN0Q29tcG9uZW50LFxuICAgICAgICBUaHlUcmVlU2VsZWN0Tm9kZXNDb21wb25lbnRcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtUaHlUcmVlU2VsZWN0Q29tcG9uZW50LCBUaHlUcmVlU2VsZWN0Tm9kZXNDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIFRoeVRyZWVTZWxlY3RNb2R1bGUge31cbiJdfQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyZWUtc2VsZWN0L21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBaUI1RSxNQUFNLE9BQU8sbUJBQW1COzhHQUFuQixtQkFBbUI7K0dBQW5CLG1CQUFtQixZQWJ4QixZQUFZO1lBQ1osV0FBVztZQUNYLGFBQWE7WUFDYixhQUFhO1lBQ2IsYUFBYTtZQUNiLGNBQWM7WUFDZCxxQkFBcUI7WUFDckIsZUFBZTtZQUNmLGFBQWE7WUFDYixrQkFBa0IsYUFFWixhQUFhLEVBQUUsa0JBQWtCOytHQUVsQyxtQkFBbUIsWUFieEIsWUFBWTtZQUNaLFdBQVc7WUFDWCxhQUFhO1lBQ2IsYUFBYTtZQUNiLGFBQWE7WUFDYixjQUFjO1lBQ2QscUJBQXFCO1lBQ3JCLGVBQWU7WUFDZixhQUFhO1lBQ2Isa0JBQWtCOzsyRkFJYixtQkFBbUI7a0JBZi9CLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFO3dCQUNMLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGtCQUFrQjtxQkFDckI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLGtCQUFrQixDQUFDO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVGh5RW1wdHlNb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL2VtcHR5JztcbmltcG9ydCB7IFRoeUljb25Nb2R1bGUgfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgVGh5TGlzdE1vZHVsZSB9IGZyb20gJ25neC10ZXRoeXMvbGlzdCc7XG5pbXBvcnQgeyBUaHlTZWxlY3RDb21tb25Nb2R1bGUsIFRoeVNoYXJlZE1vZHVsZSB9IGZyb20gJ25neC10ZXRoeXMvc2hhcmVkJztcbmltcG9ydCB7IFRoeVRyZWVTZWxlY3QsIFRoeVRyZWVTZWxlY3ROb2RlcyB9IGZyb20gJy4vdHJlZS1zZWxlY3QuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE92ZXJsYXlNb2R1bGUsXG4gICAgICAgIFRoeUxpc3RNb2R1bGUsXG4gICAgICAgIFRoeUljb25Nb2R1bGUsXG4gICAgICAgIFRoeUVtcHR5TW9kdWxlLFxuICAgICAgICBUaHlTZWxlY3RDb21tb25Nb2R1bGUsXG4gICAgICAgIFRoeVNoYXJlZE1vZHVsZSxcbiAgICAgICAgVGh5VHJlZVNlbGVjdCxcbiAgICAgICAgVGh5VHJlZVNlbGVjdE5vZGVzXG4gICAgXSxcbiAgICBleHBvcnRzOiBbVGh5VHJlZVNlbGVjdCwgVGh5VHJlZVNlbGVjdE5vZGVzXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlUcmVlU2VsZWN0TW9kdWxlIHt9XG4iXX0=