@mediusinc/mng-commons 2.6.0 → 3.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 (287) hide show
  1. package/README.md +17 -6
  2. package/dev-scripts/version-info.js +1 -0
  3. package/esm2022/lib/api/models/filter-param.model.mjs +33 -0
  4. package/esm2022/lib/api/models/query-param.model.mjs +68 -0
  5. package/esm2022/lib/api/models/query-result.model.mjs +24 -0
  6. package/esm2022/lib/api/utils/medius-rest.util.mjs +255 -0
  7. package/esm2022/lib/api/utils/object-serializer.util.mjs +258 -0
  8. package/esm2022/lib/components/action/action.component.mjs +304 -0
  9. package/esm2022/lib/components/action/editor/action-editor.component.mjs +386 -0
  10. package/esm2022/lib/components/action/localization/data-language-dropdown.component.mjs +54 -0
  11. package/{esm2020 → esm2022}/lib/components/action/models/action-execution.model.mjs +1 -1
  12. package/esm2022/lib/components/action/models/tableview-action-default-categories.model.mjs +11 -0
  13. package/{esm2020 → esm2022}/lib/components/action/route/action-route.component.mjs +4 -4
  14. package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +300 -0
  15. package/{esm2020 → esm2022}/lib/components/form/date-range/date-range.component.mjs +5 -5
  16. package/esm2022/lib/components/form/dropdown/dropdown.component.mjs +212 -0
  17. package/esm2022/lib/components/form/editor/form-editor.component.mjs +288 -0
  18. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.mjs +4 -4
  19. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +5 -5
  20. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.mjs +4 -4
  21. package/esm2022/lib/components/form/formly/fields/formly-field-custom/formly-field-custom.component.mjs +39 -0
  22. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +4 -4
  23. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +4 -4
  24. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +5 -5
  25. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +4 -4
  26. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +7 -7
  27. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +4 -4
  28. package/{esm2020 → esm2022}/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +4 -4
  29. package/esm2022/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +19 -0
  30. package/{esm2020 → esm2022}/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +4 -4
  31. package/{esm2020 → esm2022}/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +4 -4
  32. package/esm2022/lib/components/form/models/form-editor.event.mjs +49 -0
  33. package/esm2022/lib/components/layout/breadcrumb.component.mjs +34 -0
  34. package/{esm2020 → esm2022}/lib/components/layout/footer.component.mjs +4 -4
  35. package/{esm2020 → esm2022}/lib/components/layout/main-layout.component.mjs +4 -4
  36. package/esm2022/lib/components/layout/menu-item.component.mjs +296 -0
  37. package/{esm2020 → esm2022}/lib/components/layout/menu.component.mjs +4 -4
  38. package/{esm2020 → esm2022}/lib/components/layout/services/main-layout.component.service.mjs +4 -4
  39. package/{esm2020 → esm2022}/lib/components/layout/topbar-user.component.mjs +4 -4
  40. package/{esm2020 → esm2022}/lib/components/layout/topbar.component.mjs +4 -4
  41. package/{esm2020 → esm2022}/lib/components/layout/version.component.mjs +4 -4
  42. package/{esm2020 → esm2022}/lib/components/pages/error/error-page.component.mjs +4 -4
  43. package/{esm2020 → esm2022}/lib/components/pages/not-found/not-found-page.component.mjs +4 -4
  44. package/{esm2020 → esm2022}/lib/components/tableview/models/table.event.mjs +1 -1
  45. package/{esm2020 → esm2022}/lib/components/tableview/route/tableview-route.abstract.component.mjs +5 -5
  46. package/{esm2020 → esm2022}/lib/components/tableview/route/tableview-route.component.mjs +4 -4
  47. package/esm2022/lib/components/tableview/table/column-filter/column-filter.component.mjs +124 -0
  48. package/esm2022/lib/components/tableview/table/column-value/column-value.component.mjs +110 -0
  49. package/esm2022/lib/components/tableview/table/table.component.mjs +747 -0
  50. package/esm2022/lib/components/tableview/tableview.component.mjs +147 -0
  51. package/esm2022/lib/descriptors/action/action.descriptor.mjs +634 -0
  52. package/esm2022/lib/descriptors/editor/editor.descriptor.mjs +304 -0
  53. package/esm2022/lib/descriptors/editor/field.descriptor.mjs +1088 -0
  54. package/esm2022/lib/descriptors/table/table.descriptor.mjs +542 -0
  55. package/esm2022/lib/descriptors/tableview/tableview.descriptor.mjs +352 -0
  56. package/{esm2020 → esm2022}/lib/descriptors/types/table.type.mjs +1 -5
  57. package/{esm2020 → esm2022}/lib/directives/component.directive.mjs +5 -5
  58. package/{esm2020 → esm2022}/lib/directives/template.directive.mjs +5 -5
  59. package/esm2022/lib/mng-commons.module.mjs +465 -0
  60. package/{esm2020 → esm2022}/lib/pipes/boolean.pipe.mjs +4 -4
  61. package/{esm2020 → esm2022}/lib/pipes/class-map.pipe.mjs +4 -4
  62. package/{esm2020 → esm2022}/lib/pipes/enum.pipe.mjs +4 -4
  63. package/{esm2020 → esm2022}/lib/pipes/enumerate-async.pipe.mjs +4 -4
  64. package/{esm2020 → esm2022}/lib/pipes/enumerate.pipe.mjs +4 -4
  65. package/{esm2020 → esm2022}/lib/pipes/getter.pipe.mjs +4 -4
  66. package/{esm2020 → esm2022}/lib/pipes/i18n-property.pipe.mjs +4 -4
  67. package/{esm2020 → esm2022}/lib/pipes/json-path.pipe.mjs +4 -4
  68. package/{esm2020 → esm2022}/lib/pipes/locale-default-row-class.pipe.mjs +4 -4
  69. package/{esm2020 → esm2022}/lib/pipes/parametrize.pipe.mjs +4 -4
  70. package/{esm2020 → esm2022}/lib/pipes/template.pipe.mjs +4 -4
  71. package/esm2022/lib/router/route-builder.mjs +308 -0
  72. package/esm2022/lib/router/routes-builder.mjs +61 -0
  73. package/esm2022/lib/security/authorization.guard.mjs +15 -0
  74. package/{esm2020 → esm2022}/lib/security/authorization.service.mjs +4 -4
  75. package/esm2022/lib/services/action-executor.service.mjs +703 -0
  76. package/{esm2020 → esm2022}/lib/services/commons.service.mjs +4 -4
  77. package/esm2022/lib/services/configuration.service.mjs +150 -0
  78. package/{esm2020 → esm2022}/lib/services/internal/commons-init.service.mjs +4 -4
  79. package/{esm2020 → esm2022}/lib/services/mng-localstorage-config.service.mjs +4 -4
  80. package/{esm2020 → esm2022}/lib/services/navigation.service.mjs +4 -4
  81. package/{esm2020 → esm2022}/lib/services/router.service.mjs +4 -4
  82. package/{esm2020 → esm2022}/lib/services/version.service.mjs +4 -4
  83. package/{esm2020 → esm2022}/lib/services/view-container.component.service.mjs +4 -4
  84. package/esm2022/lib/styles/styles.util.mjs +42 -0
  85. package/esm2022/lib/types/type.model.mjs +2 -0
  86. package/esm2022/lib/utils/date.util.mjs +120 -0
  87. package/esm2022/lib/utils/tableview.util.mjs +193 -0
  88. package/esm2022/lib/utils/type.util.mjs +94 -0
  89. package/{fesm2020 → fesm2022}/mediusinc-mng-commons.mjs +952 -940
  90. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -0
  91. package/lib/api/utils/medius-rest.util.d.ts +4 -3
  92. package/lib/components/action/action.component.d.ts +1 -1
  93. package/lib/components/action/editor/action-editor.component.d.ts +6 -9
  94. package/lib/components/action/localization/data-language-dropdown.component.d.ts +1 -1
  95. package/lib/components/form/autocomplete/autocomplete.component.d.ts +4 -4
  96. package/lib/components/form/date-range/date-range.component.d.ts +1 -1
  97. package/lib/components/form/dropdown/dropdown.component.d.ts +3 -3
  98. package/lib/components/form/editor/form-editor.component.d.ts +1 -1
  99. package/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.d.ts +1 -1
  100. package/lib/components/form/formly/fields/formly-field-custom/formly-field-custom.component.d.ts +1 -0
  101. package/lib/components/layout/breadcrumb.component.d.ts +5 -0
  102. package/lib/components/layout/menu-item.component.d.ts +1 -1
  103. package/lib/components/layout/version.component.d.ts +1 -1
  104. package/lib/components/tableview/models/table.event.d.ts +2 -2
  105. package/lib/components/tableview/route/tableview-route.component.d.ts +1 -1
  106. package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +2 -2
  107. package/lib/components/tableview/table/column-value/column-value.component.d.ts +1 -1
  108. package/lib/components/tableview/table/table.component.d.ts +6 -7
  109. package/lib/components/tableview/tableview.component.d.ts +7 -11
  110. package/lib/descriptors/editor/editor.descriptor.d.ts +1 -1
  111. package/lib/descriptors/editor/field.descriptor.d.ts +3 -1
  112. package/lib/descriptors/table/table.descriptor.d.ts +8 -3
  113. package/lib/descriptors/tableview/tableview.descriptor.d.ts +4 -4
  114. package/lib/descriptors/types/table.type.d.ts +1 -5
  115. package/lib/directives/component.directive.d.ts +1 -1
  116. package/lib/directives/template.directive.d.ts +1 -1
  117. package/lib/router/route-builder.d.ts +6 -10
  118. package/lib/router/routes-builder.d.ts +0 -5
  119. package/lib/security/authorization.guard.d.ts +2 -11
  120. package/lib/services/action-executor.service.d.ts +1 -15
  121. package/lib/utils/route.util.d.ts +8 -19
  122. package/lib/utils/tableview.util.d.ts +5 -0
  123. package/package.json +12 -19
  124. package/esm2020/lib/api/models/filter-param.model.mjs +0 -33
  125. package/esm2020/lib/api/models/query-param.model.mjs +0 -68
  126. package/esm2020/lib/api/models/query-result.model.mjs +0 -24
  127. package/esm2020/lib/api/utils/medius-rest.util.mjs +0 -246
  128. package/esm2020/lib/api/utils/object-serializer.util.mjs +0 -258
  129. package/esm2020/lib/components/action/action.component.mjs +0 -303
  130. package/esm2020/lib/components/action/editor/action-editor.component.mjs +0 -390
  131. package/esm2020/lib/components/action/localization/data-language-dropdown.component.mjs +0 -47
  132. package/esm2020/lib/components/action/models/tableview-action-default-categories.model.mjs +0 -11
  133. package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +0 -303
  134. package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +0 -214
  135. package/esm2020/lib/components/form/editor/form-editor.component.mjs +0 -288
  136. package/esm2020/lib/components/form/formly/fields/formly-field-custom/formly-field-custom.component.mjs +0 -54
  137. package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +0 -19
  138. package/esm2020/lib/components/form/models/form-editor.event.mjs +0 -49
  139. package/esm2020/lib/components/layout/breadcrumb.component.mjs +0 -19
  140. package/esm2020/lib/components/layout/menu-item.component.mjs +0 -294
  141. package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +0 -126
  142. package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +0 -108
  143. package/esm2020/lib/components/tableview/table/table.component.mjs +0 -749
  144. package/esm2020/lib/components/tableview/tableview.component.mjs +0 -146
  145. package/esm2020/lib/descriptors/action/action.descriptor.mjs +0 -634
  146. package/esm2020/lib/descriptors/editor/editor.descriptor.mjs +0 -304
  147. package/esm2020/lib/descriptors/editor/field.descriptor.mjs +0 -1083
  148. package/esm2020/lib/descriptors/table/table.descriptor.mjs +0 -521
  149. package/esm2020/lib/descriptors/tableview/tableview.descriptor.mjs +0 -347
  150. package/esm2020/lib/mng-commons.module.mjs +0 -469
  151. package/esm2020/lib/router/route-builder.mjs +0 -312
  152. package/esm2020/lib/router/routes-builder.mjs +0 -68
  153. package/esm2020/lib/security/authorization.guard.mjs +0 -30
  154. package/esm2020/lib/services/action-executor.service.mjs +0 -722
  155. package/esm2020/lib/services/configuration.service.mjs +0 -150
  156. package/esm2020/lib/styles/styles.util.mjs +0 -42
  157. package/esm2020/lib/types/type.model.mjs +0 -2
  158. package/esm2020/lib/utils/date.util.mjs +0 -120
  159. package/esm2020/lib/utils/tableview.util.mjs +0 -171
  160. package/esm2020/lib/utils/type.util.mjs +0 -94
  161. package/fesm2015/mediusinc-mng-commons.mjs +0 -15900
  162. package/fesm2015/mediusinc-mng-commons.mjs.map +0 -1
  163. package/fesm2020/mediusinc-mng-commons.mjs.map +0 -1
  164. /package/{esm2020 → esm2022}/index.mjs +0 -0
  165. /package/{esm2020 → esm2022}/lib/api/models/builders/query-param.builder.mjs +0 -0
  166. /package/{esm2020 → esm2022}/lib/api/models/filter-match-type.model.mjs +0 -0
  167. /package/{esm2020 → esm2022}/lib/api/models/index.mjs +0 -0
  168. /package/{esm2020 → esm2022}/lib/api/models/mappers.mjs +0 -0
  169. /package/{esm2020 → esm2022}/lib/api/models/query-mode.model.mjs +0 -0
  170. /package/{esm2020 → esm2022}/lib/api/models/serialization.model.mjs +0 -0
  171. /package/{esm2020 → esm2022}/lib/api/services/api.abstract.service.mjs +0 -0
  172. /package/{esm2020 → esm2022}/lib/api/services/crud-api.abstract.service.mjs +0 -0
  173. /package/{esm2020 → esm2022}/lib/api/services/get-all-api.abstract.service.mjs +0 -0
  174. /package/{esm2020 → esm2022}/lib/api/services/index.mjs +0 -0
  175. /package/{esm2020 → esm2022}/lib/api/utils/index.mjs +0 -0
  176. /package/{esm2020 → esm2022}/lib/components/action/index.mjs +0 -0
  177. /package/{esm2020 → esm2022}/lib/components/action/models/action-component.model.mjs +0 -0
  178. /package/{esm2020 → esm2022}/lib/components/action/models/action-confirmation-service.model.mjs +0 -0
  179. /package/{esm2020 → esm2022}/lib/components/action/models/index.mjs +0 -0
  180. /package/{esm2020 → esm2022}/lib/components/form/formly/fields/index.mjs +0 -0
  181. /package/{esm2020 → esm2022}/lib/components/form/formly/formly.config.mjs +0 -0
  182. /package/{esm2020 → esm2022}/lib/components/form/formly/index.mjs +0 -0
  183. /package/{esm2020 → esm2022}/lib/components/form/formly/models/formly-config.model.mjs +0 -0
  184. /package/{esm2020 → esm2022}/lib/components/form/formly/models/formly-field.model.mjs +0 -0
  185. /package/{esm2020 → esm2022}/lib/components/form/formly/models/index.mjs +0 -0
  186. /package/{esm2020 → esm2022}/lib/components/form/formly/wrappers/index.mjs +0 -0
  187. /package/{esm2020 → esm2022}/lib/components/form/index.mjs +0 -0
  188. /package/{esm2020 → esm2022}/lib/components/form/models/field-action-context.model.mjs +0 -0
  189. /package/{esm2020 → esm2022}/lib/components/form/models/form-editor.interface.mjs +0 -0
  190. /package/{esm2020 → esm2022}/lib/components/form/models/index.mjs +0 -0
  191. /package/{esm2020 → esm2022}/lib/components/layout/index.mjs +0 -0
  192. /package/{esm2020 → esm2022}/lib/components/layout/services/index.mjs +0 -0
  193. /package/{esm2020 → esm2022}/lib/components/pages/index.mjs +0 -0
  194. /package/{esm2020 → esm2022}/lib/components/tableview/index.mjs +0 -0
  195. /package/{esm2020 → esm2022}/lib/components/tableview/models/index.mjs +0 -0
  196. /package/{esm2020 → esm2022}/lib/components/tableview/table/models/index.mjs +0 -0
  197. /package/{esm2020 → esm2022}/lib/components/tableview/table/models/table.interface.mjs +0 -0
  198. /package/{esm2020 → esm2022}/lib/data-providers/base.data-provider.mjs +0 -0
  199. /package/{esm2020 → esm2022}/lib/data-providers/editor.data-provider.mjs +0 -0
  200. /package/{esm2020 → esm2022}/lib/data-providers/index.mjs +0 -0
  201. /package/{esm2020 → esm2022}/lib/data-providers/lookup.data-provider.mjs +0 -0
  202. /package/{esm2020 → esm2022}/lib/data-providers/table.data-provider.mjs +0 -0
  203. /package/{esm2020 → esm2022}/lib/data-providers/tableview-crud.data-provider.mjs +0 -0
  204. /package/{esm2020 → esm2022}/lib/data-providers/tableview.data-provider.mjs +0 -0
  205. /package/{esm2020 → esm2022}/lib/descriptors/action/action-button.descriptor.mjs +0 -0
  206. /package/{esm2020 → esm2022}/lib/descriptors/action/action-confirmation.descriptor.mjs +0 -0
  207. /package/{esm2020 → esm2022}/lib/descriptors/action/index.mjs +0 -0
  208. /package/{esm2020 → esm2022}/lib/descriptors/editor/field-validation.descriptor.mjs +0 -0
  209. /package/{esm2020 → esm2022}/lib/descriptors/editor/index.mjs +0 -0
  210. /package/{esm2020 → esm2022}/lib/descriptors/filter/filter.descriptor.mjs +0 -0
  211. /package/{esm2020 → esm2022}/lib/descriptors/filter/index.mjs +0 -0
  212. /package/{esm2020 → esm2022}/lib/descriptors/index.mjs +0 -0
  213. /package/{esm2020 → esm2022}/lib/descriptors/interfaces/field-config.interface.mjs +0 -0
  214. /package/{esm2020 → esm2022}/lib/descriptors/interfaces/index.mjs +0 -0
  215. /package/{esm2020 → esm2022}/lib/descriptors/interfaces/lookup-descriptor.interface.mjs +0 -0
  216. /package/{esm2020 → esm2022}/lib/descriptors/model.descriptor.mjs +0 -0
  217. /package/{esm2020 → esm2022}/lib/descriptors/table/column.descriptor.mjs +0 -0
  218. /package/{esm2020 → esm2022}/lib/descriptors/table/index.mjs +0 -0
  219. /package/{esm2020 → esm2022}/lib/descriptors/tableview/index.mjs +0 -0
  220. /package/{esm2020 → esm2022}/lib/descriptors/types/action.type.mjs +0 -0
  221. /package/{esm2020 → esm2022}/lib/descriptors/types/column.type.mjs +0 -0
  222. /package/{esm2020 → esm2022}/lib/descriptors/types/editor.type.mjs +0 -0
  223. /package/{esm2020 → esm2022}/lib/descriptors/types/field.type.mjs +0 -0
  224. /package/{esm2020 → esm2022}/lib/descriptors/types/filter.type.mjs +0 -0
  225. /package/{esm2020 → esm2022}/lib/descriptors/types/index.mjs +0 -0
  226. /package/{esm2020 → esm2022}/lib/directives/index.mjs +0 -0
  227. /package/{esm2020 → esm2022}/lib/models/column-value.model.mjs +0 -0
  228. /package/{esm2020 → esm2022}/lib/models/config.model.mjs +0 -0
  229. /package/{esm2020 → esm2022}/lib/models/enum.model.mjs +0 -0
  230. /package/{esm2020 → esm2022}/lib/models/error-internal.model.mjs +0 -0
  231. /package/{esm2020 → esm2022}/lib/models/error.model.mjs +0 -0
  232. /package/{esm2020 → esm2022}/lib/models/index.mjs +0 -0
  233. /package/{esm2020 → esm2022}/lib/models/menu.model.mjs +0 -0
  234. /package/{esm2020 → esm2022}/lib/models/tableview-attr.model.mjs +0 -0
  235. /package/{esm2020 → esm2022}/lib/models/user.model.mjs +0 -0
  236. /package/{esm2020 → esm2022}/lib/models/version.model.mjs +0 -0
  237. /package/{esm2020 → esm2022}/lib/models/view-container.model.mjs +0 -0
  238. /package/{esm2020 → esm2022}/lib/pipes/index.mjs +0 -0
  239. /package/{esm2020 → esm2022}/lib/pipes/models/internal/enumrate-pipe-i18n.model.mjs +0 -0
  240. /package/{esm2020 → esm2022}/lib/pipes/models/internal/index.mjs +0 -0
  241. /package/{esm2020 → esm2022}/lib/provide-commons.mjs +0 -0
  242. /package/{esm2020 → esm2022}/lib/router/index.mjs +0 -0
  243. /package/{esm2020 → esm2022}/lib/router/models/index.mjs +0 -0
  244. /package/{esm2020 → esm2022}/lib/router/models/router.model.mjs +0 -0
  245. /package/{esm2020 → esm2022}/lib/router/tableview-route-builder.mjs +0 -0
  246. /package/{esm2020 → esm2022}/lib/security/authorization.util.mjs +0 -0
  247. /package/{esm2020 → esm2022}/lib/security/index.mjs +0 -0
  248. /package/{esm2020 → esm2022}/lib/security/model/authorization.type.mjs +0 -0
  249. /package/{esm2020 → esm2022}/lib/security/model/index.mjs +0 -0
  250. /package/{esm2020 → esm2022}/lib/security/model/permission-service.interface.mjs +0 -0
  251. /package/{esm2020 → esm2022}/lib/security/model/permissions.model.mjs +0 -0
  252. /package/{esm2020 → esm2022}/lib/services/error-mapper.service.mjs +0 -0
  253. /package/{esm2020 → esm2022}/lib/services/index.mjs +0 -0
  254. /package/{esm2020 → esm2022}/lib/services/internal/commons-init.provider.mjs +0 -0
  255. /package/{esm2020 → esm2022}/lib/services/internal/index.mjs +0 -0
  256. /package/{esm2020 → esm2022}/lib/services/providers/config-service.provider.mjs +0 -0
  257. /package/{esm2020 → esm2022}/lib/services/providers/formly-config.provider.mjs +0 -0
  258. /package/{esm2020 → esm2022}/lib/services/providers/index.mjs +0 -0
  259. /package/{esm2020 → esm2022}/lib/services/tokens/browser-storage.token.mjs +0 -0
  260. /package/{esm2020 → esm2022}/lib/services/tokens/commons-init.token.mjs +0 -0
  261. /package/{esm2020 → esm2022}/lib/services/tokens/default-setting.token.mjs +0 -0
  262. /package/{esm2020 → esm2022}/lib/services/tokens/index.mjs +0 -0
  263. /package/{esm2020 → esm2022}/lib/services/tokens/module-config.token.mjs +0 -0
  264. /package/{esm2020 → esm2022}/lib/styles/button-style.builder.mjs +0 -0
  265. /package/{esm2020 → esm2022}/lib/styles/index.mjs +0 -0
  266. /package/{esm2020 → esm2022}/lib/styles/models/index.mjs +0 -0
  267. /package/{esm2020 → esm2022}/lib/styles/models/style-level.enum.mjs +0 -0
  268. /package/{esm2020 → esm2022}/lib/styles/models/style-size.enum.mjs +0 -0
  269. /package/{esm2020 → esm2022}/lib/types/i18n.type.mjs +0 -0
  270. /package/{esm2020 → esm2022}/lib/types/index.mjs +0 -0
  271. /package/{esm2020 → esm2022}/lib/types/mng-localstorage-config-value.type.mjs +0 -0
  272. /package/{esm2020 → esm2022}/lib/types/type.decorator.mjs +0 -0
  273. /package/{esm2020 → esm2022}/lib/utils/action-data-provider.util.mjs +0 -0
  274. /package/{esm2020 → esm2022}/lib/utils/editor-formly.util.mjs +0 -0
  275. /package/{esm2020 → esm2022}/lib/utils/enum.util.mjs +0 -0
  276. /package/{esm2020 → esm2022}/lib/utils/export.util.mjs +0 -0
  277. /package/{esm2020 → esm2022}/lib/utils/file.util.mjs +0 -0
  278. /package/{esm2020 → esm2022}/lib/utils/i18n.util.mjs +0 -0
  279. /package/{esm2020 → esm2022}/lib/utils/index.mjs +0 -0
  280. /package/{esm2020 → esm2022}/lib/utils/model.util.mjs +0 -0
  281. /package/{esm2020 → esm2022}/lib/utils/notification.util.mjs +0 -0
  282. /package/{esm2020 → esm2022}/lib/utils/object.util.mjs +0 -0
  283. /package/{esm2020 → esm2022}/lib/utils/route.util.mjs +0 -0
  284. /package/{esm2020 → esm2022}/lib/utils/string.util.mjs +0 -0
  285. /package/{esm2020 → esm2022}/lib/validators/field.validator.mjs +0 -0
  286. /package/{esm2020 → esm2022}/lib/validators/index.mjs +0 -0
  287. /package/{esm2020 → esm2022}/mediusinc-mng-commons.mjs +0 -0
@@ -1,258 +0,0 @@
1
- import { DateUtil, TypeUtil } from '../../utils';
2
- import { enumsMapBase, typeMapBase } from '../models';
3
- export class ObjectSerializer {
4
- constructor() {
5
- this._primitives = ['string', 'boolean', 'double', 'integer', 'long', 'float', 'number', 'any'];
6
- this._typeMap = {
7
- ...typeMapBase
8
- };
9
- this._enumMap = {
10
- ...enumsMapBase
11
- };
12
- this.dateTimeInUtc = true;
13
- this.dateTimeWithTimezone = true;
14
- this.dateTimeWithMillis = true;
15
- }
16
- get primitives() {
17
- return this._primitives;
18
- }
19
- get typeMap() {
20
- return this._typeMap;
21
- }
22
- get enumMap() {
23
- return this._enumMap;
24
- }
25
- /**
26
- * Only use one instance of object (out of Angular context)
27
- */
28
- static get() {
29
- return ObjectSerializer._instance;
30
- }
31
- findAttributeDefinitionByClassType(type, attributeName) {
32
- return this.findAttributeDefinition(TypeUtil.findTypeName(type), attributeName);
33
- }
34
- findAttributeDefinition(typeName, attributeName) {
35
- const attributeDefs = this.findAttributesDefinition(typeName);
36
- if (!attributeDefs) {
37
- return null;
38
- }
39
- for (const attribute of attributeDefs) {
40
- if (attribute.name === attributeName) {
41
- return attribute;
42
- }
43
- }
44
- return null;
45
- }
46
- findAttributesDefinitionByClassType(type) {
47
- return this.findAttributesDefinition(TypeUtil.findTypeName(type));
48
- }
49
- findAttributesDefinition(typeName) {
50
- const typeDef = this.findType(typeName);
51
- if (!typeDef || typeof typeDef.getAttributeTypeMap !== 'function') {
52
- return null;
53
- }
54
- return typeDef.getAttributeTypeMap();
55
- }
56
- findByClassType(type) {
57
- return this.findType(TypeUtil.findTypeName(type));
58
- }
59
- findType(typeName) {
60
- return this._typeMap[typeName];
61
- }
62
- findEnum(enumName) {
63
- return this._enumMap[enumName];
64
- }
65
- configure(config) {
66
- if (config.dateTimeInUtc !== undefined) {
67
- this.dateTimeInUtc = config.dateTimeInUtc;
68
- }
69
- if (config.dateTimeWithTimezone !== undefined) {
70
- this.dateTimeWithTimezone = config.dateTimeWithTimezone;
71
- }
72
- if (config.dateTimeWithMillis !== undefined) {
73
- this.dateTimeWithMillis = config.dateTimeWithMillis;
74
- }
75
- }
76
- registerTypes(types) {
77
- for (const key in types) {
78
- this.registerType(types[key], key);
79
- }
80
- }
81
- registerType(type, optTypeName) {
82
- // try to find name from metadata
83
- let typeName;
84
- if (TypeUtil.typeNameExists(type)) {
85
- // defined name from optional type name
86
- typeName = TypeUtil.findTypeName(type);
87
- }
88
- else if (optTypeName) {
89
- typeName = optTypeName;
90
- // register metadata
91
- TypeUtil.defineReflectTypeName(type, typeName);
92
- }
93
- if (!typeName) {
94
- console.warn(`Registering type ${type} failed, because typeName could not be determined and optional name was not provided.`);
95
- return;
96
- }
97
- if (typeof this._typeMap[typeName] !== 'undefined') {
98
- console.warn(`Registering type ${type} under key ${typeName} skipped, because type already exists for this key.`);
99
- }
100
- else {
101
- this._typeMap[typeName] = type;
102
- }
103
- }
104
- registerEnums(enums) {
105
- for (const key in enums) {
106
- this.registerEnum(enums[key], key);
107
- }
108
- }
109
- registerEnum(enumType, enumName) {
110
- // try to find name from decorator
111
- if (typeof this._enumMap[enumName] !== 'undefined') {
112
- console.warn(`Registering enum ${enumName} skipped, because enum already exists.`);
113
- }
114
- else {
115
- TypeUtil.defineReflectEnumName(enumType, enumName);
116
- this._enumMap[enumName] = enumType;
117
- }
118
- }
119
- findCorrectType(data, expectedType) {
120
- if (data == undefined) {
121
- return expectedType;
122
- }
123
- else if (this._primitives.indexOf(expectedType.toLowerCase()) !== -1) {
124
- return expectedType;
125
- }
126
- else if (expectedType === 'Date') {
127
- return expectedType;
128
- }
129
- else {
130
- if (this._enumMap[expectedType]) {
131
- return expectedType;
132
- }
133
- if (!this._typeMap[expectedType]) {
134
- return expectedType; // w/e we don't know the type
135
- }
136
- // Check the discriminator
137
- const discriminatorProperty = this._typeMap[expectedType].discriminator;
138
- if (discriminatorProperty == null) {
139
- return expectedType; // the type does not have a discriminator. use it.
140
- }
141
- else {
142
- if (data[discriminatorProperty]) {
143
- const discriminatorType = data[discriminatorProperty];
144
- if (this._typeMap[discriminatorType]) {
145
- return discriminatorType; // use the type given in the discriminator
146
- }
147
- else {
148
- return expectedType; // discriminator did not map to a type
149
- }
150
- }
151
- else {
152
- return expectedType; // discriminator was not present (or an empty string)
153
- }
154
- }
155
- }
156
- }
157
- serializeClass(data, type) {
158
- return this.serialize(data, TypeUtil.findTypeName(type));
159
- }
160
- serializeClassArray(data, type) {
161
- return this.serialize(data, `Array<${TypeUtil.findTypeName(type)}>`);
162
- }
163
- serialize(data, type, subtype = undefined) {
164
- if (data == undefined) {
165
- return data;
166
- }
167
- else if (this._primitives.indexOf(type.toLowerCase()) !== -1) {
168
- return data;
169
- }
170
- else if (type.lastIndexOf('Array<', 0) === 0) {
171
- // string.startsWith pre es6
172
- let subType = type.replace('Array<', ''); // Array<Type> => Type>
173
- subType = subType.substring(0, subType.length - 1); // Type> => Type
174
- const transformedData = [];
175
- // tslint:disable-next-line:prefer-for-of
176
- for (let index = 0; index < data.length; index++) {
177
- const datum = data[index];
178
- transformedData.push(this.serialize(datum, subType));
179
- }
180
- return transformedData;
181
- }
182
- else if (type === 'Date') {
183
- const dateOnly = subtype === 'date';
184
- return DateUtil.toIsoString(data, this.dateTimeInUtc, this.dateTimeWithTimezone, this.dateTimeWithMillis, dateOnly);
185
- }
186
- else {
187
- if (this._enumMap[type]) {
188
- return data;
189
- }
190
- if (!this._typeMap[type]) {
191
- // in case we dont know the type
192
- return data;
193
- }
194
- // Get the actual type of this object
195
- type = this.findCorrectType(data, type);
196
- // get the map for the correct type.
197
- const attributeTypes = this._typeMap[type].getAttributeTypeMap();
198
- const instance = {};
199
- // tslint:disable-next-line:prefer-for-of
200
- for (let index = 0; index < attributeTypes.length; index++) {
201
- const attributeType = attributeTypes[index];
202
- instance[attributeType.baseName] = this.serialize(data[attributeType.name], attributeType.type, attributeType.subtype);
203
- }
204
- return instance;
205
- }
206
- }
207
- deserializeClass(data, type) {
208
- return this.deserialize(data, TypeUtil.findTypeName(type));
209
- }
210
- deserializeClassArray(data, type) {
211
- return this.deserialize(data, `Array<${TypeUtil.findTypeName(type)}>`);
212
- }
213
- deserialize(data, type) {
214
- // polymorphism may change the actual type.
215
- type = this.findCorrectType(data, type);
216
- if (data == undefined) {
217
- return data;
218
- }
219
- else if (this._primitives.indexOf(type.toLowerCase()) !== -1) {
220
- return data;
221
- }
222
- else if (type.lastIndexOf('Array<', 0) === 0) {
223
- // string.startsWith pre es6
224
- let subType = type.replace('Array<', ''); // Array<Type> => Type>
225
- subType = subType.substring(0, subType.length - 1); // Type> => Type
226
- const transformedData = [];
227
- // tslint:disable-next-line:prefer-for-of
228
- for (let index = 0; index < data.length; index++) {
229
- const datum = data[index];
230
- transformedData.push(this.deserialize(datum, subType));
231
- }
232
- return transformedData;
233
- }
234
- else if (type === 'Date') {
235
- return new Date(data);
236
- }
237
- else {
238
- if (this._enumMap[type]) {
239
- // is Enum
240
- return data;
241
- }
242
- if (!this._typeMap[type]) {
243
- // dont know the type
244
- return data;
245
- }
246
- const instance = new this._typeMap[type]();
247
- const attributeTypes = this._typeMap[type].getAttributeTypeMap();
248
- // tslint:disable-next-line:prefer-for-of
249
- for (let index = 0; index < attributeTypes.length; index++) {
250
- const attributeType = attributeTypes[index];
251
- instance[attributeType.name] = this.deserialize(data[attributeType.baseName], attributeType.type);
252
- }
253
- return instance;
254
- }
255
- }
256
- }
257
- ObjectSerializer._instance = new ObjectSerializer();
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXNlcmlhbGl6ZXIudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvYXBpL3V0aWxzL29iamVjdC1zZXJpYWxpemVyLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFvQyxZQUFZLEVBQUUsV0FBVyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRXZGLE1BQU0sT0FBTyxnQkFBZ0I7SUFBN0I7UUFFcUIsZ0JBQVcsR0FBYSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyRyxhQUFRLEdBQXdCO1lBQzdDLEdBQUcsV0FBVztTQUNqQixDQUFDO1FBQ2UsYUFBUSxHQUF3QjtZQUM3QyxHQUFHLFlBQVk7U0FDbEIsQ0FBQztRQUVNLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUM1Qix1QkFBa0IsR0FBRyxJQUFJLENBQUM7SUE2UHRDLENBQUM7SUEzUEcsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLEdBQUc7UUFDYixPQUFPLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sa0NBQWtDLENBQUMsSUFBb0IsRUFBRSxhQUFxQjtRQUNqRixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxRQUFnQixFQUFFLGFBQXFCO1FBQ2xFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2hCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxLQUFLLE1BQU0sU0FBUyxJQUFJLGFBQWEsRUFBRTtZQUNuQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssYUFBYSxFQUFFO2dCQUNsQyxPQUFPLFNBQVMsQ0FBQzthQUNwQjtTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLG1DQUFtQyxDQUFDLElBQW9CO1FBQzNELE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRU0sd0JBQXdCLENBQUMsUUFBZ0I7UUFDNUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sT0FBTyxDQUFDLG1CQUFtQixLQUFLLFVBQVUsRUFBRTtZQUMvRCxPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsT0FBTyxPQUFPLENBQUMsbUJBQW1CLEVBQXlCLENBQUM7SUFDaEUsQ0FBQztJQUVNLGVBQWUsQ0FBQyxJQUFvQjtRQUN2QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTSxRQUFRLENBQUMsUUFBZ0I7UUFDNUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxRQUFRLENBQUMsUUFBZ0I7UUFDNUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxTQUFTLENBQUMsTUFBK0Y7UUFDNUcsSUFBSSxNQUFNLENBQUMsYUFBYSxLQUFLLFNBQVMsRUFBRTtZQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7U0FDN0M7UUFDRCxJQUFJLE1BQU0sQ0FBQyxvQkFBb0IsS0FBSyxTQUFTLEVBQUU7WUFDM0MsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQztTQUMzRDtRQUNELElBQUksTUFBTSxDQUFDLGtCQUFrQixLQUFLLFNBQVMsRUFBRTtZQUN6QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDO1NBQ3ZEO0lBQ0wsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUEwQjtRQUMzQyxLQUFLLE1BQU0sR0FBRyxJQUFJLEtBQUssRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUN0QztJQUNMLENBQUM7SUFFTSxZQUFZLENBQUMsSUFBb0IsRUFBRSxXQUFvQjtRQUMxRCxpQ0FBaUM7UUFDakMsSUFBSSxRQUE0QixDQUFDO1FBQ2pDLElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMvQix1Q0FBdUM7WUFDdkMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDMUM7YUFBTSxJQUFJLFdBQVcsRUFBRTtZQUNwQixRQUFRLEdBQUcsV0FBVyxDQUFDO1lBQ3ZCLG9CQUFvQjtZQUNwQixRQUFRLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ2xEO1FBRUQsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksdUZBQXVGLENBQUMsQ0FBQztZQUM5SCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxXQUFXLEVBQUU7WUFDaEQsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxjQUFjLFFBQVEscURBQXFELENBQUMsQ0FBQztTQUNySDthQUFNO1lBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDbEM7SUFDTCxDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQTBCO1FBQzNDLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ3RDO0lBQ0wsQ0FBQztJQUVNLFlBQVksQ0FBQyxRQUFhLEVBQUUsUUFBZ0I7UUFDL0Msa0NBQWtDO1FBQ2xDLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLFdBQVcsRUFBRTtZQUNoRCxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixRQUFRLHdDQUF3QyxDQUFDLENBQUM7U0FDdEY7YUFBTTtZQUNILFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUM7U0FDdEM7SUFDTCxDQUFDO0lBRU0sZUFBZSxDQUFDLElBQVMsRUFBRSxZQUFvQjtRQUNsRCxJQUFJLElBQUksSUFBSSxTQUFTLEVBQUU7WUFDbkIsT0FBTyxZQUFZLENBQUM7U0FDdkI7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3BFLE9BQU8sWUFBWSxDQUFDO1NBQ3ZCO2FBQU0sSUFBSSxZQUFZLEtBQUssTUFBTSxFQUFFO1lBQ2hDLE9BQU8sWUFBWSxDQUFDO1NBQ3ZCO2FBQU07WUFDSCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQzdCLE9BQU8sWUFBWSxDQUFDO2FBQ3ZCO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQzlCLE9BQU8sWUFBWSxDQUFDLENBQUMsNkJBQTZCO2FBQ3JEO1lBRUQsMEJBQTBCO1lBQzFCLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxhQUFhLENBQUM7WUFDeEUsSUFBSSxxQkFBcUIsSUFBSSxJQUFJLEVBQUU7Z0JBQy9CLE9BQU8sWUFBWSxDQUFDLENBQUMsa0RBQWtEO2FBQzFFO2lCQUFNO2dCQUNILElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQUU7b0JBQzdCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7b0JBQ3RELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO3dCQUNsQyxPQUFPLGlCQUFpQixDQUFDLENBQUMsMENBQTBDO3FCQUN2RTt5QkFBTTt3QkFDSCxPQUFPLFlBQVksQ0FBQyxDQUFDLHNDQUFzQztxQkFDOUQ7aUJBQ0o7cUJBQU07b0JBQ0gsT0FBTyxZQUFZLENBQUMsQ0FBQyxxREFBcUQ7aUJBQzdFO2FBQ0o7U0FDSjtJQUNMLENBQUM7SUFFTSxjQUFjLENBQUksSUFBTyxFQUFFLElBQWtCO1FBQ2hELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxtQkFBbUIsQ0FBSSxJQUFjLEVBQUUsSUFBa0I7UUFDNUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTSxTQUFTLENBQUMsSUFBUyxFQUFFLElBQVksRUFBRSxVQUE4QixTQUFTO1FBQzdFLElBQUksSUFBSSxJQUFJLFNBQVMsRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQztTQUNmO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUM1RCxPQUFPLElBQUksQ0FBQztTQUNmO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDNUMsNEJBQTRCO1lBQzVCLElBQUksT0FBTyxHQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsdUJBQXVCO1lBQ3pFLE9BQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCO1lBQ3BFLE1BQU0sZUFBZSxHQUFVLEVBQUUsQ0FBQztZQUNsQyx5Q0FBeUM7WUFDekMsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQzlDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUIsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ3hEO1lBQ0QsT0FBTyxlQUFlLENBQUM7U0FDMUI7YUFBTSxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDeEIsTUFBTSxRQUFRLEdBQUcsT0FBTyxLQUFLLE1BQU0sQ0FBQztZQUNwQyxPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUN2SDthQUFNO1lBQ0gsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNyQixPQUFPLElBQUksQ0FBQzthQUNmO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3RCLGdDQUFnQztnQkFDaEMsT0FBTyxJQUFJLENBQUM7YUFDZjtZQUVELHFDQUFxQztZQUNyQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFeEMsb0NBQW9DO1lBQ3BDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsbUJBQW1CLEVBQXlCLENBQUM7WUFDeEYsTUFBTSxRQUFRLEdBQTJCLEVBQUUsQ0FBQztZQUM1Qyx5Q0FBeUM7WUFDekMsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3hELE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDNUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsYUFBYSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDMUg7WUFDRCxPQUFPLFFBQVEsQ0FBQztTQUNuQjtJQUNMLENBQUM7SUFFTSxnQkFBZ0IsQ0FBSSxJQUFTLEVBQUUsSUFBa0I7UUFDcEQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVNLHFCQUFxQixDQUFJLElBQVMsRUFBRSxJQUFrQjtRQUN6RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFNBQVMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVNLFdBQVcsQ0FBQyxJQUFTLEVBQUUsSUFBWTtRQUN0QywyQ0FBMkM7UUFDM0MsSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksSUFBSSxJQUFJLFNBQVMsRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQztTQUNmO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUM1RCxPQUFPLElBQUksQ0FBQztTQUNmO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDNUMsNEJBQTRCO1lBQzVCLElBQUksT0FBTyxHQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsdUJBQXVCO1lBQ3pFLE9BQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCO1lBQ3BFLE1BQU0sZUFBZSxHQUFVLEVBQUUsQ0FBQztZQUNsQyx5Q0FBeUM7WUFDekMsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQzlDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUIsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQzFEO1lBQ0QsT0FBTyxlQUFlLENBQUM7U0FDMUI7YUFBTSxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDeEIsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN6QjthQUFNO1lBQ0gsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNyQixVQUFVO2dCQUNWLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdEIscUJBQXFCO2dCQUNyQixPQUFPLElBQUksQ0FBQzthQUNmO1lBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDM0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxtQkFBbUIsRUFBeUIsQ0FBQztZQUN4Rix5Q0FBeUM7WUFDekMsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3hELE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDNUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3JHO1lBQ0QsT0FBTyxRQUFRLENBQUM7U0FDbkI7SUFDTCxDQUFDOztBQXZRYywwQkFBUyxHQUFxQixJQUFJLGdCQUFnQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NsYXNzVHlwZX0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHtEYXRlVXRpbCwgVHlwZVV0aWx9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7QXR0cmlidXRlRGVmLCBTZXJpYWxpemFibGVUeXBlTWFwLCBlbnVtc01hcEJhc2UsIHR5cGVNYXBCYXNlfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5leHBvcnQgY2xhc3MgT2JqZWN0U2VyaWFsaXplciB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBPYmplY3RTZXJpYWxpemVyID0gbmV3IE9iamVjdFNlcmlhbGl6ZXIoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wcmltaXRpdmVzOiBzdHJpbmdbXSA9IFsnc3RyaW5nJywgJ2Jvb2xlYW4nLCAnZG91YmxlJywgJ2ludGVnZXInLCAnbG9uZycsICdmbG9hdCcsICdudW1iZXInLCAnYW55J107XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdHlwZU1hcDogU2VyaWFsaXphYmxlVHlwZU1hcCA9IHtcbiAgICAgICAgLi4udHlwZU1hcEJhc2VcbiAgICB9O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VudW1NYXA6IFNlcmlhbGl6YWJsZVR5cGVNYXAgPSB7XG4gICAgICAgIC4uLmVudW1zTWFwQmFzZVxuICAgIH07XG5cbiAgICBwcml2YXRlIGRhdGVUaW1lSW5VdGMgPSB0cnVlO1xuICAgIHByaXZhdGUgZGF0ZVRpbWVXaXRoVGltZXpvbmUgPSB0cnVlO1xuICAgIHByaXZhdGUgZGF0ZVRpbWVXaXRoTWlsbGlzID0gdHJ1ZTtcblxuICAgIHB1YmxpYyBnZXQgcHJpbWl0aXZlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ByaW1pdGl2ZXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0eXBlTWFwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZU1hcDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVudW1NYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnVtTWFwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9ubHkgdXNlIG9uZSBpbnN0YW5jZSBvZiBvYmplY3QgKG91dCBvZiBBbmd1bGFyIGNvbnRleHQpXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXQoKTogT2JqZWN0U2VyaWFsaXplciB7XG4gICAgICAgIHJldHVybiBPYmplY3RTZXJpYWxpemVyLl9pbnN0YW5jZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmluZEF0dHJpYnV0ZURlZmluaXRpb25CeUNsYXNzVHlwZSh0eXBlOiBDbGFzc1R5cGU8YW55PiwgYXR0cmlidXRlTmFtZTogc3RyaW5nKTogQXR0cmlidXRlRGVmIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRBdHRyaWJ1dGVEZWZpbml0aW9uKFR5cGVVdGlsLmZpbmRUeXBlTmFtZSh0eXBlKSwgYXR0cmlidXRlTmFtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGZpbmRBdHRyaWJ1dGVEZWZpbml0aW9uKHR5cGVOYW1lOiBzdHJpbmcsIGF0dHJpYnV0ZU5hbWU6IHN0cmluZyk6IEF0dHJpYnV0ZURlZiB8IG51bGwge1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVEZWZzID0gdGhpcy5maW5kQXR0cmlidXRlc0RlZmluaXRpb24odHlwZU5hbWUpO1xuICAgICAgICBpZiAoIWF0dHJpYnV0ZURlZnMpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgYXR0cmlidXRlIG9mIGF0dHJpYnV0ZURlZnMpIHtcbiAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUubmFtZSA9PT0gYXR0cmlidXRlTmFtZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIGZpbmRBdHRyaWJ1dGVzRGVmaW5pdGlvbkJ5Q2xhc3NUeXBlKHR5cGU6IENsYXNzVHlwZTxhbnk+KTogQXJyYXk8QXR0cmlidXRlRGVmPiB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kQXR0cmlidXRlc0RlZmluaXRpb24oVHlwZVV0aWwuZmluZFR5cGVOYW1lKHR5cGUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmluZEF0dHJpYnV0ZXNEZWZpbml0aW9uKHR5cGVOYW1lOiBzdHJpbmcpOiBBcnJheTxBdHRyaWJ1dGVEZWY+IHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHR5cGVEZWYgPSB0aGlzLmZpbmRUeXBlKHR5cGVOYW1lKTtcbiAgICAgICAgaWYgKCF0eXBlRGVmIHx8IHR5cGVvZiB0eXBlRGVmLmdldEF0dHJpYnV0ZVR5cGVNYXAgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0eXBlRGVmLmdldEF0dHJpYnV0ZVR5cGVNYXAoKSBhcyBBcnJheTxBdHRyaWJ1dGVEZWY+O1xuICAgIH1cblxuICAgIHB1YmxpYyBmaW5kQnlDbGFzc1R5cGUodHlwZTogQ2xhc3NUeXBlPGFueT4pOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kVHlwZShUeXBlVXRpbC5maW5kVHlwZU5hbWUodHlwZSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaW5kVHlwZSh0eXBlTmFtZTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGVNYXBbdHlwZU5hbWVdO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaW5kRW51bShlbnVtTmFtZTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VudW1NYXBbZW51bU5hbWVdO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb25maWd1cmUoY29uZmlnOiB7ZGF0ZVRpbWVJblV0Yz86IGJvb2xlYW47IGRhdGVUaW1lV2l0aFRpbWV6b25lPzogYm9vbGVhbjsgZGF0ZVRpbWVXaXRoTWlsbGlzPzogYm9vbGVhbn0pOiB2b2lkIHtcbiAgICAgICAgaWYgKGNvbmZpZy5kYXRlVGltZUluVXRjICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJblV0YyA9IGNvbmZpZy5kYXRlVGltZUluVXRjO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWcuZGF0ZVRpbWVXaXRoVGltZXpvbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5kYXRlVGltZVdpdGhUaW1lem9uZSA9IGNvbmZpZy5kYXRlVGltZVdpdGhUaW1lem9uZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uZmlnLmRhdGVUaW1lV2l0aE1pbGxpcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVUaW1lV2l0aE1pbGxpcyA9IGNvbmZpZy5kYXRlVGltZVdpdGhNaWxsaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJUeXBlcyh0eXBlczogU2VyaWFsaXphYmxlVHlwZU1hcCkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0eXBlcykge1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlclR5cGUodHlwZXNba2V5XSwga2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3RlclR5cGUodHlwZTogQ2xhc3NUeXBlPGFueT4sIG9wdFR5cGVOYW1lPzogc3RyaW5nKSB7XG4gICAgICAgIC8vIHRyeSB0byBmaW5kIG5hbWUgZnJvbSBtZXRhZGF0YVxuICAgICAgICBsZXQgdHlwZU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKFR5cGVVdGlsLnR5cGVOYW1lRXhpc3RzKHR5cGUpKSB7XG4gICAgICAgICAgICAvLyBkZWZpbmVkIG5hbWUgZnJvbSBvcHRpb25hbCB0eXBlIG5hbWVcbiAgICAgICAgICAgIHR5cGVOYW1lID0gVHlwZVV0aWwuZmluZFR5cGVOYW1lKHR5cGUpO1xuICAgICAgICB9IGVsc2UgaWYgKG9wdFR5cGVOYW1lKSB7XG4gICAgICAgICAgICB0eXBlTmFtZSA9IG9wdFR5cGVOYW1lO1xuICAgICAgICAgICAgLy8gcmVnaXN0ZXIgbWV0YWRhdGFcbiAgICAgICAgICAgIFR5cGVVdGlsLmRlZmluZVJlZmxlY3RUeXBlTmFtZSh0eXBlLCB0eXBlTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXR5cGVOYW1lKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFJlZ2lzdGVyaW5nIHR5cGUgJHt0eXBlfSBmYWlsZWQsIGJlY2F1c2UgdHlwZU5hbWUgY291bGQgbm90IGJlIGRldGVybWluZWQgYW5kIG9wdGlvbmFsIG5hbWUgd2FzIG5vdCBwcm92aWRlZC5gKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3R5cGVNYXBbdHlwZU5hbWVdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBSZWdpc3RlcmluZyB0eXBlICR7dHlwZX0gdW5kZXIga2V5ICR7dHlwZU5hbWV9IHNraXBwZWQsIGJlY2F1c2UgdHlwZSBhbHJlYWR5IGV4aXN0cyBmb3IgdGhpcyBrZXkuYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl90eXBlTWFwW3R5cGVOYW1lXSA9IHR5cGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJFbnVtcyhlbnVtczogU2VyaWFsaXphYmxlVHlwZU1hcCkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBlbnVtcykge1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckVudW0oZW51bXNba2V5XSwga2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3RlckVudW0oZW51bVR5cGU6IGFueSwgZW51bU5hbWU6IHN0cmluZykge1xuICAgICAgICAvLyB0cnkgdG8gZmluZCBuYW1lIGZyb20gZGVjb3JhdG9yXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5fZW51bU1hcFtlbnVtTmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFJlZ2lzdGVyaW5nIGVudW0gJHtlbnVtTmFtZX0gc2tpcHBlZCwgYmVjYXVzZSBlbnVtIGFscmVhZHkgZXhpc3RzLmApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgVHlwZVV0aWwuZGVmaW5lUmVmbGVjdEVudW1OYW1lKGVudW1UeXBlLCBlbnVtTmFtZSk7XG4gICAgICAgICAgICB0aGlzLl9lbnVtTWFwW2VudW1OYW1lXSA9IGVudW1UeXBlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGZpbmRDb3JyZWN0VHlwZShkYXRhOiBhbnksIGV4cGVjdGVkVHlwZTogc3RyaW5nKSB7XG4gICAgICAgIGlmIChkYXRhID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGVkVHlwZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9wcmltaXRpdmVzLmluZGV4T2YoZXhwZWN0ZWRUeXBlLnRvTG93ZXJDYXNlKCkpICE9PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGVkVHlwZTtcbiAgICAgICAgfSBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09ICdEYXRlJykge1xuICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGVkVHlwZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9lbnVtTWFwW2V4cGVjdGVkVHlwZV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWRUeXBlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3R5cGVNYXBbZXhwZWN0ZWRUeXBlXSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBleHBlY3RlZFR5cGU7IC8vIHcvZSB3ZSBkb24ndCBrbm93IHRoZSB0eXBlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENoZWNrIHRoZSBkaXNjcmltaW5hdG9yXG4gICAgICAgICAgICBjb25zdCBkaXNjcmltaW5hdG9yUHJvcGVydHkgPSB0aGlzLl90eXBlTWFwW2V4cGVjdGVkVHlwZV0uZGlzY3JpbWluYXRvcjtcbiAgICAgICAgICAgIGlmIChkaXNjcmltaW5hdG9yUHJvcGVydHkgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBleHBlY3RlZFR5cGU7IC8vIHRoZSB0eXBlIGRvZXMgbm90IGhhdmUgYSBkaXNjcmltaW5hdG9yLiB1c2UgaXQuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChkYXRhW2Rpc2NyaW1pbmF0b3JQcm9wZXJ0eV0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzY3JpbWluYXRvclR5cGUgPSBkYXRhW2Rpc2NyaW1pbmF0b3JQcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl90eXBlTWFwW2Rpc2NyaW1pbmF0b3JUeXBlXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRpc2NyaW1pbmF0b3JUeXBlOyAvLyB1c2UgdGhlIHR5cGUgZ2l2ZW4gaW4gdGhlIGRpc2NyaW1pbmF0b3JcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleHBlY3RlZFR5cGU7IC8vIGRpc2NyaW1pbmF0b3IgZGlkIG5vdCBtYXAgdG8gYSB0eXBlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWRUeXBlOyAvLyBkaXNjcmltaW5hdG9yIHdhcyBub3QgcHJlc2VudCAob3IgYW4gZW1wdHkgc3RyaW5nKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXJpYWxpemVDbGFzczxUPihkYXRhOiBULCB0eXBlOiBDbGFzc1R5cGU8VD4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplKGRhdGEsIFR5cGVVdGlsLmZpbmRUeXBlTmFtZSh0eXBlKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlcmlhbGl6ZUNsYXNzQXJyYXk8VD4oZGF0YTogQXJyYXk8VD4sIHR5cGU6IENsYXNzVHlwZTxUPikge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXJpYWxpemUoZGF0YSwgYEFycmF5PCR7VHlwZVV0aWwuZmluZFR5cGVOYW1lKHR5cGUpfT5gKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VyaWFsaXplKGRhdGE6IGFueSwgdHlwZTogc3RyaW5nLCBzdWJ0eXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKGRhdGEgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9wcmltaXRpdmVzLmluZGV4T2YodHlwZS50b0xvd2VyQ2FzZSgpKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUubGFzdEluZGV4T2YoJ0FycmF5PCcsIDApID09PSAwKSB7XG4gICAgICAgICAgICAvLyBzdHJpbmcuc3RhcnRzV2l0aCBwcmUgZXM2XG4gICAgICAgICAgICBsZXQgc3ViVHlwZTogc3RyaW5nID0gdHlwZS5yZXBsYWNlKCdBcnJheTwnLCAnJyk7IC8vIEFycmF5PFR5cGU+ID0+IFR5cGU+XG4gICAgICAgICAgICBzdWJUeXBlID0gc3ViVHlwZS5zdWJzdHJpbmcoMCwgc3ViVHlwZS5sZW5ndGggLSAxKTsgLy8gVHlwZT4gPT4gVHlwZVxuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZWREYXRhOiBhbnlbXSA9IFtdO1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci1mb3Itb2ZcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBkYXRhLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdHVtID0gZGF0YVtpbmRleF07XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZWREYXRhLnB1c2godGhpcy5zZXJpYWxpemUoZGF0dW0sIHN1YlR5cGUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm1lZERhdGE7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ0RhdGUnKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlT25seSA9IHN1YnR5cGUgPT09ICdkYXRlJztcbiAgICAgICAgICAgIHJldHVybiBEYXRlVXRpbC50b0lzb1N0cmluZyhkYXRhLCB0aGlzLmRhdGVUaW1lSW5VdGMsIHRoaXMuZGF0ZVRpbWVXaXRoVGltZXpvbmUsIHRoaXMuZGF0ZVRpbWVXaXRoTWlsbGlzLCBkYXRlT25seSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZW51bU1hcFt0eXBlXSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLl90eXBlTWFwW3R5cGVdKSB7XG4gICAgICAgICAgICAgICAgLy8gaW4gY2FzZSB3ZSBkb250IGtub3cgdGhlIHR5cGVcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gR2V0IHRoZSBhY3R1YWwgdHlwZSBvZiB0aGlzIG9iamVjdFxuICAgICAgICAgICAgdHlwZSA9IHRoaXMuZmluZENvcnJlY3RUeXBlKGRhdGEsIHR5cGUpO1xuXG4gICAgICAgICAgICAvLyBnZXQgdGhlIG1hcCBmb3IgdGhlIGNvcnJlY3QgdHlwZS5cbiAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZVR5cGVzID0gdGhpcy5fdHlwZU1hcFt0eXBlXS5nZXRBdHRyaWJ1dGVUeXBlTWFwKCkgYXMgQXJyYXk8QXR0cmlidXRlRGVmPjtcbiAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlOiB7W2luZGV4OiBzdHJpbmddOiBhbnl9ID0ge307XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLWZvci1vZlxuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGF0dHJpYnV0ZVR5cGVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZVR5cGUgPSBhdHRyaWJ1dGVUeXBlc1tpbmRleF07XG4gICAgICAgICAgICAgICAgaW5zdGFuY2VbYXR0cmlidXRlVHlwZS5iYXNlTmFtZV0gPSB0aGlzLnNlcmlhbGl6ZShkYXRhW2F0dHJpYnV0ZVR5cGUubmFtZV0sIGF0dHJpYnV0ZVR5cGUudHlwZSwgYXR0cmlidXRlVHlwZS5zdWJ0eXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBkZXNlcmlhbGl6ZUNsYXNzPFQ+KGRhdGE6IGFueSwgdHlwZTogQ2xhc3NUeXBlPFQ+KTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlc2VyaWFsaXplKGRhdGEsIFR5cGVVdGlsLmZpbmRUeXBlTmFtZSh0eXBlKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlc2VyaWFsaXplQ2xhc3NBcnJheTxUPihkYXRhOiBhbnksIHR5cGU6IENsYXNzVHlwZTxUPik6IEFycmF5PFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVzZXJpYWxpemUoZGF0YSwgYEFycmF5PCR7VHlwZVV0aWwuZmluZFR5cGVOYW1lKHR5cGUpfT5gKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVzZXJpYWxpemUoZGF0YTogYW55LCB0eXBlOiBzdHJpbmcpIHtcbiAgICAgICAgLy8gcG9seW1vcnBoaXNtIG1heSBjaGFuZ2UgdGhlIGFjdHVhbCB0eXBlLlxuICAgICAgICB0eXBlID0gdGhpcy5maW5kQ29ycmVjdFR5cGUoZGF0YSwgdHlwZSk7XG4gICAgICAgIGlmIChkYXRhID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fcHJpbWl0aXZlcy5pbmRleE9mKHR5cGUudG9Mb3dlckNhc2UoKSkgIT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlLmxhc3RJbmRleE9mKCdBcnJheTwnLCAwKSA9PT0gMCkge1xuICAgICAgICAgICAgLy8gc3RyaW5nLnN0YXJ0c1dpdGggcHJlIGVzNlxuICAgICAgICAgICAgbGV0IHN1YlR5cGU6IHN0cmluZyA9IHR5cGUucmVwbGFjZSgnQXJyYXk8JywgJycpOyAvLyBBcnJheTxUeXBlPiA9PiBUeXBlPlxuICAgICAgICAgICAgc3ViVHlwZSA9IHN1YlR5cGUuc3Vic3RyaW5nKDAsIHN1YlR5cGUubGVuZ3RoIC0gMSk7IC8vIFR5cGU+ID0+IFR5cGVcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkRGF0YTogYW55W10gPSBbXTtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpwcmVmZXItZm9yLW9mXG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZGF0YS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXR1bSA9IGRhdGFbaW5kZXhdO1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkRGF0YS5wdXNoKHRoaXMuZGVzZXJpYWxpemUoZGF0dW0sIHN1YlR5cGUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm1lZERhdGE7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ0RhdGUnKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoZGF0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZW51bU1hcFt0eXBlXSkge1xuICAgICAgICAgICAgICAgIC8vIGlzIEVudW1cbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLl90eXBlTWFwW3R5cGVdKSB7XG4gICAgICAgICAgICAgICAgLy8gZG9udCBrbm93IHRoZSB0eXBlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyB0aGlzLl90eXBlTWFwW3R5cGVdKCk7XG4gICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVUeXBlcyA9IHRoaXMuX3R5cGVNYXBbdHlwZV0uZ2V0QXR0cmlidXRlVHlwZU1hcCgpIGFzIEFycmF5PEF0dHJpYnV0ZURlZj47XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLWZvci1vZlxuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGF0dHJpYnV0ZVR5cGVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZVR5cGUgPSBhdHRyaWJ1dGVUeXBlc1tpbmRleF07XG4gICAgICAgICAgICAgICAgaW5zdGFuY2VbYXR0cmlidXRlVHlwZS5uYW1lXSA9IHRoaXMuZGVzZXJpYWxpemUoZGF0YVthdHRyaWJ1dGVUeXBlLmJhc2VOYW1lXSwgYXR0cmlidXRlVHlwZS50eXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==