@alfresco/adf-content-services 8.1.0-15902121227 → 8.1.0-15972188736

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 (408) hide show
  1. package/fesm2022/adf-content-services.mjs +808 -829
  2. package/fesm2022/adf-content-services.mjs.map +1 -1
  3. package/lib/new-version-uploader/new-version-uploader.dialog.scss +1 -1
  4. package/lib/upload/components/base-upload/upload-base.d.ts +1 -1
  5. package/package.json +4 -6
  6. package/esm2022/adf-content-services.mjs +0 -5
  7. package/esm2022/lib/agent/index.mjs +0 -18
  8. package/esm2022/lib/agent/public-api.mjs +0 -18
  9. package/esm2022/lib/agent/services/agent.service.mjs +0 -60
  10. package/esm2022/lib/alfresco-icon/alfresco-icon.component.mjs +0 -27
  11. package/esm2022/lib/api-factories/alfresco-api-no-auth.service.mjs +0 -42
  12. package/esm2022/lib/api-factories/alfresco-api-v2-loader.service.mjs +0 -77
  13. package/esm2022/lib/api-factories/index.mjs +0 -18
  14. package/esm2022/lib/api-factories/public-api.mjs +0 -19
  15. package/esm2022/lib/aspect-list/aspect-list-dialog-data.interface.mjs +0 -18
  16. package/esm2022/lib/aspect-list/aspect-list-dialog.component.mjs +0 -78
  17. package/esm2022/lib/aspect-list/aspect-list.component.mjs +0 -140
  18. package/esm2022/lib/aspect-list/aspect-list.module.mjs +0 -35
  19. package/esm2022/lib/aspect-list/index.mjs +0 -18
  20. package/esm2022/lib/aspect-list/public-api.mjs +0 -24
  21. package/esm2022/lib/aspect-list/services/aspect-list.service.mjs +0 -83
  22. package/esm2022/lib/aspect-list/services/dialog-aspect-list.service.mjs +0 -86
  23. package/esm2022/lib/aspect-list/services/node-aspect.service.mjs +0 -52
  24. package/esm2022/lib/auth-loader/content-auth-loader-factory.mjs +0 -26
  25. package/esm2022/lib/auth-loader/content-auth-loader.service.mjs +0 -42
  26. package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +0 -167
  27. package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +0 -35
  28. package/esm2022/lib/breadcrumb/dropdown-breadcrumb.component.mjs +0 -66
  29. package/esm2022/lib/breadcrumb/index.mjs +0 -18
  30. package/esm2022/lib/breadcrumb/public-api.mjs +0 -20
  31. package/esm2022/lib/category/categories-management/categories-management-mode.mjs +0 -22
  32. package/esm2022/lib/category/categories-management/categories-management.component.mjs +0 -309
  33. package/esm2022/lib/category/category.module.mjs +0 -33
  34. package/esm2022/lib/category/index.mjs +0 -18
  35. package/esm2022/lib/category/models/category-node.interface.mjs +0 -18
  36. package/esm2022/lib/category/public-api.mjs +0 -23
  37. package/esm2022/lib/category/services/category-tree-datasource.service.mjs +0 -80
  38. package/esm2022/lib/category/services/category.service.mjs +0 -159
  39. package/esm2022/lib/common/events/file.event.mjs +0 -46
  40. package/esm2022/lib/common/index.mjs +0 -18
  41. package/esm2022/lib/common/interfaces/saved-search.interface.mjs +0 -18
  42. package/esm2022/lib/common/interfaces/search-configuration.interface.mjs +0 -18
  43. package/esm2022/lib/common/mocks/ecm-user.service.mock.mjs +0 -37
  44. package/esm2022/lib/common/models/allowable-operations.enum.mjs +0 -30
  45. package/esm2022/lib/common/models/ecm-company.model.mjs +0 -19
  46. package/esm2022/lib/common/models/ecm-user.model.mjs +0 -45
  47. package/esm2022/lib/common/models/file.model.mjs +0 -53
  48. package/esm2022/lib/common/models/node-metadata.model.mjs +0 -23
  49. package/esm2022/lib/common/models/permissions.enum.mjs +0 -32
  50. package/esm2022/lib/common/public-api.mjs +0 -37
  51. package/esm2022/lib/common/services/card-view-content-update.service.mjs +0 -55
  52. package/esm2022/lib/common/services/content.service.mjs +0 -180
  53. package/esm2022/lib/common/services/discovery-api.service.mjs +0 -79
  54. package/esm2022/lib/common/services/favorites-api.service.mjs +0 -84
  55. package/esm2022/lib/common/services/nodes-api.service.mjs +0 -251
  56. package/esm2022/lib/common/services/people-content.service.mjs +0 -138
  57. package/esm2022/lib/common/services/rendition.service.mjs +0 -270
  58. package/esm2022/lib/common/services/saved-searches.service.mjs +0 -206
  59. package/esm2022/lib/common/services/sites.service.mjs +0 -243
  60. package/esm2022/lib/common/services/upload.service.mjs +0 -391
  61. package/esm2022/lib/content-metadata/components/content-metadata/content-metadata-header.component.mjs +0 -55
  62. package/esm2022/lib/content-metadata/components/content-metadata/content-metadata.component.mjs +0 -491
  63. package/esm2022/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.mjs +0 -129
  64. package/esm2022/lib/content-metadata/content-metadata.module.mjs +0 -36
  65. package/esm2022/lib/content-metadata/index.mjs +0 -18
  66. package/esm2022/lib/content-metadata/interfaces/aspect-oriented-config.interface.mjs +0 -18
  67. package/esm2022/lib/content-metadata/interfaces/card-view-group.interface.mjs +0 -18
  68. package/esm2022/lib/content-metadata/interfaces/content-metadata-config.interface.mjs +0 -18
  69. package/esm2022/lib/content-metadata/interfaces/content-metadata-custom-panel.interface.mjs +0 -18
  70. package/esm2022/lib/content-metadata/interfaces/content-metadata-panel.interface.mjs +0 -18
  71. package/esm2022/lib/content-metadata/interfaces/content-metadata.interfaces.mjs +0 -28
  72. package/esm2022/lib/content-metadata/interfaces/indifferent-config.interface.mjs +0 -18
  73. package/esm2022/lib/content-metadata/interfaces/layout-oriented-config.interface.mjs +0 -18
  74. package/esm2022/lib/content-metadata/interfaces/organised-property-group.interface.mjs +0 -18
  75. package/esm2022/lib/content-metadata/interfaces/preset-config.interface.mjs +0 -18
  76. package/esm2022/lib/content-metadata/interfaces/property-group.interface.mjs +0 -18
  77. package/esm2022/lib/content-metadata/interfaces/property.interface.mjs +0 -18
  78. package/esm2022/lib/content-metadata/public-api.mjs +0 -31
  79. package/esm2022/lib/content-metadata/services/basic-properties.service.mjs +0 -107
  80. package/esm2022/lib/content-metadata/services/config/aspect-oriented-config.service.mjs +0 -106
  81. package/esm2022/lib/content-metadata/services/config/content-metadata-config.factory.mjs +0 -76
  82. package/esm2022/lib/content-metadata/services/config/indifferent-config.service.mjs +0 -40
  83. package/esm2022/lib/content-metadata/services/config/layout-oriented-config.service.mjs +0 -108
  84. package/esm2022/lib/content-metadata/services/config/property-group-reader.mjs +0 -33
  85. package/esm2022/lib/content-metadata/services/content-metadata.service.mjs +0 -99
  86. package/esm2022/lib/content-metadata/services/content-type-property.service.mjs +0 -134
  87. package/esm2022/lib/content-metadata/services/property-descriptors.service.mjs +0 -52
  88. package/esm2022/lib/content-metadata/services/property-groups-translator.service.mjs +0 -169
  89. package/esm2022/lib/content-node-selector/content-node-dialog.service.mjs +0 -256
  90. package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.component.mjs +0 -618
  91. package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.service.mjs +0 -66
  92. package/esm2022/lib/content-node-selector/content-node-selector.component-data.interface.mjs +0 -18
  93. package/esm2022/lib/content-node-selector/content-node-selector.component.mjs +0 -206
  94. package/esm2022/lib/content-node-selector/content-node-selector.module.mjs +0 -50
  95. package/esm2022/lib/content-node-selector/index.mjs +0 -18
  96. package/esm2022/lib/content-node-selector/name-location-cell/name-location-cell.component.mjs +0 -48
  97. package/esm2022/lib/content-node-selector/public-api.mjs +0 -25
  98. package/esm2022/lib/content-node-selector/site-dropdown/sites-dropdown.component.mjs +0 -168
  99. package/esm2022/lib/content-node-share/content-node-share.dialog.mjs +0 -288
  100. package/esm2022/lib/content-node-share/content-node-share.directive.mjs +0 -102
  101. package/esm2022/lib/content-node-share/content-node-share.module.mjs +0 -35
  102. package/esm2022/lib/content-node-share/content-node-share.settings.mjs +0 -18
  103. package/esm2022/lib/content-node-share/index.mjs +0 -18
  104. package/esm2022/lib/content-node-share/public-api.mjs +0 -22
  105. package/esm2022/lib/content-node-share/services/shared-links-api.service.mjs +0 -83
  106. package/esm2022/lib/content-type/content-type-dialog.component.mjs +0 -58
  107. package/esm2022/lib/content-type/content-type-metadata.interface.mjs +0 -18
  108. package/esm2022/lib/content-type/content-type.service.mjs +0 -52
  109. package/esm2022/lib/content-type/index.mjs +0 -20
  110. package/esm2022/lib/content.module.mjs +0 -277
  111. package/esm2022/lib/dialogs/category-selector/category-selector.dialog.mjs +0 -52
  112. package/esm2022/lib/dialogs/dialog.module.mjs +0 -52
  113. package/esm2022/lib/dialogs/download-zip/download-zip.dialog.mjs +0 -111
  114. package/esm2022/lib/dialogs/download-zip/download-zip.dialog.module.mjs +0 -38
  115. package/esm2022/lib/dialogs/download-zip/services/download-zip.service.mjs +0 -66
  116. package/esm2022/lib/dialogs/folder/folder-name.validators.mjs +0 -44
  117. package/esm2022/lib/dialogs/folder/folder.dialog.mjs +0 -147
  118. package/esm2022/lib/dialogs/index.mjs +0 -18
  119. package/esm2022/lib/dialogs/library/library.dialog.mjs +0 -225
  120. package/esm2022/lib/dialogs/node-lock/node-lock.dialog.mjs +0 -116
  121. package/esm2022/lib/dialogs/public-api.mjs +0 -25
  122. package/esm2022/lib/directives/auto-focus.directive.mjs +0 -38
  123. package/esm2022/lib/directives/check-allowable-operation.directive.mjs +0 -126
  124. package/esm2022/lib/directives/content-directive.module.mjs +0 -75
  125. package/esm2022/lib/directives/index.mjs +0 -18
  126. package/esm2022/lib/directives/library-favorite.directive.mjs +0 -119
  127. package/esm2022/lib/directives/library-membership.directive.mjs +0 -202
  128. package/esm2022/lib/directives/node-counter.directive.mjs +0 -60
  129. package/esm2022/lib/directives/node-delete.directive.mjs +0 -177
  130. package/esm2022/lib/directives/node-download.directive.mjs +0 -138
  131. package/esm2022/lib/directives/node-favorite.directive.mjs +0 -193
  132. package/esm2022/lib/directives/node-lock.directive.mjs +0 -57
  133. package/esm2022/lib/directives/node-restore.directive.mjs +0 -218
  134. package/esm2022/lib/directives/public-api.mjs +0 -28
  135. package/esm2022/lib/document-list/components/content-action/content-action-list.component.mjs +0 -60
  136. package/esm2022/lib/document-list/components/content-action/content-action.component.mjs +0 -196
  137. package/esm2022/lib/document-list/components/document-list.component.mjs +0 -964
  138. package/esm2022/lib/document-list/components/document-list.token.mjs +0 -21
  139. package/esm2022/lib/document-list/components/file-auto-download/file-auto-download.component.mjs +0 -43
  140. package/esm2022/lib/document-list/components/filter-header/filter-header.component.mjs +0 -107
  141. package/esm2022/lib/document-list/components/library-name-column/library-name-column.component.mjs +0 -133
  142. package/esm2022/lib/document-list/components/library-role-column/library-role-column.component.mjs +0 -93
  143. package/esm2022/lib/document-list/components/library-status-column/library-status-column.component.mjs +0 -88
  144. package/esm2022/lib/document-list/components/name-column/name-column.component.mjs +0 -120
  145. package/esm2022/lib/document-list/components/node.event.mjs +0 -30
  146. package/esm2022/lib/document-list/components/trashcan-name-column/trashcan-name-column.component.mjs +0 -83
  147. package/esm2022/lib/document-list/data/image-resolver.model.mjs +0 -18
  148. package/esm2022/lib/document-list/data/row-filter.model.mjs +0 -18
  149. package/esm2022/lib/document-list/data/share-data-row.model.mjs +0 -102
  150. package/esm2022/lib/document-list/data/share-datatable-adapter.mjs +0 -258
  151. package/esm2022/lib/document-list/document-list.module.mjs +0 -79
  152. package/esm2022/lib/document-list/index.mjs +0 -18
  153. package/esm2022/lib/document-list/interfaces/document-list-loader.interface.mjs +0 -18
  154. package/esm2022/lib/document-list/models/content-action.model.mjs +0 -59
  155. package/esm2022/lib/document-list/models/document-folder.model.mjs +0 -23
  156. package/esm2022/lib/document-list/models/node-action.enum.mjs +0 -27
  157. package/esm2022/lib/document-list/models/permissions-style.model.mjs +0 -27
  158. package/esm2022/lib/document-list/models/permissions.model.mjs +0 -26
  159. package/esm2022/lib/document-list/models/preset.model.mjs +0 -257
  160. package/esm2022/lib/document-list/public-api.mjs +0 -47
  161. package/esm2022/lib/document-list/services/custom-resources.service.mjs +0 -378
  162. package/esm2022/lib/document-list/services/document-actions.service.mjs +0 -142
  163. package/esm2022/lib/document-list/services/document-list.service.mjs +0 -175
  164. package/esm2022/lib/document-list/services/folder-actions.service.mjs +0 -137
  165. package/esm2022/lib/document-list/services/lock.service.mjs +0 -72
  166. package/esm2022/lib/document-list/services/node-actions.service.mjs +0 -122
  167. package/esm2022/lib/group/index.mjs +0 -18
  168. package/esm2022/lib/group/public-api.mjs +0 -18
  169. package/esm2022/lib/group/services/group.service.mjs +0 -84
  170. package/esm2022/lib/infinite-scroll-datasource/index.mjs +0 -18
  171. package/esm2022/lib/infinite-scroll-datasource/infinite-scroll-datasource.mjs +0 -69
  172. package/esm2022/lib/infinite-scroll-datasource/public-api.mjs +0 -18
  173. package/esm2022/lib/interfaces/base-card-view-content-update.interface.mjs +0 -18
  174. package/esm2022/lib/interfaces/index.mjs +0 -18
  175. package/esm2022/lib/interfaces/library-entity.interface.mjs +0 -18
  176. package/esm2022/lib/interfaces/library-membership-error-event.interface.mjs +0 -18
  177. package/esm2022/lib/interfaces/library-membership-toggle-event.interface.mjs +0 -18
  178. package/esm2022/lib/interfaces/node-allowable-operation-subject.interface.mjs +0 -18
  179. package/esm2022/lib/interfaces/public-api.mjs +0 -23
  180. package/esm2022/lib/interfaces/restore-message-model.interface.mjs +0 -19
  181. package/esm2022/lib/legal-hold/index.mjs +0 -18
  182. package/esm2022/lib/legal-hold/public-api.mjs +0 -18
  183. package/esm2022/lib/legal-hold/services/legal-hold.service.mjs +0 -136
  184. package/esm2022/lib/material.module.mjs +0 -183
  185. package/esm2022/lib/mock/alfresco-api.service.mock.mjs +0 -43
  186. package/esm2022/lib/mock/date-range-search-filter.mock.mjs +0 -65
  187. package/esm2022/lib/mock/document-library.model.mock.mjs +0 -84
  188. package/esm2022/lib/mock/document-list.component.mock.mjs +0 -364
  189. package/esm2022/lib/mock/index.mjs +0 -18
  190. package/esm2022/lib/mock/new-version-uploader.service.mock.mjs +0 -161
  191. package/esm2022/lib/mock/public-api.mjs +0 -27
  192. package/esm2022/lib/mock/search-filter-mock.mjs +0 -637
  193. package/esm2022/lib/mock/search-query.mock.mjs +0 -40
  194. package/esm2022/lib/mock/search.component.mock.mjs +0 -165
  195. package/esm2022/lib/mock/search.service.mock.mjs +0 -61
  196. package/esm2022/lib/mock/sites-dropdown.component.mock.mjs +0 -281
  197. package/esm2022/lib/new-version-uploader/index.mjs +0 -18
  198. package/esm2022/lib/new-version-uploader/models/index.mjs +0 -18
  199. package/esm2022/lib/new-version-uploader/models/new-version-uploader.model.mjs +0 -24
  200. package/esm2022/lib/new-version-uploader/new-version-uploader.dialog.mjs +0 -75
  201. package/esm2022/lib/new-version-uploader/new-version-uploader.module.mjs +0 -33
  202. package/esm2022/lib/new-version-uploader/new-version-uploader.service.mjs +0 -103
  203. package/esm2022/lib/new-version-uploader/public-api.mjs +0 -21
  204. package/esm2022/lib/node-comments/index.mjs +0 -18
  205. package/esm2022/lib/node-comments/node-comments.component.mjs +0 -44
  206. package/esm2022/lib/node-comments/node-comments.module.mjs +0 -33
  207. package/esm2022/lib/node-comments/public-api.mjs +0 -20
  208. package/esm2022/lib/node-comments/services/node-comments.service.mjs +0 -85
  209. package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog-data.interface.mjs +0 -18
  210. package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog.component.mjs +0 -124
  211. package/esm2022/lib/permission-manager/components/add-permission/add-permission-panel.component.mjs +0 -103
  212. package/esm2022/lib/permission-manager/components/add-permission/add-permission.component.mjs +0 -70
  213. package/esm2022/lib/permission-manager/components/add-permission/search-config-permission.service.mjs +0 -45
  214. package/esm2022/lib/permission-manager/components/inherited-button.directive.mjs +0 -67
  215. package/esm2022/lib/permission-manager/components/node-path-column/node-path-column.component.mjs +0 -56
  216. package/esm2022/lib/permission-manager/components/permission-container/permission-container.component.mjs +0 -103
  217. package/esm2022/lib/permission-manager/components/permission-list/permission-list.component.mjs +0 -88
  218. package/esm2022/lib/permission-manager/components/permission-list/permission-list.service.mjs +0 -219
  219. package/esm2022/lib/permission-manager/components/pop-over.directive.mjs +0 -134
  220. package/esm2022/lib/permission-manager/components/user-icon-column/user-icon-column.component.mjs +0 -88
  221. package/esm2022/lib/permission-manager/components/user-name-column/user-name-column.component.mjs +0 -82
  222. package/esm2022/lib/permission-manager/components/user-role-column/user-role-column.component.mjs +0 -112
  223. package/esm2022/lib/permission-manager/index.mjs +0 -18
  224. package/esm2022/lib/permission-manager/models/member.model.mjs +0 -59
  225. package/esm2022/lib/permission-manager/models/permission.model.mjs +0 -29
  226. package/esm2022/lib/permission-manager/models/role.model.mjs +0 -18
  227. package/esm2022/lib/permission-manager/permission-manager.module.mjs +0 -84
  228. package/esm2022/lib/permission-manager/public-api.mjs +0 -36
  229. package/esm2022/lib/permission-manager/services/node-permission-dialog.service.mjs +0 -78
  230. package/esm2022/lib/permission-manager/services/node-permission.service.mjs +0 -299
  231. package/esm2022/lib/pipes/content-pipe.module.mjs +0 -37
  232. package/esm2022/lib/pipes/index.mjs +0 -18
  233. package/esm2022/lib/pipes/node-name-tooltip.pipe.mjs +0 -69
  234. package/esm2022/lib/pipes/public-api.mjs +0 -19
  235. package/esm2022/lib/prediction/index.mjs +0 -18
  236. package/esm2022/lib/prediction/public-api.mjs +0 -18
  237. package/esm2022/lib/prediction/services/index.mjs +0 -18
  238. package/esm2022/lib/prediction/services/prediction.service.mjs +0 -57
  239. package/esm2022/lib/search/components/empty-search-result.component.mjs +0 -27
  240. package/esm2022/lib/search/components/index.mjs +0 -43
  241. package/esm2022/lib/search/components/reset-search.directive.mjs +0 -41
  242. package/esm2022/lib/search/components/search-check-list/index.mjs +0 -18
  243. package/esm2022/lib/search/components/search-check-list/search-check-list.component.mjs +0 -159
  244. package/esm2022/lib/search/components/search-chip-autocomplete-input/index.mjs +0 -18
  245. package/esm2022/lib/search/components/search-chip-autocomplete-input/search-chip-autocomplete-input.component.mjs +0 -170
  246. package/esm2022/lib/search/components/search-chip-list/search-chip-list.component.mjs +0 -47
  247. package/esm2022/lib/search/components/search-control.component.mjs +0 -181
  248. package/esm2022/lib/search/components/search-date-range-tabbed/index.mjs +0 -22
  249. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/date-range-type.mjs +0 -23
  250. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/in-last-date-type.mjs +0 -23
  251. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.component.mjs +0 -197
  252. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.mjs +0 -18
  253. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range-tabbed.component.mjs +0 -201
  254. package/esm2022/lib/search/components/search-datetime-range/index.mjs +0 -18
  255. package/esm2022/lib/search/components/search-datetime-range/search-datetime-range.component.mjs +0 -224
  256. package/esm2022/lib/search/components/search-facet-field/index.mjs +0 -18
  257. package/esm2022/lib/search/components/search-facet-field/search-facet-field.component.mjs +0 -133
  258. package/esm2022/lib/search/components/search-filter/index.mjs +0 -19
  259. package/esm2022/lib/search/components/search-filter/search-filter-card/search-filter-card.component.mjs +0 -46
  260. package/esm2022/lib/search/components/search-filter/search-filter.component.mjs +0 -81
  261. package/esm2022/lib/search/components/search-filter-autocomplete-chips/index.mjs +0 -18
  262. package/esm2022/lib/search/components/search-filter-autocomplete-chips/search-filter-autocomplete-chips.component.mjs +0 -155
  263. package/esm2022/lib/search/components/search-filter-chips/index.mjs +0 -23
  264. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip/search-facet-chip.component.mjs +0 -105
  265. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-chip-tabbed.component.mjs +0 -110
  266. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-tabbed-content.component.mjs +0 -129
  267. package/esm2022/lib/search/components/search-filter-chips/search-filter-chips.component.mjs +0 -64
  268. package/esm2022/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.mjs +0 -44
  269. package/esm2022/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.mjs +0 -110
  270. package/esm2022/lib/search/components/search-filter-container/index.mjs +0 -18
  271. package/esm2022/lib/search/components/search-filter-container/search-filter-container.component.mjs +0 -123
  272. package/esm2022/lib/search/components/search-filter-tabbed/index.mjs +0 -19
  273. package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tab.directive.mjs +0 -36
  274. package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tabbed.component.mjs +0 -64
  275. package/esm2022/lib/search/components/search-form/index.mjs +0 -18
  276. package/esm2022/lib/search/components/search-form/search-form.component.mjs +0 -53
  277. package/esm2022/lib/search/components/search-input/index.mjs +0 -18
  278. package/esm2022/lib/search/components/search-input/search-input.component.mjs +0 -109
  279. package/esm2022/lib/search/components/search-logical-filter/index.mjs +0 -18
  280. package/esm2022/lib/search/components/search-logical-filter/search-logical-filter.component.mjs +0 -164
  281. package/esm2022/lib/search/components/search-number-range/index.mjs +0 -18
  282. package/esm2022/lib/search/components/search-number-range/search-number-range.component.mjs +0 -155
  283. package/esm2022/lib/search/components/search-panel/index.mjs +0 -18
  284. package/esm2022/lib/search/components/search-panel/search-panel.component.mjs +0 -44
  285. package/esm2022/lib/search/components/search-properties/file-size-condition.mjs +0 -18
  286. package/esm2022/lib/search/components/search-properties/file-size-operator.enum.mjs +0 -23
  287. package/esm2022/lib/search/components/search-properties/file-size-unit.enum.mjs +0 -26
  288. package/esm2022/lib/search/components/search-properties/index.mjs +0 -22
  289. package/esm2022/lib/search/components/search-properties/search-properties.component.mjs +0 -244
  290. package/esm2022/lib/search/components/search-properties/search-properties.mjs +0 -18
  291. package/esm2022/lib/search/components/search-radio/index.mjs +0 -18
  292. package/esm2022/lib/search/components/search-radio/search-radio.component.mjs +0 -146
  293. package/esm2022/lib/search/components/search-slider/index.mjs +0 -18
  294. package/esm2022/lib/search/components/search-slider/search-slider.component.mjs +0 -120
  295. package/esm2022/lib/search/components/search-sorting-picker/index.mjs +0 -18
  296. package/esm2022/lib/search/components/search-sorting-picker/search-sorting-picker.component.mjs +0 -77
  297. package/esm2022/lib/search/components/search-text/index.mjs +0 -18
  298. package/esm2022/lib/search/components/search-text/search-text.component.mjs +0 -135
  299. package/esm2022/lib/search/components/search-widget-container/index.mjs +0 -18
  300. package/esm2022/lib/search/components/search-widget-container/search-widget-container.component.mjs +0 -113
  301. package/esm2022/lib/search/components/search.component.mjs +0 -153
  302. package/esm2022/lib/search/forms/index.mjs +0 -19
  303. package/esm2022/lib/search/forms/live-error-state-matcher.mjs +0 -23
  304. package/esm2022/lib/search/forms/search-term-validator.mjs +0 -26
  305. package/esm2022/lib/search/index.mjs +0 -18
  306. package/esm2022/lib/search/mocks/index.mjs +0 -18
  307. package/esm2022/lib/search/mocks/search.service.mock.mjs +0 -56
  308. package/esm2022/lib/search/models/autocomplete-option.interface.mjs +0 -22
  309. package/esm2022/lib/search/models/facet-field-bucket.interface.mjs +0 -18
  310. package/esm2022/lib/search/models/facet-field.interface.mjs +0 -29
  311. package/esm2022/lib/search/models/facet-query.interface.mjs +0 -18
  312. package/esm2022/lib/search/models/facet-widget.interface.mjs +0 -18
  313. package/esm2022/lib/search/models/filter-query.interface.mjs +0 -18
  314. package/esm2022/lib/search/models/filter-search.interface.mjs +0 -18
  315. package/esm2022/lib/search/models/index.mjs +0 -34
  316. package/esm2022/lib/search/models/response-facet-query-list.model.mjs +0 -31
  317. package/esm2022/lib/search/models/search-category.interface.mjs +0 -18
  318. package/esm2022/lib/search/models/search-configuration.interface.mjs +0 -18
  319. package/esm2022/lib/search/models/search-filter-list.model.mjs +0 -148
  320. package/esm2022/lib/search/models/search-form.interface.mjs +0 -18
  321. package/esm2022/lib/search/models/search-range.interface.mjs +0 -18
  322. package/esm2022/lib/search/models/search-sorting-definition.interface.mjs +0 -18
  323. package/esm2022/lib/search/models/search-widget-settings.interface.mjs +0 -18
  324. package/esm2022/lib/search/models/search-widget.interface.mjs +0 -18
  325. package/esm2022/lib/search/models/tabbed-facet-field.interface.mjs +0 -18
  326. package/esm2022/lib/search/public-api.mjs +0 -24
  327. package/esm2022/lib/search/search-configuration.token.mjs +0 -19
  328. package/esm2022/lib/search/search.module.mjs +0 -192
  329. package/esm2022/lib/search/services/base-query-builder.service.mjs +0 -509
  330. package/esm2022/lib/search/services/index.mjs +0 -24
  331. package/esm2022/lib/search/services/search-configuration.service.mjs +0 -50
  332. package/esm2022/lib/search/services/search-facet-filters.service.mjs +0 -374
  333. package/esm2022/lib/search/services/search-filter.service.mjs +0 -56
  334. package/esm2022/lib/search/services/search-header-query-builder.service.mjs +0 -136
  335. package/esm2022/lib/search/services/search-query-builder.service.mjs +0 -48
  336. package/esm2022/lib/search/services/search.service.mjs +0 -89
  337. package/esm2022/lib/search-ai/index.mjs +0 -18
  338. package/esm2022/lib/search-ai/models/search-ai-input-state.mjs +0 -18
  339. package/esm2022/lib/search-ai/public-api.mjs +0 -19
  340. package/esm2022/lib/search-ai/services/search-ai.service.mjs +0 -103
  341. package/esm2022/lib/security/index.mjs +0 -18
  342. package/esm2022/lib/security/public-api.mjs +0 -18
  343. package/esm2022/lib/security/services/models/security-controls-group-response.interface.mjs +0 -18
  344. package/esm2022/lib/security/services/models/security-controls-mark-response.interface.mjs +0 -18
  345. package/esm2022/lib/security/services/security-controls-groups-marks-security.service.mjs +0 -274
  346. package/esm2022/lib/security-options-loader/security-options-loader.service.mjs +0 -43
  347. package/esm2022/lib/services/alfresco-api.interface.mjs +0 -18
  348. package/esm2022/lib/services/alfresco-api.service.mjs +0 -120
  349. package/esm2022/lib/services/index.mjs +0 -18
  350. package/esm2022/lib/services/public-api.mjs +0 -18
  351. package/esm2022/lib/tag/index.mjs +0 -18
  352. package/esm2022/lib/tag/public-api.mjs +0 -24
  353. package/esm2022/lib/tag/services/tag.service.mjs +0 -171
  354. package/esm2022/lib/tag/tag-actions/tag-actions.component.mjs +0 -115
  355. package/esm2022/lib/tag/tag-list/tag-list.component.mjs +0 -98
  356. package/esm2022/lib/tag/tag-node-list/tag-node-list.component.mjs +0 -80
  357. package/esm2022/lib/tag/tag.module.mjs +0 -37
  358. package/esm2022/lib/tag/tags-creator/tags-creator-mode.mjs +0 -27
  359. package/esm2022/lib/tag/tags-creator/tags-creator.component.mjs +0 -371
  360. package/esm2022/lib/testing/content.testing.module.mjs +0 -56
  361. package/esm2022/lib/tree/components/tree.component.mjs +0 -313
  362. package/esm2022/lib/tree/index.mjs +0 -18
  363. package/esm2022/lib/tree/models/tree-context-menu-result.interface.mjs +0 -18
  364. package/esm2022/lib/tree/models/tree-node.interface.mjs +0 -22
  365. package/esm2022/lib/tree/models/tree-response.interface.mjs +0 -18
  366. package/esm2022/lib/tree/public-api.mjs +0 -23
  367. package/esm2022/lib/tree/services/tree.service.mjs +0 -134
  368. package/esm2022/lib/tree/tree.module.mjs +0 -33
  369. package/esm2022/lib/tree-view/components/tree-view.component.mjs +0 -76
  370. package/esm2022/lib/tree-view/data/tree-view-datasource.mjs +0 -99
  371. package/esm2022/lib/tree-view/index.mjs +0 -18
  372. package/esm2022/lib/tree-view/models/tree-view.model.mjs +0 -28
  373. package/esm2022/lib/tree-view/public-api.mjs +0 -22
  374. package/esm2022/lib/tree-view/services/tree-view.service.mjs +0 -38
  375. package/esm2022/lib/tree-view/tree-view.module.mjs +0 -33
  376. package/esm2022/lib/upload/components/base-upload/upload-base.mjs +0 -176
  377. package/esm2022/lib/upload/components/file-uploading-dialog.component.mjs +0 -191
  378. package/esm2022/lib/upload/components/file-uploading-list-row.component.mjs +0 -93
  379. package/esm2022/lib/upload/components/file-uploading-list.component.mjs +0 -124
  380. package/esm2022/lib/upload/components/upload-button.component.mjs +0 -134
  381. package/esm2022/lib/upload/components/upload-drag-area.component.mjs +0 -112
  382. package/esm2022/lib/upload/components/upload-files.event.mjs +0 -41
  383. package/esm2022/lib/upload/components/upload-version-button.component.mjs +0 -55
  384. package/esm2022/lib/upload/directives/file-draggable.directive.mjs +0 -154
  385. package/esm2022/lib/upload/directives/toggle-icon.directive.mjs +0 -75
  386. package/esm2022/lib/upload/index.mjs +0 -18
  387. package/esm2022/lib/upload/pipes/file-upload-error.pipe.mjs +0 -39
  388. package/esm2022/lib/upload/public-api.mjs +0 -29
  389. package/esm2022/lib/upload/upload.module.mjs +0 -72
  390. package/esm2022/lib/version-compatibility/index.mjs +0 -18
  391. package/esm2022/lib/version-compatibility/public-api.mjs +0 -20
  392. package/esm2022/lib/version-compatibility/version-compatibility-factory.mjs +0 -26
  393. package/esm2022/lib/version-compatibility/version-compatibility.directive.mjs +0 -53
  394. package/esm2022/lib/version-compatibility/version-compatibility.module.mjs +0 -33
  395. package/esm2022/lib/version-compatibility/version-compatibility.service.mjs +0 -76
  396. package/esm2022/lib/version-manager/content-version.service.mjs +0 -53
  397. package/esm2022/lib/version-manager/index.mjs +0 -18
  398. package/esm2022/lib/version-manager/public-api.mjs +0 -23
  399. package/esm2022/lib/version-manager/version-comparison.component.mjs +0 -43
  400. package/esm2022/lib/version-manager/version-list.component.mjs +0 -216
  401. package/esm2022/lib/version-manager/version-manager.component.mjs +0 -146
  402. package/esm2022/lib/version-manager/version-manager.module.mjs +0 -48
  403. package/esm2022/lib/version-manager/version-upload.component.mjs +0 -155
  404. package/esm2022/lib/viewer/alfresco-viewer.module.mjs +0 -33
  405. package/esm2022/lib/viewer/components/alfresco-viewer.component.mjs +0 -409
  406. package/esm2022/lib/viewer/index.mjs +0 -18
  407. package/esm2022/lib/viewer/public-api.mjs +0 -19
  408. package/esm2022/public-api.mjs +0 -56
@@ -1,27 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- /**
18
- * Available modes for tags creator.
19
- * Create mode allows only for creating completely new tags.
20
- * Create and Assign mode allows for both - creation of new tags and selection of existing tags.
21
- */
22
- export var TagsCreatorMode;
23
- (function (TagsCreatorMode) {
24
- TagsCreatorMode[TagsCreatorMode["CREATE"] = 0] = "CREATE";
25
- TagsCreatorMode[TagsCreatorMode["CREATE_AND_ASSIGN"] = 1] = "CREATE_AND_ASSIGN";
26
- })(TagsCreatorMode || (TagsCreatorMode = {}));
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy1jcmVhdG9yLW1vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL3RhZy90YWdzLWNyZWF0b3IvdGFncy1jcmVhdG9yLW1vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUg7Ozs7R0FJRztBQUNILE1BQU0sQ0FBTixJQUFZLGVBR1g7QUFIRCxXQUFZLGVBQWU7SUFDdkIseURBQU0sQ0FBQTtJQUNOLCtFQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxlQUFlLEtBQWYsZUFBZSxRQUcxQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBBdmFpbGFibGUgbW9kZXMgZm9yIHRhZ3MgY3JlYXRvci5cbiAqIENyZWF0ZSBtb2RlIGFsbG93cyBvbmx5IGZvciBjcmVhdGluZyBjb21wbGV0ZWx5IG5ldyB0YWdzLlxuICogQ3JlYXRlIGFuZCBBc3NpZ24gbW9kZSBhbGxvd3MgZm9yIGJvdGggLSBjcmVhdGlvbiBvZiBuZXcgdGFncyBhbmQgc2VsZWN0aW9uIG9mIGV4aXN0aW5nIHRhZ3MuXG4gKi9cbmV4cG9ydCBlbnVtIFRhZ3NDcmVhdG9yTW9kZSB7XG4gICAgQ1JFQVRFLFxuICAgIENSRUFURV9BTkRfQVNTSUdOXG59XG4iXX0=
@@ -1,371 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { DynamicChipListComponent, NotificationService } from '@alfresco/adf-core';
18
- import { Component, DestroyRef, ElementRef, EventEmitter, HostBinding, inject, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
19
- import { CommonModule } from '@angular/common';
20
- import { FormControl, ReactiveFormsModule } from '@angular/forms';
21
- import { MatButtonModule } from '@angular/material/button';
22
- import { MatChipsModule } from '@angular/material/chips';
23
- import { MatIconModule } from '@angular/material/icon';
24
- import { MatInputModule } from '@angular/material/input';
25
- import { MatListModule } from '@angular/material/list';
26
- import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
27
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
28
- import { TranslateModule } from '@ngx-translate/core';
29
- import { EMPTY, forkJoin, Subject, timer } from 'rxjs';
30
- import { debounce, distinctUntilChanged, finalize, first, map, takeUntil, tap } from 'rxjs/operators';
31
- import { AutoFocusDirective } from '../../directives';
32
- import { TagService } from '../services/tag.service';
33
- import { TagsCreatorMode } from './tags-creator-mode';
34
- import * as i0 from "@angular/core";
35
- import * as i1 from "../services/tag.service";
36
- import * as i2 from "@alfresco/adf-core";
37
- import * as i3 from "@angular/common";
38
- import * as i4 from "@angular/material/input";
39
- import * as i5 from "@angular/material/form-field";
40
- import * as i6 from "@angular/forms";
41
- import * as i7 from "@ngx-translate/core";
42
- import * as i8 from "@angular/material/list";
43
- import * as i9 from "@angular/material/progress-spinner";
44
- const DEFAULT_TAGS_SORTING = {
45
- orderBy: 'tag',
46
- direction: 'asc'
47
- };
48
- /**
49
- * Allows to create multiple tags. That component contains input and two lists. Top list is all created tags, bottom list is searched tags based on input's value.
50
- */
51
- export class TagsCreatorComponent {
52
- /**
53
- * Default top list.
54
- *
55
- * @param tags tags which should be displayed as default tags for top list.
56
- */
57
- set tags(tags) {
58
- this._tags = [...tags];
59
- this.tagsToDisplay = this.tags.map((tag) => ({ id: tag, name: tag }));
60
- this._initialExistingTags = null;
61
- this._existingTags = null;
62
- this.loadTags(this.tagNameControl.value);
63
- this.tagNameControl.updateValueAndValidity();
64
- }
65
- get tags() {
66
- return this._tags;
67
- }
68
- /**
69
- * Decides if input for tags creation/searching should be visible. When input is hidden then panel of existing tags is hidden as well.
70
- *
71
- * @param tagNameControlVisible true if input should be visible, false otherwise.
72
- */
73
- set tagNameControlVisible(tagNameControlVisible) {
74
- this._tagNameControlVisible = tagNameControlVisible;
75
- if (tagNameControlVisible) {
76
- this._existingTagsPanelVisible = true;
77
- setTimeout(() => {
78
- this.tagNameInputElement?.nativeElement?.scrollIntoView();
79
- });
80
- }
81
- else {
82
- this._existingTagsPanelVisible = false;
83
- this.clearTagNameInput();
84
- }
85
- this.existingTagsPanelVisibilityChange.emit(this.existingTagsPanelVisible);
86
- }
87
- get tagNameControlVisible() {
88
- return this._tagNameControlVisible;
89
- }
90
- constructor(tagService, notificationService) {
91
- this.tagService = tagService;
92
- this.notificationService = notificationService;
93
- /**
94
- * False if tags can be removed from top list, true otherwise.
95
- */
96
- this.disabledTagsRemoving = false;
97
- /**
98
- * Emitted when bottom list is showing or hiding.
99
- */
100
- this.existingTagsPanelVisibilityChange = new EventEmitter();
101
- /**
102
- * Emitted when tags in top list are changed.
103
- */
104
- this.tagsChange = new EventEmitter();
105
- this.tagsToDisplay = [];
106
- this.nameErrorMessagesByErrors = new Map([
107
- ['duplicatedExistingTag', 'EXISTING_TAG'],
108
- ['duplicatedAddedTag', 'ALREADY_ADDED_TAG'],
109
- ['emptyTag', 'EMPTY_TAG'],
110
- ['specialCharacters', 'SPECIAL_CHARACTERS']
111
- ]);
112
- this.existingTagsListLimit = 15;
113
- this.exactTagSet$ = new Subject();
114
- this._tags = [];
115
- this._tagNameControl = new FormControl('', [this.validateIfNotAlreadyAdded.bind(this), this.validateEmptyTag, this.validateSpecialCharacters], this.validateIfNotExistingTag.bind(this));
116
- this._tagNameControlVisible = false;
117
- this._tagNameErrorMessageKey = '';
118
- this._spinnerVisible = false;
119
- this._typing = false;
120
- this._tagsListScrollbarVisible = false;
121
- this.cancelExistingTagsLoading$ = new Subject();
122
- this.destroyRef = inject(DestroyRef);
123
- }
124
- ngOnInit() {
125
- this.tagNameControl.valueChanges
126
- .pipe(map((name) => name.trim()), distinctUntilChanged((previous, current) => {
127
- const valueNotChanged = previous === current;
128
- if (valueNotChanged) {
129
- this.exactTagSet$.next();
130
- }
131
- return valueNotChanged;
132
- }), tap((name) => {
133
- this._typing = true;
134
- if (name) {
135
- this._spinnerVisible = true;
136
- this._existingTagsPanelVisible = true;
137
- }
138
- this.existingTagsPanelVisibilityChange.emit(this.existingTagsPanelVisible);
139
- this.cancelExistingTagsLoading$.next();
140
- this._initialExistingTags = null;
141
- this._existingTags = null;
142
- }), debounce((name) => (name ? timer(300) : EMPTY)), takeUntilDestroyed(this.destroyRef))
143
- .subscribe((name) => this.onTagNameControlValueChange(name));
144
- this.tagNameControl.statusChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.setTagNameControlErrorMessageKey());
145
- this.setTagNameControlErrorMessageKey();
146
- }
147
- ngOnDestroy() {
148
- this.cancelExistingTagsLoading$.next();
149
- this.cancelExistingTagsLoading$.complete();
150
- }
151
- get hostClass() {
152
- return this.existingTagsPanelVisible;
153
- }
154
- get tagNameControl() {
155
- return this._tagNameControl;
156
- }
157
- /*
158
- * Returns `true` if tags empty and non editable state, otherwise `false`
159
- */
160
- get showEmptyTagMessage() {
161
- return this.tags?.length === 0 && !this.tagNameControlVisible;
162
- }
163
- get existingTags() {
164
- return this._existingTags;
165
- }
166
- get tagNameErrorMessageKey() {
167
- return this._tagNameErrorMessageKey;
168
- }
169
- get spinnerVisible() {
170
- return this._spinnerVisible;
171
- }
172
- get typing() {
173
- return this._typing;
174
- }
175
- get tagsListScrollbarVisible() {
176
- return this._tagsListScrollbarVisible;
177
- }
178
- get existingTagsPanelVisible() {
179
- return this._existingTagsPanelVisible;
180
- }
181
- /**
182
- * Add tags to top list using value which is set in input. Adding tag is not allowed when value in input is invalid
183
- * or if user is still typing what means that validation for input is not called yet.
184
- */
185
- addTag() {
186
- if (!this._typing && !this.tagNameControl.invalid) {
187
- this.tags = [...this.tags, this.tagNameControl.value.trim()];
188
- this.clearTagNameInput();
189
- this.checkScrollbarVisibility();
190
- this.tagsChange.emit(this.tags);
191
- }
192
- }
193
- /**
194
- * Remove tag from top list. In case that tag was part of search result then that tag is moved to bottom list
195
- * (list of existing tags) after removing so user can reselect it again later.
196
- *
197
- * @param tag tag's name which should be removed from top list.
198
- */
199
- removeTag(tag) {
200
- this.removeTagFromArray(this.tags, tag);
201
- this.tags = [...this.tags];
202
- this.tagNameControl.updateValueAndValidity();
203
- this.updateExistingTagsListOnRemoveFromTagsToConfirm(tag);
204
- this.exactTagSet$.next();
205
- this.checkScrollbarVisibility();
206
- this.tagsChange.emit(this.tags);
207
- }
208
- /**
209
- * Called when user selects any tag from list of existing tags. It moves tag from existing tags list to top list.
210
- *
211
- * @param selectedTag changes
212
- */
213
- addExistingTagToTagsToAssign(selectedTag) {
214
- if (!this.isOnlyCreateMode()) {
215
- this.tags.push(selectedTag.entry.tag);
216
- this.removeTagFromArray(this.existingTags, selectedTag);
217
- this.tagNameControl.updateValueAndValidity();
218
- this.tags = [...this.tags];
219
- this.exactTagSet$.next();
220
- this.tagsChange.emit(this.tags);
221
- }
222
- }
223
- /**
224
- * Checks if component is in Create mode.
225
- *
226
- * @returns `true` if `Create` mode, `false` otherwise.
227
- */
228
- isOnlyCreateMode() {
229
- return this.mode === TagsCreatorMode.CREATE;
230
- }
231
- onTagNameControlValueChange(name) {
232
- this.tagNameControl.markAsTouched();
233
- this.loadTags(name);
234
- }
235
- loadTags(name) {
236
- if (name && !this.tagNameControl.hasError('specialCharacters')) {
237
- forkJoin({
238
- exactResult: this.tagService.findTagByName(name),
239
- searchedResult: this.tagService.searchTags(name, DEFAULT_TAGS_SORTING, false, 0, this.existingTagsListLimit)
240
- })
241
- .pipe(takeUntil(this.cancelExistingTagsLoading$), finalize(() => (this._typing = false)))
242
- .subscribe({
243
- next: ({ exactResult, searchedResult }) => {
244
- if (exactResult) {
245
- this.existingExactTag = exactResult;
246
- this.removeExactTagFromSearchedResult(searchedResult);
247
- searchedResult.list.entries.unshift(exactResult);
248
- }
249
- else {
250
- this.existingExactTag = null;
251
- }
252
- this._initialExistingTags = searchedResult.list.entries;
253
- this.excludeAlreadyAddedTags(this._initialExistingTags);
254
- this.exactTagSet$.next();
255
- this._spinnerVisible = false;
256
- },
257
- error: () => {
258
- this.notificationService.showError('TAG.TAGS_CREATOR.ERRORS.FETCH_TAGS');
259
- this._spinnerVisible = false;
260
- }
261
- });
262
- }
263
- else {
264
- this.existingExactTag = null;
265
- this._spinnerVisible = false;
266
- }
267
- }
268
- removeExactTagFromSearchedResult(searchedResult) {
269
- const exactTagIndex = searchedResult.list.entries.findIndex((row) => this.compareTags(row.entry.tag, this.existingExactTag.entry.tag));
270
- if (exactTagIndex > -1) {
271
- searchedResult.list.entries.splice(exactTagIndex, 1);
272
- }
273
- }
274
- validateIfNotExistingTag(tagNameControl) {
275
- return this.exactTagSet$.pipe(map(() => this.compareTags(tagNameControl.value, this.existingExactTag?.entry?.tag) ? { duplicatedExistingTag: true } : null), first());
276
- }
277
- validateIfNotAlreadyAdded(tagNameControl) {
278
- return this.tags.some((tag) => this.compareTags(tag, tagNameControl.value)) ? { duplicatedAddedTag: true } : null;
279
- }
280
- compareTags(tagName1, tagName2) {
281
- return tagName1?.trim().toUpperCase() === tagName2?.trim().toUpperCase();
282
- }
283
- validateEmptyTag(tagNameControl) {
284
- return tagNameControl.value.length && !tagNameControl.value.trim() ? { emptyTag: true } : null;
285
- }
286
- validateSpecialCharacters(tagNameControl) {
287
- const specialSymbolsRegex = /[{}()^':"\\|<>/?.*]/;
288
- return tagNameControl.value.length && specialSymbolsRegex.test(tagNameControl.value) ? { specialCharacters: true } : null;
289
- }
290
- setTagNameControlErrorMessageKey() {
291
- this._tagNameErrorMessageKey = this.tagNameControl.invalid
292
- ? `TAG.TAGS_CREATOR.ERRORS.${this.nameErrorMessagesByErrors.get(Object.keys(this.tagNameControl.errors)[0])}`
293
- : '';
294
- }
295
- checkScrollbarVisibility() {
296
- setTimeout(() => {
297
- this._tagsListScrollbarVisible = this.tagsListElement.nativeElement.scrollHeight > this.tagsListElement.nativeElement.clientHeight;
298
- });
299
- }
300
- removeTagFromArray(tags, tag) {
301
- tags.splice(tags.indexOf(tag), 1);
302
- }
303
- updateExistingTagsListOnRemoveFromTagsToConfirm(tag) {
304
- const entryForTagAddedToExistingTags = this._initialExistingTags?.find((tagEntry) => tagEntry.entry.tag === tag);
305
- if (entryForTagAddedToExistingTags) {
306
- this.existingTags.unshift(entryForTagAddedToExistingTags);
307
- if (this.existingExactTag) {
308
- if (tag !== this.existingExactTag.entry.tag) {
309
- this.removeTagFromArray(this.existingTags, this.existingExactTag);
310
- this.sortExistingTags();
311
- this.existingTags.unshift(this.existingExactTag);
312
- }
313
- }
314
- else {
315
- this.sortExistingTags();
316
- }
317
- this.exactTagSet$.next();
318
- }
319
- }
320
- sortExistingTags() {
321
- this.existingTags.sort((tagEntry1, tagEntry2) => tagEntry1.entry.tag.localeCompare(tagEntry2.entry.tag));
322
- }
323
- excludeAlreadyAddedTags(tags) {
324
- this._existingTags = tags.filter((tag) => !this.tags.includes(tag.entry.tag));
325
- }
326
- clearTagNameInput() {
327
- this.tagNameControl.setValue('');
328
- this.tagNameControl.markAsUntouched();
329
- }
330
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TagsCreatorComponent, deps: [{ token: i1.TagService }, { token: i2.NotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
331
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TagsCreatorComponent, isStandalone: true, selector: "adf-tags-creator", inputs: { mode: "mode", disabledTagsRemoving: "disabledTagsRemoving", tags: "tags", tagNameControlVisible: "tagNameControlVisible" }, outputs: { existingTagsPanelVisibilityChange: "existingTagsPanelVisibilityChange", tagsChange: "tagsChange" }, host: { properties: { "class.adf-creator-with-existing-tags-panel": "this.hostClass" } }, viewQueries: [{ propertyName: "tagsListElement", first: true, predicate: ["tagsList"], descendants: true }, { propertyName: "tagNameInputElement", first: true, predicate: ["tagNameInput"], descendants: true }], ngImport: i0, template: "<div class=\"adf-tags-creation\">\n <div *ngIf=\"tagNameControlVisible\" class=\"adf-tag-name-field\">\n <input\n #tagNameInput\n class=\"adf-tag-search-field\"\n matInput\n autocomplete=\"off\"\n [formControl]=\"tagNameControl\"\n (keyup.enter)=\"addTag()\"\n adf-auto-focus\n placeholder=\"{{ 'TAG.TAGS_CREATOR.TAG_SEARCH_PLACEHOLDER' | translate }}\"\n />\n <mat-error *ngIf=\"tagNameControl.invalid && tagNameControl.touched\">\n {{ tagNameErrorMessageKey | translate }}\n </mat-error>\n </div>\n <p class=\"adf-no-tags-message\" *ngIf=\"showEmptyTagMessage\">\n {{ 'TAG.TAGS_CREATOR.NO_TAGS_CREATED' | translate }}\n </p>\n <div class=\"adf-tags-list\" [class.adf-tags-list-fixed]=\"!tagNameControlVisible\" #tagsList>\n <ng-container *ngIf=\"tags?.length > 0\">\n <adf-dynamic-chip-list\n class=\"adf-tags-chips-container\"\n [chips]=\"tagsToDisplay\"\n [disableDelete]=\"disabledTagsRemoving\"\n (removedChip)=\"removeTag($event)\" />\n </ng-container>\n </div>\n</div>\n<div class=\"adf-existing-tags-panel\" *ngIf=\"existingTagsPanelVisible\">\n <span\n *ngIf=\"!spinnerVisible || existingTags\"\n class=\"adf-create-tag-label\"\n (click)=\"addTag()\"\n role=\"button\"\n tabindex=\"0\"\n (keyup.enter)=\"addTag()\"\n [hidden]=\"!tagNameControl.value || tagNameControl.invalid || typing\"\n >\n {{ 'TAG.TAGS_CREATOR.CREATE_TAG' | translate : { tag: tagNameControl.value } }}\n </span>\n <p *ngIf=\"!spinnerVisible && existingTags\" class=\"adf-existing-tags-label\">\n {{ (isOnlyCreateMode() ? 'TAG.TAGS_CREATOR.EXISTING_TAGS' : 'TAG.TAGS_CREATOR.EXISTING_TAGS_SELECTION') | translate }}\n </p>\n <div class=\"adf-tags-list\">\n <mat-list *ngIf=\"!spinnerVisible && existingTags\" [disabled]=\"isOnlyCreateMode()\">\n <mat-list-item *ngFor=\"let tagRow of existingTags\" class=\"adf-tag\"\n (click)=\"addExistingTagToTagsToAssign(tagRow)\">\n {{ tagRow.entry.tag }}\n </mat-list-item>\n <p *ngIf=\"!existingTags?.length\">{{ 'TAG.TAGS_CREATOR.NO_EXISTING_TAGS' | translate }}</p>\n </mat-list>\n <mat-spinner\n *ngIf=\"spinnerVisible\"\n class=\"adf-tags-creator-spinner\"\n [diameter]=\"50\"\n [attr.aria-label]=\"'TAG.TAGS_CREATOR.TAGS_LOADING' | translate\"\n />\n </div>\n</div>\n", styles: ["adf-tags-creator{display:block}adf-tags-creator .adf-no-tags-message{margin-top:28.5px;margin-bottom:0;height:30px}adf-tags-creator .adf-tag-name-field,adf-tags-creator .adf-tag-name-field[hidden]{display:flex;flex-direction:column;margin-right:12px}adf-tags-creator .adf-tag-search-field{background:var(--adf-metadata-buttons-background-color);border-radius:12px;padding:5px 6px;border:none;outline:none;font:inherit;color:currentcolor;margin:0;vertical-align:bottom;text-align:inherit;box-sizing:content-box}adf-tags-creator .adf-create-tag-label{color:var(--theme-primary-color);cursor:pointer;margin-top:-1px;padding-left:12px;overflow-wrap:anywhere;display:inline-block;padding-right:12px;overflow:auto}adf-tags-creator .adf-tags-list{margin-top:8px}adf-tags-creator .adf-tags-chip{height:auto}adf-tags-creator .adf-existing-tags-panel{border-top-left-radius:6px;border-top-right-radius:6px;width:100%}adf-tags-creator .adf-existing-tags-panel .adf-existing-tags-label{font-size:10px;color:var(--theme-secondary-text-color);padding-left:12px;margin-bottom:2px}adf-tags-creator .adf-existing-tags-panel .adf-tags-list{padding-left:12px;margin-top:-2px;padding-right:0;display:flex;flex-direction:column}adf-tags-creator .adf-existing-tags-panel .adf-tags-list .adf-tag{margin:0;padding:4px;font-size:14px;height:auto;width:unset;background-color:inherit;color:inherit}adf-tags-creator .adf-existing-tags-panel .adf-tags-list .adf-tag:not(.mdc-list-item--disabled):hover{cursor:pointer;background:var(--adf-theme-mat-grey-color-a200)}adf-tags-creator .adf-existing-tags-panel .adf-tags-list .adf-tag span{padding:0}adf-tags-creator .adf-existing-tags-panel .adf-tags-list .adf-tags-creator-spinner{margin:auto;overflow:unset;min-height:62px}adf-tags-creator .adf-existing-tags-panel .adf-tags-list .mdc-list-item--disabled .mdc-list-item__primary-text{opacity:1}adf-tags-creator .mdc-evolution-chip-set .mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,adf-tags-creator .mdc-evolution-chip-set .mat-mdc-standard-chip .mdc-evolution-chip__action--primary,adf-tags-creator .mdc-evolution-chip-set .mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:hidden;word-break:break-all}adf-tags-creator [hidden]{visibility:hidden;display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: AutoFocusDirective, selector: "[adf-auto-focus]" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i8.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i8.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: DynamicChipListComponent, selector: "adf-dynamic-chip-list", inputs: ["pagination", "chips", "showDelete", "disableDelete", "limitChipsDisplayed", "roundUpChips"], outputs: ["displayNext", "removedChip"] }], encapsulation: i0.ViewEncapsulation.None }); }
332
- }
333
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TagsCreatorComponent, decorators: [{
334
- type: Component,
335
- args: [{ selector: 'adf-tags-creator', standalone: true, imports: [
336
- CommonModule,
337
- MatInputModule,
338
- ReactiveFormsModule,
339
- AutoFocusDirective,
340
- TranslateModule,
341
- MatChipsModule,
342
- MatButtonModule,
343
- MatIconModule,
344
- MatListModule,
345
- MatProgressSpinnerModule,
346
- DynamicChipListComponent
347
- ], encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-tags-creation\">\n <div *ngIf=\"tagNameControlVisible\" class=\"adf-tag-name-field\">\n <input\n #tagNameInput\n class=\"adf-tag-search-field\"\n matInput\n autocomplete=\"off\"\n [formControl]=\"tagNameControl\"\n (keyup.enter)=\"addTag()\"\n adf-auto-focus\n placeholder=\"{{ 'TAG.TAGS_CREATOR.TAG_SEARCH_PLACEHOLDER' | translate }}\"\n />\n <mat-error *ngIf=\"tagNameControl.invalid && tagNameControl.touched\">\n {{ tagNameErrorMessageKey | translate }}\n </mat-error>\n </div>\n <p class=\"adf-no-tags-message\" *ngIf=\"showEmptyTagMessage\">\n {{ 'TAG.TAGS_CREATOR.NO_TAGS_CREATED' | translate }}\n </p>\n <div class=\"adf-tags-list\" [class.adf-tags-list-fixed]=\"!tagNameControlVisible\" #tagsList>\n <ng-container *ngIf=\"tags?.length > 0\">\n <adf-dynamic-chip-list\n class=\"adf-tags-chips-container\"\n [chips]=\"tagsToDisplay\"\n [disableDelete]=\"disabledTagsRemoving\"\n (removedChip)=\"removeTag($event)\" />\n </ng-container>\n </div>\n</div>\n<div class=\"adf-existing-tags-panel\" *ngIf=\"existingTagsPanelVisible\">\n <span\n *ngIf=\"!spinnerVisible || existingTags\"\n class=\"adf-create-tag-label\"\n (click)=\"addTag()\"\n role=\"button\"\n tabindex=\"0\"\n (keyup.enter)=\"addTag()\"\n [hidden]=\"!tagNameControl.value || tagNameControl.invalid || typing\"\n >\n {{ 'TAG.TAGS_CREATOR.CREATE_TAG' | translate : { tag: tagNameControl.value } }}\n </span>\n <p *ngIf=\"!spinnerVisible && existingTags\" class=\"adf-existing-tags-label\">\n {{ (isOnlyCreateMode() ? 'TAG.TAGS_CREATOR.EXISTING_TAGS' : 'TAG.TAGS_CREATOR.EXISTING_TAGS_SELECTION') | translate }}\n </p>\n <div class=\"adf-tags-list\">\n <mat-list *ngIf=\"!spinnerVisible && existingTags\" [disabled]=\"isOnlyCreateMode()\">\n <mat-list-item *ngFor=\"let tagRow of existingTags\" class=\"adf-tag\"\n (click)=\"addExistingTagToTagsToAssign(tagRow)\">\n {{ tagRow.entry.tag }}\n </mat-list-item>\n <p *ngIf=\"!existingTags?.length\">{{ 'TAG.TAGS_CREATOR.NO_EXISTING_TAGS' | translate }}</p>\n </mat-list>\n <mat-spinner\n *ngIf=\"spinnerVisible\"\n class=\"adf-tags-creator-spinner\"\n [diameter]=\"50\"\n [attr.aria-label]=\"'TAG.TAGS_CREATOR.TAGS_LOADING' | translate\"\n />\n </div>\n</div>\n", styles: ["adf-tags-creator{display:block}adf-tags-creator .adf-no-tags-message{margin-top:28.5px;margin-bottom:0;height:30px}adf-tags-creator .adf-tag-name-field,adf-tags-creator .adf-tag-name-field[hidden]{display:flex;flex-direction:column;margin-right:12px}adf-tags-creator .adf-tag-search-field{background:var(--adf-metadata-buttons-background-color);border-radius:12px;padding:5px 6px;border:none;outline:none;font:inherit;color:currentcolor;margin:0;vertical-align:bottom;text-align:inherit;box-sizing:content-box}adf-tags-creator .adf-create-tag-label{color:var(--theme-primary-color);cursor:pointer;margin-top:-1px;padding-left:12px;overflow-wrap:anywhere;display:inline-block;padding-right:12px;overflow:auto}adf-tags-creator .adf-tags-list{margin-top:8px}adf-tags-creator .adf-tags-chip{height:auto}adf-tags-creator .adf-existing-tags-panel{border-top-left-radius:6px;border-top-right-radius:6px;width:100%}adf-tags-creator .adf-existing-tags-panel .adf-existing-tags-label{font-size:10px;color:var(--theme-secondary-text-color);padding-left:12px;margin-bottom:2px}adf-tags-creator .adf-existing-tags-panel .adf-tags-list{padding-left:12px;margin-top:-2px;padding-right:0;display:flex;flex-direction:column}adf-tags-creator .adf-existing-tags-panel .adf-tags-list .adf-tag{margin:0;padding:4px;font-size:14px;height:auto;width:unset;background-color:inherit;color:inherit}adf-tags-creator .adf-existing-tags-panel .adf-tags-list .adf-tag:not(.mdc-list-item--disabled):hover{cursor:pointer;background:var(--adf-theme-mat-grey-color-a200)}adf-tags-creator .adf-existing-tags-panel .adf-tags-list .adf-tag span{padding:0}adf-tags-creator .adf-existing-tags-panel .adf-tags-list .adf-tags-creator-spinner{margin:auto;overflow:unset;min-height:62px}adf-tags-creator .adf-existing-tags-panel .adf-tags-list .mdc-list-item--disabled .mdc-list-item__primary-text{opacity:1}adf-tags-creator .mdc-evolution-chip-set .mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,adf-tags-creator .mdc-evolution-chip-set .mat-mdc-standard-chip .mdc-evolution-chip__action--primary,adf-tags-creator .mdc-evolution-chip-set .mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:hidden;word-break:break-all}adf-tags-creator [hidden]{visibility:hidden;display:none}\n"] }]
348
- }], ctorParameters: () => [{ type: i1.TagService }, { type: i2.NotificationService }], propDecorators: { mode: [{
349
- type: Input,
350
- args: [{ required: true }]
351
- }], disabledTagsRemoving: [{
352
- type: Input
353
- }], tags: [{
354
- type: Input
355
- }], tagNameControlVisible: [{
356
- type: Input
357
- }], existingTagsPanelVisibilityChange: [{
358
- type: Output
359
- }], tagsChange: [{
360
- type: Output
361
- }], tagsListElement: [{
362
- type: ViewChild,
363
- args: ['tagsList']
364
- }], tagNameInputElement: [{
365
- type: ViewChild,
366
- args: ['tagNameInput']
367
- }], hostClass: [{
368
- type: HostBinding,
369
- args: ['class.adf-creator-with-existing-tags-panel']
370
- }] } });
371
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy1jcmVhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvdGFnL3RhZ3MtY3JlYXRvci90YWdzLWNyZWF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi90YWcvdGFncy1jcmVhdG9yL3RhZ3MtY3JlYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQVEsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV6RixPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFB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a0JBQWtCLDREQUNsQixlQUFlLDJGQUNmLGNBQWMsOEJBQ2QsZUFBZSw4QkFDZixhQUFhLDhCQUNiLGFBQWEsdVJBQ2Isd0JBQXdCLG1PQUN4Qix3QkFBd0I7OzRGQU1uQixvQkFBb0I7a0JBcEJoQyxTQUFTOytCQUNJLGtCQUFrQixjQUNoQixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGFBQWE7d0JBQ2Isd0JBQXdCO3dCQUN4Qix3QkFBd0I7cUJBQzNCLGlCQUdjLGlCQUFpQixDQUFDLElBQUk7aUhBU3JDLElBQUk7c0JBREgsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT3pCLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFTRixJQUFJO3NCQURQLEtBQUs7Z0JBb0JGLHFCQUFxQjtzQkFEeEIsS0FBSztnQkF1Qk4saUNBQWlDO3NCQURoQyxNQUFNO2dCQU1QLFVBQVU7c0JBRFQsTUFBTTtnQkFpQ0MsZUFBZTtzQkFEdEIsU0FBUzt1QkFBQyxVQUFVO2dCQUdiLG1CQUFtQjtzQkFEMUIsU0FBUzt1QkFBQyxjQUFjO2dCQTZDckIsU0FBUztzQkFEWixXQUFXO3VCQUFDLDRDQUE0QyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQ2hpcCwgRHluYW1pY0NoaXBMaXN0Q29tcG9uZW50LCBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IFRhZ0VudHJ5LCBUYWdQYWdpbmcgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEVNUFRZLCBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmluYWxpemUsIGZpcnN0LCBtYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXV0b0ZvY3VzRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBUYWdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdGFnLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFnc0NyZWF0b3JNb2RlIH0gZnJvbSAnLi90YWdzLWNyZWF0b3ItbW9kZSc7XG5cbmludGVyZmFjZSBUYWdOYW1lQ29udHJvbEVycm9ycyB7XG4gICAgZHVwbGljYXRlZEV4aXN0aW5nVGFnPzogYm9vbGVhbjtcbiAgICBkdXBsaWNhdGVkQWRkZWRUYWc/OiBib29sZWFuO1xuICAgIGVtcHR5VGFnPzogYm9vbGVhbjtcbiAgICBzcGVjaWFsQ2hhcmFjdGVycz86IGJvb2xlYW47XG59XG5cbmNvbnN0IERFRkFVTFRfVEFHU19TT1JUSU5HID0ge1xuICAgIG9yZGVyQnk6ICd0YWcnLFxuICAgIGRpcmVjdGlvbjogJ2FzYydcbn07XG5cbi8qKlxuICogQWxsb3dzIHRvIGNyZWF0ZSBtdWx0aXBsZSB0YWdzLiBUaGF0IGNvbXBvbmVudCBjb250YWlucyBpbnB1dCBhbmQgdHdvIGxpc3RzLiBUb3AgbGlzdCBpcyBhbGwgY3JlYXRlZCB0YWdzLCBib3R0b20gbGlzdCBpcyBzZWFyY2hlZCB0YWdzIGJhc2VkIG9uIGlucHV0J3MgdmFsdWUuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLXRhZ3MtY3JlYXRvcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIEF1dG9Gb2N1c0RpcmVjdGl2ZSxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgICBNYXRDaGlwc01vZHVsZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRMaXN0TW9kdWxlLFxuICAgICAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgICAgIER5bmFtaWNDaGlwTGlzdENvbXBvbmVudFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhZ3MtY3JlYXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFncy1jcmVhdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBUYWdzQ3JlYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBNb2RlIGZvciBjb21wb25lbnQuXG4gICAgICogSW4gQ3JlYXRlIG1vZGUgd2UgY2FuJ3Qgc2VsZWN0IGV4aXN0aW5nIHRhZ3MsIHdlIGNhbiBvbmx5IGNyZWF0ZSB0aGVtLlxuICAgICAqIEluIENyZWF0ZSBhbmQgQXNzaWduIG1vZGUgd2UgY2FuIGJvdGggLSBjcmVhdGUgdGFncyBhbmQgc2VsZWN0IGV4aXN0aW5nIHRhZ3MuXG4gICAgICovXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBtb2RlOiBUYWdzQ3JlYXRvck1vZGU7XG5cbiAgICAvKipcbiAgICAgKiBGYWxzZSBpZiB0YWdzIGNhbiBiZSByZW1vdmVkIGZyb20gdG9wIGxpc3QsIHRydWUgb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWRUYWdzUmVtb3ZpbmcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgdG9wIGxpc3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGFncyB0YWdzIHdoaWNoIHNob3VsZCBiZSBkaXNwbGF5ZWQgYXMgZGVmYXVsdCB0YWdzIGZvciB0b3AgbGlzdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0YWdzKHRhZ3M6IHN0cmluZ1tdKSB7XG4gICAgICAgIHRoaXMuX3RhZ3MgPSBbLi4udGFnc107XG4gICAgICAgIHRoaXMudGFnc1RvRGlzcGxheSA9IHRoaXMudGFncy5tYXAoKHRhZykgPT4gKHsgaWQ6IHRhZywgbmFtZTogdGFnIH0pKTtcbiAgICAgICAgdGhpcy5faW5pdGlhbEV4aXN0aW5nVGFncyA9IG51bGw7XG4gICAgICAgIHRoaXMuX2V4aXN0aW5nVGFncyA9IG51bGw7XG4gICAgICAgIHRoaXMubG9hZFRhZ3ModGhpcy50YWdOYW1lQ29udHJvbC52YWx1ZSk7XG4gICAgICAgIHRoaXMudGFnTmFtZUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cblxuICAgIGdldCB0YWdzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhZ3M7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVjaWRlcyBpZiBpbnB1dCBmb3IgdGFncyBjcmVhdGlvbi9zZWFyY2hpbmcgc2hvdWxkIGJlIHZpc2libGUuIFdoZW4gaW5wdXQgaXMgaGlkZGVuIHRoZW4gcGFuZWwgb2YgZXhpc3RpbmcgdGFncyBpcyBoaWRkZW4gYXMgd2VsbC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0YWdOYW1lQ29udHJvbFZpc2libGUgdHJ1ZSBpZiBpbnB1dCBzaG91bGQgYmUgdmlzaWJsZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRhZ05hbWVDb250cm9sVmlzaWJsZSh0YWdOYW1lQ29udHJvbFZpc2libGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fdGFnTmFtZUNvbnRyb2xWaXNpYmxlID0gdGFnTmFtZUNvbnRyb2xWaXNpYmxlO1xuICAgICAgICBpZiAodGFnTmFtZUNvbnRyb2xWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLl9leGlzdGluZ1RhZ3NQYW5lbFZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50YWdOYW1lSW5wdXRFbGVtZW50Py5uYXRpdmVFbGVtZW50Py5zY3JvbGxJbnRvVmlldygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9leGlzdGluZ1RhZ3NQYW5lbFZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJUYWdOYW1lSW5wdXQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV4aXN0aW5nVGFnc1BhbmVsVmlzaWJpbGl0eUNoYW5nZS5lbWl0KHRoaXMuZXhpc3RpbmdUYWdzUGFuZWxWaXNpYmxlKTtcbiAgICB9XG5cbiAgICBnZXQgdGFnTmFtZUNvbnRyb2xWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFnTmFtZUNvbnRyb2xWaXNpYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgd2hlbiBib3R0b20gbGlzdCBpcyBzaG93aW5nIG9yIGhpZGluZy5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBleGlzdGluZ1RhZ3NQYW5lbFZpc2liaWxpdHlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHRhZ3MgaW4gdG9wIGxpc3QgYXJlIGNoYW5nZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgdGFnc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XG5cbiAgICB0YWdzVG9EaXNwbGF5OiBDaGlwW10gPSBbXTtcblxuICAgIHJlYWRvbmx5IG5hbWVFcnJvck1lc3NhZ2VzQnlFcnJvcnMgPSBuZXcgTWFwPGtleW9mIFRhZ05hbWVDb250cm9sRXJyb3JzLCBzdHJpbmc+KFtcbiAgICAgICAgWydkdXBsaWNhdGVkRXhpc3RpbmdUYWcnLCAnRVhJU1RJTkdfVEFHJ10sXG4gICAgICAgIFsnZHVwbGljYXRlZEFkZGVkVGFnJywgJ0FMUkVBRFlfQURERURfVEFHJ10sXG4gICAgICAgIFsnZW1wdHlUYWcnLCAnRU1QVFlfVEFHJ10sXG4gICAgICAgIFsnc3BlY2lhbENoYXJhY3RlcnMnLCAnU1BFQ0lBTF9DSEFSQUNURVJTJ11cbiAgICBdKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXhpc3RpbmdUYWdzTGlzdExpbWl0ID0gMTU7XG5cbiAgICBwcml2YXRlIGV4YWN0VGFnU2V0JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfdGFnczogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIF90YWdOYW1lQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KFxuICAgICAgICAnJyxcbiAgICAgICAgW3RoaXMudmFsaWRhdGVJZk5vdEFscmVhZHlBZGRlZC5iaW5kKHRoaXMpLCB0aGlzLnZhbGlkYXRlRW1wdHlUYWcsIHRoaXMudmFsaWRhdGVTcGVjaWFsQ2hhcmFjdGVyc10sXG4gICAgICAgIHRoaXMudmFsaWRhdGVJZk5vdEV4aXN0aW5nVGFnLmJpbmQodGhpcylcbiAgICApO1xuICAgIHByaXZhdGUgX3RhZ05hbWVDb250cm9sVmlzaWJsZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2V4aXN0aW5nVGFnczogVGFnRW50cnlbXTtcbiAgICBwcml2YXRlIF9pbml0aWFsRXhpc3RpbmdUYWdzOiBUYWdFbnRyeVtdO1xuICAgIHByaXZhdGUgX3RhZ05hbWVFcnJvck1lc3NhZ2VLZXkgPSAnJztcbiAgICBwcml2YXRlIF9zcGlubmVyVmlzaWJsZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgX3R5cGluZyA9IGZhbHNlO1xuICAgIHByaXZhdGUgX3RhZ3NMaXN0U2Nyb2xsYmFyVmlzaWJsZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgY2FuY2VsRXhpc3RpbmdUYWdzTG9hZGluZyQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgZXhpc3RpbmdFeGFjdFRhZzogVGFnRW50cnk7XG4gICAgcHJpdmF0ZSBfZXhpc3RpbmdUYWdzUGFuZWxWaXNpYmxlOiBib29sZWFuO1xuXG4gICAgQFZpZXdDaGlsZCgndGFnc0xpc3QnKVxuICAgIHByaXZhdGUgdGFnc0xpc3RFbGVtZW50OiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ3RhZ05hbWVJbnB1dCcpXG4gICAgcHJpdmF0ZSB0YWdOYW1lSW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB0YWdTZXJ2aWNlOiBUYWdTZXJ2aWNlLCBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UpIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWdOYW1lQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgobmFtZTogc3RyaW5nKSA9PiBuYW1lLnRyaW0oKSksXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXZpb3VzLCBjdXJyZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlTm90Q2hhbmdlZCA9IHByZXZpb3VzID09PSBjdXJyZW50O1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVOb3RDaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV4YWN0VGFnU2V0JC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlTm90Q2hhbmdlZDtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YXAoKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90eXBpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3Bpbm5lclZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXhpc3RpbmdUYWdzUGFuZWxWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmV4aXN0aW5nVGFnc1BhbmVsVmlzaWJpbGl0eUNoYW5nZS5lbWl0KHRoaXMuZXhpc3RpbmdUYWdzUGFuZWxWaXNpYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5jZWxFeGlzdGluZ1RhZ3NMb2FkaW5nJC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2luaXRpYWxFeGlzdGluZ1RhZ3MgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9leGlzdGluZ1RhZ3MgPSBudWxsO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlKChuYW1lOiBzdHJpbmcpID0+IChuYW1lID8gdGltZXIoMzAwKSA6IEVNUFRZKSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKG5hbWU6IHN0cmluZykgPT4gdGhpcy5vblRhZ05hbWVDb250cm9sVmFsdWVDaGFuZ2UobmFtZSkpO1xuXG4gICAgICAgIHRoaXMudGFnTmFtZUNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zZXRUYWdOYW1lQ29udHJvbEVycm9yTWVzc2FnZUtleSgpKTtcblxuICAgICAgICB0aGlzLnNldFRhZ05hbWVDb250cm9sRXJyb3JNZXNzYWdlS2V5KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FuY2VsRXhpc3RpbmdUYWdzTG9hZGluZyQubmV4dCgpO1xuICAgICAgICB0aGlzLmNhbmNlbEV4aXN0aW5nVGFnc0xvYWRpbmckLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hZGYtY3JlYXRvci13aXRoLWV4aXN0aW5nLXRhZ3MtcGFuZWwnKVxuICAgIGdldCBob3N0Q2xhc3MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4aXN0aW5nVGFnc1BhbmVsVmlzaWJsZTtcbiAgICB9XG5cbiAgICBnZXQgdGFnTmFtZUNvbnRyb2woKTogRm9ybUNvbnRyb2w8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWdOYW1lQ29udHJvbDtcbiAgICB9XG5cbiAgICAvKlxuICAgICAqIFJldHVybnMgYHRydWVgIGlmIHRhZ3MgZW1wdHkgYW5kIG5vbiBlZGl0YWJsZSBzdGF0ZSwgb3RoZXJ3aXNlIGBmYWxzZWBcbiAgICAgKi9cbiAgICBnZXQgc2hvd0VtcHR5VGFnTWVzc2FnZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFncz8ubGVuZ3RoID09PSAwICYmICF0aGlzLnRhZ05hbWVDb250cm9sVmlzaWJsZTtcbiAgICB9XG5cbiAgICBnZXQgZXhpc3RpbmdUYWdzKCk6IFRhZ0VudHJ5W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXhpc3RpbmdUYWdzO1xuICAgIH1cblxuICAgIGdldCB0YWdOYW1lRXJyb3JNZXNzYWdlS2V5KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWdOYW1lRXJyb3JNZXNzYWdlS2V5O1xuICAgIH1cblxuICAgIGdldCBzcGlubmVyVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NwaW5uZXJWaXNpYmxlO1xuICAgIH1cblxuICAgIGdldCB0eXBpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90eXBpbmc7XG4gICAgfVxuXG4gICAgZ2V0IHRhZ3NMaXN0U2Nyb2xsYmFyVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhZ3NMaXN0U2Nyb2xsYmFyVmlzaWJsZTtcbiAgICB9XG5cbiAgICBnZXQgZXhpc3RpbmdUYWdzUGFuZWxWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXhpc3RpbmdUYWdzUGFuZWxWaXNpYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCB0YWdzIHRvIHRvcCBsaXN0IHVzaW5nIHZhbHVlIHdoaWNoIGlzIHNldCBpbiBpbnB1dC4gQWRkaW5nIHRhZyBpcyBub3QgYWxsb3dlZCB3aGVuIHZhbHVlIGluIGlucHV0IGlzIGludmFsaWRcbiAgICAgKiBvciBpZiB1c2VyIGlzIHN0aWxsIHR5cGluZyB3aGF0IG1lYW5zIHRoYXQgdmFsaWRhdGlvbiBmb3IgaW5wdXQgaXMgbm90IGNhbGxlZCB5ZXQuXG4gICAgICovXG4gICAgYWRkVGFnKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3R5cGluZyAmJiAhdGhpcy50YWdOYW1lQ29udHJvbC5pbnZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLnRhZ3MgPSBbLi4udGhpcy50YWdzLCB0aGlzLnRhZ05hbWVDb250cm9sLnZhbHVlLnRyaW0oKV07XG4gICAgICAgICAgICB0aGlzLmNsZWFyVGFnTmFtZUlucHV0KCk7XG4gICAgICAgICAgICB0aGlzLmNoZWNrU2Nyb2xsYmFyVmlzaWJpbGl0eSgpO1xuICAgICAgICAgICAgdGhpcy50YWdzQ2hhbmdlLmVtaXQodGhpcy50YWdzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSB0YWcgZnJvbSB0b3AgbGlzdC4gSW4gY2FzZSB0aGF0IHRhZyB3YXMgcGFydCBvZiBzZWFyY2ggcmVzdWx0IHRoZW4gdGhhdCB0YWcgaXMgbW92ZWQgdG8gYm90dG9tIGxpc3RcbiAgICAgKiAobGlzdCBvZiBleGlzdGluZyB0YWdzKSBhZnRlciByZW1vdmluZyBzbyB1c2VyIGNhbiByZXNlbGVjdCBpdCBhZ2FpbiBsYXRlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0YWcgdGFnJ3MgbmFtZSB3aGljaCBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRvcCBsaXN0LlxuICAgICAqL1xuICAgIHJlbW92ZVRhZyh0YWc6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlbW92ZVRhZ0Zyb21BcnJheSh0aGlzLnRhZ3MsIHRhZyk7XG4gICAgICAgIHRoaXMudGFncyA9IFsuLi50aGlzLnRhZ3NdO1xuICAgICAgICB0aGlzLnRhZ05hbWVDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgdGhpcy51cGRhdGVFeGlzdGluZ1RhZ3NMaXN0T25SZW1vdmVGcm9tVGFnc1RvQ29uZmlybSh0YWcpO1xuICAgICAgICB0aGlzLmV4YWN0VGFnU2V0JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuY2hlY2tTY3JvbGxiYXJWaXNpYmlsaXR5KCk7XG4gICAgICAgIHRoaXMudGFnc0NoYW5nZS5lbWl0KHRoaXMudGFncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbGVkIHdoZW4gdXNlciBzZWxlY3RzIGFueSB0YWcgZnJvbSBsaXN0IG9mIGV4aXN0aW5nIHRhZ3MuIEl0IG1vdmVzIHRhZyBmcm9tIGV4aXN0aW5nIHRhZ3MgbGlzdCB0byB0b3AgbGlzdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzZWxlY3RlZFRhZyBjaGFuZ2VzXG4gICAgICovXG4gICAgYWRkRXhpc3RpbmdUYWdUb1RhZ3NUb0Fzc2lnbihzZWxlY3RlZFRhZzogVGFnRW50cnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT25seUNyZWF0ZU1vZGUoKSkge1xuICAgICAgICAgICAgdGhpcy50YWdzLnB1c2goc2VsZWN0ZWRUYWcuZW50cnkudGFnKTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlVGFnRnJvbUFycmF5KHRoaXMuZXhpc3RpbmdUYWdzLCBzZWxlY3RlZFRhZyk7XG4gICAgICAgICAgICB0aGlzLnRhZ05hbWVDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICAgIHRoaXMudGFncyA9IFsuLi50aGlzLnRhZ3NdO1xuICAgICAgICAgICAgdGhpcy5leGFjdFRhZ1NldCQubmV4dCgpO1xuICAgICAgICAgICAgdGhpcy50YWdzQ2hhbmdlLmVtaXQodGhpcy50YWdzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBjb21wb25lbnQgaXMgaW4gQ3JlYXRlIG1vZGUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYENyZWF0ZWAgbW9kZSwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAgICovXG4gICAgaXNPbmx5Q3JlYXRlTW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gVGFnc0NyZWF0b3JNb2RlLkNSRUFURTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uVGFnTmFtZUNvbnRyb2xWYWx1ZUNoYW5nZShuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWdOYW1lQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMubG9hZFRhZ3MobmFtZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkVGFncyhuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKG5hbWUgJiYgIXRoaXMudGFnTmFtZUNvbnRyb2wuaGFzRXJyb3IoJ3NwZWNpYWxDaGFyYWN0ZXJzJykpIHtcbiAgICAgICAgICAgIGZvcmtKb2luKHtcbiAgICAgICAgICAgICAgICBleGFjdFJlc3VsdDogdGhpcy50YWdTZXJ2aWNlLmZpbmRUYWdCeU5hbWUobmFtZSksXG4gICAgICAgICAgICAgICAgc2VhcmNoZWRSZXN1bHQ6IHRoaXMudGFnU2VydmljZS5zZWFyY2hUYWdzKG5hbWUsIERFRkFVTFRfVEFHU19TT1JUSU5HLCBmYWxzZSwgMCwgdGhpcy5leGlzdGluZ1RhZ3NMaXN0TGltaXQpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5jYW5jZWxFeGlzdGluZ1RhZ3NMb2FkaW5nJCksXG4gICAgICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+ICh0aGlzLl90eXBpbmcgPSBmYWxzZSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgICAgICBuZXh0OiAoeyBleGFjdFJlc3VsdCwgc2VhcmNoZWRSZXN1bHQgfTogeyBleGFjdFJlc3VsdDogVGFnRW50cnk7IHNlYXJjaGVkUmVzdWx0OiBUYWdQYWdpbmcgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4YWN0UmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leGlzdGluZ0V4YWN0VGFnID0gZXhhY3RSZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVFeGFjdFRhZ0Zyb21TZWFyY2hlZFJlc3VsdChzZWFyY2hlZFJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoZWRSZXN1bHQubGlzdC5lbnRyaWVzLnVuc2hpZnQoZXhhY3RSZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV4aXN0aW5nRXhhY3RUYWcgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbml0aWFsRXhpc3RpbmdUYWdzID0gc2VhcmNoZWRSZXN1bHQubGlzdC5lbnRyaWVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leGNsdWRlQWxyZWFkeUFkZGVkVGFncyh0aGlzLl9pbml0aWFsRXhpc3RpbmdUYWdzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhhY3RUYWdTZXQkLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NwaW5uZXJWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvd0Vycm9yKCdUQUcuVEFHU19DUkVBVE9SLkVSUk9SUy5GRVRDSF9UQUdTJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zcGlubmVyVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmV4aXN0aW5nRXhhY3RUYWcgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fc3Bpbm5lclZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlRXhhY3RUYWdGcm9tU2VhcmNoZWRSZXN1bHQoc2VhcmNoZWRSZXN1bHQ6IFRhZ1BhZ2luZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBleGFjdFRhZ0luZGV4ID0gc2VhcmNoZWRSZXN1bHQubGlzdC5lbnRyaWVzLmZpbmRJbmRleCgocm93KSA9PiB0aGlzLmNvbXBhcmVUYWdzKHJvdy5lbnRyeS50YWcsIHRoaXMuZXhpc3RpbmdFeGFjdFRhZy5lbnRyeS50YWcpKTtcblxuICAgICAgICBpZiAoZXhhY3RUYWdJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICBzZWFyY2hlZFJlc3VsdC5saXN0LmVudHJpZXMuc3BsaWNlKGV4YWN0VGFnSW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUlmTm90RXhpc3RpbmdUYWcodGFnTmFtZUNvbnRyb2w6IEZvcm1Db250cm9sPHN0cmluZz4pOiBPYnNlcnZhYmxlPFRhZ05hbWVDb250cm9sRXJyb3JzIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5leGFjdFRhZ1NldCQucGlwZShcbiAgICAgICAgICAgIG1hcDx2b2lkLCBUYWdOYW1lQ29udHJvbEVycm9ycyB8IG51bGw+KCgpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wYXJlVGFncyh0YWdOYW1lQ29udHJvbC52YWx1ZSwgdGhpcy5leGlzdGluZ0V4YWN0VGFnPy5lbnRyeT8udGFnKSA/IHsgZHVwbGljYXRlZEV4aXN0aW5nVGFnOiB0cnVlIH0gOiBudWxsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmlyc3QoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVJZk5vdEFscmVhZHlBZGRlZCh0YWdOYW1lQ29udHJvbDogRm9ybUNvbnRyb2w8c3RyaW5nPik6IFRhZ05hbWVDb250cm9sRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhZ3Muc29tZSgodGFnKSA9PiB0aGlzLmNvbXBhcmVUYWdzKHRhZywgdGFnTmFtZUNvbnRyb2wudmFsdWUpKSA/IHsgZHVwbGljYXRlZEFkZGVkVGFnOiB0cnVlIH0gOiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29tcGFyZVRhZ3ModGFnTmFtZTE/OiBzdHJpbmcsIHRhZ05hbWUyPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0YWdOYW1lMT8udHJpbSgpLnRvVXBwZXJDYXNlKCkgPT09IHRhZ05hbWUyPy50cmltKCkudG9VcHBlckNhc2UoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlRW1wdHlUYWcodGFnTmFtZUNvbnRyb2w6IEZvcm1Db250cm9sPHN0cmluZz4pOiBUYWdOYW1lQ29udHJvbEVycm9ycyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGFnTmFtZUNvbnRyb2wudmFsdWUubGVuZ3RoICYmICF0YWdOYW1lQ29udHJvbC52YWx1ZS50cmltKCkgPyB7IGVtcHR5VGFnOiB0cnVlIH0gOiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVTcGVjaWFsQ2hhcmFjdGVycyh0YWdOYW1lQ29udHJvbDogRm9ybUNvbnRyb2w8c3RyaW5nPik6IFRhZ05hbWVDb250cm9sRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHNwZWNpYWxTeW1ib2xzUmVnZXggPSAvW3t9KCleJzpcIlxcXFx8PD4vPy4qXS87XG4gICAgICAgIHJldHVybiB0YWdOYW1lQ29udHJvbC52YWx1ZS5sZW5ndGggJiYgc3BlY2lhbFN5bWJvbHNSZWdleC50ZXN0KHRhZ05hbWVDb250cm9sLnZhbHVlKSA/IHsgc3BlY2lhbENoYXJhY3RlcnM6IHRydWUgfSA6IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRUYWdOYW1lQ29udHJvbEVycm9yTWVzc2FnZUtleSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFnTmFtZUVycm9yTWVzc2FnZUtleSA9IHRoaXMudGFnTmFtZUNvbnRyb2wuaW52YWxpZFxuICAgICAgICAgICAgPyBgVEFHLlRBR1NfQ1JFQVRPUi5FUlJPUlMuJHt0aGlzLm5hbWVFcnJvck1lc3NhZ2VzQnlFcnJvcnMuZ2V0KFxuICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXModGhpcy50YWdOYW1lQ29udHJvbC5lcnJvcnMpWzBdIGFzIGtleW9mIFRhZ05hbWVDb250cm9sRXJyb3JzXG4gICAgICAgICAgICAgICl9YFxuICAgICAgICAgICAgOiAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrU2Nyb2xsYmFyVmlzaWJpbGl0eSgpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl90YWdzTGlzdFNjcm9sbGJhclZpc2libGUgPSB0aGlzLnRhZ3NMaXN0RWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCA+IHRoaXMudGFnc0xpc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZVRhZ0Zyb21BcnJheTxUPih0YWdzOiBUW10sIHRhZzogVCkge1xuICAgICAgICB0YWdzLnNwbGljZSh0YWdzLmluZGV4T2YodGFnKSwgMSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVFeGlzdGluZ1RhZ3NMaXN0T25SZW1vdmVGcm9tVGFnc1RvQ29uZmlybSh0YWc6IHN0cmluZykge1xuICAgICAgICBjb25zdCBlbnRyeUZvclRhZ0FkZGVkVG9FeGlzdGluZ1RhZ3MgPSB0aGlzLl9pbml0aWFsRXhpc3RpbmdUYWdzPy5maW5kKCh0YWdFbnRyeSkgPT4gdGFnRW50cnkuZW50cnkudGFnID09PSB0YWcpO1xuICAgICAgICBpZiAoZW50cnlGb3JUYWdBZGRlZFRvRXhpc3RpbmdUYWdzKSB7XG4gICAgICAgICAgICB0aGlzLmV4aXN0aW5nVGFncy51bnNoaWZ0KGVudHJ5Rm9yVGFnQWRkZWRUb0V4aXN0aW5nVGFncyk7XG4gICAgICAgICAgICBpZiAodGhpcy5leGlzdGluZ0V4YWN0VGFnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhZyAhPT0gdGhpcy5leGlzdGluZ0V4YWN0VGFnLmVudHJ5LnRhZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVRhZ0Zyb21BcnJheSh0aGlzLmV4aXN0aW5nVGFncywgdGhpcy5leGlzdGluZ0V4YWN0VGFnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3J0RXhpc3RpbmdUYWdzKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXhpc3RpbmdUYWdzLnVuc2hpZnQodGhpcy5leGlzdGluZ0V4YWN0VGFnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc29ydEV4aXN0aW5nVGFncygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5leGFjdFRhZ1NldCQubmV4dCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0RXhpc3RpbmdUYWdzKCkge1xuICAgICAgICB0aGlzLmV4aXN0aW5nVGFncy5zb3J0KCh0YWdFbnRyeTEsIHRhZ0VudHJ5MikgPT4gdGFnRW50cnkxLmVudHJ5LnRhZy5sb2NhbGVDb21wYXJlKHRhZ0VudHJ5Mi5lbnRyeS50YWcpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4Y2x1ZGVBbHJlYWR5QWRkZWRUYWdzKHRhZ3M6IFRhZ0VudHJ5W10pIHtcbiAgICAgICAgdGhpcy5fZXhpc3RpbmdUYWdzID0gdGFncy5maWx0ZXIoKHRhZykgPT4gIXRoaXMudGFncy5pbmNsdWRlcyh0YWcuZW50cnkudGFnKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhclRhZ05hbWVJbnB1dCgpIHtcbiAgICAgICAgdGhpcy50YWdOYW1lQ29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgICAgIHRoaXMudGFnTmFtZUNvbnRyb2wubWFya0FzVW50b3VjaGVkKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFkZi10YWdzLWNyZWF0aW9uXCI+XG4gICAgPGRpdiAqbmdJZj1cInRhZ05hbWVDb250cm9sVmlzaWJsZVwiIGNsYXNzPVwiYWRmLXRhZy1uYW1lLWZpZWxkXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI3RhZ05hbWVJbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJhZGYtdGFnLXNlYXJjaC1maWVsZFwiXG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJ0YWdOYW1lQ29udHJvbFwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiYWRkVGFnKClcIlxuICAgICAgICAgICAgYWRmLWF1dG8tZm9jdXNcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ1RBRy5UQUdTX0NSRUFUT1IuVEFHX1NFQVJDSF9QTEFDRUhPTERFUicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAvPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwidGFnTmFtZUNvbnRyb2wuaW52YWxpZCAmJiB0YWdOYW1lQ29udHJvbC50b3VjaGVkXCI+XG4gICAgICAgICAgICB7eyB0YWdOYW1lRXJyb3JNZXNzYWdlS2V5IHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgIDwvZGl2PlxuICAgIDxwIGNsYXNzPVwiYWRmLW5vLXRhZ3MtbWVzc2FnZVwiICpuZ0lmPVwic2hvd0VtcHR5VGFnTWVzc2FnZVwiPlxuICAgICAgICB7eyAnVEFHLlRBR1NfQ1JFQVRPUi5OT19UQUdTX0NSRUFURUQnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9wPlxuICAgIDxkaXYgY2xhc3M9XCJhZGYtdGFncy1saXN0XCIgW2NsYXNzLmFkZi10YWdzLWxpc3QtZml4ZWRdPVwiIXRhZ05hbWVDb250cm9sVmlzaWJsZVwiICN0YWdzTGlzdD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhZ3M/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxhZGYtZHluYW1pYy1jaGlwLWxpc3RcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi10YWdzLWNoaXBzLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgW2NoaXBzXT1cInRhZ3NUb0Rpc3BsYXlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlRGVsZXRlXT1cImRpc2FibGVkVGFnc1JlbW92aW5nXCJcbiAgICAgICAgICAgICAgICAocmVtb3ZlZENoaXApPVwicmVtb3ZlVGFnKCRldmVudClcIiAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImFkZi1leGlzdGluZy10YWdzLXBhbmVsXCIgKm5nSWY9XCJleGlzdGluZ1RhZ3NQYW5lbFZpc2libGVcIj5cbiAgICA8c3BhblxuICAgICAgICAqbmdJZj1cIiFzcGlubmVyVmlzaWJsZSB8fCBleGlzdGluZ1RhZ3NcIlxuICAgICAgICBjbGFzcz1cImFkZi1jcmVhdGUtdGFnLWxhYmVsXCJcbiAgICAgICAgKGNsaWNrKT1cImFkZFRhZygpXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJhZGRUYWcoKVwiXG4gICAgICAgIFtoaWRkZW5dPVwiIXRhZ05hbWVDb250cm9sLnZhbHVlIHx8IHRhZ05hbWVDb250cm9sLmludmFsaWQgfHwgdHlwaW5nXCJcbiAgICA+XG4gICAgICAgIHt7ICdUQUcuVEFHU19DUkVBVE9SLkNSRUFURV9UQUcnIHwgdHJhbnNsYXRlIDogeyB0YWc6IHRhZ05hbWVDb250cm9sLnZhbHVlIH0gfX1cbiAgICA8L3NwYW4+XG4gICAgPHAgKm5nSWY9XCIhc3Bpbm5lclZpc2libGUgJiYgZXhpc3RpbmdUYWdzXCIgY2xhc3M9XCJhZGYtZXhpc3RpbmctdGFncy1sYWJlbFwiPlxuICAgICAgICB7eyAoaXNPbmx5Q3JlYXRlTW9kZSgpID8gJ1RBRy5UQUdTX0NSRUFUT1IuRVhJU1RJTkdfVEFHUycgOiAnVEFHLlRBR1NfQ1JFQVRPUi5FWElTVElOR19UQUdTX1NFTEVDVElPTicpIHwgdHJhbnNsYXRlIH19XG4gICAgPC9wPlxuICAgIDxkaXYgY2xhc3M9XCJhZGYtdGFncy1saXN0XCI+XG4gICAgICAgIDxtYXQtbGlzdCAqbmdJZj1cIiFzcGlubmVyVmlzaWJsZSAmJiBleGlzdGluZ1RhZ3NcIiBbZGlzYWJsZWRdPVwiaXNPbmx5Q3JlYXRlTW9kZSgpXCI+XG4gICAgICAgICAgICA8bWF0LWxpc3QtaXRlbSAqbmdGb3I9XCJsZXQgdGFnUm93IG9mIGV4aXN0aW5nVGFnc1wiIGNsYXNzPVwiYWRmLXRhZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkRXhpc3RpbmdUYWdUb1RhZ3NUb0Fzc2lnbih0YWdSb3cpXCI+XG4gICAgICAgICAgICAgICAge3sgdGFnUm93LmVudHJ5LnRhZyB9fVxuICAgICAgICAgICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgICAgICAgICAgPHAgKm5nSWY9XCIhZXhpc3RpbmdUYWdzPy5sZW5ndGhcIj57eyAnVEFHLlRBR1NfQ1JFQVRPUi5OT19FWElTVElOR19UQUdTJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgPC9tYXQtbGlzdD5cbiAgICAgICAgPG1hdC1zcGlubmVyXG4gICAgICAgICAgICAqbmdJZj1cInNwaW5uZXJWaXNpYmxlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLXRhZ3MtY3JlYXRvci1zcGlubmVyXCJcbiAgICAgICAgICAgIFtkaWFtZXRlcl09XCI1MFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidUQUcuVEFHU19DUkVBVE9SLlRBR1NfTE9BRElORycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAvPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,56 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { NgModule, APP_INITIALIZER } from '@angular/core';
18
- import { NoopAnimationsModule } from '@angular/platform-browser/animations';
19
- import { CoreModule, NoopTranslateModule, NoopAuthModule } from '@alfresco/adf-core';
20
- import { ContentModule } from '../content.module';
21
- import { versionCompatibilityFactory } from '../version-compatibility/version-compatibility-factory';
22
- import { AlfrescoApiService } from '../services/alfresco-api.service';
23
- import { VersionCompatibilityService } from '../version-compatibility/version-compatibility.service';
24
- import { MatIconTestingModule } from '@angular/material/icon/testing';
25
- import { AlfrescoApiServiceMock } from '../mock';
26
- import * as i0 from "@angular/core";
27
- export class ContentTestingModule {
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
29
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ContentTestingModule, imports: [NoopAnimationsModule, CoreModule, NoopAuthModule, NoopTranslateModule, ContentModule, MatIconTestingModule], exports: [NoopAnimationsModule, CoreModule, ContentModule] }); }
30
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentTestingModule, providers: [
31
- { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
32
- {
33
- provide: APP_INITIALIZER,
34
- useFactory: versionCompatibilityFactory,
35
- deps: [VersionCompatibilityService],
36
- multi: true
37
- }
38
- ], imports: [NoopAnimationsModule, CoreModule, NoopAuthModule, NoopTranslateModule, ContentModule, MatIconTestingModule, NoopAnimationsModule, CoreModule, ContentModule] }); }
39
- }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentTestingModule, decorators: [{
41
- type: NgModule,
42
- args: [{
43
- imports: [NoopAnimationsModule, CoreModule, NoopAuthModule, NoopTranslateModule, ContentModule, MatIconTestingModule],
44
- providers: [
45
- { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
46
- {
47
- provide: APP_INITIALIZER,
48
- useFactory: versionCompatibilityFactory,
49
- deps: [VersionCompatibilityService],
50
- multi: true
51
- }
52
- ],
53
- exports: [NoopAnimationsModule, CoreModule, ContentModule]
54
- }]
55
- }] });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC50ZXN0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvdGVzdGluZy9jb250ZW50LnRlc3RpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFlakQsTUFBTSxPQUFPLG9CQUFvQjsrR0FBcEIsb0JBQW9CO2dIQUFwQixvQkFBb0IsWUFabkIsb0JBQW9CLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsb0JBQW9CLGFBVTFHLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxhQUFhO2dIQUVoRCxvQkFBb0IsYUFYbEI7WUFDUCxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUU7WUFDakU7Z0JBQ0ksT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLFVBQVUsRUFBRSwyQkFBMkI7Z0JBQ3ZDLElBQUksRUFBRSxDQUFDLDJCQUEyQixDQUFDO2dCQUNuQyxLQUFLLEVBQUUsSUFBSTthQUNkO1NBQ0osWUFUUyxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFVMUcsb0JBQW9CLEVBQUUsVUFBVSxFQUFFLGFBQWE7OzRGQUVoRCxvQkFBb0I7a0JBYmhDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsb0JBQW9CLENBQUM7b0JBQ3JILFNBQVMsRUFBRTt3QkFDUCxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUU7d0JBQ2pFOzRCQUNJLE9BQU8sRUFBRSxlQUFlOzRCQUN4QixVQUFVLEVBQUUsMkJBQTJCOzRCQUN2QyxJQUFJLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQzs0QkFDbkMsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0o7b0JBQ0QsT0FBTyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQztpQkFDN0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IE5nTW9kdWxlLCBBUFBfSU5JVElBTElaRVIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vb3BBbmltYXRpb25zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvcmVNb2R1bGUsIE5vb3BUcmFuc2xhdGVNb2R1bGUsIE5vb3BBdXRoTW9kdWxlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IENvbnRlbnRNb2R1bGUgfSBmcm9tICcuLi9jb250ZW50Lm1vZHVsZSc7XG5pbXBvcnQgeyB2ZXJzaW9uQ29tcGF0aWJpbGl0eUZhY3RvcnkgfSBmcm9tICcuLi92ZXJzaW9uLWNvbXBhdGliaWxpdHkvdmVyc2lvbi1jb21wYXRpYmlsaXR5LWZhY3RvcnknO1xuaW1wb3J0IHsgQWxmcmVzY29BcGlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWxmcmVzY28tYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmVyc2lvbkNvbXBhdGliaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vdmVyc2lvbi1jb21wYXRpYmlsaXR5L3ZlcnNpb24tY29tcGF0aWJpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IE1hdEljb25UZXN0aW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbi90ZXN0aW5nJztcbmltcG9ydCB7IEFsZnJlc2NvQXBpU2VydmljZU1vY2sgfSBmcm9tICcuLi9tb2NrJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbTm9vcEFuaW1hdGlvbnNNb2R1bGUsIENvcmVNb2R1bGUsIE5vb3BBdXRoTW9kdWxlLCBOb29wVHJhbnNsYXRlTW9kdWxlLCBDb250ZW50TW9kdWxlLCBNYXRJY29uVGVzdGluZ01vZHVsZV0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogQWxmcmVzY29BcGlTZXJ2aWNlLCB1c2VDbGFzczogQWxmcmVzY29BcGlTZXJ2aWNlTW9jayB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiB2ZXJzaW9uQ29tcGF0aWJpbGl0eUZhY3RvcnksXG4gICAgICAgICAgICBkZXBzOiBbVmVyc2lvbkNvbXBhdGliaWxpdHlTZXJ2aWNlXSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdLFxuICAgIGV4cG9ydHM6IFtOb29wQW5pbWF0aW9uc01vZHVsZSwgQ29yZU1vZHVsZSwgQ29udGVudE1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudFRlc3RpbmdNb2R1bGUge31cbiJdfQ==