@provoly/dashboard 1.3.8 → 1.3.9

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 (200) hide show
  1. package/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.d.ts +5 -2
  2. package/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.d.ts +47 -18
  3. package/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.d.ts +6 -2
  4. package/admin/components/admin-fields/admin-fields.component.d.ts +4 -1
  5. package/admin/components/admin-fields/store/admin-fields.model.d.ts +1 -1
  6. package/admin/components/admin-fields/store/fields.actions.d.ts +19 -12
  7. package/admin/components/admin-fields/store/fields.effects.d.ts +16 -3
  8. package/admin/i18n/en.translations.d.ts +33 -14
  9. package/admin/i18n/fr.translations.d.ts +33 -14
  10. package/components/checkbox/checkbox.component.d.ts +4 -2
  11. package/components/data-format/data-format.pipe.d.ts +11 -1
  12. package/components/paginator/index.d.ts +5 -0
  13. package/components/paginator/paginator.component.d.ts +19 -0
  14. package/components/paginator/paginator.module.d.ts +10 -0
  15. package/components/paginator/public-api.d.ts +3 -0
  16. package/components/paginator/style/_o-pry-paginator.scss +11 -0
  17. package/components/paginator/style/css.component.d.ts +5 -0
  18. package/dataset/components/dataset-detail/dataset-detail.component.d.ts +5 -8
  19. package/dataset/dataset.module.d.ts +1 -1
  20. package/dataset/i18n/en.translations.d.ts +0 -12
  21. package/dataset/i18n/fr.translations.d.ts +0 -12
  22. package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +4 -6
  23. package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +1 -1
  24. package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +1 -1
  25. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +10 -12
  26. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +6 -5
  27. package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +2 -2
  28. package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +142 -63
  29. package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +7 -8
  30. package/esm2022/admin/components/admin-fields/admin-fields.component.mjs +15 -11
  31. package/esm2022/admin/components/admin-fields/store/admin-fields.model.mjs +1 -1
  32. package/esm2022/admin/components/admin-fields/store/fields.actions.mjs +6 -5
  33. package/esm2022/admin/components/admin-fields/store/fields.effects.mjs +12 -6
  34. package/esm2022/admin/i18n/en.translations.mjs +34 -15
  35. package/esm2022/admin/i18n/fr.translations.mjs +34 -15
  36. package/esm2022/components/checkbox/checkbox.component.mjs +15 -7
  37. package/esm2022/components/data-format/data-format.pipe.mjs +88 -7
  38. package/esm2022/components/paginator/paginator.component.mjs +51 -0
  39. package/esm2022/components/paginator/paginator.module.mjs +20 -0
  40. package/esm2022/components/paginator/provoly-dashboard-components-paginator.mjs +5 -0
  41. package/esm2022/components/paginator/public-api.mjs +4 -0
  42. package/esm2022/components/paginator/style/css.component.mjs +11 -0
  43. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +16 -26
  44. package/esm2022/dataset/dataset.module.mjs +2 -5
  45. package/esm2022/dataset/i18n/en.translations.mjs +1 -13
  46. package/esm2022/dataset/i18n/fr.translations.mjs +2 -14
  47. package/esm2022/import/components/form/import-form.component.mjs +174 -0
  48. package/esm2022/import/components/list/import-list.component.mjs +73 -0
  49. package/esm2022/import/components/version-modal/version-modal.component.mjs +26 -0
  50. package/esm2022/import/i18n/en.translations.mjs +16 -2
  51. package/esm2022/import/i18n/fr.translations.mjs +16 -2
  52. package/esm2022/import/import-routing.module.mjs +3 -3
  53. package/esm2022/import/import.module.mjs +25 -10
  54. package/esm2022/import/public-api.mjs +4 -2
  55. package/esm2022/import/style/css.component.mjs +2 -2
  56. package/esm2022/lib/core/components/select/select.component.mjs +3 -3
  57. package/esm2022/lib/core/components/share/legacy-share/share.component.mjs +8 -8
  58. package/esm2022/lib/core/components/status-modal/status-modal.component.mjs +48 -0
  59. package/esm2022/lib/core/components/{modal-status/modal-status.module.mjs → status-modal/status-modal.module.mjs} +9 -9
  60. package/esm2022/lib/core/core.module.mjs +5 -5
  61. package/esm2022/lib/core/i18n/en.translations.mjs +35 -2
  62. package/esm2022/lib/core/i18n/fr.translations.mjs +37 -2
  63. package/esm2022/lib/core/model/admin-api.model.mjs +5 -69
  64. package/esm2022/lib/core/model/widget-analytic-manifest.interface.mjs +1 -1
  65. package/esm2022/lib/core/model/widget-table-manifest.interface.mjs +1 -1
  66. package/esm2022/lib/core/public-api.mjs +3 -3
  67. package/esm2022/lib/core/store/class/class.interface.mjs +1 -1
  68. package/esm2022/lib/core/store/class/class.selectors.mjs +2 -2
  69. package/esm2022/lib/core/store/data-source/data-source.actions.mjs +3 -3
  70. package/esm2022/lib/core/store/data-source/data-source.effects.mjs +7 -4
  71. package/esm2022/lib/core/store/data-source/data-source.model.mjs +1 -1
  72. package/esm2022/lib/core/store/data-source/data-source.reducer.mjs +5 -3
  73. package/esm2022/lib/core/store/data-source/data-source.selectors.mjs +3 -11
  74. package/esm2022/lib/core/store/data-source/data-source.service.mjs +23 -5
  75. package/esm2022/lib/core/store/field/field.interface.mjs +1 -3
  76. package/esm2022/lib/core/store/field/field.service.mjs +7 -2
  77. package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +3 -3
  78. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-card/datasource-card.component.mjs +3 -11
  79. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-list/datasource-list.component.mjs +2 -2
  80. package/esm2022/lib/dashboard/item-utils.mjs +5 -5
  81. package/esm2022/lib/dashboard/store/dashboard.actions.mjs +1 -4
  82. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +1 -19
  83. package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +1 -26
  84. package/esm2022/lib/dashboard/tooltip/components/default/default.tooltip.component.mjs +3 -3
  85. package/esm2022/lib/dashboard/tooltip/tooltip-factory.service.mjs +3 -2
  86. package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +4 -4
  87. package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +3 -3
  88. package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +4 -5
  89. package/esm2022/search/search-mono-class/store/search-mono-class.effects.mjs +2 -2
  90. package/esm2022/search/search-mono-class/store/search-mono-class.service.mjs +5 -6
  91. package/esm2022/search/search-multi-class/store/search-multi-class.service.mjs +4 -4
  92. package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +3 -3
  93. package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +17 -19
  94. package/esm2022/tooltips/attribute/attribute-tooltip.module.mjs +5 -4
  95. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +54 -37
  96. package/esm2022/widgets/widget-analytic/component/widget-analytic.component.mjs +4 -16
  97. package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +9 -9
  98. package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +5 -5
  99. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +30 -32
  100. package/esm2022/widgets/widget-map/pipe/widget-map-geometry-fields-for.pipe.mjs +2 -5
  101. package/esm2022/widgets/widget-map/utils/cql-utils.class.mjs +2 -2
  102. package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +6 -10
  103. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +18 -14
  104. package/esm2022/widgets/widget-table/expand-value/expand-value.component.mjs +9 -5
  105. package/esm2022/widgets/widget-table/get-value/get-value.pipe.mjs +2 -2
  106. package/esm2022/widgets/widget-table/public-api.mjs +1 -2
  107. package/esm2022/widgets/widget-table/widget-table.module.mjs +12 -7
  108. package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +10 -15
  109. package/esm2022/widgets/widget-tile/widget-tile.module.mjs +8 -4
  110. package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +2 -2
  111. package/fesm2022/provoly-dashboard-admin.mjs +249 -126
  112. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  113. package/fesm2022/provoly-dashboard-components-checkbox.mjs +14 -6
  114. package/fesm2022/provoly-dashboard-components-checkbox.mjs.map +1 -1
  115. package/fesm2022/provoly-dashboard-components-data-format.mjs +88 -7
  116. package/fesm2022/provoly-dashboard-components-data-format.mjs.map +1 -1
  117. package/fesm2022/provoly-dashboard-components-paginator.mjs +82 -0
  118. package/fesm2022/provoly-dashboard-components-paginator.mjs.map +1 -0
  119. package/fesm2022/provoly-dashboard-dataset.mjs +21 -58
  120. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  121. package/fesm2022/provoly-dashboard-import.mjs +249 -116
  122. package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
  123. package/fesm2022/provoly-dashboard-search.mjs +15 -16
  124. package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
  125. package/fesm2022/provoly-dashboard-toolbox.mjs +2 -2
  126. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  127. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +20 -21
  128. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
  129. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +53 -36
  130. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  131. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs +3 -15
  132. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs.map +1 -1
  133. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +9 -9
  134. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
  135. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +4 -4
  136. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -1
  137. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +36 -45
  138. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  139. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +32 -38
  140. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
  141. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +16 -17
  142. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
  143. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +1 -1
  144. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
  145. package/fesm2022/provoly-dashboard.mjs +278 -330
  146. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  147. package/import/components/{import.component.d.ts → form/import-form.component.d.ts} +8 -4
  148. package/import/components/list/import-list.component.d.ts +34 -0
  149. package/import/components/version-modal/version-modal.component.d.ts +13 -0
  150. package/import/i18n/en.translations.d.ts +14 -0
  151. package/import/i18n/fr.translations.d.ts +14 -0
  152. package/import/import.module.d.ts +13 -10
  153. package/import/public-api.d.ts +3 -1
  154. package/import/style/_o-import.scss +50 -6
  155. package/lib/core/components/share/legacy-share/share.component.d.ts +1 -1
  156. package/lib/core/components/{modal-status/modal-status.component.d.ts → status-modal/status-modal.component.d.ts} +10 -6
  157. package/lib/core/components/{modal-status/modal-status.module.d.ts → status-modal/status-modal.module.d.ts} +5 -5
  158. package/lib/core/core.module.d.ts +2 -2
  159. package/lib/core/i18n/en.translations.d.ts +33 -0
  160. package/lib/core/i18n/fr.translations.d.ts +35 -0
  161. package/lib/core/model/admin-api.model.d.ts +6 -8
  162. package/lib/core/model/widget-analytic-manifest.interface.d.ts +0 -3
  163. package/lib/core/model/widget-table-manifest.interface.d.ts +2 -0
  164. package/lib/core/public-api.d.ts +2 -2
  165. package/lib/core/store/class/class.interface.d.ts +2 -1
  166. package/lib/core/store/class/class.selectors.d.ts +10 -10
  167. package/lib/core/store/data-source/data-source.actions.d.ts +21 -1
  168. package/lib/core/store/data-source/data-source.effects.d.ts +11 -1
  169. package/lib/core/store/data-source/data-source.model.d.ts +3 -2
  170. package/lib/core/store/data-source/data-source.reducer.d.ts +1 -0
  171. package/lib/core/store/data-source/data-source.selectors.d.ts +3 -3
  172. package/lib/core/store/data-source/data-source.service.d.ts +11 -2
  173. package/lib/core/store/field/field.interface.d.ts +8 -4
  174. package/lib/core/store/field/field.service.d.ts +1 -0
  175. package/lib/dashboard/components/context-menu/object-edition/object-edition.component.d.ts +1 -1
  176. package/lib/dashboard/components/widgets/datasource-selector/datasource-card/datasource-card.component.d.ts +3 -7
  177. package/lib/dashboard/item-utils.d.ts +1 -1
  178. package/lib/dashboard/store/dashboard.actions.d.ts +0 -11
  179. package/lib/dashboard/store/dashboard.effects.d.ts +0 -3
  180. package/lib/dashboard/tooltip/tooltip-factory.service.d.ts +2 -1
  181. package/package.json +25 -19
  182. package/styles/base/_utils.scss +9 -1
  183. package/styles/components/_a-btn.scss +7 -0
  184. package/styles/components/_a-table.scss +2 -16
  185. package/styles/layout/_o-workspace.scss +1 -0
  186. package/tooltips/attribute/attribute-tooltip.component.d.ts +6 -6
  187. package/tooltips/attribute/attribute-tooltip.module.d.ts +2 -1
  188. package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +16 -3
  189. package/widgets/widget-analytic/component/widget-analytic.component.d.ts +2 -3
  190. package/widgets/widget-detail/component/widget-detail.component.d.ts +1 -4
  191. package/widgets/widget-table/component/widget-table.component.d.ts +1 -0
  192. package/widgets/widget-table/expand-value/expand-value.component.d.ts +4 -2
  193. package/widgets/widget-table/public-api.d.ts +0 -1
  194. package/widgets/widget-table/widget-table.module.d.ts +9 -8
  195. package/widgets/widget-tile/component/widget-tile.component.d.ts +1 -0
  196. package/widgets/widget-tile/widget-tile.module.d.ts +2 -1
  197. package/esm2022/import/components/import.component.mjs +0 -167
  198. package/esm2022/lib/core/components/modal-status/modal-status.component.mjs +0 -45
  199. package/esm2022/widgets/widget-table/expand-value/format-number.pipe.mjs +0 -24
  200. package/widgets/widget-table/expand-value/format-number.pipe.d.ts +0 -10
@@ -26,10 +26,7 @@ export class GeometryFieldsForPipe {
26
26
  .map((oClassId) => classes.find((cl) => cl.id === oClassId) ?? { attributes: [] })
27
27
  .map((oClass) => oClass.attributes)
28
28
  .reduce((prev, curr) => [...prev, ...curr], [])
29
- .filter((attr) => {
30
- const attrField = fields.find((f) => f.id === attr.field);
31
- return !!attrField && attrField.type === type;
32
- })
29
+ .filter((attr) => attr.field.type === type)
33
30
  .sort((a, b) => a.technicalName.localeCompare(b.technicalName));
34
31
  const resArr = [];
35
32
  potentialFields.forEach(function (attr) {
@@ -49,4 +46,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
49
46
  name: 'geometryFieldsFor'
50
47
  }]
51
48
  }], ctorParameters: () => [{ type: i1.Store }] });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LW1hcC1nZW9tZXRyeS1maWVsZHMtZm9yLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC93aWRnZXRzL3dpZGdldC1tYXAvcGlwZS93aWRnZXQtbWFwLWdlb21ldHJ5LWZpZWxkcy1mb3IucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBR0wsY0FBYyxFQUVkLGNBQWMsRUFNZixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQUszRCxNQUFNLE9BQU8scUJBQXFCO0lBSWhDLFlBQW9CLEtBQWlCO1FBQWpCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSzthQUN2QixNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQzthQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxTQUFTLENBQUMsS0FBNEIsRUFBRSxHQUFHLElBQVc7UUFDcEQsTUFBTSxhQUFhLEdBQUcsS0FJVyxD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LE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs4R0FuRFUscUJBQXFCOzRHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBSGpDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLG1CQUFtQjtpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIEF0dHJpYnV0ZSxcbiAgQ2xhc3MsXG4gIENsYXNzU2VsZWN0b3JzLFxuICBGaWVsZCxcbiAgRmllbGRTZWxlY3RvcnMsXG4gIE1hcFdpZGdldEJ1YmJsZUxheWVyT3B0aW9ucyxcbiAgTWFwV2lkZ2V0R2VvbWV0cnlMYXllck9wdGlvbnMsXG4gIE1hcFdpZGdldEhlYXRNYXBMYXllck9wdGlvbnMsXG4gIE1hcFdpZGdldExheWVyT3B0aW9ucyxcbiAgTWFwV2lkZ2V0TWFya2VyTGF5ZXJPcHRpb25zXG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgV2lkZ2V0TWFwVXRpbHMgfSBmcm9tICcuLi91dGlscy93aWRnZXQtbWFwLnV0aWxzJztcblxuQFBpcGUoe1xuICBuYW1lOiAnZ2VvbWV0cnlGaWVsZHNGb3InXG59KVxuZXhwb3J0IGNsYXNzIEdlb21ldHJ5RmllbGRzRm9yUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBjbGFzc2VzJDogT2JzZXJ2YWJsZTxDbGFzc1tdPjtcbiAgZmllbGRzJDogT2JzZXJ2YWJsZTxGaWVsZFtdPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlOiBTdG9yZTxhbnk+KSB7XG4gICAgdGhpcy5jbGFzc2VzJCA9IHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3NlcylcbiAgICAgIC5waXBlKG1hcCgoY2xhc3NlcykgPT4gY2xhc3Nlcy5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKSkpO1xuICAgIHRoaXMuZmllbGRzJCA9IHRoaXMuc3RvcmUuc2VsZWN0KEZpZWxkU2VsZWN0b3JzLmZpZWxkcyk7XG4gIH1cblxuICB0cmFuc2Zvcm0odmFsdWU6IE1hcFdpZGdldExheWVyT3B0aW9ucywgLi4uYXJnczogYW55W10pOiBPYnNlcnZhYmxlPEF0dHJpYnV0ZVtdPiB7XG4gICAgY29uc3Qgc3BlY2lmaWNMYXllciA9IHZhbHVlIGFzXG4gICAgICB8IE1hcFdpZGdldEhlYXRNYXBMYXllck9wdGlvbnNcbiAgICAgIHwgTWFwV2lkZ2V0TWFya2VyTGF5ZXJPcHRpb25zXG4gICAgICB8IE1hcFdpZGdldEJ1YmJsZUxheWVyT3B0aW9uc1xuICAgICAgfCBNYXBXaWRnZXRHZW9tZXRyeUxheWVyT3B0aW9ucztcblxuICAgIGNvbnN0IGxpbWl0VG9DbGFzc2VzID0gYXJnc1swXS5jbGFzc2VzIGFzIHN0cmluZ1tdO1xuICAgIGNvbnN0IHR5cGUgPSBXaWRnZXRNYXBVdGlscy5nZW9tZXRyeUZvckxheWVyKHsgdHlwZTogYXJnc1swXS50eXBlIH0pO1xuXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3RoaXMuY2xhc3NlcyQsIHRoaXMuZmllbGRzJF0pLnBpcGUoXG4gICAgICBmaWx0ZXIoKFtjbGFzc2VzLCBmaWVsZHNdKSA9PiAhIWNsYXNzZXMgJiYgISFmaWVsZHMgJiYgY2xhc3Nlcy5sZW5ndGggPiAwICYmIGZpZWxkcy5sZW5ndGggPiAwKSxcbiAgICAgIG1hcCgoW2NsYXNzZXMsIGZpZWxkc10pID0+IHtcbiAgICAgICAgY29uc3QgcG90ZW50aWFsRmllbGRzID0gY2xhc3Nlc1xuICAgICAgICAgIC5tYXAoKGNsKSA9PiBjbC5pZClcbiAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgKG9DbGFzc0lkKSA9PlxuICAgICAgICAgICAgICAhc3BlY2lmaWNMYXllci5jbGFzc2VzIHx8XG4gICAgICAgICAgICAgIHNwZWNpZmljTGF5ZXIuY2xhc3Nlcy5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgICAgISFzcGVjaWZpY0xheWVyLmNsYXNzZXM/LmZpbmQoKGNsKSA9PiBvQ2xhc3NJZCA9PT0gY2wpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5maWx0ZXIoKGNsYXNzSWQpID0+ICFsaW1pdFRvQ2xhc3NlcyB8fCBsaW1pdFRvQ2xhc3Nlcy5sZW5ndGggPT09IDAgfHwgbGltaXRUb0NsYXNzZXMuaW5jbHVkZXMoY2xhc3NJZCkpXG4gICAgICAgICAgLm1hcCgob0NsYXNzSWQpID0+IGNsYXNzZXMuZmluZCgoY2wpID0+IGNsLmlkID09PSBvQ2xhc3NJZCkgPz8geyBhdHRyaWJ1dGVzOiBbXSBhcyBBdHRyaWJ1dGVbXSB9KVxuICAgICAgICAgIC5tYXAoKG9DbGFzcykgPT4gb0NsYXNzLmF0dHJpYnV0ZXMpXG4gICAgICAgICAgLnJlZHVjZSgocHJldiwgY3VycikgPT4gWy4uLnByZXYsIC4uLmN1cnJdLCBbXSlcbiAgICAgICAgICAuZmlsdGVyKChhdHRyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhdHRyRmllbGQgPSBmaWVsZHMuZmluZCgoZikgPT4gZi5pZCA9PT0gYXR0ci5maWVsZCk7XG4gICAgICAgICAgICByZXR1cm4gISFhdHRyRmllbGQgJiYgYXR0ckZpZWxkLnR5cGUgPT09IHR5cGU7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS50ZWNobmljYWxOYW1lLmxvY2FsZUNvbXBhcmUoYi50ZWNobmljYWxOYW1lKSk7XG5cbiAgICAgICAgY29uc3QgcmVzQXJyID0gW10gYXMgQXR0cmlidXRlW107XG4gICAgICAgIHBvdGVudGlhbEZpZWxkcy5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyKSB7XG4gICAgICAgICAgaWYgKHJlc0Fyci5maW5kSW5kZXgoKHgpID0+IHgudGVjaG5pY2FsTmFtZSA9PSBhdHRyLnRlY2huaWNhbE5hbWUpIDw9IC0xKSB7XG4gICAgICAgICAgICByZXNBcnIucHVzaChhdHRyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzQXJyO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LW1hcC1nZW9tZXRyeS1maWVsZHMtZm9yLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC93aWRnZXRzL3dpZGdldC1tYXAvcGlwZS93aWRnZXQtbWFwLWdlb21ldHJ5LWZpZWxkcy1mb3IucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBR0wsY0FBYyxFQUVkLGNBQWMsRUFNZixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQUszRCxNQUFNLE9BQU8scUJBQXFCO0lBSWhDLFlBQW9CLEtBQWlCO1FBQWpCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSzthQUN2QixNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQzthQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxTQUFTLENBQUMsS0FBNEIsRUFBRSxHQUFHLElBQVc7UUFDcEQsTUFBTSxhQUFhLEdBQUcsS0FJVyxD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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBBdHRyaWJ1dGUsXG4gIENsYXNzLFxuICBDbGFzc1NlbGVjdG9ycyxcbiAgRmllbGQsXG4gIEZpZWxkU2VsZWN0b3JzLFxuICBNYXBXaWRnZXRCdWJibGVMYXllck9wdGlvbnMsXG4gIE1hcFdpZGdldEdlb21ldHJ5TGF5ZXJPcHRpb25zLFxuICBNYXBXaWRnZXRIZWF0TWFwTGF5ZXJPcHRpb25zLFxuICBNYXBXaWRnZXRMYXllck9wdGlvbnMsXG4gIE1hcFdpZGdldE1hcmtlckxheWVyT3B0aW9uc1xufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFdpZGdldE1hcFV0aWxzIH0gZnJvbSAnLi4vdXRpbHMvd2lkZ2V0LW1hcC51dGlscyc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2dlb21ldHJ5RmllbGRzRm9yJ1xufSlcbmV4cG9ydCBjbGFzcyBHZW9tZXRyeUZpZWxkc0ZvclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY2xhc3NlcyQ6IE9ic2VydmFibGU8Q2xhc3NbXT47XG4gIGZpZWxkcyQ6IE9ic2VydmFibGU8RmllbGRbXT47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55Pikge1xuICAgIHRoaXMuY2xhc3NlcyQgPSB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KENsYXNzU2VsZWN0b3JzLmNsYXNzZXMpXG4gICAgICAucGlwZShtYXAoKGNsYXNzZXMpID0+IGNsYXNzZXMuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSkpKTtcbiAgICB0aGlzLmZpZWxkcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChGaWVsZFNlbGVjdG9ycy5maWVsZHMpO1xuICB9XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBNYXBXaWRnZXRMYXllck9wdGlvbnMsIC4uLmFyZ3M6IGFueVtdKTogT2JzZXJ2YWJsZTxBdHRyaWJ1dGVbXT4ge1xuICAgIGNvbnN0IHNwZWNpZmljTGF5ZXIgPSB2YWx1ZSBhc1xuICAgICAgfCBNYXBXaWRnZXRIZWF0TWFwTGF5ZXJPcHRpb25zXG4gICAgICB8IE1hcFdpZGdldE1hcmtlckxheWVyT3B0aW9uc1xuICAgICAgfCBNYXBXaWRnZXRCdWJibGVMYXllck9wdGlvbnNcbiAgICAgIHwgTWFwV2lkZ2V0R2VvbWV0cnlMYXllck9wdGlvbnM7XG5cbiAgICBjb25zdCBsaW1pdFRvQ2xhc3NlcyA9IGFyZ3NbMF0uY2xhc3NlcyBhcyBzdHJpbmdbXTtcbiAgICBjb25zdCB0eXBlID0gV2lkZ2V0TWFwVXRpbHMuZ2VvbWV0cnlGb3JMYXllcih7IHR5cGU6IGFyZ3NbMF0udHlwZSB9KTtcblxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLmNsYXNzZXMkLCB0aGlzLmZpZWxkcyRdKS5waXBlKFxuICAgICAgZmlsdGVyKChbY2xhc3NlcywgZmllbGRzXSkgPT4gISFjbGFzc2VzICYmICEhZmllbGRzICYmIGNsYXNzZXMubGVuZ3RoID4gMCAmJiBmaWVsZHMubGVuZ3RoID4gMCksXG4gICAgICBtYXAoKFtjbGFzc2VzLCBmaWVsZHNdKSA9PiB7XG4gICAgICAgIGNvbnN0IHBvdGVudGlhbEZpZWxkcyA9IGNsYXNzZXNcbiAgICAgICAgICAubWFwKChjbCkgPT4gY2wuaWQpXG4gICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgIChvQ2xhc3NJZCkgPT5cbiAgICAgICAgICAgICAgIXNwZWNpZmljTGF5ZXIuY2xhc3NlcyB8fFxuICAgICAgICAgICAgICBzcGVjaWZpY0xheWVyLmNsYXNzZXMubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgICAgICEhc3BlY2lmaWNMYXllci5jbGFzc2VzPy5maW5kKChjbCkgPT4gb0NsYXNzSWQgPT09IGNsKVxuICAgICAgICAgIClcbiAgICAgICAgICAuZmlsdGVyKChjbGFzc0lkKSA9PiAhbGltaXRUb0NsYXNzZXMgfHwgbGltaXRUb0NsYXNzZXMubGVuZ3RoID09PSAwIHx8IGxpbWl0VG9DbGFzc2VzLmluY2x1ZGVzKGNsYXNzSWQpKVxuICAgICAgICAgIC5tYXAoKG9DbGFzc0lkKSA9PiBjbGFzc2VzLmZpbmQoKGNsKSA9PiBjbC5pZCA9PT0gb0NsYXNzSWQpID8/IHsgYXR0cmlidXRlczogW10gYXMgQXR0cmlidXRlW10gfSlcbiAgICAgICAgICAubWFwKChvQ2xhc3MpID0+IG9DbGFzcy5hdHRyaWJ1dGVzKVxuICAgICAgICAgIC5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IFsuLi5wcmV2LCAuLi5jdXJyXSwgW10pXG4gICAgICAgICAgLmZpbHRlcigoYXR0cikgPT4gYXR0ci5maWVsZC50eXBlID09PSB0eXBlKVxuICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLnRlY2huaWNhbE5hbWUubG9jYWxlQ29tcGFyZShiLnRlY2huaWNhbE5hbWUpKTtcblxuICAgICAgICBjb25zdCByZXNBcnIgPSBbXSBhcyBBdHRyaWJ1dGVbXTtcbiAgICAgICAgcG90ZW50aWFsRmllbGRzLmZvckVhY2goZnVuY3Rpb24gKGF0dHIpIHtcbiAgICAgICAgICBpZiAocmVzQXJyLmZpbmRJbmRleCgoeCkgPT4geC50ZWNobmljYWxOYW1lID09IGF0dHIudGVjaG5pY2FsTmFtZSkgPD0gLTEpIHtcbiAgICAgICAgICAgIHJlc0Fyci5wdXNoKGF0dHIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXNBcnI7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -8,7 +8,7 @@ export class CqlUtils {
8
8
  return filters[datasourceId]
9
9
  .map((cond) => {
10
10
  const attribute = attributesReference.find((attr) => attr.id === cond.attribute);
11
- const field = fields.find((f) => f.id === attribute?.field);
11
+ const field = attribute?.field;
12
12
  const attributeName = attribute?.technicalName;
13
13
  return this.getConditionsForValue(attributeName, cond, field, datasourceId);
14
14
  })
@@ -68,4 +68,4 @@ export class CqlUtils {
68
68
  return conditions.length > 1 ? '( ' + conditions.join(' OR ') + ' )' : conditions[0];
69
69
  }
70
70
  }
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3FsLXV0aWxzLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtbWFwL3V0aWxzL2NxbC11dGlscy5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQStCLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWpGLE1BQU0sT0FBTyxRQUFRO0lBQ25CLE1BQU0sQ0FBQyxlQUFlLENBQ3BCLFlBQW9CLEVBQ3BCLE9BQXlDLEVBQ3pDLE9BQWdCLEVBQ2hCLE1BQWU7UUFFZixJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDOUYsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFNUUsT0FBTyxPQUFPLENBQUMsWUFBWSxDQUFDO2FBQ3pCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1osTUFBTSxTQUFTLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqRixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1RCxNQUFNLGFBQWEsR0FBRyxTQUFTLEVBQUUsYUFB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Q0FBQzs0QkFDN0MsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQ0FDaEMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLGFBQWEsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsYUFBYSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQ3pGLENBQUM7NEJBQ0QsTUFBTTtvQkFDVixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLElBQUksQ0FDVix1Q0FBdUMsWUFBWSxZQUFZLElBQUksQ0FBQyxTQUFTLGlDQUFpQyxDQUMvRyxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENsYXNzLCBGaWVsZCwgRmlsdGVyQ29udGV4dCwgVGV4dEZpZWxkVHlwZXMgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuXG5leHBvcnQgY2xhc3MgQ3FsVXRpbHMge1xuICBzdGF0aWMgZ2V0Q1FMUGFyYW1zRm9yKFxuICAgIGRhdGFzb3VyY2VJZDogc3RyaW5nLFxuICAgIGZpbHRlcnM6IHsgW3A6IHN0cmluZ106IEZpbHRlckNvbnRleHRbXSB9LFxuICAgIGNsYXNzZXM6IENsYXNzW10sXG4gICAgZmllbGRzOiBGaWVsZFtdXG4gICk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghZmlsdGVycyB8fCAhZGF0YXNvdXJjZUlkIHx8ICFmaWx0ZXJzW2RhdGFzb3VyY2VJZF0gfHwgZmlsdGVyc1tkYXRhc291cmNlSWRdLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgYXR0cmlidXRlc1JlZmVyZW5jZSA9IGNsYXNzZXMubWFwKChjbGF6eikgPT4gY2xhenouYXR0cmlidXRlcykuZmxhdCgpO1xuXG4gICAgcmV0dXJuIGZpbHRlcnNbZGF0YXNvdXJjZUlkXVxuICAgICAgLm1hcCgoY29uZCkgPT4ge1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzUmVmZXJlbmNlLmZpbmQoKGF0dHIpID0+IGF0dHIuaWQgPT09IGNvbmQuYXR0cmlidXRlKTtcbiAgICAgICAgY29uc3QgZmllbGQgPSBmaWVsZHMuZmluZCgoZikgPT4gZi5pZCA9PT0gYXR0cmlidXRlPy5maWVsZCk7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGU/LnRlY2huaWNhbE5hbWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29uZGl0aW9uc0ZvclZhbHVlKGF0dHJpYnV0ZU5hbWUsIGNvbmQsIGZpZWxkLCBkYXRhc291cmNlSWQpO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKGNvbmRzKSA9PiAhIWNvbmRzICYmIGNvbmRzLmxlbmd0aCA+IDApXG4gICAgICAuam9pbignIEFORCAnKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRDb25kaXRpb25zRm9yVmFsdWUoXG4gICAgYXR0cmlidXRlTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIGNvbmQ6IEZpbHRlckNvbnRleHQsXG4gICAgZmllbGQ6IEZpZWxkIHwgdW5kZWZpbmVkLFxuICAgIGRhdGFzb3VyY2VJZDogc3RyaW5nXG4gICkge1xuICAgIGxldCBjb25kaXRpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgY29uc3QgdmFsdWVzID0gKEFycmF5LmlzQXJyYXkoY29uZC52YWx1ZSkgPyBjb25kLnZhbHVlIDogW2NvbmQudmFsdWVdKSBhcyBzdHJpbmdbXSB8IG51bWJlcltdO1xuXG4gICAgaWYgKGF0dHJpYnV0ZU5hbWUpIHtcbiAgICAgIHZhbHVlcy5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUgJiYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgfHwgdmFsdWUubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgICBjb25zdCBxdW90ZVNhZmVWYWx1ZSA9IGAke3ZhbHVlfWAucmVwbGFjZSgvJy9nLCBcIicnXCIpO1xuICAgICAgICAgIHN3aXRjaCAoY29uZC5vcGVyYXRvcikge1xuICAgICAgICAgICAgY2FzZSAnRVFVQUxTJzpcbiAgICAgICAgICAgICAgaWYgKCFmaWVsZCB8fCBUZXh0RmllbGRUeXBlcy5pbmNsdWRlcyhmaWVsZD8udHlwZSkpIHtcbiAgICAgICAgICAgICAgICBjb25kaXRpb25zLnB1c2goYCR7YXR0cmlidXRlTmFtZX09JyR7cXVvdGVTYWZlVmFsdWV9J2ApO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbmRpdGlvbnMucHVzaChgJHthdHRyaWJ1dGVOYW1lfT0ke3ZhbHVlfWApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQ09OVEFJTlMnOlxuICAgICAgICAgICAgICBjb25kaXRpb25zLnB1c2goYCR7YXR0cmlidXRlTmFtZX0gTElLRSAnJSR7cXVvdGVTYWZlVmFsdWV9JSdgKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdTVEFSVF9XSVRIJzpcbiAgICAgICAgICAgICAgY29uZGl0aW9ucy5wdXNoKGAke2F0dHJpYnV0ZU5hbWV9IExJS0UgJyR7cXVvdGVTYWZlVmFsdWV9JSdgKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdFTkRfV0lUSCc6XG4gICAgICAgICAgICAgIGNvbmRpdGlvbnMucHVzaChgJHthdHRyaWJ1dGVOYW1lfSBMSUtFICclJHtxdW90ZVNhZmVWYWx1ZX0nYCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnR1JFQVRFUl9USEFOJzpcbiAgICAgICAgICAgICAgY29uZGl0aW9ucy5wdXNoKGAke2F0dHJpYnV0ZU5hbWV9PiR7dmFsdWV9YCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTE9XRVJfVEhBTic6XG4gICAgICAgICAgICAgIGNvbmRpdGlvbnMucHVzaChgJHthdHRyaWJ1dGVOYW1lfTwke3ZhbHVlfWApO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ09VVFNJREUnOlxuICAgICAgICAgICAgICBjb25zdCBzcGxpdEkgPSAodmFsdWUgYXMgc3RyaW5nKT8uc3BsaXQoJywnKTtcbiAgICAgICAgICAgICAgaWYgKHNwbGl0SSAmJiBzcGxpdEkubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIGNvbmRpdGlvbnMucHVzaChgKCAke2F0dHJpYnV0ZU5hbWV9PCR7c3BsaXRJWzBdfSBBTkQgJHthdHRyaWJ1dGVOYW1lfT4ke3NwbGl0SVsxXX0gKWApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnSU5TSURFJzpcbiAgICAgICAgICAgICAgY29uc3Qgc3BsaXRPID0gKHZhbHVlIGFzIHN0cmluZyk/LnNwbGl0KCcsJyk7XG4gICAgICAgICAgICAgIGlmIChzcGxpdE8gJiYgc3BsaXRPLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICBjb25kaXRpb25zLnB1c2goYCggJHthdHRyaWJ1dGVOYW1lfT4ke3NwbGl0T1swXX0gQU5EICR7YXR0cmlidXRlTmFtZX08JHtzcGxpdE9bMV19IClgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBDYW5ub3QgYWRkIGNxbCBmaWx0ZXIgb24gZGF0YXNvdXJjZSAke2RhdGFzb3VyY2VJZH0gYmVjYXVzZSAke2NvbmQuYXR0cmlidXRlfSBhdHRyaWJ1dGUgbm90IGZvdW5kIGluIGNsYXNzZXNgXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBjb25kaXRpb25zLmxlbmd0aCA+IDEgPyAnKCAnICsgY29uZGl0aW9ucy5qb2luKCcgT1IgJykgKyAnICknIDogY29uZGl0aW9uc1swXTtcbiAgfVxufVxuIl19
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3FsLXV0aWxzLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtbWFwL3V0aWxzL2NxbC11dGlscy5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQStCLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWpGLE1BQU0sT0FBTyxRQUFRO0lBQ25CLE1BQU0sQ0FBQyxlQUFlLENBQ3BCLFlBQW9CLEVBQ3BCLE9BQXlDLEVBQ3pDLE9BQWdCLEVBQ2hCLE1BQWU7UUFFZixJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDOUYsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFNUUsT0FBTyxPQUFPLENBQUMsWUFBWSxDQUFDO2FBQ3pCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1osTUFBTSxTQUFTLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqRixNQUFNLEtBQUssR0FBRyxTQUFTLEVBQUUsS0FBSyxDQUFDO1lBQy9CLE1BQU0sYUFBYSxHQUFHLFNBQVMsRUFBRSxhQUFhLENBQUM7WUFFL0MsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUs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QUFVLENBQUMsSUFBSSxDQUFDLEtBQUssYUFBYSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxhQUFhLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzs0QkFDekYsQ0FBQzs0QkFDRCxNQUFNO29CQUNWLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsSUFBSSxDQUNWLHVDQUF1QyxZQUFZLFlBQVksSUFBSSxDQUFDLFNBQVMsaUNBQWlDLENBQy9HLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkYsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2xhc3MsIEZpZWxkLCBGaWx0ZXJDb250ZXh0LCBUZXh0RmllbGRUeXBlcyB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5cbmV4cG9ydCBjbGFzcyBDcWxVdGlscyB7XG4gIHN0YXRpYyBnZXRDUUxQYXJhbXNGb3IoXG4gICAgZGF0YXNvdXJjZUlkOiBzdHJpbmcsXG4gICAgZmlsdGVyczogeyBbcDogc3RyaW5nXTogRmlsdGVyQ29udGV4dFtdIH0sXG4gICAgY2xhc3NlczogQ2xhc3NbXSxcbiAgICBmaWVsZHM6IEZpZWxkW11cbiAgKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCFmaWx0ZXJzIHx8ICFkYXRhc291cmNlSWQgfHwgIWZpbHRlcnNbZGF0YXNvdXJjZUlkXSB8fCBmaWx0ZXJzW2RhdGFzb3VyY2VJZF0ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBhdHRyaWJ1dGVzUmVmZXJlbmNlID0gY2xhc3Nlcy5tYXAoKGNsYXp6KSA9PiBjbGF6ei5hdHRyaWJ1dGVzKS5mbGF0KCk7XG5cbiAgICByZXR1cm4gZmlsdGVyc1tkYXRhc291cmNlSWRdXG4gICAgICAubWFwKChjb25kKSA9PiB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXNSZWZlcmVuY2UuZmluZCgoYXR0cikgPT4gYXR0ci5pZCA9PT0gY29uZC5hdHRyaWJ1dGUpO1xuICAgICAgICBjb25zdCBmaWVsZCA9IGF0dHJpYnV0ZT8uZmllbGQ7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGU/LnRlY2huaWNhbE5hbWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29uZGl0aW9uc0ZvclZhbHVlKGF0dHJpYnV0ZU5hbWUsIGNvbmQsIGZpZWxkLCBkYXRhc291cmNlSWQpO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKGNvbmRzKSA9PiAhIWNvbmRzICYmIGNvbmRzLmxlbmd0aCA+IDApXG4gICAgICAuam9pbignIEFORCAnKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRDb25kaXRpb25zRm9yVmFsdWUoXG4gICAgYXR0cmlidXRlTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIGNvbmQ6IEZpbHRlckNvbnRleHQsXG4gICAgZmllbGQ6IEZpZWxkIHwgdW5kZWZpbmVkLFxuICAgIGRhdGFzb3VyY2VJZDogc3RyaW5nXG4gICkge1xuICAgIGxldCBjb25kaXRpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgY29uc3QgdmFsdWVzID0gKEFycmF5LmlzQXJyYXkoY29uZC52YWx1ZSkgPyBjb25kLnZhbHVlIDogW2NvbmQudmFsdWVdKSBhcyBzdHJpbmdbXSB8IG51bWJlcltdO1xuXG4gICAgaWYgKGF0dHJpYnV0ZU5hbWUpIHtcbiAgICAgIHZhbHVlcy5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUgJiYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgfHwgdmFsdWUubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgICBjb25zdCBxdW90ZVNhZmVWYWx1ZSA9IGAke3ZhbHVlfWAucmVwbGFjZSgvJy9nLCBcIicnXCIpO1xuICAgICAgICAgIHN3aXRjaCAoY29uZC5vcGVyYXRvcikge1xuICAgICAgICAgICAgY2FzZSAnRVFVQUxTJzpcbiAgICAgICAgICAgICAgaWYgKCFmaWVsZCB8fCBUZXh0RmllbGRUeXBlcy5pbmNsdWRlcyhmaWVsZD8udHlwZSkpIHtcbiAgICAgICAgICAgICAgICBjb25kaXRpb25zLnB1c2goYCR7YXR0cmlidXRlTmFtZX09JyR7cXVvdGVTYWZlVmFsdWV9J2ApO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbmRpdGlvbnMucHVzaChgJHthdHRyaWJ1dGVOYW1lfT0ke3ZhbHVlfWApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQ09OVEFJTlMnOlxuICAgICAgICAgICAgICBjb25kaXRpb25zLnB1c2goYCR7YXR0cmlidXRlTmFtZX0gTElLRSAnJSR7cXVvdGVTYWZlVmFsdWV9JSdgKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdTVEFSVF9XSVRIJzpcbiAgICAgICAgICAgICAgY29uZGl0aW9ucy5wdXNoKGAke2F0dHJpYnV0ZU5hbWV9IExJS0UgJyR7cXVvdGVTYWZlVmFsdWV9JSdgKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdFTkRfV0lUSCc6XG4gICAgICAgICAgICAgIGNvbmRpdGlvbnMucHVzaChgJHthdHRyaWJ1dGVOYW1lfSBMSUtFICclJHtxdW90ZVNhZmVWYWx1ZX0nYCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnR1JFQVRFUl9USEFOJzpcbiAgICAgICAgICAgICAgY29uZGl0aW9ucy5wdXNoKGAke2F0dHJpYnV0ZU5hbWV9PiR7dmFsdWV9YCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTE9XRVJfVEhBTic6XG4gICAgICAgICAgICAgIGNvbmRpdGlvbnMucHVzaChgJHthdHRyaWJ1dGVOYW1lfTwke3ZhbHVlfWApO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ09VVFNJREUnOlxuICAgICAgICAgICAgICBjb25zdCBzcGxpdEkgPSAodmFsdWUgYXMgc3RyaW5nKT8uc3BsaXQoJywnKTtcbiAgICAgICAgICAgICAgaWYgKHNwbGl0SSAmJiBzcGxpdEkubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIGNvbmRpdGlvbnMucHVzaChgKCAke2F0dHJpYnV0ZU5hbWV9PCR7c3BsaXRJWzBdfSBBTkQgJHthdHRyaWJ1dGVOYW1lfT4ke3NwbGl0SVsxXX0gKWApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnSU5TSURFJzpcbiAgICAgICAgICAgICAgY29uc3Qgc3BsaXRPID0gKHZhbHVlIGFzIHN0cmluZyk/LnNwbGl0KCcsJyk7XG4gICAgICAgICAgICAgIGlmIChzcGxpdE8gJiYgc3BsaXRPLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICBjb25kaXRpb25zLnB1c2goYCggJHthdHRyaWJ1dGVOYW1lfT4ke3NwbGl0T1swXX0gQU5EICR7YXR0cmlidXRlTmFtZX08JHtzcGxpdE9bMV19IClgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBDYW5ub3QgYWRkIGNxbCBmaWx0ZXIgb24gZGF0YXNvdXJjZSAke2RhdGFzb3VyY2VJZH0gYmVjYXVzZSAke2NvbmQuYXR0cmlidXRlfSBhdHRyaWJ1dGUgbm90IGZvdW5kIGluIGNsYXNzZXNgXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBjb25kaXRpb25zLmxlbmd0aCA+IDEgPyAnKCAnICsgY29uZGl0aW9ucy5qb2luKCcgT1IgJykgKyAnICknIDogY29uZGl0aW9uc1swXTtcbiAgfVxufVxuIl19
@@ -22,9 +22,7 @@ export class WidgetMapUtils {
22
22
  // Based on items that we have to display
23
23
  candidates = Object.keys(resultSet.items)
24
24
  .map((key) => ({ items: resultSet.items[key], oClass: classes.find((cl) => cl.id === key) }))
25
- .map(({ items, oClass }) => (oClass ?? { attributes: [] }).attributes
26
- .map((attr) => ({ attr, field: fields.find((f) => f.id === attr.field) }))
27
- .filter((attr) => attr.field?.type === geometry))
25
+ .map(({ items, oClass }) => (oClass ?? { attributes: [] }).attributes.filter((attr) => attr.field?.type === geometry))
28
26
  .reduce((p, c) => [...p, ...c], []);
29
27
  }
30
28
  else {
@@ -32,11 +30,10 @@ export class WidgetMapUtils {
32
30
  candidates = classesNotFiltered
33
31
  .map((clazz) => clazz.attributes)
34
32
  .flat()
35
- .map((attr) => ({ attr, field: fields.find((field) => field.id === attr.field) }))
36
- .filter(({ attr, field }) => field?.type === geometry);
33
+ .filter((attr) => attr.field.type === geometry);
37
34
  }
38
35
  if (candidates.length > 0) {
39
- specificLayer.attribute = candidates[0].attr.technicalName;
36
+ specificLayer.attribute = candidates[0].technicalName;
40
37
  }
41
38
  }
42
39
  }
@@ -55,14 +52,13 @@ export class WidgetMapUtils {
55
52
  .map((key) => ({ items: resultSet.items[key], oClass: classes.find((cl) => cl.id === key) }))
56
53
  .map(({ items, oClass }) => {
57
54
  return (oClass ?? { attributes: [] }).attributes
58
- .map((attr) => ({ attr, field: fields.find((f) => f.id === attr.field) }))
59
55
  .filter((attr) => attr.field?.type === FieldType.DECIMAL || attr.field?.type === FieldType.INTEGER)
60
56
  .map((attr) => {
61
- const attrValues = ItemUtils.pertinentValue(items, attr.attr);
57
+ const attrValues = ItemUtils.pertinentValue(items, attr);
62
58
  return {
63
59
  min: Math.min(...attrValues),
64
60
  max: Math.max(...attrValues),
65
- technicalName: attr.attr.technicalName
61
+ technicalName: attr.technicalName
66
62
  };
67
63
  });
68
64
  })
@@ -300,4 +296,4 @@ export class WidgetMapUtils {
300
296
  static { this.DEFAULT_MAP_CENTER = [2.2827217347381525, 48.864706031557716]; }
301
297
  static { this.BACKGROUND_ORDER = 9999; }
302
298
  }
303
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LW1hcC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LW1hcC91dGlscy93aWRnZXQtbWFwLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxrQkFBa0IsRUFFbEIsU0FBUyxFQUdULFNBQVMsRUFRVixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQU8sTUFBTSxJQUFJLENBQUM7QUFDbEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVMsTUFBTSxTQUFTLENBQUM7QUFFcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxhQUFhLEVBQWtCLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUUxRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU3QyxNQUFNLE9BQU8sY0FBYzthQUNsQixZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUMvQixNQUFNLENBQUMseUJBQXlCLENBQzlCLEtBQTRCLEVBQzVCLFNBQW9CLEVBQ3BCLGtCQUEyQixFQUMzQixNQUFlO1FBRWYsSUFDRSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUN6RyxLQUFLLENBQUMsSUFBSSxDQUNYO1lBQ0QsQ0FBQyxDQUFDLFNBQVM7WUFDWCxDQUFDLENBQUMsa0JBQWtCO1lBQ3BCLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQzdCLENBQUM7WUFDRCxNQUFN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ekI7d0JBQ0QsVUFBVSxDQUVOLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQU94QixDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUN6QjtxQkFDRixFQUNELE9BQU8sRUFDUCxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQzlCO2lCQUNGO2FBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPO1lBQ0wsVUFBVSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQzlCLE1BQU0sRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLGVBQWdCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUU7WUFDOUYsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDO0lBQ0osQ0FBQzthQUVNLDJCQUFzQixHQUFHLEVBQUUsQ0FBQzthQUM1QixvQ0FBK0IsR0FBRyxLQUFLLENBQUM7YUFDeEMscUJBQWdCLEdBQUcsQ0FBQyxDQUFDO2FBQ3JCLHVCQUFrQixHQUFHLEVBQUUsQ0FBQzthQUN4QixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7YUFDdEIsdUJBQWtCLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO2FBRTlELHFCQUFnQixHQUFHLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFnZ3JlZ2F0aW9uUmVzdWx0LFxuICBBdHRyaWJ1dGUsXG4gIENsYXNzLFxuICBERUZBVUxUX1BST0pFQ1RJT04sXG4gIEZpZWxkLFxuICBGaWVsZFR5cGUsXG4gIEdldENhcGFiaWxpdGllc1Jlc3BvbnNlLFxuICBJdGVtLFxuICBJdGVtVXRpbHMsXG4gIE1hcEdlb1NlcnZlckxheWVyT3B0aW9ucyxcbiAgTWFwV2lkZ2V0QnViYmxlTGF5ZXJPcHRpb25zLFxuICBNYXBXaWRnZXRIZWF0TWFwTGF5ZXJPcHRpb25zLFxuICBNYXBXaWRnZXRMYXllck9wdGlvbnMsXG4gIE1hcFdpZGdldE1hcmtlckxheWVyT3B0aW9ucyxcbiAgUmVsYXRpb24sXG4gIFJlc3VsdFNldFxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgRmVhdHVyZSwgTWFwIH0gZnJvbSAnb2wnO1xuaW1wb3J0IHsgQ2lyY2xlLCBMaW5lU3RyaW5nLCBQb2ludCB9IGZyb20gJ29sL2dlb20nO1xuaW1wb3J0IHsgU3R5bGUgfSBmcm9tICdvbC9zdHlsZSc7XG5pbXBvcnQgeyBXaWRnZXRNYXBMYXllclNlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnQvd2lkZ2V0LW1hcC1sYXllci5zZXJ2aWNlJztcbmltcG9ydCB7IGdldCBhcyBnZXRQcm9qZWN0aW9uLCBQcm9qZWN0aW9uTGlrZSwgdHJhbnNmb3JtIH0gZnJvbSAnb2wvcHJvaic7XG5pbXBvcnQgR2VvbWV0cnkgZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5pbXBvcnQgeyBHZW9KU09OIH0gZnJvbSAnb2wvZm9ybWF0JztcbmltcG9ydCB7IFhNTFV0aWxzIH0gZnJvbSAnLi94bWwtdXRpbHMuY2xhc3MnO1xuXG5leHBvcnQgY2xhc3MgV2lkZ2V0TWFwVXRpbHMge1xuICBzdGF0aWMgZ2VvSlNPTiA9IG5ldyBHZW9KU09OKCk7XG4gIHN0YXRpYyBwb3B1bGF0ZUxvY2F0aW9uQXR0cmlidXRlKFxuICAgIGxheWVyOiBNYXBXaWRnZXRMYXllck9wdGlvbnMsXG4gICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgY2xhc3Nlc05vdEZpbHRlcmVkOiBDbGFzc1tdLFxuICAgIGZpZWxkczogRmllbGRbXVxuICApIHtcbiAgICBpZiAoXG4gICAgICBbJ2hlYXRtYXAnLCAnbWFya2VyJywgJ2J1YmJsZScsICdwb2ludCcsICdsaW5lJywgJ3BvbHlnb24nLCAnbXVsdGktbGluZScsICdtdWx0aS1wb2x5Z29uJywgJ2F1dG8nXS5pbmNsdWRlcyhcbiAgICAgICAgbGF5ZXIudHlwZVxuICAgICAgKSAmJlxuICAgICAgISFyZXN1bHRTZXQgJiZcbiAgICAgICEhY2xhc3Nlc05vdEZpbHRlcmVkICYmXG4gICAgICBjbGFzc2VzTm90RmlsdGVyZWQubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgY29uc3Qgc3BlY2lmaWNMYXllciA9IGxheWVyIGFzXG4gICAgICAgIHwgTWFwV2lkZ2V0SGVhdE1hcExheWVyT3B0aW9uc1xuICAgICAgICB8IE1hcFdpZGdldE1hcmtlckxheWVyT3B0aW9uc1xuICAgICAgICB8IE1hcFdpZGdldEJ1YmJsZUxheWVyT3B0aW9ucztcblxuICAgICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzZXNOb3RGaWx0ZXJlZC5maWx0ZXIoXG4gICAgICAgIChjbCkgPT4gc3BlY2lmaWNMYXllci5jbGFzc2VzPy5pbmNsdWRlcyhjbC5pZCkgfHwgIXNwZWNpZmljTGF5ZXIuY2xhc3NlcyB8fCBzcGVjaWZpY0xheWVyLmNsYXNzZXMubGVuZ3RoID09PSAwXG4gICAgICApO1xuXG4gICAgICBpZiAoIXNwZWNpZmljTGF5ZXIuYXR0cmlidXRlKSB7XG4gICAgICAgIC8vIE5vIGxvY2F0aW9uIGF0dHJpYnV0ZSBhdmFpbGFibGUsIHRoZW4gdHJ5IHRvIGd1ZXNzIG9uZSB0aGF0IHdpbGwgYmUgb2tcblxuICAgICAgICBjb25zdCBnZW9tZXRyeSA9IFdpZGdldE1hcFV0aWxzLmdlb21ldHJ5Rm9yTGF5ZXIobGF5ZXIpO1xuXG4gICAgICAgIGxldCBjYW5kaWRhdGVzID0gW10gYXMge1xuICAgICAgICAgIGF0dHI6IEF0dHJpYnV0ZTtcbiAgICAgICAgICBmaWVsZDogRmllbGQgfCB1bmRlZmluZWQ7XG4gICAgICAgIH1bXTtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHJlc3VsdFNldC5pdGVtcykubGVuZ3RoID4gMCkge1xuICAgICAgICAgIC8vIEJhc2VkIG9uIGl0ZW1zIHRoYXQgd2UgaGF2ZSB0byBkaXNwbGF5XG5cbiAgICAgICAgICBjYW5kaWRhdGVzID0gT2JqZWN0LmtleXMocmVzdWx0U2V0Lml0ZW1zKVxuICAgICAgICAgICAgLm1hcCgoa2V5KSA9PiAoeyBpdGVtczogcmVzdWx0U2V0Lml0ZW1zW2tleV0sIG9DbGFzczogY2xhc3Nlcy5maW5kKChjbCkgPT4gY2wuaWQgPT09IGtleSkgfSkpXG4gICAgICAgICAgICAubWFwKCh7IGl0ZW1zLCBvQ2xhc3MgfSkgPT5cbiAgICAgICAgICAgICAgKG9DbGFzcyA/PyB7IGF0dHJpYnV0ZXM6IFtdIH0pLmF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICAubWFwKChhdHRyKSA9PiAoeyBhdHRyLCBmaWVsZDogZmllbGRzLmZpbmQoKGYpID0+IGYuaWQgPT09IGF0dHIuZmllbGQpIH0pKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGF0dHIpID0+IGF0dHIuZmllbGQ/LnR5cGUgPT09IGdlb21ldHJ5KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gWy4uLnAsIC4uLmNdLCBbXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhbnkgaXRlbXMgdG8gZGlzcGxheSwgc28gYWxsb3cgYWxsIGNvcnJlc3BvbmRpbmcgZ2VvbWV0cnkgZmllbGRzXG4gICAgICAgICAgY2FuZGlkYXRlcyA9IGNsYXNzZXNOb3RGaWx0ZXJlZFxuICAgICAgICAgICAgLm1hcCgoY2xhenopID0+IGNsYXp6LmF0dHJpYnV0ZXMpXG4gICAgICAgICAgICAuZmxhdCgpXG4gICAgICAgICAgICAubWFwKChhdHRyKSA9PiAoeyBhdHRyLCBmaWVsZDogZmllbGRzLmZpbmQoKGZpZWxkKSA9PiBmaWVsZC5pZCA9PT0gYXR0ci5maWVsZCkgfSkpXG4gICAgICAgICAgICAuZmlsdGVyKCh7IGF0dHIsIGZpZWxkIH0pID0+IGZpZWxkPy50eXBlID09PSBnZW9tZXRyeSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2FuZGlkYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgc3BlY2lmaWNMYXllci5hdHRyaWJ1dGUgPSBjYW5kaWRhdGVzWzBdLmF0dHIudGVjaG5pY2FsTmFtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBwb3B1bGF0ZUludGVuc2l0eUF0dHJpYnV0ZShcbiAgICBsYXllcjogTWFwV2lkZ2V0TGF5ZXJPcHRpb25zLFxuICAgIHJlc3VsdFNldDogUmVzdWx0U2V0LFxuICAgIGNsYXNzZXNOb3RGaWx0ZXJlZDogQ2xhc3NbXSxcbiAgICBmaWVsZHM6IEZpZWxkW11cbiAgKSB7XG4gICAgaWYgKFxuICAgICAgWydoZWF0bWFwJywgJ2J1YmJsZSddLmluY2x1ZGVzKGxheWVyLnR5cGUpICYmXG4gICAgICAhIXJlc3VsdFNldCAmJlxuICAgICAgISFjbGFzc2VzTm90RmlsdGVyZWQgJiZcbiAgICAgIGNsYXNzZXNOb3RGaWx0ZXJlZC5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCBzcGVjaWZpY0xheWVyID0gbGF5ZXIgYXMgTWFwV2lkZ2V0SGVhdE1hcExheWVyT3B0aW9ucyB8IE1hcFdpZGdldEJ1YmJsZUxheWVyT3B0aW9ucztcblxuICAgICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzZXNOb3RGaWx0ZXJlZC5maWx0ZXIoXG4gICAgICAgIChjbCkgPT5cbiAgICAgICAgICAoc3BlY2lmaWNMYXllci5jbGFzc2VzPy5pbmNsdWRlcyhjbC5pZCkgfHwgIXNwZWNpZmljTGF5ZXIuY2xhc3NlcyB8fCBzcGVjaWZpY0xheWVyLmNsYXNzZXMubGVuZ3RoID09PSAwKSAmJlxuICAgICAgICAgIGNsLmF0dHJpYnV0ZXMuZmluZCgoYXR0cikgPT4gYXR0ci50ZWNobmljYWxOYW1lID09PSAoc3BlY2lmaWNMYXllcj8uYXR0cmlidXRlID8/IFtdKSlcbiAgICAgICk7XG5cbiAgICAgIGlmICghc3BlY2lmaWNMYXllci5pbnRlbnNpdHlBdHRyaWJ1dGUpIHtcbiAgICAgICAgLy8gTm8gaW50ZW5zaXR5IGF0dHJpYnV0ZSBhdmFpbGFibGUsIHRoZW4gdGFrZSB0aGUgbWF4aW11bSBpbnRlbnNpdHkgbWF0Y2hpbmcgYXR0cmlidXRlXG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZXNEcnkgPSBPYmplY3Qua2V5cyhyZXN1bHRTZXQuaXRlbXMpXG4gICAgICAgICAgLm1hcCgoa2V5KSA9PiAoeyBpdGVtczogcmVzdWx0U2V0Lml0ZW1zW2tleV0sIG9DbGFzczogY2xhc3Nlcy5maW5kKChjbCkgPT4gY2wuaWQgPT09IGtleSkgfSkpXG4gICAgICAgICAgLm1hcCgoeyBpdGVtcywgb0NsYXNzIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiAob0NsYXNzID8/IHsgYXR0cmlidXRlczogW10gfSkuYXR0cmlidXRlc1xuICAgICAgICAgICAgICAubWFwKChhdHRyKSA9PiAoeyBhdHRyLCBmaWVsZDogZmllbGRzLmZpbmQoKGYpID0+IGYuaWQgPT09IGF0dHIuZmllbGQpIH0pKVxuICAgICAgICAgICAgICAuZmlsdGVyKChhdHRyKSA9PiBhdHRyLmZpZWxkPy50eXBlID09PSBGaWVsZFR5cGUuREVDSU1BTCB8fCBhdHRyLmZpZWxkPy50eXBlID09PSBGaWVsZFR5cGUuSU5URUdFUilcbiAgICAgICAgICAgICAgLm1hcCgoYXR0cikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHJWYWx1ZXMgPSBJdGVtVXRpbHMucGVydGluZW50VmFsdWUoaXRlbXMsIGF0dHIuYXR0cik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIG1pbjogTWF0aC5taW4oLi4uYXR0clZhbHVlcyksXG4gICAgICAgICAgICAgICAgICBtYXg6IE1hdGgubWF4KC4uLmF0dHJWYWx1ZXMpLFxuICAgICAgICAgICAgICAgICAgdGVjaG5pY2FsTmFtZTogYXR0ci5hdHRyLnRlY2huaWNhbE5hbWVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IFsuLi5wLCAuLi5jXSwgW10pXG4gICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIubWF4IC0gYS5tYXgpO1xuXG4gICAgICAgIGlmIChjYW5kaWRhdGVzRHJ5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBzcGVjaWZpY0xheWVyLmludGVuc2l0eUF0dHJpYnV0ZSA9IGNhbmRpZGF0ZXNEcnlbMF0udGVjaG5pY2FsTmFtZTtcbiAgICAgICAgICBzcGVjaWZpY0xheWVyLmludGVuc2l0eUFzYyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0RmVhdHVyZUZyb21JdGVtKFxuICAgIHByb2plY3Rpb246IFByb2plY3Rpb25MaWtlLFxuICAgIGl0ZW06IEl0ZW0sXG4gICAgdHlwZTogc3RyaW5nLFxuICAgIGxvY2F0aW9uQXR0cmlidXRlOiBBdHRyaWJ1dGUsXG4gICAgaWNvblN0eWxlPzogU3R5bGUsXG4gICAgc2VsZWN0ZWRJY29uU3R5bGU/OiBTdHlsZVxuICApIHtcbiAgICByZXR1cm4gbmV3IEZlYXR1cmUoe1xuICAgICAgLi4uaXRlbSxcbiAgICAgIHR5cGUsXG4gICAgICBnZW9tZXRyeTogV2lkZ2V0TWFwVXRpbHMucmVhZEdlb21ldHJ5KHByb2plY3Rpb24sIGl0ZW0sICdwb2ludCcsIGxvY2F0aW9uQXR0cmlidXRlKSA/PyB1bmRlZmluZWQsXG4gICAgICBjbGFzc2ljU3R5bGU6IGljb25TdHlsZSA/PyBudWxsLFxuICAgICAgc2VsZWN0ZWRTdHlsZTogc2VsZWN0ZWRJY29uU3R5bGUgPz8gbnVsbFxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGdldENpcmNsZUZlYXR1cmVGcm9tSXRlbShcbiAgICBwcm9qZWN0aW9uOiBQcm9qZWN0aW9uTGlrZSxcbiAgICBpdGVtOiBJdGVtLFxuICAgIGxvY2F0aW9uQXR0cmlidXRlOiBBdHRyaWJ1dGUsXG4gICAgcmFkaXVzOiBudW1iZXIsXG4gICAgaWNvblN0eWxlOiBTdHlsZSxcbiAgICBzZWxlY3RlZEljb25TdHlsZTogU3R5bGVcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBGZWF0dXJlKHtcbiAgICAgIC4uLml0ZW0sXG4gICAgICBnZW9tZXRyeTogbmV3IENpcmNsZShcbiAgICAgICAgKFdpZGdldE1hcFV0aWxzLnJlYWRHZW9tZXRyeShwcm9qZWN0aW9uLCBpdGVtLCAncG9pbnQnLCBsb2NhdGlvbkF0dHJpYnV0ZSkgYXMgUG9pbnQpLmdldENvb3JkaW5hdGVzKCksXG4gICAgICAgIHJhZGl1c1xuICAgICAgKSxcbiAgICAgIGNsYXNzaWNTdHlsZTogaWNvblN0eWxlLFxuICAgICAgc2VsZWN0ZWRTdHlsZTogc2VsZWN0ZWRJY29uU3R5bGUsXG4gICAgICB0eXBlOiAnYnViYmxlJ1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGdldExpbmtGZWF0dXJlKHJlbGF0aW9uOiBSZWxhdGlvbiwgZmVhdHVyZVNvdXJjZTogRmVhdHVyZTxQb2ludD4sIGZlYXR1cmVEZXN0aW5hdGlvbjogRmVhdHVyZTxQb2ludD4pIHtcbiAgICByZXR1cm4gbmV3IEZlYXR1cmUoe1xuICAgICAgLi4ucmVsYXRpb24sXG4gICAgICBnZW9tZXRyeTogbmV3IExpbmVTdHJpbmcoW1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGZlYXR1cmVTb3VyY2UuZ2V0R2VvbWV0cnkoKT8uZ2V0Q29vcmRpbmF0ZXMoKSA/PyBmZWF0dXJlU291cmNlLmdldEdlb21ldHJ5KCk/LmdldENlbnRlcigpID8/IFswLCAwXSxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBmZWF0dXJlRGVzdGluYXRpb24uZ2V0R2VvbWV0cnkoKT8uZ2V0Q29vcmRpbmF0ZXMoKSA/PyBmZWF0dXJlRGVzdGluYXRpb24uZ2V0R2VvbWV0cnkoKT8uZ2V0Q2VudGVyKCkgPz8gWzAsIDBdXG4gICAgICBdKSxcbiAgICAgIHNvdXJjZTogZmVhdHVyZVNvdXJjZSxcbiAgICAgIGRlc3RpbmF0aW9uOiBmZWF0dXJlRGVzdGluYXRpb24sXG4gICAgICB0eXBlOiAnbGluaydcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRNYXBBc1BuZyhtYXA6IE1hcCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIG1hcC5vbmNlKCdyZW5kZXJjb21wbGV0ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgbWFwQ2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgIGNvbnN0IHNpemUgPSBtYXAuZ2V0U2l6ZSgpIHx8IFsxMDAsIDEwMF07XG4gICAgICAgIG1hcENhbnZhcy53aWR0aCA9IHNpemVbMF07XG4gICAgICAgIG1hcENhbnZhcy5oZWlnaHQgPSBzaXplWzFdO1xuICAgICAgICBjb25zdCBtYXBDb250ZXh0ID0gbWFwQ2FudmFzLmdldENvbnRleHQoJzJkJykgfHwgKG51bGwgYXMgdW5rbm93biBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpO1xuICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5vbC1sYXllciBjYW52YXMsIGNhbnZhcy5vbC1sYXllcicpLCAoY2FudmFzKSA9PiB7XG4gICAgICAgICAgaWYgKGNhbnZhcy53aWR0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG9wYWNpdHkgPSBjYW52YXMucGFyZW50Tm9kZS5zdHlsZS5vcGFjaXR5IHx8IGNhbnZhcy5zdHlsZS5vcGFjaXR5O1xuICAgICAgICAgICAgbWFwQ29udGV4dC5nbG9iYWxBbHBoYSA9IG9wYWNpdHkgPT09ICcnID8gMSA6IE51bWJlcihvcGFjaXR5KTtcblxuICAgICAgICAgICAgY29uc3QgYmFja2dyb3VuZENvbG9yID0gY2FudmFzLnBhcmVudE5vZGUuc3R5bGUuYmFja2dyb3VuZENvbG9yO1xuICAgICAgICAgICAgaWYgKGJhY2tncm91bmRDb2xvcikge1xuICAgICAgICAgICAgICBtYXBDb250ZXh0LmZpbGxTdHlsZSA9IGJhY2tncm91bmRDb2xvcjtcbiAgICAgICAgICAgICAgbWFwQ29udGV4dC5maWxsUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgbWF0cml4O1xuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtID0gY2FudmFzLnN0eWxlLnRyYW5zZm9ybTtcbiAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0pIHtcbiAgICAgICAgICAgICAgLy8gR2V0IHRoZSB0cmFuc2Zvcm0gcGFyYW1ldGVycyBmcm9tIHRoZSBzdHlsZSdzIHRyYW5zZm9ybSBtYXRyaXhcbiAgICAgICAgICAgICAgbWF0cml4ID0gdHJhbnNmb3JtXG4gICAgICAgICAgICAgICAgLm1hdGNoKC9ebWF0cml4XFwoKFteKF0qKVxcKSQvKVsxXVxuICAgICAgICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgLm1hcChOdW1iZXIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbWF0cml4ID0gW1xuICAgICAgICAgICAgICAgIHBhcnNlRmxvYXQoY2FudmFzLnN0eWxlLndpZHRoKSAvIGNhbnZhcy53aWR0aCxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgcGFyc2VGbG9hdChjYW52YXMuc3R5bGUuaGVpZ2h0KSAvIGNhbnZhcy5oZWlnaHQsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBBcHBseSB0aGUgdHJhbnNmb3JtIHRvIHRoZSBleHBvcnQgbWFwIGNvbnRleHRcbiAgICAgICAgICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5wcm90b3R5cGUuc2V0VHJhbnNmb3JtLmFwcGx5KG1hcENvbnRleHQsIG1hdHJpeCk7XG4gICAgICAgICAgICBtYXBDb250ZXh0LmRyYXdJbWFnZShjYW52YXMsIDAsIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIG1hcENvbnRleHQuZ2xvYmFsQWxwaGEgPSAxO1xuICAgICAgICByZXNvbHZlKG1hcENhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpKTtcbiAgICAgIH0pO1xuICAgICAgbWFwLnJlbmRlclN5bmMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBleHBvcnRNYXBBc0ltYWdlKG1hcDogTWFwLCBmaWxlbmFtZTogc3RyaW5nKSB7XG4gICAgV2lkZ2V0TWFwVXRpbHMuZ2V0TWFwQXNQbmcobWFwKS50aGVuKChkYXRhKSA9PiB7XG4gICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVuYW1lO1xuICAgICAgbGluay5ocmVmID0gZGF0YTtcbiAgICAgIGxpbmsuY2xpY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBnZW9tZXRyeUZvckxheWVyKGxheWVyOiBNYXBXaWRnZXRMYXllck9wdGlvbnMpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAobGF5ZXIudHlwZSkge1xuICAgICAgY2FzZSAnbWFya2VyJzpcbiAgICAgIGNhc2UgJ2hlYXRtYXAnOlxuICAgICAgY2FzZSAnYnViYmxlJzpcbiAgICAgIGNhc2UgJ3BvaW50JzpcbiAgICAgICAgcmV0dXJuIEZpZWxkVHlwZS5QT0lOVDtcbiAgICAgIGNhc2UgJ2xpbmUnOlxuICAgICAgICByZXR1cm4gRmllbGRUeXBlLkxJTkU7XG4gICAgICBjYXNlICdwb2x5Z29uJzpcbiAgICAgICAgcmV0dXJuIEZpZWxkVHlwZS5QT0xZR09OO1xuICAgICAgY2FzZSAnbXVsdGktbGluZSc6XG4gICAgICAgIHJldHVybiBGaWVsZFR5cGUuTVVMVElMSU5FO1xuICAgICAgY2FzZSAnbXVsdGktcG9seWdvbic6XG4gICAgICAgIHJldHVybiBGaWVsZFR5cGUuTVVMVElQT0xZR09OO1xuICAgICAgY2FzZSAnYXV0byc6XG4gICAgICAgIHJldHVybiBXaWRnZXRNYXBVdGlscy5nZW9tZXRyeUZvckxheWVyKHtcbiAgICAgICAgICB0eXBlOiBXaWRnZXRNYXBMYXllclNlcnZpY2UudHJhbnNsYXRlRmllbGRUeXBlVG9MYXllclR5cGUobGF5ZXIuc3ViVHlwZSlcbiAgICAgICAgfSBhcyBNYXBXaWRnZXRMYXllck9wdGlvbnMpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIEZpZWxkVHlwZS5QT0lOVDtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgYXNzaWduTGF5ZXJzT3JkZXIoX2xheWVyczogTWFwV2lkZ2V0TGF5ZXJPcHRpb25zW10pIHtcbiAgICBjb25zdCBsYXllcnMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KF9sYXllcnMpKSBhcyBNYXBXaWRnZXRMYXllck9wdGlvbnNbXTtcblxuICAgIGxheWVycy5zb3J0KChsMSwgbDIpID0+IChsMi5iYWNrZ3JvdW5kID8gMCA6IDEpIC0gKGwxLmJhY2tncm91bmQgPyAwIDogMSkpO1xuXG4gICAgLy8gQXNzaWduIHN1cmUgdGhpbmdzXG4gICAgbGF5ZXJzLmZvckVhY2goKGxheWVyLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKGxheWVyLmJhY2tncm91bmQpIHtcbiAgICAgICAgbGF5ZXIub3JkZXIgPSBXaWRnZXRNYXBVdGlscy5CQUNLR1JPVU5EX09SREVSO1xuICAgICAgfVxuICAgICAgaWYgKGluZGV4ID09PSAwICYmICFsYXllci5vcmRlcikge1xuICAgICAgICBsYXllci5vcmRlciA9IDA7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsYXllcnMuZm9yRWFjaCgobGF5ZXIsIGluZGV4KSA9PiB7XG4gICAgICBpZiAobGF5ZXIub3JkZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsZXQgW2Rpc3RhbmNlVG9GaXJzdFByZXZpb3VzT3JkZXIsIGRpc3RhbmNlVG9GaXJzdE5leHRPcmRlcl0gPSBbXG4gICAgICAgICAgbGF5ZXJzXG4gICAgICAgICAgICAuc2xpY2UoMCwgaW5kZXgpXG4gICAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgICAuZmluZEluZGV4KChlbGVtZW50KSA9PiBlbGVtZW50Lm9yZGVyICE9PSB1bmRlZmluZWQpICsgMSxcbiAgICAgICAgICBsYXllcnMuc2xpY2UoaW5kZXggKyAxKS5maW5kSW5kZXgoKGVsZW1lbnQpID0+IGVsZW1lbnQub3JkZXIgIT09IHVuZGVmaW5lZClcbiAgICAgICAgXTtcblxuICAgICAgICBsZXQgW3ByZXZpb3VzT3JkZXJJbmRleCwgbmV4dE9yZGVySW5kZXhdID0gW1xuICAgICAgICAgIGRpc3RhbmNlVG9GaXJzdFByZXZpb3VzT3JkZXIgPiAtMSA/IGluZGV4IC0gZGlzdGFuY2VUb0ZpcnN0UHJldmlvdXNPcmRlciA6IDAsXG4gICAgICAgICAgZGlzdGFuY2VUb0ZpcnN0TmV4dE9yZGVyICsgaW5kZXggKyAxXG4gICAgICAgIF07XG4gICAgICAgIGxldCBbcHJldmlvdXNPcmRlciwgbmV4dE9yZGVyXSA9IFtcbiAgICAgICAgICBkaXN0YW5jZVRvRmlyc3RQcmV2aW91c09yZGVyID4gLTEgPyBsYXllcnNbcHJldmlvdXNPcmRlckluZGV4XS5vcmRlciEgOiAwLFxuICAgICAgICAgIGRpc3RhbmNlVG9GaXJzdE5leHRPcmRlciA+IC0xID8gbGF5ZXJzW25leHRPcmRlckluZGV4XS5vcmRlciEgOiAtMVxuICAgICAgICBdO1xuXG4gICAgICAgIGlmIChuZXh0T3JkZXIgPiAwICYmIG5leHRPcmRlciA8IHByZXZpb3VzT3JkZXIpIHtcbiAgICAgICAgICBjb25zdCBuZXdPcmRlciA9IHByZXZpb3VzT3JkZXIgKyAobmV4dE9yZGVySW5kZXggLSBwcmV2aW91c09yZGVySW5kZXgpO1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGB0aGUgb3JkZXIgcHJvcGVydHkgb2YgbGF5ZXIgbm8gJHtpbmRleCArIDJ9IHdhcyBwcmVzZXQgYnV0IGRvZXNuJ3QgZm9sbG93IHRoZSBvcmRlciBvZiB0aGUgb3RoZXIgbGF5ZXJzYFxuICAgICAgICAgICk7XG4gICAgICAgICAgbmV4dE9yZGVyID0gbmV3T3JkZXI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dE9yZGVyID4gMCkge1xuICAgICAgICAgIGxldCByZWxhdGl2ZUluZGV4ID0gaW5kZXggLSBwcmV2aW91c09yZGVySW5kZXg7XG4gICAgICAgICAgbGF5ZXIub3JkZXIgPVxuICAgICAgICAgICAgcHJldmlvdXNPcmRlciArICgobmV4dE9yZGVyIC0gcHJldmlvdXNPcmRlcikgLyAobmV4dE9yZGVySW5kZXggLSBwcmV2aW91c09yZGVySW5kZXgpKSAqIHJlbGF0aXZlSW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGF5ZXIub3JkZXIgPSBwcmV2aW91c09yZGVyICsgZGlzdGFuY2VUb0ZpcnN0UHJldmlvdXNPcmRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGxheWVycy5zb3J0KChsMSwgbDIpID0+IChsMS5vcmRlciA/PyAxKSAtIChsMi5vcmRlciEgPz8gMSkpO1xuICB9XG5cbiAgc3RhdGljIHJlYWRHZW9tZXRyeTxUIGV4dGVuZHMgJ3BvaW50JyB8ICdsaW5lJyB8ICdtdWx0aS1saW5lJyB8ICdwb2x5Z29uJyB8ICdtdWx0aS1wb2x5Z29uJz4oXG4gICAgcHJvamVjdGlvbjogUHJvamVjdGlvbkxpa2UsXG4gICAgaXRlbTogSXRlbSxcbiAgICB0eXBlOiBULFxuICAgIGF0dHJpYnV0ZTogQXR0cmlidXRlIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIGlmICghYXR0cmlidXRlKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgdmFsdWUgPSBpdGVtLmF0dHJpYnV0ZXNbYXR0cmlidXRlLnRlY2huaWNhbE5hbWVdO1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIGNvbnNvbGUud2FybihgR2VvbWV0cnkgYXR0cmlidXRlIGV4Y2x1ZGVkIGZvciBpdGVtICR7aXRlbS5pZH1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHZhbHVlLnR5cGUgPT09ICdNVUxUSScpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUudmFsdWVzWzBdO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS52aXNpYmxlID09PSBmYWxzZSkge1xuICAgICAgY29uc29sZS53YXJuKGBHZW9tZXRyeSBub3QgdmlzaWJsZSBmb3IgaXRlbSAke2l0ZW0uaWR9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGdlb21ldHJ5O1xuICAgIHRyeSB7XG4gICAgICBnZW9tZXRyeSA9IFdpZGdldE1hcFV0aWxzLmdlb0pTT04ucmVhZEdlb21ldHJ5KHZhbHVlLnZhbHVlIGFzIGFueSwge1xuICAgICAgICBmZWF0dXJlUHJvamVjdGlvbjogcHJvamVjdGlvblxuICAgICAgfSkgYXMgR2VvbWV0cnk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKCdlcnJvciByZWFkaW5nIEdlb21ldHJ5JywgdmFsdWUudmFsdWUsIGUpO1xuICAgIH1cblxuICAgIHJldHVybiBnZW9tZXRyeTtcbiAgfVxuXG4gIHN0YXRpYyBwcm9qZWN0RXh0ZW50QWdncmVnYXRpb25SZXNwb25zZShcbiAgICBmaWVsZDogRmllbGQsXG4gICAgZXh0ZW50UmVzcG9uc2U6IEFnZ3JlZ2F0aW9uUmVzdWx0LFxuICAgIGxheWVyOiBNYXBHZW9TZXJ2ZXJMYXllck9wdGlvbnMsXG4gICAgd21zQ2FwYWJpbGl0aWVzOiB7IFtwOiBzdHJpbmddOiBHZXRDYXBhYmlsaXRpZXNSZXNwb25zZSB8IG51bGwgfSB8IHVuZGVmaW5lZCxcbiAgICBtYXA6IE1hcFxuICApIHtcbiAgICBjb25zdCBwcm9qQm94ID0gZ2V0UHJvamVjdGlvbihmaWVsZCEuY3JzID8/IERFRkFVTFRfUFJPSkVDVElPTik7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBleHRlbnRSZXNwb25zZS52YWx1ZXMgYXMge1xuICAgICAgdmFsdWU6IHtcbiAgICAgICAgdG9wX2xlZnQ6IHtcbiAgICAgICAgICBsb246IHN0cmluZztcbiAgICAgICAgICBsYXQ6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgICAgYm90dG9tX3JpZ2h0OiB7XG4gICAgICAgICAgbG9uOiBzdHJpbmc7XG4gICAgICAgICAgbGF0OiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH1bXTtcbiAgICBpZiAoXG4gICAgICBwcm9qQm94ICYmXG4gICAgICByZXNwb25zZS5sZW5ndGggPiAwICYmXG4gICAgICByZXNwb25zZVswXS52YWx1ZSAmJlxuICAgICAgcmVzcG9uc2VbMF0udmFsdWUudG9wX2xlZnQgJiZcbiAgICAgIHJlc3BvbnNlWzBdLnZhbHVlLnRvcF9sZWZ0LmxhdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICByZXNwb25zZVswXS52YWx1ZS50b3BfbGVmdC5sb24gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgcmVzcG9uc2VbMF0udmFsdWUuYm90dG9tX3JpZ2h0ICYmXG4gICAgICByZXNwb25zZVswXS52YWx1ZS5ib3R0b21fcmlnaHQubGF0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHJlc3BvbnNlWzBdLnZhbHVlLmJvdHRvbV9yaWdodC5sb24gIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YXNvdXJjZTogbGF5ZXIuZGF0YXNvdXJjZUlkLFxuICAgICAgICBlcnJvcjogZmFsc2UsXG4gICAgICAgIGV4dGVudDogW1xuICAgICAgICAgIHRyYW5zZm9ybShcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgcGFyc2VGbG9hdChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBleHRlbnRSZXNwb25zZS52YWx1ZXNbMF0gYXMge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgIHRvcF9sZWZ0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb246IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICkudmFsdWUudG9wX2xlZnQubG9uXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHBhcnNlRmxvYXQoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgZXh0ZW50UmVzcG9uc2UudmFsdWVzWzBdIGFzIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICB0b3BfbGVmdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF0OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApLnZhbHVlLnRvcF9sZWZ0LmxhdFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcHJvakJveCxcbiAgICAgICAgICAgIG1hcC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0cmFuc2Zvcm0oXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIHBhcnNlRmxvYXQoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgZXh0ZW50UmVzcG9uc2UudmFsdWVzWzBdIGFzIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICBib3R0b21fcmlnaHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvbjogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKS52YWx1ZS5ib3R0b21fcmlnaHQubG9uXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHBhcnNlRmxvYXQoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgZXh0ZW50UmVzcG9uc2UudmFsdWVzWzBdIGFzIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICBib3R0b21fcmlnaHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhdDogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKS52YWx1ZS5ib3R0b21fcmlnaHQubGF0XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBwcm9qQm94LFxuICAgICAgICAgICAgbWFwLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKClcbiAgICAgICAgICApXG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGFzb3VyY2U6IGxheWVyLmRhdGFzb3VyY2VJZCxcbiAgICAgIGV4dGVudDogWE1MVXRpbHMuZ2V0TGF5ZXJFeHRlbnQobGF5ZXIucGFyYW1MYXllciwgbWFwLCB3bXNDYXBhYmlsaXRpZXMhW2xheWVyLnVybF0/LmRvYykgPz8gW10sXG4gICAgICBlcnJvcjogZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIERFRkFVTFRfSEVBVE1BUF9SQURJVVMgPSAyNTtcbiAgc3RhdGljIERFRkFVTFRfUkFESVVTX0lOVEVOU0lUWV9GQUNUT1IgPSAxMDAwMDtcbiAgc3RhdGljIERFRkFVTFRfWk9PTV9NSU4gPSAzO1xuICBzdGF0aWMgREVGQVVMVF9aT09NX1NUQVJUID0gMTA7XG4gIHN0YXRpYyBERUZBVUxUX1pPT01fTUFYID0gMTg7XG4gIHN0YXRpYyBERUZBVUxUX01BUF9DRU5URVIgPSBbMi4yODI3MjE3MzQ3MzgxNTI1LCA0OC44NjQ3MDYwMzE1NTc3MTZdO1xuXG4gIHN0YXRpYyBCQUNLR1JPVU5EX09SREVSID0gOTk5OTtcbn1cbiJdfQ==
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LW1hcC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LW1hcC91dGlscy93aWRnZXQtbWFwLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxrQkFBa0IsRUFFbEIsU0FBUyxFQUdULFNBQVMsRUFRVixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQU8sTUFBTSxJQUFJLENBQUM7QUFDbEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVMsTUFBTSxTQUFTLENBQUM7QUFFcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxhQUFhLEVBQWtCLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUUxRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU3QyxNQUFNLE9BQU8sY0FBYzthQUNsQixZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUMvQixNQUFNLENBQUMseUJBQXlCLENBQzlCLEtBQTRCLEVBQzVCLFNBQW9CLEVBQ3BCLGtCQUEyQixFQUMzQixNQUFlO1FBRWYsSUFDRSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUN6RyxLQUFLLENBQUMsSUFBSSxDQUNYO1lBQ0QsQ0FBQyxDQUFDLFNBQVM7WUFDWCxDQUFDLENBQUMsa0JBQWtCO1lBQ3BCLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQzdCLENBQUM7WUFDRCxNQUFN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QixDQUFDLENBQUM7YUFFOUQscUJBQWdCLEdBQUcsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWdncmVnYXRpb25SZXN1bHQsXG4gIEF0dHJpYnV0ZSxcbiAgQ2xhc3MsXG4gIERFRkFVTFRfUFJPSkVDVElPTixcbiAgRmllbGQsXG4gIEZpZWxkVHlwZSxcbiAgR2V0Q2FwYWJpbGl0aWVzUmVzcG9uc2UsXG4gIEl0ZW0sXG4gIEl0ZW1VdGlscyxcbiAgTWFwR2VvU2VydmVyTGF5ZXJPcHRpb25zLFxuICBNYXBXaWRnZXRCdWJibGVMYXllck9wdGlvbnMsXG4gIE1hcFdpZGdldEhlYXRNYXBMYXllck9wdGlvbnMsXG4gIE1hcFdpZGdldExheWVyT3B0aW9ucyxcbiAgTWFwV2lkZ2V0TWFya2VyTGF5ZXJPcHRpb25zLFxuICBSZWxhdGlvbixcbiAgUmVzdWx0U2V0XG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBGZWF0dXJlLCBNYXAgfSBmcm9tICdvbCc7XG5pbXBvcnQgeyBDaXJjbGUsIExpbmVTdHJpbmcsIFBvaW50IH0gZnJvbSAnb2wvZ2VvbSc7XG5pbXBvcnQgeyBTdHlsZSB9IGZyb20gJ29sL3N0eWxlJztcbmltcG9ydCB7IFdpZGdldE1hcExheWVyU2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudC93aWRnZXQtbWFwLWxheWVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0IGFzIGdldFByb2plY3Rpb24sIFByb2plY3Rpb25MaWtlLCB0cmFuc2Zvcm0gfSBmcm9tICdvbC9wcm9qJztcbmltcG9ydCBHZW9tZXRyeSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcbmltcG9ydCB7IEdlb0pTT04gfSBmcm9tICdvbC9mb3JtYXQnO1xuaW1wb3J0IHsgWE1MVXRpbHMgfSBmcm9tICcuL3htbC11dGlscy5jbGFzcyc7XG5cbmV4cG9ydCBjbGFzcyBXaWRnZXRNYXBVdGlscyB7XG4gIHN0YXRpYyBnZW9KU09OID0gbmV3IEdlb0pTT04oKTtcbiAgc3RhdGljIHBvcHVsYXRlTG9jYXRpb25BdHRyaWJ1dGUoXG4gICAgbGF5ZXI6IE1hcFdpZGdldExheWVyT3B0aW9ucyxcbiAgICByZXN1bHRTZXQ6IFJlc3VsdFNldCxcbiAgICBjbGFzc2VzTm90RmlsdGVyZWQ6IENsYXNzW10sXG4gICAgZmllbGRzOiBGaWVsZFtdXG4gICkge1xuICAgIGlmIChcbiAgICAgIFsnaGVhdG1hcCcsICdtYXJrZXInLCAnYnViYmxlJywgJ3BvaW50JywgJ2xpbmUnLCAncG9seWdvbicsICdtdWx0aS1saW5lJywgJ211bHRpLXBvbHlnb24nLCAnYXV0byddLmluY2x1ZGVzKFxuICAgICAgICBsYXllci50eXBlXG4gICAgICApICYmXG4gICAgICAhIXJlc3VsdFNldCAmJlxuICAgICAgISFjbGFzc2VzTm90RmlsdGVyZWQgJiZcbiAgICAgIGNsYXNzZXNOb3RGaWx0ZXJlZC5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCBzcGVjaWZpY0xheWVyID0gbGF5ZXIgYXNcbiAgICAgICAgfCBNYXBXaWRnZXRIZWF0TWFwTGF5ZXJPcHRpb25zXG4gICAgICAgIHwgTWFwV2lkZ2V0TWFya2VyTGF5ZXJPcHRpb25zXG4gICAgICAgIHwgTWFwV2lkZ2V0QnViYmxlTGF5ZXJPcHRpb25zO1xuXG4gICAgICBjb25zdCBjbGFzc2VzID0gY2xhc3Nlc05vdEZpbHRlcmVkLmZpbHRlcihcbiAgICAgICAgKGNsKSA9PiBzcGVjaWZpY0xheWVyLmNsYXNzZXM/LmluY2x1ZGVzKGNsLmlkKSB8fCAhc3BlY2lmaWNMYXllci5jbGFzc2VzIHx8IHNwZWNpZmljTGF5ZXIuY2xhc3Nlcy5sZW5ndGggPT09IDBcbiAgICAgICk7XG5cbiAgICAgIGlmICghc3BlY2lmaWNMYXllci5hdHRyaWJ1dGUpIHtcbiAgICAgICAgLy8gTm8gbG9jYXRpb24gYXR0cmlidXRlIGF2YWlsYWJsZSwgdGhlbiB0cnkgdG8gZ3Vlc3Mgb25lIHRoYXQgd2lsbCBiZSBva1xuXG4gICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gV2lkZ2V0TWFwVXRpbHMuZ2VvbWV0cnlGb3JMYXllcihsYXllcik7XG5cbiAgICAgICAgbGV0IGNhbmRpZGF0ZXM6IEF0dHJpYnV0ZVtdID0gW107XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhyZXN1bHRTZXQuaXRlbXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAvLyBCYXNlZCBvbiBpdGVtcyB0aGF0IHdlIGhhdmUgdG8gZGlzcGxheVxuXG4gICAgICAgICAgY2FuZGlkYXRlcyA9IE9iamVjdC5rZXlzKHJlc3VsdFNldC5pdGVtcylcbiAgICAgICAgICAgIC5tYXAoKGtleSkgPT4gKHsgaXRlbXM6IHJlc3VsdFNldC5pdGVtc1trZXldLCBvQ2xhc3M6IGNsYXNzZXMuZmluZCgoY2wpID0+IGNsLmlkID09PSBrZXkpIH0pKVxuICAgICAgICAgICAgLm1hcCgoeyBpdGVtcywgb0NsYXNzIH0pID0+XG4gICAgICAgICAgICAgIChvQ2xhc3MgPz8geyBhdHRyaWJ1dGVzOiBbXSB9KS5hdHRyaWJ1dGVzLmZpbHRlcigoYXR0cikgPT4gYXR0ci5maWVsZD8udHlwZSA9PT0gZ2VvbWV0cnkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBbLi4ucCwgLi4uY10sIFtdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBXZSBkb24ndCBoYXZlIGFueSBpdGVtcyB0byBkaXNwbGF5LCBzbyBhbGxvdyBhbGwgY29ycmVzcG9uZGluZyBnZW9tZXRyeSBmaWVsZHNcbiAgICAgICAgICBjYW5kaWRhdGVzID0gY2xhc3Nlc05vdEZpbHRlcmVkXG4gICAgICAgICAgICAubWFwKChjbGF6eikgPT4gY2xhenouYXR0cmlidXRlcylcbiAgICAgICAgICAgIC5mbGF0KClcbiAgICAgICAgICAgIC5maWx0ZXIoKGF0dHIpID0+IGF0dHIuZmllbGQudHlwZSA9PT0gZ2VvbWV0cnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNhbmRpZGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHNwZWNpZmljTGF5ZXIuYXR0cmlidXRlID0gY2FuZGlkYXRlc1swXS50ZWNobmljYWxOYW1lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIHBvcHVsYXRlSW50ZW5zaXR5QXR0cmlidXRlKFxuICAgIGxheWVyOiBNYXBXaWRnZXRMYXllck9wdGlvbnMsXG4gICAgcmVzdWx0U2V0OiBSZXN1bHRTZXQsXG4gICAgY2xhc3Nlc05vdEZpbHRlcmVkOiBDbGFzc1tdLFxuICAgIGZpZWxkczogRmllbGRbXVxuICApIHtcbiAgICBpZiAoXG4gICAgICBbJ2hlYXRtYXAnLCAnYnViYmxlJ10uaW5jbHVkZXMobGF5ZXIudHlwZSkgJiZcbiAgICAgICEhcmVzdWx0U2V0ICYmXG4gICAgICAhIWNsYXNzZXNOb3RGaWx0ZXJlZCAmJlxuICAgICAgY2xhc3Nlc05vdEZpbHRlcmVkLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIGNvbnN0IHNwZWNpZmljTGF5ZXIgPSBsYXllciBhcyBNYXBXaWRnZXRIZWF0TWFwTGF5ZXJPcHRpb25zIHwgTWFwV2lkZ2V0QnViYmxlTGF5ZXJPcHRpb25zO1xuXG4gICAgICBjb25zdCBjbGFzc2VzID0gY2xhc3Nlc05vdEZpbHRlcmVkLmZpbHRlcihcbiAgICAgICAgKGNsKSA9PlxuICAgICAgICAgIChzcGVjaWZpY0xheWVyLmNsYXNzZXM/LmluY2x1ZGVzKGNsLmlkKSB8fCAhc3BlY2lmaWNMYXllci5jbGFzc2VzIHx8IHNwZWNpZmljTGF5ZXIuY2xhc3Nlcy5sZW5ndGggPT09IDApICYmXG4gICAgICAgICAgY2wuYXR0cmlidXRlcy5maW5kKChhdHRyKSA9PiBhdHRyLnRlY2huaWNhbE5hbWUgPT09IChzcGVjaWZpY0xheWVyPy5hdHRyaWJ1dGUgPz8gW10pKVxuICAgICAgKTtcblxuICAgICAgaWYgKCFzcGVjaWZpY0xheWVyLmludGVuc2l0eUF0dHJpYnV0ZSkge1xuICAgICAgICAvLyBObyBpbnRlbnNpdHkgYXR0cmlidXRlIGF2YWlsYWJsZSwgdGhlbiB0YWtlIHRoZSBtYXhpbXVtIGludGVuc2l0eSBtYXRjaGluZyBhdHRyaWJ1dGVcbiAgICAgICAgY29uc3QgY2FuZGlkYXRlc0RyeSA9IE9iamVjdC5rZXlzKHJlc3VsdFNldC5pdGVtcylcbiAgICAgICAgICAubWFwKChrZXkpID0+ICh7IGl0ZW1zOiByZXN1bHRTZXQuaXRlbXNba2V5XSwgb0NsYXNzOiBjbGFzc2VzLmZpbmQoKGNsKSA9PiBjbC5pZCA9PT0ga2V5KSB9KSlcbiAgICAgICAgICAubWFwKCh7IGl0ZW1zLCBvQ2xhc3MgfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIChvQ2xhc3MgPz8geyBhdHRyaWJ1dGVzOiBbXSB9KS5hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGF0dHIpID0+IGF0dHIuZmllbGQ/LnR5cGUgPT09IEZpZWxkVHlwZS5ERUNJTUFMIHx8IGF0dHIuZmllbGQ/LnR5cGUgPT09IEZpZWxkVHlwZS5JTlRFR0VSKVxuICAgICAgICAgICAgICAubWFwKChhdHRyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0clZhbHVlcyA9IEl0ZW1VdGlscy5wZXJ0aW5lbnRWYWx1ZShpdGVtcywgYXR0cik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIG1pbjogTWF0aC5taW4oLi4uYXR0clZhbHVlcyksXG4gICAgICAgICAgICAgICAgICBtYXg6IE1hdGgubWF4KC4uLmF0dHJWYWx1ZXMpLFxuICAgICAgICAgICAgICAgICAgdGVjaG5pY2FsTmFtZTogYXR0ci50ZWNobmljYWxOYW1lXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBbLi4ucCwgLi4uY10sIFtdKVxuICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLm1heCAtIGEubWF4KTtcblxuICAgICAgICBpZiAoY2FuZGlkYXRlc0RyeS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgc3BlY2lmaWNMYXllci5pbnRlbnNpdHlBdHRyaWJ1dGUgPSBjYW5kaWRhdGVzRHJ5WzBdLnRlY2huaWNhbE5hbWU7XG4gICAgICAgICAgc3BlY2lmaWNMYXllci5pbnRlbnNpdHlBc2MgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEZlYXR1cmVGcm9tSXRlbShcbiAgICBwcm9qZWN0aW9uOiBQcm9qZWN0aW9uTGlrZSxcbiAgICBpdGVtOiBJdGVtLFxuICAgIHR5cGU6IHN0cmluZyxcbiAgICBsb2NhdGlvbkF0dHJpYnV0ZTogQXR0cmlidXRlLFxuICAgIGljb25TdHlsZT86IFN0eWxlLFxuICAgIHNlbGVjdGVkSWNvblN0eWxlPzogU3R5bGVcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBGZWF0dXJlKHtcbiAgICAgIC4uLml0ZW0sXG4gICAgICB0eXBlLFxuICAgICAgZ2VvbWV0cnk6IFdpZGdldE1hcFV0aWxzLnJlYWRHZW9tZXRyeShwcm9qZWN0aW9uLCBpdGVtLCAncG9pbnQnLCBsb2NhdGlvbkF0dHJpYnV0ZSkgPz8gdW5kZWZpbmVkLFxuICAgICAgY2xhc3NpY1N0eWxlOiBpY29uU3R5bGUgPz8gbnVsbCxcbiAgICAgIHNlbGVjdGVkU3R5bGU6IHNlbGVjdGVkSWNvblN0eWxlID8/IG51bGxcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRDaXJjbGVGZWF0dXJlRnJvbUl0ZW0oXG4gICAgcHJvamVjdGlvbjogUHJvamVjdGlvbkxpa2UsXG4gICAgaXRlbTogSXRlbSxcbiAgICBsb2NhdGlvbkF0dHJpYnV0ZTogQXR0cmlidXRlLFxuICAgIHJhZGl1czogbnVtYmVyLFxuICAgIGljb25TdHlsZTogU3R5bGUsXG4gICAgc2VsZWN0ZWRJY29uU3R5bGU6IFN0eWxlXG4gICkge1xuICAgIHJldHVybiBuZXcgRmVhdHVyZSh7XG4gICAgICAuLi5pdGVtLFxuICAgICAgZ2VvbWV0cnk6IG5ldyBDaXJjbGUoXG4gICAgICAgIChXaWRnZXRNYXBVdGlscy5yZWFkR2VvbWV0cnkocHJvamVjdGlvbiwgaXRlbSwgJ3BvaW50JywgbG9jYXRpb25BdHRyaWJ1dGUpIGFzIFBvaW50KS5nZXRDb29yZGluYXRlcygpLFxuICAgICAgICByYWRpdXNcbiAgICAgICksXG4gICAgICBjbGFzc2ljU3R5bGU6IGljb25TdHlsZSxcbiAgICAgIHNlbGVjdGVkU3R5bGU6IHNlbGVjdGVkSWNvblN0eWxlLFxuICAgICAgdHlwZTogJ2J1YmJsZSdcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRMaW5rRmVhdHVyZShyZWxhdGlvbjogUmVsYXRpb24sIGZlYXR1cmVTb3VyY2U6IEZlYXR1cmU8UG9pbnQ+LCBmZWF0dXJlRGVzdGluYXRpb246IEZlYXR1cmU8UG9pbnQ+KSB7XG4gICAgcmV0dXJuIG5ldyBGZWF0dXJlKHtcbiAgICAgIC4uLnJlbGF0aW9uLFxuICAgICAgZ2VvbWV0cnk6IG5ldyBMaW5lU3RyaW5nKFtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBmZWF0dXJlU291cmNlLmdldEdlb21ldHJ5KCk/LmdldENvb3JkaW5hdGVzKCkgPz8gZmVhdHVyZVNvdXJjZS5nZXRHZW9tZXRyeSgpPy5nZXRDZW50ZXIoKSA/PyBbMCwgMF0sXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZmVhdHVyZURlc3RpbmF0aW9uLmdldEdlb21ldHJ5KCk/LmdldENvb3JkaW5hdGVzKCkgPz8gZmVhdHVyZURlc3RpbmF0aW9uLmdldEdlb21ldHJ5KCk/LmdldENlbnRlcigpID8/IFswLCAwXVxuICAgICAgXSksXG4gICAgICBzb3VyY2U6IGZlYXR1cmVTb3VyY2UsXG4gICAgICBkZXN0aW5hdGlvbjogZmVhdHVyZURlc3RpbmF0aW9uLFxuICAgICAgdHlwZTogJ2xpbmsnXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0TWFwQXNQbmcobWFwOiBNYXApIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBtYXAub25jZSgncmVuZGVyY29tcGxldGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IG1hcENhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICBjb25zdCBzaXplID0gbWFwLmdldFNpemUoKSB8fCBbMTAwLCAxMDBdO1xuICAgICAgICBtYXBDYW52YXMud2lkdGggPSBzaXplWzBdO1xuICAgICAgICBtYXBDYW52YXMuaGVpZ2h0ID0gc2l6ZVsxXTtcbiAgICAgICAgY29uc3QgbWFwQ29udGV4dCA9IG1hcENhbnZhcy5nZXRDb250ZXh0KCcyZCcpIHx8IChudWxsIGFzIHVua25vd24gYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKTtcbiAgICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcub2wtbGF5ZXIgY2FudmFzLCBjYW52YXMub2wtbGF5ZXInKSwgKGNhbnZhcykgPT4ge1xuICAgICAgICAgIGlmIChjYW52YXMud2lkdGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBvcGFjaXR5ID0gY2FudmFzLnBhcmVudE5vZGUuc3R5bGUub3BhY2l0eSB8fCBjYW52YXMuc3R5bGUub3BhY2l0eTtcbiAgICAgICAgICAgIG1hcENvbnRleHQuZ2xvYmFsQWxwaGEgPSBvcGFjaXR5ID09PSAnJyA/IDEgOiBOdW1iZXIob3BhY2l0eSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJhY2tncm91bmRDb2xvciA9IGNhbnZhcy5wYXJlbnROb2RlLnN0eWxlLmJhY2tncm91bmRDb2xvcjtcbiAgICAgICAgICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICAgICAgICAgICAgbWFwQ29udGV4dC5maWxsU3R5bGUgPSBiYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgICAgICAgIG1hcENvbnRleHQuZmlsbFJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IG1hdHJpeDtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybSA9IGNhbnZhcy5zdHlsZS50cmFuc2Zvcm07XG4gICAgICAgICAgICBpZiAodHJhbnNmb3JtKSB7XG4gICAgICAgICAgICAgIC8vIEdldCB0aGUgdHJhbnNmb3JtIHBhcmFtZXRlcnMgZnJvbSB0aGUgc3R5bGUncyB0cmFuc2Zvcm0gbWF0cml4XG4gICAgICAgICAgICAgIG1hdHJpeCA9IHRyYW5zZm9ybVxuICAgICAgICAgICAgICAgIC5tYXRjaCgvXm1hdHJpeFxcKChbXihdKilcXCkkLylbMV1cbiAgICAgICAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgIC5tYXAoTnVtYmVyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG1hdHJpeCA9IFtcbiAgICAgICAgICAgICAgICBwYXJzZUZsb2F0KGNhbnZhcy5zdHlsZS53aWR0aCkgLyBjYW52YXMud2lkdGgsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIHBhcnNlRmxvYXQoY2FudmFzLnN0eWxlLmhlaWdodCkgLyBjYW52YXMuaGVpZ2h0LFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQXBwbHkgdGhlIHRyYW5zZm9ybSB0byB0aGUgZXhwb3J0IG1hcCBjb250ZXh0XG4gICAgICAgICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQucHJvdG90eXBlLnNldFRyYW5zZm9ybS5hcHBseShtYXBDb250ZXh0LCBtYXRyaXgpO1xuICAgICAgICAgICAgbWFwQ29udGV4dC5kcmF3SW1hZ2UoY2FudmFzLCAwLCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBtYXBDb250ZXh0Lmdsb2JhbEFscGhhID0gMTtcbiAgICAgICAgcmVzb2x2ZShtYXBDYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKSk7XG4gICAgICB9KTtcbiAgICAgIG1hcC5yZW5kZXJTeW5jKCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZXhwb3J0TWFwQXNJbWFnZShtYXA6IE1hcCwgZmlsZW5hbWU6IHN0cmluZykge1xuICAgIFdpZGdldE1hcFV0aWxzLmdldE1hcEFzUG5nKG1hcCkudGhlbigoZGF0YSkgPT4ge1xuICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlbmFtZTtcbiAgICAgIGxpbmsuaHJlZiA9IGRhdGE7XG4gICAgICBsaW5rLmNsaWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZ2VvbWV0cnlGb3JMYXllcihsYXllcjogTWFwV2lkZ2V0TGF5ZXJPcHRpb25zKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKGxheWVyLnR5cGUpIHtcbiAgICAgIGNhc2UgJ21hcmtlcic6XG4gICAgICBjYXNlICdoZWF0bWFwJzpcbiAgICAgIGNhc2UgJ2J1YmJsZSc6XG4gICAgICBjYXNlICdwb2ludCc6XG4gICAgICAgIHJldHVybiBGaWVsZFR5cGUuUE9JTlQ7XG4gICAgICBjYXNlICdsaW5lJzpcbiAgICAgICAgcmV0dXJuIEZpZWxkVHlwZS5MSU5FO1xuICAgICAgY2FzZSAncG9seWdvbic6XG4gICAgICAgIHJldHVybiBGaWVsZFR5cGUuUE9MWUdPTjtcbiAgICAgIGNhc2UgJ211bHRpLWxpbmUnOlxuICAgICAgICByZXR1cm4gRmllbGRUeXBlLk1VTFRJTElORTtcbiAgICAgIGNhc2UgJ211bHRpLXBvbHlnb24nOlxuICAgICAgICByZXR1cm4gRmllbGRUeXBlLk1VTFRJUE9MWUdPTjtcbiAgICAgIGNhc2UgJ2F1dG8nOlxuICAgICAgICByZXR1cm4gV2lkZ2V0TWFwVXRpbHMuZ2VvbWV0cnlGb3JMYXllcih7XG4gICAgICAgICAgdHlwZTogV2lkZ2V0TWFwTGF5ZXJTZXJ2aWNlLnRyYW5zbGF0ZUZpZWxkVHlwZVRvTGF5ZXJUeXBlKGxheWVyLnN1YlR5cGUpXG4gICAgICAgIH0gYXMgTWFwV2lkZ2V0TGF5ZXJPcHRpb25zKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBGaWVsZFR5cGUuUE9JTlQ7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGFzc2lnbkxheWVyc09yZGVyKF9sYXllcnM6IE1hcFdpZGdldExheWVyT3B0aW9uc1tdKSB7XG4gICAgY29uc3QgbGF5ZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShfbGF5ZXJzKSkgYXMgTWFwV2lkZ2V0TGF5ZXJPcHRpb25zW107XG5cbiAgICBsYXllcnMuc29ydCgobDEsIGwyKSA9PiAobDIuYmFja2dyb3VuZCA/IDAgOiAxKSAtIChsMS5iYWNrZ3JvdW5kID8gMCA6IDEpKTtcblxuICAgIC8vIEFzc2lnbiBzdXJlIHRoaW5nc1xuICAgIGxheWVycy5mb3JFYWNoKChsYXllciwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChsYXllci5iYWNrZ3JvdW5kKSB7XG4gICAgICAgIGxheWVyLm9yZGVyID0gV2lkZ2V0TWFwVXRpbHMuQkFDS0dST1VORF9PUkRFUjtcbiAgICAgIH1cbiAgICAgIGlmIChpbmRleCA9PT0gMCAmJiAhbGF5ZXIub3JkZXIpIHtcbiAgICAgICAgbGF5ZXIub3JkZXIgPSAwO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGF5ZXJzLmZvckVhY2goKGxheWVyLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKGxheWVyLm9yZGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IFtkaXN0YW5jZVRvRmlyc3RQcmV2aW91c09yZGVyLCBkaXN0YW5jZVRvRmlyc3ROZXh0T3JkZXJdID0gW1xuICAgICAgICAgIGxheWVyc1xuICAgICAgICAgICAgLnNsaWNlKDAsIGluZGV4KVxuICAgICAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAgICAgLmZpbmRJbmRleCgoZWxlbWVudCkgPT4gZWxlbWVudC5vcmRlciAhPT0gdW5kZWZpbmVkKSArIDEsXG4gICAgICAgICAgbGF5ZXJzLnNsaWNlKGluZGV4ICsgMSkuZmluZEluZGV4KChlbGVtZW50KSA9PiBlbGVtZW50Lm9yZGVyICE9PSB1bmRlZmluZWQpXG4gICAgICAgIF07XG5cbiAgICAgICAgbGV0IFtwcmV2aW91c09yZGVySW5kZXgsIG5leHRPcmRlckluZGV4XSA9IFtcbiAgICAgICAgICBkaXN0YW5jZVRvRmlyc3RQcmV2aW91c09yZGVyID4gLTEgPyBpbmRleCAtIGRpc3RhbmNlVG9GaXJzdFByZXZpb3VzT3JkZXIgOiAwLFxuICAgICAgICAgIGRpc3RhbmNlVG9GaXJzdE5leHRPcmRlciArIGluZGV4ICsgMVxuICAgICAgICBdO1xuICAgICAgICBsZXQgW3ByZXZpb3VzT3JkZXIsIG5leHRPcmRlcl0gPSBbXG4gICAgICAgICAgZGlzdGFuY2VUb0ZpcnN0UHJldmlvdXNPcmRlciA+IC0xID8gbGF5ZXJzW3ByZXZpb3VzT3JkZXJJbmRleF0ub3JkZXIhIDogMCxcbiAgICAgICAgICBkaXN0YW5jZVRvRmlyc3ROZXh0T3JkZXIgPiAtMSA/IGxheWVyc1tuZXh0T3JkZXJJbmRleF0ub3JkZXIhIDogLTFcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAobmV4dE9yZGVyID4gMCAmJiBuZXh0T3JkZXIgPCBwcmV2aW91c09yZGVyKSB7XG4gICAgICAgICAgY29uc3QgbmV3T3JkZXIgPSBwcmV2aW91c09yZGVyICsgKG5leHRPcmRlckluZGV4IC0gcHJldmlvdXNPcmRlckluZGV4KTtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgdGhlIG9yZGVyIHByb3BlcnR5IG9mIGxheWVyIG5vICR7aW5kZXggKyAyfSB3YXMgcHJlc2V0IGJ1dCBkb2Vzbid0IGZvbGxvdyB0aGUgb3JkZXIgb2YgdGhlIG90aGVyIGxheWVyc2BcbiAgICAgICAgICApO1xuICAgICAgICAgIG5leHRPcmRlciA9IG5ld09yZGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5leHRPcmRlciA+IDApIHtcbiAgICAgICAgICBsZXQgcmVsYXRpdmVJbmRleCA9IGluZGV4IC0gcHJldmlvdXNPcmRlckluZGV4O1xuICAgICAgICAgIGxheWVyLm9yZGVyID1cbiAgICAgICAgICAgIHByZXZpb3VzT3JkZXIgKyAoKG5leHRPcmRlciAtIHByZXZpb3VzT3JkZXIpIC8gKG5leHRPcmRlckluZGV4IC0gcHJldmlvdXNPcmRlckluZGV4KSkgKiByZWxhdGl2ZUluZGV4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxheWVyLm9yZGVyID0gcHJldmlvdXNPcmRlciArIGRpc3RhbmNlVG9GaXJzdFByZXZpb3VzT3JkZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBsYXllcnMuc29ydCgobDEsIGwyKSA9PiAobDEub3JkZXIgPz8gMSkgLSAobDIub3JkZXIhID8/IDEpKTtcbiAgfVxuXG4gIHN0YXRpYyByZWFkR2VvbWV0cnk8VCBleHRlbmRzICdwb2ludCcgfCAnbGluZScgfCAnbXVsdGktbGluZScgfCAncG9seWdvbicgfCAnbXVsdGktcG9seWdvbic+KFxuICAgIHByb2plY3Rpb246IFByb2plY3Rpb25MaWtlLFxuICAgIGl0ZW06IEl0ZW0sXG4gICAgdHlwZTogVCxcbiAgICBhdHRyaWJ1dGU6IEF0dHJpYnV0ZSB8IHVuZGVmaW5lZFxuICApIHtcbiAgICBpZiAoIWF0dHJpYnV0ZSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IHZhbHVlID0gaXRlbS5hdHRyaWJ1dGVzW2F0dHJpYnV0ZS50ZWNobmljYWxOYW1lXTtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICBjb25zb2xlLndhcm4oYEdlb21ldHJ5IGF0dHJpYnV0ZSBleGNsdWRlZCBmb3IgaXRlbSAke2l0ZW0uaWR9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh2YWx1ZS50eXBlID09PSAnTVVMVEknKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnZhbHVlc1swXTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUudmlzaWJsZSA9PT0gZmFsc2UpIHtcbiAgICAgIGNvbnNvbGUud2FybihgR2VvbWV0cnkgbm90IHZpc2libGUgZm9yIGl0ZW0gJHtpdGVtLmlkfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBnZW9tZXRyeTtcbiAgICB0cnkge1xuICAgICAgZ2VvbWV0cnkgPSBXaWRnZXRNYXBVdGlscy5nZW9KU09OLnJlYWRHZW9tZXRyeSh2YWx1ZS52YWx1ZSBhcyBhbnksIHtcbiAgICAgICAgZmVhdHVyZVByb2plY3Rpb246IHByb2plY3Rpb25cbiAgICAgIH0pIGFzIEdlb21ldHJ5O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignZXJyb3IgcmVhZGluZyBHZW9tZXRyeScsIHZhbHVlLnZhbHVlLCBlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2VvbWV0cnk7XG4gIH1cblxuICBzdGF0aWMgcHJvamVjdEV4dGVudEFnZ3JlZ2F0aW9uUmVzcG9uc2UoXG4gICAgZmllbGQ6IEZpZWxkLFxuICAgIGV4dGVudFJlc3BvbnNlOiBBZ2dyZWdhdGlvblJlc3VsdCxcbiAgICBsYXllcjogTWFwR2VvU2VydmVyTGF5ZXJPcHRpb25zLFxuICAgIHdtc0NhcGFiaWxpdGllczogeyBbcDogc3RyaW5nXTogR2V0Q2FwYWJpbGl0aWVzUmVzcG9uc2UgfCBudWxsIH0gfCB1bmRlZmluZWQsXG4gICAgbWFwOiBNYXBcbiAgKSB7XG4gICAgY29uc3QgcHJvakJveCA9IGdldFByb2plY3Rpb24oZmllbGQhLmNycyA/PyBERUZBVUxUX1BST0pFQ1RJT04pO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gZXh0ZW50UmVzcG9uc2UudmFsdWVzIGFzIHtcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIHRvcF9sZWZ0OiB7XG4gICAgICAgICAgbG9uOiBzdHJpbmc7XG4gICAgICAgICAgbGF0OiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICAgIGJvdHRvbV9yaWdodDoge1xuICAgICAgICAgIGxvbjogc3RyaW5nO1xuICAgICAgICAgIGxhdDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9W107XG4gICAgaWYgKFxuICAgICAgcHJvakJveCAmJlxuICAgICAgcmVzcG9uc2UubGVuZ3RoID4gMCAmJlxuICAgICAgcmVzcG9uc2VbMF0udmFsdWUgJiZcbiAgICAgIHJlc3BvbnNlWzBdLnZhbHVlLnRvcF9sZWZ0ICYmXG4gICAgICByZXNwb25zZVswXS52YWx1ZS50b3BfbGVmdC5sYXQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgcmVzcG9uc2VbMF0udmFsdWUudG9wX2xlZnQubG9uICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHJlc3BvbnNlWzBdLnZhbHVlLmJvdHRvbV9yaWdodCAmJlxuICAgICAgcmVzcG9uc2VbMF0udmFsdWUuYm90dG9tX3JpZ2h0LmxhdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICByZXNwb25zZVswXS52YWx1ZS5ib3R0b21fcmlnaHQubG9uICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGFzb3VyY2U6IGxheWVyLmRhdGFzb3VyY2VJZCxcbiAgICAgICAgZXJyb3I6IGZhbHNlLFxuICAgICAgICBleHRlbnQ6IFtcbiAgICAgICAgICB0cmFuc2Zvcm0oXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIHBhcnNlRmxvYXQoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgZXh0ZW50UmVzcG9uc2UudmFsdWVzWzBdIGFzIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICB0b3BfbGVmdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9uOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApLnZhbHVlLnRvcF9sZWZ0LmxvblxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBwYXJzZUZsb2F0KFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIGV4dGVudFJlc3BvbnNlLnZhbHVlc1swXSBhcyB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgdG9wX2xlZnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhdDogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKS52YWx1ZS50b3BfbGVmdC5sYXRcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHByb2pCb3gsXG4gICAgICAgICAgICBtYXAuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKVxuICAgICAgICAgICksXG4gICAgICAgICAgdHJhbnNmb3JtKFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBwYXJzZUZsb2F0KFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIGV4dGVudFJlc3BvbnNlLnZhbHVlc1swXSBhcyB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgYm90dG9tX3JpZ2h0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb246IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICkudmFsdWUuYm90dG9tX3JpZ2h0LmxvblxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBwYXJzZUZsb2F0KFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIGV4dGVudFJlc3BvbnNlLnZhbHVlc1swXSBhcyB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgYm90dG9tX3JpZ2h0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXQ6IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICkudmFsdWUuYm90dG9tX3JpZ2h0LmxhdFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcHJvakJveCxcbiAgICAgICAgICAgIG1hcC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpXG4gICAgICAgICAgKVxuICAgICAgICBdXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhc291cmNlOiBsYXllci5kYXRhc291cmNlSWQsXG4gICAgICBleHRlbnQ6IFhNTFV0aWxzLmdldExheWVyRXh0ZW50KGxheWVyLnBhcmFtTGF5ZXIsIG1hcCwgd21zQ2FwYWJpbGl0aWVzIVtsYXllci51cmxdPy5kb2MpID8/IFtdLFxuICAgICAgZXJyb3I6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBERUZBVUxUX0hFQVRNQVBfUkFESVVTID0gMjU7XG4gIHN0YXRpYyBERUZBVUxUX1JBRElVU19JTlRFTlNJVFlfRkFDVE9SID0gMTAwMDA7XG4gIHN0YXRpYyBERUZBVUxUX1pPT01fTUlOID0gMztcbiAgc3RhdGljIERFRkFVTFRfWk9PTV9TVEFSVCA9IDEwO1xuICBzdGF0aWMgREVGQVVMVF9aT09NX01BWCA9IDE4O1xuICBzdGF0aWMgREVGQVVMVF9NQVBfQ0VOVEVSID0gWzIuMjgyNzIxNzM0NzM4MTUyNSwgNDguODY0NzA2MDMxNTU3NzE2XTtcblxuICBzdGF0aWMgQkFDS0dST1VORF9PUkRFUiA9IDk5OTk7XG59XG4iXX0=