primeng 15.0.0 → 15.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (468) hide show
  1. package/accordion/accordion.d.ts +11 -3
  2. package/api/overlayoptions.d.ts +1 -0
  3. package/autocomplete/autocomplete.d.ts +18 -27
  4. package/badge/badge.d.ts +8 -3
  5. package/button/button.d.ts +3 -2
  6. package/dataview/dataview.d.ts +2 -1
  7. package/dom/domhandler.d.ts +1 -0
  8. package/dropdown/dropdown.d.ts +1 -0
  9. package/dynamicdialog/dynamicdialog.d.ts +4 -3
  10. package/esm2020/accordion/accordion.mjs +71 -26
  11. package/esm2020/animate/animate.mjs +7 -7
  12. package/esm2020/api/confirmationservice.mjs +3 -3
  13. package/esm2020/api/contextmenuservice.mjs +3 -3
  14. package/esm2020/api/filterservice.mjs +3 -3
  15. package/esm2020/api/messageservice.mjs +3 -3
  16. package/esm2020/api/overlayoptions.mjs +1 -1
  17. package/esm2020/api/overlayservice.mjs +3 -3
  18. package/esm2020/api/primengconfig.mjs +3 -3
  19. package/esm2020/api/shared.mjs +13 -13
  20. package/esm2020/api/treedragdropservice.mjs +3 -3
  21. package/esm2020/autocomplete/autocomplete.mjs +204 -310
  22. package/esm2020/autofocus/autofocus.mjs +7 -7
  23. package/esm2020/avatar/avatar.mjs +7 -7
  24. package/esm2020/avatargroup/avatargroup.mjs +7 -7
  25. package/esm2020/badge/badge.mjs +43 -11
  26. package/esm2020/blockui/blockui.mjs +7 -7
  27. package/esm2020/breadcrumb/breadcrumb.mjs +8 -8
  28. package/esm2020/button/button.mjs +40 -27
  29. package/esm2020/calendar/calendar.mjs +14 -9
  30. package/esm2020/captcha/captcha.mjs +7 -7
  31. package/esm2020/card/card.mjs +7 -7
  32. package/esm2020/carousel/carousel.mjs +7 -7
  33. package/esm2020/cascadeselect/cascadeselect.mjs +10 -10
  34. package/esm2020/chart/chart.mjs +7 -7
  35. package/esm2020/checkbox/checkbox.mjs +7 -7
  36. package/esm2020/chip/chip.mjs +7 -7
  37. package/esm2020/chips/chips.mjs +12 -12
  38. package/esm2020/codehighlighter/codehighlighter.mjs +7 -7
  39. package/esm2020/colorpicker/colorpicker.mjs +7 -7
  40. package/esm2020/confirmdialog/confirmdialog.mjs +7 -7
  41. package/esm2020/confirmpopup/confirmpopup.mjs +7 -7
  42. package/esm2020/contextmenu/contextmenu.mjs +12 -12
  43. package/esm2020/dataview/dataview.mjs +16 -13
  44. package/esm2020/defer/defer.mjs +7 -7
  45. package/esm2020/dialog/dialog.mjs +9 -8
  46. package/esm2020/divider/divider.mjs +7 -7
  47. package/esm2020/dock/dock.mjs +8 -8
  48. package/esm2020/dom/domhandler.mjs +21 -2
  49. package/esm2020/dragdrop/dragdrop.mjs +10 -10
  50. package/esm2020/dropdown/dropdown.mjs +20 -17
  51. package/esm2020/dynamicdialog/dialogservice.mjs +3 -3
  52. package/esm2020/dynamicdialog/dynamicdialog.mjs +44 -29
  53. package/esm2020/dynamicdialog/dynamicdialogcontent.mjs +3 -3
  54. package/esm2020/editor/editor.mjs +7 -7
  55. package/esm2020/fieldset/fieldset.mjs +7 -7
  56. package/esm2020/fileupload/fileupload.mjs +11 -11
  57. package/esm2020/focustrap/focustrap.mjs +14 -30
  58. package/esm2020/galleria/galleria.mjs +19 -19
  59. package/esm2020/gmap/gmap.mjs +7 -7
  60. package/esm2020/image/image.mjs +7 -7
  61. package/esm2020/inplace/inplace.mjs +13 -13
  62. package/esm2020/inputmask/inputmask.mjs +30 -16
  63. package/esm2020/inputnumber/inputnumber.mjs +16 -8
  64. package/esm2020/inputswitch/inputswitch.mjs +7 -7
  65. package/esm2020/inputtext/inputtext.mjs +7 -7
  66. package/esm2020/inputtextarea/inputtextarea.mjs +7 -7
  67. package/esm2020/keyfilter/keyfilter.mjs +7 -7
  68. package/esm2020/knob/knob.mjs +7 -7
  69. package/esm2020/lightbox/lightbox.mjs +7 -7
  70. package/esm2020/listbox/listbox.mjs +7 -7
  71. package/esm2020/megamenu/megamenu.mjs +8 -8
  72. package/esm2020/menu/menu.mjs +12 -12
  73. package/esm2020/menubar/menubar.mjs +59 -18
  74. package/esm2020/message/message.mjs +7 -7
  75. package/esm2020/messages/messages.mjs +7 -7
  76. package/esm2020/multiselect/multiselect.mjs +16 -12
  77. package/esm2020/orderlist/orderlist.mjs +7 -7
  78. package/esm2020/organizationchart/organizationchart.mjs +10 -10
  79. package/esm2020/overlay/overlay.mjs +48 -17
  80. package/esm2020/overlaypanel/overlaypanel.mjs +7 -7
  81. package/esm2020/paginator/paginator.mjs +7 -7
  82. package/esm2020/panel/panel.mjs +7 -7
  83. package/esm2020/panelmenu/panelmenu.mjs +13 -13
  84. package/esm2020/password/password.mjs +17 -16
  85. package/esm2020/picklist/picklist.mjs +7 -7
  86. package/esm2020/progressbar/progressbar.mjs +15 -13
  87. package/esm2020/progressspinner/progressspinner.mjs +7 -7
  88. package/esm2020/radiobutton/radiobutton.mjs +10 -10
  89. package/esm2020/rating/rating.mjs +7 -7
  90. package/esm2020/ripple/ripple.mjs +7 -7
  91. package/esm2020/scroller/scroller.mjs +26 -13
  92. package/esm2020/scrollpanel/scrollpanel.mjs +7 -7
  93. package/esm2020/scrolltop/scrolltop.mjs +7 -7
  94. package/esm2020/selectbutton/selectbutton.mjs +7 -7
  95. package/esm2020/sidebar/sidebar.mjs +7 -7
  96. package/esm2020/skeleton/skeleton.mjs +7 -7
  97. package/esm2020/slidemenu/slidemenu.mjs +12 -12
  98. package/esm2020/slider/slider.mjs +7 -7
  99. package/esm2020/speeddial/speeddial.mjs +17 -17
  100. package/esm2020/spinner/spinner.mjs +7 -7
  101. package/esm2020/splitbutton/splitbutton.mjs +7 -7
  102. package/esm2020/splitter/splitter.mjs +7 -7
  103. package/esm2020/steps/steps.mjs +8 -8
  104. package/esm2020/styleclass/styleclass.mjs +71 -38
  105. package/esm2020/table/table.mjs +136 -90
  106. package/esm2020/tabmenu/tabmenu.mjs +18 -14
  107. package/esm2020/tabview/tabview.mjs +11 -11
  108. package/esm2020/tag/tag.mjs +7 -7
  109. package/esm2020/terminal/terminal.mjs +7 -7
  110. package/esm2020/terminal/terminalservice.mjs +3 -3
  111. package/esm2020/tieredmenu/tieredmenu.mjs +12 -12
  112. package/esm2020/timeline/timeline.mjs +7 -7
  113. package/esm2020/toast/toast.mjs +10 -10
  114. package/esm2020/togglebutton/togglebutton.mjs +7 -7
  115. package/esm2020/toolbar/toolbar.mjs +28 -19
  116. package/esm2020/tooltip/tooltip.mjs +53 -17
  117. package/esm2020/tree/tree.mjs +36 -21
  118. package/esm2020/treeselect/treeselect.mjs +7 -7
  119. package/esm2020/treetable/treetable.mjs +56 -56
  120. package/esm2020/tristatecheckbox/tristatecheckbox.mjs +7 -7
  121. package/esm2020/virtualscroller/virtualscroller.mjs +7 -7
  122. package/fesm2015/primeng-accordion.mjs +70 -24
  123. package/fesm2015/primeng-accordion.mjs.map +1 -1
  124. package/fesm2015/primeng-animate.mjs +8 -7
  125. package/fesm2015/primeng-api.mjs +35 -34
  126. package/fesm2015/primeng-autocomplete.mjs +206 -311
  127. package/fesm2015/primeng-autocomplete.mjs.map +1 -1
  128. package/fesm2015/primeng-autofocus.mjs +8 -7
  129. package/fesm2015/primeng-avatar.mjs +8 -7
  130. package/fesm2015/primeng-avatargroup.mjs +8 -7
  131. package/fesm2015/primeng-badge.mjs +43 -10
  132. package/fesm2015/primeng-badge.mjs.map +1 -1
  133. package/fesm2015/primeng-blockui.mjs +8 -7
  134. package/fesm2015/primeng-breadcrumb.mjs +9 -8
  135. package/fesm2015/primeng-breadcrumb.mjs.map +1 -1
  136. package/fesm2015/primeng-button.mjs +40 -26
  137. package/fesm2015/primeng-button.mjs.map +1 -1
  138. package/fesm2015/primeng-calendar.mjs +14 -8
  139. package/fesm2015/primeng-calendar.mjs.map +1 -1
  140. package/fesm2015/primeng-captcha.mjs +8 -7
  141. package/fesm2015/primeng-card.mjs +8 -7
  142. package/fesm2015/primeng-carousel.mjs +8 -7
  143. package/fesm2015/primeng-cascadeselect.mjs +11 -10
  144. package/fesm2015/primeng-chart.mjs +8 -7
  145. package/fesm2015/primeng-checkbox.mjs +8 -7
  146. package/fesm2015/primeng-chip.mjs +8 -7
  147. package/fesm2015/primeng-chips.mjs +12 -11
  148. package/fesm2015/primeng-chips.mjs.map +1 -1
  149. package/fesm2015/primeng-codehighlighter.mjs +8 -7
  150. package/fesm2015/primeng-colorpicker.mjs +8 -7
  151. package/fesm2015/primeng-confirmdialog.mjs +8 -7
  152. package/fesm2015/primeng-confirmpopup.mjs +8 -7
  153. package/fesm2015/primeng-contextmenu.mjs +12 -11
  154. package/fesm2015/primeng-contextmenu.mjs.map +1 -1
  155. package/fesm2015/primeng-dataview.mjs +16 -12
  156. package/fesm2015/primeng-dataview.mjs.map +1 -1
  157. package/fesm2015/primeng-defer.mjs +8 -7
  158. package/fesm2015/primeng-dialog.mjs +9 -7
  159. package/fesm2015/primeng-dialog.mjs.map +1 -1
  160. package/fesm2015/primeng-divider.mjs +8 -7
  161. package/fesm2015/primeng-dock.mjs +9 -8
  162. package/fesm2015/primeng-dock.mjs.map +1 -1
  163. package/fesm2015/primeng-dom.mjs +21 -1
  164. package/fesm2015/primeng-dom.mjs.map +1 -1
  165. package/fesm2015/primeng-dragdrop.mjs +11 -10
  166. package/fesm2015/primeng-dropdown.mjs +20 -16
  167. package/fesm2015/primeng-dropdown.mjs.map +1 -1
  168. package/fesm2015/primeng-dynamicdialog.mjs +47 -31
  169. package/fesm2015/primeng-dynamicdialog.mjs.map +1 -1
  170. package/fesm2015/primeng-editor.mjs +8 -7
  171. package/fesm2015/primeng-fieldset.mjs +8 -7
  172. package/fesm2015/primeng-fileupload.mjs +11 -10
  173. package/fesm2015/primeng-fileupload.mjs.map +1 -1
  174. package/fesm2015/primeng-focustrap.mjs +15 -29
  175. package/fesm2015/primeng-focustrap.mjs.map +1 -1
  176. package/fesm2015/primeng-galleria.mjs +20 -19
  177. package/fesm2015/primeng-gmap.mjs +8 -7
  178. package/fesm2015/primeng-image.mjs +8 -7
  179. package/fesm2015/primeng-inplace.mjs +14 -13
  180. package/fesm2015/primeng-inputmask.mjs +30 -15
  181. package/fesm2015/primeng-inputmask.mjs.map +1 -1
  182. package/fesm2015/primeng-inputnumber.mjs +16 -7
  183. package/fesm2015/primeng-inputnumber.mjs.map +1 -1
  184. package/fesm2015/primeng-inputswitch.mjs +8 -7
  185. package/fesm2015/primeng-inputtext.mjs +8 -7
  186. package/fesm2015/primeng-inputtextarea.mjs +8 -7
  187. package/fesm2015/primeng-keyfilter.mjs +8 -7
  188. package/fesm2015/primeng-knob.mjs +8 -7
  189. package/fesm2015/primeng-lightbox.mjs +8 -7
  190. package/fesm2015/primeng-listbox.mjs +8 -7
  191. package/fesm2015/primeng-megamenu.mjs +9 -8
  192. package/fesm2015/primeng-megamenu.mjs.map +1 -1
  193. package/fesm2015/primeng-menu.mjs +12 -11
  194. package/fesm2015/primeng-menu.mjs.map +1 -1
  195. package/fesm2015/primeng-menubar.mjs +60 -18
  196. package/fesm2015/primeng-menubar.mjs.map +1 -1
  197. package/fesm2015/primeng-message.mjs +8 -7
  198. package/fesm2015/primeng-messages.mjs +8 -7
  199. package/fesm2015/primeng-multiselect.mjs +16 -11
  200. package/fesm2015/primeng-multiselect.mjs.map +1 -1
  201. package/fesm2015/primeng-orderlist.mjs +8 -7
  202. package/fesm2015/primeng-organizationchart.mjs +11 -10
  203. package/fesm2015/primeng-overlay.mjs +48 -16
  204. package/fesm2015/primeng-overlay.mjs.map +1 -1
  205. package/fesm2015/primeng-overlaypanel.mjs +8 -7
  206. package/fesm2015/primeng-paginator.mjs +8 -7
  207. package/fesm2015/primeng-panel.mjs +8 -7
  208. package/fesm2015/primeng-panelmenu.mjs +13 -12
  209. package/fesm2015/primeng-panelmenu.mjs.map +1 -1
  210. package/fesm2015/primeng-password.mjs +17 -15
  211. package/fesm2015/primeng-password.mjs.map +1 -1
  212. package/fesm2015/primeng-picklist.mjs +8 -7
  213. package/fesm2015/primeng-progressbar.mjs +16 -13
  214. package/fesm2015/primeng-progressbar.mjs.map +1 -1
  215. package/fesm2015/primeng-progressspinner.mjs +8 -7
  216. package/fesm2015/primeng-radiobutton.mjs +11 -10
  217. package/fesm2015/primeng-rating.mjs +8 -7
  218. package/fesm2015/primeng-ripple.mjs +8 -7
  219. package/fesm2015/primeng-scroller.mjs +26 -12
  220. package/fesm2015/primeng-scroller.mjs.map +1 -1
  221. package/fesm2015/primeng-scrollpanel.mjs +8 -7
  222. package/fesm2015/primeng-scrolltop.mjs +8 -7
  223. package/fesm2015/primeng-selectbutton.mjs +8 -7
  224. package/fesm2015/primeng-sidebar.mjs +8 -7
  225. package/fesm2015/primeng-skeleton.mjs +8 -7
  226. package/fesm2015/primeng-slidemenu.mjs +12 -11
  227. package/fesm2015/primeng-slidemenu.mjs.map +1 -1
  228. package/fesm2015/primeng-slider.mjs +8 -7
  229. package/fesm2015/primeng-speeddial.mjs +17 -16
  230. package/fesm2015/primeng-speeddial.mjs.map +1 -1
  231. package/fesm2015/primeng-spinner.mjs +8 -7
  232. package/fesm2015/primeng-splitbutton.mjs +8 -7
  233. package/fesm2015/primeng-splitter.mjs +8 -7
  234. package/fesm2015/primeng-steps.mjs +9 -8
  235. package/fesm2015/primeng-steps.mjs.map +1 -1
  236. package/fesm2015/primeng-styleclass.mjs +71 -37
  237. package/fesm2015/primeng-styleclass.mjs.map +1 -1
  238. package/fesm2015/primeng-table.mjs +136 -89
  239. package/fesm2015/primeng-table.mjs.map +1 -1
  240. package/fesm2015/primeng-tabmenu.mjs +21 -15
  241. package/fesm2015/primeng-tabmenu.mjs.map +1 -1
  242. package/fesm2015/primeng-tabview.mjs +12 -11
  243. package/fesm2015/primeng-tabview.mjs.map +1 -1
  244. package/fesm2015/primeng-tag.mjs +8 -7
  245. package/fesm2015/primeng-terminal.mjs +11 -10
  246. package/fesm2015/primeng-tieredmenu.mjs +12 -11
  247. package/fesm2015/primeng-tieredmenu.mjs.map +1 -1
  248. package/fesm2015/primeng-timeline.mjs +8 -7
  249. package/fesm2015/primeng-toast.mjs +11 -10
  250. package/fesm2015/primeng-togglebutton.mjs +8 -7
  251. package/fesm2015/primeng-toolbar.mjs +29 -19
  252. package/fesm2015/primeng-toolbar.mjs.map +1 -1
  253. package/fesm2015/primeng-tooltip.mjs +53 -15
  254. package/fesm2015/primeng-tooltip.mjs.map +1 -1
  255. package/fesm2015/primeng-tree.mjs +37 -17
  256. package/fesm2015/primeng-tree.mjs.map +1 -1
  257. package/fesm2015/primeng-treeselect.mjs +8 -7
  258. package/fesm2015/primeng-treetable.mjs +56 -55
  259. package/fesm2015/primeng-treetable.mjs.map +1 -1
  260. package/fesm2015/primeng-tristatecheckbox.mjs +8 -7
  261. package/fesm2015/primeng-utils.mjs +1 -0
  262. package/fesm2015/primeng-virtualscroller.mjs +8 -7
  263. package/fesm2015/primeng.mjs +1 -0
  264. package/fesm2020/primeng-accordion.mjs +70 -24
  265. package/fesm2020/primeng-accordion.mjs.map +1 -1
  266. package/fesm2020/primeng-animate.mjs +8 -7
  267. package/fesm2020/primeng-api.mjs +35 -34
  268. package/fesm2020/primeng-autocomplete.mjs +206 -311
  269. package/fesm2020/primeng-autocomplete.mjs.map +1 -1
  270. package/fesm2020/primeng-autofocus.mjs +8 -7
  271. package/fesm2020/primeng-avatar.mjs +8 -7
  272. package/fesm2020/primeng-avatargroup.mjs +8 -7
  273. package/fesm2020/primeng-badge.mjs +43 -10
  274. package/fesm2020/primeng-badge.mjs.map +1 -1
  275. package/fesm2020/primeng-blockui.mjs +8 -7
  276. package/fesm2020/primeng-breadcrumb.mjs +9 -8
  277. package/fesm2020/primeng-breadcrumb.mjs.map +1 -1
  278. package/fesm2020/primeng-button.mjs +40 -26
  279. package/fesm2020/primeng-button.mjs.map +1 -1
  280. package/fesm2020/primeng-calendar.mjs +14 -8
  281. package/fesm2020/primeng-calendar.mjs.map +1 -1
  282. package/fesm2020/primeng-captcha.mjs +8 -7
  283. package/fesm2020/primeng-card.mjs +8 -7
  284. package/fesm2020/primeng-carousel.mjs +8 -7
  285. package/fesm2020/primeng-cascadeselect.mjs +11 -10
  286. package/fesm2020/primeng-chart.mjs +8 -7
  287. package/fesm2020/primeng-checkbox.mjs +8 -7
  288. package/fesm2020/primeng-chip.mjs +8 -7
  289. package/fesm2020/primeng-chips.mjs +12 -11
  290. package/fesm2020/primeng-chips.mjs.map +1 -1
  291. package/fesm2020/primeng-codehighlighter.mjs +8 -7
  292. package/fesm2020/primeng-colorpicker.mjs +8 -7
  293. package/fesm2020/primeng-confirmdialog.mjs +8 -7
  294. package/fesm2020/primeng-confirmpopup.mjs +8 -7
  295. package/fesm2020/primeng-contextmenu.mjs +12 -11
  296. package/fesm2020/primeng-contextmenu.mjs.map +1 -1
  297. package/fesm2020/primeng-dataview.mjs +16 -12
  298. package/fesm2020/primeng-dataview.mjs.map +1 -1
  299. package/fesm2020/primeng-defer.mjs +8 -7
  300. package/fesm2020/primeng-dialog.mjs +9 -7
  301. package/fesm2020/primeng-dialog.mjs.map +1 -1
  302. package/fesm2020/primeng-divider.mjs +8 -7
  303. package/fesm2020/primeng-dock.mjs +9 -8
  304. package/fesm2020/primeng-dock.mjs.map +1 -1
  305. package/fesm2020/primeng-dom.mjs +21 -1
  306. package/fesm2020/primeng-dom.mjs.map +1 -1
  307. package/fesm2020/primeng-dragdrop.mjs +11 -10
  308. package/fesm2020/primeng-dropdown.mjs +20 -16
  309. package/fesm2020/primeng-dropdown.mjs.map +1 -1
  310. package/fesm2020/primeng-dynamicdialog.mjs +47 -31
  311. package/fesm2020/primeng-dynamicdialog.mjs.map +1 -1
  312. package/fesm2020/primeng-editor.mjs +8 -7
  313. package/fesm2020/primeng-fieldset.mjs +8 -7
  314. package/fesm2020/primeng-fileupload.mjs +11 -10
  315. package/fesm2020/primeng-fileupload.mjs.map +1 -1
  316. package/fesm2020/primeng-focustrap.mjs +14 -29
  317. package/fesm2020/primeng-focustrap.mjs.map +1 -1
  318. package/fesm2020/primeng-galleria.mjs +20 -19
  319. package/fesm2020/primeng-gmap.mjs +8 -7
  320. package/fesm2020/primeng-image.mjs +8 -7
  321. package/fesm2020/primeng-inplace.mjs +14 -13
  322. package/fesm2020/primeng-inputmask.mjs +30 -15
  323. package/fesm2020/primeng-inputmask.mjs.map +1 -1
  324. package/fesm2020/primeng-inputnumber.mjs +16 -7
  325. package/fesm2020/primeng-inputnumber.mjs.map +1 -1
  326. package/fesm2020/primeng-inputswitch.mjs +8 -7
  327. package/fesm2020/primeng-inputtext.mjs +8 -7
  328. package/fesm2020/primeng-inputtextarea.mjs +8 -7
  329. package/fesm2020/primeng-keyfilter.mjs +8 -7
  330. package/fesm2020/primeng-knob.mjs +8 -7
  331. package/fesm2020/primeng-lightbox.mjs +8 -7
  332. package/fesm2020/primeng-listbox.mjs +8 -7
  333. package/fesm2020/primeng-megamenu.mjs +9 -8
  334. package/fesm2020/primeng-megamenu.mjs.map +1 -1
  335. package/fesm2020/primeng-menu.mjs +12 -11
  336. package/fesm2020/primeng-menu.mjs.map +1 -1
  337. package/fesm2020/primeng-menubar.mjs +60 -18
  338. package/fesm2020/primeng-menubar.mjs.map +1 -1
  339. package/fesm2020/primeng-message.mjs +8 -7
  340. package/fesm2020/primeng-messages.mjs +8 -7
  341. package/fesm2020/primeng-multiselect.mjs +16 -11
  342. package/fesm2020/primeng-multiselect.mjs.map +1 -1
  343. package/fesm2020/primeng-orderlist.mjs +8 -7
  344. package/fesm2020/primeng-organizationchart.mjs +11 -10
  345. package/fesm2020/primeng-overlay.mjs +48 -16
  346. package/fesm2020/primeng-overlay.mjs.map +1 -1
  347. package/fesm2020/primeng-overlaypanel.mjs +8 -7
  348. package/fesm2020/primeng-paginator.mjs +8 -7
  349. package/fesm2020/primeng-panel.mjs +8 -7
  350. package/fesm2020/primeng-panelmenu.mjs +13 -12
  351. package/fesm2020/primeng-panelmenu.mjs.map +1 -1
  352. package/fesm2020/primeng-password.mjs +17 -15
  353. package/fesm2020/primeng-password.mjs.map +1 -1
  354. package/fesm2020/primeng-picklist.mjs +8 -7
  355. package/fesm2020/primeng-progressbar.mjs +16 -13
  356. package/fesm2020/primeng-progressbar.mjs.map +1 -1
  357. package/fesm2020/primeng-progressspinner.mjs +8 -7
  358. package/fesm2020/primeng-radiobutton.mjs +11 -10
  359. package/fesm2020/primeng-rating.mjs +8 -7
  360. package/fesm2020/primeng-ripple.mjs +8 -7
  361. package/fesm2020/primeng-scroller.mjs +26 -12
  362. package/fesm2020/primeng-scroller.mjs.map +1 -1
  363. package/fesm2020/primeng-scrollpanel.mjs +8 -7
  364. package/fesm2020/primeng-scrolltop.mjs +8 -7
  365. package/fesm2020/primeng-selectbutton.mjs +8 -7
  366. package/fesm2020/primeng-sidebar.mjs +8 -7
  367. package/fesm2020/primeng-skeleton.mjs +8 -7
  368. package/fesm2020/primeng-slidemenu.mjs +12 -11
  369. package/fesm2020/primeng-slidemenu.mjs.map +1 -1
  370. package/fesm2020/primeng-slider.mjs +8 -7
  371. package/fesm2020/primeng-speeddial.mjs +17 -16
  372. package/fesm2020/primeng-speeddial.mjs.map +1 -1
  373. package/fesm2020/primeng-spinner.mjs +8 -7
  374. package/fesm2020/primeng-splitbutton.mjs +8 -7
  375. package/fesm2020/primeng-splitter.mjs +8 -7
  376. package/fesm2020/primeng-steps.mjs +9 -8
  377. package/fesm2020/primeng-steps.mjs.map +1 -1
  378. package/fesm2020/primeng-styleclass.mjs +71 -37
  379. package/fesm2020/primeng-styleclass.mjs.map +1 -1
  380. package/fesm2020/primeng-table.mjs +136 -89
  381. package/fesm2020/primeng-table.mjs.map +1 -1
  382. package/fesm2020/primeng-tabmenu.mjs +20 -15
  383. package/fesm2020/primeng-tabmenu.mjs.map +1 -1
  384. package/fesm2020/primeng-tabview.mjs +12 -11
  385. package/fesm2020/primeng-tabview.mjs.map +1 -1
  386. package/fesm2020/primeng-tag.mjs +8 -7
  387. package/fesm2020/primeng-terminal.mjs +11 -10
  388. package/fesm2020/primeng-tieredmenu.mjs +12 -11
  389. package/fesm2020/primeng-tieredmenu.mjs.map +1 -1
  390. package/fesm2020/primeng-timeline.mjs +8 -7
  391. package/fesm2020/primeng-toast.mjs +11 -10
  392. package/fesm2020/primeng-togglebutton.mjs +8 -7
  393. package/fesm2020/primeng-toolbar.mjs +29 -19
  394. package/fesm2020/primeng-toolbar.mjs.map +1 -1
  395. package/fesm2020/primeng-tooltip.mjs +52 -15
  396. package/fesm2020/primeng-tooltip.mjs.map +1 -1
  397. package/fesm2020/primeng-tree.mjs +36 -17
  398. package/fesm2020/primeng-tree.mjs.map +1 -1
  399. package/fesm2020/primeng-treeselect.mjs +8 -7
  400. package/fesm2020/primeng-treetable.mjs +56 -55
  401. package/fesm2020/primeng-treetable.mjs.map +1 -1
  402. package/fesm2020/primeng-tristatecheckbox.mjs +8 -7
  403. package/fesm2020/primeng-utils.mjs +1 -0
  404. package/fesm2020/primeng-virtualscroller.mjs +8 -7
  405. package/fesm2020/primeng.mjs +1 -0
  406. package/inputmask/inputmask.d.ts +2 -1
  407. package/menubar/menubar.d.ts +24 -6
  408. package/multiselect/multiselect.d.ts +6 -1
  409. package/overlay/overlay.d.ts +9 -34
  410. package/package.json +4 -4
  411. package/progressbar/progressbar.d.ts +2 -1
  412. package/resources/components/accordion/accordion.css +9 -0
  413. package/resources/components/autocomplete/autocomplete.css +0 -7
  414. package/resources/components/password/password.css +5 -0
  415. package/resources/components/tabmenu/tabmenu.css +4 -0
  416. package/resources/components/toolbar/toolbar.css +7 -2
  417. package/resources/primeng.css +5 -0
  418. package/resources/primeng.min.css +1 -1
  419. package/resources/themes/arya-blue/theme.css +14 -0
  420. package/resources/themes/arya-green/theme.css +14 -0
  421. package/resources/themes/arya-orange/theme.css +14 -0
  422. package/resources/themes/arya-purple/theme.css +14 -0
  423. package/resources/themes/bootstrap4-dark-blue/theme.css +14 -0
  424. package/resources/themes/bootstrap4-dark-purple/theme.css +14 -0
  425. package/resources/themes/bootstrap4-light-blue/theme.css +14 -0
  426. package/resources/themes/bootstrap4-light-purple/theme.css +14 -0
  427. package/resources/themes/fluent-light/theme.css +14 -0
  428. package/resources/themes/lara-dark-blue/theme.css +14 -0
  429. package/resources/themes/lara-dark-indigo/theme.css +14 -0
  430. package/resources/themes/lara-dark-purple/theme.css +14 -0
  431. package/resources/themes/lara-dark-teal/theme.css +14 -0
  432. package/resources/themes/lara-light-blue/theme.css +14 -0
  433. package/resources/themes/lara-light-indigo/theme.css +14 -0
  434. package/resources/themes/lara-light-purple/theme.css +14 -0
  435. package/resources/themes/lara-light-teal/theme.css +14 -0
  436. package/resources/themes/luna-amber/theme.css +14 -0
  437. package/resources/themes/luna-blue/theme.css +14 -0
  438. package/resources/themes/luna-green/theme.css +14 -0
  439. package/resources/themes/luna-pink/theme.css +14 -0
  440. package/resources/themes/md-dark-deeppurple/theme.css +14 -0
  441. package/resources/themes/md-dark-indigo/theme.css +14 -0
  442. package/resources/themes/md-light-deeppurple/theme.css +14 -0
  443. package/resources/themes/md-light-indigo/theme.css +14 -0
  444. package/resources/themes/mdc-dark-deeppurple/theme.css +14 -0
  445. package/resources/themes/mdc-dark-indigo/theme.css +14 -0
  446. package/resources/themes/mdc-light-deeppurple/theme.css +14 -0
  447. package/resources/themes/mdc-light-indigo/theme.css +14 -0
  448. package/resources/themes/nova/theme.css +14 -0
  449. package/resources/themes/nova-accent/theme.css +14 -0
  450. package/resources/themes/nova-alt/theme.css +14 -0
  451. package/resources/themes/rhea/theme.css +14 -0
  452. package/resources/themes/saga-blue/theme.css +14 -0
  453. package/resources/themes/saga-green/theme.css +14 -0
  454. package/resources/themes/saga-orange/theme.css +14 -0
  455. package/resources/themes/saga-purple/theme.css +14 -0
  456. package/resources/themes/tailwind-light/theme.css +14 -0
  457. package/resources/themes/vela-blue/theme.css +14 -0
  458. package/resources/themes/vela-green/theme.css +14 -0
  459. package/resources/themes/vela-orange/theme.css +14 -0
  460. package/resources/themes/vela-purple/theme.css +14 -0
  461. package/scroller/scroller.d.ts +2 -0
  462. package/styleclass/styleclass.d.ts +14 -8
  463. package/table/table.d.ts +2 -3
  464. package/tabmenu/tabmenu.d.ts +2 -2
  465. package/toolbar/toolbar.d.ts +4 -3
  466. package/tooltip/tooltip.d.ts +13 -5
  467. package/tree/tree.d.ts +8 -7
  468. package/treetable/treetable.d.ts +1 -1
@@ -1,28 +1,30 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { NgModule, Directive, Input } from '@angular/core';
2
+ import { Directive, HostListener, Input, NgModule } from '@angular/core';
3
3
  import { DomHandler } from 'primeng/dom';
4
4
  import * as i0 from "@angular/core";
5
5
  export class StyleClass {
6
- constructor(el, renderer) {
6
+ constructor(el, renderer, zone) {
7
7
  this.el = el;
8
8
  this.renderer = renderer;
9
+ this.zone = zone;
9
10
  }
10
- ngAfterViewInit() {
11
- this.eventListener = this.renderer.listen(this.el.nativeElement, 'click', () => {
12
- this.target = this.resolveTarget();
13
- if (this.toggleClass) {
14
- if (DomHandler.hasClass(this.target, this.toggleClass))
15
- DomHandler.removeClass(this.target, this.toggleClass);
16
- else
17
- DomHandler.addClass(this.target, this.toggleClass);
18
- }
19
- else {
20
- if (this.target.offsetParent === null)
21
- this.enter();
22
- else
23
- this.leave();
24
- }
25
- });
11
+ clickListener() {
12
+ this.target = this.resolveTarget();
13
+ if (this.toggleClass) {
14
+ this.toggle();
15
+ }
16
+ else {
17
+ if (this.target.offsetParent === null)
18
+ this.enter();
19
+ else
20
+ this.leave();
21
+ }
22
+ }
23
+ toggle() {
24
+ if (DomHandler.hasClass(this.target, this.toggleClass))
25
+ DomHandler.removeClass(this.target, this.toggleClass);
26
+ else
27
+ DomHandler.addClass(this.target, this.toggleClass);
26
28
  }
27
29
  enter() {
28
30
  if (this.enterActiveClass) {
@@ -61,7 +63,10 @@ export class StyleClass {
61
63
  }
62
64
  }
63
65
  if (this.hideOnOutsideClick) {
64
- this.bindDocumentListener();
66
+ this.bindDocumentClickListener();
67
+ }
68
+ if (this.hideOnEscape) {
69
+ this.bindDocumentKeydownListener();
65
70
  }
66
71
  }
67
72
  leave() {
@@ -91,7 +96,10 @@ export class StyleClass {
91
96
  }
92
97
  }
93
98
  if (this.hideOnOutsideClick) {
94
- this.unbindDocumentListener();
99
+ this.unbindDocumentClickListener();
100
+ }
101
+ if (this.hideOnEscape) {
102
+ this.unbindDocumentKeydownListener();
95
103
  }
96
104
  }
97
105
  resolveTarget() {
@@ -111,26 +119,45 @@ export class StyleClass {
111
119
  return document.querySelector(this.selector);
112
120
  }
113
121
  }
114
- bindDocumentListener() {
115
- if (!this.documentListener) {
116
- this.documentListener = this.renderer.listen(this.el.nativeElement.ownerDocument, 'click', (event) => {
122
+ bindDocumentClickListener() {
123
+ if (!this.documentClickListener) {
124
+ this.documentClickListener = this.renderer.listen(this.el.nativeElement.ownerDocument, 'click', (event) => {
117
125
  if (!this.isVisible() || getComputedStyle(this.target).getPropertyValue('position') === 'static')
118
- this.unbindDocumentListener();
126
+ this.unbindDocumentClickListener();
119
127
  else if (this.isOutsideClick(event))
120
128
  this.leave();
121
129
  });
122
130
  }
123
131
  }
132
+ bindDocumentKeydownListener() {
133
+ if (!this.documentKeydownListener) {
134
+ this.zone.runOutsideAngular(() => {
135
+ this.documentKeydownListener = this.renderer.listen(this.el.nativeElement.ownerDocument, 'keydown', (event) => {
136
+ const { key, keyCode, which, type } = event;
137
+ if (!this.isVisible() || getComputedStyle(this.target).getPropertyValue('position') === 'static')
138
+ this.unbindDocumentKeydownListener();
139
+ if (this.isVisible() && key === 'Escape' && keyCode === 27 && which === 27)
140
+ this.leave();
141
+ });
142
+ });
143
+ }
144
+ }
124
145
  isVisible() {
125
146
  return this.target.offsetParent !== null;
126
147
  }
127
148
  isOutsideClick(event) {
128
149
  return !this.el.nativeElement.isSameNode(event.target) && !this.el.nativeElement.contains(event.target) && !this.target.contains(event.target);
129
150
  }
130
- unbindDocumentListener() {
131
- if (this.documentListener) {
132
- this.documentListener();
133
- this.documentListener = null;
151
+ unbindDocumentClickListener() {
152
+ if (this.documentClickListener) {
153
+ this.documentClickListener();
154
+ this.documentClickListener = null;
155
+ }
156
+ }
157
+ unbindDocumentKeydownListener() {
158
+ if (this.documentKeydownListener) {
159
+ this.documentKeydownListener();
160
+ this.documentKeydownListener = null;
134
161
  }
135
162
  }
136
163
  ngOnDestroy() {
@@ -138,12 +165,13 @@ export class StyleClass {
138
165
  if (this.eventListener) {
139
166
  this.eventListener();
140
167
  }
141
- this.unbindDocumentListener();
168
+ this.unbindDocumentClickListener();
169
+ this.unbindDocumentKeydownListener();
142
170
  }
143
171
  }
144
- StyleClass.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: StyleClass, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
145
- StyleClass.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.3", type: StyleClass, selector: "[pStyleClass]", inputs: { selector: ["pStyleClass", "selector"], enterClass: "enterClass", enterActiveClass: "enterActiveClass", enterToClass: "enterToClass", leaveClass: "leaveClass", leaveActiveClass: "leaveActiveClass", leaveToClass: "leaveToClass", hideOnOutsideClick: "hideOnOutsideClick", toggleClass: "toggleClass" }, host: { classAttribute: "p-element" }, ngImport: i0 });
146
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: StyleClass, decorators: [{
172
+ StyleClass.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: StyleClass, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
173
+ StyleClass.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.0", type: StyleClass, selector: "[pStyleClass]", inputs: { selector: ["pStyleClass", "selector"], enterClass: "enterClass", enterActiveClass: "enterActiveClass", enterToClass: "enterToClass", leaveClass: "leaveClass", leaveActiveClass: "leaveActiveClass", leaveToClass: "leaveToClass", hideOnOutsideClick: "hideOnOutsideClick", toggleClass: "toggleClass", hideOnEscape: "hideOnEscape" }, host: { listeners: { "click": "clickListener($event)" }, classAttribute: "p-element" }, ngImport: i0 });
174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: StyleClass, decorators: [{
147
175
  type: Directive,
148
176
  args: [{
149
177
  selector: '[pStyleClass]',
@@ -151,7 +179,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImpor
151
179
  class: 'p-element'
152
180
  }
153
181
  }]
154
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { selector: [{
182
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { selector: [{
155
183
  type: Input,
156
184
  args: ['pStyleClass']
157
185
  }], enterClass: [{
@@ -170,13 +198,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImpor
170
198
  type: Input
171
199
  }], toggleClass: [{
172
200
  type: Input
201
+ }], hideOnEscape: [{
202
+ type: Input
203
+ }], clickListener: [{
204
+ type: HostListener,
205
+ args: ['click', ['$event']]
173
206
  }] } });
174
207
  export class StyleClassModule {
175
208
  }
176
- StyleClassModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: StyleClassModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
177
- StyleClassModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.3", ngImport: i0, type: StyleClassModule, declarations: [StyleClass], imports: [CommonModule], exports: [StyleClass] });
178
- StyleClassModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: StyleClassModule, imports: [CommonModule] });
179
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: StyleClassModule, decorators: [{
209
+ StyleClassModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: StyleClassModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
210
+ StyleClassModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.0", ngImport: i0, type: StyleClassModule, declarations: [StyleClass], imports: [CommonModule], exports: [StyleClass] });
211
+ StyleClassModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: StyleClassModule, imports: [CommonModule] });
212
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: StyleClassModule, decorators: [{
180
213
  type: NgModule,
181
214
  args: [{
182
215
  imports: [CommonModule],
@@ -184,4 +217,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImpor
184
217
  declarations: [StyleClass]
185
218
  }]
186
219
  }] });
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVjbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zdHlsZWNsYXNzL3N0eWxlY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFRekMsTUFBTSxPQUFPLFVBQVU7SUFDbkIsWUFBbUIsRUFBYyxFQUFTLFFBQW1CO1FBQTFDLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFXO0lBQUcsQ0FBQztJQWdDakUsZUFBZTtRQUNYLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUMzRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUVuQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2xCLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUM7b0JBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzs7b0JBQ3pHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDM0Q7aUJBQU07Z0JBQ0gsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksS0FBSyxJQUFJO29CQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FB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Z0I7a0JBTDVCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUM7b0JBQ3JCLFlBQVksRUFBRSxDQUFDLFVBQVUsQ0FBQztpQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIFJlbmRlcmVyMiwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21IYW5kbGVyIH0gZnJvbSAncHJpbWVuZy9kb20nO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1twU3R5bGVDbGFzc10nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBTdHlsZUNsYXNzIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxuXG4gICAgQElucHV0KCdwU3R5bGVDbGFzcycpIHNlbGVjdG9yOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBlbnRlckNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBlbnRlckFjdGl2ZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBlbnRlclRvQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGxlYXZlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGxlYXZlQWN0aXZlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGxlYXZlVG9DbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgaGlkZU9uT3V0c2lkZUNsaWNrOiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgdG9nZ2xlQ2xhc3M6IHN0cmluZztcblxuICAgIGV2ZW50TGlzdGVuZXI6IEZ1bmN0aW9uO1xuXG4gICAgZG9jdW1lbnRMaXN0ZW5lcjogRnVuY3Rpb247XG5cbiAgICB0YXJnZXQ6IEhUTUxFbGVtZW50O1xuXG4gICAgZW50ZXJMaXN0ZW5lcjogRnVuY3Rpb247XG5cbiAgICBsZWF2ZUxpc3RlbmVyOiBGdW5jdGlvbjtcblxuICAgIGFuaW1hdGluZzogYm9vbGVhbjtcblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5ldmVudExpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldCA9IHRoaXMucmVzb2x2ZVRhcmdldCgpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy50b2dnbGVDbGFzcykge1xuICAgICAgICAgICAgICAgIGlmIChEb21IYW5kbGVyLmhhc0NsYXNzKHRoaXMudGFyZ2V0LCB0aGlzLnRvZ2dsZUNsYXNzKSkgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyh0aGlzLnRhcmdldCwgdGhpcy50b2dnbGVDbGFzcyk7XG4gICAgICAgICAgICAgICAgZWxzZSBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMudGFyZ2V0LCB0aGlzLnRvZ2dsZUNsYXNzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGFyZ2V0Lm9mZnNldFBhcmVudCA9PT0gbnVsbCkgdGhpcy5lbnRlcigpO1xuICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5sZWF2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBlbnRlcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZW50ZXJBY3RpdmVDbGFzcykge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmFuaW1hdGluZykge1xuICAgICAgICAgICAgICAgIHRoaXMuYW5pbWF0aW5nID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmVudGVyQWN0aXZlQ2xhc3MgPT09ICdzbGlkZWRvd24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LnN0eWxlLmhlaWdodCA9ICcwcHgnO1xuICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKHRoaXMudGFyZ2V0LCAnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LnN0eWxlLm1heEhlaWdodCA9IHRoaXMudGFyZ2V0LnNjcm9sbEhlaWdodCArICdweCc7XG4gICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3ModGhpcy50YXJnZXQsICdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXQuc3R5bGUuaGVpZ2h0ID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLnRhcmdldCwgdGhpcy5lbnRlckFjdGl2ZUNsYXNzKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5lbnRlckNsYXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMuZW50ZXJDbGFzcyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5lbnRlckxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy50YXJnZXQsICdhbmltYXRpb25lbmQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMuZW50ZXJBY3RpdmVDbGFzcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVudGVyVG9DbGFzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLnRhcmdldCwgdGhpcy5lbnRlclRvQ2xhc3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW50ZXJMaXN0ZW5lcigpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVudGVyQWN0aXZlQ2xhc3MgPT09ICdzbGlkZWRvd24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldC5zdHlsZS5tYXhIZWlnaHQgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuZW50ZXJDbGFzcykge1xuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMuZW50ZXJDbGFzcyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmVudGVyVG9DbGFzcykge1xuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMuZW50ZXJUb0NsYXNzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhpZGVPbk91dHNpZGVDbGljaykge1xuICAgICAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRMaXN0ZW5lcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbGVhdmUoKSB7XG4gICAgICAgIGlmICh0aGlzLmxlYXZlQWN0aXZlQ2xhc3MpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5hbmltYXRpbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLnRhcmdldCwgdGhpcy5sZWF2ZUFjdGl2ZUNsYXNzKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sZWF2ZUNsYXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMubGVhdmVDbGFzcyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5sZWF2ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy50YXJnZXQsICdhbmltYXRpb25lbmQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMubGVhdmVBY3RpdmVDbGFzcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxlYXZlVG9DbGFzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLnRhcmdldCwgdGhpcy5sZWF2ZVRvQ2xhc3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGVhdmVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMubGVhdmVDbGFzcykge1xuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMubGVhdmVDbGFzcyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmxlYXZlVG9DbGFzcykge1xuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMubGVhdmVUb0NsYXNzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhpZGVPbk91dHNpZGVDbGljaykge1xuICAgICAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNvbHZlVGFyZ2V0KCkge1xuICAgICAgICBpZiAodGhpcy50YXJnZXQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRhcmdldDtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodGhpcy5zZWxlY3Rvcikge1xuICAgICAgICAgICAgY2FzZSAnQG5leHQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nO1xuXG4gICAgICAgICAgICBjYXNlICdAcHJldic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuXG4gICAgICAgICAgICBjYXNlICdAcGFyZW50JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGNhc2UgJ0BncmFuZHBhcmVudCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5zZWxlY3Rvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kRG9jdW1lbnRMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50TGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuZWwubmF0aXZlRWxlbWVudC5vd25lckRvY3VtZW50LCAnY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNWaXNpYmxlKCkgfHwgZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnRhcmdldCkuZ2V0UHJvcGVydHlWYWx1ZSgncG9zaXRpb24nKSA9PT0gJ3N0YXRpYycpIHRoaXMudW5iaW5kRG9jdW1lbnRMaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuaXNPdXRzaWRlQ2xpY2soZXZlbnQpKSB0aGlzLmxlYXZlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzVmlzaWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFyZ2V0Lm9mZnNldFBhcmVudCAhPT0gbnVsbDtcbiAgICB9XG5cbiAgICBpc091dHNpZGVDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICByZXR1cm4gIXRoaXMuZWwubmF0aXZlRWxlbWVudC5pc1NhbWVOb2RlKGV2ZW50LnRhcmdldCkgJiYgIXRoaXMuZWwubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmICF0aGlzLnRhcmdldC5jb250YWlucyg8SFRNTEVsZW1lbnQ+ZXZlbnQudGFyZ2V0KTtcbiAgICB9XG5cbiAgICB1bmJpbmREb2N1bWVudExpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudExpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50TGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy50YXJnZXQgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5ldmVudExpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmV2ZW50TGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVuYmluZERvY3VtZW50TGlzdGVuZXIoKTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgZXhwb3J0czogW1N0eWxlQ2xhc3NdLFxuICAgIGRlY2xhcmF0aW9uczogW1N0eWxlQ2xhc3NdXG59KVxuZXhwb3J0IGNsYXNzIFN0eWxlQ2xhc3NNb2R1bGUge31cbiJdfQ==
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVjbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zdHlsZWNsYXNzL3N0eWxlY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQWdDLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBUXpDLE1BQU0sT0FBTyxVQUFVO0lBQ25CLFlBQW1CLEVBQWMsRUFBUyxRQUFtQixFQUFVLElBQVk7UUFBaEUsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFTLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFRO0lBQUcsQ0FBQztJQXFDdkYsYUFBYTtRQUNULElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRW5DLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDakI7YUFBTTtZQUNILElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEtBQUssSUFBSTtnQkFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7O2dCQUMvQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDckI7SUFDTCxDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUM7WUFBRSxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDOztZQUN6RyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUs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aUJBOU5oQixVQUFVLGFBME5ULFlBQVksYUExTmIsVUFBVTs4R0E4TlYsZ0JBQWdCLFlBSmYsWUFBWTsyRkFJYixnQkFBZ0I7a0JBTDVCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUM7b0JBQ3JCLFlBQVksRUFBRSxDQUFDLFVBQVUsQ0FBQztpQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBOZ01vZHVsZSwgTmdab25lLCBPbkRlc3Ryb3ksIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tSGFuZGxlciB9IGZyb20gJ3ByaW1lbmcvZG9tJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcFN0eWxlQ2xhc3NdJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAncC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgU3R5bGVDbGFzcyBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSB6b25lOiBOZ1pvbmUpIHt9XG5cbiAgICBASW5wdXQoJ3BTdHlsZUNsYXNzJykgc2VsZWN0b3I6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGVudGVyQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGVudGVyQWN0aXZlQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGVudGVyVG9DbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbGVhdmVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbGVhdmVBY3RpdmVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgbGVhdmVUb0NsYXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBoaWRlT25PdXRzaWRlQ2xpY2s6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSB0b2dnbGVDbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgaGlkZU9uRXNjYXBlOiBib29sZWFuO1xuXG4gICAgZXZlbnRMaXN0ZW5lcjogRnVuY3Rpb247XG5cbiAgICBkb2N1bWVudENsaWNrTGlzdGVuZXI6IEZ1bmN0aW9uO1xuXG4gICAgZG9jdW1lbnRLZXlkb3duTGlzdGVuZXI6IEZ1bmN0aW9uO1xuXG4gICAgdGFyZ2V0OiBIVE1MRWxlbWVudDtcblxuICAgIGVudGVyTGlzdGVuZXI6IEZ1bmN0aW9uO1xuXG4gICAgbGVhdmVMaXN0ZW5lcjogRnVuY3Rpb247XG5cbiAgICBhbmltYXRpbmc6IGJvb2xlYW47XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgY2xpY2tMaXN0ZW5lcigpIHtcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0aGlzLnJlc29sdmVUYXJnZXQoKTtcblxuICAgICAgICBpZiAodGhpcy50b2dnbGVDbGFzcykge1xuICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRhcmdldC5vZmZzZXRQYXJlbnQgPT09IG51bGwpIHRoaXMuZW50ZXIoKTtcbiAgICAgICAgICAgIGVsc2UgdGhpcy5sZWF2ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlKCkge1xuICAgICAgICBpZiAoRG9tSGFuZGxlci5oYXNDbGFzcyh0aGlzLnRhcmdldCwgdGhpcy50b2dnbGVDbGFzcykpIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMudG9nZ2xlQ2xhc3MpO1xuICAgICAgICBlbHNlIERvbUhhbmRsZXIuYWRkQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMudG9nZ2xlQ2xhc3MpO1xuICAgIH1cblxuICAgIGVudGVyKCkge1xuICAgICAgICBpZiAodGhpcy5lbnRlckFjdGl2ZUNsYXNzKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYW5pbWF0aW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hbmltYXRpbmcgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZW50ZXJBY3RpdmVDbGFzcyA9PT0gJ3NsaWRlZG93bicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXQuc3R5bGUuaGVpZ2h0ID0gJzBweCc7XG4gICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy50YXJnZXQsICdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXQuc3R5bGUubWF4SGVpZ2h0ID0gdGhpcy50YXJnZXQuc2Nyb2xsSGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLnRhcmdldCwgJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldC5zdHlsZS5oZWlnaHQgPSAnJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMudGFyZ2V0LCB0aGlzLmVudGVyQWN0aXZlQ2xhc3MpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmVudGVyQ2xhc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyh0aGlzLnRhcmdldCwgdGhpcy5lbnRlckNsYXNzKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmVudGVyTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLnRhcmdldCwgJ2FuaW1hdGlvbmVuZCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyh0aGlzLnRhcmdldCwgdGhpcy5lbnRlckFjdGl2ZUNsYXNzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZW50ZXJUb0NsYXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMudGFyZ2V0LCB0aGlzLmVudGVyVG9DbGFzcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnRlckxpc3RlbmVyKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZW50ZXJBY3RpdmVDbGFzcyA9PT0gJ3NsaWRlZG93bicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LnN0eWxlLm1heEhlaWdodCA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYW5pbWF0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5lbnRlckNsYXNzKSB7XG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyh0aGlzLnRhcmdldCwgdGhpcy5lbnRlckNsYXNzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuZW50ZXJUb0NsYXNzKSB7XG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLnRhcmdldCwgdGhpcy5lbnRlclRvQ2xhc3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGlkZU9uT3V0c2lkZUNsaWNrKSB7XG4gICAgICAgICAgICB0aGlzLmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhpZGVPbkVzY2FwZSkge1xuICAgICAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRLZXlkb3duTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxlYXZlKCkge1xuICAgICAgICBpZiAodGhpcy5sZWF2ZUFjdGl2ZUNsYXNzKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYW5pbWF0aW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hbmltYXRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMubGVhdmVBY3RpdmVDbGFzcyk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGVhdmVDbGFzcykge1xuICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKHRoaXMudGFyZ2V0LCB0aGlzLmxlYXZlQ2xhc3MpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMubGVhdmVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMudGFyZ2V0LCAnYW5pbWF0aW9uZW5kJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKHRoaXMudGFyZ2V0LCB0aGlzLmxlYXZlQWN0aXZlQ2xhc3MpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sZWF2ZVRvQ2xhc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3ModGhpcy50YXJnZXQsIHRoaXMubGVhdmVUb0NsYXNzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxlYXZlTGlzdGVuZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmltYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxlYXZlQ2xhc3MpIHtcbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKHRoaXMudGFyZ2V0LCB0aGlzLmxlYXZlQ2xhc3MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5sZWF2ZVRvQ2xhc3MpIHtcbiAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMudGFyZ2V0LCB0aGlzLmxlYXZlVG9DbGFzcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oaWRlT25PdXRzaWRlQ2xpY2spIHtcbiAgICAgICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oaWRlT25Fc2NhcGUpIHtcbiAgICAgICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRLZXlkb3duTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc29sdmVUYXJnZXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRhcmdldCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFyZ2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLnNlbGVjdG9yKSB7XG4gICAgICAgICAgICBjYXNlICdAbmV4dCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmc7XG5cbiAgICAgICAgICAgIGNhc2UgJ0BwcmV2JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG5cbiAgICAgICAgICAgIGNhc2UgJ0BwYXJlbnQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudDtcblxuICAgICAgICAgICAgY2FzZSAnQGdyYW5kcGFyZW50JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLnNlbGVjdG9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5lbC5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQsICdjbGljaycsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1Zpc2libGUoKSB8fCBnZXRDb21wdXRlZFN0eWxlKHRoaXMudGFyZ2V0KS5nZXRQcm9wZXJ0eVZhbHVlKCdwb3NpdGlvbicpID09PSAnc3RhdGljJykgdGhpcy51bmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmlzT3V0c2lkZUNsaWNrKGV2ZW50KSkgdGhpcy5sZWF2ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kRG9jdW1lbnRLZXlkb3duTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5kb2N1bWVudEtleWRvd25MaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50S2V5ZG93bkxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5lbC5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQsICdrZXlkb3duJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsga2V5LCBrZXlDb2RlLCB3aGljaCwgdHlwZSB9ID0gZXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1Zpc2libGUoKSB8fCBnZXRDb21wdXRlZFN0eWxlKHRoaXMudGFyZ2V0KS5nZXRQcm9wZXJ0eVZhbHVlKCdwb3NpdGlvbicpID09PSAnc3RhdGljJykgdGhpcy51bmJpbmREb2N1bWVudEtleWRvd25MaXN0ZW5lcigpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1Zpc2libGUoKSAmJiBrZXkgPT09ICdFc2NhcGUnICYmIGtleUNvZGUgPT09IDI3ICYmIHdoaWNoID09PSAyNykgdGhpcy5sZWF2ZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc1Zpc2libGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhcmdldC5vZmZzZXRQYXJlbnQgIT09IG51bGw7XG4gICAgfVxuXG4gICAgaXNPdXRzaWRlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuaXNTYW1lTm9kZShldmVudC50YXJnZXQpICYmICF0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJiAhdGhpcy50YXJnZXQuY29udGFpbnMoPEhUTUxFbGVtZW50PmV2ZW50LnRhcmdldCk7XG4gICAgfVxuXG4gICAgdW5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmREb2N1bWVudEtleWRvd25MaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRLZXlkb3duTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRLZXlkb3duTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRLZXlkb3duTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMuZXZlbnRMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5ldmVudExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudEtleWRvd25MaXN0ZW5lcigpO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbU3R5bGVDbGFzc10sXG4gICAgZGVjbGFyYXRpb25zOiBbU3R5bGVDbGFzc11cbn0pXG5leHBvcnQgY2xhc3MgU3R5bGVDbGFzc01vZHVsZSB7fVxuIl19