@testgorilla/tgo-ui 3.14.11-beta.1 → 3.14.12

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 (758) hide show
  1. package/README.md +103 -103
  2. package/components/donut-chart/donut-chart.component.d.ts +2 -2
  3. package/components/icon/icon.config.d.ts +1 -1
  4. package/components/inline-field/inline-field.component.d.ts +2 -2
  5. package/components/multi-input/multi-input.component.d.ts +8 -1
  6. package/components/skeleton/skeleton.component.d.ts +1 -1
  7. package/esm2022/components/accordion/accordion.component.mjs +3 -3
  8. package/esm2022/components/accordion/accordion.component.module.mjs +1 -1
  9. package/esm2022/components/accordion/accordion.model.mjs +1 -1
  10. package/esm2022/components/ai-feedback/ai-feedback.component.mjs +3 -3
  11. package/esm2022/components/ai-feedback/ai-feedback.model.mjs +1 -1
  12. package/esm2022/components/ai-feedback/ai-feedback.module.mjs +1 -1
  13. package/esm2022/components/alert-banner/alert-banner.component.mjs +3 -3
  14. package/esm2022/components/alert-banner/alert-banner.component.module.mjs +1 -1
  15. package/esm2022/components/alert-banner/alert-banner.model.mjs +1 -1
  16. package/esm2022/components/autocomplete/autocomplete.component.mjs +3 -3
  17. package/esm2022/components/autocomplete/autocomplete.component.module.mjs +1 -1
  18. package/esm2022/components/autocomplete/autocomplete.model.mjs +1 -1
  19. package/esm2022/components/autocomplete/includes.pipe.mjs +1 -1
  20. package/esm2022/components/autocomplete/prevent-input.directive.mjs +1 -1
  21. package/esm2022/components/autocomplete/transform-Item.pipe.mjs +1 -1
  22. package/esm2022/components/avatar/avatar.component.mjs +3 -3
  23. package/esm2022/components/avatar/avatar.component.module.mjs +1 -1
  24. package/esm2022/components/avatar/avatar.model.mjs +1 -1
  25. package/esm2022/components/badge/badge.component.mjs +3 -3
  26. package/esm2022/components/badge/badge.component.module.mjs +1 -1
  27. package/esm2022/components/badge/badge.model.mjs +1 -1
  28. package/esm2022/components/breadcrumb/breadcrumb.component.mjs +3 -3
  29. package/esm2022/components/breadcrumb/breadcrumb.component.module.mjs +1 -1
  30. package/esm2022/components/breadcrumb/breadcrumb.model.mjs +1 -1
  31. package/esm2022/components/button/button.component.mjs +3 -3
  32. package/esm2022/components/button/button.component.module.mjs +1 -1
  33. package/esm2022/components/button/button.model.mjs +1 -1
  34. package/esm2022/components/card/card.component.mjs +3 -3
  35. package/esm2022/components/card/card.component.module.mjs +1 -1
  36. package/esm2022/components/card/card.model.mjs +1 -1
  37. package/esm2022/components/checkbox/checkbox.component.mjs +3 -3
  38. package/esm2022/components/checkbox/checkbox.component.module.mjs +1 -1
  39. package/esm2022/components/checkbox/focus-visible.directive.mjs +1 -1
  40. package/esm2022/components/checklist/checklist.component.mjs +3 -3
  41. package/esm2022/components/checklist/checklist.model.mjs +1 -1
  42. package/esm2022/components/confirm-dialog/confirm-dialog.component.mjs +3 -3
  43. package/esm2022/components/confirm-dialog/confirm-dialog.component.module.mjs +1 -1
  44. package/esm2022/components/confirm-dialog/confirm-dialog.model.mjs +1 -1
  45. package/esm2022/components/datepicker/date-adapter.mjs +1 -1
  46. package/esm2022/components/datepicker/datepicker.component.mjs +3 -3
  47. package/esm2022/components/datepicker/datepicker.component.module.mjs +1 -1
  48. package/esm2022/components/datepicker/datepicker.service.mjs +1 -1
  49. package/esm2022/components/datepicker/no-date-format.directive.mjs +1 -1
  50. package/esm2022/components/deprecated-paginator/deprecated-paginator.component.mjs +3 -3
  51. package/esm2022/components/deprecated-paginator/deprecated-paginator.component.module.mjs +1 -1
  52. package/esm2022/components/dialog/dialog.component.mjs +3 -3
  53. package/esm2022/components/dialog/dialog.component.module.mjs +1 -1
  54. package/esm2022/components/dialog/dialog.model.mjs +1 -1
  55. package/esm2022/components/dialog/dialog.service.mjs +1 -1
  56. package/esm2022/components/divider/divider.component.mjs +3 -3
  57. package/esm2022/components/divider/divider.component.module.mjs +1 -1
  58. package/esm2022/components/divider/divider.model.mjs +1 -1
  59. package/esm2022/components/donut-chart/donut-chart.component.mjs +3 -3
  60. package/esm2022/components/donut-chart/donut-chart.component.model.mjs +1 -1
  61. package/esm2022/components/donut-chart/donut-chart.component.module.mjs +1 -1
  62. package/esm2022/components/dropdown/dropdown.component.mjs +3 -3
  63. package/esm2022/components/dropdown/dropdown.component.module.mjs +1 -1
  64. package/esm2022/components/dropdown/dropdown.model.mjs +1 -1
  65. package/esm2022/components/elevation-shadow/elevation-shadow.component.mjs +3 -3
  66. package/esm2022/components/elevation-shadow/elevation-shadow.component.module.mjs +1 -1
  67. package/esm2022/components/elevation-shadow/elevation-shadow.constant.mjs +1 -1
  68. package/esm2022/components/empty-state/empty-state.component.mjs +3 -3
  69. package/esm2022/components/empty-state/empty-state.component.module.mjs +1 -1
  70. package/esm2022/components/empty-state/empty-state.model.mjs +1 -1
  71. package/esm2022/components/field/field.component.mjs +3 -3
  72. package/esm2022/components/field/field.component.module.mjs +1 -1
  73. package/esm2022/components/field/field.model.mjs +1 -1
  74. package/esm2022/components/file-upload/file-upload.component.mjs +3 -3
  75. package/esm2022/components/file-upload/file-upload.component.module.mjs +1 -1
  76. package/esm2022/components/filter-button/filter-button.component.mjs +3 -3
  77. package/esm2022/components/filter-button/filter-button.component.module.mjs +1 -1
  78. package/esm2022/components/filter-button/filter-button.model.mjs +1 -1
  79. package/esm2022/components/gaussian-chart/gaussian-chart.component.mjs +3 -3
  80. package/esm2022/components/gaussian-chart/gaussian-chart.module.mjs +1 -1
  81. package/esm2022/components/icon/icon-svg-content.mjs +1 -1
  82. package/esm2022/components/icon/icon.component.mjs +3 -3
  83. package/esm2022/components/icon/icon.component.module.mjs +1 -1
  84. package/esm2022/components/icon/icon.config.mjs +7 -1
  85. package/esm2022/components/icon/icon.model.mjs +1 -1
  86. package/esm2022/components/icon-label/icon-label.component.mjs +3 -3
  87. package/esm2022/components/icon-label/icon-label.component.module.mjs +1 -1
  88. package/esm2022/components/inline-field/inline-field.component.mjs +3 -3
  89. package/esm2022/components/inline-field/inline-field.component.module.mjs +1 -1
  90. package/esm2022/components/inline-field/inline-field.model.mjs +1 -1
  91. package/esm2022/components/logo/logo.component.mjs +3 -3
  92. package/esm2022/components/logo/logo.component.module.mjs +1 -1
  93. package/esm2022/components/logo/logo.model.mjs +1 -1
  94. package/esm2022/components/media-card/media-card.component.mjs +3 -3
  95. package/esm2022/components/media-dialog/media-dialog.component.mjs +3 -3
  96. package/esm2022/components/media-dialog/media-dialog.model.mjs +1 -1
  97. package/esm2022/components/multi-input/multi-input.component.mjs +14 -7
  98. package/esm2022/components/multi-input/multi-input.component.module.mjs +1 -1
  99. package/esm2022/components/multi-input/multi-input.model.mjs +1 -1
  100. package/esm2022/components/multi-input/required-multi-input.validator.mjs +1 -1
  101. package/esm2022/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.mjs +3 -3
  102. package/esm2022/components/navbar/navbar.component.mjs +3 -3
  103. package/esm2022/components/navbar/navbar.component.module.mjs +1 -1
  104. package/esm2022/components/navbar/navbar.model.mjs +1 -1
  105. package/esm2022/components/overflow-menu/overflow-menu.component.mjs +3 -3
  106. package/esm2022/components/overflow-menu/overflow-menu.component.module.mjs +1 -1
  107. package/esm2022/components/overflow-menu/overflow-menu.model.mjs +1 -1
  108. package/esm2022/components/page-header/page-header.component.mjs +3 -3
  109. package/esm2022/components/page-header/page-header.component.module.mjs +1 -1
  110. package/esm2022/components/paginator/paginator.component.mjs +3 -3
  111. package/esm2022/components/paginator/paginator.component.module.mjs +1 -1
  112. package/esm2022/components/password-criteria/password.component.mjs +3 -3
  113. package/esm2022/components/password-criteria/password.component.module.mjs +1 -1
  114. package/esm2022/components/password-strength/password-strength.component.mjs +3 -3
  115. package/esm2022/components/password-strength/password-strength.component.module.mjs +1 -1
  116. package/esm2022/components/phone-input/join-strings.pipe.mjs +1 -1
  117. package/esm2022/components/phone-input/phone-input.component.mjs +3 -3
  118. package/esm2022/components/phone-input/phone-input.component.module.mjs +1 -1
  119. package/esm2022/components/phone-input/phone-input.model.mjs +1 -1
  120. package/esm2022/components/progress-bar/progress-bar.component.mjs +3 -3
  121. package/esm2022/components/progress-bar/progress-bar.component.module.mjs +1 -1
  122. package/esm2022/components/prompt/prompt.component.mjs +3 -3
  123. package/esm2022/components/prompt/prompt.model.mjs +1 -1
  124. package/esm2022/components/prompt/prompt.module.mjs +1 -1
  125. package/esm2022/components/radial-progress/radial-progress.component.mjs +3 -3
  126. package/esm2022/components/radial-progress/radial-progress.component.module.mjs +1 -1
  127. package/esm2022/components/radial-progress/radial-progress.model.mjs +1 -1
  128. package/esm2022/components/radio-button/radio-button.component.mjs +3 -3
  129. package/esm2022/components/radio-button/radio-button.component.module.mjs +1 -1
  130. package/esm2022/components/radio-button/radio-button.model.mjs +1 -1
  131. package/esm2022/components/rating/half-star.pipe.mjs +1 -1
  132. package/esm2022/components/rating/rating.component.mjs +3 -3
  133. package/esm2022/components/rating/rating.component.module.mjs +1 -1
  134. package/esm2022/components/scale/scale.component.mjs +3 -3
  135. package/esm2022/components/scale/scale.component.module.mjs +1 -1
  136. package/esm2022/components/scale-table/scale-table.component.mjs +3 -3
  137. package/esm2022/components/scale-table/scale-table.model.mjs +1 -1
  138. package/esm2022/components/segmented-bar/segmented-bar.component.mjs +3 -3
  139. package/esm2022/components/segmented-bar/segmented-bar.component.module.mjs +1 -1
  140. package/esm2022/components/segmented-bar/segmented-bar.model.mjs +1 -1
  141. package/esm2022/components/segmented-button/segmented-button.component.mjs +3 -3
  142. package/esm2022/components/segmented-button/segmented-button.component.module.mjs +1 -1
  143. package/esm2022/components/segmented-button/segmented-button.model.mjs +1 -1
  144. package/esm2022/components/selectable-card/selectable-card.component.mjs +3 -3
  145. package/esm2022/components/selectable-card/selectable-card.component.module.mjs +1 -1
  146. package/esm2022/components/side-panel/side-panel-data-injection-token.mjs +1 -1
  147. package/esm2022/components/side-panel/side-panel.animations.mjs +1 -1
  148. package/esm2022/components/side-panel/side-panel.component.mjs +3 -3
  149. package/esm2022/components/side-panel/side-panel.model.mjs +1 -1
  150. package/esm2022/components/side-panel/side-panel.service.mjs +1 -1
  151. package/esm2022/components/side-sheet/side-sheet.component.mjs +3 -3
  152. package/esm2022/components/side-sheet/side-sheet.component.module.mjs +1 -1
  153. package/esm2022/components/side-sheet/side-sheet.model.mjs +1 -1
  154. package/esm2022/components/side-sheet/side-sheet.service.mjs +1 -1
  155. package/esm2022/components/skeleton/skeleton.component.mjs +3 -3
  156. package/esm2022/components/skeleton/skeleton.model.mjs +1 -1
  157. package/esm2022/components/slider/slider.component.mjs +3 -3
  158. package/esm2022/components/slider/slider.component.module.mjs +1 -1
  159. package/esm2022/components/slider/slider.model.mjs +1 -1
  160. package/esm2022/components/snackbar/snackbar.component.mjs +3 -3
  161. package/esm2022/components/snackbar/snackbar.component.module.mjs +1 -1
  162. package/esm2022/components/snackbar/snackbar.model.mjs +1 -1
  163. package/esm2022/components/snackbar/snackbar.service.mjs +1 -1
  164. package/esm2022/components/spider-chart/spider-chart.component.mjs +3 -3
  165. package/esm2022/components/spider-chart/spider-chart.model.mjs +1 -1
  166. package/esm2022/components/spider-chart/spider-chart.module.mjs +1 -1
  167. package/esm2022/components/spinner/spinner.component.mjs +3 -3
  168. package/esm2022/components/spinner/spinner.model.mjs +1 -1
  169. package/esm2022/components/spinner/spinner.module.mjs +1 -1
  170. package/esm2022/components/step/step.component.mjs +3 -3
  171. package/esm2022/components/step/step.component.module.mjs +1 -1
  172. package/esm2022/components/stepper/stepper.component.mjs +3 -3
  173. package/esm2022/components/stepper/stepper.component.module.mjs +1 -1
  174. package/esm2022/components/stepper/stepper.model.mjs +1 -1
  175. package/esm2022/components/table/sentence-case.pipe.mjs +1 -1
  176. package/esm2022/components/table/table.component.mjs +3 -3
  177. package/esm2022/components/table/table.component.module.mjs +1 -1
  178. package/esm2022/components/table/table.model.mjs +1 -1
  179. package/esm2022/components/tabs/tab.directive.mjs +1 -1
  180. package/esm2022/components/tabs/tabs.component.mjs +3 -3
  181. package/esm2022/components/tabs/tabs.component.module.mjs +1 -1
  182. package/esm2022/components/tabs/tabs.model.mjs +1 -1
  183. package/esm2022/components/tag/tag.component.mjs +3 -3
  184. package/esm2022/components/tag/tag.component.module.mjs +1 -1
  185. package/esm2022/components/tag/tag.model.mjs +1 -1
  186. package/esm2022/components/toggle/toggle.component.mjs +3 -3
  187. package/esm2022/components/toggle/toggle.component.module.mjs +1 -1
  188. package/esm2022/components/toggle/toggle.model.mjs +1 -1
  189. package/esm2022/components/tooltip/tooltip-template.directive.mjs +1 -1
  190. package/esm2022/components/tooltip/tooltip.component.mjs +3 -3
  191. package/esm2022/components/tooltip/tooltip.component.module.mjs +1 -1
  192. package/esm2022/components/tooltip/tooltip.model.mjs +1 -1
  193. package/esm2022/components/universal-skills-report/universal-skills-report.component.mjs +3 -3
  194. package/esm2022/components/universal-skills-report/universal-skills-report.component.module.mjs +1 -1
  195. package/esm2022/components/universal-skills-spider-charts/universal-skills-spider-charts.component.mjs +3 -3
  196. package/esm2022/components/universal-skills-spider-charts/universal-skills-spider-charts.component.module.mjs +1 -1
  197. package/esm2022/components/validation-error/validation-error.component.mjs +3 -3
  198. package/esm2022/components/validation-error/validation-error.model.mjs +1 -1
  199. package/esm2022/components/validation-error/validation-error.module.mjs +1 -1
  200. package/esm2022/directives/digits-only.directive.mjs +1 -1
  201. package/esm2022/directives/drag-drop.directive.mjs +1 -1
  202. package/esm2022/directives/dynamic-component.directive.mjs +1 -1
  203. package/esm2022/directives/ellipse-text.directive.mjs +1 -1
  204. package/esm2022/directives/select-text.directive.mjs +1 -1
  205. package/esm2022/directives/step-line-element.directive.mjs +1 -1
  206. package/esm2022/models/application-theme.model.mjs +1 -1
  207. package/esm2022/models/checkbox.model.mjs +1 -1
  208. package/esm2022/models/colors.model.mjs +1 -1
  209. package/esm2022/models/keyboard-events.model.mjs +1 -1
  210. package/esm2022/models/screen-breakpoints.model.mjs +1 -1
  211. package/esm2022/models/universal-skills-report.model.mjs +1 -1
  212. package/esm2022/pipes/data-property-getter.mjs +1 -1
  213. package/esm2022/pipes/has-validation-error.pipe.mjs +1 -1
  214. package/esm2022/pipes/memoize-func.pipe.mjs +1 -1
  215. package/esm2022/pipes/name-initials.pipe.mjs +1 -1
  216. package/esm2022/pipes/truncate.pipe.mjs +1 -1
  217. package/esm2022/pipes/ui-ordinal-suffix.pipe.mjs +1 -1
  218. package/esm2022/pipes/ui-translate.pipe.mjs +1 -1
  219. package/esm2022/providers/is-mobile.mjs +1 -1
  220. package/esm2022/public-api.mjs +1 -1
  221. package/esm2022/services/icons.service.mjs +1 -1
  222. package/esm2022/services/universal-skills.service.mjs +1 -1
  223. package/esm2022/utils/alert-bar.model.mjs +1 -1
  224. package/esm2022/utils/alert-bars.utils.mjs +1 -1
  225. package/esm2022/utils/autocomplete-utils.mjs +2 -2
  226. package/esm2022/utils/color-contrast.mjs +1 -1
  227. package/esm2022/utils/hex-to-rgb.mjs +1 -1
  228. package/esm2022/utils/localization/language.model.mjs +1 -1
  229. package/esm2022/utils/localization/language.service.mjs +1 -1
  230. package/esm2022/utils/table.utils.mjs +1 -1
  231. package/fesm2022/testgorilla-tgo-ui.mjs +150 -137
  232. package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
  233. package/package.json +1 -1
  234. package/projects/tgo-canopy-ui/assets/i18n/da-dk.json +819 -819
  235. package/projects/tgo-canopy-ui/assets/i18n/de.json +819 -819
  236. package/projects/tgo-canopy-ui/assets/i18n/en.json +829 -829
  237. package/projects/tgo-canopy-ui/assets/i18n/es.json +819 -819
  238. package/projects/tgo-canopy-ui/assets/i18n/fr.json +819 -819
  239. package/projects/tgo-canopy-ui/assets/i18n/it-it.json +819 -819
  240. package/projects/tgo-canopy-ui/assets/i18n/ja-jp.json +819 -819
  241. package/projects/tgo-canopy-ui/assets/i18n/nb-no.json +819 -819
  242. package/projects/tgo-canopy-ui/assets/i18n/nl.json +819 -819
  243. package/projects/tgo-canopy-ui/assets/i18n/pl-pl.json +819 -819
  244. package/projects/tgo-canopy-ui/assets/i18n/pt-br.json +819 -819
  245. package/projects/tgo-canopy-ui/assets/i18n/sv-se.json +819 -819
  246. package/projects/tgo-canopy-ui/assets/icons/Add.svg +3 -3
  247. package/projects/tgo-canopy-ui/assets/icons/Archive.svg +3 -3
  248. package/projects/tgo-canopy-ui/assets/icons/Arrow_down.svg +3 -3
  249. package/projects/tgo-canopy-ui/assets/icons/Arrow_left.svg +3 -3
  250. package/projects/tgo-canopy-ui/assets/icons/Arrow_right.svg +3 -3
  251. package/projects/tgo-canopy-ui/assets/icons/Arrow_up.svg +3 -3
  252. package/projects/tgo-canopy-ui/assets/icons/Assessment.svg +3 -3
  253. package/projects/tgo-canopy-ui/assets/icons/Attempts.svg +3 -3
  254. package/projects/tgo-canopy-ui/assets/icons/Book.svg +3 -3
  255. package/projects/tgo-canopy-ui/assets/icons/Calendar.svg +3 -3
  256. package/projects/tgo-canopy-ui/assets/icons/Candidates.svg +8 -8
  257. package/projects/tgo-canopy-ui/assets/icons/Chat-notifications.svg +4 -4
  258. package/projects/tgo-canopy-ui/assets/icons/Chat.svg +3 -3
  259. package/projects/tgo-canopy-ui/assets/icons/Check.svg +3 -3
  260. package/projects/tgo-canopy-ui/assets/icons/Clone.svg +3 -3
  261. package/projects/tgo-canopy-ui/assets/icons/Close.svg +3 -3
  262. package/projects/tgo-canopy-ui/assets/icons/Code.svg +3 -3
  263. package/projects/tgo-canopy-ui/assets/icons/Company.svg +3 -3
  264. package/projects/tgo-canopy-ui/assets/icons/Copy.svg +3 -3
  265. package/projects/tgo-canopy-ui/assets/icons/Custom-questions.svg +3 -3
  266. package/projects/tgo-canopy-ui/assets/icons/Delete.svg +3 -3
  267. package/projects/tgo-canopy-ui/assets/icons/Devices.svg +3 -3
  268. package/projects/tgo-canopy-ui/assets/icons/Document.svg +3 -3
  269. package/projects/tgo-canopy-ui/assets/icons/Dot.svg +3 -3
  270. package/projects/tgo-canopy-ui/assets/icons/Download.svg +3 -3
  271. package/projects/tgo-canopy-ui/assets/icons/Edit.svg +3 -3
  272. package/projects/tgo-canopy-ui/assets/icons/Email-message.svg +3 -3
  273. package/projects/tgo-canopy-ui/assets/icons/Employee.svg +8 -8
  274. package/projects/tgo-canopy-ui/assets/icons/Empty-placeholder.svg +3 -3
  275. package/projects/tgo-canopy-ui/assets/icons/Error.svg +3 -3
  276. package/projects/tgo-canopy-ui/assets/icons/Essay.svg +3 -3
  277. package/projects/tgo-canopy-ui/assets/icons/Eye-hide.svg +3 -3
  278. package/projects/tgo-canopy-ui/assets/icons/Eye-view.svg +3 -3
  279. package/projects/tgo-canopy-ui/assets/icons/Fast-forward.svg +4 -4
  280. package/projects/tgo-canopy-ui/assets/icons/Fast-rewind.svg +4 -4
  281. package/projects/tgo-canopy-ui/assets/icons/Feedback-1.svg +3 -3
  282. package/projects/tgo-canopy-ui/assets/icons/Feedback-2.svg +3 -3
  283. package/projects/tgo-canopy-ui/assets/icons/Feedback-3.svg +6 -6
  284. package/projects/tgo-canopy-ui/assets/icons/Feedback-4.svg +3 -3
  285. package/projects/tgo-canopy-ui/assets/icons/Feedback-5.svg +3 -3
  286. package/projects/tgo-canopy-ui/assets/icons/File-attach.svg +3 -3
  287. package/projects/tgo-canopy-ui/assets/icons/File-upload.svg +3 -3
  288. package/projects/tgo-canopy-ui/assets/icons/Filter.svg +3 -3
  289. package/projects/tgo-canopy-ui/assets/icons/Fire.svg +10 -10
  290. package/projects/tgo-canopy-ui/assets/icons/Folder.svg +3 -3
  291. package/projects/tgo-canopy-ui/assets/icons/Format-add-file.svg +3 -3
  292. package/projects/tgo-canopy-ui/assets/icons/Format-add-table.svg +3 -3
  293. package/projects/tgo-canopy-ui/assets/icons/Format-align-L.svg +3 -3
  294. package/projects/tgo-canopy-ui/assets/icons/Format-align-R.svg +3 -3
  295. package/projects/tgo-canopy-ui/assets/icons/Format-align-center.svg +3 -3
  296. package/projects/tgo-canopy-ui/assets/icons/Format-align-justify.svg +3 -3
  297. package/projects/tgo-canopy-ui/assets/icons/Format-bold.svg +3 -3
  298. package/projects/tgo-canopy-ui/assets/icons/Format-code-active.svg +3 -3
  299. package/projects/tgo-canopy-ui/assets/icons/Format-code-block.svg +3 -3
  300. package/projects/tgo-canopy-ui/assets/icons/Format-edit-table.svg +3 -3
  301. package/projects/tgo-canopy-ui/assets/icons/Format-format.svg +3 -3
  302. package/projects/tgo-canopy-ui/assets/icons/Format-function.svg +3 -3
  303. package/projects/tgo-canopy-ui/assets/icons/Format-italics.svg +3 -3
  304. package/projects/tgo-canopy-ui/assets/icons/Format-list-bulleted.svg +3 -3
  305. package/projects/tgo-canopy-ui/assets/icons/Format-list-numbered.svg +3 -3
  306. package/projects/tgo-canopy-ui/assets/icons/Format-picker.svg +3 -3
  307. package/projects/tgo-canopy-ui/assets/icons/Format-quote.svg +3 -3
  308. package/projects/tgo-canopy-ui/assets/icons/Format-subscript.svg +3 -3
  309. package/projects/tgo-canopy-ui/assets/icons/Format-superscript.svg +3 -3
  310. package/projects/tgo-canopy-ui/assets/icons/Format-text-direction-L.svg +3 -3
  311. package/projects/tgo-canopy-ui/assets/icons/Format-text-direction-R.svg +3 -3
  312. package/projects/tgo-canopy-ui/assets/icons/Format-text-size.svg +3 -3
  313. package/projects/tgo-canopy-ui/assets/icons/Format-underline.svg +3 -3
  314. package/projects/tgo-canopy-ui/assets/icons/Format-variable.svg +3 -3
  315. package/projects/tgo-canopy-ui/assets/icons/Full-screen.svg +3 -3
  316. package/projects/tgo-canopy-ui/assets/icons/Gender-female.svg +3 -3
  317. package/projects/tgo-canopy-ui/assets/icons/Gender-male.svg +3 -3
  318. package/projects/tgo-canopy-ui/assets/icons/Gift.svg +7 -7
  319. package/projects/tgo-canopy-ui/assets/icons/Google.svg +6 -6
  320. package/projects/tgo-canopy-ui/assets/icons/Grab.svg +3 -3
  321. package/projects/tgo-canopy-ui/assets/icons/Help-2.svg +3 -3
  322. package/projects/tgo-canopy-ui/assets/icons/Help.svg +3 -3
  323. package/projects/tgo-canopy-ui/assets/icons/Image.svg +3 -3
  324. package/projects/tgo-canopy-ui/assets/icons/Info.svg +3 -3
  325. package/projects/tgo-canopy-ui/assets/icons/Integration.svg +3 -3
  326. package/projects/tgo-canopy-ui/assets/icons/Language.svg +3 -3
  327. package/projects/tgo-canopy-ui/assets/icons/Layout.svg +3 -3
  328. package/projects/tgo-canopy-ui/assets/icons/Learn.svg +3 -3
  329. package/projects/tgo-canopy-ui/assets/icons/Level.svg +3 -3
  330. package/projects/tgo-canopy-ui/assets/icons/Light-bulb.svg +3 -3
  331. package/projects/tgo-canopy-ui/assets/icons/Link.svg +3 -3
  332. package/projects/tgo-canopy-ui/assets/icons/Loading-spinner.svg +10 -10
  333. package/projects/tgo-canopy-ui/assets/icons/Localisation.svg +3 -3
  334. package/projects/tgo-canopy-ui/assets/icons/Location.svg +3 -3
  335. package/projects/tgo-canopy-ui/assets/icons/Lock.svg +3 -3
  336. package/projects/tgo-canopy-ui/assets/icons/Log-out.svg +3 -3
  337. package/projects/tgo-canopy-ui/assets/icons/Menu-burger.svg +3 -3
  338. package/projects/tgo-canopy-ui/assets/icons/Menu-close.svg +3 -3
  339. package/projects/tgo-canopy-ui/assets/icons/Menu-ellipsis.svg +3 -3
  340. package/projects/tgo-canopy-ui/assets/icons/Menu-open.svg +3 -3
  341. package/projects/tgo-canopy-ui/assets/icons/Microphone.svg +3 -3
  342. package/projects/tgo-canopy-ui/assets/icons/Microsoft.svg +6 -6
  343. package/projects/tgo-canopy-ui/assets/icons/Minimize.svg +3 -3
  344. package/projects/tgo-canopy-ui/assets/icons/Minus.svg +3 -3
  345. package/projects/tgo-canopy-ui/assets/icons/Money-bag.svg +5 -5
  346. package/projects/tgo-canopy-ui/assets/icons/Mouse-cursor.svg +3 -3
  347. package/projects/tgo-canopy-ui/assets/icons/Mouse-grab-cursor.svg +3 -3
  348. package/projects/tgo-canopy-ui/assets/icons/Mouse.svg +3 -3
  349. package/projects/tgo-canopy-ui/assets/icons/Multi-choice.svg +3 -3
  350. package/projects/tgo-canopy-ui/assets/icons/Notifications.svg +3 -3
  351. package/projects/tgo-canopy-ui/assets/icons/Password.svg +4 -4
  352. package/projects/tgo-canopy-ui/assets/icons/Path.svg +3 -3
  353. package/projects/tgo-canopy-ui/assets/icons/Pin-marker.svg +4 -4
  354. package/projects/tgo-canopy-ui/assets/icons/Plan-billing.svg +3 -3
  355. package/projects/tgo-canopy-ui/assets/icons/Plus.svg +3 -3
  356. package/projects/tgo-canopy-ui/assets/icons/Premium.svg +4 -4
  357. package/projects/tgo-canopy-ui/assets/icons/Promotion.svg +3 -3
  358. package/projects/tgo-canopy-ui/assets/icons/Question-count.svg +3 -3
  359. package/projects/tgo-canopy-ui/assets/icons/Refer.svg +3 -3
  360. package/projects/tgo-canopy-ui/assets/icons/Reset.svg +3 -3
  361. package/projects/tgo-canopy-ui/assets/icons/Review.svg +3 -3
  362. package/projects/tgo-canopy-ui/assets/icons/Round-check-filled.svg +3 -3
  363. package/projects/tgo-canopy-ui/assets/icons/Round-check.svg +3 -3
  364. package/projects/tgo-canopy-ui/assets/icons/Search.svg +3 -3
  365. package/projects/tgo-canopy-ui/assets/icons/Secure-checkout.svg +3 -3
  366. package/projects/tgo-canopy-ui/assets/icons/Send.svg +3 -3
  367. package/projects/tgo-canopy-ui/assets/icons/Settings.svg +8 -8
  368. package/projects/tgo-canopy-ui/assets/icons/Share.svg +3 -3
  369. package/projects/tgo-canopy-ui/assets/icons/Skip-next.svg +4 -4
  370. package/projects/tgo-canopy-ui/assets/icons/Skip-previous.svg +4 -4
  371. package/projects/tgo-canopy-ui/assets/icons/Social-facebook.svg +3 -3
  372. package/projects/tgo-canopy-ui/assets/icons/Social-instagram.svg +3 -3
  373. package/projects/tgo-canopy-ui/assets/icons/Social-linkedin.svg +3 -3
  374. package/projects/tgo-canopy-ui/assets/icons/Sorting-down-1.svg +3 -3
  375. package/projects/tgo-canopy-ui/assets/icons/Sorting-down.svg +3 -3
  376. package/projects/tgo-canopy-ui/assets/icons/Sparkles.svg +18 -18
  377. package/projects/tgo-canopy-ui/assets/icons/Speedometer.svg +3 -3
  378. package/projects/tgo-canopy-ui/assets/icons/Star-filled.svg +3 -3
  379. package/projects/tgo-canopy-ui/assets/icons/Star-half.svg +3 -3
  380. package/projects/tgo-canopy-ui/assets/icons/Star-outline.svg +3 -3
  381. package/projects/tgo-canopy-ui/assets/icons/Suitcase.svg +6 -6
  382. package/projects/tgo-canopy-ui/assets/icons/Support.svg +3 -3
  383. package/projects/tgo-canopy-ui/assets/icons/Switch-tab.svg +3 -3
  384. package/projects/tgo-canopy-ui/assets/icons/Sync.svg +3 -3
  385. package/projects/tgo-canopy-ui/assets/icons/Team.svg +3 -3
  386. package/projects/tgo-canopy-ui/assets/icons/Test.svg +3 -3
  387. package/projects/tgo-canopy-ui/assets/icons/TestGorilla.svg +11 -11
  388. package/projects/tgo-canopy-ui/assets/icons/Thunder.svg +3 -3
  389. package/projects/tgo-canopy-ui/assets/icons/Timer.svg +3 -3
  390. package/projects/tgo-canopy-ui/assets/icons/Trophy.svg +3 -3
  391. package/projects/tgo-canopy-ui/assets/icons/Type.svg +3 -3
  392. package/projects/tgo-canopy-ui/assets/icons/Unarchive.svg +3 -3
  393. package/projects/tgo-canopy-ui/assets/icons/Unlock.svg +3 -3
  394. package/projects/tgo-canopy-ui/assets/icons/Upgrade.svg +3 -3
  395. package/projects/tgo-canopy-ui/assets/icons/Upload.svg +3 -3
  396. package/projects/tgo-canopy-ui/assets/icons/User-access.svg +3 -3
  397. package/projects/tgo-canopy-ui/assets/icons/User-add.svg +3 -3
  398. package/projects/tgo-canopy-ui/assets/icons/User-invite.svg +3 -3
  399. package/projects/tgo-canopy-ui/assets/icons/User-profile.svg +3 -3
  400. package/projects/tgo-canopy-ui/assets/icons/User-reject.svg +4 -4
  401. package/projects/tgo-canopy-ui/assets/icons/User-switch.svg +3 -3
  402. package/projects/tgo-canopy-ui/assets/icons/Video-pause.svg +3 -3
  403. package/projects/tgo-canopy-ui/assets/icons/Video-play.svg +3 -3
  404. package/projects/tgo-canopy-ui/assets/icons/Video-record.svg +3 -3
  405. package/projects/tgo-canopy-ui/assets/icons/Video-stop.svg +3 -3
  406. package/projects/tgo-canopy-ui/assets/icons/Video.svg +3 -3
  407. package/projects/tgo-canopy-ui/assets/icons/Volume.svg +3 -3
  408. package/projects/tgo-canopy-ui/assets/icons/Warning.svg +3 -3
  409. package/projects/tgo-canopy-ui/assets/icons/Zoom-in.svg +6 -6
  410. package/projects/tgo-canopy-ui/assets/icons/Zoom-out.svg +5 -5
  411. package/projects/tgo-canopy-ui/assets/icons/rating-icons/Star-filled-disabled.svg +3 -3
  412. package/projects/tgo-canopy-ui/assets/icons/rating-icons/Star-filled.svg +3 -3
  413. package/projects/tgo-canopy-ui/assets/icons/rating-icons/Star-half.svg +3 -3
  414. package/projects/tgo-canopy-ui/assets/icons/rating-icons/Star-outline.svg +3 -3
  415. package/projects/tgo-canopy-ui/assets/icons/rebrand/Add-filled.svg +3 -3
  416. package/projects/tgo-canopy-ui/assets/icons/rebrand/Add-in-line.svg +3 -3
  417. package/projects/tgo-canopy-ui/assets/icons/rebrand/Analytics-filled.svg +3 -3
  418. package/projects/tgo-canopy-ui/assets/icons/rebrand/Analytics-in-line.svg +3 -3
  419. package/projects/tgo-canopy-ui/assets/icons/rebrand/Archive-filled.svg +3 -3
  420. package/projects/tgo-canopy-ui/assets/icons/rebrand/Archive-in-line.svg +3 -3
  421. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-down-filled.svg +3 -3
  422. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-down-in-line.svg +3 -3
  423. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-left-filled.svg +3 -3
  424. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-left-in-line.svg +3 -3
  425. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-right-filled.svg +3 -3
  426. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-right-in-line.svg +3 -3
  427. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-up-filled.svg +3 -3
  428. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-chevron-up-in-line.svg +3 -3
  429. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-down-filled.svg +3 -3
  430. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-down-in-line.svg +3 -3
  431. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-up-filled.svg +3 -3
  432. package/projects/tgo-canopy-ui/assets/icons/rebrand/Arrow-up-in-line.svg +3 -3
  433. package/projects/tgo-canopy-ui/assets/icons/rebrand/Assessment-filled.svg +3 -3
  434. package/projects/tgo-canopy-ui/assets/icons/rebrand/Assessment-in-line.svg +3 -3
  435. package/projects/tgo-canopy-ui/assets/icons/rebrand/Attach-filled.svg +3 -3
  436. package/projects/tgo-canopy-ui/assets/icons/rebrand/Attach-in-line.svg +3 -3
  437. package/projects/tgo-canopy-ui/assets/icons/rebrand/Attempts-filled.svg +3 -3
  438. package/projects/tgo-canopy-ui/assets/icons/rebrand/Attempts-in-line.svg +3 -3
  439. package/projects/tgo-canopy-ui/assets/icons/rebrand/Book-filled.svg +3 -3
  440. package/projects/tgo-canopy-ui/assets/icons/rebrand/Book-in-line.svg +3 -3
  441. package/projects/tgo-canopy-ui/assets/icons/rebrand/Calendar-filled.svg +3 -3
  442. package/projects/tgo-canopy-ui/assets/icons/rebrand/Calendar-in-line.svg +3 -3
  443. package/projects/tgo-canopy-ui/assets/icons/rebrand/Candidates-filled.svg +3 -3
  444. package/projects/tgo-canopy-ui/assets/icons/rebrand/Candidates-in-line.svg +3 -3
  445. package/projects/tgo-canopy-ui/assets/icons/rebrand/Chat-filled.svg +3 -3
  446. package/projects/tgo-canopy-ui/assets/icons/rebrand/Chat-in-line.svg +3 -3
  447. package/projects/tgo-canopy-ui/assets/icons/rebrand/Check-filled.svg +3 -3
  448. package/projects/tgo-canopy-ui/assets/icons/rebrand/Check-in-line.svg +3 -3
  449. package/projects/tgo-canopy-ui/assets/icons/rebrand/Check-round-filled.svg +3 -3
  450. package/projects/tgo-canopy-ui/assets/icons/rebrand/Check-round-in-line.svg +3 -3
  451. package/projects/tgo-canopy-ui/assets/icons/rebrand/Circle-filled.svg +3 -3
  452. package/projects/tgo-canopy-ui/assets/icons/rebrand/Circle-in-line.svg +3 -3
  453. package/projects/tgo-canopy-ui/assets/icons/rebrand/Clone-filled.svg +3 -3
  454. package/projects/tgo-canopy-ui/assets/icons/rebrand/Clone-in-line.svg +3 -3
  455. package/projects/tgo-canopy-ui/assets/icons/rebrand/Close-filled.svg +3 -3
  456. package/projects/tgo-canopy-ui/assets/icons/rebrand/Close-in-line.svg +3 -3
  457. package/projects/tgo-canopy-ui/assets/icons/rebrand/Close-round-filled.svg +3 -3
  458. package/projects/tgo-canopy-ui/assets/icons/rebrand/Close-round-in-line.svg +3 -3
  459. package/projects/tgo-canopy-ui/assets/icons/rebrand/Code-filled.svg +3 -3
  460. package/projects/tgo-canopy-ui/assets/icons/rebrand/Code-in-line.svg +3 -3
  461. package/projects/tgo-canopy-ui/assets/icons/rebrand/Company-filled.svg +3 -3
  462. package/projects/tgo-canopy-ui/assets/icons/rebrand/Company-in-line.svg +3 -3
  463. package/projects/tgo-canopy-ui/assets/icons/rebrand/Copy-filled.svg +3 -3
  464. package/projects/tgo-canopy-ui/assets/icons/rebrand/Copy-in-line.svg +3 -3
  465. package/projects/tgo-canopy-ui/assets/icons/rebrand/Credit-card-filled.svg +10 -10
  466. package/projects/tgo-canopy-ui/assets/icons/rebrand/Credit-card-in-line.svg +10 -10
  467. package/projects/tgo-canopy-ui/assets/icons/rebrand/Credit-filled.svg +3 -3
  468. package/projects/tgo-canopy-ui/assets/icons/rebrand/Credit-in-line.svg +3 -3
  469. package/projects/tgo-canopy-ui/assets/icons/rebrand/Delete-filled.svg +3 -3
  470. package/projects/tgo-canopy-ui/assets/icons/rebrand/Delete-in-line.svg +3 -3
  471. package/projects/tgo-canopy-ui/assets/icons/rebrand/Device-rotate-in-line.svg +3 -3
  472. package/projects/tgo-canopy-ui/assets/icons/rebrand/Devices-filled.svg +3 -3
  473. package/projects/tgo-canopy-ui/assets/icons/rebrand/Devices-in-line.svg +3 -3
  474. package/projects/tgo-canopy-ui/assets/icons/rebrand/Disconnected-in-line.svg +11 -11
  475. package/projects/tgo-canopy-ui/assets/icons/rebrand/Document-filled.svg +3 -3
  476. package/projects/tgo-canopy-ui/assets/icons/rebrand/Document-in-line.svg +3 -3
  477. package/projects/tgo-canopy-ui/assets/icons/rebrand/Dot-filled.svg +3 -3
  478. package/projects/tgo-canopy-ui/assets/icons/rebrand/Dot-in-line.svg +3 -3
  479. package/projects/tgo-canopy-ui/assets/icons/rebrand/Download-filled.svg +3 -3
  480. package/projects/tgo-canopy-ui/assets/icons/rebrand/Download-in-line.svg +3 -3
  481. package/projects/tgo-canopy-ui/assets/icons/rebrand/Edit-filled.svg +3 -3
  482. package/projects/tgo-canopy-ui/assets/icons/rebrand/Edit-in-line.svg +3 -3
  483. package/projects/tgo-canopy-ui/assets/icons/rebrand/Edit-text-filled.svg +3 -3
  484. package/projects/tgo-canopy-ui/assets/icons/rebrand/Edit-text-in-line.svg +3 -3
  485. package/projects/tgo-canopy-ui/assets/icons/rebrand/Employee-filled.svg +3 -3
  486. package/projects/tgo-canopy-ui/assets/icons/rebrand/Employee-in-line.svg +3 -3
  487. package/projects/tgo-canopy-ui/assets/icons/rebrand/Empty-search-in-line.svg +11 -11
  488. package/projects/tgo-canopy-ui/assets/icons/rebrand/Error-filled.svg +3 -3
  489. package/projects/tgo-canopy-ui/assets/icons/rebrand/Error-in-line.svg +3 -3
  490. package/projects/tgo-canopy-ui/assets/icons/rebrand/Essay-filled.svg +3 -3
  491. package/projects/tgo-canopy-ui/assets/icons/rebrand/Essay-in-line.svg +3 -3
  492. package/projects/tgo-canopy-ui/assets/icons/rebrand/Experience-filled.svg +3 -3
  493. package/projects/tgo-canopy-ui/assets/icons/rebrand/Experience-in-line.svg +3 -3
  494. package/projects/tgo-canopy-ui/assets/icons/rebrand/Facebook-filled.svg +3 -3
  495. package/projects/tgo-canopy-ui/assets/icons/rebrand/Facebook-in-line.svg +3 -3
  496. package/projects/tgo-canopy-ui/assets/icons/rebrand/Failed-to-load-filled.svg +3 -3
  497. package/projects/tgo-canopy-ui/assets/icons/rebrand/Failed-to-load-in-line.svg +3 -3
  498. package/projects/tgo-canopy-ui/assets/icons/rebrand/Fast-forward-filled.svg +3 -3
  499. package/projects/tgo-canopy-ui/assets/icons/rebrand/Fast-forward-in-line.svg +3 -3
  500. package/projects/tgo-canopy-ui/assets/icons/rebrand/Fast-rewind-filled.svg +3 -3
  501. package/projects/tgo-canopy-ui/assets/icons/rebrand/Fast-rewind-in-line.svg +3 -3
  502. package/projects/tgo-canopy-ui/assets/icons/rebrand/Filter-filled.svg +3 -3
  503. package/projects/tgo-canopy-ui/assets/icons/rebrand/Filter-in-line.svg +3 -3
  504. package/projects/tgo-canopy-ui/assets/icons/rebrand/Fire-filled.svg +3 -3
  505. package/projects/tgo-canopy-ui/assets/icons/rebrand/Fire-in-line.svg +3 -3
  506. package/projects/tgo-canopy-ui/assets/icons/rebrand/Flag-filled.svg +3 -3
  507. package/projects/tgo-canopy-ui/assets/icons/rebrand/Flag-in-line.svg +3 -3
  508. package/projects/tgo-canopy-ui/assets/icons/rebrand/Folder-filled.svg +3 -3
  509. package/projects/tgo-canopy-ui/assets/icons/rebrand/Folder-in-line.svg +3 -3
  510. package/projects/tgo-canopy-ui/assets/icons/rebrand/Full-screen-filled.svg +3 -3
  511. package/projects/tgo-canopy-ui/assets/icons/rebrand/Full-screen-in-line.svg +3 -3
  512. package/projects/tgo-canopy-ui/assets/icons/rebrand/Gender-female-filled.svg +3 -3
  513. package/projects/tgo-canopy-ui/assets/icons/rebrand/Gender-female-in-line.svg +3 -3
  514. package/projects/tgo-canopy-ui/assets/icons/rebrand/Gender-male-filled.svg +3 -3
  515. package/projects/tgo-canopy-ui/assets/icons/rebrand/Gender-male-in-line.svg +3 -3
  516. package/projects/tgo-canopy-ui/assets/icons/rebrand/Gift-filled.svg +3 -3
  517. package/projects/tgo-canopy-ui/assets/icons/rebrand/Gift-in-line.svg +3 -3
  518. package/projects/tgo-canopy-ui/assets/icons/rebrand/Google-filled.svg +6 -6
  519. package/projects/tgo-canopy-ui/assets/icons/rebrand/Google-in-line.svg +6 -6
  520. package/projects/tgo-canopy-ui/assets/icons/rebrand/Grab-filled.svg +3 -3
  521. package/projects/tgo-canopy-ui/assets/icons/rebrand/Grab-in-line.svg +3 -3
  522. package/projects/tgo-canopy-ui/assets/icons/rebrand/Help-filled.svg +3 -3
  523. package/projects/tgo-canopy-ui/assets/icons/rebrand/Help-in-line.svg +3 -3
  524. package/projects/tgo-canopy-ui/assets/icons/rebrand/Hide-filled.svg +3 -3
  525. package/projects/tgo-canopy-ui/assets/icons/rebrand/Hide-in-line.svg +3 -3
  526. package/projects/tgo-canopy-ui/assets/icons/rebrand/History-filled.svg +3 -3
  527. package/projects/tgo-canopy-ui/assets/icons/rebrand/History-in-line.svg +3 -3
  528. package/projects/tgo-canopy-ui/assets/icons/rebrand/ID-failed-filled.svg +3 -3
  529. package/projects/tgo-canopy-ui/assets/icons/rebrand/ID-failed-in-line.svg +5 -5
  530. package/projects/tgo-canopy-ui/assets/icons/rebrand/ID-not-verified-filled.svg +3 -3
  531. package/projects/tgo-canopy-ui/assets/icons/rebrand/ID-not-verified-in-line.svg +4 -4
  532. package/projects/tgo-canopy-ui/assets/icons/rebrand/ID-verified-filled.svg +3 -3
  533. package/projects/tgo-canopy-ui/assets/icons/rebrand/ID-verified-in-line.svg +4 -4
  534. package/projects/tgo-canopy-ui/assets/icons/rebrand/Image-filled.svg +3 -3
  535. package/projects/tgo-canopy-ui/assets/icons/rebrand/Image-in-line.svg +3 -3
  536. package/projects/tgo-canopy-ui/assets/icons/rebrand/Info-filled.svg +3 -3
  537. package/projects/tgo-canopy-ui/assets/icons/rebrand/Info-in-line.svg +3 -3
  538. package/projects/tgo-canopy-ui/assets/icons/rebrand/Instagram-filled.svg +3 -3
  539. package/projects/tgo-canopy-ui/assets/icons/rebrand/Instagram-in-line.svg +3 -3
  540. package/projects/tgo-canopy-ui/assets/icons/rebrand/Integration-filled.svg +3 -3
  541. package/projects/tgo-canopy-ui/assets/icons/rebrand/Integration-in-line.svg +3 -3
  542. package/projects/tgo-canopy-ui/assets/icons/rebrand/Invite-filled.svg +3 -3
  543. package/projects/tgo-canopy-ui/assets/icons/rebrand/Invite-in-line.svg +3 -3
  544. package/projects/tgo-canopy-ui/assets/icons/rebrand/Invoice-filled.svg +3 -3
  545. package/projects/tgo-canopy-ui/assets/icons/rebrand/Invoice-in-line.svg +3 -3
  546. package/projects/tgo-canopy-ui/assets/icons/rebrand/Language-filled.svg +3 -3
  547. package/projects/tgo-canopy-ui/assets/icons/rebrand/Language-in-line.svg +3 -3
  548. package/projects/tgo-canopy-ui/assets/icons/rebrand/Layout-filled.svg +3 -3
  549. package/projects/tgo-canopy-ui/assets/icons/rebrand/Layout-in-line.svg +3 -3
  550. package/projects/tgo-canopy-ui/assets/icons/rebrand/Learn-filled.svg +3 -3
  551. package/projects/tgo-canopy-ui/assets/icons/rebrand/Learn-in-line.svg +3 -3
  552. package/projects/tgo-canopy-ui/assets/icons/rebrand/Level-filled.svg +3 -3
  553. package/projects/tgo-canopy-ui/assets/icons/rebrand/Level-in-line.svg +3 -3
  554. package/projects/tgo-canopy-ui/assets/icons/rebrand/Light-bulb-filled.svg +3 -3
  555. package/projects/tgo-canopy-ui/assets/icons/rebrand/Light-bulb-in-line.svg +3 -3
  556. package/projects/tgo-canopy-ui/assets/icons/rebrand/Link-filled.svg +3 -3
  557. package/projects/tgo-canopy-ui/assets/icons/rebrand/Link-in-line.svg +3 -3
  558. package/projects/tgo-canopy-ui/assets/icons/rebrand/Linkedin-filled.svg +3 -3
  559. package/projects/tgo-canopy-ui/assets/icons/rebrand/Linkedin-in-line.svg +3 -3
  560. package/projects/tgo-canopy-ui/assets/icons/rebrand/Localization-filled.svg +3 -3
  561. package/projects/tgo-canopy-ui/assets/icons/rebrand/Localization-in-line.svg +3 -3
  562. package/projects/tgo-canopy-ui/assets/icons/rebrand/Location-filled.svg +3 -3
  563. package/projects/tgo-canopy-ui/assets/icons/rebrand/Location-in-line.svg +3 -3
  564. package/projects/tgo-canopy-ui/assets/icons/rebrand/Lock-filled.svg +3 -3
  565. package/projects/tgo-canopy-ui/assets/icons/rebrand/Lock-in-line.svg +3 -3
  566. package/projects/tgo-canopy-ui/assets/icons/rebrand/Logout-filled.svg +3 -3
  567. package/projects/tgo-canopy-ui/assets/icons/rebrand/Logout-in-line.svg +3 -3
  568. package/projects/tgo-canopy-ui/assets/icons/rebrand/Lost-found-404-in-line.svg +11 -11
  569. package/projects/tgo-canopy-ui/assets/icons/rebrand/Medal-filled.svg +3 -3
  570. package/projects/tgo-canopy-ui/assets/icons/rebrand/Medal-in-line.svg +3 -3
  571. package/projects/tgo-canopy-ui/assets/icons/rebrand/Menu-burger-filled.svg +3 -3
  572. package/projects/tgo-canopy-ui/assets/icons/rebrand/Menu-burger-in-line.svg +3 -3
  573. package/projects/tgo-canopy-ui/assets/icons/rebrand/Menu-close-filled.svg +3 -3
  574. package/projects/tgo-canopy-ui/assets/icons/rebrand/Menu-close-in-line.svg +3 -3
  575. package/projects/tgo-canopy-ui/assets/icons/rebrand/Menu-ellipsis-filled.svg +3 -3
  576. package/projects/tgo-canopy-ui/assets/icons/rebrand/Menu-ellipsis-in-line.svg +3 -3
  577. package/projects/tgo-canopy-ui/assets/icons/rebrand/Menu-open-filled.svg +3 -3
  578. package/projects/tgo-canopy-ui/assets/icons/rebrand/Menu-open-in-line.svg +3 -3
  579. package/projects/tgo-canopy-ui/assets/icons/rebrand/Messages-in-line.svg +3 -3
  580. package/projects/tgo-canopy-ui/assets/icons/rebrand/Mic-filled.svg +3 -3
  581. package/projects/tgo-canopy-ui/assets/icons/rebrand/Mic-in-line.svg +3 -3
  582. package/projects/tgo-canopy-ui/assets/icons/rebrand/Microsoft-filled.svg +6 -6
  583. package/projects/tgo-canopy-ui/assets/icons/rebrand/Microsoft-in-line.svg +6 -6
  584. package/projects/tgo-canopy-ui/assets/icons/rebrand/Minimize-filled.svg +3 -3
  585. package/projects/tgo-canopy-ui/assets/icons/rebrand/Minimize-in-line.svg +3 -3
  586. package/projects/tgo-canopy-ui/assets/icons/rebrand/Minus-filled.svg +3 -3
  587. package/projects/tgo-canopy-ui/assets/icons/rebrand/Minus-in-line.svg +3 -3
  588. package/projects/tgo-canopy-ui/assets/icons/rebrand/Mouse-filled.svg +3 -3
  589. package/projects/tgo-canopy-ui/assets/icons/rebrand/Mouse-in-line.svg +3 -3
  590. package/projects/tgo-canopy-ui/assets/icons/rebrand/Multi-choice-filled.svg +3 -3
  591. package/projects/tgo-canopy-ui/assets/icons/rebrand/Multi-choice-in-line.svg +3 -3
  592. package/projects/tgo-canopy-ui/assets/icons/rebrand/Notification-bell-filled.svg +3 -3
  593. package/projects/tgo-canopy-ui/assets/icons/rebrand/Notification-bell-in-line.svg +3 -3
  594. package/projects/tgo-canopy-ui/assets/icons/rebrand/Open-in-new-filled.svg +3 -3
  595. package/projects/tgo-canopy-ui/assets/icons/rebrand/Open-in-new-in-line.svg +3 -3
  596. package/projects/tgo-canopy-ui/assets/icons/rebrand/Open-lock-filled.svg +3 -3
  597. package/projects/tgo-canopy-ui/assets/icons/rebrand/Open-lock-in-line.svg +3 -3
  598. package/projects/tgo-canopy-ui/assets/icons/rebrand/Password-filled.svg +3 -3
  599. package/projects/tgo-canopy-ui/assets/icons/rebrand/Password-in-line.svg +3 -3
  600. package/projects/tgo-canopy-ui/assets/icons/rebrand/Path-filled.svg +3 -3
  601. package/projects/tgo-canopy-ui/assets/icons/rebrand/Path-in-line.svg +3 -3
  602. package/projects/tgo-canopy-ui/assets/icons/rebrand/Pause-filled.svg +3 -3
  603. package/projects/tgo-canopy-ui/assets/icons/rebrand/Pause-in-line.svg +3 -3
  604. package/projects/tgo-canopy-ui/assets/icons/rebrand/Pencil-to-gorilla-filled.svg +1 -1
  605. package/projects/tgo-canopy-ui/assets/icons/rebrand/Pencil-to-gorilla-in-line.svg +1 -1
  606. package/projects/tgo-canopy-ui/assets/icons/rebrand/Pin-marker-filled.svg +4 -4
  607. package/projects/tgo-canopy-ui/assets/icons/rebrand/Pin-marker-in-line.svg +4 -4
  608. package/projects/tgo-canopy-ui/assets/icons/rebrand/Plan-billing-filled.svg +3 -3
  609. package/projects/tgo-canopy-ui/assets/icons/rebrand/Plan-billing-in-line.svg +3 -3
  610. package/projects/tgo-canopy-ui/assets/icons/rebrand/Play-filled.svg +3 -3
  611. package/projects/tgo-canopy-ui/assets/icons/rebrand/Play-in-line.svg +3 -3
  612. package/projects/tgo-canopy-ui/assets/icons/rebrand/Plus-filled.svg +3 -3
  613. package/projects/tgo-canopy-ui/assets/icons/rebrand/Plus-in-line.svg +3 -3
  614. package/projects/tgo-canopy-ui/assets/icons/rebrand/Premium-circle-in-line.svg +5 -5
  615. package/projects/tgo-canopy-ui/assets/icons/rebrand/Premium-filled.svg +3 -3
  616. package/projects/tgo-canopy-ui/assets/icons/rebrand/Premium-in-line.svg +3 -3
  617. package/projects/tgo-canopy-ui/assets/icons/rebrand/Question-count-filled.svg +3 -3
  618. package/projects/tgo-canopy-ui/assets/icons/rebrand/Question-count-in-line.svg +3 -3
  619. package/projects/tgo-canopy-ui/assets/icons/rebrand/Question-filled.svg +3 -3
  620. package/projects/tgo-canopy-ui/assets/icons/rebrand/Question-in-line.svg +3 -3
  621. package/projects/tgo-canopy-ui/assets/icons/rebrand/Record-filled.svg +3 -3
  622. package/projects/tgo-canopy-ui/assets/icons/rebrand/Record-in-line.svg +3 -3
  623. package/projects/tgo-canopy-ui/assets/icons/rebrand/Refer-filled.svg +3 -3
  624. package/projects/tgo-canopy-ui/assets/icons/rebrand/Refer-in-line.svg +3 -3
  625. package/projects/tgo-canopy-ui/assets/icons/rebrand/Reject-filled.svg +3 -3
  626. package/projects/tgo-canopy-ui/assets/icons/rebrand/Reject-in-line.svg +3 -3
  627. package/projects/tgo-canopy-ui/assets/icons/rebrand/Reset-filled.svg +3 -3
  628. package/projects/tgo-canopy-ui/assets/icons/rebrand/Reset-in-line.svg +3 -3
  629. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-1-filled.svg +3 -3
  630. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-1-in-line.svg +3 -3
  631. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-2-filled.svg +3 -3
  632. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-2-in-line.svg +3 -3
  633. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-3-filled.svg +3 -3
  634. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-3-in-line.svg +3 -3
  635. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-4-filled.svg +3 -3
  636. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-4-in-line.svg +3 -3
  637. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-5-filled.svg +3 -3
  638. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-emoji-5-in-line.svg +3 -3
  639. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-filled.svg +3 -3
  640. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-half-star-filled.svg +4 -4
  641. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-half-star-in-line.svg +4 -4
  642. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-in-line.svg +3 -3
  643. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-star-filled-disabled.svg +4 -4
  644. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-star-filled.svg +4 -4
  645. package/projects/tgo-canopy-ui/assets/icons/rebrand/Review-star-in-line.svg +4 -4
  646. package/projects/tgo-canopy-ui/assets/icons/rebrand/Round-check-in-line.svg +4 -4
  647. package/projects/tgo-canopy-ui/assets/icons/rebrand/Search-filled.svg +3 -3
  648. package/projects/tgo-canopy-ui/assets/icons/rebrand/Search-in-line.svg +3 -3
  649. package/projects/tgo-canopy-ui/assets/icons/rebrand/Secure-filled.svg +3 -3
  650. package/projects/tgo-canopy-ui/assets/icons/rebrand/Secure-in-line.svg +3 -3
  651. package/projects/tgo-canopy-ui/assets/icons/rebrand/Send-filled.svg +3 -3
  652. package/projects/tgo-canopy-ui/assets/icons/rebrand/Send-in-line.svg +3 -3
  653. package/projects/tgo-canopy-ui/assets/icons/rebrand/Settings-filled.svg +3 -3
  654. package/projects/tgo-canopy-ui/assets/icons/rebrand/Settings-in-line.svg +3 -3
  655. package/projects/tgo-canopy-ui/assets/icons/rebrand/Share-filled.svg +3 -3
  656. package/projects/tgo-canopy-ui/assets/icons/rebrand/Share-in-line.svg +3 -3
  657. package/projects/tgo-canopy-ui/assets/icons/rebrand/Skip-next-filled.svg +3 -3
  658. package/projects/tgo-canopy-ui/assets/icons/rebrand/Skip-next-in-line.svg +3 -3
  659. package/projects/tgo-canopy-ui/assets/icons/rebrand/Skip-previous-filled.svg +3 -3
  660. package/projects/tgo-canopy-ui/assets/icons/rebrand/Skip-previous-in-line.svg +3 -3
  661. package/projects/tgo-canopy-ui/assets/icons/rebrand/Sparkle-filled.svg +12 -12
  662. package/projects/tgo-canopy-ui/assets/icons/rebrand/Sparkle-in-line.svg +12 -12
  663. package/projects/tgo-canopy-ui/assets/icons/rebrand/Speedometer-filled.svg +3 -3
  664. package/projects/tgo-canopy-ui/assets/icons/rebrand/Speedometer-in-line.svg +3 -3
  665. package/projects/tgo-canopy-ui/assets/icons/rebrand/Star-filled.svg +5 -5
  666. package/projects/tgo-canopy-ui/assets/icons/rebrand/Star-in-line.svg +5 -5
  667. package/projects/tgo-canopy-ui/assets/icons/rebrand/Stop-filled.svg +3 -3
  668. package/projects/tgo-canopy-ui/assets/icons/rebrand/Stop-in-line.svg +3 -3
  669. package/projects/tgo-canopy-ui/assets/icons/rebrand/Switch-filled.svg +3 -3
  670. package/projects/tgo-canopy-ui/assets/icons/rebrand/Switch-in-line.svg +3 -3
  671. package/projects/tgo-canopy-ui/assets/icons/rebrand/Switch-tab-filled.svg +3 -3
  672. package/projects/tgo-canopy-ui/assets/icons/rebrand/Switch-tab-in-line.svg +3 -3
  673. package/projects/tgo-canopy-ui/assets/icons/rebrand/Sync-filled.svg +3 -3
  674. package/projects/tgo-canopy-ui/assets/icons/rebrand/Sync-in-line.svg +3 -3
  675. package/projects/tgo-canopy-ui/assets/icons/rebrand/Tag-filled.svg +3 -3
  676. package/projects/tgo-canopy-ui/assets/icons/rebrand/Tag-in-line.svg +3 -3
  677. package/projects/tgo-canopy-ui/assets/icons/rebrand/Team-filled.svg +3 -3
  678. package/projects/tgo-canopy-ui/assets/icons/rebrand/Team-in-line.svg +3 -3
  679. package/projects/tgo-canopy-ui/assets/icons/rebrand/Test-filled.svg +3 -3
  680. package/projects/tgo-canopy-ui/assets/icons/rebrand/Test-in-line.svg +3 -3
  681. package/projects/tgo-canopy-ui/assets/icons/rebrand/TestGorilla-Pink-filled.svg +11 -11
  682. package/projects/tgo-canopy-ui/assets/icons/rebrand/TestGorilla-Pink-in-line.svg +11 -11
  683. package/projects/tgo-canopy-ui/assets/icons/rebrand/TestGorilla-filled.svg +11 -11
  684. package/projects/tgo-canopy-ui/assets/icons/rebrand/TestGorilla-in-line.svg +11 -11
  685. package/projects/tgo-canopy-ui/assets/icons/rebrand/Thumb-down-filled.svg +3 -3
  686. package/projects/tgo-canopy-ui/assets/icons/rebrand/Thumb-down-in-line.svg +3 -3
  687. package/projects/tgo-canopy-ui/assets/icons/rebrand/Thumb-up-filled.svg +3 -3
  688. package/projects/tgo-canopy-ui/assets/icons/rebrand/Thumb-up-in-line.svg +3 -3
  689. package/projects/tgo-canopy-ui/assets/icons/rebrand/Timer-filled.svg +3 -3
  690. package/projects/tgo-canopy-ui/assets/icons/rebrand/Timer-in-line.svg +3 -3
  691. package/projects/tgo-canopy-ui/assets/icons/rebrand/Trophy-filled.svg +3 -3
  692. package/projects/tgo-canopy-ui/assets/icons/rebrand/Trophy-in-line.svg +3 -3
  693. package/projects/tgo-canopy-ui/assets/icons/rebrand/Type-filled.svg +3 -3
  694. package/projects/tgo-canopy-ui/assets/icons/rebrand/Type-in-line.svg +3 -3
  695. package/projects/tgo-canopy-ui/assets/icons/rebrand/Unarchive-filled.svg +3 -3
  696. package/projects/tgo-canopy-ui/assets/icons/rebrand/Unarchive-in-line.svg +3 -3
  697. package/projects/tgo-canopy-ui/assets/icons/rebrand/Unlock-filled.svg +3 -3
  698. package/projects/tgo-canopy-ui/assets/icons/rebrand/Unlock-in-line.svg +3 -3
  699. package/projects/tgo-canopy-ui/assets/icons/rebrand/Upgrade-filled.svg +3 -3
  700. package/projects/tgo-canopy-ui/assets/icons/rebrand/Upgrade-in-line.svg +3 -3
  701. package/projects/tgo-canopy-ui/assets/icons/rebrand/Upload-filled.svg +3 -3
  702. package/projects/tgo-canopy-ui/assets/icons/rebrand/Upload-in-line.svg +3 -3
  703. package/projects/tgo-canopy-ui/assets/icons/rebrand/User-access-filled.svg +3 -3
  704. package/projects/tgo-canopy-ui/assets/icons/rebrand/User-access-in-line.svg +3 -3
  705. package/projects/tgo-canopy-ui/assets/icons/rebrand/User-add-filled.svg +3 -3
  706. package/projects/tgo-canopy-ui/assets/icons/rebrand/User-add-in-line.svg +3 -3
  707. package/projects/tgo-canopy-ui/assets/icons/rebrand/User-profile-filled.svg +3 -3
  708. package/projects/tgo-canopy-ui/assets/icons/rebrand/User-profile-in-line.svg +3 -3
  709. package/projects/tgo-canopy-ui/assets/icons/rebrand/Validated-filled.svg +3 -3
  710. package/projects/tgo-canopy-ui/assets/icons/rebrand/Validated-in-line.svg +3 -3
  711. package/projects/tgo-canopy-ui/assets/icons/rebrand/Verified-badge-filled.svg +23 -23
  712. package/projects/tgo-canopy-ui/assets/icons/rebrand/Verified-badge-in-line.svg +23 -23
  713. package/projects/tgo-canopy-ui/assets/icons/rebrand/Video-filled.svg +3 -3
  714. package/projects/tgo-canopy-ui/assets/icons/rebrand/Video-in-line.svg +3 -3
  715. package/projects/tgo-canopy-ui/assets/icons/rebrand/View-filled.svg +3 -3
  716. package/projects/tgo-canopy-ui/assets/icons/rebrand/View-in-line.svg +3 -3
  717. package/projects/tgo-canopy-ui/assets/icons/rebrand/Volume-filled.svg +3 -3
  718. package/projects/tgo-canopy-ui/assets/icons/rebrand/Volume-in-line.svg +3 -3
  719. package/projects/tgo-canopy-ui/assets/icons/rebrand/Warning-filled.svg +3 -3
  720. package/projects/tgo-canopy-ui/assets/icons/rebrand/Warning-in-line.svg +3 -3
  721. package/projects/tgo-canopy-ui/assets/icons/rebrand/Zoom-in-filled.svg +3 -3
  722. package/projects/tgo-canopy-ui/assets/icons/rebrand/Zoom-in-in-line.svg +3 -3
  723. package/projects/tgo-canopy-ui/assets/icons/rebrand/Zoom-out-filled.svg +3 -3
  724. package/projects/tgo-canopy-ui/assets/icons/rebrand/Zoom-out-in-line.svg +3 -3
  725. package/projects/tgo-canopy-ui/assets/images/empty-state-default.svg +9 -9
  726. package/projects/tgo-canopy-ui/assets/images/poweredbyTG.svg +37 -37
  727. package/projects/tgo-canopy-ui/assets/images/premium.svg +5 -5
  728. package/projects/tgo-canopy-ui/assets/images/rebrand-last-step-icon-black.svg +3 -3
  729. package/projects/tgo-canopy-ui/assets/images/rebrand-last-step-icon-light.svg +3 -3
  730. package/projects/tgo-canopy-ui/assets/images/rebrand-logo/powered-by.svg +22 -22
  731. package/projects/tgo-canopy-ui/assets/images/rebrand-logo/primary_brandmark_pink.svg +10 -10
  732. package/projects/tgo-canopy-ui/assets/images/rebrand-logo/primary_lockup_pink.svg +22 -22
  733. package/projects/tgo-canopy-ui/assets/images/rebrand-logo/primary_wordmark_pink.svg +21 -21
  734. package/projects/tgo-canopy-ui/assets/images/rebrand-logo/secondary_brandmark_black.svg +11 -11
  735. package/projects/tgo-canopy-ui/assets/images/rebrand-logo/secondary_brandmark_cream.svg +11 -11
  736. package/projects/tgo-canopy-ui/assets/images/rebrand-logo/secondary_lockup_black.svg +23 -23
  737. package/projects/tgo-canopy-ui/assets/images/rebrand-logo/secondary_lockup_cream.svg +23 -23
  738. package/projects/tgo-canopy-ui/assets/images/rebrand-logo/secondary_wordmark_black.svg +21 -21
  739. package/projects/tgo-canopy-ui/assets/images/rebrand-logo/secondary_wordmark_cream.svg +21 -21
  740. package/projects/tgo-canopy-ui/assets/images/reverseTG.svg +84 -84
  741. package/projects/tgo-canopy-ui/assets/images/step-finish.svg +6 -6
  742. package/projects/tgo-canopy-ui/assets/images/testgorilla.svg +76 -76
  743. package/projects/tgo-canopy-ui/theme/_alert-bars.scss +110 -110
  744. package/projects/tgo-canopy-ui/theme/_breakpoints-mixin.scss +12 -12
  745. package/projects/tgo-canopy-ui/theme/_button.scss +72 -72
  746. package/projects/tgo-canopy-ui/theme/_core.scss +19 -19
  747. package/projects/tgo-canopy-ui/theme/_font.scss +95 -95
  748. package/projects/tgo-canopy-ui/theme/_icon.scss +5 -5
  749. package/projects/tgo-canopy-ui/theme/_input.scss +575 -575
  750. package/projects/tgo-canopy-ui/theme/_lib-styles.scss +35 -35
  751. package/projects/tgo-canopy-ui/theme/_mat-menu.scss +8 -8
  752. package/projects/tgo-canopy-ui/theme/_mat-paginator.scss +59 -59
  753. package/projects/tgo-canopy-ui/theme/_palette.scss +108 -108
  754. package/projects/tgo-canopy-ui/theme/_tooltip.scss +320 -320
  755. package/projects/tgo-canopy-ui/theme/_typography.scss +271 -271
  756. package/projects/tgo-canopy-ui/theme/_variables.scss +167 -167
  757. package/projects/tgo-canopy-ui/theme/line-clamp.scss +8 -8
  758. package/projects/tgo-canopy-ui/theme/theme.scss +68 -68
@@ -210,7 +210,7 @@ export class TableComponent {
210
210
  this.tableData = data;
211
211
  }
212
212
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableComponent, deps: [{ token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }, { token: i0.DestroyRef }, { token: IS_MOBILE_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
213
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TableComponent, selector: "ui-table", inputs: { config: "config", data: "data", loading: "loading", applicationTheme: "applicationTheme", tableDetailColumns: "tableDetailColumns", tableDetails: "tableDetails", disableBorderRadius: "disableBorderRadius", isCondensed: "isCondensed", stickyHeader: "stickyHeader", maxHeight: "maxHeight" }, 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 [class.sticky-header]=\"stickyHeader\"\n [style.--table-max-height]=\"maxHeight\">\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, rowIndex); 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, rowIndex); 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, rowIndex); 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, rowIndex); 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; sticky: stickyHeader\" [class.is-title-present]=\"tableConfig.title\"></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.sticky-header{max-height:var(--table-max-height);overflow-y:auto}.table-container .table-wrapper table.main-table{width:100%;box-shadow:unset}.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 tr.is-title-present th.mat-mdc-header-cell.mdc-data-table__header-cell{border-top:1px solid #E0E0E0}.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 #24242414!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 #24242414!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: ["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]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i4.SkeletonComponent, selector: "ui-skeleton", inputs: ["count", "theme", "appearance", "isAiTheme", "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", "iconFilled"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "directive", type: i7.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i7.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i8.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "toggleIconStyle", "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: [
213
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TableComponent, selector: "ui-table", inputs: { config: "config", data: "data", loading: "loading", applicationTheme: "applicationTheme", tableDetailColumns: "tableDetailColumns", tableDetails: "tableDetails", disableBorderRadius: "disableBorderRadius", isCondensed: "isCondensed", stickyHeader: "stickyHeader", maxHeight: "maxHeight" }, 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 [class.sticky-header]=\"stickyHeader\"\r\n [style.--table-max-height]=\"maxHeight\">\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, rowIndex); 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, rowIndex); 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, rowIndex); 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, rowIndex); 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; sticky: stickyHeader\" [class.is-title-present]=\"tableConfig.title\"></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.sticky-header{max-height:var(--table-max-height);overflow-y:auto}.table-container .table-wrapper table.main-table{width:100%;box-shadow:unset}.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 tr.is-title-present th.mat-mdc-header-cell.mdc-data-table__header-cell{border-top:1px solid #E0E0E0}.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 #24242414!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 #24242414!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: ["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]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i4.SkeletonComponent, selector: "ui-skeleton", inputs: ["count", "theme", "appearance", "isAiTheme", "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", "iconFilled"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "directive", type: i7.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i7.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i8.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "toggleIconStyle", "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: [
214
214
  trigger('expandDetail', [
215
215
  state('collapsed, void', style({ height: '0px' })),
216
216
  state('expanded', style({ height: '*' })),
@@ -228,7 +228,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
228
228
  transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
229
229
  transition('expanded <=> void', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
230
230
  ]),
231
- ], 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 [class.sticky-header]=\"stickyHeader\"\n [style.--table-max-height]=\"maxHeight\">\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, rowIndex); 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, rowIndex); 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, rowIndex); 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, rowIndex); 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; sticky: stickyHeader\" [class.is-title-present]=\"tableConfig.title\"></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.sticky-header{max-height:var(--table-max-height);overflow-y:auto}.table-container .table-wrapper table.main-table{width:100%;box-shadow:unset}.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 tr.is-title-present th.mat-mdc-header-cell.mdc-data-table__header-cell{border-top:1px solid #E0E0E0}.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 #24242414!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 #24242414!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"] }]
231
+ ], 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 [class.sticky-header]=\"stickyHeader\"\r\n [style.--table-max-height]=\"maxHeight\">\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, rowIndex); 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, rowIndex); 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, rowIndex); 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, rowIndex); 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; sticky: stickyHeader\" [class.is-title-present]=\"tableConfig.title\"></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.sticky-header{max-height:var(--table-max-height);overflow-y:auto}.table-container .table-wrapper table.main-table{width:100%;box-shadow:unset}.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 tr.is-title-present th.mat-mdc-header-cell.mdc-data-table__header-cell{border-top:1px solid #E0E0E0}.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 #24242414!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 #24242414!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"] }]
232
232
  }], ctorParameters: () => [{ type: undefined, decorators: [{
233
233
  type: Optional
234
234
  }, {
@@ -270,4 +270,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
270
270
  type: ViewChild,
271
271
  args: ['table']
272
272
  }] } });
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFHVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsVUFBVSxHQVVYLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQWdCNUQsTUFBTSxPQUFPLGNBQWM7SUFzR3pCLFlBQzZFLGVBQWlDLEVBQ3BHLFVBQXNCLEVBQ2MsU0FBOEI7UUFGQyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFDcEcsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNjLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBeEY1RTs7Ozs7O1dBTUc7UUFDTSxZQUFPLEdBQUcs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LGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFFYSxLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBEZXN0cm95UmVmLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbHVtbkVsbGlwc2UsXG4gIENvbHVtblR5cGUsXG4gIENvbXBvbmVudFJlbmRlcmVyLFxuICBEYXRhU291cmNlLFxuICBQYWdpbmF0aW9uLFxuICBTY3JvbGxTZXR0aW5ncyxcbiAgVGFibGVDb2x1bW4sXG4gIFRhYmxlQ29uZmlnLFxuICBUYWJsZUNvbmZpZ1dpdGhQYWdpbmF0aW9uLFxuICBUYWJsZURhdGEsXG4gIFRhYmxlRGV0YWlsQ29sdW1uLFxufSBmcm9tICcuL3RhYmxlLm1vZGVsJztcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblRoZW1lIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uLXRoZW1lLm1vZGVsJztcbmltcG9ydCB7IHNvcnRCeU9yZGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvdGFibGUudXRpbHMnO1xuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgSVNfTU9CSUxFX1RPS0VOIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2lzLW1vYmlsZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdleHBhbmREZXRhaWwnLCBbXG4gICAgICBzdGF0ZSgnY29sbGFwc2VkLCB2b2lkJywgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnIH0pKSxcbiAgICAgIHN0YXRlKCdleHBhbmRlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnKicgfSkpLFxuICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPD0+IGNvbGxhcHNlZCcsIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpKSxcbiAgICAgIHRyYW5zaXRpb24oJ2V4cGFuZGVkIDw9PiB2b2lkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxuICAgIF0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudDxUIGV4dGVuZHMgRGF0YVNvdXJjZSwgVERldGFpbCBleHRlbmRzIERhdGFTb3VyY2U+IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgLyoqXG4gICAqIFRhYmxlIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQHR5cGUge1RhYmxlQ29uZmlnfVxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGNvbmZpZzogVGFibGVDb25maWdXaXRoUGFnaW5hdGlvbjxUPjtcblxuICAvKipcbiAgICogSW5wdXQgcHJvcGVydHkgZm9yIHByb3ZpZGluZyB0aGUgdGFibGUgZGF0YS5cbiAgICpcbiAgICogQHR5cGUge1RhYmxlRGF0YX1cbiAgICogQG1lbWJlcm9mIFRhYmxlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBkYXRhOiBUYWJsZURhdGE7XG5cbiAgLyoqXG4gICAqIElucHV0IHByb3BlcnR5IGluZGljYXRpbmcgd2hldGhlciB0aGUgdGFibGUgaXMgaW4gYSBsb2FkaW5nIHN0YXRlLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIFRhYmxlQ29tcG9uZW50XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqXG4gICAqIERlZmluZXMgdGhlIGFwcGxpY2F0aW9uIHRoZW1lXG4gICAqIEB0eXBlIHtBcHBsaWNhdGlvblRoZW1lfVxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFwcGxpY2F0aW9uVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUgPSAnbGlnaHQnO1xuXG4gIC8qKlxuICAgKiBEYXRhIHN0cnVjdHVyZSB0byBzZWxlY3Qgd2hpY2ggY29sdW1ucyBzaG91bGQgYmUgcmVuZGVyZWQgYW5kIHRoZWlyIGNhcGFiaWxpdGllc1xuICAgKlxuICAgKiBAdHlwZSB7VGFibGVEZXRhaWxDb2x1bW59XG4gICAqIEBtZW1iZXJvZiBUYWJsZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgdGFibGVEZXRhaWxDb2x1bW5zOiBUYWJsZURldGFpbENvbHVtbjxULCBURGV0YWlsPjtcbiAgQElucHV0KCkgdGFibGVEZXRhaWxzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERpc2FibGUgYm9yZGVyIHJhZGl1cyBmb3IgdGFibGVcbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBUYWJsZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZUJvcmRlclJhZGl1cyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBDb25kZW5zZWQgdGFibGVcbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBUYWJsZUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgaXNDb25kZW5zZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogU3RpY2t5IGhlYWRlclxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIFRhYmxlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzdGlja3lIZWFkZXIgPSBmYWxzZTtcblxuICAvKipcbiAgICogTWF4IGhlaWdodFxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIG1heEhlaWdodCA9ICc1NzZweCc7XG5cbiAgQE91dHB1dCgpIG9uUm93Q2xpY2tFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uRGV0YWlsUm93Q2xpY2tFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHBhZ2luYXRvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgc29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydD4oKTtcblxuICBAVmlld0NoaWxkKCd0YWJsZScpIHRhYmxlOiBFbGVtZW50UmVmO1xuXG4gIHByb3RlY3RlZCB0YWJsZURhdGE6IFRhYmxlRGF0YTtcbiAgcHJvdGVjdGVkIHNvdXJjZURhdGE6IFRhYmxlRGF0YTtcbiAgcHJvdGVjdGVkIGNvbHVtbnNUb29sdGlwU3RhdGU6IENvbHVtbkVsbGlwc2VbXSA9IFtdO1xuICBwcm90ZWN0ZWQgdGFibGVDb25maWc6IFRhYmxlQ29uZmlnV2l0aFBhZ2luYXRpb248VD47XG4gIHByb3RlY3RlZCBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuICBwcm90ZWN0ZWQgY29sdW1uc0RldGFpbFRvRGlzcGxheTogc3RyaW5nW10gPSBbXTtcbiAgcHJvdGVjdGVkIHNrZWxldG9uU3R5bGVDb25maWcgPSB7XG4gICAgYmFja2dyb3VuZDogJyNGNkY2RjYnLFxuICAgICdib3JkZXItcmFkaXVzJzogJzRweCcsXG4gICAgaGVpZ2h0OiAnMjRweCcsXG4gIH07XG4gIHByb3RlY3RlZCBkYXRhU291cmNlRGV0YWlsID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnk+KFtdKTtcbiAgcHJvdGVjdGVkIGVsZW1lbnREZXRhaWw6IGFueTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IERhdGFUeXBlID0gQ29sdW1uVHlwZTtcbiAgcHJvdGVjdGVkIHNjcm9sbFNldHRpbmdzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2Nyb2xsU2V0dGluZ3M+KHtcbiAgICBzY3JvbGxFbmQ6IGZhbHNlLFxuICAgIGhvcml6b250YWxTY3JvbGw6IGZhbHNlLFxuICAgIHNjcm9sbFN0YXJ0OiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdCgnQ0FOT1BZVUlfREVGQVVMVF9BUFBMSUNBVElPTl9USEVNRScpIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEFwcFRoZW1lOiBBcHBsaWNhdGlvblRoZW1lLFxuICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZixcbiAgICBASW5qZWN0KElTX01PQklMRV9UT0tFTikgcHJvdGVjdGVkIHJlYWRvbmx5IGlzTW9iaWxlJDogT2JzZXJ2YWJsZTxib29sZWFuPlxuICApIHtcbiAgICBpZiAoZGVmYXVsdEFwcFRoZW1lKSB7XG4gICAgICB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPSBkZWZhdWx0QXBwVGhlbWU7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXRUYWJsZUNvbmZpZyh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5zZXRUYWJsZURhdGEodGhpcy5kYXRhKTtcblxuICAgIGlmICh0aGlzLmFwcGxpY2F0aW9uVGhlbWUgIT09ICdjbGFzc2ljJykge1xuICAgICAgdGhpcy5za2VsZXRvblN0eWxlQ29uZmlnLmJhY2tncm91bmQgPSAnI0Y0RjRGNCc7XG4gICAgfVxuICAgIGRvY3VtZW50LmJvZHkuc2V0QXR0cmlidXRlKCd0aGVtZScsIHRoaXMuYXBwbGljYXRpb25UaGVtZSk7XG5cbiAgICBpZiAodGhpcy50YWJsZURldGFpbENvbHVtbnMpIHtcbiAgICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMudGFibGVEZXRhaWxDb2x1bW5zLmNvbHVtbkRlZnMuZmlsdGVyKGNvbHVtbiA9PiAhY29sdW1uLmhpZGRlbik7XG4gICAgICB0aGlzLmNvbHVtbnNEZXRhaWxUb0Rpc3BsYXkgPSBmaWx0ZXJlZENvbHVtbnMubGVuZ3RoXG4gICAgICAgID8gZmlsdGVyZWRDb2x1bW5zLm1hcCgodGFibGVDb2x1bW46IFRhYmxlQ29sdW1uPFREZXRhaWw+KSA9PiB0YWJsZUNvbHVtbi50aXRsZSEpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFibGVDb25maWc/LnNvcnRhYmxlICYmIHRoaXMudGFibGVDb25maWc/LnNvcnQpIHtcbiAgICAgIHRoaXMub25Tb3J0Q2hhbmdlKHRoaXMudGFibGVDb25maWcuc29ydCBhcyBTb3J0LCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuaGFzVGFibGVTY3JvbGwoKTtcbiAgICBmcm9tRXZlbnQodGhpcy50YWJsZS5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJylcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmhhc1RhYmxlU2Nyb2xsKCkpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydjb25maWcnXSAmJiBjaGFuZ2VzWydjb25maWcnXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGNoYW5nZXNbJ2NvbmZpZyddLmN1cnJlbnRWYWx1ZSBhcyBUYWJsZUNvbmZpZzxUPjtcbiAgICAgIHRoaXMuc2V0VGFibGVDb25maWcoY29uZmlnKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2RhdGEnXT8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnNldFRhYmxlRGF0YShjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlIGFzIFRhYmxlRGF0YSk7XG4gICAgfVxuICB9XG5cbiAgaGFzVGFibGVTY3JvbGwoKTogdm9pZCB7XG4gICAgY29uc3QgdGFibGUgPSB0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgaG9yaXpvbnRhbFNjcm9sbCA9IHRhYmxlLnNjcm9sbFdpZHRoID4gdGFibGUuY2xpZW50V2lkdGg7XG4gICAgY29uc3Qgc2Nyb2xsRW5kID0gdGFibGUuc2Nyb2xsTGVmdCArIHRhYmxlLmNsaWVudFdpZHRoID49IHRhYmxlLnNjcm9sbFdpZHRoO1xuICAgIHRoaXMuc2Nyb2xsU2V0dGluZ3MkLm5leHQoe1xuICAgICAgc2Nyb2xsU3RhcnQ6ICF0YWJsZS5zY3JvbGxMZWZ0LFxuICAgICAgc2Nyb2xsRW5kLFxuICAgICAgaG9yaXpvbnRhbFNjcm9sbCxcbiAgICB9KTtcbiAgfVxuXG4gIGNhbGxSZW5kZXJlcihbcmVuZGVyZXJGbiwgZWxlbWVudF06IFsodjogVCkgPT4gQ29tcG9uZW50UmVuZGVyZXIgfCBzdHJpbmcsIFRdKTogYW55IHtcbiAgICBpZiAocmVuZGVyZXJGbikge1xuICAgICAgcmV0dXJuIHJlbmRlcmVyRm4oZWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uUGFnaW5hdG9yQ2hhbmdlKGV2ZW50OiBQYWdlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2luYXRvckNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNoYW5nZUNvbHVtblNpemUoY29sdW1uSW5kZXg6IG51bWJlciwgc2hvd1Rvb2x0aXA6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmNvbHVtbnNUb29sdGlwU3RhdGUgPSB0aGlzLmNvbHVtbnNUb29sdGlwU3RhdGUubWFwKGNvbHVtbiA9PiB7XG4gICAgICBpZiAoY29sdW1uLmluZGV4ID09PSBjb2x1bW5JbmRleCkge1xuICAgICAgICBjb2x1bW4uc2hvd1Rvb2x0aXAgPSBzaG93VG9vbHRpcDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb2x1bW47XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Tb3J0Q2hhbmdlKHNvcnRTdGF0ZTogU29ydCwgZW1pdEV2ZW50ID0gdHJ1ZSk6IHZvaWQge1xuICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHNvcnRTdGF0ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFibGVDb25maWc/LnNvcnRhYmxlKSB7XG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IFtcbiAgICAgICAgLi4udGhpcy50YWJsZURhdGEuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzQXNjID0gc29ydFN0YXRlLmRpcmVjdGlvbiA9PT0gJ2FzYyc7XG4gICAgICAgICAgY29uc3QgYVZhbCA9IGFbc29ydFN0YXRlLmFjdGl2ZV07XG4gICAgICAgICAgY29uc3QgYlZhbCA9IGJbc29ydFN0YXRlLmFjdGl2ZV07XG4gICAgICAgICAgcmV0dXJuIChhVmFsIDwgYlZhbCA/IC0xIDogMSkgKiAoaXNBc2MgPyAxIDogLTEpO1xuICAgICAgICB9KSxcbiAgICAgIF07XG5cbiAgICAgIGlmICghc29ydFN0YXRlLmRpcmVjdGlvbikge1xuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IFsuLi50aGlzLnNvdXJjZURhdGFdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvblJvd0NsaWNrKHJvd1BhcmFtczogYW55LCByb3dJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5vblJvd0NsaWNrRXZlbnQuZW1pdCh7IC4uLnJvd1BhcmFtcywgaW5kZXg6IHJvd0luZGV4IH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uRGV0YWlsUm93Q2xpY2socm93UGFyYW1zOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uRGV0YWlsUm93Q2xpY2tFdmVudC5lbWl0KHJvd1BhcmFtcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlUm93KGVsZW1lbnQ6IFQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50YWJsZURldGFpbHMpIHtcbiAgICAgIHRoaXMuZWxlbWVudERldGFpbCA9IHRoaXMuZWxlbWVudERldGFpbCA9PT0gZWxlbWVudCA/IG51bGwgOiBlbGVtZW50O1xuICAgICAgaWYgKHRoaXMuZWxlbWVudERldGFpbCkge1xuICAgICAgICB0aGlzLnRhYmxlRGV0YWlsQ29sdW1ucy5zZXREZXRhaWxSb3dEYXRhKHtcbiAgICAgICAgICBkYXRhOiBlbGVtZW50LFxuICAgICAgICAgIHNldERldGFpbERhdGFTb3VyY2U6IHRoaXMuc2V0VGFibGVEZXRhaWxEYXRhU291cmNlLmJpbmQodGhpcyksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VGFibGVEZXRhaWxEYXRhU291cmNlKHJvd0RhdGE6IFREZXRhaWxbXSk6IHZvaWQge1xuICAgIHRoaXMuZGF0YVNvdXJjZURldGFpbCA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8YW55Pihyb3dEYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VGFibGVDb25maWcoY29uZmlnOiBUYWJsZUNvbmZpZzxUPik6IHZvaWQge1xuICAgIGNvbmZpZy5wYWdpbmF0aW9uID0gY29uZmlnPy5wYWdpbmF0aW9uID8/IHRoaXMuZGVmYXVsdFBhZ2luYXRpb25Db25maWc7XG5cbiAgICB0aGlzLnRhYmxlQ29uZmlnID0gY29uZmlnIGFzIFRhYmxlQ29uZmlnV2l0aFBhZ2luYXRpb248VD47XG5cbiAgICB0aGlzLmNvbHVtbnNUb29sdGlwU3RhdGUgPSBjb25maWcuY29sdW1ucy5tYXAoKGNvbHVtbiwgaW5kZXgpID0+ICh7XG4gICAgICBpbmRleCxcbiAgICAgIHNob3dUb29sdGlwOiBjb2x1bW4uc2hvd1Rvb2x0aXAgPz8gZmFsc2UsXG4gICAgfSkpO1xuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IHNvcnRCeU9yZGVyPFQ+KGNvbmZpZy5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gIWNvbHVtbi5oaWRkZW4pKS5tYXAoXG4gICAgICBjb2x1bW4gPT4gY29sdW1uLnVuaXF1ZUlkID8/IGNvbHVtbi5rZXlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRUYWJsZURhdGEoZGF0YTogVGFibGVEYXRhKTogdm9pZCB7XG4gICAgdGhpcy5zb3VyY2VEYXRhID0gZGF0YTtcbiAgICB0aGlzLnRhYmxlRGF0YSA9IGRhdGE7XG4gIH1cblxuICBwcml2YXRlIGRlZmF1bHRQYWdpbmF0aW9uQ29uZmlnOiBQYWdpbmF0aW9uID0ge1xuICAgIGN1cnJlbnRQYWdlOiAwLFxuICAgIGl0ZW1zUGVyUGFnZTogMTAsXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9uczogWzEwLCAyNSwgNTBdLFxuICAgIHRvdGFsSXRlbXM6IDIwLFxuICB9O1xuXG4gIHRyYWNrQ29sdW1uVW5pcXVlSWQgPSAoaW5kZXg6IG51bWJlciwgY29sdW1uOiBUYWJsZUNvbHVtbjxUPik6IHN0cmluZyA9PiBjb2x1bW4udW5pcXVlSWQgPz8gY29sdW1uLmtleTtcbn1cbiIsIjxkaXYgI3RhYmxlQ29udGFpbmVyIGNsYXNzPVwidGFibGUtY29udGFpbmVyXCJcbiAgICAgW25nQ2xhc3NdPVwieyAnd2l0aG91dC10aXRsZSc6ICF0YWJsZUNvbmZpZz8udGl0bGUsICdkaXNhYmxlLWJvcmRlci1yYWRpdXMnOiBkaXNhYmxlQm9yZGVyUmFkaXVzIH1cIlxuICAgICBbYXR0ci50aGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCI+XG4gIDxkaXYgKm5nSWY9XCJ0YWJsZUNvbmZpZz8udGl0bGVcIiBjbGFzcz1cInRhYmxlLWhlYWRlclwiPlxuICAgIHt7IHRhYmxlQ29uZmlnLnRpdGxlIHwgc2VudGVuY2VjYXNlIH19XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3RpdGxlLWFjdGlvbnNdXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICN0YWJsZVxuICAgICpuZ0lmPVwic2Nyb2xsU2V0dGluZ3MkIHwgYXN5bmMgYXMgc2Nyb2xsU2V0dGluZ3NcIlxuICAgIGNsYXNzPVwidGFibGUtd3JhcHBlclwiXG4gICAgW2NsYXNzLnN0aWNreS1oZWFkZXJdPVwic3RpY2t5SGVhZGVyXCJcbiAgICBbc3R5bGUuLS10YWJsZS1tYXgtaGVpZ2h0XT1cIm1heEhlaWdodFwiPlxuICAgIDx0YWJsZVxuICAgICAgW3RhYkluZGV4XT1cIjBcIlxuICAgICAgY2xhc3M9XCJtYWluLXRhYmxlXCJcbiAgICAgIFtjbGFzcy5jb25kZW5zZWRdPVwiaXNDb25kZW5zZWRcIlxuICAgICAgbWF0LXRhYmxlXG4gICAgICBbZGF0YVNvdXJjZV09XCJ0YWJsZURhdGFcIlxuICAgICAgbWF0U29ydFxuICAgICAgW21hdFNvcnRTdGFydF09XCJ0YWJsZUNvbmZpZz8uc29ydD8uZGVmYXVsdFNvcnRTdGFydCA/PyAnYXNjJ1wiXG4gICAgICBbbWF0U29ydEFjdGl2ZV09XCJ0YWJsZUNvbmZpZz8uc29ydD8uYWN0aXZlID8/ICcnXCJcbiAgICAgIFttYXRTb3J0RGlyZWN0aW9uXT1cInRhYmxlQ29uZmlnPy5zb3J0Py5kaXJlY3Rpb24gPz8gJydcIlxuICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCRldmVudClcIlxuICAgICAgbXVsdGlUZW1wbGF0ZURhdGFSb3dzXG4gICAgPlxuXG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdGFibGVDb25maWcuY29sdW1uczsgaW5kZXggYXMgaSwgbGFzdCBhcyBpc0xhc3Q7IHRyYWNrQnk6IHRyYWNrQ29sdW1uVW5pcXVlSWRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTGFzdCAmJiBjb2x1bW4uaXNTdGlja3kgJiYgY29sdW1uLmFsbG93U29ydFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4udW5pcXVlSWQgPz8gY29sdW1uLmtleVwiIFtzdGlja3lFbmRdPVwiIXNjcm9sbFNldHRpbmdzPy5zY3JvbGxFbmRcIj5cbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGxcbiAgICAgICAgICAgICAgICBbc3RhcnRdPVwiY29sdW1uLnNvcnRTdGFydCA/PyAnYXNjJ1wiXG4gICAgICAgICAgICAgICAgW21hdC1zb3J0LWhlYWRlcl09XCJjb2x1bW4uc29ydEhlYWRlciA/PyBjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICAgICAgICAgIFthdHRyLnNvcnRhYmxlXT1cImNvbHVtbi5hbGxvd1NvcnQgPz8gZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInt3aWR0aDogY29sdW1uLnN0eWxlcz8ud2lkdGgsIG1pbldpZHRoOiBjb2x1bW4uc3R5bGVzPy5bJ21pbi13aWR0aCddfVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RoLScrY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJydcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXdlaWdodF09XCInYm9sZCdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdWYWx1ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogY29sdW1uLnRpdGxlLCBjb2x1bW4sIGNvbEluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdWYWx1ZT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbkhlYWRlclwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGksIGNvbHVtbiB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RoPlxuXG4gICAgICAgICAgICA8dGQgbWF0LWNlbGxcbiAgICAgICAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgcm93SW5kZXggPSBkYXRhSW5kZXhcIlxuICAgICAgICAgICAgICAgIFthbGlnbl09XCJjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnRcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGQtJytjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ11cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJvd0NsaWNrKGVsZW1lbnQsIHJvd0luZGV4KTsgY29sdW1uPy5yb3dDZWxsVGVtcGxhdGVDbGljayA/IGNvbHVtbiEucm93Q2VsbFRlbXBsYXRlQ2xpY2s/LigpIDogJydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8dWktc2tlbGV0b24gY2xhc3M9XCJ0YWJsZS1za2VsZXRvbi1sb2FkZXJcIiBbY291bnRdPVwiMVwiIFt0aGVtZV09XCJza2VsZXRvblN0eWxlQ29uZmlnXCIgW2FwcGVhcmFuY2VdPVwiJ2xpbmUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibG9hZGluZzsgZWxzZSB2YWx1ZVwiPjwvdWktc2tlbGV0b24+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdmFsdWU+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy12YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJleHBhbmRCdXR0b25cIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpbmRleDogaSwgZWxlbWVudCB9XCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uPy50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlRGF0YVRwbDsgY29udGV4dDoge2VsZW1lbnQsIHRhYmxlQ29sdW1uOiBjb2x1bW59XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnRGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLnJvd0NlbGxUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogZWxlbWVudCwgcm93SW5kZXh9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmZpZ0RhdGE+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBbc3R5bGUuZm9udC13ZWlnaHRdPVwiY29sdW1uLmJvbGQgPyAnYm9sZCcgOiAnbm9ybWFsJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplXT1cImNvbHVtbi5mb250U2l6ZSA/PyAnMTRweCdcIj57eyBlbGVtZW50IHwgZGF0YVByb3BlcnR5R2V0dGVyOiBjb2x1bW4ua2V5IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTGFzdCAmJiBjb2x1bW4uaXNTdGlja3kgJiYgIWNvbHVtbi5hbGxvd1NvcnRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLnVuaXF1ZUlkID8/IGNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0aWNreUVuZF09XCJzY3JvbGxTZXR0aW5ncy5ob3Jpem9udGFsU2Nyb2xsID8gIXNjcm9sbFNldHRpbmdzLnNjcm9sbEVuZCA6IHRydWVcIj5cbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGxcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICAgICAgICAgIFthdHRyLnNvcnRhYmxlXT1cImNvbHVtbi5hbGxvd1NvcnQgPz8gZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInt3aWR0aDogY29sdW1uLnN0eWxlcz8ud2lkdGgsIG1pbldpZHRoOiBjb2x1bW4uc3R5bGVzPy5bJ21pbi13aWR0aCddfVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RoLScrY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJydcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXdlaWdodF09XCInYm9sZCdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdWYWx1ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogY29sdW1uLnRpdGxlLCBjb2x1bW4sIGNvbEluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdWYWx1ZT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbkhlYWRlclwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGksIGNvbHVtbiB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RoPlxuXG4gICAgICAgICAgICA8dGQgbWF0LWNlbGxcbiAgICAgICAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgcm93SW5kZXggPSBkYXRhSW5kZXhcIlxuICAgICAgICAgICAgICAgIFthbGlnbl09XCJjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnRcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGQtJytjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ11cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJvd0NsaWNrKGVsZW1lbnQsIHJvd0luZGV4KTsgY29sdW1uPy5yb3dDZWxsVGVtcGxhdGVDbGljayA/IGNvbHVtbiEucm93Q2VsbFRlbXBsYXRlQ2xpY2s/LigpIDogJydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8dWktc2tlbGV0b24gY2xhc3M9XCJ0YWJsZS1za2VsZXRvbi1sb2FkZXJcIiBbY291bnRdPVwiMVwiIFt0aGVtZV09XCJza2VsZXRvblN0eWxlQ29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cIidsaW5lJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImxvYWRpbmc7IGVsc2UgdmFsdWVcIj48L3VpLXNrZWxldG9uPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3ZhbHVlPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXhwYW5kQnV0dG9uXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaW5kZXg6IGksIGVsZW1lbnQgfVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbj8udHlwZSkge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZURhdGFUcGw7IGNvbnRleHQ6IHtlbGVtZW50LCB0YWJsZUNvbHVtbjogY29sdW1ufVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBlbHNlIGNvbmZpZ0RhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBlbGVtZW50LCByb3dJbmRleCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmZpZ0RhdGE+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBbc3R5bGUuZm9udC13ZWlnaHRdPVwiY29sdW1uLmJvbGQgPyAnYm9sZCcgOiAnbm9ybWFsJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplXT1cImNvbHVtbi5mb250U2l6ZSA/PyAnMTRweCdcIj57eyBlbGVtZW50IHwgZGF0YVByb3BlcnR5R2V0dGVyOiBjb2x1bW4ua2V5IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiIShpc0xhc3QgJiYgY29sdW1uLmlzU3RpY2t5KSAmJiBjb2x1bW4uYWxsb3dTb3J0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbi51bmlxdWVJZCA/PyBjb2x1bW4ua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdGlja3ldPVwiKGlzTW9iaWxlJCB8IGFzeW5jKSA/IGZhbHNlIDogIXNjcm9sbFNldHRpbmdzLnNjcm9sbFN0YXJ0ICAmJiAhIWNvbHVtbi5pc1N0aWNreVwiPlxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbFxuICAgICAgICAgICAgICAgIFtzdGFydF09XCJjb2x1bW4uc29ydFN0YXJ0ID8/ICdhc2MnXCJcbiAgICAgICAgICAgICAgICBbbWF0LXNvcnQtaGVhZGVyXT1cImNvbHVtbi5zb3J0SGVhZGVyID8/IGNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgIFthdHRyLnNvcnRhYmxlXT1cImNvbHVtbi5hbGxvd1NvcnQgPz8gZmFsc2VcIlxuICAgICAgICAgICAgICAgICptYXRIZWFkZXJDZWxsRGVmXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cIidib2xkJ1wiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie3dpZHRoOiBjb2x1bW4uc3R5bGVzPy53aWR0aCwgbWluV2lkdGg6IGNvbHVtbi5zdHlsZXM/LlsnbWluLXdpZHRoJ119XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGgtJytjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uaGVhZGVyQ2VsbFRlbXBsYXRlOyBlbHNlIGNvbmZpZ1ZhbHVlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4uaGVhZGVyQ2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uLnRpdGxlLCBjb2x1bW4sIGNvbEluZGV4OiBpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnVmFsdWU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW5IZWFkZXJcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpLCBjb2x1bW4gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90aD5cblxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsXG4gICAgICAgICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IHJvd0luZGV4ID0gZGF0YUluZGV4XCJcbiAgICAgICAgICAgICAgICBbYWxpZ25dPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJbY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RkLScrY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJyddXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Sb3dDbGljayhlbGVtZW50LCByb3dJbmRleCk7IGNvbHVtbj8ucm93Q2VsbFRlbXBsYXRlQ2xpY2sgPyBjb2x1bW4hLnJvd0NlbGxUZW1wbGF0ZUNsaWNrPy4oKSA6ICcnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHVpLXNrZWxldG9uIGNsYXNzPVwidGFibGUtc2tlbGV0b24tbG9hZGVyXCIgW2NvdW50XT1cIjFcIiBbdGhlbWVdPVwic2tlbGV0b25TdHlsZUNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCInbGluZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsb2FkaW5nOyBlbHNlIHZhbHVlXCI+PC91aS1za2VsZXRvbj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN2YWx1ZT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImV4cGFuZEJ1dHRvblwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGluZGV4OiBpLCBlbGVtZW50IH1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgQGlmIChjb2x1bW4/LnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVEYXRhVHBsOyBjb250ZXh0OiB7ZWxlbWVudCwgdGFibGVDb2x1bW46IGNvbHVtbn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnJvd0NlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdEYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZWxlbWVudCwgcm93SW5kZXggfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdEYXRhPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmZvbnQtd2VpZ2h0XT1cImNvbHVtbi5ib2xkID8gJ2JvbGQnIDogJ25vcm1hbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCJjb2x1bW4uZm9udFNpemUgPz8gJzE0cHgnXCI+e3sgZWxlbWVudCB8IGRhdGFQcm9wZXJ0eUdldHRlcjogY29sdW1uLmtleSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiIShpc0xhc3QgJiYgY29sdW1uLmlzU3RpY2t5KSAmJiAhY29sdW1uLmFsbG93U29ydFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4udW5pcXVlSWQgPz8gY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RpY2t5XT1cIihpc01vYmlsZSQgfCBhc3luYykgPyBmYWxzZSA6ICFzY3JvbGxTZXR0aW5ncy5zY3JvbGxTdGFydCAmJiAhIWNvbHVtbi5pc1N0aWNreVwiPlxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbFxuICAgICAgICAgICAgICAgIFthdHRyLnNvcnRhYmxlXT1cImNvbHVtbi5hbGxvd1NvcnQgPz8gZmFsc2VcIlxuICAgICAgICAgICAgICAgICptYXRIZWFkZXJDZWxsRGVmXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cIidib2xkJ1wiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie3dpZHRoOiBjb2x1bW4uc3R5bGVzPy53aWR0aCwgbWluV2lkdGg6IGNvbHVtbi5zdHlsZXM/LlsnbWluLXdpZHRoJ119XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGgtJytjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uaGVhZGVyQ2VsbFRlbXBsYXRlOyBlbHNlIGNvbmZpZ1ZhbHVlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4uaGVhZGVyQ2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uLnRpdGxlLCBjb2x1bW4sIGNvbEluZGV4OiBpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnVmFsdWU+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW5IZWFkZXJcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpLCBjb2x1bW4gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90aD5cblxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsXG4gICAgICAgICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IHJvd0luZGV4ID0gZGF0YUluZGV4XCJcbiAgICAgICAgICAgICAgICBbYWxpZ25dPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJbY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RkLScrY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJyddXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Sb3dDbGljayhlbGVtZW50LCByb3dJbmRleCk7IGNvbHVtbj8ucm93Q2VsbFRlbXBsYXRlQ2xpY2sgPyBjb2x1bW4hLnJvd0NlbGxUZW1wbGF0ZUNsaWNrPy4oKSA6ICcnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHVpLXNrZWxldG9uIGNsYXNzPVwidGFibGUtc2tlbGV0b24tbG9hZGVyXCIgW2NvdW50XT1cIjFcIiBbdGhlbWVdPVwic2tlbGV0b25TdHlsZUNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCInbGluZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsb2FkaW5nOyBlbHNlIHZhbHVlXCI+PC91aS1za2VsZXRvbj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN2YWx1ZT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImV4cGFuZEJ1dHRvblwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGluZGV4OiBpLCBlbGVtZW50IH1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgQGlmIChjb2x1bW4/LnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVEYXRhVHBsOyBjb250ZXh0OiB7ZWxlbWVudCwgdGFibGVDb2x1bW46IGNvbHVtbn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnJvd0NlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdEYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogIGVsZW1lbnQsIHJvd0luZGV4IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnRGF0YT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtzdHlsZS5mb250LXdlaWdodF09XCJjb2x1bW4uYm9sZCA/ICdib2xkJyA6ICdub3JtYWwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemVdPVwiY29sdW1uLmZvbnRTaXplID8/ICcxNHB4J1wiPnt7IGVsZW1lbnQgfCBkYXRhUHJvcGVydHlHZXR0ZXI6IGNvbHVtbi5rZXkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPC9uZy1jb250YWluZXI+XG5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJleHBhbmRlZERldGFpbFwiPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiIFthdHRyLmNvbHNwYW5dPVwiZGlzcGxheWVkQ29sdW1ucy5sZW5ndGhcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWxlbWVudC1kZXRhaWxcIiAqbmdJZj1cImRhdGFTb3VyY2VEZXRhaWwuZGF0YS5sZW5ndGhcIlxuICAgICAgICAgICAgICAgW0BleHBhbmREZXRhaWxdPVwiZWxlbWVudCA9PT0gZWxlbWVudERldGFpbCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJ1wiPlxuICAgICAgICAgICAgPHRhYmxlXG4gICAgICAgICAgICAgIG1hdC10YWJsZVxuICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlRGV0YWlsXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaGlkZS1ib3JkZXJzJzogZWxlbWVudCA9PT0gdGFibGVEYXRhW3RhYmxlRGF0YS5sZW5ndGggLSAxXSB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFibGVDb2x1bW4gb2YgdGFibGVEZXRhaWxDb2x1bW5zLmNvbHVtbkRlZnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRDb2x1bW5EZWZdPVwidGFibGVDb2x1bW4udGl0bGUgPz8gJydcIj5cbiAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBhcnJvd1Bvc2l0aW9uPVwiYWZ0ZXJcIlxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7d2lkdGg6IHRhYmxlQ29sdW1uLnN0eWxlcz8ud2lkdGh9XCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidGFibGVDb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGgtJyt0YWJsZUNvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA6ICcnXCI+XG4gICAgICAgICAgICAgICAgICB7eyB0YWJsZUNvbHVtbi50aXRsZSB8IHVwcGVyY2FzZSB9fVxuICAgICAgICAgICAgICAgIDwvdGg+XG5cbiAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiIChjbGljayk9XCJvbkRldGFpbFJvd0NsaWNrKGVsZW1lbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2FsaWduXT1cInRhYmxlQ29sdW1uLnN0eWxlcz8uYWxpZ25tZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidGFibGVDb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGQtJyt0YWJsZUNvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA6ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie3dpZHRoOiB0YWJsZUNvbHVtbi5zdHlsZXM/LndpZHRoIH1cIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZURhdGFUcGw7IGNvbnRleHQ6IHtlbGVtZW50LCB0YWJsZUNvbHVtbn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImNvbHVtbnNEZXRhaWxUb0Rpc3BsYXlcIj48L3RyPlxuICAgICAgICAgICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvd0RldGFpbDsgY29sdW1uczogY29sdW1uc0RldGFpbFRvRGlzcGxheTtcIj48L3RyPlxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI3RhYmxlRGF0YVRwbCBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtdGFibGVDb2x1bW49XCJ0YWJsZUNvbHVtblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWxpZ24td3JhcHBlclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInRhYmxlQ29sdW1uLnR5cGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkRhdGFUeXBlLkZJRUxEXCI+XG4gICAgICAgICAgICAgIHt7IGVsZW1lbnQgfCBkYXRhUHJvcGVydHlHZXR0ZXI6IHRhYmxlQ29sdW1uLmtleSB9fVxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJEYXRhVHlwZS5GVU5DVElPTlwiPlxuICAgICAgICAgICAgICB7eyB0YWJsZUNvbHVtbi5mdW5jdGlvbj8uKGVsZW1lbnQpIH19XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkRhdGFUeXBlLlJFTkRFUkVSXCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIFtkeW5hbWljQ29tcG9uZW50XT1cIlt0YWJsZUNvbHVtbi5yZW5kZXJlciwgZWxlbWVudF0gfCBtZW1vaXplRnVuYyA6IGNhbGxSZW5kZXJlclwiPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICAgICAgICAgIHt7IGVsZW1lbnQgfCBkYXRhUHJvcGVydHlHZXR0ZXI6IHRhYmxlQ29sdW1uLmtleSB9fVxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zOyBzdGlja3k6IHN0aWNreUhlYWRlclwiIFtjbGFzcy5pcy10aXRsZS1wcmVzZW50XT1cInRhYmxlQ29uZmlnLnRpdGxlXCI+PC90cj5cbiAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zO1wiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydleHBhbmRlZC1yb3cnOiBlbGVtZW50RGV0YWlsID09PSByb3csICdyb3ctY2xpY2thYmxlJzogdGFibGVEZXRhaWxzLCAnc2VsZWN0ZWQnOiByb3c/LnNlbGVjdGVkLCAnbGFzdC1yb3cnOiByb3cgPT09IHRhYmxlRGF0YVt0YWJsZURhdGEubGVuZ3RoIC0gMV0gJiYgIWVsZW1lbnREZXRhaWwgfVwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJvdyhyb3cpXCI+XG4gICAgICA8L3RyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYmxlRGV0YWlscyAmJiB0YWJsZURldGFpbENvbHVtbnM/LmNvbHVtbkRlZnM/Lmxlbmd0aFwiPlxuICAgICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydleHBhbmRlZERldGFpbCddXCIgY2xhc3M9XCJkZXRhaWwtcm93XCI+PC90cj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGVDb25maWcubm9EYXRhUm93VHBsXCI+XG4gICAgICAgIDx0ciAqbWF0Tm9EYXRhUm93PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUNvbmZpZy5ub0RhdGFSb3dUcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGFibGU+XG4gIDwvZGl2PlxuXG4gIDx1aS1wYWdpbmF0b3JcbiAgICAqbmdJZj1cIiF0YWJsZUNvbmZpZz8uaGlkZVBhZ2luYXRpb24gJiYgdGFibGVDb25maWc/LnBhZ2luYXRpb25cIlxuICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcbiAgICBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYycgPyAnbGlnaHQnIDogJ2NsYXNzaWMnXCJcbiAgICBbcGFnZVNpemVdPVwidGFibGVDb25maWcucGFnaW5hdGlvbj8uaXRlbXNQZXJQYWdlID8/IDI1XCJcbiAgICBbbGVuZ3RoXT1cInRhYmxlQ29uZmlnLnBhZ2luYXRpb24/LnRvdGFsSXRlbXMgPz8gMFwiXG4gICAgW2N1cnJlbnRQYWdlXT1cInRhYmxlQ29uZmlnLnBhZ2luYXRpb24/LmN1cnJlbnRQYWdlID8/IDBcIlxuICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwidGFibGVDb25maWcucGFnaW5hdGlvbj8uaXRlbXNQZXJQYWdlT3B0aW9ucyA/PyBbMTAsIDI1LCA1MF1cIlxuICAgIChwYWdpbmF0b3JDaGFuZ2UpPVwib25QYWdpbmF0b3JDaGFuZ2UoJGV2ZW50KVwiXG4gID48L3VpLXBhZ2luYXRvcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2V4cGFuZEJ1dHRvbiBsZXQtaT1cImluZGV4XCIgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCI+XG4gIDx1aS1idXR0b25cbiAgICBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAqbmdJZj1cIiFpICYmIHRhYmxlRGV0YWlsc1wiXG4gICAgdmFyaWFudD1cImljb24tYnV0dG9uXCJcbiAgICBbbmdDbGFzc109XCJ7IG9wZW5lZDogZWxlbWVudERldGFpbCAmJiBlbGVtZW50ID09IGVsZW1lbnREZXRhaWwgfVwiXG4gICAgW2ljb25OYW1lXT1cImVsZW1lbnREZXRhaWwgJiYgZWxlbWVudCA9PSBlbGVtZW50RGV0YWlsID8gJ0Fycm93LWNoZXZyb24tdXAtaW4tbGluZScgOiAnQXJyb3ctY2hldnJvbi1kb3duLWluLWxpbmUnXCJcbiAgPjwvdWktYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjb2x1bW5IZWFkZXIgbGV0LWNvbHVtbj1cImNvbHVtblwiIGxldC1pPVwiaVwiPlxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gdWlFbGxpcHNlVGV4dCAob25DaGFuZ2VUZXh0U3RhdGUpPVwib25DaGFuZ2VDb2x1bW5TaXplKGksICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbHVtbi10aXRsZVwiPnt7IGNvbHVtbi50aXRsZSB8IHNlbnRlbmNlY2FzZSB9fVxuICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgPHVpLWljb24gKm5nSWY9XCJjb2x1bW4/LnNob3dUb29sdGlwXCIgW25hbWVdPVwiJ0hlbHAtaW4tbGluZSdcIlxuICAgICAgICAgICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKGNvbHVtbj8uc2hvd1Rvb2x0aXAgPyAoY29sdW1uPy50b29sdGlwID8gY29sdW1uLnRvb2x0aXAgOiBjb2x1bW4udGl0bGUgKSA6ICcnKSB8fCAnJ1wiXG4gICAgPjwvdWktaWNvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG4iXX0=
273
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFHVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsVUFBVSxHQVVYLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQWdCNUQsTUFBTSxPQUFPLGNBQWM7SUFzR3pCLFlBQzZFLGVBQWlDLEVBQ3BHLFVBQXNCLEVBQ2MsU0FBOEI7UUFGQyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFDcEcsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNjLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBeEY1RTs7Ozs7O1dBTUc7UUFDTSxZQUFPLEdBQUcs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LGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFFYSxLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIERlc3Ryb3lSZWYsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29sdW1uRWxsaXBzZSxcclxuICBDb2x1bW5UeXBlLFxyXG4gIENvbXBvbmVudFJlbmRlcmVyLFxyXG4gIERhdGFTb3VyY2UsXHJcbiAgUGFnaW5hdGlvbixcclxuICBTY3JvbGxTZXR0aW5ncyxcclxuICBUYWJsZUNvbHVtbixcclxuICBUYWJsZUNvbmZpZyxcclxuICBUYWJsZUNvbmZpZ1dpdGhQYWdpbmF0aW9uLFxyXG4gIFRhYmxlRGF0YSxcclxuICBUYWJsZURldGFpbENvbHVtbixcclxufSBmcm9tICcuL3RhYmxlLm1vZGVsJztcclxuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgQXBwbGljYXRpb25UaGVtZSB9IGZyb20gJy4uLy4uL21vZGVscy9hcHBsaWNhdGlvbi10aGVtZS5tb2RlbCc7XHJcbmltcG9ydCB7IHNvcnRCeU9yZGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvdGFibGUudXRpbHMnO1xyXG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbUV2ZW50LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgSVNfTU9CSUxFX1RPS0VOIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2lzLW1vYmlsZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3VpLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignZXhwYW5kRGV0YWlsJywgW1xyXG4gICAgICBzdGF0ZSgnY29sbGFwc2VkLCB2b2lkJywgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnIH0pKSxcclxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2V4cGFuZGVkIDw9PiBjb2xsYXBzZWQnLCBhbmltYXRlKCcyMjVtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknKSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2V4cGFuZGVkIDw9PiB2b2lkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxyXG4gICAgXSksXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50PFQgZXh0ZW5kcyBEYXRhU291cmNlLCBURGV0YWlsIGV4dGVuZHMgRGF0YVNvdXJjZT4gaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIC8qKlxyXG4gICAqIFRhYmxlIGNvbmZpZ3VyYXRpb25cclxuICAgKlxyXG4gICAqIEB0eXBlIHtUYWJsZUNvbmZpZ31cclxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjb25maWc6IFRhYmxlQ29uZmlnV2l0aFBhZ2luYXRpb248VD47XHJcblxyXG4gIC8qKlxyXG4gICAqIElucHV0IHByb3BlcnR5IGZvciBwcm92aWRpbmcgdGhlIHRhYmxlIGRhdGEuXHJcbiAgICpcclxuICAgKiBAdHlwZSB7VGFibGVEYXRhfVxyXG4gICAqIEBtZW1iZXJvZiBUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGRhdGE6IFRhYmxlRGF0YTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5wdXQgcHJvcGVydHkgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB0YWJsZSBpcyBpbiBhIGxvYWRpbmcgc3RhdGUuXHJcbiAgICpcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBEZWZpbmVzIHRoZSBhcHBsaWNhdGlvbiB0aGVtZVxyXG4gICAqIEB0eXBlIHtBcHBsaWNhdGlvblRoZW1lfVxyXG4gICAqIEBtZW1iZXJvZiBUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGFwcGxpY2F0aW9uVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUgPSAnbGlnaHQnO1xyXG5cclxuICAvKipcclxuICAgKiBEYXRhIHN0cnVjdHVyZSB0byBzZWxlY3Qgd2hpY2ggY29sdW1ucyBzaG91bGQgYmUgcmVuZGVyZWQgYW5kIHRoZWlyIGNhcGFiaWxpdGllc1xyXG4gICAqXHJcbiAgICogQHR5cGUge1RhYmxlRGV0YWlsQ29sdW1ufVxyXG4gICAqIEBtZW1iZXJvZiBUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHRhYmxlRGV0YWlsQ29sdW1uczogVGFibGVEZXRhaWxDb2x1bW48VCwgVERldGFpbD47XHJcbiAgQElucHV0KCkgdGFibGVEZXRhaWxzID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc2FibGUgYm9yZGVyIHJhZGl1cyBmb3IgdGFibGVcclxuICAgKlxyXG4gICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBUYWJsZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGRpc2FibGVCb3JkZXJSYWRpdXMgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29uZGVuc2VkIHRhYmxlXHJcbiAgICpcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBpc0NvbmRlbnNlZCA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBTdGlja3kgaGVhZGVyXHJcbiAgICpcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBzdGlja3lIZWFkZXIgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogTWF4IGhlaWdodFxyXG4gICAqXHJcbiAgICogQHR5cGUge3N0cmluZ31cclxuICAgKiBAbWVtYmVyb2YgVGFibGVDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBtYXhIZWlnaHQgPSAnNTc2cHgnO1xyXG5cclxuICBAT3V0cHV0KCkgb25Sb3dDbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvbkRldGFpbFJvd0NsaWNrRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHBhZ2luYXRvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBzb3J0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTb3J0PigpO1xyXG5cclxuICBAVmlld0NoaWxkKCd0YWJsZScpIHRhYmxlOiBFbGVtZW50UmVmO1xyXG5cclxuICBwcm90ZWN0ZWQgdGFibGVEYXRhOiBUYWJsZURhdGE7XHJcbiAgcHJvdGVjdGVkIHNvdXJjZURhdGE6IFRhYmxlRGF0YTtcclxuICBwcm90ZWN0ZWQgY29sdW1uc1Rvb2x0aXBTdGF0ZTogQ29sdW1uRWxsaXBzZVtdID0gW107XHJcbiAgcHJvdGVjdGVkIHRhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZ1dpdGhQYWdpbmF0aW9uPFQ+O1xyXG4gIHByb3RlY3RlZCBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHByb3RlY3RlZCBjb2x1bW5zRGV0YWlsVG9EaXNwbGF5OiBzdHJpbmdbXSA9IFtdO1xyXG4gIHByb3RlY3RlZCBza2VsZXRvblN0eWxlQ29uZmlnID0ge1xyXG4gICAgYmFja2dyb3VuZDogJyNGNkY2RjYnLFxyXG4gICAgJ2JvcmRlci1yYWRpdXMnOiAnNHB4JyxcclxuICAgIGhlaWdodDogJzI0cHgnLFxyXG4gIH07XHJcbiAgcHJvdGVjdGVkIGRhdGFTb3VyY2VEZXRhaWwgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlPGFueT4oW10pO1xyXG4gIHByb3RlY3RlZCBlbGVtZW50RGV0YWlsOiBhbnk7XHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IERhdGFUeXBlID0gQ29sdW1uVHlwZTtcclxuICBwcm90ZWN0ZWQgc2Nyb2xsU2V0dGluZ3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTY3JvbGxTZXR0aW5ncz4oe1xyXG4gICAgc2Nyb2xsRW5kOiBmYWxzZSxcclxuICAgIGhvcml6b250YWxTY3JvbGw6IGZhbHNlLFxyXG4gICAgc2Nyb2xsU3RhcnQ6IGZhbHNlLFxyXG4gIH0pO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoJ0NBTk9QWVVJX0RFRkFVTFRfQVBQTElDQVRJT05fVEhFTUUnKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRBcHBUaGVtZTogQXBwbGljYXRpb25UaGVtZSxcclxuICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZixcclxuICAgIEBJbmplY3QoSVNfTU9CSUxFX1RPS0VOKSBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNNb2JpbGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+XHJcbiAgKSB7XHJcbiAgICBpZiAoZGVmYXVsdEFwcFRoZW1lKSB7XHJcbiAgICAgIHRoaXMuYXBwbGljYXRpb25UaGVtZSA9IGRlZmF1bHRBcHBUaGVtZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXRUYWJsZUNvbmZpZyh0aGlzLmNvbmZpZyk7XHJcbiAgICB0aGlzLnNldFRhYmxlRGF0YSh0aGlzLmRhdGEpO1xyXG5cclxuICAgIGlmICh0aGlzLmFwcGxpY2F0aW9uVGhlbWUgIT09ICdjbGFzc2ljJykge1xyXG4gICAgICB0aGlzLnNrZWxldG9uU3R5bGVDb25maWcuYmFja2dyb3VuZCA9ICcjRjRGNEY0JztcclxuICAgIH1cclxuICAgIGRvY3VtZW50LmJvZHkuc2V0QXR0cmlidXRlKCd0aGVtZScsIHRoaXMuYXBwbGljYXRpb25UaGVtZSk7XHJcblxyXG4gICAgaWYgKHRoaXMudGFibGVEZXRhaWxDb2x1bW5zKSB7XHJcbiAgICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMudGFibGVEZXRhaWxDb2x1bW5zLmNvbHVtbkRlZnMuZmlsdGVyKGNvbHVtbiA9PiAhY29sdW1uLmhpZGRlbik7XHJcbiAgICAgIHRoaXMuY29sdW1uc0RldGFpbFRvRGlzcGxheSA9IGZpbHRlcmVkQ29sdW1ucy5sZW5ndGhcclxuICAgICAgICA/IGZpbHRlcmVkQ29sdW1ucy5tYXAoKHRhYmxlQ29sdW1uOiBUYWJsZUNvbHVtbjxURGV0YWlsPikgPT4gdGFibGVDb2x1bW4udGl0bGUhKVxyXG4gICAgICAgIDogW107XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudGFibGVDb25maWc/LnNvcnRhYmxlICYmIHRoaXMudGFibGVDb25maWc/LnNvcnQpIHtcclxuICAgICAgdGhpcy5vblNvcnRDaGFuZ2UodGhpcy50YWJsZUNvbmZpZy5zb3J0IGFzIFNvcnQsIGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuaGFzVGFibGVTY3JvbGwoKTtcclxuICAgIGZyb21FdmVudCh0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQsICdzY3JvbGwnKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmhhc1RhYmxlU2Nyb2xsKCkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbmZpZyddICYmIGNoYW5nZXNbJ2NvbmZpZyddLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICBjb25zdCBjb25maWcgPSBjaGFuZ2VzWydjb25maWcnXS5jdXJyZW50VmFsdWUgYXMgVGFibGVDb25maWc8VD47XHJcbiAgICAgIHRoaXMuc2V0VGFibGVDb25maWcoY29uZmlnKTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydkYXRhJ10/LmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICB0aGlzLnNldFRhYmxlRGF0YShjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlIGFzIFRhYmxlRGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYXNUYWJsZVNjcm9sbCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRhYmxlID0gdGhpcy50YWJsZS5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgaG9yaXpvbnRhbFNjcm9sbCA9IHRhYmxlLnNjcm9sbFdpZHRoID4gdGFibGUuY2xpZW50V2lkdGg7XHJcbiAgICBjb25zdCBzY3JvbGxFbmQgPSB0YWJsZS5zY3JvbGxMZWZ0ICsgdGFibGUuY2xpZW50V2lkdGggPj0gdGFibGUuc2Nyb2xsV2lkdGg7XHJcbiAgICB0aGlzLnNjcm9sbFNldHRpbmdzJC5uZXh0KHtcclxuICAgICAgc2Nyb2xsU3RhcnQ6ICF0YWJsZS5zY3JvbGxMZWZ0LFxyXG4gICAgICBzY3JvbGxFbmQsXHJcbiAgICAgIGhvcml6b250YWxTY3JvbGwsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNhbGxSZW5kZXJlcihbcmVuZGVyZXJGbiwgZWxlbWVudF06IFsodjogVCkgPT4gQ29tcG9uZW50UmVuZGVyZXIgfCBzdHJpbmcsIFRdKTogYW55IHtcclxuICAgIGlmIChyZW5kZXJlckZuKSB7XHJcbiAgICAgIHJldHVybiByZW5kZXJlckZuKGVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uUGFnaW5hdG9yQ2hhbmdlKGV2ZW50OiBQYWdlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMucGFnaW5hdG9yQ2hhbmdlLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uQ2hhbmdlQ29sdW1uU2l6ZShjb2x1bW5JbmRleDogbnVtYmVyLCBzaG93VG9vbHRpcDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5jb2x1bW5zVG9vbHRpcFN0YXRlID0gdGhpcy5jb2x1bW5zVG9vbHRpcFN0YXRlLm1hcChjb2x1bW4gPT4ge1xyXG4gICAgICBpZiAoY29sdW1uLmluZGV4ID09PSBjb2x1bW5JbmRleCkge1xyXG4gICAgICAgIGNvbHVtbi5zaG93VG9vbHRpcCA9IHNob3dUb29sdGlwO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb2x1bW47XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvblNvcnRDaGFuZ2Uoc29ydFN0YXRlOiBTb3J0LCBlbWl0RXZlbnQgPSB0cnVlKTogdm9pZCB7XHJcbiAgICBpZiAoZW1pdEV2ZW50KSB7XHJcbiAgICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHNvcnRTdGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudGFibGVDb25maWc/LnNvcnRhYmxlKSB7XHJcbiAgICAgIHRoaXMudGFibGVEYXRhID0gW1xyXG4gICAgICAgIC4uLnRoaXMudGFibGVEYXRhLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGlzQXNjID0gc29ydFN0YXRlLmRpcmVjdGlvbiA9PT0gJ2FzYyc7XHJcbiAgICAgICAgICBjb25zdCBhVmFsID0gYVtzb3J0U3RhdGUuYWN0aXZlXTtcclxuICAgICAgICAgIGNvbnN0IGJWYWwgPSBiW3NvcnRTdGF0ZS5hY3RpdmVdO1xyXG4gICAgICAgICAgcmV0dXJuIChhVmFsIDwgYlZhbCA/IC0xIDogMSkgKiAoaXNBc2MgPyAxIDogLTEpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICBdO1xyXG5cclxuICAgICAgaWYgKCFzb3J0U3RhdGUuZGlyZWN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy50YWJsZURhdGEgPSBbLi4udGhpcy5zb3VyY2VEYXRhXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uUm93Q2xpY2socm93UGFyYW1zOiBhbnksIHJvd0luZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMub25Sb3dDbGlja0V2ZW50LmVtaXQoeyAuLi5yb3dQYXJhbXMsIGluZGV4OiByb3dJbmRleCB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvbkRldGFpbFJvd0NsaWNrKHJvd1BhcmFtczogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uRGV0YWlsUm93Q2xpY2tFdmVudC5lbWl0KHJvd1BhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdG9nZ2xlUm93KGVsZW1lbnQ6IFQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRhYmxlRGV0YWlscykge1xyXG4gICAgICB0aGlzLmVsZW1lbnREZXRhaWwgPSB0aGlzLmVsZW1lbnREZXRhaWwgPT09IGVsZW1lbnQgPyBudWxsIDogZWxlbWVudDtcclxuICAgICAgaWYgKHRoaXMuZWxlbWVudERldGFpbCkge1xyXG4gICAgICAgIHRoaXMudGFibGVEZXRhaWxDb2x1bW5zLnNldERldGFpbFJvd0RhdGEoe1xyXG4gICAgICAgICAgZGF0YTogZWxlbWVudCxcclxuICAgICAgICAgIHNldERldGFpbERhdGFTb3VyY2U6IHRoaXMuc2V0VGFibGVEZXRhaWxEYXRhU291cmNlLmJpbmQodGhpcyksXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VGFibGVEZXRhaWxEYXRhU291cmNlKHJvd0RhdGE6IFREZXRhaWxbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRhU291cmNlRGV0YWlsID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnk+KHJvd0RhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRUYWJsZUNvbmZpZyhjb25maWc6IFRhYmxlQ29uZmlnPFQ+KTogdm9pZCB7XHJcbiAgICBjb25maWcucGFnaW5hdGlvbiA9IGNvbmZpZz8ucGFnaW5hdGlvbiA/PyB0aGlzLmRlZmF1bHRQYWdpbmF0aW9uQ29uZmlnO1xyXG5cclxuICAgIHRoaXMudGFibGVDb25maWcgPSBjb25maWcgYXMgVGFibGVDb25maWdXaXRoUGFnaW5hdGlvbjxUPjtcclxuXHJcbiAgICB0aGlzLmNvbHVtbnNUb29sdGlwU3RhdGUgPSBjb25maWcuY29sdW1ucy5tYXAoKGNvbHVtbiwgaW5kZXgpID0+ICh7XHJcbiAgICAgIGluZGV4LFxyXG4gICAgICBzaG93VG9vbHRpcDogY29sdW1uLnNob3dUb29sdGlwID8/IGZhbHNlLFxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gc29ydEJ5T3JkZXI8VD4oY29uZmlnLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiAhY29sdW1uLmhpZGRlbikpLm1hcChcclxuICAgICAgY29sdW1uID0+IGNvbHVtbi51bmlxdWVJZCA/PyBjb2x1bW4ua2V5XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRUYWJsZURhdGEoZGF0YTogVGFibGVEYXRhKTogdm9pZCB7XHJcbiAgICB0aGlzLnNvdXJjZURhdGEgPSBkYXRhO1xyXG4gICAgdGhpcy50YWJsZURhdGEgPSBkYXRhO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZWZhdWx0UGFnaW5hdGlvbkNvbmZpZzogUGFnaW5hdGlvbiA9IHtcclxuICAgIGN1cnJlbnRQYWdlOiAwLFxyXG4gICAgaXRlbXNQZXJQYWdlOiAxMCxcclxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnM6IFsxMCwgMjUsIDUwXSxcclxuICAgIHRvdGFsSXRlbXM6IDIwLFxyXG4gIH07XHJcblxyXG4gIHRyYWNrQ29sdW1uVW5pcXVlSWQgPSAoaW5kZXg6IG51bWJlciwgY29sdW1uOiBUYWJsZUNvbHVtbjxUPik6IHN0cmluZyA9PiBjb2x1bW4udW5pcXVlSWQgPz8gY29sdW1uLmtleTtcclxufVxyXG4iLCI8ZGl2ICN0YWJsZUNvbnRhaW5lciBjbGFzcz1cInRhYmxlLWNvbnRhaW5lclwiXHJcbiAgICAgW25nQ2xhc3NdPVwieyAnd2l0aG91dC10aXRsZSc6ICF0YWJsZUNvbmZpZz8udGl0bGUsICdkaXNhYmxlLWJvcmRlci1yYWRpdXMnOiBkaXNhYmxlQm9yZGVyUmFkaXVzIH1cIlxyXG4gICAgIFthdHRyLnRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIj5cclxuICA8ZGl2ICpuZ0lmPVwidGFibGVDb25maWc/LnRpdGxlXCIgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIj5cclxuICAgIHt7IHRhYmxlQ29uZmlnLnRpdGxlIHwgc2VudGVuY2VjYXNlIH19XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbdGl0bGUtYWN0aW9uc11cIj48L25nLWNvbnRlbnQ+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgI3RhYmxlXHJcbiAgICAqbmdJZj1cInNjcm9sbFNldHRpbmdzJCB8IGFzeW5jIGFzIHNjcm9sbFNldHRpbmdzXCJcclxuICAgIGNsYXNzPVwidGFibGUtd3JhcHBlclwiXHJcbiAgICBbY2xhc3Muc3RpY2t5LWhlYWRlcl09XCJzdGlja3lIZWFkZXJcIlxyXG4gICAgW3N0eWxlLi0tdGFibGUtbWF4LWhlaWdodF09XCJtYXhIZWlnaHRcIj5cclxuICAgIDx0YWJsZVxyXG4gICAgICBbdGFiSW5kZXhdPVwiMFwiXHJcbiAgICAgIGNsYXNzPVwibWFpbi10YWJsZVwiXHJcbiAgICAgIFtjbGFzcy5jb25kZW5zZWRdPVwiaXNDb25kZW5zZWRcIlxyXG4gICAgICBtYXQtdGFibGVcclxuICAgICAgW2RhdGFTb3VyY2VdPVwidGFibGVEYXRhXCJcclxuICAgICAgbWF0U29ydFxyXG4gICAgICBbbWF0U29ydFN0YXJ0XT1cInRhYmxlQ29uZmlnPy5zb3J0Py5kZWZhdWx0U29ydFN0YXJ0ID8/ICdhc2MnXCJcclxuICAgICAgW21hdFNvcnRBY3RpdmVdPVwidGFibGVDb25maWc/LnNvcnQ/LmFjdGl2ZSA/PyAnJ1wiXHJcbiAgICAgIFttYXRTb3J0RGlyZWN0aW9uXT1cInRhYmxlQ29uZmlnPy5zb3J0Py5kaXJlY3Rpb24gPz8gJydcIlxyXG4gICAgICAobWF0U29ydENoYW5nZSk9XCJvblNvcnRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgIG11bHRpVGVtcGxhdGVEYXRhUm93c1xyXG4gICAgPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdGFibGVDb25maWcuY29sdW1uczsgaW5kZXggYXMgaSwgbGFzdCBhcyBpc0xhc3Q7IHRyYWNrQnk6IHRyYWNrQ29sdW1uVW5pcXVlSWRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNMYXN0ICYmIGNvbHVtbi5pc1N0aWNreSAmJiBjb2x1bW4uYWxsb3dTb3J0XCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLnVuaXF1ZUlkID8/IGNvbHVtbi5rZXlcIiBbc3RpY2t5RW5kXT1cIiFzY3JvbGxTZXR0aW5ncz8uc2Nyb2xsRW5kXCI+XHJcbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGxcclxuICAgICAgICAgICAgICAgIFtzdGFydF09XCJjb2x1bW4uc29ydFN0YXJ0ID8/ICdhc2MnXCJcclxuICAgICAgICAgICAgICAgIFttYXQtc29ydC1oZWFkZXJdPVwiY29sdW1uLnNvcnRIZWFkZXIgPz8gY29sdW1uLmtleVwiXHJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuc29ydGFibGVdPVwiY29sdW1uLmFsbG93U29ydCA/PyBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7d2lkdGg6IGNvbHVtbi5zdHlsZXM/LndpZHRoLCBtaW5XaWR0aDogY29sdW1uLnN0eWxlcz8uWydtaW4td2lkdGgnXX1cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RoLScrY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJydcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cIidib2xkJ1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGNvbHVtbi50aXRsZSwgY29sdW1uLCBjb2xJbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmZpZ1ZhbHVlPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW5IZWFkZXJcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpLCBjb2x1bW4gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICA8dGQgbWF0LWNlbGxcclxuICAgICAgICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCByb3dJbmRleCA9IGRhdGFJbmRleFwiXHJcbiAgICAgICAgICAgICAgICBbYWxpZ25dPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50XCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGQtJytjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ11cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2soZWxlbWVudCwgcm93SW5kZXgpOyBjb2x1bW4/LnJvd0NlbGxUZW1wbGF0ZUNsaWNrID8gY29sdW1uIS5yb3dDZWxsVGVtcGxhdGVDbGljaz8uKCkgOiAnJ1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8dWktc2tlbGV0b24gY2xhc3M9XCJ0YWJsZS1za2VsZXRvbi1sb2FkZXJcIiBbY291bnRdPVwiMVwiIFt0aGVtZV09XCJza2VsZXRvblN0eWxlQ29uZmlnXCIgW2FwcGVhcmFuY2VdPVwiJ2xpbmUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsb2FkaW5nOyBlbHNlIHZhbHVlXCI+PC91aS1za2VsZXRvbj5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3ZhbHVlPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImV4cGFuZEJ1dHRvblwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGluZGV4OiBpLCBlbGVtZW50IH1cIj48L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uPy50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZURhdGFUcGw7IGNvbnRleHQ6IHtlbGVtZW50LCB0YWJsZUNvbHVtbjogY29sdW1ufVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnJvd0NlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLnJvd0NlbGxUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogZWxlbWVudCwgcm93SW5kZXh9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdEYXRhPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBbc3R5bGUuZm9udC13ZWlnaHRdPVwiY29sdW1uLmJvbGQgPyAnYm9sZCcgOiAnbm9ybWFsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemVdPVwiY29sdW1uLmZvbnRTaXplID8/ICcxNHB4J1wiPnt7IGVsZW1lbnQgfCBkYXRhUHJvcGVydHlHZXR0ZXI6IGNvbHVtbi5rZXkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNMYXN0ICYmIGNvbHVtbi5pc1N0aWNreSAmJiAhY29sdW1uLmFsbG93U29ydFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbi51bmlxdWVJZCA/PyBjb2x1bW4ua2V5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0aWNreUVuZF09XCJzY3JvbGxTZXR0aW5ncy5ob3Jpem9udGFsU2Nyb2xsID8gIXNjcm9sbFNldHRpbmdzLnNjcm9sbEVuZCA6IHRydWVcIj5cclxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbFxyXG4gICAgICAgICAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcclxuICAgICAgICAgICAgICAgIFthdHRyLnNvcnRhYmxlXT1cImNvbHVtbi5hbGxvd1NvcnQgPz8gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie3dpZHRoOiBjb2x1bW4uc3R5bGVzPy53aWR0aCwgbWluV2lkdGg6IGNvbHVtbi5zdHlsZXM/LlsnbWluLXdpZHRoJ119XCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA/ICd0aC0nK2NvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA6ICcnXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXdlaWdodF09XCInYm9sZCdcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnVmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4uaGVhZGVyQ2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBjb2x1bW4udGl0bGUsIGNvbHVtbiwgY29sSW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdWYWx1ZT5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uSGVhZGVyXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaSwgY29sdW1uIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3RoPlxyXG5cclxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsXHJcbiAgICAgICAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgcm93SW5kZXggPSBkYXRhSW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgW2FsaWduXT1cImNvbHVtbi5zdHlsZXM/LmFsaWdubWVudFwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJbY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RkLScrY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJyddXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJvd0NsaWNrKGVsZW1lbnQsIHJvd0luZGV4KTsgY29sdW1uPy5yb3dDZWxsVGVtcGxhdGVDbGljayA/IGNvbHVtbiEucm93Q2VsbFRlbXBsYXRlQ2xpY2s/LigpIDogJydcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHVpLXNrZWxldG9uIGNsYXNzPVwidGFibGUtc2tlbGV0b24tbG9hZGVyXCIgW2NvdW50XT1cIjFcIiBbdGhlbWVdPVwic2tlbGV0b25TdHlsZUNvbmZpZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cIidsaW5lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibG9hZGluZzsgZWxzZSB2YWx1ZVwiPjwvdWktc2tlbGV0b24+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN2YWx1ZT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJleHBhbmRCdXR0b25cIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpbmRleDogaSwgZWxlbWVudCB9XCI+PC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbj8udHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVEYXRhVHBsOyBjb250ZXh0OiB7ZWxlbWVudCwgdGFibGVDb2x1bW46IGNvbHVtbn1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5yb3dDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBlbGVtZW50LCByb3dJbmRleCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdEYXRhPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBbc3R5bGUuZm9udC13ZWlnaHRdPVwiY29sdW1uLmJvbGQgPyAnYm9sZCcgOiAnbm9ybWFsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemVdPVwiY29sdW1uLmZvbnRTaXplID8/ICcxNHB4J1wiPnt7IGVsZW1lbnQgfCBkYXRhUHJvcGVydHlHZXR0ZXI6IGNvbHVtbi5rZXkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdJZj1cIiEoaXNMYXN0ICYmIGNvbHVtbi5pc1N0aWNreSkgJiYgY29sdW1uLmFsbG93U29ydFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbi51bmlxdWVJZCA/PyBjb2x1bW4ua2V5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0aWNreV09XCIoaXNNb2JpbGUkIHwgYXN5bmMpID8gZmFsc2UgOiAhc2Nyb2xsU2V0dGluZ3Muc2Nyb2xsU3RhcnQgICYmICEhY29sdW1uLmlzU3RpY2t5XCI+XHJcbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGxcclxuICAgICAgICAgICAgICAgIFtzdGFydF09XCJjb2x1bW4uc29ydFN0YXJ0ID8/ICdhc2MnXCJcclxuICAgICAgICAgICAgICAgIFttYXQtc29ydC1oZWFkZXJdPVwiY29sdW1uLnNvcnRIZWFkZXIgPz8gY29sdW1uLmtleVwiXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5zb3J0YWJsZV09XCJjb2x1bW4uYWxsb3dTb3J0ID8/IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICptYXRIZWFkZXJDZWxsRGVmXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC13ZWlnaHRdPVwiJ2JvbGQnXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInt3aWR0aDogY29sdW1uLnN0eWxlcz8ud2lkdGgsIG1pbldpZHRoOiBjb2x1bW4uc3R5bGVzPy5bJ21pbi13aWR0aCddfVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGgtJytjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhlYWRlckNlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4udGl0bGUsIGNvbHVtbiwgY29sSW5kZXg6IGkgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnVmFsdWU+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbkhlYWRlclwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGksIGNvbHVtbiB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbFxyXG4gICAgICAgICAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IHJvd0luZGV4ID0gZGF0YUluZGV4XCJcclxuICAgICAgICAgICAgICAgIFthbGlnbl09XCJjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnRcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiW2NvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA/ICd0ZC0nK2NvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA6ICcnXVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Sb3dDbGljayhlbGVtZW50LCByb3dJbmRleCk7IGNvbHVtbj8ucm93Q2VsbFRlbXBsYXRlQ2xpY2sgPyBjb2x1bW4hLnJvd0NlbGxUZW1wbGF0ZUNsaWNrPy4oKSA6ICcnXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDx1aS1za2VsZXRvbiBjbGFzcz1cInRhYmxlLXNrZWxldG9uLWxvYWRlclwiIFtjb3VudF09XCIxXCIgW3RoZW1lXT1cInNrZWxldG9uU3R5bGVDb25maWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCInbGluZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImxvYWRpbmc7IGVsc2UgdmFsdWVcIj48L3VpLXNrZWxldG9uPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdmFsdWU+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXhwYW5kQnV0dG9uXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaW5kZXg6IGksIGVsZW1lbnQgfVwiPjwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgQGlmIChjb2x1bW4/LnR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlRGF0YVRwbDsgY29udGV4dDoge2VsZW1lbnQsIHRhYmxlQ29sdW1uOiBjb2x1bW59XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBlbHNlIGNvbmZpZ0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4ucm93Q2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZWxlbWVudCwgcm93SW5kZXggfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZmlnRGF0YT5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gW3N0eWxlLmZvbnQtd2VpZ2h0XT1cImNvbHVtbi5ib2xkID8gJ2JvbGQnIDogJ25vcm1hbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplXT1cImNvbHVtbi5mb250U2l6ZSA/PyAnMTRweCdcIj57eyBlbGVtZW50IHwgZGF0YVByb3BlcnR5R2V0dGVyOiBjb2x1bW4ua2V5IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ0lmPVwiIShpc0xhc3QgJiYgY29sdW1uLmlzU3RpY2t5KSAmJiAhY29sdW1uLmFsbG93U29ydFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbi51bmlxdWVJZCA/PyBjb2x1bW4ua2V5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0aWNreV09XCIoaXNNb2JpbGUkIHwgYXN5bmMpID8gZmFsc2UgOiAhc2Nyb2xsU2V0dGluZ3Muc2Nyb2xsU3RhcnQgJiYgISFjb2x1bW4uaXNTdGlja3lcIj5cclxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbFxyXG4gICAgICAgICAgICAgICAgW2F0dHIuc29ydGFibGVdPVwiY29sdW1uLmFsbG93U29ydCA/PyBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cIidib2xkJ1wiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7d2lkdGg6IGNvbHVtbi5zdHlsZXM/LndpZHRoLCBtaW5XaWR0aDogY29sdW1uLnN0eWxlcz8uWydtaW4td2lkdGgnXX1cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50ID8gJ3RoLScrY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJydcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5oZWFkZXJDZWxsVGVtcGxhdGU7IGVsc2UgY29uZmlnVmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4uaGVhZGVyQ2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uLnRpdGxlLCBjb2x1bW4sIGNvbEluZGV4OiBpIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmZpZ1ZhbHVlPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW5IZWFkZXJcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpLCBjb2x1bW4gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICA8dGQgbWF0LWNlbGxcclxuICAgICAgICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCByb3dJbmRleCA9IGRhdGFJbmRleFwiXHJcbiAgICAgICAgICAgICAgICBbYWxpZ25dPVwiY29sdW1uLnN0eWxlcz8uYWxpZ25tZW50XCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgPyAndGQtJytjb2x1bW4uc3R5bGVzPy5hbGlnbm1lbnQgOiAnJ11cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2soZWxlbWVudCwgcm93SW5kZXgpOyBjb2x1bW4/LnJvd0NlbGxUZW1wbGF0ZUNsaWNrID8gY29sdW1uIS5yb3dDZWxsVGVtcGxhdGVDbGljaz8uKCkgOiAnJ1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8dWktc2tlbGV0b24gY2xhc3M9XCJ0YWJsZS1za2VsZXRvbi1sb2FkZXJcIiBbY291bnRdPVwiMVwiIFt0aGVtZV09XCJza2VsZXRvblN0eWxlQ29uZmlnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiJ2xpbmUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsb2FkaW5nOyBlbHNlIHZhbHVlXCI+PC91aS1za2VsZXRvbj5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3ZhbHVlPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImV4cGFuZEJ1dHRvblwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGluZGV4OiBpLCBlbGVtZW50IH1cIj48L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uPy50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZURhdGFUcGw7IGNvbnRleHQ6IHtlbGVtZW50LCB0YWJsZUNvbHVtbjogY29sdW1ufVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnJvd0NlbGxUZW1wbGF0ZTsgZWxzZSBjb25maWdEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLnJvd0NlbGxUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6ICBlbGVtZW50LCByb3dJbmRleCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb25maWdEYXRhPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBbc3R5bGUuZm9udC13ZWlnaHRdPVwiY29sdW1uLmJvbGQgPyAnYm9sZCcgOiAnbm9ybWFsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5mb250LXNpemVdPVwiY29sdW1uLmZvbnRTaXplID8/ICcxNHB4J1wiPnt7IGVsZW1lbnQgfCBkYXRhUHJvcGVydHlHZXR0ZXI6IGNvbHVtbi5rZXkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJleHBhbmRlZERldGFpbFwiPlxyXG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCIgW2F0dHIuY29sc3Bhbl09XCJkaXNwbGF5ZWRDb2x1bW5zLmxlbmd0aFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVsZW1lbnQtZGV0YWlsXCIgKm5nSWY9XCJkYXRhU291cmNlRGV0YWlsLmRhdGEubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgW0BleHBhbmREZXRhaWxdPVwiZWxlbWVudCA9PT0gZWxlbWVudERldGFpbCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJ1wiPlxyXG4gICAgICAgICAgICA8dGFibGVcclxuICAgICAgICAgICAgICBtYXQtdGFibGVcclxuICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlRGV0YWlsXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdoaWRlLWJvcmRlcnMnOiBlbGVtZW50ID09PSB0YWJsZURhdGFbdGFibGVEYXRhLmxlbmd0aCAtIDFdIH1cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFibGVDb2x1bW4gb2YgdGFibGVEZXRhaWxDb2x1bW5zLmNvbHVtbkRlZnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdENvbHVtbkRlZl09XCJ0YWJsZUNvbHVtbi50aXRsZSA/PyAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj1cImxldCBlbGVtZW50XCIgYXJyb3dQb3NpdGlvbj1cImFmdGVyXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7d2lkdGg6IHRhYmxlQ29sdW1uLnN0eWxlcz8ud2lkdGh9XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0YWJsZUNvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA/ICd0aC0nK3RhYmxlQ29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJydcIj5cclxuICAgICAgICAgICAgICAgICAge3sgdGFibGVDb2x1bW4udGl0bGUgfCB1cHBlcmNhc2UgfX1cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiAoY2xpY2spPVwib25EZXRhaWxSb3dDbGljayhlbGVtZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsaWduXT1cInRhYmxlQ29sdW1uLnN0eWxlcz8uYWxpZ25tZW50XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0YWJsZUNvbHVtbi5zdHlsZXM/LmFsaWdubWVudCA/ICd0ZC0nK3RhYmxlQ29sdW1uLnN0eWxlcz8uYWxpZ25tZW50IDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInt3aWR0aDogdGFibGVDb2x1bW4uc3R5bGVzPy53aWR0aCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZURhdGFUcGw7IGNvbnRleHQ6IHtlbGVtZW50LCB0YWJsZUNvbHVtbn1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29sdW1uc0RldGFpbFRvRGlzcGxheVwiPjwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3dEZXRhaWw7IGNvbHVtbnM6IGNvbHVtbnNEZXRhaWxUb0Rpc3BsYXk7XCI+PC90cj5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlICN0YWJsZURhdGFUcGwgbGV0LWVsZW1lbnQ9XCJlbGVtZW50XCIgbGV0LXRhYmxlQ29sdW1uPVwidGFibGVDb2x1bW5cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWxpZ24td3JhcHBlclwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidGFibGVDb2x1bW4udHlwZVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJEYXRhVHlwZS5GSUVMRFwiPlxyXG4gICAgICAgICAgICAgIHt7IGVsZW1lbnQgfCBkYXRhUHJvcGVydHlHZXR0ZXI6IHRhYmxlQ29sdW1uLmtleSB9fVxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRGF0YVR5cGUuRlVOQ1RJT05cIj5cclxuICAgICAgICAgICAgICB7eyB0YWJsZUNvbHVtbi5mdW5jdGlvbj8uKGVsZW1lbnQpIH19XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJEYXRhVHlwZS5SRU5ERVJFUlwiPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgW2R5bmFtaWNDb21wb25lbnRdPVwiW3RhYmxlQ29sdW1uLnJlbmRlcmVyLCBlbGVtZW50XSB8IG1lbW9pemVGdW5jIDogY2FsbFJlbmRlcmVyXCI+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgICAgICB7eyBlbGVtZW50IHwgZGF0YVByb3BlcnR5R2V0dGVyOiB0YWJsZUNvbHVtbi5rZXkgfX1cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uczsgc3RpY2t5OiBzdGlja3lIZWFkZXJcIiBbY2xhc3MuaXMtdGl0bGUtcHJlc2VudF09XCJ0YWJsZUNvbmZpZy50aXRsZVwiPjwvdHI+XHJcbiAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zO1wiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J2V4cGFuZGVkLXJvdyc6IGVsZW1lbnREZXRhaWwgPT09IHJvdywgJ3Jvdy1jbGlja2FibGUnOiB0YWJsZURldGFpbHMsICdzZWxlY3RlZCc6IHJvdz8uc2VsZWN0ZWQsICdsYXN0LXJvdyc6IHJvdyA9PT0gdGFibGVEYXRhW3RhYmxlRGF0YS5sZW5ndGggLSAxXSAmJiAhZWxlbWVudERldGFpbCB9XCJcclxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSb3cocm93KVwiPlxyXG4gICAgICA8L3RyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGVEZXRhaWxzICYmIHRhYmxlRGV0YWlsQ29sdW1ucz8uY29sdW1uRGVmcz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IFsnZXhwYW5kZWREZXRhaWwnXVwiIGNsYXNzPVwiZGV0YWlsLXJvd1wiPjwvdHI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYmxlQ29uZmlnLm5vRGF0YVJvd1RwbFwiPlxyXG4gICAgICAgIDx0ciAqbWF0Tm9EYXRhUm93PlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ29uZmlnLm5vRGF0YVJvd1RwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC90YWJsZT5cclxuICA8L2Rpdj5cclxuXHJcbiAgPHVpLXBhZ2luYXRvclxyXG4gICAgKm5nSWY9XCIhdGFibGVDb25maWc/LmhpZGVQYWdpbmF0aW9uICYmIHRhYmxlQ29uZmlnPy5wYWdpbmF0aW9uXCJcclxuICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcclxuICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWUgIT09ICdjbGFzc2ljJyA/ICdsaWdodCcgOiAnY2xhc3NpYydcIlxyXG4gICAgW3BhZ2VTaXplXT1cInRhYmxlQ29uZmlnLnBhZ2luYXRpb24/Lml0ZW1zUGVyUGFnZSA/PyAyNVwiXHJcbiAgICBbbGVuZ3RoXT1cInRhYmxlQ29uZmlnLnBhZ2luYXRpb24/LnRvdGFsSXRlbXMgPz8gMFwiXHJcbiAgICBbY3VycmVudFBhZ2VdPVwidGFibGVDb25maWcucGFnaW5hdGlvbj8uY3VycmVudFBhZ2UgPz8gMFwiXHJcbiAgICBbcGFnZVNpemVPcHRpb25zXT1cInRhYmxlQ29uZmlnLnBhZ2luYXRpb24/Lml0ZW1zUGVyUGFnZU9wdGlvbnMgPz8gWzEwLCAyNSwgNTBdXCJcclxuICAgIChwYWdpbmF0b3JDaGFuZ2UpPVwib25QYWdpbmF0b3JDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgPjwvdWktcGFnaW5hdG9yPlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZXhwYW5kQnV0dG9uIGxldC1pPVwiaW5kZXhcIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIj5cclxuICA8dWktYnV0dG9uXHJcbiAgICBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCJcclxuICAgICpuZ0lmPVwiIWkgJiYgdGFibGVEZXRhaWxzXCJcclxuICAgIHZhcmlhbnQ9XCJpY29uLWJ1dHRvblwiXHJcbiAgICBbbmdDbGFzc109XCJ7IG9wZW5lZDogZWxlbWVudERldGFpbCAmJiBlbGVtZW50ID09IGVsZW1lbnREZXRhaWwgfVwiXHJcbiAgICBbaWNvbk5hbWVdPVwiZWxlbWVudERldGFpbCAmJiBlbGVtZW50ID09IGVsZW1lbnREZXRhaWwgPyAnQXJyb3ctY2hldnJvbi11cC1pbi1saW5lJyA6ICdBcnJvdy1jaGV2cm9uLWRvd24taW4tbGluZSdcIlxyXG4gID48L3VpLWJ1dHRvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29sdW1uSGVhZGVyIGxldC1jb2x1bW49XCJjb2x1bW5cIiBsZXQtaT1cImlcIj5cclxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiB1aUVsbGlwc2VUZXh0IChvbkNoYW5nZVRleHRTdGF0ZSk9XCJvbkNoYW5nZUNvbHVtblNpemUoaSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2x1bW4tdGl0bGVcIj57eyBjb2x1bW4udGl0bGUgfCBzZW50ZW5jZWNhc2UgfX1cclxuICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICA8dWktaWNvbiAqbmdJZj1cImNvbHVtbj8uc2hvd1Rvb2x0aXBcIiBbbmFtZV09XCInSGVscC1pbi1saW5lJ1wiXHJcbiAgICAgICAgICAgICBbbWF0VG9vbHRpcENsYXNzXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxyXG4gICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKGNvbHVtbj8uc2hvd1Rvb2x0aXAgPyAoY29sdW1uPy50b29sdGlwID8gY29sdW1uLnRvb2x0aXAgOiBjb2x1bW4udGl0bGUgKSA6ICcnKSB8fCAnJ1wiXHJcbiAgICA+PC91aS1pY29uPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuIl19