@testgorilla/tgo-ui 2.30.6 → 2.30.8

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 (680) hide show
  1. package/README.md +95 -95
  2. package/components/slider/slider.component.d.ts +3 -2
  3. package/esm2022/components/accordion/accordion.component.mjs +3 -3
  4. package/esm2022/components/accordion/accordion.component.module.mjs +1 -1
  5. package/esm2022/components/accordion/accordion.model.mjs +1 -1
  6. package/esm2022/components/alert-banner/alert-banner.component.mjs +3 -3
  7. package/esm2022/components/alert-banner/alert-banner.component.module.mjs +1 -1
  8. package/esm2022/components/alert-banner/alert-banner.model.mjs +1 -1
  9. package/esm2022/components/autocomplete/autocomplete.component.mjs +3 -3
  10. package/esm2022/components/autocomplete/autocomplete.component.module.mjs +1 -1
  11. package/esm2022/components/autocomplete/autocomplete.model.mjs +1 -1
  12. package/esm2022/components/autocomplete/includes.pipe.mjs +1 -1
  13. package/esm2022/components/autocomplete/prevent-input.directive.mjs +1 -1
  14. package/esm2022/components/autocomplete/transform-Item.pipe.mjs +1 -1
  15. package/esm2022/components/avatar/avatar.component.mjs +3 -3
  16. package/esm2022/components/avatar/avatar.component.module.mjs +1 -1
  17. package/esm2022/components/avatar/avatar.model.mjs +1 -1
  18. package/esm2022/components/badge/badge.component.mjs +3 -3
  19. package/esm2022/components/badge/badge.component.module.mjs +1 -1
  20. package/esm2022/components/badge/badge.model.mjs +1 -1
  21. package/esm2022/components/button/button.component.mjs +3 -3
  22. package/esm2022/components/button/button.component.module.mjs +1 -1
  23. package/esm2022/components/button/button.model.mjs +1 -1
  24. package/esm2022/components/card/card.component.mjs +3 -3
  25. package/esm2022/components/card/card.component.module.mjs +1 -1
  26. package/esm2022/components/card/card.model.mjs +1 -1
  27. package/esm2022/components/checkbox/checkbox.component.mjs +3 -3
  28. package/esm2022/components/checkbox/checkbox.component.module.mjs +1 -1
  29. package/esm2022/components/checkbox/focus-visible.directive.mjs +1 -1
  30. package/esm2022/components/checklist/checklist.component.mjs +3 -3
  31. package/esm2022/components/checklist/checklist.model.mjs +1 -1
  32. package/esm2022/components/confirm-dialog/confirm-dialog.component.mjs +3 -3
  33. package/esm2022/components/confirm-dialog/confirm-dialog.component.module.mjs +1 -1
  34. package/esm2022/components/confirm-dialog/confirm-dialog.model.mjs +1 -1
  35. package/esm2022/components/datepicker/date-adapter.mjs +1 -1
  36. package/esm2022/components/datepicker/datepicker.component.mjs +3 -3
  37. package/esm2022/components/datepicker/datepicker.component.module.mjs +1 -1
  38. package/esm2022/components/datepicker/datepicker.service.mjs +1 -1
  39. package/esm2022/components/datepicker/no-date-format.directive.mjs +1 -1
  40. package/esm2022/components/deprecated-paginator/deprecated-paginator.component.mjs +3 -3
  41. package/esm2022/components/deprecated-paginator/deprecated-paginator.component.module.mjs +1 -1
  42. package/esm2022/components/dialog/dialog.component.mjs +3 -3
  43. package/esm2022/components/dialog/dialog.component.module.mjs +1 -1
  44. package/esm2022/components/dialog/dialog.model.mjs +1 -1
  45. package/esm2022/components/dialog/dialog.service.mjs +1 -1
  46. package/esm2022/components/divider/divider.component.mjs +3 -3
  47. package/esm2022/components/divider/divider.component.module.mjs +1 -1
  48. package/esm2022/components/divider/divider.model.mjs +1 -1
  49. package/esm2022/components/dropdown/dropdown.component.mjs +5 -5
  50. package/esm2022/components/dropdown/dropdown.component.module.mjs +1 -1
  51. package/esm2022/components/dropdown/dropdown.model.mjs +1 -1
  52. package/esm2022/components/elevation-shadow/elevation-shadow.component.mjs +3 -3
  53. package/esm2022/components/elevation-shadow/elevation-shadow.component.module.mjs +1 -1
  54. package/esm2022/components/elevation-shadow/elevation-shadow.constant.mjs +1 -1
  55. package/esm2022/components/empty-state/empty-state.component.mjs +3 -3
  56. package/esm2022/components/empty-state/empty-state.component.module.mjs +1 -1
  57. package/esm2022/components/empty-state/empty-state.model.mjs +1 -1
  58. package/esm2022/components/field/field.component.mjs +3 -3
  59. package/esm2022/components/field/field.component.module.mjs +1 -1
  60. package/esm2022/components/field/field.model.mjs +1 -1
  61. package/esm2022/components/file-upload/file-upload.component.mjs +3 -3
  62. package/esm2022/components/file-upload/file-upload.component.module.mjs +1 -1
  63. package/esm2022/components/filter-button/filter-button.component.mjs +3 -3
  64. package/esm2022/components/filter-button/filter-button.component.module.mjs +1 -1
  65. package/esm2022/components/filter-button/filter-button.model.mjs +1 -1
  66. package/esm2022/components/gaussian-chart/gaussian-chart.component.mjs +3 -3
  67. package/esm2022/components/gaussian-chart/gaussian-chart.module.mjs +1 -1
  68. package/esm2022/components/icon/icon.component.mjs +3 -3
  69. package/esm2022/components/icon/icon.component.module.mjs +1 -1
  70. package/esm2022/components/icon/icon.config.mjs +1 -1
  71. package/esm2022/components/icon/icon.model.mjs +1 -1
  72. package/esm2022/components/icon-label/icon-label.component.mjs +3 -3
  73. package/esm2022/components/icon-label/icon-label.component.module.mjs +1 -1
  74. package/esm2022/components/logo/logo.component.mjs +3 -3
  75. package/esm2022/components/logo/logo.component.module.mjs +1 -1
  76. package/esm2022/components/logo/logo.model.mjs +1 -1
  77. package/esm2022/components/media-card/media-card.component.mjs +3 -3
  78. package/esm2022/components/multi-input/multi-input.component.mjs +3 -3
  79. package/esm2022/components/multi-input/multi-input.component.module.mjs +1 -1
  80. package/esm2022/components/multi-input/multi-input.model.mjs +1 -1
  81. package/esm2022/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.mjs +3 -3
  82. package/esm2022/components/navbar/navbar.component.mjs +3 -3
  83. package/esm2022/components/navbar/navbar.component.module.mjs +1 -1
  84. package/esm2022/components/navbar/navbar.model.mjs +1 -1
  85. package/esm2022/components/overflow-menu/overflow-menu.component.mjs +3 -3
  86. package/esm2022/components/overflow-menu/overflow-menu.component.module.mjs +1 -1
  87. package/esm2022/components/overflow-menu/overflow-menu.model.mjs +1 -1
  88. package/esm2022/components/page-header/page-header.component.mjs +3 -3
  89. package/esm2022/components/page-header/page-header.component.module.mjs +1 -1
  90. package/esm2022/components/paginator/paginator.component.mjs +3 -3
  91. package/esm2022/components/paginator/paginator.component.module.mjs +1 -1
  92. package/esm2022/components/password-criteria/password.component.mjs +3 -3
  93. package/esm2022/components/password-criteria/password.component.module.mjs +1 -1
  94. package/esm2022/components/password-strength/password-strength.component.mjs +3 -3
  95. package/esm2022/components/password-strength/password-strength.component.module.mjs +1 -1
  96. package/esm2022/components/phone-input/join-strings.pipe.mjs +1 -1
  97. package/esm2022/components/phone-input/phone-input.component.mjs +3 -3
  98. package/esm2022/components/phone-input/phone-input.component.module.mjs +1 -1
  99. package/esm2022/components/phone-input/phone-input.model.mjs +1 -1
  100. package/esm2022/components/progress-bar/progress-bar.component.mjs +3 -3
  101. package/esm2022/components/progress-bar/progress-bar.component.module.mjs +1 -1
  102. package/esm2022/components/radial-progress/radial-progress.component.mjs +3 -3
  103. package/esm2022/components/radial-progress/radial-progress.component.module.mjs +1 -1
  104. package/esm2022/components/radial-progress/radial-progress.model.mjs +1 -1
  105. package/esm2022/components/radio-button/radio-button.component.mjs +3 -3
  106. package/esm2022/components/radio-button/radio-button.component.module.mjs +1 -1
  107. package/esm2022/components/radio-button/radio-button.model.mjs +1 -1
  108. package/esm2022/components/rating/half-star.pipe.mjs +1 -1
  109. package/esm2022/components/rating/rating.component.mjs +3 -3
  110. package/esm2022/components/rating/rating.component.module.mjs +1 -1
  111. package/esm2022/components/scale/scale.component.mjs +3 -3
  112. package/esm2022/components/scale/scale.component.module.mjs +1 -1
  113. package/esm2022/components/segmented-bar/segmented-bar.component.mjs +3 -3
  114. package/esm2022/components/segmented-bar/segmented-bar.component.module.mjs +1 -1
  115. package/esm2022/components/segmented-bar/segmented-bar.model.mjs +1 -1
  116. package/esm2022/components/segmented-button/segmented-button.component.mjs +3 -3
  117. package/esm2022/components/segmented-button/segmented-button.component.module.mjs +1 -1
  118. package/esm2022/components/segmented-button/segmented-button.model.mjs +1 -1
  119. package/esm2022/components/side-panel/side-panel.animations.mjs +1 -1
  120. package/esm2022/components/side-panel/side-panel.component.mjs +3 -3
  121. package/esm2022/components/side-panel/side-panel.model.mjs +1 -1
  122. package/esm2022/components/side-panel/side-panel.service.mjs +1 -1
  123. package/esm2022/components/side-sheet/side-sheet.component.mjs +3 -3
  124. package/esm2022/components/side-sheet/side-sheet.component.module.mjs +1 -1
  125. package/esm2022/components/side-sheet/side-sheet.model.mjs +1 -1
  126. package/esm2022/components/side-sheet/side-sheet.service.mjs +1 -1
  127. package/esm2022/components/skeleton/skeleton.component.mjs +3 -3
  128. package/esm2022/components/skeleton/skeleton.model.mjs +1 -1
  129. package/esm2022/components/slider/slider.component.mjs +13 -7
  130. package/esm2022/components/slider/slider.component.module.mjs +1 -1
  131. package/esm2022/components/slider/slider.model.mjs +1 -1
  132. package/esm2022/components/snackbar/snackbar.component.mjs +3 -3
  133. package/esm2022/components/snackbar/snackbar.component.module.mjs +1 -1
  134. package/esm2022/components/snackbar/snackbar.model.mjs +1 -1
  135. package/esm2022/components/snackbar/snackbar.service.mjs +1 -1
  136. package/esm2022/components/spider-chart/spider-chart.component.mjs +3 -3
  137. package/esm2022/components/spider-chart/spider-chart.model.mjs +1 -1
  138. package/esm2022/components/spider-chart/spider-chart.module.mjs +1 -1
  139. package/esm2022/components/spinner/spinner.component.mjs +3 -3
  140. package/esm2022/components/spinner/spinner.model.mjs +1 -1
  141. package/esm2022/components/spinner/spinner.module.mjs +1 -1
  142. package/esm2022/components/step/step.component.mjs +3 -3
  143. package/esm2022/components/step/step.component.module.mjs +1 -1
  144. package/esm2022/components/stepper/stepper.component.mjs +3 -3
  145. package/esm2022/components/stepper/stepper.component.module.mjs +1 -1
  146. package/esm2022/components/stepper/stepper.model.mjs +1 -1
  147. package/esm2022/components/table/sentence-case.pipe.mjs +1 -1
  148. package/esm2022/components/table/table.component.mjs +3 -3
  149. package/esm2022/components/table/table.component.module.mjs +1 -1
  150. package/esm2022/components/table/table.model.mjs +1 -1
  151. package/esm2022/components/tabs/tab.directive.mjs +1 -1
  152. package/esm2022/components/tabs/tabs.component.mjs +3 -3
  153. package/esm2022/components/tabs/tabs.component.module.mjs +1 -1
  154. package/esm2022/components/tabs/tabs.model.mjs +1 -1
  155. package/esm2022/components/tag/tag.component.mjs +3 -3
  156. package/esm2022/components/tag/tag.component.module.mjs +1 -1
  157. package/esm2022/components/tag/tag.model.mjs +1 -1
  158. package/esm2022/components/toggle/toggle.component.mjs +3 -3
  159. package/esm2022/components/toggle/toggle.component.module.mjs +1 -1
  160. package/esm2022/components/toggle/toggle.model.mjs +1 -1
  161. package/esm2022/components/tooltip/tooltip-template.directive.mjs +1 -1
  162. package/esm2022/components/tooltip/tooltip.component.mjs +3 -3
  163. package/esm2022/components/tooltip/tooltip.component.module.mjs +1 -1
  164. package/esm2022/components/tooltip/tooltip.model.mjs +1 -1
  165. package/esm2022/components/universal-skills-report/universal-skills-report.component.mjs +3 -3
  166. package/esm2022/components/universal-skills-report/universal-skills-report.component.module.mjs +1 -1
  167. package/esm2022/components/universal-skills-spider-charts/universal-skills-spider-charts.component.mjs +3 -3
  168. package/esm2022/components/universal-skills-spider-charts/universal-skills-spider-charts.component.module.mjs +1 -1
  169. package/esm2022/components/validation-error/validation-error.component.mjs +3 -3
  170. package/esm2022/components/validation-error/validation-error.model.mjs +1 -1
  171. package/esm2022/components/validation-error/validation-error.module.mjs +1 -1
  172. package/esm2022/directives/digits-only.directive.mjs +1 -1
  173. package/esm2022/directives/drag-drop.directive.mjs +1 -1
  174. package/esm2022/directives/dynamic-component.directive.mjs +1 -1
  175. package/esm2022/directives/ellipse-text.directive.mjs +1 -1
  176. package/esm2022/directives/select-text.directive.mjs +1 -1
  177. package/esm2022/directives/step-line-element.directive.mjs +1 -1
  178. package/esm2022/models/application-theme.model.mjs +1 -1
  179. package/esm2022/models/checkbox.model.mjs +1 -1
  180. package/esm2022/models/colors.model.mjs +1 -1
  181. package/esm2022/models/keyboard-events.model.mjs +1 -1
  182. package/esm2022/models/screen-breakpoints.model.mjs +1 -1
  183. package/esm2022/models/universal-skills-report.model.mjs +1 -1
  184. package/esm2022/pipes/data-property-getter.mjs +1 -1
  185. package/esm2022/pipes/has-validation-error.pipe.mjs +1 -1
  186. package/esm2022/pipes/memoize-func.pipe.mjs +1 -1
  187. package/esm2022/pipes/name-initials.pipe.mjs +1 -1
  188. package/esm2022/pipes/ui-ordinal-suffix.pipe.mjs +1 -1
  189. package/esm2022/pipes/ui-translate.pipe.mjs +1 -1
  190. package/esm2022/providers/is-mobile.mjs +1 -1
  191. package/esm2022/public-api.mjs +1 -1
  192. package/esm2022/services/icons.service.mjs +1 -1
  193. package/esm2022/services/universal-skills.service.mjs +1 -1
  194. package/esm2022/utils/alert-bar.model.mjs +1 -1
  195. package/esm2022/utils/alert-bars.utils.mjs +1 -1
  196. package/esm2022/utils/autocomplete-utils.mjs +2 -2
  197. package/esm2022/utils/color-contrast.mjs +1 -1
  198. package/esm2022/utils/hex-to-rgb.mjs +1 -1
  199. package/esm2022/utils/localization/language.model.mjs +1 -1
  200. package/esm2022/utils/localization/language.service.mjs +1 -1
  201. package/esm2022/utils/table.utils.mjs +1 -1
  202. package/fesm2022/testgorilla-tgo-ui.mjs +129 -123
  203. package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
  204. package/package.json +1 -1
  205. package/projects/tgo-canopy-ui/assets/i18n/da-dk.json +180 -180
  206. package/projects/tgo-canopy-ui/assets/i18n/de.json +180 -180
  207. package/projects/tgo-canopy-ui/assets/i18n/en.json +818 -818
  208. package/projects/tgo-canopy-ui/assets/i18n/es.json +180 -180
  209. package/projects/tgo-canopy-ui/assets/i18n/fr.json +180 -180
  210. package/projects/tgo-canopy-ui/assets/i18n/it-it.json +180 -180
  211. package/projects/tgo-canopy-ui/assets/i18n/ja-jp.json +180 -180
  212. package/projects/tgo-canopy-ui/assets/i18n/nb-no.json +180 -180
  213. package/projects/tgo-canopy-ui/assets/i18n/nl.json +180 -180
  214. package/projects/tgo-canopy-ui/assets/i18n/pl-pl.json +180 -180
  215. package/projects/tgo-canopy-ui/assets/i18n/pt-br.json +180 -180
  216. package/projects/tgo-canopy-ui/assets/i18n/sv-se.json +180 -180
  217. package/projects/tgo-canopy-ui/assets/icons/Add.svg +3 -3
  218. package/projects/tgo-canopy-ui/assets/icons/Archive.svg +3 -3
  219. package/projects/tgo-canopy-ui/assets/icons/Arrow_down.svg +3 -3
  220. package/projects/tgo-canopy-ui/assets/icons/Arrow_left.svg +3 -3
  221. package/projects/tgo-canopy-ui/assets/icons/Arrow_right.svg +3 -3
  222. package/projects/tgo-canopy-ui/assets/icons/Arrow_up.svg +3 -3
  223. package/projects/tgo-canopy-ui/assets/icons/Assessment.svg +3 -3
  224. package/projects/tgo-canopy-ui/assets/icons/Attempts.svg +3 -3
  225. package/projects/tgo-canopy-ui/assets/icons/Book.svg +3 -3
  226. package/projects/tgo-canopy-ui/assets/icons/Calendar.svg +3 -3
  227. package/projects/tgo-canopy-ui/assets/icons/Candidates.svg +8 -8
  228. package/projects/tgo-canopy-ui/assets/icons/Chat-notifications.svg +4 -4
  229. package/projects/tgo-canopy-ui/assets/icons/Chat.svg +3 -3
  230. package/projects/tgo-canopy-ui/assets/icons/Check.svg +3 -3
  231. package/projects/tgo-canopy-ui/assets/icons/Clone.svg +3 -3
  232. package/projects/tgo-canopy-ui/assets/icons/Close.svg +3 -3
  233. package/projects/tgo-canopy-ui/assets/icons/Code.svg +3 -3
  234. package/projects/tgo-canopy-ui/assets/icons/Company.svg +3 -3
  235. package/projects/tgo-canopy-ui/assets/icons/Copy.svg +3 -3
  236. package/projects/tgo-canopy-ui/assets/icons/Custom-questions.svg +3 -3
  237. package/projects/tgo-canopy-ui/assets/icons/Delete.svg +3 -3
  238. package/projects/tgo-canopy-ui/assets/icons/Devices.svg +3 -3
  239. package/projects/tgo-canopy-ui/assets/icons/Document.svg +3 -3
  240. package/projects/tgo-canopy-ui/assets/icons/Dot.svg +3 -3
  241. package/projects/tgo-canopy-ui/assets/icons/Download.svg +3 -3
  242. package/projects/tgo-canopy-ui/assets/icons/Edit.svg +3 -3
  243. package/projects/tgo-canopy-ui/assets/icons/Email-message.svg +3 -3
  244. package/projects/tgo-canopy-ui/assets/icons/Employee.svg +8 -8
  245. package/projects/tgo-canopy-ui/assets/icons/Empty-placeholder.svg +3 -3
  246. package/projects/tgo-canopy-ui/assets/icons/Error.svg +3 -3
  247. package/projects/tgo-canopy-ui/assets/icons/Essay.svg +3 -3
  248. package/projects/tgo-canopy-ui/assets/icons/Eye-hide.svg +3 -3
  249. package/projects/tgo-canopy-ui/assets/icons/Eye-view.svg +3 -3
  250. package/projects/tgo-canopy-ui/assets/icons/Fast-forward.svg +4 -4
  251. package/projects/tgo-canopy-ui/assets/icons/Fast-rewind.svg +4 -4
  252. package/projects/tgo-canopy-ui/assets/icons/Feedback-1.svg +3 -3
  253. package/projects/tgo-canopy-ui/assets/icons/Feedback-2.svg +3 -3
  254. package/projects/tgo-canopy-ui/assets/icons/Feedback-3.svg +6 -6
  255. package/projects/tgo-canopy-ui/assets/icons/Feedback-4.svg +3 -3
  256. package/projects/tgo-canopy-ui/assets/icons/Feedback-5.svg +3 -3
  257. package/projects/tgo-canopy-ui/assets/icons/File-attach.svg +3 -3
  258. package/projects/tgo-canopy-ui/assets/icons/File-upload.svg +3 -3
  259. package/projects/tgo-canopy-ui/assets/icons/Filter.svg +3 -3
  260. package/projects/tgo-canopy-ui/assets/icons/Fire.svg +10 -10
  261. package/projects/tgo-canopy-ui/assets/icons/Folder.svg +3 -3
  262. package/projects/tgo-canopy-ui/assets/icons/Format-add-file.svg +3 -3
  263. package/projects/tgo-canopy-ui/assets/icons/Format-add-table.svg +3 -3
  264. package/projects/tgo-canopy-ui/assets/icons/Format-align-L.svg +3 -3
  265. package/projects/tgo-canopy-ui/assets/icons/Format-align-R.svg +3 -3
  266. package/projects/tgo-canopy-ui/assets/icons/Format-align-center.svg +3 -3
  267. package/projects/tgo-canopy-ui/assets/icons/Format-align-justify.svg +3 -3
  268. package/projects/tgo-canopy-ui/assets/icons/Format-bold.svg +3 -3
  269. package/projects/tgo-canopy-ui/assets/icons/Format-code-active.svg +3 -3
  270. package/projects/tgo-canopy-ui/assets/icons/Format-code-block.svg +3 -3
  271. package/projects/tgo-canopy-ui/assets/icons/Format-edit-table.svg +3 -3
  272. package/projects/tgo-canopy-ui/assets/icons/Format-format.svg +3 -3
  273. package/projects/tgo-canopy-ui/assets/icons/Format-function.svg +3 -3
  274. package/projects/tgo-canopy-ui/assets/icons/Format-italics.svg +3 -3
  275. package/projects/tgo-canopy-ui/assets/icons/Format-list-bulleted.svg +3 -3
  276. package/projects/tgo-canopy-ui/assets/icons/Format-list-numbered.svg +3 -3
  277. package/projects/tgo-canopy-ui/assets/icons/Format-picker.svg +3 -3
  278. package/projects/tgo-canopy-ui/assets/icons/Format-quote.svg +3 -3
  279. package/projects/tgo-canopy-ui/assets/icons/Format-subscript.svg +3 -3
  280. package/projects/tgo-canopy-ui/assets/icons/Format-superscript.svg +3 -3
  281. package/projects/tgo-canopy-ui/assets/icons/Format-text-direction-L.svg +3 -3
  282. package/projects/tgo-canopy-ui/assets/icons/Format-text-direction-R.svg +3 -3
  283. package/projects/tgo-canopy-ui/assets/icons/Format-text-size.svg +3 -3
  284. package/projects/tgo-canopy-ui/assets/icons/Format-underline.svg +3 -3
  285. package/projects/tgo-canopy-ui/assets/icons/Format-variable.svg +3 -3
  286. package/projects/tgo-canopy-ui/assets/icons/Full-screen.svg +3 -3
  287. package/projects/tgo-canopy-ui/assets/icons/Gender-female.svg +3 -3
  288. package/projects/tgo-canopy-ui/assets/icons/Gender-male.svg +3 -3
  289. package/projects/tgo-canopy-ui/assets/icons/Gift.svg +7 -7
  290. package/projects/tgo-canopy-ui/assets/icons/Google.svg +6 -6
  291. package/projects/tgo-canopy-ui/assets/icons/Grab.svg +3 -3
  292. package/projects/tgo-canopy-ui/assets/icons/Help-2.svg +3 -3
  293. package/projects/tgo-canopy-ui/assets/icons/Help.svg +3 -3
  294. package/projects/tgo-canopy-ui/assets/icons/Image.svg +3 -3
  295. package/projects/tgo-canopy-ui/assets/icons/Info.svg +3 -3
  296. package/projects/tgo-canopy-ui/assets/icons/Integration.svg +3 -3
  297. package/projects/tgo-canopy-ui/assets/icons/Language.svg +3 -3
  298. package/projects/tgo-canopy-ui/assets/icons/Layout.svg +3 -3
  299. package/projects/tgo-canopy-ui/assets/icons/Learn.svg +3 -3
  300. package/projects/tgo-canopy-ui/assets/icons/Level.svg +3 -3
  301. package/projects/tgo-canopy-ui/assets/icons/Light-bulb.svg +3 -3
  302. package/projects/tgo-canopy-ui/assets/icons/Link.svg +3 -3
  303. package/projects/tgo-canopy-ui/assets/icons/Loading-spinner.svg +10 -10
  304. package/projects/tgo-canopy-ui/assets/icons/Localisation.svg +3 -3
  305. package/projects/tgo-canopy-ui/assets/icons/Location.svg +3 -3
  306. package/projects/tgo-canopy-ui/assets/icons/Lock.svg +3 -3
  307. package/projects/tgo-canopy-ui/assets/icons/Log-out.svg +3 -3
  308. package/projects/tgo-canopy-ui/assets/icons/Menu-burger.svg +3 -3
  309. package/projects/tgo-canopy-ui/assets/icons/Menu-ellipsis.svg +3 -3
  310. package/projects/tgo-canopy-ui/assets/icons/Microphone.svg +3 -3
  311. package/projects/tgo-canopy-ui/assets/icons/Minimize.svg +3 -3
  312. package/projects/tgo-canopy-ui/assets/icons/Minus.svg +3 -3
  313. package/projects/tgo-canopy-ui/assets/icons/Money-bag.svg +5 -5
  314. package/projects/tgo-canopy-ui/assets/icons/Mouse-cursor.svg +3 -3
  315. package/projects/tgo-canopy-ui/assets/icons/Mouse-grab-cursor.svg +3 -3
  316. package/projects/tgo-canopy-ui/assets/icons/Mouse.svg +3 -3
  317. package/projects/tgo-canopy-ui/assets/icons/Multi-choice.svg +3 -3
  318. package/projects/tgo-canopy-ui/assets/icons/Notifications.svg +3 -3
  319. package/projects/tgo-canopy-ui/assets/icons/Password.svg +4 -4
  320. package/projects/tgo-canopy-ui/assets/icons/Path.svg +3 -3
  321. package/projects/tgo-canopy-ui/assets/icons/Pin-marker.svg +4 -4
  322. package/projects/tgo-canopy-ui/assets/icons/Plan-billing.svg +3 -3
  323. package/projects/tgo-canopy-ui/assets/icons/Plus.svg +3 -3
  324. package/projects/tgo-canopy-ui/assets/icons/Premium.svg +4 -4
  325. package/projects/tgo-canopy-ui/assets/icons/Promotion.svg +3 -3
  326. package/projects/tgo-canopy-ui/assets/icons/Question-count.svg +3 -3
  327. package/projects/tgo-canopy-ui/assets/icons/Refer.svg +3 -3
  328. package/projects/tgo-canopy-ui/assets/icons/Reset.svg +3 -3
  329. package/projects/tgo-canopy-ui/assets/icons/Review.svg +3 -3
  330. package/projects/tgo-canopy-ui/assets/icons/Round-check-filled.svg +3 -3
  331. package/projects/tgo-canopy-ui/assets/icons/Round-check.svg +3 -3
  332. package/projects/tgo-canopy-ui/assets/icons/Search.svg +3 -3
  333. package/projects/tgo-canopy-ui/assets/icons/Secure-checkout.svg +3 -3
  334. package/projects/tgo-canopy-ui/assets/icons/Send.svg +3 -3
  335. package/projects/tgo-canopy-ui/assets/icons/Settings.svg +8 -8
  336. package/projects/tgo-canopy-ui/assets/icons/Share.svg +3 -3
  337. package/projects/tgo-canopy-ui/assets/icons/Skip-next.svg +4 -4
  338. package/projects/tgo-canopy-ui/assets/icons/Skip-previous.svg +4 -4
  339. package/projects/tgo-canopy-ui/assets/icons/Social-facebook.svg +3 -3
  340. package/projects/tgo-canopy-ui/assets/icons/Social-instagram.svg +3 -3
  341. package/projects/tgo-canopy-ui/assets/icons/Social-linkedin.svg +3 -3
  342. package/projects/tgo-canopy-ui/assets/icons/Sorting-down-1.svg +3 -3
  343. package/projects/tgo-canopy-ui/assets/icons/Sorting-down.svg +3 -3
  344. package/projects/tgo-canopy-ui/assets/icons/Sparkles.svg +18 -18
  345. package/projects/tgo-canopy-ui/assets/icons/Speedometer.svg +3 -3
  346. package/projects/tgo-canopy-ui/assets/icons/Star-filled.svg +3 -3
  347. package/projects/tgo-canopy-ui/assets/icons/Star-half.svg +3 -3
  348. package/projects/tgo-canopy-ui/assets/icons/Star-outline.svg +3 -3
  349. package/projects/tgo-canopy-ui/assets/icons/Suitcase.svg +6 -6
  350. package/projects/tgo-canopy-ui/assets/icons/Support.svg +3 -3
  351. package/projects/tgo-canopy-ui/assets/icons/Sync.svg +3 -3
  352. package/projects/tgo-canopy-ui/assets/icons/Team.svg +3 -3
  353. package/projects/tgo-canopy-ui/assets/icons/Test.svg +3 -3
  354. package/projects/tgo-canopy-ui/assets/icons/TestGorilla.svg +11 -11
  355. package/projects/tgo-canopy-ui/assets/icons/Thunder.svg +3 -3
  356. package/projects/tgo-canopy-ui/assets/icons/Timer.svg +3 -3
  357. package/projects/tgo-canopy-ui/assets/icons/Trophy.svg +3 -3
  358. package/projects/tgo-canopy-ui/assets/icons/Type.svg +3 -3
  359. package/projects/tgo-canopy-ui/assets/icons/Unarchive.svg +3 -3
  360. package/projects/tgo-canopy-ui/assets/icons/Unlock.svg +3 -3
  361. package/projects/tgo-canopy-ui/assets/icons/Upgrade.svg +3 -3
  362. package/projects/tgo-canopy-ui/assets/icons/Upload.svg +3 -3
  363. package/projects/tgo-canopy-ui/assets/icons/User-access.svg +3 -3
  364. package/projects/tgo-canopy-ui/assets/icons/User-add.svg +3 -3
  365. package/projects/tgo-canopy-ui/assets/icons/User-invite.svg +3 -3
  366. package/projects/tgo-canopy-ui/assets/icons/User-profile.svg +3 -3
  367. package/projects/tgo-canopy-ui/assets/icons/User-reject.svg +4 -4
  368. package/projects/tgo-canopy-ui/assets/icons/User-switch.svg +3 -3
  369. package/projects/tgo-canopy-ui/assets/icons/Video-pause.svg +3 -3
  370. package/projects/tgo-canopy-ui/assets/icons/Video-play.svg +3 -3
  371. package/projects/tgo-canopy-ui/assets/icons/Video-record.svg +3 -3
  372. package/projects/tgo-canopy-ui/assets/icons/Video-stop.svg +3 -3
  373. package/projects/tgo-canopy-ui/assets/icons/Video.svg +3 -3
  374. package/projects/tgo-canopy-ui/assets/icons/Volume.svg +3 -3
  375. package/projects/tgo-canopy-ui/assets/icons/Warning.svg +3 -3
  376. package/projects/tgo-canopy-ui/assets/icons/Zoom-in.svg +6 -6
  377. package/projects/tgo-canopy-ui/assets/icons/Zoom-out.svg +5 -5
  378. package/projects/tgo-canopy-ui/assets/icons/rating-icons/Star-filled-disabled.svg +3 -3
  379. package/projects/tgo-canopy-ui/assets/icons/rating-icons/Star-filled.svg +3 -3
  380. package/projects/tgo-canopy-ui/assets/icons/rating-icons/Star-half.svg +3 -3
  381. package/projects/tgo-canopy-ui/assets/icons/rating-icons/Star-outline.svg +3 -3
  382. package/projects/tgo-canopy-ui/assets/icons/rebrand/Add-filled.svg +3 -3
  383. package/projects/tgo-canopy-ui/assets/icons/rebrand/Add-in-line.svg +3 -3
  384. package/projects/tgo-canopy-ui/assets/icons/rebrand/Archive-filled.svg +3 -3
  385. package/projects/tgo-canopy-ui/assets/icons/rebrand/Archive-in-line.svg +3 -3
  386. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-down-filled.svg +3 -3
  387. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-down-in-line.svg +3 -3
  388. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-left-filled.svg +3 -3
  389. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-left-in-line.svg +3 -3
  390. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-right-filled.svg +3 -3
  391. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-right-in-line.svg +3 -3
  392. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-up-filled.svg +3 -3
  393. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-up-in-line.svg +3 -3
  394. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-down-filled.svg +3 -3
  395. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-down-in-line.svg +3 -3
  396. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-up-filled.svg +3 -3
  397. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-up-in-line.svg +3 -3
  398. package/projects/tgo-canopy-ui/assets/icons/rebrand/Assessment-filled.svg +3 -3
  399. package/projects/tgo-canopy-ui/assets/icons/rebrand/Assessment-in-line.svg +3 -3
  400. package/projects/tgo-canopy-ui/assets/icons/rebrand/Attach-filled.svg +3 -3
  401. package/projects/tgo-canopy-ui/assets/icons/rebrand/Attach-in-line.svg +3 -3
  402. package/projects/tgo-canopy-ui/assets/icons/rebrand/Attempts-filled.svg +3 -3
  403. package/projects/tgo-canopy-ui/assets/icons/rebrand/Attempts-in-line.svg +3 -3
  404. package/projects/tgo-canopy-ui/assets/icons/rebrand/Book-filled.svg +3 -3
  405. package/projects/tgo-canopy-ui/assets/icons/rebrand/Book-in-line.svg +3 -3
  406. package/projects/tgo-canopy-ui/assets/icons/rebrand/Calendar-filled.svg +3 -3
  407. package/projects/tgo-canopy-ui/assets/icons/rebrand/Calendar-in-line.svg +3 -3
  408. package/projects/tgo-canopy-ui/assets/icons/rebrand/Candidates-filled.svg +3 -3
  409. package/projects/tgo-canopy-ui/assets/icons/rebrand/Candidates-in-line.svg +3 -3
  410. package/projects/tgo-canopy-ui/assets/icons/rebrand/Chat-filled.svg +3 -3
  411. package/projects/tgo-canopy-ui/assets/icons/rebrand/Chat-in-line.svg +3 -3
  412. package/projects/tgo-canopy-ui/assets/icons/rebrand/Check-filled.svg +3 -3
  413. package/projects/tgo-canopy-ui/assets/icons/rebrand/Check-in-line.svg +3 -3
  414. package/projects/tgo-canopy-ui/assets/icons/rebrand/Check-round-filled.svg +3 -3
  415. package/projects/tgo-canopy-ui/assets/icons/rebrand/Check-round-in-line.svg +3 -3
  416. package/projects/tgo-canopy-ui/assets/icons/rebrand/Circle-filled.svg +3 -3
  417. package/projects/tgo-canopy-ui/assets/icons/rebrand/Circle-in-line.svg +3 -3
  418. package/projects/tgo-canopy-ui/assets/icons/rebrand/Clone-filled.svg +3 -3
  419. package/projects/tgo-canopy-ui/assets/icons/rebrand/Clone-in-line.svg +3 -3
  420. package/projects/tgo-canopy-ui/assets/icons/rebrand/Close-filled.svg +3 -3
  421. package/projects/tgo-canopy-ui/assets/icons/rebrand/Close-in-line.svg +3 -3
  422. package/projects/tgo-canopy-ui/assets/icons/rebrand/Code-filled.svg +3 -3
  423. package/projects/tgo-canopy-ui/assets/icons/rebrand/Code-in-line.svg +3 -3
  424. package/projects/tgo-canopy-ui/assets/icons/rebrand/Company-filled.svg +3 -3
  425. package/projects/tgo-canopy-ui/assets/icons/rebrand/Company-in-line.svg +3 -3
  426. package/projects/tgo-canopy-ui/assets/icons/rebrand/Copy-filled.svg +3 -3
  427. package/projects/tgo-canopy-ui/assets/icons/rebrand/Copy-in-line.svg +3 -3
  428. package/projects/tgo-canopy-ui/assets/icons/rebrand/Delete-filled.svg +3 -3
  429. package/projects/tgo-canopy-ui/assets/icons/rebrand/Delete-in-line.svg +3 -3
  430. package/projects/tgo-canopy-ui/assets/icons/rebrand/Devices-filled.svg +3 -3
  431. package/projects/tgo-canopy-ui/assets/icons/rebrand/Devices-in-line.svg +3 -3
  432. package/projects/tgo-canopy-ui/assets/icons/rebrand/Disconnected-in-line.svg +11 -11
  433. package/projects/tgo-canopy-ui/assets/icons/rebrand/Document-filled.svg +3 -3
  434. package/projects/tgo-canopy-ui/assets/icons/rebrand/Document-in-line.svg +3 -3
  435. package/projects/tgo-canopy-ui/assets/icons/rebrand/Dot-filled.svg +3 -3
  436. package/projects/tgo-canopy-ui/assets/icons/rebrand/Dot-in-line.svg +3 -3
  437. package/projects/tgo-canopy-ui/assets/icons/rebrand/Download-filled.svg +3 -3
  438. package/projects/tgo-canopy-ui/assets/icons/rebrand/Download-in-line.svg +3 -3
  439. package/projects/tgo-canopy-ui/assets/icons/rebrand/Edit-filled.svg +3 -3
  440. package/projects/tgo-canopy-ui/assets/icons/rebrand/Edit-in-line.svg +3 -3
  441. package/projects/tgo-canopy-ui/assets/icons/rebrand/Edit-text-filled.svg +3 -3
  442. package/projects/tgo-canopy-ui/assets/icons/rebrand/Edit-text-in-line.svg +3 -3
  443. package/projects/tgo-canopy-ui/assets/icons/rebrand/Employee-filled.svg +3 -3
  444. package/projects/tgo-canopy-ui/assets/icons/rebrand/Employee-in-line.svg +3 -3
  445. package/projects/tgo-canopy-ui/assets/icons/rebrand/Empty-search-in-line.svg +11 -11
  446. package/projects/tgo-canopy-ui/assets/icons/rebrand/Error-filled.svg +3 -3
  447. package/projects/tgo-canopy-ui/assets/icons/rebrand/Error-in-line.svg +3 -3
  448. package/projects/tgo-canopy-ui/assets/icons/rebrand/Essay-filled.svg +3 -3
  449. package/projects/tgo-canopy-ui/assets/icons/rebrand/Essay-in-line.svg +3 -3
  450. package/projects/tgo-canopy-ui/assets/icons/rebrand/Experience-filled.svg +3 -3
  451. package/projects/tgo-canopy-ui/assets/icons/rebrand/Experience-in-line.svg +3 -3
  452. package/projects/tgo-canopy-ui/assets/icons/rebrand/Facebook-filled.svg +3 -3
  453. package/projects/tgo-canopy-ui/assets/icons/rebrand/Facebook-in-line.svg +3 -3
  454. package/projects/tgo-canopy-ui/assets/icons/rebrand/Fast-forward-filled.svg +3 -3
  455. package/projects/tgo-canopy-ui/assets/icons/rebrand/Fast-forward-in-line.svg +3 -3
  456. package/projects/tgo-canopy-ui/assets/icons/rebrand/Fast-rewind-filled.svg +3 -3
  457. package/projects/tgo-canopy-ui/assets/icons/rebrand/Fast-rewind-in-line.svg +3 -3
  458. package/projects/tgo-canopy-ui/assets/icons/rebrand/Filter-filled.svg +3 -3
  459. package/projects/tgo-canopy-ui/assets/icons/rebrand/Filter-in-line.svg +3 -3
  460. package/projects/tgo-canopy-ui/assets/icons/rebrand/Fire-filled.svg +3 -3
  461. package/projects/tgo-canopy-ui/assets/icons/rebrand/Fire-in-line.svg +3 -3
  462. package/projects/tgo-canopy-ui/assets/icons/rebrand/Folder-filled.svg +3 -3
  463. package/projects/tgo-canopy-ui/assets/icons/rebrand/Folder-in-line.svg +3 -3
  464. package/projects/tgo-canopy-ui/assets/icons/rebrand/Full-screen-filled.svg +3 -3
  465. package/projects/tgo-canopy-ui/assets/icons/rebrand/Full-screen-in-line.svg +3 -3
  466. package/projects/tgo-canopy-ui/assets/icons/rebrand/Gender-female-filled.svg +3 -3
  467. package/projects/tgo-canopy-ui/assets/icons/rebrand/Gender-female-in-line.svg +3 -3
  468. package/projects/tgo-canopy-ui/assets/icons/rebrand/Gender-male-filled.svg +3 -3
  469. package/projects/tgo-canopy-ui/assets/icons/rebrand/Gender-male-in-line.svg +3 -3
  470. package/projects/tgo-canopy-ui/assets/icons/rebrand/Gift-filled.svg +3 -3
  471. package/projects/tgo-canopy-ui/assets/icons/rebrand/Gift-in-line.svg +3 -3
  472. package/projects/tgo-canopy-ui/assets/icons/rebrand/Google-filled.svg +6 -6
  473. package/projects/tgo-canopy-ui/assets/icons/rebrand/Google-in-line.svg +6 -6
  474. package/projects/tgo-canopy-ui/assets/icons/rebrand/Grab-filled.svg +3 -3
  475. package/projects/tgo-canopy-ui/assets/icons/rebrand/Grab-in-line.svg +3 -3
  476. package/projects/tgo-canopy-ui/assets/icons/rebrand/Help-filled.svg +3 -3
  477. package/projects/tgo-canopy-ui/assets/icons/rebrand/Help-in-line.svg +3 -3
  478. package/projects/tgo-canopy-ui/assets/icons/rebrand/Hide-filled.svg +3 -3
  479. package/projects/tgo-canopy-ui/assets/icons/rebrand/Hide-in-line.svg +3 -3
  480. package/projects/tgo-canopy-ui/assets/icons/rebrand/Image-filled.svg +3 -3
  481. package/projects/tgo-canopy-ui/assets/icons/rebrand/Image-in-line.svg +3 -3
  482. package/projects/tgo-canopy-ui/assets/icons/rebrand/Info-filled.svg +3 -3
  483. package/projects/tgo-canopy-ui/assets/icons/rebrand/Info-in-line.svg +3 -3
  484. package/projects/tgo-canopy-ui/assets/icons/rebrand/Instagram-filled.svg +3 -3
  485. package/projects/tgo-canopy-ui/assets/icons/rebrand/Instagram-in-line.svg +3 -3
  486. package/projects/tgo-canopy-ui/assets/icons/rebrand/Integration-filled.svg +3 -3
  487. package/projects/tgo-canopy-ui/assets/icons/rebrand/Integration-in-line.svg +3 -3
  488. package/projects/tgo-canopy-ui/assets/icons/rebrand/Invite-filled.svg +3 -3
  489. package/projects/tgo-canopy-ui/assets/icons/rebrand/Invite-in-line.svg +3 -3
  490. package/projects/tgo-canopy-ui/assets/icons/rebrand/Language-filled.svg +3 -3
  491. package/projects/tgo-canopy-ui/assets/icons/rebrand/Language-in-line.svg +3 -3
  492. package/projects/tgo-canopy-ui/assets/icons/rebrand/Layout-filled.svg +3 -3
  493. package/projects/tgo-canopy-ui/assets/icons/rebrand/Layout-in-line.svg +3 -3
  494. package/projects/tgo-canopy-ui/assets/icons/rebrand/Learn-filled.svg +3 -3
  495. package/projects/tgo-canopy-ui/assets/icons/rebrand/Learn-in-line.svg +3 -3
  496. package/projects/tgo-canopy-ui/assets/icons/rebrand/Level-filled.svg +3 -3
  497. package/projects/tgo-canopy-ui/assets/icons/rebrand/Level-in-line.svg +3 -3
  498. package/projects/tgo-canopy-ui/assets/icons/rebrand/Light-bulb-filled.svg +3 -3
  499. package/projects/tgo-canopy-ui/assets/icons/rebrand/Light-bulb-in-line.svg +3 -3
  500. package/projects/tgo-canopy-ui/assets/icons/rebrand/Link-filled.svg +3 -3
  501. package/projects/tgo-canopy-ui/assets/icons/rebrand/Link-in-line.svg +3 -3
  502. package/projects/tgo-canopy-ui/assets/icons/rebrand/Linkedin-filled.svg +3 -3
  503. package/projects/tgo-canopy-ui/assets/icons/rebrand/Linkedin-in-line.svg +3 -3
  504. package/projects/tgo-canopy-ui/assets/icons/rebrand/Localization-filled.svg +3 -3
  505. package/projects/tgo-canopy-ui/assets/icons/rebrand/Localization-in-line.svg +3 -3
  506. package/projects/tgo-canopy-ui/assets/icons/rebrand/Location-filled.svg +3 -3
  507. package/projects/tgo-canopy-ui/assets/icons/rebrand/Location-in-line.svg +3 -3
  508. package/projects/tgo-canopy-ui/assets/icons/rebrand/Lock-filled.svg +3 -3
  509. package/projects/tgo-canopy-ui/assets/icons/rebrand/Lock-in-line.svg +3 -3
  510. package/projects/tgo-canopy-ui/assets/icons/rebrand/Logout-filled.svg +3 -3
  511. package/projects/tgo-canopy-ui/assets/icons/rebrand/Logout-in-line.svg +3 -3
  512. package/projects/tgo-canopy-ui/assets/icons/rebrand/Lost-found-404-in-line.svg +11 -11
  513. package/projects/tgo-canopy-ui/assets/icons/rebrand/Medal-filled.svg +3 -3
  514. package/projects/tgo-canopy-ui/assets/icons/rebrand/Medal-in-line.svg +3 -3
  515. package/projects/tgo-canopy-ui/assets/icons/rebrand/Menu-burger-filled.svg +3 -3
  516. package/projects/tgo-canopy-ui/assets/icons/rebrand/Menu-burger-in-line.svg +3 -3
  517. package/projects/tgo-canopy-ui/assets/icons/rebrand/Menu-ellipsis-filled.svg +3 -3
  518. package/projects/tgo-canopy-ui/assets/icons/rebrand/Menu-ellipsis-in-line.svg +3 -3
  519. package/projects/tgo-canopy-ui/assets/icons/rebrand/Mic-filled.svg +3 -3
  520. package/projects/tgo-canopy-ui/assets/icons/rebrand/Mic-in-line.svg +3 -3
  521. package/projects/tgo-canopy-ui/assets/icons/rebrand/Minimize-filled.svg +3 -3
  522. package/projects/tgo-canopy-ui/assets/icons/rebrand/Minimize-in-line.svg +3 -3
  523. package/projects/tgo-canopy-ui/assets/icons/rebrand/Minus-filled.svg +3 -3
  524. package/projects/tgo-canopy-ui/assets/icons/rebrand/Minus-in-line.svg +3 -3
  525. package/projects/tgo-canopy-ui/assets/icons/rebrand/Mouse-filled.svg +3 -3
  526. package/projects/tgo-canopy-ui/assets/icons/rebrand/Mouse-in-line.svg +3 -3
  527. package/projects/tgo-canopy-ui/assets/icons/rebrand/Multi-choice-filled.svg +3 -3
  528. package/projects/tgo-canopy-ui/assets/icons/rebrand/Multi-choice-in-line.svg +3 -3
  529. package/projects/tgo-canopy-ui/assets/icons/rebrand/Notification-bell-filled.svg +3 -3
  530. package/projects/tgo-canopy-ui/assets/icons/rebrand/Notification-bell-in-line.svg +3 -3
  531. package/projects/tgo-canopy-ui/assets/icons/rebrand/Password-filled.svg +3 -3
  532. package/projects/tgo-canopy-ui/assets/icons/rebrand/Password-in-line.svg +3 -3
  533. package/projects/tgo-canopy-ui/assets/icons/rebrand/Path-filled.svg +3 -3
  534. package/projects/tgo-canopy-ui/assets/icons/rebrand/Path-in-line.svg +3 -3
  535. package/projects/tgo-canopy-ui/assets/icons/rebrand/Pause-filled.svg +3 -3
  536. package/projects/tgo-canopy-ui/assets/icons/rebrand/Pause-in-line.svg +3 -3
  537. package/projects/tgo-canopy-ui/assets/icons/rebrand/Pin-marker-filled.svg +4 -4
  538. package/projects/tgo-canopy-ui/assets/icons/rebrand/Pin-marker-in-line.svg +4 -4
  539. package/projects/tgo-canopy-ui/assets/icons/rebrand/Plan-billing-filled.svg +3 -3
  540. package/projects/tgo-canopy-ui/assets/icons/rebrand/Plan-billing-in-line.svg +3 -3
  541. package/projects/tgo-canopy-ui/assets/icons/rebrand/Play-filled.svg +3 -3
  542. package/projects/tgo-canopy-ui/assets/icons/rebrand/Play-in-line.svg +3 -3
  543. package/projects/tgo-canopy-ui/assets/icons/rebrand/Plus-filled.svg +3 -3
  544. package/projects/tgo-canopy-ui/assets/icons/rebrand/Plus-in-line.svg +3 -3
  545. package/projects/tgo-canopy-ui/assets/icons/rebrand/Premium-circle-in-line.svg +5 -5
  546. package/projects/tgo-canopy-ui/assets/icons/rebrand/Premium-filled.svg +3 -3
  547. package/projects/tgo-canopy-ui/assets/icons/rebrand/Premium-in-line.svg +3 -3
  548. package/projects/tgo-canopy-ui/assets/icons/rebrand/Question-count-filled.svg +3 -3
  549. package/projects/tgo-canopy-ui/assets/icons/rebrand/Question-count-in-line.svg +3 -3
  550. package/projects/tgo-canopy-ui/assets/icons/rebrand/Question-filled.svg +3 -3
  551. package/projects/tgo-canopy-ui/assets/icons/rebrand/Question-in-line.svg +3 -3
  552. package/projects/tgo-canopy-ui/assets/icons/rebrand/Record-filled.svg +3 -3
  553. package/projects/tgo-canopy-ui/assets/icons/rebrand/Record-in-line.svg +3 -3
  554. package/projects/tgo-canopy-ui/assets/icons/rebrand/Refer-filled.svg +3 -3
  555. package/projects/tgo-canopy-ui/assets/icons/rebrand/Refer-in-line.svg +3 -3
  556. package/projects/tgo-canopy-ui/assets/icons/rebrand/Reject-filled.svg +3 -3
  557. package/projects/tgo-canopy-ui/assets/icons/rebrand/Reject-in-line.svg +3 -3
  558. package/projects/tgo-canopy-ui/assets/icons/rebrand/Reset-filled.svg +3 -3
  559. package/projects/tgo-canopy-ui/assets/icons/rebrand/Reset-in-line.svg +3 -3
  560. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-1-filled.svg +3 -3
  561. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-1-in-line.svg +3 -3
  562. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-2-filled.svg +3 -3
  563. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-2-in-line.svg +3 -3
  564. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-3-filled.svg +3 -3
  565. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-3-in-line.svg +3 -3
  566. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-4-filled.svg +3 -3
  567. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-4-in-line.svg +3 -3
  568. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-5-filled.svg +3 -3
  569. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-5-in-line.svg +3 -3
  570. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-filled.svg +3 -3
  571. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-half-star-filled.svg +4 -4
  572. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-half-star-in-line.svg +4 -4
  573. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-in-line.svg +3 -3
  574. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-star-filled-disabled.svg +4 -4
  575. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-star-filled.svg +4 -4
  576. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-star-in-line.svg +4 -4
  577. package/projects/tgo-canopy-ui/assets/icons/rebrand/Round-check-in-line.svg +4 -4
  578. package/projects/tgo-canopy-ui/assets/icons/rebrand/Search-filled.svg +3 -3
  579. package/projects/tgo-canopy-ui/assets/icons/rebrand/Search-in-line.svg +3 -3
  580. package/projects/tgo-canopy-ui/assets/icons/rebrand/Secure-filled.svg +3 -3
  581. package/projects/tgo-canopy-ui/assets/icons/rebrand/Secure-in-line.svg +3 -3
  582. package/projects/tgo-canopy-ui/assets/icons/rebrand/Send-filled.svg +3 -3
  583. package/projects/tgo-canopy-ui/assets/icons/rebrand/Send-in-line.svg +3 -3
  584. package/projects/tgo-canopy-ui/assets/icons/rebrand/Settings-filled.svg +3 -3
  585. package/projects/tgo-canopy-ui/assets/icons/rebrand/Settings-in-line.svg +3 -3
  586. package/projects/tgo-canopy-ui/assets/icons/rebrand/Share-filled.svg +3 -3
  587. package/projects/tgo-canopy-ui/assets/icons/rebrand/Share-in-line.svg +3 -3
  588. package/projects/tgo-canopy-ui/assets/icons/rebrand/Skip-next-filled.svg +3 -3
  589. package/projects/tgo-canopy-ui/assets/icons/rebrand/Skip-next-in-line.svg +3 -3
  590. package/projects/tgo-canopy-ui/assets/icons/rebrand/Skip-previous-filled.svg +3 -3
  591. package/projects/tgo-canopy-ui/assets/icons/rebrand/Skip-previous-in-line.svg +3 -3
  592. package/projects/tgo-canopy-ui/assets/icons/rebrand/Sparkle-filled.svg +3 -3
  593. package/projects/tgo-canopy-ui/assets/icons/rebrand/Sparkle-in-line.svg +3 -3
  594. package/projects/tgo-canopy-ui/assets/icons/rebrand/Speedometer-filled.svg +3 -3
  595. package/projects/tgo-canopy-ui/assets/icons/rebrand/Speedometer-in-line.svg +3 -3
  596. package/projects/tgo-canopy-ui/assets/icons/rebrand/Star-filled.svg +5 -5
  597. package/projects/tgo-canopy-ui/assets/icons/rebrand/Star-in-line.svg +5 -5
  598. package/projects/tgo-canopy-ui/assets/icons/rebrand/Stop-filled.svg +3 -3
  599. package/projects/tgo-canopy-ui/assets/icons/rebrand/Stop-in-line.svg +3 -3
  600. package/projects/tgo-canopy-ui/assets/icons/rebrand/Switch-filled.svg +3 -3
  601. package/projects/tgo-canopy-ui/assets/icons/rebrand/Switch-in-line.svg +3 -3
  602. package/projects/tgo-canopy-ui/assets/icons/rebrand/Sync-filled.svg +3 -3
  603. package/projects/tgo-canopy-ui/assets/icons/rebrand/Sync-in-line.svg +3 -3
  604. package/projects/tgo-canopy-ui/assets/icons/rebrand/Team-filled.svg +3 -3
  605. package/projects/tgo-canopy-ui/assets/icons/rebrand/Team-in-line.svg +3 -3
  606. package/projects/tgo-canopy-ui/assets/icons/rebrand/Test-filled.svg +3 -3
  607. package/projects/tgo-canopy-ui/assets/icons/rebrand/Test-in-line.svg +3 -3
  608. package/projects/tgo-canopy-ui/assets/icons/rebrand/TestGorilla-Pink-filled.svg +11 -11
  609. package/projects/tgo-canopy-ui/assets/icons/rebrand/TestGorilla-Pink-in-line.svg +11 -11
  610. package/projects/tgo-canopy-ui/assets/icons/rebrand/TestGorilla-filled.svg +11 -11
  611. package/projects/tgo-canopy-ui/assets/icons/rebrand/TestGorilla-in-line.svg +11 -11
  612. package/projects/tgo-canopy-ui/assets/icons/rebrand/Timer-filled.svg +3 -3
  613. package/projects/tgo-canopy-ui/assets/icons/rebrand/Timer-in-line.svg +3 -3
  614. package/projects/tgo-canopy-ui/assets/icons/rebrand/Trophy-filled.svg +3 -3
  615. package/projects/tgo-canopy-ui/assets/icons/rebrand/Trophy-in-line.svg +3 -3
  616. package/projects/tgo-canopy-ui/assets/icons/rebrand/Type-filled.svg +3 -3
  617. package/projects/tgo-canopy-ui/assets/icons/rebrand/Type-in-line.svg +3 -3
  618. package/projects/tgo-canopy-ui/assets/icons/rebrand/Unarchive-filled.svg +3 -3
  619. package/projects/tgo-canopy-ui/assets/icons/rebrand/Unarchive-in-line.svg +3 -3
  620. package/projects/tgo-canopy-ui/assets/icons/rebrand/Unlock-filled.svg +3 -3
  621. package/projects/tgo-canopy-ui/assets/icons/rebrand/Unlock-in-line.svg +3 -3
  622. package/projects/tgo-canopy-ui/assets/icons/rebrand/Upgrade-filled.svg +3 -3
  623. package/projects/tgo-canopy-ui/assets/icons/rebrand/Upgrade-in-line.svg +3 -3
  624. package/projects/tgo-canopy-ui/assets/icons/rebrand/Upload-filled.svg +3 -3
  625. package/projects/tgo-canopy-ui/assets/icons/rebrand/Upload-in-line.svg +3 -3
  626. package/projects/tgo-canopy-ui/assets/icons/rebrand/User-access-filled.svg +3 -3
  627. package/projects/tgo-canopy-ui/assets/icons/rebrand/User-access-in-line.svg +3 -3
  628. package/projects/tgo-canopy-ui/assets/icons/rebrand/User-add-filled.svg +3 -3
  629. package/projects/tgo-canopy-ui/assets/icons/rebrand/User-add-in-line.svg +3 -3
  630. package/projects/tgo-canopy-ui/assets/icons/rebrand/User-profile-filled.svg +3 -3
  631. package/projects/tgo-canopy-ui/assets/icons/rebrand/User-profile-in-line.svg +3 -3
  632. package/projects/tgo-canopy-ui/assets/icons/rebrand/Validated-filled.svg +3 -3
  633. package/projects/tgo-canopy-ui/assets/icons/rebrand/Validated-in-line.svg +3 -3
  634. package/projects/tgo-canopy-ui/assets/icons/rebrand/Verified-badge-filled.svg +23 -23
  635. package/projects/tgo-canopy-ui/assets/icons/rebrand/Verified-badge-in-line.svg +23 -23
  636. package/projects/tgo-canopy-ui/assets/icons/rebrand/Video-filled.svg +3 -3
  637. package/projects/tgo-canopy-ui/assets/icons/rebrand/Video-in-line.svg +3 -3
  638. package/projects/tgo-canopy-ui/assets/icons/rebrand/View-filled.svg +3 -3
  639. package/projects/tgo-canopy-ui/assets/icons/rebrand/View-in-line.svg +3 -3
  640. package/projects/tgo-canopy-ui/assets/icons/rebrand/Volume-filled.svg +3 -3
  641. package/projects/tgo-canopy-ui/assets/icons/rebrand/Volume-in-line.svg +3 -3
  642. package/projects/tgo-canopy-ui/assets/icons/rebrand/Warning-filled.svg +3 -3
  643. package/projects/tgo-canopy-ui/assets/icons/rebrand/Warning-in-line.svg +3 -3
  644. package/projects/tgo-canopy-ui/assets/icons/rebrand/Zoom-in-filled.svg +3 -3
  645. package/projects/tgo-canopy-ui/assets/icons/rebrand/Zoom-in-in-line.svg +3 -3
  646. package/projects/tgo-canopy-ui/assets/icons/rebrand/Zoom-out-filled.svg +3 -3
  647. package/projects/tgo-canopy-ui/assets/icons/rebrand/Zoom-out-in-line.svg +3 -3
  648. package/projects/tgo-canopy-ui/assets/images/empty-state-default.svg +9 -9
  649. package/projects/tgo-canopy-ui/assets/images/poweredbyTG.svg +37 -37
  650. package/projects/tgo-canopy-ui/assets/images/premium.svg +5 -5
  651. package/projects/tgo-canopy-ui/assets/images/rebrand-last-step-icon-black.svg +3 -3
  652. package/projects/tgo-canopy-ui/assets/images/rebrand-last-step-icon-light.svg +3 -3
  653. package/projects/tgo-canopy-ui/assets/images/rebrand-logo/powered-by.svg +22 -22
  654. package/projects/tgo-canopy-ui/assets/images/rebrand-logo/primary_brandmark_pink.svg +10 -10
  655. package/projects/tgo-canopy-ui/assets/images/rebrand-logo/primary_lockup_pink.svg +22 -22
  656. package/projects/tgo-canopy-ui/assets/images/rebrand-logo/primary_wordmark_pink.svg +21 -21
  657. package/projects/tgo-canopy-ui/assets/images/rebrand-logo/secondary_brandmark_black.svg +11 -11
  658. package/projects/tgo-canopy-ui/assets/images/rebrand-logo/secondary_brandmark_cream.svg +11 -11
  659. package/projects/tgo-canopy-ui/assets/images/rebrand-logo/secondary_lockup_black.svg +23 -23
  660. package/projects/tgo-canopy-ui/assets/images/rebrand-logo/secondary_lockup_cream.svg +23 -23
  661. package/projects/tgo-canopy-ui/assets/images/rebrand-logo/secondary_wordmark_black.svg +21 -21
  662. package/projects/tgo-canopy-ui/assets/images/rebrand-logo/secondary_wordmark_cream.svg +21 -21
  663. package/projects/tgo-canopy-ui/assets/images/reverseTG.svg +84 -84
  664. package/projects/tgo-canopy-ui/assets/images/step-finish.svg +6 -6
  665. package/projects/tgo-canopy-ui/assets/images/testgorilla.svg +76 -76
  666. package/projects/tgo-canopy-ui/theme/_alert-bars.scss +110 -110
  667. package/projects/tgo-canopy-ui/theme/_breakpoints-mixin.scss +12 -12
  668. package/projects/tgo-canopy-ui/theme/_button.scss +72 -72
  669. package/projects/tgo-canopy-ui/theme/_core.scss +19 -19
  670. package/projects/tgo-canopy-ui/theme/_font.scss +95 -95
  671. package/projects/tgo-canopy-ui/theme/_icon.scss +5 -5
  672. package/projects/tgo-canopy-ui/theme/_input.scss +574 -574
  673. package/projects/tgo-canopy-ui/theme/_lib-styles.scss +35 -35
  674. package/projects/tgo-canopy-ui/theme/_mat-paginator.scss +59 -59
  675. package/projects/tgo-canopy-ui/theme/_palette.scss +108 -108
  676. package/projects/tgo-canopy-ui/theme/_tooltip.scss +316 -316
  677. package/projects/tgo-canopy-ui/theme/_typography.scss +267 -267
  678. package/projects/tgo-canopy-ui/theme/_variables.scss +163 -163
  679. package/projects/tgo-canopy-ui/theme/line-clamp.scss +8 -8
  680. package/projects/tgo-canopy-ui/theme/theme.scss +67 -67
@@ -196,7 +196,7 @@ export class TableComponent {
196
196
  this.tableData = data;
197
197
  }
198
198
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TableComponent, deps: [{ token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }, { token: i0.DestroyRef }, { token: IS_MOBILE_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
199
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TableComponent, selector: "ui-table", inputs: { config: "config", data: "data", loading: "loading", applicationTheme: "applicationTheme", tableDetailColumns: "tableDetailColumns", tableDetails: "tableDetails", disableBorderRadius: "disableBorderRadius", isCondensed: "isCondensed" }, outputs: { onRowClickEvent: "onRowClickEvent", onDetailRowClickEvent: "onDetailRowClickEvent", paginatorChange: "paginatorChange", sortChange: "sortChange" }, viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #tableContainer class=\"table-container\"\n [ngClass]=\"{ 'without-title': !tableConfig?.title, 'disable-border-radius': disableBorderRadius }\"\n [attr.theme]=\"applicationTheme\">\n <div *ngIf=\"tableConfig?.title\" class=\"table-header\">\n {{ tableConfig.title | sentencecase }}\n <ng-content select=\"[title-actions]\"></ng-content>\n </div>\n <div\n #table\n *ngIf=\"scrollSettings$ | async as scrollSettings\"\n class=\"table-wrapper\">\n <table\n [tabIndex]=\"0\"\n class=\"main-table\"\n [class.condensed]=\"isCondensed\"\n mat-table\n [dataSource]=\"tableData\"\n matSort\n [matSortStart]=\"tableConfig?.sort?.defaultSortStart ?? 'asc'\"\n [matSortActive]=\"tableConfig?.sort?.active ?? ''\"\n [matSortDirection]=\"tableConfig?.sort?.direction ?? ''\"\n (matSortChange)=\"onSortChange($event)\"\n multiTemplateDataRows\n >\n\n <ng-container\n *ngFor=\"let column of tableConfig.columns; index as i, last as isLast; trackBy: trackColumnUniqueId\">\n <ng-container *ngIf=\"isLast && column.isSticky && column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\" [stickyEnd]=\"!scrollSettings?.scrollEnd\">\n <th mat-header-cell\n [start]=\"column.sortStart ?? 'asc'\"\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n *matHeaderCellDef\n [attr.sortable]=\"column.allowSort ?? false\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n [style.font-weight]=\"'bold'\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element, rowIndex}\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isLast && column.isSticky && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\n [stickyEnd]=\"scrollSettings.horizontalScroll ? !scrollSettings.scrollEnd : true\">\n <th mat-header-cell\n *matHeaderCellDef\n [attr.sortable]=\"column.allowSort ?? false\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n [style.font-weight]=\"'bold'\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\n [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"!(isLast && column.isSticky) && column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\n [sticky]=\"(isMobile$ | async) ? false : !scrollSettings.scrollStart && !!column.isSticky\">\n <th mat-header-cell\n [start]=\"column.sortStart ?? 'asc'\"\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n [attr.sortable]=\"column.allowSort ?? false\"\n *matHeaderCellDef\n [style.font-weight]=\"'bold'\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\n [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"!(isLast && column.isSticky) && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\n [sticky]=\"(isMobile$ | async) ? false : !scrollSettings.scrollStart && !!column.isSticky\">\n <th mat-header-cell\n [attr.sortable]=\"column.allowSort ?? false\"\n *matHeaderCellDef\n [style.font-weight]=\"'bold'\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\n [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n </ng-container>\n\n\n <ng-container matColumnDef=\"expandedDetail\">\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"displayedColumns.length\">\n <div class=\"element-detail\" *ngIf=\"dataSourceDetail.data.length\"\n [@expandDetail]=\"element === elementDetail ? 'expanded' : 'collapsed'\">\n <table\n mat-table\n [dataSource]=\"dataSourceDetail\"\n [ngClass]=\"{ 'hide-borders': element === tableData[tableData.length - 1] }\"\n >\n <ng-container *ngFor=\"let tableColumn of tableDetailColumns.columnDefs\"\n [matColumnDef]=\"tableColumn.title ?? ''\">\n <th mat-header-cell *matHeaderCellDef=\"let element\" arrowPosition=\"after\"\n [ngStyle]=\"{width: tableColumn.styles?.width}\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'th-'+tableColumn.styles?.alignment : ''\">\n {{ tableColumn.title | uppercase }}\n </th>\n\n <td mat-cell *matCellDef=\"let element\" (click)=\"onDetailRowClick(element)\"\n [align]=\"tableColumn.styles?.alignment\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'td-'+tableColumn.styles?.alignment : ''\"\n [ngStyle]=\"{width: tableColumn.styles?.width }\">\n <ng-container *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn}\"></ng-container>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnsDetailToDisplay\"></tr>\n <tr mat-row *matRowDef=\"let rowDetail; columns: columnsDetailToDisplay;\"></tr>\n </table>\n </div>\n </td>\n </ng-container>\n\n <ng-template #tableDataTpl let-element=\"element\" let-tableColumn=\"tableColumn\">\n <div class=\"align-wrapper\">\n <ng-container [ngSwitch]=\"tableColumn.type\">\n <ng-container *ngSwitchCase=\"DataType.FIELD\">\n {{ element | dataPropertyGetter: tableColumn.key }}\n </ng-container>\n <ng-container *ngSwitchCase=\"DataType.FUNCTION\">\n {{ tableColumn.function?.(element) }}\n </ng-container>\n <ng-container *ngSwitchCase=\"DataType.RENDERER\">\n <ng-template\n [dynamicComponent]=\"[tableColumn.renderer, element] | memoizeFunc : callRenderer\">\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ element | dataPropertyGetter: tableColumn.key }}\n </ng-container>\n </ng-container>\n </div>\n </ng-template>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\n [ngClass]=\"{'expanded-row': elementDetail === row, 'row-clickable': tableDetails, 'selected': row?.selected, 'last-row': row === tableData[tableData.length - 1] && !elementDetail }\"\n (click)=\"toggleRow(row)\">\n </tr>\n <ng-container *ngIf=\"tableDetails && tableDetailColumns?.columnDefs?.length\">\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"detail-row\"></tr>\n </ng-container>\n\n <ng-container *ngIf=\"tableConfig.noDataRowTpl\">\n <tr *matNoDataRow>\n <ng-container *ngTemplateOutlet=\"tableConfig.noDataRowTpl\"></ng-container>\n </tr>\n </ng-container>\n </table>\n </div>\n\n <ui-paginator\n *ngIf=\"!tableConfig?.hidePagination && tableConfig?.pagination\"\n [disabled]=\"loading\"\n [applicationTheme]=\"applicationTheme !== 'classic' ? 'light' : 'classic'\"\n [pageSize]=\"tableConfig.pagination?.itemsPerPage ?? 25\"\n [length]=\"tableConfig.pagination?.totalItems ?? 0\"\n [currentPage]=\"tableConfig.pagination?.currentPage ?? 0\"\n [pageSizeOptions]=\"tableConfig.pagination?.itemsPerPageOptions ?? [10, 25, 50]\"\n (paginatorChange)=\"onPaginatorChange($event)\"\n ></ui-paginator>\n</div>\n\n<ng-template #expandButton let-i=\"index\" let-element=\"element\">\n <ui-button\n [applicationTheme]=\"applicationTheme\"\n *ngIf=\"!i && tableDetails\"\n variant=\"icon-button\"\n [ngClass]=\"{ opened: elementDetail && element == elementDetail }\"\n [iconName]=\"elementDetail && element == elementDetail ? 'Arrow-chevron-up-in-line' : 'Arrow-chevron-down-in-line'\"\n ></ui-button>\n</ng-template>\n\n<ng-template #columnHeader let-column=\"column\" let-i=\"i\">\n <div class=\"header-section\">\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}\n </span>\n <ui-icon *ngIf=\"column?.showTooltip\" [name]=\"'Help-in-line'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"(column?.showTooltip ? (column?.tooltip ? column.tooltip : column.title ) : '') || ''\"\n ></ui-icon>\n </div>\n</ng-template>\n\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap\";.bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host-context(.without-table-border) .table-container{border:none}.flex-left,.table-container .table-header{display:flex;justify-content:flex-start;align-items:center}.table-container{--mat-table-background-color: #ffffff;overflow:hidden;border:1px #E0E0E0 solid;border-radius:8px}.table-container ::ng-deep .mat-sort-header-arrow{color:#000}.table-container .table-header{min-height:56px;padding:8px;background:#fff;line-height:24px;font-size:16px;font-weight:700;text-transform:uppercase;display:flex;justify-content:space-between}.table-container .table-wrapper{max-width:100%;overflow:auto}.table-container .table-wrapper table.main-table{width:100%;box-shadow:unset;border-top:1px #E0E0E0 solid}.table-container .table-wrapper table.main-table ::ng-deep .mat-sort-header-arrow{margin-left:8px}.table-container .table-wrapper table.main-table .mdc-data-table__cell,.table-container .table-wrapper table.main-table .mdc-data-table__header-cell{padding:8px 24px}.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__cell:not(:first-child):not(:last-child),.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__header-cell:not(:first-child):not(:last-child),.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__cell:not(:first-child):not(:last-child),.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__header-cell:not(:first-child):not(:last-child){padding:8px 12px}.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__cell:first-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__header-cell:first-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__cell:first-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__header-cell:first-child{padding:8px 12px 8px 24px}.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__cell:last-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__header-cell:last-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__cell:last-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__header-cell:last-child{padding:8px 24px 8px 12px}.table-container .table-wrapper table.main-table th{font-size:14px;line-height:16px;text-transform:uppercase}.table-container .table-wrapper table.main-table td{font-size:14px;line-height:20px}.table-container .table-wrapper table.main-table td .row-value{display:flex;align-items:center;gap:16px}.table-container .table-wrapper table.main-table td .row-value ui-icon ::ng-deep mat-icon{transition:all .3s!important;font-size:24px}.table-container .table-wrapper table.main-table td .row-value ui-icon.opened ::ng-deep mat-icon{transform:rotate(180deg)}.table-container .table-wrapper table.main-table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader{display:flex;justify-content:center;align-items:center;line-height:unset}.table-container .table-wrapper table.main-table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader .skeleton-loader{margin-bottom:0}.table-container .table-wrapper table.main-table ::ng-deep thead{background:#f6f6f6!important}.table-container .table-wrapper table.main-table .mat-mdc-table-sticky-border-elem-left{box-shadow:24px 8px 24px #00000014}.table-container .table-wrapper table.main-table .mat-mdc-table-sticky-border-elem-right{box-shadow:0 8px 24px 4px #00000014}.table-container .header-section{display:flex;gap:4px;align-items:center}.table-container .header-section .column-title{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;max-width:fit-content;font-weight:700}.table-container.without-title table{border:unset!important}.table-container.disable-border-radius{border-radius:0!important}.table-container ::ng-deep .mat-mdc-paginator-container{padding:0 24px}.table-container[theme=dark],.table-container[theme=light]{border-radius:10px}.table-container[theme=dark] tr.selected,.table-container[theme=light] tr.selected{background:#f4f4f4!important}.table-container[theme=dark] .table-header,.table-container[theme=light] .table-header{padding:8px 24px;text-transform:none}.table-container[theme=dark] .table-wrapper table th,.table-container[theme=light] .table-wrapper table th{text-transform:none}.table-container[theme=dark] .table-wrapper table td,.table-container[theme=light] .table-wrapper table td{transition:border .3s}.table-container[theme=dark] .table-wrapper table tr.last-row td,.table-container[theme=light] .table-wrapper table tr.last-row td{--mat-table-row-item-outline-color: rgb(0, 0, 0, 0)}.table-container[theme=dark] .table-wrapper table .mat-mdc-table-sticky-border-elem-right,.table-container[theme=light] .table-wrapper table .mat-mdc-table-sticky-border-elem-right{box-shadow:0 8px 24px 4px #242424,8%!important}.table-container[theme=dark] .table-wrapper table .mat-mdc-table-sticky-border-elem-left,.table-container[theme=light] .table-wrapper table .mat-mdc-table-sticky-border-elem-left{box-shadow:24px 8px 24px #242424,8%!important}.table-container[theme=dark] .table-wrapper table ::ng-deep thead,.table-container[theme=light] .table-wrapper table ::ng-deep thead{background-color:#fff!important}.table-container[theme=dark] .table-wrapper table ::ng-deep :not(thead) tr:hover,.table-container[theme=light] .table-wrapper table ::ng-deep :not(thead) tr:hover{background-color:#fff2fc}.table-container ::ng-deep tr.detail-row{height:0}.table-container ::ng-deep tr.detail-row td{border:unset!important}.table-container ::ng-deep .mat-column-expandedDetail{padding:0!important}.table-container ::ng-deep .element-detail{overflow:hidden!important;display:flex!important}.table-container ::ng-deep .element-detail table{background-color:#fff;border-bottom:1px solid #D3D3D3;transition:border .3s}.table-container ::ng-deep .element-detail table.hide-borders{border-bottom:unset}.table-container ::ng-deep .element-detail table .mat-mdc-header-row{visibility:collapse}.table-container ::ng-deep .element-detail table .mat-mdc-cell{border-width:0}.table-container ::ng-deep .element-detail table td:first-child{padding-left:64px!important}table th.th-right{text-align:right}table th.th-right ::ng-deep .header-section{justify-content:end}table th.th-left{text-align:left}table th.th-left ::ng-deep .header-section{justify-content:start}table th.th-center{text-align:center}table th.th-center ::ng-deep .header-section{justify-content:center}table td.td-right{text-align:right}table td.td-right div{justify-content:end}table td.td-left{text-align:left}table td.td-left div{justify-content:start}table td.td-center{text-align:center}table td.td-center div{justify-content:center}::ng-deep table:not(.main-table) thead{display:none!important}ui-paginator{width:100%;display:flex;justify-content:flex-end;border-top:1px solid #D3D3D3}ui-paginator ::ng-deep .mat-mdc-paginator{width:100%}::ng-deep .mat-mdc-tooltip{background-color:#a9c2c9;font-family:Open Sans,serif;font-weight:400;font-size:12px;border-radius:4px;overflow:visible;max-width:248px;padding:6px 2px;--mdc-plain-tooltip-container-color: none;--mdc-plain-tooltip-supporting-text-color: $tgo-black}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i2.MatNoDataRow, selector: "ng-template[matNoDataRow]" }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i4.SkeletonComponent, selector: "ui-skeleton", inputs: ["count", "theme", "appearance", "applicationTheme"] }, { kind: "component", type: i5.PaginatorComponent, selector: "ui-paginator", inputs: ["pageSizeOptions", "length", "pageSize", "disabled", "applicationTheme", "currentPage"], outputs: ["paginatorChange"] }, { kind: "component", type: i6.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "directive", type: i7.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i7.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i8.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "applicationTheme", "useFullIconName"] }, { kind: "directive", type: i9.EllipseTextDirective, selector: "[uiEllipseText]", inputs: ["isMultiline", "maxDiffPixels", "refresh"], outputs: ["onChangeTextState"] }, { kind: "directive", type: i10.DynamicComponentDirective, selector: "[dynamicComponent]", inputs: ["dynamicComponent"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i11.DataPropertyGetterPipe, name: "dataPropertyGetter" }, { kind: "pipe", type: i12.MemoizeFuncPipe, name: "memoizeFunc" }, { kind: "pipe", type: i13.SentenceCasePipe, name: "sentencecase" }], animations: [
199
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TableComponent, selector: "ui-table", inputs: { config: "config", data: "data", loading: "loading", applicationTheme: "applicationTheme", tableDetailColumns: "tableDetailColumns", tableDetails: "tableDetails", disableBorderRadius: "disableBorderRadius", isCondensed: "isCondensed" }, outputs: { onRowClickEvent: "onRowClickEvent", onDetailRowClickEvent: "onDetailRowClickEvent", paginatorChange: "paginatorChange", sortChange: "sortChange" }, viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #tableContainer class=\"table-container\"\r\n [ngClass]=\"{ 'without-title': !tableConfig?.title, 'disable-border-radius': disableBorderRadius }\"\r\n [attr.theme]=\"applicationTheme\">\r\n <div *ngIf=\"tableConfig?.title\" class=\"table-header\">\r\n {{ tableConfig.title | sentencecase }}\r\n <ng-content select=\"[title-actions]\"></ng-content>\r\n </div>\r\n <div\r\n #table\r\n *ngIf=\"scrollSettings$ | async as scrollSettings\"\r\n class=\"table-wrapper\">\r\n <table\r\n [tabIndex]=\"0\"\r\n class=\"main-table\"\r\n [class.condensed]=\"isCondensed\"\r\n mat-table\r\n [dataSource]=\"tableData\"\r\n matSort\r\n [matSortStart]=\"tableConfig?.sort?.defaultSortStart ?? 'asc'\"\r\n [matSortActive]=\"tableConfig?.sort?.active ?? ''\"\r\n [matSortDirection]=\"tableConfig?.sort?.direction ?? ''\"\r\n (matSortChange)=\"onSortChange($event)\"\r\n multiTemplateDataRows\r\n >\r\n\r\n <ng-container\r\n *ngFor=\"let column of tableConfig.columns; index as i, last as isLast; trackBy: trackColumnUniqueId\">\r\n <ng-container *ngIf=\"isLast && column.isSticky && column.allowSort\">\r\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\" [stickyEnd]=\"!scrollSettings?.scrollEnd\">\r\n <th mat-header-cell\r\n [start]=\"column.sortStart ?? 'asc'\"\r\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\r\n *matHeaderCellDef\r\n [attr.sortable]=\"column.allowSort ?? false\"\r\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\r\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\r\n [style.font-weight]=\"'bold'\"\r\n >\r\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\r\n </ng-container>\r\n <ng-template #configValue>\r\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\r\n </ng-template>\r\n </th>\r\n\r\n <td mat-cell\r\n *matCellDef=\"let element; let rowIndex = dataIndex\"\r\n [align]=\"column.styles?.alignment\"\r\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\r\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\r\n >\r\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\r\n *ngIf=\"loading; else value\"></ui-skeleton>\r\n <ng-template #value>\r\n <div class=\"row-value\">\r\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\r\n\r\n @if (column?.type) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\r\n } @else {\r\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element, rowIndex}\"></ng-container>\r\n </ng-container>\r\n <ng-template #configData>\r\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\r\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\r\n </ng-template>\r\n }\r\n </div>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"isLast && column.isSticky && !column.allowSort\">\r\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\r\n [stickyEnd]=\"scrollSettings.horizontalScroll ? !scrollSettings.scrollEnd : true\">\r\n <th mat-header-cell\r\n *matHeaderCellDef\r\n [attr.sortable]=\"column.allowSort ?? false\"\r\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\r\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\r\n [style.font-weight]=\"'bold'\"\r\n >\r\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\r\n </ng-container>\r\n <ng-template #configValue>\r\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\r\n </ng-template>\r\n </th>\r\n\r\n <td mat-cell\r\n *matCellDef=\"let element; let rowIndex = dataIndex\"\r\n [align]=\"column.styles?.alignment\"\r\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\r\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\r\n >\r\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\r\n [appearance]=\"'line'\"\r\n *ngIf=\"loading; else value\"></ui-skeleton>\r\n <ng-template #value>\r\n <div class=\"row-value\">\r\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\r\n\r\n @if (column?.type) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\r\n } @else {\r\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\r\n </ng-container>\r\n <ng-template #configData>\r\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\r\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\r\n </ng-template>\r\n }\r\n </div>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container\r\n *ngIf=\"!(isLast && column.isSticky) && column.allowSort\">\r\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\r\n [sticky]=\"(isMobile$ | async) ? false : !scrollSettings.scrollStart && !!column.isSticky\">\r\n <th mat-header-cell\r\n [start]=\"column.sortStart ?? 'asc'\"\r\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\r\n [attr.sortable]=\"column.allowSort ?? false\"\r\n *matHeaderCellDef\r\n [style.font-weight]=\"'bold'\"\r\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\r\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\r\n >\r\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\r\n </ng-container>\r\n <ng-template #configValue>\r\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\r\n </ng-template>\r\n </th>\r\n\r\n <td mat-cell\r\n *matCellDef=\"let element; let rowIndex = dataIndex\"\r\n [align]=\"column.styles?.alignment\"\r\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\r\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\r\n >\r\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\r\n [appearance]=\"'line'\"\r\n *ngIf=\"loading; else value\"></ui-skeleton>\r\n <ng-template #value>\r\n <div class=\"row-value\">\r\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\r\n\r\n @if (column?.type) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\r\n } @else {\r\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\r\n </ng-container>\r\n <ng-template #configData>\r\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\r\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\r\n </ng-template>\r\n }\r\n </div>\r\n\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container\r\n *ngIf=\"!(isLast && column.isSticky) && !column.allowSort\">\r\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\r\n [sticky]=\"(isMobile$ | async) ? false : !scrollSettings.scrollStart && !!column.isSticky\">\r\n <th mat-header-cell\r\n [attr.sortable]=\"column.allowSort ?? false\"\r\n *matHeaderCellDef\r\n [style.font-weight]=\"'bold'\"\r\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\r\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\r\n >\r\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\r\n </ng-container>\r\n <ng-template #configValue>\r\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\r\n </ng-template>\r\n </th>\r\n\r\n <td mat-cell\r\n *matCellDef=\"let element; let rowIndex = dataIndex\"\r\n [align]=\"column.styles?.alignment\"\r\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\r\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\r\n >\r\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\r\n [appearance]=\"'line'\"\r\n *ngIf=\"loading; else value\"></ui-skeleton>\r\n <ng-template #value>\r\n <div class=\"row-value\">\r\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\r\n\r\n @if (column?.type) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\r\n } @else {\r\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\r\n </ng-container>\r\n <ng-template #configData>\r\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\r\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\r\n </ng-template>\r\n }\r\n </div>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"displayedColumns.length\">\r\n <div class=\"element-detail\" *ngIf=\"dataSourceDetail.data.length\"\r\n [@expandDetail]=\"element === elementDetail ? 'expanded' : 'collapsed'\">\r\n <table\r\n mat-table\r\n [dataSource]=\"dataSourceDetail\"\r\n [ngClass]=\"{ 'hide-borders': element === tableData[tableData.length - 1] }\"\r\n >\r\n <ng-container *ngFor=\"let tableColumn of tableDetailColumns.columnDefs\"\r\n [matColumnDef]=\"tableColumn.title ?? ''\">\r\n <th mat-header-cell *matHeaderCellDef=\"let element\" arrowPosition=\"after\"\r\n [ngStyle]=\"{width: tableColumn.styles?.width}\"\r\n [ngClass]=\"tableColumn.styles?.alignment ? 'th-'+tableColumn.styles?.alignment : ''\">\r\n {{ tableColumn.title | uppercase }}\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element\" (click)=\"onDetailRowClick(element)\"\r\n [align]=\"tableColumn.styles?.alignment\"\r\n [ngClass]=\"tableColumn.styles?.alignment ? 'td-'+tableColumn.styles?.alignment : ''\"\r\n [ngStyle]=\"{width: tableColumn.styles?.width }\">\r\n <ng-container *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn}\"></ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"columnsDetailToDisplay\"></tr>\r\n <tr mat-row *matRowDef=\"let rowDetail; columns: columnsDetailToDisplay;\"></tr>\r\n </table>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-template #tableDataTpl let-element=\"element\" let-tableColumn=\"tableColumn\">\r\n <div class=\"align-wrapper\">\r\n <ng-container [ngSwitch]=\"tableColumn.type\">\r\n <ng-container *ngSwitchCase=\"DataType.FIELD\">\r\n {{ element | dataPropertyGetter: tableColumn.key }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"DataType.FUNCTION\">\r\n {{ tableColumn.function?.(element) }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"DataType.RENDERER\">\r\n <ng-template\r\n [dynamicComponent]=\"[tableColumn.renderer, element] | memoizeFunc : callRenderer\">\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ element | dataPropertyGetter: tableColumn.key }}\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\r\n [ngClass]=\"{'expanded-row': elementDetail === row, 'row-clickable': tableDetails, 'selected': row?.selected, 'last-row': row === tableData[tableData.length - 1] && !elementDetail }\"\r\n (click)=\"toggleRow(row)\">\r\n </tr>\r\n <ng-container *ngIf=\"tableDetails && tableDetailColumns?.columnDefs?.length\">\r\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"detail-row\"></tr>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"tableConfig.noDataRowTpl\">\r\n <tr *matNoDataRow>\r\n <ng-container *ngTemplateOutlet=\"tableConfig.noDataRowTpl\"></ng-container>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n </div>\r\n\r\n <ui-paginator\r\n *ngIf=\"!tableConfig?.hidePagination && tableConfig?.pagination\"\r\n [disabled]=\"loading\"\r\n [applicationTheme]=\"applicationTheme !== 'classic' ? 'light' : 'classic'\"\r\n [pageSize]=\"tableConfig.pagination?.itemsPerPage ?? 25\"\r\n [length]=\"tableConfig.pagination?.totalItems ?? 0\"\r\n [currentPage]=\"tableConfig.pagination?.currentPage ?? 0\"\r\n [pageSizeOptions]=\"tableConfig.pagination?.itemsPerPageOptions ?? [10, 25, 50]\"\r\n (paginatorChange)=\"onPaginatorChange($event)\"\r\n ></ui-paginator>\r\n</div>\r\n\r\n<ng-template #expandButton let-i=\"index\" let-element=\"element\">\r\n <ui-button\r\n [applicationTheme]=\"applicationTheme\"\r\n *ngIf=\"!i && tableDetails\"\r\n variant=\"icon-button\"\r\n [ngClass]=\"{ opened: elementDetail && element == elementDetail }\"\r\n [iconName]=\"elementDetail && element == elementDetail ? 'Arrow-chevron-up-in-line' : 'Arrow-chevron-down-in-line'\"\r\n ></ui-button>\r\n</ng-template>\r\n\r\n<ng-template #columnHeader let-column=\"column\" let-i=\"i\">\r\n <div class=\"header-section\">\r\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\r\n class=\"column-title\">{{ column.title | sentencecase }}\r\n </span>\r\n <ui-icon *ngIf=\"column?.showTooltip\" [name]=\"'Help-in-line'\"\r\n [matTooltipClass]=\"applicationTheme\"\r\n [matTooltip]=\"(column?.showTooltip ? (column?.tooltip ? column.tooltip : column.title ) : '') || ''\"\r\n ></ui-icon>\r\n </div>\r\n</ng-template>\r\n\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap\";.bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host-context(.without-table-border) .table-container{border:none}.flex-left,.table-container .table-header{display:flex;justify-content:flex-start;align-items:center}.table-container{--mat-table-background-color: #ffffff;overflow:hidden;border:1px #E0E0E0 solid;border-radius:8px}.table-container ::ng-deep .mat-sort-header-arrow{color:#000}.table-container .table-header{min-height:56px;padding:8px;background:#fff;line-height:24px;font-size:16px;font-weight:700;text-transform:uppercase;display:flex;justify-content:space-between}.table-container .table-wrapper{max-width:100%;overflow:auto}.table-container .table-wrapper table.main-table{width:100%;box-shadow:unset;border-top:1px #E0E0E0 solid}.table-container .table-wrapper table.main-table ::ng-deep .mat-sort-header-arrow{margin-left:8px}.table-container .table-wrapper table.main-table .mdc-data-table__cell,.table-container .table-wrapper table.main-table .mdc-data-table__header-cell{padding:8px 24px}.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__cell:not(:first-child):not(:last-child),.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__header-cell:not(:first-child):not(:last-child),.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__cell:not(:first-child):not(:last-child),.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__header-cell:not(:first-child):not(:last-child){padding:8px 12px}.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__cell:first-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__header-cell:first-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__cell:first-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__header-cell:first-child{padding:8px 12px 8px 24px}.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__cell:last-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__header-cell:last-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__cell:last-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__header-cell:last-child{padding:8px 24px 8px 12px}.table-container .table-wrapper table.main-table th{font-size:14px;line-height:16px;text-transform:uppercase}.table-container .table-wrapper table.main-table td{font-size:14px;line-height:20px}.table-container .table-wrapper table.main-table td .row-value{display:flex;align-items:center;gap:16px}.table-container .table-wrapper table.main-table td .row-value ui-icon ::ng-deep mat-icon{transition:all .3s!important;font-size:24px}.table-container .table-wrapper table.main-table td .row-value ui-icon.opened ::ng-deep mat-icon{transform:rotate(180deg)}.table-container .table-wrapper table.main-table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader{display:flex;justify-content:center;align-items:center;line-height:unset}.table-container .table-wrapper table.main-table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader .skeleton-loader{margin-bottom:0}.table-container .table-wrapper table.main-table ::ng-deep thead{background:#f6f6f6!important}.table-container .table-wrapper table.main-table .mat-mdc-table-sticky-border-elem-left{box-shadow:24px 8px 24px #00000014}.table-container .table-wrapper table.main-table .mat-mdc-table-sticky-border-elem-right{box-shadow:0 8px 24px 4px #00000014}.table-container .header-section{display:flex;gap:4px;align-items:center}.table-container .header-section .column-title{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;max-width:fit-content;font-weight:700}.table-container.without-title table{border:unset!important}.table-container.disable-border-radius{border-radius:0!important}.table-container ::ng-deep .mat-mdc-paginator-container{padding:0 24px}.table-container[theme=dark],.table-container[theme=light]{border-radius:10px}.table-container[theme=dark] tr.selected,.table-container[theme=light] tr.selected{background:#f4f4f4!important}.table-container[theme=dark] .table-header,.table-container[theme=light] .table-header{padding:8px 24px;text-transform:none}.table-container[theme=dark] .table-wrapper table th,.table-container[theme=light] .table-wrapper table th{text-transform:none}.table-container[theme=dark] .table-wrapper table td,.table-container[theme=light] .table-wrapper table td{transition:border .3s}.table-container[theme=dark] .table-wrapper table tr.last-row td,.table-container[theme=light] .table-wrapper table tr.last-row td{--mat-table-row-item-outline-color: rgb(0, 0, 0, 0)}.table-container[theme=dark] .table-wrapper table .mat-mdc-table-sticky-border-elem-right,.table-container[theme=light] .table-wrapper table .mat-mdc-table-sticky-border-elem-right{box-shadow:0 8px 24px 4px #242424,8%!important}.table-container[theme=dark] .table-wrapper table .mat-mdc-table-sticky-border-elem-left,.table-container[theme=light] .table-wrapper table .mat-mdc-table-sticky-border-elem-left{box-shadow:24px 8px 24px #242424,8%!important}.table-container[theme=dark] .table-wrapper table ::ng-deep thead,.table-container[theme=light] .table-wrapper table ::ng-deep thead{background-color:#fff!important}.table-container[theme=dark] .table-wrapper table ::ng-deep :not(thead) tr:hover,.table-container[theme=light] .table-wrapper table ::ng-deep :not(thead) tr:hover{background-color:#fff2fc}.table-container ::ng-deep tr.detail-row{height:0}.table-container ::ng-deep tr.detail-row td{border:unset!important}.table-container ::ng-deep .mat-column-expandedDetail{padding:0!important}.table-container ::ng-deep .element-detail{overflow:hidden!important;display:flex!important}.table-container ::ng-deep .element-detail table{background-color:#fff;border-bottom:1px solid #D3D3D3;transition:border .3s}.table-container ::ng-deep .element-detail table.hide-borders{border-bottom:unset}.table-container ::ng-deep .element-detail table .mat-mdc-header-row{visibility:collapse}.table-container ::ng-deep .element-detail table .mat-mdc-cell{border-width:0}.table-container ::ng-deep .element-detail table td:first-child{padding-left:64px!important}table th.th-right{text-align:right}table th.th-right ::ng-deep .header-section{justify-content:end}table th.th-left{text-align:left}table th.th-left ::ng-deep .header-section{justify-content:start}table th.th-center{text-align:center}table th.th-center ::ng-deep .header-section{justify-content:center}table td.td-right{text-align:right}table td.td-right div{justify-content:end}table td.td-left{text-align:left}table td.td-left div{justify-content:start}table td.td-center{text-align:center}table td.td-center div{justify-content:center}::ng-deep table:not(.main-table) thead{display:none!important}ui-paginator{width:100%;display:flex;justify-content:flex-end;border-top:1px solid #D3D3D3}ui-paginator ::ng-deep .mat-mdc-paginator{width:100%}::ng-deep .mat-mdc-tooltip{background-color:#a9c2c9;font-family:Open Sans,serif;font-weight:400;font-size:12px;border-radius:4px;overflow:visible;max-width:248px;padding:6px 2px;--mdc-plain-tooltip-container-color: none;--mdc-plain-tooltip-supporting-text-color: $tgo-black}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i2.MatNoDataRow, selector: "ng-template[matNoDataRow]" }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i4.SkeletonComponent, selector: "ui-skeleton", inputs: ["count", "theme", "appearance", "applicationTheme"] }, { kind: "component", type: i5.PaginatorComponent, selector: "ui-paginator", inputs: ["pageSizeOptions", "length", "pageSize", "disabled", "applicationTheme", "currentPage"], outputs: ["paginatorChange"] }, { kind: "component", type: i6.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "directive", type: i7.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i7.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i8.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "applicationTheme", "useFullIconName"] }, { kind: "directive", type: i9.EllipseTextDirective, selector: "[uiEllipseText]", inputs: ["isMultiline", "maxDiffPixels", "refresh"], outputs: ["onChangeTextState"] }, { kind: "directive", type: i10.DynamicComponentDirective, selector: "[dynamicComponent]", inputs: ["dynamicComponent"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i11.DataPropertyGetterPipe, name: "dataPropertyGetter" }, { kind: "pipe", type: i12.MemoizeFuncPipe, name: "memoizeFunc" }, { kind: "pipe", type: i13.SentenceCasePipe, name: "sentencecase" }], animations: [
200
200
  trigger('expandDetail', [
201
201
  state('collapsed, void', style({ height: '0px' })),
202
202
  state('expanded', style({ height: '*' })),
@@ -214,7 +214,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
214
214
  transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
215
215
  transition('expanded <=> void', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
216
216
  ]),
217
- ], template: "<div #tableContainer class=\"table-container\"\n [ngClass]=\"{ 'without-title': !tableConfig?.title, 'disable-border-radius': disableBorderRadius }\"\n [attr.theme]=\"applicationTheme\">\n <div *ngIf=\"tableConfig?.title\" class=\"table-header\">\n {{ tableConfig.title | sentencecase }}\n <ng-content select=\"[title-actions]\"></ng-content>\n </div>\n <div\n #table\n *ngIf=\"scrollSettings$ | async as scrollSettings\"\n class=\"table-wrapper\">\n <table\n [tabIndex]=\"0\"\n class=\"main-table\"\n [class.condensed]=\"isCondensed\"\n mat-table\n [dataSource]=\"tableData\"\n matSort\n [matSortStart]=\"tableConfig?.sort?.defaultSortStart ?? 'asc'\"\n [matSortActive]=\"tableConfig?.sort?.active ?? ''\"\n [matSortDirection]=\"tableConfig?.sort?.direction ?? ''\"\n (matSortChange)=\"onSortChange($event)\"\n multiTemplateDataRows\n >\n\n <ng-container\n *ngFor=\"let column of tableConfig.columns; index as i, last as isLast; trackBy: trackColumnUniqueId\">\n <ng-container *ngIf=\"isLast && column.isSticky && column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\" [stickyEnd]=\"!scrollSettings?.scrollEnd\">\n <th mat-header-cell\n [start]=\"column.sortStart ?? 'asc'\"\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n *matHeaderCellDef\n [attr.sortable]=\"column.allowSort ?? false\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n [style.font-weight]=\"'bold'\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element, rowIndex}\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isLast && column.isSticky && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\n [stickyEnd]=\"scrollSettings.horizontalScroll ? !scrollSettings.scrollEnd : true\">\n <th mat-header-cell\n *matHeaderCellDef\n [attr.sortable]=\"column.allowSort ?? false\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n [style.font-weight]=\"'bold'\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\n [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"!(isLast && column.isSticky) && column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\n [sticky]=\"(isMobile$ | async) ? false : !scrollSettings.scrollStart && !!column.isSticky\">\n <th mat-header-cell\n [start]=\"column.sortStart ?? 'asc'\"\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\n [attr.sortable]=\"column.allowSort ?? false\"\n *matHeaderCellDef\n [style.font-weight]=\"'bold'\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\n [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container\n *ngIf=\"!(isLast && column.isSticky) && !column.allowSort\">\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\n [sticky]=\"(isMobile$ | async) ? false : !scrollSettings.scrollStart && !!column.isSticky\">\n <th mat-header-cell\n [attr.sortable]=\"column.allowSort ?? false\"\n *matHeaderCellDef\n [style.font-weight]=\"'bold'\"\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\n >\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\n <ng-container\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\n </ng-container>\n <ng-template #configValue>\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\n </ng-template>\n </th>\n\n <td mat-cell\n *matCellDef=\"let element; let rowIndex = dataIndex\"\n [align]=\"column.styles?.alignment\"\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\n >\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\n [appearance]=\"'line'\"\n *ngIf=\"loading; else value\"></ui-skeleton>\n <ng-template #value>\n <div class=\"row-value\">\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\n\n @if (column?.type) {\n <ng-container\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\n } @else {\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\n <ng-container\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #configData>\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\n </ng-template>\n }\n </div>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n </ng-container>\n\n\n <ng-container matColumnDef=\"expandedDetail\">\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"displayedColumns.length\">\n <div class=\"element-detail\" *ngIf=\"dataSourceDetail.data.length\"\n [@expandDetail]=\"element === elementDetail ? 'expanded' : 'collapsed'\">\n <table\n mat-table\n [dataSource]=\"dataSourceDetail\"\n [ngClass]=\"{ 'hide-borders': element === tableData[tableData.length - 1] }\"\n >\n <ng-container *ngFor=\"let tableColumn of tableDetailColumns.columnDefs\"\n [matColumnDef]=\"tableColumn.title ?? ''\">\n <th mat-header-cell *matHeaderCellDef=\"let element\" arrowPosition=\"after\"\n [ngStyle]=\"{width: tableColumn.styles?.width}\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'th-'+tableColumn.styles?.alignment : ''\">\n {{ tableColumn.title | uppercase }}\n </th>\n\n <td mat-cell *matCellDef=\"let element\" (click)=\"onDetailRowClick(element)\"\n [align]=\"tableColumn.styles?.alignment\"\n [ngClass]=\"tableColumn.styles?.alignment ? 'td-'+tableColumn.styles?.alignment : ''\"\n [ngStyle]=\"{width: tableColumn.styles?.width }\">\n <ng-container *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn}\"></ng-container>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnsDetailToDisplay\"></tr>\n <tr mat-row *matRowDef=\"let rowDetail; columns: columnsDetailToDisplay;\"></tr>\n </table>\n </div>\n </td>\n </ng-container>\n\n <ng-template #tableDataTpl let-element=\"element\" let-tableColumn=\"tableColumn\">\n <div class=\"align-wrapper\">\n <ng-container [ngSwitch]=\"tableColumn.type\">\n <ng-container *ngSwitchCase=\"DataType.FIELD\">\n {{ element | dataPropertyGetter: tableColumn.key }}\n </ng-container>\n <ng-container *ngSwitchCase=\"DataType.FUNCTION\">\n {{ tableColumn.function?.(element) }}\n </ng-container>\n <ng-container *ngSwitchCase=\"DataType.RENDERER\">\n <ng-template\n [dynamicComponent]=\"[tableColumn.renderer, element] | memoizeFunc : callRenderer\">\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ element | dataPropertyGetter: tableColumn.key }}\n </ng-container>\n </ng-container>\n </div>\n </ng-template>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\n [ngClass]=\"{'expanded-row': elementDetail === row, 'row-clickable': tableDetails, 'selected': row?.selected, 'last-row': row === tableData[tableData.length - 1] && !elementDetail }\"\n (click)=\"toggleRow(row)\">\n </tr>\n <ng-container *ngIf=\"tableDetails && tableDetailColumns?.columnDefs?.length\">\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"detail-row\"></tr>\n </ng-container>\n\n <ng-container *ngIf=\"tableConfig.noDataRowTpl\">\n <tr *matNoDataRow>\n <ng-container *ngTemplateOutlet=\"tableConfig.noDataRowTpl\"></ng-container>\n </tr>\n </ng-container>\n </table>\n </div>\n\n <ui-paginator\n *ngIf=\"!tableConfig?.hidePagination && tableConfig?.pagination\"\n [disabled]=\"loading\"\n [applicationTheme]=\"applicationTheme !== 'classic' ? 'light' : 'classic'\"\n [pageSize]=\"tableConfig.pagination?.itemsPerPage ?? 25\"\n [length]=\"tableConfig.pagination?.totalItems ?? 0\"\n [currentPage]=\"tableConfig.pagination?.currentPage ?? 0\"\n [pageSizeOptions]=\"tableConfig.pagination?.itemsPerPageOptions ?? [10, 25, 50]\"\n (paginatorChange)=\"onPaginatorChange($event)\"\n ></ui-paginator>\n</div>\n\n<ng-template #expandButton let-i=\"index\" let-element=\"element\">\n <ui-button\n [applicationTheme]=\"applicationTheme\"\n *ngIf=\"!i && tableDetails\"\n variant=\"icon-button\"\n [ngClass]=\"{ opened: elementDetail && element == elementDetail }\"\n [iconName]=\"elementDetail && element == elementDetail ? 'Arrow-chevron-up-in-line' : 'Arrow-chevron-down-in-line'\"\n ></ui-button>\n</ng-template>\n\n<ng-template #columnHeader let-column=\"column\" let-i=\"i\">\n <div class=\"header-section\">\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\n class=\"column-title\">{{ column.title | sentencecase }}\n </span>\n <ui-icon *ngIf=\"column?.showTooltip\" [name]=\"'Help-in-line'\"\n [matTooltipClass]=\"applicationTheme\"\n [matTooltip]=\"(column?.showTooltip ? (column?.tooltip ? column.tooltip : column.title ) : '') || ''\"\n ></ui-icon>\n </div>\n</ng-template>\n\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap\";.bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host-context(.without-table-border) .table-container{border:none}.flex-left,.table-container .table-header{display:flex;justify-content:flex-start;align-items:center}.table-container{--mat-table-background-color: #ffffff;overflow:hidden;border:1px #E0E0E0 solid;border-radius:8px}.table-container ::ng-deep .mat-sort-header-arrow{color:#000}.table-container .table-header{min-height:56px;padding:8px;background:#fff;line-height:24px;font-size:16px;font-weight:700;text-transform:uppercase;display:flex;justify-content:space-between}.table-container .table-wrapper{max-width:100%;overflow:auto}.table-container .table-wrapper table.main-table{width:100%;box-shadow:unset;border-top:1px #E0E0E0 solid}.table-container .table-wrapper table.main-table ::ng-deep .mat-sort-header-arrow{margin-left:8px}.table-container .table-wrapper table.main-table .mdc-data-table__cell,.table-container .table-wrapper table.main-table .mdc-data-table__header-cell{padding:8px 24px}.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__cell:not(:first-child):not(:last-child),.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__header-cell:not(:first-child):not(:last-child),.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__cell:not(:first-child):not(:last-child),.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__header-cell:not(:first-child):not(:last-child){padding:8px 12px}.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__cell:first-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__header-cell:first-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__cell:first-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__header-cell:first-child{padding:8px 12px 8px 24px}.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__cell:last-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__header-cell:last-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__cell:last-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__header-cell:last-child{padding:8px 24px 8px 12px}.table-container .table-wrapper table.main-table th{font-size:14px;line-height:16px;text-transform:uppercase}.table-container .table-wrapper table.main-table td{font-size:14px;line-height:20px}.table-container .table-wrapper table.main-table td .row-value{display:flex;align-items:center;gap:16px}.table-container .table-wrapper table.main-table td .row-value ui-icon ::ng-deep mat-icon{transition:all .3s!important;font-size:24px}.table-container .table-wrapper table.main-table td .row-value ui-icon.opened ::ng-deep mat-icon{transform:rotate(180deg)}.table-container .table-wrapper table.main-table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader{display:flex;justify-content:center;align-items:center;line-height:unset}.table-container .table-wrapper table.main-table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader .skeleton-loader{margin-bottom:0}.table-container .table-wrapper table.main-table ::ng-deep thead{background:#f6f6f6!important}.table-container .table-wrapper table.main-table .mat-mdc-table-sticky-border-elem-left{box-shadow:24px 8px 24px #00000014}.table-container .table-wrapper table.main-table .mat-mdc-table-sticky-border-elem-right{box-shadow:0 8px 24px 4px #00000014}.table-container .header-section{display:flex;gap:4px;align-items:center}.table-container .header-section .column-title{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;max-width:fit-content;font-weight:700}.table-container.without-title table{border:unset!important}.table-container.disable-border-radius{border-radius:0!important}.table-container ::ng-deep .mat-mdc-paginator-container{padding:0 24px}.table-container[theme=dark],.table-container[theme=light]{border-radius:10px}.table-container[theme=dark] tr.selected,.table-container[theme=light] tr.selected{background:#f4f4f4!important}.table-container[theme=dark] .table-header,.table-container[theme=light] .table-header{padding:8px 24px;text-transform:none}.table-container[theme=dark] .table-wrapper table th,.table-container[theme=light] .table-wrapper table th{text-transform:none}.table-container[theme=dark] .table-wrapper table td,.table-container[theme=light] .table-wrapper table td{transition:border .3s}.table-container[theme=dark] .table-wrapper table tr.last-row td,.table-container[theme=light] .table-wrapper table tr.last-row td{--mat-table-row-item-outline-color: rgb(0, 0, 0, 0)}.table-container[theme=dark] .table-wrapper table .mat-mdc-table-sticky-border-elem-right,.table-container[theme=light] .table-wrapper table .mat-mdc-table-sticky-border-elem-right{box-shadow:0 8px 24px 4px #242424,8%!important}.table-container[theme=dark] .table-wrapper table .mat-mdc-table-sticky-border-elem-left,.table-container[theme=light] .table-wrapper table .mat-mdc-table-sticky-border-elem-left{box-shadow:24px 8px 24px #242424,8%!important}.table-container[theme=dark] .table-wrapper table ::ng-deep thead,.table-container[theme=light] .table-wrapper table ::ng-deep thead{background-color:#fff!important}.table-container[theme=dark] .table-wrapper table ::ng-deep :not(thead) tr:hover,.table-container[theme=light] .table-wrapper table ::ng-deep :not(thead) tr:hover{background-color:#fff2fc}.table-container ::ng-deep tr.detail-row{height:0}.table-container ::ng-deep tr.detail-row td{border:unset!important}.table-container ::ng-deep .mat-column-expandedDetail{padding:0!important}.table-container ::ng-deep .element-detail{overflow:hidden!important;display:flex!important}.table-container ::ng-deep .element-detail table{background-color:#fff;border-bottom:1px solid #D3D3D3;transition:border .3s}.table-container ::ng-deep .element-detail table.hide-borders{border-bottom:unset}.table-container ::ng-deep .element-detail table .mat-mdc-header-row{visibility:collapse}.table-container ::ng-deep .element-detail table .mat-mdc-cell{border-width:0}.table-container ::ng-deep .element-detail table td:first-child{padding-left:64px!important}table th.th-right{text-align:right}table th.th-right ::ng-deep .header-section{justify-content:end}table th.th-left{text-align:left}table th.th-left ::ng-deep .header-section{justify-content:start}table th.th-center{text-align:center}table th.th-center ::ng-deep .header-section{justify-content:center}table td.td-right{text-align:right}table td.td-right div{justify-content:end}table td.td-left{text-align:left}table td.td-left div{justify-content:start}table td.td-center{text-align:center}table td.td-center div{justify-content:center}::ng-deep table:not(.main-table) thead{display:none!important}ui-paginator{width:100%;display:flex;justify-content:flex-end;border-top:1px solid #D3D3D3}ui-paginator ::ng-deep .mat-mdc-paginator{width:100%}::ng-deep .mat-mdc-tooltip{background-color:#a9c2c9;font-family:Open Sans,serif;font-weight:400;font-size:12px;border-radius:4px;overflow:visible;max-width:248px;padding:6px 2px;--mdc-plain-tooltip-container-color: none;--mdc-plain-tooltip-supporting-text-color: $tgo-black}\n"] }]
217
+ ], template: "<div #tableContainer class=\"table-container\"\r\n [ngClass]=\"{ 'without-title': !tableConfig?.title, 'disable-border-radius': disableBorderRadius }\"\r\n [attr.theme]=\"applicationTheme\">\r\n <div *ngIf=\"tableConfig?.title\" class=\"table-header\">\r\n {{ tableConfig.title | sentencecase }}\r\n <ng-content select=\"[title-actions]\"></ng-content>\r\n </div>\r\n <div\r\n #table\r\n *ngIf=\"scrollSettings$ | async as scrollSettings\"\r\n class=\"table-wrapper\">\r\n <table\r\n [tabIndex]=\"0\"\r\n class=\"main-table\"\r\n [class.condensed]=\"isCondensed\"\r\n mat-table\r\n [dataSource]=\"tableData\"\r\n matSort\r\n [matSortStart]=\"tableConfig?.sort?.defaultSortStart ?? 'asc'\"\r\n [matSortActive]=\"tableConfig?.sort?.active ?? ''\"\r\n [matSortDirection]=\"tableConfig?.sort?.direction ?? ''\"\r\n (matSortChange)=\"onSortChange($event)\"\r\n multiTemplateDataRows\r\n >\r\n\r\n <ng-container\r\n *ngFor=\"let column of tableConfig.columns; index as i, last as isLast; trackBy: trackColumnUniqueId\">\r\n <ng-container *ngIf=\"isLast && column.isSticky && column.allowSort\">\r\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\" [stickyEnd]=\"!scrollSettings?.scrollEnd\">\r\n <th mat-header-cell\r\n [start]=\"column.sortStart ?? 'asc'\"\r\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\r\n *matHeaderCellDef\r\n [attr.sortable]=\"column.allowSort ?? false\"\r\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\r\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\r\n [style.font-weight]=\"'bold'\"\r\n >\r\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\r\n </ng-container>\r\n <ng-template #configValue>\r\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\r\n </ng-template>\r\n </th>\r\n\r\n <td mat-cell\r\n *matCellDef=\"let element; let rowIndex = dataIndex\"\r\n [align]=\"column.styles?.alignment\"\r\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\r\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\r\n >\r\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\" [appearance]=\"'line'\"\r\n *ngIf=\"loading; else value\"></ui-skeleton>\r\n <ng-template #value>\r\n <div class=\"row-value\">\r\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\r\n\r\n @if (column?.type) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\r\n } @else {\r\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.rowCellTemplate; context: {$implicit: element, rowIndex}\"></ng-container>\r\n </ng-container>\r\n <ng-template #configData>\r\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\r\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\r\n </ng-template>\r\n }\r\n </div>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"isLast && column.isSticky && !column.allowSort\">\r\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\r\n [stickyEnd]=\"scrollSettings.horizontalScroll ? !scrollSettings.scrollEnd : true\">\r\n <th mat-header-cell\r\n *matHeaderCellDef\r\n [attr.sortable]=\"column.allowSort ?? false\"\r\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\r\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\r\n [style.font-weight]=\"'bold'\"\r\n >\r\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.headerCellTemplate; context: {$implicit: column.title, column, colIndex: i}\"></ng-container>\r\n </ng-container>\r\n <ng-template #configValue>\r\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\r\n </ng-template>\r\n </th>\r\n\r\n <td mat-cell\r\n *matCellDef=\"let element; let rowIndex = dataIndex\"\r\n [align]=\"column.styles?.alignment\"\r\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\r\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\r\n >\r\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\r\n [appearance]=\"'line'\"\r\n *ngIf=\"loading; else value\"></ui-skeleton>\r\n <ng-template #value>\r\n <div class=\"row-value\">\r\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\r\n\r\n @if (column?.type) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\r\n } @else {\r\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\r\n </ng-container>\r\n <ng-template #configData>\r\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\r\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\r\n </ng-template>\r\n }\r\n </div>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container\r\n *ngIf=\"!(isLast && column.isSticky) && column.allowSort\">\r\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\r\n [sticky]=\"(isMobile$ | async) ? false : !scrollSettings.scrollStart && !!column.isSticky\">\r\n <th mat-header-cell\r\n [start]=\"column.sortStart ?? 'asc'\"\r\n [mat-sort-header]=\"column.sortHeader ?? column.key\"\r\n [attr.sortable]=\"column.allowSort ?? false\"\r\n *matHeaderCellDef\r\n [style.font-weight]=\"'bold'\"\r\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\r\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\r\n >\r\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\r\n </ng-container>\r\n <ng-template #configValue>\r\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\r\n </ng-template>\r\n </th>\r\n\r\n <td mat-cell\r\n *matCellDef=\"let element; let rowIndex = dataIndex\"\r\n [align]=\"column.styles?.alignment\"\r\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\r\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\r\n >\r\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\r\n [appearance]=\"'line'\"\r\n *ngIf=\"loading; else value\"></ui-skeleton>\r\n <ng-template #value>\r\n <div class=\"row-value\">\r\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\r\n\r\n @if (column?.type) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\r\n } @else {\r\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\r\n </ng-container>\r\n <ng-template #configData>\r\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\r\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\r\n </ng-template>\r\n }\r\n </div>\r\n\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container\r\n *ngIf=\"!(isLast && column.isSticky) && !column.allowSort\">\r\n <ng-container [matColumnDef]=\"column.uniqueId ?? column.key\"\r\n [sticky]=\"(isMobile$ | async) ? false : !scrollSettings.scrollStart && !!column.isSticky\">\r\n <th mat-header-cell\r\n [attr.sortable]=\"column.allowSort ?? false\"\r\n *matHeaderCellDef\r\n [style.font-weight]=\"'bold'\"\r\n [ngStyle]=\"{width: column.styles?.width, minWidth: column.styles?.['min-width']}\"\r\n [ngClass]=\"column.styles?.alignment ? 'th-'+column.styles?.alignment : ''\"\r\n >\r\n <ng-container *ngIf=\"column.headerCellTemplate; else configValue\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.headerCellTemplate; context: { $implicit: column.title, column, colIndex: i }\"></ng-container>\r\n </ng-container>\r\n <ng-template #configValue>\r\n <ng-container [ngTemplateOutlet]=\"columnHeader\" [ngTemplateOutletContext]=\"{ i, column }\"></ng-container>\r\n </ng-template>\r\n </th>\r\n\r\n <td mat-cell\r\n *matCellDef=\"let element; let rowIndex = dataIndex\"\r\n [align]=\"column.styles?.alignment\"\r\n [ngClass]=\"[column.styles?.alignment ? 'td-'+column.styles?.alignment : '']\"\r\n (click)=\"onRowClick(element); column?.rowCellTemplateClick ? column!.rowCellTemplateClick?.() : ''\"\r\n >\r\n <ui-skeleton class=\"table-skeleton-loader\" [count]=\"1\" [theme]=\"skeletonStyleConfig\"\r\n [appearance]=\"'line'\"\r\n *ngIf=\"loading; else value\"></ui-skeleton>\r\n <ng-template #value>\r\n <div class=\"row-value\">\r\n <ng-container [ngTemplateOutlet]=\"expandButton\" [ngTemplateOutletContext]=\"{ index: i, element }\"></ng-container>\r\n\r\n @if (column?.type) {\r\n <ng-container\r\n *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn: column}\"></ng-container>\r\n } @else {\r\n <ng-container *ngIf=\"column.rowCellTemplate; else configData\">\r\n <ng-container\r\n *ngTemplateOutlet=\"column.rowCellTemplate; context: { $implicit: element, rowIndex }\"></ng-container>\r\n </ng-container>\r\n <ng-template #configData>\r\n <span [style.font-weight]=\"column.bold ? 'bold' : 'normal'\"\r\n [style.font-size]=\"column.fontSize ?? '14px'\">{{ element | dataPropertyGetter: column.key }}</span>\r\n </ng-template>\r\n }\r\n </div>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"displayedColumns.length\">\r\n <div class=\"element-detail\" *ngIf=\"dataSourceDetail.data.length\"\r\n [@expandDetail]=\"element === elementDetail ? 'expanded' : 'collapsed'\">\r\n <table\r\n mat-table\r\n [dataSource]=\"dataSourceDetail\"\r\n [ngClass]=\"{ 'hide-borders': element === tableData[tableData.length - 1] }\"\r\n >\r\n <ng-container *ngFor=\"let tableColumn of tableDetailColumns.columnDefs\"\r\n [matColumnDef]=\"tableColumn.title ?? ''\">\r\n <th mat-header-cell *matHeaderCellDef=\"let element\" arrowPosition=\"after\"\r\n [ngStyle]=\"{width: tableColumn.styles?.width}\"\r\n [ngClass]=\"tableColumn.styles?.alignment ? 'th-'+tableColumn.styles?.alignment : ''\">\r\n {{ tableColumn.title | uppercase }}\r\n </th>\r\n\r\n <td mat-cell *matCellDef=\"let element\" (click)=\"onDetailRowClick(element)\"\r\n [align]=\"tableColumn.styles?.alignment\"\r\n [ngClass]=\"tableColumn.styles?.alignment ? 'td-'+tableColumn.styles?.alignment : ''\"\r\n [ngStyle]=\"{width: tableColumn.styles?.width }\">\r\n <ng-container *ngTemplateOutlet=\"tableDataTpl; context: {element, tableColumn}\"></ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"columnsDetailToDisplay\"></tr>\r\n <tr mat-row *matRowDef=\"let rowDetail; columns: columnsDetailToDisplay;\"></tr>\r\n </table>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-template #tableDataTpl let-element=\"element\" let-tableColumn=\"tableColumn\">\r\n <div class=\"align-wrapper\">\r\n <ng-container [ngSwitch]=\"tableColumn.type\">\r\n <ng-container *ngSwitchCase=\"DataType.FIELD\">\r\n {{ element | dataPropertyGetter: tableColumn.key }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"DataType.FUNCTION\">\r\n {{ tableColumn.function?.(element) }}\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"DataType.RENDERER\">\r\n <ng-template\r\n [dynamicComponent]=\"[tableColumn.renderer, element] | memoizeFunc : callRenderer\">\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ element | dataPropertyGetter: tableColumn.key }}\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\r\n [ngClass]=\"{'expanded-row': elementDetail === row, 'row-clickable': tableDetails, 'selected': row?.selected, 'last-row': row === tableData[tableData.length - 1] && !elementDetail }\"\r\n (click)=\"toggleRow(row)\">\r\n </tr>\r\n <ng-container *ngIf=\"tableDetails && tableDetailColumns?.columnDefs?.length\">\r\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"detail-row\"></tr>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"tableConfig.noDataRowTpl\">\r\n <tr *matNoDataRow>\r\n <ng-container *ngTemplateOutlet=\"tableConfig.noDataRowTpl\"></ng-container>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n </div>\r\n\r\n <ui-paginator\r\n *ngIf=\"!tableConfig?.hidePagination && tableConfig?.pagination\"\r\n [disabled]=\"loading\"\r\n [applicationTheme]=\"applicationTheme !== 'classic' ? 'light' : 'classic'\"\r\n [pageSize]=\"tableConfig.pagination?.itemsPerPage ?? 25\"\r\n [length]=\"tableConfig.pagination?.totalItems ?? 0\"\r\n [currentPage]=\"tableConfig.pagination?.currentPage ?? 0\"\r\n [pageSizeOptions]=\"tableConfig.pagination?.itemsPerPageOptions ?? [10, 25, 50]\"\r\n (paginatorChange)=\"onPaginatorChange($event)\"\r\n ></ui-paginator>\r\n</div>\r\n\r\n<ng-template #expandButton let-i=\"index\" let-element=\"element\">\r\n <ui-button\r\n [applicationTheme]=\"applicationTheme\"\r\n *ngIf=\"!i && tableDetails\"\r\n variant=\"icon-button\"\r\n [ngClass]=\"{ opened: elementDetail && element == elementDetail }\"\r\n [iconName]=\"elementDetail && element == elementDetail ? 'Arrow-chevron-up-in-line' : 'Arrow-chevron-down-in-line'\"\r\n ></ui-button>\r\n</ng-template>\r\n\r\n<ng-template #columnHeader let-column=\"column\" let-i=\"i\">\r\n <div class=\"header-section\">\r\n <span uiEllipseText (onChangeTextState)=\"onChangeColumnSize(i, $event)\"\r\n class=\"column-title\">{{ column.title | sentencecase }}\r\n </span>\r\n <ui-icon *ngIf=\"column?.showTooltip\" [name]=\"'Help-in-line'\"\r\n [matTooltipClass]=\"applicationTheme\"\r\n [matTooltip]=\"(column?.showTooltip ? (column?.tooltip ? column.tooltip : column.title ) : '') || ''\"\r\n ></ui-icon>\r\n </div>\r\n</ng-template>\r\n\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap\";.bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host-context(.without-table-border) .table-container{border:none}.flex-left,.table-container .table-header{display:flex;justify-content:flex-start;align-items:center}.table-container{--mat-table-background-color: #ffffff;overflow:hidden;border:1px #E0E0E0 solid;border-radius:8px}.table-container ::ng-deep .mat-sort-header-arrow{color:#000}.table-container .table-header{min-height:56px;padding:8px;background:#fff;line-height:24px;font-size:16px;font-weight:700;text-transform:uppercase;display:flex;justify-content:space-between}.table-container .table-wrapper{max-width:100%;overflow:auto}.table-container .table-wrapper table.main-table{width:100%;box-shadow:unset;border-top:1px #E0E0E0 solid}.table-container .table-wrapper table.main-table ::ng-deep .mat-sort-header-arrow{margin-left:8px}.table-container .table-wrapper table.main-table .mdc-data-table__cell,.table-container .table-wrapper table.main-table .mdc-data-table__header-cell{padding:8px 24px}.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__cell:not(:first-child):not(:last-child),.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__header-cell:not(:first-child):not(:last-child),.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__cell:not(:first-child):not(:last-child),.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__header-cell:not(:first-child):not(:last-child){padding:8px 12px}.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__cell:first-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__header-cell:first-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__cell:first-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__header-cell:first-child{padding:8px 12px 8px 24px}.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__cell:last-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-row .mdc-data-table__header-cell:last-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__cell:last-child,.table-container .table-wrapper table.main-table.condensed .mat-mdc-header-row .mdc-data-table__header-cell:last-child{padding:8px 24px 8px 12px}.table-container .table-wrapper table.main-table th{font-size:14px;line-height:16px;text-transform:uppercase}.table-container .table-wrapper table.main-table td{font-size:14px;line-height:20px}.table-container .table-wrapper table.main-table td .row-value{display:flex;align-items:center;gap:16px}.table-container .table-wrapper table.main-table td .row-value ui-icon ::ng-deep mat-icon{transition:all .3s!important;font-size:24px}.table-container .table-wrapper table.main-table td .row-value ui-icon.opened ::ng-deep mat-icon{transform:rotate(180deg)}.table-container .table-wrapper table.main-table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader{display:flex;justify-content:center;align-items:center;line-height:unset}.table-container .table-wrapper table.main-table td ::ng-deep .table-skeleton-loader ngx-skeleton-loader .skeleton-loader{margin-bottom:0}.table-container .table-wrapper table.main-table ::ng-deep thead{background:#f6f6f6!important}.table-container .table-wrapper table.main-table .mat-mdc-table-sticky-border-elem-left{box-shadow:24px 8px 24px #00000014}.table-container .table-wrapper table.main-table .mat-mdc-table-sticky-border-elem-right{box-shadow:0 8px 24px 4px #00000014}.table-container .header-section{display:flex;gap:4px;align-items:center}.table-container .header-section .column-title{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;max-width:fit-content;font-weight:700}.table-container.without-title table{border:unset!important}.table-container.disable-border-radius{border-radius:0!important}.table-container ::ng-deep .mat-mdc-paginator-container{padding:0 24px}.table-container[theme=dark],.table-container[theme=light]{border-radius:10px}.table-container[theme=dark] tr.selected,.table-container[theme=light] tr.selected{background:#f4f4f4!important}.table-container[theme=dark] .table-header,.table-container[theme=light] .table-header{padding:8px 24px;text-transform:none}.table-container[theme=dark] .table-wrapper table th,.table-container[theme=light] .table-wrapper table th{text-transform:none}.table-container[theme=dark] .table-wrapper table td,.table-container[theme=light] .table-wrapper table td{transition:border .3s}.table-container[theme=dark] .table-wrapper table tr.last-row td,.table-container[theme=light] .table-wrapper table tr.last-row td{--mat-table-row-item-outline-color: rgb(0, 0, 0, 0)}.table-container[theme=dark] .table-wrapper table .mat-mdc-table-sticky-border-elem-right,.table-container[theme=light] .table-wrapper table .mat-mdc-table-sticky-border-elem-right{box-shadow:0 8px 24px 4px #242424,8%!important}.table-container[theme=dark] .table-wrapper table .mat-mdc-table-sticky-border-elem-left,.table-container[theme=light] .table-wrapper table .mat-mdc-table-sticky-border-elem-left{box-shadow:24px 8px 24px #242424,8%!important}.table-container[theme=dark] .table-wrapper table ::ng-deep thead,.table-container[theme=light] .table-wrapper table ::ng-deep thead{background-color:#fff!important}.table-container[theme=dark] .table-wrapper table ::ng-deep :not(thead) tr:hover,.table-container[theme=light] .table-wrapper table ::ng-deep :not(thead) tr:hover{background-color:#fff2fc}.table-container ::ng-deep tr.detail-row{height:0}.table-container ::ng-deep tr.detail-row td{border:unset!important}.table-container ::ng-deep .mat-column-expandedDetail{padding:0!important}.table-container ::ng-deep .element-detail{overflow:hidden!important;display:flex!important}.table-container ::ng-deep .element-detail table{background-color:#fff;border-bottom:1px solid #D3D3D3;transition:border .3s}.table-container ::ng-deep .element-detail table.hide-borders{border-bottom:unset}.table-container ::ng-deep .element-detail table .mat-mdc-header-row{visibility:collapse}.table-container ::ng-deep .element-detail table .mat-mdc-cell{border-width:0}.table-container ::ng-deep .element-detail table td:first-child{padding-left:64px!important}table th.th-right{text-align:right}table th.th-right ::ng-deep .header-section{justify-content:end}table th.th-left{text-align:left}table th.th-left ::ng-deep .header-section{justify-content:start}table th.th-center{text-align:center}table th.th-center ::ng-deep .header-section{justify-content:center}table td.td-right{text-align:right}table td.td-right div{justify-content:end}table td.td-left{text-align:left}table td.td-left div{justify-content:start}table td.td-center{text-align:center}table td.td-center div{justify-content:center}::ng-deep table:not(.main-table) thead{display:none!important}ui-paginator{width:100%;display:flex;justify-content:flex-end;border-top:1px solid #D3D3D3}ui-paginator ::ng-deep .mat-mdc-paginator{width:100%}::ng-deep .mat-mdc-tooltip{background-color:#a9c2c9;font-family:Open Sans,serif;font-weight:400;font-size:12px;border-radius:4px;overflow:visible;max-width:248px;padding:6px 2px;--mdc-plain-tooltip-container-color: none;--mdc-plain-tooltip-supporting-text-color: $tgo-black}\n"] }]
218
218
  }], ctorParameters: () => [{ type: undefined, decorators: [{
219
219
  type: Optional
220
220
  }, {
@@ -252,4 +252,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
252
252
  type: ViewChild,
253
253
  args: ['table']
254
254
  }] } });
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFHVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsVUFBVSxHQVVYLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQWdCNUQsTUFBTSxPQUFPLGNBQWM7SUFzRnpCLFlBQzZFLGVBQWlDLEVBQ3BHLFVBQXNCLEVBQ2MsU0FBOEI7UUFGQyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFDcEcsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNjLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBeEU1RTs7Ozs7O1dBTUc7UUFDTSxZQUFPLEdBQUcs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Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb2x1bW5FbGxpcHNlLFxuICBDb2x1bW5UeXBlLFxuICBDb21wb25lbnRSZW5kZXJlcixcbiAgRGF0YVNvdXJjZSxcbiAgUGFnaW5hdGlvbixcbiAgU2Nyb2xsU2V0dGluZ3MsXG4gIFRhYmxlQ29sdW1uLFxuICBUYWJsZUNvbmZpZyxcbiAgVGFibGVDb25maWdXaXRoUGFnaW5hdGlvbixcbiAgVGFibGVEYXRhLFxuICBUYWJsZURldGFpbENvbHVtbixcbn0gZnJvbSAnLi90YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgQXBwbGljYXRpb25UaGVtZSB9IGZyb20gJy4uLy4uL21vZGVscy9hcHBsaWNhdGlvbi10aGVtZS5tb2RlbCc7XG5pbXBvcnQgeyBzb3J0QnlPcmRlciB9IGZyb20gJy4uLy4uL3V0aWxzL3RhYmxlLnV0aWxzJztcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgU29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tRXZlbnQsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IElTX01PQklMRV9UT0tFTiB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9pcy1tb2JpbGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd1aS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignZXhwYW5kRGV0YWlsJywgW1xuICAgICAgc3RhdGUoJ2NvbGxhcHNlZCwgdm9pZCcsIHN0eWxlKHsgaGVpZ2h0OiAnMHB4JyB9KSksXG4gICAgICBzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7IGhlaWdodDogJyonIH0pKSxcbiAgICAgIHRyYW5zaXRpb24oJ2V4cGFuZGVkIDw9PiBjb2xsYXBzZWQnLCBhbmltYXRlKCcyMjVtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknKSksXG4gICAgICB0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gdm9pZCcsIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpKSxcbiAgICBdKSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQ8VCBleHRlbmRzIERhdGFTb3VyY2UsIFREZXRhaWwgZXh0ZW5kcyBEYXRhU291cmNlPiBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIC8qKlxuICAgKiBUYWJsZSBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEB0eXBlIHtUYWJsZUNvbmZpZ31cbiAgICogQG1lbWJlcm9mIFRhYmxlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjb25maWc6IFRhYmxlQ29uZmlnV2l0aFBhZ2luYXRpb248VD47XG5cbiAgLyoqXG4gICAqIElucHV0IHByb3BlcnR5IGZvciBwcm92aWRpbmcgdGhlIHRhYmxlIGRhdGEuXG4gICAqXG4gICAqIEB0eXBlIHtUYWJsZURhdGF9XG4gICAqIEBtZW1iZXJvZiBUYWJsZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgZGF0YTogVGFibGVEYXRhO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBwcm9wZXJ0eSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHRhYmxlIGlzIGluIGEgbG9hZGluZyBzdGF0ZS5cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBUYWJsZUNvbXBvbmVudFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKlxuICAgKiBEZWZpbmVzIHRoZSBhcHBsaWNhdGlvbiB0aGVtZVxuICAgKiBAdHlwZSB7QXBwbGljYXRpb25UaGVtZX1cbiAgICogQG1lbWJlcm9mIFRhYmxlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhcHBsaWNhdGlvblRoZW1lOiBBcHBsaWNhdGlvblRoZW1lID0gJ2xpZ2h0JztcblxuICAvKipcbiAgICogRGF0YSBzdHJ1Y3R1cmUgdG8gc2VsZWN0IHdoaWNoIGNvbHVtbnMgc2hvdWxkIGJlIHJlbmRlcmVkIGFuZCB0aGVpciBjYXBhYmlsaXRpZXNcbiAgICpcbiAgICogQHR5cGUge1RhYmxlRGV0YWlsQ29sdW1ufVxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHRhYmxlRGV0YWlsQ29sdW1uczogVGFibGVEZXRhaWxDb2x1bW48VCwgVERldGFpbD47XG4gIEBJbnB1dCgpIHRhYmxlRGV0YWlscyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBEaXNhYmxlIGJvcmRlciByYWRpdXMgZm9yIHRhYmxlXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVCb3JkZXJSYWRpdXMgPSBmYWxzZTtcblxuICAvKipcbiAgICogQ29uZGVuc2VkIHRhYmxlXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGlzQ29uZGVuc2VkID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIG9uUm93Q2xpY2tFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uRGV0YWlsUm93Q2xpY2tFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHBhZ2luYXRvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgc29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydD4oKTtcblxuICBAVmlld0NoaWxkKCd0YWJsZScpIHRhYmxlOiBFbGVtZW50UmVmO1xuXG4gIHByb3RlY3RlZCB0YWJsZURhdGE6IFRhYmxlRGF0YTtcbiAgcHJvdGVjdGVkIHNvdXJjZURhdGE6IFRhYmxlRGF0YTtcbiAgcHJvdGVjdGVkIGNvbHVtbnNUb29sdGlwU3RhdGU6IENvbHVtbkVsbGlwc2VbXSA9IFtdO1xuICBwcm90ZWN0ZWQgdGFibGVDb25maWc6IFRhYmxlQ29uZmlnV2l0aFBhZ2luYXRpb248VD47XG4gIHByb3RlY3RlZCBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuICBwcm90ZWN0ZWQgY29sdW1uc0RldGFpbFRvRGlzcGxheTogc3RyaW5nW10gPSBbXTtcbiAgcHJvdGVjdGVkIHNrZWxldG9uU3R5bGVDb25maWcgPSB7XG4gICAgYmFja2dyb3VuZDogJyNGNkY2RjYnLFxuICAgICdib3JkZXItcmFkaXVzJzogJzRweCcsXG4gICAgaGVpZ2h0OiAnMjRweCcsXG4gIH07XG4gIHByb3RlY3RlZCBkYXRhU291cmNlRGV0YWlsID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnk+KFtdKTtcbiAgcHJvdGVjdGVkIGVsZW1lbnREZXRhaWw6IGFueTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IERhdGFUeXBlID0gQ29sdW1uVHlwZTtcbiAgcHJvdGVjdGVkIHNjcm9sbFNldHRpbmdzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2Nyb2xsU2V0dGluZ3M+KHtcbiAgICBzY3JvbGxFbmQ6IGZhbHNlLFxuICAgIGhvcml6b250YWxTY3JvbGw6IGZhbHNlLFxuICAgIHNjcm9sbFN0YXJ0OiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdCgnQ0FOT1BZVUlfREVGQVVMVF9BUFBMSUNBVElPTl9USEVNRScpIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEFwcFRoZW1lOiBBcHBsaWNhdGlvblRoZW1lLFxuICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZixcbiAgICBASW5qZWN0KElTX01PQklMRV9UT0tFTikgcHJvdGVjdGVkIHJlYWRvbmx5IGlzTW9iaWxlJDogT2JzZXJ2YWJsZTxib29sZWFuPlxuICApIHtcbiAgICBpZiAoZGVmYXVsdEFwcFRoZW1lKSB7XG4gICAgICB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPSBkZWZhdWx0QXBwVGhlbWU7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXRUYWJsZUNvbmZpZyh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5zZXRUYWJsZURhdGEodGhpcy5kYXRhKTtcblxuICAgIGlmICh0aGlzLmFwcGxpY2F0aW9uVGhlbWUgIT09ICdjbGFzc2ljJykge1xuICAgICAgdGhpcy5za2VsZXRvblN0eWxlQ29uZmlnLmJhY2tncm91bmQgPSAnI0Y0RjRGNCc7XG4gICAgfVxuICAgIGRvY3VtZW50LmJvZHkuc2V0QXR0cmlidXRlKCd0aGVtZScsIHRoaXMuYXBwbGljYXRpb25UaGVtZSk7XG5cbiAgICBpZiAodGhpcy50YWJsZURldGFpbENvbHVtbnMpIHtcbiAgICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMudGFibGVEZXRhaWxDb2x1bW5zLmNvbHVtbkRlZnMuZmlsdGVyKGNvbHVtbiA9PiAhY29sdW1uLmhpZGRlbik7XG4gICAgICB0aGlzLmNvbHVtbnNEZXRhaWxUb0Rpc3BsYXkgPSBmaWx0ZXJlZENvbHVtbnMubGVuZ3RoXG4gICAgICAgID8gZmlsdGVyZWRDb2x1bW5zLm1hcCgodGFibGVDb2x1bW46IFRhYmxlQ29sdW1uPFREZXRhaWw+KSA9PiB0YWJsZUNvbHVtbi50aXRsZSEpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFibGVDb25maWc/LnNvcnRhYmxlICYmIHRoaXMudGFibGVDb25maWc/LnNvcnQpIHtcbiAgICAgIHRoaXMub25Tb3J0Q2hhbmdlKHRoaXMudGFibGVDb25maWcuc29ydCBhcyBTb3J0LCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuaGFzVGFibGVTY3JvbGwoKTtcbiAgICBmcm9tRXZlbnQodGhpcy50YWJsZS5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJylcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmhhc1RhYmxlU2Nyb2xsKCkpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydjb25maWcnXSAmJiBjaGFuZ2VzWydjb25maWcnXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGNoYW5nZXNbJ2NvbmZpZyddLmN1cnJlbnRWYWx1ZSBhcyBUYWJsZUNvbmZpZzxUPjtcbiAgICAgIHRoaXMuc2V0VGFibGVDb25maWcoY29uZmlnKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2RhdGEnXT8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnNldFRhYmxlRGF0YShjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlIGFzIFRhYmxlRGF0YSk7XG4gICAgfVxuICB9XG5cbiAgaGFzVGFibGVTY3JvbGwoKTogdm9pZCB7XG4gICAgY29uc3QgdGFibGUgPSB0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgaG9yaXpvbnRhbFNjcm9sbCA9IHRhYmxlLnNjcm9sbFdpZHRoID4gdGFibGUuY2xpZW50V2lkdGg7XG4gICAgY29uc3Qgc2Nyb2xsRW5kID0gdGFibGUuc2Nyb2xsTGVmdCArIHRhYmxlLmNsaWVudFdpZHRoID49IHRhYmxlLnNjcm9sbFdpZHRoO1xuICAgIHRoaXMuc2Nyb2xsU2V0dGluZ3MkLm5leHQoe1xuICAgICAgc2Nyb2xsU3RhcnQ6ICF0YWJsZS5zY3JvbGxMZWZ0LFxuICAgICAgc2Nyb2xsRW5kLFxuICAgICAgaG9yaXpvbnRhbFNjcm9sbCxcbiAgICB9KTtcbiAgfVxuXG4gIGNhbGxSZW5kZXJlcihbcmVuZGVyZXJGbiwgZWxlbWVudF06IFsodjogVCkgPT4gQ29tcG9uZW50UmVuZGVyZXIgfCBzdHJpbmcsIFRdKTogYW55IHtcbiAgICBpZiAocmVuZGVyZXJGbikge1xuICAgICAgcmV0dXJuIHJlbmRlcmVyRm4oZWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uUGFnaW5hdG9yQ2hhbmdlKGV2ZW50OiBQYWdlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2luYXRvckNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNoYW5nZUNvbHVtblNpemUoY29sdW1uSW5kZXg6IG51bWJlciwgc2hvd1Rvb2x0aXA6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmNvbHVtbnNUb29sdGlwU3RhdGUgPSB0aGlzLmNvbHVtbnNUb29sdGlwU3RhdGUubWFwKGNvbHVtbiA9PiB7XG4gICAgICBpZiAoY29sdW1uLmluZGV4ID09PSBjb2x1bW5JbmRleCkge1xuICAgICAgICBjb2x1bW4uc2hvd1Rvb2x0aXAgPSBzaG93VG9vbHRpcDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb2x1bW47XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Tb3J0Q2hhbmdlKHNvcnRTdGF0ZTogU29ydCwgZW1pdEV2ZW50ID0gdHJ1ZSk6IHZvaWQge1xuICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHNvcnRTdGF0ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFibGVDb25maWc/LnNvcnRhYmxlKSB7XG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IFtcbiAgICAgICAgLi4udGhpcy50YWJsZURhdGEuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzQXNjID0gc29ydFN0YXRlLmRpcmVjdGlvbiA9PT0gJ2FzYyc7XG4gICAgICAgICAgY29uc3QgYVZhbCA9IGFbc29ydFN0YXRlLmFjdGl2ZV07XG4gICAgICAgICAgY29uc3QgYlZhbCA9IGJbc29ydFN0YXRlLmFjdGl2ZV07XG4gICAgICAgICAgcmV0dXJuIChhVmFsIDwgYlZhbCA/IC0xIDogMSkgKiAoaXNBc2MgPyAxIDogLTEpO1xuICAgICAgICB9KSxcbiAgICAgIF07XG5cbiAgICAgIGlmICghc29ydFN0YXRlLmRpcmVjdGlvbikge1xuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IFsuLi50aGlzLnNvdXJjZURhdGFdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvblJvd0NsaWNrKHJvd1BhcmFtczogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblJvd0NsaWNrRXZlbnQuZW1pdChyb3dQYXJhbXMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uRGV0YWlsUm93Q2xpY2socm93UGFyYW1zOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uRGV0YWlsUm93Q2xpY2tFdmVudC5lbWl0KHJvd1BhcmFtcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlUm93KGVsZW1lbnQ6IFQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50YWJsZURldGFpbHMpIHtcbiAgICAgIHRoaXMuZWxlbWVudERldGFpbCA9IHRoaXMuZWxlbWVudERldGFpbCA9PT0gZWxlbWVudCA/IG51bGwgOiBlbGVtZW50O1xuICAgICAgaWYgKHRoaXMuZWxlbWVudERldGFpbCkge1xuICAgICAgICB0aGlzLnRhYmxlRGV0YWlsQ29sdW1ucy5zZXREZXRhaWxSb3dEYXRhKHtcbiAgICAgICAgICBkYXRhOiBlbGVtZW50LFxuICAgICAgICAgIHNldERldGFpbERhdGFTb3VyY2U6IHRoaXMuc2V0VGFibGVEZXRhaWxEYXRhU291cmNlLmJpbmQodGhpcyksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VGFibGVEZXRhaWxEYXRhU291cmNlKHJvd0RhdGE6IFREZXRhaWxbXSk6IHZvaWQge1xuICAgIHRoaXMuZGF0YVNvdXJjZURldGFpbCA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8YW55Pihyb3dEYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VGFibGVDb25maWcoY29uZmlnOiBUYWJsZUNvbmZpZzxUPik6IHZvaWQge1xuICAgIGNvbmZpZy5wYWdpbmF0aW9uID0gY29uZmlnPy5wYWdpbmF0aW9uID8/IHRoaXMuZGVmYXVsdFBhZ2luYXRpb25Db25maWc7XG5cbiAgICB0aGlzLnRhYmxlQ29uZmlnID0gY29uZmlnIGFzIFRhYmxlQ29uZmlnV2l0aFBhZ2luYXRpb248VD47XG5cbiAgICB0aGlzLmNvbHVtbnNUb29sdGlwU3RhdGUgPSBjb25maWcuY29sdW1ucy5tYXAoKGNvbHVtbiwgaW5kZXgpID0+ICh7XG4gICAgICBpbmRleCxcbiAgICAgIHNob3dUb29sdGlwOiBjb2x1bW4uc2hvd1Rvb2x0aXAgPz8gZmFsc2UsXG4gICAgfSkpO1xuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IHNvcnRCeU9yZGVyPFQ+KGNvbmZpZy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gIWNvbHVtbi5oaWRkZW4pKS5tYXAoXG4gICAgICBjb2x1bW4gPT4gY29sdW1uLnVuaXF1ZUlkID8/IGNvbHVtbi5rZXlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRUYWJsZURhdGEoZGF0YTogVGFibGVEYXRhKTogdm9pZCB7XG4gICAgdGhpcy5zb3VyY2VEYXRhID0gZGF0YTtcbiAgICB0aGlzLnRhYmxlRGF0YSA9IGRhdGE7XG4gIH1cblxuICBwcml2YXRlIGRlZmF1bHRQYWdpbmF0aW9uQ29uZmlnOiBQYWdpbmF0aW9uID0ge1xuICAgIGN1cnJlbnRQYWdlOiAwLFxuICAgIGl0ZW1zUGVyUGFnZTogMTAsXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9uczogWzEwLCAyNSwgNTBdLFxuICAgIHRvdGFsSXRlbXM6IDIwLFxuICB9O1xuXG4gIHRyYWNrQ29sdW1uVW5pcXVlSWQgPSAoaW5kZXg6IG51bWJlciwgY29sdW1uOiBUYWJsZUNvbHVtbjxUPik6IHN0cmluZyA9PiBjb2x1bW4udW5pcXVlSWQgPz8gY29sdW1uLmtleTtcbn1cbiIsIjxkaXYgI3RhYmxlQ29udGFpbmVyIGNsYXNzPVwidGFibGUtY29udGFpbmVyXCJcbiAgICAgW25nQ2xhc3NdPVwieyAnd2l0aG91dC10aXRsZSc6ICF0YWJsZUNvbmZpZz8udGl0bGUsICdkaXNhYmxlLWJvcmRlci1yYWRpdXMnOiBkaXNhYmxlQm9yZGVyUmFkaXVzIH1cIlxuICAgICBbYXR0ci50aGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCI+XG4gIDxkaXYgKm5nSWY9XCJ0YWJsZUNvbmZpZz8udGl0bGVcIiBjbGFzcz1cInRhYmxlLWhlYWRlclwiPlxuICAgIHt7IHRhYmxlQ29uZmlnLnRpdGxlIHwgc2VudGVuY2VjYXNlIH19XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3RpdGxlLWFjdGlvbnNdXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICN0YWJsZVxuICAgICpuZ0lmPVwic2Nyb2xsU2V0dGluZ3MkIHwgYXN5bmMgYXMgc2Nyb2xsU2V0dGluZ3NcIlxuICAgIGNsYXNzPVwidGFibGUtd3JhcHBlclwiPlxuICAgIDx0YWJsZVxuICAgICAgW3RhYkluZGV4XT1cIjBcIlxuICAgICAgY2xhc3M9XCJtYWluLXRhYmxlXCJcbiAgICAgIFtjbGFzcy5jb25kZW5zZWRdPVwiaXNDb25kZW5zZWRcIlxuICAgICAgbWF0LXRhYmxlXG4gICAgICBbZGF0YVNvdXJjZV09XCJ0YWJsZURhdGFcIlxuICAgICAgbWF0U29ydFxuICAgICAgW21hdFNvcnRTdGFydF09XCJ0YWJsZUNvbmZpZz8uc29ydD8uZGVmYXVsdFNvcnRTdGFydCA/PyAnYXNjJ1wiXG4gICAgICBbbWF0U29ydEFjdGl2ZV09XCJ0YWJsZUNvbmZpZz8uc29ydD8uYWN0aXZlID8/ICcnXCJcbiAgICAgIFttYXRTb3J0RGlyZWN0aW9uXT1cInRhYmxlQ29uZmlnPy5zb3J0Py5kaXJlY3Rpb24gPz8gJydcIlxuICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCRldmVudClcIlxuICAgICAgbXVsdGlUZW1wbGF0ZURhdGFSb3dzXG4gICAgPlxuXG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdGFibGVDb25maWcuY29sdW1uczsgaW5kZXggYXMgaSwgbGFzdCBhcyBpc0xhc3Q7IHRyYWNrQnk6IHRyYWNrQ29sdW1uVW5pcXVlSWRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTGFzdCAmJiBjb2x1bW4uaXNTdGlja3kgJiYgY29sdW1uLmFsbG93U29ydFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4udW5pcXVlSWQgPz8gY29sdW1uLmtleVwiIFtzdGlja3lFbmRdPVwiIXNjcm9sbFNldHRpbmdzPy5zY3JvbGxFbmRcIj5cbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGxcbiAgICAgICAgICAgICAgICBbc3RhcnRdPVwiY29sdW1uLnNvcnRTdGFydCA/PyAnYXNjJ1wiXG4gICAgICAgICAgICAgICAgW21hdC1zb3J0LWhlYWRlcl09XCJjb2x1bW4uc29ydEhlYWRlciA/PyBjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICAgICAgICAgIFthdHRyLnNvcnRhYmxlXT1cImNvbHVtbi5hbGxvd1NvcnQgPz8gZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInt3aWR0aDogY29sdW1uLnN0eWxlcz8ud2lkdGgsIG1pbldpZHRoOiBjb2x1bW4uc3R5bGVzPy5bJ21pbi13aWR0aCddfVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RoLScrY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJydcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXdlaWdodF09XCInYm9sZCdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdWYWx1ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogY29sdW1uLnRpdGxlLCBjb2x1bW4sIGNvbEluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdWYWx1ZT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbkhlYWRlclwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGksIGNvbHVtbiB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RoPlxuXG4gICAgICAgICAgICA8dGQgbWF0LWNlbGxcbiAgICAgICAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgcm93SW5kZXggPSBkYXRhSW5kZXhcIlxuICAgICAgICAgICAgICAgIFthbGlnbl09XCJjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnRcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGQtJytjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ11cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJvd0NsaWNrKGVsZW1lbnQpOyBjb2x1bW4/LnJvd0NlbGxUZW1wbGF0ZUNsaWNrID8gY29sdW1uIS5yb3dDZWxsVGVtcGxhdGVDbGljaz8uKCkgOiAnJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDx1aS1za2VsZXRvbiBjbGFzcz1cInRhYmxlLXNrZWxldG9uLWxvYWRlclwiIFtjb3VudF09XCIxXCIgW3RoZW1lXT1cInNrZWxldG9uU3R5bGVDb25maWdcIiBbYXBwZWFyYW5jZV09XCInbGluZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsb2FkaW5nOyBlbHNlIHZhbHVlXCI+PC91aS1za2VsZXRvbj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN2YWx1ZT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImV4cGFuZEJ1dHRvblwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGluZGV4OiBpLCBlbGVtZW50IH1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgQGlmIChjb2x1bW4/LnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVEYXRhVHBsOyBjb250ZXh0OiB7ZWxlbWVudCwgdGFibGVDb2x1bW46IGNvbHVtbn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnJvd0NlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdEYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBlbGVtZW50LCByb3dJbmRleH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnRGF0YT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtzdHlsZS5mb250LXdlaWdodF09XCJjb2x1bW4uYm9sZCA/ICdib2xkJyA6ICdub3JtYWwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemVdPVwiY29sdW1uLmZvbnRTaXplID8/ICcxNHB4J1wiPnt7IGVsZW1lbnQgfCBkYXRhUHJvcGVydHlHZXR0ZXI6IGNvbHVtbi5rZXkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNMYXN0ICYmIGNvbHVtbi5pc1N0aWNreSAmJiAhY29sdW1uLmFsbG93U29ydFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4udW5pcXVlSWQgPz8gY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RpY2t5RW5kXT1cInNjcm9sbFNldHRpbmdzLmhvcml6b250YWxTY3JvbGwgPyAhc2Nyb2xsU2V0dGluZ3Muc2Nyb2xsRW5kIDogdHJ1ZVwiPlxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbFxuICAgICAgICAgICAgICAgICptYXRIZWFkZXJDZWxsRGVmXG4gICAgICAgICAgICAgICAgW2F0dHIuc29ydGFibGVdPVwiY29sdW1uLmFsbG93U29ydCA/PyBmYWxzZVwiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie3dpZHRoOiBjb2x1bW4uc3R5bGVzPy53aWR0aCwgbWluV2lkdGg6IGNvbHVtbi5zdHlsZXM/LlsnbWluLXdpZHRoJ119XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGgtJytjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ1wiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cIidib2xkJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uaGVhZGVyQ2VsbFRlbXBsYXRlOyBlbHNlIGNvbmZpZ1ZhbHVlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4uaGVhZGVyQ2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBjb2x1bW4udGl0bGUsIGNvbHVtbiwgY29sSW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmZpZ1ZhbHVlPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uSGVhZGVyXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaSwgY29sdW1uIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGg+XG5cbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbFxuICAgICAgICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCByb3dJbmRleCA9IGRhdGFJbmRleFwiXG4gICAgICAgICAgICAgICAgW2FsaWduXT1cImNvbHVtbi5zdHlsZXM/LmFsaWdubWVudFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiW2NvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA/ICd0ZC0nK2NvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA6ICcnXVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2soZWxlbWVudCk7IGNvbHVtbj8ucm93Q2VsbFRlbXBsYXRlQ2xpY2sgPyBjb2x1bW4hLnJvd0NlbGxUZW1wbGF0ZUNsaWNrPy4oKSA6ICcnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHVpLXNrZWxldG9uIGNsYXNzPVwidGFibGUtc2tlbGV0b24tbG9hZGVyXCIgW2NvdW50XT1cIjFcIiBbdGhlbWVdPVwic2tlbGV0b25TdHlsZUNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCInbGluZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsb2FkaW5nOyBlbHNlIHZhbHVlXCI+PC91aS1za2VsZXRvbj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN2YWx1ZT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImV4cGFuZEJ1dHRvblwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGluZGV4OiBpLCBlbGVtZW50IH1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgQGlmIChjb2x1bW4/LnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVEYXRhVHBsOyBjb250ZXh0OiB7ZWxlbWVudCwgdGFibGVDb2x1bW46IGNvbHVtbn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnJvd0NlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdEYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZWxlbWVudCwgcm93SW5kZXggfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdEYXRhPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmZvbnQtd2VpZ2h0XT1cImNvbHVtbi5ib2xkID8gJ2JvbGQnIDogJ25vcm1hbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCJjb2x1bW4uZm9udFNpemUgPz8gJzE0cHgnXCI+e3sgZWxlbWVudCB8IGRhdGFQcm9wZXJ0eUdldHRlcjogY29sdW1uLmtleSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cIiEoaXNMYXN0ICYmIGNvbHVtbi5pc1N0aWNreSkgJiYgY29sdW1uLmFsbG93U29ydFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4udW5pcXVlSWQgPz8gY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RpY2t5XT1cIihpc01vYmlsZSQgfCBhc3luYykgPyBmYWxzZSA6ICFzY3JvbGxTZXR0aW5ncy5zY3JvbGxTdGFydCAgJiYgISFjb2x1bW4uaXNTdGlja3lcIj5cbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGxcbiAgICAgICAgICAgICAgICBbc3RhcnRdPVwiY29sdW1uLnNvcnRTdGFydCA/PyAnYXNjJ1wiXG4gICAgICAgICAgICAgICAgW21hdC1zb3J0LWhlYWRlcl09XCJjb2x1bW4uc29ydEhlYWRlciA/PyBjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5zb3J0YWJsZV09XCJjb2x1bW4uYWxsb3dTb3J0ID8/IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXdlaWdodF09XCInYm9sZCdcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInt3aWR0aDogY29sdW1uLnN0eWxlcz8ud2lkdGgsIG1pbldpZHRoOiBjb2x1bW4uc3R5bGVzPy5bJ21pbi13aWR0aCddfVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RoLScrY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdWYWx1ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbi50aXRsZSwgY29sdW1uLCBjb2xJbmRleDogaSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmZpZ1ZhbHVlPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uSGVhZGVyXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaSwgY29sdW1uIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGg+XG5cbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbFxuICAgICAgICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCByb3dJbmRleCA9IGRhdGFJbmRleFwiXG4gICAgICAgICAgICAgICAgW2FsaWduXT1cImNvbHVtbi5zdHlsZXM/LmFsaWdubWVudFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiW2NvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA/ICd0ZC0nK2NvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA6ICcnXVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2soZWxlbWVudCk7IGNvbHVtbj8ucm93Q2VsbFRlbXBsYXRlQ2xpY2sgPyBjb2x1bW4hLnJvd0NlbGxUZW1wbGF0ZUNsaWNrPy4oKSA6ICcnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHVpLXNrZWxldG9uIGNsYXNzPVwidGFibGUtc2tlbGV0b24tbG9hZGVyXCIgW2NvdW50XT1cIjFcIiBbdGhlbWVdPVwic2tlbGV0b25TdHlsZUNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCInbGluZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsb2FkaW5nOyBlbHNlIHZhbHVlXCI+PC91aS1za2VsZXRvbj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN2YWx1ZT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImV4cGFuZEJ1dHRvblwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGluZGV4OiBpLCBlbGVtZW50IH1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgQGlmIChjb2x1bW4/LnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVEYXRhVHBsOyBjb250ZXh0OiB7ZWxlbWVudCwgdGFibGVDb2x1bW46IGNvbHVtbn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnJvd0NlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdEYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZWxlbWVudCwgcm93SW5kZXggfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdEYXRhPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmZvbnQtd2VpZ2h0XT1cImNvbHVtbi5ib2xkID8gJ2JvbGQnIDogJ25vcm1hbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCJjb2x1bW4uZm9udFNpemUgPz8gJzE0cHgnXCI+e3sgZWxlbWVudCB8IGRhdGFQcm9wZXJ0eUdldHRlcjogY29sdW1uLmtleSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiIShpc0xhc3QgJiYgY29sdW1uLmlzU3RpY2t5KSAmJiAhY29sdW1uLmFsbG93U29ydFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4udW5pcXVlSWQgPz8gY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RpY2t5XT1cIihpc01vYmlsZSQgfCBhc3luYykgPyBmYWxzZSA6ICFzY3JvbGxTZXR0aW5ncy5zY3JvbGxTdGFydCAmJiAhIWNvbHVtbi5pc1N0aWNreVwiPlxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbFxuICAgICAgICAgICAgICAgIFthdHRyLnNvcnRhYmxlXT1cImNvbHVtbi5hbGxvd1NvcnQgPz8gZmFsc2VcIlxuICAgICAgICAgICAgICAgICptYXRIZWFkZXJDZWxsRGVmXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cIidib2xkJ1wiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie3dpZHRoOiBjb2x1bW4uc3R5bGVzPy53aWR0aCwgbWluV2lkdGg6IGNvbHVtbi5zdHlsZXM/LlsnbWluLXdpZHRoJ119XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGgtJytjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uaGVhZGVyQ2VsbFRlbXBsYXRlOyBlbHNlIGNvbmZpZ1ZhbHVlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4uaGVhZGVyQ2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uLnRpdGxlLCBjb2x1bW4sIGNvbEluZGV4OiBpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnVmFsdWU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW5IZWFkZXJcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpLCBjb2x1bW4gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90aD5cblxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsXG4gICAgICAgICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IHJvd0luZGV4ID0gZGF0YUluZGV4XCJcbiAgICAgICAgICAgICAgICBbYWxpZ25dPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJbY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RkLScrY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJyddXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Sb3dDbGljayhlbGVtZW50KTsgY29sdW1uPy5yb3dDZWxsVGVtcGxhdGVDbGljayA/IGNvbHVtbiEucm93Q2VsbFRlbXBsYXRlQ2xpY2s/LigpIDogJydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8dWktc2tlbGV0b24gY2xhc3M9XCJ0YWJsZS1za2VsZXRvbi1sb2FkZXJcIiBbY291bnRdPVwiMVwiIFt0aGVtZV09XCJza2VsZXRvblN0eWxlQ29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cIidsaW5lJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImxvYWRpbmc7IGVsc2UgdmFsdWVcIj48L3VpLXNrZWxldG9uPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3ZhbHVlPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXhwYW5kQnV0dG9uXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaW5kZXg6IGksIGVsZW1lbnQgfVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbj8udHlwZSkge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZURhdGFUcGw7IGNvbnRleHQ6IHtlbGVtZW50LCB0YWJsZUNvbHVtbjogY29sdW1ufVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBlbHNlIGNvbmZpZ0RhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiAgZWxlbWVudCwgcm93SW5kZXggfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdEYXRhPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmZvbnQtd2VpZ2h0XT1cImNvbHVtbi5ib2xkID8gJ2JvbGQnIDogJ25vcm1hbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCJjb2x1bW4uZm9udFNpemUgPz8gJzE0cHgnXCI+e3sgZWxlbWVudCB8IGRhdGFQcm9wZXJ0eUdldHRlcjogY29sdW1uLmtleSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImV4cGFuZGVkRGV0YWlsXCI+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCIgW2F0dHIuY29sc3Bhbl09XCJkaXNwbGF5ZWRDb2x1bW5zLmxlbmd0aFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbGVtZW50LWRldGFpbFwiICpuZ0lmPVwiZGF0YVNvdXJjZURldGFpbC5kYXRhLmxlbmd0aFwiXG4gICAgICAgICAgICAgICBbQGV4cGFuZERldGFpbF09XCJlbGVtZW50ID09PSBlbGVtZW50RGV0YWlsID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnXCI+XG4gICAgICAgICAgICA8dGFibGVcbiAgICAgICAgICAgICAgbWF0LXRhYmxlXG4gICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VEZXRhaWxcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdoaWRlLWJvcmRlcnMnOiBlbGVtZW50ID09PSB0YWJsZURhdGFbdGFibGVEYXRhLmxlbmd0aCAtIDFdIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWJsZUNvbHVtbiBvZiB0YWJsZURldGFpbENvbHVtbnMuY29sdW1uRGVmc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdENvbHVtbkRlZl09XCJ0YWJsZUNvbHVtbi50aXRsZSA/PyAnJ1wiPlxuICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY9XCJsZXQgZWxlbWVudFwiIGFycm93UG9zaXRpb249XCJhZnRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInt3aWR0aDogdGFibGVDb2x1bW4uc3R5bGVzPy53aWR0aH1cIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0YWJsZUNvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA/ICd0aC0nK3RhYmxlQ29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJydcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHRhYmxlQ29sdW1uLnRpdGxlIHwgdXBwZXJjYXNlIH19XG4gICAgICAgICAgICAgICAgPC90aD5cblxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCIgKGNsaWNrKT1cIm9uRGV0YWlsUm93Q2xpY2soZWxlbWVudClcIlxuICAgICAgICAgICAgICAgICAgICBbYWxpZ25dPVwidGFibGVDb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnRcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0YWJsZUNvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA/ICd0ZC0nK3RhYmxlQ29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJydcIlxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7d2lkdGg6IHRhYmxlQ29sdW1uLnN0eWxlcz8ud2lkdGggfVwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlRGF0YVRwbDsgY29udGV4dDoge2VsZW1lbnQsIHRhYmxlQ29sdW1ufVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29sdW1uc0RldGFpbFRvRGlzcGxheVwiPjwvdHI+XG4gICAgICAgICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93RGV0YWlsOyBjb2x1bW5zOiBjb2x1bW5zRGV0YWlsVG9EaXNwbGF5O1wiPjwvdHI+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjdGFibGVEYXRhVHBsIGxldC1lbGVtZW50PVwiZWxlbWVudFwiIGxldC10YWJsZUNvbHVtbj1cInRhYmxlQ29sdW1uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbGlnbi13cmFwcGVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidGFibGVDb2x1bW4udHlwZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRGF0YVR5cGUuRklFTERcIj5cbiAgICAgICAgICAgICAge3sgZWxlbWVudCB8IGRhdGFQcm9wZXJ0eUdldHRlcjogdGFibGVDb2x1bW4ua2V5IH19XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkRhdGFUeXBlLkZVTkNUSU9OXCI+XG4gICAgICAgICAgICAgIHt7IHRhYmxlQ29sdW1uLmZ1bmN0aW9uPy4oZWxlbWVudCkgfX1cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRGF0YVR5cGUuUkVOREVSRVJcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgW2R5bmFtaWNDb21wb25lbnRdPVwiW3RhYmxlQ29sdW1uLnJlbmRlcmVyLCBlbGVtZW50XSB8IG1lbW9pemVGdW5jIDogY2FsbFJlbmRlcmVyXCI+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICAgICAge3sgZWxlbWVudCB8IGRhdGFQcm9wZXJ0eUdldHRlcjogdGFibGVDb2x1bW4ua2V5IH19XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J2V4cGFuZGVkLXJvdyc6IGVsZW1lbnREZXRhaWwgPT09IHJvdywgJ3Jvdy1jbGlja2FibGUnOiB0YWJsZURldGFpbHMsICdzZWxlY3RlZCc6IHJvdz8uc2VsZWN0ZWQsICdsYXN0LXJvdyc6IHJvdyA9PT0gdGFibGVEYXRhW3RhYmxlRGF0YS5sZW5ndGggLSAxXSAmJiAhZWxlbWVudERldGFpbCB9XCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUm93KHJvdylcIj5cbiAgICAgIDwvdHI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGVEZXRhaWxzICYmIHRhYmxlRGV0YWlsQ29sdW1ucz8uY29sdW1uRGVmcz8ubGVuZ3RoXCI+XG4gICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBbJ2V4cGFuZGVkRGV0YWlsJ11cIiBjbGFzcz1cImRldGFpbC1yb3dcIj48L3RyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZUNvbmZpZy5ub0RhdGFSb3dUcGxcIj5cbiAgICAgICAgPHRyICptYXROb0RhdGFSb3c+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ29uZmlnLm5vRGF0YVJvd1RwbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC90YWJsZT5cbiAgPC9kaXY+XG5cbiAgPHVpLXBhZ2luYXRvclxuICAgICpuZ0lmPVwiIXRhYmxlQ29uZmlnPy5oaWRlUGFnaW5hdGlvbiAmJiB0YWJsZUNvbmZpZz8ucGFnaW5hdGlvblwiXG4gICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWUgIT09ICdjbGFzc2ljJyA/ICdsaWdodCcgOiAnY2xhc3NpYydcIlxuICAgIFtwYWdlU2l6ZV09XCJ0YWJsZUNvbmZpZy5wYWdpbmF0aW9uPy5pdGVtc1BlclBhZ2UgPz8gMjVcIlxuICAgIFtsZW5ndGhdPVwidGFibGVDb25maWcucGFnaW5hdGlvbj8udG90YWxJdGVtcyA/PyAwXCJcbiAgICBbY3VycmVudFBhZ2VdPVwidGFibGVDb25maWcucGFnaW5hdGlvbj8uY3VycmVudFBhZ2UgPz8gMFwiXG4gICAgW3BhZ2VTaXplT3B0aW9uc109XCJ0YWJsZUNvbmZpZy5wYWdpbmF0aW9uPy5pdGVtc1BlclBhZ2VPcHRpb25zID8/IFsxMCwgMjUsIDUwXVwiXG4gICAgKHBhZ2luYXRvckNoYW5nZSk9XCJvblBhZ2luYXRvckNoYW5nZSgkZXZlbnQpXCJcbiAgPjwvdWktcGFnaW5hdG9yPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZXhwYW5kQnV0dG9uIGxldC1pPVwiaW5kZXhcIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIj5cbiAgPHVpLWJ1dHRvblxuICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxuICAgICpuZ0lmPVwiIWkgJiYgdGFibGVEZXRhaWxzXCJcbiAgICB2YXJpYW50PVwiaWNvbi1idXR0b25cIlxuICAgIFtuZ0NsYXNzXT1cInsgb3BlbmVkOiBlbGVtZW50RGV0YWlsICYmIGVsZW1lbnQgPT0gZWxlbWVudERldGFpbCB9XCJcbiAgICBbaWNvbk5hbWVdPVwiZWxlbWVudERldGFpbCAmJiBlbGVtZW50ID09IGVsZW1lbnREZXRhaWwgPyAnQXJyb3ctY2hldnJvbi11cC1pbi1saW5lJyA6ICdBcnJvdy1jaGV2cm9uLWRvd24taW4tbGluZSdcIlxuICA+PC91aS1idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbHVtbkhlYWRlciBsZXQtY29sdW1uPVwiY29sdW1uXCIgbGV0LWk9XCJpXCI+XG4gIDxkaXYgY2xhc3M9XCJoZWFkZXItc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiB1aUVsbGlwc2VUZXh0IChvbkNoYW5nZVRleHRTdGF0ZSk9XCJvbkNoYW5nZUNvbHVtblNpemUoaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sdW1uLXRpdGxlXCI+e3sgY29sdW1uLnRpdGxlIHwgc2VudGVuY2VjYXNlIH19XG4gICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICA8dWktaWNvbiAqbmdJZj1cImNvbHVtbj8uc2hvd1Rvb2x0aXBcIiBbbmFtZV09XCInSGVscC1pbi1saW5lJ1wiXG4gICAgICAgICAgICAgW21hdFRvb2x0aXBDbGFzc109XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoY29sdW1uPy5zaG93VG9vbHRpcCA/IChjb2x1bW4/LnRvb2x0aXAgPyBjb2x1bW4udG9vbHRpcCA6IGNvbHVtbi50aXRsZSApIDogJycpIHx8ICcnXCJcbiAgICA+PC91aS1pY29uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbiJdfQ==
255
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFHVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsVUFBVSxHQVVYLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQWdCNUQsTUFBTSxPQUFPLGNBQWM7SUFzRnpCLFlBQzZFLGVBQWlDLEVBQ3BHLFVBQXNCLEVBQ2MsU0FBOEI7UUFGQyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFDcEcsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNjLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBeEU1RTs7Ozs7O1dBTUc7UUFDTSxZQUFPLEdBQUcs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XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBEZXN0cm95UmVmLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT3B0aW9uYWwsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbHVtbkVsbGlwc2UsXHJcbiAgQ29sdW1uVHlwZSxcclxuICBDb21wb25lbnRSZW5kZXJlcixcclxuICBEYXRhU291cmNlLFxyXG4gIFBhZ2luYXRpb24sXHJcbiAgU2Nyb2xsU2V0dGluZ3MsXHJcbiAgVGFibGVDb2x1bW4sXHJcbiAgVGFibGVDb25maWcsXHJcbiAgVGFibGVDb25maWdXaXRoUGFnaW5hdGlvbixcclxuICBUYWJsZURhdGEsXHJcbiAgVGFibGVEZXRhaWxDb2x1bW4sXHJcbn0gZnJvbSAnLi90YWJsZS5tb2RlbCc7XHJcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IEFwcGxpY2F0aW9uVGhlbWUgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXBwbGljYXRpb24tdGhlbWUubW9kZWwnO1xyXG5pbXBvcnQgeyBzb3J0QnlPcmRlciB9IGZyb20gJy4uLy4uL3V0aWxzL3RhYmxlLnV0aWxzJztcclxuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgU29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IElTX01PQklMRV9UT0tFTiB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9pcy1tb2JpbGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd1aS10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2V4cGFuZERldGFpbCcsIFtcclxuICAgICAgc3RhdGUoJ2NvbGxhcHNlZCwgdm9pZCcsIHN0eWxlKHsgaGVpZ2h0OiAnMHB4JyB9KSksXHJcbiAgICAgIHN0YXRlKCdleHBhbmRlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnKicgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gY29sbGFwc2VkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gdm9pZCcsIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpKSxcclxuICAgIF0pLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudDxUIGV4dGVuZHMgRGF0YVNvdXJjZSwgVERldGFpbCBleHRlbmRzIERhdGFTb3VyY2U+IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcclxuICAvKipcclxuICAgKiBUYWJsZSBjb25maWd1cmF0aW9uXHJcbiAgICpcclxuICAgKiBAdHlwZSB7VGFibGVDb25maWd9XHJcbiAgICogQG1lbWJlcm9mIFRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgY29uZmlnOiBUYWJsZUNvbmZpZ1dpdGhQYWdpbmF0aW9uPFQ+O1xyXG5cclxuICAvKipcclxuICAgKiBJbnB1dCBwcm9wZXJ0eSBmb3IgcHJvdmlkaW5nIHRoZSB0YWJsZSBkYXRhLlxyXG4gICAqXHJcbiAgICogQHR5cGUge1RhYmxlRGF0YX1cclxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBkYXRhOiBUYWJsZURhdGE7XHJcblxyXG4gIC8qKlxyXG4gICAqIElucHV0IHByb3BlcnR5IGluZGljYXRpbmcgd2hldGhlciB0aGUgdGFibGUgaXMgaW4gYSBsb2FkaW5nIHN0YXRlLlxyXG4gICAqXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIFRhYmxlQ29tcG9uZW50XHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKi9cclxuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogRGVmaW5lcyB0aGUgYXBwbGljYXRpb24gdGhlbWVcclxuICAgKiBAdHlwZSB7QXBwbGljYXRpb25UaGVtZX1cclxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBhcHBsaWNhdGlvblRoZW1lOiBBcHBsaWNhdGlvblRoZW1lID0gJ2xpZ2h0JztcclxuXHJcbiAgLyoqXHJcbiAgICogRGF0YSBzdHJ1Y3R1cmUgdG8gc2VsZWN0IHdoaWNoIGNvbHVtbnMgc2hvdWxkIGJlIHJlbmRlcmVkIGFuZCB0aGVpciBjYXBhYmlsaXRpZXNcclxuICAgKlxyXG4gICAqIEB0eXBlIHtUYWJsZURldGFpbENvbHVtbn1cclxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSB0YWJsZURldGFpbENvbHVtbnM6IFRhYmxlRGV0YWlsQ29sdW1uPFQsIFREZXRhaWw+O1xyXG4gIEBJbnB1dCgpIHRhYmxlRGV0YWlscyA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBEaXNhYmxlIGJvcmRlciByYWRpdXMgZm9yIHRhYmxlXHJcbiAgICpcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBkaXNhYmxlQm9yZGVyUmFkaXVzID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmRlbnNlZCB0YWJsZVxyXG4gICAqXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIFRhYmxlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgaXNDb25kZW5zZWQgPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIG9uUm93Q2xpY2tFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb25EZXRhaWxSb3dDbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBwYWdpbmF0b3JDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgc29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydD4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgndGFibGUnKSB0YWJsZTogRWxlbWVudFJlZjtcclxuXHJcbiAgcHJvdGVjdGVkIHRhYmxlRGF0YTogVGFibGVEYXRhO1xyXG4gIHByb3RlY3RlZCBzb3VyY2VEYXRhOiBUYWJsZURhdGE7XHJcbiAgcHJvdGVjdGVkIGNvbHVtbnNUb29sdGlwU3RhdGU6IENvbHVtbkVsbGlwc2VbXSA9IFtdO1xyXG4gIHByb3RlY3RlZCB0YWJsZUNvbmZpZzogVGFibGVDb25maWdXaXRoUGFnaW5hdGlvbjxUPjtcclxuICBwcm90ZWN0ZWQgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10gPSBbXTtcclxuICBwcm90ZWN0ZWQgY29sdW1uc0RldGFpbFRvRGlzcGxheTogc3RyaW5nW10gPSBbXTtcclxuICBwcm90ZWN0ZWQgc2tlbGV0b25TdHlsZUNvbmZpZyA9IHtcclxuICAgIGJhY2tncm91bmQ6ICcjRjZGNkY2JyxcclxuICAgICdib3JkZXItcmFkaXVzJzogJzRweCcsXHJcbiAgICBoZWlnaHQ6ICcyNHB4JyxcclxuICB9O1xyXG4gIHByb3RlY3RlZCBkYXRhU291cmNlRGV0YWlsID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnk+KFtdKTtcclxuICBwcm90ZWN0ZWQgZWxlbWVudERldGFpbDogYW55O1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBEYXRhVHlwZSA9IENvbHVtblR5cGU7XHJcbiAgcHJvdGVjdGVkIHNjcm9sbFNldHRpbmdzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2Nyb2xsU2V0dGluZ3M+KHtcclxuICAgIHNjcm9sbEVuZDogZmFsc2UsXHJcbiAgICBob3Jpem9udGFsU2Nyb2xsOiBmYWxzZSxcclxuICAgIHNjcm9sbFN0YXJ0OiBmYWxzZSxcclxuICB9KTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KCdDQU5PUFlVSV9ERUZBVUxUX0FQUExJQ0FUSU9OX1RIRU1FJykgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0QXBwVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUsXHJcbiAgICBwcml2YXRlIGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWYsXHJcbiAgICBASW5qZWN0KElTX01PQklMRV9UT0tFTikgcHJvdGVjdGVkIHJlYWRvbmx5IGlzTW9iaWxlJDogT2JzZXJ2YWJsZTxib29sZWFuPlxyXG4gICkge1xyXG4gICAgaWYgKGRlZmF1bHRBcHBUaGVtZSkge1xyXG4gICAgICB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPSBkZWZhdWx0QXBwVGhlbWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0VGFibGVDb25maWcodGhpcy5jb25maWcpO1xyXG4gICAgdGhpcy5zZXRUYWJsZURhdGEodGhpcy5kYXRhKTtcclxuXHJcbiAgICBpZiAodGhpcy5hcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYycpIHtcclxuICAgICAgdGhpcy5za2VsZXRvblN0eWxlQ29uZmlnLmJhY2tncm91bmQgPSAnI0Y0RjRGNCc7XHJcbiAgICB9XHJcbiAgICBkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZSgndGhlbWUnLCB0aGlzLmFwcGxpY2F0aW9uVGhlbWUpO1xyXG5cclxuICAgIGlmICh0aGlzLnRhYmxlRGV0YWlsQ29sdW1ucykge1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLnRhYmxlRGV0YWlsQ29sdW1ucy5jb2x1bW5EZWZzLmZpbHRlcihjb2x1bW4gPT4gIWNvbHVtbi5oaWRkZW4pO1xyXG4gICAgICB0aGlzLmNvbHVtbnNEZXRhaWxUb0Rpc3BsYXkgPSBmaWx0ZXJlZENvbHVtbnMubGVuZ3RoXHJcbiAgICAgICAgPyBmaWx0ZXJlZENvbHVtbnMubWFwKCh0YWJsZUNvbHVtbjogVGFibGVDb2x1bW48VERldGFpbD4pID0+IHRhYmxlQ29sdW1uLnRpdGxlISlcclxuICAgICAgICA6IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnRhYmxlQ29uZmlnPy5zb3J0YWJsZSAmJiB0aGlzLnRhYmxlQ29uZmlnPy5zb3J0KSB7XHJcbiAgICAgIHRoaXMub25Tb3J0Q2hhbmdlKHRoaXMudGFibGVDb25maWcuc29ydCBhcyBTb3J0LCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmhhc1RhYmxlU2Nyb2xsKCk7XHJcbiAgICBmcm9tRXZlbnQodGhpcy50YWJsZS5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJylcclxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5oYXNUYWJsZVNjcm9sbCgpKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydjb25maWcnXSAmJiBjaGFuZ2VzWydjb25maWcnXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgY29uc3QgY29uZmlnID0gY2hhbmdlc1snY29uZmlnJ10uY3VycmVudFZhbHVlIGFzIFRhYmxlQ29uZmlnPFQ+O1xyXG4gICAgICB0aGlzLnNldFRhYmxlQ29uZmlnKGNvbmZpZyk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snZGF0YSddPy5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5zZXRUYWJsZURhdGEoY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZSBhcyBUYWJsZURhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFzVGFibGVTY3JvbGwoKTogdm9pZCB7XHJcbiAgICBjb25zdCB0YWJsZSA9IHRoaXMudGFibGUubmF0aXZlRWxlbWVudDtcclxuICAgIGNvbnN0IGhvcml6b250YWxTY3JvbGwgPSB0YWJsZS5zY3JvbGxXaWR0aCA+IHRhYmxlLmNsaWVudFdpZHRoO1xyXG4gICAgY29uc3Qgc2Nyb2xsRW5kID0gdGFibGUuc2Nyb2xsTGVmdCArIHRhYmxlLmNsaWVudFdpZHRoID49IHRhYmxlLnNjcm9sbFdpZHRoO1xyXG4gICAgdGhpcy5zY3JvbGxTZXR0aW5ncyQubmV4dCh7XHJcbiAgICAgIHNjcm9sbFN0YXJ0OiAhdGFibGUuc2Nyb2xsTGVmdCxcclxuICAgICAgc2Nyb2xsRW5kLFxyXG4gICAgICBob3Jpem9udGFsU2Nyb2xsLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjYWxsUmVuZGVyZXIoW3JlbmRlcmVyRm4sIGVsZW1lbnRdOiBbKHY6IFQpID0+IENvbXBvbmVudFJlbmRlcmVyIHwgc3RyaW5nLCBUXSk6IGFueSB7XHJcbiAgICBpZiAocmVuZGVyZXJGbikge1xyXG4gICAgICByZXR1cm4gcmVuZGVyZXJGbihlbGVtZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvblBhZ2luYXRvckNoYW5nZShldmVudDogUGFnZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhZ2luYXRvckNoYW5nZS5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvbkNoYW5nZUNvbHVtblNpemUoY29sdW1uSW5kZXg6IG51bWJlciwgc2hvd1Rvb2x0aXA6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuY29sdW1uc1Rvb2x0aXBTdGF0ZSA9IHRoaXMuY29sdW1uc1Rvb2x0aXBTdGF0ZS5tYXAoY29sdW1uID0+IHtcclxuICAgICAgaWYgKGNvbHVtbi5pbmRleCA9PT0gY29sdW1uSW5kZXgpIHtcclxuICAgICAgICBjb2x1bW4uc2hvd1Rvb2x0aXAgPSBzaG93VG9vbHRpcDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY29sdW1uO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb25Tb3J0Q2hhbmdlKHNvcnRTdGF0ZTogU29ydCwgZW1pdEV2ZW50ID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgaWYgKGVtaXRFdmVudCkge1xyXG4gICAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdChzb3J0U3RhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnRhYmxlQ29uZmlnPy5zb3J0YWJsZSkge1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IFtcclxuICAgICAgICAuLi50aGlzLnRhYmxlRGF0YS5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpc0FzYyA9IHNvcnRTdGF0ZS5kaXJlY3Rpb24gPT09ICdhc2MnO1xyXG4gICAgICAgICAgY29uc3QgYVZhbCA9IGFbc29ydFN0YXRlLmFjdGl2ZV07XHJcbiAgICAgICAgICBjb25zdCBiVmFsID0gYltzb3J0U3RhdGUuYWN0aXZlXTtcclxuICAgICAgICAgIHJldHVybiAoYVZhbCA8IGJWYWwgPyAtMSA6IDEpICogKGlzQXNjID8gMSA6IC0xKTtcclxuICAgICAgICB9KSxcclxuICAgICAgXTtcclxuXHJcbiAgICAgIGlmICghc29ydFN0YXRlLmRpcmVjdGlvbikge1xyXG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gWy4uLnRoaXMuc291cmNlRGF0YV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvblJvd0NsaWNrKHJvd1BhcmFtczogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uUm93Q2xpY2tFdmVudC5lbWl0KHJvd1BhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb25EZXRhaWxSb3dDbGljayhyb3dQYXJhbXM6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkRldGFpbFJvd0NsaWNrRXZlbnQuZW1pdChyb3dQYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHRvZ2dsZVJvdyhlbGVtZW50OiBUKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50YWJsZURldGFpbHMpIHtcclxuICAgICAgdGhpcy5lbGVtZW50RGV0YWlsID0gdGhpcy5lbGVtZW50RGV0YWlsID09PSBlbGVtZW50ID8gbnVsbCA6IGVsZW1lbnQ7XHJcbiAgICAgIGlmICh0aGlzLmVsZW1lbnREZXRhaWwpIHtcclxuICAgICAgICB0aGlzLnRhYmxlRGV0YWlsQ29sdW1ucy5zZXREZXRhaWxSb3dEYXRhKHtcclxuICAgICAgICAgIGRhdGE6IGVsZW1lbnQsXHJcbiAgICAgICAgICBzZXREZXRhaWxEYXRhU291cmNlOiB0aGlzLnNldFRhYmxlRGV0YWlsRGF0YVNvdXJjZS5iaW5kKHRoaXMpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFRhYmxlRGV0YWlsRGF0YVNvdXJjZShyb3dEYXRhOiBURGV0YWlsW10pOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0YVNvdXJjZURldGFpbCA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8YW55Pihyb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VGFibGVDb25maWcoY29uZmlnOiBUYWJsZUNvbmZpZzxUPik6IHZvaWQge1xyXG4gICAgY29uZmlnLnBhZ2luYXRpb24gPSBjb25maWc/LnBhZ2luYXRpb24gPz8gdGhpcy5kZWZhdWx0UGFnaW5hdGlvbkNvbmZpZztcclxuXHJcbiAgICB0aGlzLnRhYmxlQ29uZmlnID0gY29uZmlnIGFzIFRhYmxlQ29uZmlnV2l0aFBhZ2luYXRpb248VD47XHJcblxyXG4gICAgdGhpcy5jb2x1bW5zVG9vbHRpcFN0YXRlID0gY29uZmlnLmNvbHVtbnMubWFwKChjb2x1bW4sIGluZGV4KSA9PiAoe1xyXG4gICAgICBpbmRleCxcclxuICAgICAgc2hvd1Rvb2x0aXA6IGNvbHVtbi5zaG93VG9vbHRpcCA/PyBmYWxzZSxcclxuICAgIH0pKTtcclxuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IHNvcnRCeU9yZGVyPFQ+KGNvbmZpZy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gIWNvbHVtbi5oaWRkZW4pKS5tYXAoXHJcbiAgICAgIGNvbHVtbiA9PiBjb2x1bW4udW5pcXVlSWQgPz8gY29sdW1uLmtleVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VGFibGVEYXRhKGRhdGE6IFRhYmxlRGF0YSk6IHZvaWQge1xyXG4gICAgdGhpcy5zb3VyY2VEYXRhID0gZGF0YTtcclxuICAgIHRoaXMudGFibGVEYXRhID0gZGF0YTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVmYXVsdFBhZ2luYXRpb25Db25maWc6IFBhZ2luYXRpb24gPSB7XHJcbiAgICBjdXJyZW50UGFnZTogMCxcclxuICAgIGl0ZW1zUGVyUGFnZTogMTAsXHJcbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zOiBbMTAsIDI1LCA1MF0sXHJcbiAgICB0b3RhbEl0ZW1zOiAyMCxcclxuICB9O1xyXG5cclxuICB0cmFja0NvbHVtblVuaXF1ZUlkID0gKGluZGV4OiBudW1iZXIsIGNvbHVtbjogVGFibGVDb2x1bW48VD4pOiBzdHJpbmcgPT4gY29sdW1uLnVuaXF1ZUlkID8/IGNvbHVtbi5rZXk7XHJcbn1cclxuIiwiPGRpdiAjdGFibGVDb250YWluZXIgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIlxyXG4gICAgIFtuZ0NsYXNzXT1cInsgJ3dpdGhvdXQtdGl0bGUnOiAhdGFibGVDb25maWc/LnRpdGxlLCAnZGlzYWJsZS1ib3JkZXItcmFkaXVzJzogZGlzYWJsZUJvcmRlclJhZGl1cyB9XCJcclxuICAgICBbYXR0ci50aGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCI+XHJcbiAgPGRpdiAqbmdJZj1cInRhYmxlQ29uZmlnPy50aXRsZVwiIGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XHJcbiAgICB7eyB0YWJsZUNvbmZpZy50aXRsZSB8IHNlbnRlbmNlY2FzZSB9fVxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3RpdGxlLWFjdGlvbnNdXCI+PC9uZy1jb250ZW50PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXZcclxuICAgICN0YWJsZVxyXG4gICAgKm5nSWY9XCJzY3JvbGxTZXR0aW5ncyQgfCBhc3luYyBhcyBzY3JvbGxTZXR0aW5nc1wiXHJcbiAgICBjbGFzcz1cInRhYmxlLXdyYXBwZXJcIj5cclxuICAgIDx0YWJsZVxyXG4gICAgICBbdGFiSW5kZXhdPVwiMFwiXHJcbiAgICAgIGNsYXNzPVwibWFpbi10YWJsZVwiXHJcbiAgICAgIFtjbGFzcy5jb25kZW5zZWRdPVwiaXNDb25kZW5zZWRcIlxyXG4gICAgICBtYXQtdGFibGVcclxuICAgICAgW2RhdGFTb3VyY2VdPVwidGFibGVEYXRhXCJcclxuICAgICAgbWF0U29ydFxyXG4gICAgICBbbWF0U29ydFN0YXJ0XT1cInRhYmxlQ29uZmlnPy5zb3J0Py5kZWZhdWx0U29ydFN0YXJ0ID8/ICdhc2MnXCJcclxuICAgICAgW21hdFNvcnRBY3RpdmVdPVwidGFibGVDb25maWc/LnNvcnQ/LmFjdGl2ZSA/PyAnJ1wiXHJcbiAgICAgIFttYXRTb3J0RGlyZWN0aW9uXT1cInRhYmxlQ29uZmlnPy5zb3J0Py5kaXJlY3Rpb24gPz8gJydcIlxyXG4gICAgICAobWF0U29ydENoYW5nZSk9XCJvblNvcnRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgIG11bHRpVGVtcGxhdGVEYXRhUm93c1xyXG4gICAgPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdGFibGVDb25maWcuY29sdW1uczsgaW5kZXggYXMgaSwgbGFzdCBhcyBpc0xhc3Q7IHRyYWNrQnk6IHRyYWNrQ29sdW1uVW5pcXVlSWRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNMYXN0ICYmIGNvbHVtbi5pc1N0aWNreSAmJiBjb2x1bW4uYWxsb3dTb3J0XCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLnVuaXF1ZUlkID8/IGNvbHVtbi5rZXlcIiBbc3RpY2t5RW5kXT1cIiFzY3JvbGxTZXR0aW5ncz8uc2Nyb2xsRW5kXCI+XHJcbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGxcclxuICAgICAgICAgICAgICAgIFtzdGFydF09XCJjb2x1bW4uc29ydFN0YXJ0ID8/ICdhc2MnXCJcclxuICAgICAgICAgICAgICAgIFttYXQtc29ydC1oZWFkZXJdPVwiY29sdW1uLnNvcnRIZWFkZXIgPz8gY29sdW1uLmtleVwiXHJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuc29ydGFibGVdPVwiY29sdW1uLmFsbG93U29ydCA/PyBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7d2lkdGg6IGNvbHVtbi5zdHlsZXM/LndpZHRoLCBtaW5XaWR0aDogY29sdW1uLnN0eWxlcz8uWydtaW4td2lkdGgnXX1cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RoLScrY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJydcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cIidib2xkJ1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGNvbHVtbi50aXRsZSwgY29sdW1uLCBjb2xJbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmZpZ1ZhbHVlPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW5IZWFkZXJcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpLCBjb2x1bW4gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICA8dGQgbWF0LWNlbGxcclxuICAgICAgICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCByb3dJbmRleCA9IGRhdGFJbmRleFwiXHJcbiAgICAgICAgICAgICAgICBbYWxpZ25dPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50XCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGQtJytjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ11cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2soZWxlbWVudCk7IGNvbHVtbj8ucm93Q2VsbFRlbXBsYXRlQ2xpY2sgPyBjb2x1bW4hLnJvd0NlbGxUZW1wbGF0ZUNsaWNrPy4oKSA6ICcnXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDx1aS1za2VsZXRvbiBjbGFzcz1cInRhYmxlLXNrZWxldG9uLWxvYWRlclwiIFtjb3VudF09XCIxXCIgW3RoZW1lXT1cInNrZWxldG9uU3R5bGVDb25maWdcIiBbYXBwZWFyYW5jZV09XCInbGluZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImxvYWRpbmc7IGVsc2UgdmFsdWVcIj48L3VpLXNrZWxldG9uPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdmFsdWU+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXhwYW5kQnV0dG9uXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaW5kZXg6IGksIGVsZW1lbnQgfVwiPjwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgQGlmIChjb2x1bW4/LnR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlRGF0YVRwbDsgY29udGV4dDoge2VsZW1lbnQsIHRhYmxlQ29sdW1uOiBjb2x1bW59XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBlbHNlIGNvbmZpZ0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBlbGVtZW50LCByb3dJbmRleH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmZpZ0RhdGE+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtzdHlsZS5mb250LXdlaWdodF09XCJjb2x1bW4uYm9sZCA/ICdib2xkJyA6ICdub3JtYWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCJjb2x1bW4uZm9udFNpemUgPz8gJzE0cHgnXCI+e3sgZWxlbWVudCB8IGRhdGFQcm9wZXJ0eUdldHRlcjogY29sdW1uLmtleSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xhc3QgJiYgY29sdW1uLmlzU3RpY2t5ICYmICFjb2x1bW4uYWxsb3dTb3J0XCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLnVuaXF1ZUlkID8/IGNvbHVtbi5rZXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RpY2t5RW5kXT1cInNjcm9sbFNldHRpbmdzLmhvcml6b250YWxTY3JvbGwgPyAhc2Nyb2xsU2V0dGluZ3Muc2Nyb2xsRW5kIDogdHJ1ZVwiPlxyXG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsXHJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuc29ydGFibGVdPVwiY29sdW1uLmFsbG93U29ydCA/PyBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7d2lkdGg6IGNvbHVtbi5zdHlsZXM/LndpZHRoLCBtaW5XaWR0aDogY29sdW1uLnN0eWxlcz8uWydtaW4td2lkdGgnXX1cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RoLScrY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJydcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cIidib2xkJ1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGNvbHVtbi50aXRsZSwgY29sdW1uLCBjb2xJbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmZpZ1ZhbHVlPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW5IZWFkZXJcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpLCBjb2x1bW4gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICA8dGQgbWF0LWNlbGxcclxuICAgICAgICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCByb3dJbmRleCA9IGRhdGFJbmRleFwiXHJcbiAgICAgICAgICAgICAgICBbYWxpZ25dPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50XCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGQtJytjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ11cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2soZWxlbWVudCk7IGNvbHVtbj8ucm93Q2VsbFRlbXBsYXRlQ2xpY2sgPyBjb2x1bW4hLnJvd0NlbGxUZW1wbGF0ZUNsaWNrPy4oKSA6ICcnXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDx1aS1za2VsZXRvbiBjbGFzcz1cInRhYmxlLXNrZWxldG9uLWxvYWRlclwiIFtjb3VudF09XCIxXCIgW3RoZW1lXT1cInNrZWxldG9uU3R5bGVDb25maWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCInbGluZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImxvYWRpbmc7IGVsc2UgdmFsdWVcIj48L3VpLXNrZWxldG9uPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdmFsdWU+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXhwYW5kQnV0dG9uXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaW5kZXg6IGksIGVsZW1lbnQgfVwiPjwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgQGlmIChjb2x1bW4/LnR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlRGF0YVRwbDsgY29udGV4dDoge2VsZW1lbnQsIHRhYmxlQ29sdW1uOiBjb2x1bW59XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBlbHNlIGNvbmZpZ0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZWxlbWVudCwgcm93SW5kZXggfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnRGF0YT5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmZvbnQtd2VpZ2h0XT1cImNvbHVtbi5ib2xkID8gJ2JvbGQnIDogJ25vcm1hbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplXT1cImNvbHVtbi5mb250U2l6ZSA/PyAnMTRweCdcIj57eyBlbGVtZW50IHwgZGF0YVByb3BlcnR5R2V0dGVyOiBjb2x1bW4ua2V5IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nSWY9XCIhKGlzTGFzdCAmJiBjb2x1bW4uaXNTdGlja3kpICYmIGNvbHVtbi5hbGxvd1NvcnRcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4udW5pcXVlSWQgPz8gY29sdW1uLmtleVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdGlja3ldPVwiKGlzTW9iaWxlJCB8IGFzeW5jKSA/IGZhbHNlIDogIXNjcm9sbFNldHRpbmdzLnNjcm9sbFN0YXJ0ICAmJiAhIWNvbHVtbi5pc1N0aWNreVwiPlxyXG4gICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsXHJcbiAgICAgICAgICAgICAgICBbc3RhcnRdPVwiY29sdW1uLnNvcnRTdGFydCA/PyAnYXNjJ1wiXHJcbiAgICAgICAgICAgICAgICBbbWF0LXNvcnQtaGVhZGVyXT1cImNvbHVtbi5zb3J0SGVhZGVyID8/IGNvbHVtbi5rZXlcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuc29ydGFibGVdPVwiY29sdW1uLmFsbG93U29ydCA/PyBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cIidib2xkJ1wiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7d2lkdGg6IGNvbHVtbi5zdHlsZXM/LndpZHRoLCBtaW5XaWR0aDogY29sdW1uLnN0eWxlcz8uWydtaW4td2lkdGgnXX1cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RoLScrY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJydcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnVmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4uaGVhZGVyQ2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uLnRpdGxlLCBjb2x1bW4sIGNvbEluZGV4OiBpIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmZpZ1ZhbHVlPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW5IZWFkZXJcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpLCBjb2x1bW4gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICA8dGQgbWF0LWNlbGxcclxuICAgICAgICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCByb3dJbmRleCA9IGRhdGFJbmRleFwiXHJcbiAgICAgICAgICAgICAgICBbYWxpZ25dPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50XCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGQtJytjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ11cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2soZWxlbWVudCk7IGNvbHVtbj8ucm93Q2VsbFRlbXBsYXRlQ2xpY2sgPyBjb2x1bW4hLnJvd0NlbGxUZW1wbGF0ZUNsaWNrPy4oKSA6ICcnXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDx1aS1za2VsZXRvbiBjbGFzcz1cInRhYmxlLXNrZWxldG9uLWxvYWRlclwiIFtjb3VudF09XCIxXCIgW3RoZW1lXT1cInNrZWxldG9uU3R5bGVDb25maWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCInbGluZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImxvYWRpbmc7IGVsc2UgdmFsdWVcIj48L3VpLXNrZWxldG9uPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdmFsdWU+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXhwYW5kQnV0dG9uXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaW5kZXg6IGksIGVsZW1lbnQgfVwiPjwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgQGlmIChjb2x1bW4/LnR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlRGF0YVRwbDsgY29udGV4dDoge2VsZW1lbnQsIHRhYmxlQ29sdW1uOiBjb2x1bW59XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBlbHNlIGNvbmZpZ0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZWxlbWVudCwgcm93SW5kZXggfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnRGF0YT5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmZvbnQtd2VpZ2h0XT1cImNvbHVtbi5ib2xkID8gJ2JvbGQnIDogJ25vcm1hbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplXT1cImNvbHVtbi5mb250U2l6ZSA/PyAnMTRweCdcIj57eyBlbGVtZW50IHwgZGF0YVByb3BlcnR5R2V0dGVyOiBjb2x1bW4ua2V5IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ0lmPVwiIShpc0xhc3QgJiYgY29sdW1uLmlzU3RpY2t5KSAmJiAhY29sdW1uLmFsbG93U29ydFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbi51bmlxdWVJZCA/PyBjb2x1bW4ua2V5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0aWNreV09XCIoaXNNb2JpbGUkIHwgYXN5bmMpID8gZmFsc2UgOiAhc2Nyb2xsU2V0dGluZ3Muc2Nyb2xsU3RhcnQgJiYgISFjb2x1bW4uaXNTdGlja3lcIj5cclxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbFxyXG4gICAgICAgICAgICAgICAgW2F0dHIuc29ydGFibGVdPVwiY29sdW1uLmFsbG93U29ydCA/PyBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cIidib2xkJ1wiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7d2lkdGg6IGNvbHVtbi5zdHlsZXM/LndpZHRoLCBtaW5XaWR0aDogY29sdW1uLnN0eWxlcz8uWydtaW4td2lkdGgnXX1cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RoLScrY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJydcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnVmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4uaGVhZGVyQ2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uLnRpdGxlLCBjb2x1bW4sIGNvbEluZGV4OiBpIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmZpZ1ZhbHVlPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW5IZWFkZXJcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpLCBjb2x1bW4gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICA8dGQgbWF0LWNlbGxcclxuICAgICAgICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCByb3dJbmRleCA9IGRhdGFJbmRleFwiXHJcbiAgICAgICAgICAgICAgICBbYWxpZ25dPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50XCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGQtJytjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ11cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2soZWxlbWVudCk7IGNvbHVtbj8ucm93Q2VsbFRlbXBsYXRlQ2xpY2sgPyBjb2x1bW4hLnJvd0NlbGxUZW1wbGF0ZUNsaWNrPy4oKSA6ICcnXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDx1aS1za2VsZXRvbiBjbGFzcz1cInRhYmxlLXNrZWxldG9uLWxvYWRlclwiIFtjb3VudF09XCIxXCIgW3RoZW1lXT1cInNrZWxldG9uU3R5bGVDb25maWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCInbGluZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImxvYWRpbmc7IGVsc2UgdmFsdWVcIj48L3VpLXNrZWxldG9uPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdmFsdWU+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXhwYW5kQnV0dG9uXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaW5kZXg6IGksIGVsZW1lbnQgfVwiPjwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgQGlmIChjb2x1bW4/LnR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlRGF0YVRwbDsgY29udGV4dDoge2VsZW1lbnQsIHRhYmxlQ29sdW1uOiBjb2x1bW59XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBlbHNlIGNvbmZpZ0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogIGVsZW1lbnQsIHJvd0luZGV4IH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmZpZ0RhdGE+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtzdHlsZS5mb250LXdlaWdodF09XCJjb2x1bW4uYm9sZCA/ICdib2xkJyA6ICdub3JtYWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCJjb2x1bW4uZm9udFNpemUgPz8gJzE0cHgnXCI+e3sgZWxlbWVudCB8IGRhdGFQcm9wZXJ0eUdldHRlcjogY29sdW1uLmtleSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImV4cGFuZGVkRGV0YWlsXCI+XHJcbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBbYXR0ci5jb2xzcGFuXT1cImRpc3BsYXllZENvbHVtbnMubGVuZ3RoXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWxlbWVudC1kZXRhaWxcIiAqbmdJZj1cImRhdGFTb3VyY2VEZXRhaWwuZGF0YS5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICBbQGV4cGFuZERldGFpbF09XCJlbGVtZW50ID09PSBlbGVtZW50RGV0YWlsID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnXCI+XHJcbiAgICAgICAgICAgIDx0YWJsZVxyXG4gICAgICAgICAgICAgIG1hdC10YWJsZVxyXG4gICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VEZXRhaWxcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2hpZGUtYm9yZGVycyc6IGVsZW1lbnQgPT09IHRhYmxlRGF0YVt0YWJsZURhdGEubGVuZ3RoIC0gMV0gfVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWJsZUNvbHVtbiBvZiB0YWJsZURldGFpbENvbHVtbnMuY29sdW1uRGVmc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0Q29sdW1uRGVmXT1cInRhYmxlQ29sdW1uLnRpdGxlID8/ICcnXCI+XHJcbiAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBhcnJvd1Bvc2l0aW9uPVwiYWZ0ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInt3aWR0aDogdGFibGVDb2x1bW4uc3R5bGVzPy53aWR0aH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInRhYmxlQ29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RoLScrdGFibGVDb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICB7eyB0YWJsZUNvbHVtbi50aXRsZSB8IHVwcGVyY2FzZSB9fVxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiIChjbGljayk9XCJvbkRldGFpbFJvd0NsaWNrKGVsZW1lbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxpZ25dPVwidGFibGVDb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInRhYmxlQ29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RkLScrdGFibGVDb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie3dpZHRoOiB0YWJsZUNvbHVtbi5zdHlsZXM/LndpZHRoIH1cIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlRGF0YVRwbDsgY29udGV4dDoge2VsZW1lbnQsIHRhYmxlQ29sdW1ufVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJjb2x1bW5zRGV0YWlsVG9EaXNwbGF5XCI+PC90cj5cclxuICAgICAgICAgICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvd0RldGFpbDsgY29sdW1uczogY29sdW1uc0RldGFpbFRvRGlzcGxheTtcIj48L3RyPlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgI3RhYmxlRGF0YVRwbCBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtdGFibGVDb2x1bW49XCJ0YWJsZUNvbHVtblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbGlnbi13cmFwcGVyXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ0YWJsZUNvbHVtbi50eXBlXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkRhdGFUeXBlLkZJRUxEXCI+XHJcbiAgICAgICAgICAgICAge3sgZWxlbWVudCB8IGRhdGFQcm9wZXJ0eUdldHRlcjogdGFibGVDb2x1bW4ua2V5IH19XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJEYXRhVHlwZS5GVU5DVElPTlwiPlxyXG4gICAgICAgICAgICAgIHt7IHRhYmxlQ29sdW1uLmZ1bmN0aW9uPy4oZWxlbWVudCkgfX1cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkRhdGFUeXBlLlJFTkRFUkVSXCI+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgICAgICBbZHluYW1pY0NvbXBvbmVudF09XCJbdGFibGVDb2x1bW4ucmVuZGVyZXIsIGVsZW1lbnRdIHwgbWVtb2l6ZUZ1bmMgOiBjYWxsUmVuZGVyZXJcIj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgICAgIHt7IGVsZW1lbnQgfCBkYXRhUHJvcGVydHlHZXR0ZXI6IHRhYmxlQ29sdW1uLmtleSB9fVxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cclxuICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZXhwYW5kZWQtcm93JzogZWxlbWVudERldGFpbCA9PT0gcm93LCAncm93LWNsaWNrYWJsZSc6IHRhYmxlRGV0YWlscywgJ3NlbGVjdGVkJzogcm93Py5zZWxlY3RlZCwgJ2xhc3Qtcm93Jzogcm93ID09PSB0YWJsZURhdGFbdGFibGVEYXRhLmxlbmd0aCAtIDFdICYmICFlbGVtZW50RGV0YWlsIH1cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJvdyhyb3cpXCI+XHJcbiAgICAgIDwvdHI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZURldGFpbHMgJiYgdGFibGVEZXRhaWxDb2x1bW5zPy5jb2x1bW5EZWZzPy5sZW5ndGhcIj5cclxuICAgICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydleHBhbmRlZERldGFpbCddXCIgY2xhc3M9XCJkZXRhaWwtcm93XCI+PC90cj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGVDb25maWcubm9EYXRhUm93VHBsXCI+XHJcbiAgICAgICAgPHRyICptYXROb0RhdGFSb3c+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVDb25maWcubm9EYXRhUm93VHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3RhYmxlPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8dWktcGFnaW5hdG9yXHJcbiAgICAqbmdJZj1cIiF0YWJsZUNvbmZpZz8uaGlkZVBhZ2luYXRpb24gJiYgdGFibGVDb25maWc/LnBhZ2luYXRpb25cIlxyXG4gICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxyXG4gICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZSAhPT0gJ2NsYXNzaWMnID8gJ2xpZ2h0JyA6ICdjbGFzc2ljJ1wiXHJcbiAgICBbcGFnZVNpemVdPVwidGFibGVDb25maWcucGFnaW5hdGlvbj8uaXRlbXNQZXJQYWdlID8/IDI1XCJcclxuICAgIFtsZW5ndGhdPVwidGFibGVDb25maWcucGFnaW5hdGlvbj8udG90YWxJdGVtcyA/PyAwXCJcclxuICAgIFtjdXJyZW50UGFnZV09XCJ0YWJsZUNvbmZpZy5wYWdpbmF0aW9uPy5jdXJyZW50UGFnZSA/PyAwXCJcclxuICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwidGFibGVDb25maWcucGFnaW5hdGlvbj8uaXRlbXNQZXJQYWdlT3B0aW9ucyA/PyBbMTAsIDI1LCA1MF1cIlxyXG4gICAgKHBhZ2luYXRvckNoYW5nZSk9XCJvblBhZ2luYXRvckNoYW5nZSgkZXZlbnQpXCJcclxuICA+PC91aS1wYWdpbmF0b3I+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNleHBhbmRCdXR0b24gbGV0LWk9XCJpbmRleFwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiPlxyXG4gIDx1aS1idXR0b25cclxuICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxyXG4gICAgKm5nSWY9XCIhaSAmJiB0YWJsZURldGFpbHNcIlxyXG4gICAgdmFyaWFudD1cImljb24tYnV0dG9uXCJcclxuICAgIFtuZ0NsYXNzXT1cInsgb3BlbmVkOiBlbGVtZW50RGV0YWlsICYmIGVsZW1lbnQgPT0gZWxlbWVudERldGFpbCB9XCJcclxuICAgIFtpY29uTmFtZV09XCJlbGVtZW50RGV0YWlsICYmIGVsZW1lbnQgPT0gZWxlbWVudERldGFpbCA/ICdBcnJvdy1jaGV2cm9uLXVwLWluLWxpbmUnIDogJ0Fycm93LWNoZXZyb24tZG93bi1pbi1saW5lJ1wiXHJcbiAgPjwvdWktYnV0dG9uPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb2x1bW5IZWFkZXIgbGV0LWNvbHVtbj1cImNvbHVtblwiIGxldC1pPVwiaVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJoZWFkZXItc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHVpRWxsaXBzZVRleHQgKG9uQ2hhbmdlVGV4dFN0YXRlKT1cIm9uQ2hhbmdlQ29sdW1uU2l6ZShpLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbHVtbi10aXRsZVwiPnt7IGNvbHVtbi50aXRsZSB8IHNlbnRlbmNlY2FzZSB9fVxyXG4gICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgIDx1aS1pY29uICpuZ0lmPVwiY29sdW1uPy5zaG93VG9vbHRpcFwiIFtuYW1lXT1cIidIZWxwLWluLWxpbmUnXCJcclxuICAgICAgICAgICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiYXBwbGljYXRpb25UaGVtZVwiXHJcbiAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoY29sdW1uPy5zaG93VG9vbHRpcCA/IChjb2x1bW4/LnRvb2x0aXAgPyBjb2x1bW4udG9vbHRpcCA6IGNvbHVtbi50aXRsZSApIDogJycpIHx8ICcnXCJcclxuICAgID48L3VpLWljb24+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG4iXX0=
@@ -58,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
58
58
  exports: [TableComponent],
59
59
  }]
60
60
  }] });
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFvQmhFLE1BQU0sT0FBTyxvQkFBb0I7K0dBQXBCLG9CQUFvQjtnSEFBcEIsb0JBQW9CLGlCQWpCaEIsY0FBYyxFQUFFLGdCQUFnQixhQUU3QyxZQUFZO1lBQ1osY0FBYztZQUNkLGdCQUFnQjtZQUNoQixpQkFBaUI7WUFDakIsd0JBQXdCO1lBQ3hCLHFCQUFxQjtZQUNyQixhQUFhO1lBQ2IsbUJBQW1CO1lBQ25CLG9CQUFvQjtZQUNwQix5QkFBeUI7WUFDekIsc0JBQXNCO1lBQ3RCLGVBQWUsYUFFUCxjQUFjO2dIQUViLG9CQUFvQixZQWY3QixZQUFZO1lBQ1osY0FBYztZQUNkLGdCQUFnQjtZQUNoQixpQkFBaUI7WUFDakIsd0JBQXdCO1lBQ3hCLHFCQUFxQjtZQUNyQixhQUFhO1lBQ2IsbUJBQW1COzs0RkFRVixvQkFBb0I7a0JBbEJoQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQztvQkFDaEQsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsd0JBQXdCO3dCQUN4QixxQkFBcUI7d0JBQ3JCLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLHlCQUF5Qjt3QkFDekIsc0JBQXNCO3dCQUN0QixlQUFlO3FCQUNoQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7aUJBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgU2tlbGV0b25Db21wb25lbnQgfSBmcm9tICcuLi9za2VsZXRvbi9za2VsZXRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFnaW5hdG9yQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vcGFnaW5hdG9yL3BhZ2luYXRvci5jb21wb25lbnQubW9kdWxlJztcbmltcG9ydCB7IEVsbGlwc2VUZXh0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9lbGxpcHNlLXRleHQuZGlyZWN0aXZlJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50Lm1vZHVsZSc7XG5pbXBvcnQgeyBNYXRTb3J0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudC5tb2R1bGUnO1xuaW1wb3J0IHsgU2VudGVuY2VDYXNlUGlwZSB9IGZyb20gJy4vc2VudGVuY2UtY2FzZS5waXBlJztcbmltcG9ydCB7IERhdGFQcm9wZXJ0eUdldHRlclBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9kYXRhLXByb3BlcnR5LWdldHRlcic7XG5pbXBvcnQgeyBEeW5hbWljQ29tcG9uZW50RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9keW5hbWljLWNvbXBvbmVudC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTWVtb2l6ZUZ1bmNQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvbWVtb2l6ZS1mdW5jLnBpcGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtUYWJsZUNvbXBvbmVudCwgU2VudGVuY2VDYXNlUGlwZV0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0VGFibGVNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBTa2VsZXRvbkNvbXBvbmVudCxcbiAgICBQYWdpbmF0b3JDb21wb25lbnRNb2R1bGUsXG4gICAgQnV0dG9uQ29tcG9uZW50TW9kdWxlLFxuICAgIE1hdFNvcnRNb2R1bGUsXG4gICAgSWNvbkNvbXBvbmVudE1vZHVsZSxcbiAgICBFbGxpcHNlVGV4dERpcmVjdGl2ZSxcbiAgICBEeW5hbWljQ29tcG9uZW50RGlyZWN0aXZlLFxuICAgIERhdGFQcm9wZXJ0eUdldHRlclBpcGUsXG4gICAgTWVtb2l6ZUZ1bmNQaXBlLFxuICBdLFxuICBleHBvcnRzOiBbVGFibGVDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudE1vZHVsZSB7fVxuIl19
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFvQmhFLE1BQU0sT0FBTyxvQkFBb0I7K0dBQXBCLG9CQUFvQjtnSEFBcEIsb0JBQW9CLGlCQWpCaEIsY0FBYyxFQUFFLGdCQUFnQixhQUU3QyxZQUFZO1lBQ1osY0FBYztZQUNkLGdCQUFnQjtZQUNoQixpQkFBaUI7WUFDakIsd0JBQXdCO1lBQ3hCLHFCQUFxQjtZQUNyQixhQUFhO1lBQ2IsbUJBQW1CO1lBQ25CLG9CQUFvQjtZQUNwQix5QkFBeUI7WUFDekIsc0JBQXNCO1lBQ3RCLGVBQWUsYUFFUCxjQUFjO2dIQUViLG9CQUFvQixZQWY3QixZQUFZO1lBQ1osY0FBYztZQUNkLGdCQUFnQjtZQUNoQixpQkFBaUI7WUFDakIsd0JBQXdCO1lBQ3hCLHFCQUFxQjtZQUNyQixhQUFhO1lBQ2IsbUJBQW1COzs0RkFRVixvQkFBb0I7a0JBbEJoQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQztvQkFDaEQsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsd0JBQXdCO3dCQUN4QixxQkFBcUI7d0JBQ3JCLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLHlCQUF5Qjt3QkFDekIsc0JBQXNCO3dCQUN0QixlQUFlO3FCQUNoQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7aUJBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgVGFibGVDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IFNrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vc2tlbGV0b24vc2tlbGV0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGFnaW5hdG9yQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vcGFnaW5hdG9yL3BhZ2luYXRvci5jb21wb25lbnQubW9kdWxlJztcclxuaW1wb3J0IHsgRWxsaXBzZVRleHREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2VsbGlwc2UtdGV4dC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBNYXRTb3J0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IEljb25Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi9pY29uL2ljb24uY29tcG9uZW50Lm1vZHVsZSc7XHJcbmltcG9ydCB7IFNlbnRlbmNlQ2FzZVBpcGUgfSBmcm9tICcuL3NlbnRlbmNlLWNhc2UucGlwZSc7XHJcbmltcG9ydCB7IERhdGFQcm9wZXJ0eUdldHRlclBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9kYXRhLXByb3BlcnR5LWdldHRlcic7XHJcbmltcG9ydCB7IER5bmFtaWNDb21wb25lbnREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2R5bmFtaWMtY29tcG9uZW50LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE1lbW9pemVGdW5jUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL21lbW9pemUtZnVuYy5waXBlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbVGFibGVDb21wb25lbnQsIFNlbnRlbmNlQ2FzZVBpcGVdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdFRhYmxlTW9kdWxlLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIFNrZWxldG9uQ29tcG9uZW50LFxyXG4gICAgUGFnaW5hdG9yQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgQnV0dG9uQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgTWF0U29ydE1vZHVsZSxcclxuICAgIEljb25Db21wb25lbnRNb2R1bGUsXHJcbiAgICBFbGxpcHNlVGV4dERpcmVjdGl2ZSxcclxuICAgIER5bmFtaWNDb21wb25lbnREaXJlY3RpdmUsXHJcbiAgICBEYXRhUHJvcGVydHlHZXR0ZXJQaXBlLFxyXG4gICAgTWVtb2l6ZUZ1bmNQaXBlLFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1RhYmxlQ29tcG9uZW50XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50TW9kdWxlIHt9XHJcbiJdfQ==