@mediusinc/mng-commons 3.6.0 → 4.0.0-rc.1

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 (341) hide show
  1. package/README.md +6 -5
  2. package/esm2022/index.mjs +6 -3
  3. package/esm2022/lib/api/models/filter-param.model.mjs +1 -1
  4. package/esm2022/lib/api/models/index.mjs +1 -3
  5. package/esm2022/lib/api/models/query-param.model.mjs +1 -1
  6. package/esm2022/lib/api/models/query-result.model.mjs +12 -1
  7. package/esm2022/lib/api/services/api.abstract.service.mjs +2 -2
  8. package/esm2022/lib/api/services/get-all-api.abstract.service.mjs +1 -1
  9. package/esm2022/lib/api/utils/index.mjs +2 -2
  10. package/esm2022/lib/api/utils/object-serializer.util.mjs +53 -137
  11. package/esm2022/lib/components/action/action.component.mjs +17 -16
  12. package/esm2022/lib/components/action/editor/action-editor.component.mjs +12 -12
  13. package/esm2022/lib/components/action/localization/data-language-dropdown.component.mjs +7 -7
  14. package/esm2022/lib/components/action/models/action-component.model.mjs +1 -1
  15. package/esm2022/lib/components/action/models/action-confirmation-service.model.mjs +1 -1
  16. package/esm2022/lib/components/action/models/action-execution.model.mjs +5 -5
  17. package/esm2022/lib/components/action/route/action-route.component.mjs +6 -6
  18. package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +74 -65
  19. package/esm2022/lib/components/form/date-range/date-range.component.mjs +6 -7
  20. package/esm2022/lib/components/form/dropdown/dropdown.component.mjs +39 -39
  21. package/esm2022/lib/components/form/editor/form-editor.component.mjs +14 -16
  22. package/esm2022/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.mjs +6 -6
  23. package/esm2022/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +5 -5
  24. package/esm2022/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.mjs +3 -3
  25. package/esm2022/lib/components/form/formly/fields/formly-field-custom/formly-field-custom.component.mjs +3 -3
  26. package/esm2022/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +5 -5
  27. package/esm2022/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +5 -6
  28. package/esm2022/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +10 -13
  29. package/esm2022/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +3 -3
  30. package/esm2022/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +13 -13
  31. package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +26 -15
  32. package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +14 -14
  33. package/esm2022/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +5 -6
  34. package/esm2022/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +5 -6
  35. package/esm2022/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +39 -18
  36. package/esm2022/lib/components/layout/breadcrumb.component.mjs +4 -4
  37. package/esm2022/lib/components/layout/footer.component.mjs +4 -4
  38. package/esm2022/lib/components/layout/main-layout.component.mjs +8 -8
  39. package/esm2022/lib/components/layout/menu-item.component.mjs +8 -8
  40. package/esm2022/lib/components/layout/menu.component.mjs +7 -7
  41. package/esm2022/lib/components/layout/services/main-layout.component.service.mjs +4 -4
  42. package/esm2022/lib/components/layout/topbar-user.component.mjs +9 -9
  43. package/esm2022/lib/components/layout/topbar.component.mjs +8 -8
  44. package/esm2022/lib/components/layout/version.component.mjs +11 -11
  45. package/esm2022/lib/components/layoutV2/breadcrumb.component.mjs +6 -6
  46. package/esm2022/lib/components/layoutV2/footer.component.mjs +3 -3
  47. package/esm2022/lib/components/layoutV2/main-layout.component.mjs +14 -11
  48. package/esm2022/lib/components/layoutV2/menu-item.component.mjs +12 -9
  49. package/esm2022/lib/components/layoutV2/menu.component.mjs +5 -6
  50. package/esm2022/lib/components/layoutV2/model/layout-state.model.mjs +1 -1
  51. package/esm2022/lib/components/layoutV2/services/main-layout.component.service.mjs +30 -21
  52. package/esm2022/lib/components/layoutV2/services/menu.service.mjs +3 -3
  53. package/esm2022/lib/components/layoutV2/sidebar.component.mjs +18 -9
  54. package/esm2022/lib/components/layoutV2/topbar-user.component.mjs +6 -6
  55. package/esm2022/lib/components/layoutV2/topbar.component.mjs +6 -7
  56. package/esm2022/lib/components/layoutV2/version.component.mjs +11 -11
  57. package/esm2022/lib/components/pages/error/error.page.component.mjs +4 -4
  58. package/esm2022/lib/components/pages/not-found/not-found.page.component.mjs +4 -4
  59. package/esm2022/lib/components/tableview/index.mjs +1 -2
  60. package/esm2022/lib/components/tableview/models/table.event.mjs +1 -1
  61. package/esm2022/lib/components/tableview/route/tableview-route.abstract.component.mjs +18 -18
  62. package/esm2022/lib/components/tableview/route/tableview-route.component.mjs +5 -5
  63. package/esm2022/lib/components/tableview/table/column-filter-full/column-filter-full.component.mjs +8 -12
  64. package/esm2022/lib/components/tableview/table/column-value/column-value.component.mjs +9 -32
  65. package/esm2022/lib/components/tableview/table/table.component.mjs +20 -25
  66. package/esm2022/lib/components/tableview/tableview.component.mjs +8 -10
  67. package/esm2022/lib/data-providers/base.data-provider.mjs +43 -12
  68. package/esm2022/lib/data-providers/editor.data-provider.mjs +82 -14
  69. package/esm2022/lib/data-providers/lookup.data-provider.mjs +38 -9
  70. package/esm2022/lib/data-providers/table.data-provider.mjs +41 -14
  71. package/esm2022/lib/data-providers/tableview-crud.data-provider.mjs +14 -6
  72. package/esm2022/lib/data-providers/tableview.data-provider.mjs +89 -29
  73. package/esm2022/lib/descriptors/action/action-confirmation.descriptor.mjs +2 -2
  74. package/esm2022/lib/descriptors/action/action-editor.descriptor.mjs +262 -0
  75. package/esm2022/lib/descriptors/action/action-link.descriptor.mjs +90 -0
  76. package/esm2022/lib/descriptors/action/action.descriptor.mjs +91 -352
  77. package/esm2022/lib/descriptors/action/index.mjs +3 -1
  78. package/esm2022/lib/descriptors/editor/editor.descriptor.mjs +215 -102
  79. package/esm2022/lib/descriptors/editor/field-action.descriptor.mjs +50 -0
  80. package/esm2022/lib/descriptors/editor/field-base.descriptor.mjs +293 -0
  81. package/esm2022/lib/descriptors/editor/field-group.descriptor.mjs +97 -0
  82. package/esm2022/lib/descriptors/editor/field-lookup.descriptor.mjs +211 -0
  83. package/esm2022/lib/descriptors/editor/field-many.descriptor.mjs +153 -0
  84. package/esm2022/lib/descriptors/editor/field.descriptor.mjs +81 -852
  85. package/esm2022/lib/descriptors/editor/index.mjs +6 -1
  86. package/esm2022/lib/descriptors/editor/internal/editor-fields.model.mjs +2 -0
  87. package/esm2022/lib/descriptors/editor/internal/editor.model.mjs +2 -0
  88. package/esm2022/lib/descriptors/filter/filter-lookup.descriptor.mjs +210 -0
  89. package/esm2022/lib/descriptors/filter/filter.descriptor.mjs +2 -208
  90. package/esm2022/lib/descriptors/filter/index.mjs +2 -1
  91. package/esm2022/lib/descriptors/interfaces/lookup-descriptor.interface.mjs +1 -1
  92. package/esm2022/lib/descriptors/model/index.mjs +2 -0
  93. package/esm2022/lib/descriptors/model/model.descriptor.mjs +70 -0
  94. package/esm2022/lib/descriptors/table/column.descriptor.mjs +38 -49
  95. package/esm2022/lib/descriptors/table/internal/table-columns.model.mjs +2 -0
  96. package/esm2022/lib/descriptors/table/internal/table.model.mjs +2 -0
  97. package/esm2022/lib/descriptors/table/table.descriptor.mjs +143 -124
  98. package/esm2022/lib/descriptors/tableview/internal/tableview.model.mjs +2 -0
  99. package/esm2022/lib/descriptors/tableview/tableview.descriptor.mjs +240 -131
  100. package/esm2022/lib/directives/component.directive.mjs +11 -11
  101. package/esm2022/lib/directives/dialog-keydown-handler.directive.mjs +3 -3
  102. package/esm2022/lib/directives/template.directive.mjs +9 -9
  103. package/esm2022/lib/helpers/coercion.mjs +45 -0
  104. package/esm2022/lib/models/class.model.mjs +2 -0
  105. package/esm2022/lib/models/enum.model.mjs +1 -1
  106. package/esm2022/lib/models/index.mjs +4 -1
  107. package/esm2022/lib/models/radio.model.mjs +2 -0
  108. package/esm2022/lib/models/tableview-attr.model.mjs +1 -1
  109. package/esm2022/lib/models/type-registry.model.mjs +2 -0
  110. package/esm2022/lib/models/view-container.model.mjs +1 -1
  111. package/esm2022/lib/pipes/boolean.pipe.mjs +3 -3
  112. package/esm2022/lib/pipes/class-map.pipe.mjs +3 -3
  113. package/esm2022/lib/pipes/enum.pipe.mjs +6 -6
  114. package/esm2022/lib/pipes/enumerate-async.pipe.mjs +5 -5
  115. package/esm2022/lib/pipes/enumerate.pipe.mjs +5 -5
  116. package/esm2022/lib/pipes/getter.pipe.mjs +5 -5
  117. package/esm2022/lib/pipes/i18n-property.pipe.mjs +4 -4
  118. package/esm2022/lib/pipes/json-path.pipe.mjs +3 -3
  119. package/esm2022/lib/pipes/locale-default-row-class.pipe.mjs +5 -5
  120. package/esm2022/lib/pipes/parametrize.pipe.mjs +3 -3
  121. package/esm2022/lib/pipes/template.pipe.mjs +4 -4
  122. package/esm2022/lib/provide-commons.mjs +4 -4
  123. package/esm2022/lib/registry/type.registry.mjs +114 -0
  124. package/esm2022/lib/router/models/router.model.mjs +1 -1
  125. package/esm2022/lib/router/tableview-route-builder.mjs +5 -5
  126. package/esm2022/lib/security/authorization.service.mjs +9 -11
  127. package/esm2022/lib/services/action-executor.service.mjs +14 -12
  128. package/esm2022/lib/services/commons-init.service.mjs +3 -3
  129. package/esm2022/lib/services/commons.service.mjs +6 -5
  130. package/esm2022/lib/services/mng-localstorage-config.service.mjs +4 -4
  131. package/esm2022/lib/services/navigation.service.mjs +5 -5
  132. package/esm2022/lib/services/router.service.mjs +4 -4
  133. package/esm2022/lib/services/version.service.mjs +5 -5
  134. package/esm2022/lib/services/view-container.component.service.mjs +5 -5
  135. package/esm2022/lib/styles/styles.util.mjs +1 -1
  136. package/esm2022/lib/types/action-descriptor.types.mjs +2 -0
  137. package/esm2022/lib/types/data-provider.types.mjs +2 -0
  138. package/esm2022/lib/types/getter.type.mjs +2 -0
  139. package/esm2022/lib/types/index.mjs +5 -2
  140. package/esm2022/lib/types/localstorage-config-value.type.mjs +2 -0
  141. package/esm2022/lib/types/type.decorator.mjs +4 -14
  142. package/esm2022/lib/types/type.model.mjs +1 -1
  143. package/esm2022/lib/utils/action-data-provider.util.mjs +14 -8
  144. package/esm2022/lib/utils/decorator-metadata.util.mjs +61 -0
  145. package/esm2022/lib/utils/editor-formly.util.mjs +6 -5
  146. package/esm2022/lib/utils/enum.util.mjs +1 -1
  147. package/esm2022/lib/utils/export.util.mjs +5 -4
  148. package/esm2022/lib/utils/i18n.util.mjs +22 -22
  149. package/esm2022/lib/utils/index.mjs +2 -3
  150. package/esm2022/lib/utils/model.util.mjs +40 -36
  151. package/esm2022/lib/utils/notification.util.mjs +1 -1
  152. package/esm2022/lib/utils/tableview.util.mjs +17 -17
  153. package/fesm2022/mediusinc-mng-commons.mjs +11491 -11384
  154. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
  155. package/index.d.ts +3 -2
  156. package/lib/api/models/filter-param.model.d.ts +3 -3
  157. package/lib/api/models/index.d.ts +0 -2
  158. package/lib/api/models/query-param.model.d.ts +3 -3
  159. package/lib/api/models/query-result.model.d.ts +3 -3
  160. package/lib/api/services/api.abstract.service.d.ts +1 -1
  161. package/lib/api/utils/index.d.ts +1 -1
  162. package/lib/api/utils/object-serializer.util.d.ts +3 -19
  163. package/lib/components/action/action.component.d.ts +5 -5
  164. package/lib/components/action/editor/action-editor.component.d.ts +7 -7
  165. package/lib/components/action/localization/data-language-dropdown.component.d.ts +6 -6
  166. package/lib/components/action/models/action-component.model.d.ts +4 -4
  167. package/lib/components/action/models/action-confirmation-service.model.d.ts +2 -2
  168. package/lib/components/action/models/action-execution.model.d.ts +14 -14
  169. package/lib/components/action/route/action-route.component.d.ts +2 -2
  170. package/lib/components/form/autocomplete/autocomplete.component.d.ts +15 -18
  171. package/lib/components/form/dropdown/dropdown.component.d.ts +9 -9
  172. package/lib/components/form/editor/form-editor.component.d.ts +8 -11
  173. package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +4 -0
  174. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +4 -4
  175. package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +3 -2
  176. package/lib/components/layout/topbar-user.component.d.ts +2 -2
  177. package/lib/components/layout/version.component.d.ts +2 -2
  178. package/lib/components/layoutV2/model/layout-state.model.d.ts +8 -9
  179. package/lib/components/layoutV2/services/main-layout.component.service.d.ts +1 -1
  180. package/lib/components/layoutV2/version.component.d.ts +2 -2
  181. package/lib/components/tableview/index.d.ts +0 -1
  182. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +20 -20
  183. package/lib/components/tableview/route/tableview-route.component.d.ts +7 -7
  184. package/lib/components/tableview/table/table.component.d.ts +9 -9
  185. package/lib/components/tableview/tableview.component.d.ts +8 -8
  186. package/lib/data-providers/base.data-provider.d.ts +30 -12
  187. package/lib/data-providers/editor.data-provider.d.ts +86 -23
  188. package/lib/data-providers/lookup.data-provider.d.ts +24 -11
  189. package/lib/data-providers/table.data-provider.d.ts +30 -17
  190. package/lib/data-providers/tableview-crud.data-provider.d.ts +8 -4
  191. package/lib/data-providers/tableview.data-provider.d.ts +41 -29
  192. package/lib/descriptors/action/action-confirmation.descriptor.d.ts +3 -3
  193. package/lib/descriptors/action/action-editor.descriptor.d.ts +115 -0
  194. package/lib/descriptors/action/action-link.descriptor.d.ts +34 -0
  195. package/lib/descriptors/action/action.descriptor.d.ts +74 -160
  196. package/lib/descriptors/action/index.d.ts +2 -0
  197. package/lib/descriptors/editor/editor.descriptor.d.ts +131 -79
  198. package/lib/descriptors/editor/field-action.descriptor.d.ts +23 -0
  199. package/lib/descriptors/editor/field-base.descriptor.d.ts +126 -0
  200. package/lib/descriptors/editor/field-group.descriptor.d.ts +42 -0
  201. package/lib/descriptors/editor/field-lookup.descriptor.d.ts +80 -0
  202. package/lib/descriptors/editor/field-many.descriptor.d.ts +63 -0
  203. package/lib/descriptors/editor/field.descriptor.d.ts +100 -326
  204. package/lib/descriptors/editor/index.d.ts +5 -0
  205. package/lib/descriptors/editor/internal/editor-fields.model.d.ts +32 -0
  206. package/lib/descriptors/editor/internal/editor.model.d.ts +15 -0
  207. package/lib/descriptors/filter/filter-lookup.descriptor.d.ts +69 -0
  208. package/lib/descriptors/filter/filter.descriptor.d.ts +9 -67
  209. package/lib/descriptors/filter/index.d.ts +1 -0
  210. package/lib/descriptors/interfaces/lookup-descriptor.interface.d.ts +11 -16
  211. package/lib/descriptors/model/model.descriptor.d.ts +22 -0
  212. package/lib/descriptors/table/column.descriptor.d.ts +45 -33
  213. package/lib/descriptors/table/internal/table-columns.model.d.ts +11 -0
  214. package/lib/descriptors/table/internal/table.model.d.ts +9 -0
  215. package/lib/descriptors/table/table.descriptor.d.ts +82 -71
  216. package/lib/descriptors/tableview/internal/tableview.model.d.ts +11 -0
  217. package/lib/descriptors/tableview/tableview.descriptor.d.ts +106 -74
  218. package/lib/directives/component.directive.d.ts +5 -6
  219. package/lib/directives/template.directive.d.ts +2 -3
  220. package/lib/helpers/coercion.d.ts +9 -0
  221. package/lib/models/class.model.d.ts +6 -0
  222. package/lib/models/enum.model.d.ts +3 -2
  223. package/lib/models/index.d.ts +3 -0
  224. package/lib/models/radio.model.d.ts +6 -0
  225. package/lib/models/tableview-attr.model.d.ts +2 -2
  226. package/lib/models/type-registry.model.d.ts +7 -0
  227. package/lib/models/view-container.model.d.ts +6 -6
  228. package/lib/pipes/getter.pipe.d.ts +2 -1
  229. package/lib/pipes/i18n-property.pipe.d.ts +1 -1
  230. package/lib/pipes/locale-default-row-class.pipe.d.ts +2 -2
  231. package/lib/registry/type.registry.d.ts +25 -0
  232. package/lib/router/models/router.model.d.ts +5 -5
  233. package/lib/router/tableview-route-builder.d.ts +6 -6
  234. package/lib/security/authorization.service.d.ts +4 -7
  235. package/lib/services/action-executor.service.d.ts +7 -7
  236. package/lib/services/mng-localstorage-config.service.d.ts +3 -3
  237. package/lib/services/view-container.component.service.d.ts +3 -3
  238. package/lib/styles/styles.util.d.ts +5 -5
  239. package/lib/types/action-descriptor.types.d.ts +4 -0
  240. package/lib/types/data-provider.types.d.ts +3 -0
  241. package/lib/types/getter.type.d.ts +2 -0
  242. package/lib/types/index.d.ts +4 -1
  243. package/lib/types/localstorage-config-value.type.d.ts +1 -0
  244. package/lib/types/type.decorator.d.ts +0 -2
  245. package/lib/types/type.model.d.ts +12 -2
  246. package/lib/utils/action-data-provider.util.d.ts +6 -5
  247. package/lib/utils/{type.util.d.ts → decorator-metadata.util.d.ts} +2 -26
  248. package/lib/utils/editor-formly.util.d.ts +2 -2
  249. package/lib/utils/enum.util.d.ts +2 -2
  250. package/lib/utils/export.util.d.ts +2 -2
  251. package/lib/utils/i18n.util.d.ts +10 -11
  252. package/lib/utils/index.d.ts +1 -2
  253. package/lib/utils/model.util.d.ts +5 -3
  254. package/lib/utils/notification.util.d.ts +4 -4
  255. package/lib/utils/tableview.util.d.ts +6 -6
  256. package/openapi/templates/model.mustache +15 -2
  257. package/openapi/templates/models.mustache +0 -44
  258. package/package.json +10 -10
  259. package/scss/mng-commons-dark-v2.scss +2 -2
  260. package/scss/mng-commons-light-v2.scss +1 -1
  261. package/scss/v2/theme/{theme-base/components/data → extensions}/_fullcalendar.scss +14 -15
  262. package/scss/v2/theme/theme-base/_colors.scss +11 -12
  263. package/scss/v2/theme/theme-base/_common.scss +8 -5
  264. package/scss/v2/theme/theme-base/_components.scss +93 -89
  265. package/scss/v2/theme/theme-base/_mixins.scss +205 -71
  266. package/scss/v2/theme/theme-base/components/button/_button.scss +80 -68
  267. package/scss/v2/theme/theme-base/components/button/_speeddial.scss +11 -1
  268. package/scss/v2/theme/theme-base/components/button/_splitbutton.scss +128 -161
  269. package/scss/v2/theme/theme-base/components/data/_carousel.scss +1 -1
  270. package/scss/v2/theme/theme-base/components/data/_datatable.scss +3 -3
  271. package/scss/v2/theme/theme-base/components/data/_dataview.scss +0 -9
  272. package/scss/v2/theme/theme-base/components/data/_filter.scss +5 -6
  273. package/scss/v2/theme/theme-base/components/data/_orderlist.scss +15 -4
  274. package/scss/v2/theme/theme-base/components/data/_organizationchart.scss +1 -1
  275. package/scss/v2/theme/theme-base/components/data/_picklist.scss +14 -3
  276. package/scss/v2/theme/theme-base/components/data/_timeline.scss +3 -6
  277. package/scss/v2/theme/theme-base/components/data/_tree.scss +7 -6
  278. package/scss/v2/theme/theme-base/components/data/_treetable.scss +3 -4
  279. package/scss/v2/theme/theme-base/components/file/_fileupload.scss +6 -0
  280. package/scss/v2/theme/theme-base/components/input/_autocomplete.scss +43 -24
  281. package/scss/v2/theme/theme-base/components/input/_calendar.scss +9 -5
  282. package/scss/v2/theme/theme-base/components/input/_cascadeselect.scss +25 -20
  283. package/scss/v2/theme/theme-base/components/input/_checkbox.scss +9 -5
  284. package/scss/v2/theme/theme-base/components/input/_chips.scss +24 -13
  285. package/scss/v2/theme/theme-base/components/input/_dropdown.scss +29 -13
  286. package/scss/v2/theme/theme-base/components/input/_editor.scss +7 -7
  287. package/scss/v2/theme/theme-base/components/input/_inputgroup.scss +1 -2
  288. package/scss/v2/theme/theme-base/components/input/_inputmask.scss +2 -2
  289. package/scss/v2/theme/theme-base/components/input/_inputnumber.scss +7 -7
  290. package/scss/v2/theme/theme-base/components/input/_inputswitch.scss +3 -3
  291. package/scss/v2/theme/theme-base/components/input/_inputtext.scss +4 -3
  292. package/scss/v2/theme/theme-base/components/input/_listbox.scss +23 -8
  293. package/scss/v2/theme/theme-base/components/input/_multiselect.scss +31 -27
  294. package/scss/v2/theme/theme-base/components/input/_radiobutton.scss +2 -2
  295. package/scss/v2/theme/theme-base/components/input/_rating.scss +33 -28
  296. package/scss/v2/theme/theme-base/components/input/_treeselect.scss +6 -6
  297. package/scss/v2/theme/theme-base/components/menu/_breadcrumb.scss +3 -3
  298. package/scss/v2/theme/theme-base/components/menu/_contextmenu.scss +8 -30
  299. package/scss/v2/theme/theme-base/components/menu/_dock.scss +11 -2
  300. package/scss/v2/theme/theme-base/components/menu/_megamenu.scss +14 -65
  301. package/scss/v2/theme/theme-base/components/menu/_menu.scss +5 -13
  302. package/scss/v2/theme/theme-base/components/menu/_menubar.scss +32 -80
  303. package/scss/v2/theme/theme-base/components/menu/_panelmenu.scss +52 -39
  304. package/scss/v2/theme/theme-base/components/menu/_slidemenu.scss +15 -20
  305. package/scss/v2/theme/theme-base/components/menu/_steps.scss +2 -2
  306. package/scss/v2/theme/theme-base/components/menu/_tabmenu.scss +1 -2
  307. package/scss/v2/theme/theme-base/components/menu/_tieredmenu.scss +10 -32
  308. package/scss/v2/theme/theme-base/components/messages/_message.scss +2 -2
  309. package/scss/v2/theme/theme-base/components/messages/_toast.scss +2 -3
  310. package/scss/v2/theme/theme-base/components/misc/_chip.scss +7 -3
  311. package/scss/v2/theme/theme-base/components/misc/_inplace.scss +0 -1
  312. package/scss/v2/theme/theme-base/components/misc/_terminal.scss +9 -8
  313. package/scss/v2/theme/theme-base/components/multimedia/_galleria.scss +6 -0
  314. package/scss/v2/theme/theme-base/components/overlay/_confirmpopup.scss +3 -5
  315. package/scss/v2/theme/theme-base/components/panel/_accordion.scss +4 -4
  316. package/scss/v2/theme/theme-base/components/panel/_fieldset.scss +1 -1
  317. package/scss/v2/theme/theme-base/components/panel/_panel.scss +10 -5
  318. package/scss/v2/theme/theme-base/components/panel/_tabview.scss +6 -2
  319. package/scss/v2/theme/theme-dark/_variables.scss +756 -765
  320. package/scss/v2/theme/theme-dark/blue/theme.scss +1 -0
  321. package/scss/v2/theme/theme-light/_variables.scss +81 -94
  322. package/scss/v2/theme/theme-light/blue/theme.scss +1 -0
  323. package/esm2022/lib/api/models/mappers.mjs +0 -13
  324. package/esm2022/lib/api/models/serialization.model.mjs +0 -2
  325. package/esm2022/lib/components/tableview/table/column-filter/column-filter.component.mjs +0 -121
  326. package/esm2022/lib/descriptors/index.mjs +0 -2
  327. package/esm2022/lib/descriptors/model.descriptor.mjs +0 -45
  328. package/esm2022/lib/mng-commons.module.mjs +0 -472
  329. package/esm2022/lib/types/mng-localstorage-config-value.type.mjs +0 -2
  330. package/esm2022/lib/utils/coercion.util.mjs +0 -6
  331. package/esm2022/lib/utils/type.util.mjs +0 -94
  332. package/lib/api/models/mappers.d.ts +0 -6
  333. package/lib/api/models/serialization.model.d.ts +0 -9
  334. package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +0 -37
  335. package/lib/descriptors/model.descriptor.d.ts +0 -18
  336. package/lib/mng-commons.module.d.ts +0 -105
  337. package/lib/types/mng-localstorage-config-value.type.d.ts +0 -1
  338. package/lib/utils/coercion.util.d.ts +0 -2
  339. package/openapi/templates/serializer-registration/model.mustache +0 -97
  340. package/openapi/templates/serializer-registration/models.mustache +0 -6
  341. /package/lib/descriptors/{index.d.ts → model/index.d.ts} +0 -0
@@ -1,4 +1,4 @@
1
- import { AsyncPipe, NgIf } from '@angular/common';
1
+ import { AsyncPipe } from '@angular/common';
2
2
  import { ChangeDetectionStrategy, Component, Injector, ViewChild, inject } from '@angular/core';
3
3
  import { FormControl, ReactiveFormsModule } from '@angular/forms';
4
4
  import { FieldType, FormlyModule } from '@ngx-formly/core';
@@ -12,6 +12,7 @@ import { ReplaySubject, distinctUntilChanged } from 'rxjs';
12
12
  import { startWith } from 'rxjs/operators';
13
13
  import { MediusQueryParamBuilder, MediusQueryResult } from '../../../../../api/models';
14
14
  import { MngDialogKeydownHandlerDirective } from '../../../../../directives';
15
+ import { toObservable } from '../../../../../helpers/coercion';
15
16
  import { MngInternalError } from '../../../../../models';
16
17
  import { MngLoggerService } from '../../../../../services';
17
18
  import { ErrorUtil } from '../../../../../utils';
@@ -63,7 +64,7 @@ export class MngFormlyFieldLookupDialogComponent extends FieldType {
63
64
  // init values
64
65
  this.setFieldLabelValue(this.formControl.value);
65
66
  const subscription = this.formControl.valueChanges.pipe(startWith(this.formControl.value), distinctUntilChanged((prev, curr) => {
66
- const compareProp = this.descriptor.dialogTableDescriptor.dataKeyProperty ?? this.descriptor.dialogTableDescriptor.model.idPropertyName;
67
+ const compareProp = this.descriptor.dialogTableDescriptor.trackProperty ?? this.descriptor.dialogTableDescriptor.model.idProperty;
67
68
  if (compareProp && typeof prev === 'object' && typeof curr === 'object') {
68
69
  return prev[compareProp] === curr[compareProp];
69
70
  }
@@ -103,11 +104,11 @@ export class MngFormlyFieldLookupDialogComponent extends FieldType {
103
104
  if (this.descriptor.dialogTableDescriptor.hasDefaultSort) {
104
105
  this.descriptor.dialogTableDescriptor.defaultSortProperty.forEach((p, idx) => queryParamBuilder.withSort(p, this.descriptor.dialogTableDescriptor.defaultSortAsc[idx]));
105
106
  }
106
- this.lookupDataProviderSubscription = this.descriptor.dataProvider?.lookup(queryParamBuilder.build(), this.dialogDataProviderService).subscribe({
107
+ this.lookupDataProviderSubscription = toObservable(this.descriptor.dataProvider?.lookup(queryParamBuilder.build(), this.dialogDataProviderService)).subscribe({
107
108
  next: res => {
108
109
  const mqr = new MediusQueryResult();
109
- mqr.pageData = res;
110
- mqr.allDataCount = res.length;
110
+ mqr.pageData = res ?? [];
111
+ mqr.allDataCount = res?.length ?? 0;
111
112
  this.addItemsSubject.next(mqr);
112
113
  this.dialogAreItemsLoaded = true;
113
114
  this.dialogIsLoadingSubject.next(false);
@@ -181,7 +182,7 @@ export class MngFormlyFieldLookupDialogComponent extends FieldType {
181
182
  return;
182
183
  }
183
184
  if (typeof value === 'object') {
184
- const labelProperty = this.descriptor.itemsLabelProperty ?? this.descriptor.dialogTableDescriptor?.model.titlePropertyName;
185
+ const labelProperty = this.descriptor.optionsLabelProperty ?? this.descriptor.dialogTableDescriptor?.model.titleProperty;
185
186
  if (!labelProperty) {
186
187
  throw new MngInternalError('Could not determine label property.', { name: 'MngFormlyFieldLookupDialogError' });
187
188
  }
@@ -191,10 +192,10 @@ export class MngFormlyFieldLookupDialogComponent extends FieldType {
191
192
  this.fieldLabelFormControl.setValue(value);
192
193
  }
193
194
  }
194
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngFormlyFieldLookupDialogComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
195
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: MngFormlyFieldLookupDialogComponent, isStandalone: true, selector: "mng-formly-field-lookup-dialog", viewQueries: [{ propertyName: "mngTable", first: true, predicate: MngTableComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [class]=\"'p-inputgroup mng-dropdown-dialog' + descriptor.inputClassName\" [class.p-inputtext-sm]=\"descriptor.isSizeSmall\" [class.p-inputtext-lg]=\"descriptor.isSizeLarge\">\n <input pInputText type=\"text\" [id]=\"$any(key)\" [readonly]=\"true\" [formlyAttributes]=\"field\" [formControl]=\"fieldLabelFormControl\" />\n <i class=\"mng-dropdown-clear-icon pi pi-times\" (click)=\"clear()\" *ngIf=\"!props.required && formControl?.value && !formControl?.disabled\"></i>\n <button\n pButton\n pRipple\n class=\"mng-dropdown-dialog-search-button\"\n type=\"button\"\n [label]=\"'general.search' | translate : {item: ''}\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openSelectDialog()\"></button>\n</div>\n\n<p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.search' | translate : {item: props.label!}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-dialog mng-formly-field-lookup-dialog\">\n <ng-template pTemplate=\"content\" mngDialogKeydownHandler>\n <mng-table\n [descriptor]=\"descriptor.dialogTableDescriptor!\"\n [dataProvider]=\"descriptor.dialogTableDataProvider\"\n [queryResult]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [selectionMode]=\"'single'\"\n [loading]=\"dialogIsLoading$\"\n [captionComponent]=\"config.table?.captionComponent\"\n [columnActionComponent]=\"config.table?.columnActionComponent\"\n [viewContainer]=\"viewContainer\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"onCaptionCmpInst($event)\"\n (columnActionComponentInstance)=\"onColumnActionCmpInst($event)\">\n </mng-table>\n <p-messages [value]=\"dialogMessages\"></p-messages>\n </ng-template>\n\n <ng-template pTemplate=\"footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.select' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"addItem()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n loadingIcon=\"pi pi-spin pi-spinner\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n", dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "directive", type: i5.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i6.Ripple, selector: "[pRipple]" }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i7.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "actions", "isColumnClickable", "viewContainer", "captionComponent", "columnActionComponent", "columnActionMinWidth", "globalFilterFields"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }, { kind: "ngmodule", type: MessagesModule }, { kind: "component", type: i8.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i9.InputText, selector: "[pInputText]" }, { kind: "directive", type: MngDialogKeydownHandlerDirective, selector: "[mngDialogKeydownHandler]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
195
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MngFormlyFieldLookupDialogComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
196
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: MngFormlyFieldLookupDialogComponent, isStandalone: true, selector: "mng-formly-field-lookup-dialog", viewQueries: [{ propertyName: "mngTable", first: true, predicate: MngTableComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [class]=\"'p-inputgroup mng-dropdown-dialog' + descriptor.inputClassName\" [class.p-inputtext-sm]=\"descriptor.isSizeSmall\" [class.p-inputtext-lg]=\"descriptor.isSizeLarge\">\n <input pInputText type=\"text\" [id]=\"$any(key)\" [readonly]=\"true\" [formlyAttributes]=\"field\" [formControl]=\"fieldLabelFormControl\" />\n @if (!props.required && formControl.value && !formControl.disabled) {\n <i class=\"mng-dropdown-clear-icon pi pi-times\" (click)=\"clear()\"></i>\n }\n <button\n pButton\n pRipple\n class=\"mng-dropdown-dialog-search-button\"\n type=\"button\"\n [label]=\"'general.search' | translate: {item: ''}\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openSelectDialog()\"></button>\n</div>\n\n<p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.search' | translate: {item: props.label!}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-dialog mng-formly-field-lookup-dialog\">\n <ng-template pTemplate=\"content\" mngDialogKeydownHandler>\n <mng-table\n [descriptor]=\"descriptor.dialogTableDescriptor!\"\n [dataProvider]=\"descriptor.dialogTableDataProvider\"\n [queryResult]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [selectionMode]=\"'single'\"\n [loading]=\"dialogIsLoading$\"\n [captionComponent]=\"config.table?.captionComponent\"\n [columnActionComponent]=\"config.table?.columnActionComponent\"\n [viewContainer]=\"viewContainer\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"onCaptionCmpInst($event)\"\n (columnActionComponentInstance)=\"onColumnActionCmpInst($event)\">\n </mng-table>\n <p-messages [value]=\"dialogMessages\"></p-messages>\n </ng-template>\n\n <ng-template pTemplate=\"footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.select' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"addItem()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n loadingIcon=\"pi pi-spin pi-spinner\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n", dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "directive", type: i5.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i6.Ripple, selector: "[pRipple]" }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i7.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "actions", "isColumnClickable", "viewContainer", "captionComponent", "columnActionComponent", "columnActionMinWidth", "globalFilterFields"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }, { kind: "ngmodule", type: MessagesModule }, { kind: "component", type: i8.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i9.InputText, selector: "[pInputText]" }, { kind: "directive", type: MngDialogKeydownHandlerDirective, selector: "[mngDialogKeydownHandler]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
196
197
  }
197
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngFormlyFieldLookupDialogComponent, decorators: [{
198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MngFormlyFieldLookupDialogComponent, decorators: [{
198
199
  type: Component,
199
200
  args: [{ standalone: true, selector: 'mng-formly-field-lookup-dialog', imports: [
200
201
  TranslateModule,
@@ -204,14 +205,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
204
205
  RippleModule,
205
206
  DialogModule,
206
207
  AsyncPipe,
207
- NgIf,
208
208
  MngTableComponent,
209
209
  MessagesModule,
210
210
  InputTextModule,
211
211
  MngDialogKeydownHandlerDirective
212
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class]=\"'p-inputgroup mng-dropdown-dialog' + descriptor.inputClassName\" [class.p-inputtext-sm]=\"descriptor.isSizeSmall\" [class.p-inputtext-lg]=\"descriptor.isSizeLarge\">\n <input pInputText type=\"text\" [id]=\"$any(key)\" [readonly]=\"true\" [formlyAttributes]=\"field\" [formControl]=\"fieldLabelFormControl\" />\n <i class=\"mng-dropdown-clear-icon pi pi-times\" (click)=\"clear()\" *ngIf=\"!props.required && formControl?.value && !formControl?.disabled\"></i>\n <button\n pButton\n pRipple\n class=\"mng-dropdown-dialog-search-button\"\n type=\"button\"\n [label]=\"'general.search' | translate : {item: ''}\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openSelectDialog()\"></button>\n</div>\n\n<p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.search' | translate : {item: props.label!}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-dialog mng-formly-field-lookup-dialog\">\n <ng-template pTemplate=\"content\" mngDialogKeydownHandler>\n <mng-table\n [descriptor]=\"descriptor.dialogTableDescriptor!\"\n [dataProvider]=\"descriptor.dialogTableDataProvider\"\n [queryResult]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [selectionMode]=\"'single'\"\n [loading]=\"dialogIsLoading$\"\n [captionComponent]=\"config.table?.captionComponent\"\n [columnActionComponent]=\"config.table?.columnActionComponent\"\n [viewContainer]=\"viewContainer\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"onCaptionCmpInst($event)\"\n (columnActionComponentInstance)=\"onColumnActionCmpInst($event)\">\n </mng-table>\n <p-messages [value]=\"dialogMessages\"></p-messages>\n </ng-template>\n\n <ng-template pTemplate=\"footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.select' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"addItem()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n loadingIcon=\"pi pi-spin pi-spinner\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n" }]
213
- }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { mngTable: [{
212
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class]=\"'p-inputgroup mng-dropdown-dialog' + descriptor.inputClassName\" [class.p-inputtext-sm]=\"descriptor.isSizeSmall\" [class.p-inputtext-lg]=\"descriptor.isSizeLarge\">\n <input pInputText type=\"text\" [id]=\"$any(key)\" [readonly]=\"true\" [formlyAttributes]=\"field\" [formControl]=\"fieldLabelFormControl\" />\n @if (!props.required && formControl.value && !formControl.disabled) {\n <i class=\"mng-dropdown-clear-icon pi pi-times\" (click)=\"clear()\"></i>\n }\n <button\n pButton\n pRipple\n class=\"mng-dropdown-dialog-search-button\"\n type=\"button\"\n [label]=\"'general.search' | translate: {item: ''}\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openSelectDialog()\"></button>\n</div>\n\n<p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.search' | translate: {item: props.label!}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-dialog mng-formly-field-lookup-dialog\">\n <ng-template pTemplate=\"content\" mngDialogKeydownHandler>\n <mng-table\n [descriptor]=\"descriptor.dialogTableDescriptor!\"\n [dataProvider]=\"descriptor.dialogTableDataProvider\"\n [queryResult]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [selectionMode]=\"'single'\"\n [loading]=\"dialogIsLoading$\"\n [captionComponent]=\"config.table?.captionComponent\"\n [columnActionComponent]=\"config.table?.columnActionComponent\"\n [viewContainer]=\"viewContainer\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"onCaptionCmpInst($event)\"\n (columnActionComponentInstance)=\"onColumnActionCmpInst($event)\">\n </mng-table>\n <p-messages [value]=\"dialogMessages\"></p-messages>\n </ng-template>\n\n <ng-template pTemplate=\"footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.select' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"addItem()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n loadingIcon=\"pi pi-spin pi-spinner\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n" }]
213
+ }], ctorParameters: () => [{ type: i0.Injector }], propDecorators: { mngTable: [{
214
214
  type: ViewChild,
215
215
  args: [MngTableComponent]
216
216
  }] } });
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLWxvb2t1cC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtbG9va3VwLWRpYWxvZy9mb3JtbHktZmllbGQtbG9va3VwLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1sb29rdXAtZGlhbG9nL2Zvcm1seS1maWVsZC1sb29rdXAtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFnQix1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFxQixTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hJLE9BQU8sRUFBQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVwRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBYSxhQUFh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LFFBQVE7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBc3luY1BpcGUsIE5nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0FmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge0ZpZWxkVHlwZSwgRm9ybWx5TW9kdWxlfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7TWVzc2FnZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtCdXR0b25Nb2R1bGV9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7RGlhbG9nTW9kdWxlfSBmcm9tICdwcmltZW5nL2RpYWxvZyc7XG5pbXBvcnQge0lucHV0VGV4dE1vZHVsZX0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHtNZXNzYWdlc01vZHVsZX0gZnJvbSAncHJpbWVuZy9tZXNzYWdlcyc7XG5pbXBvcnQge1JpcHBsZU1vZHVsZX0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGRpc3RpbmN0VW50aWxDaGFuZ2VkfSBmcm9tICdyeGpzJztcbmltcG9ydCB7c3RhcnRXaXRofSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7TWVkaXVzUXVlcnlQYXJhbUJ1aWxkZXIsIE1lZGl1c1F1ZXJ5UmVzdWx0fSBmcm9tICcuLi8uLi8uLi8uLi8uLi9hcGkvbW9kZWxzJztcbmltcG9ydCB7RmllbGRMb29rdXBEZXNjcmlwdG9yfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kZXNjcmlwdG9ycy9lZGl0b3InO1xuaW1wb3J0IHtGaWVsZExvb2t1cENvbmZpZ30gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGVzY3JpcHRvcnMvaW50ZXJmYWNlcyc7XG5pbXBvcnQge01uZ0RpYWxvZ0tleWRvd25IYW5kbGVyRGlyZWN0aXZlfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7SVZpZXdDb250YWluZXIsIE1uZ0ludGVybmFsRXJyb3J9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01uZ0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7RXJyb3JVdGlsfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlscyc7XG5pbXBvcnQge01uZ1RhYmxlQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi8uLi90YWJsZXZpZXcnO1xuaW1wb3J0IHtNbmdGb3JtRWRpdG9yQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9lZGl0b3IvZm9ybS1lZGl0b3IuY29tcG9uZW50JztcbmltcG9ydCB7TW5nRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLCBNbmdGb3JtRmllbGRFdmVudERpYWxvZ1N1YnR5cGUsIE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW19IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01uZ0Zvcm1seUZpZWxkQ29uZmlnfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLWZvcm1seS1maWVsZC1sb29rdXAtZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2Zvcm1seS1maWVsZC1sb29rdXAtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAgICAgRm9ybWx5TW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBCdXR0b25Nb2R1bGUsXG4gICAgICAgIFJpcHBsZU1vZHVsZSxcbiAgICAgICAgRGlhbG9nTW9kdWxlLFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIE1uZ1RhYmxlQ29tcG9uZW50LFxuICAgICAgICBNZXNzYWdlc01vZHVsZSxcbiAgICAgICAgSW5wdXRUZXh0TW9kdWxlLFxuICAgICAgICBNbmdEaWFsb2dLZXlkb3duSGFuZGxlckRpcmVjdGl2ZVxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTW5nRm9ybWx5RmllbGRMb29rdXBEaWFsb2dDb21wb25lbnQ8VCwgRVQ+IGV4dGVuZHMgRmllbGRUeXBlPE1uZ0Zvcm1seUZpZWxkQ29uZmlnPiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBAVmlld0NoaWxkKE1uZ1RhYmxlQ29tcG9uZW50KSBwdWJsaWMgbW5nVGFibGU/OiBNbmdUYWJsZUNvbXBvbmVudDxhbnksIGFueT47XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IGluamVjdChNbmdMb2dnZXJTZXJ2aWNlKS5jcmVhdGUoJ01uZ0Zvcm1seUZpZWxkTG9va3VwRGlhbG9nQ29tcG9uZW50Jyk7XG5cbiAgICBwdWJsaWMgZGVzY3JpcHRvciE6IEZpZWxkTG9va3VwRGVzY3JpcHRvcjxULCBFVD47XG4gICAgcHVibGljIGNvbmZpZyE6IEZpZWxkTG9va3VwQ29uZmlnO1xuICAgIHB1YmxpYyBmaWVsZExhYmVsRm9ybUNvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG5cbiAgICBwdWJsaWMgaXRlbXNTdWJqZWN0OiBTdWJqZWN0PFQ+ID0gbmV3IFJlcGxheVN1YmplY3QoMSk7XG4gICAgcHVibGljIGl0ZW1zQXN5bmM6IE9ic2VydmFibGU8VD4gPSB0aGlzLml0ZW1zU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgYWRkSXRlbXNTdWJqZWN0OiBTdWJqZWN0PE1lZGl1c1F1ZXJ5UmVzdWx0PFQ+PiA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuICAgIHB1YmxpYyBhZGRJdGVtc0FzeW5jOiBPYnNlcnZhYmxlPE1lZGl1c1F1ZXJ5UmVzdWx0PFQ+PiA9IHRoaXMuYWRkSXRlbXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHVibGljIGRpYWxvZ1VzZURhdGFQcm92aWRlciA9IGZhbHNlO1xuICAgIHByaXZhdGUgZGlhbG9nRGF0YVByb3ZpZGVyU2VydmljZTogYW55ID0gbnVsbDtcbiAgICBwcml2YXRlIGRpYWxvZ0lzTG9hZGluZ1N1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcblxuICAgIHB1YmxpYyBpc0RpYWxvZ1Zpc2libGUgPSBmYWxzZTtcbiAgICBwdWJsaWMgZGlhbG9nQXJlSXRlbXNMb2FkZWQgPSBmYWxzZTtcbiAgICBwdWJsaWMgZGlhbG9nU2VsZWN0ZWRJdGVtOiBhbnkgPSBudWxsO1xuICAgIHB1YmxpYyBkaWFsb2dNZXNzYWdlczogTWVzc2FnZVtdID0gW107XG4gICAgcHVibGljIGRpYWxvZ0lzTG9hZGluZyQgPSB0aGlzLmRpYWxvZ0lzTG9hZGluZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lcj86IElWaWV3Q29udGFpbmVyPGFueSwgdW5rbm93bj47XG5cbiAgICBwcml2YXRlIGxvb2t1cERhdGFQcm92aWRlclN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc2NyaXB0b3IgPSB0aGlzLnByb3BzLmRlc2NyaXB0b3IgYXMgRmllbGRMb29rdXBEZXNjcmlwdG9yPFQsIEVUPjtcbiAgICAgICAgdGhpcy5wcm9wcy5maWVsZENvbXBvbmVudCA9IHRoaXM7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKCh0aGlzLnByb3BzLmZvcm1FZGl0b3JDb21wb25lbnQgYXMgTW5nRm9ybUVkaXRvckNvbXBvbmVudDx1bmtub3duPikudmlld0NvbnRhaW5lciQuc3Vic2NyaWJlKHZhbHVlID0+ICh0aGlzLnZpZXdDb250YWluZXIgPSB2YWx1ZSkpKTtcblxuICAgICAgICAvLyBlbWl0IGxpZmVjeWNsZSBldmVudFxuICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0uQ29tcG9uZW50TGlmZWN5Y2xlLCBNbmdGb3JtbHlGaWVsZExvb2t1cERpYWxvZ0NvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgZXZlbnRTdWJ0eXBlOiBNbmdGb3JtRmllbGRFdmVudENvbXBvbmVudFN1YnR5cGUuT05fSU5JVFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvbmZpZyA9IHRoaXMuZGVzY3JpcHRvci5jb25maWcgYXMgRmllbGRMb29rdXBDb25maWc7XG4gICAgICAgIGlmICghdGhpcy5kZXNjcmlwdG9yLmRpYWxvZ1RhYmxlRGF0YVByb3ZpZGVyICYmIHRoaXMuZGVzY3JpcHRvci5kYXRhUHJvdmlkZXI/LnNlcnZpY2VUeXBlKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1VzZURhdGFQcm92aWRlciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ0RhdGFQcm92aWRlclNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxhbnk+KHRoaXMuZGVzY3JpcHRvci5kYXRhUHJvdmlkZXIuc2VydmljZVR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaW5pdCB2YWx1ZXNcbiAgICAgICAgdGhpcy5zZXRGaWVsZExhYmVsVmFsdWUodGhpcy5mb3JtQ29udHJvbCEudmFsdWUpO1xuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLmZvcm1Db250cm9sIS52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIHN0YXJ0V2l0aCh0aGlzLmZvcm1Db250cm9sIS52YWx1ZSksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldiwgY3VycikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBhcmVQcm9wID0gdGhpcy5kZXNjcmlwdG9yLmRpYWxvZ1RhYmxlRGVzY3JpcHRvciEuZGF0YUtleVByb3BlcnR5ID8/IHRoaXMuZGVzY3JpcHRvci5kaWFsb2dUYWJsZURlc2NyaXB0b3IhLm1vZGVsLmlkUHJvcGVydHlOYW1lO1xuICAgICAgICAgICAgICAgIGlmIChjb21wYXJlUHJvcCAmJiB0eXBlb2YgcHJldiA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGN1cnIgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmV2W2NvbXBhcmVQcm9wXSA9PT0gY3Vycltjb21wYXJlUHJvcF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXYgPT09IGN1cnI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKS5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldEZpZWxkTGFiZWxWYWx1ZSh2KTtcbiAgICAgICAgICAgIHRoaXMuaXRlbXNTdWJqZWN0Lm5leHQodik7XG4gICAgICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0uVmFsdWVDaGFuZ2UsIE1uZ0Zvcm1seUZpZWxkTG9va3VwRGlhbG9nQ29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHZcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wc1snb25WYWx1ZUNoYW5nZSddKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wc1snb25WYWx1ZUNoYW5nZSddKHRoaXMuZmllbGQsIHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5Db21wb25lbnRMaWZlY3ljbGUsIE1uZ0Zvcm1seUZpZWxkTG9va3VwRGlhbG9nQ29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IE1uZ0Zvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZS5PTl9WSUVXX0lOSVRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vIHdhcm5pbmc6IGZvcm1seSBjYWxscyBvbiBkZXN0cm95IGJlZm9yZSBvbiBpbml0XG5cbiAgICAgICAgdGhpcy5sb29rdXBEYXRhUHJvdmlkZXJTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcblxuICAgICAgICAvLyBlbWl0IGxpZmVjeWNsZSBldmVudFxuICAgICAgICB0aGlzLmRlc2NyaXB0b3I/Lm5leHRFdmVudChNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtLkNvbXBvbmVudExpZmVjeWNsZSwgTW5nRm9ybWx5RmllbGRMb29rdXBEaWFsb2dDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogTW5nRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX0RFU1RST1lcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3BlblNlbGVjdERpYWxvZygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpYWxvZ0FyZUl0ZW1zTG9hZGVkICYmIHRoaXMuZGlhbG9nVXNlRGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ0lzTG9hZGluZ1N1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1CdWlsZGVyID0gTWVkaXVzUXVlcnlQYXJhbUJ1aWxkZXIuY3JlYXRlKDUwKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlc2NyaXB0b3IuZGlhbG9nVGFibGVEZXNjcmlwdG9yIS5oYXNEZWZhdWx0U29ydCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRvci5kaWFsb2dUYWJsZURlc2NyaXB0b3IhLmRlZmF1bHRTb3J0UHJvcGVydHkuZm9yRWFjaCgocCwgaWR4KSA9PlxuICAgICAgICAgICAgICAgICAgICBxdWVyeVBhcmFtQnVpbGRlci53aXRoU29ydChwLCB0aGlzLmRlc2NyaXB0b3IuZGlhbG9nVGFibGVEZXNjcmlwdG9yIS5kZWZhdWx0U29ydEFzY1tpZHhdKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxvb2t1cERhdGFQcm92aWRlclN1YnNjcmlwdGlvbiA9IHRoaXMuZGVzY3JpcHRvci5kYXRhUHJvdmlkZXI/Lmxvb2t1cChxdWVyeVBhcmFtQnVpbGRlci5idWlsZCgpLCB0aGlzLmRpYWxvZ0RhdGFQcm92aWRlclNlcnZpY2UpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogcmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbXFyID0gbmV3IE1lZGl1c1F1ZXJ5UmVzdWx0PFQ+KCk7XG4gICAgICAgICAgICAgICAgICAgIG1xci5wYWdlRGF0YSA9IHJlcztcbiAgICAgICAgICAgICAgICAgICAgbXFyLmFsbERhdGFDb3VudCA9IHJlcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkSXRlbXNTdWJqZWN0Lm5leHQobXFyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dBcmVJdGVtc0xvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nSXNMb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0uRGF0YVByb3ZpZGVyLCBNbmdGb3JtbHlGaWVsZExvb2t1cERpYWxvZ0NvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTdWJ0eXBlOiAnTG9va3VwTmV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVJlc3VsdDogbXFyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nSXNMb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXNjcmlwdG9yLm5leHRFdmVudChNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtLkRhdGFQcm92aWRlciwgTW5nRm9ybWx5RmllbGRMb29rdXBEaWFsb2dDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U3VidHlwZTogJ0xvb2t1cEVycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5UmVzdWx0OiBlcnJcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW5nRXJyb3IgPSBFcnJvclV0aWwuZnJvbVN1YnNjcmliZUVycm9yKGVyciwgJ01uZ0Zvcm1seUZpZWxkTG9va3VwRGlhbG9nQ29tcG9uZW50RXJyb3InLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVBhcmFtOiBxdWVyeVBhcmFtQnVpbGRlci5idWlsZCgpXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2cobW5nRXJyb3IsIEVycm9yVXRpbC5nZXRFcnJvckxvZ0xldmVsKG1uZ0Vycm9yKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kaWFsb2dTZWxlY3RlZEl0ZW0gPSBudWxsO1xuICAgICAgICB0aGlzLmlzRGlhbG9nVmlzaWJsZSA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG5cbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yLm5leHRFdmVudChNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtLkRpYWxvZ0xpZmVjeWNsZSwgTW5nRm9ybWx5RmllbGRMb29rdXBEaWFsb2dDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogTW5nRm9ybUZpZWxkRXZlbnREaWFsb2dTdWJ0eXBlLlZJU0lCSUxJVFksXG4gICAgICAgICAgICBkaWFsb2dWaXNpYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uU2VsZWN0aW9uQ2hhbmdlKGl0ZW06IGFueSkge1xuICAgICAgICB0aGlzLmRpYWxvZ1NlbGVjdGVkSXRlbSA9IGl0ZW07XG4gICAgfVxuXG4gICAgb25DYXB0aW9uQ21wSW5zdChpbnN0YW5jZTogYW55KSB7XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5EaWFsb2dMaWZlY3ljbGUsIE1uZ0Zvcm1seUZpZWxkTG9va3VwRGlhbG9nQ29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IE1uZ0Zvcm1GaWVsZEV2ZW50RGlhbG9nU3VidHlwZS5UQUJMRV9DQVBUSU9OX0NPTVBPTkVOVF9JTlNUQU5DRSxcbiAgICAgICAgICAgIGNhcHRpb25Db21wb25lbnRJbnN0YW5jZTogaW5zdGFuY2VcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25Db2x1bW5BY3Rpb25DbXBJbnN0KGluc3RhbmNlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yLm5leHRFdmVudChNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtLkRpYWxvZ0xpZmVjeWNsZSwgTW5nRm9ybWx5RmllbGRMb29rdXBEaWFsb2dDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogTW5nRm9ybUZpZWxkRXZlbnREaWFsb2dTdWJ0eXBlLlRBQkxFX0NPTFVNTl9BQ1RJT05TX0NPTVBPTkVOVF9JTlNUQU5DRSxcbiAgICAgICAgICAgIGNhcHRpb25Db21wb25lbnRJbnN0YW5jZTogaW5zdGFuY2VcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2xlYXIoKSB7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodW5kZWZpbmVkKTtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICAgICAgdGhpcy5kaWFsb2dTZWxlY3RlZEl0ZW0gPSBudWxsO1xuICAgICAgICB0aGlzLmRpYWxvZ0FyZUl0ZW1zTG9hZGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaGlkZURpYWxvZygpO1xuICAgIH1cblxuICAgIGhpZGVEaWFsb2coKSB7XG4gICAgICAgIHRoaXMuaXNEaWFsb2dWaXNpYmxlID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yLm5leHRFdmVudChNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtLkRpYWxvZ0xpZmVjeWNsZSwgTW5nRm9ybWx5RmllbGRMb29rdXBEaWFsb2dDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogTW5nRm9ybUZpZWxkRXZlbnREaWFsb2dTdWJ0eXBlLlZJU0lCSUxJVFksXG4gICAgICAgICAgICBkaWFsb2dWaXNpYmxlOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGRJdGVtKCkge1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuZGlhbG9nU2VsZWN0ZWRJdGVtKTtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5kaWFsb2dTZWxlY3RlZEl0ZW0gPSBudWxsO1xuICAgICAgICB0aGlzLmRpYWxvZ0FyZUl0ZW1zTG9hZGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaGlkZURpYWxvZygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RmllbGRMYWJlbFZhbHVlKHZhbHVlOiBUKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGRMYWJlbEZvcm1Db250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgY29uc3QgbGFiZWxQcm9wZXJ0eSA9IHRoaXMuZGVzY3JpcHRvci5pdGVtc0xhYmVsUHJvcGVydHkgPz8gdGhpcy5kZXNjcmlwdG9yLmRpYWxvZ1RhYmxlRGVzY3JpcHRvcj8ubW9kZWwudGl0bGVQcm9wZXJ0eU5hbWU7XG4gICAgICAgICAgICBpZiAoIWxhYmVsUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTW5nSW50ZXJuYWxFcnJvcignQ291bGQgbm90IGRldGVybWluZSBsYWJlbCBwcm9wZXJ0eS4nLCB7bmFtZTogJ01uZ0Zvcm1seUZpZWxkTG9va3VwRGlhbG9nRXJyb3InfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmZpZWxkTGFiZWxGb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZVtsYWJlbFByb3BlcnR5IGFzIGtleW9mIG9iamVjdF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWVsZExhYmVsRm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBbY2xhc3NdPVwiJ3AtaW5wdXRncm91cCBtbmctZHJvcGRvd24tZGlhbG9nJyArIGRlc2NyaXB0b3IuaW5wdXRDbGFzc05hbWVcIiBbY2xhc3MucC1pbnB1dHRleHQtc21dPVwiZGVzY3JpcHRvci5pc1NpemVTbWFsbFwiIFtjbGFzcy5wLWlucHV0dGV4dC1sZ109XCJkZXNjcmlwdG9yLmlzU2l6ZUxhcmdlXCI+XG4gICAgPGlucHV0IHBJbnB1dFRleHQgdHlwZT1cInRleHRcIiBbaWRdPVwiJGFueShrZXkpXCIgW3JlYWRvbmx5XT1cInRydWVcIiBbZm9ybWx5QXR0cmlidXRlc109XCJmaWVsZFwiIFtmb3JtQ29udHJvbF09XCJmaWVsZExhYmVsRm9ybUNvbnRyb2xcIiAvPlxuICAgIDxpIGNsYXNzPVwibW5nLWRyb3Bkb3duLWNsZWFyLWljb24gcGkgcGktdGltZXNcIiAoY2xpY2spPVwiY2xlYXIoKVwiICpuZ0lmPVwiIXByb3BzLnJlcXVpcmVkICYmIGZvcm1Db250cm9sPy52YWx1ZSAmJiAhZm9ybUNvbnRyb2w/LmRpc2FibGVkXCI+PC9pPlxuICAgIDxidXR0b25cbiAgICAgICAgcEJ1dHRvblxuICAgICAgICBwUmlwcGxlXG4gICAgICAgIGNsYXNzPVwibW5nLWRyb3Bkb3duLWRpYWxvZy1zZWFyY2gtYnV0dG9uXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFtsYWJlbF09XCInZ2VuZXJhbC5zZWFyY2gnIHwgdHJhbnNsYXRlIDoge2l0ZW06ICcnfVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJmb3JtQ29udHJvbC5kaXNhYmxlZFwiXG4gICAgICAgIChjbGljayk9XCJvcGVuU2VsZWN0RGlhbG9nKClcIj48L2J1dHRvbj5cbjwvZGl2PlxuXG48cC1kaWFsb2dcbiAgICBbKHZpc2libGUpXT1cImlzRGlhbG9nVmlzaWJsZVwiXG4gICAgW2RyYWdnYWJsZV09XCJmYWxzZVwiXG4gICAgW2hlYWRlcl09XCInZ2VuZXJhbC5zZWFyY2gnIHwgdHJhbnNsYXRlIDoge2l0ZW06IHByb3BzLmxhYmVsIX1cIlxuICAgIFttb2RhbF09XCJ0cnVlXCJcbiAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgIHN0eWxlQ2xhc3M9XCJwLWZsdWlkIG1uZy1kaWFsb2cgbW5nLWZvcm1seS1maWVsZC1sb29rdXAtZGlhbG9nXCI+XG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRlbnRcIiBtbmdEaWFsb2dLZXlkb3duSGFuZGxlcj5cbiAgICAgICAgPG1uZy10YWJsZVxuICAgICAgICAgICAgW2Rlc2NyaXB0b3JdPVwiZGVzY3JpcHRvci5kaWFsb2dUYWJsZURlc2NyaXB0b3IhXCJcbiAgICAgICAgICAgIFtkYXRhUHJvdmlkZXJdPVwiZGVzY3JpcHRvci5kaWFsb2dUYWJsZURhdGFQcm92aWRlclwiXG4gICAgICAgICAgICBbcXVlcnlSZXN1bHRdPVwiYWRkSXRlbXNBc3luY1wiXG4gICAgICAgICAgICBbc2VsZWN0aW9uRW5hYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cIidzaW5nbGUnXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cImRpYWxvZ0lzTG9hZGluZyRcIlxuICAgICAgICAgICAgW2NhcHRpb25Db21wb25lbnRdPVwiY29uZmlnLnRhYmxlPy5jYXB0aW9uQ29tcG9uZW50XCJcbiAgICAgICAgICAgIFtjb2x1bW5BY3Rpb25Db21wb25lbnRdPVwiY29uZmlnLnRhYmxlPy5jb2x1bW5BY3Rpb25Db21wb25lbnRcIlxuICAgICAgICAgICAgW3ZpZXdDb250YWluZXJdPVwidmlld0NvbnRhaW5lclwiXG4gICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgKGNhcHRpb25Db21wb25lbnRJbnN0YW5jZSk9XCJvbkNhcHRpb25DbXBJbnN0KCRldmVudClcIlxuICAgICAgICAgICAgKGNvbHVtbkFjdGlvbkNvbXBvbmVudEluc3RhbmNlKT1cIm9uQ29sdW1uQWN0aW9uQ21wSW5zdCgkZXZlbnQpXCI+XG4gICAgICAgIDwvbW5nLXRhYmxlPlxuICAgICAgICA8cC1tZXNzYWdlcyBbdmFsdWVdPVwiZGlhbG9nTWVzc2FnZXNcIj48L3AtbWVzc2FnZXM+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIj5cbiAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIFtsYWJlbF09XCInZ2VuZXJhbC5jYW5jZWwnIHwgdHJhbnNsYXRlXCIgaWNvbj1cInBpIHBpLXRpbWVzXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0XCIgKGNsaWNrKT1cImhpZGVEaWFsb2coKVwiPjwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCInZ2VuZXJhbC5zZWxlY3QnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIGljb249XCJwaSBwaS1jaGVja1wiXG4gICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFkZEl0ZW0oKVwiXG4gICAgICAgICAgICBbbG9hZGluZ109XCIoZGlhbG9nSXNMb2FkaW5nJCB8IGFzeW5jKSA/PyBmYWxzZVwiXG4gICAgICAgICAgICBsb2FkaW5nSWNvbj1cInBpIHBpLXNwaW4gcGktc3Bpbm5lclwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5kaXNhYmxlZFwiPjwvYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L3AtZGlhbG9nPlxuIl19
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLWxvb2t1cC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtbG9va3VwLWRpYWxvZy9mb3JtbHktZmllbGQtbG9va3VwLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1sb29rdXAtZGlhbG9nL2Zvcm1seS1maWVsZC1sb29rdXAtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQWdCLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQXFCLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRWhFLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDekQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXBELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFhLGFBQWEsRUFBeUIsb0JB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LGdDQUFnQztxQkFDbkMsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07NkVBR1YsUUFBUTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FzeW5jUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7RmllbGRUeXBlLCBGb3JtbHlNb2R1bGV9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtNZXNzYWdlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0J1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHtEaWFsb2dNb2R1bGV9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcbmltcG9ydCB7SW5wdXRUZXh0TW9kdWxlfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XG5pbXBvcnQge01lc3NhZ2VzTW9kdWxlfSBmcm9tICdwcmltZW5nL21lc3NhZ2VzJztcbmltcG9ydCB7UmlwcGxlTW9kdWxlfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQge09ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZGlzdGluY3RVbnRpbENoYW5nZWR9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtzdGFydFdpdGh9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtNZWRpdXNRdWVyeVBhcmFtQnVpbGRlciwgTWVkaXVzUXVlcnlSZXN1bHR9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2FwaS9tb2RlbHMnO1xuaW1wb3J0IHtGaWVsZExvb2t1cERlc2NyaXB0b3J9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2Rlc2NyaXB0b3JzL2VkaXRvcic7XG5pbXBvcnQge0ZpZWxkTG9va3VwQ29uZmlnfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kZXNjcmlwdG9ycy9pbnRlcmZhY2VzJztcbmltcG9ydCB7TW5nRGlhbG9nS2V5ZG93bkhhbmRsZXJEaXJlY3RpdmV9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHt0b09ic2VydmFibGV9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2hlbHBlcnMvY29lcmNpb24nO1xuaW1wb3J0IHtJVmlld0NvbnRhaW5lciwgTW5nSW50ZXJuYWxFcnJvcn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7TW5nTG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtFcnJvclV0aWx9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7TW5nVGFibGVDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uLy4uL3RhYmxldmlldyc7XG5pbXBvcnQge01uZ0Zvcm1FZGl0b3JDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL2VkaXRvci9mb3JtLWVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHtNbmdGb3JtRmllbGRFdmVudENvbXBvbmVudFN1YnR5cGUsIE1uZ0Zvcm1GaWVsZEV2ZW50RGlhbG9nU3VidHlwZSwgTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bX0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7TW5nRm9ybWx5RmllbGRDb25maWd9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctZm9ybWx5LWZpZWxkLWxvb2t1cC1kaWFsb2cnLFxuICAgIHRlbXBsYXRlVXJsOiAnZm9ybWx5LWZpZWxkLWxvb2t1cC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgICBGb3JtbHlNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgUmlwcGxlTW9kdWxlLFxuICAgICAgICBEaWFsb2dNb2R1bGUsXG4gICAgICAgIEFzeW5jUGlwZSxcbiAgICAgICAgTW5nVGFibGVDb21wb25lbnQsXG4gICAgICAgIE1lc3NhZ2VzTW9kdWxlLFxuICAgICAgICBJbnB1dFRleHRNb2R1bGUsXG4gICAgICAgIE1uZ0RpYWxvZ0tleWRvd25IYW5kbGVyRGlyZWN0aXZlXG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBNbmdGb3JtbHlGaWVsZExvb2t1cERpYWxvZ0NvbXBvbmVudDxULCBFVD4gZXh0ZW5kcyBGaWVsZFR5cGU8TW5nRm9ybWx5RmllbGRDb25maWc+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIEBWaWV3Q2hpbGQoTW5nVGFibGVDb21wb25lbnQpIHB1YmxpYyBtbmdUYWJsZT86IE1uZ1RhYmxlQ29tcG9uZW50PGFueSwgYW55PjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gaW5qZWN0KE1uZ0xvZ2dlclNlcnZpY2UpLmNyZWF0ZSgnTW5nRm9ybWx5RmllbGRMb29rdXBEaWFsb2dDb21wb25lbnQnKTtcblxuICAgIHB1YmxpYyBkZXNjcmlwdG9yITogRmllbGRMb29rdXBEZXNjcmlwdG9yPFQsIEVUPjtcbiAgICBwdWJsaWMgY29uZmlnITogRmllbGRMb29rdXBDb25maWc7XG4gICAgcHVibGljIGZpZWxkTGFiZWxGb3JtQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcblxuICAgIHB1YmxpYyBpdGVtc1N1YmplY3Q6IFN1YmplY3Q8VD4gPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcbiAgICBwdWJsaWMgaXRlbXNBc3luYzogT2JzZXJ2YWJsZTxUPiA9IHRoaXMuaXRlbXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBhZGRJdGVtc1N1YmplY3Q6IFN1YmplY3Q8TWVkaXVzUXVlcnlSZXN1bHQ8VD4+ID0gbmV3IFJlcGxheVN1YmplY3QoMSk7XG4gICAgcHVibGljIGFkZEl0ZW1zQXN5bmM6IE9ic2VydmFibGU8TWVkaXVzUXVlcnlSZXN1bHQ8VD4+ID0gdGhpcy5hZGRJdGVtc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBwdWJsaWMgZGlhbG9nVXNlRGF0YVByb3ZpZGVyID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBkaWFsb2dEYXRhUHJvdmlkZXJTZXJ2aWNlOiBhbnkgPSBudWxsO1xuICAgIHByaXZhdGUgZGlhbG9nSXNMb2FkaW5nU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+KDEpO1xuXG4gICAgcHVibGljIGlzRGlhbG9nVmlzaWJsZSA9IGZhbHNlO1xuICAgIHB1YmxpYyBkaWFsb2dBcmVJdGVtc0xvYWRlZCA9IGZhbHNlO1xuICAgIHB1YmxpYyBkaWFsb2dTZWxlY3RlZEl0ZW06IGFueSA9IG51bGw7XG4gICAgcHVibGljIGRpYWxvZ01lc3NhZ2VzOiBNZXNzYWdlW10gPSBbXTtcbiAgICBwdWJsaWMgZGlhbG9nSXNMb2FkaW5nJCA9IHRoaXMuZGlhbG9nSXNMb2FkaW5nU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIHB1YmxpYyB2aWV3Q29udGFpbmVyPzogSVZpZXdDb250YWluZXI8YW55LCB1bmtub3duPjtcblxuICAgIHByaXZhdGUgbG9va3VwRGF0YVByb3ZpZGVyU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvciA9IHRoaXMucHJvcHMuZGVzY3JpcHRvciBhcyBGaWVsZExvb2t1cERlc2NyaXB0b3I8VCwgRVQ+O1xuICAgICAgICB0aGlzLnByb3BzLmZpZWxkQ29tcG9uZW50ID0gdGhpcztcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goKHRoaXMucHJvcHMuZm9ybUVkaXRvckNvbXBvbmVudCBhcyBNbmdGb3JtRWRpdG9yQ29tcG9uZW50PHVua25vd24+KS52aWV3Q29udGFpbmVyJC5zdWJzY3JpYmUodmFsdWUgPT4gKHRoaXMudmlld0NvbnRhaW5lciA9IHZhbHVlKSkpO1xuXG4gICAgICAgIC8vIGVtaXQgbGlmZWN5Y2xlIGV2ZW50XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5Db21wb25lbnRMaWZlY3ljbGUsIE1uZ0Zvcm1seUZpZWxkTG9va3VwRGlhbG9nQ29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IE1uZ0Zvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZS5PTl9JTklUXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY29uZmlnID0gdGhpcy5kZXNjcmlwdG9yLmNvbmZpZyBhcyBGaWVsZExvb2t1cENvbmZpZztcbiAgICAgICAgaWYgKCF0aGlzLmRlc2NyaXB0b3IuZGlhbG9nVGFibGVEYXRhUHJvdmlkZXIgJiYgdGhpcy5kZXNjcmlwdG9yLmRhdGFQcm92aWRlcj8uc2VydmljZVR5cGUpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nVXNlRGF0YVByb3ZpZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nRGF0YVByb3ZpZGVyU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PGFueT4odGhpcy5kZXNjcmlwdG9yLmRhdGFQcm92aWRlci5zZXJ2aWNlVHlwZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpbml0IHZhbHVlc1xuICAgICAgICB0aGlzLnNldEZpZWxkTGFiZWxWYWx1ZSh0aGlzLmZvcm1Db250cm9sIS52YWx1ZSk7XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybUNvbnRyb2whLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMuZm9ybUNvbnRyb2whLnZhbHVlKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcGFyZVByb3AgPSB0aGlzLmRlc2NyaXB0b3IuZGlhbG9nVGFibGVEZXNjcmlwdG9yIS50cmFja1Byb3BlcnR5ID8/IHRoaXMuZGVzY3JpcHRvci5kaWFsb2dUYWJsZURlc2NyaXB0b3IhLm1vZGVsLmlkUHJvcGVydHk7XG4gICAgICAgICAgICAgICAgaWYgKGNvbXBhcmVQcm9wICYmIHR5cGVvZiBwcmV2ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgY3VyciA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXZbY29tcGFyZVByb3BdID09PSBjdXJyW2NvbXBhcmVQcm9wXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldiA9PT0gY3VycjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApLnN1YnNjcmliZSh2ID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0RmllbGRMYWJlbFZhbHVlKHYpO1xuICAgICAgICAgICAgdGhpcy5pdGVtc1N1YmplY3QubmV4dCh2KTtcbiAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5WYWx1ZUNoYW5nZSwgTW5nRm9ybWx5RmllbGRMb29rdXBEaWFsb2dDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdlxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BzWydvblZhbHVlQ2hhbmdlJ10pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzWydvblZhbHVlQ2hhbmdlJ10odGhpcy5maWVsZCwgdik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yLm5leHRFdmVudChNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtLkNvbXBvbmVudExpZmVjeWNsZSwgTW5nRm9ybWx5RmllbGRMb29rdXBEaWFsb2dDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogTW5nRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX1ZJRVdfSU5JVFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gd2FybmluZzogZm9ybWx5IGNhbGxzIG9uIGRlc3Ryb3kgYmVmb3JlIG9uIGluaXRcblxuICAgICAgICB0aGlzLmxvb2t1cERhdGFQcm92aWRlclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuXG4gICAgICAgIC8vIGVtaXQgbGlmZWN5Y2xlIGV2ZW50XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvcj8ubmV4dEV2ZW50KE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0uQ29tcG9uZW50TGlmZWN5Y2xlLCBNbmdGb3JtbHlGaWVsZExvb2t1cERpYWxvZ0NvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgZXZlbnRTdWJ0eXBlOiBNbmdGb3JtRmllbGRFdmVudENvbXBvbmVudFN1YnR5cGUuT05fREVTVFJPWVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvcGVuU2VsZWN0RGlhbG9nKCkge1xuICAgICAgICBpZiAoIXRoaXMuZGlhbG9nQXJlSXRlbXNMb2FkZWQgJiYgdGhpcy5kaWFsb2dVc2VEYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nSXNMb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgY29uc3QgcXVlcnlQYXJhbUJ1aWxkZXIgPSBNZWRpdXNRdWVyeVBhcmFtQnVpbGRlci5jcmVhdGUoNTApO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci5kaWFsb2dUYWJsZURlc2NyaXB0b3IhLmhhc0RlZmF1bHRTb3J0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXNjcmlwdG9yLmRpYWxvZ1RhYmxlRGVzY3JpcHRvciEuZGVmYXVsdFNvcnRQcm9wZXJ0eS5mb3JFYWNoKChwLCBpZHgpID0+XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1CdWlsZGVyLndpdGhTb3J0KHAsIHRoaXMuZGVzY3JpcHRvci5kaWFsb2dUYWJsZURlc2NyaXB0b3IhLmRlZmF1bHRTb3J0QXNjW2lkeF0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubG9va3VwRGF0YVByb3ZpZGVyU3Vic2NyaXB0aW9uID0gdG9PYnNlcnZhYmxlKHRoaXMuZGVzY3JpcHRvci5kYXRhUHJvdmlkZXI/Lmxvb2t1cChxdWVyeVBhcmFtQnVpbGRlci5idWlsZCgpLCB0aGlzLmRpYWxvZ0RhdGFQcm92aWRlclNlcnZpY2UpKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1xciA9IG5ldyBNZWRpdXNRdWVyeVJlc3VsdDxUPigpO1xuICAgICAgICAgICAgICAgICAgICBtcXIucGFnZURhdGEgPSByZXMgPz8gW107XG4gICAgICAgICAgICAgICAgICAgIG1xci5hbGxEYXRhQ291bnQgPSByZXM/Lmxlbmd0aCA/PyAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEl0ZW1zU3ViamVjdC5uZXh0KG1xcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nQXJlSXRlbXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0lzTG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXNjcmlwdG9yLm5leHRFdmVudChNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtLkRhdGFQcm92aWRlciwgTW5nRm9ybWx5RmllbGRMb29rdXBEaWFsb2dDb21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U3VidHlwZTogJ0xvb2t1cE5leHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlSZXN1bHQ6IG1xclxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0lzTG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5EYXRhUHJvdmlkZXIsIE1uZ0Zvcm1seUZpZWxkTG9va3VwRGlhbG9nQ29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudFN1YnR5cGU6ICdMb29rdXBFcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVJlc3VsdDogZXJyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1uZ0Vycm9yID0gRXJyb3JVdGlsLmZyb21TdWJzY3JpYmVFcnJvcihlcnIsICdNbmdGb3JtbHlGaWVsZExvb2t1cERpYWxvZ0NvbXBvbmVudEVycm9yJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbTogcXVlcnlQYXJhbUJ1aWxkZXIuYnVpbGQoKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKG1uZ0Vycm9yLCBFcnJvclV0aWwuZ2V0RXJyb3JMb2dMZXZlbChtbmdFcnJvcikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGlhbG9nU2VsZWN0ZWRJdGVtID0gbnVsbDtcbiAgICAgICAgdGhpcy5pc0RpYWxvZ1Zpc2libGUgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuXG4gICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5EaWFsb2dMaWZlY3ljbGUsIE1uZ0Zvcm1seUZpZWxkTG9va3VwRGlhbG9nQ29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IE1uZ0Zvcm1GaWVsZEV2ZW50RGlhbG9nU3VidHlwZS5WSVNJQklMSVRZLFxuICAgICAgICAgICAgZGlhbG9nVmlzaWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblNlbGVjdGlvbkNoYW5nZShpdGVtOiBhbnkpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dTZWxlY3RlZEl0ZW0gPSBpdGVtO1xuICAgIH1cblxuICAgIG9uQ2FwdGlvbkNtcEluc3QoaW5zdGFuY2U6IGFueSkge1xuICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0uRGlhbG9nTGlmZWN5Y2xlLCBNbmdGb3JtbHlGaWVsZExvb2t1cERpYWxvZ0NvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgZXZlbnRTdWJ0eXBlOiBNbmdGb3JtRmllbGRFdmVudERpYWxvZ1N1YnR5cGUuVEFCTEVfQ0FQVElPTl9DT01QT05FTlRfSU5TVEFOQ0UsXG4gICAgICAgICAgICBjYXB0aW9uQ29tcG9uZW50SW5zdGFuY2U6IGluc3RhbmNlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uQ29sdW1uQWN0aW9uQ21wSW5zdChpbnN0YW5jZTogYW55KSB7XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5EaWFsb2dMaWZlY3ljbGUsIE1uZ0Zvcm1seUZpZWxkTG9va3VwRGlhbG9nQ29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IE1uZ0Zvcm1GaWVsZEV2ZW50RGlhbG9nU3VidHlwZS5UQUJMRV9DT0xVTU5fQUNUSU9OU19DT01QT05FTlRfSU5TVEFOQ0UsXG4gICAgICAgICAgICBjYXB0aW9uQ29tcG9uZW50SW5zdGFuY2U6IGluc3RhbmNlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNsZWFyKCkge1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIHRoaXMuZGlhbG9nU2VsZWN0ZWRJdGVtID0gbnVsbDtcbiAgICAgICAgdGhpcy5kaWFsb2dBcmVJdGVtc0xvYWRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmhpZGVEaWFsb2coKTtcbiAgICB9XG5cbiAgICBoaWRlRGlhbG9nKCkge1xuICAgICAgICB0aGlzLmlzRGlhbG9nVmlzaWJsZSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5EaWFsb2dMaWZlY3ljbGUsIE1uZ0Zvcm1seUZpZWxkTG9va3VwRGlhbG9nQ29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IE1uZ0Zvcm1GaWVsZEV2ZW50RGlhbG9nU3VidHlwZS5WSVNJQklMSVRZLFxuICAgICAgICAgICAgZGlhbG9nVmlzaWJsZTogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWRkSXRlbSgpIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmRpYWxvZ1NlbGVjdGVkSXRlbSk7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMuZGlhbG9nU2VsZWN0ZWRJdGVtID0gbnVsbDtcbiAgICAgICAgdGhpcy5kaWFsb2dBcmVJdGVtc0xvYWRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmhpZGVEaWFsb2coKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEZpZWxkTGFiZWxWYWx1ZSh2YWx1ZTogVCkge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkTGFiZWxGb3JtQ29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsUHJvcGVydHkgPSB0aGlzLmRlc2NyaXB0b3Iub3B0aW9uc0xhYmVsUHJvcGVydHkgPz8gdGhpcy5kZXNjcmlwdG9yLmRpYWxvZ1RhYmxlRGVzY3JpcHRvcj8ubW9kZWwudGl0bGVQcm9wZXJ0eTtcbiAgICAgICAgICAgIGlmICghbGFiZWxQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBNbmdJbnRlcm5hbEVycm9yKCdDb3VsZCBub3QgZGV0ZXJtaW5lIGxhYmVsIHByb3BlcnR5LicsIHtuYW1lOiAnTW5nRm9ybWx5RmllbGRMb29rdXBEaWFsb2dFcnJvcid9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZmllbGRMYWJlbEZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlW2xhYmVsUHJvcGVydHkgYXMga2V5b2Ygb2JqZWN0XSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkTGFiZWxGb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IFtjbGFzc109XCIncC1pbnB1dGdyb3VwIG1uZy1kcm9wZG93bi1kaWFsb2cnICsgZGVzY3JpcHRvci5pbnB1dENsYXNzTmFtZVwiIFtjbGFzcy5wLWlucHV0dGV4dC1zbV09XCJkZXNjcmlwdG9yLmlzU2l6ZVNtYWxsXCIgW2NsYXNzLnAtaW5wdXR0ZXh0LWxnXT1cImRlc2NyaXB0b3IuaXNTaXplTGFyZ2VcIj5cbiAgICA8aW5wdXQgcElucHV0VGV4dCB0eXBlPVwidGV4dFwiIFtpZF09XCIkYW55KGtleSlcIiBbcmVhZG9ubHldPVwidHJ1ZVwiIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCIgW2Zvcm1Db250cm9sXT1cImZpZWxkTGFiZWxGb3JtQ29udHJvbFwiIC8+XG4gICAgQGlmICghcHJvcHMucmVxdWlyZWQgJiYgZm9ybUNvbnRyb2wudmFsdWUgJiYgIWZvcm1Db250cm9sLmRpc2FibGVkKSB7XG4gICAgICAgIDxpIGNsYXNzPVwibW5nLWRyb3Bkb3duLWNsZWFyLWljb24gcGkgcGktdGltZXNcIiAoY2xpY2spPVwiY2xlYXIoKVwiPjwvaT5cbiAgICB9XG4gICAgPGJ1dHRvblxuICAgICAgICBwQnV0dG9uXG4gICAgICAgIHBSaXBwbGVcbiAgICAgICAgY2xhc3M9XCJtbmctZHJvcGRvd24tZGlhbG9nLXNlYXJjaC1idXR0b25cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2xhYmVsXT1cIidnZW5lcmFsLnNlYXJjaCcgfCB0cmFuc2xhdGU6IHtpdGVtOiAnJ31cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybUNvbnRyb2wuZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwib3BlblNlbGVjdERpYWxvZygpXCI+PC9idXR0b24+XG48L2Rpdj5cblxuPHAtZGlhbG9nXG4gICAgWyh2aXNpYmxlKV09XCJpc0RpYWxvZ1Zpc2libGVcIlxuICAgIFtkcmFnZ2FibGVdPVwiZmFsc2VcIlxuICAgIFtoZWFkZXJdPVwiJ2dlbmVyYWwuc2VhcmNoJyB8IHRyYW5zbGF0ZToge2l0ZW06IHByb3BzLmxhYmVsIX1cIlxuICAgIFttb2RhbF09XCJ0cnVlXCJcbiAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgIHN0eWxlQ2xhc3M9XCJwLWZsdWlkIG1uZy1kaWFsb2cgbW5nLWZvcm1seS1maWVsZC1sb29rdXAtZGlhbG9nXCI+XG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRlbnRcIiBtbmdEaWFsb2dLZXlkb3duSGFuZGxlcj5cbiAgICAgICAgPG1uZy10YWJsZVxuICAgICAgICAgICAgW2Rlc2NyaXB0b3JdPVwiZGVzY3JpcHRvci5kaWFsb2dUYWJsZURlc2NyaXB0b3IhXCJcbiAgICAgICAgICAgIFtkYXRhUHJvdmlkZXJdPVwiZGVzY3JpcHRvci5kaWFsb2dUYWJsZURhdGFQcm92aWRlclwiXG4gICAgICAgICAgICBbcXVlcnlSZXN1bHRdPVwiYWRkSXRlbXNBc3luY1wiXG4gICAgICAgICAgICBbc2VsZWN0aW9uRW5hYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cIidzaW5nbGUnXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cImRpYWxvZ0lzTG9hZGluZyRcIlxuICAgICAgICAgICAgW2NhcHRpb25Db21wb25lbnRdPVwiY29uZmlnLnRhYmxlPy5jYXB0aW9uQ29tcG9uZW50XCJcbiAgICAgICAgICAgIFtjb2x1bW5BY3Rpb25Db21wb25lbnRdPVwiY29uZmlnLnRhYmxlPy5jb2x1bW5BY3Rpb25Db21wb25lbnRcIlxuICAgICAgICAgICAgW3ZpZXdDb250YWluZXJdPVwidmlld0NvbnRhaW5lclwiXG4gICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgKGNhcHRpb25Db21wb25lbnRJbnN0YW5jZSk9XCJvbkNhcHRpb25DbXBJbnN0KCRldmVudClcIlxuICAgICAgICAgICAgKGNvbHVtbkFjdGlvbkNvbXBvbmVudEluc3RhbmNlKT1cIm9uQ29sdW1uQWN0aW9uQ21wSW5zdCgkZXZlbnQpXCI+XG4gICAgICAgIDwvbW5nLXRhYmxlPlxuICAgICAgICA8cC1tZXNzYWdlcyBbdmFsdWVdPVwiZGlhbG9nTWVzc2FnZXNcIj48L3AtbWVzc2FnZXM+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIj5cbiAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIFtsYWJlbF09XCInZ2VuZXJhbC5jYW5jZWwnIHwgdHJhbnNsYXRlXCIgaWNvbj1cInBpIHBpLXRpbWVzXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0XCIgKGNsaWNrKT1cImhpZGVEaWFsb2coKVwiPjwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCInZ2VuZXJhbC5zZWxlY3QnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIGljb249XCJwaSBwaS1jaGVja1wiXG4gICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFkZEl0ZW0oKVwiXG4gICAgICAgICAgICBbbG9hZGluZ109XCIoZGlhbG9nSXNMb2FkaW5nJCB8IGFzeW5jKSA/PyBmYWxzZVwiXG4gICAgICAgICAgICBsb2FkaW5nSWNvbj1cInBpIHBpLXNwaW4gcGktc3Bpbm5lclwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5kaXNhYmxlZFwiPjwvYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L3AtZGlhbG9nPlxuIl19
@@ -1,4 +1,3 @@
1
- import { NgForOf, NgIf } from '@angular/common';
2
1
  import { ChangeDetectionStrategy, Component, Injector } from '@angular/core';
3
2
  import { FieldType } from '@ngx-formly/core';
4
3
  import { TranslateModule } from '@ngx-translate/core';
@@ -37,19 +36,25 @@ export class MngFormlyFieldTableDialogFormComponent extends FieldType {
37
36
  const hasEditAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Edit);
38
37
  const hasDeleteAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Delete);
39
38
  if (hasViewAction) {
40
- const viewAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.detailsEditor, 'details', this.descriptor.editor.model.type, this.descriptor.property)
39
+ const viewAction = ActionEditorDescriptor.create(this.descriptor.tableviewDescriptor.detailsEditor, 'details', {
40
+ parentType: this.descriptor.editor.model.type,
41
+ parentProperty: this.descriptor.property
42
+ })
41
43
  .withPosition(ActionPositionEnum.RowClick)
42
44
  .withDialogSize(StyleSizeEnum.Small)
43
45
  .withFetchFunction(ctx => {
44
46
  this.formControl.markAsTouched();
45
47
  return of(ctx.parameters.item || {});
46
48
  });
47
- viewAction.withEditorActions([new ActionEditorSubmitDescriptor(viewAction, ActionEditorSubmitTypeEnum.Cancel)]);
49
+ viewAction.withEditorActions([ActionEditorSubmitDescriptor.forSecondary(viewAction, ActionEditorSubmitTypeEnum.Cancel)]);
48
50
  viewAction.button.withLabel(null);
49
51
  this.actions.push(viewAction);
50
52
  }
51
53
  if (hasAddAction) {
52
- const addAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.addEditor, 'add', this.descriptor.editor.model.type, this.descriptor.property)
54
+ const addAction = ActionEditorDescriptor.create(this.descriptor.tableviewDescriptor.addEditor, 'add', {
55
+ parentType: this.descriptor.editor.model.type,
56
+ parentProperty: this.descriptor.property
57
+ })
53
58
  .withPosition(ActionPositionEnum.ToolbarRight)
54
59
  .withDialogSize(StyleSizeEnum.Small)
55
60
  .withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withSize(StyleSizeEnum.ExtraSmall)))
@@ -77,7 +82,10 @@ export class MngFormlyFieldTableDialogFormComponent extends FieldType {
77
82
  this.actions.push(addAction);
78
83
  }
79
84
  if (hasEditAction) {
80
- const editAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.editEditor, 'edit', this.descriptor.editor.model.type, this.descriptor.property)
85
+ const editAction = ActionEditorDescriptor.create(this.descriptor.tableviewDescriptor.editEditor, 'edit', {
86
+ parentType: this.descriptor.editor.model.type,
87
+ parentProperty: this.descriptor.property
88
+ })
81
89
  .withPosition(ActionPositionEnum.RowInline)
82
90
  .withDialogSize(StyleSizeEnum.Small)
83
91
  .withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withSize(StyleSizeEnum.ExtraSmall)))
@@ -105,7 +113,10 @@ export class MngFormlyFieldTableDialogFormComponent extends FieldType {
105
113
  this.actions.push(editAction);
106
114
  }
107
115
  if (hasDeleteAction) {
108
- const deleteAction = new ActionDescriptor(this.descriptor.tableviewDescriptor.model, 'delete', this.descriptor.editor.model.type, this.descriptor.property)
116
+ const deleteAction = ActionDescriptor.fromModel(this.descriptor.tableviewDescriptor.model, 'delete', {
117
+ parentType: this.descriptor.editor.model.type,
118
+ parentProperty: this.descriptor.property
119
+ })
109
120
  .withPosition(ActionPositionEnum.RowInline)
110
121
  .withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder(StyleLevelEnum.Danger).withSize(StyleSizeEnum.ExtraSmall)))
111
122
  .withRunFunction(ctx => {
@@ -113,9 +124,9 @@ export class MngFormlyFieldTableDialogFormComponent extends FieldType {
113
124
  return throwError(() => new MngInternalError(`No item was provided in context, delete cannot be done.`, { name: 'FormlyFieldTableDialogFormComponentError' }));
114
125
  }
115
126
  let formControlValue = this.formControl.value;
116
- const compareProperty = this.descriptor.tableDescriptor.dataKeyProperty
117
- ? this.descriptor.tableDescriptor.dataKeyProperty
118
- : this.descriptor.tableDescriptor.model.idPropertyName;
127
+ const compareProperty = this.descriptor.tableDescriptor.trackProperty
128
+ ? this.descriptor.tableDescriptor.trackProperty
129
+ : this.descriptor.tableDescriptor.model.idProperty;
119
130
  const ctxItem = ctx.parameters.item;
120
131
  if (compareProperty && ctxItem?.[compareProperty]) {
121
132
  formControlValue = formControlValue.filter((i) => i[compareProperty] !== ctxItem[compareProperty]);
@@ -201,11 +212,11 @@ export class MngFormlyFieldTableDialogFormComponent extends FieldType {
201
212
  }
202
213
  return false;
203
214
  }
204
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngFormlyFieldTableDialogFormComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
205
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: MngFormlyFieldTableDialogFormComponent, isStandalone: true, selector: "mng-formly-table-dialog-form-field", usesInheritance: true, ngImport: i0, template: "<mng-table [descriptor]=\"descriptor.tableDescriptor\" [items]=\"items$\" [actions]=\"actions\" [viewContainer]=\"viewContainer\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-row justify-content-end align-items-center table-header\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\"\n >{{ props.label! | translate }} <span *ngIf=\"props.required && props['hideRequiredMarker'] !== true\">*</span></label\n >\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n </ng-template>\n</mng-table>\n", styles: [".submit-button{display:none!important;visibility:hidden}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MngActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "queryParam", "dataProvider", "hostComponent", "route", "disabled", "loading", "viewContainer", "selectedItems"], outputs: ["finish"] }, { kind: "component", type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "actions", "isColumnClickable", "viewContainer", "captionComponent", "columnActionComponent", "columnActionMinWidth", "globalFilterFields"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }, { kind: "directive", type: MngTemplateDirective, selector: "[mngTemplate]", inputs: ["type", "mngTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
215
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MngFormlyFieldTableDialogFormComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
216
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: MngFormlyFieldTableDialogFormComponent, isStandalone: true, selector: "mng-formly-table-dialog-form-field", usesInheritance: true, ngImport: i0, template: "<mng-table [descriptor]=\"descriptor.tableDescriptor\" [items]=\"items$\" [actions]=\"actions\" [viewContainer]=\"viewContainer\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-row justify-content-end align-items-center table-header\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\"\n >{{ props.label! | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n @for (action of toolbarRightActions; track action) {\n <mng-action [action]=\"action\" [viewContainer]=\"viewContainer\"></mng-action>\n }\n </div>\n </ng-template>\n</mng-table>\n", styles: [".submit-button{display:none!important;visibility:hidden}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: MngActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "queryParam", "dataProvider", "hostComponent", "route", "disabled", "loading", "viewContainer", "selectedItems"], outputs: ["finish"] }, { kind: "component", type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "actions", "isColumnClickable", "viewContainer", "captionComponent", "columnActionComponent", "columnActionMinWidth", "globalFilterFields"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }, { kind: "directive", type: MngTemplateDirective, selector: "[mngTemplate]", inputs: ["type", "mngTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
206
217
  }
207
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngFormlyFieldTableDialogFormComponent, decorators: [{
218
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: MngFormlyFieldTableDialogFormComponent, decorators: [{
208
219
  type: Component,
209
- args: [{ standalone: true, selector: 'mng-formly-table-dialog-form-field', imports: [TranslateModule, NgForOf, NgIf, MngActionComponent, MngTableComponent, MngTemplateDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mng-table [descriptor]=\"descriptor.tableDescriptor\" [items]=\"items$\" [actions]=\"actions\" [viewContainer]=\"viewContainer\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-row justify-content-end align-items-center table-header\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\"\n >{{ props.label! | translate }} <span *ngIf=\"props.required && props['hideRequiredMarker'] !== true\">*</span></label\n >\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n </ng-template>\n</mng-table>\n", styles: [".submit-button{display:none!important;visibility:hidden}\n"] }]
210
- }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLXRhYmxlLWRpYWxvZy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLXRhYmxlLWRpYWxvZy1mb3JtL2Zvcm1seS1maWVsZC10YWJsZS1kaWFsb2ctZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC10YWJsZS1kaWFsb2ctZm9ybS9mb3JtbHktZmllbGQtdGFibGUtZGlhbG9nLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQWdCLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRTdHLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGVBQWUsRUFBYyxhQUFhLEVBQXlCLG9CQUFvQixFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0gsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxPQUFPLEVBQUMsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsNEJBQTRCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUVqSixPQUFPLEVBQUMsMEJBQTBCLEVBQUUsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUMzSCxPQUFPLEVB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WUFDTixvQ0FBb0MsV0FHckMsQ0FBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsQ0FBQyxtQkFDckYsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdGb3JPZiwgTmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtGaWVsZFR5cGV9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG9mLCB0aHJvd0Vycm9yfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCBzdGFydFdpdGh9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtBY3Rpb25CdXR0b25EZXNjcmlwdG9yLCBBY3Rpb25EZXNjcmlwdG9yLCBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yLCBBY3Rpb25FZGl0b3JTdWJtaXREZXNjcmlwdG9yfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kZXNjcmlwdG9ycy9hY3Rpb24nO1xuaW1wb3J0IHtGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kZXNjcmlwdG9ycy9lZGl0b3InO1xuaW1wb3J0IHtBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bSwgQWN0aW9uUG9zaXRpb25FbnVtLCBGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kZXNjcmlwdG9ycy90eXBlcyc7XG5pbXBvcnQge01uZ1RlbXBsYXRlRGlyZWN0aXZlfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7SVZpZXdDb250YWluZXIsIE1uZ0ludGVybmFsRXJyb3J9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01uZ0NvbW1vbnNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0J1dHRvblN0eWxlQnVpbGRlcn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc3R5bGVzJztcbmltcG9ydCB7U3R5bGVMZXZlbEVudW0sIFN0eWxlU2l6ZUVudW19IGZyb20gJy4uLy4uLy4uLy4uLy4uL3N0eWxlcy9tb2RlbHMnO1xuaW1wb3J0IHtNbmdBY3Rpb25Db21wb25lbnR9IGZyb20gJy4uLy4uLy4uLy4uL2FjdGlvbic7XG5pbXBvcnQge0FjdGlvbkNvbnRleHRWYWxpZGF0aW9ufSBmcm9tICcuLi8uLi8uLi8uLi9hY3Rpb24vbW9kZWxzJztcbmltcG9ydCB7TW5nVGFibGVDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uLy4uL3RhYmxldmlldyc7XG5pbXBvcnQge01uZ0Zvcm1FZGl0b3JDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL2VkaXRvci9mb3JtLWVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHtNbmdGb3JtRmllbGRFdmVudENvbXBvbmVudFN1YnR5cGUsIE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW19IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01uZ0Zvcm1seUZpZWxkQ29uZmlnfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLWZvcm1seS10YWJsZS1kaWFsb2ctZm9ybS1maWVsZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvcm1seS1maWVsZC10YWJsZS1kaWFsb2ctZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9ybWx5LWZpZWxkLXRhYmxlLWRpYWxvZy1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaW1wb3J0czogW1RyYW5zbGF0ZU1vZHVsZSwgTmdGb3JPZiwgTmdJZiwgTW5nQWN0aW9uQ29tcG9uZW50LCBNbmdUYWJsZUNvbXBvbmVudCwgTW5nVGVtcGxhdGVEaXJlY3RpdmVdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1uZ0Zvcm1seUZpZWxkVGFibGVEaWFsb2dGb3JtQ29tcG9uZW50PFQsIEVUPiBleHRlbmRzIEZpZWxkVHlwZTxNbmdGb3JtbHlGaWVsZENvbmZpZz4gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIGRlc2NyaXB0b3IhOiBGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yPFQsIEVUPjtcblxuICAgIHB1YmxpYyBpdGVtc1N1YmplY3Q6IFN1YmplY3Q8QXJyYXk8VD4+ID0gbmV3IFJlcGxheVN1YmplY3QoMSk7XG4gICAgcHVibGljIGl0ZW1zJDogT2JzZXJ2YWJsZTxBcnJheTxUPj4gPSB0aGlzLml0ZW1zU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIHB1YmxpYyBhY3Rpb25zOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9yPFQ+PiA9IFtdO1xuICAgIHB1YmxpYyB0b29sYmFyUmlnaHRBY3Rpb25zOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9yPFQ+PiA9IFtdO1xuXG4gICAgcHVibGljIHZpZXdDb250YWluZXI/OiBJVmlld0NvbnRhaW5lcjxhbnksIHVua25vd24+O1xuXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICAgIHByaXZhdGUgaXNEaXNhYmxlZFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIGlzRW5hYmxlZCQgPSB0aGlzLmlzRGlzYWJsZWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIG1hcChlID0+ICFlKVxuICAgICk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yID0gdGhpcy5wcm9wcy5kZXNjcmlwdG9yIGFzIEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3I8VCwgRVQ+O1xuICAgICAgICB0aGlzLnByb3BzLmZpZWxkQ29tcG9uZW50ID0gdGhpcztcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goKHRoaXMucHJvcHMuZm9ybUVkaXRvckNvbXBvbmVudCBhcyBNbmdGb3JtRWRpdG9yQ29tcG9uZW50PHVua25vd24+KS52aWV3Q29udGFpbmVyJC5zdWJzY3JpYmUodmFsdWUgPT4gKHRoaXMudmlld0NvbnRhaW5lciA9IHZhbHVlKSkpO1xuXG4gICAgICAgIGNvbnN0IGhhc1ZpZXdBY3Rpb24gPSB0aGlzLmRlc2NyaXB0b3IuZmllbGRBY3Rpb25zLnNvbWUoYSA9PiBhID09PSBGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtLlZpZXcpO1xuICAgICAgICBjb25zdCBoYXNBZGRBY3Rpb24gPSB0aGlzLmRlc2NyaXB0b3IuZmllbGRBY3Rpb25zLnNvbWUoYSA9PiBhID09PSBGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtLkFkZCk7XG4gICAgICAgIGNvbnN0IGhhc0VkaXRBY3Rpb24gPSB0aGlzLmRlc2NyaXB0b3IuZmllbGRBY3Rpb25zLnNvbWUoYSA9PiBhID09PSBGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtLkVkaXQpO1xuICAgICAgICBjb25zdCBoYXNEZWxldGVBY3Rpb24gPSB0aGlzLmRlc2NyaXB0b3IuZmllbGRBY3Rpb25zLnNvbWUoYSA9PiBhID09PSBGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtLkRlbGV0ZSk7XG5cbiAgICAgICAgaWYgKGhhc1ZpZXdBY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdBY3Rpb24gPSBuZXcgQWN0aW9uRWRpdG9yRGVzY3JpcHRvcih0aGlzLmRlc2NyaXB0b3IudGFibGV2aWV3RGVzY3JpcHRvci5kZXRhaWxzRWRpdG9yLCAnZGV0YWlscycsIHRoaXMuZGVzY3JpcHRvci5lZGl0b3IubW9kZWwudHlwZSwgdGhpcy5kZXNjcmlwdG9yLnByb3BlcnR5KVxuICAgICAgICAgICAgICAgIC53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLlJvd0NsaWNrKVxuICAgICAgICAgICAgICAgIC53aXRoRGlhbG9nU2l6ZShTdHlsZVNpemVFbnVtLlNtYWxsKVxuICAgICAgICAgICAgICAgIC53aXRoRmV0Y2hGdW5jdGlvbihjdHggPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGN0eC5wYXJhbWV0ZXJzLml0ZW0gfHwgKHt9IGFzIFQpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZpZXdBY3Rpb24ud2l0aEVkaXRvckFjdGlvbnMoW25ldyBBY3Rpb25FZGl0b3JTdWJtaXREZXNjcmlwdG9yKHZpZXdBY3Rpb24sIEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLkNhbmNlbCldKTtcbiAgICAgICAgICAgIHZpZXdBY3Rpb24uYnV0dG9uLndpdGhMYWJlbChudWxsKTtcbiAgICAgICAgICAgIHRoaXMuYWN0aW9ucy5wdXNoKHZpZXdBY3Rpb24gYXMgQWN0aW9uRGVzY3JpcHRvcjxUPik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzQWRkQWN0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBhZGRBY3Rpb24gPSBuZXcgQWN0aW9uRWRpdG9yRGVzY3JpcHRvcih0aGlzLmRlc2NyaXB0b3IudGFibGV2aWV3RGVzY3JpcHRvci5hZGRFZGl0b3IsICdhZGQnLCB0aGlzLmRlc2NyaXB0b3IuZWRpdG9yLm1vZGVsLnR5cGUsIHRoaXMuZGVzY3JpcHRvci5wcm9wZXJ0eSlcbiAgICAgICAgICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpXG4gICAgICAgICAgICAgICAgLndpdGhEaWFsb2dTaXplKFN0eWxlU2l6ZUVudW0uU21hbGwpXG4gICAgICAgICAgICAgICAgLndpdGhCdXR0b25EZXNjcmlwdG9yKG5ldyBBY3Rpb25CdXR0b25EZXNjcmlwdG9yKCkud2l0aFN0eWxlQ2xhc3MobmV3IEJ1dHRvblN0eWxlQnVpbGRlcigpLndpdGhTaXplKFN0eWxlU2l6ZUVudW0uRXh0cmFTbWFsbCkpKVxuICAgICAgICAgICAgICAgIC53aXRoRmV0Y2hGdW5jdGlvbihjdHggPT4ge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCwgMCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihjdHgucGFyYW1ldGVycy5pdGVtIHx8ICh7fSBhcyBUKSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAud2l0aFN1Ym1pdEZ1bmN0aW9uKGN0eCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY3R4LnBhcmFtZXRlcnMuaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IE1uZ0ludGVybmFsRXJyb3IoYE5vIGl0ZW0gd2FzIHByb3ZpZGVkIGluIGNvbnRleHQsIGFkZCBjYW5ub3QgYmUgZG9uZS5gLCB7bmFtZTogJ0Zvcm1seUZpZWxkVGFibGVEaWFsb2dGb3JtQ29tcG9uZW50RXJyb3InfSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybVN0YXRlLnN1Ym1pdHRlZE9uID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBbLi4udmFsdWUsIGN0eC5wYXJhbWV0ZXJzLml0ZW1dO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnBhdGNoVmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoY3R4LnBhcmFtZXRlcnMuaXRlbSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAud2l0aFJ1bk5vdGlmaWNhdGlvblN1Y2Nlc3ModW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlKVxuICAgICAgICAgICAgICAgIC53aXRoUnVuTm90aWZpY2F0aW9uRXJyb3IodW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlKVxuICAgICAgICAgICAgICAgIC53aXRoSXNWaXNpYmxlRnVuY3Rpb24oKCkgPT4gb2YoIXRoaXMub3B0aW9ucz8uZm9ybVN0YXRlLmRpc2FibGVkKSlcbiAgICAgICAgICAgICAgICAud2l0aElzRW5hYmxlZEZ1bmN0aW9uKCgpID0+IHRoaXMuaXNFbmFibGVkJCk7XG4gICAgICAgICAgICBhZGRBY3Rpb24uYnV0dG9uLndpdGhMYWJlbChudWxsKS53aXRoSWNvbigncGkgcGktcGx1cycpO1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25zLnB1c2goYWRkQWN0aW9uIGFzIEFjdGlvbkRlc2NyaXB0b3I8VD4pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChoYXNFZGl0QWN0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBlZGl0QWN0aW9uID0gbmV3IEFjdGlvbkVkaXRvckRlc2NyaXB0b3IodGhpcy5kZXNjcmlwdG9yLnRhYmxldmlld0Rlc2NyaXB0b3IuZWRpdEVkaXRvciwgJ2VkaXQnLCB0aGlzLmRlc2NyaXB0b3IuZWRpdG9yLm1vZGVsLnR5cGUsIHRoaXMuZGVzY3JpcHRvci5wcm9wZXJ0eSlcbiAgICAgICAgICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmUpXG4gICAgICAgICAgICAgICAgLndpdGhEaWFsb2dTaXplKFN0eWxlU2l6ZUVudW0uU21hbGwpXG4gICAgICAgICAgICAgICAgLndpdGhCdXR0b25EZXNjcmlwdG9yKG5ldyBBY3Rpb25CdXR0b25EZXNjcmlwdG9yKCkud2l0aFN0eWxlQ2xhc3MobmV3IEJ1dHRvblN0eWxlQnVpbGRlcigpLndpdGhTaXplKFN0eWxlU2l6ZUVudW0uRXh0cmFTbWFsbCkpKVxuICAgICAgICAgICAgICAgIC53aXRoRmV0Y2hGdW5jdGlvbihjdHggPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGN0eC5wYXJhbWV0ZXJzLml0ZW0gfHwgKHt9IGFzIFQpKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC53aXRoU3VibWl0RnVuY3Rpb24oY3R4ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjdHgucGFyYW1ldGVycy5pdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgTW5nSW50ZXJuYWxFcnJvcihgTm8gaXRlbSB3YXMgcHJvdmlkZWQgaW4gY29udGV4dCwgZWRpdCBjYW5ub3QgYmUgZG9uZS5gLCB7bmFtZTogJ0Zvcm1seUZpZWxkVGFibGVEaWFsb2dGb3JtQ29tcG9uZW50RXJyb3InfSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybVN0YXRlLnN1Ym1pdHRlZE9uID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybUNvbnRyb2xWYWx1ZSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sVmFsdWVbY3R4LnBhcmFtZXRlcnMuYWN0aW9uRGF0YT8uWydpdGVtSW5kZXgnXV0gPSBjdHgucGFyYW1ldGVycy5pdGVtO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnBhdGNoVmFsdWUoZm9ybUNvbnRyb2xWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihjdHgucGFyYW1ldGVycy5pdGVtKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC53aXRoUnVuTm90aWZpY2F0aW9uU3VjY2Vzcyh1bmRlZmluZWQsIHVuZGVmaW5lZCwgZmFsc2UpXG4gICAgICAgICAgICAgICAgLndpdGhSdW5Ob3RpZmljYXRpb25FcnJvcih1bmRlZmluZWQsIHVuZGVmaW5lZCwgZmFsc2UpXG4gICAgICAgICAgICAgICAgLndpdGhJc1Zpc2libGVGdW5jdGlvbihjdHggPT4gKHRoaXMuaGlkZUFjdGlvbnNGb3JSb3dXaXRoRGVmYXVsdExvY2FsaXphdGlvbihjdHgpID8gb2YoZmFsc2UpIDogb2YoIXRoaXMuZm9ybUNvbnRyb2w/LmRpc2FibGVkKSkpXG4gICAgICAgICAgICAgICAgLndpdGhJc0VuYWJsZWRGdW5jdGlvbigoKSA9PiB0aGlzLmlzRW5hYmxlZCQpO1xuICAgICAgICAgICAgZWRpdEFjdGlvbi5idXR0b24ud2l0aExhYmVsKG51bGwpLndpdGhJY29uKCdwaSBwaS1wZW5jaWwnKTtcbiAgICAgICAgICAgIHRoaXMuYWN0aW9ucy5wdXNoKGVkaXRBY3Rpb24gYXMgQWN0aW9uRGVzY3JpcHRvcjxUPik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc0RlbGV0ZUFjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgZGVsZXRlQWN0aW9uID0gbmV3IEFjdGlvbkRlc2NyaXB0b3IodGhpcy5kZXNjcmlwdG9yLnRhYmxldmlld0Rlc2NyaXB0b3IubW9kZWwsICdkZWxldGUnLCB0aGlzLmRlc2NyaXB0b3IuZWRpdG9yLm1vZGVsLnR5cGUsIHRoaXMuZGVzY3JpcHRvci5wcm9wZXJ0eSlcbiAgICAgICAgICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmUpXG4gICAgICAgICAgICAgICAgLndpdGhCdXR0b25EZXNjcmlwdG9yKG5ldyBBY3Rpb25CdXR0b25EZXNjcmlwdG9yKCkud2l0aFN0eWxlQ2xhc3MobmV3IEJ1dHRvblN0eWxlQnVpbGRlcihTdHlsZUxldmVsRW51bS5EYW5nZXIpLndpdGhTaXplKFN0eWxlU2l6ZUVudW0uRXh0cmFTbWFsbCkpKVxuICAgICAgICAgICAgICAgIC53aXRoUnVuRnVuY3Rpb24oY3R4ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjdHgucGFyYW1ldGVycy5pdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSA9PiBuZXcgTW5nSW50ZXJuYWxFcnJvcihgTm8gaXRlbSB3YXMgcHJvdmlkZWQgaW4gY29udGV4dCwgZGVsZXRlIGNhbm5vdCBiZSBkb25lLmAsIHtuYW1lOiAnRm9ybWx5RmllbGRUYWJsZURpYWxvZ0Zvcm1Db21wb25lbnRFcnJvcid9KVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsZXQgZm9ybUNvbnRyb2xWYWx1ZSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgYXMgQXJyYXk8VD47XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBhcmVQcm9wZXJ0eSA9IHRoaXMuZGVzY3JpcHRvci50YWJsZURlc2NyaXB0b3IuZGF0YUtleVByb3BlcnR5XG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuZGVzY3JpcHRvci50YWJsZURlc2NyaXB0b3IuZGF0YUtleVByb3BlcnR5XG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuZGVzY3JpcHRvci50YWJsZURlc2NyaXB0b3IubW9kZWwuaWRQcm9wZXJ0eU5hbWU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN0eEl0ZW06IGFueSA9IGN0eC5wYXJhbWV0ZXJzLml0ZW07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21wYXJlUHJvcGVydHkgJiYgY3R4SXRlbT8uW2NvbXBhcmVQcm9wZXJ0eV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sVmFsdWUgPSBmb3JtQ29udHJvbFZhbHVlLmZpbHRlcigoaTogYW55KSA9PiBpW2NvbXBhcmVQcm9wZXJ0eV0gIT09IGN0eEl0ZW1bY29tcGFyZVByb3BlcnR5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnBhdGNoVmFsdWUoZm9ybUNvbnRyb2xWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGN0eC5wYXJhbWV0ZXJzLmFjdGlvbkRhdGE/LlsnaXRlbUluZGV4J10gPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbFZhbHVlLnNwbGljZShjdHgucGFyYW1ldGVycy5hY3Rpb25EYXRhWydpdGVtSW5kZXgnXSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnBhdGNoVmFsdWUoWy4uLmZvcm1Db250cm9sVmFsdWVdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBNbmdJbnRlcm5hbEVycm9yKCdDYW5ub3QgY29tcGFyZSBpdGVtcywgcGxlYXNlIHByb3ZpZGUgbWFpbiB0YWJsZSBkYXRhIGtleSBwcm9wZXJ0eSBvciBtb2RlbCBpZCBwcm9wZXJ0eS4nLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnRm9ybWx5RmllbGRUYWJsZURpYWxvZ0Zvcm1Db21wb25lbnRFcnJvcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoY3R4SXRlbSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAud2l0aFJ1bk5vdGlmaWNhdGlvblN1Y2Nlc3ModW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlKVxuICAgICAgICAgICAgICAgIC53aXRoUnVuTm90aWZpY2F0aW9uRXJyb3IodW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlKVxuICAgICAgICAgICAgICAgIC53aXRoSXNWaXNpYmxlRnVuY3Rpb24oY3R4ID0+ICh0aGlzLmhpZGVBY3Rpb25zRm9yUm93V2l0aERlZmF1bHRMb2NhbGl6YXRpb24oY3R4KSA/IG9mKGZhbHNlKSA6IG9mKCF0aGlzLm9wdGlvbnM/LmZvcm1TdGF0ZS5kaXNhYmxlZCkpKVxuICAgICAgICAgICAgICAgIC53aXRoSXNFbmFibGVkRnVuY3Rpb24oKCkgPT4gdGhpcy5pc0VuYWJsZWQkKTtcbiAgICAgICAgICAgIGRlbGV0ZUFjdGlvbi5idXR0b24ud2l0aExhYmVsKG51bGwpLndpdGhJY29uKCdwaSBwaS10cmFzaCcpO1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25zLnB1c2goZGVsZXRlQWN0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aW9ucy5wdXNoKC4uLnRoaXMuZGVzY3JpcHRvci5hY3Rpb25zKTtcbiAgICAgICAgZm9yIChjb25zdCBhY3Rpb24gb2YgdGhpcy5hY3Rpb25zKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGFjdGlvbi5wb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIGNhc2UgQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sYmFyUmlnaHRBY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpbml0IHZhbHVlc1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPT09ICd1bmRlZmluZWQnIHx8IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShbXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBlbWl0IGxpZmVjeWNsZSBldmVudFxuICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0uQ29tcG9uZW50TGlmZWN5Y2xlLCBNbmdGb3JtbHlGaWVsZFRhYmxlRGlhbG9nRm9ybUNvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgZXZlbnRTdWJ0eXBlOiBNbmdGb3JtRmllbGRFdmVudENvbXBvbmVudFN1YnR5cGUuT05fSU5JVFxuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgc3Vic2NyaXB0aW9uID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5mb3JtQ29udHJvbC52YWx1ZSkpLnN1YnNjcmliZSh2ID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXNTdWJqZWN0Lm5leHQodik7XG5cbiAgICAgICAgICAgIC8vIGVtaXQgbGlmZWN5Y2xlIGV2ZW50XG4gICAgICAgICAgICB0aGlzLmRlc2NyaXB0b3IubmV4dEV2ZW50KE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0uVmFsdWVDaGFuZ2UsIE1uZ0Zvcm1seUZpZWxkVGFibGVEaWFsb2dGb3JtQ29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHZcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wc1snb25WYWx1ZUNoYW5nZSddKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wc1snb25WYWx1ZUNoYW5nZSddKHRoaXMuZmllbGQsIHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcblxuICAgICAgICB0aGlzLmlzRGlzYWJsZWRTdWJqZWN0Lm5leHQodGhpcy5mb3JtQ29udHJvbC5kaXNhYmxlZCk7XG4gICAgICAgIHN1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybUNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5waXBlKCkuc3Vic2NyaWJlKHN0YXR1cyA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhdHVzID09PSAnRElTQUJMRUQnICYmICF0aGlzLmlzRGlzYWJsZWRTdWJqZWN0LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0Rpc2FibGVkU3ViamVjdC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF0dXMgIT09ICdESVNBQkxFRCcgJiYgdGhpcy5pc0Rpc2FibGVkU3ViamVjdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNEaXNhYmxlZFN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5Db21wb25lbnRMaWZlY3ljbGUsIE1uZ0Zvcm1seUZpZWxkVGFibGVEaWFsb2dGb3JtQ29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IE1uZ0Zvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZS5PTl9WSUVXX0lOSVRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICAvLyB3YXJuaW5nOiBmb3JtbHkgY2FsbHMgb24gZGVzdHJveSBiZWZvcmUgb24gaW5pdFxuXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcblxuICAgICAgICAvLyBlbWl0IGxpZmVjeWNsZSBldmVudFxuICAgICAgICB0aGlzLmRlc2NyaXB0b3I/Lm5leHRFdmVudChNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtLkNvbXBvbmVudExpZmVjeWNsZSwgTW5nRm9ybWx5RmllbGRUYWJsZURpYWxvZ0Zvcm1Db21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogTW5nRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX0RFU1RST1lcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlQWN0aW9uc0ZvclJvd1dpdGhEZWZhdWx0TG9jYWxpemF0aW9uKGN0eDogQWN0aW9uQ29udGV4dFZhbGlkYXRpb248VCwgdW5rbm93bj4pIHtcbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci50YWJsZURlc2NyaXB0b3IuaXNMb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgIGlmICgoY3R4LnBhcmFtZXRlcnMuaXRlbSBhcyBhbnkpW3RoaXMuZGVzY3JpcHRvci50YWJsZURlc2NyaXB0b3IubG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHkhXSA9PT0gdGhpcy5pbmplY3Rvci5nZXQoTW5nQ29tbW9uc1NlcnZpY2UpLmRlZmF1bHREYXRhTGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIiwiPG1uZy10YWJsZSBbZGVzY3JpcHRvcl09XCJkZXNjcmlwdG9yLnRhYmxlRGVzY3JpcHRvclwiIFtpdGVtc109XCJpdGVtcyRcIiBbYWN0aW9uc109XCJhY3Rpb25zXCIgW3ZpZXdDb250YWluZXJdPVwidmlld0NvbnRhaW5lclwiPlxuICAgIDxuZy10ZW1wbGF0ZSBtbmdUZW1wbGF0ZT1cImNhcHRpb25cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgdGFibGUtaGVhZGVyXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtbmctZGF0YXRhYmxlLWZvcm0tbGFiZWwgcC0wIG0tMFwiIFtmb3JdPVwia2V5XCJcbiAgICAgICAgICAgICAgICA+e3sgcHJvcHMubGFiZWwhIHwgdHJhbnNsYXRlIH19IDxzcGFuICpuZ0lmPVwicHJvcHMucmVxdWlyZWQgJiYgcHJvcHNbJ2hpZGVSZXF1aXJlZE1hcmtlciddICE9PSB0cnVlXCI+Kjwvc3Bhbj48L2xhYmVsXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8bW5nLWFjdGlvbiAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHRvb2xiYXJSaWdodEFjdGlvbnNcIiBbYWN0aW9uXT1cImFjdGlvblwiIFt2aWV3Q29udGFpbmVyXT1cInZpZXdDb250YWluZXJcIj48L21uZy1hY3Rpb24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L21uZy10YWJsZT5cbiJdfQ==
220
+ args: [{ standalone: true, selector: 'mng-formly-table-dialog-form-field', imports: [TranslateModule, MngActionComponent, MngTableComponent, MngTemplateDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mng-table [descriptor]=\"descriptor.tableDescriptor\" [items]=\"items$\" [actions]=\"actions\" [viewContainer]=\"viewContainer\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-row justify-content-end align-items-center table-header\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\"\n >{{ props.label! | translate }}\n @if (props.required && props['hideRequiredMarker'] !== true) {\n <span>*</span>\n }\n </label>\n @for (action of toolbarRightActions; track action) {\n <mng-action [action]=\"action\" [viewContainer]=\"viewContainer\"></mng-action>\n }\n </div>\n </ng-template>\n</mng-table>\n", styles: [".submit-button{display:none!important;visibility:hidden}\n"] }]
221
+ }], ctorParameters: () => [{ type: i0.Injector }] });
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWZpZWxkLXRhYmxlLWRpYWxvZy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLXRhYmxlLWRpYWxvZy1mb3JtL2Zvcm1seS1maWVsZC10YWJsZS1kaWFsb2ctZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC10YWJsZS1kaWFsb2ctZm9ybS9mb3JtbHktZmllbGQtdGFibGUtZGlhbG9nLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQix1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUU3RyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxlQUFlLEVBQWMsYUFBYSxFQUF5QixvQkFBb0IsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdILE9BQU8sRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFDLHNCQUFzQixFQUFFLGdCQUFnQixFQUF3QixzQkFBc0IsRUFBRSw0QkFBNEIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBRXZLLE9BQU8sRUFBQywwQkFBMEIsRUFBRSxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzNILE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBaUIsZ0JBQWdCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsY0FBYyxFQUFFLGFBQWEsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzNFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRXRELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRXhELE9BQU8sRUFBQyxpQ0FBaUMsRUFBRSx5QkFBeUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7QUFXN0YsTUFBTSxPQUFPLHNDQUEwRCxTQUFRLFNBQStCO0lBa0IxRyxZQUFvQixRQUFrQjtRQUNsQyxLQUFLLEVBQUUsQ0FBQztRQURRLGFBQVEsR0FBUixRQUFRLENBQVU7UUFmL0IsaUJBQVksR0FBc0IsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsV0FBTSxHQUF5QixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRWhFLFlBQU8sR0FBbUMsRUFBRSxDQUFDO1FBQzdDLHdCQUFtQixHQUFtQyxFQUFFLENBQUM7UUFJeEQsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBQ25DLHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3hELGVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUMzRCxvQkFBb0IsRUFBRSxFQUN0QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFJRixDQUFDO0lBRU0sUUFBUTtRQUNYLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUE4QyxDQUFDO1FBQzVFLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBRSxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUF1RCxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdKLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUsseUJBQXlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakcsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25HLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV2RyxJQUFJLGFBQWEsRUFBRTtZQUNmLE1BQU0sVUFBVSxHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUU7Z0JBQzNHLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSTtnQkFDN0MsY0FBYyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUTthQUMzQyxDQUFDO2lCQUNHLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUM7aUJBQ3pDLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO2lCQUNuQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDakMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUssRUFBUSxDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDLENBQUM7WUFDUCxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6SCxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNqQztRQUVELElBQUksWUFBWSxFQUFFO1lBQ2QsTUFBTSxTQUFTLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRTtnQkFDbEcsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJO2dCQUM3QyxjQUFjLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRO2FBQzNDLENBQUM7aUJBQ0csWUFBWSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQztpQkFDN0MsY0FBYyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7aUJBQ25DLG9CQUFvQixDQUFDLElBQUksc0JBQXNCLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztpQkFDOUgsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3JCLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDOUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUssRUFBUSxDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDO2lCQUNELGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUU7b0JBQ3RCLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksZ0JBQWdCLENBQUMsc0RBQXNELEVBQUUsRUFBQyxJQUFJLEVBQUUsMENBQTBDLEVBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzdKO2dCQUNELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7Z0JBQ25DLEtBQUssR0FBRyxDQUFDLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNqQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25DLENBQUMsQ0FBQztpQkFDRCwwQkFBMEIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQztpQkFDdkQsd0JBQXdCLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUM7aUJBQ3JELHFCQUFxQixDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUNsRSxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbEQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2hDO1FBQ0QsSUFBSSxhQUFhLEVBQUU7WUFDZixNQUFNLFVBQVUsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFO2dCQUNyRyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUk7Z0JBQzdDLGNBQWMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVE7YUFDM0MsQ0FBQztpQkFDRyxZQUFZLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDO2lCQUMxQyxjQUFjLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztpQkFDbkMsb0JBQW9CLENBQUMsSUFBSSxzQkFBc0IsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2lCQUM5SCxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDakMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUssRUFBUSxDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDO2lCQUNELGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUU7b0JBQ3RCLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksZ0JBQWdCLENBQUMsdURBQXVELEVBQUUsRUFBQyxJQUFJLEVBQUUsMENBQTBDLEVBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzlKO2dCQUNELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDeEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztnQkFDaEQsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO2dCQUNqRixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNqQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25DLENBQUMsQ0FBQztpQkFDRCwwQkFBMEIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQztpQkFDdkQsd0JBQXdCLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUM7aUJBQ3JELHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsd0NBQXdDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO2lCQUNoSSxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbEQsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxlQUFlLEVBQUU7WUFDakIsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRTtnQkFDakcsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJO2dCQUM3QyxjQUFjLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRO2FBQzNDLENBQUM7aUJBQ0csWUFBWSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQztpQkFDMUMsb0JBQW9CLENBQUMsSUFBSSxzQkFBc0IsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7aUJBQ25KLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFO29CQUN0QixPQUFPLFVBQVUsQ0FDYixHQUFHLEVBQUUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLHlEQUF5RCxFQUFFLEVBQUMsSUFBSSxFQUFFLDBDQUEwQyxFQUFDLENBQUMsQ0FDNUksQ0FBQztpQkFDTDtnQkFDRCxJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBaUIsQ0FBQztnQkFDMUQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsYUFBYTtvQkFDakUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLGFBQWE7b0JBQy9DLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO2dCQUN2RCxNQUFNLE9BQU8sR0FBUSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztnQkFDekMsSUFBSSxlQUFlLElBQUksT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUU7b0JBQy9DLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO29CQUN4RyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO29CQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO2lCQUNsQztxQkFBTSxJQUFJLE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxRQUFRLEVBQUU7b0JBQ3JFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDbkUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQztvQkFDbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztpQkFDbEM7cUJBQU07b0JBQ0gsT0FBTyxVQUFVLENBQ2IsR0FBRyxFQUFFLENBQ0QsSUFBSSxnQkFBZ0IsQ0FBQyx5RkFBeUYsRUFBRTt3QkFDNUcsSUFBSSxFQUFFLDBDQUEwQztxQkFDbkQsQ0FBQyxDQUNULENBQUM7aUJBQ0w7Z0JBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFFakMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkIsQ0FBQyxDQUFDO2lCQUNELDBCQUEwQixDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDO2lCQUN2RCx3QkFBd0IsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQztpQkFDckQscUJBQXFCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx3Q0FBd0MsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2lCQUN0SSxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbEQsWUFBWSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ25DO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMvQixRQUFRLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0JBQ3JCLEtBQUssa0JBQWtCLENBQUMsWUFBWTtvQkFDaEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDdEMsTUFBTTthQUNiO1NBQ0o7UUFFRCxjQUFjO1FBQ2QsSUFBSSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDbEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDbkM7UUFFRCx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMseUJBQXlCLENBQUMsa0JBQWtCLEVBQUUsc0NBQXNDLEVBQUUsSUFBSSxFQUFFO1lBQ2xILFlBQVksRUFBRSxpQ0FBaUMsQ0FBQyxPQUFPO1NBQzFELENBQUMsQ0FBQztRQUVILElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNuRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUxQix1QkFBdUI7WUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMseUJBQXlCLENBQUMsV0FBVyxFQUFFLHNDQUFzQyxFQUFFLElBQUksRUFBRTtnQkFDM0csS0FBSyxFQUFFLENBQUM7YUFDWCxDQUFDLENBQUM7WUFFSCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzthQUM5QztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDcEUsSUFBSSxNQUFNLEtBQUssVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRTtnQkFDeEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNyQztpQkFBTSxJQUFJLE1BQU0sS0FBSyxVQUFVLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRTtnQkFDOUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN0QztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMseUJBQXlCLENBQUMsa0JBQWtCLEVBQUUsc0NBQXNDLEVBQUUsSUFBSSxFQUFFO1lBQ2xILFlBQVksRUFBRSxpQ0FBaUMsQ0FBQyxZQUFZO1NBQy9ELENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXO1FBQ2Qsa0RBQWtEO1FBRWxELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFakQsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLHlCQUF5QixDQUFDLGtCQUFrQixFQUFFLHNDQUFzQyxFQUFFLElBQUksRUFBRTtZQUNuSCxZQUFZLEVBQUUsaUNBQWlDLENBQUMsVUFBVTtTQUM3RCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sd0NBQXdDLENBQUMsR0FBK0I7UUFDNUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUU7WUFDN0MsSUFBSyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQywwQkFBMkIsQ0FBQyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsbUJBQW1CLEVBQUU7Z0JBQ3hKLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7U0FDSjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7OEdBak9RLHNDQUFzQztrR0FBdEMsc0NBQXNDLHFIQzlCbkQsMndCQWVBLG1IRFljLGVBQWUsNEZBQUUsa0JBQWtCLGlQQUFFLGlCQUFpQix5YkFBRSxvQkFBb0I7OzJGQUc3RSxzQ0FBc0M7a0JBUmxELFNBQVM7aUNBQ00sSUFBSSxZQUNOLG9DQUFvQyxXQUdyQyxDQUFDLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsQ0FBQyxtQkFDdEUsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtGaWVsZFR5cGV9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG9mLCB0aHJvd0Vycm9yfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCBzdGFydFdpdGh9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtBY3Rpb25CdXR0b25EZXNjcmlwdG9yLCBBY3Rpb25EZXNjcmlwdG9yLCBBY3Rpb25EZXNjcmlwdG9ySW5zdCwgQWN0aW9uRWRpdG9yRGVzY3JpcHRvciwgQWN0aW9uRWRpdG9yU3VibWl0RGVzY3JpcHRvcn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGVzY3JpcHRvcnMvYWN0aW9uJztcbmltcG9ydCB7RmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGVzY3JpcHRvcnMvZWRpdG9yJztcbmltcG9ydCB7QWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW0sIEFjdGlvblBvc2l0aW9uRW51bSwgRmllbGRNYW55RWRpdG9yQWN0aW9uRW51bX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGVzY3JpcHRvcnMvdHlwZXMnO1xuaW1wb3J0IHtNbmdUZW1wbGF0ZURpcmVjdGl2ZX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQge0lWaWV3Q29udGFpbmVyLCBNbmdJbnRlcm5hbEVycm9yfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtNbmdDb21tb25zU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtCdXR0b25TdHlsZUJ1aWxkZXJ9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3N0eWxlcyc7XG5pbXBvcnQge1N0eWxlTGV2ZWxFbnVtLCBTdHlsZVNpemVFbnVtfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zdHlsZXMvbW9kZWxzJztcbmltcG9ydCB7TW5nQWN0aW9uQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi8uLi9hY3Rpb24nO1xuaW1wb3J0IHtBY3Rpb25Db250ZXh0VmFsaWRhdGlvbn0gZnJvbSAnLi4vLi4vLi4vLi4vYWN0aW9uL21vZGVscyc7XG5pbXBvcnQge01uZ1RhYmxlQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi8uLi90YWJsZXZpZXcnO1xuaW1wb3J0IHtNbmdGb3JtRWRpdG9yQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9lZGl0b3IvZm9ybS1lZGl0b3IuY29tcG9uZW50JztcbmltcG9ydCB7TW5nRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLCBNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtNbmdGb3JtbHlGaWVsZENvbmZpZ30gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1mb3JtbHktdGFibGUtZGlhbG9nLWZvcm0tZmllbGQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb3JtbHktZmllbGQtdGFibGUtZGlhbG9nLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2Zvcm1seS1maWVsZC10YWJsZS1kaWFsb2ctZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICAgIGltcG9ydHM6IFtUcmFuc2xhdGVNb2R1bGUsIE1uZ0FjdGlvbkNvbXBvbmVudCwgTW5nVGFibGVDb21wb25lbnQsIE1uZ1RlbXBsYXRlRGlyZWN0aXZlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBNbmdGb3JtbHlGaWVsZFRhYmxlRGlhbG9nRm9ybUNvbXBvbmVudDxUID0gYW55LCBFVCA9IGFueT4gZXh0ZW5kcyBGaWVsZFR5cGU8TW5nRm9ybWx5RmllbGRDb25maWc+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyBkZXNjcmlwdG9yITogRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcjxULCBFVD47XG5cbiAgICBwdWJsaWMgaXRlbXNTdWJqZWN0OiBTdWJqZWN0PEFycmF5PFQ+PiA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuICAgIHB1YmxpYyBpdGVtcyQ6IE9ic2VydmFibGU8QXJyYXk8VD4+ID0gdGhpcy5pdGVtc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBwdWJsaWMgYWN0aW9uczogQXJyYXk8QWN0aW9uRGVzY3JpcHRvckluc3Q8VD4+ID0gW107XG4gICAgcHVibGljIHRvb2xiYXJSaWdodEFjdGlvbnM6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PFQ+PiA9IFtdO1xuXG4gICAgcHVibGljIHZpZXdDb250YWluZXI/OiBJVmlld0NvbnRhaW5lcjxhbnksIHVua25vd24+O1xuXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICAgIHByaXZhdGUgaXNEaXNhYmxlZFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIGlzRW5hYmxlZCQgPSB0aGlzLmlzRGlzYWJsZWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIG1hcChlID0+ICFlKVxuICAgICk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yID0gdGhpcy5wcm9wcy5kZXNjcmlwdG9yIGFzIEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3I8VCwgRVQ+O1xuICAgICAgICB0aGlzLnByb3BzLmZpZWxkQ29tcG9uZW50ID0gdGhpcztcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goKHRoaXMucHJvcHMuZm9ybUVkaXRvckNvbXBvbmVudCBhcyBNbmdGb3JtRWRpdG9yQ29tcG9uZW50PHVua25vd24+KS52aWV3Q29udGFpbmVyJC5zdWJzY3JpYmUodmFsdWUgPT4gKHRoaXMudmlld0NvbnRhaW5lciA9IHZhbHVlKSkpO1xuXG4gICAgICAgIGNvbnN0IGhhc1ZpZXdBY3Rpb24gPSB0aGlzLmRlc2NyaXB0b3IuZmllbGRBY3Rpb25zLnNvbWUoYSA9PiBhID09PSBGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtLlZpZXcpO1xuICAgICAgICBjb25zdCBoYXNBZGRBY3Rpb24gPSB0aGlzLmRlc2NyaXB0b3IuZmllbGRBY3Rpb25zLnNvbWUoYSA9PiBhID09PSBGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtLkFkZCk7XG4gICAgICAgIGNvbnN0IGhhc0VkaXRBY3Rpb24gPSB0aGlzLmRlc2NyaXB0b3IuZmllbGRBY3Rpb25zLnNvbWUoYSA9PiBhID09PSBGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtLkVkaXQpO1xuICAgICAgICBjb25zdCBoYXNEZWxldGVBY3Rpb24gPSB0aGlzLmRlc2NyaXB0b3IuZmllbGRBY3Rpb25zLnNvbWUoYSA9PiBhID09PSBGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtLkRlbGV0ZSk7XG5cbiAgICAgICAgaWYgKGhhc1ZpZXdBY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdBY3Rpb24gPSBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yLmNyZWF0ZSh0aGlzLmRlc2NyaXB0b3IudGFibGV2aWV3RGVzY3JpcHRvci5kZXRhaWxzRWRpdG9yLCAnZGV0YWlscycsIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRUeXBlOiB0aGlzLmRlc2NyaXB0b3IuZWRpdG9yLm1vZGVsLnR5cGUsXG4gICAgICAgICAgICAgICAgcGFyZW50UHJvcGVydHk6IHRoaXMuZGVzY3JpcHRvci5wcm9wZXJ0eVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljaylcbiAgICAgICAgICAgICAgICAud2l0aERpYWxvZ1NpemUoU3R5bGVTaXplRW51bS5TbWFsbClcbiAgICAgICAgICAgICAgICAud2l0aEZldGNoRnVuY3Rpb24oY3R4ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihjdHgucGFyYW1ldGVycy5pdGVtIHx8ICh7fSBhcyBUKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2aWV3QWN0aW9uLndpdGhFZGl0b3JBY3Rpb25zKFtBY3Rpb25FZGl0b3JTdWJtaXREZXNjcmlwdG9yLmZvclNlY29uZGFyeSh2aWV3QWN0aW9uLCBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bS5DYW5jZWwpXSk7XG4gICAgICAgICAgICB2aWV3QWN0aW9uLmJ1dHRvbi53aXRoTGFiZWwobnVsbCk7XG4gICAgICAgICAgICB0aGlzLmFjdGlvbnMucHVzaCh2aWV3QWN0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNBZGRBY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGFkZEFjdGlvbiA9IEFjdGlvbkVkaXRvckRlc2NyaXB0b3IuY3JlYXRlKHRoaXMuZGVzY3JpcHRvci50YWJsZXZpZXdEZXNjcmlwdG9yLmFkZEVkaXRvciwgJ2FkZCcsIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRUeXBlOiB0aGlzLmRlc2NyaXB0b3IuZWRpdG9yLm1vZGVsLnR5cGUsXG4gICAgICAgICAgICAgICAgcGFyZW50UHJvcGVydHk6IHRoaXMuZGVzY3JpcHRvci5wcm9wZXJ0eVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQpXG4gICAgICAgICAgICAgICAgLndpdGhEaWFsb2dTaXplKFN0eWxlU2l6ZUVudW0uU21hbGwpXG4gICAgICAgICAgICAgICAgLndpdGhCdXR0b25EZXNjcmlwdG9yKG5ldyBBY3Rpb25CdXR0b25EZXNjcmlwdG9yKCkud2l0aFN0eWxlQ2xhc3MobmV3IEJ1dHRvblN0eWxlQnVpbGRlcigpLndpdGhTaXplKFN0eWxlU2l6ZUVudW0uRXh0cmFTbWFsbCkpKVxuICAgICAgICAgICAgICAgIC53aXRoRmV0Y2hGdW5jdGlvbihjdHggPT4ge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCwgMCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihjdHgucGFyYW1ldGVycy5pdGVtIHx8ICh7fSBhcyBUKSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAud2l0aFN1Ym1pdEZ1bmN0aW9uKGN0eCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY3R4LnBhcmFtZXRlcnMuaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IE1uZ0ludGVybmFsRXJyb3IoYE5vIGl0ZW0gd2FzIHByb3ZpZGVkIGluIGNvbnRleHQsIGFkZCBjYW5ub3QgYmUgZG9uZS5gLCB7bmFtZTogJ0Zvcm1seUZpZWxkVGFibGVEaWFsb2dGb3JtQ29tcG9uZW50RXJyb3InfSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybVN0YXRlLnN1Ym1pdHRlZE9uID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBbLi4udmFsdWUsIGN0eC5wYXJhbWV0ZXJzLml0ZW1dO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnBhdGNoVmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoY3R4LnBhcmFtZXRlcnMuaXRlbSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAud2l0aFJ1bk5vdGlmaWNhdGlvblN1Y2Nlc3ModW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlKVxuICAgICAgICAgICAgICAgIC53aXRoUnVuTm90aWZpY2F0aW9uRXJyb3IodW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlKVxuICAgICAgICAgICAgICAgIC53aXRoSXNWaXNpYmxlRnVuY3Rpb24oKCkgPT4gb2YoIXRoaXMub3B0aW9ucz8uZm9ybVN0YXRlLmRpc2FibGVkKSlcbiAgICAgICAgICAgICAgICAud2l0aElzRW5hYmxlZEZ1bmN0aW9uKCgpID0+IHRoaXMuaXNFbmFibGVkJCk7XG4gICAgICAgICAgICBhZGRBY3Rpb24uYnV0dG9uLndpdGhMYWJlbChudWxsKS53aXRoSWNvbigncGkgcGktcGx1cycpO1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25zLnB1c2goYWRkQWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGFzRWRpdEFjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgZWRpdEFjdGlvbiA9IEFjdGlvbkVkaXRvckRlc2NyaXB0b3IuY3JlYXRlKHRoaXMuZGVzY3JpcHRvci50YWJsZXZpZXdEZXNjcmlwdG9yLmVkaXRFZGl0b3IsICdlZGl0Jywge1xuICAgICAgICAgICAgICAgIHBhcmVudFR5cGU6IHRoaXMuZGVzY3JpcHRvci5lZGl0b3IubW9kZWwudHlwZSxcbiAgICAgICAgICAgICAgICBwYXJlbnRQcm9wZXJ0eTogdGhpcy5kZXNjcmlwdG9yLnByb3BlcnR5XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLlJvd0lubGluZSlcbiAgICAgICAgICAgICAgICAud2l0aERpYWxvZ1NpemUoU3R5bGVTaXplRW51bS5TbWFsbClcbiAgICAgICAgICAgICAgICAud2l0aEJ1dHRvbkRlc2NyaXB0b3IobmV3IEFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IoKS53aXRoU3R5bGVDbGFzcyhuZXcgQnV0dG9uU3R5bGVCdWlsZGVyKCkud2l0aFNpemUoU3R5bGVTaXplRW51bS5FeHRyYVNtYWxsKSkpXG4gICAgICAgICAgICAgICAgLndpdGhGZXRjaEZ1bmN0aW9uKGN0eCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoY3R4LnBhcmFtZXRlcnMuaXRlbSB8fCAoe30gYXMgVCkpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLndpdGhTdWJtaXRGdW5jdGlvbihjdHggPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWN0eC5wYXJhbWV0ZXJzLml0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBNbmdJbnRlcm5hbEVycm9yKGBObyBpdGVtIHdhcyBwcm92aWRlZCBpbiBjb250ZXh0LCBlZGl0IGNhbm5vdCBiZSBkb25lLmAsIHtuYW1lOiAnRm9ybWx5RmllbGRUYWJsZURpYWxvZ0Zvcm1Db21wb25lbnRFcnJvcid9KSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtU3RhdGUuc3VibWl0dGVkT24gPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtQ29udHJvbFZhbHVlID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xWYWx1ZVtjdHgucGFyYW1ldGVycy5hY3Rpb25EYXRhPy5bJ2l0ZW1JbmRleCddXSA9IGN0eC5wYXJhbWV0ZXJzLml0ZW07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShmb3JtQ29udHJvbFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGN0eC5wYXJhbWV0ZXJzLml0ZW0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLndpdGhSdW5Ob3RpZmljYXRpb25TdWNjZXNzKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAud2l0aFJ1bk5vdGlmaWNhdGlvbkVycm9yKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAud2l0aElzVmlzaWJsZUZ1bmN0aW9uKGN0eCA9PiAodGhpcy5oaWRlQWN0aW9uc0ZvclJvd1dpdGhEZWZhdWx0TG9jYWxpemF0aW9uKGN0eCkgPyBvZihmYWxzZSkgOiBvZighdGhpcy5mb3JtQ29udHJvbD8uZGlzYWJsZWQpKSlcbiAgICAgICAgICAgICAgICAud2l0aElzRW5hYmxlZEZ1bmN0aW9uKCgpID0+IHRoaXMuaXNFbmFibGVkJCk7XG4gICAgICAgICAgICBlZGl0QWN0aW9uLmJ1dHRvbi53aXRoTGFiZWwobnVsbCkud2l0aEljb24oJ3BpIHBpLXBlbmNpbCcpO1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25zLnB1c2goZWRpdEFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc0RlbGV0ZUFjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgZGVsZXRlQWN0aW9uID0gQWN0aW9uRGVzY3JpcHRvci5mcm9tTW9kZWwodGhpcy5kZXNjcmlwdG9yLnRhYmxldmlld0Rlc2NyaXB0b3IubW9kZWwsICdkZWxldGUnLCB7XG4gICAgICAgICAgICAgICAgcGFyZW50VHlwZTogdGhpcy5kZXNjcmlwdG9yLmVkaXRvci5tb2RlbC50eXBlLFxuICAgICAgICAgICAgICAgIHBhcmVudFByb3BlcnR5OiB0aGlzLmRlc2NyaXB0b3IucHJvcGVydHlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lKVxuICAgICAgICAgICAgICAgIC53aXRoQnV0dG9uRGVzY3JpcHRvcihuZXcgQWN0aW9uQnV0dG9uRGVzY3JpcHRvcigpLndpdGhTdHlsZUNsYXNzKG5ldyBCdXR0b25TdHlsZUJ1aWxkZXIoU3R5bGVMZXZlbEVudW0uRGFuZ2VyKS53aXRoU2l6ZShTdHlsZVNpemVFbnVtLkV4dHJhU21hbGwpKSlcbiAgICAgICAgICAgICAgICAud2l0aFJ1bkZ1bmN0aW9uKGN0eCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY3R4LnBhcmFtZXRlcnMuaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4gbmV3IE1uZ0ludGVybmFsRXJyb3IoYE5vIGl0ZW0gd2FzIHByb3ZpZGVkIGluIGNvbnRleHQsIGRlbGV0ZSBjYW5ub3QgYmUgZG9uZS5gLCB7bmFtZTogJ0Zvcm1seUZpZWxkVGFibGVEaWFsb2dGb3JtQ29tcG9uZW50RXJyb3InfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbGV0IGZvcm1Db250cm9sVmFsdWUgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlIGFzIEFycmF5PFQ+O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wYXJlUHJvcGVydHkgPSB0aGlzLmRlc2NyaXB0b3IudGFibGVEZXNjcmlwdG9yLnRyYWNrUHJvcGVydHlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5kZXNjcmlwdG9yLnRhYmxlRGVzY3JpcHRvci50cmFja1Byb3BlcnR5XG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuZGVzY3JpcHRvci50YWJsZURlc2NyaXB0b3IubW9kZWwuaWRQcm9wZXJ0eTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3R4SXRlbTogYW55ID0gY3R4LnBhcmFtZXRlcnMuaXRlbTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBhcmVQcm9wZXJ0eSAmJiBjdHhJdGVtPy5bY29tcGFyZVByb3BlcnR5XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xWYWx1ZSA9IGZvcm1Db250cm9sVmFsdWUuZmlsdGVyKChpOiBhbnkpID0+IGlbY29tcGFyZVByb3BlcnR5XSAhPT0gY3R4SXRlbVtjb21wYXJlUHJvcGVydHldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShmb3JtQ29udHJvbFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgY3R4LnBhcmFtZXRlcnMuYWN0aW9uRGF0YT8uWydpdGVtSW5kZXgnXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sVmFsdWUuc3BsaWNlKGN0eC5wYXJhbWV0ZXJzLmFjdGlvbkRhdGFbJ2l0ZW1JbmRleCddLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShbLi4uZm9ybUNvbnRyb2xWYWx1ZV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE1uZ0ludGVybmFsRXJyb3IoJ0Nhbm5vdCBjb21wYXJlIGl0ZW1zLCBwbGVhc2UgcHJvdmlkZSBtYWluIHRhYmxlIGRhdGEga2V5IHByb3BlcnR5IG9yIG1vZGVsIGlkIHByb3BlcnR5LicsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdGb3JtbHlGaWVsZFRhYmxlRGlhbG9nRm9ybUNvbXBvbmVudEVycm9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihjdHhJdGVtKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC53aXRoUnVuTm90aWZpY2F0aW9uU3VjY2Vzcyh1bmRlZmluZWQsIHVuZGVmaW5lZCwgZmFsc2UpXG4gICAgICAgICAgICAgICAgLndpdGhSdW5Ob3RpZmljYXRpb25FcnJvcih1bmRlZmluZWQsIHVuZGVmaW5lZCwgZmFsc2UpXG4gICAgICAgICAgICAgICAgLndpdGhJc1Zpc2libGVGdW5jdGlvbihjdHggPT4gKHRoaXMuaGlkZUFjdGlvbnNGb3JSb3dXaXRoRGVmYXVsdExvY2FsaXphdGlvbihjdHgpID8gb2YoZmFsc2UpIDogb2YoIXRoaXMub3B0aW9ucz8uZm9ybVN0YXRlLmRpc2FibGVkKSkpXG4gICAgICAgICAgICAgICAgLndpdGhJc0VuYWJsZWRGdW5jdGlvbigoKSA9PiB0aGlzLmlzRW5hYmxlZCQpO1xuICAgICAgICAgICAgZGVsZXRlQWN0aW9uLmJ1dHRvbi53aXRoTGFiZWwobnVsbCkud2l0aEljb24oJ3BpIHBpLXRyYXNoJyk7XG4gICAgICAgICAgICB0aGlzLmFjdGlvbnMucHVzaChkZWxldGVBY3Rpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3Rpb25zLnB1c2goLi4udGhpcy5kZXNjcmlwdG9yLmFjdGlvbnMpO1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiB0aGlzLmFjdGlvbnMpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoYWN0aW9uLnBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2xiYXJSaWdodEFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGluaXQgdmFsdWVzXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mb3JtQ29udHJvbC52YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdGhpcy5mb3JtQ29udHJvbC52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5wYXRjaFZhbHVlKFtdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVtaXQgbGlmZWN5Y2xlIGV2ZW50XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5Db21wb25lbnRMaWZlY3ljbGUsIE1uZ0Zvcm1seUZpZWxkVGFibGVEaWFsb2dGb3JtQ29tcG9uZW50LCB0aGlzLCB7XG4gICAgICAgICAgICBldmVudFN1YnR5cGU6IE1uZ0Zvcm1GaWVsZEV2ZW50Q29tcG9uZW50U3VidHlwZS5PTl9JTklUXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCBzdWJzY3JpcHRpb24gPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKSkuc3Vic2NyaWJlKHYgPT4ge1xuICAgICAgICAgICAgdGhpcy5pdGVtc1N1YmplY3QubmV4dCh2KTtcblxuICAgICAgICAgICAgLy8gZW1pdCBsaWZlY3ljbGUgZXZlbnRcbiAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRvci5uZXh0RXZlbnQoTW5nRm9ybUZpZWxkRXZlbnRUeXBlRW51bS5WYWx1ZUNoYW5nZSwgTW5nRm9ybWx5RmllbGRUYWJsZURpYWxvZ0Zvcm1Db21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdlxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BzWydvblZhbHVlQ2hhbmdlJ10pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzWydvblZhbHVlQ2hhbmdlJ10odGhpcy5maWVsZCwgdik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuXG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZFN1YmplY3QubmV4dCh0aGlzLmZvcm1Db250cm9sLmRpc2FibGVkKTtcbiAgICAgICAgc3Vic2NyaXB0aW9uID0gdGhpcy5mb3JtQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnBpcGUoKS5zdWJzY3JpYmUoc3RhdHVzID0+IHtcbiAgICAgICAgICAgIGlmIChzdGF0dXMgPT09ICdESVNBQkxFRCcgJiYgIXRoaXMuaXNEaXNhYmxlZFN1YmplY3QudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGlzYWJsZWRTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXR1cyAhPT0gJ0RJU0FCTEVEJyAmJiB0aGlzLmlzRGlzYWJsZWRTdWJqZWN0LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0Rpc2FibGVkU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5kZXNjcmlwdG9yLm5leHRFdmVudChNbmdGb3JtRmllbGRFdmVudFR5cGVFbnVtLkNvbXBvbmVudExpZmVjeWNsZSwgTW5nRm9ybWx5RmllbGRUYWJsZURpYWxvZ0Zvcm1Db21wb25lbnQsIHRoaXMsIHtcbiAgICAgICAgICAgIGV2ZW50U3VidHlwZTogTW5nRm9ybUZpZWxkRXZlbnRDb21wb25lbnRTdWJ0eXBlLk9OX1ZJRVdfSU5JVFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIC8vIHdhcm5pbmc6IGZvcm1seSBjYWxscyBvbiBkZXN0cm95IGJlZm9yZSBvbiBpbml0XG5cbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuXG4gICAgICAgIC8vIGVtaXQgbGlmZWN5Y2xlIGV2ZW50XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvcj8ubmV4dEV2ZW50KE1uZ0Zvcm1GaWVsZEV2ZW50VHlwZUVudW0uQ29tcG9uZW50TGlmZWN5Y2xlLCBNbmdGb3JtbHlGaWVsZFRhYmxlRGlhbG9nRm9ybUNvbXBvbmVudCwgdGhpcywge1xuICAgICAgICAgICAgZXZlbnRTdWJ0eXBlOiBNbmdGb3JtRmllbGRFdmVudENvbXBvbmVudFN1YnR5cGUuT05fREVTVFJPWVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhpZGVBY3Rpb25zRm9yUm93V2l0aERlZmF1bHRMb2NhbGl6YXRpb24oY3R4OiBBY3Rpb25Db250ZXh0VmFsaWRhdGlvbjxUPikge1xuICAgICAgICBpZiAodGhpcy5kZXNjcmlwdG9yLnRhYmxlRGVzY3JpcHRvci5pc0xvY2FsaXplZCkge1xuICAgICAgICAgICAgaWYgKChjdHgucGFyYW1ldGVycy5pdGVtIGFzIGFueSlbdGhpcy5kZXNjcmlwdG9yLnRhYmxlRGVzY3JpcHRvci5sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eSFdID09PSB0aGlzLmluamVjdG9yLmdldChNbmdDb21tb25zU2VydmljZSkuZGVmYXVsdERhdGFMYW5ndWFnZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4iLCI8bW5nLXRhYmxlIFtkZXNjcmlwdG9yXT1cImRlc2NyaXB0b3IudGFibGVEZXNjcmlwdG9yXCIgW2l0ZW1zXT1cIml0ZW1zJFwiIFthY3Rpb25zXT1cImFjdGlvbnNcIiBbdmlld0NvbnRhaW5lcl09XCJ2aWV3Q29udGFpbmVyXCI+XG4gICAgPG5nLXRlbXBsYXRlIG1uZ1RlbXBsYXRlPVwiY2FwdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlciB0YWJsZS1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1uZy1kYXRhdGFibGUtZm9ybS1sYWJlbCBwLTAgbS0wXCIgW2Zvcl09XCJrZXlcIlxuICAgICAgICAgICAgICAgID57eyBwcm9wcy5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICBAaWYgKHByb3BzLnJlcXVpcmVkICYmIHByb3BzWydoaWRlUmVxdWlyZWRNYXJrZXInXSAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICA8c3Bhbj4qPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICBAZm9yIChhY3Rpb24gb2YgdG9vbGJhclJpZ2h0QWN0aW9uczsgdHJhY2sgYWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgPG1uZy1hY3Rpb24gW2FjdGlvbl09XCJhY3Rpb25cIiBbdmlld0NvbnRhaW5lcl09XCJ2aWV3Q29udGFpbmVyXCI+PC9tbmctYWN0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9tbmctdGFibGU+XG4iXX0=