@tsi-developpement/tsi-shared-ui 0.0.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 (558) hide show
  1. package/esm2022/lib/consts/app-providers.mjs +11 -0
  2. package/esm2022/lib/consts/html-template.const.mjs +40 -0
  3. package/esm2022/lib/consts/index.mjs +8 -0
  4. package/esm2022/lib/consts/localization-key.mjs +12 -0
  5. package/esm2022/lib/consts/locals.const.mjs +8 -0
  6. package/esm2022/lib/consts/queryParamNames.const.mjs +11 -0
  7. package/esm2022/lib/consts/themes.mjs +5 -0
  8. package/esm2022/lib/consts/tsi-consts.mjs +45 -0
  9. package/esm2022/lib/end-points/authorization-endpoints.mjs +35 -0
  10. package/esm2022/lib/end-points/baseuri.mjs +11 -0
  11. package/esm2022/lib/end-points/endpoints.mjs +208 -0
  12. package/esm2022/lib/end-points/import-export-endpoint.mjs +35 -0
  13. package/esm2022/lib/end-points/index.mjs +7 -0
  14. package/esm2022/lib/end-points/presentation-settings-endpoints.mjs +13 -0
  15. package/esm2022/lib/end-points/reporting-endpoints.mjs +55 -0
  16. package/esm2022/lib/end-points/shared-endpoint.mjs +12 -0
  17. package/esm2022/lib/end-points/user-identity-endpoints.mjs +61 -0
  18. package/esm2022/lib/enums/Language.mjs +9 -0
  19. package/esm2022/lib/enums/auto-complete.mjs +6 -0
  20. package/esm2022/lib/enums/button-type.enum.mjs +6 -0
  21. package/esm2022/lib/enums/claim-types.mjs +15 -0
  22. package/esm2022/lib/enums/code-format.mjs +6 -0
  23. package/esm2022/lib/enums/component-use-modes-enum.mjs +19 -0
  24. package/esm2022/lib/enums/css-units.mjs +10 -0
  25. package/esm2022/lib/enums/decimal-format.mjs +8 -0
  26. package/esm2022/lib/enums/display-types.mjs +35 -0
  27. package/esm2022/lib/enums/filter-operator-type.mjs +34 -0
  28. package/esm2022/lib/enums/form-validation-error.mjs +7 -0
  29. package/esm2022/lib/enums/grid-selection-mode.mjs +7 -0
  30. package/esm2022/lib/enums/grid-sort-mode.mjs +7 -0
  31. package/esm2022/lib/enums/http-method-types.mjs +6 -0
  32. package/esm2022/lib/enums/index.mjs +25 -0
  33. package/esm2022/lib/enums/input-types.mjs +20 -0
  34. package/esm2022/lib/enums/layout-orientation.mjs +6 -0
  35. package/esm2022/lib/enums/logout-reason-enum.mjs +8 -0
  36. package/esm2022/lib/enums/modal-size-enum.mjs +10 -0
  37. package/esm2022/lib/enums/report-type.mjs +9 -0
  38. package/esm2022/lib/enums/status.mjs +9 -0
  39. package/esm2022/lib/enums/text-box-type.mjs +7 -0
  40. package/esm2022/lib/enums/tooltipPosition.enum.mjs +8 -0
  41. package/esm2022/lib/enums/tsi-component-enum.mjs +40 -0
  42. package/esm2022/lib/enums/type-import.mjs +6 -0
  43. package/esm2022/lib/functions/array.functions.mjs +8 -0
  44. package/esm2022/lib/functions/index.mjs +3 -0
  45. package/esm2022/lib/functions/modal-open.function.mjs +69 -0
  46. package/esm2022/lib/guards/admin.guard.mjs +37 -0
  47. package/esm2022/lib/guards/auth.guard.mjs +30 -0
  48. package/esm2022/lib/guards/index.mjs +4 -0
  49. package/esm2022/lib/guards/permission.guard.mjs +32 -0
  50. package/esm2022/lib/interfaces/configuration/configuration.mjs +2 -0
  51. package/esm2022/lib/interfaces/generic-form/generic-form.mjs +118 -0
  52. package/esm2022/lib/interfaces/generic-types/dictionary.mjs +2 -0
  53. package/esm2022/lib/interfaces/grid/grid-configuration.mjs +2 -0
  54. package/esm2022/lib/interfaces/index.mjs +12 -0
  55. package/esm2022/lib/interfaces/modal/dynamic.component.mjs +7 -0
  56. package/esm2022/lib/interfaces/modal/modal-size.mjs +2 -0
  57. package/esm2022/lib/interfaces/pagination/pagination-base.mjs +2 -0
  58. package/esm2022/lib/interfaces/select-list/combo-status-model.mjs +10 -0
  59. package/esm2022/lib/interfaces/settings/app-settings.mjs +2 -0
  60. package/esm2022/lib/interfaces/styles/css-size-property.mjs +17 -0
  61. package/esm2022/lib/interfaces/translation/translation.mjs +2 -0
  62. package/esm2022/lib/models/Notes/Note.mjs +7 -0
  63. package/esm2022/lib/models/application/configuration/endpoint-infos.mjs +3 -0
  64. package/esm2022/lib/models/application/configuration/entity-delete-behavior.mjs +2 -0
  65. package/esm2022/lib/models/authorization/authorization-token-mapper.mjs +24 -0
  66. package/esm2022/lib/models/authorization/authorization-token.mjs +2 -0
  67. package/esm2022/lib/models/common/component-descriminator.mjs +2 -0
  68. package/esm2022/lib/models/common/entity-properties.mjs +2 -0
  69. package/esm2022/lib/models/common/entity-validations.mjs +2 -0
  70. package/esm2022/lib/models/common/event-schema.mjs +2 -0
  71. package/esm2022/lib/models/common/key-value-pair.mjs +2 -0
  72. package/esm2022/lib/models/entity-info/entity-info.mjs +29 -0
  73. package/esm2022/lib/models/filter/filter-by-existing-values.mjs +7 -0
  74. package/esm2022/lib/models/filter/paged-result-request-base.mjs +13 -0
  75. package/esm2022/lib/models/filter/search-field.mjs +2 -0
  76. package/esm2022/lib/models/import-export/import-export.mjs +15 -0
  77. package/esm2022/lib/models/index.mjs +38 -0
  78. package/esm2022/lib/models/journalisation-application/journalisation-application.mjs +10 -0
  79. package/esm2022/lib/models/journalisation-application/status-history.mjs +3 -0
  80. package/esm2022/lib/models/layout/layout-config.mjs +2 -0
  81. package/esm2022/lib/models/modal/bs-modal.mjs +6 -0
  82. package/esm2022/lib/models/presentation-settings/presentation-settings.mjs +8 -0
  83. package/esm2022/lib/models/progress-bar/progress-bar-create-request.mjs +2 -0
  84. package/esm2022/lib/models/progress-bar/progress-bar-response.mjs +8 -0
  85. package/esm2022/lib/models/progress-bar/progress-bar-update-request.mjs +3 -0
  86. package/esm2022/lib/models/remote-services-utility/subscription-result.mjs +17 -0
  87. package/esm2022/lib/models/reporting/json-data-connection.mjs +2 -0
  88. package/esm2022/lib/models/reporting/optional-endpoints.mjs +2 -0
  89. package/esm2022/lib/models/reporting/report-template-response.mjs +2 -0
  90. package/esm2022/lib/models/reporting/report-to-edit-template.mjs +2 -0
  91. package/esm2022/lib/models/reporting/report-to-print.mjs +2 -0
  92. package/esm2022/lib/models/reporting/report-to-template.mjs +2 -0
  93. package/esm2022/lib/models/settings/devise.mjs +3 -0
  94. package/esm2022/lib/models/settings/fichier.mjs +6 -0
  95. package/esm2022/lib/models/settings/type-fichier.mjs +3 -0
  96. package/esm2022/lib/models/tsi-card/tsi-card.mjs +3 -0
  97. package/esm2022/lib/models/user-identity/login-response.mjs +7 -0
  98. package/esm2022/lib/models/user-identity/tenant.mjs +3 -0
  99. package/esm2022/lib/models/user-identity/user-identity.mjs +3 -0
  100. package/esm2022/lib/models/workflow/workflow.mjs +14 -0
  101. package/esm2022/lib/package-initializer.mjs +7 -0
  102. package/esm2022/lib/pipes/cut-label.pipe.mjs +23 -0
  103. package/esm2022/lib/pipes/index.mjs +8 -0
  104. package/esm2022/lib/pipes/localize.pipe.mjs +51 -0
  105. package/esm2022/lib/pipes/modal-label.pipe.mjs +37 -0
  106. package/esm2022/lib/pipes/shorten.pipe.mjs +20 -0
  107. package/esm2022/lib/pipes/to-number.pipe.mjs +20 -0
  108. package/esm2022/lib/pipes/tsi-currency.pipe.mjs +29 -0
  109. package/esm2022/lib/pipes/tsi-decimal.pipe.mjs +21 -0
  110. package/esm2022/lib/providers/index.mjs +2 -0
  111. package/esm2022/lib/providers/shared-ui-tsi.provider.mjs +15 -0
  112. package/esm2022/lib/routes/admin.routes.mjs +5 -0
  113. package/esm2022/lib/routes/app.routes.mjs +7 -0
  114. package/esm2022/lib/routes/identity.routes.mjs +4 -0
  115. package/esm2022/lib/routes/index.mjs +5 -0
  116. package/esm2022/lib/routes/manage-reporting.routes.mjs +5 -0
  117. package/esm2022/lib/services/Component-Finder/tsi-component-finder.service.mjs +22 -0
  118. package/esm2022/lib/services/Import-Export/modele-import.service.mjs +59 -0
  119. package/esm2022/lib/services/Note/Note.service.mjs +35 -0
  120. package/esm2022/lib/services/UserIdentity/identity-platform-authentication.service.mjs +29 -0
  121. package/esm2022/lib/services/UserIdentity/user-identity.service.mjs +40 -0
  122. package/esm2022/lib/services/application/api-explorer.service.mjs +24 -0
  123. package/esm2022/lib/services/application/app.layout.service.mjs +97 -0
  124. package/esm2022/lib/services/application/parametres-application-parambase.service.mjs +20 -0
  125. package/esm2022/lib/services/authorization/authorization.service.mjs +124 -0
  126. package/esm2022/lib/services/authorization/identity-manager.service.mjs +97 -0
  127. package/esm2022/lib/services/base/crud-base.service.mjs +38 -0
  128. package/esm2022/lib/services/configuration/entity-configuration.service.mjs +49 -0
  129. package/esm2022/lib/services/currentUser/currentUser.service.mjs +49 -0
  130. package/esm2022/lib/services/date-helper.service.mjs +133 -0
  131. package/esm2022/lib/services/dialog-data.service.mjs +32 -0
  132. package/esm2022/lib/services/fichier/fichier-upload.service.mjs +44 -0
  133. package/esm2022/lib/services/fichier/fichier.service.mjs +20 -0
  134. package/esm2022/lib/services/formula.service.mjs +20 -0
  135. package/esm2022/lib/services/generator/html-template-generator.service.mjs +196 -0
  136. package/esm2022/lib/services/index.mjs +41 -0
  137. package/esm2022/lib/services/journalisation/journalisation-application.service.mjs +23 -0
  138. package/esm2022/lib/services/journalisation/status-history.service.mjs +23 -0
  139. package/esm2022/lib/services/layout/layout-helper.service.mjs +72 -0
  140. package/esm2022/lib/services/modal/tsi-bs-modal.service.mjs +37 -0
  141. package/esm2022/lib/services/modal/tsi-modal.service.mjs +21 -0
  142. package/esm2022/lib/services/module-code/module-code.service.mjs +31 -0
  143. package/esm2022/lib/services/module-main-parameter.service.mjs +31 -0
  144. package/esm2022/lib/services/notification/error-response-manager.service.mjs +57 -0
  145. package/esm2022/lib/services/notification/tsi-confirmation.service.mjs +37 -0
  146. package/esm2022/lib/services/notification/tsi-message.service.mjs +54 -0
  147. package/esm2022/lib/services/notification/tsi-notification.service.mjs +47 -0
  148. package/esm2022/lib/services/presentation-setting/presentation-designer-base.service.mjs +26 -0
  149. package/esm2022/lib/services/presentation-setting/presentation-designer.service.mjs +58 -0
  150. package/esm2022/lib/services/presentation-setting/presentation-setting.service.mjs +39 -0
  151. package/esm2022/lib/services/progress-bar/progress-bar-helper.service.mjs +39 -0
  152. package/esm2022/lib/services/progress-bar/progress-bar.service.mjs +30 -0
  153. package/esm2022/lib/services/record-info-popup.service.mjs +21 -0
  154. package/esm2022/lib/services/reporting/dashboard-module.service.mjs +24 -0
  155. package/esm2022/lib/services/reporting/reporting.service.mjs +111 -0
  156. package/esm2022/lib/services/settings/app-settings.service.mjs +47 -0
  157. package/esm2022/lib/services/settings/keyboard-shortcut.service.mjs +30 -0
  158. package/esm2022/lib/services/status/entityStatus.service.mjs +21 -0
  159. package/esm2022/lib/services/translation/translation.service.mjs +71 -0
  160. package/esm2022/lib/services/validation/entity-validations.service.mjs +21 -0
  161. package/esm2022/lib/services/validation/generic-validation-state.service.mjs +30 -0
  162. package/esm2022/lib/services/validation/input-registry.service.mjs +25 -0
  163. package/esm2022/lib/services/workflow/workflow-configuration.service.mjs +80 -0
  164. package/esm2022/lib/shared.module.mjs +643 -0
  165. package/esm2022/lib/tsi-base/components/app-base/app-base.component.mjs +101 -0
  166. package/esm2022/lib/tsi-base/components/tsi-base/tsi-base.component.mjs +25 -0
  167. package/esm2022/lib/tsi-base/components/tsi-form-base/tsi-form-base.component.mjs +645 -0
  168. package/esm2022/lib/tsi-base/components/tsi-list-base/tsi-list-base.component.mjs +514 -0
  169. package/esm2022/lib/tsi-base/index.mjs +6 -0
  170. package/esm2022/lib/tsi-base/tsi-input-base/tsi-input-base.component.mjs +141 -0
  171. package/esm2022/lib/tsi-components/alert-import-message/alert-import-message.component.mjs +19 -0
  172. package/esm2022/lib/tsi-components/button-components/Tsi-Submit-Button/tsi-submit-button.component.mjs +40 -0
  173. package/esm2022/lib/tsi-components/button-components/tsi-button/tsi-button.component.mjs +75 -0
  174. package/esm2022/lib/tsi-components/create-or-edit-entity-informations/create-or-edit-entity-informations.component.mjs +173 -0
  175. package/esm2022/lib/tsi-components/create-or-edit-modele-import/create-or-edit-modele-import.component.mjs +201 -0
  176. package/esm2022/lib/tsi-components/index.mjs +80 -0
  177. package/esm2022/lib/tsi-components/input-components/editable-grid/editable-grid.component.mjs +643 -0
  178. package/esm2022/lib/tsi-components/input-components/tsi-checkbox/tsi-checkbox.component.mjs +120 -0
  179. package/esm2022/lib/tsi-components/input-components/tsi-currency-other-input/tsi-currency-other-input.component.mjs +53 -0
  180. package/esm2022/lib/tsi-components/input-components/tsi-currency-societe-input/tsi-currency-societe-input.component.mjs +62 -0
  181. package/esm2022/lib/tsi-components/input-components/tsi-date-picker/tsi-date-picker.component.mjs +116 -0
  182. package/esm2022/lib/tsi-components/input-components/tsi-decimal-input/tsi-decimal-input.component.mjs +51 -0
  183. package/esm2022/lib/tsi-components/input-components/tsi-file-manager/tsi-file-manager.component.mjs +195 -0
  184. package/esm2022/lib/tsi-components/input-components/tsi-formula-box/tsi-formula-box.component.mjs +54 -0
  185. package/esm2022/lib/tsi-components/input-components/tsi-integer/tsi-integer.component.mjs +55 -0
  186. package/esm2022/lib/tsi-components/input-components/tsi-radio-button/tsi-radio-button.component.mjs +43 -0
  187. package/esm2022/lib/tsi-components/input-components/tsi-rate-input/tsi-rate-input.component.mjs +56 -0
  188. package/esm2022/lib/tsi-components/input-components/tsi-search-combo/tsi-search-combo.component.mjs +649 -0
  189. package/esm2022/lib/tsi-components/input-components/tsi-text-area/tsi-text-area.component.mjs +44 -0
  190. package/esm2022/lib/tsi-components/input-components/tsi-text-box/tsi-text-box.component.mjs +50 -0
  191. package/esm2022/lib/tsi-components/input-components/tsi-time-picker/tsi-time-picker.component.mjs +65 -0
  192. package/esm2022/lib/tsi-components/logout-popup/logout-popup.component.mjs +12 -0
  193. package/esm2022/lib/tsi-components/manage-import-export/manage-import-export.component.mjs +435 -0
  194. package/esm2022/lib/tsi-components/manage-reporting/add-report-popup/add-report-popup.component.mjs +148 -0
  195. package/esm2022/lib/tsi-components/manage-reporting/manage-reporting.component.mjs +1075 -0
  196. package/esm2022/lib/tsi-components/message-components/tsi-error-message/tsi-error-message.component.mjs +31 -0
  197. package/esm2022/lib/tsi-components/message-components/tsi-info-message/tsi-info-message.component.mjs +24 -0
  198. package/esm2022/lib/tsi-components/message-components/tsi-redirection-message/tsi-redirection-message.component.mjs +19 -0
  199. package/esm2022/lib/tsi-components/message-components/tsi-success-message/tsi-success-message.component.mjs +22 -0
  200. package/esm2022/lib/tsi-components/modal-component/modal.component.mjs +138 -0
  201. package/esm2022/lib/tsi-components/modal-loader/modal-loader.component.mjs +58 -0
  202. package/esm2022/lib/tsi-components/output-components/display-nested-prop/display-nested-prop.component.mjs +32 -0
  203. package/esm2022/lib/tsi-components/output-components/tsi-checkbox-display/tsi-checkbox-display.component.mjs +18 -0
  204. package/esm2022/lib/tsi-components/output-components/tsi-currency-other-display/tsi-currency-other-display.component.mjs +17 -0
  205. package/esm2022/lib/tsi-components/output-components/tsi-currency-societe-display/tsi-currency-societe-display.component.mjs +57 -0
  206. package/esm2022/lib/tsi-components/output-components/tsi-date-display/tsi-date-display.component.mjs +27 -0
  207. package/esm2022/lib/tsi-components/output-components/tsi-decimal-display/tsi-decimal-display.component.mjs +25 -0
  208. package/esm2022/lib/tsi-components/output-components/tsi-display-grid/tsi-display-grid.component.mjs +139 -0
  209. package/esm2022/lib/tsi-components/output-components/tsi-generic-grid/tsi-generic-grid.component.mjs +1509 -0
  210. package/esm2022/lib/tsi-components/output-components/tsi-image-display/tsi-image-display.component.mjs +144 -0
  211. package/esm2022/lib/tsi-components/output-components/tsi-integer-display/tsi-integer-display.component.mjs +13 -0
  212. package/esm2022/lib/tsi-components/output-components/tsi-label/tsi-label.component.mjs +24 -0
  213. package/esm2022/lib/tsi-components/output-components/tsi-label-legend/tsi-label-legend.component.mjs +18 -0
  214. package/esm2022/lib/tsi-components/output-components/tsi-legend/tsi-legend.component.mjs +20 -0
  215. package/esm2022/lib/tsi-components/output-components/tsi-paragraph/tsi-paragraph.component.mjs +17 -0
  216. package/esm2022/lib/tsi-components/output-components/tsi-rate-display/tsi-rate-display.component.mjs +30 -0
  217. package/esm2022/lib/tsi-components/output-components/tsi-time-display/tsi-time-display.component.mjs +17 -0
  218. package/esm2022/lib/tsi-components/output-components/tsi-view-grid/tsi-view-grid.component.mjs +427 -0
  219. package/esm2022/lib/tsi-components/reporting/reporting.component.mjs +667 -0
  220. package/esm2022/lib/tsi-components/spinner/spinner.component.mjs +15 -0
  221. package/esm2022/lib/tsi-components/tsi-bubble-info/tsi-bubble-info.component.mjs +21 -0
  222. package/esm2022/lib/tsi-components/tsi-calender/context-menu/context-menu.component.mjs +46 -0
  223. package/esm2022/lib/tsi-components/tsi-calender/tsi-calender.component.mjs +297 -0
  224. package/esm2022/lib/tsi-components/tsi-card/tsi-card.component.mjs +64 -0
  225. package/esm2022/lib/tsi-components/tsi-card-list/tsi-card-list.component.mjs +112 -0
  226. package/esm2022/lib/tsi-components/tsi-change-password/tsi-change-password.component.mjs +39 -0
  227. package/esm2022/lib/tsi-components/tsi-code-generator/tsi-code-generator.component.mjs +83 -0
  228. package/esm2022/lib/tsi-components/tsi-divider/tsi-divider.component.mjs +18 -0
  229. package/esm2022/lib/tsi-components/tsi-form/tsi-form.component.mjs +305 -0
  230. package/esm2022/lib/tsi-components/tsi-form-modal-footer/tsi-form-modal-footer.component.mjs +15 -0
  231. package/esm2022/lib/tsi-components/tsi-generic-crud/tsi-generic-crud.component.mjs +883 -0
  232. package/esm2022/lib/tsi-components/tsi-generic-form/tsi-generic-form.component.mjs +149 -0
  233. package/esm2022/lib/tsi-components/tsi-kanban/tsi-kanban.component.mjs +231 -0
  234. package/esm2022/lib/tsi-components/tsi-log-event-history/tsi-log-event-history.component.mjs +119 -0
  235. package/esm2022/lib/tsi-components/tsi-modal/tsi-modal.component.mjs +25 -0
  236. package/esm2022/lib/tsi-components/tsi-modal-footer/tsi-modal-footer.component.mjs +119 -0
  237. package/esm2022/lib/tsi-components/tsi-modal-header/tsi-modal-header.component.mjs +54 -0
  238. package/esm2022/lib/tsi-components/tsi-notes-avertir/tsi-notes-avertir.component.mjs +27 -0
  239. package/esm2022/lib/tsi-components/tsi-notes-createoredit/tsi-notes.component.mjs +123 -0
  240. package/esm2022/lib/tsi-components/tsi-notes-grid/tsi-notes-grid.component.mjs +41 -0
  241. package/esm2022/lib/tsi-components/tsi-popup-text-viewer/tsi-popup-text-viewer.component.mjs +187 -0
  242. package/esm2022/lib/tsi-components/tsi-progress-bar/tsi-progress-bar.component.mjs +170 -0
  243. package/esm2022/lib/tsi-components/tsi-search-box/tsi-search-box.component.mjs +142 -0
  244. package/esm2022/lib/tsi-components/tsi-send-mail/tsi-send-mail.component.mjs +37 -0
  245. package/esm2022/lib/tsi-components/tsi-tab-panel/tsi-tab-panel.component.mjs +52 -0
  246. package/esm2022/lib/tsi-components/tsi-tab-view/tsi-tab-view.component.mjs +46 -0
  247. package/esm2022/lib/tsi-components/tsi-tenants/tsi-tenants.component.mjs +122 -0
  248. package/esm2022/lib/tsi-components/tsi-tooltip/tsi-tooltip.component.mjs +21 -0
  249. package/esm2022/lib/tsi-components/tsi-upload-fiche/tsi-upload-fiche.component.mjs +186 -0
  250. package/esm2022/lib/tsi-components/tsi-upload-grid/tsi-upload-grid.component.mjs +54 -0
  251. package/esm2022/lib/tsi-directives/auto-select.directive.mjs +33 -0
  252. package/esm2022/lib/tsi-directives/busy.directive.mjs +32 -0
  253. package/esm2022/lib/tsi-directives/dynamic-component-loader/ad.directive.mjs +16 -0
  254. package/esm2022/lib/tsi-directives/index.mjs +8 -0
  255. package/esm2022/lib/tsi-directives/module-main-parameter.directive.mjs +16 -0
  256. package/esm2022/lib/tsi-directives/presentation-designer-base.directive.mjs +238 -0
  257. package/esm2022/lib/tsi-directives/presentation-designer.directive.mjs +205 -0
  258. package/esm2022/lib/tsi-directives/validation.directive.mjs +85 -0
  259. package/esm2022/lib/tsi-helpers/compoent-reference.helper.mjs +7 -0
  260. package/esm2022/lib/tsi-helpers/date-helper.mjs +21 -0
  261. package/esm2022/lib/tsi-helpers/export-excel.helper.mjs +40 -0
  262. package/esm2022/lib/tsi-helpers/filter-helper.mjs +126 -0
  263. package/esm2022/lib/tsi-helpers/grid-col-style.helper.mjs +7 -0
  264. package/esm2022/lib/tsi-helpers/guid.helper.mjs +19 -0
  265. package/esm2022/lib/tsi-helpers/helpers.mjs +9 -0
  266. package/esm2022/lib/tsi-helpers/index.mjs +13 -0
  267. package/esm2022/lib/tsi-helpers/mapping-helper.mjs +10 -0
  268. package/esm2022/lib/tsi-helpers/object.helper.mjs +6 -0
  269. package/esm2022/lib/tsi-helpers/primeng-translate-config.mjs +55 -0
  270. package/esm2022/lib/tsi-helpers/storage-manager.mjs +33 -0
  271. package/esm2022/lib/tsi-helpers/type-registry.helper.mjs +49 -0
  272. package/esm2022/lib/types/enum-description.type.mjs +2 -0
  273. package/esm2022/lib/types/index.mjs +3 -0
  274. package/esm2022/lib/types/time-only.mjs +42 -0
  275. package/esm2022/public-api.mjs +21 -0
  276. package/esm2022/tsi-developpement-tsi-shared-ui.mjs +5 -0
  277. package/esm2022/tsi-tsi-shared-ui.mjs +5 -0
  278. package/fesm2022/tsi-developpement-tsi-shared-ui.mjs +17486 -0
  279. package/fesm2022/tsi-developpement-tsi-shared-ui.mjs.map +1 -0
  280. package/fesm2022/tsi-tsi-shared-ui.mjs +17486 -0
  281. package/fesm2022/tsi-tsi-shared-ui.mjs.map +1 -0
  282. package/index.d.ts +5 -0
  283. package/lib/consts/app-providers.d.ts +4 -0
  284. package/lib/consts/html-template.const.d.ts +12 -0
  285. package/lib/consts/index.d.ts +7 -0
  286. package/lib/consts/localization-key.d.ts +11 -0
  287. package/lib/consts/locals.const.d.ts +7 -0
  288. package/lib/consts/queryParamNames.const.d.ts +10 -0
  289. package/lib/consts/themes.d.ts +4 -0
  290. package/lib/consts/tsi-consts.d.ts +40 -0
  291. package/lib/end-points/authorization-endpoints.d.ts +31 -0
  292. package/lib/end-points/baseuri.d.ts +10 -0
  293. package/lib/end-points/endpoints.d.ts +205 -0
  294. package/lib/end-points/import-export-endpoint.d.ts +33 -0
  295. package/lib/end-points/index.d.ts +6 -0
  296. package/lib/end-points/presentation-settings-endpoints.d.ts +11 -0
  297. package/lib/end-points/reporting-endpoints.d.ts +53 -0
  298. package/lib/end-points/shared-endpoint.d.ts +9 -0
  299. package/lib/end-points/user-identity-endpoints.d.ts +59 -0
  300. package/lib/enums/Language.d.ts +9 -0
  301. package/lib/enums/auto-complete.d.ts +4 -0
  302. package/lib/enums/button-type.enum.d.ts +4 -0
  303. package/lib/enums/claim-types.d.ts +13 -0
  304. package/lib/enums/code-format.d.ts +4 -0
  305. package/lib/enums/component-use-modes-enum.d.ts +17 -0
  306. package/lib/enums/css-units.d.ts +8 -0
  307. package/lib/enums/decimal-format.d.ts +6 -0
  308. package/lib/enums/display-types.d.ts +17 -0
  309. package/lib/enums/filter-operator-type.d.ts +18 -0
  310. package/lib/enums/form-validation-error.d.ts +11 -0
  311. package/lib/enums/grid-selection-mode.d.ts +5 -0
  312. package/lib/enums/grid-sort-mode.d.ts +5 -0
  313. package/lib/enums/http-method-types.d.ts +4 -0
  314. package/lib/enums/index.d.ts +24 -0
  315. package/lib/enums/input-types.d.ts +18 -0
  316. package/lib/enums/layout-orientation.d.ts +4 -0
  317. package/lib/enums/logout-reason-enum.d.ts +6 -0
  318. package/lib/enums/modal-size-enum.d.ts +10 -0
  319. package/lib/enums/report-type.d.ts +7 -0
  320. package/lib/enums/status.d.ts +7 -0
  321. package/lib/enums/text-box-type.d.ts +5 -0
  322. package/lib/enums/tooltipPosition.enum.d.ts +6 -0
  323. package/lib/enums/tsi-component-enum.d.ts +37 -0
  324. package/lib/enums/type-import.d.ts +4 -0
  325. package/lib/functions/array.functions.d.ts +1 -0
  326. package/lib/functions/index.d.ts +1 -0
  327. package/lib/functions/modal-open.function.d.ts +9 -0
  328. package/lib/guards/admin.guard.d.ts +14 -0
  329. package/lib/guards/auth.guard.d.ts +12 -0
  330. package/lib/guards/index.d.ts +3 -0
  331. package/lib/guards/permission.guard.d.ts +2 -0
  332. package/lib/interfaces/configuration/configuration.d.ts +10 -0
  333. package/lib/interfaces/generic-form/generic-form.d.ts +45 -0
  334. package/lib/interfaces/generic-types/dictionary.d.ts +3 -0
  335. package/lib/interfaces/grid/grid-configuration.d.ts +116 -0
  336. package/lib/interfaces/index.d.ts +11 -0
  337. package/lib/interfaces/modal/dynamic.component.d.ts +18 -0
  338. package/lib/interfaces/modal/modal-size.d.ts +4 -0
  339. package/lib/interfaces/pagination/pagination-base.d.ts +46 -0
  340. package/lib/interfaces/select-list/combo-status-model.d.ts +8 -0
  341. package/lib/interfaces/settings/app-settings.d.ts +4 -0
  342. package/lib/interfaces/styles/css-size-property.d.ts +10 -0
  343. package/lib/interfaces/translation/translation.d.ts +10 -0
  344. package/lib/models/Notes/Note.d.ts +25 -0
  345. package/lib/models/application/configuration/endpoint-infos.d.ts +6 -0
  346. package/lib/models/application/configuration/entity-delete-behavior.d.ts +6 -0
  347. package/lib/models/authorization/authorization-token-mapper.d.ts +4 -0
  348. package/lib/models/authorization/authorization-token.d.ts +16 -0
  349. package/lib/models/common/component-descriminator.d.ts +4 -0
  350. package/lib/models/common/entity-properties.d.ts +5 -0
  351. package/lib/models/common/entity-validations.d.ts +7 -0
  352. package/lib/models/common/event-schema.d.ts +6 -0
  353. package/lib/models/common/key-value-pair.d.ts +4 -0
  354. package/lib/models/entity-info/entity-info.d.ts +37 -0
  355. package/lib/models/filter/filter-by-existing-values.d.ts +6 -0
  356. package/lib/models/filter/paged-result-request-base.d.ts +16 -0
  357. package/lib/models/filter/search-field.d.ts +35 -0
  358. package/lib/models/import-export/import-export.d.ts +28 -0
  359. package/lib/models/index.d.ts +37 -0
  360. package/lib/models/journalisation-application/journalisation-application.d.ts +39 -0
  361. package/lib/models/journalisation-application/status-history.d.ts +12 -0
  362. package/lib/models/layout/layout-config.d.ts +3 -0
  363. package/lib/models/modal/bs-modal.d.ts +5 -0
  364. package/lib/models/presentation-settings/presentation-settings.d.ts +14 -0
  365. package/lib/models/progress-bar/progress-bar-create-request.d.ts +8 -0
  366. package/lib/models/progress-bar/progress-bar-response.d.ts +10 -0
  367. package/lib/models/progress-bar/progress-bar-update-request.d.ts +9 -0
  368. package/lib/models/remote-services-utility/subscription-result.d.ts +15 -0
  369. package/lib/models/reporting/json-data-connection.d.ts +6 -0
  370. package/lib/models/reporting/optional-endpoints.d.ts +8 -0
  371. package/lib/models/reporting/report-template-response.d.ts +13 -0
  372. package/lib/models/reporting/report-to-edit-template.d.ts +29 -0
  373. package/lib/models/reporting/report-to-print.d.ts +18 -0
  374. package/lib/models/reporting/report-to-template.d.ts +19 -0
  375. package/lib/models/settings/devise.d.ts +9 -0
  376. package/lib/models/settings/fichier.d.ts +14 -0
  377. package/lib/models/settings/type-fichier.d.ts +4 -0
  378. package/lib/models/tsi-card/tsi-card.d.ts +9 -0
  379. package/lib/models/user-identity/login-response.d.ts +8 -0
  380. package/lib/models/user-identity/tenant.d.ts +5 -0
  381. package/lib/models/user-identity/user-identity.d.ts +5 -0
  382. package/lib/models/workflow/workflow.d.ts +36 -0
  383. package/lib/package-initializer.d.ts +1 -0
  384. package/lib/pipes/cut-label.pipe.d.ts +7 -0
  385. package/lib/pipes/index.d.ts +7 -0
  386. package/lib/pipes/localize.pipe.d.ts +11 -0
  387. package/lib/pipes/modal-label.pipe.d.ts +10 -0
  388. package/lib/pipes/shorten.pipe.d.ts +7 -0
  389. package/lib/pipes/to-number.pipe.d.ts +7 -0
  390. package/lib/pipes/tsi-currency.pipe.d.ts +10 -0
  391. package/lib/pipes/tsi-decimal.pipe.d.ts +7 -0
  392. package/lib/providers/index.d.ts +1 -0
  393. package/lib/providers/shared-ui-tsi.provider.d.ts +8 -0
  394. package/lib/routes/admin.routes.d.ts +4 -0
  395. package/lib/routes/app.routes.d.ts +6 -0
  396. package/lib/routes/identity.routes.d.ts +3 -0
  397. package/lib/routes/index.d.ts +4 -0
  398. package/lib/routes/manage-reporting.routes.d.ts +4 -0
  399. package/lib/services/Component-Finder/tsi-component-finder.service.d.ts +10 -0
  400. package/lib/services/Import-Export/modele-import.service.d.ts +21 -0
  401. package/lib/services/Note/Note.service.d.ts +15 -0
  402. package/lib/services/UserIdentity/identity-platform-authentication.service.d.ts +13 -0
  403. package/lib/services/UserIdentity/user-identity.service.d.ts +15 -0
  404. package/lib/services/application/api-explorer.service.d.ts +13 -0
  405. package/lib/services/application/app.layout.service.d.ts +47 -0
  406. package/lib/services/application/parametres-application-parambase.service.d.ts +10 -0
  407. package/lib/services/authorization/authorization.service.d.ts +46 -0
  408. package/lib/services/authorization/identity-manager.service.d.ts +23 -0
  409. package/lib/services/base/crud-base.service.d.ts +20 -0
  410. package/lib/services/configuration/entity-configuration.service.d.ts +22 -0
  411. package/lib/services/currentUser/currentUser.service.d.ts +26 -0
  412. package/lib/services/date-helper.service.d.ts +32 -0
  413. package/lib/services/dialog-data.service.d.ts +12 -0
  414. package/lib/services/fichier/fichier-upload.service.d.ts +15 -0
  415. package/lib/services/fichier/fichier.service.d.ts +10 -0
  416. package/lib/services/formula.service.d.ts +10 -0
  417. package/lib/services/generator/html-template-generator.service.d.ts +28 -0
  418. package/lib/services/index.d.ts +40 -0
  419. package/lib/services/journalisation/journalisation-application.service.d.ts +12 -0
  420. package/lib/services/journalisation/status-history.service.d.ts +12 -0
  421. package/lib/services/layout/layout-helper.service.d.ts +25 -0
  422. package/lib/services/modal/tsi-bs-modal.service.d.ts +16 -0
  423. package/lib/services/modal/tsi-modal.service.d.ts +9 -0
  424. package/lib/services/module-code/module-code.service.d.ts +18 -0
  425. package/lib/services/module-main-parameter.service.d.ts +12 -0
  426. package/lib/services/notification/error-response-manager.service.d.ts +13 -0
  427. package/lib/services/notification/tsi-confirmation.service.d.ts +11 -0
  428. package/lib/services/notification/tsi-message.service.d.ts +13 -0
  429. package/lib/services/notification/tsi-notification.service.d.ts +18 -0
  430. package/lib/services/presentation-setting/presentation-designer-base.service.d.ts +14 -0
  431. package/lib/services/presentation-setting/presentation-designer.service.d.ts +19 -0
  432. package/lib/services/presentation-setting/presentation-setting.service.d.ts +16 -0
  433. package/lib/services/progress-bar/progress-bar-helper.service.d.ts +19 -0
  434. package/lib/services/progress-bar/progress-bar.service.d.ts +16 -0
  435. package/lib/services/record-info-popup.service.d.ts +10 -0
  436. package/lib/services/reporting/dashboard-module.service.d.ts +11 -0
  437. package/lib/services/reporting/reporting.service.d.ts +32 -0
  438. package/lib/services/settings/app-settings.service.d.ts +13 -0
  439. package/lib/services/settings/keyboard-shortcut.service.d.ts +9 -0
  440. package/lib/services/status/entityStatus.service.d.ts +11 -0
  441. package/lib/services/translation/translation.service.d.ts +20 -0
  442. package/lib/services/validation/entity-validations.service.d.ts +10 -0
  443. package/lib/services/validation/generic-validation-state.service.d.ts +15 -0
  444. package/lib/services/validation/input-registry.service.d.ts +11 -0
  445. package/lib/services/workflow/workflow-configuration.service.d.ts +28 -0
  446. package/lib/shared.module.d.ts +141 -0
  447. package/lib/tsi-base/components/app-base/app-base.component.d.ts +28 -0
  448. package/lib/tsi-base/components/tsi-base/tsi-base.component.d.ts +11 -0
  449. package/lib/tsi-base/components/tsi-form-base/tsi-form-base.component.d.ts +118 -0
  450. package/lib/tsi-base/components/tsi-list-base/tsi-list-base.component.d.ts +85 -0
  451. package/lib/tsi-base/index.d.ts +5 -0
  452. package/lib/tsi-base/tsi-input-base/tsi-input-base.component.d.ts +34 -0
  453. package/lib/tsi-components/alert-import-message/alert-import-message.component.d.ts +10 -0
  454. package/lib/tsi-components/button-components/Tsi-Submit-Button/tsi-submit-button.component.d.ts +16 -0
  455. package/lib/tsi-components/button-components/tsi-button/tsi-button.component.d.ts +26 -0
  456. package/lib/tsi-components/create-or-edit-entity-informations/create-or-edit-entity-informations.component.d.ts +31 -0
  457. package/lib/tsi-components/create-or-edit-modele-import/create-or-edit-modele-import.component.d.ts +52 -0
  458. package/lib/tsi-components/index.d.ts +79 -0
  459. package/lib/tsi-components/input-components/editable-grid/editable-grid.component.d.ts +127 -0
  460. package/lib/tsi-components/input-components/tsi-checkbox/tsi-checkbox.component.d.ts +30 -0
  461. package/lib/tsi-components/input-components/tsi-currency-other-input/tsi-currency-other-input.component.d.ts +18 -0
  462. package/lib/tsi-components/input-components/tsi-currency-societe-input/tsi-currency-societe-input.component.d.ts +21 -0
  463. package/lib/tsi-components/input-components/tsi-date-picker/tsi-date-picker.component.d.ts +38 -0
  464. package/lib/tsi-components/input-components/tsi-decimal-input/tsi-decimal-input.component.d.ts +14 -0
  465. package/lib/tsi-components/input-components/tsi-file-manager/tsi-file-manager.component.d.ts +45 -0
  466. package/lib/tsi-components/input-components/tsi-formula-box/tsi-formula-box.component.d.ts +17 -0
  467. package/lib/tsi-components/input-components/tsi-integer/tsi-integer.component.d.ts +19 -0
  468. package/lib/tsi-components/input-components/tsi-radio-button/tsi-radio-button.component.d.ts +16 -0
  469. package/lib/tsi-components/input-components/tsi-rate-input/tsi-rate-input.component.d.ts +16 -0
  470. package/lib/tsi-components/input-components/tsi-search-combo/tsi-search-combo.component.d.ts +92 -0
  471. package/lib/tsi-components/input-components/tsi-text-area/tsi-text-area.component.d.ts +17 -0
  472. package/lib/tsi-components/input-components/tsi-text-box/tsi-text-box.component.d.ts +21 -0
  473. package/lib/tsi-components/input-components/tsi-time-picker/tsi-time-picker.component.d.ts +23 -0
  474. package/lib/tsi-components/logout-popup/logout-popup.component.d.ts +5 -0
  475. package/lib/tsi-components/manage-import-export/manage-import-export.component.d.ts +64 -0
  476. package/lib/tsi-components/manage-reporting/add-report-popup/add-report-popup.component.d.ts +151 -0
  477. package/lib/tsi-components/manage-reporting/manage-reporting.component.d.ts +109 -0
  478. package/lib/tsi-components/message-components/tsi-error-message/tsi-error-message.component.d.ts +15 -0
  479. package/lib/tsi-components/message-components/tsi-info-message/tsi-info-message.component.d.ts +13 -0
  480. package/lib/tsi-components/message-components/tsi-redirection-message/tsi-redirection-message.component.d.ts +9 -0
  481. package/lib/tsi-components/message-components/tsi-success-message/tsi-success-message.component.d.ts +13 -0
  482. package/lib/tsi-components/modal-component/modal.component.d.ts +25 -0
  483. package/lib/tsi-components/modal-loader/modal-loader.component.d.ts +27 -0
  484. package/lib/tsi-components/output-components/display-nested-prop/display-nested-prop.component.d.ts +14 -0
  485. package/lib/tsi-components/output-components/tsi-checkbox-display/tsi-checkbox-display.component.d.ts +6 -0
  486. package/lib/tsi-components/output-components/tsi-currency-other-display/tsi-currency-other-display.component.d.ts +7 -0
  487. package/lib/tsi-components/output-components/tsi-currency-societe-display/tsi-currency-societe-display.component.d.ts +19 -0
  488. package/lib/tsi-components/output-components/tsi-date-display/tsi-date-display.component.d.ts +10 -0
  489. package/lib/tsi-components/output-components/tsi-decimal-display/tsi-decimal-display.component.d.ts +9 -0
  490. package/lib/tsi-components/output-components/tsi-display-grid/tsi-display-grid.component.d.ts +41 -0
  491. package/lib/tsi-components/output-components/tsi-generic-grid/tsi-generic-grid.component.d.ts +231 -0
  492. package/lib/tsi-components/output-components/tsi-image-display/tsi-image-display.component.d.ts +46 -0
  493. package/lib/tsi-components/output-components/tsi-integer-display/tsi-integer-display.component.d.ts +6 -0
  494. package/lib/tsi-components/output-components/tsi-label/tsi-label.component.d.ts +8 -0
  495. package/lib/tsi-components/output-components/tsi-label-legend/tsi-label-legend.component.d.ts +6 -0
  496. package/lib/tsi-components/output-components/tsi-legend/tsi-legend.component.d.ts +9 -0
  497. package/lib/tsi-components/output-components/tsi-paragraph/tsi-paragraph.component.d.ts +6 -0
  498. package/lib/tsi-components/output-components/tsi-rate-display/tsi-rate-display.component.d.ts +10 -0
  499. package/lib/tsi-components/output-components/tsi-time-display/tsi-time-display.component.d.ts +7 -0
  500. package/lib/tsi-components/output-components/tsi-view-grid/tsi-view-grid.component.d.ts +97 -0
  501. package/lib/tsi-components/reporting/reporting.component.d.ts +103 -0
  502. package/lib/tsi-components/spinner/spinner.component.d.ts +8 -0
  503. package/lib/tsi-components/tsi-bubble-info/tsi-bubble-info.component.d.ts +9 -0
  504. package/lib/tsi-components/tsi-calender/context-menu/context-menu.component.d.ts +25 -0
  505. package/lib/tsi-components/tsi-calender/tsi-calender.component.d.ts +50 -0
  506. package/lib/tsi-components/tsi-card/tsi-card.component.d.ts +25 -0
  507. package/lib/tsi-components/tsi-card-list/tsi-card-list.component.d.ts +35 -0
  508. package/lib/tsi-components/tsi-change-password/tsi-change-password.component.d.ts +21 -0
  509. package/lib/tsi-components/tsi-code-generator/tsi-code-generator.component.d.ts +23 -0
  510. package/lib/tsi-components/tsi-divider/tsi-divider.component.d.ts +6 -0
  511. package/lib/tsi-components/tsi-form/tsi-form.component.d.ts +91 -0
  512. package/lib/tsi-components/tsi-form-modal-footer/tsi-form-modal-footer.component.d.ts +8 -0
  513. package/lib/tsi-components/tsi-generic-crud/tsi-generic-crud.component.d.ts +156 -0
  514. package/lib/tsi-components/tsi-generic-form/tsi-generic-form.component.d.ts +28 -0
  515. package/lib/tsi-components/tsi-kanban/tsi-kanban.component.d.ts +68 -0
  516. package/lib/tsi-components/tsi-log-event-history/tsi-log-event-history.component.d.ts +35 -0
  517. package/lib/tsi-components/tsi-modal/tsi-modal.component.d.ts +10 -0
  518. package/lib/tsi-components/tsi-modal-footer/tsi-modal-footer.component.d.ts +38 -0
  519. package/lib/tsi-components/tsi-modal-header/tsi-modal-header.component.d.ts +19 -0
  520. package/lib/tsi-components/tsi-notes-avertir/tsi-notes-avertir.component.d.ts +13 -0
  521. package/lib/tsi-components/tsi-notes-createoredit/tsi-notes.component.d.ts +21 -0
  522. package/lib/tsi-components/tsi-notes-grid/tsi-notes-grid.component.d.ts +12 -0
  523. package/lib/tsi-components/tsi-popup-text-viewer/tsi-popup-text-viewer.component.d.ts +41 -0
  524. package/lib/tsi-components/tsi-progress-bar/tsi-progress-bar.component.d.ts +38 -0
  525. package/lib/tsi-components/tsi-search-box/tsi-search-box.component.d.ts +44 -0
  526. package/lib/tsi-components/tsi-send-mail/tsi-send-mail.component.d.ts +21 -0
  527. package/lib/tsi-components/tsi-tab-panel/tsi-tab-panel.component.d.ts +18 -0
  528. package/lib/tsi-components/tsi-tab-view/tsi-tab-view.component.d.ts +17 -0
  529. package/lib/tsi-components/tsi-tenants/tsi-tenants.component.d.ts +39 -0
  530. package/lib/tsi-components/tsi-tooltip/tsi-tooltip.component.d.ts +9 -0
  531. package/lib/tsi-components/tsi-upload-fiche/tsi-upload-fiche.component.d.ts +35 -0
  532. package/lib/tsi-components/tsi-upload-grid/tsi-upload-grid.component.d.ts +13 -0
  533. package/lib/tsi-directives/auto-select.directive.d.ts +9 -0
  534. package/lib/tsi-directives/busy.directive.d.ts +11 -0
  535. package/lib/tsi-directives/dynamic-component-loader/ad.directive.d.ts +8 -0
  536. package/lib/tsi-directives/index.d.ts +7 -0
  537. package/lib/tsi-directives/module-main-parameter.directive.d.ts +8 -0
  538. package/lib/tsi-directives/presentation-designer-base.directive.d.ts +41 -0
  539. package/lib/tsi-directives/presentation-designer.directive.d.ts +37 -0
  540. package/lib/tsi-directives/validation.directive.d.ts +18 -0
  541. package/lib/tsi-helpers/compoent-reference.helper.d.ts +5 -0
  542. package/lib/tsi-helpers/date-helper.d.ts +6 -0
  543. package/lib/tsi-helpers/export-excel.helper.d.ts +5 -0
  544. package/lib/tsi-helpers/filter-helper.d.ts +12 -0
  545. package/lib/tsi-helpers/grid-col-style.helper.d.ts +5 -0
  546. package/lib/tsi-helpers/guid.helper.d.ts +6 -0
  547. package/lib/tsi-helpers/helpers.d.ts +4 -0
  548. package/lib/tsi-helpers/index.d.ts +12 -0
  549. package/lib/tsi-helpers/mapping-helper.d.ts +5 -0
  550. package/lib/tsi-helpers/object.helper.d.ts +3 -0
  551. package/lib/tsi-helpers/primeng-translate-config.d.ts +54 -0
  552. package/lib/tsi-helpers/storage-manager.d.ts +8 -0
  553. package/lib/tsi-helpers/type-registry.helper.d.ts +34 -0
  554. package/lib/types/enum-description.type.d.ts +3 -0
  555. package/lib/types/index.d.ts +2 -0
  556. package/lib/types/time-only.d.ts +17 -0
  557. package/package.json +24 -0
  558. package/public-api.d.ts +17 -0
@@ -0,0 +1,173 @@
1
+ import { Component } from '@angular/core';
2
+ import { TsiFormComponentBaseComponent } from '../../tsi-base/components/tsi-form-base/tsi-form-base.component';
3
+ import { LocalizationKeys } from '../../consts/localization-key';
4
+ import { InputTypes, Modes } from '../../enums';
5
+ import { EntityInfoWithRelations, UpdateEntityInfoWithRelationsRequest } from '../../models';
6
+ import { TypeRegistryHelper } from '../../tsi-helpers';
7
+ import { appProviders } from '../../consts/app-providers';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../../services";
10
+ import * as i2 from "primeng/dynamicdialog";
11
+ import * as i3 from "@angular/forms";
12
+ import * as i4 from "primeng/tabview";
13
+ import * as i5 from "primeng/multiselect";
14
+ import * as i6 from "../input-components/editable-grid/editable-grid.component";
15
+ import * as i7 from "../input-components/tsi-search-combo/tsi-search-combo.component";
16
+ import * as i8 from "../input-components/tsi-checkbox/tsi-checkbox.component";
17
+ import * as i9 from "../input-components/tsi-text-box/tsi-text-box.component";
18
+ import * as i10 from "../output-components/tsi-label/tsi-label.component";
19
+ import * as i11 from "../output-components/tsi-view-grid/tsi-view-grid.component";
20
+ import * as i12 from "../tsi-modal-footer/tsi-modal-footer.component";
21
+ import * as i13 from "../tsi-modal-header/tsi-modal-header.component";
22
+ import * as i14 from "../tsi-form/tsi-form.component";
23
+ import * as i15 from "../../pipes/localize.pipe";
24
+ import * as i16 from "../../pipes/modal-label.pipe";
25
+ export class CreateOrEditEntityInformationsComponent extends TsiFormComponentBaseComponent {
26
+ constructor(_entityInformationsService, _errorResponseManagerService, ref, config, _notificationService, _confirmationService, _apiExplorerService) {
27
+ super(ref, config);
28
+ this._entityInformationsService = _entityInformationsService;
29
+ this._errorResponseManagerService = _errorResponseManagerService;
30
+ this.ref = ref;
31
+ this.config = config;
32
+ this._notificationService = _notificationService;
33
+ this._confirmationService = _confirmationService;
34
+ this._apiExplorerService = _apiExplorerService;
35
+ this.entityWithRelations = new EntityInfoWithRelations();
36
+ this.keyColumnOptions = [];
37
+ this.endpointInfos = [];
38
+ this.componentsOptions = TypeRegistryHelper.getBusinessComponentList();
39
+ this.permissionsGridColumns = [
40
+ { header: 'administration_permissions_httpMethod', field: 'httpMethod' },
41
+ { header: 'administration_permissions_route', field: 'route' },
42
+ { header: 'administration_permissions_accessRights', field: 'accessRights' },
43
+ { header: 'administration_permissions_methodName', field: 'methodName' }
44
+ ];
45
+ this.entitiesRelationsColumns = [
46
+ { header: 'administration_entityRelations_entityFrom', field: 'entityFrom', disabled: true },
47
+ { header: 'administration_entityRelations_entityTo', field: 'entityTo' },
48
+ { header: 'administration_entityRelations_logCascade', field: 'logCascade', type: InputTypes.CHECKBOX },
49
+ { header: 'administration_entityRelations_duplicateCascade', field: 'duplicateCascade', type: InputTypes.CHECKBOX },
50
+ { header: 'administration_entityRelations_deleteBehaviour', field: 'deleteBehaviour' }
51
+ ];
52
+ }
53
+ getColonnesByClassNameAsKeyValuePair(className) {
54
+ if (className) {
55
+ this._entityInformationsService.getColonnesByClassNameAsKeyValuePair(className)
56
+ .subscribe(columns => {
57
+ this.keyColumnOptions = columns;
58
+ this.entityWithRelations.relations.map(er => er.entityFrom = className);
59
+ });
60
+ }
61
+ }
62
+ getPermissionsByClassName() {
63
+ if (this.id) {
64
+ this._apiExplorerService.getEndpointsInfos(this.id).subscribe({
65
+ next: (endpointsInfos) => {
66
+ if (endpointsInfos && Array.isArray(endpointsInfos) && endpointsInfos.length > 0) {
67
+ this.endpointInfos = endpointsInfos;
68
+ }
69
+ },
70
+ error: (error) => {
71
+ console.error('Error fetching permissions:', error);
72
+ this._errorResponseManagerService.showErrorMessage(error);
73
+ }
74
+ });
75
+ }
76
+ }
77
+ ngOnInit() {
78
+ super.ngOnInit();
79
+ this.getColonnesByClassNameAsKeyValuePair(this.id);
80
+ this.getPermissionsByClassName();
81
+ if ((this.mode === Modes.edit || this.mode === Modes.delete || this.mode === Modes.consult) &&
82
+ this.id !== undefined &&
83
+ this.id !== null) {
84
+ this.isloading = true;
85
+ this._entityInformationsService.getEntityInformationsAndRelations(this.id).subscribe({
86
+ next: (data) => {
87
+ this.entityWithRelations = data;
88
+ },
89
+ error: (error) => {
90
+ console.error('Error fetching entityInformation:', error);
91
+ this._errorResponseManagerService.showErrorMessage(error);
92
+ },
93
+ complete: () => {
94
+ this.isloading = false;
95
+ }
96
+ });
97
+ }
98
+ }
99
+ save() {
100
+ super.save();
101
+ this.saving = false;
102
+ this.isloading = true;
103
+ if (this.mode === Modes.create) {
104
+ this._entityInformationsService.create(this.entityWithRelations).subscribe({
105
+ next: () => {
106
+ this._notificationService.info(this.l(LocalizationKeys.savedSuccessfully));
107
+ this.hide(true);
108
+ this.onSave.emit();
109
+ },
110
+ error: (response) => {
111
+ this.saving = false;
112
+ this.isloading = false;
113
+ this._errorResponseManagerService.showErrorMessage(response);
114
+ },
115
+ complete: () => {
116
+ this.isloading = false;
117
+ }
118
+ });
119
+ }
120
+ else if (this.mode === Modes.edit
121
+ && this.entityWithRelations
122
+ && this.entityWithRelations.entity.className) {
123
+ let updateEntityInfoWithRelationsRequest = new UpdateEntityInfoWithRelationsRequest(this.id ?? '', this.entityWithRelations.entity, this.entityWithRelations.relations);
124
+ this._entityInformationsService.update(updateEntityInfoWithRelationsRequest).subscribe({
125
+ next: () => {
126
+ this._notificationService.info(this.l(LocalizationKeys.updatedSuccessfully));
127
+ this.hide(true);
128
+ this.onSave.emit();
129
+ },
130
+ error: (response) => {
131
+ this.saving = false;
132
+ this.isloading = false;
133
+ this._errorResponseManagerService.showErrorMessage(response);
134
+ },
135
+ complete: () => {
136
+ this.isloading = false;
137
+ }
138
+ });
139
+ }
140
+ else if (this.mode === Modes.delete) {
141
+ this._confirmationService.confirm(LocalizationKeys.confirmDelete, undefined, (result) => {
142
+ if (result
143
+ && this.entityWithRelations.entity.className) {
144
+ this._entityInformationsService.delete(this.id ?? '').subscribe({
145
+ next: () => {
146
+ this._notificationService.success(this.l(LocalizationKeys.deletedSuccessfully));
147
+ this.hide(true);
148
+ this.onSave.emit();
149
+ },
150
+ error: (response) => {
151
+ this._errorResponseManagerService.showErrorMessage(response);
152
+ this.saving = false;
153
+ this.isloading = false;
154
+ },
155
+ complete: () => {
156
+ this.isloading = false;
157
+ }
158
+ });
159
+ }
160
+ });
161
+ }
162
+ }
163
+ onAddRelation() {
164
+ this.entityWithRelations.relations.map(er => er.entityFrom = this.entityWithRelations.entity.className ?? '');
165
+ }
166
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditEntityInformationsComponent, deps: [{ token: i1.EntityConfigurationService }, { token: i1.ErrorResponseManagerService }, { token: i2.DynamicDialogRef }, { token: i2.DynamicDialogConfig }, { token: i1.TsiNotificationService }, { token: i1.TsiConfirmationService }, { token: i1.ApiExplorerService }], target: i0.ɵɵFactoryTarget.Component }); }
167
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateOrEditEntityInformationsComponent, selector: "app-create-or-edit-entity-informations", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel : mode : 'administration_entityRelations_title' | localize\"\r\n (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n\r\n <p-tabView>\r\n <p-tabPanel [header]=\"'administration_tab_entityInformation' | localize\">\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_className'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'ClassName'\"\r\n [(inputField)]=\"entityWithRelations.entity.className\"\r\n (inputFieldChange)=\"getColonnesByClassNameAsKeyValuePair($event)\"\r\n [disabled]=\"isDeleteMode() || isConsultMode() || isEditMode()\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_formName'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.formName\" id-field=\"key\" label-field=\"value\" [showClear]=\"true\"\r\n [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_listComponent'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.listComponent\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_logged'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-8\" [inputName]=\"'Logged'\" [(inputField)]=\"entityWithRelations.entity.logged\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_listRoute'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'ListRoute'\"\r\n [(inputField)]=\"entityWithRelations.entity.listRoute\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_formRoute'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'FormRoute'\"\r\n [(inputField)]=\"entityWithRelations.entity.formRoute\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_discriminatorPropertyName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DiscriminatorPropertyName'\"\r\n [(inputField)]=\"entityWithRelations.entity.discriminatorPropertyName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_discriminatorClassName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DiscriminatorClassName'\"\r\n [(inputField)]=\"entityWithRelations.entity.discriminatorClassName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_keyColumns'\"></Tsi-Label>\r\n <div class=\"col-8\">\r\n <p-multiSelect [options]=\"keyColumnOptions\" [(ngModel)]=\"entityWithRelations.entity.keyColumns\"\r\n optionValue=\"key\" optionLabel=\"value\" display=\"chip\" defaultLabel=\"Select columns\" [filter]=\"true\">\r\n </p-multiSelect>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_statusColumnName'\"></Tsi-Label>\r\n \r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.statusColumnName\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_isWorkflow'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-8\" [inputName]=\"'IsWorkflow'\"\r\n [(inputField)]=\"entityWithRelations.entity.isWorkflow\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_defaultStatus'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DefaultStatus'\"\r\n [(inputField)]=\"entityWithRelations.entity.defaultStatus\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_statusEnumName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'StatusEnumName'\"\r\n [(inputField)]=\"entityWithRelations.entity.statusEnumName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_advancedSearchComponent'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.advancedSearchComponent\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardHeaderPhotoColumn'\"></Tsi-Label>\r\n\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardHeaderPhotoColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardTitleColumn'\"></Tsi-Label>\r\n \r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardTitleColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardSubHeaderColumn'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardSubHeaderColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardDescriptionColumn'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardDescriptionColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </fieldset>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_relations' | localize\">\r\n <div class=\"grid\">\r\n <Tsi-Generic-Editable-Grid [columns]=\"entitiesRelationsColumns\" [gridData]=\"entityWithRelations.relations\"\r\n [parent]=\"this\" (addedRowEventEmitter)=\"onAddRelation()\" [showAddButton]=\"isEditMode()\">\r\n </Tsi-Generic-Editable-Grid>\r\n </div>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_permissions' | localize\">\r\n <div class=\"grid\">\r\n <tsi-view-grid [header]=\"entityWithRelations.entity.className ?? ''\" class=\"col-12 mb-3\"\r\n [columns]=\"permissionsGridColumns\" [getDataFromApi]=\"false\" [gridData]=\"endpointInfos\">\r\n </tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n <Tsi-Modal-Footer [isConsult]=\"isConsultMode()\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\">\r\n </Tsi-Modal-Footer>\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i4.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i5.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: i6.EditableGridComponent, selector: "Tsi-Generic-Editable-Grid", inputs: ["selectedItems", "configuration", "key", "items", "events", "showAddButton", "showDeleteButton", "showEditButton", "showRowSummary", "scrollHeight", "rowPerPage", "pageSize", "columns", "gridData", "isTableLoading", "parent", "showSaveButton", "showActionColumn", "enableRowDisabling", "rowSummaryConfig", "showHaveSumary", "showRowSumary", "selectKeyOnly", "selectionMode", "showConsultButton", "disabled", "editableGridBusinessClass", "orderColumn", "deleteLineButtonDisabled", "id"], outputs: ["itemsSave", "refreshEventEmitter", "saveDataEventEmitter", "rowChangedEventEmitter", "selectedRowEventEmitter", "addedRowEventEmitter", "focusOutEventEmitter", "cellChanged", "rowDeletedEventEmitter", "selectedItemsChange", "onRowSelect", "focusOutRow", "onConsultClicked"] }, { kind: "component", type: i7.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "currentRowItem", "datasource", "bind", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick"] }, { kind: "component", type: i8.TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: i9.TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i10.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i11.TsiViewGridComponent, selector: "tsi-view-grid", inputs: ["columns", "gridConfiguration", "viewComponent", "crudService", "header", "modalSize", "showConsultButton", "showSearchField", "searchFields", "formEndpoint", "formName", "id", "showImportExportButton", "getDataFromApi", "gridData", "isSearchButtonDisabled", "selectKeyOnly", "selectionMode", "selectedItems", "key", "showGlobalSearch", "showExportButton", "showCalenderView", "calenderSchema", "showHeaderFilters", "showFilterButton", "selectAll", "checkedByField", "searchOnInit"], outputs: ["summariesChange", "selectedItemsChange", "buttonColumnClicked", "searchFieldsValueChanged", "getAllPagedResultChanged"] }, { kind: "component", type: i12.TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate"], outputs: ["onCancelClick", "onSaveClick"] }, { kind: "component", type: i13.TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: i14.TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: i15.LocalizePipe, name: "localize" }, { kind: "pipe", type: i16.ModalLabelPipe, name: "modalLabel" }] }); }
168
+ }
169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditEntityInformationsComponent, decorators: [{
170
+ type: Component,
171
+ args: [{ selector: 'app-create-or-edit-entity-informations', providers: [...appProviders], template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel : mode : 'administration_entityRelations_title' | localize\"\r\n (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n\r\n <p-tabView>\r\n <p-tabPanel [header]=\"'administration_tab_entityInformation' | localize\">\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_className'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'ClassName'\"\r\n [(inputField)]=\"entityWithRelations.entity.className\"\r\n (inputFieldChange)=\"getColonnesByClassNameAsKeyValuePair($event)\"\r\n [disabled]=\"isDeleteMode() || isConsultMode() || isEditMode()\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_formName'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.formName\" id-field=\"key\" label-field=\"value\" [showClear]=\"true\"\r\n [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_listComponent'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.listComponent\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_logged'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-8\" [inputName]=\"'Logged'\" [(inputField)]=\"entityWithRelations.entity.logged\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_listRoute'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'ListRoute'\"\r\n [(inputField)]=\"entityWithRelations.entity.listRoute\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_formRoute'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'FormRoute'\"\r\n [(inputField)]=\"entityWithRelations.entity.formRoute\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_discriminatorPropertyName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DiscriminatorPropertyName'\"\r\n [(inputField)]=\"entityWithRelations.entity.discriminatorPropertyName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_discriminatorClassName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DiscriminatorClassName'\"\r\n [(inputField)]=\"entityWithRelations.entity.discriminatorClassName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_keyColumns'\"></Tsi-Label>\r\n <div class=\"col-8\">\r\n <p-multiSelect [options]=\"keyColumnOptions\" [(ngModel)]=\"entityWithRelations.entity.keyColumns\"\r\n optionValue=\"key\" optionLabel=\"value\" display=\"chip\" defaultLabel=\"Select columns\" [filter]=\"true\">\r\n </p-multiSelect>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_statusColumnName'\"></Tsi-Label>\r\n \r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.statusColumnName\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_isWorkflow'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-8\" [inputName]=\"'IsWorkflow'\"\r\n [(inputField)]=\"entityWithRelations.entity.isWorkflow\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_defaultStatus'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DefaultStatus'\"\r\n [(inputField)]=\"entityWithRelations.entity.defaultStatus\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_statusEnumName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'StatusEnumName'\"\r\n [(inputField)]=\"entityWithRelations.entity.statusEnumName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_advancedSearchComponent'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.advancedSearchComponent\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardHeaderPhotoColumn'\"></Tsi-Label>\r\n\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardHeaderPhotoColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardTitleColumn'\"></Tsi-Label>\r\n \r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardTitleColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardSubHeaderColumn'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardSubHeaderColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardDescriptionColumn'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardDescriptionColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </fieldset>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_relations' | localize\">\r\n <div class=\"grid\">\r\n <Tsi-Generic-Editable-Grid [columns]=\"entitiesRelationsColumns\" [gridData]=\"entityWithRelations.relations\"\r\n [parent]=\"this\" (addedRowEventEmitter)=\"onAddRelation()\" [showAddButton]=\"isEditMode()\">\r\n </Tsi-Generic-Editable-Grid>\r\n </div>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_permissions' | localize\">\r\n <div class=\"grid\">\r\n <tsi-view-grid [header]=\"entityWithRelations.entity.className ?? ''\" class=\"col-12 mb-3\"\r\n [columns]=\"permissionsGridColumns\" [getDataFromApi]=\"false\" [gridData]=\"endpointInfos\">\r\n </tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n <Tsi-Modal-Footer [isConsult]=\"isConsultMode()\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\">\r\n </Tsi-Modal-Footer>\r\n</tsi-form>" }]
172
+ }], ctorParameters: () => [{ type: i1.EntityConfigurationService }, { type: i1.ErrorResponseManagerService }, { type: i2.DynamicDialogRef }, { type: i2.DynamicDialogConfig }, { type: i1.TsiNotificationService }, { type: i1.TsiConfirmationService }, { type: i1.ApiExplorerService }] });
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW9yLWVkaXQtZW50aXR5LWluZm9ybWF0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvY3JlYXRlLW9yLWVkaXQtZW50aXR5LWluZm9ybWF0aW9ucy9jcmVhdGUtb3ItZWRpdC1lbnRpdHktaW5mb3JtYXRpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9jcmVhdGUtb3ItZWRpdC1lbnRpdHktaW5mb3JtYXRpb25zL2NyZWF0ZS1vci1lZGl0LWVudGl0eS1pbmZvcm1hdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUNoSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVMUQsTUFBTSxPQUFPLHVDQUF3QyxTQUFRLDZCQUE2QjtJQXNCeEYsWUFDUywwQkFBc0QsRUFDckQsNEJBQXlELEVBQ2pELEdBQXFCLEVBQ3JCLE1BQTJCLEVBQ25DLG9CQUE0QyxFQUM1QyxvQkFBNEMsRUFDNUMsbUJBQXVDO1FBQy9DLEtB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QUFJLEVBQUUsR0FBRyxFQUFFOzRCQUNULElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7NEJBQ2hGLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ3JCLENBQUM7d0JBQ0QsS0FBSyxFQUFFLENBQUMsUUFBMkIsRUFBRSxFQUFFOzRCQUNyQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7NEJBQzdELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDOzRCQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQzt3QkFDekIsQ0FBQzt3QkFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFOzRCQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO3dCQUN6QixDQUFDO3FCQUNGLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQyxDQUNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUNELGFBQWE7UUFDWCxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEgsQ0FBQzsrR0EvSlUsdUNBQXVDO21HQUF2Qyx1Q0FBdUMsaUVBRnZDLENBQUMsR0FBRyxZQUFZLENBQUMsaURDbkI5Qiw4c1hBcU9XOzs0RkRoTkUsdUNBQXVDO2tCQU5uRCxTQUFTOytCQUNFLHdDQUF3QyxhQUd2QyxDQUFDLEdBQUcsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFRzaUZvcm1Db21wb25lbnRCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdHNpLWJhc2UvY29tcG9uZW50cy90c2ktZm9ybS1iYXNlL3RzaS1mb3JtLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uS2V5cyB9IGZyb20gJy4uLy4uL2NvbnN0cy9sb2NhbGl6YXRpb24ta2V5JztcclxuaW1wb3J0IHsgSW5wdXRUeXBlcywgTW9kZXMgfSBmcm9tICcuLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IEdyaWRDb2x1bW4gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgRW50aXR5SW5mb1dpdGhSZWxhdGlvbnMsIFVwZGF0ZUVudGl0eUluZm9XaXRoUmVsYXRpb25zUmVxdWVzdCB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlLCBFcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2UsIFRzaU5vdGlmaWNhdGlvblNlcnZpY2UsIFRzaUNvbmZpcm1hdGlvblNlcnZpY2UsIEFwaUV4cGxvcmVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgVHlwZVJlZ2lzdHJ5SGVscGVyIH0gZnJvbSAnLi4vLi4vdHNpLWhlbHBlcnMnO1xyXG5pbXBvcnQgeyBFbmRwb2ludEluZm9zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uL2NvbmZpZ3VyYXRpb24vZW5kcG9pbnQtaW5mb3MnO1xyXG5pbXBvcnQgeyBhcHBQcm92aWRlcnMgfSBmcm9tICcuLi8uLi9jb25zdHMvYXBwLXByb3ZpZGVycyc7XHJcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dDb25maWcsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWNyZWF0ZS1vci1lZGl0LWVudGl0eS1pbmZvcm1hdGlvbnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtb3ItZWRpdC1lbnRpdHktaW5mb3JtYXRpb25zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY3JlYXRlLW9yLWVkaXQtZW50aXR5LWluZm9ybWF0aW9ucy5jb21wb25lbnQuc2NzcycsXHJcbiAgcHJvdmlkZXJzOiBbLi4uYXBwUHJvdmlkZXJzXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3JlYXRlT3JFZGl0RW50aXR5SW5mb3JtYXRpb25zQ29tcG9uZW50IGV4dGVuZHMgVHNpRm9ybUNvbXBvbmVudEJhc2VDb21wb25lbnQge1xyXG4gIGVudGl0eVdpdGhSZWxhdGlvbnM6IEVudGl0eUluZm9XaXRoUmVsYXRpb25zID0gbmV3IEVudGl0eUluZm9XaXRoUmVsYXRpb25zKCk7XHJcbiAga2V5Q29sdW1uT3B0aW9uczogS2V5VmFsdWU8c3RyaW5nLCBzdHJpbmc+W10gPSBbXTtcclxuICBlbmRwb2ludEluZm9zOiBFbmRwb2ludEluZm9zW10gPSBbXTtcclxuICBjb21wb25lbnRzT3B0aW9uczogS2V5VmFsdWU8c3RyaW5nLCBzdHJpbmc+W10gPSBUeXBlUmVnaXN0cnlIZWxwZXIuZ2V0QnVzaW5lc3NDb21wb25lbnRMaXN0KCk7XHJcblxyXG5cclxuICBwZXJtaXNzaW9uc0dyaWRDb2x1bW5zOiBBcnJheTxHcmlkQ29sdW1uPiA9IFtcclxuICAgIHsgaGVhZGVyOiAnYWRtaW5pc3RyYXRpb25fcGVybWlzc2lvbnNfaHR0cE1ldGhvZCcsIGZpZWxkOiAnaHR0cE1ldGhvZCcgfSxcclxuICAgIHsgaGVhZGVyOiAnYWRtaW5pc3RyYXRpb25fcGVybWlzc2lvbnNfcm91dGUnLCBmaWVsZDogJ3JvdXRlJyB9LFxyXG4gICAgeyBoZWFkZXI6ICdhZG1pbmlzdHJhdGlvbl9wZXJtaXNzaW9uc19hY2Nlc3NSaWdodHMnLCBmaWVsZDogJ2FjY2Vzc1JpZ2h0cycgfSxcclxuICAgIHsgaGVhZGVyOiAnYWRtaW5pc3RyYXRpb25fcGVybWlzc2lvbnNfbWV0aG9kTmFtZScsIGZpZWxkOiAnbWV0aG9kTmFtZScgfVxyXG4gIF07XHJcblxyXG5cclxuICBlbnRpdGllc1JlbGF0aW9uc0NvbHVtbnM6IEFycmF5PEdyaWRDb2x1bW4+ID0gW1xyXG4gICAgeyBoZWFkZXI6ICdhZG1pbmlzdHJhdGlvbl9lbnRpdHlSZWxhdGlvbnNfZW50aXR5RnJvbScsIGZpZWxkOiAnZW50aXR5RnJvbScsIGRpc2FibGVkOiB0cnVlIH0sXHJcbiAgICB7IGhlYWRlcjogJ2FkbWluaXN0cmF0aW9uX2VudGl0eVJlbGF0aW9uc19lbnRpdHlUbycsIGZpZWxkOiAnZW50aXR5VG8nIH0sXHJcbiAgICB7IGhlYWRlcjogJ2FkbWluaXN0cmF0aW9uX2VudGl0eVJlbGF0aW9uc19sb2dDYXNjYWRlJywgZmllbGQ6ICdsb2dDYXNjYWRlJywgdHlwZTogSW5wdXRUeXBlcy5DSEVDS0JPWCB9LFxyXG4gICAgeyBoZWFkZXI6ICdhZG1pbmlzdHJhdGlvbl9lbnRpdHlSZWxhdGlvbnNfZHVwbGljYXRlQ2FzY2FkZScsIGZpZWxkOiAnZHVwbGljYXRlQ2FzY2FkZScsIHR5cGU6IElucHV0VHlwZXMuQ0hFQ0tCT1ggfSxcclxuICAgIHsgaGVhZGVyOiAnYWRtaW5pc3RyYXRpb25fZW50aXR5UmVsYXRpb25zX2RlbGV0ZUJlaGF2aW91cicsIGZpZWxkOiAnZGVsZXRlQmVoYXZpb3VyJyB9XHJcbiAgXVxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIF9lbnRpdHlJbmZvcm1hdGlvbnNTZXJ2aWNlOiBFbnRpdHlDb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZTogRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIHJlZjogRHluYW1pY0RpYWxvZ1JlZixcclxuICAgIHB1YmxpYyBvdmVycmlkZSBjb25maWc6IER5bmFtaWNEaWFsb2dDb25maWcsXHJcbiAgICBwcml2YXRlIF9ub3RpZmljYXRpb25TZXJ2aWNlOiBUc2lOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY29uZmlybWF0aW9uU2VydmljZTogVHNpQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FwaUV4cGxvcmVyU2VydmljZTogQXBpRXhwbG9yZXJTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihyZWYsIGNvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBnZXRDb2xvbm5lc0J5Q2xhc3NOYW1lQXNLZXlWYWx1ZVBhaXIoY2xhc3NOYW1lPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoY2xhc3NOYW1lKSB7XHJcbiAgICAgIHRoaXMuX2VudGl0eUluZm9ybWF0aW9uc1NlcnZpY2UuZ2V0Q29sb25uZXNCeUNsYXNzTmFtZUFzS2V5VmFsdWVQYWlyKGNsYXNzTmFtZSlcclxuICAgICAgICAuc3Vic2NyaWJlKGNvbHVtbnMgPT4ge1xyXG4gICAgICAgICAgdGhpcy5rZXlDb2x1bW5PcHRpb25zID0gY29sdW1ucztcclxuICAgICAgICAgIHRoaXMuZW50aXR5V2l0aFJlbGF0aW9ucy5yZWxhdGlvbnMubWFwKGVyID0+IGVyLmVudGl0eUZyb20gPSBjbGFzc05hbWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRQZXJtaXNzaW9uc0J5Q2xhc3NOYW1lKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaWQpIHtcclxuICAgICAgdGhpcy5fYXBpRXhwbG9yZXJTZXJ2aWNlLmdldEVuZHBvaW50c0luZm9zKHRoaXMuaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGVuZHBvaW50c0luZm9zKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZW5kcG9pbnRzSW5mb3MgJiYgQXJyYXkuaXNBcnJheShlbmRwb2ludHNJbmZvcykgJiYgZW5kcG9pbnRzSW5mb3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmVuZHBvaW50SW5mb3MgPSBlbmRwb2ludHNJbmZvcztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHBlcm1pc3Npb25zOicsIGVycm9yKTtcclxuICAgICAgICAgIHRoaXMuX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZS5zaG93RXJyb3JNZXNzYWdlKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLmdldENvbG9ubmVzQnlDbGFzc05hbWVBc0tleVZhbHVlUGFpcih0aGlzLmlkKTtcclxuICAgIHRoaXMuZ2V0UGVybWlzc2lvbnNCeUNsYXNzTmFtZSgpO1xyXG4gICAgaWYgKFxyXG4gICAgICAodGhpcy5tb2RlID09PSBNb2Rlcy5lZGl0IHx8IHRoaXMubW9kZSA9PT0gTW9kZXMuZGVsZXRlIHx8IHRoaXMubW9kZSA9PT0gTW9kZXMuY29uc3VsdCkgJiZcclxuICAgICAgdGhpcy5pZCAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgIHRoaXMuaWQgIT09IG51bGxcclxuICAgICkge1xyXG4gICAgICB0aGlzLmlzbG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuX2VudGl0eUluZm9ybWF0aW9uc1NlcnZpY2UuZ2V0RW50aXR5SW5mb3JtYXRpb25zQW5kUmVsYXRpb25zKHRoaXMuaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcclxuICAgICAgICAgIHRoaXMuZW50aXR5V2l0aFJlbGF0aW9ucyA9IGRhdGE7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBlbnRpdHlJbmZvcm1hdGlvbjonLCBlcnJvcik7XHJcbiAgICAgICAgICB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2Uuc2hvd0Vycm9yTWVzc2FnZShlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgc2F2ZSgpOiB2b2lkIHtcclxuICAgIHN1cGVyLnNhdmUoKVxyXG4gICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNsb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5tb2RlID09PSBNb2Rlcy5jcmVhdGUpIHtcclxuICAgICAgdGhpcy5fZW50aXR5SW5mb3JtYXRpb25zU2VydmljZS5jcmVhdGUodGhpcy5lbnRpdHlXaXRoUmVsYXRpb25zKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2UuaW5mbyh0aGlzLmwoTG9jYWxpemF0aW9uS2V5cy5zYXZlZFN1Y2Nlc3NmdWxseSkpO1xyXG4gICAgICAgICAgdGhpcy5oaWRlKHRydWUpO1xyXG4gICAgICAgICAgdGhpcy5vblNhdmUuZW1pdCgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UocmVzcG9uc2UpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmIChcclxuICAgICAgdGhpcy5tb2RlID09PSBNb2Rlcy5lZGl0XHJcbiAgICAgICYmIHRoaXMuZW50aXR5V2l0aFJlbGF0aW9uc1xyXG4gICAgICAmJiB0aGlzLmVudGl0eVdpdGhSZWxhdGlvbnMuZW50aXR5LmNsYXNzTmFtZVxyXG4gICAgKSB7XHJcbiAgICAgIGxldCB1cGRhdGVFbnRpdHlJbmZvV2l0aFJlbGF0aW9uc1JlcXVlc3QgPSBuZXcgVXBkYXRlRW50aXR5SW5mb1dpdGhSZWxhdGlvbnNSZXF1ZXN0KHRoaXMuaWQgPz8gJycsIHRoaXMuZW50aXR5V2l0aFJlbGF0aW9ucy5lbnRpdHksIHRoaXMuZW50aXR5V2l0aFJlbGF0aW9ucy5yZWxhdGlvbnMpO1xyXG4gICAgICB0aGlzLl9lbnRpdHlJbmZvcm1hdGlvbnNTZXJ2aWNlLnVwZGF0ZSh1cGRhdGVFbnRpdHlJbmZvV2l0aFJlbGF0aW9uc1JlcXVlc3QpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5pbmZvKHRoaXMubChMb2NhbGl6YXRpb25LZXlzLnVwZGF0ZWRTdWNjZXNzZnVsbHkpKTtcclxuICAgICAgICAgIHRoaXMuaGlkZSh0cnVlKTtcclxuICAgICAgICAgIHRoaXMub25TYXZlLmVtaXQoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZS5zaG93RXJyb3JNZXNzYWdlKHJlc3BvbnNlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAodGhpcy5tb2RlID09PSBNb2Rlcy5kZWxldGUpIHtcclxuICAgICAgdGhpcy5fY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKFxyXG4gICAgICAgIExvY2FsaXphdGlvbktleXMuY29uZmlybURlbGV0ZSxcclxuICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICByZXN1bHRcclxuICAgICAgICAgICAgJiYgdGhpcy5lbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5jbGFzc05hbWVcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLl9lbnRpdHlJbmZvcm1hdGlvbnNTZXJ2aWNlLmRlbGV0ZSh0aGlzLmlkID8/ICcnKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2Vzcyh0aGlzLmwoTG9jYWxpemF0aW9uS2V5cy5kZWxldGVkU3VjY2Vzc2Z1bGx5KSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2F2ZS5lbWl0KCk7XHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgb25BZGRSZWxhdGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMuZW50aXR5V2l0aFJlbGF0aW9ucy5yZWxhdGlvbnMubWFwKGVyID0+IGVyLmVudGl0eUZyb20gPSB0aGlzLmVudGl0eVdpdGhSZWxhdGlvbnMuZW50aXR5LmNsYXNzTmFtZSA/PyAnJyk7XHJcbiAgfVxyXG59IiwiPHRzaS1mb3JtIGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKG9uU3VibWl0KT1cInNhdmUoKVwiIFtpc0xvYWRpbmddPVwiaXNsb2FkaW5nXCI+XHJcbiAgPFRzaS1Nb2RhbC1IZWFkZXIgW2lucHV0VGl0bGVdPVwiaGVhZGVyIHwgbW9kYWxMYWJlbCA6IG1vZGUgOiAnYWRtaW5pc3RyYXRpb25fZW50aXR5UmVsYXRpb25zX3RpdGxlJyB8IGxvY2FsaXplXCJcclxuICAgIChvbkNsb3NlQ2xpY2spPVwiaGlkZSgpXCI+XHJcbiAgPC9Uc2ktTW9kYWwtSGVhZGVyPlxyXG5cclxuICA8cC10YWJWaWV3PlxyXG4gICAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInYWRtaW5pc3RyYXRpb25fdGFiX2VudGl0eUluZm9ybWF0aW9uJyB8IGxvY2FsaXplXCI+XHJcbiAgICAgIDxmaWVsZHNldCBbZGlzYWJsZWRdPVwiaXNEZWxldGVNb2RlKCkgfHwgaXNDb25zdWx0TW9kZSgpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTRcIiBbbGFiZWxWYWx1ZV09XCInYWRtaW5pc3RyYXRpb25fZ2VzdGlvbkVudGl0eUluZm9ybWF0aW9uX2NsYXNzTmFtZSdcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgIDxUc2ktVGV4dC1Cb3ggY2xhc3M9XCJjb2wtOFwiIFtpbnB1dE5hbWVdPVwiJ0NsYXNzTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImVudGl0eVdpdGhSZWxhdGlvbnMuZW50aXR5LmNsYXNzTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIChpbnB1dEZpZWxkQ2hhbmdlKT1cImdldENvbG9ubmVzQnlDbGFzc05hbWVBc0tleVZhbHVlUGFpcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGVsZXRlTW9kZSgpIHx8IGlzQ29uc3VsdE1vZGUoKSB8fCBpc0VkaXRNb2RlKClcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLVRleHQtQm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTRcIiBbbGFiZWxWYWx1ZV09XCInYWRtaW5pc3RyYXRpb25fZ2VzdGlvbkVudGl0eUluZm9ybWF0aW9uX2Zvcm1OYW1lJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gY2xhc3M9XCJjb2wtOFwiIFtkYXRhc291cmNlXT1cImNvbXBvbmVudHNPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgWyhiaW5kKV09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5mb3JtTmFtZVwiIGlkLWZpZWxkPVwia2V5XCIgbGFiZWwtZmllbGQ9XCJ2YWx1ZVwiIFtzaG93Q2xlYXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0RlbGV0ZU1vZGUoKSB8fCBpc0NvbnN1bHRNb2RlKClcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLVNlYXJjaC1Db21ibz5cclxuXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBjbGFzcz1cImNvbC00XCJcclxuICAgICAgICAgICAgICAgICAgW2xhYmVsVmFsdWVdPVwiJ2FkbWluaXN0cmF0aW9uX2dlc3Rpb25FbnRpdHlJbmZvcm1hdGlvbl9saXN0Q29tcG9uZW50J1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gY2xhc3M9XCJjb2wtOFwiIFtkYXRhc291cmNlXT1cImNvbXBvbmVudHNPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgWyhiaW5kKV09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5saXN0Q29tcG9uZW50XCIgaWQtZmllbGQ9XCJrZXlcIiBsYWJlbC1maWVsZD1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhcl09XCJ0cnVlXCIgW2Rpc2FibGVkXT1cImlzRGVsZXRlTW9kZSgpIHx8IGlzQ29uc3VsdE1vZGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBjbGFzcz1cImNvbC00XCIgW2xhYmVsVmFsdWVdPVwiJ2FkbWluaXN0cmF0aW9uX2dlc3Rpb25FbnRpdHlJbmZvcm1hdGlvbl9sb2dnZWQnXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUNoZWNrQm94IGNsYXNzPVwiY29sLThcIiBbaW5wdXROYW1lXT1cIidMb2dnZWQnXCIgWyhpbnB1dEZpZWxkKV09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5sb2dnZWRcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgY2xhc3M9XCJjb2wtNFwiIFtsYWJlbFZhbHVlXT1cIidhZG1pbmlzdHJhdGlvbl9nZXN0aW9uRW50aXR5SW5mb3JtYXRpb25fbGlzdFJvdXRlJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1UZXh0LUJveCBjbGFzcz1cImNvbC04XCIgW2lucHV0TmFtZV09XCInTGlzdFJvdXRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiZW50aXR5V2l0aFJlbGF0aW9ucy5lbnRpdHkubGlzdFJvdXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1UZXh0LUJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBjbGFzcz1cImNvbC00XCIgW2xhYmVsVmFsdWVdPVwiJ2FkbWluaXN0cmF0aW9uX2dlc3Rpb25FbnRpdHlJbmZvcm1hdGlvbl9mb3JtUm91dGUnXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVRleHQtQm94IGNsYXNzPVwiY29sLThcIiBbaW5wdXROYW1lXT1cIidGb3JtUm91dGUnXCJcclxuICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5mb3JtUm91dGVcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLVRleHQtQm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgY2xhc3M9XCJjb2wtNFwiXHJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbFZhbHVlXT1cIidhZG1pbmlzdHJhdGlvbl9nZXN0aW9uRW50aXR5SW5mb3JtYXRpb25fZGlzY3JpbWluYXRvclByb3BlcnR5TmFtZSdcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgIDxUc2ktVGV4dC1Cb3ggY2xhc3M9XCJjb2wtOFwiIFtpbnB1dE5hbWVdPVwiJ0Rpc2NyaW1pbmF0b3JQcm9wZXJ0eU5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5kaXNjcmltaW5hdG9yUHJvcGVydHlOYW1lXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1UZXh0LUJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBjbGFzcz1cImNvbC00XCJcclxuICAgICAgICAgICAgICAgICAgW2xhYmVsVmFsdWVdPVwiJ2FkbWluaXN0cmF0aW9uX2dlc3Rpb25FbnRpdHlJbmZvcm1hdGlvbl9kaXNjcmltaW5hdG9yQ2xhc3NOYW1lJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1UZXh0LUJveCBjbGFzcz1cImNvbC04XCIgW2lucHV0TmFtZV09XCInRGlzY3JpbWluYXRvckNsYXNzTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImVudGl0eVdpdGhSZWxhdGlvbnMuZW50aXR5LmRpc2NyaW1pbmF0b3JDbGFzc05hbWVcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLVRleHQtQm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgY2xhc3M9XCJjb2wtNFwiXHJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbFZhbHVlXT1cIidhZG1pbmlzdHJhdGlvbl9nZXN0aW9uRW50aXR5SW5mb3JtYXRpb25fa2V5Q29sdW1ucydcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgICA8cC1tdWx0aVNlbGVjdCBbb3B0aW9uc109XCJrZXlDb2x1bW5PcHRpb25zXCIgWyhuZ01vZGVsKV09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5rZXlDb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25WYWx1ZT1cImtleVwiIG9wdGlvbkxhYmVsPVwidmFsdWVcIiBkaXNwbGF5PVwiY2hpcFwiIGRlZmF1bHRMYWJlbD1cIlNlbGVjdCBjb2x1bW5zXCIgW2ZpbHRlcl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvcC1tdWx0aVNlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgY2xhc3M9XCJjb2wtNFwiXHJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbFZhbHVlXT1cIidhZG1pbmlzdHJhdGlvbl9nZXN0aW9uRW50aXR5SW5mb3JtYXRpb25fc3RhdHVzQ29sdW1uTmFtZSdcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBjbGFzcz1cImNvbC02XCIgW2RhdGFzb3VyY2VdPVwia2V5Q29sdW1uT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgIFsoYmluZCldPVwiZW50aXR5V2l0aFJlbGF0aW9ucy5lbnRpdHkuc3RhdHVzQ29sdW1uTmFtZVwiIGlkLWZpZWxkPVwia2V5XCIgbGFiZWwtZmllbGQ9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzaG93Q2xlYXJdPVwidHJ1ZVwiIFtkaXNhYmxlZF09XCJpc0RlbGV0ZU1vZGUoKSB8fCBpc0NvbnN1bHRNb2RlKClcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLVNlYXJjaC1Db21ibz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTRcIlxyXG4gICAgICAgICAgICAgICAgICBbbGFiZWxWYWx1ZV09XCInYWRtaW5pc3RyYXRpb25fZ2VzdGlvbkVudGl0eUluZm9ybWF0aW9uX2lzV29ya2Zsb3cnXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUNoZWNrQm94IGNsYXNzPVwiY29sLThcIiBbaW5wdXROYW1lXT1cIidJc1dvcmtmbG93J1wiXHJcbiAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiZW50aXR5V2l0aFJlbGF0aW9ucy5lbnRpdHkuaXNXb3JrZmxvd1wiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgY2xhc3M9XCJjb2wtNFwiXHJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbFZhbHVlXT1cIidhZG1pbmlzdHJhdGlvbl9nZXN0aW9uRW50aXR5SW5mb3JtYXRpb25fZGVmYXVsdFN0YXR1cydcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgIDxUc2ktVGV4dC1Cb3ggY2xhc3M9XCJjb2wtOFwiIFtpbnB1dE5hbWVdPVwiJ0RlZmF1bHRTdGF0dXMnXCJcclxuICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5kZWZhdWx0U3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1UZXh0LUJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTRcIlxyXG4gICAgICAgICAgICAgICAgICBbbGFiZWxWYWx1ZV09XCInYWRtaW5pc3RyYXRpb25fZ2VzdGlvbkVudGl0eUluZm9ybWF0aW9uX3N0YXR1c0VudW1OYW1lJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1UZXh0LUJveCBjbGFzcz1cImNvbC04XCIgW2lucHV0TmFtZV09XCInU3RhdHVzRW51bU5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5zdGF0dXNFbnVtTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktVGV4dC1Cb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgY2xhc3M9XCJjb2wtNFwiXHJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbFZhbHVlXT1cIidhZG1pbmlzdHJhdGlvbl9nZXN0aW9uRW50aXR5SW5mb3JtYXRpb25fYWR2YW5jZWRTZWFyY2hDb21wb25lbnQnXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBjbGFzcz1cImNvbC04XCIgW2RhdGFzb3VyY2VdPVwiY29tcG9uZW50c09wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICBbKGJpbmQpXT1cImVudGl0eVdpdGhSZWxhdGlvbnMuZW50aXR5LmFkdmFuY2VkU2VhcmNoQ29tcG9uZW50XCIgaWQtZmllbGQ9XCJrZXlcIiBsYWJlbC1maWVsZD1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhcl09XCJ0cnVlXCIgW2Rpc2FibGVkXT1cImlzRGVsZXRlTW9kZSgpIHx8IGlzQ29uc3VsdE1vZGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTZcIlxyXG4gICAgICAgICAgICAgICAgICBbbGFiZWxWYWx1ZV09XCInYWRtaW5pc3RyYXRpb25fZ2VzdGlvbkVudGl0eUluZm9ybWF0aW9uX2NhcmRIZWFkZXJQaG90b0NvbHVtbidcIj48L1RzaS1MYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBjbGFzcz1cImNvbC02XCIgW2RhdGFzb3VyY2VdPVwia2V5Q29sdW1uT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgIFsoYmluZCldPVwiZW50aXR5V2l0aFJlbGF0aW9ucy5lbnRpdHkuY2FyZEhlYWRlclBob3RvQ29sdW1uXCIgaWQtZmllbGQ9XCJrZXlcIiBsYWJlbC1maWVsZD1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhcl09XCJ0cnVlXCIgW2Rpc2FibGVkXT1cImlzRGVsZXRlTW9kZSgpIHx8IGlzQ29uc3VsdE1vZGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTZcIlxyXG4gICAgICAgICAgICAgICAgICBbbGFiZWxWYWx1ZV09XCInYWRtaW5pc3RyYXRpb25fZ2VzdGlvbkVudGl0eUluZm9ybWF0aW9uX2NhcmRUaXRsZUNvbHVtbidcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBjbGFzcz1cImNvbC02XCIgW2RhdGFzb3VyY2VdPVwia2V5Q29sdW1uT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgIFsoYmluZCldPVwiZW50aXR5V2l0aFJlbGF0aW9ucy5lbnRpdHkuY2FyZFRpdGxlQ29sdW1uXCIgaWQtZmllbGQ9XCJrZXlcIiBsYWJlbC1maWVsZD1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhcl09XCJ0cnVlXCIgW2Rpc2FibGVkXT1cImlzRGVsZXRlTW9kZSgpIHx8IGlzQ29uc3VsdE1vZGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgY2xhc3M9XCJjb2wtNlwiXHJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbFZhbHVlXT1cIidhZG1pbmlzdHJhdGlvbl9nZXN0aW9uRW50aXR5SW5mb3JtYXRpb25fY2FyZFN1YkhlYWRlckNvbHVtbidcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgIDxUc2ktU2VhcmNoLUNvbWJvIGNsYXNzPVwiY29sLTZcIiBbZGF0YXNvdXJjZV09XCJrZXlDb2x1bW5PcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgWyhiaW5kKV09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5jYXJkU3ViSGVhZGVyQ29sdW1uXCIgaWQtZmllbGQ9XCJrZXlcIiBsYWJlbC1maWVsZD1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhcl09XCJ0cnVlXCIgW2Rpc2FibGVkXT1cImlzRGVsZXRlTW9kZSgpIHx8IGlzQ29uc3VsdE1vZGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTJcIlxyXG4gICAgICAgICAgICAgICAgICBbbGFiZWxWYWx1ZV09XCInYWRtaW5pc3RyYXRpb25fZ2VzdGlvbkVudGl0eUluZm9ybWF0aW9uX2NhcmREZXNjcmlwdGlvbkNvbHVtbidcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgIDxUc2ktU2VhcmNoLUNvbWJvIGNsYXNzPVwiY29sLTZcIiBbZGF0YXNvdXJjZV09XCJrZXlDb2x1bW5PcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgWyhiaW5kKV09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5jYXJkRGVzY3JpcHRpb25Db2x1bW5cIiBpZC1maWVsZD1cImtleVwiIGxhYmVsLWZpZWxkPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICBbc2hvd0NsZWFyXT1cInRydWVcIiBbZGlzYWJsZWRdPVwiaXNEZWxldGVNb2RlKCkgfHwgaXNDb25zdWx0TW9kZSgpXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZmllbGRzZXQ+XHJcbiAgICA8L3AtdGFiUGFuZWw+XHJcbiAgICA8cC10YWJQYW5lbCBbaGVhZGVyXT1cIidhZG1pbmlzdHJhdGlvbl90YWJfcmVsYXRpb25zJyB8IGxvY2FsaXplXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgPFRzaS1HZW5lcmljLUVkaXRhYmxlLUdyaWQgW2NvbHVtbnNdPVwiZW50aXRpZXNSZWxhdGlvbnNDb2x1bW5zXCIgW2dyaWREYXRhXT1cImVudGl0eVdpdGhSZWxhdGlvbnMucmVsYXRpb25zXCJcclxuICAgICAgICAgIFtwYXJlbnRdPVwidGhpc1wiIChhZGRlZFJvd0V2ZW50RW1pdHRlcik9XCJvbkFkZFJlbGF0aW9uKClcIiBbc2hvd0FkZEJ1dHRvbl09XCJpc0VkaXRNb2RlKClcIj5cclxuICAgICAgICA8L1RzaS1HZW5lcmljLUVkaXRhYmxlLUdyaWQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9wLXRhYlBhbmVsPlxyXG4gICAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInYWRtaW5pc3RyYXRpb25fdGFiX3Blcm1pc3Npb25zJyB8IGxvY2FsaXplXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgPHRzaS12aWV3LWdyaWQgW2hlYWRlcl09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5jbGFzc05hbWUgPz8gJydcIiBjbGFzcz1cImNvbC0xMiBtYi0zXCJcclxuICAgICAgICAgIFtjb2x1bW5zXT1cInBlcm1pc3Npb25zR3JpZENvbHVtbnNcIiBbZ2V0RGF0YUZyb21BcGldPVwiZmFsc2VcIiBbZ3JpZERhdGFdPVwiZW5kcG9pbnRJbmZvc1wiPlxyXG4gICAgICAgIDwvdHNpLXZpZXctZ3JpZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3AtdGFiUGFuZWw+XHJcbiAgPC9wLXRhYlZpZXc+XHJcbiAgPFRzaS1Nb2RhbC1Gb290ZXIgW2lzQ29uc3VsdF09XCJpc0NvbnN1bHRNb2RlKClcIiBbY2FuY2VsRGlzYWJsZWRdPVwic2F2aW5nXCIgW3NhdmVEaXNhYmxlZF09XCJpc1N1Ym1pdERpc2FibGVkKClcIlxyXG4gICAgKG9uQ2FuY2VsQ2xpY2spPVwiaGlkZSgpXCI+XHJcbiAgPC9Uc2ktTW9kYWwtRm9vdGVyPlxyXG48L3RzaS1mb3JtPiJdfQ==
@@ -0,0 +1,201 @@
1
+ import { Component } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { TsiFormComponentBaseComponent } from '../../tsi-base/components/tsi-form-base/tsi-form-base.component';
4
+ import { LocalizationKeys } from '../../consts/localization-key';
5
+ import { Modes, TypeImportEnum, InputTypes, CSSUnits } from '../../enums';
6
+ import { ModeleImportCreateRequest } from '../../models';
7
+ import { GridColumnStyleHelper } from '../../tsi-helpers';
8
+ import { ImportExportEndPoints } from '../../end-points/import-export-endpoint';
9
+ import { appProviders } from '../../consts/app-providers';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "../../services";
12
+ import * as i2 from "primeng/dynamicdialog";
13
+ import * as i3 from "@angular/common";
14
+ import * as i4 from "../input-components/editable-grid/editable-grid.component";
15
+ import * as i5 from "../input-components/tsi-search-combo/tsi-search-combo.component";
16
+ import * as i6 from "../input-components/tsi-checkbox/tsi-checkbox.component";
17
+ import * as i7 from "../input-components/tsi-integer/tsi-integer.component";
18
+ import * as i8 from "../input-components/tsi-text-box/tsi-text-box.component";
19
+ import * as i9 from "../output-components/tsi-label/tsi-label.component";
20
+ import * as i10 from "../tsi-modal-footer/tsi-modal-footer.component";
21
+ import * as i11 from "../tsi-modal-header/tsi-modal-header.component";
22
+ import * as i12 from "../tsi-form/tsi-form.component";
23
+ import * as i13 from "../../pipes/modal-label.pipe";
24
+ export class CreateOrEditModeleImportComponent extends TsiFormComponentBaseComponent {
25
+ constructor(_modeleImportService, _notificationService, config, ref) {
26
+ super(ref, config);
27
+ this._modeleImportService = _modeleImportService;
28
+ this._notificationService = _notificationService;
29
+ this.config = config;
30
+ this.ref = ref;
31
+ this.modeleImportDetailColumns = [];
32
+ this.modeleImport = new ModeleImportCreateRequest();
33
+ this.getColonneByClassNameEndPoint = "";
34
+ this.getClassChildsByClassNameEndPoint = "";
35
+ this.modeleImportEndPoints = ImportExportEndPoints;
36
+ this._businnessClassName = "";
37
+ this.showModeleImportDetails = false;
38
+ this.eventsSubjectModeleImportDetail = new Subject();
39
+ this._businnessClassName = config?.data?.businessClass;
40
+ this.getClassChildsByClassNameEndPoint = ImportExportEndPoints.getClassChildsAsKeyValuePair(this._businnessClassName);
41
+ this.initModeleImportDetailColumns();
42
+ this.openedMode = this.config.data?.mode;
43
+ }
44
+ _updateModeleImportFromGrid() {
45
+ this.eventsSubjectModeleImportDetail.next();
46
+ }
47
+ onSaveModeleImportDetails(gridData) {
48
+ this.modeleImport.modeleImportDetails = gridData;
49
+ }
50
+ ngOnInit() {
51
+ super.ngOnInit();
52
+ if (this.config.data != undefined) {
53
+ this.modeleImport.classe = this.config?.data?.businessClass;
54
+ this.modeleImport.form = this.formName;
55
+ if (this.openedMode == Modes.edit && this.config.data?.id != undefined) {
56
+ this._modeleImportService.getById(this.config.data?.id)
57
+ .subscribe({
58
+ next: (data) => {
59
+ this.modeleImport = data;
60
+ this.updateValuesWithParentColumName();
61
+ this.typeImportChange(this.modeleImport.ordreOuTitreColonne);
62
+ }
63
+ });
64
+ }
65
+ }
66
+ }
67
+ updateValuesWithParentColumName() {
68
+ let filtredData = this.modeleImport.modeleImportDetails
69
+ .filter(x => x.nomClasseDetail == undefined || x.nomClasseDetail == '');
70
+ filtredData.forEach(item => {
71
+ item.nomClasseDetail = this._businnessClassName;
72
+ });
73
+ }
74
+ typeImportChange(event) {
75
+ this.initModeleImportDetailColumns();
76
+ if (event == TypeImportEnum.TitreColonne) {
77
+ let index = this.modeleImportDetailColumns.findIndex(x => x.field == "numero");
78
+ if (index != -1) {
79
+ this.modeleImportDetailColumns.splice(index, 1);
80
+ }
81
+ }
82
+ else if (event == TypeImportEnum.OrdreColonne) {
83
+ let index = this.modeleImportDetailColumns.findIndex(x => x.field == "nomColonneFichier");
84
+ if (index != -1) {
85
+ this.modeleImportDetailColumns.splice(index, 1);
86
+ }
87
+ }
88
+ if (event != undefined) {
89
+ this.showModeleImportDetails = true;
90
+ }
91
+ else {
92
+ this.showModeleImportDetails = false;
93
+ }
94
+ }
95
+ initModeleImportDetailColumns() {
96
+ this.modeleImportDetailColumns = [
97
+ {
98
+ field: "nomClasseDetail",
99
+ header: "Nom Classe Detail",
100
+ type: InputTypes.SEARCH_COMBO,
101
+ listSourceUrl: this.getClassChildsByClassNameEndPoint,
102
+ idField: "value",
103
+ labelField: "value",
104
+ isFiltered: false,
105
+ watchForChanges: true,
106
+ style: GridColumnStyleHelper.createWidthStyle(CSSUnits.VW, 20)
107
+ },
108
+ {
109
+ field: "colonneClasse",
110
+ header: "Colonne Classe",
111
+ type: InputTypes.SEARCH_COMBO,
112
+ listSourceUrl: this.buildGetChildClassColumns,
113
+ idField: "value",
114
+ labelField: "value",
115
+ isFiltered: false,
116
+ },
117
+ {
118
+ field: "numero",
119
+ header: "Ordre",
120
+ type: InputTypes.INTEGER,
121
+ watchForChanges: true
122
+ },
123
+ {
124
+ field: "nomColonneFichier",
125
+ header: "Nom Colonne Fichier",
126
+ type: InputTypes.TEXT_BOX,
127
+ watchForChanges: true
128
+ },
129
+ {
130
+ field: "nomColonneClefEtrangere",
131
+ header: "Nom Colonne Cle Etrangère",
132
+ watchForChanges: true,
133
+ type: InputTypes.SEARCH_COMBO,
134
+ listSourceUrl: this.buildGetColummnForForeignKeyClass,
135
+ idField: "key",
136
+ labelField: "value",
137
+ isFiltered: false,
138
+ },
139
+ ];
140
+ }
141
+ buildGetColummnForForeignKeyClass(currentRowItem) {
142
+ let columnName = currentRowItem?.colonneClasse ?? "";
143
+ let parentEntityName = currentRowItem?.nomClasseDetail ?? "";
144
+ return ImportExportEndPoints.getColonnesByClassNameAsKeyValuePair(parentEntityName, columnName);
145
+ }
146
+ buildGetChildClassColumns(currentRowItem) {
147
+ let parentEntityName = currentRowItem?.nomClasseDetail ?? "";
148
+ // if (parentEntityName?.endsWith('s')) {
149
+ // parentEntityName = parentEntityName.slice(0, -1);
150
+ // }
151
+ return ImportExportEndPoints.getColonnesByClassNameAsKeyValuePair(parentEntityName, "");
152
+ }
153
+ buildGetChildChildClass(currentRowItem) {
154
+ let className = currentRowItem?.nomClasseDetail;
155
+ if (className?.endsWith('s')) {
156
+ className = className.slice(0, -1);
157
+ }
158
+ return ImportExportEndPoints.getClassChildsAsKeyValuePair(className);
159
+ }
160
+ deleteValueFromParentModel() {
161
+ let filtredData = this.modeleImport.modeleImportDetails
162
+ .filter(x => x.nomClasseDetail == this._businessClass);
163
+ filtredData.forEach(item => {
164
+ item.nomClasseDetail = undefined;
165
+ });
166
+ }
167
+ save() {
168
+ super.save();
169
+ this.saving = true;
170
+ this.isloading = true;
171
+ this._updateModeleImportFromGrid();
172
+ this.deleteValueFromParentModel();
173
+ if (this.openedMode == Modes.create) {
174
+ this._modeleImportService.create(this.modeleImport).subscribe({
175
+ next: () => {
176
+ this._notificationService.success(this.l(LocalizationKeys.savedSuccessfully));
177
+ this.hide(true);
178
+ this.onSave.emit();
179
+ this.isloading = false;
180
+ }
181
+ });
182
+ }
183
+ else if (this.openedMode == Modes.edit && this.modeleImport.uid != undefined) {
184
+ this._modeleImportService.update(this.modeleImport, this.modeleImport.uid).subscribe({
185
+ next: (data) => {
186
+ this._notificationService.success(this.l(LocalizationKeys.updatedSuccessfully));
187
+ this.hide(true);
188
+ this.onSave.emit();
189
+ this.isloading = false;
190
+ }
191
+ });
192
+ }
193
+ }
194
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditModeleImportComponent, deps: [{ token: i1.ModeleImportService }, { token: i1.TsiNotificationService }, { token: i2.DynamicDialogConfig }, { token: i2.DynamicDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
195
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateOrEditModeleImportComponent, selector: "app-create-or-edit-modele-import", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" [isLoading]=\"isloading\" autocomplete=\"off\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel : mode : 'Mod\u00E8le import'\"\r\n (onCloseClick)=\"hide()\"></Tsi-Modal-Header>\r\n\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-8\">\r\n <div class=\"grid\">\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Modele'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.nom\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'nomModele'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Form'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.form\" [disabled]=\"true\" class=\"col-9\"\r\n [inputName]=\"'nomForm'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Classe'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.classe\" [disabled]=\"true\" class=\"col-9\"\r\n [inputName]=\"'nomClasse'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Premiere Ligne Import'\"></Tsi-Label>\r\n <Tsi-Integer [(inputField)]=\"modeleImport.premiereLigneImport\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'premiereLigneImport'\"></Tsi-Integer>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Derniere Ligne Import'\"></Tsi-Label>\r\n <Tsi-Integer [(inputField)]=\"modeleImport.dernierLigneImport\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'dernierLigneImport'\"></Tsi-Integer>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Arrete lors de premier erreur '\"></Tsi-Label>\r\n <Tsi-CheckBox [(inputField)]=\"modeleImport.arretePremierErreur\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'arretePremierErreur'\"></Tsi-CheckBox>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Ordre Ou Titre Colonne'\"></Tsi-Label>\r\n <Tsi-Search-Combo \r\n (bindChange)=\"typeImportChange($event)\"\r\n class=\"col-9\" [listSourceUrl]=\"\r\n modeleImportEndPoints.getTypeNatureDocumentEnum()\r\n \" [(bind)]=\"modeleImport.ordreOuTitreColonne\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div style=\"max-width: 1600px; overflow: auto;\" *ngIf=\"showModeleImportDetails\">\r\n <Tsi-Generic-Editable-Grid [gridData]=\"modeleImport.modeleImportDetails\"\r\n [events]=\"eventsSubjectModeleImportDetail.asObservable()\"\r\n (rowDeletedEventEmitter)=\"onSaveModeleImportDetails($event)\"\r\n [columns]=\"modeleImportDetailColumns\" [parent]=\"this\" [showSaveButton]=\"false\" [key]=\"'numLigne'\">\r\n </Tsi-Generic-Editable-Grid>\r\n </div>\r\n\r\n\r\n </fieldset>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\" (onCancelClick)=\"hide()\"\r\n (onSaveClick)=\"save()\"></Tsi-Modal-Footer>\r\n\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.EditableGridComponent, selector: "Tsi-Generic-Editable-Grid", inputs: ["selectedItems", "configuration", "key", "items", "events", "showAddButton", "showDeleteButton", "showEditButton", "showRowSummary", "scrollHeight", "rowPerPage", "pageSize", "columns", "gridData", "isTableLoading", "parent", "showSaveButton", "showActionColumn", "enableRowDisabling", "rowSummaryConfig", "showHaveSumary", "showRowSumary", "selectKeyOnly", "selectionMode", "showConsultButton", "disabled", "editableGridBusinessClass", "orderColumn", "deleteLineButtonDisabled", "id"], outputs: ["itemsSave", "refreshEventEmitter", "saveDataEventEmitter", "rowChangedEventEmitter", "selectedRowEventEmitter", "addedRowEventEmitter", "focusOutEventEmitter", "cellChanged", "rowDeletedEventEmitter", "selectedItemsChange", "onRowSelect", "focusOutRow", "onConsultClicked"] }, { kind: "component", type: i5.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "currentRowItem", "datasource", "bind", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick"] }, { kind: "component", type: i6.TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: i7.TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i8.TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i9.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i10.TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate"], outputs: ["onCancelClick", "onSaveClick"] }, { kind: "component", type: i11.TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: i12.TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: i13.ModalLabelPipe, name: "modalLabel" }] }); }
196
+ }
197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditModeleImportComponent, decorators: [{
198
+ type: Component,
199
+ args: [{ selector: 'app-create-or-edit-modele-import', providers: [...appProviders], template: "<tsi-form class=\"form-horizontal\" [isLoading]=\"isloading\" autocomplete=\"off\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel : mode : 'Mod\u00E8le import'\"\r\n (onCloseClick)=\"hide()\"></Tsi-Modal-Header>\r\n\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-8\">\r\n <div class=\"grid\">\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Modele'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.nom\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'nomModele'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Form'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.form\" [disabled]=\"true\" class=\"col-9\"\r\n [inputName]=\"'nomForm'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Classe'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.classe\" [disabled]=\"true\" class=\"col-9\"\r\n [inputName]=\"'nomClasse'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Premiere Ligne Import'\"></Tsi-Label>\r\n <Tsi-Integer [(inputField)]=\"modeleImport.premiereLigneImport\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'premiereLigneImport'\"></Tsi-Integer>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Derniere Ligne Import'\"></Tsi-Label>\r\n <Tsi-Integer [(inputField)]=\"modeleImport.dernierLigneImport\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'dernierLigneImport'\"></Tsi-Integer>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Arrete lors de premier erreur '\"></Tsi-Label>\r\n <Tsi-CheckBox [(inputField)]=\"modeleImport.arretePremierErreur\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'arretePremierErreur'\"></Tsi-CheckBox>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Ordre Ou Titre Colonne'\"></Tsi-Label>\r\n <Tsi-Search-Combo \r\n (bindChange)=\"typeImportChange($event)\"\r\n class=\"col-9\" [listSourceUrl]=\"\r\n modeleImportEndPoints.getTypeNatureDocumentEnum()\r\n \" [(bind)]=\"modeleImport.ordreOuTitreColonne\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div style=\"max-width: 1600px; overflow: auto;\" *ngIf=\"showModeleImportDetails\">\r\n <Tsi-Generic-Editable-Grid [gridData]=\"modeleImport.modeleImportDetails\"\r\n [events]=\"eventsSubjectModeleImportDetail.asObservable()\"\r\n (rowDeletedEventEmitter)=\"onSaveModeleImportDetails($event)\"\r\n [columns]=\"modeleImportDetailColumns\" [parent]=\"this\" [showSaveButton]=\"false\" [key]=\"'numLigne'\">\r\n </Tsi-Generic-Editable-Grid>\r\n </div>\r\n\r\n\r\n </fieldset>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\" (onCancelClick)=\"hide()\"\r\n (onSaveClick)=\"save()\"></Tsi-Modal-Footer>\r\n\r\n</tsi-form>" }]
200
+ }], ctorParameters: () => [{ type: i1.ModeleImportService }, { type: i1.TsiNotificationService }, { type: i2.DynamicDialogConfig }, { type: i2.DynamicDialogRef }] });
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW9yLWVkaXQtbW9kZWxlLWltcG9ydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvY3JlYXRlLW9yLWVkaXQtbW9kZWxlLWltcG9ydC9jcmVhdGUtb3ItZWRpdC1tb2RlbGUtaW1wb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9jcmVhdGUtb3ItZWRpdC1tb2RlbGUtaW1wb3J0L2NyZWF0ZS1vci1lZGl0LW1vZGVsZS1pbXBvcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFMUUsT0FBTyxFQUFFLHlCQUF5QixFQUFzQixNQUFNLGNBQWMsQ0FBQztBQUU3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVMxRCxNQUFNLE9BQU8saUNBQWtDLFNBQVEsNkJBQTZCO0lBWWxGLFlBQW9CLG9CQUF5QyxFQUNuRCxvQkFBNEMsRUFDcEMsTUFB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QUFHLEtBQUssQ0FBQztnQkFDekIsQ0FBQzthQUNGLENBQ0YsQ0FBQTtRQUNILENBQUM7SUFDSCxDQUFDOytHQXpMVSxpQ0FBaUM7bUdBQWpDLGlDQUFpQywyREFGakMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxpRENqQjlCLDh1R0E4RFc7OzRGRDNDRSxpQ0FBaUM7a0JBTjdDLFNBQVM7K0JBQ0Usa0NBQWtDLGFBR2pDLENBQUMsR0FBRyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRzaUZvcm1Db21wb25lbnRCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdHNpLWJhc2UvY29tcG9uZW50cy90c2ktZm9ybS1iYXNlL3RzaS1mb3JtLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uS2V5cyB9IGZyb20gJy4uLy4uL2NvbnN0cy9sb2NhbGl6YXRpb24ta2V5JztcclxuaW1wb3J0IHsgTW9kZXMsIFR5cGVJbXBvcnRFbnVtLCBJbnB1dFR5cGVzLCBDU1NVbml0cyB9IGZyb20gJy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgR3JpZENvbHVtbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBNb2RlbGVJbXBvcnRDcmVhdGVSZXF1ZXN0LCBNb2RlbGVJbXBvcnREZXRhaWwgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBNb2RlbGVJbXBvcnRTZXJ2aWNlLCBUc2lOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBHcmlkQ29sdW1uU3R5bGVIZWxwZXIgfSBmcm9tICcuLi8uLi90c2ktaGVscGVycyc7XHJcbmltcG9ydCB7IEltcG9ydEV4cG9ydEVuZFBvaW50cyB9IGZyb20gJy4uLy4uL2VuZC1wb2ludHMvaW1wb3J0LWV4cG9ydC1lbmRwb2ludCc7XHJcbmltcG9ydCB7IGFwcFByb3ZpZGVycyB9IGZyb20gJy4uLy4uL2NvbnN0cy9hcHAtcHJvdmlkZXJzJztcclxuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jcmVhdGUtb3ItZWRpdC1tb2RlbGUtaW1wb3J0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY3JlYXRlLW9yLWVkaXQtbW9kZWxlLWltcG9ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY3JlYXRlLW9yLWVkaXQtbW9kZWxlLWltcG9ydC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogWy4uLmFwcFByb3ZpZGVyc11cclxufSlcclxuZXhwb3J0IGNsYXNzIENyZWF0ZU9yRWRpdE1vZGVsZUltcG9ydENvbXBvbmVudCBleHRlbmRzIFRzaUZvcm1Db21wb25lbnRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgbW9kZWxlSW1wb3J0RGV0YWlsQ29sdW1uczogQXJyYXk8R3JpZENvbHVtbj4gPSBbXTtcclxuICBtb2RlbGVJbXBvcnQ6IE1vZGVsZUltcG9ydENyZWF0ZVJlcXVlc3QgPSBuZXcgTW9kZWxlSW1wb3J0Q3JlYXRlUmVxdWVzdCgpXHJcbiAgZ2V0Q29sb25uZUJ5Q2xhc3NOYW1lRW5kUG9pbnQ6IHN0cmluZyA9IFwiXCJcclxuICBnZXRDbGFzc0NoaWxkc0J5Q2xhc3NOYW1lRW5kUG9pbnQ6IHN0cmluZyA9IFwiXCJcclxuICBtb2RlbGVJbXBvcnRFbmRQb2ludHMgPSBJbXBvcnRFeHBvcnRFbmRQb2ludHNcclxuICBfYnVzaW5uZXNzQ2xhc3NOYW1lOiBzdHJpbmcgPSBcIlwiXHJcbiAgZXZlbnRzU3ViamVjdE1vZGVsZUltcG9ydERldGFpbDogU3ViamVjdDx2b2lkPjtcclxuICBvcGVuZWRNb2RlOiBhbnlcclxuICBzaG93TW9kZWxlSW1wb3J0RGV0YWlsczogYm9vbGVhbiA9IGZhbHNlXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX21vZGVsZUltcG9ydFNlcnZpY2U6IE1vZGVsZUltcG9ydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9ub3RpZmljYXRpb25TZXJ2aWNlOiBUc2lOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZywgcHVibGljIG92ZXJyaWRlIHJlZj86IER5bmFtaWNEaWFsb2dSZWYsKSB7XHJcbiAgICBzdXBlcihyZWYsIGNvbmZpZyk7XHJcbiAgICB0aGlzLmV2ZW50c1N1YmplY3RNb2RlbGVJbXBvcnREZXRhaWwgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgdGhpcy5fYnVzaW5uZXNzQ2xhc3NOYW1lID0gY29uZmlnPy5kYXRhPy5idXNpbmVzc0NsYXNzXHJcbiAgICB0aGlzLmdldENsYXNzQ2hpbGRzQnlDbGFzc05hbWVFbmRQb2ludCA9IEltcG9ydEV4cG9ydEVuZFBvaW50cy5nZXRDbGFzc0NoaWxkc0FzS2V5VmFsdWVQYWlyKHRoaXMuX2J1c2lubmVzc0NsYXNzTmFtZSlcclxuICAgIHRoaXMuaW5pdE1vZGVsZUltcG9ydERldGFpbENvbHVtbnMoKVxyXG4gICAgdGhpcy5vcGVuZWRNb2RlID0gdGhpcy5jb25maWcuZGF0YT8ubW9kZVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlTW9kZWxlSW1wb3J0RnJvbUdyaWQoKSB7XHJcbiAgICB0aGlzLmV2ZW50c1N1YmplY3RNb2RlbGVJbXBvcnREZXRhaWwubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgb25TYXZlTW9kZWxlSW1wb3J0RGV0YWlscyhncmlkRGF0YTogQXJyYXk8TW9kZWxlSW1wb3J0RGV0YWlsPikge1xyXG4gICAgdGhpcy5tb2RlbGVJbXBvcnQubW9kZWxlSW1wb3J0RGV0YWlscyA9IGdyaWREYXRhXHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KClcclxuICAgIGlmICh0aGlzLmNvbmZpZy5kYXRhICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLm1vZGVsZUltcG9ydC5jbGFzc2UgPSB0aGlzLmNvbmZpZz8uZGF0YT8uYnVzaW5lc3NDbGFzc1xyXG4gICAgICB0aGlzLm1vZGVsZUltcG9ydC5mb3JtID0gdGhpcy5mb3JtTmFtZVxyXG5cclxuICAgICAgaWYgKHRoaXMub3BlbmVkTW9kZSA9PSBNb2Rlcy5lZGl0ICYmIHRoaXMuY29uZmlnLmRhdGE/LmlkICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuX21vZGVsZUltcG9ydFNlcnZpY2UuZ2V0QnlJZCh0aGlzLmNvbmZpZy5kYXRhPy5pZClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMubW9kZWxlSW1wb3J0ID0gZGF0YVxyXG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWVzV2l0aFBhcmVudENvbHVtTmFtZSgpXHJcbiAgICAgICAgICAgICAgdGhpcy50eXBlSW1wb3J0Q2hhbmdlKHRoaXMubW9kZWxlSW1wb3J0Lm9yZHJlT3VUaXRyZUNvbG9ubmUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVZhbHVlc1dpdGhQYXJlbnRDb2x1bU5hbWUoKSB7XHJcbiAgICBsZXQgZmlsdHJlZERhdGEgPSB0aGlzLm1vZGVsZUltcG9ydC5tb2RlbGVJbXBvcnREZXRhaWxzXHJcbiAgICAgIC5maWx0ZXIoeCA9PiB4Lm5vbUNsYXNzZURldGFpbCA9PSB1bmRlZmluZWQgfHwgeC5ub21DbGFzc2VEZXRhaWwgPT0gJycpXHJcbiAgICBmaWx0cmVkRGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBpdGVtLm5vbUNsYXNzZURldGFpbCA9IHRoaXMuX2J1c2lubmVzc0NsYXNzTmFtZVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHR5cGVJbXBvcnRDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5pbml0TW9kZWxlSW1wb3J0RGV0YWlsQ29sdW1ucygpXHJcbiAgICBpZiAoZXZlbnQgPT0gVHlwZUltcG9ydEVudW0uVGl0cmVDb2xvbm5lKSB7XHJcbiAgICAgIGxldCBpbmRleCA9IHRoaXMubW9kZWxlSW1wb3J0RGV0YWlsQ29sdW1ucy5maW5kSW5kZXgoeCA9PiB4LmZpZWxkID09IFwibnVtZXJvXCIpXHJcbiAgICAgIGlmIChpbmRleCAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMubW9kZWxlSW1wb3J0RGV0YWlsQ29sdW1ucy5zcGxpY2UoaW5kZXgsIDEpXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoZXZlbnQgPT0gVHlwZUltcG9ydEVudW0uT3JkcmVDb2xvbm5lKSB7XHJcbiAgICAgIGxldCBpbmRleCA9IHRoaXMubW9kZWxlSW1wb3J0RGV0YWlsQ29sdW1ucy5maW5kSW5kZXgoeCA9PiB4LmZpZWxkID09IFwibm9tQ29sb25uZUZpY2hpZXJcIilcclxuICAgICAgaWYgKGluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbGVJbXBvcnREZXRhaWxDb2x1bW5zLnNwbGljZShpbmRleCwgMSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGV2ZW50ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnNob3dNb2RlbGVJbXBvcnREZXRhaWxzID0gdHJ1ZVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93TW9kZWxlSW1wb3J0RGV0YWlscyA9IGZhbHNlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRNb2RlbGVJbXBvcnREZXRhaWxDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5tb2RlbGVJbXBvcnREZXRhaWxDb2x1bW5zID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgZmllbGQ6IFwibm9tQ2xhc3NlRGV0YWlsXCIsXHJcbiAgICAgICAgaGVhZGVyOiBcIk5vbSBDbGFzc2UgRGV0YWlsXCIsXHJcbiAgICAgICAgdHlwZTogSW5wdXRUeXBlcy5TRUFSQ0hfQ09NQk8sXHJcbiAgICAgICAgbGlzdFNvdXJjZVVybDogdGhpcy5nZXRDbGFzc0NoaWxkc0J5Q2xhc3NOYW1lRW5kUG9pbnQsXHJcbiAgICAgICAgaWRGaWVsZDogXCJ2YWx1ZVwiLFxyXG4gICAgICAgIGxhYmVsRmllbGQ6IFwidmFsdWVcIixcclxuICAgICAgICBpc0ZpbHRlcmVkOiBmYWxzZSxcclxuICAgICAgICB3YXRjaEZvckNoYW5nZXM6IHRydWUsXHJcbiAgICAgICAgc3R5bGU6IEdyaWRDb2x1bW5TdHlsZUhlbHBlci5jcmVhdGVXaWR0aFN0eWxlKENTU1VuaXRzLlZXLCAyMClcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGZpZWxkOiBcImNvbG9ubmVDbGFzc2VcIixcclxuICAgICAgICBoZWFkZXI6IFwiQ29sb25uZSBDbGFzc2VcIixcclxuICAgICAgICB0eXBlOiBJbnB1dFR5cGVzLlNFQVJDSF9DT01CTyxcclxuICAgICAgICBsaXN0U291cmNlVXJsOiB0aGlzLmJ1aWxkR2V0Q2hpbGRDbGFzc0NvbHVtbnMsXHJcbiAgICAgICAgaWRGaWVsZDogXCJ2YWx1ZVwiLFxyXG4gICAgICAgIGxhYmVsRmllbGQ6IFwidmFsdWVcIixcclxuICAgICAgICBpc0ZpbHRlcmVkOiBmYWxzZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGZpZWxkOiBcIm51bWVyb1wiLFxyXG4gICAgICAgIGhlYWRlcjogXCJPcmRyZVwiLFxyXG4gICAgICAgIHR5cGU6IElucHV0VHlwZXMuSU5URUdFUixcclxuICAgICAgICB3YXRjaEZvckNoYW5nZXM6IHRydWVcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGZpZWxkOiBcIm5vbUNvbG9ubmVGaWNoaWVyXCIsXHJcbiAgICAgICAgaGVhZGVyOiBcIk5vbSBDb2xvbm5lIEZpY2hpZXJcIixcclxuICAgICAgICB0eXBlOiBJbnB1dFR5cGVzLlRFWFRfQk9YLFxyXG4gICAgICAgIHdhdGNoRm9yQ2hhbmdlczogdHJ1ZVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgZmllbGQ6IFwibm9tQ29sb25uZUNsZWZFdHJhbmdlcmVcIixcclxuICAgICAgICBoZWFkZXI6IFwiTm9tIENvbG9ubmUgQ2xlIEV0cmFuZ8OocmVcIixcclxuICAgICAgICB3YXRjaEZvckNoYW5nZXM6IHRydWUsXHJcbiAgICAgICAgdHlwZTogSW5wdXRUeXBlcy5TRUFSQ0hfQ09NQk8sXHJcbiAgICAgICAgbGlzdFNvdXJjZVVybDogdGhpcy5idWlsZEdldENvbHVtbW5Gb3JGb3JlaWduS2V5Q2xhc3MsXHJcbiAgICAgICAgaWRGaWVsZDogXCJrZXlcIixcclxuICAgICAgICBsYWJlbEZpZWxkOiBcInZhbHVlXCIsXHJcbiAgICAgICAgaXNGaWx0ZXJlZDogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICBdXHJcbiAgfVxyXG5cclxuICBidWlsZEdldENvbHVtbW5Gb3JGb3JlaWduS2V5Q2xhc3MoY3VycmVudFJvd0l0ZW06IE1vZGVsZUltcG9ydERldGFpbCkge1xyXG4gICAgbGV0IGNvbHVtbk5hbWUgPSBjdXJyZW50Um93SXRlbT8uY29sb25uZUNsYXNzZSA/PyBcIlwiXHJcbiAgICBsZXQgcGFyZW50RW50aXR5TmFtZSA9IGN1cnJlbnRSb3dJdGVtPy5ub21DbGFzc2VEZXRhaWwgPz8gXCJcIlxyXG4gICAgcmV0dXJuIEltcG9ydEV4cG9ydEVuZFBvaW50cy5nZXRDb2xvbm5lc0J5Q2xhc3NOYW1lQXNLZXlWYWx1ZVBhaXIocGFyZW50RW50aXR5TmFtZSwgY29sdW1uTmFtZSlcclxuICB9XHJcblxyXG4gIGJ1aWxkR2V0Q2hpbGRDbGFzc0NvbHVtbnMoY3VycmVudFJvd0l0ZW06IE1vZGVsZUltcG9ydERldGFpbCkge1xyXG4gICAgbGV0IHBhcmVudEVudGl0eU5hbWUgPSBjdXJyZW50Um93SXRlbT8ubm9tQ2xhc3NlRGV0YWlsID8/IFwiXCJcclxuICAgIC8vIGlmIChwYXJlbnRFbnRpdHlOYW1lPy5lbmRzV2l0aCgncycpKSB7XHJcbiAgICAvLyAgIHBhcmVudEVudGl0eU5hbWUgPSBwYXJlbnRFbnRpdHlOYW1lLnNsaWNlKDAsIC0xKTtcclxuICAgIC8vIH1cclxuICAgIHJldHVybiBJbXBvcnRFeHBvcnRFbmRQb2ludHMuZ2V0Q29sb25uZXNCeUNsYXNzTmFtZUFzS2V5VmFsdWVQYWlyKHBhcmVudEVudGl0eU5hbWUsIFwiXCIpXHJcbiAgfVxyXG5cclxuICBidWlsZEdldENoaWxkQ2hpbGRDbGFzcyhjdXJyZW50Um93SXRlbTogTW9kZWxlSW1wb3J0RGV0YWlsKSB7XHJcbiAgICBsZXQgY2xhc3NOYW1lID0gY3VycmVudFJvd0l0ZW0/Lm5vbUNsYXNzZURldGFpbFxyXG4gICAgaWYgKGNsYXNzTmFtZT8uZW5kc1dpdGgoJ3MnKSkge1xyXG4gICAgICBjbGFzc05hbWUgPSBjbGFzc05hbWUuc2xpY2UoMCwgLTEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIEltcG9ydEV4cG9ydEVuZFBvaW50cy5nZXRDbGFzc0NoaWxkc0FzS2V5VmFsdWVQYWlyKGNsYXNzTmFtZSlcclxuICB9XHJcblxyXG4gIGRlbGV0ZVZhbHVlRnJvbVBhcmVudE1vZGVsKCkge1xyXG4gICAgbGV0IGZpbHRyZWREYXRhID0gdGhpcy5tb2RlbGVJbXBvcnQubW9kZWxlSW1wb3J0RGV0YWlsc1xyXG4gICAgICAuZmlsdGVyKHggPT4geC5ub21DbGFzc2VEZXRhaWwgPT0gdGhpcy5fYnVzaW5lc3NDbGFzcylcclxuICAgIGZpbHRyZWREYXRhLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGl0ZW0ubm9tQ2xhc3NlRGV0YWlsID0gdW5kZWZpbmVkXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgc2F2ZSgpOiB2b2lkIHtcclxuICAgIHN1cGVyLnNhdmUoKVxyXG4gICAgdGhpcy5zYXZpbmcgPSB0cnVlXHJcbiAgICB0aGlzLmlzbG9hZGluZyA9IHRydWVcclxuICAgIHRoaXMuX3VwZGF0ZU1vZGVsZUltcG9ydEZyb21HcmlkKClcclxuICAgIHRoaXMuZGVsZXRlVmFsdWVGcm9tUGFyZW50TW9kZWwoKVxyXG4gICAgaWYgKHRoaXMub3BlbmVkTW9kZSA9PSBNb2Rlcy5jcmVhdGUpIHtcclxuICAgICAgdGhpcy5fbW9kZWxlSW1wb3J0U2VydmljZS5jcmVhdGUodGhpcy5tb2RlbGVJbXBvcnQpLnN1YnNjcmliZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2Vzcyh0aGlzLmwoTG9jYWxpemF0aW9uS2V5cy5zYXZlZFN1Y2Nlc3NmdWxseSkpO1xyXG4gICAgICAgICAgICB0aGlzLmhpZGUodHJ1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMub25TYXZlLmVtaXQoKTtcclxuICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMub3BlbmVkTW9kZSA9PSBNb2Rlcy5lZGl0ICYmIHRoaXMubW9kZWxlSW1wb3J0LnVpZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5fbW9kZWxlSW1wb3J0U2VydmljZS51cGRhdGUodGhpcy5tb2RlbGVJbXBvcnQsIHRoaXMubW9kZWxlSW1wb3J0LnVpZCkuc3Vic2NyaWJlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2Vzcyh0aGlzLmwoTG9jYWxpemF0aW9uS2V5cy51cGRhdGVkU3VjY2Vzc2Z1bGx5KSk7XHJcbiAgICAgICAgICAgIHRoaXMuaGlkZSh0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy5vblNhdmUuZW1pdCgpO1xyXG4gICAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPHRzaS1mb3JtIGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsXCIgW2lzTG9hZGluZ109XCJpc2xvYWRpbmdcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICA8VHNpLU1vZGFsLUhlYWRlciBbaW5wdXRUaXRsZV09XCJoZWFkZXIgfCBtb2RhbExhYmVsIDogbW9kZSA6ICdNb2TDqGxlIGltcG9ydCdcIlxyXG4gICAgKG9uQ2xvc2VDbGljayk9XCJoaWRlKClcIj48L1RzaS1Nb2RhbC1IZWFkZXI+XHJcblxyXG4gICAgPGZpZWxkc2V0IFtkaXNhYmxlZF09XCJpc0RlbGV0ZU1vZGUoKSB8fCBpc0NvbnN1bHRNb2RlKCkgXCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcblxyXG4gICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTNcIiBbbGFiZWxWYWx1ZV09XCInTm9tIE1vZGVsZSdcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgPFRzaS1UZXh0LUJveCBbKGlucHV0RmllbGQpXT1cIm1vZGVsZUltcG9ydC5ub21cIiBbZGlzYWJsZWRdPVwiZmFsc2VcIiBjbGFzcz1cImNvbC05XCJcclxuICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cIidub21Nb2RlbGUnXCI+PC9Uc2ktVGV4dC1Cb3g+XHJcblxyXG4gICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTNcIiBbbGFiZWxWYWx1ZV09XCInTm9tIEZvcm0nXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgIDxUc2ktVGV4dC1Cb3ggWyhpbnB1dEZpZWxkKV09XCJtb2RlbGVJbXBvcnQuZm9ybVwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgY2xhc3M9XCJjb2wtOVwiXHJcbiAgICAgICAgICAgICAgW2lucHV0TmFtZV09XCInbm9tRm9ybSdcIj48L1RzaS1UZXh0LUJveD5cclxuXHJcbiAgICAgICAgICAgIDxUc2ktTGFiZWwgY2xhc3M9XCJjb2wtM1wiIFtsYWJlbFZhbHVlXT1cIidOb20gQ2xhc3NlJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICA8VHNpLVRleHQtQm94IFsoaW5wdXRGaWVsZCldPVwibW9kZWxlSW1wb3J0LmNsYXNzZVwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgY2xhc3M9XCJjb2wtOVwiXHJcbiAgICAgICAgICAgICAgW2lucHV0TmFtZV09XCInbm9tQ2xhc3NlJ1wiPjwvVHNpLVRleHQtQm94PlxyXG5cclxuICAgICAgICAgICAgPFRzaS1MYWJlbCBjbGFzcz1cImNvbC0zXCIgW2xhYmVsVmFsdWVdPVwiJ1ByZW1pZXJlIExpZ25lIEltcG9ydCdcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgPFRzaS1JbnRlZ2VyIFsoaW5wdXRGaWVsZCldPVwibW9kZWxlSW1wb3J0LnByZW1pZXJlTGlnbmVJbXBvcnRcIiBbZGlzYWJsZWRdPVwiZmFsc2VcIiBjbGFzcz1cImNvbC05XCJcclxuICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cIidwcmVtaWVyZUxpZ25lSW1wb3J0J1wiPjwvVHNpLUludGVnZXI+XHJcblxyXG4gICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTNcIiBbbGFiZWxWYWx1ZV09XCInRGVybmllcmUgTGlnbmUgSW1wb3J0J1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICA8VHNpLUludGVnZXIgWyhpbnB1dEZpZWxkKV09XCJtb2RlbGVJbXBvcnQuZGVybmllckxpZ25lSW1wb3J0XCIgW2Rpc2FibGVkXT1cImZhbHNlXCIgY2xhc3M9XCJjb2wtOVwiXHJcbiAgICAgICAgICAgICAgW2lucHV0TmFtZV09XCInZGVybmllckxpZ25lSW1wb3J0J1wiPjwvVHNpLUludGVnZXI+XHJcblxyXG4gICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTNcIiBbbGFiZWxWYWx1ZV09XCInQXJyZXRlIGxvcnMgZGUgcHJlbWllciBlcnJldXIgJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICA8VHNpLUNoZWNrQm94IFsoaW5wdXRGaWVsZCldPVwibW9kZWxlSW1wb3J0LmFycmV0ZVByZW1pZXJFcnJldXJcIiBbZGlzYWJsZWRdPVwiZmFsc2VcIiBjbGFzcz1cImNvbC05XCJcclxuICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cIidhcnJldGVQcmVtaWVyRXJyZXVyJ1wiPjwvVHNpLUNoZWNrQm94PlxyXG5cclxuICAgICAgICAgICAgPFRzaS1MYWJlbCBjbGFzcz1cImNvbC0zXCIgW2xhYmVsVmFsdWVdPVwiJ09yZHJlIE91IFRpdHJlIENvbG9ubmUnXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgIDxUc2ktU2VhcmNoLUNvbWJvIFxyXG4gICAgICAgICAgICAgICAgICAoYmluZENoYW5nZSk9XCJ0eXBlSW1wb3J0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC05XCIgW2xpc3RTb3VyY2VVcmxdPVwiXHJcbiAgICAgICAgICAgICAgICAgIG1vZGVsZUltcG9ydEVuZFBvaW50cy5nZXRUeXBlTmF0dXJlRG9jdW1lbnRFbnVtKClcclxuICAgICAgICAgICAgICAgIFwiIFsoYmluZCldPVwibW9kZWxlSW1wb3J0Lm9yZHJlT3VUaXRyZUNvbG9ubmVcIiBpZC1maWVsZD1cImtleVwiIGxhYmVsLWZpZWxkPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgPC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDxkaXYgc3R5bGU9XCJtYXgtd2lkdGg6IDE2MDBweDsgb3ZlcmZsb3c6IGF1dG87XCIgKm5nSWY9XCJzaG93TW9kZWxlSW1wb3J0RGV0YWlsc1wiPlxyXG4gICAgICA8VHNpLUdlbmVyaWMtRWRpdGFibGUtR3JpZCBbZ3JpZERhdGFdPVwibW9kZWxlSW1wb3J0Lm1vZGVsZUltcG9ydERldGFpbHNcIlxyXG4gICAgICAgIFtldmVudHNdPVwiZXZlbnRzU3ViamVjdE1vZGVsZUltcG9ydERldGFpbC5hc09ic2VydmFibGUoKVwiXHJcbiAgICAgICAgKHJvd0RlbGV0ZWRFdmVudEVtaXR0ZXIpPVwib25TYXZlTW9kZWxlSW1wb3J0RGV0YWlscygkZXZlbnQpXCJcclxuICAgICAgICBbY29sdW1uc109XCJtb2RlbGVJbXBvcnREZXRhaWxDb2x1bW5zXCIgW3BhcmVudF09XCJ0aGlzXCIgW3Nob3dTYXZlQnV0dG9uXT1cImZhbHNlXCIgW2tleV09XCInbnVtTGlnbmUnXCI+XHJcbiAgICAgIDwvVHNpLUdlbmVyaWMtRWRpdGFibGUtR3JpZD5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgPC9maWVsZHNldD5cclxuXHJcbiAgPFRzaS1Nb2RhbC1Gb290ZXIgW2NhbmNlbERpc2FibGVkXT1cInNhdmluZ1wiIFtzYXZlRGlzYWJsZWRdPVwiaXNTdWJtaXREaXNhYmxlZCgpXCIgKG9uQ2FuY2VsQ2xpY2spPVwiaGlkZSgpXCJcclxuICAgIChvblNhdmVDbGljayk9XCJzYXZlKClcIj48L1RzaS1Nb2RhbC1Gb290ZXI+XHJcblxyXG48L3RzaS1mb3JtPiJdfQ==