nuxeo-development-framework 5.3.0 → 5.3.2

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 (245) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +3143 -604
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/reports/charts/chart.const.js +3 -0
  4. package/esm2015/lib/components/reports/charts/chart.token.js +3 -0
  5. package/esm2015/lib/components/reports/charts/charts.module.js +19 -0
  6. package/esm2015/lib/components/reports/charts/components/base-chart.component.js +41 -0
  7. package/esm2015/lib/components/reports/charts/components/chart.component.js +127 -0
  8. package/esm2015/lib/components/reports/charts/components/data-chart.component.js +167 -0
  9. package/esm2015/lib/components/reports/charts/components/index.js +4 -0
  10. package/esm2015/lib/components/reports/charts/defaults/bar.js +18 -0
  11. package/esm2015/lib/components/reports/charts/defaults/doughnut.js +15 -0
  12. package/esm2015/lib/components/reports/charts/defaults/index.js +5 -0
  13. package/esm2015/lib/components/reports/charts/defaults/line.js +25 -0
  14. package/esm2015/lib/components/reports/charts/defaults/pie.js +15 -0
  15. package/esm2015/lib/components/reports/charts/index.js +2 -0
  16. package/esm2015/lib/components/reports/charts/models/index.js +5 -0
  17. package/esm2015/lib/components/reports/charts/models/options.js +2 -0
  18. package/esm2015/lib/components/reports/charts/models/plugins-options.js +2 -0
  19. package/esm2015/lib/components/reports/charts/models/response.js +2 -0
  20. package/esm2015/lib/components/reports/charts/models/statistic-request-config.js +2 -0
  21. package/esm2015/lib/components/reports/charts/plugins/data-labels.js +144 -0
  22. package/esm2015/lib/components/reports/charts/plugins/doughnut-center-text.js +25 -0
  23. package/esm2015/lib/components/reports/charts/plugins/doughnut-empty-state.js +34 -0
  24. package/esm2015/lib/components/reports/charts/plugins/index.js +6 -0
  25. package/esm2015/lib/components/reports/charts/plugins/legend-margin.js +16 -0
  26. package/esm2015/lib/components/reports/charts/plugins/scrollable-legends.js +67 -0
  27. package/esm2015/lib/components/reports/charts/public-api.js +10 -0
  28. package/esm2015/lib/components/reports/charts/services/index.js +2 -0
  29. package/esm2015/lib/components/reports/charts/services/statistic.service.js +75 -0
  30. package/esm2015/lib/components/reports/charts/utility/colors.js +74 -0
  31. package/esm2015/lib/components/reports/charts/utility/common.js +7 -0
  32. package/esm2015/lib/components/reports/charts/utility/css.js +132 -0
  33. package/esm2015/lib/components/reports/charts/utility/index.js +4 -0
  34. package/esm2015/lib/components/reports/ndf-reports/base/base-chart.js +53 -0
  35. package/esm2015/lib/components/reports/ndf-reports/base/base-graph.report.js +37 -0
  36. package/esm2015/lib/components/reports/ndf-reports/base/base-report.js +68 -0
  37. package/esm2015/lib/components/reports/ndf-reports/charts-components/digit-chart/digit-chart.component.js +36 -0
  38. package/esm2015/lib/components/reports/ndf-reports/charts-components/graph-chart/graph-chart.component.js +65 -0
  39. package/esm2015/lib/components/reports/ndf-reports/charts-components/graph-chart/graph-chart.service.js +14 -0
  40. package/esm2015/lib/components/reports/ndf-reports/charts-components/index.js +3 -0
  41. package/esm2015/lib/components/reports/ndf-reports/components/_parts/chart-type-selector/chart-type-selector.component.js +71 -0
  42. package/esm2015/lib/components/reports/ndf-reports/components/_parts/graph-dialog/graph-dialog.component.js +66 -0
  43. package/esm2015/lib/components/reports/ndf-reports/components/_parts/index.js +5 -0
  44. package/esm2015/lib/components/reports/ndf-reports/components/_parts/time-group-selector/time-group-selector.component.js +55 -0
  45. package/esm2015/lib/components/reports/ndf-reports/components/_parts/timeline-dialog/timeline-dialog.component.js +47 -0
  46. package/esm2015/lib/components/reports/ndf-reports/components/chart-panel.component.js +61 -0
  47. package/esm2015/lib/components/reports/ndf-reports/components/digit-report/digit-report.component.js +25 -0
  48. package/esm2015/lib/components/reports/ndf-reports/components/dynamic-timeline-report/dynamic-timeline-report.component.js +73 -0
  49. package/esm2015/lib/components/reports/ndf-reports/components/graph-report/graph-report.component.js +61 -0
  50. package/esm2015/lib/components/reports/ndf-reports/components/index.js +6 -0
  51. package/esm2015/lib/components/reports/ndf-reports/constants/charts-types.js +13 -0
  52. package/esm2015/lib/components/reports/ndf-reports/constants/index.js +3 -0
  53. package/esm2015/lib/components/reports/ndf-reports/constants/time-group.js +7 -0
  54. package/esm2015/lib/components/reports/ndf-reports/containers/index.js +3 -0
  55. package/esm2015/lib/components/reports/ndf-reports/containers/ndf-report/ndf-report.component.js +42 -0
  56. package/esm2015/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.js +245 -0
  57. package/esm2015/lib/components/reports/ndf-reports/directives/index.js +2 -0
  58. package/esm2015/lib/components/reports/ndf-reports/directives/scrollable-div.directive.js +35 -0
  59. package/esm2015/lib/components/reports/ndf-reports/index.js +2 -0
  60. package/esm2015/lib/components/reports/ndf-reports/models/base.js +2 -0
  61. package/esm2015/lib/components/reports/ndf-reports/models/common.js +2 -0
  62. package/esm2015/lib/components/reports/ndf-reports/models/details.js +2 -0
  63. package/esm2015/lib/components/reports/ndf-reports/models/dialog-data.js +2 -0
  64. package/esm2015/lib/components/reports/ndf-reports/models/digit.js +2 -0
  65. package/esm2015/lib/components/reports/ndf-reports/models/dynamic-line.js +2 -0
  66. package/esm2015/lib/components/reports/ndf-reports/models/graph.js +2 -0
  67. package/esm2015/lib/components/reports/ndf-reports/models/index.js +13 -0
  68. package/esm2015/lib/components/reports/ndf-reports/models/ndf-reports.config.js +2 -0
  69. package/esm2015/lib/components/reports/ndf-reports/models/report-config.js +2 -0
  70. package/esm2015/lib/components/reports/ndf-reports/models/report-data-source.js +2 -0
  71. package/esm2015/lib/components/reports/ndf-reports/models/report-response.model.js +2 -0
  72. package/esm2015/lib/components/reports/ndf-reports/models/request.js +2 -0
  73. package/esm2015/lib/components/reports/ndf-reports/ndf-reports.module.js +101 -0
  74. package/esm2015/lib/components/reports/ndf-reports/options/doughnut.js +29 -0
  75. package/esm2015/lib/components/reports/ndf-reports/options/horizontal-bar.js +48 -0
  76. package/esm2015/lib/components/reports/ndf-reports/options/index.js +7 -0
  77. package/esm2015/lib/components/reports/ndf-reports/options/line.js +41 -0
  78. package/esm2015/lib/components/reports/ndf-reports/options/options.js +15 -0
  79. package/esm2015/lib/components/reports/ndf-reports/options/pie.js +28 -0
  80. package/esm2015/lib/components/reports/ndf-reports/options/vertical-bar.js +41 -0
  81. package/esm2015/lib/components/reports/ndf-reports/public-api.js +6 -0
  82. package/esm2015/lib/components/reports/ndf-reports/services/base-chart-builder.service.js +103 -0
  83. package/esm2015/lib/components/reports/ndf-reports/services/chart-data-transformers.service.js +97 -0
  84. package/esm2015/lib/components/reports/ndf-reports/services/chart-manager.service.js +131 -0
  85. package/esm2015/lib/components/reports/ndf-reports/services/chart-plugins-registry.service.js +49 -0
  86. package/esm2015/lib/components/reports/ndf-reports/services/digit-chart.service.js +42 -0
  87. package/esm2015/lib/components/reports/ndf-reports/services/dynamic-timeline-report.service.js +72 -0
  88. package/esm2015/lib/components/reports/ndf-reports/services/index.js +11 -0
  89. package/esm2015/lib/components/reports/ndf-reports/services/ndf-reports.service.js +49 -0
  90. package/esm2015/lib/components/reports/ndf-reports/services/report-config-mapper.service.js +82 -0
  91. package/esm2015/lib/components/reports/ndf-reports/services/report-transform.service.js +98 -0
  92. package/esm2015/lib/components/reports/ndf-reports/services/reports-state.service.js +19 -0
  93. package/esm2015/lib/components/reports/ndf-reports/utilities/index.js +2 -0
  94. package/esm2015/lib/components/reports/ndf-reports/utilities/reports-table.mapper.js +44 -0
  95. package/esm2015/lib/components/spell-checker-field/spell-checker-field.module.js +1 -1
  96. package/esm2015/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.js +81 -33
  97. package/esm2015/lib/components/tables/ndf-table/filters-panel/index.js +1 -2
  98. package/esm2015/lib/components/tables/ndf-table/filters-panel/models/types-helper.js +1 -1
  99. package/esm2015/lib/components/tables/ndf-table/filters-panel/services/aggregation-field.service.js +2 -2
  100. package/esm2015/lib/components/tables/ndf-table/filters-panel/services/index.js +1 -2
  101. package/esm2015/lib/components/tables/ndf-table/ndf-table.module.js +2 -2
  102. package/esm2015/lib/components/tables/ndf-table/services/index.js +2 -1
  103. package/esm2015/lib/components/tables/ndf-table/services/ndf-table-configuration.service.js +28 -0
  104. package/esm2015/lib/core/env/env-manager.js +1 -1
  105. package/esm2015/lib/core/services/index.js +2 -1
  106. package/esm2015/lib/core/services/ndf-transform.service.js +80 -0
  107. package/esm2015/lib/shared/components/index.js +3 -3
  108. package/esm2015/lib/shared/services/index.js +2 -2
  109. package/esm2015/public-api.js +8 -6
  110. package/fesm2015/nuxeo-development-framework.js +2778 -437
  111. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  112. package/lib/components/{charts → reports/charts}/components/base-chart.component.d.ts +1 -1
  113. package/lib/components/reports/charts/index.d.ts +1 -0
  114. package/lib/components/reports/charts/plugins/data-labels.d.ts +3 -0
  115. package/lib/components/{charts → reports/charts}/plugins/index.d.ts +2 -0
  116. package/lib/components/reports/charts/plugins/scrollable-legends.d.ts +6 -0
  117. package/lib/components/{charts → reports/charts}/services/statistic.service.d.ts +2 -2
  118. package/lib/components/reports/charts/utility/css.d.ts +45 -0
  119. package/lib/components/{charts → reports/charts}/utility/index.d.ts +1 -0
  120. package/lib/components/reports/ndf-reports/base/base-chart.d.ts +27 -0
  121. package/lib/components/reports/ndf-reports/base/base-graph.report.d.ts +19 -0
  122. package/lib/components/reports/ndf-reports/base/base-report.d.ts +58 -0
  123. package/lib/components/reports/ndf-reports/charts-components/digit-chart/digit-chart.component.d.ts +14 -0
  124. package/lib/components/reports/ndf-reports/charts-components/graph-chart/graph-chart.component.d.ts +23 -0
  125. package/lib/components/reports/ndf-reports/charts-components/graph-chart/graph-chart.service.d.ts +6 -0
  126. package/lib/components/reports/ndf-reports/charts-components/index.d.ts +2 -0
  127. package/lib/components/reports/ndf-reports/components/_parts/chart-type-selector/chart-type-selector.component.d.ts +23 -0
  128. package/lib/components/reports/ndf-reports/components/_parts/graph-dialog/graph-dialog.component.d.ts +17 -0
  129. package/lib/components/reports/ndf-reports/components/_parts/index.d.ts +4 -0
  130. package/lib/components/reports/ndf-reports/components/_parts/time-group-selector/time-group-selector.component.d.ts +21 -0
  131. package/lib/components/reports/ndf-reports/components/_parts/timeline-dialog/timeline-dialog.component.d.ts +19 -0
  132. package/lib/components/reports/ndf-reports/components/chart-panel.component.d.ts +13 -0
  133. package/lib/components/reports/ndf-reports/components/digit-report/digit-report.component.d.ts +7 -0
  134. package/lib/components/reports/ndf-reports/components/dynamic-timeline-report/dynamic-timeline-report.component.d.ts +20 -0
  135. package/lib/components/reports/ndf-reports/components/graph-report/graph-report.component.d.ts +12 -0
  136. package/lib/components/reports/ndf-reports/components/index.d.ts +5 -0
  137. package/lib/components/reports/ndf-reports/constants/charts-types.d.ts +12 -0
  138. package/lib/components/reports/ndf-reports/constants/index.d.ts +2 -0
  139. package/lib/components/reports/ndf-reports/constants/time-group.d.ts +6 -0
  140. package/lib/components/reports/ndf-reports/containers/index.d.ts +2 -0
  141. package/lib/components/reports/ndf-reports/containers/ndf-report/ndf-report.component.d.ts +32 -0
  142. package/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.d.ts +92 -0
  143. package/lib/components/reports/ndf-reports/directives/index.d.ts +1 -0
  144. package/lib/components/reports/ndf-reports/directives/scrollable-div.directive.d.ts +14 -0
  145. package/lib/components/reports/ndf-reports/index.d.ts +1 -0
  146. package/lib/components/reports/ndf-reports/models/base.d.ts +18 -0
  147. package/lib/components/reports/ndf-reports/models/common.d.ts +20 -0
  148. package/lib/components/reports/ndf-reports/models/details.d.ts +16 -0
  149. package/lib/components/reports/ndf-reports/models/dialog-data.d.ts +12 -0
  150. package/lib/components/reports/ndf-reports/models/digit.d.ts +17 -0
  151. package/lib/components/reports/ndf-reports/models/dynamic-line.d.ts +52 -0
  152. package/lib/components/reports/ndf-reports/models/graph.d.ts +56 -0
  153. package/lib/components/reports/ndf-reports/models/index.d.ts +12 -0
  154. package/lib/components/reports/ndf-reports/models/ndf-reports.config.d.ts +22 -0
  155. package/lib/components/reports/ndf-reports/models/report-config.d.ts +5 -0
  156. package/lib/components/reports/ndf-reports/models/report-data-source.d.ts +7 -0
  157. package/lib/components/reports/ndf-reports/models/report-response.model.d.ts +4 -0
  158. package/lib/components/reports/ndf-reports/models/request.d.ts +10 -0
  159. package/lib/components/reports/ndf-reports/ndf-reports.module.d.ts +34 -0
  160. package/lib/components/reports/ndf-reports/options/doughnut.d.ts +7 -0
  161. package/lib/components/reports/ndf-reports/options/horizontal-bar.d.ts +7 -0
  162. package/lib/components/reports/ndf-reports/options/index.d.ts +6 -0
  163. package/lib/components/reports/ndf-reports/options/line.d.ts +7 -0
  164. package/lib/components/reports/ndf-reports/options/options.d.ts +2 -0
  165. package/lib/components/reports/ndf-reports/options/pie.d.ts +7 -0
  166. package/lib/components/reports/ndf-reports/options/vertical-bar.d.ts +7 -0
  167. package/lib/components/reports/ndf-reports/public-api.d.ts +5 -0
  168. package/lib/components/reports/ndf-reports/services/base-chart-builder.service.d.ts +59 -0
  169. package/lib/components/reports/ndf-reports/services/chart-data-transformers.service.d.ts +68 -0
  170. package/lib/components/reports/ndf-reports/services/chart-manager.service.d.ts +18 -0
  171. package/lib/components/reports/ndf-reports/services/chart-plugins-registry.service.d.ts +34 -0
  172. package/lib/components/reports/ndf-reports/services/digit-chart.service.d.ts +11 -0
  173. package/lib/components/reports/ndf-reports/services/dynamic-timeline-report.service.d.ts +32 -0
  174. package/lib/components/reports/ndf-reports/services/index.d.ts +10 -0
  175. package/lib/components/reports/ndf-reports/services/ndf-reports.service.d.ts +19 -0
  176. package/lib/components/reports/ndf-reports/services/report-config-mapper.service.d.ts +34 -0
  177. package/lib/components/reports/ndf-reports/services/report-transform.service.d.ts +18 -0
  178. package/lib/components/reports/ndf-reports/services/reports-state.service.d.ts +7 -0
  179. package/lib/components/reports/ndf-reports/utilities/index.d.ts +1 -0
  180. package/lib/components/reports/ndf-reports/utilities/reports-table.mapper.d.ts +3 -0
  181. package/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.d.ts +33 -14
  182. package/lib/components/tables/ndf-table/filters-panel/index.d.ts +0 -1
  183. package/lib/components/tables/ndf-table/filters-panel/models/types-helper.d.ts +1 -9
  184. package/lib/components/tables/ndf-table/filters-panel/services/aggregation-field.service.d.ts +1 -1
  185. package/lib/components/tables/ndf-table/filters-panel/services/index.d.ts +0 -1
  186. package/lib/components/tables/ndf-table/services/index.d.ts +1 -0
  187. package/lib/components/tables/ndf-table/services/ndf-table-configuration.service.d.ts +14 -0
  188. package/lib/core/env/env-manager.d.ts +1 -0
  189. package/lib/core/services/index.d.ts +1 -0
  190. package/lib/{components/tables/ndf-table/filters-panel → core}/services/ndf-transform.service.d.ts +7 -1
  191. package/lib/shared/components/index.d.ts +2 -2
  192. package/lib/shared/services/index.d.ts +1 -1
  193. package/package.json +1 -1
  194. package/public-api.d.ts +7 -5
  195. package/esm2015/lib/components/charts/chart.const.js +0 -3
  196. package/esm2015/lib/components/charts/chart.token.js +0 -3
  197. package/esm2015/lib/components/charts/charts.module.js +0 -19
  198. package/esm2015/lib/components/charts/components/base-chart.component.js +0 -41
  199. package/esm2015/lib/components/charts/components/chart.component.js +0 -127
  200. package/esm2015/lib/components/charts/components/data-chart.component.js +0 -167
  201. package/esm2015/lib/components/charts/components/index.js +0 -4
  202. package/esm2015/lib/components/charts/defaults/bar.js +0 -18
  203. package/esm2015/lib/components/charts/defaults/doughnut.js +0 -15
  204. package/esm2015/lib/components/charts/defaults/index.js +0 -5
  205. package/esm2015/lib/components/charts/defaults/line.js +0 -25
  206. package/esm2015/lib/components/charts/defaults/pie.js +0 -15
  207. package/esm2015/lib/components/charts/index.js +0 -10
  208. package/esm2015/lib/components/charts/models/index.js +0 -5
  209. package/esm2015/lib/components/charts/models/options.js +0 -2
  210. package/esm2015/lib/components/charts/models/plugins-options.js +0 -2
  211. package/esm2015/lib/components/charts/models/response.js +0 -2
  212. package/esm2015/lib/components/charts/models/statistic-request-config.js +0 -2
  213. package/esm2015/lib/components/charts/plugins/doughnut-center-text.js +0 -25
  214. package/esm2015/lib/components/charts/plugins/doughnut-empty-state.js +0 -34
  215. package/esm2015/lib/components/charts/plugins/index.js +0 -4
  216. package/esm2015/lib/components/charts/plugins/legend-margin.js +0 -16
  217. package/esm2015/lib/components/charts/services/index.js +0 -2
  218. package/esm2015/lib/components/charts/services/statistic.service.js +0 -75
  219. package/esm2015/lib/components/charts/utility/colors.js +0 -79
  220. package/esm2015/lib/components/charts/utility/common.js +0 -7
  221. package/esm2015/lib/components/charts/utility/index.js +0 -3
  222. package/esm2015/lib/components/tables/ndf-table/filters-panel/services/ndf-transform.service.js +0 -80
  223. /package/lib/components/{charts → reports/charts}/chart.const.d.ts +0 -0
  224. /package/lib/components/{charts → reports/charts}/chart.token.d.ts +0 -0
  225. /package/lib/components/{charts → reports/charts}/charts.module.d.ts +0 -0
  226. /package/lib/components/{charts → reports/charts}/components/chart.component.d.ts +0 -0
  227. /package/lib/components/{charts → reports/charts}/components/data-chart.component.d.ts +0 -0
  228. /package/lib/components/{charts → reports/charts}/components/index.d.ts +0 -0
  229. /package/lib/components/{charts → reports/charts}/defaults/bar.d.ts +0 -0
  230. /package/lib/components/{charts → reports/charts}/defaults/doughnut.d.ts +0 -0
  231. /package/lib/components/{charts → reports/charts}/defaults/index.d.ts +0 -0
  232. /package/lib/components/{charts → reports/charts}/defaults/line.d.ts +0 -0
  233. /package/lib/components/{charts → reports/charts}/defaults/pie.d.ts +0 -0
  234. /package/lib/components/{charts → reports/charts}/models/index.d.ts +0 -0
  235. /package/lib/components/{charts → reports/charts}/models/options.d.ts +0 -0
  236. /package/lib/components/{charts → reports/charts}/models/plugins-options.d.ts +0 -0
  237. /package/lib/components/{charts → reports/charts}/models/response.d.ts +0 -0
  238. /package/lib/components/{charts → reports/charts}/models/statistic-request-config.d.ts +0 -0
  239. /package/lib/components/{charts → reports/charts}/plugins/doughnut-center-text.d.ts +0 -0
  240. /package/lib/components/{charts → reports/charts}/plugins/doughnut-empty-state.d.ts +0 -0
  241. /package/lib/components/{charts → reports/charts}/plugins/legend-margin.d.ts +0 -0
  242. /package/lib/components/{charts/index.d.ts → reports/charts/public-api.d.ts} +0 -0
  243. /package/lib/components/{charts → reports/charts}/services/index.d.ts +0 -0
  244. /package/lib/components/{charts → reports/charts}/utility/colors.d.ts +0 -0
  245. /package/lib/components/{charts → reports/charts}/utility/common.d.ts +0 -0
@@ -0,0 +1,19 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ReportsStateService {
4
+ constructor() {
5
+ this.contentScrolled = false;
6
+ }
7
+ onContentScroll(isScrolling) {
8
+ this.contentScrolled = isScrolling;
9
+ }
10
+ }
11
+ ReportsStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ReportsStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
12
+ ReportsStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ReportsStateService, providedIn: 'root' });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ReportsStateService, decorators: [{
14
+ type: Injectable,
15
+ args: [{
16
+ providedIn: 'root'
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0cy1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnRzL25kZi1yZXBvcnRzL3NlcnZpY2VzL3JlcG9ydHMtc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sbUJBQW1CO0lBSGhDO1FBSUMsb0JBQWUsR0FBRyxLQUFLLENBQUM7S0FLeEI7SUFIQSxlQUFlLENBQUMsV0FBb0I7UUFDbkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUM7SUFDcEMsQ0FBQzs7aUhBTFcsbUJBQW1CO3FIQUFuQixtQkFBbUIsY0FGbkIsTUFBTTs0RkFFTixtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVwb3J0c1N0YXRlU2VydmljZSB7XHJcblx0Y29udGVudFNjcm9sbGVkID0gZmFsc2U7XHJcblxyXG5cdG9uQ29udGVudFNjcm9sbChpc1Njcm9sbGluZzogYm9vbGVhbikge1xyXG5cdFx0dGhpcy5jb250ZW50U2Nyb2xsZWQgPSBpc1Njcm9sbGluZztcclxuXHR9XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './reports-table.mapper';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydHMvbmRmLXJlcG9ydHMvdXRpbGl0aWVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3JlcG9ydHMtdGFibGUubWFwcGVyJztcclxuIl19
@@ -0,0 +1,44 @@
1
+ import _ from 'lodash';
2
+ export function mapToNdfTableConfig(report, details) {
3
+ var _a, _b, _c, _d;
4
+ const _request = report.request;
5
+ const _detailsConfig = _.merge((_a = report.reports) === null || _a === void 0 ? void 0 : _a.details, details);
6
+ const customUrl = _.merge({
7
+ url: `/api/v1${_request === null || _request === void 0 ? void 0 : _request.customUrl.url}`,
8
+ method: _request === null || _request === void 0 ? void 0 : _request.customUrl.method
9
+ }, ((_b = _detailsConfig === null || _detailsConfig === void 0 ? void 0 : _detailsConfig.request) === null || _b === void 0 ? void 0 : _b.customUrl) || {});
10
+ const _headers = _request.headers || ((_c = _detailsConfig.request) === null || _c === void 0 ? void 0 : _c.headers) || {};
11
+ const _queryParam = _request.params || ((_d = _detailsConfig.request) === null || _d === void 0 ? void 0 : _d.params) || {};
12
+ const _sortingBy = _.merge({
13
+ sortBy: 'dc:modified',
14
+ sortOrder: 'desc'
15
+ }, _detailsConfig.sortingBy || {});
16
+ const data = {
17
+ options: {
18
+ columns: _detailsConfig.columnsOptions,
19
+ filters: {
20
+ mode: 'payload',
21
+ fields: [],
22
+ panel: {
23
+ visible: false,
24
+ toggleButton: false
25
+ }
26
+ },
27
+ export: _detailsConfig === null || _detailsConfig === void 0 ? void 0 : _detailsConfig.export
28
+ },
29
+ pageNumber: 1,
30
+ pageSize: 10,
31
+ fullWidth: 'auto',
32
+ prefix: _detailsConfig.prefix || '',
33
+ fields: (_detailsConfig === null || _detailsConfig === void 0 ? void 0 : _detailsConfig.fields) || {},
34
+ pageProvider: _request.pageProvider || _detailsConfig.request.pageProvider,
35
+ columns: _detailsConfig.columns || [],
36
+ customUrl: customUrl,
37
+ headers: _headers,
38
+ queryParam: _queryParam,
39
+ quickFilters: _detailsConfig.quickFilters,
40
+ sortingBy: _sortingBy
41
+ };
42
+ return data;
43
+ }
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0cy10YWJsZS5tYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydHMvbmRmLXJlcG9ydHMvdXRpbGl0aWVzL3JlcG9ydHMtdGFibGUubWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUd2QixNQUFNLFVBQVUsbUJBQW1CLENBQUMsTUFBd0IsRUFBRSxPQUE0Qjs7SUFDekYsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUVoQyxNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQUEsTUFBTSxDQUFDLE9BQU8sMENBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWpFLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQ3hCO1FBQ0MsR0FBRyxFQUFFLFVBQVUsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDeEMsTUFBTSxFQUFFLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxTQUFTLENBQUMsTUFBYTtLQUN6QyxFQUNELENBQUEsTUFBQSxjQUFjLGFBQWQsY0FBYyx1QkFBZCxjQUFjLENBQUUsT0FBTywwQ0FBRSxTQUFTLEtBQUksRUFBRSxDQUN4QyxDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sS0FBSSxNQUFBLGNBQWMsQ0FBQyxPQUFPLDBDQUFFLE9BQU8sQ0FBQSxJQUFJLEVBQUUsQ0FBQztJQUMzRSxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsTUFBTSxLQUFJLE1BQUEsY0FBYyxDQUFDLE9BQU8sMENBQUUsTUFBTSxDQUFBLElBQUksRUFBRSxDQUFDO0lBRTVFLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQ3pCO1FBQ0MsTUFBTSxFQUFFLGFBQWE7UUFDckIsU0FBUyxFQUFFLE1BQU07S0FDakIsRUFDRCxjQUFjLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FDOUIsQ0FBQztJQUVGLE1BQU0sSUFBSSxHQUFtQjtRQUM1QixPQUFPLEVBQUU7WUFDUixPQUFPLEVBQUUsY0FBYyxDQUFDLGNBQWM7WUFDdEMsT0FBTyxFQUFFO2dCQUNSLElBQUksRUFBRSxTQUFTO2dCQUNmLE1BQU0sRUFBRSxFQUFFO2dCQUNWLEtBQUssRUFBRTtvQkFDTixPQUFPLEVBQUUsS0FBSztvQkFDZCxZQUFZLEVBQUUsS0FBSztpQkFDbkI7YUFDRDtZQUNELE1BQU0sRUFBRSxjQUFjLGFBQWQsY0FBYyx1QkFBZCxjQUFjLENBQUUsTUFBTTtTQUM5QjtRQUNELFVBQVUsRUFBRSxDQUFDO1FBQ2IsUUFBUSxFQUFFLEVBQUU7UUFDWixTQUFTLEVBQUUsTUFBTTtRQUNqQixNQUFNLEVBQUUsY0FBYyxDQUFDLE1BQU0sSUFBSSxFQUFFO1FBQ25DLE1BQU0sRUFBRSxDQUFBLGNBQWMsYUFBZCxjQUFjLHVCQUFkLGNBQWMsQ0FBRSxNQUFNLEtBQUksRUFBRTtRQUNwQyxZQUFZLEVBQUUsUUFBUSxDQUFDLFlBQVksSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLFlBQVk7UUFDMUUsT0FBTyxFQUFFLGNBQWMsQ0FBQyxPQUFPLElBQUksRUFBRTtRQUNyQyxTQUFTLEVBQUUsU0FBUztRQUNwQixPQUFPLEVBQUUsUUFBUTtRQUNqQixVQUFVLEVBQUUsV0FBVztRQUN2QixZQUFZLEVBQUUsY0FBYyxDQUFDLFlBQVk7UUFDekMsU0FBUyxFQUFFLFVBQVU7S0FDckIsQ0FBQztJQUVGLE9BQU8sSUFBSSxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5kZlRhYmxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vdGFibGVzL25kZi10YWJsZS9tb2RlbHMnO1xyXG5cclxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgTmRmUmVwb3J0c0NvbmZpZywgUmVwb3J0RGV0YWlsc0NvbmZpZyB9IGZyb20gJy4uL21vZGVscyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbWFwVG9OZGZUYWJsZUNvbmZpZyhyZXBvcnQ6IE5kZlJlcG9ydHNDb25maWcsIGRldGFpbHM6IFJlcG9ydERldGFpbHNDb25maWcpOiBOZGZUYWJsZUNvbmZpZyB7XHJcblx0Y29uc3QgX3JlcXVlc3QgPSByZXBvcnQucmVxdWVzdDtcclxuXHJcblx0Y29uc3QgX2RldGFpbHNDb25maWcgPSBfLm1lcmdlKHJlcG9ydC5yZXBvcnRzPy5kZXRhaWxzLCBkZXRhaWxzKTtcclxuXHJcblx0Y29uc3QgY3VzdG9tVXJsID0gXy5tZXJnZShcclxuXHRcdHtcclxuXHRcdFx0dXJsOiBgL2FwaS92MSR7X3JlcXVlc3Q/LmN1c3RvbVVybC51cmx9YCxcclxuXHRcdFx0bWV0aG9kOiBfcmVxdWVzdD8uY3VzdG9tVXJsLm1ldGhvZCBhcyBhbnlcclxuXHRcdH0sXHJcblx0XHRfZGV0YWlsc0NvbmZpZz8ucmVxdWVzdD8uY3VzdG9tVXJsIHx8IHt9XHJcblx0KTtcclxuXHJcblx0Y29uc3QgX2hlYWRlcnMgPSBfcmVxdWVzdC5oZWFkZXJzIHx8IF9kZXRhaWxzQ29uZmlnLnJlcXVlc3Q/LmhlYWRlcnMgfHwge307XHJcblx0Y29uc3QgX3F1ZXJ5UGFyYW0gPSBfcmVxdWVzdC5wYXJhbXMgfHwgX2RldGFpbHNDb25maWcucmVxdWVzdD8ucGFyYW1zIHx8IHt9O1xyXG5cclxuXHRjb25zdCBfc29ydGluZ0J5ID0gXy5tZXJnZShcclxuXHRcdHtcclxuXHRcdFx0c29ydEJ5OiAnZGM6bW9kaWZpZWQnLFxyXG5cdFx0XHRzb3J0T3JkZXI6ICdkZXNjJ1xyXG5cdFx0fSxcclxuXHRcdF9kZXRhaWxzQ29uZmlnLnNvcnRpbmdCeSB8fCB7fVxyXG5cdCk7XHJcblxyXG5cdGNvbnN0IGRhdGE6IE5kZlRhYmxlQ29uZmlnID0ge1xyXG5cdFx0b3B0aW9uczoge1xyXG5cdFx0XHRjb2x1bW5zOiBfZGV0YWlsc0NvbmZpZy5jb2x1bW5zT3B0aW9ucyxcclxuXHRcdFx0ZmlsdGVyczoge1xyXG5cdFx0XHRcdG1vZGU6ICdwYXlsb2FkJyxcclxuXHRcdFx0XHRmaWVsZHM6IFtdLFxyXG5cdFx0XHRcdHBhbmVsOiB7XHJcblx0XHRcdFx0XHR2aXNpYmxlOiBmYWxzZSxcclxuXHRcdFx0XHRcdHRvZ2dsZUJ1dHRvbjogZmFsc2VcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdGV4cG9ydDogX2RldGFpbHNDb25maWc/LmV4cG9ydFxyXG5cdFx0fSxcclxuXHRcdHBhZ2VOdW1iZXI6IDEsXHJcblx0XHRwYWdlU2l6ZTogMTAsXHJcblx0XHRmdWxsV2lkdGg6ICdhdXRvJyxcclxuXHRcdHByZWZpeDogX2RldGFpbHNDb25maWcucHJlZml4IHx8ICcnLFxyXG5cdFx0ZmllbGRzOiBfZGV0YWlsc0NvbmZpZz8uZmllbGRzIHx8IHt9LFxyXG5cdFx0cGFnZVByb3ZpZGVyOiBfcmVxdWVzdC5wYWdlUHJvdmlkZXIgfHwgX2RldGFpbHNDb25maWcucmVxdWVzdC5wYWdlUHJvdmlkZXIsXHJcblx0XHRjb2x1bW5zOiBfZGV0YWlsc0NvbmZpZy5jb2x1bW5zIHx8IFtdLFxyXG5cdFx0Y3VzdG9tVXJsOiBjdXN0b21VcmwsXHJcblx0XHRoZWFkZXJzOiBfaGVhZGVycyxcclxuXHRcdHF1ZXJ5UGFyYW06IF9xdWVyeVBhcmFtLFxyXG5cdFx0cXVpY2tGaWx0ZXJzOiBfZGV0YWlsc0NvbmZpZy5xdWlja0ZpbHRlcnMsXHJcblx0XHRzb3J0aW5nQnk6IF9zb3J0aW5nQnlcclxuXHR9O1xyXG5cclxuXHRyZXR1cm4gZGF0YTtcclxufVxyXG4iXX0=
@@ -34,4 +34,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
34
34
  ]
35
35
  }]
36
36
  }] });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlbGwtY2hlY2tlci1maWVsZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3NwZWxsLWNoZWNrZXItZmllbGQvc3BlbGwtY2hlY2tlci1maWVsZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQzs7QUFrQi9HLE1BQU0sT0FBTyx1QkFBdUI7O3FIQUF2Qix1QkFBdUI7c0hBQXZCLHVCQUF1QixpQkFaaEMsOEJBQThCLGFBRzlCLFlBQVk7UUFDWixXQUFXO1FBQ1gsZUFBZTtRQUNmLG1CQUFtQixhQUduQiw4QkFBOEI7c0hBR3JCLHVCQUF1QixZQVZ6QjtZQUNQLFlBQVk7WUFDWixXQUFXO1lBQ1gsZUFBZTtZQUNmLG1CQUFtQjtTQUNwQjs0RkFLVSx1QkFBdUI7a0JBZG5DLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLDhCQUE4QjtxQkFDL0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxlQUFlO3dCQUNmLG1CQUFtQjtxQkFDcEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLDhCQUE4QjtxQkFDL0I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmltcG9ydCB7IFNwZWxsQ2hlY2tlclRleHRGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vc3BlbGwtY2hlY2tlci10ZXh0LWZpZWxkL3NwZWxsLWNoZWNrZXItdGV4dC1maWVsZC5jb21wb25lbnQnO1xuXG5cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgU3BlbGxDaGVja2VyVGV4dEZpZWxkQ29tcG9uZW50XG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFNwZWxsQ2hlY2tlclRleHRGaWVsZENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNwZWxsQ2hlY2tlckZpZWxkTW9kdWxlIHsgfVxuIl19
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlbGwtY2hlY2tlci1maWVsZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3NwZWxsLWNoZWNrZXItZmllbGQvc3BlbGwtY2hlY2tlci1maWVsZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQzs7QUFrQi9HLE1BQU0sT0FBTyx1QkFBdUI7O3FIQUF2Qix1QkFBdUI7c0hBQXZCLHVCQUF1QixpQkFaaEMsOEJBQThCLGFBRzlCLFlBQVk7UUFDWixXQUFXO1FBQ1gsZUFBZTtRQUNmLG1CQUFtQixhQUduQiw4QkFBOEI7c0hBR3JCLHVCQUF1QixZQVZ6QjtZQUNQLFlBQVk7WUFDWixXQUFXO1lBQ1gsZUFBZTtZQUNmLG1CQUFtQjtTQUNwQjs0RkFLVSx1QkFBdUI7a0JBZG5DLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLDhCQUE4QjtxQkFDL0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxlQUFlO3dCQUNmLG1CQUFtQjtxQkFDcEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLDhCQUE4QjtxQkFDL0I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBTcGVsbENoZWNrZXJUZXh0RmllbGRDb21wb25lbnQgfSBmcm9tICcuL3NwZWxsLWNoZWNrZXItdGV4dC1maWVsZC9zcGVsbC1jaGVja2VyLXRleHQtZmllbGQuY29tcG9uZW50JztcclxuXHJcblxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFNwZWxsQ2hlY2tlclRleHRGaWVsZENvbXBvbmVudFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBTcGVsbENoZWNrZXJUZXh0RmllbGRDb21wb25lbnRcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTcGVsbENoZWNrZXJGaWVsZE1vZHVsZSB7IH1cclxuIl19
@@ -33,13 +33,14 @@ export class NdfTableComponent extends DestroySubject {
33
33
  /**
34
34
  *
35
35
  */
36
- constructor(_filtersMapper, _dynamicTableService, _translateService, _ngTableService, _toastrService, _dialog) {
36
+ constructor(_filtersMapper, _dynamicTableService, _translateService, _ngTableService, _toastrService, _ndfTableConfigurationService, _dialog) {
37
37
  super();
38
38
  this._filtersMapper = _filtersMapper;
39
39
  this._dynamicTableService = _dynamicTableService;
40
40
  this._translateService = _translateService;
41
41
  this._ngTableService = _ngTableService;
42
42
  this._toastrService = _toastrService;
43
+ this._ndfTableConfigurationService = _ndfTableConfigurationService;
43
44
  this._dialog = _dialog;
44
45
  this._aggregationsSub = new BehaviorSubject(null);
45
46
  this._displayedColumnsSub = new BehaviorSubject([]);
@@ -62,6 +63,7 @@ export class NdfTableComponent extends DestroySubject {
62
63
  this.searchAndFilters$ = combineLatest([this.textSearch$, this.customFilters$]).pipe(map((res) => this._prepareSearch(res)));
63
64
  this.autoCalculateHeight = true;
64
65
  this.emptyMessage = 'table_noData';
66
+ this.configPath = 'tables';
65
67
  this.onRowSelected = new EventEmitter();
66
68
  this.onRowIndexSelected = new EventEmitter();
67
69
  this.actionOnRow = new EventEmitter();
@@ -92,6 +94,12 @@ export class NdfTableComponent extends DestroySubject {
92
94
  this.direction = res.lang === 'ar' ? 'rtl' : 'ltr';
93
95
  });
94
96
  }
97
+ set config(config) {
98
+ this._config = config;
99
+ }
100
+ get tableConfig() {
101
+ return this._tableConfigSub.getValue();
102
+ }
95
103
  set customCriteria(criteria) {
96
104
  if (criteria) {
97
105
  this._customCriteriaSub.next(criteria);
@@ -102,31 +110,9 @@ export class NdfTableComponent extends DestroySubject {
102
110
  this._textSearchSub.next(value);
103
111
  }
104
112
  }
105
- set config(config) {
106
- var _a, _b, _c, _d, _e, _f;
107
- this._tableConfigSub.next(config);
108
- this.isPanelOpened = (_d = (_c = (_b = (_a = config === null || config === void 0 ? void 0 : config.options) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.panel) === null || _c === void 0 ? void 0 : _c.visible) !== null && _d !== void 0 ? _d : true;
109
- this._isConfigChanged = !!config;
110
- if (config.columns) {
111
- this._displayedColumnsSub.next(this._filterByVisibility(config.columns));
112
- }
113
- if (config.sortingBy) {
114
- this._sortValue = config.sortingBy;
115
- this._sortOptionSub.next(config.sortingBy);
116
- }
117
- if ((_f = (_e = config === null || config === void 0 ? void 0 : config.options) === null || _e === void 0 ? void 0 : _e.tableMode) === null || _f === void 0 ? void 0 : _f.mode) {
118
- this._viewModeSub.next(config.options.tableMode.mode);
119
- }
120
- if (config.pageSize) {
121
- this._activePage.pageSize = config.pageSize;
122
- }
123
- }
124
- get config() {
125
- return this._tableConfigSub.getValue();
126
- }
127
113
  get options() {
128
114
  var _a;
129
- return (_a = this.config) === null || _a === void 0 ? void 0 : _a.options;
115
+ return (_a = this.tableConfig) === null || _a === void 0 ? void 0 : _a.options;
130
116
  }
131
117
  get filtersConfig() {
132
118
  var _a;
@@ -138,7 +124,7 @@ export class NdfTableComponent extends DestroySubject {
138
124
  }
139
125
  get columnsOptions() {
140
126
  var _a, _b;
141
- return (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.columns;
127
+ return (_b = (_a = this.tableConfig) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.columns;
142
128
  }
143
129
  get columnToggle() {
144
130
  var _a, _b;
@@ -168,6 +154,20 @@ export class NdfTableComponent extends DestroySubject {
168
154
  var _a;
169
155
  return (_a = this.options) === null || _a === void 0 ? void 0 : _a.export;
170
156
  }
157
+ ngOnChanges(changes) {
158
+ var _a, _b;
159
+ const tableKey = (_a = changes.tableKey) === null || _a === void 0 ? void 0 : _a.currentValue;
160
+ const config = (_b = changes.config) === null || _b === void 0 ? void 0 : _b.currentValue;
161
+ if (tableKey && config) {
162
+ throw new Error('You cannot set both tableKey and tableConfig at the same time.');
163
+ }
164
+ if (config) {
165
+ this._applyTableConfig(config);
166
+ }
167
+ if (tableKey) {
168
+ this._loadTableConfig(tableKey);
169
+ }
170
+ }
171
171
  togglePanel() {
172
172
  this.isPanelOpened = !this.isPanelOpened;
173
173
  }
@@ -222,9 +222,9 @@ export class NdfTableComponent extends DestroySubject {
222
222
  }
223
223
  const columns = this._displayedColumnsSub.getValue();
224
224
  const fields = columns.map((col) => col.headerClass);
225
- const headers = columns.map((col) => (this.config.prefix || '') + col.name);
225
+ const headers = columns.map((col) => (this.tableConfig.prefix || '') + col.name);
226
226
  const criteria = this._customCriteriaSub.getValue();
227
- request.params = Object.assign({}, criteria.params, this._sortValue || {}, ((_b = this.config) === null || _b === void 0 ? void 0 : _b.quickFilters) ? { quickFilters: this.config.quickFilters } : {}, request.params);
227
+ request.params = Object.assign({}, criteria.params, this._sortValue || {}, ((_b = this.tableConfig) === null || _b === void 0 ? void 0 : _b.quickFilters) ? { quickFilters: this.tableConfig.quickFilters } : {}, request.params);
228
228
  const payload = {
229
229
  predicateList: criteria.payload.predicateList || [],
230
230
  reportMetaData: {
@@ -339,9 +339,51 @@ export class NdfTableComponent extends DestroySubject {
339
339
  currentValue: criteria
340
340
  });
341
341
  }
342
+ /**
343
+ * @description
344
+ * This method is used to set the table configuration.
345
+ * @param config NdfTableConfig
346
+ */
347
+ _applyTableConfig(config) {
348
+ var _a, _b, _c, _d, _e, _f;
349
+ this._tableConfigSub.next(config);
350
+ this.isPanelOpened = (_d = (_c = (_b = (_a = config === null || config === void 0 ? void 0 : config.options) === null || _a === void 0 ? void 0 : _a.filters) === null || _b === void 0 ? void 0 : _b.panel) === null || _c === void 0 ? void 0 : _c.visible) !== null && _d !== void 0 ? _d : true;
351
+ this._isConfigChanged = !!config;
352
+ if (config.columns) {
353
+ this._displayedColumnsSub.next(this._filterByVisibility(config.columns));
354
+ }
355
+ if (config.sortingBy) {
356
+ this._sortValue = config.sortingBy;
357
+ this._sortOptionSub.next(config.sortingBy);
358
+ }
359
+ if ((_f = (_e = config === null || config === void 0 ? void 0 : config.options) === null || _e === void 0 ? void 0 : _e.tableMode) === null || _f === void 0 ? void 0 : _f.mode) {
360
+ this._viewModeSub.next(config.options.tableMode.mode);
361
+ }
362
+ if (config.pageSize) {
363
+ this._activePage.pageSize = config.pageSize;
364
+ }
365
+ }
366
+ /**
367
+ * @private
368
+ * @description Loads the table configuration based on the provided key and applies it.
369
+ * @param {string} key - The key used to fetch the table configuration.
370
+ */
371
+ _loadTableConfig(key) {
372
+ this._ndfTableConfigurationService
373
+ .getTableConfiguration(key, this.configPath)
374
+ .pipe(switchMap((config) => {
375
+ if (this.configTransformer && _.isFunction(this.configTransformer)) {
376
+ return this.configTransformer(config);
377
+ }
378
+ return of(config);
379
+ }), takeUntil(this.destroy$))
380
+ .subscribe((config) => {
381
+ this._applyTableConfig(config);
382
+ });
383
+ }
342
384
  }
343
- NdfTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTableComponent, deps: [{ token: i1.FiltersMapperService }, { token: i2.DynamicTableService }, { token: i3.TranslateService }, { token: i1.NdfTableService }, { token: i4.CustomToastrService }, { token: i5.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
344
- NdfTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfTableComponent, selector: "app-ndf-table", inputs: { rows: "rows", totalRecords: "totalRecords", autoCalculateHeight: "autoCalculateHeight", emptyMessage: "emptyMessage", activeQuery: "activeQuery", customCriteria: "customCriteria", searchTerm: "searchTerm", config: "config" }, outputs: { onRowSelected: "onRowSelected", onRowIndexSelected: "onRowIndexSelected", actionOnRow: "actionOnRow", onGettingData: "onGettingData", onMultiRowSelected: "onMultiRowSelected", onLoading: "onLoading", onPage: "onPage", onInitialized: "onInitialized", onLoaded: "onLoaded", onQueryChange: "onQueryChange", onSort: "onSort" }, host: { properties: { "dir": "direction" }, classAttribute: "ndf-table" }, queries: [{ propertyName: "actionsTableTemplate", first: true, predicate: ACTIONS_TABLE_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "searchTableTemplate", first: true, predicate: SEARCH_TABLE_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "filterCustomTemplate", first: true, predicate: FILTER_CUSTOM_TEMPLATE, descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "\r\n<div\r\n\t*ngIf=\"config\"\r\n\tclass=\"ndf-table__container\"\r\n\t[class.panel-opened]=\"isPanelOpened && filtersConfig\"\r\n\t[dir]=\"direction\"\r\n\tndfFluidHeight\r\n\t[calculate]=\"autoCalculateHeight\"\r\n>\r\n\t<div class=\"ndf-table__panel\" *ngIf=\"filtersConfig?.fields\">\r\n\t\t<app-filters-panel\r\n\t\t\t[fields]=\"filtersConfig.fields\"\r\n\t\t\t[aggregations]=\"aggregations$ | async\"\r\n\t\t\t(filterChanged)=\"filterChanged($event)\"\r\n\t\t\t[activeQuery]=\"activeQuery\"\r\n\t\t\tclass=\"ndf-table__filters\"\r\n\t\t\t[customTemplateRef]=\"filterCustomTemplate\"\r\n\t\t></app-filters-panel>\r\n\t</div>\r\n\t<div class=\"ndf-table__content\">\r\n\t\t<div class=\"ndf-table__header flex\">\r\n\t\t\t<div class=\"ndf-table__header__custom-actions flex gap-x-4 items-center\">\r\n\t\t\t\t<ng-container\r\n\t\t\t\t\t[ngTemplateOutlet]=\"searchTableTemplate || defaultActionTemplate\"\r\n\t\t\t\t\t[ngTemplateOutletContext]=\"{\r\n\t\t\t\t\t\t$implicit: config,\r\n\t\t\t\t\t\tpanelOpened: isPanelOpened,\r\n\t\t\t\t\t\ttogglePanel: togglePanel,\r\n\t\t\t\t\t\topenModal: openSearchModal,\r\n\t\t\t\t\t\tsearch: onTextSearch,\r\n\t\t\t\t\t\tclear: onClearSearch\r\n\t\t\t\t\t}\"\r\n\t\t\t\t></ng-container>\r\n\r\n\t\t\t\t<ng-template #defaultActionTemplate>\r\n\t\t\t\t\t<button mat-stroked-button *ngIf=\"isPanelToggleAvailable\" class=\"toggle-button\" (click)=\"togglePanel()\">\r\n\t\t\t\t\t\t<mat-icon> filter_alt</mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<app-text-search\r\n\t\t\t\t\t\t*ngIf=\"textSearchConfig\"\r\n\t\t\t\t\t\t[searchConfig]=\"textSearchConfig\"\r\n\t\t\t\t\t\t(openModal)=\"openSearchModal()\"\r\n\t\t\t\t\t\t[search]=\"textSearch$ | async\"\r\n\t\t\t\t\t\t(searchChange)=\"onTextSearch($event)\"\r\n\t\t\t\t\t\t(clear)=\"onClearSearch()\"\r\n\t\t\t\t\t></app-text-search>\r\n\t\t\t\t</ng-template>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"ndf-table__header__actions flex gap-x-4 items-center\">\r\n\t\t\t\t<ndf-table-export\r\n\t\t\t\t\t*ngIf=\"exportTableConfig?.enabled\"\r\n\t\t\t\t\t[config]=\"exportTableConfig\"\r\n\t\t\t\t\t(onExport)=\"exportTable($event)\"\r\n\t\t\t\t></ndf-table-export>\r\n\r\n\t\t\t\t<table-sorting-list\r\n\t\t\t\t\t*ngIf=\"!!sortList?.length\"\r\n\t\t\t\t\t[sortList]=\"sortList\"\r\n\t\t\t\t\t(sortChanged)=\"sortChanged($event)\"\r\n\t\t\t\t></table-sorting-list>\r\n\t\t\t\t<table-columns-toggler\r\n\t\t\t\t\t*ngIf=\"columnToggle\"\r\n\t\t\t\t\t[columns]=\"config.columns\"\r\n\t\t\t\t\t[prefix]=\"config.prefix\"\r\n\t\t\t\t\t[sortable]=\"columnsOptions?.sortable\"\r\n\t\t\t\t\t(columnsChanged)=\"columnsChanged($event)\"\r\n\t\t\t\t></table-columns-toggler>\r\n\t\t\t\t<mode-toggler\r\n\t\t\t\t\t*ngIf=\"tableMode?.toggleMode\"\r\n\t\t\t\t\t[mode]=\"tableMode.mode || 'list'\"\r\n\t\t\t\t\t[modesList]=\"tableMode?.availableMode\"\r\n\t\t\t\t\t(modeChanged)=\"modeChanged($event)\"\r\n\t\t\t\t></mode-toggler>\r\n\t\t\t\t<ng-container\r\n\t\t\t\t\t[ngTemplateOutlet]=\"actionsTableTemplate\"\r\n\t\t\t\t\t[ngTemplateOutletContext]=\"{\r\n\t\t\t\t\t\t$implicit: config,\r\n\t\t\t\t\t\tpanelOpened: isPanelOpened,\r\n\t\t\t\t\t\ttogglePanel: togglePanel,\r\n\t\t\t\t\t\topenModal: openSearchModal,\r\n\t\t\t\t\t\tsearch: onTextSearch,\r\n\t\t\t\t\t\tclear: onClearSearch\r\n\t\t\t\t\t}\"\r\n\t\t\t\t></ng-container>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\r\n\t\t<cts-dynamic-table\r\n\t\t\t*ngIf=\"!config.isDataProvided\"\r\n\t\t\tclass=\"ndf-table__table table-style\"\r\n\t\t\t[columns]=\"displayedColumns$ | async\"\r\n\t\t\t[responsiveColumns]=\"displayedColumns$ | async\"\r\n\t\t\t[fullWidth]=\"config.fullWidth || 'auto'\"\r\n\t\t\t[pageSize]=\"config.pageSize || 10\"\r\n\t\t\t[pageNumber]=\"config.pageNumber || 1\"\r\n\t\t\t[pageProvider]=\"config.pageProvider\"\r\n\t\t\t[customUrl]=\"config.customUrl\"\r\n\t\t\t[quickFilter]=\"config.quickFilters ? { quickFilters: config.quickFilters } : undefined\"\r\n\t\t\t[defultSort]=\"config.defaultSort || defaultSort\"\r\n\t\t\t[sortingBy]=\"sortOption$ | async\"\r\n\t\t\t[entityType]=\"'all'\"\r\n\t\t\t[fields]=\"config.fields\"\r\n\t\t\t[tableMode]=\"viewMode$ | async\"\r\n\t\t\t[componentName]=\"tableMode?.['componentName']\"\r\n\t\t\t[range]=\"config?.range\"\r\n\t\t\t[isSearchPage]=\"config?.isSearchPage\"\r\n\t\t\t[multiSelectRows]=\"config?.multiSelectRows\"\r\n\t\t\t[customFirstRow]=\"config?.customFirstRow\"\r\n\t\t\t[highlightSelectedCard]=\"config?.highlightSelectedCard\"\r\n\t\t\t[showActionsAsMenu]=\"config?.showActionsAsMenu\"\r\n\t\t\t[filterParams]=\"config?.filterParams\"\r\n\t\t\t[format]=\"config?.format || 'MMMM d, y'\"\r\n\t\t\t[pageSizes]=\"config?.pageSizes || defaultPageSizes\"\r\n\t\t\t[prefix]=\"config.prefix || ''\"\r\n\t\t\t[rowCursor]=\"true\"\r\n\t\t\t[queryParam]=\"config.queryParam\"\r\n\t\t\t[customFilters]=\"searchAndFilters$ | async\"\r\n\t\t\t[tableActions]=\"config.tableActions\"\r\n\t\t\t[headers]=\"config.headers\"\r\n\t\t\t(onRowSelected)=\"onRowSelected.emit($event)\"\r\n\t\t\t(onRowIndexSelected)=\"onRowIndexSelected.emit($event)\"\r\n\t\t\t(actionOnRow)=\"actionOnRow.emit($event)\"\r\n\t\t\t(onGettingData)=\"onGettingData.emit($event)\"\r\n\t\t\t(onLoad)=\"onLoad($event)\"\r\n\t\t\t(onInitialize)=\"onInitialize($event)\"\r\n\t\t\t(onMultiRowSelected)=\"onMultiRowSelected.emit($event)\"\r\n\t\t\t(onLoading)=\"onLoading.emit($event)\"\r\n\t\t\t(onPage)=\"onPageChanged($event)\"\r\n\t\t\t[isLegacyMode]=\"false\"\r\n\t\t\t[showTotalRecord]=\"true\"\r\n\t\t\t(sortChanged)=\"onSortChanged($event)\"\r\n\t\t>\r\n\t\t\t<ng-template emptyTemplate let-isLoading let-rows=\"rows\" let-initialized=\"initialized\">\r\n\t\t\t\t<div class=\"loading-data\" *ngIf=\"isLoading && initialized\">\r\n\t\t\t\t\t<mat-spinner></mat-spinner>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div class=\"flex items-center justify-center h-5/6\" *ngIf=\"!isLoading && !rows.length\">\r\n\t\t\t\t\t<app-no-data-found class=\"mt-4\" [message]=\"emptyMessage\"></app-no-data-found>\r\n\t\t\t\t</div>\r\n\t\t\t</ng-template>\r\n\t\t</cts-dynamic-table>\r\n\r\n\t\t<cts-table\r\n\t\t\t*ngIf=\"config.isDataProvided\"\r\n\t\t\t[rows]=\"rows\"\r\n\t\t\t[totalRecords]=\"totalRecords\"\r\n\t\t\t[columns]=\"displayedColumns$ | async\"\r\n\t\t\t[responsiveColumns]=\"displayedColumns$ | async\"\r\n\t\t\t[rowCursor]=\"true\"\r\n\t\t\t[fullWidth]=\"config.fullWidth || 'auto'\"\r\n\t\t\t[entityType]=\"'all'\"\r\n\t\t\t[prefix]=\"config.prefix || ''\"\r\n\t\t\t[tableMode]=\"viewMode$ | async\"\r\n\t\t\t[componentName]=\"tableMode?.['componentName']\"\r\n\t\t\t[multiSelectRows]=\"config?.multiSelectRows\"\r\n\t\t\t[customFirstRow]=\"config?.customFirstRow\"\r\n\t\t\t[tableActions]=\"config.tableActions\"\r\n\t\t\t[showActionsAsMenu]=\"config?.showActionsAsMenu\"\r\n\t\t\t[defultSort]=\"config.defaultSort || defaultSort\"\r\n\t\t\t[format]=\"config?.format || 'MMMM d, y'\"\r\n\t\t\t[highlightSelectedCard]=\"config?.highlightSelectedCard\"\r\n\t\t\t(onRowSelected)=\"onRowSelected.emit($event)\"\r\n\t\t\t(onRowIndexSelected)=\"onRowIndexSelected.emit($event)\"\r\n\t\t\t(onMultiRowSelected)=\"onMultiRowSelected.emit($event)\"\r\n\t\t\t(actionOnRow)=\"actionOnRow.emit($event)\"\r\n\t\t\t(onSorting)=\"onSortChanged($event)\"\r\n\t\t></cts-table>\r\n\t</div>\r\n</div>\r\n", styles: [":host{padding-inline:var(--ndf-tbl-inline-padding, 1rem);padding-block:var(--ndf-tbl-block-padding, 1rem);border:var(--ndf-tbl-border, solid transparent);border-width:var(--ndf-table-border-width, 0);border-radius:var(--ndf-tbl-border-radius, 0);height:100%;position:relative;display:flex;flex-direction:column;background-color:var(--ndf-tbl-background, #fff);box-sizing:border-box;max-width:100%;flex:0 0 100%}:host [dir=ltr]{--ndf-tbl-panel-translateX: -100%}:host:before,:host:after{box-sizing:border-box}::ng-deep .wrapping,::ng-deep .wrapping .table-reposition{overflow:visible}.ndf-table__container{--table-div-height: auto;--table-reposition-overflow-y: visible;--table-div-overflow: visible;--panel-width: var(--ndf-tbl-panel-width, 18rem);position:relative;overflow:hidden;display:grid;transition:all .2s;max-width:100%;width:100%;height:var(--ndf-tbl-height, calc(var(--ndf-table-height, auto) - calc(var(--ndf-tbl-block-padding, 1rem) * 2.5)));flex-grow:1;grid-gap:var(--ndf-table-container-gap, .5rem);gap:var(--ndf-table-container-gap, .5rem)}.ndf-table__container.panel-opened{--ndf-tbl-panel-translateX: 0;--ndf-tbl-content-pis: var(--panel-width)}.ndf-table__panel,.ndf-table__content{overflow:auto;transition:all .2s}.ndf-table__panel{position:absolute;width:var(--panel-width);height:100%;transform:translate(var(--ndf-tbl-panel-translateX, 100%));padding-inline:var(--ndf-tbl-panel-inline-padding, .5rem);padding-block:var(--ndf-tbl-panel-block-padding, .5rem);background:var(--ndf-tbl-panel-background, #fff);z-index:1}.ndf-table__content{flex-grow:1;padding-inline-start:var(--ndf-tbl-content-pis, 0);padding-block-end:var(--ndf-tbl-content-pbe, 1rem);overflow-y:var(--ndf-tbl-content-overflow-y, auto);max-height:var(--ndf-tbl-content-max-height, var(--ndf-table-height));display:flex;flex-direction:column;height:-moz-fit-content;height:fit-content}.ndf-table__header{background-color:var(--ndf-tbl-background, #fff);flex-direction:var(--ndf-tbl-header-direction, row);justify-content:var(--ndf-tbl-header-justify, space-between);align-items:var(--ndf-tbl-header-items, center);padding-inline:var(--ndf-tbl-header-padding-inline, .5rem);padding-block:var(--ndf-tbl-header-padding-block, 0 .5rem);position:var(--ndf-tbl-header-position, sticky);top:0;z-index:1}.ndf-table__header__actions{justify-content:var(--ndf-tbl-actions-justify, flex-end)}.ndf-table__header__custom-actions .toggle-button{min-width:0;padding:0 10px}.ndf-table__table{flex-grow:1;display:flex;flex-direction:column}.ndf-table__table.no-data{--table-div-height: auto}.loading-data{position:absolute;inset:0;display:grid;place-items:center;background:var(--loading-data-background, rgba(255, 255, 255, .2));-webkit-backdrop-filter:var(--loading-data-backdrop-filter, blur(3px));backdrop-filter:var(--loading-data-backdrop-filter, blur(3px))}\n"], components: [{ type: i6.FiltersPanelComponent, selector: "app-filters-panel", inputs: ["aggregations", "fields", "activeQuery"], outputs: ["filterChanged"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9.TextSearchComponent, selector: "app-text-search", inputs: ["searchConfig", "search"], outputs: ["searchChange", "openModal", "clear"] }, { type: i10.TableExportComponent, selector: "ndf-table-export", inputs: ["config"], outputs: ["onExport"] }, { type: i11.SortingListComponent, selector: "table-sorting-list", inputs: ["sortList"], outputs: ["sortChanged"] }, { type: i12.TableColumnsTogglerComponent, selector: "table-columns-toggler", inputs: ["prefix", "sortable", "columns"], outputs: ["columnsChanged"] }, { type: i13.ModeTogglerComponent, selector: "mode-toggler", inputs: ["modesList", "mode"], outputs: ["modeChanged"] }, { type: i14.DynamicTableComponent, selector: "cts-dynamic-table", inputs: ["columns", "responsiveColumns", "entityType", "prefix", "headers", "fields", "pageProvider", "pageSize", "isLegacyMode", "showTotalRecord", "pageNumber", "sortingBy", "queryParam", "customFilters", "quickFilter", "report", "rowCursor", "fullWidth", "tableMode", "componentName", "tableActions", "defultSort", "range", "isSearchPage", "multiSelectRows", "customFirstRow", "highlightSelectedCard", "showActionsAsMenu", "filterParams", "skipAggregation", "customUrl", "format", "pageSizes"], outputs: ["onRowSelected", "onRowIndexSelected", "actionOnRow", "onGettingData", "onMultiRowSelected", "onLoading", "sortChanged", "onPageChange", "onPage", "onLoad", "onInitialize"] }, { type: i15.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i16.NoDataFoundComponent, selector: "app-no-data-found", inputs: ["message", "width", "height"] }, { type: i17.TableComponent, selector: "cts-table", inputs: ["rows", "columns", "responsiveColumns", "entityType", "prefix", "pageCount", "totalRecords", "rowCursor", "fullWidth", "vocItemTranslationPrefix", "tableMode", "componentName", "tableActions", "format", "defultSort", "highlightSelectedCard", "multiSelectRows", "customFirstRow", "showActionsAsMenu", "messages", "defaultColumnSize"], outputs: ["onRowSelected", "onRowIndexSelected", "onIconSelected", "actionOnRow", "onSorting", "onMultiRowSelected"] }], directives: [{ type: i18.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i19.FluidHeightDirective, selector: "[ndfFluidHeight]", inputs: ["minHeight", "ndfFluidHeight", "subtractItems", "decrease", "delay", "calculate", "inlineStyle"], exportAs: ["ndfFluidHeight"] }, { type: i20.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i18.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i21.EmptyTemplateDirective, selector: "[emptyTemplate]" }], pipes: { "async": i18.AsyncPipe } });
385
+ NdfTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTableComponent, deps: [{ token: i1.FiltersMapperService }, { token: i2.DynamicTableService }, { token: i3.TranslateService }, { token: i1.NdfTableService }, { token: i4.CustomToastrService }, { token: i1.NdfTableConfigurationService }, { token: i5.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
386
+ NdfTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfTableComponent, selector: "app-ndf-table", inputs: { rows: "rows", totalRecords: "totalRecords", autoCalculateHeight: "autoCalculateHeight", emptyMessage: "emptyMessage", activeQuery: "activeQuery", configPath: "configPath", configTransformer: "configTransformer", tableKey: "tableKey", config: "config", customCriteria: "customCriteria", searchTerm: "searchTerm" }, outputs: { onRowSelected: "onRowSelected", onRowIndexSelected: "onRowIndexSelected", actionOnRow: "actionOnRow", onGettingData: "onGettingData", onMultiRowSelected: "onMultiRowSelected", onLoading: "onLoading", onPage: "onPage", onInitialized: "onInitialized", onLoaded: "onLoaded", onQueryChange: "onQueryChange", onSort: "onSort" }, host: { properties: { "dir": "direction" }, classAttribute: "ndf-table" }, queries: [{ propertyName: "actionsTableTemplate", first: true, predicate: ACTIONS_TABLE_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "searchTableTemplate", first: true, predicate: SEARCH_TABLE_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "filterCustomTemplate", first: true, predicate: FILTER_CUSTOM_TEMPLATE, descendants: true, read: TemplateRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "\r\n<div\r\n\t*ngIf=\"tableConfig\"\r\n\tclass=\"ndf-table__container\"\r\n\t[class.panel-opened]=\"isPanelOpened && filtersConfig\"\r\n\t[dir]=\"direction\"\r\n\tndfFluidHeight\r\n\t[calculate]=\"autoCalculateHeight\"\r\n>\r\n\t<div class=\"ndf-table__panel\" *ngIf=\"filtersConfig?.fields\">\r\n\t\t<app-filters-panel\r\n\t\t\t[fields]=\"filtersConfig.fields\"\r\n\t\t\t[aggregations]=\"aggregations$ | async\"\r\n\t\t\t(filterChanged)=\"filterChanged($event)\"\r\n\t\t\t[activeQuery]=\"activeQuery\"\r\n\t\t\tclass=\"ndf-table__filters\"\r\n\t\t\t[customTemplateRef]=\"filterCustomTemplate\"\r\n\t\t></app-filters-panel>\r\n\t</div>\r\n\t<div class=\"ndf-table__content\">\r\n\t\t<div class=\"ndf-table__header flex\">\r\n\t\t\t<div class=\"ndf-table__header__custom-actions flex gap-x-4 items-center\">\r\n\t\t\t\t<ng-container\r\n\t\t\t\t\t[ngTemplateOutlet]=\"searchTableTemplate || defaultActionTemplate\"\r\n\t\t\t\t\t[ngTemplateOutletContext]=\"{\r\n\t\t\t\t\t\t$implicit: tableConfig,\r\n\t\t\t\t\t\tpanelOpened: isPanelOpened,\r\n\t\t\t\t\t\ttogglePanel: togglePanel,\r\n\t\t\t\t\t\topenModal: openSearchModal,\r\n\t\t\t\t\t\tsearch: onTextSearch,\r\n\t\t\t\t\t\tclear: onClearSearch\r\n\t\t\t\t\t}\"\r\n\t\t\t\t></ng-container>\r\n\r\n\t\t\t\t<ng-template #defaultActionTemplate>\r\n\t\t\t\t\t<button mat-stroked-button *ngIf=\"isPanelToggleAvailable\" class=\"toggle-button\" (click)=\"togglePanel()\">\r\n\t\t\t\t\t\t<mat-icon> filter_alt</mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<app-text-search\r\n\t\t\t\t\t\t*ngIf=\"textSearchConfig\"\r\n\t\t\t\t\t\t[searchConfig]=\"textSearchConfig\"\r\n\t\t\t\t\t\t(openModal)=\"openSearchModal()\"\r\n\t\t\t\t\t\t[search]=\"textSearch$ | async\"\r\n\t\t\t\t\t\t(searchChange)=\"onTextSearch($event)\"\r\n\t\t\t\t\t\t(clear)=\"onClearSearch()\"\r\n\t\t\t\t\t></app-text-search>\r\n\t\t\t\t</ng-template>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"ndf-table__header__actions flex gap-x-4 items-center\">\r\n\t\t\t\t<ndf-table-export\r\n\t\t\t\t\t*ngIf=\"exportTableConfig?.enabled\"\r\n\t\t\t\t\t[config]=\"exportTableConfig\"\r\n\t\t\t\t\t(onExport)=\"exportTable($event)\"\r\n\t\t\t\t></ndf-table-export>\r\n\r\n\t\t\t\t<table-sorting-list\r\n\t\t\t\t\t*ngIf=\"!!sortList?.length\"\r\n\t\t\t\t\t[sortList]=\"sortList\"\r\n\t\t\t\t\t(sortChanged)=\"sortChanged($event)\"\r\n\t\t\t\t></table-sorting-list>\r\n\t\t\t\t<table-columns-toggler\r\n\t\t\t\t\t*ngIf=\"columnToggle\"\r\n\t\t\t\t\t[columns]=\"tableConfig.columns\"\r\n\t\t\t\t\t[prefix]=\"tableConfig.prefix\"\r\n\t\t\t\t\t[sortable]=\"columnsOptions?.sortable\"\r\n\t\t\t\t\t(columnsChanged)=\"columnsChanged($event)\"\r\n\t\t\t\t></table-columns-toggler>\r\n\t\t\t\t<mode-toggler\r\n\t\t\t\t\t*ngIf=\"tableMode?.toggleMode\"\r\n\t\t\t\t\t[mode]=\"tableMode.mode || 'list'\"\r\n\t\t\t\t\t[modesList]=\"tableMode?.availableMode\"\r\n\t\t\t\t\t(modeChanged)=\"modeChanged($event)\"\r\n\t\t\t\t></mode-toggler>\r\n\t\t\t\t<ng-container\r\n\t\t\t\t\t[ngTemplateOutlet]=\"actionsTableTemplate\"\r\n\t\t\t\t\t[ngTemplateOutletContext]=\"{\r\n\t\t\t\t\t\t$implicit: tableConfig,\r\n\t\t\t\t\t\tpanelOpened: isPanelOpened,\r\n\t\t\t\t\t\ttogglePanel: togglePanel,\r\n\t\t\t\t\t\topenModal: openSearchModal,\r\n\t\t\t\t\t\tsearch: onTextSearch,\r\n\t\t\t\t\t\tclear: onClearSearch\r\n\t\t\t\t\t}\"\r\n\t\t\t\t></ng-container>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\r\n\t\t<cts-dynamic-table\r\n\t\t\t*ngIf=\"!tableConfig.isDataProvided\"\r\n\t\t\tclass=\"ndf-table__table table-style\"\r\n\t\t\t[columns]=\"displayedColumns$ | async\"\r\n\t\t\t[responsiveColumns]=\"displayedColumns$ | async\"\r\n\t\t\t[fullWidth]=\"tableConfig.fullWidth || 'auto'\"\r\n\t\t\t[pageSize]=\"tableConfig.pageSize || 10\"\r\n\t\t\t[pageNumber]=\"tableConfig.pageNumber || 1\"\r\n\t\t\t[pageProvider]=\"tableConfig.pageProvider\"\r\n\t\t\t[customUrl]=\"tableConfig.customUrl\"\r\n\t\t\t[quickFilter]=\"tableConfig.quickFilters ? { quickFilters: tableConfig.quickFilters } : undefined\"\r\n\t\t\t[defultSort]=\"tableConfig.defaultSort || defaultSort\"\r\n\t\t\t[sortingBy]=\"sortOption$ | async\"\r\n\t\t\t[entityType]=\"'all'\"\r\n\t\t\t[fields]=\"tableConfig.fields\"\r\n\t\t\t[tableMode]=\"viewMode$ | async\"\r\n\t\t\t[componentName]=\"tableMode?.['componentName']\"\r\n\t\t\t[range]=\"tableConfig?.range\"\r\n\t\t\t[isSearchPage]=\"tableConfig?.isSearchPage\"\r\n\t\t\t[multiSelectRows]=\"tableConfig?.multiSelectRows\"\r\n\t\t\t[customFirstRow]=\"tableConfig?.customFirstRow\"\r\n\t\t\t[highlightSelectedCard]=\"tableConfig?.highlightSelectedCard\"\r\n\t\t\t[showActionsAsMenu]=\"tableConfig?.showActionsAsMenu\"\r\n\t\t\t[filterParams]=\"tableConfig?.filterParams\"\r\n\t\t\t[format]=\"tableConfig?.format || 'MMMM d, y'\"\r\n\t\t\t[pageSizes]=\"tableConfig?.pageSizes || defaultPageSizes\"\r\n\t\t\t[prefix]=\"tableConfig.prefix || ''\"\r\n\t\t\t[rowCursor]=\"true\"\r\n\t\t\t[queryParam]=\"tableConfig.queryParam\"\r\n\t\t\t[customFilters]=\"searchAndFilters$ | async\"\r\n\t\t\t[tableActions]=\"tableConfig.tableActions\"\r\n\t\t\t[headers]=\"tableConfig.headers\"\r\n\t\t\t(onRowSelected)=\"onRowSelected.emit($event)\"\r\n\t\t\t(onRowIndexSelected)=\"onRowIndexSelected.emit($event)\"\r\n\t\t\t(actionOnRow)=\"actionOnRow.emit($event)\"\r\n\t\t\t(onGettingData)=\"onGettingData.emit($event)\"\r\n\t\t\t(onLoad)=\"onLoad($event)\"\r\n\t\t\t(onInitialize)=\"onInitialize($event)\"\r\n\t\t\t(onMultiRowSelected)=\"onMultiRowSelected.emit($event)\"\r\n\t\t\t(onLoading)=\"onLoading.emit($event)\"\r\n\t\t\t(onPage)=\"onPageChanged($event)\"\r\n\t\t\t[isLegacyMode]=\"false\"\r\n\t\t\t[showTotalRecord]=\"true\"\r\n\t\t\t(sortChanged)=\"onSortChanged($event)\"\r\n\t\t>\r\n\t\t\t<ng-template emptyTemplate let-isLoading let-rows=\"rows\" let-initialized=\"initialized\">\r\n\t\t\t\t<div class=\"loading-data\" *ngIf=\"isLoading && initialized\">\r\n\t\t\t\t\t<mat-spinner></mat-spinner>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div class=\"flex items-center justify-center h-5/6\" *ngIf=\"!isLoading && !rows.length\">\r\n\t\t\t\t\t<app-no-data-found class=\"mt-4\" [message]=\"emptyMessage\"></app-no-data-found>\r\n\t\t\t\t</div>\r\n\t\t\t</ng-template>\r\n\t\t</cts-dynamic-table>\r\n\r\n\t\t<cts-table\r\n\t\t\t*ngIf=\"tableConfig.isDataProvided\"\r\n\t\t\t[rows]=\"rows\"\r\n\t\t\t[totalRecords]=\"totalRecords\"\r\n\t\t\t[columns]=\"displayedColumns$ | async\"\r\n\t\t\t[responsiveColumns]=\"displayedColumns$ | async\"\r\n\t\t\t[rowCursor]=\"true\"\r\n\t\t\t[fullWidth]=\"tableConfig.fullWidth || 'auto'\"\r\n\t\t\t[entityType]=\"'all'\"\r\n\t\t\t[prefix]=\"tableConfig.prefix || ''\"\r\n\t\t\t[tableMode]=\"viewMode$ | async\"\r\n\t\t\t[componentName]=\"tableMode?.['componentName']\"\r\n\t\t\t[multiSelectRows]=\"tableConfig?.multiSelectRows\"\r\n\t\t\t[customFirstRow]=\"tableConfig?.customFirstRow\"\r\n\t\t\t[tableActions]=\"tableConfig.tableActions\"\r\n\t\t\t[showActionsAsMenu]=\"tableConfig?.showActionsAsMenu\"\r\n\t\t\t[defultSort]=\"tableConfig.defaultSort || defaultSort\"\r\n\t\t\t[format]=\"tableConfig?.format || 'MMMM d, y'\"\r\n\t\t\t[highlightSelectedCard]=\"tableConfig?.highlightSelectedCard\"\r\n\t\t\t(onRowSelected)=\"onRowSelected.emit($event)\"\r\n\t\t\t(onRowIndexSelected)=\"onRowIndexSelected.emit($event)\"\r\n\t\t\t(onMultiRowSelected)=\"onMultiRowSelected.emit($event)\"\r\n\t\t\t(actionOnRow)=\"actionOnRow.emit($event)\"\r\n\t\t\t(onSorting)=\"onSortChanged($event)\"\r\n\t\t></cts-table>\r\n\t</div>\r\n</div>\r\n", styles: [":host{padding-inline:var(--ndf-tbl-inline-padding, 1rem);padding-block:var(--ndf-tbl-block-padding, 1rem);border:var(--ndf-tbl-border, solid transparent);border-width:var(--ndf-table-border-width, 0);border-radius:var(--ndf-tbl-border-radius, 0);height:100%;position:relative;display:flex;flex-direction:column;background-color:var(--ndf-tbl-background, #fff);box-sizing:border-box;max-width:100%;flex:0 0 100%}:host [dir=ltr]{--ndf-tbl-panel-translateX: -100%}:host:before,:host:after{box-sizing:border-box}::ng-deep .wrapping,::ng-deep .wrapping .table-reposition{overflow:visible}.ndf-table__container{--table-div-height: auto;--table-reposition-overflow-y: visible;--table-div-overflow: visible;--panel-width: var(--ndf-tbl-panel-width, 18rem);position:relative;overflow:hidden;display:grid;transition:all .2s;max-width:100%;width:100%;height:var(--ndf-tbl-height, calc(var(--ndf-table-height, auto) - calc(var(--ndf-tbl-block-padding, 1rem) * 2.5)));flex-grow:1;grid-gap:var(--ndf-table-container-gap, .5rem);gap:var(--ndf-table-container-gap, .5rem)}.ndf-table__container.panel-opened{--ndf-tbl-panel-translateX: 0;--ndf-tbl-content-pis: var(--panel-width)}.ndf-table__panel,.ndf-table__content{overflow:auto;transition:all .2s}.ndf-table__panel{position:absolute;width:var(--panel-width);height:100%;transform:translate(var(--ndf-tbl-panel-translateX, 100%));padding-inline:var(--ndf-tbl-panel-inline-padding, .5rem);padding-block:var(--ndf-tbl-panel-block-padding, .5rem);background:var(--ndf-tbl-panel-background, #fff);z-index:1}.ndf-table__content{flex-grow:1;padding-inline-start:var(--ndf-tbl-content-pis, 0);padding-block-end:var(--ndf-tbl-content-pbe, 1rem);overflow-y:var(--ndf-tbl-content-overflow-y, auto);max-height:var(--ndf-tbl-content-max-height, var(--ndf-table-height));display:flex;flex-direction:column;height:-moz-fit-content;height:fit-content}.ndf-table__header{background-color:var(--ndf-tbl-background, #fff);flex-direction:var(--ndf-tbl-header-direction, row);justify-content:var(--ndf-tbl-header-justify, space-between);align-items:var(--ndf-tbl-header-items, center);padding-inline:var(--ndf-tbl-header-padding-inline, .5rem);padding-block:var(--ndf-tbl-header-padding-block, 0 .5rem);position:var(--ndf-tbl-header-position, sticky);top:0;z-index:1}.ndf-table__header__actions{justify-content:var(--ndf-tbl-actions-justify, flex-end)}.ndf-table__header__custom-actions .toggle-button{min-width:0;padding:0 10px}.ndf-table__table{flex-grow:1;display:flex;flex-direction:column}.ndf-table__table.no-data{--table-div-height: auto}.loading-data{position:absolute;inset:0;display:grid;place-items:center;background:var(--loading-data-background, rgba(255, 255, 255, .2));-webkit-backdrop-filter:var(--loading-data-backdrop-filter, blur(3px));backdrop-filter:var(--loading-data-backdrop-filter, blur(3px))}\n"], components: [{ type: i6.FiltersPanelComponent, selector: "app-filters-panel", inputs: ["aggregations", "fields", "activeQuery"], outputs: ["filterChanged"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9.TextSearchComponent, selector: "app-text-search", inputs: ["searchConfig", "search"], outputs: ["searchChange", "openModal", "clear"] }, { type: i10.TableExportComponent, selector: "ndf-table-export", inputs: ["config"], outputs: ["onExport"] }, { type: i11.SortingListComponent, selector: "table-sorting-list", inputs: ["sortList"], outputs: ["sortChanged"] }, { type: i12.TableColumnsTogglerComponent, selector: "table-columns-toggler", inputs: ["prefix", "sortable", "columns"], outputs: ["columnsChanged"] }, { type: i13.ModeTogglerComponent, selector: "mode-toggler", inputs: ["modesList", "mode"], outputs: ["modeChanged"] }, { type: i14.DynamicTableComponent, selector: "cts-dynamic-table", inputs: ["columns", "responsiveColumns", "entityType", "prefix", "headers", "fields", "pageProvider", "pageSize", "isLegacyMode", "showTotalRecord", "pageNumber", "sortingBy", "queryParam", "customFilters", "quickFilter", "report", "rowCursor", "fullWidth", "tableMode", "componentName", "tableActions", "defultSort", "range", "isSearchPage", "multiSelectRows", "customFirstRow", "highlightSelectedCard", "showActionsAsMenu", "filterParams", "skipAggregation", "customUrl", "format", "pageSizes"], outputs: ["onRowSelected", "onRowIndexSelected", "actionOnRow", "onGettingData", "onMultiRowSelected", "onLoading", "sortChanged", "onPageChange", "onPage", "onLoad", "onInitialize"] }, { type: i15.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i16.NoDataFoundComponent, selector: "app-no-data-found", inputs: ["message", "width", "height"] }, { type: i17.TableComponent, selector: "cts-table", inputs: ["rows", "columns", "responsiveColumns", "entityType", "prefix", "pageCount", "totalRecords", "rowCursor", "fullWidth", "vocItemTranslationPrefix", "tableMode", "componentName", "tableActions", "format", "defultSort", "highlightSelectedCard", "multiSelectRows", "customFirstRow", "showActionsAsMenu", "messages", "defaultColumnSize"], outputs: ["onRowSelected", "onRowIndexSelected", "onIconSelected", "actionOnRow", "onSorting", "onMultiRowSelected"] }], directives: [{ type: i18.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i19.FluidHeightDirective, selector: "[ndfFluidHeight]", inputs: ["minHeight", "ndfFluidHeight", "subtractItems", "decrease", "delay", "calculate", "inlineStyle"], exportAs: ["ndfFluidHeight"] }, { type: i20.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i18.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i21.EmptyTemplateDirective, selector: "[emptyTemplate]" }], pipes: { "async": i18.AsyncPipe } });
345
387
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTableComponent, decorators: [{
346
388
  type: Component,
347
389
  args: [{
@@ -353,7 +395,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
353
395
  '[dir]': 'direction'
354
396
  }
355
397
  }]
356
- }], ctorParameters: function () { return [{ type: i1.FiltersMapperService }, { type: i2.DynamicTableService }, { type: i3.TranslateService }, { type: i1.NdfTableService }, { type: i4.CustomToastrService }, { type: i5.MatDialog }]; }, propDecorators: { rows: [{
398
+ }], ctorParameters: function () { return [{ type: i1.FiltersMapperService }, { type: i2.DynamicTableService }, { type: i3.TranslateService }, { type: i1.NdfTableService }, { type: i4.CustomToastrService }, { type: i1.NdfTableConfigurationService }, { type: i5.MatDialog }]; }, propDecorators: { rows: [{
357
399
  type: Input
358
400
  }], totalRecords: [{
359
401
  type: Input
@@ -363,6 +405,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
363
405
  type: Input
364
406
  }], activeQuery: [{
365
407
  type: Input
408
+ }], configPath: [{
409
+ type: Input
410
+ }], configTransformer: [{
411
+ type: Input
412
+ }], tableKey: [{
413
+ type: Input
414
+ }], config: [{
415
+ type: Input
366
416
  }], customCriteria: [{
367
417
  type: Input
368
418
  }], searchTerm: [{
@@ -398,7 +448,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
398
448
  }], filterCustomTemplate: [{
399
449
  type: ContentChild,
400
450
  args: [FILTER_CUSTOM_TEMPLATE, { read: TemplateRef }]
401
- }], config: [{
402
- type: Input
403
451
  }] } });
404
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmRmLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL25kZi10YWJsZS9jb250YWluZXJzL25kZi10YWJsZS9uZGYtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvbmRmLXRhYmxlL2NvbnRhaW5lcnMvbmRmLXRhYmxlL25kZi10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSWxHLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RyxPQUFPLEVBRU4sbUJBQW1CLEVBRW5CLG1CQUFtQixFQUVuQixNQUFNLHFCQUFxQixDQUFDO0FBWTdCLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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LE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUVHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBRXNELG9CQUFvQjtzQkFBaEYsWUFBWTt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ0MsbUJBQW1CO3NCQUE5RSxZQUFZO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDRyxvQkFBb0I7c0JBQWhGLFlBQVk7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUc5QyxNQUFNO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBQ1RJT05TX1RBQkxFX1RFTVBMQVRFLCBGSUxURVJfQ1VTVE9NX1RFTVBMQVRFLCBTRUFSQ0hfVEFCTEVfVEVNUExBVEUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcclxuaW1wb3J0IHtcclxuXHRBZ2dyZWdhdGlvblJlc3BvbnNlLFxyXG5cdENPTVBBUklTT05fT1BFUkFUT1IsXHJcblx0Rm9ybVF1ZXJ5TW9kZWwsXHJcblx0SHRtbERpYWxvZ0NvbXBvbmVudCxcclxuXHRIdG1sRGlhbG9nQ29uZmlnXHJcbn0gZnJvbSAnLi4vLi4vZmlsdGVycy1wYW5lbCc7XHJcbmltcG9ydCB7XHJcblx0Q3VzdG9tQ3JpdGVyaWFNb2RlbCxcclxuXHRFeHBvcnRUeXBlLFxyXG5cdE5kZkV4cG9ydFBheWxvYWQsXHJcblx0TmRmVGFibGVDb25maWcsXHJcblx0U29ydFRhYmxlSXRlbSxcclxuXHRUYWJsZUNvbHVtbkNvbmZpZyxcclxuXHRUYWJsZVNvcnRPcHRpb25zLFxyXG5cdFRhYmxlVmlld01vZGVcclxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBGaWx0ZXJzTWFwcGVyU2VydmljZSwgTmRmVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBQQUdFX1NJWkUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3IvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgRGVzdHJveVN1YmplY3QgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IE51eGVvUGFnaW5hdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZC9tb2RlbHMnO1xyXG5pbXBvcnQgeyBEeW5hbWljVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZHluYW1pYy10YWJsZSc7XHJcbmltcG9ydCB7IEN1c3RvbVRvYXN0clNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jdXN0b20tdG9hc3RyL3NlcnZpY2VzL2N1c3RvbS10b2FzdHIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC1uZGYtdGFibGUnLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9uZGYtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL25kZi10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG5cdGhvc3Q6IHtcclxuXHRcdGNsYXNzOiAnbmRmLXRhYmxlJyxcclxuXHRcdCdbZGlyXSc6ICdkaXJlY3Rpb24nXHJcblx0fVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmRmVGFibGVDb21wb25lbnQgZXh0ZW5kcyBEZXN0cm95U3ViamVjdCB7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfYWdncmVnYXRpb25zU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSZWNvcmQ8c3RyaW5nLCBBZ2dyZWdhdGlvblJlc3BvbnNlPj4obnVsbCk7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfZGlzcGxheWVkQ29sdW1uc1N1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFibGVDb2x1bW5Db25maWdbXT4oW10pO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgX3NvcnRPcHRpb25TdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRhYmxlU29ydE9wdGlvbnM+KG51bGwpO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdNb2RlU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYWJsZVZpZXdNb2RlPignbGlzdCcpO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgX3RleHRTZWFyY2hTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XHJcblxyXG5cdHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2YXRlZENyaXRlcmlhU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7XHJcblx0XHRwcmV2aW91c1ZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdFx0Y3VycmVudFZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdH0+KG51bGwpO1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IF9jdXN0b21Dcml0ZXJpYVN1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q3VzdG9tQ3JpdGVyaWFNb2RlbD4oe1xyXG5cdFx0cGFyYW1zOiB7fSxcclxuXHRcdHBheWxvYWQ6IHtcclxuXHRcdFx0cHJlZGljYXRlTGlzdDogW11cclxuXHRcdH1cclxuXHR9KTtcclxuXHJcblx0cmVhZG9ubHkgYWdncmVnYXRpb25zJCA9IHRoaXMuX2FnZ3JlZ2F0aW9uc1N1Yi5hc09ic2VydmFibGUoKTtcclxuXHRyZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zJCA9IHRoaXMuX2Rpc3BsYXllZENvbHVtbnNTdWIuYXNPYnNlcnZhYmxlKCk7XHJcblx0cmVhZG9ubHkgc29ydE9wdGlvbiQgPSB0aGlzLl9zb3J0T3B0aW9uU3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG5cdHJlYWRvbmx5IHZpZXdNb2RlJCA9IHRoaXMuX3ZpZXdNb2RlU3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG5cdHJlYWRvbmx5IGN1c3RvbUZpbHRlcnMkID0gdGhpcy5fY3VzdG9tQ3JpdGVyaWFTdWIuYXNPYnNlcnZhYmxlKCk7XHJcblx0cmVhZG9ubHkgdGV4dFNlYXJjaCQgPSB0aGlzLl90ZXh0U2VhcmNoU3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuXHRyZWFkb25seSBzZWFyY2hBbmRGaWx0ZXJzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMudGV4dFNlYXJjaCQsIHRoaXMuY3VzdG9tRmlsdGVycyRdKS5waXBlKFxyXG5cdFx0bWFwKChyZXMpID0+IHRoaXMuX3ByZXBhcmVTZWFyY2gocmVzKSlcclxuXHQpO1xyXG5cdEBJbnB1dCgpIHJvd3M6IEFycmF5PHVua25vd24+O1xyXG5cdEBJbnB1dCgpIHRvdGFsUmVjb3JkczogbnVtYmVyO1xyXG5cdEBJbnB1dCgpIGF1dG9DYWxjdWxhdGVIZWlnaHQgPSB0cnVlO1xyXG5cdEBJbnB1dCgpIGVtcHR5TWVzc2FnZSA9ICd0YWJsZV9ub0RhdGEnO1xyXG5cdEBJbnB1dCgpIGFjdGl2ZVF1ZXJ5OiBGb3JtUXVlcnlNb2RlbDtcclxuXHJcblx0QElucHV0KCkgc2V0IGN1c3RvbUNyaXRlcmlhKGNyaXRlcmlhOiBDdXN0b21Dcml0ZXJpYU1vZGVsKSB7XHJcblx0XHRpZiAoY3JpdGVyaWEpIHtcclxuXHRcdFx0dGhpcy5fY3VzdG9tQ3JpdGVyaWFTdWIubmV4dChjcml0ZXJpYSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRASW5wdXQoKSBzZXQgc2VhcmNoVGVybSh2YWx1ZTogc3RyaW5nKSB7XHJcblx0XHRpZiAodmFsdWUpIHtcclxuXHRcdFx0dGhpcy5fdGV4dFNlYXJjaFN1Yi5uZXh0KHZhbHVlKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdEBPdXRwdXQoKSBvblJvd1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBvblJvd0luZGV4U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0QE91dHB1dCgpIGFjdGlvbk9uUm93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBvbkdldHRpbmdEYXRhID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBvbk11bHRpUm93U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0QE91dHB1dCgpIG9uTG9hZGluZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcblx0QE91dHB1dCgpIG9uUGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xyXG5cdEBPdXRwdXQoKSBvbkluaXRpYWxpemVkID0gbmV3IEV2ZW50RW1pdHRlcjxOdXhlb1BhZ2luYXRpb248YW55Pj4oKTtcclxuXHRAT3V0cHV0KCkgb25Mb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE51eGVvUGFnaW5hdGlvbjxhbnk+PigpO1xyXG5cclxuXHRAT3V0cHV0KCkgb25RdWVyeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KCkgb25Tb3J0ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVNvcnRPcHRpb25zPigpO1xyXG5cclxuXHRAQ29udGVudENoaWxkKEFDVElPTlNfVEFCTEVfVEVNUExBVEUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgYWN0aW9uc1RhYmxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblx0QENvbnRlbnRDaGlsZChTRUFSQ0hfVEFCTEVfVEVNUExBVEUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgc2VhcmNoVGFibGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHRAQ29udGVudENoaWxkKEZJTFRFUl9DVVNUT01fVEVNUExBVEUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgZmlsdGVyQ3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG5cdHByaXZhdGUgX3RhYmxlQ29uZmlnU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDxOZGZUYWJsZUNvbmZpZz4obnVsbCk7XHJcblx0QElucHV0KCkgc2V0IGNvbmZpZyhjb25maWc6IE5kZlRhYmxlQ29uZmlnKSB7XHJcblx0XHR0aGlzLl90YWJsZUNvbmZpZ1N1Yi5uZXh0KGNvbmZpZyk7XHJcblx0XHR0aGlzLmlzUGFuZWxPcGVuZWQgPSBjb25maWc/Lm9wdGlvbnM/LmZpbHRlcnM/LnBhbmVsPy52aXNpYmxlID8/IHRydWU7XHJcblx0XHR0aGlzLl9pc0NvbmZpZ0NoYW5nZWQgPSAhIWNvbmZpZztcclxuXHRcdGlmIChjb25maWcuY29sdW1ucykge1xyXG5cdFx0XHR0aGlzLl9kaXNwbGF5ZWRDb2x1bW5zU3ViLm5leHQodGhpcy5fZmlsdGVyQnlWaXNpYmlsaXR5KGNvbmZpZy5jb2x1bW5zKSk7XHJcblx0XHR9XHJcblx0XHRpZiAoY29uZmlnLnNvcnRpbmdCeSkge1xyXG5cdFx0XHR0aGlzLl9zb3J0VmFsdWUgPSBjb25maWcuc29ydGluZ0J5O1xyXG5cdFx0XHR0aGlzLl9zb3J0T3B0aW9uU3ViLm5leHQoY29uZmlnLnNvcnRpbmdCeSk7XHJcblx0XHR9XHJcblx0XHRpZiAoY29uZmlnPy5vcHRpb25zPy50YWJsZU1vZGU/Lm1vZGUpIHtcclxuXHRcdFx0dGhpcy5fdmlld01vZGVTdWIubmV4dChjb25maWcub3B0aW9ucy50YWJsZU1vZGUubW9kZSk7XHJcblx0XHR9XHJcblx0XHRpZiAoY29uZmlnLnBhZ2VTaXplKSB7XHJcblx0XHRcdHRoaXMuX2FjdGl2ZVBhZ2UucGFnZVNpemUgPSBjb25maWcucGFnZVNpemU7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRnZXQgY29uZmlnKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3RhYmxlQ29uZmlnU3ViLmdldFZhbHVlKCk7XHJcblx0fVxyXG5cclxuXHRnZXQgb3B0aW9ucygpIHtcclxuXHRcdHJldHVybiB0aGlzLmNvbmZpZz8ub3B0aW9ucztcclxuXHR9XHJcblxyXG5cdGdldCBmaWx0ZXJzQ29uZmlnKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVycztcclxuXHR9XHJcblxyXG5cdGdldCBzb3J0TGlzdCgpIHtcclxuXHRcdHJldHVybiB0aGlzLm9wdGlvbnM/LnNvcnRMaXN0IHx8IFtdO1xyXG5cdH1cclxuXHJcblx0Z2V0IGNvbHVtbnNPcHRpb25zKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuY29uZmlnPy5vcHRpb25zPy5jb2x1bW5zO1xyXG5cdH1cclxuXHJcblx0Z2V0IGNvbHVtblRvZ2dsZSgpIHtcclxuXHRcdHJldHVybiB0aGlzLmNvbHVtbnNPcHRpb25zPy50b2dnbGUgPz8gdHJ1ZTtcclxuXHR9XHJcblxyXG5cdGdldCB0YWJsZU1vZGUoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5vcHRpb25zPy50YWJsZU1vZGU7XHJcblx0fVxyXG5cclxuXHRnZXQgcGFuZWxDb25maWcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5vcHRpb25zPy5maWx0ZXJzPy5wYW5lbDtcclxuXHR9XHJcblxyXG5cdGdldCBpc1BhbmVsVG9nZ2xlQXZhaWxhYmxlKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMucGFuZWxDb25maWc/LnRvZ2dsZUJ1dHRvbiA/PyB0cnVlO1xyXG5cdH1cclxuXHJcblx0Z2V0IHRleHRTZWFyY2hDb25maWcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5vcHRpb25zPy5zZWFyY2g7XHJcblx0fVxyXG5cclxuXHRnZXQgZmlsdGVyUmVsb2FkQ29uZmlnKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVycz8ucmVsb2FkO1xyXG5cdH1cclxuXHJcblx0Z2V0IGV4cG9ydFRhYmxlQ29uZmlnKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uZXhwb3J0O1xyXG5cdH1cclxuXHJcblx0cmVhZG9ubHkgZGVmYXVsdFNvcnQgPSBbeyBwcm9wOiAncHJvcGVydGllcy5jcmVhdGVkQXQnLCBkaXI6ICdkZXNjJyB9XTtcclxuXHJcblx0ZGlyZWN0aW9uOiBEaXJlY3Rpb24gPSAncnRsJztcclxuXHRpc1BhbmVsT3BlbmVkID0gZmFsc2U7XHJcblx0cmVhZG9ubHkgZGVmYXVsdFBhZ2VTaXplcyA9IFBBR0VfU0laRTtcclxuXHJcblx0cHJpdmF0ZSBfaXNDb25maWdDaGFuZ2VkID0gZmFsc2U7XHJcblx0cHJpdmF0ZSBfdGFibGVJbml0aWFsaXplZCA9IGZhbHNlO1xyXG5cdHByaXZhdGUgX3BhZ2VDaGFuZ2VkID0gZmFsc2U7XHJcblx0cHJpdmF0ZSBfYWN0aXZlUGFnZTogUGFnZUV2ZW50ID0ge1xyXG5cdFx0cGFnZUluZGV4OiAxLFxyXG5cdFx0cGFnZVNpemU6IDEwLFxyXG5cdFx0bGVuZ3RoOiAwXHJcblx0fTtcclxuXHJcblx0cHJpdmF0ZSBfc29ydFZhbHVlOiBUYWJsZVNvcnRPcHRpb25zO1xyXG5cdC8qKlxyXG5cdCAqXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIF9maWx0ZXJzTWFwcGVyOiBGaWx0ZXJzTWFwcGVyU2VydmljZSxcclxuXHRcdHByaXZhdGUgX2R5bmFtaWNUYWJsZVNlcnZpY2U6IER5bmFtaWNUYWJsZVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfbmdUYWJsZVNlcnZpY2U6IE5kZlRhYmxlU2VydmljZSxcclxuXHRcdHByaXZhdGUgX3RvYXN0clNlcnZpY2U6IEN1c3RvbVRvYXN0clNlcnZpY2UsXHJcblx0XHRwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZ1xyXG5cdCkge1xyXG5cdFx0c3VwZXIoKTtcclxuXHRcdHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlXHJcblx0XHRcdC5waXBlKHN0YXJ0V2l0aCh7IGxhbmc6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcgfSksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuXHRcdFx0LnN1YnNjcmliZSgocmVzKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5kaXJlY3Rpb24gPSByZXMubGFuZyA9PT0gJ2FyJyA/ICdydGwnIDogJ2x0cic7XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHJcblx0dG9nZ2xlUGFuZWwoKSB7XHJcblx0XHR0aGlzLmlzUGFuZWxPcGVuZWQgPSAhdGhpcy5pc1BhbmVsT3BlbmVkO1xyXG5cdH1cclxuXHJcblx0b25Mb2FkKGRhdGE6IE51eGVvUGFnaW5hdGlvbjxhbnk+KTogdm9pZCB7XHJcblx0XHR0aGlzLm9uTG9hZGVkLmVtaXQoZGF0YSk7XHJcblx0XHRpZiAoIXRoaXMuX3RhYmxlSW5pdGlhbGl6ZWQgfHwgdGhpcy5maWx0ZXJSZWxvYWRDb25maWc/LnN0cmF0ZWd5ID09PSAnbmV2ZXInIHx8IHRoaXMuX3BhZ2VDaGFuZ2VkKSB7XHJcblx0XHRcdHRoaXMuX3BhZ2VDaGFuZ2VkID0gZmFsc2U7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy5faXNDb25maWdDaGFuZ2VkIHx8IHRoaXMuZmlsdGVyUmVsb2FkQ29uZmlnPy5zdHJhdGVneSA9PT0gJ2Fsd2F5cycpIHtcclxuXHRcdFx0dGhpcy5fYWdncmVnYXRpb25zU3ViLm5leHQoZGF0YT8uYWdncmVnYXRpb25zKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0aGlzLmZpbHRlclJlbG9hZENvbmZpZz8uc3RyYXRlZ3kgPT09ICdvbkNoYW5nZScpIHtcclxuXHRcdFx0Y29uc3QgYWN0aXZhdGVkUXVlcnkgPSB0aGlzLl9hY3RpdmF0ZWRDcml0ZXJpYVN1Yi5nZXRWYWx1ZSgpO1xyXG5cdFx0XHRjb25zdCBjdXJyZW50VmFsdWUgPSBhY3RpdmF0ZWRRdWVyeT8uY3VycmVudFZhbHVlIHx8IHt9O1xyXG5cdFx0XHRjb25zdCBwcmV2aW91c1ZhbHVlID0gYWN0aXZhdGVkUXVlcnk/LnByZXZpb3VzVmFsdWUgfHwge307XHJcblxyXG5cdFx0XHRjb25zdCB1cGRhdGVkS2V5cyA9IF8udW5pb24oXy5rZXlzKHByZXZpb3VzVmFsdWUpLCBfLmtleXMoY3VycmVudFZhbHVlKSkuZmlsdGVyKFxyXG5cdFx0XHRcdChrZXkpID0+ICFfLmlzRXF1YWwocHJldmlvdXNWYWx1ZVtrZXldLCBjdXJyZW50VmFsdWVba2V5XSlcclxuXHRcdFx0KTtcclxuXHJcblx0XHRcdGNvbnN0IHRyaWdnZXJLZXlzID0gdGhpcy5maWx0ZXJSZWxvYWRDb25maWcudHJpZ2dlckZpZWxkcyB8fCBbXTtcclxuXHRcdFx0Y29uc3Qgc2hvdWxkUmVsb2FkID0gdHJpZ2dlcktleXMuc29tZSgoa2V5KSA9PiB1cGRhdGVkS2V5cy5pbmNsdWRlcyhrZXkpKTtcclxuXHRcdFx0aWYgKHNob3VsZFJlbG9hZCkge1xyXG5cdFx0XHRcdHRoaXMuX2FnZ3JlZ2F0aW9uc1N1Yi5uZXh0KGRhdGE/LmFnZ3JlZ2F0aW9ucyk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG9uSW5pdGlhbGl6ZShkYXRhOiBOdXhlb1BhZ2luYXRpb248YW55Pik6IHZvaWQge1xyXG5cdFx0dGhpcy5fYWdncmVnYXRpb25zU3ViLm5leHQoZGF0YT8uYWdncmVnYXRpb25zKTtcclxuXHRcdHRoaXMuX3RhYmxlSW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG5cdFx0dGhpcy5faXNDb25maWdDaGFuZ2VkID0gZmFsc2U7XHJcblx0XHR0aGlzLm9uSW5pdGlhbGl6ZWQuZW1pdChkYXRhKTtcclxuXHR9XHJcblxyXG5cdGNvbHVtbnNDaGFuZ2VkKGNvbHVtbnM6IFRhYmxlQ29sdW1uQ29uZmlnW10pIHtcclxuXHRcdHRoaXMuX2Rpc3BsYXllZENvbHVtbnNTdWIubmV4dChjb2x1bW5zKTtcclxuXHR9XHJcblxyXG5cdHNvcnRDaGFuZ2VkKHNvcnQ6IFNvcnRUYWJsZUl0ZW0pIHtcclxuXHRcdHRoaXMuX3NvcnRWYWx1ZSA9IHsgc29ydEJ5OiBzb3J0LnZhbHVlLCBzb3J0T3JkZXI6IHNvcnQuZGlyZWN0aW9uIH07XHJcblx0XHR0aGlzLl9zb3J0T3B0aW9uU3ViLm5leHQodGhpcy5fc29ydFZhbHVlKTtcclxuXHR9XHJcblxyXG5cdG1vZGVDaGFuZ2VkKG1vZGU6IFRhYmxlVmlld01vZGUpIHtcclxuXHRcdHRoaXMuX3ZpZXdNb2RlU3ViLm5leHQobW9kZSk7XHJcblx0fVxyXG5cclxuXHRvblNvcnRDaGFuZ2VkKHNvcnQ6IFRhYmxlU29ydE9wdGlvbnMpIHtcclxuXHRcdHRoaXMuX3NvcnRWYWx1ZSA9IHNvcnQ7XHJcblx0XHR0aGlzLm9uU29ydC5lbWl0KHNvcnQpO1xyXG5cdH1cclxuXHJcblx0ZXhwb3J0VGFibGUodHlwZTogRXhwb3J0VHlwZSkge1xyXG5cdFx0Y29uc3QgcmVxdWVzdCA9IF8uY2xvbmVEZWVwKHRoaXMuZXhwb3J0VGFibGVDb25maWc/LnJlcXVlc3QpO1xyXG5cdFx0aWYgKCFyZXF1ZXN0KSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGNvbnN0IGNvbHVtbnMgPSB0aGlzLl9kaXNwbGF5ZWRDb2x1bW5zU3ViLmdldFZhbHVlKCk7XHJcblx0XHRjb25zdCBmaWVsZHMgPSBjb2x1bW5zLm1hcCgoY29sKSA9PiBjb2wuaGVhZGVyQ2xhc3MpO1xyXG5cdFx0Y29uc3QgaGVhZGVycyA9IGNvbHVtbnMubWFwKChjb2wpID0+ICh0aGlzLmNvbmZpZy5wcmVmaXggfHwgJycpICsgY29sLm5hbWUpO1xyXG5cclxuXHRcdGNvbnN0IGNyaXRlcmlhID0gdGhpcy5fY3VzdG9tQ3JpdGVyaWFTdWIuZ2V0VmFsdWUoKTtcclxuXHJcblx0XHRyZXF1ZXN0LnBhcmFtcyA9IE9iamVjdC5hc3NpZ24oXHJcblx0XHRcdHt9LFxyXG5cdFx0XHRjcml0ZXJpYS5wYXJhbXMsXHJcblx0XHRcdHRoaXMuX3NvcnRWYWx1ZSB8fCB7fSxcclxuXHRcdFx0dGhpcy5jb25maWc/LnF1aWNrRmlsdGVycyA/IHsgcXVpY2tGaWx0ZXJzOiB0aGlzLmNvbmZpZy5xdWlja0ZpbHRlcnMgfSA6IHt9LFxyXG5cdFx0XHRyZXF1ZXN0LnBhcmFtc1xyXG5cdFx0KTtcclxuXHJcblx0XHRjb25zdCBwYXlsb2FkOiBOZGZFeHBvcnRQYXlsb2FkID0ge1xyXG5cdFx0XHRwcmVkaWNhdGVMaXN0OiBjcml0ZXJpYS5wYXlsb2FkLnByZWRpY2F0ZUxpc3QgfHwgW10sXHJcblx0XHRcdHJlcG9ydE1ldGFEYXRhOiB7XHJcblx0XHRcdFx0ZG9jVHlwZU5hbWU6IHRoaXMuZXhwb3J0VGFibGVDb25maWcuZG9jVHlwZU5hbWUsXHJcblx0XHRcdFx0ZmlsZVR5cGU6IHR5cGUsXHJcblx0XHRcdFx0bG9jYWxlOiB0aGlzLmV4cG9ydFRhYmxlQ29uZmlnPy5sb2NhbGUgfHwgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyxcclxuXHRcdFx0XHRmaWVsZHM6IHRoaXMuZXhwb3J0VGFibGVDb25maWc/LmZpZWxkcyB8fCBmaWVsZHMsXHJcblx0XHRcdFx0aGVhZGVyczogW11cclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHJcblx0XHR0aGlzLl90cmFuc2xhdGVTZXJ2aWNlXHJcblx0XHRcdC5nZXQoaGVhZGVycylcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0c3dpdGNoTWFwKCh0cmFuc2xhdGlvbnMpID0+IHtcclxuXHRcdFx0XHRcdHBheWxvYWQucmVwb3J0TWV0YURhdGEuaGVhZGVycyA9IGhlYWRlcnMubWFwKChjb2wpID0+IHRyYW5zbGF0aW9uc1tjb2xdKTtcclxuXHRcdFx0XHRcdHJldHVybiB0aGlzLl9uZ1RhYmxlU2VydmljZS5leHBvcnRUYWJsZShyZXF1ZXN0LCBwYXlsb2FkKTtcclxuXHRcdFx0XHR9KSxcclxuXHRcdFx0XHRjYXRjaEVycm9yKChfKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLl90b2FzdHJTZXJ2aWNlLmVycm9yKCdUQUJMRS5FWFBPUlQuUmVxdWVzdEVycm9yJyk7XHJcblx0XHRcdFx0XHRyZXR1cm4gb2YoZmFsc2UpO1xyXG5cdFx0XHRcdH0pLFxyXG5cdFx0XHRcdGZpbHRlcihCb29sZWFuKSxcclxuXHRcdFx0XHR0YWtlVW50aWwodGhpcy5kZXN0cm95JClcclxuXHRcdFx0KVxyXG5cdFx0XHQuc3Vic2NyaWJlKChyZXM6IGJvb2xlYW4pID0+IHtcclxuXHRcdFx0XHRpZiAocmVzKSB7XHJcblx0XHRcdFx0XHR0aGlzLl90b2FzdHJTZXJ2aWNlLnN1Y2Nlc3MoJ1RBQkxFLkVYUE9SVC5yZXF1ZXN0U3VjY2VzcycpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR0aGlzLl90b2FzdHJTZXJ2aWNlLmVycm9yKCdUQUJMRS5FWFBPUlQucmVxdWVzdEVycm9yJyk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGZpbHRlckNoYW5nZWQoY3JpdGVyaWE6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuXHRcdHRoaXMuX3RyaWdnZXJDcml0ZXJpYUNoYW5nZXMoY3JpdGVyaWEpO1xyXG5cdFx0aWYgKHRoaXMuZmlsdGVyc0NvbmZpZz8ubW9kZSAhPT0gJ3BheWxvYWQnKSB7XHJcblx0XHRcdGNvbnN0IGlzU3RyaW5naWZ5UGFyYW1zID0gdGhpcy5maWx0ZXJzQ29uZmlnPy5zdHJpbmdpZnlQYXJhbXM7XHJcblx0XHRcdGNvbnN0IHZhbHVlID0gIWlzU3RyaW5naWZ5UGFyYW1zID8gY3JpdGVyaWEgOiB0aGlzLl9zdHJpbmdpZnlWYWx1ZXMoY3JpdGVyaWEpO1xyXG5cdFx0XHR0aGlzLl9keW5hbWljVGFibGVTZXJ2aWNlLnJlZnJlc2hEYXRhLm5leHQodmFsdWUpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgcGF5bG9hZCA9IHRoaXMuX2ZpbHRlcnNNYXBwZXIucHJlcGFyZVBheWxvYWQodGhpcy5maWx0ZXJzQ29uZmlnLmZpZWxkcywgY3JpdGVyaWEpO1xyXG5cdFx0dGhpcy5fY3VzdG9tQ3JpdGVyaWFTdWIubmV4dChwYXlsb2FkKTtcclxuXHR9XHJcblxyXG5cdG9uVGV4dFNlYXJjaCh0ZXh0OiBzdHJpbmcpIHtcclxuXHRcdGlmICghdGhpcy50ZXh0U2VhcmNoQ29uZmlnPy5maWVsZEtleSB8fCB0eXBlb2YgdGV4dCAhPT0gJ3N0cmluZycpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICghdGV4dCkge1xyXG5cdFx0XHR0aGlzLm9uQ2xlYXJTZWFyY2goKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5fdGV4dFNlYXJjaFN1Yi5uZXh0KHRleHQpO1xyXG5cdH1cclxuXHJcblx0b25DbGVhclNlYXJjaCgpIHtcclxuXHRcdHRoaXMuX3RleHRTZWFyY2hTdWIubmV4dChudWxsKTtcclxuXHR9XHJcblxyXG5cdG9wZW5TZWFyY2hNb2RhbCgpIHtcclxuXHRcdGNvbnN0IF9kaWFsb2dDb25maWcgPSB0aGlzLnRleHRTZWFyY2hDb25maWc/LnN1ZmZpeD8uZGlhbG9nO1xyXG5cdFx0aWYgKCFfZGlhbG9nQ29uZmlnKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHsgb3B0aW9ucywgLi4uZGF0YSB9ID0gX2RpYWxvZ0NvbmZpZztcclxuXHRcdHRoaXMuX2RpYWxvZy5vcGVuPEh0bWxEaWFsb2dDb21wb25lbnQsIEh0bWxEaWFsb2dDb25maWc+KEh0bWxEaWFsb2dDb21wb25lbnQsIHtcclxuXHRcdFx0cGFuZWxDbGFzczogJ3AtMCcsXHJcblx0XHRcdG1pbldpZHRoOiAnbWluKDUwMHB4LDYwdncpJyxcclxuXHRcdFx0ZGlyZWN0aW9uOiB0aGlzLmRpcmVjdGlvbixcclxuXHRcdFx0Li4ub3B0aW9ucyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRvblBhZ2VDaGFuZ2VkKHBhZ2U6IFBhZ2VFdmVudCkge1xyXG5cdFx0dGhpcy5fcGFnZUNoYW5nZWQgPSB0aGlzLl9hY3RpdmVQYWdlLnBhZ2VJbmRleCAhPT0gcGFnZS5wYWdlSW5kZXggfHwgdGhpcy5fYWN0aXZlUGFnZS5wYWdlU2l6ZSAhPT0gcGFnZS5wYWdlU2l6ZTtcclxuXHRcdGlmICh0aGlzLl9wYWdlQ2hhbmdlZCkge1xyXG5cdFx0XHR0aGlzLm9uUGFnZS5lbWl0KHBhZ2UpO1xyXG5cdFx0XHR0aGlzLl9hY3RpdmVQYWdlID0gcGFnZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX2ZpbHRlckJ5VmlzaWJpbGl0eShjb2x1bW5zOiBUYWJsZUNvbHVtbkNvbmZpZ1tdKTogVGFibGVDb2x1bW5Db25maWdbXSB7XHJcblx0XHRyZXR1cm4gY29sdW1ucy5maWx0ZXIoKGNvbCkgPT4gY29sLmRlZmF1bHRWaXNpYmxlKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX3ByZXBhcmVTZWFyY2goW3NlYXJjaCwgZmlsdGVyc106IFtcclxuXHRcdHN0cmluZyxcclxuXHRcdHtcclxuXHRcdFx0cGFyYW1zPzogUmVjb3JkPHN0cmluZywgYW55PjtcclxuXHRcdFx0cGF5bG9hZD86IHsgcHJlZGljYXRlTGlzdDogYW55W10gfSAmIFJlY29yZDxzdHJpbmcsIGFueT47XHJcblx0XHR9XHJcblx0XSk6IGFueSB7XHJcblx0XHR7XHJcblx0XHRcdGNvbnN0IHsgcHJlZGljYXRlTGlzdCB9ID0gZmlsdGVycy5wYXlsb2FkO1xyXG5cdFx0XHRjb25zdCBfa2V5ID0gdGhpcy50ZXh0U2VhcmNoQ29uZmlnPy5maWVsZEtleTtcclxuXHRcdFx0Y29uc3Qgc2VhcmNoSW5kZXggPSBwcmVkaWNhdGVMaXN0LmZpbmRJbmRleCgoaXRtKSA9PiBpdG0ubmFtZSA9PT0gX2tleSk7XHJcblx0XHRcdGlmIChzZWFyY2ggJiYgX2tleSkge1xyXG5cdFx0XHRcdGlmIChzZWFyY2hJbmRleCA+PSAwKSB7XHJcblx0XHRcdFx0XHRwcmVkaWNhdGVMaXN0W3NlYXJjaEluZGV4XS52YWx1ZSA9IGAnJHtzZWFyY2h9J2A7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHByZWRpY2F0ZUxpc3QucHVzaCh7XHJcblx0XHRcdFx0XHRcdG5hbWU6IF9rZXksXHJcblx0XHRcdFx0XHRcdG9wZXJhdG9yOiB0aGlzLnRleHRTZWFyY2hDb25maWc/Lm9wZXJhdG9yIHx8IENPTVBBUklTT05fT1BFUkFUT1IuZXF1YWxzLFxyXG5cdFx0XHRcdFx0XHR2YWx1ZTogYCcke3NlYXJjaH0nYFxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2UgaWYgKHNlYXJjaEluZGV4ID49IDApIHtcclxuXHRcdFx0XHRwcmVkaWNhdGVMaXN0LnNwbGljZShzZWFyY2hJbmRleCk7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIF8uY2xvbmVEZWVwKHsgLi4uZmlsdGVycyB9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX3N0cmluZ2lmeVZhbHVlcyhjcml0ZXJpYTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG5cdFx0cmV0dXJuIE9iamVjdC5lbnRyaWVzKGNyaXRlcmlhKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XHJcblx0XHRcdGFjY1trZXldID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiB2YWx1ZTtcclxuXHRcdFx0cmV0dXJuIGFjYztcclxuXHRcdH0sIHt9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX3RyaWdnZXJDcml0ZXJpYUNoYW5nZXMoY3JpdGVyaWE6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuXHRcdGlmICh0aGlzLl90YWJsZUluaXRpYWxpemVkKSB7XHJcblx0XHRcdHRoaXMub25RdWVyeUNoYW5nZS5lbWl0KGNyaXRlcmlhKTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IGFjdGl2YXRlZFF1ZXJ5ID0geyAuLi50aGlzLl9hY3RpdmF0ZWRDcml0ZXJpYVN1Yi5nZXRWYWx1ZSgpIH07XHJcblx0XHRjb25zdCBwcmV2aW91c1ZhbHVlID0gYWN0aXZhdGVkUXVlcnk/LmN1cnJlbnRWYWx1ZTtcclxuXHRcdHRoaXMuX2FjdGl2YXRlZENyaXRlcmlhU3ViLm5leHQoe1xyXG5cdFx0XHRwcmV2aW91c1ZhbHVlOiBwcmV2aW91c1ZhbHVlLFxyXG5cdFx0XHRjdXJyZW50VmFsdWU6IGNyaXRlcmlhXHJcblx0XHR9KTtcclxuXHR9XHJcbn1cclxuIiwiXHJcbjxkaXZcclxuXHQqbmdJZj1cImNvbmZpZ1wiXHJcblx0Y2xhc3M9XCJuZGYtdGFibGVfX2NvbnRhaW5lclwiXHJcblx0W2NsYXNzLnBhbmVsLW9wZW5lZF09XCJpc1BhbmVsT3BlbmVkICYmIGZpbHRlcnNDb25maWdcIlxyXG5cdFtkaXJdPVwiZGlyZWN0aW9uXCJcclxuXHRuZGZGbHVpZEhlaWdodFxyXG5cdFtjYWxjdWxhdGVdPVwiYXV0b0NhbGN1bGF0ZUhlaWdodFwiXHJcbj5cclxuXHQ8ZGl2IGNsYXNzPVwibmRmLXRhYmxlX19wYW5lbFwiICpuZ0lmPVwiZmlsdGVyc0NvbmZpZz8uZmllbGRzXCI+XHJcblx0XHQ8YXBwLWZpbHRlcnMtcGFuZWxcclxuXHRcdFx0W2ZpZWxkc109XCJmaWx0ZXJzQ29uZmlnLmZpZWxkc1wiXHJcblx0XHRcdFthZ2dyZWdhdGlvbnNdPVwiYWdncmVnYXRpb25zJCB8IGFzeW5jXCJcclxuXHRcdFx0KGZpbHRlckNoYW5nZWQpPVwiZmlsdGVyQ2hhbmdlZCgkZXZlbnQpXCJcclxuXHRcdFx0W2FjdGl2ZVF1ZXJ5XT1cImFjdGl2ZVF1ZXJ5XCJcclxuXHRcdFx0Y2xhc3M9XCJuZGYtdGFibGVfX2ZpbHRlcnNcIlxyXG5cdFx0XHRbY3VzdG9tVGVtcGxhdGVSZWZdPVwiZmlsdGVyQ3VzdG9tVGVtcGxhdGVcIlxyXG5cdFx0PjwvYXBwLWZpbHRlcnMtcGFuZWw+XHJcblx0PC9kaXY+XHJcblx0PGRpdiBjbGFzcz1cIm5kZi10YWJsZV9fY29udGVudFwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cIm5kZi10YWJsZV9faGVhZGVyIGZsZXhcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cIm5kZi10YWJsZV9faGVhZGVyX19jdXN0b20tYWN0aW9ucyBmbGV4IGdhcC14LTQgaXRlbXMtY2VudGVyXCI+XHJcblx0XHRcdFx0PG5nLWNvbnRhaW5lclxyXG5cdFx0XHRcdFx0W25nVGVtcGxhdGVPdXRsZXRdPVwic2VhcmNoVGFibGVUZW1wbGF0ZSB8fCBkZWZhdWx0QWN0aW9uVGVtcGxhdGVcIlxyXG5cdFx0XHRcdFx0W25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuXHRcdFx0XHRcdFx0JGltcGxpY2l0OiBjb25maWcsXHJcblx0XHRcdFx0XHRcdHBhbmVsT3BlbmVkOiBpc1BhbmVsT3BlbmVkLFxyXG5cdFx0XHRcdFx0XHR0b2dnbGVQYW5lbDogdG9nZ2xlUGFuZWwsXHJcblx0XHRcdFx0XHRcdG9wZW5Nb2RhbDogb3BlblNlYXJjaE1vZGFsLFxyXG5cdFx0XHRcdFx0XHRzZWFyY2g6IG9uVGV4dFNlYXJjaCxcclxuXHRcdFx0XHRcdFx0Y2xlYXI6IG9uQ2xlYXJTZWFyY2hcclxuXHRcdFx0XHRcdH1cIlxyXG5cdFx0XHRcdD48L25nLWNvbnRhaW5lcj5cclxuXHJcblx0XHRcdFx0PG5nLXRlbXBsYXRlICNkZWZhdWx0QWN0aW9uVGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiAqbmdJZj1cImlzUGFuZWxUb2dnbGVBdmFpbGFibGVcIiBjbGFzcz1cInRvZ2dsZS1idXR0b25cIiAoY2xpY2spPVwidG9nZ2xlUGFuZWwoKVwiPlxyXG5cdFx0XHRcdFx0XHQ8bWF0LWljb24+IGZpbHRlcl9hbHQ8L21hdC1pY29uPlxyXG5cdFx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdFx0XHQ8YXBwLXRleHQtc2VhcmNoXHJcblx0XHRcdFx0XHRcdCpuZ0lmPVwidGV4dFNlYXJjaENvbmZpZ1wiXHJcblx0XHRcdFx0XHRcdFtzZWFyY2hDb25maWddPVwidGV4dFNlYXJjaENvbmZpZ1wiXHJcblx0XHRcdFx0XHRcdChvcGVuTW9kYWwpPVwib3BlblNlYXJjaE1vZGFsKClcIlxyXG5cdFx0XHRcdFx0XHRbc2VhcmNoXT1cInRleHRTZWFyY2gkIHwgYXN5bmNcIlxyXG5cdFx0XHRcdFx0XHQoc2VhcmNoQ2hhbmdlKT1cIm9uVGV4dFNlYXJjaCgkZXZlbnQpXCJcclxuXHRcdFx0XHRcdFx0KGNsZWFyKT1cIm9uQ2xlYXJTZWFyY2goKVwiXHJcblx0XHRcdFx0XHQ+PC9hcHAtdGV4dC1zZWFyY2g+XHJcblx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJuZGYtdGFibGVfX2hlYWRlcl9fYWN0aW9ucyBmbGV4IGdhcC14LTQgaXRlbXMtY2VudGVyXCI+XHJcblx0XHRcdFx0PG5kZi10YWJsZS1leHBvcnRcclxuXHRcdFx0XHRcdCpuZ0lmPVwiZXhwb3J0VGFibGVDb25maWc/LmVuYWJsZWRcIlxyXG5cdFx0XHRcdFx0W2NvbmZpZ109XCJleHBvcnRUYWJsZUNvbmZpZ1wiXHJcblx0XHRcdFx0XHQob25FeHBvcnQpPVwiZXhwb3J0VGFibGUoJGV2ZW50KVwiXHJcblx0XHRcdFx0PjwvbmRmLXRhYmxlLWV4cG9ydD5cclxuXHJcblx0XHRcdFx0PHRhYmxlLXNvcnRpbmctbGlzdFxyXG5cdFx0XHRcdFx0Km5nSWY9XCIhIXNvcnRMaXN0Py5sZW5ndGhcIlxyXG5cdFx0XHRcdFx0W3NvcnRMaXN0XT1cInNvcnRMaXN0XCJcclxuXHRcdFx0XHRcdChzb3J0Q2hhbmdlZCk9XCJzb3J0Q2hhbmdlZCgkZXZlbnQpXCJcclxuXHRcdFx0XHQ+PC90YWJsZS1zb3J0aW5nLWxpc3Q+XHJcblx0XHRcdFx0PHRhYmxlLWNvbHVtbnMtdG9nZ2xlclxyXG5cdFx0XHRcdFx0Km5nSWY9XCJjb2x1bW5Ub2dnbGVcIlxyXG5cdFx0XHRcdFx0W2NvbHVtbnNdPVwiY29uZmlnLmNvbHVtbnNcIlxyXG5cdFx0XHRcdFx0W3ByZWZpeF09XCJjb25maWcucHJlZml4XCJcclxuXHRcdFx0XHRcdFtzb3J0YWJsZV09XCJjb2x1bW5zT3B0aW9ucz8uc29ydGFibGVcIlxyXG5cdFx0XHRcdFx0KGNvbHVtbnNDaGFuZ2VkKT1cImNvbHVtbnNDaGFuZ2VkKCRldmVudClcIlxyXG5cdFx0XHRcdD48L3RhYmxlLWNvbHVtbnMtdG9nZ2xlcj5cclxuXHRcdFx0XHQ8bW9kZS10b2dnbGVyXHJcblx0XHRcdFx0XHQqbmdJZj1cInRhYmxlTW9kZT8udG9nZ2xlTW9kZVwiXHJcblx0XHRcdFx0XHRbbW9kZV09XCJ0YWJsZU1vZGUubW9kZSB8fCAnbGlzdCdcIlxyXG5cdFx0XHRcdFx0W21vZGVzTGlzdF09XCJ0YWJsZU1vZGU/LmF2YWlsYWJsZU1vZGVcIlxyXG5cdFx0XHRcdFx0KG1vZGVDaGFuZ2VkKT1cIm1vZGVDaGFuZ2VkKCRldmVudClcIlxyXG5cdFx0XHRcdD48L21vZGUtdG9nZ2xlcj5cclxuXHRcdFx0XHQ8bmctY29udGFpbmVyXHJcblx0XHRcdFx0XHRbbmdUZW1wbGF0ZU91dGxldF09XCJhY3Rpb25zVGFibGVUZW1wbGF0ZVwiXHJcblx0XHRcdFx0XHRbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xyXG5cdFx0XHRcdFx0XHQkaW1wbGljaXQ6IGNvbmZpZyxcclxuXHRcdFx0XHRcdFx0cGFuZWxPcGVuZWQ6IGlzUGFuZWxPcGVuZWQsXHJcblx0XHRcdFx0XHRcdHRvZ2dsZVBhbmVsOiB0b2dnbGVQYW5lbCxcclxuXHRcdFx0XHRcdFx0b3Blbk1vZGFsOiBvcGVuU2VhcmNoTW9kYWwsXHJcblx0XHRcdFx0XHRcdHNlYXJjaDogb25UZXh0U2VhcmNoLFxyXG5cdFx0XHRcdFx0XHRjbGVhcjogb25DbGVhclNlYXJjaFxyXG5cdFx0XHRcdFx0fVwiXHJcblx0XHRcdFx0PjwvbmctY29udGFpbmVyPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cclxuXHRcdDxjdHMtZHluYW1pYy10YWJsZVxyXG5cdFx0XHQqbmdJZj1cIiFjb25maWcuaXNEYXRhUHJvdmlkZWRcIlxyXG5cdFx0XHRjbGFzcz1cIm5kZi10YWJsZV9fdGFibGUgdGFibGUtc3R5bGVcIlxyXG5cdFx0XHRbY29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zJCB8IGFzeW5jXCJcclxuXHRcdFx0W3Jlc3BvbnNpdmVDb2x1bW5zXT1cImRpc3BsYXllZENvbHVtbnMkIHwgYXN5bmNcIlxyXG5cdFx0XHRbZnVsbFdpZHRoXT1cImNvbmZpZy5mdWxsV2lkdGggfHwgJ2F1dG8nXCJcclxuXHRcdFx0W3BhZ2VTaXplXT1cImNvbmZpZy5wYWdlU2l6ZSB8fCAxMFwiXHJcblx0XHRcdFtwYWdlTnVtYmVyXT1cImNvbmZpZy5wYWdlTnVtYmVyIHx8IDFcIlxyXG5cdFx0XHRbcGFnZVByb3ZpZGVyXT1cImNvbmZpZy5wYWdlUHJvdmlkZXJcIlxyXG5cdFx0XHRbY3VzdG9tVXJsXT1cImNvbmZpZy5jdXN0b21VcmxcIlxyXG5cdFx0XHRbcXVpY2tGaWx0ZXJdPVwiY29uZmlnLnF1aWNrRmlsdGVycyA/IHsgcXVpY2tGaWx0ZXJzOiBjb25maWcucXVpY2tGaWx0ZXJzIH0gOiB1bmRlZmluZWRcIlxyXG5cdFx0XHRbZGVmdWx0U29ydF09XCJjb25maWcuZGVmYXVsdFNvcnQgfHwgZGVmYXVsdFNvcnRcIlxyXG5cdFx0XHRbc29ydGluZ0J5XT1cInNvcnRPcHRpb24kIHwgYXN5bmNcIlxyXG5cdFx0XHRbZW50aXR5VHlwZV09XCInYWxsJ1wiXHJcblx0XHRcdFtmaWVsZHNdPVwiY29uZmlnLmZpZWxkc1wiXHJcblx0XHRcdFt0YWJsZU1vZGVdPVwidmlld01vZGUkIHwgYXN5bmNcIlxyXG5cdFx0XHRbY29tcG9uZW50TmFtZV09XCJ0YWJsZU1vZGU/LlsnY29tcG9uZW50TmFtZSddXCJcclxuXHRcdFx0W3JhbmdlXT1cImNvbmZpZz8ucmFuZ2VcIlxyXG5cdFx0XHRbaXNTZWFyY2hQYWdlXT1cImNvbmZpZz8uaXNTZWFyY2hQYWdlXCJcclxuXHRcdFx0W211bHRpU2VsZWN0Um93c109XCJjb25maWc/Lm11bHRpU2VsZWN0Um93c1wiXHJcblx0XHRcdFtjdXN0b21GaXJzdFJvd109XCJjb25maWc/LmN1c3RvbUZpcnN0Um93XCJcclxuXHRcdFx0W2hpZ2hsaWdodFNlbGVjdGVkQ2FyZF09XCJjb25maWc/LmhpZ2hsaWdodFNlbGVjdGVkQ2FyZFwiXHJcblx0XHRcdFtzaG93QWN0aW9uc0FzTWVudV09XCJjb25maWc/LnNob3dBY3Rpb25zQXNNZW51XCJcclxuXHRcdFx0W2ZpbHRlclBhcmFtc109XCJjb25maWc/LmZpbHRlclBhcmFtc1wiXHJcblx0XHRcdFtmb3JtYXRdPVwiY29uZmlnPy5mb3JtYXQgfHwgJ01NTU0gZCwgeSdcIlxyXG5cdFx0XHRbcGFnZVNpemVzXT1cImNvbmZpZz8ucGFnZVNpemVzIHx8IGRlZmF1bHRQYWdlU2l6ZXNcIlxyXG5cdFx0XHRbcHJlZml4XT1cImNvbmZpZy5wcmVmaXggfHwgJydcIlxyXG5cdFx0XHRbcm93Q3Vyc29yXT1cInRydWVcIlxyXG5cdFx0XHRbcXVlcnlQYXJhbV09XCJjb25maWcucXVlcnlQYXJhbVwiXHJcblx0XHRcdFtjdXN0b21GaWx0ZXJzXT1cInNlYXJjaEFuZEZpbHRlcnMkIHwgYXN5bmNcIlxyXG5cdFx0XHRbdGFibGVBY3Rpb25zXT1cImNvbmZpZy50YWJsZUFjdGlvbnNcIlxyXG5cdFx0XHRbaGVhZGVyc109XCJjb25maWcuaGVhZGVyc1wiXHJcblx0XHRcdChvblJvd1NlbGVjdGVkKT1cIm9uUm93U2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCJcclxuXHRcdFx0KG9uUm93SW5kZXhTZWxlY3RlZCk9XCJvblJvd0luZGV4U2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCJcclxuXHRcdFx0KGFjdGlvbk9uUm93KT1cImFjdGlvbk9uUm93LmVtaXQoJGV2ZW50KVwiXHJcblx0XHRcdChvbkdldHRpbmdEYXRhKT1cIm9uR2V0dGluZ0RhdGEuZW1pdCgkZXZlbnQpXCJcclxuXHRcdFx0KG9uTG9hZCk9XCJvbkxvYWQoJGV2ZW50KVwiXHJcblx0XHRcdChvbkluaXRpYWxpemUpPVwib25Jbml0aWFsaXplKCRldmVudClcIlxyXG5cdFx0XHQob25NdWx0aVJvd1NlbGVjdGVkKT1cIm9uTXVsdGlSb3dTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG5cdFx0XHQob25Mb2FkaW5nKT1cIm9uTG9hZGluZy5lbWl0KCRldmVudClcIlxyXG5cdFx0XHQob25QYWdlKT1cIm9uUGFnZUNoYW5nZWQoJGV2ZW50KVwiXHJcblx0XHRcdFtpc0xlZ2FjeU1vZGVdPVwiZmFsc2VcIlxyXG5cdFx0XHRbc2hvd1RvdGFsUmVjb3JkXT1cInRydWVcIlxyXG5cdFx0XHQoc29ydENoYW5nZWQpPVwib25Tb3J0Q2hhbmdlZCgkZXZlbnQpXCJcclxuXHRcdD5cclxuXHRcdFx0PG5nLXRlbXBsYXRlIGVtcHR5VGVtcGxhdGUgbGV0LWlzTG9hZGluZyBsZXQtcm93cz1cInJvd3NcIiBsZXQtaW5pdGlhbGl6ZWQ9XCJpbml0aWFsaXplZFwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJsb2FkaW5nLWRhdGFcIiAqbmdJZj1cImlzTG9hZGluZyAmJiBpbml0aWFsaXplZFwiPlxyXG5cdFx0XHRcdFx0PG1hdC1zcGlubmVyPjwvbWF0LXNwaW5uZXI+XHJcblx0XHRcdFx0PC9kaXY+XHJcblxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBoLTUvNlwiICpuZ0lmPVwiIWlzTG9hZGluZyAmJiAhcm93cy5sZW5ndGhcIj5cclxuXHRcdFx0XHRcdDxhcHAtbm8tZGF0YS1mb3VuZCBjbGFzcz1cIm10LTRcIiBbbWVzc2FnZV09XCJlbXB0eU1lc3NhZ2VcIj48L2FwcC1uby1kYXRhLWZvdW5kPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0PC9jdHMtZHluYW1pYy10YWJsZT5cclxuXHJcblx0XHQ8Y3RzLXRhYmxlXHJcblx0XHRcdCpuZ0lmPVwiY29uZmlnLmlzRGF0YVByb3ZpZGVkXCJcclxuXHRcdFx0W3Jvd3NdPVwicm93c1wiXHJcblx0XHRcdFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcclxuXHRcdFx0W2NvbHVtbnNdPVwiZGlzcGxheWVkQ29sdW1ucyQgfCBhc3luY1wiXHJcblx0XHRcdFtyZXNwb25zaXZlQ29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zJCB8IGFzeW5jXCJcclxuXHRcdFx0W3Jvd0N1cnNvcl09XCJ0cnVlXCJcclxuXHRcdFx0W2Z1bGxXaWR0aF09XCJjb25maWcuZnVsbFdpZHRoIHx8ICdhdXRvJ1wiXHJcblx0XHRcdFtlbnRpdHlUeXBlXT1cIidhbGwnXCJcclxuXHRcdFx0W3ByZWZpeF09XCJjb25maWcucHJlZml4IHx8ICcnXCJcclxuXHRcdFx0W3RhYmxlTW9kZV09XCJ2aWV3TW9kZSQgfCBhc3luY1wiXHJcblx0XHRcdFtjb21wb25lbnROYW1lXT1cInRhYmxlTW9kZT8uWydjb21wb25lbnROYW1lJ11cIlxyXG5cdFx0XHRbbXVsdGlTZWxlY3RSb3dzXT1cImNvbmZpZz8ubXVsdGlTZWxlY3RSb3dzXCJcclxuXHRcdFx0W2N1c3RvbUZpcnN0Um93XT1cImNvbmZpZz8uY3VzdG9tRmlyc3RSb3dcIlxyXG5cdFx0XHRbdGFibGVBY3Rpb25zXT1cImNvbmZpZy50YWJsZUFjdGlvbnNcIlxyXG5cdFx0XHRbc2hvd0FjdGlvbnNBc01lbnVdPVwiY29uZmlnPy5zaG93QWN0aW9uc0FzTWVudVwiXHJcblx0XHRcdFtkZWZ1bHRTb3J0XT1cImNvbmZpZy5kZWZhdWx0U29ydCB8fCBkZWZhdWx0U29ydFwiXHJcblx0XHRcdFtmb3JtYXRdPVwiY29uZmlnPy5mb3JtYXQgfHwgJ01NTU0gZCwgeSdcIlxyXG5cdFx0XHRbaGlnaGxpZ2h0U2VsZWN0ZWRDYXJkXT1cImNvbmZpZz8uaGlnaGxpZ2h0U2VsZWN0ZWRDYXJkXCJcclxuXHRcdFx0KG9uUm93U2VsZWN0ZWQpPVwib25Sb3dTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG5cdFx0XHQob25Sb3dJbmRleFNlbGVjdGVkKT1cIm9uUm93SW5kZXhTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG5cdFx0XHQob25NdWx0aVJvd1NlbGVjdGVkKT1cIm9uTXVsdGlSb3dTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG5cdFx0XHQoYWN0aW9uT25Sb3cpPVwiYWN0aW9uT25Sb3cuZW1pdCgkZXZlbnQpXCJcclxuXHRcdFx0KG9uU29ydGluZyk9XCJvblNvcnRDaGFuZ2VkKCRldmVudClcIlxyXG5cdFx0PjwvY3RzLXRhYmxlPlxyXG5cdDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
452
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmRmLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL25kZi10YWJsZS9jb250YWluZXJzL25kZi10YWJsZS9uZGYtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvbmRmLXRhYmxlL2NvbnRhaW5lcnMvbmRmLXRhYmxlL25kZi10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sV0FBVyxFQUNYLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFtQixFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekcsT0FBTyxFQUVOLG1CQUFtQixFQUVuQixtQkFBbUIsRUFFbkIsTUFBTSxxQkFBcUIsQ0FBQztBQVk3QixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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RyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR08sTUFBTTtzQkFBbEIsS0FBSztnQkFRTyxjQUFjO3NCQUExQixLQUFLO2dCQU1PLFVBQVU7c0JBQXRCLEtBQUs7Z0JBTUksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUVHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBRXNELG9CQUFvQjtzQkFBaEYsWUFBWTt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ0MsbUJBQW1CO3NCQUE5RSxZQUFZO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDRyxvQkFBb0I7c0JBQWhGLFlBQVk7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xyXG5pbXBvcnQge1xyXG5cdENvbXBvbmVudCxcclxuXHRDb250ZW50Q2hpbGQsXHJcblx0RXZlbnRFbWl0dGVyLFxyXG5cdElucHV0LFxyXG5cdE9uQ2hhbmdlcyxcclxuXHRPdXRwdXQsXHJcblx0U2ltcGxlQ2hhbmdlcyxcclxuXHRUZW1wbGF0ZVJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGlpZiwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFDVElPTlNfVEFCTEVfVEVNUExBVEUsIEZJTFRFUl9DVVNUT01fVEVNUExBVEUsIFNFQVJDSF9UQUJMRV9URU1QTEFURSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xyXG5pbXBvcnQge1xyXG5cdEFnZ3JlZ2F0aW9uUmVzcG9uc2UsXHJcblx0Q09NUEFSSVNPTl9PUEVSQVRPUixcclxuXHRGb3JtUXVlcnlNb2RlbCxcclxuXHRIdG1sRGlhbG9nQ29tcG9uZW50LFxyXG5cdEh0bWxEaWFsb2dDb25maWdcclxufSBmcm9tICcuLi8uLi9maWx0ZXJzLXBhbmVsJztcclxuaW1wb3J0IHtcclxuXHRDdXN0b21Dcml0ZXJpYU1vZGVsLFxyXG5cdEV4cG9ydFR5cGUsXHJcblx0TmRmRXhwb3J0UGF5bG9hZCxcclxuXHROZGZUYWJsZUNvbmZpZyxcclxuXHRTb3J0VGFibGVJdGVtLFxyXG5cdFRhYmxlQ29sdW1uQ29uZmlnLFxyXG5cdFRhYmxlU29ydE9wdGlvbnMsXHJcblx0VGFibGVWaWV3TW9kZVxyXG59IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEZpbHRlcnNNYXBwZXJTZXJ2aWNlLCBOZGZUYWJsZUNvbmZpZ3VyYXRpb25TZXJ2aWNlLCBOZGZUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IFBBR0VfU0laRSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvci9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBEZXN0cm95U3ViamVjdCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcclxuaW1wb3J0IHsgTnV4ZW9QYWdpbmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmVkL21vZGVscyc7XHJcbmltcG9ydCB7IER5bmFtaWNUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9keW5hbWljLXRhYmxlJztcclxuaW1wb3J0IHsgQ3VzdG9tVG9hc3RyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2N1c3RvbS10b2FzdHIvc2VydmljZXMvY3VzdG9tLXRvYXN0ci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXBwLW5kZi10YWJsZScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL25kZi10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vbmRmLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcblx0aG9zdDoge1xyXG5cdFx0Y2xhc3M6ICduZGYtdGFibGUnLFxyXG5cdFx0J1tkaXJdJzogJ2RpcmVjdGlvbidcclxuXHR9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZGZUYWJsZUNvbXBvbmVudCBleHRlbmRzIERlc3Ryb3lTdWJqZWN0IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuXHRwcml2YXRlIHJlYWRvbmx5IF9hZ2dyZWdhdGlvbnNTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJlY29yZDxzdHJpbmcsIEFnZ3JlZ2F0aW9uUmVzcG9uc2U+PihudWxsKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IF9kaXNwbGF5ZWRDb2x1bW5zU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYWJsZUNvbHVtbkNvbmZpZ1tdPihbXSk7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfc29ydE9wdGlvblN1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFibGVTb3J0T3B0aW9ucz4obnVsbCk7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfdmlld01vZGVTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRhYmxlVmlld01vZGU+KCdsaXN0Jyk7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfdGV4dFNlYXJjaFN1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihudWxsKTtcclxuXHJcblx0cHJpdmF0ZSByZWFkb25seSBfYWN0aXZhdGVkQ3JpdGVyaWFTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHtcclxuXHRcdHByZXZpb3VzVmFsdWU6IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblx0XHRjdXJyZW50VmFsdWU6IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblx0fT4obnVsbCk7XHJcblxyXG5cdHByaXZhdGUgcmVhZG9ubHkgX2N1c3RvbUNyaXRlcmlhU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDdXN0b21Dcml0ZXJpYU1vZGVsPih7XHJcblx0XHRwYXJhbXM6IHt9LFxyXG5cdFx0cGF5bG9hZDoge1xyXG5cdFx0XHRwcmVkaWNhdGVMaXN0OiBbXVxyXG5cdFx0fVxyXG5cdH0pO1xyXG5cclxuXHRyZWFkb25seSBhZ2dyZWdhdGlvbnMkID0gdGhpcy5fYWdncmVnYXRpb25zU3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG5cdHJlYWRvbmx5IGRpc3BsYXllZENvbHVtbnMkID0gdGhpcy5fZGlzcGxheWVkQ29sdW1uc1N1Yi5hc09ic2VydmFibGUoKTtcclxuXHRyZWFkb25seSBzb3J0T3B0aW9uJCA9IHRoaXMuX3NvcnRPcHRpb25TdWIuYXNPYnNlcnZhYmxlKCk7XHJcblx0cmVhZG9ubHkgdmlld01vZGUkID0gdGhpcy5fdmlld01vZGVTdWIuYXNPYnNlcnZhYmxlKCk7XHJcblx0cmVhZG9ubHkgY3VzdG9tRmlsdGVycyQgPSB0aGlzLl9jdXN0b21Dcml0ZXJpYVN1Yi5hc09ic2VydmFibGUoKTtcclxuXHRyZWFkb25seSB0ZXh0U2VhcmNoJCA9IHRoaXMuX3RleHRTZWFyY2hTdWIuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG5cdHJlYWRvbmx5IHNlYXJjaEFuZEZpbHRlcnMkID0gY29tYmluZUxhdGVzdChbdGhpcy50ZXh0U2VhcmNoJCwgdGhpcy5jdXN0b21GaWx0ZXJzJF0pLnBpcGUoXHJcblx0XHRtYXAoKHJlcykgPT4gdGhpcy5fcHJlcGFyZVNlYXJjaChyZXMpKVxyXG5cdCk7XHJcblx0QElucHV0KCkgcm93czogQXJyYXk8dW5rbm93bj47XHJcblx0QElucHV0KCkgdG90YWxSZWNvcmRzOiBudW1iZXI7XHJcblx0QElucHV0KCkgYXV0b0NhbGN1bGF0ZUhlaWdodCA9IHRydWU7XHJcblx0QElucHV0KCkgZW1wdHlNZXNzYWdlID0gJ3RhYmxlX25vRGF0YSc7XHJcblx0QElucHV0KCkgYWN0aXZlUXVlcnk6IEZvcm1RdWVyeU1vZGVsO1xyXG5cdEBJbnB1dCgpIGNvbmZpZ1BhdGg6IHN0cmluZyA9ICd0YWJsZXMnO1xyXG5cdEBJbnB1dCgpIGNvbmZpZ1RyYW5zZm9ybWVyOiAoY29uZmlnOiBOZGZUYWJsZUNvbmZpZykgPT4gT2JzZXJ2YWJsZTxOZGZUYWJsZUNvbmZpZz47XHJcblx0QElucHV0KCkgdGFibGVLZXk6IHN0cmluZztcclxuXHJcblx0cHJpdmF0ZSBfY29uZmlnOiBOZGZUYWJsZUNvbmZpZztcclxuXHRASW5wdXQoKSBzZXQgY29uZmlnKGNvbmZpZzogTmRmVGFibGVDb25maWcpIHtcclxuXHRcdHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcclxuXHR9XHJcblxyXG5cdGdldCB0YWJsZUNvbmZpZygpIHtcclxuXHRcdHJldHVybiB0aGlzLl90YWJsZUNvbmZpZ1N1Yi5nZXRWYWx1ZSgpO1xyXG5cdH1cclxuXHJcblx0QElucHV0KCkgc2V0IGN1c3RvbUNyaXRlcmlhKGNyaXRlcmlhOiBDdXN0b21Dcml0ZXJpYU1vZGVsKSB7XHJcblx0XHRpZiAoY3JpdGVyaWEpIHtcclxuXHRcdFx0dGhpcy5fY3VzdG9tQ3JpdGVyaWFTdWIubmV4dChjcml0ZXJpYSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRASW5wdXQoKSBzZXQgc2VhcmNoVGVybSh2YWx1ZTogc3RyaW5nKSB7XHJcblx0XHRpZiAodmFsdWUpIHtcclxuXHRcdFx0dGhpcy5fdGV4dFNlYXJjaFN1Yi5uZXh0KHZhbHVlKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdEBPdXRwdXQoKSBvblJvd1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBvblJvd0luZGV4U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0QE91dHB1dCgpIGFjdGlvbk9uUm93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBvbkdldHRpbmdEYXRhID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBvbk11bHRpUm93U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0QE91dHB1dCgpIG9uTG9hZGluZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcblx0QE91dHB1dCgpIG9uUGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xyXG5cdEBPdXRwdXQoKSBvbkluaXRpYWxpemVkID0gbmV3IEV2ZW50RW1pdHRlcjxOdXhlb1BhZ2luYXRpb248YW55Pj4oKTtcclxuXHRAT3V0cHV0KCkgb25Mb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE51eGVvUGFnaW5hdGlvbjxhbnk+PigpO1xyXG5cclxuXHRAT3V0cHV0KCkgb25RdWVyeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KCkgb25Tb3J0ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVNvcnRPcHRpb25zPigpO1xyXG5cclxuXHRAQ29udGVudENoaWxkKEFDVElPTlNfVEFCTEVfVEVNUExBVEUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgYWN0aW9uc1RhYmxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblx0QENvbnRlbnRDaGlsZChTRUFSQ0hfVEFCTEVfVEVNUExBVEUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgc2VhcmNoVGFibGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHRAQ29udGVudENoaWxkKEZJTFRFUl9DVVNUT01fVEVNUExBVEUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgZmlsdGVyQ3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG5cdHByaXZhdGUgX3RhYmxlQ29uZmlnU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDxOZGZUYWJsZUNvbmZpZz4obnVsbCk7XHJcblxyXG5cdGdldCBvcHRpb25zKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMudGFibGVDb25maWc/Lm9wdGlvbnM7XHJcblx0fVxyXG5cclxuXHRnZXQgZmlsdGVyc0NvbmZpZygpIHtcclxuXHRcdHJldHVybiB0aGlzLm9wdGlvbnM/LmZpbHRlcnM7XHJcblx0fVxyXG5cclxuXHRnZXQgc29ydExpc3QoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5vcHRpb25zPy5zb3J0TGlzdCB8fCBbXTtcclxuXHR9XHJcblxyXG5cdGdldCBjb2x1bW5zT3B0aW9ucygpIHtcclxuXHRcdHJldHVybiB0aGlzLnRhYmxlQ29uZmlnPy5vcHRpb25zPy5jb2x1bW5zO1xyXG5cdH1cclxuXHJcblx0Z2V0IGNvbHVtblRvZ2dsZSgpIHtcclxuXHRcdHJldHVybiB0aGlzLmNvbHVtbnNPcHRpb25zPy50b2dnbGUgPz8gdHJ1ZTtcclxuXHR9XHJcblxyXG5cdGdldCB0YWJsZU1vZGUoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5vcHRpb25zPy50YWJsZU1vZGU7XHJcblx0fVxyXG5cclxuXHRnZXQgcGFuZWxDb25maWcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5vcHRpb25zPy5maWx0ZXJzPy5wYW5lbDtcclxuXHR9XHJcblxyXG5cdGdldCBpc1BhbmVsVG9nZ2xlQXZhaWxhYmxlKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMucGFuZWxDb25maWc/LnRvZ2dsZUJ1dHRvbiA/PyB0cnVlO1xyXG5cdH1cclxuXHJcblx0Z2V0IHRleHRTZWFyY2hDb25maWcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5vcHRpb25zPy5zZWFyY2g7XHJcblx0fVxyXG5cclxuXHRnZXQgZmlsdGVyUmVsb2FkQ29uZmlnKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVycz8ucmVsb2FkO1xyXG5cdH1cclxuXHJcblx0Z2V0IGV4cG9ydFRhYmxlQ29uZmlnKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uZXhwb3J0O1xyXG5cdH1cclxuXHJcblx0cmVhZG9ubHkgZGVmYXVsdFNvcnQgPSBbeyBwcm9wOiAncHJvcGVydGllcy5jcmVhdGVkQXQnLCBkaXI6ICdkZXNjJyB9XTtcclxuXHJcblx0ZGlyZWN0aW9uOiBEaXJlY3Rpb24gPSAncnRsJztcclxuXHRpc1BhbmVsT3BlbmVkID0gZmFsc2U7XHJcblx0cmVhZG9ubHkgZGVmYXVsdFBhZ2VTaXplcyA9IFBBR0VfU0laRTtcclxuXHJcblx0cHJpdmF0ZSBfaXNDb25maWdDaGFuZ2VkID0gZmFsc2U7XHJcblx0cHJpdmF0ZSBfdGFibGVJbml0aWFsaXplZCA9IGZhbHNlO1xyXG5cdHByaXZhdGUgX3BhZ2VDaGFuZ2VkID0gZmFsc2U7XHJcblx0cHJpdmF0ZSBfYWN0aXZlUGFnZTogUGFnZUV2ZW50ID0ge1xyXG5cdFx0cGFnZUluZGV4OiAxLFxyXG5cdFx0cGFnZVNpemU6IDEwLFxyXG5cdFx0bGVuZ3RoOiAwXHJcblx0fTtcclxuXHJcblx0cHJpdmF0ZSBfc29ydFZhbHVlOiBUYWJsZVNvcnRPcHRpb25zO1xyXG5cclxuXHQvKipcclxuXHQgKlxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSBfZmlsdGVyc01hcHBlcjogRmlsdGVyc01hcHBlclNlcnZpY2UsXHJcblx0XHRwcml2YXRlIF9keW5hbWljVGFibGVTZXJ2aWNlOiBEeW5hbWljVGFibGVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuXHRcdHByaXZhdGUgX25nVGFibGVTZXJ2aWNlOiBOZGZUYWJsZVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIF90b2FzdHJTZXJ2aWNlOiBDdXN0b21Ub2FzdHJTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfbmRmVGFibGVDb25maWd1cmF0aW9uU2VydmljZTogTmRmVGFibGVDb25maWd1cmF0aW9uU2VydmljZSxcclxuXHRcdHByaXZhdGUgX2RpYWxvZzogTWF0RGlhbG9nXHJcblx0KSB7XHJcblx0XHRzdXBlcigpO1xyXG5cdFx0dGhpcy5fdHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2VcclxuXHRcdFx0LnBpcGUoc3RhcnRXaXRoKHsgbGFuZzogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyB9KSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG5cdFx0XHQuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuXHRcdFx0XHR0aGlzLmRpcmVjdGlvbiA9IHJlcy5sYW5nID09PSAnYXInID8gJ3J0bCcgOiAnbHRyJztcclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcblx0XHRjb25zdCB0YWJsZUtleSA9IGNoYW5nZXMudGFibGVLZXk/LmN1cnJlbnRWYWx1ZTtcclxuXHRcdGNvbnN0IGNvbmZpZyA9IGNoYW5nZXMuY29uZmlnPy5jdXJyZW50VmFsdWU7XHJcblxyXG5cdFx0aWYgKHRhYmxlS2V5ICYmIGNvbmZpZykge1xyXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1lvdSBjYW5ub3Qgc2V0IGJvdGggdGFibGVLZXkgYW5kIHRhYmxlQ29uZmlnIGF0IHRoZSBzYW1lIHRpbWUuJyk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGNvbmZpZykge1xyXG5cdFx0XHR0aGlzLl9hcHBseVRhYmxlQ29uZmlnKGNvbmZpZyk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRhYmxlS2V5KSB7XHJcblx0XHRcdHRoaXMuX2xvYWRUYWJsZUNvbmZpZyh0YWJsZUtleSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR0b2dnbGVQYW5lbCgpIHtcclxuXHRcdHRoaXMuaXNQYW5lbE9wZW5lZCA9ICF0aGlzLmlzUGFuZWxPcGVuZWQ7XHJcblx0fVxyXG5cclxuXHRvbkxvYWQoZGF0YTogTnV4ZW9QYWdpbmF0aW9uPGFueT4pOiB2b2lkIHtcclxuXHRcdHRoaXMub25Mb2FkZWQuZW1pdChkYXRhKTtcclxuXHRcdGlmICghdGhpcy5fdGFibGVJbml0aWFsaXplZCB8fCB0aGlzLmZpbHRlclJlbG9hZENvbmZpZz8uc3RyYXRlZ3kgPT09ICduZXZlcicgfHwgdGhpcy5fcGFnZUNoYW5nZWQpIHtcclxuXHRcdFx0dGhpcy5fcGFnZUNoYW5nZWQgPSBmYWxzZTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0aGlzLl9pc0NvbmZpZ0NoYW5nZWQgfHwgdGhpcy5maWx0ZXJSZWxvYWRDb25maWc/LnN0cmF0ZWd5ID09PSAnYWx3YXlzJykge1xyXG5cdFx0XHR0aGlzLl9hZ2dyZWdhdGlvbnNTdWIubmV4dChkYXRhPy5hZ2dyZWdhdGlvbnMpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMuZmlsdGVyUmVsb2FkQ29uZmlnPy5zdHJhdGVneSA9PT0gJ29uQ2hhbmdlJykge1xyXG5cdFx0XHRjb25zdCBhY3RpdmF0ZWRRdWVyeSA9IHRoaXMuX2FjdGl2YXRlZENyaXRlcmlhU3ViLmdldFZhbHVlKCk7XHJcblx0XHRcdGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGFjdGl2YXRlZFF1ZXJ5Py5jdXJyZW50VmFsdWUgfHwge307XHJcblx0XHRcdGNvbnN0IHByZXZpb3VzVmFsdWUgPSBhY3RpdmF0ZWRRdWVyeT8ucHJldmlvdXNWYWx1ZSB8fCB7fTtcclxuXHJcblx0XHRcdGNvbnN0IHVwZGF0ZWRLZXlzID0gXy51bmlvbihfLmtleXMocHJldmlvdXNWYWx1ZSksIF8ua2V5cyhjdXJyZW50VmFsdWUpKS5maWx0ZXIoXHJcblx0XHRcdFx0KGtleSkgPT4gIV8uaXNFcXVhbChwcmV2aW91c1ZhbHVlW2tleV0sIGN1cnJlbnRWYWx1ZVtrZXldKVxyXG5cdFx0XHQpO1xyXG5cclxuXHRcdFx0Y29uc3QgdHJpZ2dlcktleXMgPSB0aGlzLmZpbHRlclJlbG9hZENvbmZpZy50cmlnZ2VyRmllbGRzIHx8IFtdO1xyXG5cdFx0XHRjb25zdCBzaG91bGRSZWxvYWQgPSB0cmlnZ2VyS2V5cy5zb21lKChrZXkpID0+IHVwZGF0ZWRLZXlzLmluY2x1ZGVzKGtleSkpO1xyXG5cdFx0XHRpZiAoc2hvdWxkUmVsb2FkKSB7XHJcblx0XHRcdFx0dGhpcy5fYWdncmVnYXRpb25zU3ViLm5leHQoZGF0YT8uYWdncmVnYXRpb25zKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0b25Jbml0aWFsaXplKGRhdGE6IE51eGVvUGFnaW5hdGlvbjxhbnk+KTogdm9pZCB7XHJcblx0XHR0aGlzLl9hZ2dyZWdhdGlvbnNTdWIubmV4dChkYXRhPy5hZ2dyZWdhdGlvbnMpO1xyXG5cdFx0dGhpcy5fdGFibGVJbml0aWFsaXplZCA9IHRydWU7XHJcblx0XHR0aGlzLl9pc0NvbmZpZ0NoYW5nZWQgPSBmYWxzZTtcclxuXHRcdHRoaXMub25Jbml0aWFsaXplZC5lbWl0KGRhdGEpO1xyXG5cdH1cclxuXHJcblx0Y29sdW1uc0NoYW5nZWQoY29sdW1uczogVGFibGVDb2x1bW5Db25maWdbXSkge1xyXG5cdFx0dGhpcy5fZGlzcGxheWVkQ29sdW1uc1N1Yi5uZXh0KGNvbHVtbnMpO1xyXG5cdH1cclxuXHJcblx0c29ydENoYW5nZWQoc29ydDogU29ydFRhYmxlSXRlbSkge1xyXG5cdFx0dGhpcy5fc29ydFZhbHVlID0geyBzb3J0Qnk6IHNvcnQudmFsdWUsIHNvcnRPcmRlcjogc29ydC5kaXJlY3Rpb24gfTtcclxuXHRcdHRoaXMuX3NvcnRPcHRpb25TdWIubmV4dCh0aGlzLl9zb3J0VmFsdWUpO1xyXG5cdH1cclxuXHJcblx0bW9kZUNoYW5nZWQobW9kZTogVGFibGVWaWV3TW9kZSkge1xyXG5cdFx0dGhpcy5fdmlld01vZGVTdWIubmV4dChtb2RlKTtcclxuXHR9XHJcblxyXG5cdG9uU29ydENoYW5nZWQoc29ydDogVGFibGVTb3J0T3B0aW9ucykge1xyXG5cdFx0dGhpcy5fc29ydFZhbHVlID0gc29ydDtcclxuXHRcdHRoaXMub25Tb3J0LmVtaXQoc29ydCk7XHJcblx0fVxyXG5cclxuXHRleHBvcnRUYWJsZSh0eXBlOiBFeHBvcnRUeXBlKSB7XHJcblx0XHRjb25zdCByZXF1ZXN0ID0gXy5jbG9uZURlZXAodGhpcy5leHBvcnRUYWJsZUNvbmZpZz8ucmVxdWVzdCk7XHJcblx0XHRpZiAoIXJlcXVlc3QpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgY29sdW1ucyA9IHRoaXMuX2Rpc3BsYXllZENvbHVtbnNTdWIuZ2V0VmFsdWUoKTtcclxuXHRcdGNvbnN0IGZpZWxkcyA9IGNvbHVtbnMubWFwKChjb2wpID0+IGNvbC5oZWFkZXJDbGFzcyk7XHJcblx0XHRjb25zdCBoZWFkZXJzID0gY29sdW1ucy5tYXAoKGNvbCkgPT4gKHRoaXMudGFibGVDb25maWcucHJlZml4IHx8ICcnKSArIGNvbC5uYW1lKTtcclxuXHJcblx0XHRjb25zdCBjcml0ZXJpYSA9IHRoaXMuX2N1c3RvbUNyaXRlcmlhU3ViLmdldFZhbHVlKCk7XHJcblxyXG5cdFx0cmVxdWVzdC5wYXJhbXMgPSBPYmplY3QuYXNzaWduKFxyXG5cdFx0XHR7fSxcclxuXHRcdFx0Y3JpdGVyaWEucGFyYW1zLFxyXG5cdFx0XHR0aGlzLl9zb3J0VmFsdWUgfHwge30sXHJcblx0XHRcdHRoaXMudGFibGVDb25maWc/LnF1aWNrRmlsdGVycyA/IHsgcXVpY2tGaWx0ZXJzOiB0aGlzLnRhYmxlQ29uZmlnLnF1aWNrRmlsdGVycyB9IDoge30sXHJcblx0XHRcdHJlcXVlc3QucGFyYW1zXHJcblx0XHQpO1xyXG5cclxuXHRcdGNvbnN0IHBheWxvYWQ6IE5kZkV4cG9ydFBheWxvYWQgPSB7XHJcblx0XHRcdHByZWRpY2F0ZUxpc3Q6IGNyaXRlcmlhLnBheWxvYWQucHJlZGljYXRlTGlzdCB8fCBbXSxcclxuXHRcdFx0cmVwb3J0TWV0YURhdGE6IHtcclxuXHRcdFx0XHRkb2NUeXBlTmFtZTogdGhpcy5leHBvcnRUYWJsZUNvbmZpZy5kb2NUeXBlTmFtZSxcclxuXHRcdFx0XHRmaWxlVHlwZTogdHlwZSxcclxuXHRcdFx0XHRsb2NhbGU6IHRoaXMuZXhwb3J0VGFibGVDb25maWc/LmxvY2FsZSB8fCB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nLFxyXG5cdFx0XHRcdGZpZWxkczogdGhpcy5leHBvcnRUYWJsZUNvbmZpZz8uZmllbGRzIHx8IGZpZWxkcyxcclxuXHRcdFx0XHRoZWFkZXJzOiBbXVxyXG5cdFx0XHR9XHJcblx0XHR9O1xyXG5cclxuXHRcdHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2VcclxuXHRcdFx0LmdldChoZWFkZXJzKVxyXG5cdFx0XHQucGlwZShcclxuXHRcdFx0XHRzd2l0Y2hNYXAoKHRyYW5zbGF0aW9ucykgPT4ge1xyXG5cdFx0XHRcdFx0cGF5bG9hZC5yZXBvcnRNZXRhRGF0YS5oZWFkZXJzID0gaGVhZGVycy5tYXAoKGNvbCkgPT4gdHJhbnNsYXRpb25zW2NvbF0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuX25nVGFibGVTZXJ2aWNlLmV4cG9ydFRhYmxlKHJlcXVlc3QsIHBheWxvYWQpO1xyXG5cdFx0XHRcdH0pLFxyXG5cdFx0XHRcdGNhdGNoRXJyb3IoKF8pID0+IHtcclxuXHRcdFx0XHRcdHRoaXMuX3RvYXN0clNlcnZpY2UuZXJyb3IoJ1RBQkxFLkVYUE9SVC5SZXF1ZXN0RXJyb3InKTtcclxuXHRcdFx0XHRcdHJldHVybiBvZihmYWxzZSk7XHJcblx0XHRcdFx0fSksXHJcblx0XHRcdFx0ZmlsdGVyKEJvb2xlYW4pLFxyXG5cdFx0XHRcdHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxyXG5cdFx0XHQpXHJcblx0XHRcdC5zdWJzY3JpYmUoKHJlczogYm9vbGVhbikgPT4ge1xyXG5cdFx0XHRcdGlmIChyZXMpIHtcclxuXHRcdFx0XHRcdHRoaXMuX3RvYXN0clNlcnZpY2Uuc3VjY2VzcygnVEFCTEUuRVhQT1JULnJlcXVlc3RTdWNjZXNzJyk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHRoaXMuX3RvYXN0clNlcnZpY2UuZXJyb3IoJ1RBQkxFLkVYUE9SVC5yZXF1ZXN0RXJyb3InKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHJcblx0ZmlsdGVyQ2hhbmdlZChjcml0ZXJpYTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG5cdFx0dGhpcy5fdHJpZ2dlckNyaXRlcmlhQ2hhbmdlcyhjcml0ZXJpYSk7XHJcblx0XHRpZiAodGhpcy5maWx0ZXJzQ29uZmlnPy5tb2RlICE9PSAncGF5bG9hZCcpIHtcclxuXHRcdFx0Y29uc3QgaXNTdHJpbmdpZnlQYXJhbXMgPSB0aGlzLmZpbHRlcnNDb25maWc/LnN0cmluZ2lmeVBhcmFtcztcclxuXHRcdFx0Y29uc3QgdmFsdWUgPSAhaXNTdHJpbmdpZnlQYXJhbXMgPyBjcml0ZXJpYSA6IHRoaXMuX3N0cmluZ2lmeVZhbHVlcyhjcml0ZXJpYSk7XHJcblx0XHRcdHRoaXMuX2R5bmFtaWNUYWJsZVNlcnZpY2UucmVmcmVzaERhdGEubmV4dCh2YWx1ZSk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBwYXlsb2FkID0gdGhpcy5fZmlsdGVyc01hcHBlci5wcmVwYXJlUGF5bG9hZCh0aGlzLmZpbHRlcnNDb25maWcuZmllbGRzLCBjcml0ZXJpYSk7XHJcblx0XHR0aGlzLl9jdXN0b21Dcml0ZXJpYVN1Yi5uZXh0KHBheWxvYWQpO1xyXG5cdH1cclxuXHJcblx0b25UZXh0U2VhcmNoKHRleHQ6IHN0cmluZykge1xyXG5cdFx0aWYgKCF0aGlzLnRleHRTZWFyY2hDb25maWc/LmZpZWxkS2V5IHx8IHR5cGVvZiB0ZXh0ICE9PSAnc3RyaW5nJykge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCF0ZXh0KSB7XHJcblx0XHRcdHRoaXMub25DbGVhclNlYXJjaCgpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLl90ZXh0U2VhcmNoU3ViLm5leHQodGV4dCk7XHJcblx0fVxyXG5cclxuXHRvbkNsZWFyU2VhcmNoKCkge1xyXG5cdFx0dGhpcy5fdGV4dFNlYXJjaFN1Yi5uZXh0KG51bGwpO1xyXG5cdH1cclxuXHJcblx0b3BlblNlYXJjaE1vZGFsKCkge1xyXG5cdFx0Y29uc3QgX2RpYWxvZ0NvbmZpZyA9IHRoaXMudGV4dFNlYXJjaENvbmZpZz8uc3VmZml4Py5kaWFsb2c7XHJcblx0XHRpZiAoIV9kaWFsb2dDb25maWcpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgeyBvcHRpb25zLCAuLi5kYXRhIH0gPSBfZGlhbG9nQ29uZmlnO1xyXG5cdFx0dGhpcy5fZGlhbG9nLm9wZW48SHRtbERpYWxvZ0NvbXBvbmVudCwgSHRtbERpYWxvZ0NvbmZpZz4oSHRtbERpYWxvZ0NvbXBvbmVudCwge1xyXG5cdFx0XHRwYW5lbENsYXNzOiAncC0wJyxcclxuXHRcdFx0bWluV2lkdGg6ICdtaW4oNTAwcHgsNjB2dyknLFxyXG5cdFx0XHRkaXJlY3Rpb246IHRoaXMuZGlyZWN0aW9uLFxyXG5cdFx0XHQuLi5vcHRpb25zLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdG9uUGFnZUNoYW5nZWQocGFnZTogUGFnZUV2ZW50KSB7XHJcblx0XHR0aGlzLl9wYWdlQ2hhbmdlZCA9IHRoaXMuX2FjdGl2ZVBhZ2UucGFnZUluZGV4ICE9PSBwYWdlLnBhZ2VJbmRleCB8fCB0aGlzLl9hY3RpdmVQYWdlLnBhZ2VTaXplICE9PSBwYWdlLnBhZ2VTaXplO1xyXG5cdFx0aWYgKHRoaXMuX3BhZ2VDaGFuZ2VkKSB7XHJcblx0XHRcdHRoaXMub25QYWdlLmVtaXQocGFnZSk7XHJcblx0XHRcdHRoaXMuX2FjdGl2ZVBhZ2UgPSBwYWdlO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBfZmlsdGVyQnlWaXNpYmlsaXR5KGNvbHVtbnM6IFRhYmxlQ29sdW1uQ29uZmlnW10pOiBUYWJsZUNvbHVtbkNvbmZpZ1tdIHtcclxuXHRcdHJldHVybiBjb2x1bW5zLmZpbHRlcigoY29sKSA9PiBjb2wuZGVmYXVsdFZpc2libGUpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBfcHJlcGFyZVNlYXJjaChbc2VhcmNoLCBmaWx0ZXJzXTogW1xyXG5cdFx0c3RyaW5nLFxyXG5cdFx0e1xyXG5cdFx0XHRwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdFx0XHRwYXlsb2FkPzogeyBwcmVkaWNhdGVMaXN0OiBhbnlbXSB9ICYgUmVjb3JkPHN0cmluZywgYW55PjtcclxuXHRcdH1cclxuXHRdKTogYW55IHtcclxuXHRcdHtcclxuXHRcdFx0Y29uc3QgeyBwcmVkaWNhdGVMaXN0IH0gPSBmaWx0ZXJzLnBheWxvYWQ7XHJcblx0XHRcdGNvbnN0IF9rZXkgPSB0aGlzLnRleHRTZWFyY2hDb25maWc/LmZpZWxkS2V5O1xyXG5cdFx0XHRjb25zdCBzZWFyY2hJbmRleCA9IHByZWRpY2F0ZUxpc3QuZmluZEluZGV4KChpdG0pID0+IGl0bS5uYW1lID09PSBfa2V5KTtcclxuXHRcdFx0aWYgKHNlYXJjaCAmJiBfa2V5KSB7XHJcblx0XHRcdFx0aWYgKHNlYXJjaEluZGV4ID49IDApIHtcclxuXHRcdFx0XHRcdHByZWRpY2F0ZUxpc3Rbc2VhcmNoSW5kZXhdLnZhbHVlID0gYCcke3NlYXJjaH0nYDtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0cHJlZGljYXRlTGlzdC5wdXNoKHtcclxuXHRcdFx0XHRcdFx0bmFtZTogX2tleSxcclxuXHRcdFx0XHRcdFx0b3BlcmF0b3I6IHRoaXMudGV4dFNlYXJjaENvbmZpZz8ub3BlcmF0b3IgfHwgQ09NUEFSSVNPTl9PUEVSQVRPUi5lcXVhbHMsXHJcblx0XHRcdFx0XHRcdHZhbHVlOiBgJyR7c2VhcmNofSdgXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSBpZiAoc2VhcmNoSW5kZXggPj0gMCkge1xyXG5cdFx0XHRcdHByZWRpY2F0ZUxpc3Quc3BsaWNlKHNlYXJjaEluZGV4KTtcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gXy5jbG9uZURlZXAoeyAuLi5maWx0ZXJzIH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBfc3RyaW5naWZ5VmFsdWVzKGNyaXRlcmlhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcblx0XHRyZXR1cm4gT2JqZWN0LmVudHJpZXMoY3JpdGVyaWEpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcclxuXHRcdFx0YWNjW2tleV0gPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IEpTT04uc3RyaW5naWZ5KHZhbHVlKSA6IHZhbHVlO1xyXG5cdFx0XHRyZXR1cm4gYWNjO1xyXG5cdFx0fSwge30pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBfdHJpZ2dlckNyaXRlcmlhQ2hhbmdlcyhjcml0ZXJpYTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG5cdFx0aWYgKHRoaXMuX3RhYmxlSW5pdGlhbGl6ZWQpIHtcclxuXHRcdFx0dGhpcy5vblF1ZXJ5Q2hhbmdlLmVtaXQoY3JpdGVyaWEpO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgYWN0aXZhdGVkUXVlcnkgPSB7IC4uLnRoaXMuX2FjdGl2YXRlZENyaXRlcmlhU3ViLmdldFZhbHVlKCkgfTtcclxuXHRcdGNvbnN0IHByZXZpb3VzVmFsdWUgPSBhY3RpdmF0ZWRRdWVyeT8uY3VycmVudFZhbHVlO1xyXG5cdFx0dGhpcy5fYWN0aXZhdGVkQ3JpdGVyaWFTdWIubmV4dCh7XHJcblx0XHRcdHByZXZpb3VzVmFsdWU6IHByZXZpb3VzVmFsdWUsXHJcblx0XHRcdGN1cnJlbnRWYWx1ZTogY3JpdGVyaWFcclxuXHRcdH0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBAZGVzY3JpcHRpb25cclxuXHQgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIHNldCB0aGUgdGFibGUgY29uZmlndXJhdGlvbi5cclxuXHQgKiBAcGFyYW0gY29uZmlnIE5kZlRhYmxlQ29uZmlnXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfYXBwbHlUYWJsZUNvbmZpZyhjb25maWc6IE5kZlRhYmxlQ29uZmlnKTogdm9pZCB7XHJcblx0XHR0aGlzLl90YWJsZUNvbmZpZ1N1Yi5uZXh0KGNvbmZpZyk7XHJcblx0XHR0aGlzLmlzUGFuZWxPcGVuZWQgPSBjb25maWc/Lm9wdGlvbnM/LmZpbHRlcnM/LnBhbmVsPy52aXNpYmxlID8/IHRydWU7XHJcblx0XHR0aGlzLl9pc0NvbmZpZ0NoYW5nZWQgPSAhIWNvbmZpZztcclxuXHRcdGlmIChjb25maWcuY29sdW1ucykge1xyXG5cdFx0XHR0aGlzLl9kaXNwbGF5ZWRDb2x1bW5zU3ViLm5leHQodGhpcy5fZmlsdGVyQnlWaXNpYmlsaXR5KGNvbmZpZy5jb2x1bW5zKSk7XHJcblx0XHR9XHJcblx0XHRpZiAoY29uZmlnLnNvcnRpbmdCeSkge1xyXG5cdFx0XHR0aGlzLl9zb3J0VmFsdWUgPSBjb25maWcuc29ydGluZ0J5O1xyXG5cdFx0XHR0aGlzLl9zb3J0T3B0aW9uU3ViLm5leHQoY29uZmlnLnNvcnRpbmdCeSk7XHJcblx0XHR9XHJcblx0XHRpZiAoY29uZmlnPy5vcHRpb25zPy50YWJsZU1vZGU/Lm1vZGUpIHtcclxuXHRcdFx0dGhpcy5fdmlld01vZGVTdWIubmV4dChjb25maWcub3B0aW9ucy50YWJsZU1vZGUubW9kZSk7XHJcblx0XHR9XHJcblx0XHRpZiAoY29uZmlnLnBhZ2VTaXplKSB7XHJcblx0XHRcdHRoaXMuX2FjdGl2ZVBhZ2UucGFnZVNpemUgPSBjb25maWcucGFnZVNpemU7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBAcHJpdmF0ZVxyXG5cdCAqIEBkZXNjcmlwdGlvbiBMb2FkcyB0aGUgdGFibGUgY29uZmlndXJhdGlvbiBiYXNlZCBvbiB0aGUgcHJvdmlkZWQga2V5IGFuZCBhcHBsaWVzIGl0LlxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUga2V5IHVzZWQgdG8gZmV0Y2ggdGhlIHRhYmxlIGNvbmZpZ3VyYXRpb24uXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfbG9hZFRhYmxlQ29uZmlnKGtleTogc3RyaW5nKSB7XHJcblx0XHR0aGlzLl9uZGZUYWJsZUNvbmZpZ3VyYXRpb25TZXJ2aWNlXHJcblx0XHRcdC5nZXRUYWJsZUNvbmZpZ3VyYXRpb24oa2V5LCB0aGlzLmNvbmZpZ1BhdGgpXHJcblx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdHN3aXRjaE1hcCgoY29uZmlnKSA9PiB7XHJcblx0XHRcdFx0XHRpZiAodGhpcy5jb25maWdUcmFuc2Zvcm1lciAmJiBfLmlzRnVuY3Rpb24odGhpcy5jb25maWdUcmFuc2Zvcm1lcikpIHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuY29uZmlnVHJhbnNmb3JtZXIoY29uZmlnKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHJldHVybiBvZihjb25maWcpO1xyXG5cdFx0XHRcdH0pLFxyXG5cdFx0XHRcdHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxyXG5cdFx0XHQpXHJcblx0XHRcdC5zdWJzY3JpYmUoKGNvbmZpZykgPT4ge1xyXG5cdFx0XHRcdHRoaXMuX2FwcGx5VGFibGVDb25maWcoY29uZmlnKTtcclxuXHRcdFx0fSk7XHJcblx0fVxyXG59XHJcbiIsIlxyXG48ZGl2XHJcblx0Km5nSWY9XCJ0YWJsZUNvbmZpZ1wiXHJcblx0Y2xhc3M9XCJuZGYtdGFibGVfX2NvbnRhaW5lclwiXHJcblx0W2NsYXNzLnBhbmVsLW9wZW5lZF09XCJpc1BhbmVsT3BlbmVkICYmIGZpbHRlcnNDb25maWdcIlxyXG5cdFtkaXJdPVwiZGlyZWN0aW9uXCJcclxuXHRuZGZGbHVpZEhlaWdodFxyXG5cdFtjYWxjdWxhdGVdPVwiYXV0b0NhbGN1bGF0ZUhlaWdodFwiXHJcbj5cclxuXHQ8ZGl2IGNsYXNzPVwibmRmLXRhYmxlX19wYW5lbFwiICpuZ0lmPVwiZmlsdGVyc0NvbmZpZz8uZmllbGRzXCI+XHJcblx0XHQ8YXBwLWZpbHRlcnMtcGFuZWxcclxuXHRcdFx0W2ZpZWxkc109XCJmaWx0ZXJzQ29uZmlnLmZpZWxkc1wiXHJcblx0XHRcdFthZ2dyZWdhdGlvbnNdPVwiYWdncmVnYXRpb25zJCB8IGFzeW5jXCJcclxuXHRcdFx0KGZpbHRlckNoYW5nZWQpPVwiZmlsdGVyQ2hhbmdlZCgkZXZlbnQpXCJcclxuXHRcdFx0W2FjdGl2ZVF1ZXJ5XT1cImFjdGl2ZVF1ZXJ5XCJcclxuXHRcdFx0Y2xhc3M9XCJuZGYtdGFibGVfX2ZpbHRlcnNcIlxyXG5cdFx0XHRbY3VzdG9tVGVtcGxhdGVSZWZdPVwiZmlsdGVyQ3VzdG9tVGVtcGxhdGVcIlxyXG5cdFx0PjwvYXBwLWZpbHRlcnMtcGFuZWw+XHJcblx0PC9kaXY+XHJcblx0PGRpdiBjbGFzcz1cIm5kZi10YWJsZV9fY29udGVudFwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cIm5kZi10YWJsZV9faGVhZGVyIGZsZXhcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cIm5kZi10YWJsZV9faGVhZGVyX19jdXN0b20tYWN0aW9ucyBmbGV4IGdhcC14LTQgaXRlbXMtY2VudGVyXCI+XHJcblx0XHRcdFx0PG5nLWNvbnRhaW5lclxyXG5cdFx0XHRcdFx0W25nVGVtcGxhdGVPdXRsZXRdPVwic2VhcmNoVGFibGVUZW1wbGF0ZSB8fCBkZWZhdWx0QWN0aW9uVGVtcGxhdGVcIlxyXG5cdFx0XHRcdFx0W25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuXHRcdFx0XHRcdFx0JGltcGxpY2l0OiB0YWJsZUNvbmZpZyxcclxuXHRcdFx0XHRcdFx0cGFuZWxPcGVuZWQ6IGlzUGFuZWxPcGVuZWQsXHJcblx0XHRcdFx0XHRcdHRvZ2dsZVBhbmVsOiB0b2dnbGVQYW5lbCxcclxuXHRcdFx0XHRcdFx0b3Blbk1vZGFsOiBvcGVuU2VhcmNoTW9kYWwsXHJcblx0XHRcdFx0XHRcdHNlYXJjaDogb25UZXh0U2VhcmNoLFxyXG5cdFx0XHRcdFx0XHRjbGVhcjogb25DbGVhclNlYXJjaFxyXG5cdFx0XHRcdFx0fVwiXHJcblx0XHRcdFx0PjwvbmctY29udGFpbmVyPlxyXG5cclxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgI2RlZmF1bHRBY3Rpb25UZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uICpuZ0lmPVwiaXNQYW5lbFRvZ2dsZUF2YWlsYWJsZVwiIGNsYXNzPVwidG9nZ2xlLWJ1dHRvblwiIChjbGljayk9XCJ0b2dnbGVQYW5lbCgpXCI+XHJcblx0XHRcdFx0XHRcdDxtYXQtaWNvbj4gZmlsdGVyX2FsdDwvbWF0LWljb24+XHJcblx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdDxhcHAtdGV4dC1zZWFyY2hcclxuXHRcdFx0XHRcdFx0Km5nSWY9XCJ0ZXh0U2VhcmNoQ29uZmlnXCJcclxuXHRcdFx0XHRcdFx0W3NlYXJjaENvbmZpZ109XCJ0ZXh0U2VhcmNoQ29uZmlnXCJcclxuXHRcdFx0XHRcdFx0KG9wZW5Nb2RhbCk9XCJvcGVuU2VhcmNoTW9kYWwoKVwiXHJcblx0XHRcdFx0XHRcdFtzZWFyY2hdPVwidGV4dFNlYXJjaCQgfCBhc3luY1wiXHJcblx0XHRcdFx0XHRcdChzZWFyY2hDaGFuZ2UpPVwib25UZXh0U2VhcmNoKCRldmVudClcIlxyXG5cdFx0XHRcdFx0XHQoY2xlYXIpPVwib25DbGVhclNlYXJjaCgpXCJcclxuXHRcdFx0XHRcdD48L2FwcC10ZXh0LXNlYXJjaD5cclxuXHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cIm5kZi10YWJsZV9faGVhZGVyX19hY3Rpb25zIGZsZXggZ2FwLXgtNCBpdGVtcy1jZW50ZXJcIj5cclxuXHRcdFx0XHQ8bmRmLXRhYmxlLWV4cG9ydFxyXG5cdFx0XHRcdFx0Km5nSWY9XCJleHBvcnRUYWJsZUNvbmZpZz8uZW5hYmxlZFwiXHJcblx0XHRcdFx0XHRbY29uZmlnXT1cImV4cG9ydFRhYmxlQ29uZmlnXCJcclxuXHRcdFx0XHRcdChvbkV4cG9ydCk9XCJleHBvcnRUYWJsZSgkZXZlbnQpXCJcclxuXHRcdFx0XHQ+PC9uZGYtdGFibGUtZXhwb3J0PlxyXG5cclxuXHRcdFx0XHQ8dGFibGUtc29ydGluZy1saXN0XHJcblx0XHRcdFx0XHQqbmdJZj1cIiEhc29ydExpc3Q/Lmxlbmd0aFwiXHJcblx0XHRcdFx0XHRbc29ydExpc3RdPVwic29ydExpc3RcIlxyXG5cdFx0XHRcdFx0KHNvcnRDaGFuZ2VkKT1cInNvcnRDaGFuZ2VkKCRldmVudClcIlxyXG5cdFx0XHRcdD48L3RhYmxlLXNvcnRpbmctbGlzdD5cclxuXHRcdFx0XHQ8dGFibGUtY29sdW1ucy10b2dnbGVyXHJcblx0XHRcdFx0XHQqbmdJZj1cImNvbHVtblRvZ2dsZVwiXHJcblx0XHRcdFx0XHRbY29sdW1uc109XCJ0YWJsZUNvbmZpZy5jb2x1bW5zXCJcclxuXHRcdFx0XHRcdFtwcmVmaXhdPVwidGFibGVDb25maWcucHJlZml4XCJcclxuXHRcdFx0XHRcdFtzb3J0YWJsZV09XCJjb2x1bW5zT3B0aW9ucz8uc29ydGFibGVcIlxyXG5cdFx0XHRcdFx0KGNvbHVtbnNDaGFuZ2VkKT1cImNvbHVtbnNDaGFuZ2VkKCRldmVudClcIlxyXG5cdFx0XHRcdD48L3RhYmxlLWNvbHVtbnMtdG9nZ2xlcj5cclxuXHRcdFx0XHQ8bW9kZS10b2dnbGVyXHJcblx0XHRcdFx0XHQqbmdJZj1cInRhYmxlTW9kZT8udG9nZ2xlTW9kZVwiXHJcblx0XHRcdFx0XHRbbW9kZV09XCJ0YWJsZU1vZGUubW9kZSB8fCAnbGlzdCdcIlxyXG5cdFx0XHRcdFx0W21vZGVzTGlzdF09XCJ0YWJsZU1vZGU/LmF2YWlsYWJsZU1vZGVcIlxyXG5cdFx0XHRcdFx0KG1vZGVDaGFuZ2VkKT1cIm1vZGVDaGFuZ2VkKCRldmVudClcIlxyXG5cdFx0XHRcdD48L21vZGUtdG9nZ2xlcj5cclxuXHRcdFx0XHQ8bmctY29udGFpbmVyXHJcblx0XHRcdFx0XHRbbmdUZW1wbGF0ZU91dGxldF09XCJhY3Rpb25zVGFibGVUZW1wbGF0ZVwiXHJcblx0XHRcdFx0XHRbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xyXG5cdFx0XHRcdFx0XHQkaW1wbGljaXQ6IHRhYmxlQ29uZmlnLFxyXG5cdFx0XHRcdFx0XHRwYW5lbE9wZW5lZDogaXNQYW5lbE9wZW5lZCxcclxuXHRcdFx0XHRcdFx0dG9nZ2xlUGFuZWw6IHRvZ2dsZVBhbmVsLFxyXG5cdFx0XHRcdFx0XHRvcGVuTW9kYWw6IG9wZW5TZWFyY2hNb2RhbCxcclxuXHRcdFx0XHRcdFx0c2VhcmNoOiBvblRleHRTZWFyY2gsXHJcblx0XHRcdFx0XHRcdGNsZWFyOiBvbkNsZWFyU2VhcmNoXHJcblx0XHRcdFx0XHR9XCJcclxuXHRcdFx0XHQ+PC9uZy1jb250YWluZXI+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblxyXG5cdFx0PGN0cy1keW5hbWljLXRhYmxlXHJcblx0XHRcdCpuZ0lmPVwiIXRhYmxlQ29uZmlnLmlzRGF0YVByb3ZpZGVkXCJcclxuXHRcdFx0Y2xhc3M9XCJuZGYtdGFibGVfX3RhYmxlIHRhYmxlLXN0eWxlXCJcclxuXHRcdFx0W2NvbHVtbnNdPVwiZGlzcGxheWVkQ29sdW1ucyQgfCBhc3luY1wiXHJcblx0XHRcdFtyZXNwb25zaXZlQ29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zJCB8IGFzeW5jXCJcclxuXHRcdFx0W2Z1bGxXaWR0aF09XCJ0YWJsZUNvbmZpZy5mdWxsV2lkdGggfHwgJ2F1dG8nXCJcclxuXHRcdFx0W3BhZ2VTaXplXT1cInRhYmxlQ29uZmlnLnBhZ2VTaXplIHx8IDEwXCJcclxuXHRcdFx0W3BhZ2VOdW1iZXJdPVwidGFibGVDb25maWcucGFnZU51bWJlciB8fCAxXCJcclxuXHRcdFx0W3BhZ2VQcm92aWRlcl09XCJ0YWJsZUNvbmZpZy5wYWdlUHJvdmlkZXJcIlxyXG5cdFx0XHRbY3VzdG9tVXJsXT1cInRhYmxlQ29uZmlnLmN1c3RvbVVybFwiXHJcblx0XHRcdFtxdWlja0ZpbHRlcl09XCJ0YWJsZUNvbmZpZy5xdWlja0ZpbHRlcnMgPyB7IHF1aWNrRmlsdGVyczogdGFibGVDb25maWcucXVpY2tGaWx0ZXJzIH0gOiB1bmRlZmluZWRcIlxyXG5cdFx0XHRbZGVmdWx0U29ydF09XCJ0YWJsZUNvbmZpZy5kZWZhdWx0U29ydCB8fCBkZWZhdWx0U29ydFwiXHJcblx0XHRcdFtzb3J0aW5nQnldPVwic29ydE9wdGlvbiQgfCBhc3luY1wiXHJcblx0XHRcdFtlbnRpdHlUeXBlXT1cIidhbGwnXCJcclxuXHRcdFx0W2ZpZWxkc109XCJ0YWJsZUNvbmZpZy5maWVsZHNcIlxyXG5cdFx0XHRbdGFibGVNb2RlXT1cInZpZXdNb2RlJCB8IGFzeW5jXCJcclxuXHRcdFx0W2NvbXBvbmVudE5hbWVdPVwidGFibGVNb2RlPy5bJ2NvbXBvbmVudE5hbWUnXVwiXHJcblx0XHRcdFtyYW5nZV09XCJ0YWJsZUNvbmZpZz8ucmFuZ2VcIlxyXG5cdFx0XHRbaXNTZWFyY2hQYWdlXT1cInRhYmxlQ29uZmlnPy5pc1NlYXJjaFBhZ2VcIlxyXG5cdFx0XHRbbXVsdGlTZWxlY3RSb3dzXT1cInRhYmxlQ29uZmlnPy5tdWx0aVNlbGVjdFJvd3NcIlxyXG5cdFx0XHRbY3VzdG9tRmlyc3RSb3ddPVwidGFibGVDb25maWc/LmN1c3RvbUZpcnN0Um93XCJcclxuXHRcdFx0W2hpZ2hsaWdodFNlbGVjdGVkQ2FyZF09XCJ0YWJsZUNvbmZpZz8uaGlnaGxpZ2h0U2VsZWN0ZWRDYXJkXCJcclxuXHRcdFx0W3Nob3dBY3Rpb25zQXNNZW51XT1cInRhYmxlQ29uZmlnPy5zaG93QWN0aW9uc0FzTWVudVwiXHJcblx0XHRcdFtmaWx0ZXJQYXJhbXNdPVwidGFibGVDb25maWc/LmZpbHRlclBhcmFtc1wiXHJcblx0XHRcdFtmb3JtYXRdPVwidGFibGVDb25maWc/LmZvcm1hdCB8fCAnTU1NTSBkLCB5J1wiXHJcblx0XHRcdFtwYWdlU2l6ZXNdPVwidGFibGVDb25maWc/LnBhZ2VTaXplcyB8fCBkZWZhdWx0UGFnZVNpemVzXCJcclxuXHRcdFx0W3ByZWZpeF09XCJ0YWJsZUNvbmZpZy5wcmVmaXggfHwgJydcIlxyXG5cdFx0XHRbcm93Q3Vyc29yXT1cInRydWVcIlxyXG5cdFx0XHRbcXVlcnlQYXJhbV09XCJ0YWJsZUNvbmZpZy5xdWVyeVBhcmFtXCJcclxuXHRcdFx0W2N1c3RvbUZpbHRlcnNdPVwic2VhcmNoQW5kRmlsdGVycyQgfCBhc3luY1wiXHJcblx0XHRcdFt0YWJsZUFjdGlvbnNdPVwidGFibGVDb25maWcudGFibGVBY3Rpb25zXCJcclxuXHRcdFx0W2hlYWRlcnNdPVwidGFibGVDb25maWcuaGVhZGVyc1wiXHJcblx0XHRcdChvblJvd1NlbGVjdGVkKT1cIm9uUm93U2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCJcclxuXHRcdFx0KG9uUm93SW5kZXhTZWxlY3RlZCk9XCJvblJvd0luZGV4U2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCJcclxuXHRcdFx0KGFjdGlvbk9uUm93KT1cImFjdGlvbk9uUm93LmVtaXQoJGV2ZW50KVwiXHJcblx0XHRcdChvbkdldHRpbmdEYXRhKT1cIm9uR2V0dGluZ0RhdGEuZW1pdCgkZXZlbnQpXCJcclxuXHRcdFx0KG9uTG9hZCk9XCJvbkxvYWQoJGV2ZW50KVwiXHJcblx0XHRcdChvbkluaXRpYWxpemUpPVwib25Jbml0aWFsaXplKCRldmVudClcIlxyXG5cdFx0XHQob25NdWx0aVJvd1NlbGVjdGVkKT1cIm9uTXVsdGlSb3dTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG5cdFx0XHQob25Mb2FkaW5nKT1cIm9uTG9hZGluZy5lbWl0KCRldmVudClcIlxyXG5cdFx0XHQob25QYWdlKT1cIm9uUGFnZUNoYW5nZWQoJGV2ZW50KVwiXHJcblx0XHRcdFtpc0xlZ2FjeU1vZGVdPVwiZmFsc2VcIlxyXG5cdFx0XHRbc2hvd1RvdGFsUmVjb3JkXT1cInRydWVcIlxyXG5cdFx0XHQoc29ydENoYW5nZWQpPVwib25Tb3J0Q2hhbmdlZCgkZXZlbnQpXCJcclxuXHRcdD5cclxuXHRcdFx0PG5nLXRlbXBsYXRlIGVtcHR5VGVtcGxhdGUgbGV0LWlzTG9hZGluZyBsZXQtcm93cz1cInJvd3NcIiBsZXQtaW5pdGlhbGl6ZWQ9XCJpbml0aWFsaXplZFwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJsb2FkaW5nLWRhdGFcIiAqbmdJZj1cImlzTG9hZGluZyAmJiBpbml0aWFsaXplZFwiPlxyXG5cdFx0XHRcdFx0PG1hdC1zcGlubmVyPjwvbWF0LXNwaW5uZXI+XHJcblx0XHRcdFx0PC9kaXY+XHJcblxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBoLTUvNlwiICpuZ0lmPVwiIWlzTG9hZGluZyAmJiAhcm93cy5sZW5ndGhcIj5cclxuXHRcdFx0XHRcdDxhcHAtbm8tZGF0YS1mb3VuZCBjbGFzcz1cIm10LTRcIiBbbWVzc2FnZV09XCJlbXB0eU1lc3NhZ2VcIj48L2FwcC1uby1kYXRhLWZvdW5kPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0PC9jdHMtZHluYW1pYy10YWJsZT5cclxuXHJcblx0XHQ8Y3RzLXRhYmxlXHJcblx0XHRcdCpuZ0lmPVwidGFibGVDb25maWcuaXNEYXRhUHJvdmlkZWRcIlxyXG5cdFx0XHRbcm93c109XCJyb3dzXCJcclxuXHRcdFx0W3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxyXG5cdFx0XHRbY29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zJCB8IGFzeW5jXCJcclxuXHRcdFx0W3Jlc3BvbnNpdmVDb2x1bW5zXT1cImRpc3BsYXllZENvbHVtbnMkIHwgYXN5bmNcIlxyXG5cdFx0XHRbcm93Q3Vyc29yXT1cInRydWVcIlxyXG5cdFx0XHRbZnVsbFdpZHRoXT1cInRhYmxlQ29uZmlnLmZ1bGxXaWR0aCB8fCAnYXV0bydcIlxyXG5cdFx0XHRbZW50aXR5VHlwZV09XCInYWxsJ1wiXHJcblx0XHRcdFtwcmVmaXhdPVwidGFibGVDb25maWcucHJlZml4IHx8ICcnXCJcclxuXHRcdFx0W3RhYmxlTW9kZV09XCJ2aWV3TW9kZSQgfCBhc3luY1wiXHJcblx0XHRcdFtjb21wb25lbnROYW1lXT1cInRhYmxlTW9kZT8uWydjb21wb25lbnROYW1lJ11cIlxyXG5cdFx0XHRbbXVsdGlTZWxlY3RSb3dzXT1cInRhYmxlQ29uZmlnPy5tdWx0aVNlbGVjdFJvd3NcIlxyXG5cdFx0XHRbY3VzdG9tRmlyc3RSb3ddPVwidGFibGVDb25maWc/LmN1c3RvbUZpcnN0Um93XCJcclxuXHRcdFx0W3RhYmxlQWN0aW9uc109XCJ0YWJsZUNvbmZpZy50YWJsZUFjdGlvbnNcIlxyXG5cdFx0XHRbc2hvd0FjdGlvbnNBc01lbnVdPVwidGFibGVDb25maWc/LnNob3dBY3Rpb25zQXNNZW51XCJcclxuXHRcdFx0W2RlZnVsdFNvcnRdPVwidGFibGVDb25maWcuZGVmYXVsdFNvcnQgfHwgZGVmYXVsdFNvcnRcIlxyXG5cdFx0XHRbZm9ybWF0XT1cInRhYmxlQ29uZmlnPy5mb3JtYXQgfHwgJ01NTU0gZCwgeSdcIlxyXG5cdFx0XHRbaGlnaGxpZ2h0U2VsZWN0ZWRDYXJkXT1cInRhYmxlQ29uZmlnPy5oaWdobGlnaHRTZWxlY3RlZENhcmRcIlxyXG5cdFx0XHQob25Sb3dTZWxlY3RlZCk9XCJvblJvd1NlbGVjdGVkLmVtaXQoJGV2ZW50KVwiXHJcblx0XHRcdChvblJvd0luZGV4U2VsZWN0ZWQpPVwib25Sb3dJbmRleFNlbGVjdGVkLmVtaXQoJGV2ZW50KVwiXHJcblx0XHRcdChvbk11bHRpUm93U2VsZWN0ZWQpPVwib25NdWx0aVJvd1NlbGVjdGVkLmVtaXQoJGV2ZW50KVwiXHJcblx0XHRcdChhY3Rpb25PblJvdyk9XCJhY3Rpb25PblJvdy5lbWl0KCRldmVudClcIlxyXG5cdFx0XHQob25Tb3J0aW5nKT1cIm9uU29ydENoYW5nZWQoJGV2ZW50KVwiXHJcblx0XHQ+PC9jdHMtdGFibGU+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -7,6 +7,5 @@ export * from './filters-panel.module';
7
7
  export * from './models';
8
8
  export * from './pipes';
9
9
  export * from './services/filters-query.service';
10
- export * from './services/ndf-transform.service';
11
10
  export * from './utility';
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9uZGYtdGFibGUvZmlsdGVycy1wYW5lbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRhaW5lcnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2N1c3RvbS1jb21wb25lbnRzJztcclxuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzJztcclxuZXhwb3J0ICogZnJvbSAnLi9maWx0ZXJzLXBhbmVsLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzJztcclxuZXhwb3J0ICogZnJvbSAnLi9waXBlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvZmlsdGVycy1xdWVyeS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9uZGYtdHJhbnNmb3JtLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3V0aWxpdHknO1xyXG4iXX0=
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9uZGYtdGFibGUvZmlsdGVycy1wYW5lbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RhbnRzJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb250YWluZXJzJztcclxuZXhwb3J0ICogZnJvbSAnLi9jdXN0b20tY29tcG9uZW50cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVycy1wYW5lbC5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL21vZGVscyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2ZpbHRlcnMtcXVlcnkuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdXRpbGl0eSc7XHJcbiJdfQ==