@mediusinc/mng-commons 0.12.2 → 0.12.3-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 (339) hide show
  1. package/esm2020/lib/api/models/builders/query-param.builder.mjs +58 -58
  2. package/esm2020/lib/api/models/filter-match-type.model.mjs +24 -24
  3. package/esm2020/lib/api/models/filter-param.model.mjs +32 -32
  4. package/esm2020/lib/api/models/index.mjs +8 -8
  5. package/esm2020/lib/api/models/mappers.mjs +12 -12
  6. package/esm2020/lib/api/models/query-mode.model.mjs +17 -17
  7. package/esm2020/lib/api/models/query-param.model.mjs +67 -67
  8. package/esm2020/lib/api/models/query-result.model.mjs +17 -17
  9. package/esm2020/lib/api/models/serialization.model.mjs +1 -1
  10. package/esm2020/lib/api/services/api.abstract.service.mjs +55 -55
  11. package/esm2020/lib/api/services/crud-api.abstract.service.mjs +67 -67
  12. package/esm2020/lib/api/services/get-all-api.abstract.service.mjs +22 -22
  13. package/esm2020/lib/api/services/index.mjs +3 -3
  14. package/esm2020/lib/api/utils/index.mjs +2 -2
  15. package/esm2020/lib/api/utils/medius-rest.util.mjs +151 -151
  16. package/esm2020/lib/api/utils/object-serializer.util.mjs +243 -243
  17. package/esm2020/lib/components/action/action.component.mjs +201 -201
  18. package/esm2020/lib/components/action/editor/action-editor.component.mjs +247 -247
  19. package/esm2020/lib/components/action/index.mjs +3 -3
  20. package/esm2020/lib/components/action/models/action-confirmation-service.model.mjs +1 -1
  21. package/esm2020/lib/components/action/models/action-execution.model.mjs +235 -235
  22. package/esm2020/lib/components/action/models/index.mjs +4 -3
  23. package/esm2020/lib/components/action/models/tableview-action-default-categories.model.mjs +11 -0
  24. package/esm2020/lib/components/action/route/action-route.component.mjs +124 -124
  25. package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +281 -281
  26. package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +194 -189
  27. package/esm2020/lib/components/form/editor/form-editor.component.mjs +211 -211
  28. package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +48 -48
  29. package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +43 -43
  30. package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +24 -24
  31. package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +101 -101
  32. package/esm2020/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +22 -22
  33. package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +179 -179
  34. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +173 -173
  35. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +149 -149
  36. package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +16 -16
  37. package/esm2020/lib/components/form/formly/fields/index.mjs +9 -9
  38. package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +14 -14
  39. package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +14 -14
  40. package/esm2020/lib/components/form/formly/wrappers/index.mjs +2 -2
  41. package/esm2020/lib/components/form/index.mjs +3 -3
  42. package/esm2020/lib/components/form/models/form-editor.event.mjs +33 -33
  43. package/esm2020/lib/components/form/models/index.mjs +1 -1
  44. package/esm2020/lib/components/layout/breadcrumb.component.mjs +16 -16
  45. package/esm2020/lib/components/layout/footer.component.mjs +16 -16
  46. package/esm2020/lib/components/layout/index.mjs +7 -7
  47. package/esm2020/lib/components/layout/main-layout.component.mjs +51 -51
  48. package/esm2020/lib/components/layout/menu-item.component.mjs +238 -238
  49. package/esm2020/lib/components/layout/menu.component.mjs +20 -20
  50. package/esm2020/lib/components/layout/services/index.mjs +1 -1
  51. package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +192 -192
  52. package/esm2020/lib/components/layout/topbar.component.mjs +57 -57
  53. package/esm2020/lib/components/layout/version.component.mjs +57 -57
  54. package/esm2020/lib/components/tableview/index.mjs +6 -6
  55. package/esm2020/lib/components/tableview/models/index.mjs +1 -1
  56. package/esm2020/lib/components/tableview/models/table.event.mjs +15 -15
  57. package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +80 -58
  58. package/esm2020/lib/components/tableview/route/tableview-route.component.mjs +53 -61
  59. package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +104 -104
  60. package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +70 -70
  61. package/esm2020/lib/components/tableview/table/table.component.mjs +531 -509
  62. package/esm2020/lib/components/tableview/tableview.component.mjs +92 -92
  63. package/esm2020/lib/config/formly.config.mjs +180 -180
  64. package/esm2020/lib/config/index.mjs +1 -1
  65. package/esm2020/lib/config/models/index.mjs +2 -2
  66. package/esm2020/lib/config/models/mng-config.model.mjs +1 -1
  67. package/esm2020/lib/config/models/mng-formly-config-model.mjs +1 -1
  68. package/esm2020/lib/data-providers/base.data-provider.mjs +16 -16
  69. package/esm2020/lib/data-providers/editor.data-provider.mjs +36 -36
  70. package/esm2020/lib/data-providers/index.mjs +5 -5
  71. package/esm2020/lib/data-providers/lookup.data-provider.mjs +15 -15
  72. package/esm2020/lib/data-providers/table.data-provider.mjs +24 -17
  73. package/esm2020/lib/data-providers/tableview.data-provider.mjs +46 -17
  74. package/esm2020/lib/descriptors/action.descriptor.mjs +620 -616
  75. package/esm2020/lib/descriptors/column.descriptor.mjs +342 -265
  76. package/esm2020/lib/descriptors/editor.descriptor.mjs +285 -147
  77. package/esm2020/lib/descriptors/field-validation.descriptor.mjs +20 -20
  78. package/esm2020/lib/descriptors/field.descriptor.mjs +854 -820
  79. package/esm2020/lib/descriptors/filter.descriptor.mjs +290 -290
  80. package/esm2020/lib/descriptors/index.mjs +9 -9
  81. package/esm2020/lib/descriptors/interfaces/field-config.interface.mjs +1 -1
  82. package/esm2020/lib/descriptors/interfaces/index.mjs +2 -2
  83. package/esm2020/lib/descriptors/interfaces/lookup-descriptor.interface.mjs +1 -1
  84. package/esm2020/lib/descriptors/model.descriptor.mjs +33 -33
  85. package/esm2020/lib/descriptors/table.descriptor.mjs +522 -198
  86. package/esm2020/lib/descriptors/tableview.descriptor.mjs +355 -135
  87. package/esm2020/lib/descriptors/types/action.type.mjs +52 -52
  88. package/esm2020/lib/descriptors/types/column.type.mjs +10 -10
  89. package/esm2020/lib/descriptors/types/editor.type.mjs +7 -7
  90. package/esm2020/lib/descriptors/types/field.type.mjs +52 -52
  91. package/esm2020/lib/descriptors/types/filter.type.mjs +30 -30
  92. package/esm2020/lib/descriptors/types/index.mjs +6 -6
  93. package/esm2020/lib/descriptors/types/table.type.mjs +16 -16
  94. package/esm2020/lib/descriptors/types/tableview-attr.model.mjs +2 -0
  95. package/esm2020/lib/directives/component.directive.mjs +43 -43
  96. package/esm2020/lib/directives/index.mjs +2 -2
  97. package/esm2020/lib/directives/template.directive.mjs +27 -27
  98. package/esm2020/lib/mng-commons.module.mjs +439 -439
  99. package/esm2020/lib/models/column-value.model.mjs +1 -1
  100. package/esm2020/lib/models/enum.model.mjs +1 -1
  101. package/esm2020/lib/models/error.model.mjs +1 -1
  102. package/esm2020/lib/models/formly-field.model.mjs +1 -1
  103. package/esm2020/lib/models/index.mjs +8 -8
  104. package/esm2020/lib/models/menu.model.mjs +1 -1
  105. package/esm2020/lib/models/user.model.mjs +1 -1
  106. package/esm2020/lib/models/version.model.mjs +1 -1
  107. package/esm2020/lib/models/view-container.model.mjs +1 -1
  108. package/esm2020/lib/pipes/boolean.pipe.mjs +26 -26
  109. package/esm2020/lib/pipes/enum.pipe.mjs +24 -24
  110. package/esm2020/lib/pipes/i18n-property.pipe.mjs +17 -17
  111. package/esm2020/lib/pipes/index.mjs +5 -5
  112. package/esm2020/lib/pipes/json-path.pipe.mjs +79 -79
  113. package/esm2020/lib/pipes/link-formatter.pipe.mjs +38 -38
  114. package/esm2020/lib/router/index.mjs +2 -2
  115. package/esm2020/lib/router/models/index.mjs +1 -1
  116. package/esm2020/lib/router/models/router.model.mjs +2 -2
  117. package/esm2020/lib/router/route-builder.mjs +425 -425
  118. package/esm2020/lib/router/tableview-route-builder.mjs +184 -160
  119. package/esm2020/lib/security/authorization.guard.mjs +25 -25
  120. package/esm2020/lib/security/authorization.service.mjs +46 -46
  121. package/esm2020/lib/security/authorization.util.mjs +15 -15
  122. package/esm2020/lib/security/index.mjs +3 -3
  123. package/esm2020/lib/security/model/authorization.type.mjs +7 -7
  124. package/esm2020/lib/security/model/index.mjs +3 -3
  125. package/esm2020/lib/security/model/permission-service.interface.mjs +1 -1
  126. package/esm2020/lib/security/model/permissions.model.mjs +87 -95
  127. package/esm2020/lib/services/action-executor.service.mjs +537 -537
  128. package/esm2020/lib/services/commons.service.mjs +342 -342
  129. package/esm2020/lib/services/configuration.service.mjs +119 -119
  130. package/esm2020/lib/services/error-mapper.service.mjs +13 -13
  131. package/esm2020/lib/services/index.mjs +6 -6
  132. package/esm2020/lib/services/internal/commons-init.provider.mjs +3 -3
  133. package/esm2020/lib/services/internal/commons-init.service.mjs +43 -43
  134. package/esm2020/lib/services/internal/index.mjs +2 -2
  135. package/esm2020/lib/services/navigation.service.mjs +47 -47
  136. package/esm2020/lib/services/providers/config-service.provider.mjs +29 -29
  137. package/esm2020/lib/services/providers/formly-config.provider.mjs +30 -30
  138. package/esm2020/lib/services/providers/index.mjs +2 -2
  139. package/esm2020/lib/services/tokens/browser-storage.token.mjs +5 -5
  140. package/esm2020/lib/services/tokens/commons-init.token.mjs +2 -2
  141. package/esm2020/lib/services/tokens/default-setting.token.mjs +2 -2
  142. package/esm2020/lib/services/tokens/index.mjs +4 -4
  143. package/esm2020/lib/services/tokens/module-config.token.mjs +2 -2
  144. package/esm2020/lib/services/version.service.mjs +38 -38
  145. package/esm2020/lib/services/view-container.component.service.mjs +34 -34
  146. package/esm2020/lib/styles/button-style.builder.mjs +111 -111
  147. package/esm2020/lib/styles/index.mjs +2 -2
  148. package/esm2020/lib/styles/styles.util.mjs +40 -40
  149. package/esm2020/lib/types/index.mjs +2 -2
  150. package/esm2020/lib/types/type.decorator.mjs +12 -12
  151. package/esm2020/lib/types/type.model.mjs +1 -1
  152. package/esm2020/lib/utils/action-data-provider.util.mjs +144 -144
  153. package/esm2020/lib/utils/column.util.mjs +37 -0
  154. package/esm2020/lib/utils/editor-formly.util.mjs +250 -250
  155. package/esm2020/lib/utils/enum.util.mjs +81 -81
  156. package/esm2020/lib/utils/field.util.mjs +60 -0
  157. package/esm2020/lib/utils/i18n.util.mjs +232 -232
  158. package/esm2020/lib/utils/index.mjs +11 -9
  159. package/esm2020/lib/utils/model.util.mjs +61 -60
  160. package/esm2020/lib/utils/notification.util.mjs +45 -45
  161. package/esm2020/lib/utils/route.util.mjs +23 -23
  162. package/esm2020/lib/utils/string.util.mjs +23 -23
  163. package/esm2020/lib/utils/tableview.util.mjs +58 -0
  164. package/esm2020/lib/utils/type.util.mjs +76 -76
  165. package/esm2020/mediusinc-mng-commons.mjs +4 -4
  166. package/esm2020/public-api.mjs +53 -53
  167. package/fesm2015/mediusinc-mng-commons.mjs +11898 -10853
  168. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  169. package/fesm2020/mediusinc-mng-commons.mjs +11746 -10706
  170. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  171. package/index.d.ts +5 -5
  172. package/lib/api/models/builders/query-param.builder.d.ts +13 -13
  173. package/lib/api/models/filter-match-type.model.d.ts +23 -23
  174. package/lib/api/models/filter-param.model.d.ts +23 -23
  175. package/lib/api/models/index.d.ts +8 -8
  176. package/lib/api/models/mappers.d.ts +6 -6
  177. package/lib/api/models/query-mode.model.d.ts +16 -16
  178. package/lib/api/models/query-param.model.d.ts +31 -31
  179. package/lib/api/models/query-result.model.d.ts +23 -23
  180. package/lib/api/models/serialization.model.d.ts +8 -8
  181. package/lib/api/services/api.abstract.service.d.ts +24 -24
  182. package/lib/api/services/crud-api.abstract.service.d.ts +22 -22
  183. package/lib/api/services/get-all-api.abstract.service.d.ts +14 -14
  184. package/lib/api/services/index.d.ts +3 -3
  185. package/lib/api/utils/index.d.ts +2 -2
  186. package/lib/api/utils/medius-rest.util.d.ts +15 -15
  187. package/lib/api/utils/object-serializer.util.d.ts +33 -33
  188. package/lib/components/action/action.component.d.ts +68 -68
  189. package/lib/components/action/editor/action-editor.component.d.ts +64 -64
  190. package/lib/components/action/index.d.ts +3 -3
  191. package/lib/components/action/models/action-confirmation-service.model.d.ts +6 -6
  192. package/lib/components/action/models/action-execution.model.d.ts +129 -129
  193. package/lib/components/action/models/index.d.ts +3 -2
  194. package/lib/components/action/models/tableview-action-default-categories.model.d.ts +10 -0
  195. package/lib/components/action/route/action-route.component.d.ts +31 -31
  196. package/lib/components/form/autocomplete/autocomplete.component.d.ts +56 -56
  197. package/lib/components/form/dropdown/dropdown.component.d.ts +52 -50
  198. package/lib/components/form/editor/form-editor.component.d.ts +45 -45
  199. package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +15 -15
  200. package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +14 -14
  201. package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +13 -13
  202. package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +23 -23
  203. package/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.d.ts +10 -10
  204. package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +45 -45
  205. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +23 -23
  206. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +38 -38
  207. package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +6 -6
  208. package/lib/components/form/formly/fields/index.d.ts +9 -9
  209. package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +6 -6
  210. package/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.d.ts +6 -6
  211. package/lib/components/form/formly/wrappers/index.d.ts +2 -2
  212. package/lib/components/form/index.d.ts +3 -3
  213. package/lib/components/form/models/form-editor.event.d.ts +37 -37
  214. package/lib/components/form/models/index.d.ts +1 -1
  215. package/lib/components/layout/breadcrumb.component.d.ts +8 -8
  216. package/lib/components/layout/footer.component.d.ts +9 -9
  217. package/lib/components/layout/index.d.ts +7 -7
  218. package/lib/components/layout/main-layout.component.d.ts +20 -20
  219. package/lib/components/layout/menu-item.component.d.ts +44 -44
  220. package/lib/components/layout/menu.component.d.ts +10 -10
  221. package/lib/components/layout/services/index.d.ts +1 -1
  222. package/lib/components/layout/services/main-layout.component.service.d.ts +65 -65
  223. package/lib/components/layout/topbar.component.d.ts +24 -24
  224. package/lib/components/layout/version.component.d.ts +19 -19
  225. package/lib/components/tableview/index.d.ts +6 -6
  226. package/lib/components/tableview/models/index.d.ts +1 -1
  227. package/lib/components/tableview/models/table.event.d.ts +17 -17
  228. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +25 -20
  229. package/lib/components/tableview/route/tableview-route.component.d.ts +18 -23
  230. package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +32 -32
  231. package/lib/components/tableview/table/column-value/column-value.component.d.ts +29 -29
  232. package/lib/components/tableview/table/table.component.d.ts +110 -108
  233. package/lib/components/tableview/tableview.component.d.ts +41 -41
  234. package/lib/config/formly.config.d.ts +16 -16
  235. package/lib/config/index.d.ts +1 -1
  236. package/lib/config/models/index.d.ts +2 -2
  237. package/lib/config/models/mng-config.model.d.ts +36 -36
  238. package/lib/config/models/mng-formly-config-model.d.ts +17 -17
  239. package/lib/data-providers/base.data-provider.d.ts +14 -14
  240. package/lib/data-providers/editor.data-provider.d.ts +25 -25
  241. package/lib/data-providers/index.d.ts +5 -5
  242. package/lib/data-providers/lookup.data-provider.d.ts +14 -14
  243. package/lib/data-providers/table.data-provider.d.ts +19 -14
  244. package/lib/data-providers/tableview.data-provider.d.ts +29 -15
  245. package/lib/descriptors/action.descriptor.d.ts +263 -259
  246. package/lib/descriptors/column.descriptor.d.ts +116 -82
  247. package/lib/descriptors/editor.descriptor.d.ts +102 -37
  248. package/lib/descriptors/field-validation.descriptor.d.ts +18 -18
  249. package/lib/descriptors/field.descriptor.d.ts +305 -300
  250. package/lib/descriptors/filter.descriptor.d.ts +106 -106
  251. package/lib/descriptors/index.d.ts +9 -9
  252. package/lib/descriptors/interfaces/field-config.interface.d.ts +9 -9
  253. package/lib/descriptors/interfaces/index.d.ts +2 -2
  254. package/lib/descriptors/interfaces/lookup-descriptor.interface.d.ts +17 -17
  255. package/lib/descriptors/model.descriptor.d.ts +15 -15
  256. package/lib/descriptors/table.descriptor.d.ts +208 -66
  257. package/lib/descriptors/tableview.descriptor.d.ts +141 -42
  258. package/lib/descriptors/types/action.type.d.ts +45 -45
  259. package/lib/descriptors/types/column.type.d.ts +9 -9
  260. package/lib/descriptors/types/editor.type.d.ts +6 -6
  261. package/lib/descriptors/types/field.type.d.ts +44 -44
  262. package/lib/descriptors/types/filter.type.d.ts +27 -27
  263. package/lib/descriptors/types/index.d.ts +6 -6
  264. package/lib/descriptors/types/table.type.d.ts +13 -13
  265. package/lib/descriptors/types/tableview-attr.model.d.ts +9 -0
  266. package/lib/directives/component.directive.d.ts +16 -16
  267. package/lib/directives/index.d.ts +2 -2
  268. package/lib/directives/template.directive.d.ts +13 -13
  269. package/lib/mng-commons.module.d.ts +87 -87
  270. package/lib/models/column-value.model.d.ts +4 -4
  271. package/lib/models/enum.model.d.ts +6 -6
  272. package/lib/models/error.model.d.ts +14 -14
  273. package/lib/models/formly-field.model.d.ts +16 -16
  274. package/lib/models/index.d.ts +8 -8
  275. package/lib/models/menu.model.d.ts +27 -27
  276. package/lib/models/user.model.d.ts +8 -8
  277. package/lib/models/version.model.d.ts +18 -18
  278. package/lib/models/view-container.model.d.ts +6 -6
  279. package/lib/pipes/boolean.pipe.d.ts +7 -7
  280. package/lib/pipes/enum.pipe.d.ts +8 -8
  281. package/lib/pipes/i18n-property.pipe.d.ts +8 -8
  282. package/lib/pipes/index.d.ts +5 -5
  283. package/lib/pipes/json-path.pipe.d.ts +13 -13
  284. package/lib/pipes/link-formatter.pipe.d.ts +11 -11
  285. package/lib/router/index.d.ts +2 -2
  286. package/lib/router/models/index.d.ts +1 -1
  287. package/lib/router/models/router.model.d.ts +33 -27
  288. package/lib/router/route-builder.d.ts +98 -98
  289. package/lib/router/tableview-route-builder.d.ts +37 -34
  290. package/lib/security/authorization.guard.d.ts +11 -11
  291. package/lib/security/authorization.service.d.ts +19 -19
  292. package/lib/security/authorization.util.d.ts +5 -5
  293. package/lib/security/index.d.ts +3 -3
  294. package/lib/security/model/authorization.type.d.ts +6 -6
  295. package/lib/security/model/index.d.ts +3 -3
  296. package/lib/security/model/permission-service.interface.d.ts +6 -6
  297. package/lib/security/model/permissions.model.d.ts +37 -44
  298. package/lib/services/action-executor.service.d.ts +149 -149
  299. package/lib/services/commons.service.d.ts +78 -78
  300. package/lib/services/configuration.service.d.ts +45 -45
  301. package/lib/services/error-mapper.service.d.ts +7 -7
  302. package/lib/services/index.d.ts +6 -6
  303. package/lib/services/internal/commons-init.provider.d.ts +3 -3
  304. package/lib/services/internal/commons-init.service.d.ts +16 -16
  305. package/lib/services/internal/index.d.ts +2 -2
  306. package/lib/services/navigation.service.d.ts +14 -14
  307. package/lib/services/providers/config-service.provider.d.ts +6 -6
  308. package/lib/services/providers/formly-config.provider.d.ts +4 -4
  309. package/lib/services/providers/index.d.ts +2 -2
  310. package/lib/services/tokens/browser-storage.token.d.ts +2 -2
  311. package/lib/services/tokens/commons-init.token.d.ts +3 -3
  312. package/lib/services/tokens/default-setting.token.d.ts +2 -2
  313. package/lib/services/tokens/index.d.ts +4 -4
  314. package/lib/services/tokens/module-config.token.d.ts +3 -3
  315. package/lib/services/version.service.d.ts +13 -13
  316. package/lib/services/view-container.component.service.d.ts +22 -22
  317. package/lib/styles/button-style.builder.d.ts +26 -26
  318. package/lib/styles/index.d.ts +2 -2
  319. package/lib/styles/styles.util.d.ts +14 -14
  320. package/lib/types/index.d.ts +2 -2
  321. package/lib/types/type.decorator.d.ts +4 -4
  322. package/lib/types/type.model.d.ts +23 -23
  323. package/lib/utils/action-data-provider.util.d.ts +20 -20
  324. package/lib/utils/column.util.d.ts +8 -0
  325. package/lib/utils/editor-formly.util.d.ts +11 -11
  326. package/lib/utils/enum.util.d.ts +50 -50
  327. package/lib/utils/field.util.d.ts +13 -0
  328. package/lib/utils/i18n.util.d.ts +56 -56
  329. package/lib/utils/index.d.ts +10 -8
  330. package/lib/utils/model.util.d.ts +8 -8
  331. package/lib/utils/notification.util.d.ts +11 -11
  332. package/lib/utils/route.util.d.ts +4 -4
  333. package/lib/utils/string.util.d.ts +4 -4
  334. package/lib/utils/tableview.util.d.ts +23 -0
  335. package/lib/utils/type.util.d.ts +36 -36
  336. package/mediusinc-mng-commons-0.12.3-rc.1.tgz +0 -0
  337. package/package.json +1 -1
  338. package/public-api.d.ts +33 -33
  339. package/version-info.json +6 -6
@@ -1,189 +1,194 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Optional, Output, ViewChild, forwardRef } from '@angular/core';
2
- import { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { Dropdown } from 'primeng/dropdown';
4
- import { ReplaySubject, of, switchMap } from 'rxjs';
5
- import { first, map } from 'rxjs/operators';
6
- import { MediusQueryParamBuilder } from '../../../api/models';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@ngx-translate/core";
9
- import * as i2 from "../formly/wrappers";
10
- import * as i3 from "@angular/common";
11
- import * as i4 from "@angular/forms";
12
- import * as i5 from "primeng/dropdown";
13
- import * as i6 from "primeng/multiselect";
14
- export const MNG_DROPDOWN_VALUE_ACCESSOR = {
15
- provide: NG_VALUE_ACCESSOR,
16
- useExisting: forwardRef(() => MngDropdownComponent),
17
- multi: true
18
- };
19
- export class MngDropdownComponent {
20
- constructor(injector, translate, formlyWrapper) {
21
- this.injector = injector;
22
- this.translate = translate;
23
- this.formlyWrapper = formlyWrapper;
24
- this.itemsLabelTranslate = false;
25
- this.multiselect = false;
26
- this.showClear = true;
27
- this.selectFirstItem = false;
28
- this.className = null;
29
- this.dropdownClassName = null;
30
- this.changeValueOnBlur = false;
31
- this.valueChangeEventEmitter = new EventEmitter();
32
- this.itemsSubject = new ReplaySubject(1);
33
- this.dataProviderService = null;
34
- // eslint-disable-next-line @typescript-eslint/no-empty-function
35
- this.onChangeFn = () => { };
36
- // eslint-disable-next-line @typescript-eslint/no-empty-function
37
- this.onTouchedFn = () => { };
38
- this.dropdownFormControl = new FormControl();
39
- this.items$ = this.itemsSubject.asObservable();
40
- }
41
- ngOnInit() {
42
- this.itemsLabelProperty = this.itemsLabelPropertyInit;
43
- this.itemsValueProperty = this.itemsValuePropertyInit;
44
- this.dropdownFormControl.valueChanges.subscribe(v => {
45
- if (!this.changeValueOnBlur) {
46
- this.propagateValueChange(v);
47
- }
48
- });
49
- if (this.dataProvider) {
50
- this.dataProviderService = this.dataProvider.serviceType ? this.injector.get(this.dataProvider.serviceType) : null;
51
- const queryParamBuilder = MediusQueryParamBuilder.create();
52
- if (this.itemsLabelTranslate) {
53
- // setup translation properties
54
- if (this.itemsLabelPropertyInit) {
55
- this.itemsLabelProperty = `${this.itemsLabelPropertyInit}_i18n`;
56
- }
57
- else if (!this.itemsLabelProperty && !this.itemsValuePropertyInit) {
58
- this.itemsLabelProperty = 'title_i18n';
59
- this.itemsValueProperty = 'value';
60
- }
61
- else {
62
- throw new Error(`Invalid use with value (${this.itemsLabelPropertyInit}) and label (${this.itemsLabelPropertyInit}) property setup.`);
63
- }
64
- }
65
- this.itemsSubscription = this.dataProvider
66
- .lookup(queryParamBuilder.build(), this.dataProviderService)
67
- .pipe(switchMap(items => {
68
- if (this.itemsLabelTranslate) {
69
- const translationKeys = items.map(item => (typeof item === 'object' && this.itemsLabelPropertyInit ? item[this.itemsLabelPropertyInit] : item));
70
- if (translationKeys.length === 0) {
71
- return of([]);
72
- }
73
- return this.translate.stream(translationKeys).pipe(map(translations => items.map(item => {
74
- if (typeof item === 'object' && this.itemsLabelPropertyInit) {
75
- const label = item[this.itemsLabelPropertyInit];
76
- const translation = translations[label];
77
- if (translation) {
78
- return { ...item, [this.itemsLabelProperty]: translation };
79
- }
80
- return { ...item };
81
- }
82
- else {
83
- const translation = translations[item];
84
- return {
85
- [this.itemsLabelProperty]: translation ?? item,
86
- [this.itemsValueProperty]: item
87
- };
88
- }
89
- })));
90
- }
91
- else {
92
- return of(items);
93
- }
94
- }))
95
- .subscribe(res => {
96
- this.itemsSubject.next(res);
97
- });
98
- if (this.selectFirstItem && !this.dropdownFormControl?.value) {
99
- this.items$.pipe(first()).subscribe(res => {
100
- const value = this.itemsValueProperty ? res[0][this.itemsValueProperty] : res[0];
101
- this.dropdownFormControl?.setValue(value);
102
- });
103
- }
104
- }
105
- else {
106
- console.warn(`Data provider should be provided for MngDropdownComponent.`);
107
- }
108
- }
109
- ngOnDestroy() {
110
- this.itemsSubscription?.unsubscribe();
111
- }
112
- registerOnChange(fn) {
113
- this.onChangeFn = fn;
114
- }
115
- registerOnTouched(fn) {
116
- this.onTouchedFn = fn;
117
- }
118
- setDisabledState(isDisabled) {
119
- if (isDisabled) {
120
- this.dropdownFormControl.disable();
121
- }
122
- else {
123
- this.dropdownFormControl.enable();
124
- }
125
- }
126
- writeValue(obj) {
127
- this.dropdownFormControl.setValue(obj, { emitEvent: false });
128
- }
129
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
130
- onDropdownBlur(event) {
131
- if (this.changeValueOnBlur) {
132
- this.propagateValueChange(this.dropdownFormControl.value);
133
- }
134
- }
135
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
136
- onPanelHide(event) {
137
- if (this.changeValueOnBlur) {
138
- this.propagateValueChange(this.dropdownFormControl.value);
139
- }
140
- }
141
- propagateValueChange(value) {
142
- this.formlyWrapper?.formControl?.markAsTouched();
143
- this.onChangeFn(value);
144
- this.valueChangeEventEmitter.next(value);
145
- }
146
- }
147
- MngDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngDropdownComponent, deps: [{ token: i0.Injector }, { token: i1.TranslateService }, { token: i2.MngFormlyFieldWrapperComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
148
- MngDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngDropdownComponent, selector: "mng-dropdown", inputs: { dataProvider: "dataProvider", dataKeyProperty: "dataKeyProperty", itemsLabelPropertyInit: ["itemsLabelProperty", "itemsLabelPropertyInit"], itemsLabelTranslate: "itemsLabelTranslate", itemsValuePropertyInit: ["itemsValueProperty", "itemsValuePropertyInit"], itemsDisabledProperty: "itemsDisabledProperty", multiselect: "multiselect", placeholder: "placeholder", showClear: "showClear", selectFirstItem: "selectFirstItem", className: "className", dropdownClassName: "dropdownClassName", changeValueOnBlur: "changeValueOnBlur" }, outputs: { valueChangeEventEmitter: "valueChange" }, providers: [MNG_DROPDOWN_VALUE_ACCESSOR], viewQueries: [{ propertyName: "primeDropdown", first: true, predicate: Dropdown, descendants: true }], ngImport: i0, template: "<p-dropdown\n *ngIf=\"!multiselect; else pMultiselect\"\n [formControl]=\"dropdownFormControl\"\n [placeholder]=\"$any(placeholder)\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [optionLabel]=\"$any(itemsLabelProperty)\"\n [optionValue]=\"$any(itemsValueProperty)\"\n [optionDisabled]=\"$any(itemsDisabledProperty)\"\n [options]=\"$any(items$ | async)\"\n [showClear]=\"showClear\"\n [autoDisplayFirst]=\"false\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n (onBlur)=\"onDropdownBlur($event)\"\n appendTo=\"body\">\n</p-dropdown>\n<ng-template #pMultiselect>\n <p-multiSelect\n [maxSelectedLabels]=\"1\"\n [selectedItemsLabel]=\"'mngDropdown.multiselectOverMaxDisplayLimit' | translate\"\n [formControl]=\"dropdownFormControl\"\n [defaultLabel]=\"$any(placeholder)\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [optionLabel]=\"$any(itemsLabelProperty)\"\n [optionValue]=\"$any(itemsValueProperty)\"\n [optionDisabled]=\"$any(itemsDisabledProperty)\"\n [options]=\"(items$ | async) ?? []\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n [filter]=\"true\"\n [showToggleAll]=\"false\"\n (onPanelHide)=\"onPanelHide($event)\"\n appendTo=\"body\">\n </p-multiSelect>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "itemSize", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i6.MultiSelect, selector: "p-multiSelect", inputs: ["style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "appendTo", "dataKey", "name", "label", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "autoZIndex", "baseZIndex", "filterBy", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "defaultLabel", "placeholder", "options", "filterValue", "itemSize"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
149
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngDropdownComponent, decorators: [{
150
- type: Component,
151
- args: [{ selector: 'mng-dropdown', providers: [MNG_DROPDOWN_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<p-dropdown\n *ngIf=\"!multiselect; else pMultiselect\"\n [formControl]=\"dropdownFormControl\"\n [placeholder]=\"$any(placeholder)\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [optionLabel]=\"$any(itemsLabelProperty)\"\n [optionValue]=\"$any(itemsValueProperty)\"\n [optionDisabled]=\"$any(itemsDisabledProperty)\"\n [options]=\"$any(items$ | async)\"\n [showClear]=\"showClear\"\n [autoDisplayFirst]=\"false\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n (onBlur)=\"onDropdownBlur($event)\"\n appendTo=\"body\">\n</p-dropdown>\n<ng-template #pMultiselect>\n <p-multiSelect\n [maxSelectedLabels]=\"1\"\n [selectedItemsLabel]=\"'mngDropdown.multiselectOverMaxDisplayLimit' | translate\"\n [formControl]=\"dropdownFormControl\"\n [defaultLabel]=\"$any(placeholder)\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [optionLabel]=\"$any(itemsLabelProperty)\"\n [optionValue]=\"$any(itemsValueProperty)\"\n [optionDisabled]=\"$any(itemsDisabledProperty)\"\n [options]=\"(items$ | async) ?? []\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n [filter]=\"true\"\n [showToggleAll]=\"false\"\n (onPanelHide)=\"onPanelHide($event)\"\n appendTo=\"body\">\n </p-multiSelect>\n</ng-template>\n" }]
152
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.TranslateService }, { type: i2.MngFormlyFieldWrapperComponent, decorators: [{
153
- type: Optional
154
- }] }]; }, propDecorators: { dataProvider: [{
155
- type: Input
156
- }], dataKeyProperty: [{
157
- type: Input
158
- }], itemsLabelPropertyInit: [{
159
- type: Input,
160
- args: ['itemsLabelProperty']
161
- }], itemsLabelTranslate: [{
162
- type: Input
163
- }], itemsValuePropertyInit: [{
164
- type: Input,
165
- args: ['itemsValueProperty']
166
- }], itemsDisabledProperty: [{
167
- type: Input
168
- }], multiselect: [{
169
- type: Input
170
- }], placeholder: [{
171
- type: Input
172
- }], showClear: [{
173
- type: Input
174
- }], selectFirstItem: [{
175
- type: Input
176
- }], className: [{
177
- type: Input
178
- }], dropdownClassName: [{
179
- type: Input
180
- }], changeValueOnBlur: [{
181
- type: Input
182
- }], valueChangeEventEmitter: [{
183
- type: Output,
184
- args: ['valueChange']
185
- }], primeDropdown: [{
186
- type: ViewChild,
187
- args: [Dropdown]
188
- }] } });
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQThCLEtBQUssRUFBcUIsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlLLE9BQU8sRUFBdUIsV0FBVyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEYsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBYSxhQUFhLEVBQXlCLEVBQUUsRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDckYsT0FBTyxFQUFDLEtBQUssRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7QUFJNUQsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQXFCO0lBQ3pELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztJQUNuRCxLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFRRixNQUFNLE9BQU8sb0JBQW9CO0lBZ0M3QixZQUFvQixRQUFrQixFQUFVLFNBQTJCLEVBQXNCLGFBQTZDO1FBQTFILGFBQVEsR0FBUixRQUFRLENBQVU7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUFzQixrQkFBYSxHQUFi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S0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLGlCQUFpQjtzQkFBaEMsS0FBSztnQkFDVSxpQkFBaUI7c0JBQWhDLEtBQUs7Z0JBRXdCLHVCQUF1QjtzQkFBcEQsTUFBTTt1QkFBQyxhQUFhO2dCQUVPLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBFeGlzdGluZ1Byb3ZpZGVyLCBJbmplY3RvciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBWaWV3Q2hpbGQsIGZvcndhcmRSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0Ryb3Bkb3dufSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBvZiwgc3dpdGNoTWFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Zmlyc3QsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge01lZGl1c1F1ZXJ5UGFyYW1CdWlsZGVyfSBmcm9tICcuLi8uLi8uLi9hcGkvbW9kZWxzJztcbmltcG9ydCB7SUxvb2t1cERhdGFQcm92aWRlcn0gZnJvbSAnLi4vLi4vLi4vZGF0YS1wcm92aWRlcnMnO1xuaW1wb3J0IHtNbmdGb3JtbHlGaWVsZFdyYXBwZXJDb21wb25lbnR9IGZyb20gJy4uL2Zvcm1seS93cmFwcGVycyc7XG5cbmV4cG9ydCBjb25zdCBNTkdfRFJPUERPV05fVkFMVUVfQUNDRVNTT1I6IEV4aXN0aW5nUHJvdmlkZXIgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTW5nRHJvcGRvd25Db21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ21uZy1kcm9wZG93bicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtNTkdfRFJPUERPV05fVkFMVUVfQUNDRVNTT1JdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1uZ0Ryb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICBASW5wdXQoKSBwdWJsaWMgZGF0YVByb3ZpZGVyPzogSUxvb2t1cERhdGFQcm92aWRlcjxhbnksIGFueT47XG4gICAgQElucHV0KCkgcHVibGljIGRhdGFLZXlQcm9wZXJ0eT86IHN0cmluZztcbiAgICBASW5wdXQoJ2l0ZW1zTGFiZWxQcm9wZXJ0eScpIHB1YmxpYyBpdGVtc0xhYmVsUHJvcGVydHlJbml0Pzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpdGVtc0xhYmVsVHJhbnNsYXRlID0gZmFsc2U7XG4gICAgQElucHV0KCdpdGVtc1ZhbHVlUHJvcGVydHknKSBwdWJsaWMgaXRlbXNWYWx1ZVByb3BlcnR5SW5pdD86IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgaXRlbXNEaXNhYmxlZFByb3BlcnR5Pzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBtdWx0aXNlbGVjdCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgc2hvd0NsZWFyID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0Rmlyc3RJdGVtID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIGNsYXNzTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KCkgcHVibGljIGRyb3Bkb3duQ2xhc3NOYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBwdWJsaWMgY2hhbmdlVmFsdWVPbkJsdXIgPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoJ3ZhbHVlQ2hhbmdlJykgcHVibGljIHZhbHVlQ2hhbmdlRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZChEcm9wZG93bikgcHVibGljIHByaW1lRHJvcGRvd24/OiBEcm9wZG93bjtcblxuICAgIHB1YmxpYyBpdGVtc0xhYmVsUHJvcGVydHk/OiBzdHJpbmc7XG4gICAgcHVibGljIGl0ZW1zVmFsdWVQcm9wZXJ0eT86IHN0cmluZztcbiAgICBwcml2YXRlIGl0ZW1zU3ViamVjdDogU3ViamVjdDxBcnJheTxhbnk+PiA9IG5ldyBSZXBsYXlTdWJqZWN0PEFycmF5PGFueT4+KDEpO1xuICAgIHByaXZhdGUgZGF0YVByb3ZpZGVyU2VydmljZTogYW55ID0gbnVsbDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJpdmF0ZSBvbkNoYW5nZUZuOiBhbnkgPSAoKSA9PiB7fTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJpdmF0ZSBvblRvdWNoZWRGbjogYW55ID0gKCkgPT4ge307XG5cbiAgICBwdWJsaWMgZHJvcGRvd25Gb3JtQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgICBwdWJsaWMgaXRlbXMkOiBPYnNlcnZhYmxlPEFycmF5PGFueT4+ID0gdGhpcy5pdGVtc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHJpdmF0ZSBpdGVtc1N1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLCBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb3JtbHlXcmFwcGVyOiBNbmdGb3JtbHlGaWVsZFdyYXBwZXJDb21wb25lbnQpIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pdGVtc0xhYmVsUHJvcGVydHkgPSB0aGlzLml0ZW1zTGFiZWxQcm9wZXJ0eUluaXQ7XG4gICAgICAgIHRoaXMuaXRlbXNWYWx1ZVByb3BlcnR5ID0gdGhpcy5pdGVtc1ZhbHVlUHJvcGVydHlJbml0O1xuXG4gICAgICAgIHRoaXMuZHJvcGRvd25Gb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHYgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNoYW5nZVZhbHVlT25CbHVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVWYWx1ZUNoYW5nZSh2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFQcm92aWRlclNlcnZpY2UgPSB0aGlzLmRhdGFQcm92aWRlci5zZXJ2aWNlVHlwZSA/IHRoaXMuaW5qZWN0b3IuZ2V0PGFueT4odGhpcy5kYXRhUHJvdmlkZXIuc2VydmljZVR5cGUpIDogbnVsbDtcblxuICAgICAgICAgICAgY29uc3QgcXVlcnlQYXJhbUJ1aWxkZXIgPSBNZWRpdXNRdWVyeVBhcmFtQnVpbGRlci5jcmVhdGUoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXRlbXNMYWJlbFRyYW5zbGF0ZSkge1xuICAgICAgICAgICAgICAgIC8vIHNldHVwIHRyYW5zbGF0aW9uIHByb3BlcnRpZXNcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pdGVtc0xhYmVsUHJvcGVydHlJbml0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXNMYWJlbFByb3BlcnR5ID0gYCR7dGhpcy5pdGVtc0xhYmVsUHJvcGVydHlJbml0fV9pMThuYDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLml0ZW1zTGFiZWxQcm9wZXJ0eSAmJiAhdGhpcy5pdGVtc1ZhbHVlUHJvcGVydHlJbml0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXNMYWJlbFByb3BlcnR5ID0gJ3RpdGxlX2kxOG4nO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1zVmFsdWVQcm9wZXJ0eSA9ICd2YWx1ZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHVzZSB3aXRoIHZhbHVlICgke3RoaXMuaXRlbXNMYWJlbFByb3BlcnR5SW5pdH0pIGFuZCBsYWJlbCAoJHt0aGlzLml0ZW1zTGFiZWxQcm9wZXJ0eUluaXR9KSBwcm9wZXJ0eSBzZXR1cC5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaXRlbXNTdWJzY3JpcHRpb24gPSB0aGlzLmRhdGFQcm92aWRlclxuICAgICAgICAgICAgICAgIC5sb29rdXAocXVlcnlQYXJhbUJ1aWxkZXIuYnVpbGQoKSwgdGhpcy5kYXRhUHJvdmlkZXJTZXJ2aWNlKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoaXRlbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbXNMYWJlbFRyYW5zbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uS2V5czogc3RyaW5nW10gPSBpdGVtcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT4gKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiB0aGlzLml0ZW1zTGFiZWxQcm9wZXJ0eUluaXQgPyAoaXRlbVt0aGlzLml0ZW1zTGFiZWxQcm9wZXJ0eUluaXQgYXMga2V5b2Ygb2JqZWN0XSBhcyBzdHJpbmcpIDogaXRlbSkgYXMgc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2xhdGlvbktleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLnN0cmVhbSh0cmFuc2xhdGlvbktleXMpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCh0cmFuc2xhdGlvbnMgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIHRoaXMuaXRlbXNMYWJlbFByb3BlcnR5SW5pdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGl0ZW1bdGhpcy5pdGVtc0xhYmVsUHJvcGVydHlJbml0IGFzIGtleW9mIG9iamVjdF0gYXMgc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2xhdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdHJhbnNsYXRpb25zW2xhYmVsXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zbGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gey4uLml0ZW0sIFt0aGlzLml0ZW1zTGFiZWxQcm9wZXJ0eSFdOiB0cmFuc2xhdGlvbn07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsuLi5pdGVtfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2xhdGlvbiA9IHRyYW5zbGF0aW9uc1tpdGVtXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzLml0ZW1zTGFiZWxQcm9wZXJ0eSFdOiB0cmFuc2xhdGlvbiA/PyBpdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXMuaXRlbXNWYWx1ZVByb3BlcnR5IV06IGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGl0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1zU3ViamVjdC5uZXh0KHJlcyk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdEZpcnN0SXRlbSAmJiAhdGhpcy5kcm9wZG93bkZvcm1Db250cm9sPy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5pdGVtc1ZhbHVlUHJvcGVydHkgPyByZXNbMF1bdGhpcy5pdGVtc1ZhbHVlUHJvcGVydHldIDogcmVzWzBdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duRm9ybUNvbnRyb2w/LnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgRGF0YSBwcm92aWRlciBzaG91bGQgYmUgcHJvdmlkZWQgZm9yIE1uZ0Ryb3Bkb3duQ29tcG9uZW50LmApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuaXRlbXNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2VGbiA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWRGbiA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Gb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kcm9wZG93bkZvcm1Db250cm9sLnNldFZhbHVlKG9iaiwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgb25Ecm9wZG93bkJsdXIoZXZlbnQ6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5jaGFuZ2VWYWx1ZU9uQmx1cikge1xuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVWYWx1ZUNoYW5nZSh0aGlzLmRyb3Bkb3duRm9ybUNvbnRyb2wudmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIG9uUGFuZWxIaWRlKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hhbmdlVmFsdWVPbkJsdXIpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlVmFsdWVDaGFuZ2UodGhpcy5kcm9wZG93bkZvcm1Db250cm9sLnZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcHJvcGFnYXRlVmFsdWVDaGFuZ2UodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLmZvcm1seVdyYXBwZXI/LmZvcm1Db250cm9sPy5tYXJrQXNUb3VjaGVkKCk7XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuKHZhbHVlKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZUV2ZW50RW1pdHRlci5uZXh0KHZhbHVlKTtcbiAgICB9XG59XG4iLCI8cC1kcm9wZG93blxuICAgICpuZ0lmPVwiIW11bHRpc2VsZWN0OyBlbHNlIHBNdWx0aXNlbGVjdFwiXG4gICAgW2Zvcm1Db250cm9sXT1cImRyb3Bkb3duRm9ybUNvbnRyb2xcIlxuICAgIFtwbGFjZWhvbGRlcl09XCIkYW55KHBsYWNlaG9sZGVyKVwiXG4gICAgW2RhdGFLZXldPVwiJGFueShkYXRhS2V5UHJvcGVydHkpXCJcbiAgICBbb3B0aW9uTGFiZWxdPVwiJGFueShpdGVtc0xhYmVsUHJvcGVydHkpXCJcbiAgICBbb3B0aW9uVmFsdWVdPVwiJGFueShpdGVtc1ZhbHVlUHJvcGVydHkpXCJcbiAgICBbb3B0aW9uRGlzYWJsZWRdPVwiJGFueShpdGVtc0Rpc2FibGVkUHJvcGVydHkpXCJcbiAgICBbb3B0aW9uc109XCIkYW55KGl0ZW1zJCB8IGFzeW5jKVwiXG4gICAgW3Nob3dDbGVhcl09XCJzaG93Q2xlYXJcIlxuICAgIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCJcbiAgICBbc3R5bGVDbGFzc109XCIkYW55KGNsYXNzTmFtZSlcIlxuICAgIFtwYW5lbFN0eWxlQ2xhc3NdPVwiJGFueShkcm9wZG93bkNsYXNzTmFtZSlcIlxuICAgIChvbkJsdXIpPVwib25Ecm9wZG93bkJsdXIoJGV2ZW50KVwiXG4gICAgYXBwZW5kVG89XCJib2R5XCI+XG48L3AtZHJvcGRvd24+XG48bmctdGVtcGxhdGUgI3BNdWx0aXNlbGVjdD5cbiAgICA8cC1tdWx0aVNlbGVjdFxuICAgICAgICBbbWF4U2VsZWN0ZWRMYWJlbHNdPVwiMVwiXG4gICAgICAgIFtzZWxlY3RlZEl0ZW1zTGFiZWxdPVwiJ21uZ0Ryb3Bkb3duLm11bHRpc2VsZWN0T3Zlck1heERpc3BsYXlMaW1pdCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZHJvcGRvd25Gb3JtQ29udHJvbFwiXG4gICAgICAgIFtkZWZhdWx0TGFiZWxdPVwiJGFueShwbGFjZWhvbGRlcilcIlxuICAgICAgICBbZGF0YUtleV09XCIkYW55KGRhdGFLZXlQcm9wZXJ0eSlcIlxuICAgICAgICBbb3B0aW9uTGFiZWxdPVwiJGFueShpdGVtc0xhYmVsUHJvcGVydHkpXCJcbiAgICAgICAgW29wdGlvblZhbHVlXT1cIiRhbnkoaXRlbXNWYWx1ZVByb3BlcnR5KVwiXG4gICAgICAgIFtvcHRpb25EaXNhYmxlZF09XCIkYW55KGl0ZW1zRGlzYWJsZWRQcm9wZXJ0eSlcIlxuICAgICAgICBbb3B0aW9uc109XCIoaXRlbXMkIHwgYXN5bmMpID8/IFtdXCJcbiAgICAgICAgW3N0eWxlQ2xhc3NdPVwiJGFueShjbGFzc05hbWUpXCJcbiAgICAgICAgW3BhbmVsU3R5bGVDbGFzc109XCIkYW55KGRyb3Bkb3duQ2xhc3NOYW1lKVwiXG4gICAgICAgIFtmaWx0ZXJdPVwidHJ1ZVwiXG4gICAgICAgIFtzaG93VG9nZ2xlQWxsXT1cImZhbHNlXCJcbiAgICAgICAgKG9uUGFuZWxIaWRlKT1cIm9uUGFuZWxIaWRlKCRldmVudClcIlxuICAgICAgICBhcHBlbmRUbz1cImJvZHlcIj5cbiAgICA8L3AtbXVsdGlTZWxlY3Q+XG48L25nLXRlbXBsYXRlPlxuIl19
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Optional, Output, ViewChild, forwardRef } from '@angular/core';
2
+ import { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { Dropdown } from 'primeng/dropdown';
4
+ import { ReplaySubject, of, switchMap } from 'rxjs';
5
+ import { first, map } from 'rxjs/operators';
6
+ import { MediusQueryParamBuilder } from '../../../api/models';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@ngx-translate/core";
9
+ import * as i2 from "../formly/wrappers";
10
+ import * as i3 from "@angular/common";
11
+ import * as i4 from "@angular/forms";
12
+ import * as i5 from "primeng/dropdown";
13
+ import * as i6 from "primeng/multiselect";
14
+ export const MNG_DROPDOWN_VALUE_ACCESSOR = {
15
+ provide: NG_VALUE_ACCESSOR,
16
+ useExisting: forwardRef(() => MngDropdownComponent),
17
+ multi: true
18
+ };
19
+ export class MngDropdownComponent {
20
+ constructor(injector, translate, formlyWrapper) {
21
+ this.injector = injector;
22
+ this.translate = translate;
23
+ this.formlyWrapper = formlyWrapper;
24
+ this.itemsLabelTranslate = false;
25
+ this.multiselect = false;
26
+ this.showClear = true;
27
+ this.selectFirstItem = false;
28
+ this.className = null;
29
+ this.dropdownClassName = null;
30
+ this.changeValueOnBlur = false;
31
+ this.loadingSubject = new ReplaySubject(1);
32
+ this.$loading = this.loadingSubject.asObservable();
33
+ this.valueChangeEventEmitter = new EventEmitter();
34
+ this.itemsSubject = new ReplaySubject(1);
35
+ this.dataProviderService = null;
36
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
37
+ this.onChangeFn = () => { };
38
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
39
+ this.onTouchedFn = () => { };
40
+ this.dropdownFormControl = new FormControl();
41
+ this.items$ = this.itemsSubject.asObservable();
42
+ this.loadingSubject.next(false);
43
+ }
44
+ ngOnInit() {
45
+ this.itemsLabelProperty = this.itemsLabelPropertyInit;
46
+ this.itemsValueProperty = this.itemsValuePropertyInit;
47
+ this.dropdownFormControl.valueChanges.subscribe(v => {
48
+ if (!this.changeValueOnBlur) {
49
+ this.propagateValueChange(v);
50
+ }
51
+ });
52
+ if (this.dataProvider) {
53
+ this.loadingSubject.next(true);
54
+ this.dataProviderService = this.dataProvider.serviceType ? this.injector.get(this.dataProvider.serviceType) : null;
55
+ const queryParamBuilder = MediusQueryParamBuilder.create();
56
+ if (this.itemsLabelTranslate) {
57
+ // setup translation properties
58
+ if (this.itemsLabelPropertyInit) {
59
+ this.itemsLabelProperty = `${this.itemsLabelPropertyInit}_i18n`;
60
+ }
61
+ else if (!this.itemsLabelProperty && !this.itemsValuePropertyInit) {
62
+ this.itemsLabelProperty = 'title_i18n';
63
+ this.itemsValueProperty = 'value';
64
+ }
65
+ else {
66
+ throw new Error(`Invalid use with value (${this.itemsLabelPropertyInit}) and label (${this.itemsLabelPropertyInit}) property setup.`);
67
+ }
68
+ }
69
+ this.itemsSubscription = this.dataProvider
70
+ .lookup(queryParamBuilder.build(), this.dataProviderService)
71
+ .pipe(switchMap(items => {
72
+ if (this.itemsLabelTranslate) {
73
+ const translationKeys = items.map(item => (typeof item === 'object' && this.itemsLabelPropertyInit ? item[this.itemsLabelPropertyInit] : item));
74
+ if (translationKeys.length === 0) {
75
+ return of([]);
76
+ }
77
+ return this.translate.stream(translationKeys).pipe(map(translations => items.map(item => {
78
+ if (typeof item === 'object' && this.itemsLabelPropertyInit) {
79
+ const label = item[this.itemsLabelPropertyInit];
80
+ const translation = translations[label];
81
+ if (translation) {
82
+ return { ...item, [this.itemsLabelProperty]: translation };
83
+ }
84
+ return { ...item };
85
+ }
86
+ else {
87
+ const translation = translations[item];
88
+ return {
89
+ [this.itemsLabelProperty]: translation ?? item,
90
+ [this.itemsValueProperty]: item
91
+ };
92
+ }
93
+ })));
94
+ }
95
+ else {
96
+ return of(items);
97
+ }
98
+ }))
99
+ .subscribe(res => {
100
+ this.itemsSubject.next(res);
101
+ this.loadingSubject.next(false);
102
+ });
103
+ if (this.selectFirstItem && !this.dropdownFormControl?.value) {
104
+ this.items$.pipe(first()).subscribe(res => {
105
+ const value = this.itemsValueProperty ? res[0][this.itemsValueProperty] : res[0];
106
+ this.dropdownFormControl?.setValue(value);
107
+ });
108
+ }
109
+ }
110
+ else {
111
+ console.warn(`Data provider should be provided for MngDropdownComponent.`);
112
+ }
113
+ }
114
+ ngOnDestroy() {
115
+ this.itemsSubscription?.unsubscribe();
116
+ }
117
+ registerOnChange(fn) {
118
+ this.onChangeFn = fn;
119
+ }
120
+ registerOnTouched(fn) {
121
+ this.onTouchedFn = fn;
122
+ }
123
+ setDisabledState(isDisabled) {
124
+ if (isDisabled) {
125
+ this.dropdownFormControl.disable();
126
+ }
127
+ else {
128
+ this.dropdownFormControl.enable();
129
+ }
130
+ }
131
+ writeValue(obj) {
132
+ this.dropdownFormControl.setValue(obj, { emitEvent: false });
133
+ }
134
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
135
+ onDropdownBlur(event) {
136
+ if (this.changeValueOnBlur) {
137
+ this.propagateValueChange(this.dropdownFormControl.value);
138
+ }
139
+ }
140
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
141
+ onPanelHide(event) {
142
+ if (this.changeValueOnBlur) {
143
+ this.propagateValueChange(this.dropdownFormControl.value);
144
+ }
145
+ }
146
+ propagateValueChange(value) {
147
+ this.formlyWrapper?.formControl?.markAsTouched();
148
+ this.onChangeFn(value);
149
+ this.valueChangeEventEmitter.next(value);
150
+ }
151
+ }
152
+ MngDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngDropdownComponent, deps: [{ token: i0.Injector }, { token: i1.TranslateService }, { token: i2.MngFormlyFieldWrapperComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
153
+ MngDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngDropdownComponent, selector: "mng-dropdown", inputs: { dataProvider: "dataProvider", dataKeyProperty: "dataKeyProperty", itemsLabelPropertyInit: ["itemsLabelProperty", "itemsLabelPropertyInit"], itemsLabelTranslate: "itemsLabelTranslate", itemsValuePropertyInit: ["itemsValueProperty", "itemsValuePropertyInit"], itemsDisabledProperty: "itemsDisabledProperty", multiselect: "multiselect", placeholder: "placeholder", showClear: "showClear", selectFirstItem: "selectFirstItem", className: "className", dropdownClassName: "dropdownClassName", changeValueOnBlur: "changeValueOnBlur" }, outputs: { valueChangeEventEmitter: "valueChange" }, providers: [MNG_DROPDOWN_VALUE_ACCESSOR], viewQueries: [{ propertyName: "primeDropdown", first: true, predicate: Dropdown, descendants: true }], ngImport: i0, template: "<p-dropdown\n *ngIf=\"!multiselect; else pMultiselect\"\n [formControl]=\"dropdownFormControl\"\n [placeholder]=\"$any(placeholder)\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [optionLabel]=\"$any(itemsLabelProperty)\"\n [optionValue]=\"$any(itemsValueProperty)\"\n [optionDisabled]=\"$any(itemsDisabledProperty)\"\n [options]=\"$any(items$ | async)\"\n [showClear]=\"showClear\"\n [autoDisplayFirst]=\"false\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n (onBlur)=\"onDropdownBlur($event)\"\n [dropdownIcon]=\"($loading | async) ?? false ? 'pi pi-spinner pi-spin' : 'pi pi-chevron-down'\"\n appendTo=\"body\">\n</p-dropdown>\n<ng-template #pMultiselect>\n <p-multiSelect\n [maxSelectedLabels]=\"1\"\n [selectedItemsLabel]=\"'mngDropdown.multiselectOverMaxDisplayLimit' | translate\"\n [formControl]=\"dropdownFormControl\"\n [defaultLabel]=\"$any(placeholder)\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [optionLabel]=\"$any(itemsLabelProperty)\"\n [optionValue]=\"$any(itemsValueProperty)\"\n [optionDisabled]=\"$any(itemsDisabledProperty)\"\n [options]=\"(items$ | async) ?? []\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n [filter]=\"true\"\n [showToggleAll]=\"false\"\n (onPanelHide)=\"onPanelHide($event)\"\n appendTo=\"body\">\n </p-multiSelect>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "itemSize", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i6.MultiSelect, selector: "p-multiSelect", inputs: ["style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "appendTo", "dataKey", "name", "label", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "autoZIndex", "baseZIndex", "filterBy", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "defaultLabel", "placeholder", "options", "filterValue", "itemSize"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngDropdownComponent, decorators: [{
155
+ type: Component,
156
+ args: [{ selector: 'mng-dropdown', providers: [MNG_DROPDOWN_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<p-dropdown\n *ngIf=\"!multiselect; else pMultiselect\"\n [formControl]=\"dropdownFormControl\"\n [placeholder]=\"$any(placeholder)\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [optionLabel]=\"$any(itemsLabelProperty)\"\n [optionValue]=\"$any(itemsValueProperty)\"\n [optionDisabled]=\"$any(itemsDisabledProperty)\"\n [options]=\"$any(items$ | async)\"\n [showClear]=\"showClear\"\n [autoDisplayFirst]=\"false\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n (onBlur)=\"onDropdownBlur($event)\"\n [dropdownIcon]=\"($loading | async) ?? false ? 'pi pi-spinner pi-spin' : 'pi pi-chevron-down'\"\n appendTo=\"body\">\n</p-dropdown>\n<ng-template #pMultiselect>\n <p-multiSelect\n [maxSelectedLabels]=\"1\"\n [selectedItemsLabel]=\"'mngDropdown.multiselectOverMaxDisplayLimit' | translate\"\n [formControl]=\"dropdownFormControl\"\n [defaultLabel]=\"$any(placeholder)\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [optionLabel]=\"$any(itemsLabelProperty)\"\n [optionValue]=\"$any(itemsValueProperty)\"\n [optionDisabled]=\"$any(itemsDisabledProperty)\"\n [options]=\"(items$ | async) ?? []\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n [filter]=\"true\"\n [showToggleAll]=\"false\"\n (onPanelHide)=\"onPanelHide($event)\"\n appendTo=\"body\">\n </p-multiSelect>\n</ng-template>\n" }]
157
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.TranslateService }, { type: i2.MngFormlyFieldWrapperComponent, decorators: [{
158
+ type: Optional
159
+ }] }]; }, propDecorators: { dataProvider: [{
160
+ type: Input
161
+ }], dataKeyProperty: [{
162
+ type: Input
163
+ }], itemsLabelPropertyInit: [{
164
+ type: Input,
165
+ args: ['itemsLabelProperty']
166
+ }], itemsLabelTranslate: [{
167
+ type: Input
168
+ }], itemsValuePropertyInit: [{
169
+ type: Input,
170
+ args: ['itemsValueProperty']
171
+ }], itemsDisabledProperty: [{
172
+ type: Input
173
+ }], multiselect: [{
174
+ type: Input
175
+ }], placeholder: [{
176
+ type: Input
177
+ }], showClear: [{
178
+ type: Input
179
+ }], selectFirstItem: [{
180
+ type: Input
181
+ }], className: [{
182
+ type: Input
183
+ }], dropdownClassName: [{
184
+ type: Input
185
+ }], changeValueOnBlur: [{
186
+ type: Input
187
+ }], valueChangeEventEmitter: [{
188
+ type: Output,
189
+ args: ['valueChange']
190
+ }], primeDropdown: [{
191
+ type: ViewChild,
192
+ args: [Dropdown]
193
+ }] } });
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQThCLEtBQUssRUFBcUIsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlLLE9BQU8sRUFBdUIsV0FBVyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEYsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBYSxhQUFhLEVBQXlCLEVBQUUsRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDckYsT0FBTyxFQUFDLEtBQUssRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7QUFJNUQsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQXFCO0lBQ3pELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztJQUNuRCxLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFRRixNQUFNLE9BQU8sb0JBQW9CO0lBbUM3QixZQUFvQixRQUFrQixFQUFVLFNBQTJCLEVBQXNCLGFBQTZDO1FBQTFILGFBQVEsR0FBUixRQUFRLENBQVU7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUFzQixrQkFBYSxHQUFi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QUViLENBQUMsMkJBQTJCLENBQUMsbUJBQ3ZCLHVCQUF1QixDQUFDLE1BQU07OzBCQXFDK0IsUUFBUTs0Q0FsQ3RFLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFDOEIsc0JBQXNCO3NCQUF6RCxLQUFLO3VCQUFDLG9CQUFvQjtnQkFDWCxtQkFBbUI7c0JBQWxDLEtBQUs7Z0JBQzhCLHNCQUFzQjtzQkFBekQsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBQ1gscUJBQXFCO3NCQUFwQyxLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxpQkFBaUI7c0JBQWhDLEtBQUs7Z0JBQ1UsaUJBQWlCO3NCQUFoQyxLQUFLO2dCQUt3Qix1QkFBdUI7c0JBQXBELE1BQU07dUJBQUMsYUFBYTtnQkFFTyxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgRXhpc3RpbmdQcm92aWRlciwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0NoaWxkLCBmb3J3YXJkUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtEcm9wZG93bn0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XG5pbXBvcnQge09ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgb2YsIHN3aXRjaE1hcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpcnN0LCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtNZWRpdXNRdWVyeVBhcmFtQnVpbGRlcn0gZnJvbSAnLi4vLi4vLi4vYXBpL21vZGVscyc7XG5pbXBvcnQge0lMb29rdXBEYXRhUHJvdmlkZXJ9IGZyb20gJy4uLy4uLy4uL2RhdGEtcHJvdmlkZXJzJztcbmltcG9ydCB7TW5nRm9ybWx5RmllbGRXcmFwcGVyQ29tcG9uZW50fSBmcm9tICcuLi9mb3JtbHkvd3JhcHBlcnMnO1xuXG5leHBvcnQgY29uc3QgTU5HX0RST1BET1dOX1ZBTFVFX0FDQ0VTU09SOiBFeGlzdGluZ1Byb3ZpZGVyID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1uZ0Ryb3Bkb3duQ29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtbmctZHJvcGRvd24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbTU5HX0RST1BET1dOX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBNbmdEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgQElucHV0KCkgcHVibGljIGRhdGFQcm92aWRlcj86IElMb29rdXBEYXRhUHJvdmlkZXI8YW55LCBhbnk+O1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkYXRhS2V5UHJvcGVydHk/OiBzdHJpbmc7XG4gICAgQElucHV0KCdpdGVtc0xhYmVsUHJvcGVydHknKSBwdWJsaWMgaXRlbXNMYWJlbFByb3BlcnR5SW5pdD86IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgaXRlbXNMYWJlbFRyYW5zbGF0ZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgnaXRlbXNWYWx1ZVByb3BlcnR5JykgcHVibGljIGl0ZW1zVmFsdWVQcm9wZXJ0eUluaXQ/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIGl0ZW1zRGlzYWJsZWRQcm9wZXJ0eT86IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgbXVsdGlzZWxlY3QgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIHNob3dDbGVhciA9IHRydWU7XG4gICAgQElucHV0KCkgcHVibGljIHNlbGVjdEZpcnN0SXRlbSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjbGFzc05hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkcm9wZG93bkNsYXNzTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KCkgcHVibGljIGNoYW5nZVZhbHVlT25CbHVyID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGxvYWRpbmdTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG4gICAgcHVibGljICRsb2FkaW5nOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5sb2FkaW5nU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIEBPdXRwdXQoJ3ZhbHVlQ2hhbmdlJykgcHVibGljIHZhbHVlQ2hhbmdlRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZChEcm9wZG93bikgcHVibGljIHByaW1lRHJvcGRvd24/OiBEcm9wZG93bjtcblxuICAgIHB1YmxpYyBpdGVtc0xhYmVsUHJvcGVydHk/OiBzdHJpbmc7XG4gICAgcHVibGljIGl0ZW1zVmFsdWVQcm9wZXJ0eT86IHN0cmluZztcbiAgICBwcml2YXRlIGl0ZW1zU3ViamVjdDogU3ViamVjdDxBcnJheTxhbnk+PiA9IG5ldyBSZXBsYXlTdWJqZWN0PEFycmF5PGFueT4+KDEpO1xuICAgIHByaXZhdGUgZGF0YVByb3ZpZGVyU2VydmljZTogYW55ID0gbnVsbDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJpdmF0ZSBvbkNoYW5nZUZuOiBhbnkgPSAoKSA9PiB7fTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJpdmF0ZSBvblRvdWNoZWRGbjogYW55ID0gKCkgPT4ge307XG5cbiAgICBwdWJsaWMgZHJvcGRvd25Gb3JtQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgICBwdWJsaWMgaXRlbXMkOiBPYnNlcnZhYmxlPEFycmF5PGFueT4+ID0gdGhpcy5pdGVtc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHJpdmF0ZSBpdGVtc1N1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLCBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb3JtbHlXcmFwcGVyOiBNbmdGb3JtbHlGaWVsZFdyYXBwZXJDb21wb25lbnQpIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pdGVtc0xhYmVsUHJvcGVydHkgPSB0aGlzLml0ZW1zTGFiZWxQcm9wZXJ0eUluaXQ7XG4gICAgICAgIHRoaXMuaXRlbXNWYWx1ZVByb3BlcnR5ID0gdGhpcy5pdGVtc1ZhbHVlUHJvcGVydHlJbml0O1xuXG4gICAgICAgIHRoaXMuZHJvcGRvd25Gb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHYgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNoYW5nZVZhbHVlT25CbHVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVWYWx1ZUNoYW5nZSh2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLmRhdGFQcm92aWRlclNlcnZpY2UgPSB0aGlzLmRhdGFQcm92aWRlci5zZXJ2aWNlVHlwZSA/IHRoaXMuaW5qZWN0b3IuZ2V0PGFueT4odGhpcy5kYXRhUHJvdmlkZXIuc2VydmljZVR5cGUpIDogbnVsbDtcblxuICAgICAgICAgICAgY29uc3QgcXVlcnlQYXJhbUJ1aWxkZXIgPSBNZWRpdXNRdWVyeVBhcmFtQnVpbGRlci5jcmVhdGUoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXRlbXNMYWJlbFRyYW5zbGF0ZSkge1xuICAgICAgICAgICAgICAgIC8vIHNldHVwIHRyYW5zbGF0aW9uIHByb3BlcnRpZXNcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pdGVtc0xhYmVsUHJvcGVydHlJbml0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXNMYWJlbFByb3BlcnR5ID0gYCR7dGhpcy5pdGVtc0xhYmVsUHJvcGVydHlJbml0fV9pMThuYDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLml0ZW1zTGFiZWxQcm9wZXJ0eSAmJiAhdGhpcy5pdGVtc1ZhbHVlUHJvcGVydHlJbml0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXNMYWJlbFByb3BlcnR5ID0gJ3RpdGxlX2kxOG4nO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1zVmFsdWVQcm9wZXJ0eSA9ICd2YWx1ZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHVzZSB3aXRoIHZhbHVlICgke3RoaXMuaXRlbXNMYWJlbFByb3BlcnR5SW5pdH0pIGFuZCBsYWJlbCAoJHt0aGlzLml0ZW1zTGFiZWxQcm9wZXJ0eUluaXR9KSBwcm9wZXJ0eSBzZXR1cC5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaXRlbXNTdWJzY3JpcHRpb24gPSB0aGlzLmRhdGFQcm92aWRlclxuICAgICAgICAgICAgICAgIC5sb29rdXAocXVlcnlQYXJhbUJ1aWxkZXIuYnVpbGQoKSwgdGhpcy5kYXRhUHJvdmlkZXJTZXJ2aWNlKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoaXRlbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbXNMYWJlbFRyYW5zbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uS2V5czogc3RyaW5nW10gPSBpdGVtcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPT4gKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiB0aGlzLml0ZW1zTGFiZWxQcm9wZXJ0eUluaXQgPyAoaXRlbVt0aGlzLml0ZW1zTGFiZWxQcm9wZXJ0eUluaXQgYXMga2V5b2Ygb2JqZWN0XSBhcyBzdHJpbmcpIDogaXRlbSkgYXMgc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2xhdGlvbktleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLnN0cmVhbSh0cmFuc2xhdGlvbktleXMpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCh0cmFuc2xhdGlvbnMgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIHRoaXMuaXRlbXNMYWJlbFByb3BlcnR5SW5pdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGl0ZW1bdGhpcy5pdGVtc0xhYmVsUHJvcGVydHlJbml0IGFzIGtleW9mIG9iamVjdF0gYXMgc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2xhdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdHJhbnNsYXRpb25zW2xhYmVsXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zbGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gey4uLml0ZW0sIFt0aGlzLml0ZW1zTGFiZWxQcm9wZXJ0eSFdOiB0cmFuc2xhdGlvbn07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsuLi5pdGVtfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2xhdGlvbiA9IHRyYW5zbGF0aW9uc1tpdGVtXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzLml0ZW1zTGFiZWxQcm9wZXJ0eSFdOiB0cmFuc2xhdGlvbiA/PyBpdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXMuaXRlbXNWYWx1ZVByb3BlcnR5IV06IGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGl0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1zU3ViamVjdC5uZXh0KHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdEZpcnN0SXRlbSAmJiAhdGhpcy5kcm9wZG93bkZvcm1Db250cm9sPy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5pdGVtc1ZhbHVlUHJvcGVydHkgPyByZXNbMF1bdGhpcy5pdGVtc1ZhbHVlUHJvcGVydHldIDogcmVzWzBdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duRm9ybUNvbnRyb2w/LnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgRGF0YSBwcm92aWRlciBzaG91bGQgYmUgcHJvdmlkZWQgZm9yIE1uZ0Ryb3Bkb3duQ29tcG9uZW50LmApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuaXRlbXNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2VGbiA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWRGbiA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Gb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kcm9wZG93bkZvcm1Db250cm9sLnNldFZhbHVlKG9iaiwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgb25Ecm9wZG93bkJsdXIoZXZlbnQ6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5jaGFuZ2VWYWx1ZU9uQmx1cikge1xuICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVWYWx1ZUNoYW5nZSh0aGlzLmRyb3Bkb3duRm9ybUNvbnRyb2wudmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIG9uUGFuZWxIaWRlKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hhbmdlVmFsdWVPbkJsdXIpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlVmFsdWVDaGFuZ2UodGhpcy5kcm9wZG93bkZvcm1Db250cm9sLnZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcHJvcGFnYXRlVmFsdWVDaGFuZ2UodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLmZvcm1seVdyYXBwZXI/LmZvcm1Db250cm9sPy5tYXJrQXNUb3VjaGVkKCk7XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuKHZhbHVlKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZUV2ZW50RW1pdHRlci5uZXh0KHZhbHVlKTtcbiAgICB9XG59XG4iLCI8cC1kcm9wZG93blxuICAgICpuZ0lmPVwiIW11bHRpc2VsZWN0OyBlbHNlIHBNdWx0aXNlbGVjdFwiXG4gICAgW2Zvcm1Db250cm9sXT1cImRyb3Bkb3duRm9ybUNvbnRyb2xcIlxuICAgIFtwbGFjZWhvbGRlcl09XCIkYW55KHBsYWNlaG9sZGVyKVwiXG4gICAgW2RhdGFLZXldPVwiJGFueShkYXRhS2V5UHJvcGVydHkpXCJcbiAgICBbb3B0aW9uTGFiZWxdPVwiJGFueShpdGVtc0xhYmVsUHJvcGVydHkpXCJcbiAgICBbb3B0aW9uVmFsdWVdPVwiJGFueShpdGVtc1ZhbHVlUHJvcGVydHkpXCJcbiAgICBbb3B0aW9uRGlzYWJsZWRdPVwiJGFueShpdGVtc0Rpc2FibGVkUHJvcGVydHkpXCJcbiAgICBbb3B0aW9uc109XCIkYW55KGl0ZW1zJCB8IGFzeW5jKVwiXG4gICAgW3Nob3dDbGVhcl09XCJzaG93Q2xlYXJcIlxuICAgIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCJcbiAgICBbc3R5bGVDbGFzc109XCIkYW55KGNsYXNzTmFtZSlcIlxuICAgIFtwYW5lbFN0eWxlQ2xhc3NdPVwiJGFueShkcm9wZG93bkNsYXNzTmFtZSlcIlxuICAgIChvbkJsdXIpPVwib25Ecm9wZG93bkJsdXIoJGV2ZW50KVwiXG4gICAgW2Ryb3Bkb3duSWNvbl09XCIoJGxvYWRpbmcgfCBhc3luYykgPz8gZmFsc2UgPyAncGkgcGktc3Bpbm5lciBwaS1zcGluJyA6ICdwaSBwaS1jaGV2cm9uLWRvd24nXCJcbiAgICBhcHBlbmRUbz1cImJvZHlcIj5cbjwvcC1kcm9wZG93bj5cbjxuZy10ZW1wbGF0ZSAjcE11bHRpc2VsZWN0PlxuICAgIDxwLW11bHRpU2VsZWN0XG4gICAgICAgIFttYXhTZWxlY3RlZExhYmVsc109XCIxXCJcbiAgICAgICAgW3NlbGVjdGVkSXRlbXNMYWJlbF09XCInbW5nRHJvcGRvd24ubXVsdGlzZWxlY3RPdmVyTWF4RGlzcGxheUxpbWl0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJkcm9wZG93bkZvcm1Db250cm9sXCJcbiAgICAgICAgW2RlZmF1bHRMYWJlbF09XCIkYW55KHBsYWNlaG9sZGVyKVwiXG4gICAgICAgIFtkYXRhS2V5XT1cIiRhbnkoZGF0YUtleVByb3BlcnR5KVwiXG4gICAgICAgIFtvcHRpb25MYWJlbF09XCIkYW55KGl0ZW1zTGFiZWxQcm9wZXJ0eSlcIlxuICAgICAgICBbb3B0aW9uVmFsdWVdPVwiJGFueShpdGVtc1ZhbHVlUHJvcGVydHkpXCJcbiAgICAgICAgW29wdGlvbkRpc2FibGVkXT1cIiRhbnkoaXRlbXNEaXNhYmxlZFByb3BlcnR5KVwiXG4gICAgICAgIFtvcHRpb25zXT1cIihpdGVtcyQgfCBhc3luYykgPz8gW11cIlxuICAgICAgICBbc3R5bGVDbGFzc109XCIkYW55KGNsYXNzTmFtZSlcIlxuICAgICAgICBbcGFuZWxTdHlsZUNsYXNzXT1cIiRhbnkoZHJvcGRvd25DbGFzc05hbWUpXCJcbiAgICAgICAgW2ZpbHRlcl09XCJ0cnVlXCJcbiAgICAgICAgW3Nob3dUb2dnbGVBbGxdPVwiZmFsc2VcIlxuICAgICAgICAob25QYW5lbEhpZGUpPVwib25QYW5lbEhpZGUoJGV2ZW50KVwiXG4gICAgICAgIGFwcGVuZFRvPVwiYm9keVwiPlxuICAgIDwvcC1tdWx0aVNlbGVjdD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=