@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
@@ -1,373 +0,0 @@
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
- get show() {
10
- return this._show;
11
- }
12
- set show(value) {
13
- if (value) {
14
- this.setPosition();
15
- }
16
- this._show = value;
17
- }
18
- set close(value) {
19
- if (value) {
20
- setTimeout(() => {
21
- this.trigger.closeMenu();
22
- }, 100);
23
- }
24
- }
25
- get arrow() {
26
- return this.data.options.arrow && this.border;
27
- }
28
- get arrowOffset() {
29
- return this.data.options.arrowOffset;
30
- }
31
- get arrowPosition() {
32
- return this.data.options.arrowPosition;
33
- }
34
- get autoPlacement() {
35
- return this.data.options.autoPlacement;
36
- }
37
- get background() {
38
- return this.data.options.apPopmenuBackground;
39
- }
40
- get border() {
41
- return this.data.options.apPopmenuBorder;
42
- }
43
- get element() {
44
- return this.data.element;
45
- }
46
- get elementPosition() {
47
- return this.data.elementPosition;
48
- }
49
- get hasBackdrop() {
50
- return this.data.options.hasBackdrop;
51
- }
52
- get backdropClass() {
53
- return this.data.options.backdropClass;
54
- }
55
- get isThemeLight() {
56
- return this.options['theme'] === 'light';
57
- }
58
- get options() {
59
- return this.data.options;
60
- }
61
- get panelClass() {
62
- return this.data.options.panelClass;
63
- }
64
- get placement() {
65
- return this.data.options.placement;
66
- }
67
- get rounded() {
68
- return this.data.options.rounded;
69
- }
70
- get shadow() {
71
- return this.data.options.shadow;
72
- }
73
- get tooltipOffset() {
74
- return Number(this.data.options.offset);
75
- }
76
- get offsetSkidding() {
77
- return Number(this.data.options.offsets.skidding) || 0;
78
- }
79
- get offsetDistance() {
80
- return Number(this.data.options.offsets.distance || 0);
81
- }
82
- get value() {
83
- return this.data.value;
84
- }
85
- constructor(renderer, elementRef, changeDetectorRef) {
86
- this.renderer = renderer;
87
- this.elementRef = elementRef;
88
- this.changeDetectorRef = changeDetectorRef;
89
- this.events = new EventEmitter();
90
- this.arrowTopPosition = '50%';
91
- this.arrowBottomPosition = '50%';
92
- this.menuClosed = new EventEmitter();
93
- this.menuOpened = new EventEmitter();
94
- this.viewInit = false;
95
- this._show = false;
96
- }
97
- ngAfterViewInit() {
98
- this.viewInit = true;
99
- merge(this.trigger.menuOpened, this.trigger.menuClosed).subscribe(() => {
100
- this.menuOpen = this.trigger.menuOpen;
101
- });
102
- }
103
- onMenuClosed() {
104
- // we set a timeout to wait for the menu to be really closed
105
- setTimeout(() => this.menuClosed.emit(), 200);
106
- }
107
- onMenuOpened() {
108
- // we set a timeout to wait for the menu to be really opened
109
- setTimeout(() => this.menuOpened.emit(), 100);
110
- }
111
- setHostStyle(placement) {
112
- const isSvg = this.element instanceof SVGElement;
113
- const tooltip = this.elementRef.nativeElement;
114
- const isCustomPosition = !this.elementPosition.x;
115
- let elementHeight = !this.element.offsetHeight
116
- ? this.element.getBoundingClientRect().height
117
- : this.element.offsetHeight;
118
- let elementWidth = !this.element.offsetWidth
119
- ? this.element.getBoundingClientRect().width
120
- : this.element.offsetWidth;
121
- const tooltipHeight = tooltip.clientHeight;
122
- const tooltipWidth = tooltip.clientWidth;
123
- const scrollY = window.pageYOffset;
124
- let topStyle;
125
- let leftStyle;
126
- if (isCustomPosition) {
127
- if (placement && placement.split(' ')[0] === 'top') {
128
- this.below = false;
129
- }
130
- if (placement && placement.split(' ')[0] === 'bottom') {
131
- this.below = true;
132
- }
133
- elementHeight = 0;
134
- elementWidth = 0;
135
- topStyle = this.elementPosition.top;
136
- leftStyle = this.elementPosition.left;
137
- if (this.arrow && this.arrowPosition) {
138
- this.arrowClass = 'arrow-' + this.arrowPosition;
139
- switch (this.arrowPosition) {
140
- case 'left':
141
- case 'right':
142
- this.arrowLeftPosition = undefined;
143
- this.arrowRightPosition = undefined;
144
- this.arrowBottomPosition = 'auto';
145
- this.arrowTopPosition = this.arrowOffset + '%';
146
- break;
147
- case 'top':
148
- case 'bottom':
149
- this.arrowLeftPosition = this.arrowOffset + '%';
150
- this.arrowRightPosition = 'auto';
151
- this.arrowBottomPosition = undefined;
152
- this.arrowTopPosition = undefined;
153
- break;
154
- }
155
- }
156
- }
157
- else {
158
- if (placement.split(' ')[0] === 'top') {
159
- this.below = false;
160
- topStyle = this.elementPosition.top - this.tooltipOffset - this.offsetDistance;
161
- topStyle += 8;
162
- }
163
- if (placement.split(' ')[0] === 'bottom') {
164
- this.below = true;
165
- topStyle = this.elementPosition.bottom + this.tooltipOffset + this.offsetDistance;
166
- // We remove 8px due to the margin-top we put to display the arrow.
167
- topStyle -= 8;
168
- }
169
- if (placement.split(' ')[0] === 'left') {
170
- leftStyle = this.elementPosition.left - tooltipWidth - this.tooltipOffset - this.offsetDistance;
171
- }
172
- if (placement.split(' ')[0] === 'right') {
173
- leftStyle = this.elementPosition.left + elementWidth + this.tooltipOffset + this.offsetDistance;
174
- }
175
- if (placement.split(' ')[0] === 'left' || placement.split(' ')[0] === 'right') {
176
- topStyle = this.elementPosition.top + scrollY + elementHeight / 2 - tooltip.clientHeight / 2;
177
- }
178
- if (placement === 'right bottom') {
179
- this.below = true;
180
- this.before = false;
181
- this.arrowClass = 'arrow-left';
182
- topStyle = this.elementPosition.top + scrollY + this.offsetSkidding;
183
- this.arrowRightPosition = undefined;
184
- this.arrowLeftPosition = undefined;
185
- this.arrowBottomPosition = 'auto';
186
- this.arrowTopPosition = this.arrowOffset ? this.arrowOffset + '%' : elementHeight / 2 + 'px';
187
- }
188
- if (placement === 'left bottom') {
189
- this.below = true;
190
- this.before = true;
191
- this.arrowClass = 'arrow-right';
192
- topStyle = this.elementPosition.top + scrollY + this.offsetSkidding;
193
- this.arrowLeftPosition = undefined;
194
- this.arrowRightPosition = undefined;
195
- this.arrowBottomPosition = 'auto';
196
- this.arrowTopPosition = this.arrowOffset ? this.arrowOffset + '%' : elementHeight / 2 + 'px';
197
- }
198
- if (placement === 'right top') {
199
- this.below = false;
200
- this.before = false;
201
- this.arrowClass = 'arrow-left';
202
- topStyle = this.elementPosition.top + elementHeight + scrollY + this.offsetSkidding;
203
- this.arrowLeftPosition = undefined;
204
- this.arrowRightPosition = undefined;
205
- this.arrowTopPosition = 'auto';
206
- this.arrowBottomPosition = this.arrowOffset
207
- ? this.arrowOffset + '%'
208
- : -(tooltip.clientHeight - elementHeight / 2) + 'px';
209
- }
210
- if (placement === 'left top') {
211
- this.below = false;
212
- this.before = true;
213
- this.arrowClass = 'arrow-right';
214
- topStyle = this.elementPosition.top + elementHeight + scrollY + this.offsetSkidding;
215
- this.arrowRightPosition = undefined;
216
- this.arrowLeftPosition = undefined;
217
- this.arrowTopPosition = 'auto';
218
- this.arrowBottomPosition = this.arrowOffset
219
- ? this.arrowOffset + '%'
220
- : -(tooltip.clientHeight - elementHeight / 2) + 'px';
221
- }
222
- if (placement === 'bottom right') {
223
- this.before = false;
224
- this.below = true;
225
- this.arrowClass = 'arrow-top';
226
- leftStyle = this.elementPosition.left + this.offsetSkidding;
227
- this.arrowTopPosition = undefined;
228
- this.arrowRightPosition = 'auto';
229
- this.arrowLeftPosition = this.arrowOffset ? this.arrowOffset + '%' : elementWidth / 2 - 4.5 + 'px';
230
- }
231
- if (placement === 'bottom left') {
232
- this.before = true;
233
- this.below = true;
234
- this.arrowClass = 'arrow-top';
235
- leftStyle = this.elementPosition.right + this.offsetSkidding;
236
- this.arrowTopPosition = undefined;
237
- this.arrowLeftPosition = 'auto';
238
- this.arrowRightPosition = this.arrowOffset ? this.arrowOffset + '%' : elementWidth / 2 - 2.5 + 'px';
239
- }
240
- if (placement === 'top right') {
241
- this.before = false;
242
- this.below = false;
243
- this.arrowClass = 'arrow-bottom';
244
- leftStyle = this.elementPosition.left + this.offsetSkidding;
245
- this.arrowBottomPosition = undefined;
246
- this.arrowTopPosition = undefined;
247
- this.arrowRightPosition = 'auto';
248
- this.arrowLeftPosition = this.arrowOffset ? this.arrowOffset + '%' : elementWidth / 2 - 4.5 + 'px';
249
- }
250
- if (placement === 'top left') {
251
- this.before = true;
252
- this.below = false;
253
- this.arrowClass = 'arrow-bottom';
254
- leftStyle = this.elementPosition.right + this.offsetSkidding;
255
- this.arrowBottomPosition = undefined;
256
- this.arrowTopPosition = undefined;
257
- this.arrowLeftPosition = 'auto';
258
- this.arrowRightPosition = this.arrowOffset ? this.arrowOffset + '%' : elementWidth / 2 - 2.5 + 'px';
259
- }
260
- }
261
- // This line is PURE MAGIC and super important. It allows to force mat-menu
262
- // to reposition the menu with the new xPosition / yPosition.
263
- this.changeDetectorRef.detectChanges();
264
- const topEdge = topStyle;
265
- const bottomEdge = topStyle + tooltipHeight;
266
- const leftEdge = leftStyle;
267
- const rightEdge = leftStyle + tooltipWidth;
268
- if ((topEdge < 0 ||
269
- bottomEdge > document.body.clientHeight ||
270
- leftEdge < 0 ||
271
- rightEdge > document.body.clientWidth) &&
272
- this.autoPlacement) {
273
- return false;
274
- }
275
- this.hostStyleTop = topStyle + 'px';
276
- this.hostStyleLeft = leftStyle + 'px';
277
- return true;
278
- }
279
- setPlacementClass(placement) {
280
- this.renderer.addClass(this.elementRef.nativeElement, 'tooltip-' + (placement ? placement.split(' ')[0] : placement));
281
- this.renderer.addClass(this.elementRef.nativeElement, 'yPosition-' + (placement && placement.split(' ').length === 2 ? placement.split(' ')[1] : 'center'));
282
- if (this.elementRef.nativeElement.children && this.elementRef.nativeElement.children.length > 1) {
283
- const tooltipArrow = Array.from(this.elementRef.nativeElement.children).filter((child) => child.getAttribute('id') === 'tooltipArrow');
284
- if (tooltipArrow && tooltipArrow.length === 1) {
285
- if (placement && placement.split(' ').length === 2 && placement.split(' ')[1] === 'bottom') {
286
- this.renderer.setStyle(tooltipArrow[0], 'top', this.arrowTopPosition);
287
- }
288
- else if (placement && placement.split(' ').length === 2 && placement.split(' ')[1] === 'top') {
289
- this.renderer.setStyle(tooltipArrow[0], 'top', this.arrowBottomPosition);
290
- }
291
- }
292
- }
293
- }
294
- setPosition() {
295
- if (this.setHostStyle(this.placement)) {
296
- this.setPlacementClass(this.placement);
297
- if (this.viewInit) {
298
- // We did this in order to reset overlayRef (multi web component needed with matmenu and cdk overlay)
299
- if (this.trigger['_overlayRef']) {
300
- this.trigger['_overlayRef'].dispose();
301
- this.trigger['_overlayRef'] = null;
302
- }
303
- this.trigger.openMenu();
304
- }
305
- return;
306
- }
307
- else {
308
- const placements = ['top', 'right', 'bottom', 'left'];
309
- for (const placement of placements) {
310
- if (this.setHostStyle(placement)) {
311
- this.setPlacementClass(placement);
312
- if (this.viewInit) {
313
- this.trigger.openMenu();
314
- }
315
- return;
316
- }
317
- }
318
- }
319
- }
320
- }
321
- PopmenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: PopmenuComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
322
- PopmenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", 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 id=\"menuTrigger\" class=\"button-trigger\" mat-button\n [matMenuTriggerFor]=\"menu\" (menuClosed)=\"onMenuClosed()\" (menuOpened)=\"onMenuOpened()\">\n</button>\n<mat-menu #menu=\"matMenu\" [yPosition]=\"!below ? 'above': 'below'\" [xPosition]=\"!before? 'after': 'before'\" [overlapTrigger]=\"false\"\n [hasBackdrop]=\"hasBackdrop\"\n [backdropClass]=\"backdropClass\"\n class=\"pop-menu {{arrow ? 'arrow-before ' + arrowClass : ''}} {{shadow ? 'shadow' : ''}} {{border ? '' : (shadow ? 'shadow-no-border' : '')}} {{rounded ? 'rounded-component' : ''}} {{ background ? '' : 'no-background'}} {{panelClass}}\">\n\n <div *ngIf=\"arrow\" class=\"{{arrow ? 'arrow-before ' + arrowClass : ''}}\" [ngStyle]=\"{'left': arrowLeftPosition, 'right': arrowRightPosition, 'top': arrowTopPosition, 'bottom': arrowBottomPosition}\"></div>\n <div (click)=\"$event.stopPropagation()\" class=\"{{rounded ? 'rounded-component' : ''}} outline-none\">\n <div class=\"{{border ? 'popover-content ' : ''}} {{rounded ? 'rounded-component' : ''}}\">\n <ng-container *ngTemplateOutlet=\"value;context:{menu:this}\"></ng-container>\n </div>\n </div>\n</mat-menu>\n\n\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 });
323
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: PopmenuComponent, decorators: [{
324
- type: Component,
325
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ap-popmenu', standalone: true, imports: [ButtonComponent, MatMenuModule, NgStyle, NgTemplateOutlet, NgIf], template: "<button id=\"menuTrigger\" class=\"button-trigger\" mat-button\n [matMenuTriggerFor]=\"menu\" (menuClosed)=\"onMenuClosed()\" (menuOpened)=\"onMenuOpened()\">\n</button>\n<mat-menu #menu=\"matMenu\" [yPosition]=\"!below ? 'above': 'below'\" [xPosition]=\"!before? 'after': 'before'\" [overlapTrigger]=\"false\"\n [hasBackdrop]=\"hasBackdrop\"\n [backdropClass]=\"backdropClass\"\n class=\"pop-menu {{arrow ? 'arrow-before ' + arrowClass : ''}} {{shadow ? 'shadow' : ''}} {{border ? '' : (shadow ? 'shadow-no-border' : '')}} {{rounded ? 'rounded-component' : ''}} {{ background ? '' : 'no-background'}} {{panelClass}}\">\n\n <div *ngIf=\"arrow\" class=\"{{arrow ? 'arrow-before ' + arrowClass : ''}}\" [ngStyle]=\"{'left': arrowLeftPosition, 'right': arrowRightPosition, 'top': arrowTopPosition, 'bottom': arrowBottomPosition}\"></div>\n <div (click)=\"$event.stopPropagation()\" class=\"{{rounded ? 'rounded-component' : ''}} outline-none\">\n <div class=\"{{border ? 'popover-content ' : ''}} {{rounded ? 'rounded-component' : ''}}\">\n <ng-container *ngTemplateOutlet=\"value;context:{menu:this}\"></ng-container>\n </div>\n </div>\n</mat-menu>\n\n\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"] }]
326
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { data: [{
327
- type: Input
328
- }], menuClosed: [{
329
- type: Output
330
- }], menuOpened: [{
331
- type: Output
332
- }], trigger: [{
333
- type: ViewChild,
334
- args: [MatMenuTrigger]
335
- }], hostStyleTop: [{
336
- type: HostBinding,
337
- args: ['style.top']
338
- }], hostStyleBorderRadius: [{
339
- type: HostBinding,
340
- args: ['style.border-radius']
341
- }], hostStyleLeft: [{
342
- type: HostBinding,
343
- args: ['style.left']
344
- }], hostStyleZIndex: [{
345
- type: HostBinding,
346
- args: ['style.z-index']
347
- }], hostStyleTransition: [{
348
- type: HostBinding,
349
- args: ['style.transition']
350
- }], hostStyleWidth: [{
351
- type: HostBinding,
352
- args: ['style.width']
353
- }], hostStyleMaxWidth: [{
354
- type: HostBinding,
355
- args: ['style.max-width']
356
- }], hostStylePointerEvents: [{
357
- type: HostBinding,
358
- args: ['style.pointer-events']
359
- }], hostClassShow: [{
360
- type: HostBinding,
361
- args: ['class.tooltip-show']
362
- }], hostClassShadow: [{
363
- type: HostBinding,
364
- args: ['class.tooltip-shadow']
365
- }], hostClassLight: [{
366
- type: HostBinding,
367
- args: ['class.tooltip-light']
368
- }], show: [{
369
- type: Input
370
- }], close: [{
371
- type: Input
372
- }] } });
373
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvcG9wbWVudS9zcmMvcG9wbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvcG9wbWVudS9zcmMvcG9wbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2hFLE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLG1CQUFtQixJQUFJLGFBQWEsRUFBRSxvQkFBb0IsSUFBSSxjQUFjLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMzSCxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzNCLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBVWpFLE1BQU0sT0FBTyxnQkFBZ0I7SUE0QnpCLElBQUksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBYSxJQUFJLENBQUMsS0FBYztRQUM1QixJQUFJLEtBQUssRUFBRTtZQUNQLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFhLEtBQUssQ0FBQyxLQUFjO1FBQzdCLElBQUksS0FBSyxFQUFFO1lBQ1AsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzdCLENBQUMsRUFBRSxHQUFH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Q0FBQzt5SkFHakUsSUFBSTtzQkFBWixLQUFLO2dCQVNJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDb0IsT0FBTztzQkFBakMsU0FBUzt1QkFBQyxjQUFjO2dCQUNDLFlBQVk7c0JBQXJDLFdBQVc7dUJBQUMsV0FBVztnQkFDWSxxQkFBcUI7c0JBQXhELFdBQVc7dUJBQUMscUJBQXFCO2dCQUNQLGFBQWE7c0JBQXZDLFdBQVc7dUJBQUMsWUFBWTtnQkFDSyxlQUFlO3NCQUE1QyxXQUFXO3VCQUFDLGVBQWU7Z0JBQ0ssbUJBQW1CO3NCQUFuRCxXQUFXO3VCQUFDLGtCQUFrQjtnQkFDSCxjQUFjO3NCQUF6QyxXQUFXO3VCQUFDLGFBQWE7Z0JBQ00saUJBQWlCO3NCQUFoRCxXQUFXO3VCQUFDLGlCQUFpQjtnQkFDTyxzQkFBc0I7c0JBQTFELFdBQVc7dUJBQUMsc0JBQXNCO2dCQUNBLGFBQWE7c0JBQS9DLFdBQVc7dUJBQUMsb0JBQW9CO2dCQUNJLGVBQWU7c0JBQW5ELFdBQVc7dUJBQUMsc0JBQXNCO2dCQUNDLGNBQWM7c0JBQWpELFdBQVc7dUJBQUMscUJBQXFCO2dCQVNyQixJQUFJO3NCQUFoQixLQUFLO2dCQU9PLEtBQUs7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nSWYsIE5nU3R5bGUsIE5nVGVtcGxhdGVPdXRsZXR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0TGVnYWN5TWVudU1vZHVsZSBhcyBNYXRNZW51TW9kdWxlLCBNYXRMZWdhY3lNZW51VHJpZ2dlciBhcyBNYXRNZW51VHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LW1lbnUnO1xuaW1wb3J0IHttZXJnZX0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7QnV0dG9uQ29tcG9uZW50fSBmcm9tIFwiQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9idXR0b25cIjtcblxuQENvbXBvbmVudCh7XG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc2VsZWN0b3I6ICdhcC1wb3BtZW51JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcG9wbWVudS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcG9wbWVudS5jb21wb25lbnQuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0J1dHRvbkNvbXBvbmVudCwgTWF0TWVudU1vZHVsZSwgTmdTdHlsZSwgTmdUZW1wbGF0ZU91dGxldCwgTmdJZl0sXG59KVxuZXhwb3J0IGNsYXNzIFBvcG1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICBASW5wdXQoKSBkYXRhOiBhbnk7XG4gICAgZXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIGFycm93VG9wUG9zaXRpb24gPSAnNTAlJztcbiAgICBhcnJvd0JvdHRvbVBvc2l0aW9uID0gJzUwJSc7XG4gICAgYXJyb3dMZWZ0UG9zaXRpb246IHN0cmluZztcbiAgICBhcnJvd1JpZ2h0UG9zaXRpb246IHN0cmluZztcbiAgICBhcnJvd0NsYXNzOiBzdHJpbmc7XG4gICAgYmVsb3c7XG4gICAgYmVmb3JlO1xuICAgIEBPdXRwdXQoKSBtZW51Q2xvc2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBtZW51T3BlbmVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBWaWV3Q2hpbGQoTWF0TWVudVRyaWdnZXIpIHRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyO1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUudG9wJykgaG9zdFN0eWxlVG9wOiBzdHJpbmc7XG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5ib3JkZXItcmFkaXVzJykgaG9zdFN0eWxlQm9yZGVyUmFkaXVzOiBzdHJpbmc7XG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5sZWZ0JykgaG9zdFN0eWxlTGVmdDogc3RyaW5nO1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUuei1pbmRleCcpIGhvc3RTdHlsZVpJbmRleDogbnVtYmVyO1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUudHJhbnNpdGlvbicpIGhvc3RTdHlsZVRyYW5zaXRpb246IHN0cmluZztcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLndpZHRoJykgaG9zdFN0eWxlV2lkdGg6IHN0cmluZztcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1heC13aWR0aCcpIGhvc3RTdHlsZU1heFdpZHRoOiBzdHJpbmc7XG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5wb2ludGVyLWV2ZW50cycpIGhvc3RTdHlsZVBvaW50ZXJFdmVudHM6IHN0cmluZztcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRvb2x0aXAtc2hvdycpIGhvc3RDbGFzc1Nob3c6IGJvb2xlYW47XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50b29sdGlwLXNoYWRvdycpIGhvc3RDbGFzc1NoYWRvdzogYm9vbGVhbjtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRvb2x0aXAtbGlnaHQnKSBob3N0Q2xhc3NMaWdodDogYm9vbGVhbjtcbiAgICB2aWV3SW5pdCA9IGZhbHNlO1xuXG4gICAgX3Nob3cgPSBmYWxzZTtcblxuICAgIGdldCBzaG93KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2hvdztcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgc2hvdyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zaG93ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGNsb3NlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlTWVudSgpO1xuICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1lbnVPcGVuOiBib29sZWFuO1xuXG4gICAgZ2V0IGFycm93KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLm9wdGlvbnMuYXJyb3cgJiYgdGhpcy5ib3JkZXI7XG4gICAgfVxuXG4gICAgZ2V0IGFycm93T2Zmc2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLm9wdGlvbnMuYXJyb3dPZmZzZXQ7XG4gICAgfVxuXG4gICAgZ2V0IGFycm93UG9zaXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEub3B0aW9ucy5hcnJvd1Bvc2l0aW9uO1xuICAgIH1cblxuICAgIGdldCBhdXRvUGxhY2VtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLm9wdGlvbnMuYXV0b1BsYWNlbWVudDtcbiAgICB9XG5cbiAgICBnZXQgYmFja2dyb3VuZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zLmFwUG9wbWVudUJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgZ2V0IGJvcmRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zLmFwUG9wbWVudUJvcmRlcjtcbiAgICB9XG5cbiAgICBnZXQgZWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5lbGVtZW50O1xuICAgIH1cblxuICAgIGdldCBlbGVtZW50UG9zaXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEuZWxlbWVudFBvc2l0aW9uO1xuICAgIH1cblxuICAgIGdldCBoYXNCYWNrZHJvcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zLmhhc0JhY2tkcm9wO1xuICAgIH1cblxuICAgIGdldCBiYWNrZHJvcENsYXNzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLm9wdGlvbnMuYmFja2Ryb3BDbGFzcztcbiAgICB9XG5cbiAgICBnZXQgaXNUaGVtZUxpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zWyd0aGVtZSddID09PSAnbGlnaHQnO1xuICAgIH1cblxuICAgIGdldCBvcHRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLm9wdGlvbnM7XG4gICAgfVxuXG4gICAgZ2V0IHBhbmVsQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEub3B0aW9ucy5wYW5lbENsYXNzO1xuICAgIH1cblxuICAgIGdldCBwbGFjZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEub3B0aW9ucy5wbGFjZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0IHJvdW5kZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEub3B0aW9ucy5yb3VuZGVkO1xuICAgIH1cblxuICAgIGdldCBzaGFkb3coKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEub3B0aW9ucy5zaGFkb3c7XG4gICAgfVxuXG4gICAgZ2V0IHRvb2x0aXBPZmZzZXQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcih0aGlzLmRhdGEub3B0aW9ucy5vZmZzZXQpO1xuICAgIH1cblxuICAgIGdldCBvZmZzZXRTa2lkZGluZygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTnVtYmVyKHRoaXMuZGF0YS5vcHRpb25zLm9mZnNldHMuc2tpZGRpbmcpIHx8IDA7XG4gICAgfVxuXG4gICAgZ2V0IG9mZnNldERpc3RhbmNlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBOdW1iZXIodGhpcy5kYXRhLm9wdGlvbnMub2Zmc2V0cy5kaXN0YW5jZSB8fCAwKTtcbiAgICB9XG5cbiAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEudmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMudmlld0luaXQgPSB0cnVlO1xuICAgICAgICBtZXJnZSh0aGlzLnRyaWdnZXIubWVudU9wZW5lZCx0aGlzLnRyaWdnZXIubWVudUNsb3NlZCkuc3Vic2NyaWJlKCgpPT57XG4gICAgICAgICAgICB0aGlzLm1lbnVPcGVuID0gdGhpcy50cmlnZ2VyLm1lbnVPcGVuO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIG9uTWVudUNsb3NlZCgpIHtcbiAgICAgICAgLy8gd2Ugc2V0IGEgdGltZW91dCB0byB3YWl0IGZvciB0aGUgbWVudSB0byBiZSByZWFsbHkgY2xvc2VkXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5tZW51Q2xvc2VkLmVtaXQoKSwgMjAwKTtcbiAgICB9XG5cbiAgICBvbk1lbnVPcGVuZWQoKSB7XG4gICAgICAgIC8vIHdlIHNldCBhIHRpbWVvdXQgdG8gd2FpdCBmb3IgdGhlIG1lbnUgdG8gYmUgcmVhbGx5IG9wZW5lZFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMubWVudU9wZW5lZC5lbWl0KCksIDEwMCk7XG4gICAgfVxuXG4gICAgc2V0SG9zdFN0eWxlKHBsYWNlbWVudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGlzU3ZnID0gdGhpcy5lbGVtZW50IGluc3RhbmNlb2YgU1ZHRWxlbWVudDtcbiAgICAgICAgY29uc3QgdG9vbHRpcCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBpc0N1c3RvbVBvc2l0aW9uID0gIXRoaXMuZWxlbWVudFBvc2l0aW9uLng7XG5cbiAgICAgICAgbGV0IGVsZW1lbnRIZWlnaHQgPSAhdGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodFxuICAgICAgICAgICAgPyB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0XG4gICAgICAgICAgICA6IHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGxldCBlbGVtZW50V2lkdGggPSAhdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoXG4gICAgICAgICAgICA/IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aFxuICAgICAgICAgICAgOiB0aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIGNvbnN0IHRvb2x0aXBIZWlnaHQgPSB0b29sdGlwLmNsaWVudEhlaWdodDtcbiAgICAgICAgY29uc3QgdG9vbHRpcFdpZHRoID0gdG9vbHRpcC5jbGllbnRXaWR0aDtcbiAgICAgICAgY29uc3Qgc2Nyb2xsWSA9IHdpbmRvdy5wYWdlWU9mZnNldDtcblxuICAgICAgICBsZXQgdG9wU3R5bGU7XG4gICAgICAgIGxldCBsZWZ0U3R5bGU7XG5cbiAgICAgICAgaWYgKGlzQ3VzdG9tUG9zaXRpb24pIHtcbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQgJiYgcGxhY2VtZW50LnNwbGl0KCcgJylbMF0gPT09ICd0b3AnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWxvdyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBsYWNlbWVudCAmJiBwbGFjZW1lbnQuc3BsaXQoJyAnKVswXSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJlbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsZW1lbnRIZWlnaHQgPSAwO1xuICAgICAgICAgICAgZWxlbWVudFdpZHRoID0gMDtcbiAgICAgICAgICAgIHRvcFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24udG9wO1xuICAgICAgICAgICAgbGVmdFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24ubGVmdDtcbiAgICAgICAgICAgIGlmICh0aGlzLmFycm93ICYmIHRoaXMuYXJyb3dQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dDbGFzcyA9ICdhcnJvdy0nICsgdGhpcy5hcnJvd1Bvc2l0aW9uO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5hcnJvd1Bvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFycm93TGVmdFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcnJvd1JpZ2h0UG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFycm93Qm90dG9tUG9zaXRpb24gPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFycm93VG9wUG9zaXRpb24gPSB0aGlzLmFycm93T2Zmc2V0ICsgJyUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFycm93TGVmdFBvc2l0aW9uID0gdGhpcy5hcnJvd09mZnNldCArICclJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dSaWdodFBvc2l0aW9uID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcnJvd0JvdHRvbVBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcnJvd1RvcFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHBsYWNlbWVudC5zcGxpdCgnICcpWzBdID09PSAndG9wJykge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVsb3cgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0b3BTdHlsZSA9IHRoaXMuZWxlbWVudFBvc2l0aW9uLnRvcCAtIHRoaXMudG9vbHRpcE9mZnNldCAtIHRoaXMub2Zmc2V0RGlzdGFuY2U7XG4gICAgICAgICAgICAgICAgdG9wU3R5bGUgKz0gODtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBsYWNlbWVudC5zcGxpdCgnICcpWzBdID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVsb3cgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRvcFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24uYm90dG9tICsgdGhpcy50b29sdGlwT2Zmc2V0ICsgdGhpcy5vZmZzZXREaXN0YW5jZTtcbiAgICAgICAgICAgICAgICAvLyBXZSByZW1vdmUgOHB4IGR1ZSB0byB0aGUgbWFyZ2luLXRvcCB3ZSBwdXQgdG8gZGlzcGxheSB0aGUgYXJyb3cuXG4gICAgICAgICAgICAgICAgdG9wU3R5bGUgLT0gODtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBsYWNlbWVudC5zcGxpdCgnICcpWzBdID09PSAnbGVmdCcpIHtcbiAgICAgICAgICAgICAgICBsZWZ0U3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi5sZWZ0IC0gdG9vbHRpcFdpZHRoIC0gdGhpcy50b29sdGlwT2Zmc2V0IC0gdGhpcy5vZmZzZXREaXN0YW5jZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBsYWNlbWVudC5zcGxpdCgnICcpWzBdID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICAgICAgbGVmdFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24ubGVmdCArIGVsZW1lbnRXaWR0aCArIHRoaXMudG9vbHRpcE9mZnNldCArIHRoaXMub2Zmc2V0RGlzdGFuY2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQuc3BsaXQoJyAnKVswXSA9PT0gJ2xlZnQnIHx8IHBsYWNlbWVudC5zcGxpdCgnICcpWzBdID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICAgICAgdG9wU3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi50b3AgKyBzY3JvbGxZICsgZWxlbWVudEhlaWdodCAvIDIgLSB0b29sdGlwLmNsaWVudEhlaWdodCAvIDI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdyaWdodCBib3R0b20nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWxvdyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWZvcmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Q2xhc3MgPSAnYXJyb3ctbGVmdCc7XG4gICAgICAgICAgICAgICAgdG9wU3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi50b3AgKyBzY3JvbGxZICsgdGhpcy5vZmZzZXRTa2lkZGluZztcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93UmlnaHRQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93TGVmdFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dCb3R0b21Qb3NpdGlvbiA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93VG9wUG9zaXRpb24gPSB0aGlzLmFycm93T2Zmc2V0ID8gdGhpcy5hcnJvd09mZnNldCArICclJyA6IGVsZW1lbnRIZWlnaHQgLyAyICsgJ3B4JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBsYWNlbWVudCA9PT0gJ2xlZnQgYm90dG9tJykge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVsb3cgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuYmVmb3JlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Q2xhc3MgPSAnYXJyb3ctcmlnaHQnO1xuICAgICAgICAgICAgICAgIHRvcFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24udG9wICsgc2Nyb2xsWSArIHRoaXMub2Zmc2V0U2tpZGRpbmc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0xlZnRQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93UmlnaHRQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Qm90dG9tUG9zaXRpb24gPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1RvcFBvc2l0aW9uID0gdGhpcy5hcnJvd09mZnNldCA/IHRoaXMuYXJyb3dPZmZzZXQgKyAnJScgOiBlbGVtZW50SGVpZ2h0IC8gMiArICdweCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdyaWdodCB0b3AnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWxvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuYmVmb3JlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0NsYXNzID0gJ2Fycm93LWxlZnQnO1xuICAgICAgICAgICAgICAgIHRvcFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24udG9wICsgZWxlbWVudEhlaWdodCArIHNjcm9sbFkgKyB0aGlzLm9mZnNldFNraWRkaW5nO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dMZWZ0UG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1JpZ2h0UG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1RvcFBvc2l0aW9uID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dCb3R0b21Qb3NpdGlvbiA9IHRoaXMuYXJyb3dPZmZzZXRcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmFycm93T2Zmc2V0ICsgJyUnXG4gICAgICAgICAgICAgICAgICAgIDogLSh0b29sdGlwLmNsaWVudEhlaWdodCAtIGVsZW1lbnRIZWlnaHQgLyAyKSArICdweCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdsZWZ0IHRvcCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJlbG93ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWZvcmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dDbGFzcyA9ICdhcnJvdy1yaWdodCc7XG4gICAgICAgICAgICAgICAgdG9wU3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi50b3AgKyBlbGVtZW50SGVpZ2h0ICsgc2Nyb2xsWSArIHRoaXMub2Zmc2V0U2tpZGRpbmc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1JpZ2h0UG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0xlZnRQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93VG9wUG9zaXRpb24gPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0JvdHRvbVBvc2l0aW9uID0gdGhpcy5hcnJvd09mZnNldFxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuYXJyb3dPZmZzZXQgKyAnJSdcbiAgICAgICAgICAgICAgICAgICAgOiAtKHRvb2x0aXAuY2xpZW50SGVpZ2h0IC0gZWxlbWVudEhlaWdodCAvIDIpICsgJ3B4JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBsYWNlbWVudCA9PT0gJ2JvdHRvbSByaWdodCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJlZm9yZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuYmVsb3cgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dDbGFzcyA9ICdhcnJvdy10b3AnO1xuICAgICAgICAgICAgICAgIGxlZnRTdHlsZSA9IHRoaXMuZWxlbWVudFBvc2l0aW9uLmxlZnQgKyB0aGlzLm9mZnNldFNraWRkaW5nO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dUb3BQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93UmlnaHRQb3NpdGlvbiA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93TGVmdFBvc2l0aW9uID0gdGhpcy5hcnJvd09mZnNldCA/IHRoaXMuYXJyb3dPZmZzZXQgKyAnJScgOiBlbGVtZW50V2lkdGggLyAyIC0gNC41ICsgJ3B4JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBsYWNlbWVudCA9PT0gJ2JvdHRvbSBsZWZ0Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVmb3JlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmJlbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Q2xhc3MgPSAnYXJyb3ctdG9wJztcbiAgICAgICAgICAgICAgICBsZWZ0U3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi5yaWdodCArIHRoaXMub2Zmc2V0U2tpZGRpbmc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1RvcFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dMZWZ0UG9zaXRpb24gPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1JpZ2h0UG9zaXRpb24gPSB0aGlzLmFycm93T2Zmc2V0ID8gdGhpcy5hcnJvd09mZnNldCArICclJyA6IGVsZW1lbnRXaWR0aCAvIDIgLSAyLjUgKyAncHgnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGxhY2VtZW50ID09PSAndG9wIHJpZ2h0Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVmb3JlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWxvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dDbGFzcyA9ICdhcnJvdy1ib3R0b20nO1xuICAgICAgICAgICAgICAgIGxlZnRTdHlsZSA9IHRoaXMuZWxlbWVudFBvc2l0aW9uLmxlZnQgKyB0aGlzLm9mZnNldFNraWRkaW5nO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dCb3R0b21Qb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93VG9wUG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1JpZ2h0UG9zaXRpb24gPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0xlZnRQb3NpdGlvbiA9IHRoaXMuYXJyb3dPZmZzZXQgPyB0aGlzLmFycm93T2Zmc2V0ICsgJyUnIDogZWxlbWVudFdpZHRoIC8gMiAtIDQuNSArICdweCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQgPT09ICd0b3AgbGVmdCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJlZm9yZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWxvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dDbGFzcyA9ICdhcnJvdy1ib3R0b20nO1xuICAgICAgICAgICAgICAgIGxlZnRTdHlsZSA9IHRoaXMuZWxlbWVudFBvc2l0aW9uLnJpZ2h0ICsgdGhpcy5vZmZzZXRTa2lkZGluZztcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Qm90dG9tUG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1RvcFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dMZWZ0UG9zaXRpb24gPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1JpZ2h0UG9zaXRpb24gPSB0aGlzLmFycm93T2Zmc2V0ID8gdGhpcy5hcnJvd09mZnNldCArICclJyA6IGVsZW1lbnRXaWR0aCAvIDIgLSAyLjUgKyAncHgnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBsaW5lIGlzIFBVUkUgTUFHSUMgYW5kIHN1cGVyIGltcG9ydGFudC4gSXQgYWxsb3dzIHRvIGZvcmNlIG1hdC1tZW51XG4gICAgICAgIC8vIHRvIHJlcG9zaXRpb24gdGhlIG1lbnUgd2l0aCB0aGUgbmV3IHhQb3NpdGlvbiAvIHlQb3NpdGlvbi5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgY29uc3QgdG9wRWRnZSA9IHRvcFN0eWxlO1xuICAgICAgICBjb25zdCBib3R0b21FZGdlID0gdG9wU3R5bGUgKyB0b29sdGlwSGVpZ2h0O1xuICAgICAgICBjb25zdCBsZWZ0RWRnZSA9IGxlZnRTdHlsZTtcbiAgICAgICAgY29uc3QgcmlnaHRFZGdlID0gbGVmdFN0eWxlICsgdG9vbHRpcFdpZHRoO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICh0b3BFZGdlIDwgMCB8fFxuICAgICAgICAgICAgICAgIGJvdHRvbUVkZ2UgPiBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCB8fFxuICAgICAgICAgICAgICAgIGxlZnRFZGdlIDwgMCB8fFxuICAgICAgICAgICAgICAgIHJpZ2h0RWRnZSA+IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgpICYmXG4gICAgICAgICAgICB0aGlzLmF1dG9QbGFjZW1lbnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhvc3RTdHlsZVRvcCA9IHRvcFN0eWxlICsgJ3B4JztcbiAgICAgICAgdGhpcy5ob3N0U3R5bGVMZWZ0ID0gbGVmdFN0eWxlICsgJ3B4JztcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgc2V0UGxhY2VtZW50Q2xhc3MocGxhY2VtZW50Pzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICd0b29sdGlwLScgKyAocGxhY2VtZW50ID8gcGxhY2VtZW50LnNwbGl0KCcgJylbMF0gOiBwbGFjZW1lbnQpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICd5UG9zaXRpb24tJyArIChwbGFjZW1lbnQgJiYgcGxhY2VtZW50LnNwbGl0KCcgJykubGVuZ3RoID09PSAyID8gcGxhY2VtZW50LnNwbGl0KCcgJylbMV0gOiAnY2VudGVyJylcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4gJiYgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgY29uc3QgdG9vbHRpcEFycm93ID0gQXJyYXkuZnJvbSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlbikuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChjaGlsZDogSFRNTEVsZW1lbnQpID0+IGNoaWxkLmdldEF0dHJpYnV0ZSgnaWQnKSA9PT0gJ3Rvb2x0aXBBcnJvdydcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAodG9vbHRpcEFycm93ICYmIHRvb2x0aXBBcnJvdy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICBpZiAocGxhY2VtZW50ICYmIHBsYWNlbWVudC5zcGxpdCgnICcpLmxlbmd0aCA9PT0gMiAmJiBwbGFjZW1lbnQuc3BsaXQoJyAnKVsxXSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0b29sdGlwQXJyb3dbMF0sICd0b3AnLCB0aGlzLmFycm93VG9wUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGxhY2VtZW50ICYmIHBsYWNlbWVudC5zcGxpdCgnICcpLmxlbmd0aCA9PT0gMiAmJiBwbGFjZW1lbnQuc3BsaXQoJyAnKVsxXSA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0b29sdGlwQXJyb3dbMF0sICd0b3AnLCB0aGlzLmFycm93Qm90dG9tUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFBvc2l0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zZXRIb3N0U3R5bGUodGhpcy5wbGFjZW1lbnQpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFBsYWNlbWVudENsYXNzKHRoaXMucGxhY2VtZW50KTtcbiAgICAgICAgICAgIGlmICh0aGlzLnZpZXdJbml0KSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgZGlkIHRoaXMgaW4gb3JkZXIgdG8gcmVzZXQgb3ZlcmxheVJlZiAobXVsdGkgd2ViIGNvbXBvbmVudCBuZWVkZWQgd2l0aCBtYXRtZW51IGFuZCBjZGsgb3ZlcmxheSlcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50cmlnZ2VyWydfb3ZlcmxheVJlZiddKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlclsnX292ZXJsYXlSZWYnXS5kaXNwb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlclsnX292ZXJsYXlSZWYnXSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlci5vcGVuTWVudSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50cyA9IFsndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J107XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgcGxhY2VtZW50IG9mIHBsYWNlbWVudHMpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZXRIb3N0U3R5bGUocGxhY2VtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFBsYWNlbWVudENsYXNzKHBsYWNlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXdJbml0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXIub3Blbk1lbnUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGJ1dHRvbiBpZD1cIm1lbnVUcmlnZ2VyXCIgY2xhc3M9XCJidXR0b24tdHJpZ2dlclwiIG1hdC1idXR0b25cbiAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiAobWVudUNsb3NlZCk9XCJvbk1lbnVDbG9zZWQoKVwiIChtZW51T3BlbmVkKT1cIm9uTWVudU9wZW5lZCgpXCI+XG48L2J1dHRvbj5cbjxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiBbeVBvc2l0aW9uXT1cIiFiZWxvdyA/ICdhYm92ZSc6ICdiZWxvdydcIiBbeFBvc2l0aW9uXT1cIiFiZWZvcmU/ICdhZnRlcic6ICdiZWZvcmUnXCIgW292ZXJsYXBUcmlnZ2VyXT1cImZhbHNlXCJcbiAgICAgICAgICBbaGFzQmFja2Ryb3BdPVwiaGFzQmFja2Ryb3BcIlxuICAgICAgICAgIFtiYWNrZHJvcENsYXNzXT1cImJhY2tkcm9wQ2xhc3NcIlxuICAgICAgICAgIGNsYXNzPVwicG9wLW1lbnUge3thcnJvdyA/ICdhcnJvdy1iZWZvcmUgJyArIGFycm93Q2xhc3MgOiAnJ319IHt7c2hhZG93ID8gJ3NoYWRvdycgOiAnJ319IHt7Ym9yZGVyID8gJycgOiAoc2hhZG93ID8gJ3NoYWRvdy1uby1ib3JkZXInIDogJycpfX0ge3tyb3VuZGVkID8gJ3JvdW5kZWQtY29tcG9uZW50JyA6ICcnfX0ge3sgYmFja2dyb3VuZCA/ICcnIDogJ25vLWJhY2tncm91bmQnfX0ge3twYW5lbENsYXNzfX1cIj5cblxuICAgIDxkaXYgKm5nSWY9XCJhcnJvd1wiIGNsYXNzPVwie3thcnJvdyA/ICdhcnJvdy1iZWZvcmUgJyArIGFycm93Q2xhc3MgOiAnJ319XCIgW25nU3R5bGVdPVwieydsZWZ0JzogYXJyb3dMZWZ0UG9zaXRpb24sICdyaWdodCc6IGFycm93UmlnaHRQb3NpdGlvbiwgJ3RvcCc6IGFycm93VG9wUG9zaXRpb24sICdib3R0b20nOiBhcnJvd0JvdHRvbVBvc2l0aW9ufVwiPjwvZGl2PlxuICAgIDxkaXYgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIGNsYXNzPVwie3tyb3VuZGVkID8gJ3JvdW5kZWQtY29tcG9uZW50JyA6ICcnfX0gb3V0bGluZS1ub25lXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ7e2JvcmRlciA/ICdwb3BvdmVyLWNvbnRlbnQgJyA6ICcnfX0ge3tyb3VuZGVkID8gJ3JvdW5kZWQtY29tcG9uZW50JyA6ICcnfX1cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2YWx1ZTtjb250ZXh0OnttZW51OnRoaXN9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9tYXQtbWVudT5cblxuXG4iXX0=