@agorapulse/ui-components 15.1.31 → 16.0.0-rc.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 (386) hide show
  1. package/add-comment/add-comment.component.d.ts +3 -3
  2. package/agorapulse-ui-components-16.0.0-rc.0.tgz +0 -0
  3. package/avatar/avatar.component.d.ts +1 -1
  4. package/button/button.component.d.ts +2 -2
  5. package/checkbox/checkbox.component.d.ts +4 -4
  6. package/confirm-modal/confirm-modal.component.d.ts +2 -2
  7. package/datepicker/datepicker.component.d.ts +7 -7
  8. package/directives/base-button.directive.d.ts +2 -2
  9. package/directives/default-image.directive.d.ts +1 -1
  10. package/directives/ellipsis.directive.d.ts +1 -1
  11. package/directives/equal-validator.directive.d.ts +1 -1
  12. package/directives/frozen-gif.directive.d.ts +2 -2
  13. package/directives/multi-style-text.directive.d.ts +2 -2
  14. package/directives/truncate-tooltip.directive.d.ts +1 -1
  15. package/dots-stepper/dots-stepper.component.d.ts +6 -6
  16. package/esm2022/add-comment/add-comment.component.mjs +68 -0
  17. package/esm2022/avatar/avatar.component.mjs +209 -0
  18. package/esm2022/button/button.component.mjs +109 -0
  19. package/esm2022/checkbox/checkbox.component.mjs +169 -0
  20. package/esm2022/confirm-modal/confirm-modal.component.mjs +61 -0
  21. package/esm2022/datepicker/datepicker.component.mjs +271 -0
  22. package/esm2022/directives/autosize-textarea.directive.mjs +45 -0
  23. package/esm2022/directives/base-button.directive.mjs +47 -0
  24. package/esm2022/directives/default-image.directive.mjs +37 -0
  25. package/esm2022/directives/ellipsis.directive.mjs +90 -0
  26. package/esm2022/directives/equal-validator.directive.mjs +73 -0
  27. package/esm2022/directives/frozen-gif.directive.mjs +125 -0
  28. package/esm2022/directives/multi-style-text.directive.mjs +61 -0
  29. package/esm2022/directives/truncate-tooltip.directive.mjs +43 -0
  30. package/esm2022/dots-stepper/dots-stepper.component.mjs +43 -0
  31. package/esm2022/icon-button/icon-button.component.mjs +118 -0
  32. package/esm2022/index.mjs +42 -0
  33. package/esm2022/infobox/infobox.component.mjs +65 -0
  34. package/esm2022/labels/label-list.component.mjs +106 -0
  35. package/esm2022/labels/label.component.mjs +64 -0
  36. package/esm2022/labels-selector/labels-selector.component.mjs +107 -0
  37. package/esm2022/media-display-overlay/media-display-overlay-dialog.component.mjs +94 -0
  38. package/esm2022/modal/modal.component.mjs +119 -0
  39. package/{esm2020 → esm2022}/neo-datepicker/day-detail.model.mjs +1 -1
  40. package/esm2022/neo-datepicker/day-disabled.pipe.mjs +21 -0
  41. package/esm2022/neo-datepicker/neo-datepicker.component.mjs +243 -0
  42. package/esm2022/notification/notification.component.mjs +15 -0
  43. package/esm2022/paginator/paginator-button/paginator-button.component.mjs +51 -0
  44. package/esm2022/paginator/paginator.component.mjs +126 -0
  45. package/esm2022/password-input/password-input.component.mjs +77 -0
  46. package/esm2022/popmenu/options.mjs +17 -0
  47. package/esm2022/popmenu/popmenu-options.interface.mjs +2 -0
  48. package/esm2022/popmenu/popmenu-options.service.mjs +7 -0
  49. package/esm2022/popmenu/popmenu.component.mjs +384 -0
  50. package/esm2022/popmenu/popmenu.directive.mjs +292 -0
  51. package/esm2022/popmenu/popmenu.module.mjs +29 -0
  52. package/esm2022/radio/radio-control.registry.mjs +102 -0
  53. package/esm2022/radio/radio.component.mjs +218 -0
  54. package/esm2022/slide-toggle/slide-toggle.component.mjs +63 -0
  55. package/esm2022/snackbar/snackbar.component.mjs +27 -0
  56. package/esm2022/snackbars-thread/component/snackbars-thread.component.mjs +75 -0
  57. package/esm2022/snackbars-thread/model/snackbars-thread.model.mjs +54 -0
  58. package/{esm2020 → esm2022}/snackbars-thread/public_api.mjs +2 -2
  59. package/esm2022/snackbars-thread/service/snackbars-thread.service.mjs +45 -0
  60. package/esm2022/snackbars-thread/utils/const/snackbars-thread.const.mjs +13 -0
  61. package/esm2022/social-button/social-button.component.mjs +143 -0
  62. package/esm2022/split-button/split-button.component.mjs +126 -0
  63. package/esm2022/src/lib/agorapulse-ui-components.module.mjs +213 -0
  64. package/esm2022/stepper/stepper.component.mjs +38 -0
  65. package/esm2022/text-measurement/text-measurement.service.mjs +29 -0
  66. package/esm2022/toggle/toggle.component.mjs +203 -0
  67. package/esm2022/tooltip/tooltip.directive.mjs +397 -0
  68. package/esm2022/tooltip/tooltip.service.mjs +29 -0
  69. package/fesm2022/agorapulse-ui-components-add-comment.mjs +75 -0
  70. package/fesm2022/agorapulse-ui-components-add-comment.mjs.map +1 -0
  71. package/fesm2022/agorapulse-ui-components-avatar.mjs +216 -0
  72. package/fesm2022/agorapulse-ui-components-avatar.mjs.map +1 -0
  73. package/fesm2022/agorapulse-ui-components-button.mjs +116 -0
  74. package/fesm2022/agorapulse-ui-components-button.mjs.map +1 -0
  75. package/fesm2022/agorapulse-ui-components-checkbox.mjs +176 -0
  76. package/fesm2022/agorapulse-ui-components-checkbox.mjs.map +1 -0
  77. package/fesm2022/agorapulse-ui-components-confirm-modal.mjs +68 -0
  78. package/fesm2022/agorapulse-ui-components-confirm-modal.mjs.map +1 -0
  79. package/fesm2022/agorapulse-ui-components-datepicker.mjs +278 -0
  80. package/fesm2022/agorapulse-ui-components-datepicker.mjs.map +1 -0
  81. package/{fesm2020 → fesm2022}/agorapulse-ui-components-directives.mjs +104 -72
  82. package/fesm2022/agorapulse-ui-components-directives.mjs.map +1 -0
  83. package/fesm2022/agorapulse-ui-components-dots-stepper.mjs +50 -0
  84. package/fesm2022/agorapulse-ui-components-dots-stepper.mjs.map +1 -0
  85. package/fesm2022/agorapulse-ui-components-icon-button.mjs +125 -0
  86. package/fesm2022/agorapulse-ui-components-icon-button.mjs.map +1 -0
  87. package/fesm2022/agorapulse-ui-components-infobox.mjs +69 -0
  88. package/fesm2022/agorapulse-ui-components-infobox.mjs.map +1 -0
  89. package/fesm2022/agorapulse-ui-components-labels-selector.mjs +114 -0
  90. package/fesm2022/agorapulse-ui-components-labels-selector.mjs.map +1 -0
  91. package/fesm2022/agorapulse-ui-components-labels.mjs +173 -0
  92. package/fesm2022/agorapulse-ui-components-labels.mjs.map +1 -0
  93. package/fesm2022/agorapulse-ui-components-media-display-overlay.mjs +101 -0
  94. package/fesm2022/agorapulse-ui-components-media-display-overlay.mjs.map +1 -0
  95. package/fesm2022/agorapulse-ui-components-modal.mjs +126 -0
  96. package/fesm2022/agorapulse-ui-components-modal.mjs.map +1 -0
  97. package/fesm2022/agorapulse-ui-components-neo-datepicker.mjs +268 -0
  98. package/fesm2022/agorapulse-ui-components-neo-datepicker.mjs.map +1 -0
  99. package/fesm2022/agorapulse-ui-components-notification.mjs +22 -0
  100. package/fesm2022/agorapulse-ui-components-notification.mjs.map +1 -0
  101. package/fesm2022/agorapulse-ui-components-paginator.mjs +181 -0
  102. package/fesm2022/agorapulse-ui-components-paginator.mjs.map +1 -0
  103. package/fesm2022/agorapulse-ui-components-password-input.mjs +84 -0
  104. package/fesm2022/agorapulse-ui-components-password-input.mjs.map +1 -0
  105. package/{fesm2020 → fesm2022}/agorapulse-ui-components-popmenu.mjs +112 -83
  106. package/fesm2022/agorapulse-ui-components-popmenu.mjs.map +1 -0
  107. package/fesm2022/agorapulse-ui-components-radio.mjs +322 -0
  108. package/fesm2022/agorapulse-ui-components-radio.mjs.map +1 -0
  109. package/fesm2022/agorapulse-ui-components-slide-toggle.mjs +70 -0
  110. package/fesm2022/agorapulse-ui-components-slide-toggle.mjs.map +1 -0
  111. package/fesm2022/agorapulse-ui-components-snackbar.mjs +34 -0
  112. package/fesm2022/agorapulse-ui-components-snackbar.mjs.map +1 -0
  113. package/fesm2022/agorapulse-ui-components-snackbars-thread.mjs +190 -0
  114. package/fesm2022/agorapulse-ui-components-snackbars-thread.mjs.map +1 -0
  115. package/fesm2022/agorapulse-ui-components-social-button.mjs +150 -0
  116. package/fesm2022/agorapulse-ui-components-social-button.mjs.map +1 -0
  117. package/fesm2022/agorapulse-ui-components-split-button.mjs +133 -0
  118. package/fesm2022/agorapulse-ui-components-split-button.mjs.map +1 -0
  119. package/fesm2022/agorapulse-ui-components-stepper.mjs +45 -0
  120. package/fesm2022/agorapulse-ui-components-stepper.mjs.map +1 -0
  121. package/{fesm2020 → fesm2022}/agorapulse-ui-components-text-measurement.mjs +8 -7
  122. package/fesm2022/agorapulse-ui-components-text-measurement.mjs.map +1 -0
  123. package/fesm2022/agorapulse-ui-components-toggle.mjs +210 -0
  124. package/fesm2022/agorapulse-ui-components-toggle.mjs.map +1 -0
  125. package/{fesm2020 → fesm2022}/agorapulse-ui-components-tooltip.mjs +114 -75
  126. package/fesm2022/agorapulse-ui-components-tooltip.mjs.map +1 -0
  127. package/{fesm2015 → fesm2022}/agorapulse-ui-components.mjs +100 -103
  128. package/fesm2022/agorapulse-ui-components.mjs.map +1 -0
  129. package/icon-button/icon-button.component.d.ts +3 -3
  130. package/infobox/infobox.component.d.ts +3 -3
  131. package/labels/label-list.component.d.ts +2 -2
  132. package/labels/label.component.d.ts +3 -3
  133. package/labels-selector/labels-selector.component.d.ts +2 -2
  134. package/media-display-overlay/media-display-overlay-dialog.component.d.ts +1 -1
  135. package/modal/modal.component.d.ts +12 -12
  136. package/neo-datepicker/day-detail.model.d.ts +2 -2
  137. package/neo-datepicker/day-disabled.pipe.d.ts +1 -1
  138. package/neo-datepicker/neo-datepicker.component.d.ts +10 -7
  139. package/notification/notification.component.d.ts +1 -1
  140. package/package.json +107 -172
  141. package/paginator/paginator-button/paginator-button.component.d.ts +1 -1
  142. package/paginator/paginator.component.d.ts +1 -1
  143. package/password-input/password-input.component.d.ts +4 -4
  144. package/popmenu/popmenu-options.interface.d.ts +24 -19
  145. package/popmenu/popmenu.component.d.ts +10 -10
  146. package/popmenu/popmenu.directive.d.ts +23 -23
  147. package/radio/radio-control.registry.d.ts +2 -2
  148. package/radio/radio.component.d.ts +2 -2
  149. package/slide-toggle/slide-toggle.component.d.ts +1 -1
  150. package/snackbar/snackbar.component.d.ts +1 -1
  151. package/snackbars-thread/component/snackbars-thread.component.d.ts +2 -2
  152. package/snackbars-thread/model/snackbars-thread.model.d.ts +1 -1
  153. package/snackbars-thread/public_api.d.ts +1 -1
  154. package/snackbars-thread/service/snackbars-thread.service.d.ts +4 -4
  155. package/social-button/social-button.component.d.ts +3 -3
  156. package/split-button/split-button.component.d.ts +3 -3
  157. package/stepper/stepper.component.d.ts +2 -2
  158. package/toggle/toggle.component.d.ts +3 -3
  159. package/tooltip/tooltip.directive.d.ts +5 -5
  160. package/agorapulse-ui-components-15.1.31.tgz +0 -0
  161. package/esm2020/add-comment/add-comment.component.mjs +0 -69
  162. package/esm2020/avatar/avatar.component.mjs +0 -211
  163. package/esm2020/button/button.component.mjs +0 -104
  164. package/esm2020/checkbox/checkbox.component.mjs +0 -163
  165. package/esm2020/confirm-modal/confirm-modal.component.mjs +0 -60
  166. package/esm2020/datepicker/datepicker.component.mjs +0 -259
  167. package/esm2020/directives/autosize-textarea.directive.mjs +0 -44
  168. package/esm2020/directives/base-button.directive.mjs +0 -47
  169. package/esm2020/directives/default-image.directive.mjs +0 -32
  170. package/esm2020/directives/ellipsis.directive.mjs +0 -86
  171. package/esm2020/directives/equal-validator.directive.mjs +0 -66
  172. package/esm2020/directives/frozen-gif.directive.mjs +0 -116
  173. package/esm2020/directives/multi-style-text.directive.mjs +0 -58
  174. package/esm2020/directives/truncate-tooltip.directive.mjs +0 -40
  175. package/esm2020/dots-stepper/dots-stepper.component.mjs +0 -43
  176. package/esm2020/icon-button/icon-button.component.mjs +0 -112
  177. package/esm2020/index.mjs +0 -42
  178. package/esm2020/infobox/infobox.component.mjs +0 -67
  179. package/esm2020/labels/label-list.component.mjs +0 -101
  180. package/esm2020/labels/label.component.mjs +0 -58
  181. package/esm2020/labels-selector/labels-selector.component.mjs +0 -101
  182. package/esm2020/media-display-overlay/media-display-overlay-dialog.component.mjs +0 -94
  183. package/esm2020/modal/modal.component.mjs +0 -109
  184. package/esm2020/neo-datepicker/day-disabled.pipe.mjs +0 -21
  185. package/esm2020/neo-datepicker/neo-datepicker.component.mjs +0 -228
  186. package/esm2020/notification/notification.component.mjs +0 -17
  187. package/esm2020/paginator/paginator-button/paginator-button.component.mjs +0 -51
  188. package/esm2020/paginator/paginator.component.mjs +0 -124
  189. package/esm2020/password-input/password-input.component.mjs +0 -75
  190. package/esm2020/popmenu/options.mjs +0 -17
  191. package/esm2020/popmenu/popmenu-options.interface.mjs +0 -2
  192. package/esm2020/popmenu/popmenu-options.service.mjs +0 -7
  193. package/esm2020/popmenu/popmenu.component.mjs +0 -373
  194. package/esm2020/popmenu/popmenu.directive.mjs +0 -268
  195. package/esm2020/popmenu/popmenu.module.mjs +0 -35
  196. package/esm2020/radio/radio-control.registry.mjs +0 -104
  197. package/esm2020/radio/radio.component.mjs +0 -199
  198. package/esm2020/slide-toggle/slide-toggle.component.mjs +0 -65
  199. package/esm2020/snackbar/snackbar.component.mjs +0 -26
  200. package/esm2020/snackbars-thread/component/snackbars-thread.component.mjs +0 -79
  201. package/esm2020/snackbars-thread/model/snackbars-thread.model.mjs +0 -52
  202. package/esm2020/snackbars-thread/service/snackbars-thread.service.mjs +0 -41
  203. package/esm2020/snackbars-thread/utils/const/snackbars-thread.const.mjs +0 -13
  204. package/esm2020/social-button/social-button.component.mjs +0 -137
  205. package/esm2020/split-button/split-button.component.mjs +0 -112
  206. package/esm2020/src/lib/agorapulse-ui-components.module.mjs +0 -213
  207. package/esm2020/stepper/stepper.component.mjs +0 -36
  208. package/esm2020/text-measurement/text-measurement.service.mjs +0 -28
  209. package/esm2020/toggle/toggle.component.mjs +0 -190
  210. package/esm2020/tooltip/tooltip.directive.mjs +0 -358
  211. package/esm2020/tooltip/tooltip.service.mjs +0 -29
  212. package/fesm2015/agorapulse-ui-components-add-comment.mjs +0 -76
  213. package/fesm2015/agorapulse-ui-components-add-comment.mjs.map +0 -1
  214. package/fesm2015/agorapulse-ui-components-avatar.mjs +0 -218
  215. package/fesm2015/agorapulse-ui-components-avatar.mjs.map +0 -1
  216. package/fesm2015/agorapulse-ui-components-button.mjs +0 -111
  217. package/fesm2015/agorapulse-ui-components-button.mjs.map +0 -1
  218. package/fesm2015/agorapulse-ui-components-checkbox.mjs +0 -170
  219. package/fesm2015/agorapulse-ui-components-checkbox.mjs.map +0 -1
  220. package/fesm2015/agorapulse-ui-components-confirm-modal.mjs +0 -67
  221. package/fesm2015/agorapulse-ui-components-confirm-modal.mjs.map +0 -1
  222. package/fesm2015/agorapulse-ui-components-datepicker.mjs +0 -269
  223. package/fesm2015/agorapulse-ui-components-datepicker.mjs.map +0 -1
  224. package/fesm2015/agorapulse-ui-components-directives.mjs +0 -483
  225. package/fesm2015/agorapulse-ui-components-directives.mjs.map +0 -1
  226. package/fesm2015/agorapulse-ui-components-dots-stepper.mjs +0 -50
  227. package/fesm2015/agorapulse-ui-components-dots-stepper.mjs.map +0 -1
  228. package/fesm2015/agorapulse-ui-components-icon-button.mjs +0 -119
  229. package/fesm2015/agorapulse-ui-components-icon-button.mjs.map +0 -1
  230. package/fesm2015/agorapulse-ui-components-infobox.mjs +0 -71
  231. package/fesm2015/agorapulse-ui-components-infobox.mjs.map +0 -1
  232. package/fesm2015/agorapulse-ui-components-labels-selector.mjs +0 -109
  233. package/fesm2015/agorapulse-ui-components-labels-selector.mjs.map +0 -1
  234. package/fesm2015/agorapulse-ui-components-labels.mjs +0 -162
  235. package/fesm2015/agorapulse-ui-components-labels.mjs.map +0 -1
  236. package/fesm2015/agorapulse-ui-components-media-display-overlay.mjs +0 -103
  237. package/fesm2015/agorapulse-ui-components-media-display-overlay.mjs.map +0 -1
  238. package/fesm2015/agorapulse-ui-components-modal.mjs +0 -116
  239. package/fesm2015/agorapulse-ui-components-modal.mjs.map +0 -1
  240. package/fesm2015/agorapulse-ui-components-neo-datepicker.mjs +0 -253
  241. package/fesm2015/agorapulse-ui-components-neo-datepicker.mjs.map +0 -1
  242. package/fesm2015/agorapulse-ui-components-notification.mjs +0 -24
  243. package/fesm2015/agorapulse-ui-components-notification.mjs.map +0 -1
  244. package/fesm2015/agorapulse-ui-components-paginator.mjs +0 -179
  245. package/fesm2015/agorapulse-ui-components-paginator.mjs.map +0 -1
  246. package/fesm2015/agorapulse-ui-components-password-input.mjs +0 -82
  247. package/fesm2015/agorapulse-ui-components-password-input.mjs.map +0 -1
  248. package/fesm2015/agorapulse-ui-components-popmenu.mjs +0 -698
  249. package/fesm2015/agorapulse-ui-components-popmenu.mjs.map +0 -1
  250. package/fesm2015/agorapulse-ui-components-radio.mjs +0 -306
  251. package/fesm2015/agorapulse-ui-components-radio.mjs.map +0 -1
  252. package/fesm2015/agorapulse-ui-components-slide-toggle.mjs +0 -72
  253. package/fesm2015/agorapulse-ui-components-slide-toggle.mjs.map +0 -1
  254. package/fesm2015/agorapulse-ui-components-snackbar.mjs +0 -35
  255. package/fesm2015/agorapulse-ui-components-snackbar.mjs.map +0 -1
  256. package/fesm2015/agorapulse-ui-components-snackbars-thread.mjs +0 -188
  257. package/fesm2015/agorapulse-ui-components-snackbars-thread.mjs.map +0 -1
  258. package/fesm2015/agorapulse-ui-components-social-button.mjs +0 -144
  259. package/fesm2015/agorapulse-ui-components-social-button.mjs.map +0 -1
  260. package/fesm2015/agorapulse-ui-components-split-button.mjs +0 -119
  261. package/fesm2015/agorapulse-ui-components-split-button.mjs.map +0 -1
  262. package/fesm2015/agorapulse-ui-components-stepper.mjs +0 -44
  263. package/fesm2015/agorapulse-ui-components-stepper.mjs.map +0 -1
  264. package/fesm2015/agorapulse-ui-components-text-measurement.mjs +0 -35
  265. package/fesm2015/agorapulse-ui-components-text-measurement.mjs.map +0 -1
  266. package/fesm2015/agorapulse-ui-components-toggle.mjs +0 -197
  267. package/fesm2015/agorapulse-ui-components-toggle.mjs.map +0 -1
  268. package/fesm2015/agorapulse-ui-components-tooltip.mjs +0 -391
  269. package/fesm2015/agorapulse-ui-components-tooltip.mjs.map +0 -1
  270. package/fesm2015/agorapulse-ui-components.mjs.map +0 -1
  271. package/fesm2020/agorapulse-ui-components-add-comment.mjs +0 -76
  272. package/fesm2020/agorapulse-ui-components-add-comment.mjs.map +0 -1
  273. package/fesm2020/agorapulse-ui-components-avatar.mjs +0 -218
  274. package/fesm2020/agorapulse-ui-components-avatar.mjs.map +0 -1
  275. package/fesm2020/agorapulse-ui-components-button.mjs +0 -111
  276. package/fesm2020/agorapulse-ui-components-button.mjs.map +0 -1
  277. package/fesm2020/agorapulse-ui-components-checkbox.mjs +0 -170
  278. package/fesm2020/agorapulse-ui-components-checkbox.mjs.map +0 -1
  279. package/fesm2020/agorapulse-ui-components-confirm-modal.mjs +0 -67
  280. package/fesm2020/agorapulse-ui-components-confirm-modal.mjs.map +0 -1
  281. package/fesm2020/agorapulse-ui-components-datepicker.mjs +0 -266
  282. package/fesm2020/agorapulse-ui-components-datepicker.mjs.map +0 -1
  283. package/fesm2020/agorapulse-ui-components-directives.mjs.map +0 -1
  284. package/fesm2020/agorapulse-ui-components-dots-stepper.mjs +0 -50
  285. package/fesm2020/agorapulse-ui-components-dots-stepper.mjs.map +0 -1
  286. package/fesm2020/agorapulse-ui-components-icon-button.mjs +0 -119
  287. package/fesm2020/agorapulse-ui-components-icon-button.mjs.map +0 -1
  288. package/fesm2020/agorapulse-ui-components-infobox.mjs +0 -71
  289. package/fesm2020/agorapulse-ui-components-infobox.mjs.map +0 -1
  290. package/fesm2020/agorapulse-ui-components-labels-selector.mjs +0 -108
  291. package/fesm2020/agorapulse-ui-components-labels-selector.mjs.map +0 -1
  292. package/fesm2020/agorapulse-ui-components-labels.mjs +0 -162
  293. package/fesm2020/agorapulse-ui-components-labels.mjs.map +0 -1
  294. package/fesm2020/agorapulse-ui-components-media-display-overlay.mjs +0 -101
  295. package/fesm2020/agorapulse-ui-components-media-display-overlay.mjs.map +0 -1
  296. package/fesm2020/agorapulse-ui-components-modal.mjs +0 -116
  297. package/fesm2020/agorapulse-ui-components-modal.mjs.map +0 -1
  298. package/fesm2020/agorapulse-ui-components-neo-datepicker.mjs +0 -253
  299. package/fesm2020/agorapulse-ui-components-neo-datepicker.mjs.map +0 -1
  300. package/fesm2020/agorapulse-ui-components-notification.mjs +0 -24
  301. package/fesm2020/agorapulse-ui-components-notification.mjs.map +0 -1
  302. package/fesm2020/agorapulse-ui-components-paginator.mjs +0 -179
  303. package/fesm2020/agorapulse-ui-components-paginator.mjs.map +0 -1
  304. package/fesm2020/agorapulse-ui-components-password-input.mjs +0 -82
  305. package/fesm2020/agorapulse-ui-components-password-input.mjs.map +0 -1
  306. package/fesm2020/agorapulse-ui-components-popmenu.mjs.map +0 -1
  307. package/fesm2020/agorapulse-ui-components-radio.mjs +0 -305
  308. package/fesm2020/agorapulse-ui-components-radio.mjs.map +0 -1
  309. package/fesm2020/agorapulse-ui-components-slide-toggle.mjs +0 -72
  310. package/fesm2020/agorapulse-ui-components-slide-toggle.mjs.map +0 -1
  311. package/fesm2020/agorapulse-ui-components-snackbar.mjs +0 -33
  312. package/fesm2020/agorapulse-ui-components-snackbar.mjs.map +0 -1
  313. package/fesm2020/agorapulse-ui-components-snackbars-thread.mjs +0 -188
  314. package/fesm2020/agorapulse-ui-components-snackbars-thread.mjs.map +0 -1
  315. package/fesm2020/agorapulse-ui-components-social-button.mjs +0 -144
  316. package/fesm2020/agorapulse-ui-components-social-button.mjs.map +0 -1
  317. package/fesm2020/agorapulse-ui-components-split-button.mjs +0 -119
  318. package/fesm2020/agorapulse-ui-components-split-button.mjs.map +0 -1
  319. package/fesm2020/agorapulse-ui-components-stepper.mjs +0 -43
  320. package/fesm2020/agorapulse-ui-components-stepper.mjs.map +0 -1
  321. package/fesm2020/agorapulse-ui-components-text-measurement.mjs.map +0 -1
  322. package/fesm2020/agorapulse-ui-components-toggle.mjs +0 -197
  323. package/fesm2020/agorapulse-ui-components-toggle.mjs.map +0 -1
  324. package/fesm2020/agorapulse-ui-components-tooltip.mjs.map +0 -1
  325. package/fesm2020/agorapulse-ui-components.mjs +0 -252
  326. package/fesm2020/agorapulse-ui-components.mjs.map +0 -1
  327. /package/{esm2020 → esm2022}/add-comment/agorapulse-ui-components-add-comment.mjs +0 -0
  328. /package/{esm2020 → esm2022}/add-comment/public_api.mjs +0 -0
  329. /package/{esm2020 → esm2022}/agorapulse-ui-components.mjs +0 -0
  330. /package/{esm2020 → esm2022}/avatar/agorapulse-ui-components-avatar.mjs +0 -0
  331. /package/{esm2020 → esm2022}/avatar/public_api.mjs +0 -0
  332. /package/{esm2020 → esm2022}/button/agorapulse-ui-components-button.mjs +0 -0
  333. /package/{esm2020 → esm2022}/button/public_api.mjs +0 -0
  334. /package/{esm2020 → esm2022}/checkbox/agorapulse-ui-components-checkbox.mjs +0 -0
  335. /package/{esm2020 → esm2022}/checkbox/public_api.mjs +0 -0
  336. /package/{esm2020 → esm2022}/confirm-modal/agorapulse-ui-components-confirm-modal.mjs +0 -0
  337. /package/{esm2020 → esm2022}/confirm-modal/confirm-modal-texts.model.mjs +0 -0
  338. /package/{esm2020 → esm2022}/confirm-modal/public_api.mjs +0 -0
  339. /package/{esm2020 → esm2022}/datepicker/agorapulse-ui-components-datepicker.mjs +0 -0
  340. /package/{esm2020 → esm2022}/datepicker/public_api.mjs +0 -0
  341. /package/{esm2020 → esm2022}/directives/agorapulse-ui-components-directives.mjs +0 -0
  342. /package/{esm2020 → esm2022}/directives/public_api.mjs +0 -0
  343. /package/{esm2020 → esm2022}/dots-stepper/agorapulse-ui-components-dots-stepper.mjs +0 -0
  344. /package/{esm2020 → esm2022}/dots-stepper/public_api.mjs +0 -0
  345. /package/{esm2020 → esm2022}/icon-button/agorapulse-ui-components-icon-button.mjs +0 -0
  346. /package/{esm2020 → esm2022}/icon-button/public_api.mjs +0 -0
  347. /package/{esm2020 → esm2022}/infobox/agorapulse-ui-components-infobox.mjs +0 -0
  348. /package/{esm2020 → esm2022}/infobox/public_api.mjs +0 -0
  349. /package/{esm2020 → esm2022}/labels/agorapulse-ui-components-labels.mjs +0 -0
  350. /package/{esm2020 → esm2022}/labels/public_api.mjs +0 -0
  351. /package/{esm2020 → esm2022}/labels-selector/agorapulse-ui-components-labels-selector.mjs +0 -0
  352. /package/{esm2020 → esm2022}/labels-selector/public_api.mjs +0 -0
  353. /package/{esm2020 → esm2022}/media-display-overlay/agorapulse-ui-components-media-display-overlay.mjs +0 -0
  354. /package/{esm2020 → esm2022}/media-display-overlay/public_api.mjs +0 -0
  355. /package/{esm2020 → esm2022}/modal/agorapulse-ui-components-modal.mjs +0 -0
  356. /package/{esm2020 → esm2022}/modal/public_api.mjs +0 -0
  357. /package/{esm2020 → esm2022}/neo-datepicker/agorapulse-ui-components-neo-datepicker.mjs +0 -0
  358. /package/{esm2020 → esm2022}/neo-datepicker/public_api.mjs +0 -0
  359. /package/{esm2020 → esm2022}/notification/agorapulse-ui-components-notification.mjs +0 -0
  360. /package/{esm2020 → esm2022}/notification/public_api.mjs +0 -0
  361. /package/{esm2020 → esm2022}/paginator/agorapulse-ui-components-paginator.mjs +0 -0
  362. /package/{esm2020 → esm2022}/paginator/public_api.mjs +0 -0
  363. /package/{esm2020 → esm2022}/password-input/agorapulse-ui-components-password-input.mjs +0 -0
  364. /package/{esm2020 → esm2022}/password-input/public_api.mjs +0 -0
  365. /package/{esm2020 → esm2022}/popmenu/agorapulse-ui-components-popmenu.mjs +0 -0
  366. /package/{esm2020 → esm2022}/popmenu/public_api.mjs +0 -0
  367. /package/{esm2020 → esm2022}/radio/agorapulse-ui-components-radio.mjs +0 -0
  368. /package/{esm2020 → esm2022}/radio/public_api.mjs +0 -0
  369. /package/{esm2020 → esm2022}/slide-toggle/agorapulse-ui-components-slide-toggle.mjs +0 -0
  370. /package/{esm2020 → esm2022}/slide-toggle/public_api.mjs +0 -0
  371. /package/{esm2020 → esm2022}/snackbar/agorapulse-ui-components-snackbar.mjs +0 -0
  372. /package/{esm2020 → esm2022}/snackbar/public_api.mjs +0 -0
  373. /package/{esm2020 → esm2022}/snackbars-thread/agorapulse-ui-components-snackbars-thread.mjs +0 -0
  374. /package/{esm2020 → esm2022}/social-button/agorapulse-ui-components-social-button.mjs +0 -0
  375. /package/{esm2020 → esm2022}/social-button/public_api.mjs +0 -0
  376. /package/{esm2020 → esm2022}/split-button/agorapulse-ui-components-split-button.mjs +0 -0
  377. /package/{esm2020 → esm2022}/split-button/public_api.mjs +0 -0
  378. /package/{esm2020 → esm2022}/stepper/agorapulse-ui-components-stepper.mjs +0 -0
  379. /package/{esm2020 → esm2022}/stepper/public_api.mjs +0 -0
  380. /package/{esm2020 → esm2022}/stepper/step.model.mjs +0 -0
  381. /package/{esm2020 → esm2022}/text-measurement/agorapulse-ui-components-text-measurement.mjs +0 -0
  382. /package/{esm2020 → esm2022}/text-measurement/public_api.mjs +0 -0
  383. /package/{esm2020 → esm2022}/toggle/agorapulse-ui-components-toggle.mjs +0 -0
  384. /package/{esm2020 → esm2022}/toggle/public_api.mjs +0 -0
  385. /package/{esm2020 → esm2022}/tooltip/agorapulse-ui-components-tooltip.mjs +0 -0
  386. /package/{esm2020 → esm2022}/tooltip/public_api.mjs +0 -0
@@ -0,0 +1,384 @@
1
+ import { NgIf, NgStyle, NgTemplateOutlet } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, ViewChild, } from '@angular/core';
3
+ import { MatLegacyMenuModule as MatMenuModule, MatLegacyMenuTrigger as MatMenuTrigger } from '@angular/material/legacy-menu';
4
+ import { merge } from 'rxjs';
5
+ import { ButtonComponent } from '@agorapulse/ui-components/button';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/material/legacy-menu";
8
+ export class PopmenuComponent {
9
+ renderer;
10
+ elementRef;
11
+ changeDetectorRef;
12
+ data;
13
+ events = new EventEmitter();
14
+ arrowTopPosition = '50%';
15
+ arrowBottomPosition = '50%';
16
+ arrowLeftPosition = undefined;
17
+ arrowRightPosition = undefined;
18
+ arrowClass = undefined;
19
+ below = false;
20
+ before = false;
21
+ menuClosed = new EventEmitter();
22
+ menuOpened = new EventEmitter();
23
+ trigger;
24
+ hostStyleTop = '';
25
+ hostStyleBorderRadius = '';
26
+ hostStyleLeft = '';
27
+ hostStyleZIndex = 0;
28
+ hostStyleTransition = '';
29
+ hostStyleWidth = '';
30
+ hostStyleMaxWidth = '';
31
+ hostStylePointerEvents = '';
32
+ hostClassShow = false;
33
+ hostClassShadow = false;
34
+ hostClassLight = false;
35
+ viewInit = false;
36
+ _show = false;
37
+ get show() {
38
+ return this._show;
39
+ }
40
+ set show(value) {
41
+ if (value) {
42
+ this.setPosition();
43
+ }
44
+ this._show = value;
45
+ }
46
+ set close(value) {
47
+ if (value) {
48
+ setTimeout(() => {
49
+ this.trigger.closeMenu();
50
+ }, 100);
51
+ }
52
+ }
53
+ menuOpen = false;
54
+ get arrow() {
55
+ return this.data.options.arrow && this.border;
56
+ }
57
+ get arrowOffset() {
58
+ return this.data.options.arrowOffset;
59
+ }
60
+ get arrowPosition() {
61
+ return this.data.options.arrowPosition;
62
+ }
63
+ get autoPlacement() {
64
+ return this.data.options.autoPlacement;
65
+ }
66
+ get background() {
67
+ return this.data.options.apPopmenuBackground;
68
+ }
69
+ get border() {
70
+ return this.data.options.apPopmenuBorder;
71
+ }
72
+ get element() {
73
+ return this.data.element;
74
+ }
75
+ get elementPosition() {
76
+ return this.data.elementPosition;
77
+ }
78
+ get hasBackdrop() {
79
+ return this.data.options.hasBackdrop;
80
+ }
81
+ get backdropClass() {
82
+ return this.data.options.backdropClass;
83
+ }
84
+ get isThemeLight() {
85
+ return this.options['theme'] === 'light';
86
+ }
87
+ get options() {
88
+ return this.data.options;
89
+ }
90
+ get panelClass() {
91
+ return this.data.options.panelClass;
92
+ }
93
+ get placement() {
94
+ return this.data.options.placement;
95
+ }
96
+ get rounded() {
97
+ return this.data.options.rounded;
98
+ }
99
+ get shadow() {
100
+ return this.data.options.shadow;
101
+ }
102
+ get tooltipOffset() {
103
+ return Number(this.data.options.offset);
104
+ }
105
+ get offsetSkidding() {
106
+ return Number(this.data.options.offsets.skidding) || 0;
107
+ }
108
+ get offsetDistance() {
109
+ return Number(this.data.options.offsets.distance || 0);
110
+ }
111
+ get value() {
112
+ return this.data.value;
113
+ }
114
+ constructor(renderer, elementRef, changeDetectorRef) {
115
+ this.renderer = renderer;
116
+ this.elementRef = elementRef;
117
+ this.changeDetectorRef = changeDetectorRef;
118
+ }
119
+ ngAfterViewInit() {
120
+ this.viewInit = true;
121
+ merge(this.trigger.menuOpened, this.trigger.menuClosed).subscribe(() => {
122
+ this.menuOpen = this.trigger.menuOpen;
123
+ });
124
+ }
125
+ onMenuClosed() {
126
+ // we set a timeout to wait for the menu to be really closed
127
+ setTimeout(() => this.menuClosed.emit(), 200);
128
+ }
129
+ onMenuOpened() {
130
+ // we set a timeout to wait for the menu to be really opened
131
+ setTimeout(() => this.menuOpened.emit(), 100);
132
+ }
133
+ setHostStyle(placement) {
134
+ const isSvg = this.element instanceof SVGElement;
135
+ const tooltip = this.elementRef.nativeElement;
136
+ const isCustomPosition = !this.elementPosition.x;
137
+ let elementHeight = !this.element.offsetHeight ? this.element.getBoundingClientRect().height : this.element.offsetHeight;
138
+ let elementWidth = !this.element.offsetWidth ? this.element.getBoundingClientRect().width : this.element.offsetWidth;
139
+ const tooltipHeight = tooltip.clientHeight;
140
+ const tooltipWidth = tooltip.clientWidth;
141
+ const scrollY = window.pageYOffset;
142
+ let topStyle;
143
+ let leftStyle;
144
+ if (isCustomPosition) {
145
+ if (placement && placement.split(' ')[0] === 'top') {
146
+ this.below = false;
147
+ }
148
+ if (placement && placement.split(' ')[0] === 'bottom') {
149
+ this.below = true;
150
+ }
151
+ elementHeight = 0;
152
+ elementWidth = 0;
153
+ topStyle = this.elementPosition.top;
154
+ leftStyle = this.elementPosition.left;
155
+ if (this.arrow && this.arrowPosition) {
156
+ this.arrowClass = 'arrow-' + this.arrowPosition;
157
+ switch (this.arrowPosition) {
158
+ case 'left':
159
+ case 'right':
160
+ this.arrowLeftPosition = undefined;
161
+ this.arrowRightPosition = undefined;
162
+ this.arrowBottomPosition = 'auto';
163
+ this.arrowTopPosition = this.arrowOffset + '%';
164
+ break;
165
+ case 'top':
166
+ case 'bottom':
167
+ this.arrowLeftPosition = this.arrowOffset + '%';
168
+ this.arrowRightPosition = 'auto';
169
+ this.arrowBottomPosition = undefined;
170
+ this.arrowTopPosition = undefined;
171
+ break;
172
+ }
173
+ }
174
+ }
175
+ else {
176
+ if (placement.split(' ')[0] === 'top') {
177
+ this.below = false;
178
+ topStyle = this.elementPosition.top - this.tooltipOffset - this.offsetDistance;
179
+ topStyle += 8;
180
+ }
181
+ if (placement.split(' ')[0] === 'bottom') {
182
+ this.below = true;
183
+ topStyle = this.elementPosition.bottom + this.tooltipOffset + this.offsetDistance;
184
+ // We remove 8px due to the margin-top we put to display the arrow.
185
+ topStyle -= 8;
186
+ }
187
+ if (placement.split(' ')[0] === 'left') {
188
+ leftStyle = this.elementPosition.left - tooltipWidth - this.tooltipOffset - this.offsetDistance;
189
+ }
190
+ if (placement.split(' ')[0] === 'right') {
191
+ leftStyle = this.elementPosition.left + elementWidth + this.tooltipOffset + this.offsetDistance;
192
+ }
193
+ if (placement.split(' ')[0] === 'left' || placement.split(' ')[0] === 'right') {
194
+ topStyle = this.elementPosition.top + scrollY + elementHeight / 2 - tooltip.clientHeight / 2;
195
+ }
196
+ if (placement === 'right bottom') {
197
+ this.below = true;
198
+ this.before = false;
199
+ this.arrowClass = 'arrow-left';
200
+ topStyle = this.elementPosition.top + scrollY + this.offsetSkidding;
201
+ this.arrowRightPosition = undefined;
202
+ this.arrowLeftPosition = undefined;
203
+ this.arrowBottomPosition = 'auto';
204
+ this.arrowTopPosition = this.arrowOffset ? this.arrowOffset + '%' : elementHeight / 2 + 'px';
205
+ }
206
+ if (placement === 'left bottom') {
207
+ this.below = true;
208
+ this.before = true;
209
+ this.arrowClass = 'arrow-right';
210
+ topStyle = this.elementPosition.top + scrollY + this.offsetSkidding;
211
+ this.arrowLeftPosition = undefined;
212
+ this.arrowRightPosition = undefined;
213
+ this.arrowBottomPosition = 'auto';
214
+ this.arrowTopPosition = this.arrowOffset ? this.arrowOffset + '%' : elementHeight / 2 + 'px';
215
+ }
216
+ if (placement === 'right top') {
217
+ this.below = false;
218
+ this.before = false;
219
+ this.arrowClass = 'arrow-left';
220
+ topStyle = this.elementPosition.top + elementHeight + scrollY + this.offsetSkidding;
221
+ this.arrowLeftPosition = undefined;
222
+ this.arrowRightPosition = undefined;
223
+ this.arrowTopPosition = 'auto';
224
+ this.arrowBottomPosition = this.arrowOffset ? this.arrowOffset + '%' : -(tooltip.clientHeight - elementHeight / 2) + 'px';
225
+ }
226
+ if (placement === 'left top') {
227
+ this.below = false;
228
+ this.before = true;
229
+ this.arrowClass = 'arrow-right';
230
+ topStyle = this.elementPosition.top + elementHeight + scrollY + this.offsetSkidding;
231
+ this.arrowRightPosition = undefined;
232
+ this.arrowLeftPosition = undefined;
233
+ this.arrowTopPosition = 'auto';
234
+ this.arrowBottomPosition = this.arrowOffset ? this.arrowOffset + '%' : -(tooltip.clientHeight - elementHeight / 2) + 'px';
235
+ }
236
+ if (placement === 'bottom right') {
237
+ this.before = false;
238
+ this.below = true;
239
+ this.arrowClass = 'arrow-top';
240
+ leftStyle = this.elementPosition.left + this.offsetSkidding;
241
+ this.arrowTopPosition = undefined;
242
+ this.arrowRightPosition = 'auto';
243
+ this.arrowLeftPosition = this.arrowOffset ? this.arrowOffset + '%' : elementWidth / 2 - 4.5 + 'px';
244
+ }
245
+ if (placement === 'bottom left') {
246
+ this.before = true;
247
+ this.below = true;
248
+ this.arrowClass = 'arrow-top';
249
+ leftStyle = this.elementPosition.right + this.offsetSkidding;
250
+ this.arrowTopPosition = undefined;
251
+ this.arrowLeftPosition = 'auto';
252
+ this.arrowRightPosition = this.arrowOffset ? this.arrowOffset + '%' : elementWidth / 2 - 2.5 + 'px';
253
+ }
254
+ if (placement === 'top right') {
255
+ this.before = false;
256
+ this.below = false;
257
+ this.arrowClass = 'arrow-bottom';
258
+ leftStyle = this.elementPosition.left + this.offsetSkidding;
259
+ this.arrowBottomPosition = undefined;
260
+ this.arrowTopPosition = undefined;
261
+ this.arrowRightPosition = 'auto';
262
+ this.arrowLeftPosition = this.arrowOffset ? this.arrowOffset + '%' : elementWidth / 2 - 4.5 + 'px';
263
+ }
264
+ if (placement === 'top left') {
265
+ this.before = true;
266
+ this.below = false;
267
+ this.arrowClass = 'arrow-bottom';
268
+ leftStyle = this.elementPosition.right + this.offsetSkidding;
269
+ this.arrowBottomPosition = undefined;
270
+ this.arrowTopPosition = undefined;
271
+ this.arrowLeftPosition = 'auto';
272
+ this.arrowRightPosition = this.arrowOffset ? this.arrowOffset + '%' : elementWidth / 2 - 2.5 + 'px';
273
+ }
274
+ }
275
+ // This line is PURE MAGIC and super important. It allows to force mat-menu
276
+ // to reposition the menu with the new xPosition / yPosition.
277
+ this.changeDetectorRef.detectChanges();
278
+ const topEdge = topStyle;
279
+ const bottomEdge = topStyle + tooltipHeight;
280
+ const leftEdge = leftStyle;
281
+ const rightEdge = leftStyle + tooltipWidth;
282
+ if ((topEdge < 0 || bottomEdge > document.body.clientHeight || leftEdge < 0 || rightEdge > document.body.clientWidth) &&
283
+ this.autoPlacement) {
284
+ return false;
285
+ }
286
+ this.hostStyleTop = topStyle + 'px';
287
+ this.hostStyleLeft = leftStyle + 'px';
288
+ return true;
289
+ }
290
+ setPlacementClass(placement) {
291
+ this.renderer.addClass(this.elementRef.nativeElement, 'tooltip-' + (placement ? placement.split(' ')[0] : placement));
292
+ this.renderer.addClass(this.elementRef.nativeElement, 'yPosition-' + (placement && placement.split(' ').length === 2 ? placement.split(' ')[1] : 'center'));
293
+ if (this.elementRef.nativeElement.children && this.elementRef.nativeElement.children.length > 1) {
294
+ const tooltipArrow = Array.from(this.elementRef.nativeElement.children).filter((child) => child.getAttribute('id') === 'tooltipArrow');
295
+ if (tooltipArrow && tooltipArrow.length === 1) {
296
+ if (placement && placement.split(' ').length === 2 && placement.split(' ')[1] === 'bottom') {
297
+ this.renderer.setStyle(tooltipArrow[0], 'top', this.arrowTopPosition);
298
+ }
299
+ else if (placement && placement.split(' ').length === 2 && placement.split(' ')[1] === 'top') {
300
+ this.renderer.setStyle(tooltipArrow[0], 'top', this.arrowBottomPosition);
301
+ }
302
+ }
303
+ }
304
+ }
305
+ setPosition() {
306
+ if (this.setHostStyle(this.placement)) {
307
+ this.setPlacementClass(this.placement);
308
+ if (this.viewInit) {
309
+ // We did this in order to reset overlayRef (multi web component needed with matmenu and cdk overlay)
310
+ if (this.trigger['_overlayRef']) {
311
+ this.trigger['_overlayRef'].dispose();
312
+ this.trigger['_overlayRef'] = null;
313
+ }
314
+ this.trigger.openMenu();
315
+ }
316
+ return;
317
+ }
318
+ else {
319
+ const placements = ['top', 'right', 'bottom', 'left'];
320
+ for (const placement of placements) {
321
+ if (this.setHostStyle(placement)) {
322
+ this.setPlacementClass(placement);
323
+ if (this.viewInit) {
324
+ this.trigger.openMenu();
325
+ }
326
+ return;
327
+ }
328
+ }
329
+ }
330
+ }
331
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: PopmenuComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
332
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.10", type: PopmenuComponent, isStandalone: true, selector: "ap-popmenu", inputs: { data: "data", show: "show", close: "close" }, outputs: { menuClosed: "menuClosed", menuOpened: "menuOpened" }, host: { properties: { "style.top": "this.hostStyleTop", "style.border-radius": "this.hostStyleBorderRadius", "style.left": "this.hostStyleLeft", "style.z-index": "this.hostStyleZIndex", "style.transition": "this.hostStyleTransition", "style.width": "this.hostStyleWidth", "style.max-width": "this.hostStyleMaxWidth", "style.pointer-events": "this.hostStylePointerEvents", "class.tooltip-show": "this.hostClassShow", "class.tooltip-shadow": "this.hostClassShadow", "class.tooltip-light": "this.hostClassLight" } }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<button\n id=\"menuTrigger\"\n class=\"button-trigger\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n (menuClosed)=\"onMenuClosed()\"\n (menuOpened)=\"onMenuOpened()\"></button>\n<mat-menu\n #menu=\"matMenu\"\n [yPosition]=\"!below ? 'above' : 'below'\"\n [xPosition]=\"!before ? 'after' : 'before'\"\n [overlapTrigger]=\"false\"\n [hasBackdrop]=\"hasBackdrop\"\n [backdropClass]=\"backdropClass\"\n class=\"pop-menu {{ arrow ? 'arrow-before ' + arrowClass : '' }} {{ shadow ? 'shadow' : '' }} {{\n border ? '' : shadow ? 'shadow-no-border' : ''\n }} {{ rounded ? 'rounded-component' : '' }} {{ background ? '' : 'no-background' }} {{ panelClass }}\">\n <div\n *ngIf=\"arrow\"\n class=\"{{ arrow ? 'arrow-before ' + arrowClass : '' }}\"\n [ngStyle]=\"{ left: arrowLeftPosition, right: arrowRightPosition, top: arrowTopPosition, bottom: arrowBottomPosition }\"></div>\n <div\n (click)=\"$event.stopPropagation()\"\n class=\"{{ rounded ? 'rounded-component' : '' }} outline-none\">\n <div class=\"{{ border ? 'popover-content ' : '' }} {{ rounded ? 'rounded-component' : '' }}\">\n <ng-container *ngTemplateOutlet=\"value; context: { menu: this }\" />\n </div>\n </div>\n</mat-menu>\n", styles: ["[color=facebook]{color:#1877f2}[bgcolor=facebook],[hcolor=facebook]:hover{background-color:#1877f2}[border=facebook]{border:1px solid #1877f2}[color=google]{color:#4e85e8}[bgcolor=google],[hcolor=google]:hover{background-color:#4e85e8}[border=google]{border:1px solid #4e85e8}[color=instagram]{color:#e1306c}[bgcolor=instagram],[hcolor=instagram]:hover{background-color:#e1306c}[border=instagram]{border:1px solid #e1306c}[color=instagrammagenta]{color:#c13584}[bgcolor=instagrammagenta],[hcolor=instagrammagenta]:hover{background-color:#c13584}[border=instagrammagenta]{border:1px solid #c13584}[color=instagramblue]{color:#5851db}[bgcolor=instagramblue],[hcolor=instagramblue]:hover{background-color:#5851db}[border=instagramblue]{border:1px solid #5851db}[color=instagrampurple]{color:#833ab4}[bgcolor=instagrampurple],[hcolor=instagrampurple]:hover{background-color:#833ab4}[border=instagrampurple]{border:1px solid #833ab4}[color=instagramorange]{color:#f56040}[bgcolor=instagramorange],[hcolor=instagramorange]:hover{background-color:#f56040}[border=instagramorange]{border:1px solid #f56040}[color=instagramyellow]{color:#ffdc80}[bgcolor=instagramyellow],[hcolor=instagramyellow]:hover{background-color:#ffdc80}[border=instagramyellow]{border:1px solid #ffdc80}[color=linkedin]{color:#2c67bc}[bgcolor=linkedin],[hcolor=linkedin]:hover{background-color:#2c67bc}[border=linkedin]{border:1px solid #2c67bc}[color=twitter]{color:#55acee}[bgcolor=twitter],[hcolor=twitter]:hover{background-color:#55acee}[border=twitter]{border:1px solid #55acee}[color=youtube]{color:red}[bgcolor=youtube],[hcolor=youtube]:hover{background-color:red}[border=youtube]{border:1px solid #ff0000}[color=blood-orange]{color:#ff4d00}[bgcolor=blood-orange],[hcolor=blood-orange]:hover{background-color:#ff4d00}[border=blood-orange]{border:1px solid #ff4d00}[color=pinkish-orange]{color:#ff7b49}[bgcolor=pinkish-orange],[hcolor=pinkish-orange]:hover{background-color:#ff7b49}[border=pinkish-orange]{border:1px solid #ff7b49}[color=charcoal-grey]{color:#2a2f34}[bgcolor=charcoal-grey],[hcolor=charcoal-grey]:hover{background-color:#2a2f34}[border=charcoal-grey]{border:1px solid #2a2f34}[color=azure]{color:#00aeef}[bgcolor=azure],[hcolor=azure]:hover{background-color:#00aeef}[border=azure]{border:1px solid #00aeef}[color=light-azure]{color:#eaf5fd}[bgcolor=light-azure],[hcolor=light-azure]:hover{background-color:#eaf5fd}[border=light-azure]{border:1px solid #eaf5fd}[color=blue-grey]{color:#8d98a9}[bgcolor=blue-grey],[hcolor=blue-grey]:hover{background-color:#8d98a9}[border=blue-grey]{border:1px solid #8d98a9}[color=silver]{color:#ced0da}[bgcolor=silver],[hcolor=silver]:hover{background-color:#ced0da}[border=silver]{border:1px solid #ced0da}[color=pale-grey]{color:#dfe3e9}[bgcolor=pale-grey],[hcolor=pale-grey]:hover{background-color:#dfe3e9}[border=pale-grey]{border:1px solid #dfe3e9}[color=grey-white]{color:#f5f7f8}[bgcolor=grey-white],[hcolor=grey-white]:hover{background-color:#f5f7f8}[border=grey-white]{border:1px solid #f5f7f8}[color=cool-grey]{color:#b4bbc6}[bgcolor=cool-grey],[hcolor=cool-grey]:hover{background-color:#b4bbc6}[border=cool-grey]{border:1px solid #b4bbc6}[color=black]{color:#344563}[bgcolor=black],[hcolor=black]:hover{background-color:#344563}[border=black]{border:1px solid #344563}[color=grey-blue]{color:#68768c}[bgcolor=grey-blue],[hcolor=grey-blue]:hover{background-color:#68768c}[border=grey-blue]{border:1px solid #68768c}[color=strawberry]{color:#f4282d}[bgcolor=strawberry],[hcolor=strawberry]:hover{background-color:#f4282d}[border=strawberry]{border:1px solid #f4282d}[color=light-strawberry]{color:#f8eded}[bgcolor=light-strawberry],[hcolor=light-strawberry]:hover{background-color:#f8eded}[border=light-strawberry]{border:1px solid #f8eded}[color=white]{color:#fff}[bgcolor=white],[hcolor=white]:hover{background-color:#fff}[border=white]{border:1px solid #ffffff}[color=cool-green]{color:#33c15d}[bgcolor=cool-green],[hcolor=cool-green]:hover{background-color:#33c15d}[border=cool-green]{border:1px solid #33c15d}[color=light-green]{color:#ebfaef}[bgcolor=light-green],[hcolor=light-green]:hover{background-color:#ebfaef}[border=light-green]{border:1px solid #ebfaef}[color=transparent]{color:transparent}[bgcolor=transparent],[hcolor=transparent]:hover{background-color:transparent}[border=transparent]{border:1px solid transparent}[color=c0]{color:#a566a5}[bgcolor=c0],[hcolor=c0]:hover{background-color:#a566a5}[border=c0]{border:1px solid #a566a5}[color=c1]{color:#c7ab82}[bgcolor=c1],[hcolor=c1]:hover{background-color:#c7ab82}[border=c1]{border:1px solid #c7ab82}[color=c2]{color:#f2713c}[bgcolor=c2],[hcolor=c2]:hover{background-color:#f2713c}[border=c2]{border:1px solid #f2713c}[color=c3]{color:#ffd006}[bgcolor=c3],[hcolor=c3]:hover{background-color:#ffd006}[border=c3]{border:1px solid #ffd006}[color=c4]{color:#94c5aa}[bgcolor=c4],[hcolor=c4]:hover{background-color:#94c5aa}[border=c4]{border:1px solid #94c5aa}[color=c5]{color:#2a9d8f}[bgcolor=c5],[hcolor=c5]:hover{background-color:#2a9d8f}[border=c5]{border:1px solid #2a9d8f}[color=c6]{color:#78acd8}[bgcolor=c6],[hcolor=c6]:hover{background-color:#78acd8}[border=c6]{border:1px solid #78acd8}[color=c7]{color:#525a9e}[bgcolor=c7],[hcolor=c7]:hover{background-color:#525a9e}[border=c7]{border:1px solid #525a9e}[color=c8]{color:#6a2459}[bgcolor=c8],[hcolor=c8]:hover{background-color:#6a2459}[border=c8]{border:1px solid #6a2459}[color=c9]{color:#74729e}[bgcolor=c9],[hcolor=c9]:hover{background-color:#74729e}[border=c9]{border:1px solid #74729e}.mat-menu-content{padding:0}.mat-menu-item{height:inherit;width:inherit;background-color:#fff;padding:0;cursor:default;box-shadow:0 4px 10px #0000001c}.mat-menu-item:hover{background-color:#fff!important;cursor:default;box-shadow:none!important}.outline-none{outline:none}.mat-menu-item:hover:not([disabled]),.mat-menu-item.cdk-program-focused:not([disabled]),.mat-menu-item.cdk-keyboard-focused:not([disabled]),.mat-menu-item-highlighted:not([disabled]){background-color:#fff!important;cursor:default;box-shadow:none!important}:host ::ng-deep .mat-button{max-width:1px;max-height:1px;min-width:1px;min-height:1px;padding:0;margin:0}:host{position:absolute;max-width:1px;max-height:1px;display:flex}.button-trigger{padding:0;border:none;height:1px;width:1px}::ng-deep .rounded-component .mat-menu-content{border-radius:10px}::ng-deep .rounded-component{border-radius:10px}::ng-deep .no-background .rounded-component{position:fixed}.popover-content{border:1px solid #dfe3e9}\n"], dependencies: [{ kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i1.MatLegacyMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "directive", type: i1.MatLegacyMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
333
+ }
334
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: PopmenuComponent, decorators: [{
335
+ type: Component,
336
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ap-popmenu', standalone: true, imports: [ButtonComponent, MatMenuModule, NgStyle, NgTemplateOutlet, NgIf], template: "<button\n id=\"menuTrigger\"\n class=\"button-trigger\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n (menuClosed)=\"onMenuClosed()\"\n (menuOpened)=\"onMenuOpened()\"></button>\n<mat-menu\n #menu=\"matMenu\"\n [yPosition]=\"!below ? 'above' : 'below'\"\n [xPosition]=\"!before ? 'after' : 'before'\"\n [overlapTrigger]=\"false\"\n [hasBackdrop]=\"hasBackdrop\"\n [backdropClass]=\"backdropClass\"\n class=\"pop-menu {{ arrow ? 'arrow-before ' + arrowClass : '' }} {{ shadow ? 'shadow' : '' }} {{\n border ? '' : shadow ? 'shadow-no-border' : ''\n }} {{ rounded ? 'rounded-component' : '' }} {{ background ? '' : 'no-background' }} {{ panelClass }}\">\n <div\n *ngIf=\"arrow\"\n class=\"{{ arrow ? 'arrow-before ' + arrowClass : '' }}\"\n [ngStyle]=\"{ left: arrowLeftPosition, right: arrowRightPosition, top: arrowTopPosition, bottom: arrowBottomPosition }\"></div>\n <div\n (click)=\"$event.stopPropagation()\"\n class=\"{{ rounded ? 'rounded-component' : '' }} outline-none\">\n <div class=\"{{ border ? 'popover-content ' : '' }} {{ rounded ? 'rounded-component' : '' }}\">\n <ng-container *ngTemplateOutlet=\"value; context: { menu: this }\" />\n </div>\n </div>\n</mat-menu>\n", styles: ["[color=facebook]{color:#1877f2}[bgcolor=facebook],[hcolor=facebook]:hover{background-color:#1877f2}[border=facebook]{border:1px solid #1877f2}[color=google]{color:#4e85e8}[bgcolor=google],[hcolor=google]:hover{background-color:#4e85e8}[border=google]{border:1px solid #4e85e8}[color=instagram]{color:#e1306c}[bgcolor=instagram],[hcolor=instagram]:hover{background-color:#e1306c}[border=instagram]{border:1px solid #e1306c}[color=instagrammagenta]{color:#c13584}[bgcolor=instagrammagenta],[hcolor=instagrammagenta]:hover{background-color:#c13584}[border=instagrammagenta]{border:1px solid #c13584}[color=instagramblue]{color:#5851db}[bgcolor=instagramblue],[hcolor=instagramblue]:hover{background-color:#5851db}[border=instagramblue]{border:1px solid #5851db}[color=instagrampurple]{color:#833ab4}[bgcolor=instagrampurple],[hcolor=instagrampurple]:hover{background-color:#833ab4}[border=instagrampurple]{border:1px solid #833ab4}[color=instagramorange]{color:#f56040}[bgcolor=instagramorange],[hcolor=instagramorange]:hover{background-color:#f56040}[border=instagramorange]{border:1px solid #f56040}[color=instagramyellow]{color:#ffdc80}[bgcolor=instagramyellow],[hcolor=instagramyellow]:hover{background-color:#ffdc80}[border=instagramyellow]{border:1px solid #ffdc80}[color=linkedin]{color:#2c67bc}[bgcolor=linkedin],[hcolor=linkedin]:hover{background-color:#2c67bc}[border=linkedin]{border:1px solid #2c67bc}[color=twitter]{color:#55acee}[bgcolor=twitter],[hcolor=twitter]:hover{background-color:#55acee}[border=twitter]{border:1px solid #55acee}[color=youtube]{color:red}[bgcolor=youtube],[hcolor=youtube]:hover{background-color:red}[border=youtube]{border:1px solid #ff0000}[color=blood-orange]{color:#ff4d00}[bgcolor=blood-orange],[hcolor=blood-orange]:hover{background-color:#ff4d00}[border=blood-orange]{border:1px solid #ff4d00}[color=pinkish-orange]{color:#ff7b49}[bgcolor=pinkish-orange],[hcolor=pinkish-orange]:hover{background-color:#ff7b49}[border=pinkish-orange]{border:1px solid #ff7b49}[color=charcoal-grey]{color:#2a2f34}[bgcolor=charcoal-grey],[hcolor=charcoal-grey]:hover{background-color:#2a2f34}[border=charcoal-grey]{border:1px solid #2a2f34}[color=azure]{color:#00aeef}[bgcolor=azure],[hcolor=azure]:hover{background-color:#00aeef}[border=azure]{border:1px solid #00aeef}[color=light-azure]{color:#eaf5fd}[bgcolor=light-azure],[hcolor=light-azure]:hover{background-color:#eaf5fd}[border=light-azure]{border:1px solid #eaf5fd}[color=blue-grey]{color:#8d98a9}[bgcolor=blue-grey],[hcolor=blue-grey]:hover{background-color:#8d98a9}[border=blue-grey]{border:1px solid #8d98a9}[color=silver]{color:#ced0da}[bgcolor=silver],[hcolor=silver]:hover{background-color:#ced0da}[border=silver]{border:1px solid #ced0da}[color=pale-grey]{color:#dfe3e9}[bgcolor=pale-grey],[hcolor=pale-grey]:hover{background-color:#dfe3e9}[border=pale-grey]{border:1px solid #dfe3e9}[color=grey-white]{color:#f5f7f8}[bgcolor=grey-white],[hcolor=grey-white]:hover{background-color:#f5f7f8}[border=grey-white]{border:1px solid #f5f7f8}[color=cool-grey]{color:#b4bbc6}[bgcolor=cool-grey],[hcolor=cool-grey]:hover{background-color:#b4bbc6}[border=cool-grey]{border:1px solid #b4bbc6}[color=black]{color:#344563}[bgcolor=black],[hcolor=black]:hover{background-color:#344563}[border=black]{border:1px solid #344563}[color=grey-blue]{color:#68768c}[bgcolor=grey-blue],[hcolor=grey-blue]:hover{background-color:#68768c}[border=grey-blue]{border:1px solid #68768c}[color=strawberry]{color:#f4282d}[bgcolor=strawberry],[hcolor=strawberry]:hover{background-color:#f4282d}[border=strawberry]{border:1px solid #f4282d}[color=light-strawberry]{color:#f8eded}[bgcolor=light-strawberry],[hcolor=light-strawberry]:hover{background-color:#f8eded}[border=light-strawberry]{border:1px solid #f8eded}[color=white]{color:#fff}[bgcolor=white],[hcolor=white]:hover{background-color:#fff}[border=white]{border:1px solid #ffffff}[color=cool-green]{color:#33c15d}[bgcolor=cool-green],[hcolor=cool-green]:hover{background-color:#33c15d}[border=cool-green]{border:1px solid #33c15d}[color=light-green]{color:#ebfaef}[bgcolor=light-green],[hcolor=light-green]:hover{background-color:#ebfaef}[border=light-green]{border:1px solid #ebfaef}[color=transparent]{color:transparent}[bgcolor=transparent],[hcolor=transparent]:hover{background-color:transparent}[border=transparent]{border:1px solid transparent}[color=c0]{color:#a566a5}[bgcolor=c0],[hcolor=c0]:hover{background-color:#a566a5}[border=c0]{border:1px solid #a566a5}[color=c1]{color:#c7ab82}[bgcolor=c1],[hcolor=c1]:hover{background-color:#c7ab82}[border=c1]{border:1px solid #c7ab82}[color=c2]{color:#f2713c}[bgcolor=c2],[hcolor=c2]:hover{background-color:#f2713c}[border=c2]{border:1px solid #f2713c}[color=c3]{color:#ffd006}[bgcolor=c3],[hcolor=c3]:hover{background-color:#ffd006}[border=c3]{border:1px solid #ffd006}[color=c4]{color:#94c5aa}[bgcolor=c4],[hcolor=c4]:hover{background-color:#94c5aa}[border=c4]{border:1px solid #94c5aa}[color=c5]{color:#2a9d8f}[bgcolor=c5],[hcolor=c5]:hover{background-color:#2a9d8f}[border=c5]{border:1px solid #2a9d8f}[color=c6]{color:#78acd8}[bgcolor=c6],[hcolor=c6]:hover{background-color:#78acd8}[border=c6]{border:1px solid #78acd8}[color=c7]{color:#525a9e}[bgcolor=c7],[hcolor=c7]:hover{background-color:#525a9e}[border=c7]{border:1px solid #525a9e}[color=c8]{color:#6a2459}[bgcolor=c8],[hcolor=c8]:hover{background-color:#6a2459}[border=c8]{border:1px solid #6a2459}[color=c9]{color:#74729e}[bgcolor=c9],[hcolor=c9]:hover{background-color:#74729e}[border=c9]{border:1px solid #74729e}.mat-menu-content{padding:0}.mat-menu-item{height:inherit;width:inherit;background-color:#fff;padding:0;cursor:default;box-shadow:0 4px 10px #0000001c}.mat-menu-item:hover{background-color:#fff!important;cursor:default;box-shadow:none!important}.outline-none{outline:none}.mat-menu-item:hover:not([disabled]),.mat-menu-item.cdk-program-focused:not([disabled]),.mat-menu-item.cdk-keyboard-focused:not([disabled]),.mat-menu-item-highlighted:not([disabled]){background-color:#fff!important;cursor:default;box-shadow:none!important}:host ::ng-deep .mat-button{max-width:1px;max-height:1px;min-width:1px;min-height:1px;padding:0;margin:0}:host{position:absolute;max-width:1px;max-height:1px;display:flex}.button-trigger{padding:0;border:none;height:1px;width:1px}::ng-deep .rounded-component .mat-menu-content{border-radius:10px}::ng-deep .rounded-component{border-radius:10px}::ng-deep .no-background .rounded-component{position:fixed}.popover-content{border:1px solid #dfe3e9}\n"] }]
337
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { data: [{
338
+ type: Input
339
+ }], menuClosed: [{
340
+ type: Output
341
+ }], menuOpened: [{
342
+ type: Output
343
+ }], trigger: [{
344
+ type: ViewChild,
345
+ args: [MatMenuTrigger]
346
+ }], hostStyleTop: [{
347
+ type: HostBinding,
348
+ args: ['style.top']
349
+ }], hostStyleBorderRadius: [{
350
+ type: HostBinding,
351
+ args: ['style.border-radius']
352
+ }], hostStyleLeft: [{
353
+ type: HostBinding,
354
+ args: ['style.left']
355
+ }], hostStyleZIndex: [{
356
+ type: HostBinding,
357
+ args: ['style.z-index']
358
+ }], hostStyleTransition: [{
359
+ type: HostBinding,
360
+ args: ['style.transition']
361
+ }], hostStyleWidth: [{
362
+ type: HostBinding,
363
+ args: ['style.width']
364
+ }], hostStyleMaxWidth: [{
365
+ type: HostBinding,
366
+ args: ['style.max-width']
367
+ }], hostStylePointerEvents: [{
368
+ type: HostBinding,
369
+ args: ['style.pointer-events']
370
+ }], hostClassShow: [{
371
+ type: HostBinding,
372
+ args: ['class.tooltip-show']
373
+ }], hostClassShadow: [{
374
+ type: HostBinding,
375
+ args: ['class.tooltip-shadow']
376
+ }], hostClassLight: [{
377
+ type: HostBinding,
378
+ args: ['class.tooltip-light']
379
+ }], show: [{
380
+ type: Input
381
+ }], close: [{
382
+ type: Input
383
+ }] } });
384
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvcG9wbWVudS9zcmMvcG9wbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvcG9wbWVudS9zcmMvcG9wbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixJQUFJLGFBQWEsRUFBRSxvQkFBb0IsSUFBSSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3SCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBVW5FLE1BQU0sT0FBTyxnQkFBZ0I7SUFpSU47SUFBNEI7SUFBNkM7SUFoSW5GLElBQUksQ0FBTTtJQUNuQixNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUM1QixnQkFBZ0IsR0FBdUIsS0FBSyxDQUFDO0lBQzdDLG1CQUFtQixHQUF1QixLQUFLLENBQUM7SUFDaEQsaUJBQWlCLEdBQXVCLFNBQVMsQ0FBQztJQUNsRCxrQkFBa0IsR0FBdUIsU0FBUyxDQUFDO0lBQ25ELFVBQVUsR0FBdUIsU0FBUyxDQUFDO0lBQzNDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDZCxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ0wsVUFBVSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBQ3hELFVBQVUsR0FBc0Is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LFdBQVc7dUJBQUMsb0JBQW9CO2dCQUNJLGVBQWU7c0JBQW5ELFdBQVc7dUJBQUMsc0JBQXNCO2dCQUNDLGNBQWM7c0JBQWpELFdBQVc7dUJBQUMscUJBQXFCO2dCQVNyQixJQUFJO3NCQUFoQixLQUFLO2dCQU9PLEtBQUs7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmLCBOZ1N0eWxlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0TGVnYWN5TWVudU1vZHVsZSBhcyBNYXRNZW51TW9kdWxlLCBNYXRMZWdhY3lNZW51VHJpZ2dlciBhcyBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1tZW51JztcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2J1dHRvbic7XG5cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnYXAtcG9wbWVudScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BvcG1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3BvcG1lbnUuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtCdXR0b25Db21wb25lbnQsIE1hdE1lbnVNb2R1bGUsIE5nU3R5bGUsIE5nVGVtcGxhdGVPdXRsZXQsIE5nSWZdLFxufSlcbmV4cG9ydCBjbGFzcyBQb3BtZW51Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQElucHV0KCkgZGF0YTogYW55O1xuICAgIGV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBhcnJvd1RvcFBvc2l0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnNTAlJztcbiAgICBhcnJvd0JvdHRvbVBvc2l0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnNTAlJztcbiAgICBhcnJvd0xlZnRQb3NpdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGFycm93UmlnaHRQb3NpdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGFycm93Q2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBiZWxvdyA9IGZhbHNlO1xuICAgIGJlZm9yZSA9IGZhbHNlO1xuICAgIEBPdXRwdXQoKSBtZW51Q2xvc2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBtZW51T3BlbmVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBWaWV3Q2hpbGQoTWF0TWVudVRyaWdnZXIpIHRyaWdnZXIhOiBNYXRNZW51VHJpZ2dlcjtcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLnRvcCcpIGhvc3RTdHlsZVRvcCA9ICcnO1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUuYm9yZGVyLXJhZGl1cycpIGhvc3RTdHlsZUJvcmRlclJhZGl1cz0gJyc7XG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5sZWZ0JykgaG9zdFN0eWxlTGVmdD0gJyc7XG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS56LWluZGV4JykgaG9zdFN0eWxlWkluZGV4ID0gMDtcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLnRyYW5zaXRpb24nKSBob3N0U3R5bGVUcmFuc2l0aW9uID0gJyc7XG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS53aWR0aCcpIGhvc3RTdHlsZVdpZHRoID0gJyc7XG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXgtd2lkdGgnKSBob3N0U3R5bGVNYXhXaWR0aCA9ICcnO1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUucG9pbnRlci1ldmVudHMnKSBob3N0U3R5bGVQb2ludGVyRXZlbnRzID0gJyc7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50b29sdGlwLXNob3cnKSBob3N0Q2xhc3NTaG93ID0gZmFsc2U7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50b29sdGlwLXNoYWRvdycpIGhvc3RDbGFzc1NoYWRvdyA9IGZhbHNlO1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MudG9vbHRpcC1saWdodCcpIGhvc3RDbGFzc0xpZ2h0ID0gZmFsc2U7XG4gICAgdmlld0luaXQgPSBmYWxzZTtcblxuICAgIF9zaG93ID0gZmFsc2U7XG5cbiAgICBnZXQgc2hvdygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3c7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHNob3codmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNldFBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2hvdyA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBjbG9zZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlci5jbG9zZU1lbnUoKTtcbiAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtZW51T3BlbiA9IGZhbHNlO1xuXG4gICAgZ2V0IGFycm93KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLm9wdGlvbnMuYXJyb3cgJiYgdGhpcy5ib3JkZXI7XG4gICAgfVxuXG4gICAgZ2V0IGFycm93T2Zmc2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLm9wdGlvbnMuYXJyb3dPZmZzZXQ7XG4gICAgfVxuXG4gICAgZ2V0IGFycm93UG9zaXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEub3B0aW9ucy5hcnJvd1Bvc2l0aW9uO1xuICAgIH1cblxuICAgIGdldCBhdXRvUGxhY2VtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLm9wdGlvbnMuYXV0b1BsYWNlbWVudDtcbiAgICB9XG5cbiAgICBnZXQgYmFja2dyb3VuZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zLmFwUG9wbWVudUJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgZ2V0IGJvcmRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zLmFwUG9wbWVudUJvcmRlcjtcbiAgICB9XG5cbiAgICBnZXQgZWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5lbGVtZW50O1xuICAgIH1cblxuICAgIGdldCBlbGVtZW50UG9zaXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEuZWxlbWVudFBvc2l0aW9uO1xuICAgIH1cblxuICAgIGdldCBoYXNCYWNrZHJvcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zLmhhc0JhY2tkcm9wO1xuICAgIH1cblxuICAgIGdldCBiYWNrZHJvcENsYXNzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLm9wdGlvbnMuYmFja2Ryb3BDbGFzcztcbiAgICB9XG5cbiAgICBnZXQgaXNUaGVtZUxpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zWyd0aGVtZSddID09PSAnbGlnaHQnO1xuICAgIH1cblxuICAgIGdldCBvcHRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLm9wdGlvbnM7XG4gICAgfVxuXG4gICAgZ2V0IHBhbmVsQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEub3B0aW9ucy5wYW5lbENsYXNzO1xuICAgIH1cblxuICAgIGdldCBwbGFjZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEub3B0aW9ucy5wbGFjZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0IHJvdW5kZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEub3B0aW9ucy5yb3VuZGVkO1xuICAgIH1cblxuICAgIGdldCBzaGFkb3coKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEub3B0aW9ucy5zaGFkb3c7XG4gICAgfVxuXG4gICAgZ2V0IHRvb2x0aXBPZmZzZXQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcih0aGlzLmRhdGEub3B0aW9ucy5vZmZzZXQpO1xuICAgIH1cblxuICAgIGdldCBvZmZzZXRTa2lkZGluZygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTnVtYmVyKHRoaXMuZGF0YS5vcHRpb25zLm9mZnNldHMuc2tpZGRpbmcpIHx8IDA7XG4gICAgfVxuXG4gICAgZ2V0IG9mZnNldERpc3RhbmNlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBOdW1iZXIodGhpcy5kYXRhLm9wdGlvbnMub2Zmc2V0cy5kaXN0YW5jZSB8fCAwKTtcbiAgICB9XG5cbiAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEudmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMudmlld0luaXQgPSB0cnVlO1xuICAgICAgICBtZXJnZSh0aGlzLnRyaWdnZXIubWVudU9wZW5lZCwgdGhpcy50cmlnZ2VyLm1lbnVDbG9zZWQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1lbnVPcGVuID0gdGhpcy50cmlnZ2VyLm1lbnVPcGVuO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbk1lbnVDbG9zZWQoKSB7XG4gICAgICAgIC8vIHdlIHNldCBhIHRpbWVvdXQgdG8gd2FpdCBmb3IgdGhlIG1lbnUgdG8gYmUgcmVhbGx5IGNsb3NlZFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMubWVudUNsb3NlZC5lbWl0KCksIDIwMCk7XG4gICAgfVxuXG4gICAgb25NZW51T3BlbmVkKCkge1xuICAgICAgICAvLyB3ZSBzZXQgYSB0aW1lb3V0IHRvIHdhaXQgZm9yIHRoZSBtZW51IHRvIGJlIHJlYWxseSBvcGVuZWRcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm1lbnVPcGVuZWQuZW1pdCgpLCAxMDApO1xuICAgIH1cblxuICAgIHNldEhvc3RTdHlsZShwbGFjZW1lbnQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBpc1N2ZyA9IHRoaXMuZWxlbWVudCBpbnN0YW5jZW9mIFNWR0VsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHRvb2x0aXAgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgaXNDdXN0b21Qb3NpdGlvbiA9ICF0aGlzLmVsZW1lbnRQb3NpdGlvbi54O1xuXG4gICAgICAgIGxldCBlbGVtZW50SGVpZ2h0ID0gIXRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQgPyB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0IDogdGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgbGV0IGVsZW1lbnRXaWR0aCA9ICF0aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGggPyB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggOiB0aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIGNvbnN0IHRvb2x0aXBIZWlnaHQgPSB0b29sdGlwLmNsaWVudEhlaWdodDtcbiAgICAgICAgY29uc3QgdG9vbHRpcFdpZHRoID0gdG9vbHRpcC5jbGllbnRXaWR0aDtcbiAgICAgICAgY29uc3Qgc2Nyb2xsWSA9IHdpbmRvdy5wYWdlWU9mZnNldDtcblxuICAgICAgICBsZXQgdG9wU3R5bGU7XG4gICAgICAgIGxldCBsZWZ0U3R5bGU7XG5cbiAgICAgICAgaWYgKGlzQ3VzdG9tUG9zaXRpb24pIHtcbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQgJiYgcGxhY2VtZW50LnNwbGl0KCcgJylbMF0gPT09ICd0b3AnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWxvdyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBsYWNlbWVudCAmJiBwbGFjZW1lbnQuc3BsaXQoJyAnKVswXSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJlbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsZW1lbnRIZWlnaHQgPSAwO1xuICAgICAgICAgICAgZWxlbWVudFdpZHRoID0gMDtcbiAgICAgICAgICAgIHRvcFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24udG9wO1xuICAgICAgICAgICAgbGVmdFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24ubGVmdDtcbiAgICAgICAgICAgIGlmICh0aGlzLmFycm93ICYmIHRoaXMuYXJyb3dQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dDbGFzcyA9ICdhcnJvdy0nICsgdGhpcy5hcnJvd1Bvc2l0aW9uO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5hcnJvd1Bvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFycm93TGVmdFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcnJvd1JpZ2h0UG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFycm93Qm90dG9tUG9zaXRpb24gPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFycm93VG9wUG9zaXRpb24gPSB0aGlzLmFycm93T2Zmc2V0ICsgJyUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFycm93TGVmdFBvc2l0aW9uID0gdGhpcy5hcnJvd09mZnNldCArICclJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dSaWdodFBvc2l0aW9uID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcnJvd0JvdHRvbVBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcnJvd1RvcFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHBsYWNlbWVudC5zcGxpdCgnICcpWzBdID09PSAndG9wJykge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVsb3cgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0b3BTdHlsZSA9IHRoaXMuZWxlbWVudFBvc2l0aW9uLnRvcCAtIHRoaXMudG9vbHRpcE9mZnNldCAtIHRoaXMub2Zmc2V0RGlzdGFuY2U7XG4gICAgICAgICAgICAgICAgdG9wU3R5bGUgKz0gODtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBsYWNlbWVudC5zcGxpdCgnICcpWzBdID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVsb3cgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvcFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24uYm90dG9tICsgdGhpcy50b29sdGlwT2Zmc2V0ICsgdGhpcy5vZmZzZXREaXN0YW5jZTtcbiAgICAgICAgICAgICAgICAvLyBXZSByZW1vdmUgOHB4IGR1ZSB0byB0aGUgbWFyZ2luLXRvcCB3ZSBwdXQgdG8gZGlzcGxheSB0aGUgYXJyb3cuXG4gICAgICAgICAgICAgICAgdG9wU3R5bGUgLT0gODtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBsYWNlbWVudC5zcGxpdCgnICcpWzBdID09PSAnbGVmdCcpIHtcbiAgICAgICAgICAgICAgICBsZWZ0U3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi5sZWZ0IC0gdG9vbHRpcFdpZHRoIC0gdGhpcy50b29sdGlwT2Zmc2V0IC0gdGhpcy5vZmZzZXREaXN0YW5jZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBsYWNlbWVudC5zcGxpdCgnICcpWzBdID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICAgICAgbGVmdFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24ubGVmdCArIGVsZW1lbnRXaWR0aCArIHRoaXMudG9vbHRpcE9mZnNldCArIHRoaXMub2Zmc2V0RGlzdGFuY2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQuc3BsaXQoJyAnKVswXSA9PT0gJ2xlZnQnIHx8IHBsYWNlbWVudC5zcGxpdCgnICcpWzBdID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICAgICAgdG9wU3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi50b3AgKyBzY3JvbGxZICsgZWxlbWVudEhlaWdodCAvIDIgLSB0b29sdGlwLmNsaWVudEhlaWdodCAvIDI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdyaWdodCBib3R0b20nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWxvdyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWZvcmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Q2xhc3MgPSAnYXJyb3ctbGVmdCc7XG4gICAgICAgICAgICAgICAgdG9wU3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi50b3AgKyBzY3JvbGxZICsgdGhpcy5vZmZzZXRTa2lkZGluZztcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93UmlnaHRQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93TGVmdFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dCb3R0b21Qb3NpdGlvbiA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93VG9wUG9zaXRpb24gPSB0aGlzLmFycm93T2Zmc2V0ID8gdGhpcy5hcnJvd09mZnNldCArICclJyA6IGVsZW1lbnRIZWlnaHQgLyAyICsgJ3B4JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBsYWNlbWVudCA9PT0gJ2xlZnQgYm90dG9tJykge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVsb3cgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuYmVmb3JlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Q2xhc3MgPSAnYXJyb3ctcmlnaHQnO1xuICAgICAgICAgICAgICAgIHRvcFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24udG9wICsgc2Nyb2xsWSArIHRoaXMub2Zmc2V0U2tpZGRpbmc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0xlZnRQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93UmlnaHRQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Qm90dG9tUG9zaXRpb24gPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1RvcFBvc2l0aW9uID0gdGhpcy5hcnJvd09mZnNldCA/IHRoaXMuYXJyb3dPZmZzZXQgKyAnJScgOiBlbGVtZW50SGVpZ2h0IC8gMiArICdweCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdyaWdodCB0b3AnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWxvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuYmVmb3JlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0NsYXNzID0gJ2Fycm93LWxlZnQnO1xuICAgICAgICAgICAgICAgIHRvcFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24udG9wICsgZWxlbWVudEhlaWdodCArIHNjcm9sbFkgKyB0aGlzLm9mZnNldFNraWRkaW5nO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dMZWZ0UG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1JpZ2h0UG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1RvcFBvc2l0aW9uID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dCb3R0b21Qb3NpdGlvbiA9IHRoaXMuYXJyb3dPZmZzZXQgPyB0aGlzLmFycm93T2Zmc2V0ICsgJyUnIDogLSh0b29sdGlwLmNsaWVudEhlaWdodCAtIGVsZW1lbnRIZWlnaHQgLyAyKSArICdweCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdsZWZ0IHRvcCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJlbG93ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWZvcmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dDbGFzcyA9ICdhcnJvdy1yaWdodCc7XG4gICAgICAgICAgICAgICAgdG9wU3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi50b3AgKyBlbGVtZW50SGVpZ2h0ICsgc2Nyb2xsWSArIHRoaXMub2Zmc2V0U2tpZGRpbmc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1JpZ2h0UG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0xlZnRQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93VG9wUG9zaXRpb24gPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0JvdHRvbVBvc2l0aW9uID0gdGhpcy5hcnJvd09mZnNldCA/IHRoaXMuYXJyb3dPZmZzZXQgKyAnJScgOiAtKHRvb2x0aXAuY2xpZW50SGVpZ2h0IC0gZWxlbWVudEhlaWdodCAvIDIpICsgJ3B4JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBsYWNlbWVudCA9PT0gJ2JvdHRvbSByaWdodCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJlZm9yZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuYmVsb3cgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dDbGFzcyA9ICdhcnJvdy10b3AnO1xuICAgICAgICAgICAgICAgIGxlZnRTdHlsZSA9IHRoaXMuZWxlbWVudFBvc2l0aW9uLmxlZnQgKyB0aGlzLm9mZnNldFNraWRkaW5nO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dUb3BQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93UmlnaHRQb3NpdGlvbiA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93TGVmdFBvc2l0aW9uID0gdGhpcy5hcnJvd09mZnNldCA/IHRoaXMuYXJyb3dPZmZzZXQgKyAnJScgOiBlbGVtZW50V2lkdGggLyAyIC0gNC41ICsgJ3B4JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBsYWNlbWVudCA9PT0gJ2JvdHRvbSBsZWZ0Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVmb3JlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmJlbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Q2xhc3MgPSAnYXJyb3ctdG9wJztcbiAgICAgICAgICAgICAgICBsZWZ0U3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi5yaWdodCArIHRoaXMub2Zmc2V0U2tpZGRpbmc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1RvcFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dMZWZ0UG9zaXRpb24gPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1JpZ2h0UG9zaXRpb24gPSB0aGlzLmFycm93T2Zmc2V0ID8gdGhpcy5hcnJvd09mZnNldCArICclJyA6IGVsZW1lbnRXaWR0aCAvIDIgLSAyLjUgKyAncHgnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGxhY2VtZW50ID09PSAndG9wIHJpZ2h0Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVmb3JlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWxvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dDbGFzcyA9ICdhcnJvdy1ib3R0b20nO1xuICAgICAgICAgICAgICAgIGxlZnRTdHlsZSA9IHRoaXMuZWxlbWVudFBvc2l0aW9uLmxlZnQgKyB0aGlzLm9mZnNldFNraWRkaW5nO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dCb3R0b21Qb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93VG9wUG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1JpZ2h0UG9zaXRpb24gPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0xlZnRQb3NpdGlvbiA9IHRoaXMuYXJyb3dPZmZzZXQgPyB0aGlzLmFycm93T2Zmc2V0ICsgJyUnIDogZWxlbWVudFdpZHRoIC8gMiAtIDQuNSArICdweCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQgPT09ICd0b3AgbGVmdCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJlZm9yZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWxvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dDbGFzcyA9ICdhcnJvdy1ib3R0b20nO1xuICAgICAgICAgICAgICAgIGxlZnRTdHlsZSA9IHRoaXMuZWxlbWVudFBvc2l0aW9uLnJpZ2h0ICsgdGhpcy5vZmZzZXRTa2lkZGluZztcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Qm90dG9tUG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1RvcFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dMZWZ0UG9zaXRpb24gPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1JpZ2h0UG9zaXRpb24gPSB0aGlzLmFycm93T2Zmc2V0ID8gdGhpcy5hcnJvd09mZnNldCArICclJyA6IGVsZW1lbnRXaWR0aCAvIDIgLSAyLjUgKyAncHgnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBsaW5lIGlzIFBVUkUgTUFHSUMgYW5kIHN1cGVyIGltcG9ydGFudC4gSXQgYWxsb3dzIHRvIGZvcmNlIG1hdC1tZW51XG4gICAgICAgIC8vIHRvIHJlcG9zaXRpb24gdGhlIG1lbnUgd2l0aCB0aGUgbmV3IHhQb3NpdGlvbiAvIHlQb3NpdGlvbi5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgY29uc3QgdG9wRWRnZSA9IHRvcFN0eWxlO1xuICAgICAgICBjb25zdCBib3R0b21FZGdlID0gdG9wU3R5bGUgKyB0b29sdGlwSGVpZ2h0O1xuICAgICAgICBjb25zdCBsZWZ0RWRnZSA9IGxlZnRTdHlsZTtcbiAgICAgICAgY29uc3QgcmlnaHRFZGdlID0gbGVmdFN0eWxlICsgdG9vbHRpcFdpZHRoO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICh0b3BFZGdlIDwgMCB8fCBib3R0b21FZGdlID4gZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQgfHwgbGVmdEVkZ2UgPCAwIHx8IHJpZ2h0RWRnZSA+IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgpICYmXG4gICAgICAgICAgICB0aGlzLmF1dG9QbGFjZW1lbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhvc3RTdHlsZVRvcCA9IHRvcFN0eWxlICsgJ3B4JztcbiAgICAgICAgdGhpcy5ob3N0U3R5bGVMZWZ0ID0gbGVmdFN0eWxlICsgJ3B4JztcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgc2V0UGxhY2VtZW50Q2xhc3MocGxhY2VtZW50Pzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0b29sdGlwLScgKyAocGxhY2VtZW50ID8gcGxhY2VtZW50LnNwbGl0KCcgJylbMF0gOiBwbGFjZW1lbnQpKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgJ3lQb3NpdGlvbi0nICsgKHBsYWNlbWVudCAmJiBwbGFjZW1lbnQuc3BsaXQoJyAnKS5sZW5ndGggPT09IDIgPyBwbGFjZW1lbnQuc3BsaXQoJyAnKVsxXSA6ICdjZW50ZXInKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlbiAmJiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBjb25zdCB0b29sdGlwQXJyb3cgPSBBcnJheS5mcm9tKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNoaWxkcmVuKS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGNoaWxkOiBFbGVtZW50KSA9PiBjaGlsZC5nZXRBdHRyaWJ1dGUoJ2lkJykgPT09ICd0b29sdGlwQXJyb3cnXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKHRvb2x0aXBBcnJvdyAmJiB0b29sdGlwQXJyb3cubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlbWVudCAmJiBwbGFjZW1lbnQuc3BsaXQoJyAnKS5sZW5ndGggPT09IDIgJiYgcGxhY2VtZW50LnNwbGl0KCcgJylbMV0gPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodG9vbHRpcEFycm93WzBdLCAndG9wJywgdGhpcy5hcnJvd1RvcFBvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBsYWNlbWVudCAmJiBwbGFjZW1lbnQuc3BsaXQoJyAnKS5sZW5ndGggPT09IDIgJiYgcGxhY2VtZW50LnNwbGl0KCcgJylbMV0gPT09ICd0b3AnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodG9vbHRpcEFycm93WzBdLCAndG9wJywgdGhpcy5hcnJvd0JvdHRvbVBvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRQb3NpdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2V0SG9zdFN0eWxlKHRoaXMucGxhY2VtZW50KSkge1xuICAgICAgICAgICAgdGhpcy5zZXRQbGFjZW1lbnRDbGFzcyh0aGlzLnBsYWNlbWVudCk7XG4gICAgICAgICAgICBpZiAodGhpcy52aWV3SW5pdCkge1xuICAgICAgICAgICAgICAgIC8vIFdlIGRpZCB0aGlzIGluIG9yZGVyIHRvIHJlc2V0IG92ZXJsYXlSZWYgKG11bHRpIHdlYiBjb21wb25lbnQgbmVlZGVkIHdpdGggbWF0bWVudSBhbmQgY2RrIG92ZXJsYXkpXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudHJpZ2dlclsnX292ZXJsYXlSZWYnXSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXJbJ19vdmVybGF5UmVmJ10uZGlzcG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXJbJ19vdmVybGF5UmVmJ10gPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIub3Blbk1lbnUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBsYWNlbWVudHMgPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBsYWNlbWVudCBvZiBwbGFjZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2V0SG9zdFN0eWxlKHBsYWNlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRQbGFjZW1lbnRDbGFzcyhwbGFjZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52aWV3SW5pdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyLm9wZW5NZW51KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxidXR0b25cbiAgICBpZD1cIm1lbnVUcmlnZ2VyXCJcbiAgICBjbGFzcz1cImJ1dHRvbi10cmlnZ2VyXCJcbiAgICBtYXQtYnV0dG9uXG4gICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIlxuICAgIChtZW51Q2xvc2VkKT1cIm9uTWVudUNsb3NlZCgpXCJcbiAgICAobWVudU9wZW5lZCk9XCJvbk1lbnVPcGVuZWQoKVwiPjwvYnV0dG9uPlxuPG1hdC1tZW51XG4gICAgI21lbnU9XCJtYXRNZW51XCJcbiAgICBbeVBvc2l0aW9uXT1cIiFiZWxvdyA/ICdhYm92ZScgOiAnYmVsb3cnXCJcbiAgICBbeFBvc2l0aW9uXT1cIiFiZWZvcmUgPyAnYWZ0ZXInIDogJ2JlZm9yZSdcIlxuICAgIFtvdmVybGFwVHJpZ2dlcl09XCJmYWxzZVwiXG4gICAgW2hhc0JhY2tkcm9wXT1cImhhc0JhY2tkcm9wXCJcbiAgICBbYmFja2Ryb3BDbGFzc109XCJiYWNrZHJvcENsYXNzXCJcbiAgICBjbGFzcz1cInBvcC1tZW51IHt7IGFycm93ID8gJ2Fycm93LWJlZm9yZSAnICsgYXJyb3dDbGFzcyA6ICcnIH19IHt7IHNoYWRvdyA/ICdzaGFkb3cnIDogJycgfX0ge3tcbiAgICAgICAgYm9yZGVyID8gJycgOiBzaGFkb3cgPyAnc2hhZG93LW5vLWJvcmRlcicgOiAnJ1xuICAgIH19IHt7IHJvdW5kZWQgPyAncm91bmRlZC1jb21wb25lbnQnIDogJycgfX0ge3sgYmFja2dyb3VuZCA/ICcnIDogJ25vLWJhY2tncm91bmQnIH19IHt7IHBhbmVsQ2xhc3MgfX1cIj5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiYXJyb3dcIlxuICAgICAgICBjbGFzcz1cInt7IGFycm93ID8gJ2Fycm93LWJlZm9yZSAnICsgYXJyb3dDbGFzcyA6ICcnIH19XCJcbiAgICAgICAgW25nU3R5bGVdPVwieyBsZWZ0OiBhcnJvd0xlZnRQb3NpdGlvbiwgcmlnaHQ6IGFycm93UmlnaHRQb3NpdGlvbiwgdG9wOiBhcnJvd1RvcFBvc2l0aW9uLCBib3R0b206IGFycm93Qm90dG9tUG9zaXRpb24gfVwiPjwvZGl2PlxuICAgIDxkaXZcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIGNsYXNzPVwie3sgcm91bmRlZCA/ICdyb3VuZGVkLWNvbXBvbmVudCcgOiAnJyB9fSBvdXRsaW5lLW5vbmVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInt7IGJvcmRlciA/ICdwb3BvdmVyLWNvbnRlbnQgJyA6ICcnIH19IHt7IHJvdW5kZWQgPyAncm91bmRlZC1jb21wb25lbnQnIDogJycgfX1cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2YWx1ZTsgY29udGV4dDogeyBtZW51OiB0aGlzIH1cIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbWF0LW1lbnU+XG4iXX0=