cax-design-system 2.8.1 → 2.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1723) hide show
  1. package/README.md +1 -1
  2. package/accordion/index.d.ts +286 -3
  3. package/animate/index.d.ts +41 -3
  4. package/animateonscroll/index.d.ts +75 -3
  5. package/api/index.d.ts +1856 -3
  6. package/autocomplete/index.d.ts +799 -3
  7. package/autofocus/index.d.ts +29 -3
  8. package/avatar/index.d.ts +80 -3
  9. package/avatargroup/index.d.ts +30 -3
  10. package/badge/index.d.ts +67 -5
  11. package/baseicon/index.d.ts +18 -5
  12. package/blockui/index.d.ts +77 -3
  13. package/breadcrumb/index.d.ts +105 -3
  14. package/button/index.d.ts +170 -3
  15. package/buttongroup/index.d.ts +14 -5
  16. package/calendar/index.d.ts +935 -3
  17. package/card/index.d.ts +92 -3
  18. package/carousel/index.d.ts +290 -3
  19. package/cascadeselect/index.d.ts +564 -3
  20. package/cax-design-system-2.8.2.tgz +0 -0
  21. package/chart/index.d.ts +88 -3
  22. package/checkbox/index.d.ts +204 -3
  23. package/chip/index.d.ts +63 -3
  24. package/chips/index.d.ts +305 -3
  25. package/colorpicker/index.d.ts +265 -3
  26. package/commentbox/index.d.ts +138 -5
  27. package/confirmdialog/index.d.ts +336 -3
  28. package/confirmpopup/index.d.ts +148 -3
  29. package/contextmenu/index.d.ts +261 -3
  30. package/dataview/index.d.ts +457 -3
  31. package/defer/index.d.ts +40 -3
  32. package/dialog/index.d.ts +411 -3
  33. package/divider/index.d.ts +56 -3
  34. package/dock/index.d.ts +136 -3
  35. package/dom/index.d.ts +105 -3
  36. package/dragdrop/index.d.ts +120 -3
  37. package/dropdown/index.d.ts +818 -3
  38. package/dynamicdialog/index.d.ts +490 -3
  39. package/editor/index.d.ts +177 -3
  40. package/fesm2022/cax-design-system-accordion.mjs +2 -2
  41. package/fesm2022/cax-design-system-accordion.mjs.map +1 -1
  42. package/fesm2022/cax-design-system-animate.mjs +1 -1
  43. package/fesm2022/cax-design-system-animate.mjs.map +1 -1
  44. package/fesm2022/cax-design-system-animateonscroll.mjs +1 -1
  45. package/fesm2022/cax-design-system-animateonscroll.mjs.map +1 -1
  46. package/fesm2022/cax-design-system-api.mjs +1 -1
  47. package/fesm2022/cax-design-system-api.mjs.map +1 -1
  48. package/fesm2022/cax-design-system-autocomplete.mjs +1 -1
  49. package/fesm2022/cax-design-system-autocomplete.mjs.map +1 -1
  50. package/fesm2022/cax-design-system-autofocus.mjs +1 -1
  51. package/fesm2022/cax-design-system-autofocus.mjs.map +1 -1
  52. package/fesm2022/cax-design-system-avatar.mjs +1 -1
  53. package/fesm2022/cax-design-system-avatar.mjs.map +1 -1
  54. package/fesm2022/cax-design-system-avatargroup.mjs +1 -1
  55. package/fesm2022/cax-design-system-avatargroup.mjs.map +1 -1
  56. package/fesm2022/cax-design-system-badge.mjs +1 -1
  57. package/fesm2022/cax-design-system-badge.mjs.map +1 -1
  58. package/fesm2022/cax-design-system-baseicon.mjs +1 -1
  59. package/fesm2022/cax-design-system-baseicon.mjs.map +1 -1
  60. package/fesm2022/cax-design-system-blockui.mjs +1 -1
  61. package/fesm2022/cax-design-system-blockui.mjs.map +1 -1
  62. package/fesm2022/cax-design-system-breadcrumb.mjs +1 -1
  63. package/fesm2022/cax-design-system-breadcrumb.mjs.map +1 -1
  64. package/fesm2022/cax-design-system-button.mjs +1 -1
  65. package/fesm2022/cax-design-system-button.mjs.map +1 -1
  66. package/fesm2022/cax-design-system-buttongroup.mjs +1 -1
  67. package/fesm2022/cax-design-system-buttongroup.mjs.map +1 -1
  68. package/fesm2022/cax-design-system-calendar.mjs +3 -3
  69. package/fesm2022/cax-design-system-calendar.mjs.map +1 -1
  70. package/fesm2022/cax-design-system-card.mjs +1 -1
  71. package/fesm2022/cax-design-system-card.mjs.map +1 -1
  72. package/fesm2022/cax-design-system-carousel.mjs +1 -1
  73. package/fesm2022/cax-design-system-carousel.mjs.map +1 -1
  74. package/fesm2022/cax-design-system-cascadeselect.mjs +1 -1
  75. package/fesm2022/cax-design-system-cascadeselect.mjs.map +1 -1
  76. package/fesm2022/cax-design-system-chart.mjs +1 -1
  77. package/fesm2022/cax-design-system-chart.mjs.map +1 -1
  78. package/fesm2022/cax-design-system-checkbox.mjs +1 -1
  79. package/fesm2022/cax-design-system-checkbox.mjs.map +1 -1
  80. package/fesm2022/cax-design-system-chip.mjs +1 -1
  81. package/fesm2022/cax-design-system-chip.mjs.map +1 -1
  82. package/fesm2022/cax-design-system-chips.mjs +2 -2
  83. package/fesm2022/cax-design-system-chips.mjs.map +1 -1
  84. package/fesm2022/cax-design-system-colorpicker.mjs +1 -1
  85. package/fesm2022/cax-design-system-colorpicker.mjs.map +1 -1
  86. package/fesm2022/cax-design-system-commentbox.mjs +3 -3
  87. package/fesm2022/cax-design-system-commentbox.mjs.map +1 -1
  88. package/fesm2022/cax-design-system-confirmdialog.mjs +1 -1
  89. package/fesm2022/cax-design-system-confirmdialog.mjs.map +1 -1
  90. package/fesm2022/cax-design-system-confirmpopup.mjs +2 -2
  91. package/fesm2022/cax-design-system-confirmpopup.mjs.map +1 -1
  92. package/fesm2022/cax-design-system-contextmenu.mjs +1 -1
  93. package/fesm2022/cax-design-system-contextmenu.mjs.map +1 -1
  94. package/fesm2022/cax-design-system-dataview.mjs +1 -1
  95. package/fesm2022/cax-design-system-dataview.mjs.map +1 -1
  96. package/fesm2022/cax-design-system-defer.mjs +1 -1
  97. package/fesm2022/cax-design-system-defer.mjs.map +1 -1
  98. package/fesm2022/cax-design-system-dialog.mjs +1 -1
  99. package/fesm2022/cax-design-system-dialog.mjs.map +1 -1
  100. package/fesm2022/cax-design-system-divider.mjs +1 -1
  101. package/fesm2022/cax-design-system-divider.mjs.map +1 -1
  102. package/fesm2022/cax-design-system-dock.mjs +1 -1
  103. package/fesm2022/cax-design-system-dock.mjs.map +1 -1
  104. package/fesm2022/cax-design-system-dom.mjs.map +1 -1
  105. package/fesm2022/cax-design-system-dragdrop.mjs +1 -1
  106. package/fesm2022/cax-design-system-dragdrop.mjs.map +1 -1
  107. package/fesm2022/cax-design-system-dropdown.mjs +4 -4
  108. package/fesm2022/cax-design-system-dropdown.mjs.map +1 -1
  109. package/fesm2022/cax-design-system-dynamicdialog.mjs +1 -1
  110. package/fesm2022/cax-design-system-dynamicdialog.mjs.map +1 -1
  111. package/fesm2022/cax-design-system-editor.mjs +1 -1
  112. package/fesm2022/cax-design-system-editor.mjs.map +1 -1
  113. package/fesm2022/cax-design-system-fieldset.mjs +2 -2
  114. package/fesm2022/cax-design-system-fieldset.mjs.map +1 -1
  115. package/fesm2022/cax-design-system-fileupload.mjs +1 -1
  116. package/fesm2022/cax-design-system-fileupload.mjs.map +1 -1
  117. package/fesm2022/cax-design-system-floatlabel.mjs +1 -1
  118. package/fesm2022/cax-design-system-floatlabel.mjs.map +1 -1
  119. package/fesm2022/cax-design-system-focustrap.mjs +1 -1
  120. package/fesm2022/cax-design-system-focustrap.mjs.map +1 -1
  121. package/fesm2022/cax-design-system-galleria.mjs +1 -1
  122. package/fesm2022/cax-design-system-galleria.mjs.map +1 -1
  123. package/fesm2022/cax-design-system-iconfield.mjs +1 -1
  124. package/fesm2022/cax-design-system-iconfield.mjs.map +1 -1
  125. package/fesm2022/cax-design-system-icons-angledoubledown.mjs.map +1 -1
  126. package/fesm2022/cax-design-system-icons-angledoubleleft.mjs.map +1 -1
  127. package/fesm2022/cax-design-system-icons-angledoubleright.mjs.map +1 -1
  128. package/fesm2022/cax-design-system-icons-angledoubleup.mjs.map +1 -1
  129. package/fesm2022/cax-design-system-icons-angledown.mjs.map +1 -1
  130. package/fesm2022/cax-design-system-icons-angleleft.mjs.map +1 -1
  131. package/fesm2022/cax-design-system-icons-angleright.mjs.map +1 -1
  132. package/fesm2022/cax-design-system-icons-angleup.mjs.map +1 -1
  133. package/fesm2022/cax-design-system-icons-arrowdown.mjs.map +1 -1
  134. package/fesm2022/cax-design-system-icons-arrowdownleft.mjs.map +1 -1
  135. package/fesm2022/cax-design-system-icons-arrowdownright.mjs.map +1 -1
  136. package/fesm2022/cax-design-system-icons-arrowleft.mjs.map +1 -1
  137. package/fesm2022/cax-design-system-icons-arrowright.mjs.map +1 -1
  138. package/fesm2022/cax-design-system-icons-arrowup.mjs.map +1 -1
  139. package/fesm2022/cax-design-system-icons-ban.mjs.map +1 -1
  140. package/fesm2022/cax-design-system-icons-bars.mjs.map +1 -1
  141. package/fesm2022/cax-design-system-icons-blank.mjs.map +1 -1
  142. package/fesm2022/cax-design-system-icons-calendar.mjs.map +1 -1
  143. package/fesm2022/cax-design-system-icons-caretleft.mjs.map +1 -1
  144. package/fesm2022/cax-design-system-icons-caretright.mjs.map +1 -1
  145. package/fesm2022/cax-design-system-icons-check.mjs.map +1 -1
  146. package/fesm2022/cax-design-system-icons-chevrondown.mjs.map +1 -1
  147. package/fesm2022/cax-design-system-icons-chevronleft.mjs.map +1 -1
  148. package/fesm2022/cax-design-system-icons-chevronright.mjs.map +1 -1
  149. package/fesm2022/cax-design-system-icons-chevronup.mjs.map +1 -1
  150. package/fesm2022/cax-design-system-icons-exclamationtriangle.mjs.map +1 -1
  151. package/fesm2022/cax-design-system-icons-eye.mjs.map +1 -1
  152. package/fesm2022/cax-design-system-icons-eyeslash.mjs.map +1 -1
  153. package/fesm2022/cax-design-system-icons-filter.mjs.map +1 -1
  154. package/fesm2022/cax-design-system-icons-filterslash.mjs.map +1 -1
  155. package/fesm2022/cax-design-system-icons-home.mjs.map +1 -1
  156. package/fesm2022/cax-design-system-icons-infocircle.mjs.map +1 -1
  157. package/fesm2022/cax-design-system-icons-minus.mjs.map +1 -1
  158. package/fesm2022/cax-design-system-icons-pencil.mjs.map +1 -1
  159. package/fesm2022/cax-design-system-icons-plus.mjs.map +1 -1
  160. package/fesm2022/cax-design-system-icons-refresh.mjs.map +1 -1
  161. package/fesm2022/cax-design-system-icons-search.mjs.map +1 -1
  162. package/fesm2022/cax-design-system-icons-searchminus.mjs.map +1 -1
  163. package/fesm2022/cax-design-system-icons-searchplus.mjs.map +1 -1
  164. package/fesm2022/cax-design-system-icons-sortalt.mjs.map +1 -1
  165. package/fesm2022/cax-design-system-icons-sortamountdown.mjs.map +1 -1
  166. package/fesm2022/cax-design-system-icons-sortamountupalt.mjs.map +1 -1
  167. package/fesm2022/cax-design-system-icons-spinner.mjs.map +1 -1
  168. package/fesm2022/cax-design-system-icons-star.mjs.map +1 -1
  169. package/fesm2022/cax-design-system-icons-starfill.mjs.map +1 -1
  170. package/fesm2022/cax-design-system-icons-thlarge.mjs.map +1 -1
  171. package/fesm2022/cax-design-system-icons-times.mjs.map +1 -1
  172. package/fesm2022/cax-design-system-icons-timescircle.mjs.map +1 -1
  173. package/fesm2022/cax-design-system-icons-trash.mjs.map +1 -1
  174. package/fesm2022/cax-design-system-icons-undo.mjs.map +1 -1
  175. package/fesm2022/cax-design-system-icons-upload.mjs.map +1 -1
  176. package/fesm2022/cax-design-system-icons-windowmaximize.mjs.map +1 -1
  177. package/fesm2022/cax-design-system-icons-windowminimize.mjs.map +1 -1
  178. package/fesm2022/cax-design-system-image.mjs +2 -2
  179. package/fesm2022/cax-design-system-image.mjs.map +1 -1
  180. package/fesm2022/cax-design-system-inplace.mjs +1 -1
  181. package/fesm2022/cax-design-system-inplace.mjs.map +1 -1
  182. package/fesm2022/cax-design-system-inputgroup.mjs +1 -1
  183. package/fesm2022/cax-design-system-inputgroup.mjs.map +1 -1
  184. package/fesm2022/cax-design-system-inputgroupaddon.mjs +1 -1
  185. package/fesm2022/cax-design-system-inputgroupaddon.mjs.map +1 -1
  186. package/fesm2022/cax-design-system-inputicon.mjs +1 -1
  187. package/fesm2022/cax-design-system-inputicon.mjs.map +1 -1
  188. package/fesm2022/cax-design-system-inputmask.mjs +1 -1
  189. package/fesm2022/cax-design-system-inputmask.mjs.map +1 -1
  190. package/fesm2022/cax-design-system-inputnumber.mjs +1 -1
  191. package/fesm2022/cax-design-system-inputnumber.mjs.map +1 -1
  192. package/fesm2022/cax-design-system-inputotp.mjs +1 -1
  193. package/fesm2022/cax-design-system-inputotp.mjs.map +1 -1
  194. package/fesm2022/cax-design-system-inputswitch.mjs +1 -1
  195. package/fesm2022/cax-design-system-inputswitch.mjs.map +1 -1
  196. package/fesm2022/cax-design-system-inputtext.mjs +1 -1
  197. package/fesm2022/cax-design-system-inputtext.mjs.map +1 -1
  198. package/fesm2022/cax-design-system-inputtextarea.mjs +1 -1
  199. package/fesm2022/cax-design-system-inputtextarea.mjs.map +1 -1
  200. package/fesm2022/cax-design-system-keyfilter.mjs +1 -1
  201. package/fesm2022/cax-design-system-keyfilter.mjs.map +1 -1
  202. package/fesm2022/cax-design-system-knob.mjs +1 -1
  203. package/fesm2022/cax-design-system-knob.mjs.map +1 -1
  204. package/fesm2022/cax-design-system-listbox.mjs +1 -1
  205. package/fesm2022/cax-design-system-listbox.mjs.map +1 -1
  206. package/fesm2022/cax-design-system-logo.mjs +1 -1
  207. package/fesm2022/cax-design-system-logo.mjs.map +1 -1
  208. package/fesm2022/cax-design-system-megamenu.mjs +1 -1
  209. package/fesm2022/cax-design-system-megamenu.mjs.map +1 -1
  210. package/fesm2022/cax-design-system-menu.mjs +3 -3
  211. package/fesm2022/cax-design-system-menu.mjs.map +1 -1
  212. package/fesm2022/cax-design-system-menubar.mjs +1 -1
  213. package/fesm2022/cax-design-system-menubar.mjs.map +1 -1
  214. package/fesm2022/cax-design-system-message.mjs +1 -1
  215. package/fesm2022/cax-design-system-message.mjs.map +1 -1
  216. package/fesm2022/cax-design-system-messages.mjs +2 -2
  217. package/fesm2022/cax-design-system-messages.mjs.map +1 -1
  218. package/fesm2022/cax-design-system-metergroup.mjs +1 -1
  219. package/fesm2022/cax-design-system-metergroup.mjs.map +1 -1
  220. package/fesm2022/cax-design-system-multiselect.mjs +1 -1
  221. package/fesm2022/cax-design-system-multiselect.mjs.map +1 -1
  222. package/fesm2022/cax-design-system-navigation.mjs +3 -3
  223. package/fesm2022/cax-design-system-navigation.mjs.map +1 -1
  224. package/fesm2022/cax-design-system-orderlist.mjs +1 -1
  225. package/fesm2022/cax-design-system-orderlist.mjs.map +1 -1
  226. package/fesm2022/cax-design-system-organizationchart.mjs +2 -2
  227. package/fesm2022/cax-design-system-organizationchart.mjs.map +1 -1
  228. package/fesm2022/cax-design-system-overlay.mjs +2 -2
  229. package/fesm2022/cax-design-system-overlay.mjs.map +1 -1
  230. package/fesm2022/cax-design-system-overlaypanel.mjs +3 -3
  231. package/fesm2022/cax-design-system-overlaypanel.mjs.map +1 -1
  232. package/fesm2022/cax-design-system-paginator.mjs +1 -1
  233. package/fesm2022/cax-design-system-paginator.mjs.map +1 -1
  234. package/fesm2022/cax-design-system-panel.mjs +2 -2
  235. package/fesm2022/cax-design-system-panel.mjs.map +1 -1
  236. package/fesm2022/cax-design-system-panelmenu.mjs +2 -2
  237. package/fesm2022/cax-design-system-panelmenu.mjs.map +1 -1
  238. package/fesm2022/cax-design-system-password.mjs +1 -1
  239. package/fesm2022/cax-design-system-password.mjs.map +1 -1
  240. package/fesm2022/cax-design-system-picklist.mjs +1 -1
  241. package/fesm2022/cax-design-system-picklist.mjs.map +1 -1
  242. package/fesm2022/cax-design-system-progressbar.mjs +1 -1
  243. package/fesm2022/cax-design-system-progressbar.mjs.map +1 -1
  244. package/fesm2022/cax-design-system-progressspinner.mjs +1 -1
  245. package/fesm2022/cax-design-system-progressspinner.mjs.map +1 -1
  246. package/fesm2022/cax-design-system-radiobutton.mjs +1 -1
  247. package/fesm2022/cax-design-system-radiobutton.mjs.map +1 -1
  248. package/fesm2022/cax-design-system-rating.mjs +1 -1
  249. package/fesm2022/cax-design-system-rating.mjs.map +1 -1
  250. package/fesm2022/cax-design-system-ripple.mjs +1 -1
  251. package/fesm2022/cax-design-system-ripple.mjs.map +1 -1
  252. package/fesm2022/cax-design-system-scroller.mjs +2 -2
  253. package/fesm2022/cax-design-system-scroller.mjs.map +1 -1
  254. package/fesm2022/cax-design-system-scrollpanel.mjs +1 -1
  255. package/fesm2022/cax-design-system-scrollpanel.mjs.map +1 -1
  256. package/fesm2022/cax-design-system-scrolltop.mjs +2 -2
  257. package/fesm2022/cax-design-system-scrolltop.mjs.map +1 -1
  258. package/fesm2022/cax-design-system-selectbutton.mjs +1 -1
  259. package/fesm2022/cax-design-system-selectbutton.mjs.map +1 -1
  260. package/fesm2022/cax-design-system-sidebar.mjs +4 -4
  261. package/fesm2022/cax-design-system-sidebar.mjs.map +1 -1
  262. package/fesm2022/cax-design-system-skeleton.mjs +1 -1
  263. package/fesm2022/cax-design-system-skeleton.mjs.map +1 -1
  264. package/fesm2022/cax-design-system-slidemenu.mjs +1 -1
  265. package/fesm2022/cax-design-system-slidemenu.mjs.map +1 -1
  266. package/fesm2022/cax-design-system-slider.mjs +1 -1
  267. package/fesm2022/cax-design-system-slider.mjs.map +1 -1
  268. package/fesm2022/cax-design-system-speeddial.mjs +1 -1
  269. package/fesm2022/cax-design-system-speeddial.mjs.map +1 -1
  270. package/fesm2022/cax-design-system-spinner.mjs +1 -1
  271. package/fesm2022/cax-design-system-spinner.mjs.map +1 -1
  272. package/fesm2022/cax-design-system-splitbutton.mjs +1 -1
  273. package/fesm2022/cax-design-system-splitbutton.mjs.map +1 -1
  274. package/fesm2022/cax-design-system-splitter.mjs +1 -1
  275. package/fesm2022/cax-design-system-splitter.mjs.map +1 -1
  276. package/fesm2022/cax-design-system-stepper.mjs +2 -2
  277. package/fesm2022/cax-design-system-stepper.mjs.map +1 -1
  278. package/fesm2022/cax-design-system-steps.mjs +1 -1
  279. package/fesm2022/cax-design-system-steps.mjs.map +1 -1
  280. package/fesm2022/cax-design-system-styleclass.mjs +1 -1
  281. package/fesm2022/cax-design-system-styleclass.mjs.map +1 -1
  282. package/fesm2022/cax-design-system-table.mjs +1 -1
  283. package/fesm2022/cax-design-system-table.mjs.map +1 -1
  284. package/fesm2022/cax-design-system-tableconfiguration.mjs +19 -11
  285. package/fesm2022/cax-design-system-tableconfiguration.mjs.map +1 -1
  286. package/fesm2022/cax-design-system-tabmenu.mjs +1 -1
  287. package/fesm2022/cax-design-system-tabmenu.mjs.map +1 -1
  288. package/fesm2022/cax-design-system-tabview.mjs +1 -1
  289. package/fesm2022/cax-design-system-tabview.mjs.map +1 -1
  290. package/fesm2022/cax-design-system-tag.mjs +1 -1
  291. package/fesm2022/cax-design-system-tag.mjs.map +1 -1
  292. package/fesm2022/cax-design-system-terminal.mjs +1 -1
  293. package/fesm2022/cax-design-system-terminal.mjs.map +1 -1
  294. package/fesm2022/cax-design-system-tieredmenu.mjs +1 -1
  295. package/fesm2022/cax-design-system-tieredmenu.mjs.map +1 -1
  296. package/fesm2022/cax-design-system-timeline.mjs +1 -1
  297. package/fesm2022/cax-design-system-timeline.mjs.map +1 -1
  298. package/fesm2022/cax-design-system-toast.mjs +2 -2
  299. package/fesm2022/cax-design-system-toast.mjs.map +1 -1
  300. package/fesm2022/cax-design-system-togglebutton.mjs +1 -1
  301. package/fesm2022/cax-design-system-togglebutton.mjs.map +1 -1
  302. package/fesm2022/cax-design-system-toggleswitch.mjs +1 -1
  303. package/fesm2022/cax-design-system-toggleswitch.mjs.map +1 -1
  304. package/fesm2022/cax-design-system-toolbar.mjs +1 -1
  305. package/fesm2022/cax-design-system-toolbar.mjs.map +1 -1
  306. package/fesm2022/cax-design-system-tooltip.mjs +1 -1
  307. package/fesm2022/cax-design-system-tooltip.mjs.map +1 -1
  308. package/fesm2022/cax-design-system-tree.mjs +1 -1
  309. package/fesm2022/cax-design-system-tree.mjs.map +1 -1
  310. package/fesm2022/cax-design-system-treeselect.mjs +1 -1
  311. package/fesm2022/cax-design-system-treeselect.mjs.map +1 -1
  312. package/fesm2022/cax-design-system-treetable.mjs +1 -1
  313. package/fesm2022/cax-design-system-treetable.mjs.map +1 -1
  314. package/fesm2022/cax-design-system-tristatecheckbox.mjs +2 -2
  315. package/fesm2022/cax-design-system-tristatecheckbox.mjs.map +1 -1
  316. package/fesm2022/cax-design-system-upload.mjs +1 -1
  317. package/fesm2022/cax-design-system-upload.mjs.map +1 -1
  318. package/fesm2022/cax-design-system-utils.mjs.map +1 -1
  319. package/fesm2022/cax-design-system-virtualscroller.mjs +1 -1
  320. package/fesm2022/cax-design-system-virtualscroller.mjs.map +1 -1
  321. package/fieldset/index.d.ts +140 -3
  322. package/fileupload/index.d.ts +606 -3
  323. package/floatlabel/index.d.ts +19 -3
  324. package/focustrap/index.d.ts +35 -3
  325. package/galleria/index.d.ts +502 -3
  326. package/iconfield/index.d.ts +26 -3
  327. package/icons/angledoubledown/index.d.ts +9 -5
  328. package/icons/angledoubleleft/index.d.ts +9 -5
  329. package/icons/angledoubleright/index.d.ts +9 -5
  330. package/icons/angledoubleup/index.d.ts +9 -5
  331. package/icons/angledown/index.d.ts +9 -5
  332. package/icons/angleleft/index.d.ts +9 -5
  333. package/icons/angleright/index.d.ts +9 -5
  334. package/icons/angleup/index.d.ts +9 -5
  335. package/icons/arrowdown/index.d.ts +12 -5
  336. package/icons/arrowdownleft/index.d.ts +9 -5
  337. package/icons/arrowdownright/index.d.ts +9 -5
  338. package/icons/arrowleft/index.d.ts +11 -5
  339. package/icons/arrowright/index.d.ts +9 -5
  340. package/icons/arrowup/index.d.ts +11 -5
  341. package/icons/ban/index.d.ts +11 -5
  342. package/icons/bars/index.d.ts +9 -5
  343. package/icons/blank/index.d.ts +9 -5
  344. package/icons/calendar/index.d.ts +9 -5
  345. package/icons/caretleft/index.d.ts +9 -5
  346. package/icons/caretright/index.d.ts +9 -5
  347. package/icons/check/index.d.ts +9 -5
  348. package/icons/chevrondown/index.d.ts +9 -5
  349. package/icons/chevronleft/index.d.ts +9 -5
  350. package/icons/chevronright/index.d.ts +9 -5
  351. package/icons/chevronup/index.d.ts +9 -5
  352. package/icons/exclamationtriangle/index.d.ts +12 -5
  353. package/icons/eye/index.d.ts +9 -5
  354. package/icons/eyeslash/index.d.ts +11 -5
  355. package/icons/filter/index.d.ts +11 -5
  356. package/icons/filterslash/index.d.ts +11 -5
  357. package/icons/home/index.d.ts +11 -5
  358. package/icons/infocircle/index.d.ts +11 -5
  359. package/icons/minus/index.d.ts +9 -5
  360. package/icons/pencil/index.d.ts +11 -5
  361. package/icons/plus/index.d.ts +11 -5
  362. package/icons/refresh/index.d.ts +11 -5
  363. package/icons/search/index.d.ts +11 -5
  364. package/icons/searchminus/index.d.ts +11 -5
  365. package/icons/searchplus/index.d.ts +11 -5
  366. package/icons/sortalt/index.d.ts +11 -5
  367. package/icons/sortamountdown/index.d.ts +11 -5
  368. package/icons/sortamountupalt/index.d.ts +11 -5
  369. package/icons/spinner/index.d.ts +11 -5
  370. package/icons/star/index.d.ts +11 -5
  371. package/icons/starfill/index.d.ts +11 -5
  372. package/icons/thlarge/index.d.ts +11 -5
  373. package/icons/times/index.d.ts +9 -5
  374. package/icons/timescircle/index.d.ts +11 -5
  375. package/icons/trash/index.d.ts +11 -5
  376. package/icons/undo/index.d.ts +11 -5
  377. package/icons/upload/index.d.ts +11 -5
  378. package/icons/windowmaximize/index.d.ts +11 -5
  379. package/icons/windowminimize/index.d.ts +11 -5
  380. package/image/index.d.ts +228 -3
  381. package/index.d.ts +2 -5
  382. package/inplace/index.d.ts +130 -3
  383. package/inputgroup/index.d.ts +48 -3
  384. package/inputgroupaddon/index.d.ts +35 -3
  385. package/inputicon/index.d.ts +22 -3
  386. package/inputmask/index.d.ts +304 -3
  387. package/inputnumber/index.d.ts +443 -3
  388. package/inputotp/index.d.ts +189 -3
  389. package/inputswitch/index.d.ts +123 -3
  390. package/inputtext/index.d.ts +76 -5
  391. package/inputtextarea/index.d.ts +112 -3
  392. package/keyfilter/index.d.ts +65 -3
  393. package/knob/index.d.ts +179 -3
  394. package/listbox/index.d.ts +620 -3
  395. package/logo/index.d.ts +20 -5
  396. package/megamenu/index.d.ts +230 -3
  397. package/menu/index.d.ts +222 -3
  398. package/menubar/index.d.ts +290 -3
  399. package/message/index.d.ts +53 -3
  400. package/messages/index.d.ts +140 -3
  401. package/metergroup/index.d.ts +224 -3
  402. package/multiselect/index.d.ts +974 -3
  403. package/navigation/index.d.ts +105 -5
  404. package/orderlist/index.d.ts +381 -3
  405. package/organizationchart/index.d.ts +192 -3
  406. package/overlay/index.d.ts +246 -3
  407. package/overlaypanel/index.d.ts +170 -3
  408. package/package.json +229 -569
  409. package/paginator/index.d.ts +249 -3
  410. package/panel/index.d.ts +185 -3
  411. package/panelmenu/index.d.ts +249 -3
  412. package/password/index.d.ts +342 -3
  413. package/picklist/index.d.ts +696 -3
  414. package/progressbar/index.d.ts +61 -3
  415. package/progressspinner/index.d.ts +58 -3
  416. package/radiobutton/index.d.ts +173 -3
  417. package/rating/index.d.ts +181 -3
  418. package/resources/cax.min.scss +1 -1
  419. package/resources/cax.scss +1 -0
  420. package/resources/components/menu/menu.scss +1 -0
  421. package/resources/components/navigation/navigation.scss +1 -0
  422. package/resources/components/tableconfiguration/tableconfiguration.scss +10 -0
  423. package/ripple/index.d.ts +37 -3
  424. package/scroller/index.d.ts +528 -3
  425. package/scrollpanel/index.d.ts +116 -3
  426. package/scrolltop/index.d.ts +117 -3
  427. package/selectbutton/index.d.ts +184 -3
  428. package/sidebar/index.d.ts +213 -3
  429. package/skeleton/index.d.ts +69 -3
  430. package/slidemenu/index.d.ts +339 -3
  431. package/slider/index.d.ts +214 -3
  432. package/speeddial/index.d.ts +319 -3
  433. package/spinner/index.d.ts +93 -5
  434. package/splitbutton/index.d.ts +264 -3
  435. package/splitter/index.d.ts +201 -3
  436. package/stepper/index.d.ts +145 -3
  437. package/steps/index.d.ts +87 -3
  438. package/styleclass/index.d.ts +109 -3
  439. package/table/index.d.ts +2556 -3
  440. package/tableconfiguration/index.d.ts +25 -5
  441. package/tabmenu/index.d.ts +160 -3
  442. package/tabview/index.d.ts +357 -3
  443. package/tag/index.d.ts +82 -3
  444. package/terminal/index.d.ts +68 -3
  445. package/tieredmenu/index.d.ts +307 -3
  446. package/timeline/index.d.ts +100 -3
  447. package/toast/index.d.ts +202 -3
  448. package/togglebutton/index.d.ts +150 -3
  449. package/toggleswitch/index.d.ts +25 -5
  450. package/toolbar/index.d.ts +64 -3
  451. package/tooltip/index.d.ts +218 -3
  452. package/tree/index.d.ts +673 -3
  453. package/treeselect/index.d.ts +517 -3
  454. package/treetable/index.d.ts +1461 -3
  455. package/tristatecheckbox/index.d.ts +155 -3
  456. package/ts-helpers/index.d.ts +6 -5
  457. package/upload/index.d.ts +81 -5
  458. package/utils/index.d.ts +35 -5
  459. package/virtualscroller/index.d.ts +161 -3
  460. package/accordion/accordion.d.ts +0 -224
  461. package/accordion/accordion.interface.d.ts +0 -49
  462. package/accordion/accordion.module.d.ts +0 -13
  463. package/accordion/public_api.d.ts +0 -3
  464. package/animate/animate.d.ts +0 -40
  465. package/animate/public_api.d.ts +0 -1
  466. package/animateonscroll/animateonscroll.d.ts +0 -75
  467. package/animateonscroll/public_api.d.ts +0 -1
  468. package/api/blockableui.d.ts +0 -10
  469. package/api/caxconfig.d.ts +0 -24
  470. package/api/confirmaeventtype.d.ts +0 -8
  471. package/api/confirmation.d.ts +0 -96
  472. package/api/confirmationservice.d.ts +0 -30
  473. package/api/contextmenuservice.d.ts +0 -11
  474. package/api/filtermatchmode.d.ts +0 -22
  475. package/api/filtermetadata.d.ts +0 -18
  476. package/api/filteroperator.d.ts +0 -4
  477. package/api/filterservice.d.ts +0 -10
  478. package/api/lazyloadevent.d.ts +0 -47
  479. package/api/lazyloadmeta.d.ts +0 -19
  480. package/api/megamenuitem.d.ts +0 -130
  481. package/api/menuitem.d.ts +0 -176
  482. package/api/message.d.ts +0 -30
  483. package/api/messageservice.d.ts +0 -32
  484. package/api/overlayoptions.d.ts +0 -188
  485. package/api/overlayservice.d.ts +0 -9
  486. package/api/primeicons.d.ts +0 -313
  487. package/api/public_api.d.ts +0 -34
  488. package/api/scrolleroptions.d.ts +0 -116
  489. package/api/selectitem.d.ts +0 -12
  490. package/api/selectitemgroup.d.ts +0 -10
  491. package/api/shared.d.ts +0 -24
  492. package/api/sortevent.d.ts +0 -12
  493. package/api/sortmeta.d.ts +0 -8
  494. package/api/tablestate.d.ts +0 -60
  495. package/api/themegeneratorservice.d.ts +0 -12
  496. package/api/tooltipoptions.d.ts +0 -69
  497. package/api/translation.d.ts +0 -135
  498. package/api/translationkeys.d.ts +0 -50
  499. package/api/treedragdropservice.d.ts +0 -12
  500. package/api/treenode.d.ts +0 -91
  501. package/api/treenodedragevent.d.ts +0 -27
  502. package/api/treetablenode.d.ts +0 -36
  503. package/autocomplete/autocomplete.d.ts +0 -616
  504. package/autocomplete/autocomplete.interface.d.ts +0 -164
  505. package/autocomplete/autocomplete.module.d.ts +0 -20
  506. package/autocomplete/public_api.d.ts +0 -3
  507. package/autofocus/autofocus.d.ts +0 -28
  508. package/autofocus/public_api.d.ts +0 -1
  509. package/avatar/avatar.d.ts +0 -73
  510. package/avatar/avatar.module.d.ts +0 -7
  511. package/avatar/public_api.d.ts +0 -2
  512. package/avatargroup/avatargroup.d.ts +0 -21
  513. package/avatargroup/avatargroup.module.d.ts +0 -9
  514. package/avatargroup/public_api.d.ts +0 -2
  515. package/badge/badge.d.ts +0 -21
  516. package/badge/badge.directive.d.ts +0 -35
  517. package/badge/badge.module.d.ts +0 -10
  518. package/badge/public_api.d.ts +0 -3
  519. package/baseicon/baseicon.d.ts +0 -15
  520. package/baseicon/public_api.d.ts +0 -1
  521. package/blockui/blockui.d.ts +0 -64
  522. package/blockui/blockui.interface.d.ts +0 -11
  523. package/blockui/public_api.d.ts +0 -2
  524. package/breadcrumb/breadcrumb.d.ts +0 -55
  525. package/breadcrumb/breadcrumb.interface.d.ts +0 -38
  526. package/breadcrumb/breadcrumb.module.d.ts +0 -13
  527. package/breadcrumb/public_api.d.ts +0 -3
  528. package/button/button.d.ts +0 -85
  529. package/button/button.directive.d.ts +0 -49
  530. package/button/button.interface.d.ts +0 -30
  531. package/button/button.module.d.ts +0 -9
  532. package/button/public_api.d.ts +0 -4
  533. package/buttongroup/buttongroup.d.ts +0 -11
  534. package/buttongroup/public_api.d.ts +0 -1
  535. package/calendar/calendar.d.ts +0 -722
  536. package/calendar/calendar.interface.d.ts +0 -204
  537. package/calendar/calendar.module.d.ts +0 -9
  538. package/calendar/public_api.d.ts +0 -3
  539. package/card/card.d.ts +0 -53
  540. package/card/card.interface.d.ts +0 -27
  541. package/card/card.module.d.ts +0 -11
  542. package/card/public_api.d.ts +0 -3
  543. package/carousel/carousel.d.ts +0 -227
  544. package/carousel/carousel.interface.d.ts +0 -63
  545. package/carousel/public_api.d.ts +0 -2
  546. package/cascadeselect/cascadeselect.d.ts +0 -435
  547. package/cascadeselect/cascadeselect.interface.d.ts +0 -115
  548. package/cascadeselect/cascadeselect.module.d.ts +0 -15
  549. package/cascadeselect/public_api.d.ts +0 -3
  550. package/chart/chart.d.ts +0 -87
  551. package/chart/public_api.d.ts +0 -1
  552. package/checkbox/checkbox.d.ts +0 -168
  553. package/checkbox/checkbox.interface.d.ts +0 -26
  554. package/checkbox/checkbox.module.d.ts +0 -10
  555. package/checkbox/public_api.d.ts +0 -3
  556. package/chip/chip.d.ts +0 -38
  557. package/chip/chip.interface.d.ts +0 -15
  558. package/chip/chip.module.d.ts +0 -10
  559. package/chip/public_api.d.ts +0 -3
  560. package/chips/chips.d.ts +0 -233
  561. package/chips/chips.interface.d.ts +0 -58
  562. package/chips/chips.module.d.ts +0 -14
  563. package/chips/public_api.d.ts +0 -3
  564. package/colorpicker/colorpicker.d.ts +0 -240
  565. package/colorpicker/colorpicker.interface.d.ts +0 -15
  566. package/colorpicker/colorpicker.module.d.ts +0 -9
  567. package/colorpicker/public_api.d.ts +0 -3
  568. package/commentbox/commentbox.d.ts +0 -120
  569. package/commentbox/commentbox.module.d.ts +0 -17
  570. package/commentbox/public_api.d.ts +0 -2
  571. package/confirmdialog/confirmdialog.d.ts +0 -281
  572. package/confirmdialog/confirmdialog.interface.d.ts +0 -39
  573. package/confirmdialog/confirmdialog.module.d.ts +0 -15
  574. package/confirmdialog/public_api.d.ts +0 -3
  575. package/confirmpopup/confirmpopup.d.ts +0 -119
  576. package/confirmpopup/confirmpopup.interface.d.ts +0 -27
  577. package/confirmpopup/public_api.d.ts +0 -2
  578. package/contextmenu/contextmenu.d.ts +0 -260
  579. package/contextmenu/public_api.d.ts +0 -1
  580. package/dataview/dataview.d.ts +0 -274
  581. package/dataview/dataview.interface.d.ts +0 -183
  582. package/dataview/public_api.d.ts +0 -2
  583. package/defer/defer.d.ts +0 -39
  584. package/defer/public_api.d.ts +0 -1
  585. package/dialog/dialog.d.ts +0 -364
  586. package/dialog/dialog.interface.d.ts +0 -31
  587. package/dialog/dialog.module.d.ts +0 -15
  588. package/dialog/public_api.d.ts +0 -3
  589. package/divider/divider.d.ts +0 -49
  590. package/divider/divider.module.d.ts +0 -7
  591. package/divider/public_api.d.ts +0 -2
  592. package/dock/dock.d.ts +0 -115
  593. package/dock/dock.interface.d.ts +0 -19
  594. package/dock/public_api.d.ts +0 -2
  595. package/dom/connectedoverlayscrollhandler.d.ts +0 -9
  596. package/dom/domhandler.d.ts +0 -95
  597. package/dom/public_api.d.ts +0 -2
  598. package/dragdrop/dragdrop.d.ts +0 -112
  599. package/dragdrop/dragdrop.module.d.ts +0 -8
  600. package/dragdrop/public_api.d.ts +0 -2
  601. package/dropdown/dropdown-item.d.ts +0 -30
  602. package/dropdown/dropdown.d.ts +0 -628
  603. package/dropdown/dropdown.interface.d.ts +0 -154
  604. package/dropdown/dropdown.module.d.ts +0 -11
  605. package/dropdown/public_api.d.ts +0 -4
  606. package/dynamicdialog/dialogservice.d.ts +0 -35
  607. package/dynamicdialog/dynamicdialog-config.d.ts +0 -221
  608. package/dynamicdialog/dynamicdialog-injector.d.ts +0 -7
  609. package/dynamicdialog/dynamicdialog-ref.d.ts +0 -101
  610. package/dynamicdialog/dynamicdialog.d.ts +0 -124
  611. package/dynamicdialog/dynamicdialogcontent.d.ts +0 -8
  612. package/dynamicdialog/public_api.d.ts +0 -6
  613. package/editor/editor.d.ts +0 -104
  614. package/editor/editor.interface.d.ts +0 -64
  615. package/editor/editor.module.d.ts +0 -9
  616. package/editor/public_api.d.ts +0 -3
  617. package/esm2022/accordion/accordion.interface.mjs +0 -2
  618. package/esm2022/accordion/accordion.mjs +0 -598
  619. package/esm2022/accordion/accordion.module.mjs +0 -23
  620. package/esm2022/accordion/cax-design-system-accordion.mjs +0 -5
  621. package/esm2022/accordion/public_api.mjs +0 -4
  622. package/esm2022/animate/animate.mjs +0 -101
  623. package/esm2022/animate/cax-design-system-animate.mjs +0 -5
  624. package/esm2022/animate/public_api.mjs +0 -2
  625. package/esm2022/animateonscroll/animateonscroll.mjs +0 -185
  626. package/esm2022/animateonscroll/cax-design-system-animateonscroll.mjs +0 -5
  627. package/esm2022/animateonscroll/public_api.mjs +0 -2
  628. package/esm2022/api/blockableui.mjs +0 -2
  629. package/esm2022/api/cax-design-system-api.mjs +0 -5
  630. package/esm2022/api/caxconfig.mjs +0 -163
  631. package/esm2022/api/confirmaeventtype.mjs +0 -10
  632. package/esm2022/api/confirmation.mjs +0 -2
  633. package/esm2022/api/confirmationservice.mjs +0 -43
  634. package/esm2022/api/contextmenuservice.mjs +0 -22
  635. package/esm2022/api/filtermatchmode.mjs +0 -23
  636. package/esm2022/api/filtermetadata.mjs +0 -2
  637. package/esm2022/api/filteroperator.mjs +0 -5
  638. package/esm2022/api/filterservice.mjs +0 -225
  639. package/esm2022/api/lazyloadevent.mjs +0 -2
  640. package/esm2022/api/lazyloadmeta.mjs +0 -2
  641. package/esm2022/api/megamenuitem.mjs +0 -2
  642. package/esm2022/api/menuitem.mjs +0 -2
  643. package/esm2022/api/message.mjs +0 -2
  644. package/esm2022/api/messageservice.mjs +0 -47
  645. package/esm2022/api/overlayoptions.mjs +0 -2
  646. package/esm2022/api/overlayservice.mjs +0 -19
  647. package/esm2022/api/primeicons.mjs +0 -314
  648. package/esm2022/api/public_api.mjs +0 -35
  649. package/esm2022/api/scrolleroptions.mjs +0 -2
  650. package/esm2022/api/selectitem.mjs +0 -2
  651. package/esm2022/api/selectitemgroup.mjs +0 -2
  652. package/esm2022/api/shared.mjs +0 -65
  653. package/esm2022/api/sortevent.mjs +0 -2
  654. package/esm2022/api/sortmeta.mjs +0 -2
  655. package/esm2022/api/tablestate.mjs +0 -2
  656. package/esm2022/api/themegeneratorservice.mjs +0 -109
  657. package/esm2022/api/tooltipoptions.mjs +0 -2
  658. package/esm2022/api/translation.mjs +0 -2
  659. package/esm2022/api/translationkeys.mjs +0 -51
  660. package/esm2022/api/treedragdropservice.mjs +0 -21
  661. package/esm2022/api/treenode.mjs +0 -2
  662. package/esm2022/api/treenodedragevent.mjs +0 -2
  663. package/esm2022/api/treetablenode.mjs +0 -2
  664. package/esm2022/autocomplete/autocomplete.interface.mjs +0 -2
  665. package/esm2022/autocomplete/autocomplete.mjs +0 -1462
  666. package/esm2022/autocomplete/autocomplete.module.mjs +0 -30
  667. package/esm2022/autocomplete/cax-design-system-autocomplete.mjs +0 -5
  668. package/esm2022/autocomplete/public_api.mjs +0 -4
  669. package/esm2022/autofocus/autofocus.mjs +0 -78
  670. package/esm2022/autofocus/cax-design-system-autofocus.mjs +0 -5
  671. package/esm2022/autofocus/public_api.mjs +0 -2
  672. package/esm2022/avatar/avatar.mjs +0 -104
  673. package/esm2022/avatar/avatar.module.mjs +0 -16
  674. package/esm2022/avatar/cax-design-system-avatar.mjs +0 -5
  675. package/esm2022/avatar/public_api.mjs +0 -3
  676. package/esm2022/avatargroup/avatargroup.mjs +0 -32
  677. package/esm2022/avatargroup/avatargroup.module.mjs +0 -19
  678. package/esm2022/avatargroup/cax-design-system-avatargroup.mjs +0 -5
  679. package/esm2022/avatargroup/public_api.mjs +0 -3
  680. package/esm2022/badge/badge.directive.mjs +0 -193
  681. package/esm2022/badge/badge.mjs +0 -50
  682. package/esm2022/badge/badge.module.mjs +0 -20
  683. package/esm2022/badge/cax-design-system-badge.mjs +0 -5
  684. package/esm2022/badge/public_api.mjs +0 -4
  685. package/esm2022/baseicon/baseicon.mjs +0 -45
  686. package/esm2022/baseicon/cax-design-system-baseicon.mjs +0 -5
  687. package/esm2022/baseicon/public_api.mjs +0 -2
  688. package/esm2022/blockui/blockui.interface.mjs +0 -2
  689. package/esm2022/blockui/blockui.mjs +0 -206
  690. package/esm2022/blockui/cax-design-system-blockui.mjs +0 -5
  691. package/esm2022/blockui/public_api.mjs +0 -3
  692. package/esm2022/breadcrumb/breadcrumb.interface.mjs +0 -2
  693. package/esm2022/breadcrumb/breadcrumb.mjs +0 -120
  694. package/esm2022/breadcrumb/breadcrumb.module.mjs +0 -23
  695. package/esm2022/breadcrumb/cax-design-system-breadcrumb.mjs +0 -5
  696. package/esm2022/breadcrumb/public_api.mjs +0 -4
  697. package/esm2022/button/button.directive.mjs +0 -259
  698. package/esm2022/button/button.interface.mjs +0 -2
  699. package/esm2022/button/button.mjs +0 -190
  700. package/esm2022/button/button.module.mjs +0 -18
  701. package/esm2022/button/cax-design-system-button.mjs +0 -5
  702. package/esm2022/button/public_api.mjs +0 -5
  703. package/esm2022/buttongroup/buttongroup.mjs +0 -38
  704. package/esm2022/buttongroup/cax-design-system-buttongroup.mjs +0 -5
  705. package/esm2022/buttongroup/public_api.mjs +0 -2
  706. package/esm2022/calendar/calendar.interface.mjs +0 -2
  707. package/esm2022/calendar/calendar.mjs +0 -3242
  708. package/esm2022/calendar/calendar.module.mjs +0 -18
  709. package/esm2022/calendar/cax-design-system-calendar.mjs +0 -5
  710. package/esm2022/calendar/public_api.mjs +0 -4
  711. package/esm2022/card/card.interface.mjs +0 -2
  712. package/esm2022/card/card.mjs +0 -117
  713. package/esm2022/card/card.module.mjs +0 -21
  714. package/esm2022/card/cax-design-system-card.mjs +0 -5
  715. package/esm2022/card/public_api.mjs +0 -4
  716. package/esm2022/carousel/carousel.interface.mjs +0 -2
  717. package/esm2022/carousel/carousel.mjs +0 -968
  718. package/esm2022/carousel/cax-design-system-carousel.mjs +0 -5
  719. package/esm2022/carousel/public_api.mjs +0 -3
  720. package/esm2022/cascadeselect/cascadeselect.interface.mjs +0 -2
  721. package/esm2022/cascadeselect/cascadeselect.mjs +0 -1135
  722. package/esm2022/cascadeselect/cascadeselect.module.mjs +0 -25
  723. package/esm2022/cascadeselect/cax-design-system-cascadeselect.mjs +0 -5
  724. package/esm2022/cascadeselect/public_api.mjs +0 -4
  725. package/esm2022/cax-design-system.mjs +0 -5
  726. package/esm2022/chart/cax-design-system-chart.mjs +0 -5
  727. package/esm2022/chart/chart.mjs +0 -236
  728. package/esm2022/chart/public_api.mjs +0 -2
  729. package/esm2022/checkbox/cax-design-system-checkbox.mjs +0 -5
  730. package/esm2022/checkbox/checkbox.interface.mjs +0 -2
  731. package/esm2022/checkbox/checkbox.mjs +0 -318
  732. package/esm2022/checkbox/checkbox.module.mjs +0 -20
  733. package/esm2022/checkbox/public_api.mjs +0 -4
  734. package/esm2022/chip/cax-design-system-chip.mjs +0 -5
  735. package/esm2022/chip/chip.interface.mjs +0 -2
  736. package/esm2022/chip/chip.mjs +0 -90
  737. package/esm2022/chip/chip.module.mjs +0 -20
  738. package/esm2022/chip/public_api.mjs +0 -4
  739. package/esm2022/chips/cax-design-system-chips.mjs +0 -5
  740. package/esm2022/chips/chips.interface.mjs +0 -2
  741. package/esm2022/chips/chips.mjs +0 -610
  742. package/esm2022/chips/chips.module.mjs +0 -23
  743. package/esm2022/chips/public_api.mjs +0 -4
  744. package/esm2022/colorpicker/cax-design-system-colorpicker.mjs +0 -5
  745. package/esm2022/colorpicker/colorpicker.interface.mjs +0 -2
  746. package/esm2022/colorpicker/colorpicker.mjs +0 -715
  747. package/esm2022/colorpicker/colorpicker.module.mjs +0 -19
  748. package/esm2022/colorpicker/public_api.mjs +0 -4
  749. package/esm2022/commentbox/cax-design-system-commentbox.mjs +0 -5
  750. package/esm2022/commentbox/commentbox.mjs +0 -575
  751. package/esm2022/commentbox/commentbox.module.mjs +0 -27
  752. package/esm2022/commentbox/public_api.mjs +0 -3
  753. package/esm2022/confirmdialog/cax-design-system-confirmdialog.mjs +0 -5
  754. package/esm2022/confirmdialog/confirmdialog.interface.mjs +0 -2
  755. package/esm2022/confirmdialog/confirmdialog.mjs +0 -720
  756. package/esm2022/confirmdialog/confirmdialog.module.mjs +0 -25
  757. package/esm2022/confirmdialog/public_api.mjs +0 -4
  758. package/esm2022/confirmpopup/cax-design-system-confirmpopup.mjs +0 -5
  759. package/esm2022/confirmpopup/confirmpopup.interface.mjs +0 -2
  760. package/esm2022/confirmpopup/confirmpopup.mjs +0 -499
  761. package/esm2022/confirmpopup/public_api.mjs +0 -3
  762. package/esm2022/contextmenu/cax-design-system-contextmenu.mjs +0 -5
  763. package/esm2022/contextmenu/contextmenu.mjs +0 -1304
  764. package/esm2022/contextmenu/public_api.mjs +0 -2
  765. package/esm2022/dataview/cax-design-system-dataview.mjs +0 -5
  766. package/esm2022/dataview/dataview.interface.mjs +0 -2
  767. package/esm2022/dataview/dataview.mjs +0 -723
  768. package/esm2022/dataview/public_api.mjs +0 -3
  769. package/esm2022/defer/cax-design-system-defer.mjs +0 -5
  770. package/esm2022/defer/defer.mjs +0 -111
  771. package/esm2022/defer/public_api.mjs +0 -2
  772. package/esm2022/dialog/cax-design-system-dialog.mjs +0 -5
  773. package/esm2022/dialog/dialog.interface.mjs +0 -2
  774. package/esm2022/dialog/dialog.mjs +0 -959
  775. package/esm2022/dialog/dialog.module.mjs +0 -25
  776. package/esm2022/dialog/public_api.mjs +0 -4
  777. package/esm2022/divider/cax-design-system-divider.mjs +0 -5
  778. package/esm2022/divider/divider.mjs +0 -69
  779. package/esm2022/divider/divider.module.mjs +0 -16
  780. package/esm2022/divider/public_api.mjs +0 -3
  781. package/esm2022/dock/cax-design-system-dock.mjs +0 -5
  782. package/esm2022/dock/dock.interface.mjs +0 -2
  783. package/esm2022/dock/dock.mjs +0 -431
  784. package/esm2022/dock/public_api.mjs +0 -3
  785. package/esm2022/dom/cax-design-system-dom.mjs +0 -5
  786. package/esm2022/dom/connectedoverlayscrollhandler.mjs +0 -30
  787. package/esm2022/dom/domhandler.mjs +0 -722
  788. package/esm2022/dom/public_api.mjs +0 -3
  789. package/esm2022/dragdrop/cax-design-system-dragdrop.mjs +0 -5
  790. package/esm2022/dragdrop/dragdrop.mjs +0 -309
  791. package/esm2022/dragdrop/dragdrop.module.mjs +0 -18
  792. package/esm2022/dragdrop/public_api.mjs +0 -3
  793. package/esm2022/dropdown/cax-design-system-dropdown.mjs +0 -5
  794. package/esm2022/dropdown/dropdown-item.mjs +0 -72
  795. package/esm2022/dropdown/dropdown.interface.mjs +0 -2
  796. package/esm2022/dropdown/dropdown.mjs +0 -1599
  797. package/esm2022/dropdown/dropdown.module.mjs +0 -20
  798. package/esm2022/dropdown/public_api.mjs +0 -5
  799. package/esm2022/dynamicdialog/cax-design-system-dynamicdialog.mjs +0 -5
  800. package/esm2022/dynamicdialog/dialogservice.mjs +0 -102
  801. package/esm2022/dynamicdialog/dynamicdialog-config.mjs +0 -187
  802. package/esm2022/dynamicdialog/dynamicdialog-injector.mjs +0 -15
  803. package/esm2022/dynamicdialog/dynamicdialog-ref.mjs +0 -119
  804. package/esm2022/dynamicdialog/dynamicdialog.mjs +0 -696
  805. package/esm2022/dynamicdialog/dynamicdialogcontent.mjs +0 -20
  806. package/esm2022/dynamicdialog/public_api.mjs +0 -7
  807. package/esm2022/editor/cax-design-system-editor.mjs +0 -5
  808. package/esm2022/editor/editor.interface.mjs +0 -2
  809. package/esm2022/editor/editor.mjs +0 -281
  810. package/esm2022/editor/editor.module.mjs +0 -19
  811. package/esm2022/editor/public_api.mjs +0 -4
  812. package/esm2022/fieldset/cax-design-system-fieldset.mjs +0 -5
  813. package/esm2022/fieldset/fieldset.interface.mjs +0 -2
  814. package/esm2022/fieldset/fieldset.mjs +0 -297
  815. package/esm2022/fieldset/public_api.mjs +0 -3
  816. package/esm2022/fileupload/cax-design-system-fileupload.mjs +0 -5
  817. package/esm2022/fileupload/fileupload.interface.mjs +0 -2
  818. package/esm2022/fileupload/fileupload.mjs +0 -1188
  819. package/esm2022/fileupload/public_api.mjs +0 -3
  820. package/esm2022/floatlabel/cax-design-system-floatlabel.mjs +0 -5
  821. package/esm2022/floatlabel/floatlabel.mjs +0 -28
  822. package/esm2022/floatlabel/floatlabel.module.mjs +0 -20
  823. package/esm2022/floatlabel/public_api.mjs +0 -3
  824. package/esm2022/focustrap/cax-design-system-focustrap.mjs +0 -5
  825. package/esm2022/focustrap/focustrap.mjs +0 -103
  826. package/esm2022/focustrap/public_api.mjs +0 -2
  827. package/esm2022/galleria/cax-design-system-galleria.mjs +0 -5
  828. package/esm2022/galleria/galleria.interface.mjs +0 -2
  829. package/esm2022/galleria/galleria.mjs +0 -1668
  830. package/esm2022/galleria/public_api.mjs +0 -3
  831. package/esm2022/iconfield/cax-design-system-iconfield.mjs +0 -5
  832. package/esm2022/iconfield/iconfield.mjs +0 -44
  833. package/esm2022/iconfield/public_api.mjs +0 -2
  834. package/esm2022/icons/angledoubledown/angledoubledown.mjs +0 -35
  835. package/esm2022/icons/angledoubledown/cax-design-system-icons-angledoubledown.mjs +0 -5
  836. package/esm2022/icons/angledoubledown/public_api.mjs +0 -2
  837. package/esm2022/icons/angledoubleleft/angledoubleleft.mjs +0 -35
  838. package/esm2022/icons/angledoubleleft/cax-design-system-icons-angledoubleleft.mjs +0 -5
  839. package/esm2022/icons/angledoubleleft/public_api.mjs +0 -2
  840. package/esm2022/icons/angledoubleright/angledoubleright.mjs +0 -35
  841. package/esm2022/icons/angledoubleright/cax-design-system-icons-angledoubleright.mjs +0 -5
  842. package/esm2022/icons/angledoubleright/public_api.mjs +0 -2
  843. package/esm2022/icons/angledoubleup/angledoubleup.mjs +0 -35
  844. package/esm2022/icons/angledoubleup/cax-design-system-icons-angledoubleup.mjs +0 -5
  845. package/esm2022/icons/angledoubleup/public_api.mjs +0 -2
  846. package/esm2022/icons/angledown/angledown.mjs +0 -31
  847. package/esm2022/icons/angledown/cax-design-system-icons-angledown.mjs +0 -5
  848. package/esm2022/icons/angledown/public_api.mjs +0 -2
  849. package/esm2022/icons/angleleft/angleleft.mjs +0 -31
  850. package/esm2022/icons/angleleft/cax-design-system-icons-angleleft.mjs +0 -5
  851. package/esm2022/icons/angleleft/public_api.mjs +0 -2
  852. package/esm2022/icons/angleright/angleright.mjs +0 -31
  853. package/esm2022/icons/angleright/cax-design-system-icons-angleright.mjs +0 -5
  854. package/esm2022/icons/angleright/public_api.mjs +0 -2
  855. package/esm2022/icons/angleup/angleup.mjs +0 -31
  856. package/esm2022/icons/angleup/cax-design-system-icons-angleup.mjs +0 -5
  857. package/esm2022/icons/angleup/public_api.mjs +0 -2
  858. package/esm2022/icons/arrowdown/arrowdown.mjs +0 -54
  859. package/esm2022/icons/arrowdown/cax-design-system-icons-arrowdown.mjs +0 -5
  860. package/esm2022/icons/arrowdown/public_api.mjs +0 -2
  861. package/esm2022/icons/arrowdownleft/arrowdownleft.mjs +0 -31
  862. package/esm2022/icons/arrowdownleft/cax-design-system-icons-arrowdownleft.mjs +0 -5
  863. package/esm2022/icons/arrowdownleft/public_api.mjs +0 -2
  864. package/esm2022/icons/arrowdownright/arrowdownright.mjs +0 -31
  865. package/esm2022/icons/arrowdownright/cax-design-system-icons-arrowdownright.mjs +0 -5
  866. package/esm2022/icons/arrowdownright/public_api.mjs +0 -2
  867. package/esm2022/icons/arrowleft/arrowleft.mjs +0 -54
  868. package/esm2022/icons/arrowleft/cax-design-system-icons-arrowleft.mjs +0 -5
  869. package/esm2022/icons/arrowleft/public_api.mjs +0 -2
  870. package/esm2022/icons/arrowright/arrowright.mjs +0 -35
  871. package/esm2022/icons/arrowright/cax-design-system-icons-arrowright.mjs +0 -5
  872. package/esm2022/icons/arrowright/public_api.mjs +0 -2
  873. package/esm2022/icons/arrowup/arrowup.mjs +0 -54
  874. package/esm2022/icons/arrowup/cax-design-system-icons-arrowup.mjs +0 -5
  875. package/esm2022/icons/arrowup/public_api.mjs +0 -2
  876. package/esm2022/icons/ban/ban.mjs +0 -50
  877. package/esm2022/icons/ban/cax-design-system-icons-ban.mjs +0 -5
  878. package/esm2022/icons/ban/public_api.mjs +0 -2
  879. package/esm2022/icons/bars/bars.mjs +0 -35
  880. package/esm2022/icons/bars/cax-design-system-icons-bars.mjs +0 -5
  881. package/esm2022/icons/bars/public_api.mjs +0 -2
  882. package/esm2022/icons/blank/blank.mjs +0 -25
  883. package/esm2022/icons/blank/cax-design-system-icons-blank.mjs +0 -5
  884. package/esm2022/icons/blank/public_api.mjs +0 -2
  885. package/esm2022/icons/calendar/calendar.mjs +0 -31
  886. package/esm2022/icons/calendar/cax-design-system-icons-calendar.mjs +0 -5
  887. package/esm2022/icons/calendar/public_api.mjs +0 -2
  888. package/esm2022/icons/caretleft/caretleft.mjs +0 -31
  889. package/esm2022/icons/caretleft/cax-design-system-icons-caretleft.mjs +0 -5
  890. package/esm2022/icons/caretleft/public_api.mjs +0 -2
  891. package/esm2022/icons/caretright/caretright.mjs +0 -31
  892. package/esm2022/icons/caretright/cax-design-system-icons-caretright.mjs +0 -5
  893. package/esm2022/icons/caretright/public_api.mjs +0 -2
  894. package/esm2022/icons/check/cax-design-system-icons-check.mjs +0 -5
  895. package/esm2022/icons/check/check.mjs +0 -31
  896. package/esm2022/icons/check/public_api.mjs +0 -2
  897. package/esm2022/icons/chevrondown/cax-design-system-icons-chevrondown.mjs +0 -5
  898. package/esm2022/icons/chevrondown/chevrondown.mjs +0 -31
  899. package/esm2022/icons/chevrondown/public_api.mjs +0 -2
  900. package/esm2022/icons/chevronleft/cax-design-system-icons-chevronleft.mjs +0 -5
  901. package/esm2022/icons/chevronleft/chevronleft.mjs +0 -31
  902. package/esm2022/icons/chevronleft/public_api.mjs +0 -2
  903. package/esm2022/icons/chevronright/cax-design-system-icons-chevronright.mjs +0 -5
  904. package/esm2022/icons/chevronright/chevronright.mjs +0 -31
  905. package/esm2022/icons/chevronright/public_api.mjs +0 -2
  906. package/esm2022/icons/chevronup/cax-design-system-icons-chevronup.mjs +0 -5
  907. package/esm2022/icons/chevronup/chevronup.mjs +0 -31
  908. package/esm2022/icons/chevronup/public_api.mjs +0 -2
  909. package/esm2022/icons/exclamationtriangle/cax-design-system-icons-exclamationtriangle.mjs +0 -5
  910. package/esm2022/icons/exclamationtriangle/exclamationtriangle.mjs +0 -66
  911. package/esm2022/icons/exclamationtriangle/public_api.mjs +0 -2
  912. package/esm2022/icons/eye/cax-design-system-icons-eye.mjs +0 -5
  913. package/esm2022/icons/eye/eye.mjs +0 -35
  914. package/esm2022/icons/eye/public_api.mjs +0 -2
  915. package/esm2022/icons/eyeslash/cax-design-system-icons-eyeslash.mjs +0 -5
  916. package/esm2022/icons/eyeslash/eyeslash.mjs +0 -54
  917. package/esm2022/icons/eyeslash/public_api.mjs +0 -2
  918. package/esm2022/icons/filter/cax-design-system-icons-filter.mjs +0 -5
  919. package/esm2022/icons/filter/filter.mjs +0 -50
  920. package/esm2022/icons/filter/public_api.mjs +0 -2
  921. package/esm2022/icons/filterslash/cax-design-system-icons-filterslash.mjs +0 -5
  922. package/esm2022/icons/filterslash/filterslash.mjs +0 -54
  923. package/esm2022/icons/filterslash/public_api.mjs +0 -2
  924. package/esm2022/icons/home/cax-design-system-icons-home.mjs +0 -5
  925. package/esm2022/icons/home/home.mjs +0 -54
  926. package/esm2022/icons/home/public_api.mjs +0 -2
  927. package/esm2022/icons/infocircle/cax-design-system-icons-infocircle.mjs +0 -5
  928. package/esm2022/icons/infocircle/infocircle.mjs +0 -54
  929. package/esm2022/icons/infocircle/public_api.mjs +0 -2
  930. package/esm2022/icons/minus/cax-design-system-icons-minus.mjs +0 -5
  931. package/esm2022/icons/minus/minus.mjs +0 -32
  932. package/esm2022/icons/minus/public_api.mjs +0 -2
  933. package/esm2022/icons/pencil/cax-design-system-icons-pencil.mjs +0 -5
  934. package/esm2022/icons/pencil/pencil.mjs +0 -50
  935. package/esm2022/icons/pencil/public_api.mjs +0 -2
  936. package/esm2022/icons/plus/cax-design-system-icons-plus.mjs +0 -5
  937. package/esm2022/icons/plus/plus.mjs +0 -50
  938. package/esm2022/icons/plus/public_api.mjs +0 -2
  939. package/esm2022/icons/refresh/cax-design-system-icons-refresh.mjs +0 -5
  940. package/esm2022/icons/refresh/public_api.mjs +0 -2
  941. package/esm2022/icons/refresh/refresh.mjs +0 -54
  942. package/esm2022/icons/search/cax-design-system-icons-search.mjs +0 -5
  943. package/esm2022/icons/search/public_api.mjs +0 -2
  944. package/esm2022/icons/search/search.mjs +0 -54
  945. package/esm2022/icons/searchminus/cax-design-system-icons-searchminus.mjs +0 -5
  946. package/esm2022/icons/searchminus/public_api.mjs +0 -2
  947. package/esm2022/icons/searchminus/searchminus.mjs +0 -54
  948. package/esm2022/icons/searchplus/cax-design-system-icons-searchplus.mjs +0 -5
  949. package/esm2022/icons/searchplus/public_api.mjs +0 -2
  950. package/esm2022/icons/searchplus/searchplus.mjs +0 -54
  951. package/esm2022/icons/sortalt/cax-design-system-icons-sortalt.mjs +0 -5
  952. package/esm2022/icons/sortalt/public_api.mjs +0 -2
  953. package/esm2022/icons/sortalt/sortalt.mjs +0 -62
  954. package/esm2022/icons/sortamountdown/cax-design-system-icons-sortamountdown.mjs +0 -5
  955. package/esm2022/icons/sortamountdown/public_api.mjs +0 -2
  956. package/esm2022/icons/sortamountdown/sortamountdown.mjs +0 -50
  957. package/esm2022/icons/sortamountupalt/cax-design-system-icons-sortamountupalt.mjs +0 -5
  958. package/esm2022/icons/sortamountupalt/public_api.mjs +0 -2
  959. package/esm2022/icons/sortamountupalt/sortamountupalt.mjs +0 -50
  960. package/esm2022/icons/spinner/cax-design-system-icons-spinner.mjs +0 -5
  961. package/esm2022/icons/spinner/public_api.mjs +0 -2
  962. package/esm2022/icons/spinner/spinner.mjs +0 -50
  963. package/esm2022/icons/star/cax-design-system-icons-star.mjs +0 -5
  964. package/esm2022/icons/star/public_api.mjs +0 -2
  965. package/esm2022/icons/star/star.mjs +0 -50
  966. package/esm2022/icons/starfill/cax-design-system-icons-starfill.mjs +0 -5
  967. package/esm2022/icons/starfill/public_api.mjs +0 -2
  968. package/esm2022/icons/starfill/starfill.mjs +0 -50
  969. package/esm2022/icons/thlarge/cax-design-system-icons-thlarge.mjs +0 -5
  970. package/esm2022/icons/thlarge/public_api.mjs +0 -2
  971. package/esm2022/icons/thlarge/thlarge.mjs +0 -54
  972. package/esm2022/icons/times/cax-design-system-icons-times.mjs +0 -5
  973. package/esm2022/icons/times/public_api.mjs +0 -2
  974. package/esm2022/icons/times/times.mjs +0 -31
  975. package/esm2022/icons/timescircle/cax-design-system-icons-timescircle.mjs +0 -5
  976. package/esm2022/icons/timescircle/public_api.mjs +0 -2
  977. package/esm2022/icons/timescircle/timescircle.mjs +0 -54
  978. package/esm2022/icons/trash/cax-design-system-icons-trash.mjs +0 -5
  979. package/esm2022/icons/trash/public_api.mjs +0 -2
  980. package/esm2022/icons/trash/trash.mjs +0 -54
  981. package/esm2022/icons/undo/cax-design-system-icons-undo.mjs +0 -5
  982. package/esm2022/icons/undo/public_api.mjs +0 -2
  983. package/esm2022/icons/undo/undo.mjs +0 -54
  984. package/esm2022/icons/upload/cax-design-system-icons-upload.mjs +0 -5
  985. package/esm2022/icons/upload/public_api.mjs +0 -2
  986. package/esm2022/icons/upload/upload.mjs +0 -54
  987. package/esm2022/icons/windowmaximize/cax-design-system-icons-windowmaximize.mjs +0 -5
  988. package/esm2022/icons/windowmaximize/public_api.mjs +0 -2
  989. package/esm2022/icons/windowmaximize/windowmaximize.mjs +0 -54
  990. package/esm2022/icons/windowminimize/cax-design-system-icons-windowminimize.mjs +0 -5
  991. package/esm2022/icons/windowminimize/public_api.mjs +0 -2
  992. package/esm2022/icons/windowminimize/windowminimize.mjs +0 -54
  993. package/esm2022/image/cax-design-system-image.mjs +0 -5
  994. package/esm2022/image/image.interface.mjs +0 -2
  995. package/esm2022/image/image.mjs +0 -418
  996. package/esm2022/image/image.module.mjs +0 -17
  997. package/esm2022/image/public_api.mjs +0 -4
  998. package/esm2022/inplace/cax-design-system-inplace.mjs +0 -5
  999. package/esm2022/inplace/inplace.interface.mjs +0 -2
  1000. package/esm2022/inplace/inplace.mjs +0 -243
  1001. package/esm2022/inplace/public_api.mjs +0 -3
  1002. package/esm2022/inputgroup/cax-design-system-inputgroup.mjs +0 -5
  1003. package/esm2022/inputgroup/inputgroup.mjs +0 -55
  1004. package/esm2022/inputgroup/inputgroup.module.mjs +0 -25
  1005. package/esm2022/inputgroup/public_api.mjs +0 -3
  1006. package/esm2022/inputgroupaddon/cax-design-system-inputgroupaddon.mjs +0 -5
  1007. package/esm2022/inputgroupaddon/inputgroupaddon.mjs +0 -32
  1008. package/esm2022/inputgroupaddon/inputgroupaddon.module.mjs +0 -24
  1009. package/esm2022/inputgroupaddon/public_api.mjs +0 -3
  1010. package/esm2022/inputicon/cax-design-system-inputicon.mjs +0 -5
  1011. package/esm2022/inputicon/inputicon.mjs +0 -38
  1012. package/esm2022/inputicon/public_api.mjs +0 -2
  1013. package/esm2022/inputmask/cax-design-system-inputmask.mjs +0 -5
  1014. package/esm2022/inputmask/inputmask.interface.mjs +0 -2
  1015. package/esm2022/inputmask/inputmask.mjs +0 -848
  1016. package/esm2022/inputmask/inputmask.module.mjs +0 -22
  1017. package/esm2022/inputmask/public_api.mjs +0 -4
  1018. package/esm2022/inputnumber/cax-design-system-inputnumber.mjs +0 -5
  1019. package/esm2022/inputnumber/inputnumber.interface.mjs +0 -2
  1020. package/esm2022/inputnumber/inputnumber.mjs +0 -1296
  1021. package/esm2022/inputnumber/inputnumber.module.mjs +0 -17
  1022. package/esm2022/inputnumber/public_api.mjs +0 -4
  1023. package/esm2022/inputotp/cax-design-system-inputotp.mjs +0 -5
  1024. package/esm2022/inputotp/inputotp.interface.mjs +0 -2
  1025. package/esm2022/inputotp/inputotp.mjs +0 -381
  1026. package/esm2022/inputotp/public_api.mjs +0 -3
  1027. package/esm2022/inputswitch/cax-design-system-inputswitch.mjs +0 -5
  1028. package/esm2022/inputswitch/inputswitch.interface.mjs +0 -2
  1029. package/esm2022/inputswitch/inputswitch.mjs +0 -244
  1030. package/esm2022/inputswitch/public_api.mjs +0 -3
  1031. package/esm2022/inputtext/cax-design-system-inputtext.mjs +0 -5
  1032. package/esm2022/inputtext/inputtext.component.mjs +0 -132
  1033. package/esm2022/inputtext/inputtext.directive.mjs +0 -76
  1034. package/esm2022/inputtext/inputtext.module.mjs +0 -20
  1035. package/esm2022/inputtext/public_api.mjs +0 -4
  1036. package/esm2022/inputtextarea/cax-design-system-inputtextarea.mjs +0 -5
  1037. package/esm2022/inputtextarea/inputtextarea.component.mjs +0 -155
  1038. package/esm2022/inputtextarea/inputtextarea.directive.mjs +0 -121
  1039. package/esm2022/inputtextarea/inputtextarea.module.mjs +0 -20
  1040. package/esm2022/inputtextarea/public_api.mjs +0 -4
  1041. package/esm2022/keyfilter/cax-design-system-keyfilter.mjs +0 -5
  1042. package/esm2022/keyfilter/keyfilter.interface.mjs +0 -2
  1043. package/esm2022/keyfilter/keyfilter.mjs +0 -265
  1044. package/esm2022/keyfilter/public_api.mjs +0 -3
  1045. package/esm2022/knob/cax-design-system-knob.mjs +0 -5
  1046. package/esm2022/knob/knob.mjs +0 -464
  1047. package/esm2022/knob/public_api.mjs +0 -2
  1048. package/esm2022/listbox/cax-design-system-listbox.mjs +0 -5
  1049. package/esm2022/listbox/listbox.interface.mjs +0 -2
  1050. package/esm2022/listbox/listbox.mjs +0 -1555
  1051. package/esm2022/listbox/public_api.mjs +0 -3
  1052. package/esm2022/logo/cax-design-system-logo.mjs +0 -5
  1053. package/esm2022/logo/logo.mjs +0 -45
  1054. package/esm2022/logo/logo.module.mjs +0 -16
  1055. package/esm2022/logo/public_api.mjs +0 -3
  1056. package/esm2022/megamenu/cax-design-system-megamenu.mjs +0 -5
  1057. package/esm2022/megamenu/megamenu.interface.mjs +0 -2
  1058. package/esm2022/megamenu/megamenu.mjs +0 -1190
  1059. package/esm2022/megamenu/public_api.mjs +0 -3
  1060. package/esm2022/menu/cax-design-system-menu.mjs +0 -5
  1061. package/esm2022/menu/menu.mjs +0 -626
  1062. package/esm2022/menu/menu.module.mjs +0 -22
  1063. package/esm2022/menu/public_api.mjs +0 -3
  1064. package/esm2022/menubar/cax-design-system-menubar.mjs +0 -5
  1065. package/esm2022/menubar/menubar.interface.mjs +0 -2
  1066. package/esm2022/menubar/menubar.mjs +0 -1249
  1067. package/esm2022/menubar/public_api.mjs +0 -3
  1068. package/esm2022/message/cax-design-system-message.mjs +0 -5
  1069. package/esm2022/message/message.mjs +0 -112
  1070. package/esm2022/message/public_api.mjs +0 -2
  1071. package/esm2022/messages/cax-design-system-messages.mjs +0 -5
  1072. package/esm2022/messages/messages.interface.mjs +0 -2
  1073. package/esm2022/messages/messages.mjs +0 -283
  1074. package/esm2022/messages/messages.module.mjs +0 -17
  1075. package/esm2022/messages/public_api.mjs +0 -4
  1076. package/esm2022/metergroup/cax-design-system-metergroup.mjs +0 -5
  1077. package/esm2022/metergroup/metergroup.interface.mjs +0 -2
  1078. package/esm2022/metergroup/metergroup.mjs +0 -280
  1079. package/esm2022/metergroup/public_api.mjs +0 -3
  1080. package/esm2022/multiselect/cax-design-system-multiselect.mjs +0 -5
  1081. package/esm2022/multiselect/multiselect.interface.mjs +0 -2
  1082. package/esm2022/multiselect/multiselect.mjs +0 -1875
  1083. package/esm2022/multiselect/multiselect.module.mjs +0 -30
  1084. package/esm2022/multiselect/public_api.mjs +0 -4
  1085. package/esm2022/navigation/cax-design-system-navigation.mjs +0 -5
  1086. package/esm2022/navigation/navigation.interface.mjs +0 -2
  1087. package/esm2022/navigation/navigation.mjs +0 -399
  1088. package/esm2022/navigation/navigation.module.mjs +0 -16
  1089. package/esm2022/navigation/public_api.mjs +0 -3
  1090. package/esm2022/orderlist/cax-design-system-orderlist.mjs +0 -5
  1091. package/esm2022/orderlist/orderlist.interface.mjs +0 -2
  1092. package/esm2022/orderlist/orderlist.mjs +0 -993
  1093. package/esm2022/orderlist/public_api.mjs +0 -3
  1094. package/esm2022/organizationchart/cax-design-system-organizationchart.mjs +0 -5
  1095. package/esm2022/organizationchart/organizationchart.interface.mjs +0 -2
  1096. package/esm2022/organizationchart/organizationchart.mjs +0 -416
  1097. package/esm2022/organizationchart/public_api.mjs +0 -3
  1098. package/esm2022/overlay/cax-design-system-overlay.mjs +0 -5
  1099. package/esm2022/overlay/overlay.mjs +0 -579
  1100. package/esm2022/overlay/overlay.module.mjs +0 -17
  1101. package/esm2022/overlay/public_api.mjs +0 -3
  1102. package/esm2022/overlaypanel/cax-design-system-overlaypanel.mjs +0 -5
  1103. package/esm2022/overlaypanel/overlaypanel.mjs +0 -470
  1104. package/esm2022/overlaypanel/overlaypanel.module.mjs +0 -17
  1105. package/esm2022/overlaypanel/public_api.mjs +0 -3
  1106. package/esm2022/paginator/cax-design-system-paginator.mjs +0 -5
  1107. package/esm2022/paginator/paginator.interface.mjs +0 -2
  1108. package/esm2022/paginator/paginator.mjs +0 -437
  1109. package/esm2022/paginator/paginator.module.mjs +0 -27
  1110. package/esm2022/paginator/public_api.mjs +0 -4
  1111. package/esm2022/panel/cax-design-system-panel.mjs +0 -5
  1112. package/esm2022/panel/panel.interface.mjs +0 -2
  1113. package/esm2022/panel/panel.mjs +0 -393
  1114. package/esm2022/panel/public_api.mjs +0 -3
  1115. package/esm2022/panelmenu/cax-design-system-panelmenu.mjs +0 -5
  1116. package/esm2022/panelmenu/panelmenu.interface.mjs +0 -2
  1117. package/esm2022/panelmenu/panelmenu.mjs +0 -1276
  1118. package/esm2022/panelmenu/public_api.mjs +0 -3
  1119. package/esm2022/password/cax-design-system-password.mjs +0 -5
  1120. package/esm2022/password/password.mjs +0 -1017
  1121. package/esm2022/password/public_api.mjs +0 -2
  1122. package/esm2022/picklist/cax-design-system-picklist.mjs +0 -5
  1123. package/esm2022/picklist/picklist.interface.mjs +0 -2
  1124. package/esm2022/picklist/picklist.mjs +0 -1909
  1125. package/esm2022/picklist/public_api.mjs +0 -3
  1126. package/esm2022/progressbar/cax-design-system-progressbar.mjs +0 -5
  1127. package/esm2022/progressbar/progressbar.mjs +0 -86
  1128. package/esm2022/progressbar/progressbar.module.mjs +0 -18
  1129. package/esm2022/progressbar/public_api.mjs +0 -3
  1130. package/esm2022/progressspinner/cax-design-system-progressspinner.mjs +0 -5
  1131. package/esm2022/progressspinner/progressspinner.mjs +0 -112
  1132. package/esm2022/progressspinner/progressspinner.module.mjs +0 -18
  1133. package/esm2022/progressspinner/public_api.mjs +0 -3
  1134. package/esm2022/public_api.mjs +0 -2
  1135. package/esm2022/radiobutton/cax-design-system-radiobutton.mjs +0 -5
  1136. package/esm2022/radiobutton/public_api.mjs +0 -4
  1137. package/esm2022/radiobutton/radiobutton.interface.mjs +0 -2
  1138. package/esm2022/radiobutton/radiobutton.mjs +0 -284
  1139. package/esm2022/radiobutton/radiobutton.module.mjs +0 -16
  1140. package/esm2022/rating/cax-design-system-rating.mjs +0 -5
  1141. package/esm2022/rating/public_api.mjs +0 -3
  1142. package/esm2022/rating/rating.interface.mjs +0 -2
  1143. package/esm2022/rating/rating.mjs +0 -388
  1144. package/esm2022/ripple/cax-design-system-ripple.mjs +0 -5
  1145. package/esm2022/ripple/public_api.mjs +0 -3
  1146. package/esm2022/ripple/ripple.mjs +0 -129
  1147. package/esm2022/ripple/ripple.module.mjs +0 -16
  1148. package/esm2022/scroller/cax-design-system-scroller.mjs +0 -5
  1149. package/esm2022/scroller/public_api.mjs +0 -4
  1150. package/esm2022/scroller/scroller.interface.mjs +0 -2
  1151. package/esm2022/scroller/scroller.mjs +0 -981
  1152. package/esm2022/scroller/scroller.module.mjs +0 -17
  1153. package/esm2022/scrollpanel/cax-design-system-scrollpanel.mjs +0 -5
  1154. package/esm2022/scrollpanel/public_api.mjs +0 -3
  1155. package/esm2022/scrollpanel/scrollpanel.interface.mjs +0 -2
  1156. package/esm2022/scrollpanel/scrollpanel.mjs +0 -501
  1157. package/esm2022/scrolltop/cax-design-system-scrolltop.mjs +0 -5
  1158. package/esm2022/scrolltop/public_api.mjs +0 -3
  1159. package/esm2022/scrolltop/scrolltop.interface.mjs +0 -2
  1160. package/esm2022/scrolltop/scrolltop.mjs +0 -282
  1161. package/esm2022/selectbutton/cax-design-system-selectbutton.mjs +0 -5
  1162. package/esm2022/selectbutton/public_api.mjs +0 -4
  1163. package/esm2022/selectbutton/selectbutton.interface.mjs +0 -2
  1164. package/esm2022/selectbutton/selectbutton.mjs +0 -303
  1165. package/esm2022/selectbutton/selectbutton.module.mjs +0 -21
  1166. package/esm2022/sidebar/cax-design-system-sidebar.mjs +0 -5
  1167. package/esm2022/sidebar/public_api.mjs +0 -4
  1168. package/esm2022/sidebar/sidebar.interface.mjs +0 -2
  1169. package/esm2022/sidebar/sidebar.mjs +0 -488
  1170. package/esm2022/sidebar/sidebar.module.mjs +0 -21
  1171. package/esm2022/skeleton/cax-design-system-skeleton.mjs +0 -5
  1172. package/esm2022/skeleton/public_api.mjs +0 -3
  1173. package/esm2022/skeleton/skeleton.mjs +0 -87
  1174. package/esm2022/skeleton/skeleton.module.mjs +0 -18
  1175. package/esm2022/slidemenu/cax-design-system-slidemenu.mjs +0 -5
  1176. package/esm2022/slidemenu/public_api.mjs +0 -3
  1177. package/esm2022/slidemenu/slidemenu.interface.mjs +0 -2
  1178. package/esm2022/slidemenu/slidemenu.mjs +0 -1501
  1179. package/esm2022/slider/cax-design-system-slider.mjs +0 -5
  1180. package/esm2022/slider/public_api.mjs +0 -3
  1181. package/esm2022/slider/slider.interface.mjs +0 -2
  1182. package/esm2022/slider/slider.mjs +0 -796
  1183. package/esm2022/speeddial/cax-design-system-speeddial.mjs +0 -5
  1184. package/esm2022/speeddial/public_api.mjs +0 -4
  1185. package/esm2022/speeddial/speeddial.interface.mjs +0 -2
  1186. package/esm2022/speeddial/speeddial.mjs +0 -611
  1187. package/esm2022/speeddial/speeddial.module.mjs +0 -24
  1188. package/esm2022/spinner/cax-design-system-spinner.mjs +0 -5
  1189. package/esm2022/spinner/public_api.mjs +0 -2
  1190. package/esm2022/spinner/spinner.mjs +0 -447
  1191. package/esm2022/splitbutton/cax-design-system-splitbutton.mjs +0 -5
  1192. package/esm2022/splitbutton/public_api.mjs +0 -4
  1193. package/esm2022/splitbutton/splitbutton.interface.mjs +0 -2
  1194. package/esm2022/splitbutton/splitbutton.mjs +0 -369
  1195. package/esm2022/splitbutton/splitbutton.module.mjs +0 -23
  1196. package/esm2022/splitter/cax-design-system-splitter.mjs +0 -5
  1197. package/esm2022/splitter/public_api.mjs +0 -4
  1198. package/esm2022/splitter/splitter.interface.mjs +0 -2
  1199. package/esm2022/splitter/splitter.mjs +0 -490
  1200. package/esm2022/splitter/splitter.module.mjs +0 -19
  1201. package/esm2022/stepper/cax-design-system-stepper.mjs +0 -5
  1202. package/esm2022/stepper/public_api.mjs +0 -3
  1203. package/esm2022/stepper/stepper.interface.mjs +0 -2
  1204. package/esm2022/stepper/stepper.mjs +0 -677
  1205. package/esm2022/steps/cax-design-system-steps.mjs +0 -5
  1206. package/esm2022/steps/public_api.mjs +0 -3
  1207. package/esm2022/steps/steps.mjs +0 -207
  1208. package/esm2022/steps/steps.module.mjs +0 -20
  1209. package/esm2022/styleclass/cax-design-system-styleclass.mjs +0 -5
  1210. package/esm2022/styleclass/public_api.mjs +0 -2
  1211. package/esm2022/styleclass/styleclass.mjs +0 -316
  1212. package/esm2022/table/cax-design-system-table.mjs +0 -5
  1213. package/esm2022/table/columnfilter.interface.mjs +0 -2
  1214. package/esm2022/table/components/cell-editor/cell-editor.mjs +0 -52
  1215. package/esm2022/table/components/column-filter/column-filter.mjs +0 -865
  1216. package/esm2022/table/components/column-filter-form-element/column-filter-form-element.mjs +0 -107
  1217. package/esm2022/table/components/sort-icon/sort-icon.mjs +0 -78
  1218. package/esm2022/table/components/table-body/table-body.mjs +0 -152
  1219. package/esm2022/table/components/table-checkbox/table-checkbox.mjs +0 -83
  1220. package/esm2022/table/components/table-header-checkbox/table-header-checkbox.mjs +0 -92
  1221. package/esm2022/table/components/table-radio-button/table-radio-button.mjs +0 -79
  1222. package/esm2022/table/directives/cancel-editable-row.directive.mjs +0 -32
  1223. package/esm2022/table/directives/cell-highlight.directive.mjs +0 -42
  1224. package/esm2022/table/directives/content-menu-row.directive.mjs +0 -70
  1225. package/esm2022/table/directives/dynamic-column-width.directive.mjs +0 -34
  1226. package/esm2022/table/directives/editable-column.directive.mjs +0 -344
  1227. package/esm2022/table/directives/editable-row.directive.mjs +0 -32
  1228. package/esm2022/table/directives/frozen-column.directive.mjs +0 -77
  1229. package/esm2022/table/directives/init-editable-row.directive.mjs +0 -32
  1230. package/esm2022/table/directives/reorderable-column.directive.mjs +0 -115
  1231. package/esm2022/table/directives/reorderable-row-handle.directive.mjs +0 -25
  1232. package/esm2022/table/directives/reorderable-row.directive.mjs +0 -122
  1233. package/esm2022/table/directives/resizable-column.directive.mjs +0 -123
  1234. package/esm2022/table/directives/row-group-header.directive.mjs +0 -26
  1235. package/esm2022/table/directives/row-toggler.directive.mjs +0 -42
  1236. package/esm2022/table/directives/save-editable-row.directive.mjs +0 -32
  1237. package/esm2022/table/directives/selectable-row-double-click.directive.mjs +0 -71
  1238. package/esm2022/table/directives/selectable-row.directive.mjs +0 -243
  1239. package/esm2022/table/directives/sortable-column.directive.mjs +0 -90
  1240. package/esm2022/table/public_api.mjs +0 -31
  1241. package/esm2022/table/table.interface.mjs +0 -2
  1242. package/esm2022/table/table.mjs +0 -2799
  1243. package/esm2022/table/table.module.mjs +0 -157
  1244. package/esm2022/table/table.service.mjs +0 -42
  1245. package/esm2022/tableconfiguration/cax-design-system-tableconfiguration.mjs +0 -5
  1246. package/esm2022/tableconfiguration/public_api.mjs +0 -3
  1247. package/esm2022/tableconfiguration/tableconfiguration.mjs +0 -60
  1248. package/esm2022/tableconfiguration/tableconfiguration.module.mjs +0 -16
  1249. package/esm2022/tabmenu/cax-design-system-tabmenu.mjs +0 -5
  1250. package/esm2022/tabmenu/public_api.mjs +0 -3
  1251. package/esm2022/tabmenu/tabmenu.interface.mjs +0 -2
  1252. package/esm2022/tabmenu/tabmenu.mjs +0 -576
  1253. package/esm2022/tabview/cax-design-system-tabview.mjs +0 -5
  1254. package/esm2022/tabview/public_api.mjs +0 -4
  1255. package/esm2022/tabview/tabview.interface.mjs +0 -2
  1256. package/esm2022/tabview/tabview.mjs +0 -913
  1257. package/esm2022/tabview/tabview.module.mjs +0 -25
  1258. package/esm2022/tag/cax-design-system-tag.mjs +0 -5
  1259. package/esm2022/tag/public_api.mjs +0 -4
  1260. package/esm2022/tag/tag.interface.mjs +0 -2
  1261. package/esm2022/tag/tag.mjs +0 -95
  1262. package/esm2022/tag/tag.module.mjs +0 -19
  1263. package/esm2022/terminal/cax-design-system-terminal.mjs +0 -5
  1264. package/esm2022/terminal/public_api.mjs +0 -3
  1265. package/esm2022/terminal/terminal.mjs +0 -143
  1266. package/esm2022/terminal/terminalservice.mjs +0 -25
  1267. package/esm2022/tieredmenu/cax-design-system-tieredmenu.mjs +0 -5
  1268. package/esm2022/tieredmenu/public_api.mjs +0 -4
  1269. package/esm2022/tieredmenu/tieredmenu.interface.mjs +0 -2
  1270. package/esm2022/tieredmenu/tieredmenu.mjs +0 -1289
  1271. package/esm2022/tieredmenu/tiredmenu.module.mjs +0 -23
  1272. package/esm2022/timeline/cax-design-system-timeline.mjs +0 -5
  1273. package/esm2022/timeline/public_api.mjs +0 -4
  1274. package/esm2022/timeline/timeline.interface.mjs +0 -2
  1275. package/esm2022/timeline/timeline.mjs +0 -83
  1276. package/esm2022/timeline/timeline.module.mjs +0 -19
  1277. package/esm2022/toast/cax-design-system-toast.mjs +0 -5
  1278. package/esm2022/toast/public_api.mjs +0 -4
  1279. package/esm2022/toast/toast.interface.mjs +0 -2
  1280. package/esm2022/toast/toast.mjs +0 -324
  1281. package/esm2022/toast/toast.module.mjs +0 -18
  1282. package/esm2022/toast/toastitem.mjs +0 -170
  1283. package/esm2022/togglebutton/cax-design-system-togglebutton.mjs +0 -5
  1284. package/esm2022/togglebutton/public_api.mjs +0 -3
  1285. package/esm2022/togglebutton/togglebutton.interface.mjs +0 -2
  1286. package/esm2022/togglebutton/togglebutton.mjs +0 -274
  1287. package/esm2022/toggleswitch/cax-design-system-toggleswitch.mjs +0 -5
  1288. package/esm2022/toggleswitch/public_api.mjs +0 -3
  1289. package/esm2022/toggleswitch/toggleswitch.mjs +0 -37
  1290. package/esm2022/toggleswitch/toggleswitch.module.mjs +0 -19
  1291. package/esm2022/toolbar/cax-design-system-toolbar.mjs +0 -5
  1292. package/esm2022/toolbar/public_api.mjs +0 -3
  1293. package/esm2022/toolbar/toolbar.interface.mjs +0 -2
  1294. package/esm2022/toolbar/toolbar.mjs +0 -111
  1295. package/esm2022/tooltip/cax-design-system-tooltip.mjs +0 -5
  1296. package/esm2022/tooltip/public_api.mjs +0 -3
  1297. package/esm2022/tooltip/tooltip.mjs +0 -889
  1298. package/esm2022/tooltip/tooltip.module.mjs +0 -20
  1299. package/esm2022/tree/cax-design-system-tree.mjs +0 -5
  1300. package/esm2022/tree/public_api.mjs +0 -4
  1301. package/esm2022/tree/tree.interface.mjs +0 -2
  1302. package/esm2022/tree/tree.mjs +0 -1544
  1303. package/esm2022/tree/tree.module.mjs +0 -31
  1304. package/esm2022/treeselect/cax-design-system-treeselect.mjs +0 -5
  1305. package/esm2022/treeselect/public_api.mjs +0 -4
  1306. package/esm2022/treeselect/treeselect.interface.mjs +0 -2
  1307. package/esm2022/treeselect/treeselect.mjs +0 -865
  1308. package/esm2022/treeselect/treeselect.module.mjs +0 -26
  1309. package/esm2022/treetable/cax-design-system-treetable.mjs +0 -5
  1310. package/esm2022/treetable/public_api.mjs +0 -3
  1311. package/esm2022/treetable/treetable.interface.mjs +0 -2
  1312. package/esm2022/treetable/treetable.mjs +0 -4111
  1313. package/esm2022/tristatecheckbox/cax-design-system-tristatecheckbox.mjs +0 -5
  1314. package/esm2022/tristatecheckbox/public_api.mjs +0 -4
  1315. package/esm2022/tristatecheckbox/tristatecheckbox.interface.mjs +0 -2
  1316. package/esm2022/tristatecheckbox/tristatecheckbox.mjs +0 -215
  1317. package/esm2022/tristatecheckbox/tristatecheckbox.module.mjs +0 -17
  1318. package/esm2022/ts-helpers/cax-design-system-ts-helpers.mjs +0 -5
  1319. package/esm2022/ts-helpers/public_api.mjs +0 -2
  1320. package/esm2022/ts-helpers/ts-helpers.mjs +0 -2
  1321. package/esm2022/upload/cax-design-system-upload.mjs +0 -5
  1322. package/esm2022/upload/public_api.mjs +0 -3
  1323. package/esm2022/upload/upload.component.mjs +0 -367
  1324. package/esm2022/upload/upload.component.module.mjs +0 -21
  1325. package/esm2022/utils/cax-design-system-utils.mjs +0 -5
  1326. package/esm2022/utils/objectutils.mjs +0 -258
  1327. package/esm2022/utils/public_api.mjs +0 -5
  1328. package/esm2022/utils/uniquecomponentid.mjs +0 -6
  1329. package/esm2022/utils/zindexutils.mjs +0 -35
  1330. package/esm2022/virtualscroller/cax-design-system-virtualscroller.mjs +0 -5
  1331. package/esm2022/virtualscroller/public_api.mjs +0 -3
  1332. package/esm2022/virtualscroller/virtualscroller.interface.mjs +0 -2
  1333. package/esm2022/virtualscroller/virtualscroller.mjs +0 -215
  1334. package/fieldset/fieldset.d.ts +0 -93
  1335. package/fieldset/fieldset.interface.d.ts +0 -46
  1336. package/fieldset/public_api.d.ts +0 -2
  1337. package/fileupload/fileupload.d.ts +0 -380
  1338. package/fileupload/fileupload.interface.d.ts +0 -226
  1339. package/fileupload/public_api.d.ts +0 -2
  1340. package/floatlabel/floatlabel.d.ts +0 -9
  1341. package/floatlabel/floatlabel.module.d.ts +0 -10
  1342. package/floatlabel/public_api.d.ts +0 -2
  1343. package/focustrap/focustrap.d.ts +0 -34
  1344. package/focustrap/public_api.d.ts +0 -1
  1345. package/galleria/galleria.d.ts +0 -404
  1346. package/galleria/galleria.interface.d.ts +0 -97
  1347. package/galleria/public_api.d.ts +0 -2
  1348. package/iconfield/iconfield.d.ts +0 -25
  1349. package/iconfield/public_api.d.ts +0 -1
  1350. package/icons/angledoubledown/angledoubledown.d.ts +0 -6
  1351. package/icons/angledoubledown/public_api.d.ts +0 -1
  1352. package/icons/angledoubleleft/angledoubleleft.d.ts +0 -6
  1353. package/icons/angledoubleleft/public_api.d.ts +0 -1
  1354. package/icons/angledoubleright/angledoubleright.d.ts +0 -6
  1355. package/icons/angledoubleright/public_api.d.ts +0 -1
  1356. package/icons/angledoubleup/angledoubleup.d.ts +0 -6
  1357. package/icons/angledoubleup/public_api.d.ts +0 -1
  1358. package/icons/angledown/angledown.d.ts +0 -6
  1359. package/icons/angledown/public_api.d.ts +0 -1
  1360. package/icons/angleleft/angleleft.d.ts +0 -6
  1361. package/icons/angleleft/public_api.d.ts +0 -1
  1362. package/icons/angleright/angleright.d.ts +0 -6
  1363. package/icons/angleright/public_api.d.ts +0 -1
  1364. package/icons/angleup/angleup.d.ts +0 -6
  1365. package/icons/angleup/public_api.d.ts +0 -1
  1366. package/icons/arrowdown/arrowdown.d.ts +0 -9
  1367. package/icons/arrowdown/public_api.d.ts +0 -1
  1368. package/icons/arrowdownleft/arrowdownleft.d.ts +0 -6
  1369. package/icons/arrowdownleft/public_api.d.ts +0 -1
  1370. package/icons/arrowdownright/arrowdownright.d.ts +0 -6
  1371. package/icons/arrowdownright/public_api.d.ts +0 -1
  1372. package/icons/arrowleft/arrowleft.d.ts +0 -8
  1373. package/icons/arrowleft/public_api.d.ts +0 -1
  1374. package/icons/arrowright/arrowright.d.ts +0 -6
  1375. package/icons/arrowright/public_api.d.ts +0 -1
  1376. package/icons/arrowup/arrowup.d.ts +0 -8
  1377. package/icons/arrowup/public_api.d.ts +0 -1
  1378. package/icons/ban/ban.d.ts +0 -8
  1379. package/icons/ban/public_api.d.ts +0 -1
  1380. package/icons/bars/bars.d.ts +0 -6
  1381. package/icons/bars/public_api.d.ts +0 -1
  1382. package/icons/blank/blank.d.ts +0 -6
  1383. package/icons/blank/public_api.d.ts +0 -1
  1384. package/icons/calendar/calendar.d.ts +0 -6
  1385. package/icons/calendar/public_api.d.ts +0 -1
  1386. package/icons/caretleft/caretleft.d.ts +0 -6
  1387. package/icons/caretleft/public_api.d.ts +0 -1
  1388. package/icons/caretright/caretright.d.ts +0 -6
  1389. package/icons/caretright/public_api.d.ts +0 -1
  1390. package/icons/check/check.d.ts +0 -6
  1391. package/icons/check/public_api.d.ts +0 -1
  1392. package/icons/chevrondown/chevrondown.d.ts +0 -6
  1393. package/icons/chevrondown/public_api.d.ts +0 -1
  1394. package/icons/chevronleft/chevronleft.d.ts +0 -6
  1395. package/icons/chevronleft/public_api.d.ts +0 -1
  1396. package/icons/chevronright/chevronright.d.ts +0 -6
  1397. package/icons/chevronright/public_api.d.ts +0 -1
  1398. package/icons/chevronup/chevronup.d.ts +0 -6
  1399. package/icons/chevronup/public_api.d.ts +0 -1
  1400. package/icons/exclamationtriangle/exclamationtriangle.d.ts +0 -9
  1401. package/icons/exclamationtriangle/public_api.d.ts +0 -1
  1402. package/icons/eye/eye.d.ts +0 -6
  1403. package/icons/eye/public_api.d.ts +0 -1
  1404. package/icons/eyeslash/eyeslash.d.ts +0 -8
  1405. package/icons/eyeslash/public_api.d.ts +0 -1
  1406. package/icons/filter/filter.d.ts +0 -8
  1407. package/icons/filter/public_api.d.ts +0 -1
  1408. package/icons/filterslash/filterslash.d.ts +0 -8
  1409. package/icons/filterslash/public_api.d.ts +0 -1
  1410. package/icons/home/home.d.ts +0 -8
  1411. package/icons/home/public_api.d.ts +0 -1
  1412. package/icons/infocircle/infocircle.d.ts +0 -8
  1413. package/icons/infocircle/public_api.d.ts +0 -1
  1414. package/icons/minus/minus.d.ts +0 -6
  1415. package/icons/minus/public_api.d.ts +0 -1
  1416. package/icons/pencil/pencil.d.ts +0 -8
  1417. package/icons/pencil/public_api.d.ts +0 -1
  1418. package/icons/plus/plus.d.ts +0 -8
  1419. package/icons/plus/public_api.d.ts +0 -1
  1420. package/icons/refresh/public_api.d.ts +0 -1
  1421. package/icons/refresh/refresh.d.ts +0 -8
  1422. package/icons/search/public_api.d.ts +0 -1
  1423. package/icons/search/search.d.ts +0 -8
  1424. package/icons/searchminus/public_api.d.ts +0 -1
  1425. package/icons/searchminus/searchminus.d.ts +0 -8
  1426. package/icons/searchplus/public_api.d.ts +0 -1
  1427. package/icons/searchplus/searchplus.d.ts +0 -8
  1428. package/icons/sortalt/public_api.d.ts +0 -1
  1429. package/icons/sortalt/sortalt.d.ts +0 -8
  1430. package/icons/sortamountdown/public_api.d.ts +0 -1
  1431. package/icons/sortamountdown/sortamountdown.d.ts +0 -8
  1432. package/icons/sortamountupalt/public_api.d.ts +0 -1
  1433. package/icons/sortamountupalt/sortamountupalt.d.ts +0 -8
  1434. package/icons/spinner/public_api.d.ts +0 -1
  1435. package/icons/spinner/spinner.d.ts +0 -8
  1436. package/icons/star/public_api.d.ts +0 -1
  1437. package/icons/star/star.d.ts +0 -8
  1438. package/icons/starfill/public_api.d.ts +0 -1
  1439. package/icons/starfill/starfill.d.ts +0 -8
  1440. package/icons/thlarge/public_api.d.ts +0 -1
  1441. package/icons/thlarge/thlarge.d.ts +0 -8
  1442. package/icons/times/public_api.d.ts +0 -1
  1443. package/icons/times/times.d.ts +0 -6
  1444. package/icons/timescircle/public_api.d.ts +0 -1
  1445. package/icons/timescircle/timescircle.d.ts +0 -8
  1446. package/icons/trash/public_api.d.ts +0 -1
  1447. package/icons/trash/trash.d.ts +0 -8
  1448. package/icons/undo/public_api.d.ts +0 -1
  1449. package/icons/undo/undo.d.ts +0 -8
  1450. package/icons/upload/public_api.d.ts +0 -1
  1451. package/icons/upload/upload.d.ts +0 -8
  1452. package/icons/windowmaximize/public_api.d.ts +0 -1
  1453. package/icons/windowmaximize/windowmaximize.d.ts +0 -8
  1454. package/icons/windowminimize/public_api.d.ts +0 -1
  1455. package/icons/windowminimize/windowminimize.d.ts +0 -8
  1456. package/image/image.d.ts +0 -188
  1457. package/image/image.interface.d.ts +0 -31
  1458. package/image/image.module.d.ts +0 -8
  1459. package/image/public_api.d.ts +0 -3
  1460. package/inplace/inplace.d.ts +0 -109
  1461. package/inplace/inplace.interface.d.ts +0 -19
  1462. package/inplace/public_api.d.ts +0 -2
  1463. package/inputgroup/inputgroup.d.ts +0 -33
  1464. package/inputgroup/inputgroup.module.d.ts +0 -15
  1465. package/inputgroup/public_api.d.ts +0 -2
  1466. package/inputgroupaddon/inputgroupaddon.d.ts +0 -21
  1467. package/inputgroupaddon/inputgroupaddon.module.d.ts +0 -14
  1468. package/inputgroupaddon/public_api.d.ts +0 -2
  1469. package/inputicon/inputicon.d.ts +0 -21
  1470. package/inputicon/public_api.d.ts +0 -1
  1471. package/inputmask/inputmask.d.ts +0 -273
  1472. package/inputmask/inputmask.interface.d.ts +0 -19
  1473. package/inputmask/inputmask.module.d.ts +0 -12
  1474. package/inputmask/public_api.d.ts +0 -3
  1475. package/inputnumber/inputnumber.d.ts +0 -397
  1476. package/inputnumber/inputnumber.interface.d.ts +0 -38
  1477. package/inputnumber/inputnumber.module.d.ts +0 -8
  1478. package/inputnumber/public_api.d.ts +0 -3
  1479. package/inputotp/inputotp.d.ts +0 -123
  1480. package/inputotp/inputotp.interface.d.ts +0 -65
  1481. package/inputotp/public_api.d.ts +0 -2
  1482. package/inputswitch/inputswitch.d.ts +0 -106
  1483. package/inputswitch/inputswitch.interface.d.ts +0 -15
  1484. package/inputswitch/public_api.d.ts +0 -2
  1485. package/inputtext/inputtext.component.d.ts +0 -43
  1486. package/inputtext/inputtext.directive.d.ts +0 -25
  1487. package/inputtext/inputtext.module.d.ts +0 -10
  1488. package/inputtext/public_api.d.ts +0 -3
  1489. package/inputtextarea/inputtextarea.component.d.ts +0 -57
  1490. package/inputtextarea/inputtextarea.directive.d.ts +0 -47
  1491. package/inputtextarea/inputtextarea.module.d.ts +0 -10
  1492. package/inputtextarea/public_api.d.ts +0 -3
  1493. package/keyfilter/keyfilter.d.ts +0 -58
  1494. package/keyfilter/keyfilter.interface.d.ts +0 -5
  1495. package/keyfilter/public_api.d.ts +0 -2
  1496. package/knob/knob.d.ts +0 -178
  1497. package/knob/public_api.d.ts +0 -1
  1498. package/listbox/listbox.d.ts +0 -463
  1499. package/listbox/listbox.interface.d.ts +0 -156
  1500. package/listbox/public_api.d.ts +0 -2
  1501. package/logo/logo.d.ts +0 -11
  1502. package/logo/logo.module.d.ts +0 -7
  1503. package/logo/public_api.d.ts +0 -2
  1504. package/megamenu/megamenu.d.ts +0 -198
  1505. package/megamenu/megamenu.interface.d.ts +0 -31
  1506. package/megamenu/public_api.d.ts +0 -2
  1507. package/menu/menu.d.ts +0 -210
  1508. package/menu/menu.module.d.ts +0 -12
  1509. package/menu/public_api.d.ts +0 -2
  1510. package/menubar/menubar.d.ts +0 -248
  1511. package/menubar/menubar.interface.d.ts +0 -40
  1512. package/menubar/public_api.d.ts +0 -2
  1513. package/message/message.d.ts +0 -52
  1514. package/message/public_api.d.ts +0 -1
  1515. package/messages/messages.d.ts +0 -115
  1516. package/messages/messages.interface.d.ts +0 -18
  1517. package/messages/messages.module.d.ts +0 -8
  1518. package/messages/public_api.d.ts +0 -3
  1519. package/metergroup/metergroup.d.ts +0 -101
  1520. package/metergroup/metergroup.interface.d.ts +0 -122
  1521. package/metergroup/public_api.d.ts +0 -2
  1522. package/multiselect/multiselect.d.ts +0 -710
  1523. package/multiselect/multiselect.interface.d.ts +0 -247
  1524. package/multiselect/multiselect.module.d.ts +0 -20
  1525. package/multiselect/public_api.d.ts +0 -3
  1526. package/navigation/navigation.d.ts +0 -70
  1527. package/navigation/navigation.interface.d.ts +0 -26
  1528. package/navigation/navigation.module.d.ts +0 -7
  1529. package/navigation/public_api.d.ts +0 -2
  1530. package/orderlist/orderlist.d.ts +0 -270
  1531. package/orderlist/orderlist.interface.d.ts +0 -110
  1532. package/orderlist/public_api.d.ts +0 -2
  1533. package/organizationchart/organizationchart.d.ts +0 -132
  1534. package/organizationchart/organizationchart.interface.d.ts +0 -59
  1535. package/organizationchart/public_api.d.ts +0 -2
  1536. package/overlay/overlay.d.ts +0 -238
  1537. package/overlay/overlay.module.d.ts +0 -8
  1538. package/overlay/public_api.d.ts +0 -2
  1539. package/overlaypanel/overlaypanel.d.ts +0 -162
  1540. package/overlaypanel/overlaypanel.module.d.ts +0 -8
  1541. package/overlaypanel/public_api.d.ts +0 -2
  1542. package/paginator/paginator.d.ts +0 -195
  1543. package/paginator/paginator.interface.d.ts +0 -37
  1544. package/paginator/paginator.module.d.ts +0 -17
  1545. package/paginator/public_api.d.ts +0 -3
  1546. package/panel/panel.d.ts +0 -126
  1547. package/panel/panel.interface.d.ts +0 -58
  1548. package/panel/public_api.d.ts +0 -2
  1549. package/panelmenu/panelmenu.d.ts +0 -225
  1550. package/panelmenu/panelmenu.interface.d.ts +0 -23
  1551. package/panelmenu/public_api.d.ts +0 -2
  1552. package/password/password.d.ts +0 -342
  1553. package/password/public_api.d.ts +0 -1
  1554. package/picklist/picklist.d.ts +0 -453
  1555. package/picklist/picklist.interface.d.ts +0 -242
  1556. package/picklist/public_api.d.ts +0 -2
  1557. package/progressbar/progressbar.d.ts +0 -54
  1558. package/progressbar/progressbar.module.d.ts +0 -8
  1559. package/progressbar/public_api.d.ts +0 -2
  1560. package/progressspinner/progressspinner.d.ts +0 -50
  1561. package/progressspinner/progressspinner.module.d.ts +0 -8
  1562. package/progressspinner/public_api.d.ts +0 -2
  1563. package/public_api.d.ts +0 -2
  1564. package/radiobutton/public_api.d.ts +0 -3
  1565. package/radiobutton/radiobutton.d.ts +0 -150
  1566. package/radiobutton/radiobutton.interface.d.ts +0 -15
  1567. package/radiobutton/radiobutton.module.d.ts +0 -7
  1568. package/rating/public_api.d.ts +0 -2
  1569. package/rating/rating.d.ts +0 -146
  1570. package/rating/rating.interface.d.ts +0 -34
  1571. package/ripple/public_api.d.ts +0 -2
  1572. package/ripple/ripple.d.ts +0 -30
  1573. package/ripple/ripple.module.d.ts +0 -7
  1574. package/scroller/public_api.d.ts +0 -3
  1575. package/scroller/scroller.d.ts +0 -343
  1576. package/scroller/scroller.interface.d.ts +0 -177
  1577. package/scroller/scroller.module.d.ts +0 -8
  1578. package/scrollpanel/public_api.d.ts +0 -2
  1579. package/scrollpanel/scrollpanel.d.ts +0 -103
  1580. package/scrollpanel/scrollpanel.interface.d.ts +0 -11
  1581. package/scrolltop/public_api.d.ts +0 -2
  1582. package/scrolltop/scrolltop.d.ts +0 -97
  1583. package/scrolltop/scrolltop.interface.d.ts +0 -18
  1584. package/selectbutton/public_api.d.ts +0 -3
  1585. package/selectbutton/selectbutton.d.ts +0 -128
  1586. package/selectbutton/selectbutton.interface.d.ts +0 -45
  1587. package/selectbutton/selectbutton.module.d.ts +0 -11
  1588. package/sidebar/public_api.d.ts +0 -3
  1589. package/sidebar/sidebar.d.ts +0 -173
  1590. package/sidebar/sidebar.interface.d.ts +0 -27
  1591. package/sidebar/sidebar.module.d.ts +0 -12
  1592. package/skeleton/public_api.d.ts +0 -2
  1593. package/skeleton/skeleton.d.ts +0 -61
  1594. package/skeleton/skeleton.module.d.ts +0 -8
  1595. package/slidemenu/public_api.d.ts +0 -2
  1596. package/slidemenu/slidemenu.d.ts +0 -322
  1597. package/slidemenu/slidemenu.interface.d.ts +0 -15
  1598. package/slider/public_api.d.ts +0 -2
  1599. package/slider/slider.d.ts +0 -174
  1600. package/slider/slider.interface.d.ts +0 -38
  1601. package/speeddial/public_api.d.ts +0 -3
  1602. package/speeddial/speeddial.d.ts +0 -277
  1603. package/speeddial/speeddial.interface.d.ts +0 -28
  1604. package/speeddial/speeddial.module.d.ts +0 -14
  1605. package/spinner/public_api.d.ts +0 -1
  1606. package/spinner/spinner.d.ts +0 -90
  1607. package/splitbutton/public_api.d.ts +0 -3
  1608. package/splitbutton/splitbutton.d.ts +0 -222
  1609. package/splitbutton/splitbutton.interface.d.ts +0 -30
  1610. package/splitbutton/splitbutton.module.d.ts +0 -13
  1611. package/splitter/public_api.d.ts +0 -3
  1612. package/splitter/splitter.d.ts +0 -158
  1613. package/splitter/splitter.interface.d.ts +0 -34
  1614. package/splitter/splitter.module.d.ts +0 -9
  1615. package/stepper/public_api.d.ts +0 -2
  1616. package/stepper/stepper.d.ts +0 -117
  1617. package/stepper/stepper.interface.d.ts +0 -26
  1618. package/steps/public_api.d.ts +0 -2
  1619. package/steps/steps.d.ts +0 -77
  1620. package/steps/steps.module.d.ts +0 -10
  1621. package/styleclass/public_api.d.ts +0 -1
  1622. package/styleclass/styleclass.d.ts +0 -108
  1623. package/table/columnfilter.interface.d.ts +0 -247
  1624. package/table/components/cell-editor/cell-editor.d.ts +0 -20
  1625. package/table/components/column-filter/column-filter.d.ts +0 -291
  1626. package/table/components/column-filter-form-element/column-filter-form-element.d.ts +0 -37
  1627. package/table/components/sort-icon/sort-icon.d.ts +0 -22
  1628. package/table/components/table-body/table-body.d.ts +0 -36
  1629. package/table/components/table-checkbox/table-checkbox.d.ts +0 -32
  1630. package/table/components/table-header-checkbox/table-header-checkbox.d.ts +0 -29
  1631. package/table/components/table-radio-button/table-radio-button.d.ts +0 -29
  1632. package/table/directives/cancel-editable-row.directive.d.ts +0 -11
  1633. package/table/directives/cell-highlight.directive.d.ts +0 -14
  1634. package/table/directives/content-menu-row.directive.d.ts +0 -22
  1635. package/table/directives/dynamic-column-width.directive.d.ts +0 -12
  1636. package/table/directives/editable-column.directive.d.ts +0 -40
  1637. package/table/directives/editable-row.directive.d.ts +0 -12
  1638. package/table/directives/frozen-column.directive.d.ts +0 -16
  1639. package/table/directives/init-editable-row.directive.d.ts +0 -11
  1640. package/table/directives/reorderable-column.directive.d.ts +0 -32
  1641. package/table/directives/reorderable-row-handle.directive.d.ts +0 -9
  1642. package/table/directives/reorderable-row.directive.d.ts +0 -34
  1643. package/table/directives/resizable-column.directive.d.ts +0 -35
  1644. package/table/directives/row-group-header.directive.d.ts +0 -9
  1645. package/table/directives/row-toggler.directive.d.ts +0 -13
  1646. package/table/directives/save-editable-row.directive.d.ts +0 -11
  1647. package/table/directives/selectable-row-double-click.directive.d.ts +0 -22
  1648. package/table/directives/selectable-row.directive.d.ts +0 -37
  1649. package/table/directives/sortable-column.directive.d.ts +0 -24
  1650. package/table/public_api.d.ts +0 -30
  1651. package/table/table.d.ts +0 -871
  1652. package/table/table.interface.d.ts +0 -623
  1653. package/table/table.module.d.ts +0 -34
  1654. package/table/table.service.d.ts +0 -24
  1655. package/tableconfiguration/public_api.d.ts +0 -2
  1656. package/tableconfiguration/tableconfiguration.d.ts +0 -15
  1657. package/tableconfiguration/tableconfiguration.module.d.ts +0 -7
  1658. package/tabmenu/public_api.d.ts +0 -2
  1659. package/tabmenu/tabmenu.d.ts +0 -126
  1660. package/tabmenu/tabmenu.interface.d.ts +0 -32
  1661. package/tabview/public_api.d.ts +0 -3
  1662. package/tabview/tabview.d.ts +0 -293
  1663. package/tabview/tabview.interface.d.ts +0 -49
  1664. package/tabview/tabview.module.d.ts +0 -15
  1665. package/tag/public_api.d.ts +0 -3
  1666. package/tag/tag.d.ts +0 -61
  1667. package/tag/tag.interface.d.ts +0 -11
  1668. package/tag/tag.module.d.ts +0 -9
  1669. package/terminal/public_api.d.ts +0 -2
  1670. package/terminal/terminal.d.ts +0 -56
  1671. package/terminal/terminalservice.d.ts +0 -11
  1672. package/tieredmenu/public_api.d.ts +0 -3
  1673. package/tieredmenu/tieredmenu.d.ts +0 -266
  1674. package/tieredmenu/tieredmenu.interface.d.ts +0 -27
  1675. package/tieredmenu/tiredmenu.module.d.ts +0 -13
  1676. package/timeline/public_api.d.ts +0 -3
  1677. package/timeline/timeline.d.ts +0 -47
  1678. package/timeline/timeline.interface.d.ts +0 -43
  1679. package/timeline/timeline.module.d.ts +0 -9
  1680. package/toast/public_api.d.ts +0 -3
  1681. package/toast/toast.d.ts +0 -142
  1682. package/toast/toast.interface.d.ts +0 -52
  1683. package/toast/toast.module.d.ts +0 -9
  1684. package/toast/toastitem.d.ts +0 -37
  1685. package/togglebutton/public_api.d.ts +0 -2
  1686. package/togglebutton/togglebutton.d.ts +0 -115
  1687. package/togglebutton/togglebutton.interface.d.ts +0 -34
  1688. package/toggleswitch/public_api.d.ts +0 -2
  1689. package/toggleswitch/toggleswitch.d.ts +0 -14
  1690. package/toggleswitch/toggleswitch.module.d.ts +0 -9
  1691. package/toolbar/public_api.d.ts +0 -2
  1692. package/toolbar/toolbar.d.ts +0 -43
  1693. package/toolbar/toolbar.interface.d.ts +0 -19
  1694. package/tooltip/public_api.d.ts +0 -2
  1695. package/tooltip/tooltip.d.ts +0 -208
  1696. package/tooltip/tooltip.module.d.ts +0 -10
  1697. package/tree/public_api.d.ts +0 -3
  1698. package/tree/tree.d.ts +0 -461
  1699. package/tree/tree.interface.d.ts +0 -193
  1700. package/tree/tree.module.d.ts +0 -21
  1701. package/treeselect/public_api.d.ts +0 -3
  1702. package/treeselect/treeselect.d.ts +0 -394
  1703. package/treeselect/treeselect.interface.d.ts +0 -108
  1704. package/treeselect/treeselect.module.d.ts +0 -16
  1705. package/treetable/public_api.d.ts +0 -2
  1706. package/treetable/treetable.d.ts +0 -988
  1707. package/treetable/treetable.interface.d.ts +0 -472
  1708. package/tristatecheckbox/public_api.d.ts +0 -3
  1709. package/tristatecheckbox/tristatecheckbox.d.ts +0 -117
  1710. package/tristatecheckbox/tristatecheckbox.interface.d.ts +0 -30
  1711. package/tristatecheckbox/tristatecheckbox.module.d.ts +0 -8
  1712. package/ts-helpers/public_api.d.ts +0 -1
  1713. package/ts-helpers/ts-helpers.d.ts +0 -4
  1714. package/upload/public_api.d.ts +0 -2
  1715. package/upload/upload.component.d.ts +0 -67
  1716. package/upload/upload.component.module.d.ts +0 -11
  1717. package/utils/objectutils.d.ts +0 -24
  1718. package/utils/public_api.d.ts +0 -4
  1719. package/utils/uniquecomponentid.d.ts +0 -2
  1720. package/utils/zindexutils.d.ts +0 -7
  1721. package/virtualscroller/public_api.d.ts +0 -2
  1722. package/virtualscroller/virtualscroller.d.ts +0 -89
  1723. package/virtualscroller/virtualscroller.interface.d.ts +0 -72
@@ -1,1555 +0,0 @@
1
- import { NgModule, Component, Input, Output, EventEmitter, ContentChildren, ContentChild, forwardRef, ViewChild, ChangeDetectionStrategy, ViewEncapsulation, computed, signal, booleanAttribute, numberAttribute } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { SharedModule, CaxTemplate, Footer, Header } from 'cax-design-system/api';
4
- import { DomHandler } from 'cax-design-system/dom';
5
- import { ObjectUtils, UniqueComponentId } from 'cax-design-system/utils';
6
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
7
- import { RippleModule } from 'cax-design-system/ripple';
8
- import { SearchIcon } from 'cax-design-system/icons/search';
9
- import { CheckIcon } from 'cax-design-system/icons/check';
10
- import { ScrollerModule } from 'cax-design-system/scroller';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "cax-design-system/api";
13
- import * as i2 from "@angular/common";
14
- import * as i3 from "cax-design-system/scroller";
15
- export const LISTBOX_VALUE_ACCESSOR = {
16
- provide: NG_VALUE_ACCESSOR,
17
- useExisting: forwardRef(() => Listbox),
18
- multi: true
19
- };
20
- /**
21
- * ListBox is used to select one or more values from a list of items.
22
- * @group Components
23
- */
24
- export class Listbox {
25
- el;
26
- cd;
27
- filterService;
28
- config;
29
- renderer;
30
- /**
31
- * Unique identifier of the component.
32
- * @group Props
33
- */
34
- id;
35
- /**
36
- * Text to display when the search is active. Defaults to global value in i18n translation configuration.
37
- * @group Props
38
- * @defaultValue '{0} results are available'
39
- */
40
- searchMessage;
41
- /**
42
- * Text to display when filtering does not return any results. Defaults to global value in i18n translation configuration.
43
- * @group Props
44
- * @defaultValue 'No selected item'
45
- */
46
- emptySelectionMessage;
47
- /**
48
- * Text to be displayed in hidden accessible field when options are selected. Defaults to global value in i18n translation configuration.
49
- * @group Props
50
- * @defaultValue '{0} items selected'
51
- */
52
- selectionMessage;
53
- /**
54
- * Whether to focus on the first visible or selected element when the overlay panel is shown.
55
- * @group Props
56
- */
57
- autoOptionFocus = true;
58
- /**
59
- * Defines a string that labels the input for accessibility.
60
- * @group Props
61
- */
62
- ariaLabel;
63
- /**
64
- * When enabled, the focused option is selected.
65
- * @group Props
66
- */
67
- selectOnFocus;
68
- /**
69
- * Locale to use in searching. The default locale is the host environment's current locale.
70
- * @group Props
71
- */
72
- searchLocale;
73
- /**
74
- * When enabled, the hovered option will be focused.
75
- * @group Props
76
- */
77
- focusOnHover;
78
- /**
79
- * Text to display when filtering.
80
- * @group Props
81
- */
82
- filterMessage;
83
- /**
84
- * Fields used when filtering the options, defaults to optionLabel.
85
- * @group Props
86
- */
87
- filterFields;
88
- /**
89
- * Defines if data is loaded and interacted with in lazy manner.
90
- * @group Props
91
- */
92
- lazy = false;
93
- /**
94
- * Whether the data should be loaded on demand during scroll.
95
- * @group Props
96
- */
97
- virtualScroll;
98
- /**
99
- * Height of an item in the list for VirtualScrolling.
100
- * @group Props
101
- */
102
- virtualScrollItemSize;
103
- /**
104
- * Whether to use the scroller feature. The properties of scroller component can be used like an object in it.
105
- * @group Props
106
- */
107
- virtualScrollOptions;
108
- /**
109
- * Height of the viewport in pixels, a scrollbar is defined if height of list exceeds this value.
110
- * @group Props
111
- */
112
- scrollHeight = '200px';
113
- /**
114
- * Index of the element in tabbing order.
115
- * @group Props
116
- */
117
- tabindex = 0;
118
- /**
119
- * When specified, allows selecting multiple values.
120
- * @group Props
121
- */
122
- multiple;
123
- /**
124
- * Inline style of the container.
125
- * @group Props
126
- */
127
- style;
128
- /**
129
- * Style class of the container.
130
- * @group Props
131
- */
132
- styleClass;
133
- /**
134
- * Inline style of the list element.
135
- * @group Props
136
- */
137
- listStyle;
138
- /**
139
- * Style class of the list element.
140
- * @group Props
141
- */
142
- listStyleClass;
143
- /**
144
- * When present, it specifies that the element value cannot be changed.
145
- * @group Props
146
- */
147
- readonly;
148
- /**
149
- * When present, it specifies that the element should be disabled.
150
- * @group Props
151
- */
152
- disabled;
153
- /**
154
- * When specified, allows selecting items with checkboxes.
155
- * @group Props
156
- */
157
- checkbox = false;
158
- /**
159
- * When specified, displays a filter input at header.
160
- * @group Props
161
- */
162
- filter = false;
163
- /**
164
- * When filtering is enabled, filterBy decides which field or fields (comma separated) to search against.
165
- * @group Props
166
- */
167
- filterBy;
168
- /**
169
- * Defines how the items are filtered.
170
- * @group Props
171
- */
172
- filterMatchMode = 'contains';
173
- /**
174
- * Locale to use in filtering. The default locale is the host environment's current locale.
175
- * @group Props
176
- */
177
- filterLocale;
178
- /**
179
- * Defines how multiple items can be selected, when true metaKey needs to be pressed to select or unselect an item and when set to false selection of each item can be toggled individually. On touch enabled devices, metaKeySelection is turned off automatically.
180
- * @group Props
181
- */
182
- metaKeySelection = false;
183
- /**
184
- * A property to uniquely identify a value in options.
185
- * @group Props
186
- */
187
- dataKey;
188
- /**
189
- * Whether header checkbox is shown in multiple mode.
190
- * @group Props
191
- */
192
- showToggleAll = true;
193
- /**
194
- * Name of the label field of an option.
195
- * @group Props
196
- */
197
- optionLabel;
198
- /**
199
- * Name of the value field of an option.
200
- * @group Props
201
- */
202
- optionValue;
203
- /**
204
- * Name of the options field of an option group.
205
- * @group Props
206
- */
207
- optionGroupChildren = 'items';
208
- /**
209
- * Name of the label field of an option group.
210
- * @group Props
211
- */
212
- optionGroupLabel = 'label';
213
- /**
214
- * Name of the disabled field of an option.
215
- * @group Props
216
- */
217
- optionDisabled;
218
- /**
219
- * Defines a string that labels the filter input.
220
- * @group Props
221
- */
222
- ariaFilterLabel;
223
- /**
224
- * Defines placeholder of the filter input.
225
- * @group Props
226
- */
227
- filterPlaceHolder;
228
- /**
229
- * Text to display when filtering does not return any results.
230
- * @group Props
231
- */
232
- emptyFilterMessage;
233
- /**
234
- * Text to display when there is no data. Defaults to global value in i18n translation configuration.
235
- * @group Props
236
- */
237
- emptyMessage;
238
- /**
239
- * Whether to display options as grouped when nested options are provided.
240
- * @group Props
241
- */
242
- group;
243
- /**
244
- * An array of selectitems to display as the available options.
245
- * @group Props
246
- */
247
- get options() {
248
- return this._options();
249
- }
250
- set options(val) {
251
- this._options.set(val);
252
- }
253
- /**
254
- * When specified, filter displays with this value.
255
- * @group Props
256
- */
257
- get filterValue() {
258
- return this._filterValue();
259
- }
260
- set filterValue(val) {
261
- this._filterValue.set(val);
262
- }
263
- /**
264
- * Whether all data is selected.
265
- * @group Props
266
- */
267
- get selectAll() {
268
- return this._selectAll;
269
- }
270
- set selectAll(value) {
271
- this._selectAll = value;
272
- }
273
- /**
274
- * Callback to invoke on value change.
275
- * @param {ListboxChangeEvent} event - Custom change event.
276
- * @group Emits
277
- */
278
- onChange = new EventEmitter();
279
- /**
280
- * Callback to invoke when option is clicked.
281
- * @param {ListboxClickEvent} event - Custom click event.
282
- * @group Emits
283
- */
284
- onClick = new EventEmitter();
285
- /**
286
- * Callback to invoke when option is double clicked.
287
- * @param {ListboxDoubleClickEvent} event - Custom double click event.
288
- * @group Emits
289
- */
290
- onDblClick = new EventEmitter();
291
- /**
292
- * Callback to invoke when data is filtered.
293
- * @param {ListboxFilterEvent} event - Custom filter event.
294
- * @group Emits
295
- */
296
- onFilter = new EventEmitter();
297
- /**
298
- * Callback to invoke when component receives focus.
299
- * @param {FocusEvent} event - Focus event.
300
- * @group Emits
301
- */
302
- onFocus = new EventEmitter();
303
- /**
304
- * Callback to invoke when component loses focus.
305
- * @param {FocusEvent} event - Blur event.
306
- * @group Emits
307
- */
308
- onBlur = new EventEmitter();
309
- /**
310
- * Callback to invoke when all data is selected.
311
- * @param {ListboxSelectAllChangeEvent} event - Custom select event.
312
- * @group Emits
313
- */
314
- onSelectAllChange = new EventEmitter();
315
- headerCheckboxViewChild;
316
- filterViewChild;
317
- lastHiddenFocusableElement;
318
- firstHiddenFocusableElement;
319
- scroller;
320
- listViewChild;
321
- wrapperViewChild;
322
- headerFacet;
323
- footerFacet;
324
- templates;
325
- itemTemplate;
326
- groupTemplate;
327
- headerTemplate;
328
- filterTemplate;
329
- footerTemplate;
330
- emptyFilterTemplate;
331
- emptyTemplate;
332
- filterIconTemplate;
333
- checkIconTemplate;
334
- _filterValue = signal(null);
335
- _filteredOptions;
336
- filterOptions;
337
- filtered;
338
- value;
339
- onModelChange = () => { };
340
- onModelTouched = () => { };
341
- optionTouched;
342
- focus;
343
- headerCheckboxFocus;
344
- translationSubscription;
345
- focused;
346
- scrollerTabIndex = '0';
347
- get containerClass() {
348
- return {
349
- 'p-listbox p-component': true,
350
- 'p-disabled': this.disabled
351
- };
352
- }
353
- get focusedOptionId() {
354
- return this.focusedOptionIndex() !== -1 ? `${this.id}_${this.focusedOptionIndex()}` : null;
355
- }
356
- get filterResultMessageText() {
357
- return ObjectUtils.isNotEmpty(this.visibleOptions()) ? this.filterMessageText.replaceAll('{0}', this.visibleOptions().length) : this.emptyFilterMessageText;
358
- }
359
- get filterMessageText() {
360
- return this.filterMessage || this.config.translation.searchMessage || '';
361
- }
362
- get searchMessageText() {
363
- return this.searchMessage || this.config.translation.searchMessage || '';
364
- }
365
- get emptyFilterMessageText() {
366
- return this.emptyFilterMessage || this.config.translation.emptySearchMessage || this.config.translation.emptyFilterMessage || '';
367
- }
368
- get selectionMessageText() {
369
- return this.selectionMessage || this.config.translation.selectionMessage || '';
370
- }
371
- get emptySelectionMessageText() {
372
- return this.emptySelectionMessage || this.config.translation.emptySelectionMessage || '';
373
- }
374
- get selectedMessageText() {
375
- return this.hasSelectedOption() ? this.selectionMessageText.replaceAll('{0}', this.multiple ? this.modelValue().length : '1') : this.emptySelectionMessageText;
376
- }
377
- get ariaSetSize() {
378
- return this.visibleOptions().filter((option) => !this.isOptionGroup(option)).length;
379
- }
380
- get virtualScrollerDisabled() {
381
- return !this.virtualScroll;
382
- }
383
- get searchFields() {
384
- return this.filterFields || [this.optionLabel];
385
- }
386
- get toggleAllAriaLabel() {
387
- return this.config.translation.aria ? this.config.translation.aria[this.allSelected() ? 'selectAll' : 'unselectAll'] : undefined;
388
- }
389
- searchValue;
390
- searchTimeout;
391
- _selectAll = null;
392
- _options = signal(null);
393
- startRangeIndex = signal(-1);
394
- focusedOptionIndex = signal(-1);
395
- modelValue = signal(null);
396
- visibleOptions = computed(() => {
397
- const options = this.group ? this.flatOptions(this._options()) : this._options() || [];
398
- const filterValue = this._filterValue();
399
- if (this.searchFields[0] === undefined) {
400
- return filterValue ? options.filter((option) => option.toString().toLocaleLowerCase(this.filterLocale).indexOf(filterValue.toLocaleLowerCase(this.filterLocale).trim()) !== -1) : options;
401
- }
402
- else
403
- return filterValue ? this.filterService.filter(options, this.searchFields, filterValue, this.filterMatchMode, this.filterLocale) : options;
404
- });
405
- constructor(el, cd, filterService, config, renderer) {
406
- this.el = el;
407
- this.cd = cd;
408
- this.filterService = filterService;
409
- this.config = config;
410
- this.renderer = renderer;
411
- }
412
- ngOnInit() {
413
- this.id = this.id || UniqueComponentId();
414
- this.translationSubscription = this.config.translationObserver.subscribe(() => {
415
- this.cd.markForCheck();
416
- });
417
- this.autoUpdateModel();
418
- if (this.filterBy) {
419
- this.filterOptions = {
420
- filter: (value) => this.onFilterChange(value),
421
- reset: () => this.resetFilter()
422
- };
423
- }
424
- }
425
- ngAfterContentInit() {
426
- this.templates.forEach((item) => {
427
- switch (item.getType()) {
428
- case 'item':
429
- this.itemTemplate = item.template;
430
- break;
431
- case 'group':
432
- this.groupTemplate = item.template;
433
- break;
434
- case 'header':
435
- this.headerTemplate = item.template;
436
- break;
437
- case 'filter':
438
- this.filterTemplate = item.template;
439
- break;
440
- case 'footer':
441
- this.footerTemplate = item.template;
442
- break;
443
- case 'empty':
444
- this.emptyTemplate = item.template;
445
- break;
446
- case 'emptyfilter':
447
- this.emptyFilterTemplate = item.template;
448
- break;
449
- case 'filtericon':
450
- this.filterIconTemplate = item.template;
451
- break;
452
- case 'checkicon':
453
- this.checkIconTemplate = item.template;
454
- break;
455
- default:
456
- this.itemTemplate = item.template;
457
- break;
458
- }
459
- });
460
- }
461
- writeValue(value) {
462
- this.value = value;
463
- this.modelValue.set(this.value);
464
- this.cd.markForCheck();
465
- }
466
- registerOnChange(fn) {
467
- this.onModelChange = fn;
468
- }
469
- registerOnTouched(fn) {
470
- this.onModelTouched = fn;
471
- }
472
- setDisabledState(val) {
473
- this.disabled = val;
474
- this.cd.markForCheck();
475
- }
476
- flatOptions(options) {
477
- return (options || []).reduce((result, option, index) => {
478
- result.push({ optionGroup: option, group: true, index });
479
- const optionGroupChildren = this.getOptionGroupChildren(option);
480
- optionGroupChildren && optionGroupChildren.forEach((o) => result.push(o));
481
- return result;
482
- }, []);
483
- }
484
- autoUpdateModel() {
485
- if (this.selectOnFocus && this.autoOptionFocus && !this.hasSelectedOption() && !this.multiple) {
486
- const focusedOptionIndex = this.findFirstFocusedOptionIndex();
487
- this.focusedOptionIndex.set(focusedOptionIndex);
488
- this.onOptionSelect(null, this.visibleOptions()[this.focusedOptionIndex()]);
489
- }
490
- }
491
- /**
492
- * Updates the model value.
493
- * @group Method
494
- */
495
- updateModel(value, event) {
496
- this.value = value;
497
- this.modelValue.set(value);
498
- this.onModelChange(value);
499
- this.onChange.emit({ originalEvent: event, value: this.value });
500
- }
501
- removeOption(option) {
502
- return this.modelValue().filter((val) => !ObjectUtils.equals(val, this.getOptionValue(option), this.equalityKey()));
503
- }
504
- onOptionSelect(event, option, index = -1) {
505
- if (this.disabled || this.isOptionDisabled(option) || this.readonly) {
506
- return;
507
- }
508
- event && this.onClick.emit({ originalEvent: event, option, value: this.value });
509
- this.multiple ? this.onOptionSelectMultiple(event, option) : this.onOptionSelectSingle(event, option);
510
- this.optionTouched = false;
511
- index !== -1 && this.focusedOptionIndex.set(index);
512
- }
513
- onOptionSelectMultiple(event, option) {
514
- let selected = this.isSelected(option);
515
- let value = null;
516
- let metaSelection = this.optionTouched ? false : this.metaKeySelection;
517
- if (metaSelection) {
518
- let metaKey = event.metaKey || event.ctrlKey;
519
- if (selected) {
520
- value = metaKey ? this.removeOption(option) : [this.getOptionValue(option)];
521
- }
522
- else {
523
- value = metaKey ? this.modelValue() || [] : [];
524
- value = [...value, this.getOptionValue(option)];
525
- }
526
- }
527
- else {
528
- value = selected ? this.removeOption(option) : [...(this.modelValue() || []), this.getOptionValue(option)];
529
- }
530
- this.updateModel(value, event);
531
- }
532
- onOptionSelectSingle(event, option) {
533
- let selected = this.isSelected(option);
534
- let valueChanged = false;
535
- let value = null;
536
- let metaSelection = this.optionTouched ? false : this.metaKeySelection;
537
- if (metaSelection) {
538
- let metaKey = event.metaKey || event.ctrlKey;
539
- if (selected) {
540
- if (metaKey) {
541
- value = null;
542
- valueChanged = true;
543
- }
544
- }
545
- else {
546
- value = this.getOptionValue(option);
547
- valueChanged = true;
548
- }
549
- }
550
- else {
551
- value = selected ? null : this.getOptionValue(option);
552
- valueChanged = true;
553
- }
554
- if (valueChanged) {
555
- this.updateModel(value, event);
556
- }
557
- }
558
- onOptionSelectRange(event, start = -1, end = -1) {
559
- start === -1 && (start = this.findNearestSelectedOptionIndex(end, true));
560
- end === -1 && (end = this.findNearestSelectedOptionIndex(start));
561
- if (start !== -1 && end !== -1) {
562
- const rangeStart = Math.min(start, end);
563
- const rangeEnd = Math.max(start, end);
564
- const value = this.visibleOptions()
565
- .slice(rangeStart, rangeEnd + 1)
566
- .filter((option) => this.isValidOption(option))
567
- .map((option) => this.getOptionValue(option));
568
- this.updateModel(value, event);
569
- }
570
- }
571
- onToggleAll(event) {
572
- if (this.disabled || this.readonly) {
573
- return;
574
- }
575
- DomHandler.focus(this.headerCheckboxViewChild.nativeElement);
576
- if (this.selectAll !== null) {
577
- this.onSelectAllChange.emit({
578
- originalEvent: event,
579
- checked: !this.allSelected()
580
- });
581
- }
582
- else {
583
- const value = this.allSelected()
584
- ? []
585
- : this.visibleOptions()
586
- .filter((option) => this.isValidOption(option))
587
- .map((option) => this.getOptionValue(option));
588
- this.updateModel(value, event);
589
- }
590
- event.preventDefault();
591
- // event.stopPropagation();
592
- }
593
- allSelected() {
594
- return this.selectAll !== null ? this.selectAll : ObjectUtils.isNotEmpty(this.visibleOptions()) && this.visibleOptions().every((option) => this.isOptionGroup(option) || this.isOptionDisabled(option) || this.isSelected(option));
595
- }
596
- onOptionTouchEnd() {
597
- if (this.disabled) {
598
- return;
599
- }
600
- this.optionTouched = true;
601
- }
602
- onOptionMouseDown(event, index) {
603
- this.changeFocusedOptionIndex(event, index);
604
- }
605
- onOptionMouseEnter(event, index) {
606
- if (this.focusOnHover) {
607
- this.changeFocusedOptionIndex(event, index);
608
- }
609
- }
610
- onOptionDoubleClick(event, option) {
611
- if (this.disabled || this.isOptionDisabled(option) || this.readonly) {
612
- return;
613
- }
614
- this.onDblClick.emit({
615
- originalEvent: event,
616
- option: option,
617
- value: this.value
618
- });
619
- }
620
- onFirstHiddenFocus(event) {
621
- DomHandler.focus(this.listViewChild.nativeElement);
622
- const firstFocusableEl = DomHandler.getFirstFocusableElement(this.el.nativeElement, ':not([data-p-hidden-focusable="true"])');
623
- this.lastHiddenFocusableElement.nativeElement.tabIndex = ObjectUtils.isEmpty(firstFocusableEl) ? '-1' : undefined;
624
- this.firstHiddenFocusableElement.nativeElement.tabIndex = -1;
625
- }
626
- onLastHiddenFocus(event) {
627
- const relatedTarget = event.relatedTarget;
628
- if (relatedTarget === this.listViewChild.nativeElement) {
629
- const firstFocusableEl = DomHandler.getFirstFocusableElement(this.el.nativeElement, ':not(.p-hidden-focusable)');
630
- DomHandler.focus(firstFocusableEl);
631
- this.firstHiddenFocusableElement.nativeElement.tabIndex = undefined;
632
- }
633
- else {
634
- DomHandler.focus(this.firstHiddenFocusableElement.nativeElement);
635
- }
636
- this.lastHiddenFocusableElement.nativeElement.tabIndex = -1;
637
- }
638
- onFocusout(event) {
639
- if (!this.el.nativeElement.contains(event.relatedTarget) && this.lastHiddenFocusableElement && this.firstHiddenFocusableElement) {
640
- this.firstHiddenFocusableElement.nativeElement.tabIndex = this.lastHiddenFocusableElement.nativeElement.tabIndex = undefined;
641
- this.wrapperViewChild.nativeElement.tabIndex = '0';
642
- this.scrollerTabIndex = '0';
643
- }
644
- }
645
- onListFocus(event) {
646
- this.focused = true;
647
- const focusedOptionIndex = this.focusedOptionIndex() !== -1 ? this.focusedOptionIndex() : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;
648
- this.focusedOptionIndex.set(focusedOptionIndex);
649
- this.onFocus.emit(event);
650
- this.wrapperViewChild.nativeElement.tabIndex = '-1';
651
- this.scrollerTabIndex = '-1';
652
- }
653
- onListBlur(event) {
654
- this.focused = false;
655
- this.focusedOptionIndex.set(-1);
656
- this.startRangeIndex.set(-1);
657
- this.searchValue = '';
658
- }
659
- onHeaderCheckboxFocus(event) {
660
- this.headerCheckboxFocus = true;
661
- }
662
- onHeaderCheckboxBlur() {
663
- this.headerCheckboxFocus = false;
664
- }
665
- onHeaderCheckboxKeyDown(event) {
666
- if (this.disabled) {
667
- event.preventDefault();
668
- return;
669
- }
670
- switch (event.code) {
671
- case 'Space':
672
- this.onToggleAll(event);
673
- break;
674
- case 'Enter':
675
- this.onToggleAll(event);
676
- break;
677
- case 'Tab':
678
- this.onHeaderCheckboxTabKeyDown(event);
679
- break;
680
- default:
681
- break;
682
- }
683
- }
684
- onHeaderCheckboxTabKeyDown(event) {
685
- DomHandler.focus(this.listViewChild.nativeElement);
686
- event.preventDefault();
687
- }
688
- onFilterChange(event) {
689
- let value = event.target.value?.trim();
690
- this._filterValue.set(value);
691
- this.focusedOptionIndex.set(-1);
692
- this.startRangeIndex.set(-1);
693
- this.onFilter.emit({ originalEvent: event, filter: this._filterValue() });
694
- !this.virtualScrollerDisabled && this.scroller.scrollToIndex(0);
695
- }
696
- onFilterFocus(event) {
697
- this.wrapperViewChild.nativeElement.tabIndex = '-1';
698
- }
699
- onFilterBlur(event) {
700
- this.focusedOptionIndex.set(-1);
701
- this.startRangeIndex.set(-1);
702
- }
703
- onListKeyDown(event) {
704
- const metaKey = event.metaKey || event.ctrlKey;
705
- switch (event.code) {
706
- case 'ArrowDown':
707
- this.onArrowDownKey(event);
708
- break;
709
- case 'ArrowUp':
710
- this.onArrowUpKey(event);
711
- break;
712
- case 'Home':
713
- this.onHomeKey(event);
714
- break;
715
- case 'End':
716
- this.onEndKey(event);
717
- break;
718
- case 'PageDown':
719
- this.onPageDownKey(event);
720
- break;
721
- case 'PageUp':
722
- this.onPageUpKey(event);
723
- break;
724
- case 'Enter':
725
- case 'Space':
726
- case 'NumpadEnter':
727
- this.onSpaceKey(event);
728
- break;
729
- case 'Tab':
730
- //NOOP
731
- break;
732
- case 'ShiftLeft':
733
- case 'ShiftRight':
734
- this.onShiftKey();
735
- break;
736
- default:
737
- if (this.multiple && event.code === 'KeyA' && metaKey) {
738
- const value = this.visibleOptions()
739
- .filter((option) => this.isValidOption(option))
740
- .map((option) => this.getOptionValue(option));
741
- this.updateModel(value, event);
742
- event.preventDefault();
743
- break;
744
- }
745
- if (!metaKey && ObjectUtils.isPrintableCharacter(event.key)) {
746
- this.searchOptions(event, event.key);
747
- event.preventDefault();
748
- }
749
- break;
750
- }
751
- }
752
- onFilterKeyDown(event) {
753
- switch (event.code) {
754
- case 'ArrowDown':
755
- this.onArrowDownKey(event);
756
- break;
757
- case 'ArrowUp':
758
- this.onArrowUpKey(event);
759
- break;
760
- case 'ArrowLeft':
761
- case 'ArrowRight':
762
- this.onArrowLeftKey(event, true);
763
- break;
764
- case 'Home':
765
- this.onHomeKey(event, true);
766
- break;
767
- case 'End':
768
- this.onEndKey(event, true);
769
- break;
770
- case 'Enter':
771
- this.onEnterKey(event);
772
- break;
773
- case 'ShiftLeft':
774
- case 'ShiftRight':
775
- this.onShiftKey();
776
- break;
777
- default:
778
- break;
779
- }
780
- }
781
- onArrowDownKey(event) {
782
- const optionIndex = this.focusedOptionIndex() !== -1 ? this.findNextOptionIndex(this.focusedOptionIndex()) : this.findFirstFocusedOptionIndex();
783
- if (this.multiple && event.shiftKey) {
784
- this.onOptionSelectRange(event, this.startRangeIndex(), optionIndex);
785
- }
786
- this.changeFocusedOptionIndex(event, optionIndex);
787
- event.preventDefault();
788
- }
789
- onArrowUpKey(event) {
790
- const optionIndex = this.focusedOptionIndex() !== -1 ? this.findPrevOptionIndex(this.focusedOptionIndex()) : this.findLastFocusedOptionIndex();
791
- if (this.multiple && event.shiftKey) {
792
- this.onOptionSelectRange(event, optionIndex, this.startRangeIndex());
793
- }
794
- this.changeFocusedOptionIndex(event, optionIndex);
795
- event.preventDefault();
796
- }
797
- onArrowLeftKey(event, pressedInInputText = false) {
798
- pressedInInputText && this.focusedOptionIndex.set(-1);
799
- }
800
- onHomeKey(event, pressedInInputText = false) {
801
- if (pressedInInputText) {
802
- event.currentTarget.setSelectionRange(0, 0);
803
- this.focusedOptionIndex.set(-1);
804
- }
805
- else {
806
- let metaKey = event.metaKey || event.ctrlKey;
807
- let optionIndex = this.findFirstOptionIndex();
808
- if (this.multiple && event.shiftKey && metaKey) {
809
- this.onOptionSelectRange(event, optionIndex, this.startRangeIndex());
810
- }
811
- this.changeFocusedOptionIndex(event, optionIndex);
812
- }
813
- event.preventDefault();
814
- }
815
- onEndKey(event, pressedInInputText = false) {
816
- if (pressedInInputText) {
817
- const target = event.currentTarget;
818
- const len = target.value.length;
819
- target.setSelectionRange(len, len);
820
- this.focusedOptionIndex.set(-1);
821
- }
822
- else {
823
- let metaKey = event.metaKey || event.ctrlKey;
824
- let optionIndex = this.findLastOptionIndex();
825
- if (this.multiple && event.shiftKey && metaKey) {
826
- this.onOptionSelectRange(event, this.startRangeIndex(), optionIndex);
827
- }
828
- this.changeFocusedOptionIndex(event, optionIndex);
829
- }
830
- event.preventDefault();
831
- }
832
- onPageDownKey(event) {
833
- this.scrollInView(0);
834
- event.preventDefault();
835
- }
836
- onPageUpKey(event) {
837
- this.scrollInView(this.visibleOptions().length - 1);
838
- event.preventDefault();
839
- }
840
- onEnterKey(event) {
841
- if (this.focusedOptionIndex() !== -1) {
842
- if (this.multiple && event.shiftKey)
843
- this.onOptionSelectRange(event, this.focusedOptionIndex());
844
- else
845
- this.onOptionSelect(event, this.visibleOptions()[this.focusedOptionIndex()]);
846
- }
847
- event.preventDefault();
848
- }
849
- onSpaceKey(event) {
850
- this.onEnterKey(event);
851
- }
852
- onShiftKey() {
853
- const focusedOptionIndex = this.focusedOptionIndex();
854
- this.startRangeIndex.set(focusedOptionIndex);
855
- }
856
- getOptionGroupChildren(optionGroup) {
857
- return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;
858
- }
859
- getOptionGroupLabel(optionGroup) {
860
- return this.optionGroupLabel ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel) : optionGroup && optionGroup.label !== undefined ? optionGroup.label : optionGroup;
861
- }
862
- getOptionLabel(option) {
863
- return this.optionLabel ? ObjectUtils.resolveFieldData(option, this.optionLabel) : option.label != undefined ? option.label : option;
864
- }
865
- getOptionIndex(index, scrollerOptions) {
866
- return this.virtualScrollerDisabled ? index : scrollerOptions && scrollerOptions.getItemOptions(index)['index'];
867
- }
868
- getOptionValue(option) {
869
- return this.optionValue ? ObjectUtils.resolveFieldData(option, this.optionValue) : !this.optionLabel && option && option.value !== undefined ? option.value : option;
870
- }
871
- getAriaPosInset(index) {
872
- return ((this.optionGroupLabel
873
- ? index -
874
- this.visibleOptions()
875
- .slice(0, index)
876
- .filter((option) => this.isOptionGroup(option)).length
877
- : index) + 1);
878
- }
879
- hasSelectedOption() {
880
- return ObjectUtils.isNotEmpty(this.modelValue());
881
- }
882
- isOptionGroup(option) {
883
- return this.optionGroupLabel && option.optionGroup && option.group;
884
- }
885
- changeFocusedOptionIndex(event, index) {
886
- if (this.focusedOptionIndex() !== index) {
887
- this.focusedOptionIndex.set(index);
888
- this.scrollInView();
889
- if (this.selectOnFocus && !this.multiple) {
890
- this.onOptionSelect(event, this.visibleOptions()[index]);
891
- }
892
- }
893
- }
894
- searchOptions(event, char) {
895
- this.searchValue = (this.searchValue || '') + char;
896
- let optionIndex = -1;
897
- let matched = false;
898
- if (this.focusedOptionIndex() !== -1) {
899
- optionIndex = this.visibleOptions()
900
- .slice(this.focusedOptionIndex())
901
- .findIndex((option) => this.isOptionMatched(option));
902
- optionIndex =
903
- optionIndex === -1
904
- ? this.visibleOptions()
905
- .slice(0, this.focusedOptionIndex())
906
- .findIndex((option) => this.isOptionMatched(option))
907
- : optionIndex + this.focusedOptionIndex();
908
- }
909
- else {
910
- optionIndex = this.visibleOptions().findIndex((option) => this.isOptionMatched(option));
911
- }
912
- if (optionIndex !== -1) {
913
- matched = true;
914
- }
915
- if (optionIndex === -1 && this.focusedOptionIndex() === -1) {
916
- optionIndex = this.findFirstFocusedOptionIndex();
917
- }
918
- if (optionIndex !== -1) {
919
- this.changeFocusedOptionIndex(event, optionIndex);
920
- }
921
- if (this.searchTimeout) {
922
- clearTimeout(this.searchTimeout);
923
- }
924
- this.searchTimeout = setTimeout(() => {
925
- this.searchValue = '';
926
- this.searchTimeout = null;
927
- }, 500);
928
- return matched;
929
- }
930
- isOptionMatched(option) {
931
- return this.isValidOption(option) && this.getOptionLabel(option).toLocaleLowerCase(this.filterLocale).startsWith(this.searchValue.toLocaleLowerCase(this.filterLocale));
932
- }
933
- scrollInView(index = -1) {
934
- const id = index !== -1 ? `${this.id}_${index}` : this.focusedOptionId;
935
- const element = DomHandler.findSingle(this.listViewChild.nativeElement, `li[id="${id}"]`);
936
- if (element) {
937
- element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'nearest' });
938
- }
939
- else if (!this.virtualScrollerDisabled) {
940
- this.virtualScroll && this.scroller.scrollToIndex(index !== -1 ? index : this.focusedOptionIndex());
941
- }
942
- }
943
- findFirstOptionIndex() {
944
- return this.visibleOptions().findIndex((option) => this.isValidOption(option));
945
- }
946
- findLastOptionIndex() {
947
- return ObjectUtils.findLastIndex(this.visibleOptions(), (option) => this.isValidOption(option));
948
- }
949
- findFirstFocusedOptionIndex() {
950
- const selectedIndex = this.findFirstSelectedOptionIndex();
951
- return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;
952
- }
953
- findLastFocusedOptionIndex() {
954
- const selectedIndex = this.findLastSelectedOptionIndex();
955
- return selectedIndex < 0 ? this.findLastOptionIndex() : selectedIndex;
956
- }
957
- findLastSelectedOptionIndex() {
958
- return this.hasSelectedOption() ? ObjectUtils.findLastIndex(this.visibleOptions(), (option) => this.isValidSelectedOption(option)) : -1;
959
- }
960
- findNextOptionIndex(index) {
961
- const matchedOptionIndex = index < this.visibleOptions().length - 1
962
- ? this.visibleOptions()
963
- .slice(index + 1)
964
- .findIndex((option) => this.isValidOption(option))
965
- : -1;
966
- return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;
967
- }
968
- findNextSelectedOptionIndex(index) {
969
- const matchedOptionIndex = this.hasSelectedOption() && index < this.visibleOptions().length - 1
970
- ? this.visibleOptions()
971
- .slice(index + 1)
972
- .findIndex((option) => this.isValidSelectedOption(option))
973
- : -1;
974
- return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;
975
- }
976
- findPrevSelectedOptionIndex(index) {
977
- const matchedOptionIndex = this.hasSelectedOption() && index > 0 ? ObjectUtils.findLastIndex(this.visibleOptions().slice(0, index), (option) => this.isValidSelectedOption(option)) : -1;
978
- return matchedOptionIndex > -1 ? matchedOptionIndex : -1;
979
- }
980
- findFirstSelectedOptionIndex() {
981
- return this.hasSelectedOption() ? this.visibleOptions().findIndex((option) => this.isValidSelectedOption(option)) : -1;
982
- }
983
- findPrevOptionIndex(index) {
984
- const matchedOptionIndex = index > 0 ? ObjectUtils.findLastIndex(this.visibleOptions().slice(0, index), (option) => this.isValidOption(option)) : -1;
985
- return matchedOptionIndex > -1 ? matchedOptionIndex : index;
986
- }
987
- findNearestSelectedOptionIndex(index, firstCheckUp = false) {
988
- let matchedOptionIndex = -1;
989
- if (this.hasSelectedOption()) {
990
- if (firstCheckUp) {
991
- matchedOptionIndex = this.findPrevSelectedOptionIndex(index);
992
- matchedOptionIndex = matchedOptionIndex === -1 ? this.findNextSelectedOptionIndex(index) : matchedOptionIndex;
993
- }
994
- else {
995
- matchedOptionIndex = this.findNextSelectedOptionIndex(index);
996
- matchedOptionIndex = matchedOptionIndex === -1 ? this.findPrevSelectedOptionIndex(index) : matchedOptionIndex;
997
- }
998
- }
999
- return matchedOptionIndex > -1 ? matchedOptionIndex : index;
1000
- }
1001
- equalityKey() {
1002
- return this.optionValue ? null : this.dataKey;
1003
- }
1004
- isValidSelectedOption(option) {
1005
- return this.isValidOption(option) && this.isSelected(option);
1006
- }
1007
- isOptionDisabled(option) {
1008
- return this.optionDisabled ? ObjectUtils.resolveFieldData(option, this.optionDisabled) : false;
1009
- }
1010
- isSelected(option) {
1011
- const optionValue = this.getOptionValue(option);
1012
- if (this.multiple)
1013
- return (this.modelValue() || []).some((value) => ObjectUtils.equals(value, optionValue, this.equalityKey()));
1014
- else
1015
- return ObjectUtils.equals(this.modelValue(), optionValue, this.equalityKey());
1016
- }
1017
- isValidOption(option) {
1018
- return option && !(this.isOptionDisabled(option) || this.isOptionGroup(option));
1019
- }
1020
- isEmpty() {
1021
- return !this._options()?.length || !this.visibleOptions()?.length;
1022
- }
1023
- hasFilter() {
1024
- return this._filterValue() && this._filterValue().trim().length > 0;
1025
- }
1026
- resetFilter() {
1027
- if (this.filterViewChild && this.filterViewChild.nativeElement) {
1028
- this.filterViewChild.nativeElement.value = '';
1029
- }
1030
- this._filterValue.set(null);
1031
- }
1032
- ngOnDestroy() {
1033
- if (this.translationSubscription) {
1034
- this.translationSubscription.unsubscribe();
1035
- }
1036
- }
1037
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: Listbox, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FilterService }, { token: i1.caxConfig }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
1038
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: Listbox, selector: "p-listbox", inputs: { id: "id", searchMessage: "searchMessage", emptySelectionMessage: "emptySelectionMessage", selectionMessage: "selectionMessage", autoOptionFocus: ["autoOptionFocus", "autoOptionFocus", booleanAttribute], ariaLabel: "ariaLabel", selectOnFocus: ["selectOnFocus", "selectOnFocus", booleanAttribute], searchLocale: ["searchLocale", "searchLocale", booleanAttribute], focusOnHover: ["focusOnHover", "focusOnHover", booleanAttribute], filterMessage: "filterMessage", filterFields: "filterFields", lazy: ["lazy", "lazy", booleanAttribute], virtualScroll: ["virtualScroll", "virtualScroll", booleanAttribute], virtualScrollItemSize: ["virtualScrollItemSize", "virtualScrollItemSize", numberAttribute], virtualScrollOptions: "virtualScrollOptions", scrollHeight: "scrollHeight", tabindex: ["tabindex", "tabindex", numberAttribute], multiple: ["multiple", "multiple", booleanAttribute], style: "style", styleClass: "styleClass", listStyle: "listStyle", listStyleClass: "listStyleClass", readonly: ["readonly", "readonly", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], checkbox: ["checkbox", "checkbox", booleanAttribute], filter: ["filter", "filter", booleanAttribute], filterBy: "filterBy", filterMatchMode: "filterMatchMode", filterLocale: "filterLocale", metaKeySelection: ["metaKeySelection", "metaKeySelection", booleanAttribute], dataKey: "dataKey", showToggleAll: ["showToggleAll", "showToggleAll", booleanAttribute], optionLabel: "optionLabel", optionValue: "optionValue", optionGroupChildren: "optionGroupChildren", optionGroupLabel: "optionGroupLabel", optionDisabled: "optionDisabled", ariaFilterLabel: "ariaFilterLabel", filterPlaceHolder: "filterPlaceHolder", emptyFilterMessage: "emptyFilterMessage", emptyMessage: "emptyMessage", group: ["group", "group", booleanAttribute], options: "options", filterValue: "filterValue", selectAll: "selectAll" }, outputs: { onChange: "onChange", onClick: "onClick", onDblClick: "onDblClick", onFilter: "onFilter", onFocus: "onFocus", onBlur: "onBlur", onSelectAllChange: "onSelectAllChange" }, host: { classAttribute: "cax-element" }, providers: [LISTBOX_VALUE_ACCESSOR], queries: [{ propertyName: "headerFacet", first: true, predicate: Header, descendants: true }, { propertyName: "footerFacet", first: true, predicate: Footer, descendants: true }, { propertyName: "templates", predicate: CaxTemplate }], viewQueries: [{ propertyName: "headerCheckboxViewChild", first: true, predicate: ["headerchkbox"], descendants: true }, { propertyName: "filterViewChild", first: true, predicate: ["filter"], descendants: true }, { propertyName: "lastHiddenFocusableElement", first: true, predicate: ["lastHiddenFocusableElement"], descendants: true }, { propertyName: "firstHiddenFocusableElement", first: true, predicate: ["firstHiddenFocusableElement"], descendants: true }, { propertyName: "scroller", first: true, predicate: ["scroller"], descendants: true }, { propertyName: "listViewChild", first: true, predicate: ["list"], descendants: true }, { propertyName: "wrapperViewChild", first: true, predicate: ["wrapper"], descendants: true }], ngImport: i0, template: `
1039
- <div [attr.id]="id" [ngClass]="containerClass" [ngStyle]="style" [class]="styleClass" (focusout)="onFocusout($event)">
1040
- <span #firstHiddenFocusableElement role="presentation" class="p-hidden-accessible p-hidden-focusable" [tabindex]="!disabled ? tabindex : -1" (focus)="onFirstHiddenFocus($event)" [attr.data-p-hidden-focusable]="true"> </span>
1041
- <div class="p-listbox-header" *ngIf="headerFacet || headerTemplate">
1042
- <ng-content select="cax-header"></ng-content>
1043
- <ng-container *ngTemplateOutlet="headerTemplate; context: { $implicit: modelValue(), options: visibleOptions() }"></ng-container>
1044
- </div>
1045
- <div class="p-listbox-header" *ngIf="(checkbox && multiple && showToggleAll) || filter">
1046
- <div *ngIf="checkbox && multiple && showToggleAll" class="p-checkbox p-component" [ngClass]="{ 'p-checkbox-disabled': disabled || toggleAllDisabled }" (click)="onToggleAll($event)" (keydown)="onHeaderCheckboxKeyDown($event)">
1047
- <div class="p-hidden-accessible" [attr.data-p-hidden-accessible]="true">
1048
- <input
1049
- #headerchkbox
1050
- type="checkbox"
1051
- readonly="readonly"
1052
- [attr.checked]="allSelected()"
1053
- [disabled]="disabled || toggleAllDisabled"
1054
- (focus)="onHeaderCheckboxFocus($event)"
1055
- (blur)="onHeaderCheckboxBlur($event)"
1056
- [attr.aria-label]="toggleAllAriaLabel"
1057
- />
1058
- </div>
1059
- <div class="p-checkbox-box" role="checkbox" [attr.aria-checked]="allSelected()" [ngClass]="{ 'p-highlight': allSelected(), 'p-focus': headerCheckboxFocus, 'p-disabled': disabled || toggleAllDisabled }">
1060
- <ng-container *ngIf="allSelected()">
1061
- <CheckIcon [styleClass]="'p-checkbox-icon'" *ngIf="!checkIconTemplate" [attr.aria-hidden]="true" />
1062
- <span *ngIf="checkIconTemplate" class="p-checkbox-icon" [attr.aria-hidden]="true">
1063
- <ng-template *ngTemplateOutlet="checkIconTemplate"></ng-template>
1064
- </span>
1065
- </ng-container>
1066
- </div>
1067
- </div>
1068
- <ng-container *ngIf="filterTemplate; else builtInFilterElement">
1069
- <ng-container *ngTemplateOutlet="filterTemplate; context: { options: filterOptions }"></ng-container>
1070
- </ng-container>
1071
- <ng-template #builtInFilterElement>
1072
- <div class="p-listbox-filter-container" *ngIf="filter">
1073
- <input
1074
- #filterInput
1075
- type="text"
1076
- class="p-listbox-filter p-inputtext p-component"
1077
- role="searchbox"
1078
- [value]="_filterValue() || ''"
1079
- [disabled]="disabled"
1080
- [attr.aria-owns]="id + '_list'"
1081
- [attr.aria-activedescendant]="focusedOptionId"
1082
- [attr.placeholder]="filterPlaceHolder"
1083
- [attr.aria-label]="ariaFilterLabel"
1084
- [tabindex]="!disabled && !focused ? tabindex : -1"
1085
- (input)="onFilterChange($event)"
1086
- (keydown)="onFilterKeyDown($event)"
1087
- (focus)="onFilterFocus($event)"
1088
- (blur)="onFilterBlur($event)"
1089
- />
1090
- <SearchIcon *ngIf="!filterIconTemplate" [styleClass]="'p-listbox-filter-icon'" [attr.aria-hidden]="true" />
1091
- <span *ngIf="filterIconTemplate" class="p-listbox-filter-icon" [attr.aria-hidden]="true">
1092
- <ng-template *ngTemplateOutlet="filterIconTemplate"></ng-template>
1093
- </span>
1094
- </div>
1095
- <span role="status" attr.aria-live="polite" class="p-hidden-accessible" [attr.data-p-hidden-accessible]="true">
1096
- {{ filterResultMessageText }}
1097
- </span>
1098
- </ng-template>
1099
- </div>
1100
- <div #wrapper [ngClass]="'p-listbox-list-wrapper'" [ngStyle]="listStyle" [class]="listStyleClass" [style.max-height]="virtualScroll ? 'auto' : scrollHeight || 'auto'" [attr.tabindex]="!disabled && '0'">
1101
- <cax-scroller
1102
- #scroller
1103
- *ngIf="virtualScroll"
1104
- [items]="visibleOptions()"
1105
- [style]="{ height: scrollHeight }"
1106
- [itemSize]="virtualScrollItemSize"
1107
- [autoSize]="true"
1108
- [lazy]="lazy"
1109
- [options]="virtualScrollOptions"
1110
- (onLazyLoad)="onLazyLoad.emit($event)"
1111
- [tabindex]="scrollerTabIndex"
1112
- >
1113
- <ng-template caxTemplate="content" let-items let-scrollerOptions="options">
1114
- <ng-container *ngTemplateOutlet="buildInItems; context: { $implicit: items, options: scrollerOptions }"></ng-container>
1115
- </ng-template>
1116
- <ng-container *ngIf="loaderTemplate">
1117
- <ng-template caxTemplate="loader" let-scrollerOptions="options">
1118
- <ng-container *ngTemplateOutlet="loaderTemplate; context: { options: scrollerOptions }"></ng-container>
1119
- </ng-template>
1120
- </ng-container>
1121
- </cax-scroller>
1122
- <ng-container *ngIf="!virtualScroll">
1123
- <ng-container *ngTemplateOutlet="buildInItems; context: { $implicit: visibleOptions(), options: {} }"></ng-container>
1124
- </ng-container>
1125
-
1126
- <ng-template #buildInItems let-items let-scrollerOptions="options">
1127
- <ul
1128
- #list
1129
- class="p-listbox-list"
1130
- role="listbox"
1131
- [tabindex]="-1"
1132
- [attr.aria-multiselectable]="true"
1133
- [ngClass]="scrollerOptions.contentStyleClass"
1134
- [ngStyle]="scrollerOptions.contentStyle"
1135
- [attr.aria-activedescendant]="focused ? focusedOptionId : undefined"
1136
- [attr.aria-label]="ariaLabel"
1137
- [attr.aria-multiselectable]="multiple"
1138
- [attr.aria-disabled]="disabled"
1139
- (focus)="onListFocus($event)"
1140
- (blur)="onListBlur($event)"
1141
- (keydown)="onListKeyDown($event)"
1142
- >
1143
- <ng-template ngFor let-option [ngForOf]="items" let-i="index">
1144
- <ng-container *ngIf="isOptionGroup(option)">
1145
- <li [attr.id]="id + '_' + getOptionIndex(i, scrollerOptions)" class="p-listbox-item-group" [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }" role="option">
1146
- <span *ngIf="!groupTemplate">{{ getOptionGroupLabel(option.optionGroup) }}</span>
1147
- <ng-container *ngTemplateOutlet="groupTemplate; context: { $implicit: option.optionGroup }"></ng-container>
1148
- </li>
1149
- </ng-container>
1150
- <ng-container *ngIf="!isOptionGroup(option)">
1151
- <li
1152
- pRipple
1153
- class="p-listbox-item"
1154
- role="option"
1155
- [attr.id]="id + '_' + getOptionIndex(i, scrollerOptions)"
1156
- [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }"
1157
- [ngClass]="{ 'p-listbox-item': true, 'p-highlight': isSelected(option), 'p-focus': focusedOptionIndex() === getOptionIndex(i, scrollerOptions), 'p-disabled': isOptionDisabled(option) }"
1158
- [attr.aria-label]="getOptionLabel(option)"
1159
- [attr.aria-selected]="isSelected(option)"
1160
- [attr.aria-disabled]="isOptionDisabled(option)"
1161
- [attr.aria-setsize]="ariaSetSize"
1162
- [attr.ariaPosInset]="getAriaPosInset(getOptionIndex(i, scrollerOptions))"
1163
- (click)="onOptionSelect($event, option, getOptionIndex(i, scrollerOptions))"
1164
- (dblclick)="onOptionDoubleClick($event, option)"
1165
- (mousedown)="onOptionMouseDown($event, getOptionIndex(i, scrollerOptions))"
1166
- (mouseenter)="onOptionMouseEnter($event, getOptionIndex(i, scrollerOptions))"
1167
- (touchend)="onOptionTouchEnd()"
1168
- >
1169
- <div class="p-checkbox p-component" *ngIf="checkbox && multiple" [ngClass]="{ 'p-checkbox-disabled': disabled || isOptionDisabled(option) }">
1170
- <div class="p-checkbox-box" [ngClass]="{ 'p-highlight': isSelected(option) }">
1171
- <ng-container *ngIf="isSelected(option)">
1172
- <CheckIcon [styleClass]="'p-checkbox-icon'" *ngIf="!checkIconTemplate" [attr.aria-hidden]="true" />
1173
- <span *ngIf="checkIconTemplate" class="p-checkbox-icon" [attr.aria-hidden]="true">
1174
- <ng-template *ngTemplateOutlet="checkIconTemplate"></ng-template>
1175
- </span>
1176
- </ng-container>
1177
- </div>
1178
- </div>
1179
- <span *ngIf="!itemTemplate">{{ getOptionLabel(option) }}</span>
1180
- <ng-container *ngTemplateOutlet="itemTemplate; context: { $implicit: option, index: getOptionIndex(i, scrollerOptions) }"></ng-container>
1181
- </li>
1182
- </ng-container>
1183
- </ng-template>
1184
- <li *ngIf="hasFilter() && isEmpty()" class="p-listbox-empty-message" role="option">
1185
- <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
1186
- {{ emptyFilterMessageText }}
1187
- </ng-container>
1188
- <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
1189
- </li>
1190
- <li *ngIf="!hasFilter() && isEmpty()" class="p-listbox-empty-message" role="option">
1191
- <ng-container *ngIf="!emptyTemplate; else empty">
1192
- {{ emptyMessage }}
1193
- </ng-container>
1194
- <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
1195
- </li>
1196
- </ul>
1197
- </ng-template>
1198
- </div>
1199
- <div class="p-listbox-footer" *ngIf="footerFacet || footerTemplate">
1200
- <ng-content select="cax-footer"></ng-content>
1201
- <ng-container *ngTemplateOutlet="footerTemplate; context: { $implicit: modelValue(), options: visibleOptions() }"></ng-container>
1202
- </div>
1203
- <span *ngIf="isEmpty()" role="status" aria-live="polite" class="p-hidden-accessible">
1204
- {{ emptyMessage }}
1205
- </span>
1206
- <span role="status" aria-live="polite" class="p-hidden-accessible">
1207
- {{ selectedMessageText }}
1208
- </span>
1209
- <span #lastHiddenFocusableElement role="presentation" class="p-hidden-accessible p-hidden-focusable" [tabindex]="!disabled ? tabindex : -1" (focus)="onLastHiddenFocus($event)" [attr.data-p-hidden-focusable]="true"> </span>
1210
- </div>
1211
- `, isInline: true, styles: ["@layer cax{.p-listbox-list-wrapper{overflow:auto}.p-listbox-list{list-style-type:none;margin:0;padding:0}.p-listbox-item{cursor:pointer;position:relative;overflow:hidden;display:flex;align-items:center;-webkit-user-select:none;user-select:none}.p-listbox-header{display:flex;align-items:center}.p-listbox-filter-container{position:relative;flex:1 1 auto}.p-listbox-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-listbox-filter{width:100%}}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(() => i2.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i0.forwardRef(() => i1.CaxTemplate), selector: "[caxTemplate]", inputs: ["type", "caxTemplate"] }, { kind: "component", type: i0.forwardRef(() => i3.Scroller), selector: "cax-scroller", inputs: ["id", "style", "styleClass", "tabindex", "items", "itemSize", "scrollHeight", "scrollWidth", "orientation", "step", "delay", "resizeDelay", "appendOnly", "inline", "lazy", "disabled", "loaderDisabled", "columns", "showSpacer", "showLoader", "numToleratedItems", "loading", "autoSize", "trackBy", "options"], outputs: ["onLazyLoad", "onScroll", "onScrollIndexChange"] }, { kind: "component", type: i0.forwardRef(() => SearchIcon), selector: "SearchIcon" }, { kind: "component", type: i0.forwardRef(() => CheckIcon), selector: "CheckIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1212
- }
1213
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: Listbox, decorators: [{
1214
- type: Component,
1215
- args: [{ selector: 'p-listbox', template: `
1216
- <div [attr.id]="id" [ngClass]="containerClass" [ngStyle]="style" [class]="styleClass" (focusout)="onFocusout($event)">
1217
- <span #firstHiddenFocusableElement role="presentation" class="p-hidden-accessible p-hidden-focusable" [tabindex]="!disabled ? tabindex : -1" (focus)="onFirstHiddenFocus($event)" [attr.data-p-hidden-focusable]="true"> </span>
1218
- <div class="p-listbox-header" *ngIf="headerFacet || headerTemplate">
1219
- <ng-content select="cax-header"></ng-content>
1220
- <ng-container *ngTemplateOutlet="headerTemplate; context: { $implicit: modelValue(), options: visibleOptions() }"></ng-container>
1221
- </div>
1222
- <div class="p-listbox-header" *ngIf="(checkbox && multiple && showToggleAll) || filter">
1223
- <div *ngIf="checkbox && multiple && showToggleAll" class="p-checkbox p-component" [ngClass]="{ 'p-checkbox-disabled': disabled || toggleAllDisabled }" (click)="onToggleAll($event)" (keydown)="onHeaderCheckboxKeyDown($event)">
1224
- <div class="p-hidden-accessible" [attr.data-p-hidden-accessible]="true">
1225
- <input
1226
- #headerchkbox
1227
- type="checkbox"
1228
- readonly="readonly"
1229
- [attr.checked]="allSelected()"
1230
- [disabled]="disabled || toggleAllDisabled"
1231
- (focus)="onHeaderCheckboxFocus($event)"
1232
- (blur)="onHeaderCheckboxBlur($event)"
1233
- [attr.aria-label]="toggleAllAriaLabel"
1234
- />
1235
- </div>
1236
- <div class="p-checkbox-box" role="checkbox" [attr.aria-checked]="allSelected()" [ngClass]="{ 'p-highlight': allSelected(), 'p-focus': headerCheckboxFocus, 'p-disabled': disabled || toggleAllDisabled }">
1237
- <ng-container *ngIf="allSelected()">
1238
- <CheckIcon [styleClass]="'p-checkbox-icon'" *ngIf="!checkIconTemplate" [attr.aria-hidden]="true" />
1239
- <span *ngIf="checkIconTemplate" class="p-checkbox-icon" [attr.aria-hidden]="true">
1240
- <ng-template *ngTemplateOutlet="checkIconTemplate"></ng-template>
1241
- </span>
1242
- </ng-container>
1243
- </div>
1244
- </div>
1245
- <ng-container *ngIf="filterTemplate; else builtInFilterElement">
1246
- <ng-container *ngTemplateOutlet="filterTemplate; context: { options: filterOptions }"></ng-container>
1247
- </ng-container>
1248
- <ng-template #builtInFilterElement>
1249
- <div class="p-listbox-filter-container" *ngIf="filter">
1250
- <input
1251
- #filterInput
1252
- type="text"
1253
- class="p-listbox-filter p-inputtext p-component"
1254
- role="searchbox"
1255
- [value]="_filterValue() || ''"
1256
- [disabled]="disabled"
1257
- [attr.aria-owns]="id + '_list'"
1258
- [attr.aria-activedescendant]="focusedOptionId"
1259
- [attr.placeholder]="filterPlaceHolder"
1260
- [attr.aria-label]="ariaFilterLabel"
1261
- [tabindex]="!disabled && !focused ? tabindex : -1"
1262
- (input)="onFilterChange($event)"
1263
- (keydown)="onFilterKeyDown($event)"
1264
- (focus)="onFilterFocus($event)"
1265
- (blur)="onFilterBlur($event)"
1266
- />
1267
- <SearchIcon *ngIf="!filterIconTemplate" [styleClass]="'p-listbox-filter-icon'" [attr.aria-hidden]="true" />
1268
- <span *ngIf="filterIconTemplate" class="p-listbox-filter-icon" [attr.aria-hidden]="true">
1269
- <ng-template *ngTemplateOutlet="filterIconTemplate"></ng-template>
1270
- </span>
1271
- </div>
1272
- <span role="status" attr.aria-live="polite" class="p-hidden-accessible" [attr.data-p-hidden-accessible]="true">
1273
- {{ filterResultMessageText }}
1274
- </span>
1275
- </ng-template>
1276
- </div>
1277
- <div #wrapper [ngClass]="'p-listbox-list-wrapper'" [ngStyle]="listStyle" [class]="listStyleClass" [style.max-height]="virtualScroll ? 'auto' : scrollHeight || 'auto'" [attr.tabindex]="!disabled && '0'">
1278
- <cax-scroller
1279
- #scroller
1280
- *ngIf="virtualScroll"
1281
- [items]="visibleOptions()"
1282
- [style]="{ height: scrollHeight }"
1283
- [itemSize]="virtualScrollItemSize"
1284
- [autoSize]="true"
1285
- [lazy]="lazy"
1286
- [options]="virtualScrollOptions"
1287
- (onLazyLoad)="onLazyLoad.emit($event)"
1288
- [tabindex]="scrollerTabIndex"
1289
- >
1290
- <ng-template caxTemplate="content" let-items let-scrollerOptions="options">
1291
- <ng-container *ngTemplateOutlet="buildInItems; context: { $implicit: items, options: scrollerOptions }"></ng-container>
1292
- </ng-template>
1293
- <ng-container *ngIf="loaderTemplate">
1294
- <ng-template caxTemplate="loader" let-scrollerOptions="options">
1295
- <ng-container *ngTemplateOutlet="loaderTemplate; context: { options: scrollerOptions }"></ng-container>
1296
- </ng-template>
1297
- </ng-container>
1298
- </cax-scroller>
1299
- <ng-container *ngIf="!virtualScroll">
1300
- <ng-container *ngTemplateOutlet="buildInItems; context: { $implicit: visibleOptions(), options: {} }"></ng-container>
1301
- </ng-container>
1302
-
1303
- <ng-template #buildInItems let-items let-scrollerOptions="options">
1304
- <ul
1305
- #list
1306
- class="p-listbox-list"
1307
- role="listbox"
1308
- [tabindex]="-1"
1309
- [attr.aria-multiselectable]="true"
1310
- [ngClass]="scrollerOptions.contentStyleClass"
1311
- [ngStyle]="scrollerOptions.contentStyle"
1312
- [attr.aria-activedescendant]="focused ? focusedOptionId : undefined"
1313
- [attr.aria-label]="ariaLabel"
1314
- [attr.aria-multiselectable]="multiple"
1315
- [attr.aria-disabled]="disabled"
1316
- (focus)="onListFocus($event)"
1317
- (blur)="onListBlur($event)"
1318
- (keydown)="onListKeyDown($event)"
1319
- >
1320
- <ng-template ngFor let-option [ngForOf]="items" let-i="index">
1321
- <ng-container *ngIf="isOptionGroup(option)">
1322
- <li [attr.id]="id + '_' + getOptionIndex(i, scrollerOptions)" class="p-listbox-item-group" [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }" role="option">
1323
- <span *ngIf="!groupTemplate">{{ getOptionGroupLabel(option.optionGroup) }}</span>
1324
- <ng-container *ngTemplateOutlet="groupTemplate; context: { $implicit: option.optionGroup }"></ng-container>
1325
- </li>
1326
- </ng-container>
1327
- <ng-container *ngIf="!isOptionGroup(option)">
1328
- <li
1329
- pRipple
1330
- class="p-listbox-item"
1331
- role="option"
1332
- [attr.id]="id + '_' + getOptionIndex(i, scrollerOptions)"
1333
- [ngStyle]="{ height: scrollerOptions.itemSize + 'px' }"
1334
- [ngClass]="{ 'p-listbox-item': true, 'p-highlight': isSelected(option), 'p-focus': focusedOptionIndex() === getOptionIndex(i, scrollerOptions), 'p-disabled': isOptionDisabled(option) }"
1335
- [attr.aria-label]="getOptionLabel(option)"
1336
- [attr.aria-selected]="isSelected(option)"
1337
- [attr.aria-disabled]="isOptionDisabled(option)"
1338
- [attr.aria-setsize]="ariaSetSize"
1339
- [attr.ariaPosInset]="getAriaPosInset(getOptionIndex(i, scrollerOptions))"
1340
- (click)="onOptionSelect($event, option, getOptionIndex(i, scrollerOptions))"
1341
- (dblclick)="onOptionDoubleClick($event, option)"
1342
- (mousedown)="onOptionMouseDown($event, getOptionIndex(i, scrollerOptions))"
1343
- (mouseenter)="onOptionMouseEnter($event, getOptionIndex(i, scrollerOptions))"
1344
- (touchend)="onOptionTouchEnd()"
1345
- >
1346
- <div class="p-checkbox p-component" *ngIf="checkbox && multiple" [ngClass]="{ 'p-checkbox-disabled': disabled || isOptionDisabled(option) }">
1347
- <div class="p-checkbox-box" [ngClass]="{ 'p-highlight': isSelected(option) }">
1348
- <ng-container *ngIf="isSelected(option)">
1349
- <CheckIcon [styleClass]="'p-checkbox-icon'" *ngIf="!checkIconTemplate" [attr.aria-hidden]="true" />
1350
- <span *ngIf="checkIconTemplate" class="p-checkbox-icon" [attr.aria-hidden]="true">
1351
- <ng-template *ngTemplateOutlet="checkIconTemplate"></ng-template>
1352
- </span>
1353
- </ng-container>
1354
- </div>
1355
- </div>
1356
- <span *ngIf="!itemTemplate">{{ getOptionLabel(option) }}</span>
1357
- <ng-container *ngTemplateOutlet="itemTemplate; context: { $implicit: option, index: getOptionIndex(i, scrollerOptions) }"></ng-container>
1358
- </li>
1359
- </ng-container>
1360
- </ng-template>
1361
- <li *ngIf="hasFilter() && isEmpty()" class="p-listbox-empty-message" role="option">
1362
- <ng-container *ngIf="!emptyFilterTemplate && !emptyTemplate; else emptyFilter">
1363
- {{ emptyFilterMessageText }}
1364
- </ng-container>
1365
- <ng-container #emptyFilter *ngTemplateOutlet="emptyFilterTemplate || emptyTemplate"></ng-container>
1366
- </li>
1367
- <li *ngIf="!hasFilter() && isEmpty()" class="p-listbox-empty-message" role="option">
1368
- <ng-container *ngIf="!emptyTemplate; else empty">
1369
- {{ emptyMessage }}
1370
- </ng-container>
1371
- <ng-container #empty *ngTemplateOutlet="emptyTemplate"></ng-container>
1372
- </li>
1373
- </ul>
1374
- </ng-template>
1375
- </div>
1376
- <div class="p-listbox-footer" *ngIf="footerFacet || footerTemplate">
1377
- <ng-content select="cax-footer"></ng-content>
1378
- <ng-container *ngTemplateOutlet="footerTemplate; context: { $implicit: modelValue(), options: visibleOptions() }"></ng-container>
1379
- </div>
1380
- <span *ngIf="isEmpty()" role="status" aria-live="polite" class="p-hidden-accessible">
1381
- {{ emptyMessage }}
1382
- </span>
1383
- <span role="status" aria-live="polite" class="p-hidden-accessible">
1384
- {{ selectedMessageText }}
1385
- </span>
1386
- <span #lastHiddenFocusableElement role="presentation" class="p-hidden-accessible p-hidden-focusable" [tabindex]="!disabled ? tabindex : -1" (focus)="onLastHiddenFocus($event)" [attr.data-p-hidden-focusable]="true"> </span>
1387
- </div>
1388
- `, providers: [LISTBOX_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
1389
- class: 'cax-element'
1390
- }, styles: ["@layer cax{.p-listbox-list-wrapper{overflow:auto}.p-listbox-list{list-style-type:none;margin:0;padding:0}.p-listbox-item{cursor:pointer;position:relative;overflow:hidden;display:flex;align-items:center;-webkit-user-select:none;user-select:none}.p-listbox-header{display:flex;align-items:center}.p-listbox-filter-container{position:relative;flex:1 1 auto}.p-listbox-filter-icon{position:absolute;top:50%;margin-top:-.5rem}.p-listbox-filter{width:100%}}\n"] }]
1391
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FilterService }, { type: i1.caxConfig }, { type: i0.Renderer2 }], propDecorators: { id: [{
1392
- type: Input
1393
- }], searchMessage: [{
1394
- type: Input
1395
- }], emptySelectionMessage: [{
1396
- type: Input
1397
- }], selectionMessage: [{
1398
- type: Input
1399
- }], autoOptionFocus: [{
1400
- type: Input,
1401
- args: [{ transform: booleanAttribute }]
1402
- }], ariaLabel: [{
1403
- type: Input
1404
- }], selectOnFocus: [{
1405
- type: Input,
1406
- args: [{ transform: booleanAttribute }]
1407
- }], searchLocale: [{
1408
- type: Input,
1409
- args: [{ transform: booleanAttribute }]
1410
- }], focusOnHover: [{
1411
- type: Input,
1412
- args: [{ transform: booleanAttribute }]
1413
- }], filterMessage: [{
1414
- type: Input
1415
- }], filterFields: [{
1416
- type: Input
1417
- }], lazy: [{
1418
- type: Input,
1419
- args: [{ transform: booleanAttribute }]
1420
- }], virtualScroll: [{
1421
- type: Input,
1422
- args: [{ transform: booleanAttribute }]
1423
- }], virtualScrollItemSize: [{
1424
- type: Input,
1425
- args: [{ transform: numberAttribute }]
1426
- }], virtualScrollOptions: [{
1427
- type: Input
1428
- }], scrollHeight: [{
1429
- type: Input
1430
- }], tabindex: [{
1431
- type: Input,
1432
- args: [{ transform: numberAttribute }]
1433
- }], multiple: [{
1434
- type: Input,
1435
- args: [{ transform: booleanAttribute }]
1436
- }], style: [{
1437
- type: Input
1438
- }], styleClass: [{
1439
- type: Input
1440
- }], listStyle: [{
1441
- type: Input
1442
- }], listStyleClass: [{
1443
- type: Input
1444
- }], readonly: [{
1445
- type: Input,
1446
- args: [{ transform: booleanAttribute }]
1447
- }], disabled: [{
1448
- type: Input,
1449
- args: [{ transform: booleanAttribute }]
1450
- }], checkbox: [{
1451
- type: Input,
1452
- args: [{ transform: booleanAttribute }]
1453
- }], filter: [{
1454
- type: Input,
1455
- args: [{ transform: booleanAttribute }]
1456
- }], filterBy: [{
1457
- type: Input
1458
- }], filterMatchMode: [{
1459
- type: Input
1460
- }], filterLocale: [{
1461
- type: Input
1462
- }], metaKeySelection: [{
1463
- type: Input,
1464
- args: [{ transform: booleanAttribute }]
1465
- }], dataKey: [{
1466
- type: Input
1467
- }], showToggleAll: [{
1468
- type: Input,
1469
- args: [{ transform: booleanAttribute }]
1470
- }], optionLabel: [{
1471
- type: Input
1472
- }], optionValue: [{
1473
- type: Input
1474
- }], optionGroupChildren: [{
1475
- type: Input
1476
- }], optionGroupLabel: [{
1477
- type: Input
1478
- }], optionDisabled: [{
1479
- type: Input
1480
- }], ariaFilterLabel: [{
1481
- type: Input
1482
- }], filterPlaceHolder: [{
1483
- type: Input
1484
- }], emptyFilterMessage: [{
1485
- type: Input
1486
- }], emptyMessage: [{
1487
- type: Input
1488
- }], group: [{
1489
- type: Input,
1490
- args: [{ transform: booleanAttribute }]
1491
- }], options: [{
1492
- type: Input
1493
- }], filterValue: [{
1494
- type: Input
1495
- }], selectAll: [{
1496
- type: Input
1497
- }], onChange: [{
1498
- type: Output
1499
- }], onClick: [{
1500
- type: Output
1501
- }], onDblClick: [{
1502
- type: Output
1503
- }], onFilter: [{
1504
- type: Output
1505
- }], onFocus: [{
1506
- type: Output
1507
- }], onBlur: [{
1508
- type: Output
1509
- }], onSelectAllChange: [{
1510
- type: Output
1511
- }], headerCheckboxViewChild: [{
1512
- type: ViewChild,
1513
- args: ['headerchkbox']
1514
- }], filterViewChild: [{
1515
- type: ViewChild,
1516
- args: ['filter']
1517
- }], lastHiddenFocusableElement: [{
1518
- type: ViewChild,
1519
- args: ['lastHiddenFocusableElement']
1520
- }], firstHiddenFocusableElement: [{
1521
- type: ViewChild,
1522
- args: ['firstHiddenFocusableElement']
1523
- }], scroller: [{
1524
- type: ViewChild,
1525
- args: ['scroller']
1526
- }], listViewChild: [{
1527
- type: ViewChild,
1528
- args: ['list']
1529
- }], wrapperViewChild: [{
1530
- type: ViewChild,
1531
- args: ['wrapper']
1532
- }], headerFacet: [{
1533
- type: ContentChild,
1534
- args: [Header]
1535
- }], footerFacet: [{
1536
- type: ContentChild,
1537
- args: [Footer]
1538
- }], templates: [{
1539
- type: ContentChildren,
1540
- args: [CaxTemplate]
1541
- }] } });
1542
- export class ListboxModule {
1543
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ListboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1544
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: ListboxModule, declarations: [Listbox], imports: [CommonModule, SharedModule, RippleModule, ScrollerModule, SearchIcon, CheckIcon], exports: [Listbox, SharedModule, ScrollerModule] });
1545
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ListboxModule, imports: [CommonModule, SharedModule, RippleModule, ScrollerModule, SearchIcon, CheckIcon, SharedModule, ScrollerModule] });
1546
- }
1547
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ListboxModule, decorators: [{
1548
- type: NgModule,
1549
- args: [{
1550
- imports: [CommonModule, SharedModule, RippleModule, ScrollerModule, SearchIcon, CheckIcon],
1551
- exports: [Listbox, SharedModule, ScrollerModule],
1552
- declarations: [Listbox]
1553
- }]
1554
- }] });
1555
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9saXN0Ym94L2xpc3Rib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFFBQVEsRUFDUixTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBRVosZUFBZSxFQUNmLFlBQVksRUFHWixVQUFVLEVBRVYsU0FBUyxFQUNULHVCQUF1QixFQUN2QixpQkFBaUIsRUFHakIsUUFBUSxFQUNSLE1BQU0sRUFFTixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBOEQsTUFBTSx1QkFBdUIsQ0FBQztBQUM5SSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUcxRCxPQUFPLEVBQVksY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7O0FBRXRFLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFRO0lBQ3ZDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUM7SUFDdEMsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FB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QUFyQyxTQUFTO3VCQUFDLFNBQVM7Z0JBRUUsV0FBVztzQkFBaEMsWUFBWTt1QkFBQyxNQUFNO2dCQUVFLFdBQVc7c0JBQWhDLFlBQVk7dUJBQUMsTUFBTTtnQkFFVSxTQUFTO3NCQUF0QyxlQUFlO3VCQUFDLFdBQVc7O0FBbzVCaEMsTUFBTSxPQUFPLGFBQWE7dUdBQWIsYUFBYTt3R0FBYixhQUFhLGlCQXJzQ2IsT0FBTyxhQWlzQ04sWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxTQUFTLGFBanNDaEYsT0FBTyxFQWtzQ0csWUFBWSxFQUFFLGNBQWM7d0dBR3RDLGFBQWEsWUFKWixZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFDdEUsWUFBWSxFQUFFLGNBQWM7OzJGQUd0QyxhQUFhO2tCQUx6QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDO29CQUMxRixPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsQ0FBQztvQkFDaEQsWUFBWSxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgTmdNb2R1bGUsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgY29tcHV0ZWQsXG4gICAgc2lnbmFsLFxuICAgIFJlbmRlcmVyMixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIG51bWJlckF0dHJpYnV0ZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUsIENheFRlbXBsYXRlLCBGb290ZXIsIEhlYWRlciwgRmlsdGVyU2VydmljZSwgVHJhbnNsYXRpb25LZXlzLCBjYXhDb25maWcsIFNjcm9sbGVyT3B0aW9ucyB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2FwaSc7XG5pbXBvcnQgeyBEb21IYW5kbGVyIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vZG9tJztcbmltcG9ydCB7IE9iamVjdFV0aWxzLCBVbmlxdWVDb21wb25lbnRJZCB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL3V0aWxzJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJpcHBsZU1vZHVsZSB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL3JpcHBsZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNlYXJjaEljb24gfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9pY29ucy9zZWFyY2gnO1xuaW1wb3J0IHsgQ2hlY2tJY29uIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vaWNvbnMvY2hlY2snO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS90cy1oZWxwZXJzJztcbmltcG9ydCB7IExpc3Rib3hDaGFuZ2VFdmVudCwgTGlzdGJveENsaWNrRXZlbnQsIExpc3Rib3hEb3VibGVDbGlja0V2ZW50LCBMaXN0Ym94RmlsdGVyRXZlbnQsIExpc3Rib3hGaWx0ZXJPcHRpb25zLCBMaXN0Ym94U2VsZWN0QWxsQ2hhbmdlRXZlbnQgfSBmcm9tICcuL2xpc3Rib3guaW50ZXJmYWNlJztcbmltcG9ydCB7IFNjcm9sbGVyLCBTY3JvbGxlck1vZHVsZSB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL3Njcm9sbGVyJztcblxuZXhwb3J0IGNvbnN0IExJU1RCT1hfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBMaXN0Ym94KSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcbi8qKlxuICogTGlzdEJveCBpcyB1c2VkIHRvIHNlbGVjdCBvbmUgb3IgbW9yZSB2YWx1ZXMgZnJvbSBhIGxpc3Qgb2YgaXRlbXMuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtbGlzdGJveCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBbYXR0ci5pZF09XCJpZFwiIFtuZ0NsYXNzXT1cImNvbnRhaW5lckNsYXNzXCIgW25nU3R5bGVdPVwic3R5bGVcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiIChmb2N1c291dCk9XCJvbkZvY3Vzb3V0KCRldmVudClcIj5cbiAgICAgICAgICAgIDxzcGFuICNmaXJzdEhpZGRlbkZvY3VzYWJsZUVsZW1lbnQgcm9sZT1cInByZXNlbnRhdGlvblwiIGNsYXNzPVwicC1oaWRkZW4tYWNjZXNzaWJsZSBwLWhpZGRlbi1mb2N1c2FibGVcIiBbdGFiaW5kZXhdPVwiIWRpc2FibGVkID8gdGFiaW5kZXggOiAtMVwiIChmb2N1cyk9XCJvbkZpcnN0SGlkZGVuRm9jdXMoJGV2ZW50KVwiIFthdHRyLmRhdGEtcC1oaWRkZW4tZm9jdXNhYmxlXT1cInRydWVcIj4gPC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbGlzdGJveC1oZWFkZXJcIiAqbmdJZj1cImhlYWRlckZhY2V0IHx8IGhlYWRlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiY2F4LWhlYWRlclwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBtb2RlbFZhbHVlKCksIG9wdGlvbnM6IHZpc2libGVPcHRpb25zKCkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1saXN0Ym94LWhlYWRlclwiICpuZ0lmPVwiKGNoZWNrYm94ICYmIG11bHRpcGxlICYmIHNob3dUb2dnbGVBbGwpIHx8IGZpbHRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjaGVja2JveCAmJiBtdWx0aXBsZSAmJiBzaG93VG9nZ2xlQWxsXCIgY2xhc3M9XCJwLWNoZWNrYm94IHAtY29tcG9uZW50XCIgW25nQ2xhc3NdPVwieyAncC1jaGVja2JveC1kaXNhYmxlZCc6IGRpc2FibGVkIHx8IHRvZ2dsZUFsbERpc2FibGVkIH1cIiAoY2xpY2spPVwib25Ub2dnbGVBbGwoJGV2ZW50KVwiIChrZXlkb3duKT1cIm9uSGVhZGVyQ2hlY2tib3hLZXlEb3duKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtaGlkZGVuLWFjY2Vzc2libGVcIiBbYXR0ci5kYXRhLXAtaGlkZGVuLWFjY2Vzc2libGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI2hlYWRlcmNoa2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHk9XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY2hlY2tlZF09XCJhbGxTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgdG9nZ2xlQWxsRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkhlYWRlckNoZWNrYm94Rm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25IZWFkZXJDaGVja2JveEJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0b2dnbGVBbGxBcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNoZWNrYm94LWJveFwiIHJvbGU9XCJjaGVja2JveFwiIFthdHRyLmFyaWEtY2hlY2tlZF09XCJhbGxTZWxlY3RlZCgpXCIgW25nQ2xhc3NdPVwieyAncC1oaWdobGlnaHQnOiBhbGxTZWxlY3RlZCgpLCAncC1mb2N1cyc6IGhlYWRlckNoZWNrYm94Rm9jdXMsICdwLWRpc2FibGVkJzogZGlzYWJsZWQgfHwgdG9nZ2xlQWxsRGlzYWJsZWQgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbFNlbGVjdGVkKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tJY29uIFtzdHlsZUNsYXNzXT1cIidwLWNoZWNrYm94LWljb24nXCIgKm5nSWY9XCIhY2hlY2tJY29uVGVtcGxhdGVcIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNoZWNrSWNvblRlbXBsYXRlXCIgY2xhc3M9XCJwLWNoZWNrYm94LWljb25cIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImNoZWNrSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlclRlbXBsYXRlOyBlbHNlIGJ1aWx0SW5GaWx0ZXJFbGVtZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJUZW1wbGF0ZTsgY29udGV4dDogeyBvcHRpb25zOiBmaWx0ZXJPcHRpb25zIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2J1aWx0SW5GaWx0ZXJFbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1saXN0Ym94LWZpbHRlci1jb250YWluZXJcIiAqbmdJZj1cImZpbHRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI2ZpbHRlcklucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1saXN0Ym94LWZpbHRlciBwLWlucHV0dGV4dCBwLWNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInNlYXJjaGJveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIl9maWx0ZXJWYWx1ZSgpIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtb3duc109XCJpZCArICdfbGlzdCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF09XCJmb2N1c2VkT3B0aW9uSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cImZpbHRlclBsYWNlSG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFGaWx0ZXJMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cIiFkaXNhYmxlZCAmJiAhZm9jdXNlZCA/IHRhYmluZGV4IDogLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbkZpbHRlckNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkZpbHRlcktleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRmlsdGVyRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25GaWx0ZXJCbHVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uICpuZ0lmPVwiIWZpbHRlckljb25UZW1wbGF0ZVwiIFtzdHlsZUNsYXNzXT1cIidwLWxpc3Rib3gtZmlsdGVyLWljb24nXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpbHRlckljb25UZW1wbGF0ZVwiIGNsYXNzPVwicC1saXN0Ym94LWZpbHRlci1pY29uXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlckljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiByb2xlPVwic3RhdHVzXCIgYXR0ci5hcmlhLWxpdmU9XCJwb2xpdGVcIiBjbGFzcz1cInAtaGlkZGVuLWFjY2Vzc2libGVcIiBbYXR0ci5kYXRhLXAtaGlkZGVuLWFjY2Vzc2libGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZmlsdGVyUmVzdWx0TWVzc2FnZVRleHQgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgI3dyYXBwZXIgW25nQ2xhc3NdPVwiJ3AtbGlzdGJveC1saXN0LXdyYXBwZXInXCIgW25nU3R5bGVdPVwibGlzdFN0eWxlXCIgW2NsYXNzXT1cImxpc3RTdHlsZUNsYXNzXCIgW3N0eWxlLm1heC1oZWlnaHRdPVwidmlydHVhbFNjcm9sbCA/ICdhdXRvJyA6IHNjcm9sbEhlaWdodCB8fCAnYXV0bydcIiBbYXR0ci50YWJpbmRleF09XCIhZGlzYWJsZWQgJiYgJzAnXCI+XG4gICAgICAgICAgICAgICAgPGNheC1zY3JvbGxlclxuICAgICAgICAgICAgICAgICAgICAjc2Nyb2xsZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2aXJ0dWFsU2Nyb2xsXCJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cInZpc2libGVPcHRpb25zKClcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwieyBoZWlnaHQ6IHNjcm9sbEhlaWdodCB9XCJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1TaXplXT1cInZpcnR1YWxTY3JvbGxJdGVtU2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdXRvU2l6ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhenldPVwibGF6eVwiXG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInZpcnR1YWxTY3JvbGxPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uTGF6eUxvYWQpPVwib25MYXp5TG9hZC5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwic2Nyb2xsZXJUYWJJbmRleFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgY2F4VGVtcGxhdGU9XCJjb250ZW50XCIgbGV0LWl0ZW1zIGxldC1zY3JvbGxlck9wdGlvbnM9XCJvcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnVpbGRJbkl0ZW1zOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbXMsIG9wdGlvbnM6IHNjcm9sbGVyT3B0aW9ucyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNheFRlbXBsYXRlPVwibG9hZGVyXCIgbGV0LXNjcm9sbGVyT3B0aW9ucz1cIm9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgb3B0aW9uczogc2Nyb2xsZXJPcHRpb25zIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvY2F4LXNjcm9sbGVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdmlydHVhbFNjcm9sbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnVpbGRJbkl0ZW1zOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogdmlzaWJsZU9wdGlvbnMoKSwgb3B0aW9uczoge30gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNidWlsZEluSXRlbXMgbGV0LWl0ZW1zIGxldC1zY3JvbGxlck9wdGlvbnM9XCJvcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIDx1bFxuICAgICAgICAgICAgICAgICAgICAgICAgI2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1saXN0Ym94LWxpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cIi0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbXVsdGlzZWxlY3RhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2Nyb2xsZXJPcHRpb25zLmNvbnRlbnRTdHlsZUNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInNjcm9sbGVyT3B0aW9ucy5jb250ZW50U3R5bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImZvY3VzZWQgPyBmb2N1c2VkT3B0aW9uSWQgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1tdWx0aXNlbGVjdGFibGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25MaXN0Rm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkxpc3RCbHVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25MaXN0S2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1vcHRpb24gW25nRm9yT2ZdPVwiaXRlbXNcIiBsZXQtaT1cImluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzT3B0aW9uR3JvdXAob3B0aW9uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgW2F0dHIuaWRdPVwiaWQgKyAnXycgKyBnZXRPcHRpb25JbmRleChpLCBzY3JvbGxlck9wdGlvbnMpXCIgY2xhc3M9XCJwLWxpc3Rib3gtaXRlbS1ncm91cFwiIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBzY3JvbGxlck9wdGlvbnMuaXRlbVNpemUgKyAncHgnIH1cIiByb2xlPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFncm91cFRlbXBsYXRlXCI+e3sgZ2V0T3B0aW9uR3JvdXBMYWJlbChvcHRpb24ub3B0aW9uR3JvdXApIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdyb3VwVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBvcHRpb24ub3B0aW9uR3JvdXAgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNPcHRpb25Hcm91cChvcHRpb24pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWxpc3Rib3gtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImlkICsgJ18nICsgZ2V0T3B0aW9uSW5kZXgoaSwgc2Nyb2xsZXJPcHRpb25zKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGhlaWdodDogc2Nyb2xsZXJPcHRpb25zLml0ZW1TaXplICsgJ3B4JyB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3AtbGlzdGJveC1pdGVtJzogdHJ1ZSwgJ3AtaGlnaGxpZ2h0JzogaXNTZWxlY3RlZChvcHRpb24pLCAncC1mb2N1cyc6IGZvY3VzZWRPcHRpb25JbmRleCgpID09PSBnZXRPcHRpb25JbmRleChpLCBzY3JvbGxlck9wdGlvbnMpLCAncC1kaXNhYmxlZCc6IGlzT3B0aW9uRGlzYWJsZWQob3B0aW9uKSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0T3B0aW9uTGFiZWwob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzT3B0aW9uRGlzYWJsZWQob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNldHNpemVdPVwiYXJpYVNldFNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYVBvc0luc2V0XT1cImdldEFyaWFQb3NJbnNldChnZXRPcHRpb25JbmRleChpLCBzY3JvbGxlck9wdGlvbnMpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25PcHRpb25TZWxlY3QoJGV2ZW50LCBvcHRpb24sIGdldE9wdGlvbkluZGV4KGksIHNjcm9sbGVyT3B0aW9ucykpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYmxjbGljayk9XCJvbk9wdGlvbkRvdWJsZUNsaWNrKCRldmVudCwgb3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uT3B0aW9uTW91c2VEb3duKCRldmVudCwgZ2V0T3B0aW9uSW5kZXgoaSwgc2Nyb2xsZXJPcHRpb25zKSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwib25PcHRpb25Nb3VzZUVudGVyKCRldmVudCwgZ2V0T3B0aW9uSW5kZXgoaSwgc2Nyb2xsZXJPcHRpb25zKSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvdWNoZW5kKT1cIm9uT3B0aW9uVG91Y2hFbmQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNoZWNrYm94IHAtY29tcG9uZW50XCIgKm5nSWY9XCJjaGVja2JveCAmJiBtdWx0aXBsZVwiIFtuZ0NsYXNzXT1cInsgJ3AtY2hlY2tib3gtZGlzYWJsZWQnOiBkaXNhYmxlZCB8fCBpc09wdGlvbkRpc2FibGVkKG9wdGlvbikgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNoZWNrYm94LWJveFwiIFtuZ0NsYXNzXT1cInsgJ3AtaGlnaGxpZ2h0JzogaXNTZWxlY3RlZChvcHRpb24pIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzU2VsZWN0ZWQob3B0aW9uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrSWNvbiBbc3R5bGVDbGFzc109XCIncC1jaGVja2JveC1pY29uJ1wiICpuZ0lmPVwiIWNoZWNrSWNvblRlbXBsYXRlXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNoZWNrSWNvblRlbXBsYXRlXCIgY2xhc3M9XCJwLWNoZWNrYm94LWljb25cIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2hlY2tJY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXRlbVRlbXBsYXRlXCI+e3sgZ2V0T3B0aW9uTGFiZWwob3B0aW9uKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBvcHRpb24sIGluZGV4OiBnZXRPcHRpb25JbmRleChpLCBzY3JvbGxlck9wdGlvbnMpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJoYXNGaWx0ZXIoKSAmJiBpc0VtcHR5KClcIiBjbGFzcz1cInAtbGlzdGJveC1lbXB0eS1tZXNzYWdlXCIgcm9sZT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZW1wdHlGaWx0ZXJUZW1wbGF0ZSAmJiAhZW1wdHlUZW1wbGF0ZTsgZWxzZSBlbXB0eUZpbHRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBlbXB0eUZpbHRlck1lc3NhZ2VUZXh0IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAjZW1wdHlGaWx0ZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eUZpbHRlclRlbXBsYXRlIHx8IGVtcHR5VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCIhaGFzRmlsdGVyKCkgJiYgaXNFbXB0eSgpXCIgY2xhc3M9XCJwLWxpc3Rib3gtZW1wdHktbWVzc2FnZVwiIHJvbGU9XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWVtcHR5VGVtcGxhdGU7IGVsc2UgZW1wdHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZW1wdHlNZXNzYWdlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAjZW1wdHkgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWxpc3Rib3gtZm9vdGVyXCIgKm5nSWY9XCJmb290ZXJGYWNldCB8fCBmb290ZXJUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNheC1mb290ZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlclRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbW9kZWxWYWx1ZSgpLCBvcHRpb25zOiB2aXNpYmxlT3B0aW9ucygpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc0VtcHR5KClcIiByb2xlPVwic3RhdHVzXCIgYXJpYS1saXZlPVwicG9saXRlXCIgY2xhc3M9XCJwLWhpZGRlbi1hY2Nlc3NpYmxlXCI+XG4gICAgICAgICAgICAgICAge3sgZW1wdHlNZXNzYWdlIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiByb2xlPVwic3RhdHVzXCIgYXJpYS1saXZlPVwicG9saXRlXCIgY2xhc3M9XCJwLWhpZGRlbi1hY2Nlc3NpYmxlXCI+XG4gICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRNZXNzYWdlVGV4dCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gI2xhc3RIaWRkZW5Gb2N1c2FibGVFbGVtZW50IHJvbGU9XCJwcmVzZW50YXRpb25cIiBjbGFzcz1cInAtaGlkZGVuLWFjY2Vzc2libGUgcC1oaWRkZW4tZm9jdXNhYmxlXCIgW3RhYmluZGV4XT1cIiFkaXNhYmxlZCA/IHRhYmluZGV4IDogLTFcIiAoZm9jdXMpPVwib25MYXN0SGlkZGVuRm9jdXMoJGV2ZW50KVwiIFthdHRyLmRhdGEtcC1oaWRkZW4tZm9jdXNhYmxlXT1cInRydWVcIj4gPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIHByb3ZpZGVyczogW0xJU1RCT1hfVkFMVUVfQUNDRVNTT1JdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vbGlzdGJveC5jc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnY2F4LWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBMaXN0Ym94IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGV4dCB0byBkaXNwbGF5IHdoZW4gdGhlIHNlYXJjaCBpcyBhY3RpdmUuIERlZmF1bHRzIHRvIGdsb2JhbCB2YWx1ZSBpbiBpMThuIHRyYW5zbGF0aW9uIGNvbmZpZ3VyYXRpb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICogQGRlZmF1bHRWYWx1ZSAnezB9IHJlc3VsdHMgYXJlIGF2YWlsYWJsZSdcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZWFyY2hNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGV4dCB0byBkaXNwbGF5IHdoZW4gZmlsdGVyaW5nIGRvZXMgbm90IHJldHVybiBhbnkgcmVzdWx0cy4gRGVmYXVsdHMgdG8gZ2xvYmFsIHZhbHVlIGluIGkxOG4gdHJhbnNsYXRpb24gY29uZmlndXJhdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKiBAZGVmYXVsdFZhbHVlICdObyBzZWxlY3RlZCBpdGVtJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGVtcHR5U2VsZWN0aW9uTWVzc2FnZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRleHQgdG8gYmUgZGlzcGxheWVkIGluIGhpZGRlbiBhY2Nlc3NpYmxlIGZpZWxkIHdoZW4gb3B0aW9ucyBhcmUgc2VsZWN0ZWQuIERlZmF1bHRzIHRvIGdsb2JhbCB2YWx1ZSBpbiBpMThuIHRyYW5zbGF0aW9uIGNvbmZpZ3VyYXRpb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICogQGRlZmF1bHRWYWx1ZSAnezB9IGl0ZW1zIHNlbGVjdGVkJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNlbGVjdGlvbk1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGZvY3VzIG9uIHRoZSBmaXJzdCB2aXNpYmxlIG9yIHNlbGVjdGVkIGVsZW1lbnQgd2hlbiB0aGUgb3ZlcmxheSBwYW5lbCBpcyBzaG93bi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYXV0b09wdGlvbkZvY3VzOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHRoYXQgbGFiZWxzIHRoZSBpbnB1dCBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGVuIGVuYWJsZWQsIHRoZSBmb2N1c2VkIG9wdGlvbiBpcyBzZWxlY3RlZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2VsZWN0T25Gb2N1czogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBMb2NhbGUgdG8gdXNlIGluIHNlYXJjaGluZy4gVGhlIGRlZmF1bHQgbG9jYWxlIGlzIHRoZSBob3N0IGVudmlyb25tZW50J3MgY3VycmVudCBsb2NhbGUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNlYXJjaExvY2FsZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGVuIGVuYWJsZWQsIHRoZSBob3ZlcmVkIG9wdGlvbiB3aWxsIGJlIGZvY3VzZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGZvY3VzT25Ib3ZlcjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBUZXh0IHRvIGRpc3BsYXkgd2hlbiBmaWx0ZXJpbmcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZmlsdGVyTWVzc2FnZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEZpZWxkcyB1c2VkIHdoZW4gZmlsdGVyaW5nIHRoZSBvcHRpb25zLCBkZWZhdWx0cyB0byBvcHRpb25MYWJlbC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBmaWx0ZXJGaWVsZHM6IGFueVtdIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgaWYgZGF0YSBpcyBsb2FkZWQgYW5kIGludGVyYWN0ZWQgd2l0aCBpbiBsYXp5IG1hbm5lci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgbGF6eTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGRhdGEgc2hvdWxkIGJlIGxvYWRlZCBvbiBkZW1hbmQgZHVyaW5nIHNjcm9sbC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgdmlydHVhbFNjcm9sbDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBIZWlnaHQgb2YgYW4gaXRlbSBpbiB0aGUgbGlzdCBmb3IgVmlydHVhbFNjcm9sbGluZy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB2aXJ0dWFsU2Nyb2xsSXRlbVNpemU6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHVzZSB0aGUgc2Nyb2xsZXIgZmVhdHVyZS4gVGhlIHByb3BlcnRpZXMgb2Ygc2Nyb2xsZXIgY29tcG9uZW50IGNhbiBiZSB1c2VkIGxpa2UgYW4gb2JqZWN0IGluIGl0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHZpcnR1YWxTY3JvbGxPcHRpb25zOiBTY3JvbGxlck9wdGlvbnMgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSGVpZ2h0IG9mIHRoZSB2aWV3cG9ydCBpbiBwaXhlbHMsIGEgc2Nyb2xsYmFyIGlzIGRlZmluZWQgaWYgaGVpZ2h0IG9mIGxpc3QgZXhjZWVkcyB0aGlzIHZhbHVlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNjcm9sbEhlaWdodDogc3RyaW5nID0gJzIwMHB4JztcbiAgICAvKipcbiAgICAgKiBJbmRleCBvZiB0aGUgZWxlbWVudCBpbiB0YWJiaW5nIG9yZGVyLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHRhYmluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQgPSAwO1xuICAgIC8qKlxuICAgICAqIFdoZW4gc3BlY2lmaWVkLCBhbGxvd3Mgc2VsZWN0aW5nIG11bHRpcGxlIHZhbHVlcy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgbXVsdGlwbGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSW5saW5lIHN0eWxlIG9mIHRoZSBjb250YWluZXIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGU6IHsgW2tsYXNzOiBzdHJpbmddOiBhbnkgfSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogU3R5bGUgY2xhc3Mgb2YgdGhlIGNvbnRhaW5lci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSW5saW5lIHN0eWxlIG9mIHRoZSBsaXN0IGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbGlzdFN0eWxlOiB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBsaXN0IGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbGlzdFN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGVuIHByZXNlbnQsIGl0IHNwZWNpZmllcyB0aGF0IHRoZSBlbGVtZW50IHZhbHVlIGNhbm5vdCBiZSBjaGFuZ2VkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZWFkb25seTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGVuIHByZXNlbnQsIGl0IHNwZWNpZmllcyB0aGF0IHRoZSBlbGVtZW50IHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBzcGVjaWZpZWQsIGFsbG93cyBzZWxlY3RpbmcgaXRlbXMgd2l0aCBjaGVja2JveGVzLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBjaGVja2JveDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFdoZW4gc3BlY2lmaWVkLCBkaXNwbGF5cyBhIGZpbHRlciBpbnB1dCBhdCBoZWFkZXIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFdoZW4gZmlsdGVyaW5nIGlzIGVuYWJsZWQsIGZpbHRlckJ5IGRlY2lkZXMgd2hpY2ggZmllbGQgb3IgZmllbGRzIChjb21tYSBzZXBhcmF0ZWQpIHRvIHNlYXJjaCBhZ2FpbnN0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZpbHRlckJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBob3cgdGhlIGl0ZW1zIGFyZSBmaWx0ZXJlZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBmaWx0ZXJNYXRjaE1vZGU6ICdjb250YWlucycgfCAnc3RhcnRzV2l0aCcgfCAnZW5kc1dpdGgnIHwgJ2VxdWFscycgfCAnbm90RXF1YWxzJyB8ICdpbicgfCAnbHQnIHwgJ2x0ZScgfCAnZ3QnIHwgJ2d0ZScgPSAnY29udGFpbnMnO1xuICAgIC8qKlxuICAgICAqIExvY2FsZSB0byB1c2UgaW4gZmlsdGVyaW5nLiBUaGUgZGVmYXVsdCBsb2NhbGUgaXMgdGhlIGhvc3QgZW52aXJvbm1lbnQncyBjdXJyZW50IGxvY2FsZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBmaWx0ZXJMb2NhbGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGhvdyBtdWx0aXBsZSBpdGVtcyBjYW4gYmUgc2VsZWN0ZWQsIHdoZW4gdHJ1ZSBtZXRhS2V5IG5lZWRzIHRvIGJlIHByZXNzZWQgdG8gc2VsZWN0IG9yIHVuc2VsZWN0IGFuIGl0ZW0gYW5kIHdoZW4gc2V0IHRvIGZhbHNlIHNlbGVjdGlvbiBvZiBlYWNoIGl0ZW0gY2FuIGJlIHRvZ2dsZWQgaW5kaXZpZHVhbGx5LiBPbiB0b3VjaCBlbmFibGVkIGRldmljZXMsIG1ldGFLZXlTZWxlY3Rpb24gaXMgdHVybmVkIG9mZiBhdXRvbWF0aWNhbGx5LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBtZXRhS2V5U2VsZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogQSBwcm9wZXJ0eSB0byB1bmlxdWVseSBpZGVudGlmeSBhIHZhbHVlIGluIG9wdGlvbnMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZGF0YUtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgaGVhZGVyIGNoZWNrYm94IGlzIHNob3duIGluIG11bHRpcGxlIG1vZGUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dUb2dnbGVBbGw6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGxhYmVsIGZpZWxkIG9mIGFuIG9wdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBvcHRpb25MYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIHZhbHVlIGZpZWxkIG9mIGFuIG9wdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBvcHRpb25WYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIG9wdGlvbnMgZmllbGQgb2YgYW4gb3B0aW9uIGdyb3VwLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG9wdGlvbkdyb3VwQ2hpbGRyZW46IHN0cmluZyB8IHVuZGVmaW5lZCA9ICdpdGVtcyc7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgbGFiZWwgZmllbGQgb2YgYW4gb3B0aW9uIGdyb3VwLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG9wdGlvbkdyb3VwTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICdsYWJlbCc7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgZGlzYWJsZWQgZmllbGQgb2YgYW4gb3B0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG9wdGlvbkRpc2FibGVkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBhIHN0cmluZyB0aGF0IGxhYmVscyB0aGUgZmlsdGVyIGlucHV0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFyaWFGaWx0ZXJMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgcGxhY2Vob2xkZXIgb2YgdGhlIGZpbHRlciBpbnB1dC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBmaWx0ZXJQbGFjZUhvbGRlcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRleHQgdG8gZGlzcGxheSB3aGVuIGZpbHRlcmluZyBkb2VzIG5vdCByZXR1cm4gYW55IHJlc3VsdHMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZW1wdHlGaWx0ZXJNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGV4dCB0byBkaXNwbGF5IHdoZW4gdGhlcmUgaXMgbm8gZGF0YS4gRGVmYXVsdHMgdG8gZ2xvYmFsIHZhbHVlIGluIGkxOG4gdHJhbnNsYXRpb24gY29uZmlndXJhdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBlbXB0eU1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGRpc3BsYXkgb3B0aW9ucyBhcyBncm91cGVkIHdoZW4gbmVzdGVkIG9wdGlvbnMgYXJlIHByb3ZpZGVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBncm91cDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBBbiBhcnJheSBvZiBzZWxlY3RpdGVtcyB0byBkaXNwbGF5IGFzIHRoZSBhdmFpbGFibGUgb3B0aW9ucy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBnZXQgb3B0aW9ucygpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zKCk7XG4gICAgfVxuICAgIHNldCBvcHRpb25zKHZhbDogYW55W10pIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucy5zZXQodmFsKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hlbiBzcGVjaWZpZWQsIGZpbHRlciBkaXNwbGF5cyB3aXRoIHRoaXMgdmFsdWUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IGZpbHRlclZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJWYWx1ZSgpO1xuICAgIH1cbiAgICBzZXQgZmlsdGVyVmFsdWUodmFsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyVmFsdWUuc2V0KHZhbCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgYWxsIGRhdGEgaXMgc2VsZWN0ZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IHNlbGVjdEFsbCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RBbGw7XG4gICAgfVxuICAgIHNldCBzZWxlY3RBbGwodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdEFsbCA9IHZhbHVlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gdmFsdWUgY2hhbmdlLlxuICAgICAqIEBwYXJhbSB7TGlzdGJveENoYW5nZUV2ZW50fSBldmVudCAtIEN1c3RvbSBjaGFuZ2UgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TGlzdGJveENoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8TGlzdGJveENoYW5nZUV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIG9wdGlvbiBpcyBjbGlja2VkLlxuICAgICAqIEBwYXJhbSB7TGlzdGJveENsaWNrRXZlbnR9IGV2ZW50IC0gQ3VzdG9tIGNsaWNrIGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8TGlzdGJveENsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxMaXN0Ym94Q2xpY2tFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBvcHRpb24gaXMgZG91YmxlIGNsaWNrZWQuXG4gICAgICogQHBhcmFtIHtMaXN0Ym94RG91YmxlQ2xpY2tFdmVudH0gZXZlbnQgLSBDdXN0b20gZG91YmxlIGNsaWNrIGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkRibENsaWNrOiBFdmVudEVtaXR0ZXI8TGlzdGJveERvdWJsZUNsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxMaXN0Ym94RG91YmxlQ2xpY2tFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBkYXRhIGlzIGZpbHRlcmVkLlxuICAgICAqIEBwYXJhbSB7TGlzdGJveEZpbHRlckV2ZW50fSBldmVudCAtIEN1c3RvbSBmaWx0ZXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uRmlsdGVyOiBFdmVudEVtaXR0ZXI8TGlzdGJveEZpbHRlckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8TGlzdGJveEZpbHRlckV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGNvbXBvbmVudCByZWNlaXZlcyBmb2N1cy5cbiAgICAgKiBAcGFyYW0ge0ZvY3VzRXZlbnR9IGV2ZW50IC0gRm9jdXMgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBjb21wb25lbnQgbG9zZXMgZm9jdXMuXG4gICAgICogQHBhcmFtIHtGb2N1c0V2ZW50fSBldmVudCAtIEJsdXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uQmx1cjogRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGFsbCBkYXRhIGlzIHNlbGVjdGVkLlxuICAgICAqIEBwYXJhbSB7TGlzdGJveFNlbGVjdEFsbENoYW5nZUV2ZW50fSBldmVudCAtIEN1c3RvbSBzZWxlY3QgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uU2VsZWN0QWxsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TGlzdGJveFNlbGVjdEFsbENoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8TGlzdGJveFNlbGVjdEFsbENoYW5nZUV2ZW50PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnaGVhZGVyY2hrYm94JykgaGVhZGVyQ2hlY2tib3hWaWV3Q2hpbGQ6IE51bGxhYmxlPEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZCgnZmlsdGVyJykgZmlsdGVyVmlld0NoaWxkOiBOdWxsYWJsZTxFbGVtZW50UmVmPjtcblxuICAgIEBWaWV3Q2hpbGQoJ2xhc3RIaWRkZW5Gb2N1c2FibGVFbGVtZW50JykgbGFzdEhpZGRlbkZvY3VzYWJsZUVsZW1lbnQ6IE51bGxhYmxlPEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZCgnZmlyc3RIaWRkZW5Gb2N1c2FibGVFbGVtZW50JykgZmlyc3RIaWRkZW5Gb2N1c2FibGVFbGVtZW50OiBOdWxsYWJsZTxFbGVtZW50UmVmPjtcblxuICAgIEBWaWV3Q2hpbGQoJ3Njcm9sbGVyJykgc2Nyb2xsZXI6IE51bGxhYmxlPFNjcm9sbGVyPjtcblxuICAgIEBWaWV3Q2hpbGQoJ2xpc3QnKSBsaXN0Vmlld0NoaWxkOiBOdWxsYWJsZTxFbGVtZW50UmVmPjtcblxuICAgIEBWaWV3Q2hpbGQoJ3dyYXBwZXInKSB3cmFwcGVyVmlld0NoaWxkOiBOdWxsYWJsZTxFbGVtZW50UmVmPjtcblxuICAgIEBDb250ZW50Q2hpbGQoSGVhZGVyKSBoZWFkZXJGYWNldDogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICBAQ29udGVudENoaWxkKEZvb3RlcikgZm9vdGVyRmFjZXQ6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihDYXhUZW1wbGF0ZSkgdGVtcGxhdGVzITogUXVlcnlMaXN0PENheFRlbXBsYXRlPjtcblxuICAgIHB1YmxpYyBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBwdWJsaWMgZ3JvdXBUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIHB1YmxpYyBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIHB1YmxpYyBmaWx0ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIHB1YmxpYyBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIHB1YmxpYyBlbXB0eUZpbHRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgcHVibGljIGVtcHR5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBmaWx0ZXJJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBjaGVja0ljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIHB1YmxpYyBfZmlsdGVyVmFsdWUgPSBzaWduYWw8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4obnVsbCk7XG5cbiAgICBwdWJsaWMgX2ZpbHRlcmVkT3B0aW9uczogYW55W10gfCB1bmRlZmluZWQgfCBudWxsO1xuXG4gICAgZmlsdGVyT3B0aW9uczogTGlzdGJveEZpbHRlck9wdGlvbnMgfCB1bmRlZmluZWQ7XG5cbiAgICBwdWJsaWMgZmlsdGVyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgfCBudWxsO1xuXG4gICAgcHVibGljIHZhbHVlOiBhbnkgfCB1bmRlZmluZWQgfCBudWxsO1xuXG4gICAgcHVibGljIG9uTW9kZWxDaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBwdWJsaWMgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBwdWJsaWMgb3B0aW9uVG91Y2hlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCB8IG51bGw7XG5cbiAgICBwdWJsaWMgZm9jdXM6IGJvb2xlYW4gfCB1bmRlZmluZWQgfCBudWxsO1xuXG4gICAgcHVibGljIGhlYWRlckNoZWNrYm94Rm9jdXM6IGJvb2xlYW4gfCB1bmRlZmluZWQgfCBudWxsO1xuXG4gICAgdHJhbnNsYXRpb25TdWJzY3JpcHRpb246IE51bGxhYmxlPFN1YnNjcmlwdGlvbj47XG5cbiAgICBmb2N1c2VkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgc2Nyb2xsZXJUYWJJbmRleDogc3RyaW5nID0gJzAnO1xuXG4gICAgZ2V0IGNvbnRhaW5lckNsYXNzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ3AtbGlzdGJveCBwLWNvbXBvbmVudCc6IHRydWUsXG4gICAgICAgICAgICAncC1kaXNhYmxlZCc6IHRoaXMuZGlzYWJsZWRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZE9wdGlvbklkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSAhPT0gLTEgPyBgJHt0aGlzLmlkfV8ke3RoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCl9YCA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGZpbHRlclJlc3VsdE1lc3NhZ2VUZXh0KCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuaXNOb3RFbXB0eSh0aGlzLnZpc2libGVPcHRpb25zKCkpID8gdGhpcy5maWx0ZXJNZXNzYWdlVGV4dC5yZXBsYWNlQWxsKCd7MH0nLCB0aGlzLnZpc2libGVPcHRpb25zKCkubGVuZ3RoKSA6IHRoaXMuZW1wdHlGaWx0ZXJNZXNzYWdlVGV4dDtcbiAgICB9XG5cbiAgICBnZXQgZmlsdGVyTWVzc2FnZVRleHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlck1lc3NhZ2UgfHwgdGhpcy5jb25maWcudHJhbnNsYXRpb24uc2VhcmNoTWVzc2FnZSB8fCAnJztcbiAgICB9XG5cbiAgICBnZXQgc2VhcmNoTWVzc2FnZVRleHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaE1lc3NhZ2UgfHwgdGhpcy5jb25maWcudHJhbnNsYXRpb24uc2VhcmNoTWVzc2FnZSB8fCAnJztcbiAgICB9XG5cbiAgICBnZXQgZW1wdHlGaWx0ZXJNZXNzYWdlVGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1wdHlGaWx0ZXJNZXNzYWdlIHx8IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmVtcHR5U2VhcmNoTWVzc2FnZSB8fCB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5lbXB0eUZpbHRlck1lc3NhZ2UgfHwgJyc7XG4gICAgfVxuXG4gICAgZ2V0IHNlbGVjdGlvbk1lc3NhZ2VUZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25NZXNzYWdlIHx8IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLnNlbGVjdGlvbk1lc3NhZ2UgfHwgJyc7XG4gICAgfVxuXG4gICAgZ2V0IGVtcHR5U2VsZWN0aW9uTWVzc2FnZVRleHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVtcHR5U2VsZWN0aW9uTWVzc2FnZSB8fCB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5lbXB0eVNlbGVjdGlvbk1lc3NhZ2UgfHwgJyc7XG4gICAgfVxuXG4gICAgZ2V0IHNlbGVjdGVkTWVzc2FnZVRleHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc1NlbGVjdGVkT3B0aW9uKCkgPyB0aGlzLnNlbGVjdGlvbk1lc3NhZ2VUZXh0LnJlcGxhY2VBbGwoJ3swfScsIHRoaXMubXVsdGlwbGUgPyB0aGlzLm1vZGVsVmFsdWUoKS5sZW5ndGggOiAnMScpIDogdGhpcy5lbXB0eVNlbGVjdGlvbk1lc3NhZ2VUZXh0O1xuICAgIH1cblxuICAgIGdldCBhcmlhU2V0U2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZU9wdGlvbnMoKS5maWx0ZXIoKG9wdGlvbikgPT4gIXRoaXMuaXNPcHRpb25Hcm91cChvcHRpb24pKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgZ2V0IHZpcnR1YWxTY3JvbGxlckRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMudmlydHVhbFNjcm9sbDtcbiAgICB9XG5cbiAgICBnZXQgc2VhcmNoRmllbGRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJGaWVsZHMgfHwgW3RoaXMub3B0aW9uTGFiZWxdO1xuICAgIH1cblxuICAgIGdldCB0b2dnbGVBbGxBcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhID8gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYVt0aGlzLmFsbFNlbGVjdGVkKCkgPyAnc2VsZWN0QWxsJyA6ICd1bnNlbGVjdEFsbCddIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHNlYXJjaFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBzZWFyY2hUaW1lb3V0OiBhbnk7XG5cbiAgICBfc2VsZWN0QWxsOiBib29sZWFuIHwgdW5kZWZpbmVkIHwgbnVsbCA9IG51bGw7XG5cbiAgICBfb3B0aW9ucyA9IHNpZ25hbDxhbnk+KG51bGwpO1xuXG4gICAgc3RhcnRSYW5nZUluZGV4ID0gc2lnbmFsPG51bWJlcj4oLTEpO1xuXG4gICAgZm9jdXNlZE9wdGlvbkluZGV4ID0gc2lnbmFsPG51bWJlcj4oLTEpO1xuXG4gICAgbW9kZWxWYWx1ZSA9IHNpZ25hbDxhbnk+KG51bGwpO1xuXG4gICAgdmlzaWJsZU9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmdyb3VwID8gdGhpcy5mbGF0T3B0aW9ucyh0aGlzLl9vcHRpb25zKCkpIDogdGhpcy5fb3B0aW9ucygpIHx8IFtdO1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHRoaXMuX2ZpbHRlclZhbHVlKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoRmllbGRzWzBdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJWYWx1ZSA/IG9wdGlvbnMuZmlsdGVyKChvcHRpb24pID0+IG9wdGlvbi50b1N0cmluZygpLnRvTG9jYWxlTG93ZXJDYXNlKHRoaXMuZmlsdGVyTG9jYWxlKS5pbmRleE9mKGZpbHRlclZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKHRoaXMuZmlsdGVyTG9jYWxlKS50cmltKCkpICE9PSAtMSkgOiBvcHRpb25zO1xuICAgICAgICB9IGVsc2UgcmV0dXJuIGZpbHRlclZhbHVlID8gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlcihvcHRpb25zLCB0aGlzLnNlYXJjaEZpZWxkcywgZmlsdGVyVmFsdWUsIHRoaXMuZmlsdGVyTWF0Y2hNb2RlLCB0aGlzLmZpbHRlckxvY2FsZSkgOiBvcHRpb25zO1xuICAgIH0pO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHVibGljIGZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBjb25maWc6IGNheENvbmZpZyxcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuaWQgPSB0aGlzLmlkIHx8IFVuaXF1ZUNvbXBvbmVudElkKCk7XG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbk9ic2VydmVyLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmF1dG9VcGRhdGVNb2RlbCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmZpbHRlckJ5KSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyOiAodmFsdWUpID0+IHRoaXMub25GaWx0ZXJDaGFuZ2UodmFsdWUpLFxuICAgICAgICAgICAgICAgIHJlc2V0OiAoKSA9PiB0aGlzLnJlc2V0RmlsdGVyKClcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdpdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2dyb3VwJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncm91cFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdoZWFkZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdmaWx0ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdmb290ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvb3RlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlbXB0eSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1wdHlUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZW1wdHlmaWx0ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtcHR5RmlsdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2ZpbHRlcmljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnY2hlY2tpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja0ljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5tb2RlbFZhbHVlLnNldCh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUodmFsOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSB2YWw7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgZmxhdE9wdGlvbnMob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gKG9wdGlvbnMgfHwgW10pLnJlZHVjZSgocmVzdWx0LCBvcHRpb24sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh7IG9wdGlvbkdyb3VwOiBvcHRpb24sIGdyb3VwOiB0cnVlLCBpbmRleCB9KTtcblxuICAgICAgICAgICAgY29uc3Qgb3B0aW9uR3JvdXBDaGlsZHJlbiA9IHRoaXMuZ2V0T3B0aW9uR3JvdXBDaGlsZHJlbihvcHRpb24pO1xuXG4gICAgICAgICAgICBvcHRpb25Hcm91cENoaWxkcmVuICYmIG9wdGlvbkdyb3VwQ2hpbGRyZW4uZm9yRWFjaCgobykgPT4gcmVzdWx0LnB1c2gobykpO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LCBbXSk7XG4gICAgfVxuXG4gICAgYXV0b1VwZGF0ZU1vZGVsKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RPbkZvY3VzICYmIHRoaXMuYXV0b09wdGlvbkZvY3VzICYmICF0aGlzLmhhc1NlbGVjdGVkT3B0aW9uKCkgJiYgIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzZWRPcHRpb25JbmRleCA9IHRoaXMuZmluZEZpcnN0Rm9jdXNlZE9wdGlvbkluZGV4KCk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoZm9jdXNlZE9wdGlvbkluZGV4KTtcbiAgICAgICAgICAgIHRoaXMub25PcHRpb25TZWxlY3QobnVsbCwgdGhpcy52aXNpYmxlT3B0aW9ucygpW3RoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCldKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBtb2RlbCB2YWx1ZS5cbiAgICAgKiBAZ3JvdXAgTWV0aG9kXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZU1vZGVsKHZhbHVlLCBldmVudD8pIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLm1vZGVsVmFsdWUuc2V0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHZhbHVlKTtcblxuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IHRoaXMudmFsdWUgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlT3B0aW9uKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbFZhbHVlKCkuZmlsdGVyKCh2YWwpID0+ICFPYmplY3RVdGlscy5lcXVhbHModmFsLCB0aGlzLmdldE9wdGlvblZhbHVlKG9wdGlvbiksIHRoaXMuZXF1YWxpdHlLZXkoKSkpO1xuICAgIH1cblxuICAgIG9uT3B0aW9uU2VsZWN0KGV2ZW50LCBvcHRpb24sIGluZGV4ID0gLTEpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5pc09wdGlvbkRpc2FibGVkKG9wdGlvbikgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQgJiYgdGhpcy5vbkNsaWNrLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgb3B0aW9uLCB2YWx1ZTogdGhpcy52YWx1ZSB9KTtcblxuICAgICAgICB0aGlzLm11bHRpcGxlID8gdGhpcy5vbk9wdGlvblNlbGVjdE11bHRpcGxlKGV2ZW50LCBvcHRpb24pIDogdGhpcy5vbk9wdGlvblNlbGVjdFNpbmdsZShldmVudCwgb3B0aW9uKTtcbiAgICAgICAgdGhpcy5vcHRpb25Ub3VjaGVkID0gZmFsc2U7XG4gICAgICAgIGluZGV4ICE9PSAtMSAmJiB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoaW5kZXgpO1xuICAgIH1cblxuICAgIG9uT3B0aW9uU2VsZWN0TXVsdGlwbGUoZXZlbnQsIG9wdGlvbikge1xuICAgICAgICBsZXQgc2VsZWN0ZWQgPSB0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKTtcbiAgICAgICAgbGV0IHZhbHVlID0gbnVsbDtcbiAgICAgICAgbGV0IG1ldGFTZWxlY3Rpb24gPSB0aGlzLm9wdGlvblRvdWNoZWQgPyBmYWxzZSA6IHRoaXMubWV0YUtleVNlbGVjdGlvbjtcblxuICAgICAgICBpZiAobWV0YVNlbGVjdGlvbikge1xuICAgICAgICAgICAgbGV0IG1ldGFLZXkgPSBldmVudC5tZXRhS2V5IHx8IGV2ZW50LmN0cmxLZXk7XG5cbiAgICAgICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gbWV0YUtleSA/IHRoaXMucmVtb3ZlT3B0aW9uKG9wdGlvbikgOiBbdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBtZXRhS2V5ID8gdGhpcy5tb2RlbFZhbHVlKCkgfHwgW10gOiBbXTtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IFsuLi52YWx1ZSwgdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlID0gc2VsZWN0ZWQgPyB0aGlzLnJlbW92ZU9wdGlvbihvcHRpb24pIDogWy4uLih0aGlzLm1vZGVsVmFsdWUoKSB8fCBbXSksIHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKV07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKHZhbHVlLCBldmVudCk7XG4gICAgfVxuXG4gICAgb25PcHRpb25TZWxlY3RTaW5nbGUoZXZlbnQsIG9wdGlvbikge1xuICAgICAgICBsZXQgc2VsZWN0ZWQgPSB0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKTtcbiAgICAgICAgbGV0IHZhbHVlQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICBsZXQgdmFsdWUgPSBudWxsO1xuICAgICAgICBsZXQgbWV0YVNlbGVjdGlvbiA9IHRoaXMub3B0aW9uVG91Y2hlZCA/IGZhbHNlIDogdGhpcy5tZXRhS2V5U2VsZWN0aW9uO1xuXG4gICAgICAgIGlmIChtZXRhU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBsZXQgbWV0YUtleSA9IGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleTtcblxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1ldGFLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmdldE9wdGlvblZhbHVlKG9wdGlvbik7XG4gICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlID0gc2VsZWN0ZWQgPyBudWxsIDogdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pO1xuICAgICAgICAgICAgdmFsdWVDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZUNoYW5nZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTW9kZWwodmFsdWUsIGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uT3B0aW9uU2VsZWN0UmFuZ2UoZXZlbnQsIHN0YXJ0ID0gLTEsIGVuZCA9IC0xKSB7XG4gICAgICAgIHN0YXJ0ID09PSAtMSAmJiAoc3RhcnQgPSB0aGlzLmZpbmROZWFyZXN0U2VsZWN0ZWRPcHRpb25JbmRleChlbmQsIHRydWUpKTtcbiAgICAgICAgZW5kID09PSAtMSAmJiAoZW5kID0gdGhpcy5maW5kTmVhcmVzdFNlbGVjdGVkT3B0aW9uSW5kZXgoc3RhcnQpKTtcblxuICAgICAgICBpZiAoc3RhcnQgIT09IC0xICYmIGVuZCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlU3RhcnQgPSBNYXRoLm1pbihzdGFydCwgZW5kKTtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlRW5kID0gTWF0aC5tYXgoc3RhcnQsIGVuZCk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmlzaWJsZU9wdGlvbnMoKVxuICAgICAgICAgICAgICAgIC5zbGljZShyYW5nZVN0YXJ0LCByYW5nZUVuZCArIDEpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRPcHRpb24ob3B0aW9uKSlcbiAgICAgICAgICAgICAgICAubWFwKChvcHRpb24pID0+IHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKSk7XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlTW9kZWwodmFsdWUsIGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVG9nZ2xlQWxsKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBEb21IYW5kbGVyLmZvY3VzKHRoaXMuaGVhZGVyQ2hlY2tib3hWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0QWxsICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLm9uU2VsZWN0QWxsQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgICAgIGNoZWNrZWQ6ICF0aGlzLmFsbFNlbGVjdGVkKClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmFsbFNlbGVjdGVkKClcbiAgICAgICAgICAgICAgICA/IFtdXG4gICAgICAgICAgICAgICAgOiB0aGlzLnZpc2libGVPcHRpb25zKClcbiAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChvcHRpb24pID0+IHRoaXMuaXNWYWxpZE9wdGlvbihvcHRpb24pKVxuICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKG9wdGlvbikgPT4gdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pKTtcblxuICAgICAgICAgICAgdGhpcy51cGRhdGVNb2RlbCh2YWx1ZSwgZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgLy8gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgYWxsU2VsZWN0ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdEFsbCAhPT0gbnVsbCA/IHRoaXMuc2VsZWN0QWxsIDogT2JqZWN0VXRpbHMuaXNOb3RFbXB0eSh0aGlzLnZpc2libGVPcHRpb25zKCkpICYmIHRoaXMudmlzaWJsZU9wdGlvbnMoKS5ldmVyeSgob3B0aW9uKSA9PiB0aGlzLmlzT3B0aW9uR3JvdXAob3B0aW9uKSB8fCB0aGlzLmlzT3B0aW9uRGlzYWJsZWQob3B0aW9uKSB8fCB0aGlzLmlzU2VsZWN0ZWQob3B0aW9uKSk7XG4gICAgfVxuXG4gICAgb25PcHRpb25Ub3VjaEVuZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3B0aW9uVG91Y2hlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgb25PcHRpb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkT3B0aW9uSW5kZXgoZXZlbnQsIGluZGV4KTtcbiAgICB9XG5cbiAgICBvbk9wdGlvbk1vdXNlRW50ZXIoZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNPbkhvdmVyKSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRPcHRpb25JbmRleChldmVudCwgaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PcHRpb25Eb3VibGVDbGljayhldmVudDogTW91c2VFdmVudCwgb3B0aW9uOiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5pc09wdGlvbkRpc2FibGVkKG9wdGlvbikgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkRibENsaWNrLmVtaXQoe1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICBvcHRpb246IG9wdGlvbixcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRmlyc3RIaWRkZW5Gb2N1cyhldmVudDogRm9jdXNFdmVudCkge1xuICAgICAgICBEb21IYW5kbGVyLmZvY3VzKHRoaXMubGlzdFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgY29uc3QgZmlyc3RGb2N1c2FibGVFbCA9IERvbUhhbmRsZXIuZ2V0Rmlyc3RGb2N1c2FibGVFbGVtZW50KHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJzpub3QoW2RhdGEtcC1oaWRkZW4tZm9jdXNhYmxlPVwidHJ1ZVwiXSknKTtcbiAgICAgICAgdGhpcy5sYXN0SGlkZGVuRm9jdXNhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50LnRhYkluZGV4ID0gT2JqZWN0VXRpbHMuaXNFbXB0eShmaXJzdEZvY3VzYWJsZUVsKSA/ICctMScgOiB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZmlyc3RIaWRkZW5Gb2N1c2FibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSAtMTtcbiAgICB9XG5cbiAgICBvbkxhc3RIaWRkZW5Gb2N1cyhldmVudDogRm9jdXNFdmVudCkge1xuICAgICAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0gZXZlbnQucmVsYXRlZFRhcmdldDtcblxuICAgICAgICBpZiAocmVsYXRlZFRhcmdldCA9PT0gdGhpcy5saXN0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0Rm9jdXNhYmxlRWwgPSBEb21IYW5kbGVyLmdldEZpcnN0Rm9jdXNhYmxlRWxlbWVudCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICc6bm90KC5wLWhpZGRlbi1mb2N1c2FibGUpJyk7XG5cbiAgICAgICAgICAgIERvbUhhbmRsZXIuZm9jdXMoZmlyc3RGb2N1c2FibGVFbCk7XG4gICAgICAgICAgICB0aGlzLmZpcnN0SGlkZGVuRm9jdXNhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50LnRhYkluZGV4ID0gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgRG9tSGFuZGxlci5mb2N1cyh0aGlzLmZpcnN0SGlkZGVuRm9jdXNhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxhc3RIaWRkZW5Gb2N1c2FibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSAtMTtcbiAgICB9XG5cbiAgICBvbkZvY3Vzb3V0KGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQpICYmIHRoaXMubGFzdEhpZGRlbkZvY3VzYWJsZUVsZW1lbnQgJiYgdGhpcy5maXJzdEhpZGRlbkZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZmlyc3RIaWRkZW5Gb2N1c2FibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSB0aGlzLmxhc3RIaWRkZW5Gb2N1c2FibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLndyYXBwZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC50YWJJbmRleCA9ICcwJztcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsZXJUYWJJbmRleCA9ICcwJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTGlzdEZvY3VzKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGZvY3VzZWRPcHRpb25JbmRleCA9IHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkgIT09IC0xID8gdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSA6IHRoaXMuYXV0b09wdGlvbkZvY3VzID8gdGhpcy5maW5kRmlyc3RGb2N1c2VkT3B0aW9uSW5kZXgoKSA6IC0xO1xuICAgICAgICB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoZm9jdXNlZE9wdGlvbkluZGV4KTtcbiAgICAgICAgdGhpcy5vbkZvY3VzLmVtaXQoZXZlbnQpO1xuXG4gICAgICAgIHRoaXMud3JhcHBlclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnRhYkluZGV4ID0gJy0xJztcbiAgICAgICAgdGhpcy5zY3JvbGxlclRhYkluZGV4ID0gJy0xJztcbiAgICB9XG5cbiAgICBvbkxpc3RCbHVyKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoLTEpO1xuICAgICAgICB0aGlzLnN0YXJ0UmFuZ2VJbmRleC5zZXQoLTEpO1xuICAgICAgICB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgb25IZWFkZXJDaGVja2JveEZvY3VzKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuaGVhZGVyQ2hlY2tib3hGb2N1cyA9IHRydWU7XG4gICAgfVxuXG4gICAgb25IZWFkZXJDaGVja2JveEJsdXIoKSB7XG4gICAgICAgIHRoaXMuaGVhZGVyQ2hlY2tib3hGb2N1cyA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uSGVhZGVyQ2hlY2tib3hLZXlEb3duKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ1NwYWNlJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uVG9nZ2xlQWxsKGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uVG9nZ2xlQWxsKGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkhlYWRlckNoZWNrYm94VGFiS2V5RG93bihldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25IZWFkZXJDaGVja2JveFRhYktleURvd24oZXZlbnQpIHtcbiAgICAgICAgRG9tSGFuZGxlci5mb2N1cyh0aGlzLmxpc3RWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25GaWx0ZXJDaGFuZ2UoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgbGV0IHZhbHVlOiBzdHJpbmcgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlPy50cmltKCk7XG4gICAgICAgIHRoaXMuX2ZpbHRlclZhbHVlLnNldCh2YWx1ZSk7XG4gICAgICAgIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4LnNldCgtMSk7XG4gICAgICAgIHRoaXMuc3RhcnRSYW5nZUluZGV4LnNldCgtMSk7XG4gICAgICAgIHRoaXMub25GaWx0ZXIuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBmaWx0ZXI6IHRoaXMuX2ZpbHRlclZhbHVlKCkgfSk7XG5cbiAgICAgICAgIXRoaXMudmlydHVhbFNjcm9sbGVyRGlzYWJsZWQgJiYgdGhpcy5zY3JvbGxlci5zY3JvbGxUb0luZGV4KDApO1xuICAgIH1cblxuICAgIG9uRmlsdGVyRm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICAgICAgdGhpcy53cmFwcGVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSAnLTEnO1xuICAgIH1cblxuICAgIG9uRmlsdGVyQmx1cihldmVudDogRm9jdXNFdmVudCkge1xuICAgICAgICB0aGlzLmZvY3VzZWRPcHRpb25JbmRleC5zZXQoLTEpO1xuICAgICAgICB0aGlzLnN0YXJ0UmFuZ2VJbmRleC5zZXQoLTEpO1xuICAgIH1cblxuICAgIG9uTGlzdEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgbWV0YUtleSA9IGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleTtcblxuICAgICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkFycm93RG93bktleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIHRoaXMub25BcnJvd1VwS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnSG9tZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkhvbWVLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdFbmQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25FbmRLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdQYWdlRG93bic6XG4gICAgICAgICAgICAgICAgdGhpcy5vblBhZ2VEb3duS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnUGFnZVVwJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uUGFnZVVwS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgY2FzZSAnU3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnTnVtcGFkRW50ZXInOlxuICAgICAgICAgICAgICAgIHRoaXMub25TcGFjZUtleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgICAgICAgICAgLy9OT09QXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ1NoaWZ0TGVmdCc6XG4gICAgICAgICAgICBjYXNlICdTaGlmdFJpZ2h0JzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2hpZnRLZXkoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiBldmVudC5jb2RlID09PSAnS2V5QScgJiYgbWV0YUtleSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmlzaWJsZU9wdGlvbnMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRPcHRpb24ob3B0aW9uKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKG9wdGlvbikgPT4gdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKHZhbHVlLCBldmVudCk7XG5cbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFtZXRhS2V5ICYmIE9iamVjdFV0aWxzLmlzUHJpbnRhYmxlQ2hhcmFjdGVyKGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hPcHRpb25zKGV2ZW50LCBldmVudC5rZXkpO1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25GaWx0ZXJLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dEb3duS2V5KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkFycm93VXBLZXkoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkFycm93TGVmdEtleShldmVudCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgICAgICAgICAgIHRoaXMub25Ib21lS2V5KGV2ZW50LCB0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnRW5kJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uRW5kS2V5KGV2ZW50LCB0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgICAgIHRoaXMub25FbnRlcktleShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ1NoaWZ0TGVmdCc6XG4gICAgICAgICAgICBjYXNlICdTaGlmdFJpZ2h0JzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2hpZnRLZXkoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQXJyb3dEb3duS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbkluZGV4ID0gdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSAhPT0gLTEgPyB0aGlzLmZpbmROZXh0T3B0aW9uSW5kZXgodGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSkgOiB0aGlzLmZpbmRGaXJzdEZvY3VzZWRPcHRpb25JbmRleCgpO1xuXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICB0aGlzLm9uT3B0aW9uU2VsZWN0UmFuZ2UoZXZlbnQsIHRoaXMuc3RhcnRSYW5nZUluZGV4KCksIG9wdGlvbkluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZE9wdGlvbkluZGV4KGV2ZW50LCBvcHRpb25JbmRleCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25BcnJvd1VwS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbkluZGV4ID0gdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSAhPT0gLTEgPyB0aGlzLmZpbmRQcmV2T3B0aW9uSW5kZXgodGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSkgOiB0aGlzLmZpbmRMYXN0Rm9jdXNlZE9wdGlvbkluZGV4KCk7XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMub25PcHRpb25TZWxlY3RSYW5nZShldmVudCwgb3B0aW9uSW5kZXgsIHRoaXMuc3RhcnRSYW5nZUluZGV4KCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkT3B0aW9uSW5kZXgoZXZlbnQsIG9wdGlvbkluZGV4KTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkFycm93TGVmdEtleShldmVudDogS2V5Ym9hcmRFdmVudCwgcHJlc3NlZEluSW5wdXRUZXh0ID0gZmFsc2UpIHtcbiAgICAgICAgcHJlc3NlZEluSW5wdXRUZXh0ICYmIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4LnNldCgtMSk7XG4gICAgfVxuXG4gICAgb25Ib21lS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50LCBwcmVzc2VkSW5JbnB1dFRleHQ6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICBpZiAocHJlc3NlZEluSW5wdXRUZXh0KSB7XG4gICAgICAgICAgICAoZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5zZXRTZWxlY3Rpb25SYW5nZSgwLCAwKTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4LnNldCgtMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgbWV0YUtleSA9IGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleTtcbiAgICAgICAgICAgIGxldCBvcHRpb25JbmRleCA9IHRoaXMuZmluZEZpcnN0T3B0aW9uSW5kZXgoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgZXZlbnQuc2hpZnRLZXkgJiYgbWV0YUtleSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25PcHRpb25TZWxlY3RSYW5nZShldmVudCwgb3B0aW9uSW5kZXgsIHRoaXMuc3RhcnRSYW5nZUluZGV4KCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRPcHRpb25JbmRleChldmVudCwgb3B0aW9uSW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkVuZEtleShldmVudDogS2V5Ym9hcmRFdmVudCwgcHJlc3NlZEluSW5wdXRUZXh0OiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHByZXNzZWRJbklucHV0VGV4dCkge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgbGVuID0gdGFyZ2V0LnZhbHVlLmxlbmd0aDtcblxuICAgICAgICAgICAgdGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKGxlbiwgbGVuKTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4LnNldCgtMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgbWV0YUtleSA9IGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleTtcbiAgICAgICAgICAgIGxldCBvcHRpb25JbmRleCA9IHRoaXMuZmluZExhc3RPcHRpb25JbmRleCgpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiBldmVudC5zaGlmdEtleSAmJiBtZXRhS2V5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk9wdGlvblNlbGVjdFJhbmdlKGV2ZW50LCB0aGlzLnN0YXJ0UmFuZ2VJbmRleCgpLCBvcHRpb25JbmRleCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZE9wdGlvbkluZGV4KGV2ZW50LCBvcHRpb25JbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uUGFnZURvd25LZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxJblZpZXcoMCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25QYWdlVXBLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxJblZpZXcodGhpcy52aXNpYmxlT3B0aW9ucygpLmxlbmd0aCAtIDEpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uRW50ZXJLZXkoZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCkgIT09IC0xKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiBldmVudC5zaGlmdEtleSkgdGhpcy5vbk9wdGlvblNlbGVjdFJhbmdlKGV2ZW50LCB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpKTtcbiAgICAgICAgICAgIGVsc2UgdGhpcy5vbk9wdGlvblNlbGVjdChldmVudCwgdGhpcy52aXNpYmxlT3B0aW9ucygpW3RoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25TcGFjZUtleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLm9uRW50ZXJLZXkoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uU2hpZnRLZXkoKSB7XG4gICAgICAgIGNvbnN0IGZvY3VzZWRPcHRpb25JbmRleCA9IHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4KCk7XG4gICAgICAgIHRoaXMuc3RhcnRSYW5nZUluZGV4LnNldChmb2N1c2VkT3B0aW9uSW5kZXgpO1xuICAgIH1cblxuICAgIGdldE9wdGlvbkdyb3VwQ2hpbGRyZW4ob3B0aW9uR3JvdXApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uR3JvdXBDaGlsZHJlbiA/IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEob3B0aW9uR3JvdXAsIHRoaXMub3B0aW9uR3JvdXBDaGlsZHJlbikgOiBvcHRpb25Hcm91cC5pdGVtcztcbiAgICB9XG5cbiAgICBnZXRPcHRpb25Hcm91cExhYmVsKG9wdGlvbkdyb3VwOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uR3JvdXBMYWJlbCA/IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEob3B0aW9uR3JvdXAsIHRoaXMub3B0aW9uR3JvdXBMYWJlbCkgOiBvcHRpb25Hcm91cCAmJiBvcHRpb25Hcm91cC5sYWJlbCAhPT0gdW5kZWZpbmVkID8gb3B0aW9uR3JvdXAubGFiZWwgOiBvcHRpb25Hcm91cDtcbiAgICB9XG5cbiAgICBnZXRPcHRpb25MYWJlbChvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uTGFiZWwgPyBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG9wdGlvbiwgdGhpcy5vcHRpb25MYWJlbCkgOiBvcHRpb24ubGFiZWwgIT0gdW5kZWZpbmVkID8gb3B0aW9uLmxhYmVsIDogb3B0aW9uO1xuICAgIH1cblxuICAgIGdldE9wdGlvbkluZGV4KGluZGV4LCBzY3JvbGxlck9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlydHVhbFNjcm9sbGVyRGlzYWJsZWQgPyBpbmRleCA6IHNjcm9sbGVyT3B0aW9ucyAmJiBzY3JvbGxlck9wdGlvbnMuZ2V0SXRlbU9wdGlvbnMoaW5kZXgpWydpbmRleCddO1xuICAgIH1cblxuICAgIGdldE9wdGlvblZhbHVlKG9wdGlvbjogYW55KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvblZhbHVlID8gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShvcHRpb24sIHRoaXMub3B0aW9uVmFsdWUpIDogIXRoaXMub3B0aW9uTGFiZWwgJiYgb3B0aW9uICYmIG9wdGlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkID8gb3B0aW9uLnZhbHVlIDogb3B0aW9uO1xuICAgIH1cblxuICAgIGdldEFyaWFQb3NJbnNldChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAodGhpcy5vcHRpb25Hcm91cExhYmVsXG4gICAgICAgICAgICAgICAgPyBpbmRleCAtXG4gICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVPcHRpb25zKClcbiAgICAgICAgICAgICAgICAgICAgICAuc2xpY2UoMCwgaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiB0aGlzLmlzT3B0aW9uR3JvdXAob3B0aW9uKSkubGVuZ3RoXG4gICAgICAgICAgICAgICAgOiBpbmRleCkgKyAxXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaGFzU2VsZWN0ZWRPcHRpb24oKSB7XG4gICAgICAgIHJldHVybiBPYmplY3RVdGlscy5pc05vdEVtcHR5KHRoaXMubW9kZWxWYWx1ZSgpKTtcbiAgICB9XG5cbiAgICBpc09wdGlvbkdyb3VwKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25Hcm91cExhYmVsICYmIG9wdGlvbi5vcHRpb25Hcm91cCAmJiBvcHRpb24uZ3JvdXA7XG4gICAgfVxuXG4gICAgY2hhbmdlRm9jdXNlZE9wdGlvbkluZGV4KGV2ZW50LCBpbmRleCkge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSAhPT0gaW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4LnNldChpbmRleCk7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEluVmlldygpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RPbkZvY3VzICYmICF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk9wdGlvblNlbGVjdChldmVudCwgdGhpcy52aXNpYmxlT3B0aW9ucygpW2luZGV4XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWFyY2hPcHRpb25zKGV2ZW50LCBjaGFyKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAodGhpcy5zZWFyY2hWYWx1ZSB8fCAnJykgKyBjaGFyO1xuXG4gICAgICAgIGxldCBvcHRpb25JbmRleCA9IC0xO1xuICAgICAgICBsZXQgbWF0Y2hlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpICE9PSAtMSkge1xuICAgICAgICAgICAgb3B0aW9uSW5kZXggPSB0aGlzLnZpc2libGVPcHRpb25zKClcbiAgICAgICAgICAgICAgICAuc2xpY2UodGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSlcbiAgICAgICAgICAgICAgICAuZmluZEluZGV4KChvcHRpb24pID0+IHRoaXMuaXNPcHRpb25NYXRjaGVkKG9wdGlvbikpO1xuICAgICAgICAgICAgb3B0aW9uSW5kZXggPVxuICAgICAgICAgICAgICAgIG9wdGlvbkluZGV4ID09PSAtMVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMudmlzaWJsZU9wdGlvbnMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAuc2xpY2UoMCwgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmRJbmRleCgob3B0aW9uKSA9PiB0aGlzLmlzT3B0aW9uTWF0Y2hlZChvcHRpb24pKVxuICAgICAgICAgICAgICAgICAgICA6IG9wdGlvbkluZGV4ICsgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9wdGlvbkluZGV4ID0gdGhpcy52aXNpYmxlT3B0aW9ucygpLmZpbmRJbmRleCgob3B0aW9uKSA9PiB0aGlzLmlzT3B0aW9uTWF0Y2hlZChvcHRpb24pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25JbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIG1hdGNoZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbkluZGV4ID09PSAtMSAmJiB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpID09PSAtMSkge1xuICAgICAgICAgICAgb3B0aW9uSW5kZXggPSB0aGlzLmZpbmRGaXJzdEZvY3VzZWRPcHRpb25JbmRleCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbkluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkT3B0aW9uSW5kZXgoZXZlbnQsIG9wdGlvbkluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFRpbWVvdXQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNlYXJjaFRpbWVvdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWFyY2hUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFRpbWVvdXQgPSBudWxsO1xuICAgICAgICB9LCA1MDApO1xuXG4gICAgICAgIHJldHVybiBtYXRjaGVkO1xuICAgIH1cblxuICAgIGlzT3B0aW9uTWF0Y2hlZChvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZE9wdGlvbihvcHRpb24pICYmIHRoaXMuZ2V0T3B0aW9uTGFiZWwob3B0aW9uKS50b0xvY2FsZUxvd2VyQ2FzZSh0aGlzLmZpbHRlckxvY2FsZSkuc3RhcnRzV2l0aCh0aGlzLnNlYXJjaFZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKHRoaXMuZmlsdGVyTG9jYWxlKSk7XG4gICAgfVxuXG4gICAgc2Nyb2xsSW5WaWV3KGluZGV4ID0gLTEpIHtcbiAgICAgICAgY29uc3QgaWQgPSBpbmRleCAhPT0gLTEgPyBgJHt0aGlzLmlkfV8ke2luZGV4fWAgOiB0aGlzLmZvY3VzZWRPcHRpb25JZDtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLmxpc3RWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCwgYGxpW2lkPVwiJHtpZH1cIl1gKTtcblxuICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldyAmJiBlbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICduZWFyZXN0JywgaW5saW5lOiAnbmVhcmVzdCcgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMudmlydHVhbFNjcm9sbGVyRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMudmlydHVhbFNjcm9sbCAmJiB0aGlzLnNjcm9sbGVyLnNjcm9sbFRvSW5kZXgoaW5kZXggIT09IC0xID8gaW5kZXggOiB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZpbmRGaXJzdE9wdGlvbkluZGV4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy52aXNpYmxlT3B0aW9ucygpLmZpbmRJbmRleCgob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRPcHRpb24ob3B0aW9uKSk7XG4gICAgfVxuXG4gICAgZmluZExhc3RPcHRpb25JbmRleCgpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLmZpbmRMYXN0SW5kZXgodGhpcy52aXNpYmxlT3B0aW9ucygpLCAob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRPcHRpb24ob3B0aW9uKSk7XG4gICAgfVxuXG4gICAgZmluZEZpcnN0Rm9jdXNlZE9wdGlvbkluZGV4KCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdGhpcy5maW5kRmlyc3RTZWxlY3RlZE9wdGlvbkluZGV4KCk7XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkSW5kZXggPCAwID8gdGhpcy5maW5kRmlyc3RPcHRpb25JbmRleCgpIDogc2VsZWN0ZWRJbmRleDtcbiAgICB9XG5cbiAgICBmaW5kTGFzdEZvY3VzZWRPcHRpb25JbmRleCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHRoaXMuZmluZExhc3RTZWxlY3RlZE9wdGlvbkluZGV4KCk7XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkSW5kZXggPCAwID8gdGhpcy5maW5kTGFzdE9wdGlvbkluZGV4KCkgOiBzZWxlY3RlZEluZGV4O1xuICAgIH1cblxuICAgIGZpbmRMYXN0U2VsZWN0ZWRPcHRpb25JbmRleCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzU2VsZWN0ZWRPcHRpb24oKSA/IE9iamVjdFV0aWxzLmZpbmRMYXN0SW5kZXgodGhpcy52aXNpYmxlT3B0aW9ucygpLCAob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRTZWxlY3RlZE9wdGlvbihvcHRpb24pKSA6IC0xO1xuICAgIH1cblxuICAgIGZpbmROZXh0T3B0aW9uSW5kZXgoaW5kZXgpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlZE9wdGlvbkluZGV4ID1cbiAgICAgICAgICAgIGluZGV4IDwgdGhpcy52aXNpYmxlT3B0aW9ucygpLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICA/IHRoaXMudmlzaWJsZU9wdGlvbnMoKVxuICAgICAgICAgICAgICAgICAgICAgIC5zbGljZShpbmRleCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgLmZpbmRJbmRleCgob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRPcHRpb24ob3B0aW9uKSlcbiAgICAgICAgICAgICAgICA6IC0xO1xuXG4gICAgICAgIHJldHVybiBtYXRjaGVkT3B0aW9uSW5kZXggPiAtMSA/IG1hdGNoZWRPcHRpb25JbmRleCArIGluZGV4ICsgMSA6IGluZGV4O1xuICAgIH1cblxuICAgIGZpbmROZXh0U2VsZWN0ZWRPcHRpb25JbmRleChpbmRleCkge1xuICAgICAgICBjb25zdCBtYXRjaGVkT3B0aW9uSW5kZXggPVxuICAgICAgICAgICAgdGhpcy5oYXNTZWxlY3RlZE9wdGlvbigpICYmIGluZGV4IDwgdGhpcy52aXNpYmxlT3B0aW9ucygpLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICA/IHRoaXMudmlzaWJsZU9wdGlvbnMoKVxuICAgICAgICAgICAgICAgICAgICAgIC5zbGljZShpbmRleCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgLmZpbmRJbmRleCgob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRTZWxlY3RlZE9wdGlvbihvcHRpb24pKVxuICAgICAgICAgICAgICAgIDogLTE7XG5cbiAgICAgICAgcmV0dXJuIG1hdGNoZWRPcHRpb25JbmRleCA+IC0xID8gbWF0Y2hlZE9wdGlvbkluZGV4ICsgaW5kZXggKyAxIDogLTE7XG4gICAgfVxuXG4gICAgZmluZFByZXZTZWxlY3RlZE9wdGlvbkluZGV4KGluZGV4KSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZWRPcHRpb25JbmRleCA9IHRoaXMuaGFzU2VsZWN0ZWRPcHRpb24oKSAmJiBpbmRleCA+IDAgPyBPYmplY3RVdGlscy5maW5kTGFzdEluZGV4KHRoaXMudmlzaWJsZU9wdGlvbnMoKS5zbGljZSgwLCBpbmRleCksIChvcHRpb24pID0+IHRoaXMuaXNWYWxpZFNlbGVjdGVkT3B0aW9uKG9wdGlvbikpIDogLTE7XG5cbiAgICAgICAgcmV0dXJuIG1hdGNoZWRPcHRpb25JbmRleCA+IC0xID8gbWF0Y2hlZE9wdGlvbkluZGV4IDogLTE7XG4gICAgfVxuXG4gICAgZmluZEZpcnN0U2VsZWN0ZWRPcHRpb25JbmRleCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzU2VsZWN0ZWRPcHRpb24oKSA/IHRoaXMudmlzaWJsZU9wdGlvbnMoKS5maW5kSW5kZXgoKG9wdGlvbikgPT4gdGhpcy5pc1ZhbGlkU2VsZWN0ZWRPcHRpb24ob3B0aW9uKSkgOiAtMTtcbiAgICB9XG5cbiAgICBmaW5kUHJldk9wdGlvbkluZGV4KGluZGV4KSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZWRPcHRpb25JbmRleCA9IGluZGV4ID4gMCA/IE9iamVjdFV0aWxzLmZpbmRMYXN0SW5kZXgodGhpcy52aXNpYmxlT3B0aW9ucygpLnNsaWNlKDAsIGluZGV4KSwgKG9wdGlvbikgPT4gdGhpcy5pc1ZhbGlkT3B0aW9uKG9wdGlvbikpIDogLTE7XG5cbiAgICAgICAgcmV0dXJuIG1hdGNoZWRPcHRpb25JbmRleCA+IC0xID8gbWF0Y2hlZE9wdGlvbkluZGV4IDogaW5kZXg7XG4gICAgfVxuXG4gICAgZmluZE5lYXJlc3RTZWxlY3RlZE9wdGlvbkluZGV4KGluZGV4LCBmaXJzdENoZWNrVXAgPSBmYWxzZSkge1xuICAgICAgICBsZXQgbWF0Y2hlZE9wdGlvbkluZGV4ID0gLTE7XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzU2VsZWN0ZWRPcHRpb24oKSkge1xuICAgICAgICAgICAgaWYgKGZpcnN0Q2hlY2tVcCkge1xuICAgICAgICAgICAgICAgIG1hdGNoZWRPcHRpb25JbmRleCA9IHRoaXMuZmluZFByZXZTZWxlY3RlZE9wdGlvbkluZGV4KGluZGV4KTtcbiAgICAgICAgICAgICAgICBtYXRjaGVkT3B0aW9uSW5kZXggPSBtYXRjaGVkT3B0aW9uSW5kZXggPT09IC0xID8gdGhpcy5maW5kTmV4dFNlbGVjdGVkT3B0aW9uSW5kZXgoaW5kZXgpIDogbWF0Y2hlZE9wdGlvbkluZGV4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtYXRjaGVkT3B0aW9uSW5kZXggPSB0aGlzLmZpbmROZXh0U2VsZWN0ZWRPcHRpb25JbmRleChpbmRleCk7XG4gICAgICAgICAgICAgICAgbWF0Y2hlZE9wdGlvbkluZGV4ID0gbWF0Y2hlZE9wdGlvbkluZGV4ID09PSAtMSA/IHRoaXMuZmluZFByZXZTZWxlY3RlZE9wdGlvbkluZGV4KGluZGV4KSA6IG1hdGNoZWRPcHRpb25JbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtYXRjaGVkT3B0aW9uSW5kZXggPiAtMSA/IG1hdGNoZWRPcHRpb25JbmRleCA6IGluZGV4O1xuICAgIH1cblxuICAgIGVxdWFsaXR5S2V5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25WYWx1ZSA/IG51bGwgOiB0aGlzLmRhdGFLZXk7XG4gICAgfVxuXG4gICAgaXNWYWxpZFNlbGVjdGVkT3B0aW9uKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkT3B0aW9uKG9wdGlvbikgJiYgdGhpcy5pc1NlbGVjdGVkKG9wdGlvbik7XG4gICAgfVxuXG4gICAgaXNPcHRpb25EaXNhYmxlZChvcHRpb246IGFueSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25EaXNhYmxlZCA/IE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEob3B0aW9uLCB0aGlzLm9wdGlvbkRpc2FibGVkKSA6IGZhbHNlO1xuICAgIH1cblxuICAgIGlzU2VsZWN0ZWQob3B0aW9uKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvblZhbHVlID0gdGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pO1xuXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSByZXR1cm4gKHRoaXMubW9kZWxWYWx1ZSgpIHx8IFtdKS5zb21lKCh2YWx1ZSkgPT4gT2JqZWN0VXRpbHMuZXF1YWxzKHZhbHVlLCBvcHRpb25WYWx1ZSwgdGhpcy5lcXVhbGl0eUtleSgpKSk7XG4gICAgICAgIGVsc2UgcmV0dXJuIE9iamVjdFV0aWxzLmVxdWFscyh0aGlzLm1vZGVsVmFsdWUoKSwgb3B0aW9uVmFsdWUsIHRoaXMuZXF1YWxpdHlLZXkoKSk7XG4gICAgfVxuXG4gICAgaXNWYWxpZE9wdGlvbihvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbiAmJiAhKHRoaXMuaXNPcHRpb25EaXNhYmxlZChvcHRpb24pIHx8IHRoaXMuaXNPcHRpb25Hcm91cChvcHRpb24pKTtcbiAgICB9XG5cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gIXRoaXMuX29wdGlvbnMoKT8ubGVuZ3RoIHx8ICF0aGlzLnZpc2libGVPcHRpb25zKCk/Lmxlbmd0aDtcbiAgICB9XG5cbiAgICBoYXNGaWx0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJWYWx1ZSgpICYmIHRoaXMuX2ZpbHRlclZhbHVlKCkudHJpbSgpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgcmVzZXRGaWx0ZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlclZpZXdDaGlsZCAmJiB0aGlzLmZpbHRlclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9maWx0ZXJWYWx1ZS5zZXQobnVsbCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLnRyYW5zbGF0aW9uU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU2hhcmVkTW9kdWxlLCBSaXBwbGVNb2R1bGUsIFNjcm9sbGVyTW9kdWxlLCBTZWFyY2hJY29uLCBDaGVja0ljb25dLFxuICAgIGV4cG9ydHM6IFtMaXN0Ym94LCBTaGFyZWRNb2R1bGUsIFNjcm9sbGVyTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtMaXN0Ym94XVxufSlcbmV4cG9ydCBjbGFzcyBMaXN0Ym94TW9kdWxlIHt9XG4iXX0=