@alfresco/adf-core 7.1.0-15303058550 → 8.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (702) hide show
  1. package/api/lib/alfresco-api/alfresco-api.utils.d.ts +1 -1
  2. package/breadcrumbs/styles/_breadcrumb.theme.scss +4 -4
  3. package/bundles/assets/adf-core/i18n/de.json +4 -2
  4. package/bundles/assets/adf-core/i18n/en.json +3 -1
  5. package/bundles/assets/adf-core/i18n/es.json +3 -1
  6. package/bundles/assets/adf-core/i18n/fr.json +3 -1
  7. package/bundles/assets/adf-core/i18n/it.json +3 -1
  8. package/bundles/assets/adf-core/i18n/pl.json +3 -1
  9. package/bundles/assets/adf-core/i18n/pt.json +3 -1
  10. package/custom-theme/README.md +3 -0
  11. package/custom-theme/material-theme.scss +4 -7
  12. package/custom-theme/theme/custom-theme-palettes.scss +8 -12
  13. package/custom-theme/theme/typography.scss +26 -26
  14. package/feature-flags/lib/providers/debug-feature-flags.provider.d.ts +4 -35
  15. package/feature-flags/lib/services/debug-features.service.d.ts +7 -6
  16. package/feature-flags/lib/services/storage-features.service.d.ts +6 -6
  17. package/fesm2022/adf-core.mjs +1558 -1402
  18. package/fesm2022/adf-core.mjs.map +1 -1
  19. package/fesm2022/alfresco-adf-core-api.mjs +3 -3
  20. package/fesm2022/alfresco-adf-core-api.mjs.map +1 -1
  21. package/fesm2022/alfresco-adf-core-auth.mjs +6 -6
  22. package/fesm2022/alfresco-adf-core-auth.mjs.map +1 -1
  23. package/fesm2022/alfresco-adf-core-breadcrumbs.mjs +12 -13
  24. package/fesm2022/alfresco-adf-core-breadcrumbs.mjs.map +1 -1
  25. package/fesm2022/alfresco-adf-core-feature-flags.mjs +88 -78
  26. package/fesm2022/alfresco-adf-core-feature-flags.mjs.map +1 -1
  27. package/fesm2022/alfresco-adf-core-shell.mjs +95 -20
  28. package/fesm2022/alfresco-adf-core-shell.mjs.map +1 -1
  29. package/lib/about/about-package/package-list.component.scss +5 -5
  30. package/lib/about/about-server-settings/about-server-settings.component.scss +5 -5
  31. package/lib/about/about.component.scss +3 -3
  32. package/lib/app-config/app-config.module.d.ts +1 -0
  33. package/lib/app-config/provide-app-config.d.ts +23 -0
  34. package/lib/app-config/public-api.d.ts +1 -0
  35. package/lib/auth/oidc/auth.module.d.ts +4 -4
  36. package/lib/auth/oidc/view/authentication-confirmation/authentication-confirmation.component.d.ts +1 -1
  37. package/lib/card-view/components/base-card-view.d.ts +1 -1
  38. package/lib/card-view/components/card-view/card-view.component.scss +25 -23
  39. package/lib/card-view/components/card-view-arrayitem/card-view-arrayitem.component.scss +7 -7
  40. package/lib/card-view/components/card-view-dateitem/card-view-dateitem.component.d.ts +2 -0
  41. package/lib/card-view/components/card-view-dateitem/card-view-dateitem.component.scss +3 -5
  42. package/lib/card-view/components/card-view-keyvaluepairsitem/card-view-keyvaluepairsitem.component.scss +5 -5
  43. package/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.scss +22 -11
  44. package/lib/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.scss +3 -3
  45. package/lib/card-view/components/card-view-textitem/card-view-textitem.component.scss +8 -11
  46. package/lib/comments/comments.component.d.ts +3 -1
  47. package/lib/comments/comments.component.scss +9 -9
  48. package/lib/common/services/storage.service.d.ts +8 -0
  49. package/lib/core.module.d.ts +124 -128
  50. package/lib/datatable/components/datatable/datatable.component.scss +18 -16
  51. package/lib/datatable/data/data-table.schema.d.ts +1 -1
  52. package/lib/datatable/data/object-datarow.model.d.ts +1 -0
  53. package/lib/dialogs/confirm-dialog/confirm.dialog.d.ts +1 -1
  54. package/lib/dialogs/confirm-dialog/confirm.dialog.module.d.ts +2 -6
  55. package/lib/dialogs/edit-json/edit-json.dialog.d.ts +1 -1
  56. package/lib/dialogs/edit-json/edit-json.dialog.module.d.ts +1 -6
  57. package/lib/dialogs/edit-json/edit-json.dialog.scss +1 -3
  58. package/lib/dynamic-chip-list/dynamic-chip-list.component.scss +3 -3
  59. package/lib/form/components/form-base.component.d.ts +0 -1
  60. package/lib/form/components/form-renderer.component.d.ts +1 -3
  61. package/lib/form/components/form-renderer.component.scss +73 -47
  62. package/lib/form/components/form-section/form-section.component.scss +3 -4
  63. package/lib/form/components/helpers/buttons-visibility.d.ts +24 -0
  64. package/lib/form/components/inplace-form-input/inplace-form-input.component.scss +5 -5
  65. package/lib/form/components/widgets/amount/amount.widget.scss +14 -5
  66. package/lib/form/components/widgets/checkbox/checkbox.widget.scss +11 -0
  67. package/lib/form/components/widgets/core/content-link.model.d.ts +1 -0
  68. package/lib/form/components/widgets/core/form.model.d.ts +1 -0
  69. package/lib/form/components/widgets/date/date.widget.scss +9 -0
  70. package/lib/form/components/widgets/date-time/date-time.widget.scss +12 -6
  71. package/lib/form/components/widgets/decimal/decimal.component.scss +6 -0
  72. package/lib/form/components/widgets/form.theme.scss +9 -8
  73. package/lib/form/components/widgets/hyperlink/hyperlink.widget.d.ts +16 -0
  74. package/lib/form/components/widgets/multiline-text/multiline-text.widget.scss +3 -0
  75. package/lib/form/components/widgets/number/number.widget.d.ts +1 -0
  76. package/lib/form/components/widgets/number/number.widget.scss +6 -0
  77. package/lib/form/components/widgets/text/text.widget.scss +8 -2
  78. package/lib/form/components/widgets/widget.component.d.ts +2 -2
  79. package/lib/form/form-base.module.d.ts +1 -0
  80. package/lib/form/public-api.d.ts +1 -0
  81. package/lib/identity-user-info/identity-user-info.component.scss +11 -10
  82. package/lib/info-drawer/info-drawer-layout.component.scss +8 -8
  83. package/lib/info-drawer/info-drawer.component.scss +21 -21
  84. package/lib/layout/components/header/header.component.scss +7 -7
  85. package/lib/layout/components/layout-container/layout-container.component.scss +3 -3
  86. package/lib/layout/components/sidenav-layout/sidenav-layout.component.scss +6 -6
  87. package/lib/login/components/login/login.component.scss +5 -5
  88. package/lib/notifications/components/notification-history.component.scss +4 -4
  89. package/lib/notifications/services/notification.service.d.ts +1 -1
  90. package/lib/search-text/search-text-input.component.scss +2 -2
  91. package/lib/snackbar-content/snackbar-content.component.d.ts +1 -1
  92. package/lib/snackbar-content/snackbar-content.component.scss +2 -2
  93. package/lib/snackbar-content/snackbar-content.module.d.ts +2 -6
  94. package/lib/styles/_index.scss +75 -67
  95. package/lib/styles/_mat-selectors.scss +13 -106
  96. package/lib/styles/_theming.scss +3 -5
  97. package/lib/styles/_typography.scss +14 -14
  98. package/lib/styles/material.theme.scss +27 -26
  99. package/lib/templates/empty-content/empty-content.component.scss +0 -2
  100. package/lib/templates/error-content/error-content.component.scss +2 -2
  101. package/lib/testing/core.testing.module.d.ts +1 -0
  102. package/lib/testing/noop-translate.module.d.ts +1 -2
  103. package/lib/translation/provide-i18n.d.ts +39 -0
  104. package/lib/translation/public-api.d.ts +1 -0
  105. package/lib/viewer/components/img-viewer/img-viewer.component.d.ts +2 -1
  106. package/lib/viewer/components/img-viewer/img-viewer.component.scss +2 -2
  107. package/lib/viewer/components/media-player/media-player.component.d.ts +2 -1
  108. package/lib/viewer/components/pdf-viewer/pdf-viewer.component.d.ts +21 -13
  109. package/lib/viewer/components/pdf-viewer/pdf-viewer.component.scss +3 -3
  110. package/lib/viewer/components/txt-viewer/txt-viewer.component.d.ts +3 -2
  111. package/lib/viewer/components/unknown-format/unknown-format.component.d.ts +3 -1
  112. package/lib/viewer/components/viewer-render/viewer-render.component.d.ts +5 -3
  113. package/lib/viewer/components/viewer-render/viewer-render.component.scss +16 -1
  114. package/lib/viewer/components/viewer.component.d.ts +17 -3
  115. package/lib/viewer/components/viewer.component.scss +4 -12
  116. package/package.json +5 -17
  117. package/schematics/migrations/schematics/migrations/7_0_0/index.d.ts +1 -1
  118. package/schematics/migrations/schematics/migrations/7_0_0/index.js +2 -2
  119. package/schematics/migrations/schematics/migrations/7_0_0/index.js.map +1 -1
  120. package/shell/README.md +20 -6
  121. package/shell/index.d.ts +2 -0
  122. package/shell/lib/providers.d.ts +36 -0
  123. package/shell/lib/shell.module.d.ts +4 -7
  124. package/shell/lib/shell.routes.d.ts +13 -1
  125. package/esm2022/adf-core.mjs +0 -5
  126. package/esm2022/api/alfresco-adf-core-api.mjs +0 -5
  127. package/esm2022/api/index.mjs +0 -20
  128. package/esm2022/api/lib/adf-http-client.service.mjs +0 -311
  129. package/esm2022/api/lib/alfresco-api/alfresco-api.param-encoder.mjs +0 -33
  130. package/esm2022/api/lib/alfresco-api/alfresco-api.response-error.mjs +0 -25
  131. package/esm2022/api/lib/alfresco-api/alfresco-api.utils.mjs +0 -80
  132. package/esm2022/api/lib/interfaces.mjs +0 -18
  133. package/esm2022/api/lib/types.mjs +0 -18
  134. package/esm2022/auth/alfresco-adf-core-auth.mjs +0 -5
  135. package/esm2022/auth/authentication-interceptor/authentication.interceptor.mjs +0 -56
  136. package/esm2022/auth/authentication.mjs +0 -19
  137. package/esm2022/auth/index.mjs +0 -19
  138. package/esm2022/breadcrumbs/alfresco-adf-core-breadcrumbs.mjs +0 -5
  139. package/esm2022/breadcrumbs/components/breadcrumb/breadcrumb.component.mjs +0 -83
  140. package/esm2022/breadcrumbs/components/breadcrumb-item/breadcrumb-item.component.mjs +0 -42
  141. package/esm2022/breadcrumbs/directives/breadcrumb-focus.directive.mjs +0 -44
  142. package/esm2022/breadcrumbs/index.mjs +0 -19
  143. package/esm2022/feature-flags/alfresco-adf-core-feature-flags.mjs +0 -5
  144. package/esm2022/feature-flags/index.mjs +0 -29
  145. package/esm2022/feature-flags/lib/components/feature-flags-wrapper.mjs +0 -36
  146. package/esm2022/feature-flags/lib/components/feature-override-indicator.component.mjs +0 -56
  147. package/esm2022/feature-flags/lib/components/flags/flags.component.mjs +0 -130
  148. package/esm2022/feature-flags/lib/directives/features.directive.mjs +0 -63
  149. package/esm2022/feature-flags/lib/directives/not-features.directive.mjs +0 -63
  150. package/esm2022/feature-flags/lib/guards/is-feature-off.guard.mjs +0 -38
  151. package/esm2022/feature-flags/lib/guards/is-feature-on.guard.mjs +0 -38
  152. package/esm2022/feature-flags/lib/guards/is-flags-override-on.guard.mjs +0 -40
  153. package/esm2022/feature-flags/lib/interfaces/features.interface.mjs +0 -24
  154. package/esm2022/feature-flags/lib/mocks/features-service-mock.factory.mjs +0 -62
  155. package/esm2022/feature-flags/lib/providers/debug-feature-flags.provider.mjs +0 -51
  156. package/esm2022/feature-flags/lib/providers/dummy-feature-flags.provider.mjs +0 -36
  157. package/esm2022/feature-flags/lib/services/debug-features.service.mjs +0 -84
  158. package/esm2022/feature-flags/lib/services/dummy-features.service.mjs +0 -40
  159. package/esm2022/feature-flags/lib/services/flagset.parser.mjs +0 -38
  160. package/esm2022/feature-flags/lib/services/qa-features.helper.mjs +0 -62
  161. package/esm2022/feature-flags/lib/services/storage-features.service.mjs +0 -121
  162. package/esm2022/lib/about/about-extension-list/about-extension-list.component.mjs +0 -52
  163. package/esm2022/lib/about/about-license-list/about-license-list.component.mjs +0 -52
  164. package/esm2022/lib/about/about-module-list/module-list.component.mjs +0 -52
  165. package/esm2022/lib/about/about-package/package-list.component.mjs +0 -66
  166. package/esm2022/lib/about/about-panel.directive.mjs +0 -37
  167. package/esm2022/lib/about/about-repository-info/about-repository-info.component.mjs +0 -60
  168. package/esm2022/lib/about/about-repository-info/repository-info.interface.mjs +0 -18
  169. package/esm2022/lib/about/about-server-settings/about-server-settings.component.mjs +0 -43
  170. package/esm2022/lib/about/about-status-list/about-status-list.component.mjs +0 -52
  171. package/esm2022/lib/about/about.component.mjs +0 -35
  172. package/esm2022/lib/about/about.module.mjs +0 -75
  173. package/esm2022/lib/about/index.mjs +0 -18
  174. package/esm2022/lib/about/interfaces.mjs +0 -18
  175. package/esm2022/lib/about/public-api.mjs +0 -28
  176. package/esm2022/lib/app-config/app-config-storage-prefix.factory.mjs +0 -51
  177. package/esm2022/lib/app-config/app-config.loader.mjs +0 -41
  178. package/esm2022/lib/app-config/app-config.module.mjs +0 -33
  179. package/esm2022/lib/app-config/app-config.pipe.mjs +0 -38
  180. package/esm2022/lib/app-config/app-config.service.mjs +0 -243
  181. package/esm2022/lib/app-config/debug-app-config.service.mjs +0 -44
  182. package/esm2022/lib/app-config/index.mjs +0 -18
  183. package/esm2022/lib/app-config/public-api.mjs +0 -22
  184. package/esm2022/lib/auth/authentication-interceptor/auth-bearer.interceptor.mjs +0 -67
  185. package/esm2022/lib/auth/basic-auth/basic-alfresco-auth.service.mjs +0 -356
  186. package/esm2022/lib/auth/basic-auth/content-auth.mjs +0 -189
  187. package/esm2022/lib/auth/basic-auth/process-auth.mjs +0 -193
  188. package/esm2022/lib/auth/guard/auth-guard-bpm.service.mjs +0 -31
  189. package/esm2022/lib/auth/guard/auth-guard-ecm.service.mjs +0 -31
  190. package/esm2022/lib/auth/guard/auth-guard-sso-role.service.mjs +0 -57
  191. package/esm2022/lib/auth/guard/auth-guard.mjs +0 -53
  192. package/esm2022/lib/auth/guard/auth-guard.service.mjs +0 -113
  193. package/esm2022/lib/auth/index.mjs +0 -18
  194. package/esm2022/lib/auth/interfaces/authentication-service.interface.mjs +0 -18
  195. package/esm2022/lib/auth/interfaces/authentication.interface.mjs +0 -18
  196. package/esm2022/lib/auth/interfaces/identity-group.interface.mjs +0 -18
  197. package/esm2022/lib/auth/interfaces/identity-user.service.interface.mjs +0 -18
  198. package/esm2022/lib/auth/interfaces/openid-configuration.interface.mjs +0 -18
  199. package/esm2022/lib/auth/models/application-access.model.mjs +0 -18
  200. package/esm2022/lib/auth/models/identity-group.model.mjs +0 -18
  201. package/esm2022/lib/auth/models/identity-role.model.mjs +0 -30
  202. package/esm2022/lib/auth/models/identity-user.model.mjs +0 -18
  203. package/esm2022/lib/auth/models/oauth-config.model.mjs +0 -18
  204. package/esm2022/lib/auth/models/redirection.model.mjs +0 -28
  205. package/esm2022/lib/auth/models/user-access.model.mjs +0 -18
  206. package/esm2022/lib/auth/oidc/auth-config.mjs +0 -19
  207. package/esm2022/lib/auth/oidc/auth-config.service.mjs +0 -110
  208. package/esm2022/lib/auth/oidc/auth-routing.module.mjs +0 -34
  209. package/esm2022/lib/auth/oidc/auth.module.mjs +0 -112
  210. package/esm2022/lib/auth/oidc/auth.service.mjs +0 -22
  211. package/esm2022/lib/auth/oidc/oidc-auth.guard.mjs +0 -37
  212. package/esm2022/lib/auth/oidc/oidc-authentication.service.mjs +0 -202
  213. package/esm2022/lib/auth/oidc/public-api.mjs +0 -24
  214. package/esm2022/lib/auth/oidc/redirect-auth.service.mjs +0 -267
  215. package/esm2022/lib/auth/oidc/retry-login.service.mjs +0 -66
  216. package/esm2022/lib/auth/oidc/token.interceptor.mjs +0 -62
  217. package/esm2022/lib/auth/oidc/view/authentication-confirmation/authentication-confirmation.component.mjs +0 -31
  218. package/esm2022/lib/auth/public-api.mjs +0 -44
  219. package/esm2022/lib/auth/services/authentication.service.mjs +0 -190
  220. package/esm2022/lib/auth/services/base-authentication.service.mjs +0 -99
  221. package/esm2022/lib/auth/services/identity-group.service.mjs +0 -269
  222. package/esm2022/lib/auth/services/identity-role.service.mjs +0 -99
  223. package/esm2022/lib/auth/services/identity-user.service.mjs +0 -443
  224. package/esm2022/lib/auth/services/jwt-helper.service.mjs +0 -205
  225. package/esm2022/lib/auth/services/oauth2.service.mjs +0 -69
  226. package/esm2022/lib/auth/services/time-sync.service.mjs +0 -83
  227. package/esm2022/lib/auth/services/user-access.service.mjs +0 -110
  228. package/esm2022/lib/avatar/avatar.component.mjs +0 -51
  229. package/esm2022/lib/blank-page/blank-page.component.mjs +0 -31
  230. package/esm2022/lib/blank-page/blank-page.module.mjs +0 -33
  231. package/esm2022/lib/blank-page/index.mjs +0 -18
  232. package/esm2022/lib/blank-page/public-api.mjs +0 -19
  233. package/esm2022/lib/button/button.component.mjs +0 -61
  234. package/esm2022/lib/card-view/card-view.module.mjs +0 -80
  235. package/esm2022/lib/card-view/components/base-card-view.mjs +0 -51
  236. package/esm2022/lib/card-view/components/card-view/card-view.component.mjs +0 -66
  237. package/esm2022/lib/card-view/components/card-view-arrayitem/card-view-arrayitem.component.mjs +0 -56
  238. package/esm2022/lib/card-view/components/card-view-boolitem/card-view-boolitem.component.mjs +0 -40
  239. package/esm2022/lib/card-view/components/card-view-dateitem/card-view-dateitem.component.mjs +0 -177
  240. package/esm2022/lib/card-view/components/card-view-item-dispatcher/card-view-item-dispatcher.component.mjs +0 -108
  241. package/esm2022/lib/card-view/components/card-view-keyvaluepairsitem/card-view-keyvaluepairsitem.component.mjs +0 -65
  242. package/esm2022/lib/card-view/components/card-view-mapitem/card-view-mapitem.component.mjs +0 -47
  243. package/esm2022/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.mjs +0 -138
  244. package/esm2022/lib/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.mjs +0 -114
  245. package/esm2022/lib/card-view/components/card-view-textitem/card-view-textitem.component.mjs +0 -240
  246. package/esm2022/lib/card-view/components/card-view.components.mjs +0 -28
  247. package/esm2022/lib/card-view/index.mjs +0 -18
  248. package/esm2022/lib/card-view/interfaces/base-card-view-update.interface.mjs +0 -18
  249. package/esm2022/lib/card-view/interfaces/card-view-arrayitem-properties.interface.mjs +0 -18
  250. package/esm2022/lib/card-view/interfaces/card-view-boolitem-properties.interface.mjs +0 -18
  251. package/esm2022/lib/card-view/interfaces/card-view-dateitem-properties.interface.mjs +0 -18
  252. package/esm2022/lib/card-view/interfaces/card-view-item-properties.interface.mjs +0 -18
  253. package/esm2022/lib/card-view/interfaces/card-view-item-validator.interface.mjs +0 -18
  254. package/esm2022/lib/card-view/interfaces/card-view-item.interface.mjs +0 -18
  255. package/esm2022/lib/card-view/interfaces/card-view-keyvaluepairsitem-properties.interface.mjs +0 -18
  256. package/esm2022/lib/card-view/interfaces/card-view-selectitem-properties.interface.mjs +0 -18
  257. package/esm2022/lib/card-view/interfaces/card-view-textitem-pipe-property.interface.mjs +0 -18
  258. package/esm2022/lib/card-view/interfaces/card-view-textitem-properties.interface.mjs +0 -18
  259. package/esm2022/lib/card-view/interfaces/card-view.interfaces.mjs +0 -29
  260. package/esm2022/lib/card-view/interfaces/click-notification.interface.mjs +0 -18
  261. package/esm2022/lib/card-view/interfaces/update-notification.interface.mjs +0 -18
  262. package/esm2022/lib/card-view/models/card-view-arrayitem.model.mjs +0 -28
  263. package/esm2022/lib/card-view/models/card-view-baseitem.model.mjs +0 -64
  264. package/esm2022/lib/card-view/models/card-view-boolitem.model.mjs +0 -36
  265. package/esm2022/lib/card-view/models/card-view-dateitem.model.mjs +0 -58
  266. package/esm2022/lib/card-view/models/card-view-datetimeitem.model.mjs +0 -28
  267. package/esm2022/lib/card-view/models/card-view-floatitem.model.mjs +0 -33
  268. package/esm2022/lib/card-view/models/card-view-intitem.model.mjs +0 -36
  269. package/esm2022/lib/card-view/models/card-view-keyvaluepairs.model.mjs +0 -27
  270. package/esm2022/lib/card-view/models/card-view-longitem.model.mjs +0 -36
  271. package/esm2022/lib/card-view/models/card-view-mapitem.model.mjs +0 -32
  272. package/esm2022/lib/card-view/models/card-view-selectitem.model.mjs +0 -41
  273. package/esm2022/lib/card-view/models/card-view-textitem.model.mjs +0 -40
  274. package/esm2022/lib/card-view/models/card-view.models.mjs +0 -29
  275. package/esm2022/lib/card-view/public-api.mjs +0 -25
  276. package/esm2022/lib/card-view/services/card-item-types.service.mjs +0 -54
  277. package/esm2022/lib/card-view/services/card-view-update.service.mjs +0 -59
  278. package/esm2022/lib/card-view/services/card-view.services.mjs +0 -19
  279. package/esm2022/lib/card-view/validators/card-view-item-float.validator.mjs +0 -31
  280. package/esm2022/lib/card-view/validators/card-view-item-int.validator.mjs +0 -35
  281. package/esm2022/lib/card-view/validators/card-view-item-length.validator.mjs +0 -34
  282. package/esm2022/lib/card-view/validators/card-view-item-long.validator.mjs +0 -35
  283. package/esm2022/lib/card-view/validators/card-view-item-match.validator.mjs +0 -35
  284. package/esm2022/lib/card-view/validators/card-view-item-minmax.validator.mjs +0 -35
  285. package/esm2022/lib/card-view/validators/card-view-item-only-positive-int.validator.mjs +0 -32
  286. package/esm2022/lib/card-view/validators/card-view-item-only-positive-long.validator.mjs +0 -31
  287. package/esm2022/lib/card-view/validators/card-view.validators.mjs +0 -26
  288. package/esm2022/lib/card-view/validators/validators.map.mjs +0 -26
  289. package/esm2022/lib/clipboard/clipboard.directive.mjs +0 -99
  290. package/esm2022/lib/clipboard/clipboard.module.mjs +0 -34
  291. package/esm2022/lib/clipboard/clipboard.service.mjs +0 -103
  292. package/esm2022/lib/clipboard/index.mjs +0 -18
  293. package/esm2022/lib/clipboard/public-api.mjs +0 -21
  294. package/esm2022/lib/comments/comment-list/comment-list.component.mjs +0 -53
  295. package/esm2022/lib/comments/comment-list/comment-list.module.mjs +0 -33
  296. package/esm2022/lib/comments/comment-list/index.mjs +0 -18
  297. package/esm2022/lib/comments/comment-list/public-api.mjs +0 -19
  298. package/esm2022/lib/comments/comments.component.mjs +0 -128
  299. package/esm2022/lib/comments/comments.module.mjs +0 -33
  300. package/esm2022/lib/comments/index.mjs +0 -18
  301. package/esm2022/lib/comments/interfaces/comments-service.interface.mjs +0 -18
  302. package/esm2022/lib/comments/interfaces/comments.token.mjs +0 -19
  303. package/esm2022/lib/comments/public-api.mjs +0 -22
  304. package/esm2022/lib/common/index.mjs +0 -35
  305. package/esm2022/lib/common/interface/search-component.interface.mjs +0 -18
  306. package/esm2022/lib/common/mock/app-config.service.mock.mjs +0 -47
  307. package/esm2022/lib/common/models/default-languages.model.mjs +0 -36
  308. package/esm2022/lib/common/models/log-levels.model.mjs +0 -33
  309. package/esm2022/lib/common/models/user-info-mode.enum.mjs +0 -25
  310. package/esm2022/lib/common/services/cookie.service.mjs +0 -82
  311. package/esm2022/lib/common/services/download.service.mjs +0 -102
  312. package/esm2022/lib/common/services/dynamic-component-mapper.service.mjs +0 -89
  313. package/esm2022/lib/common/services/highlight-transform.service.mjs +0 -61
  314. package/esm2022/lib/common/services/language-item.interface.mjs +0 -18
  315. package/esm2022/lib/common/services/log.service.mjs +0 -171
  316. package/esm2022/lib/common/services/page-title.service.mjs +0 -63
  317. package/esm2022/lib/common/services/sort-by-category.service.mjs +0 -81
  318. package/esm2022/lib/common/services/storage.service.mjs +0 -117
  319. package/esm2022/lib/common/services/thumbnail.service.mjs +0 -194
  320. package/esm2022/lib/common/services/url.service.mjs +0 -45
  321. package/esm2022/lib/common/services/user-preferences.service.mjs +0 -238
  322. package/esm2022/lib/common/utils/date-fns-adapter.mjs +0 -115
  323. package/esm2022/lib/common/utils/date-fns-utils.mjs +0 -222
  324. package/esm2022/lib/common/utils/datetime-fns-adapter.mjs +0 -134
  325. package/esm2022/lib/common/utils/file-utils.mjs +0 -65
  326. package/esm2022/lib/common/utils/index.mjs +0 -18
  327. package/esm2022/lib/common/utils/moment-date-adapter.mjs +0 -202
  328. package/esm2022/lib/common/utils/moment-date-formats.model.mjs +0 -32
  329. package/esm2022/lib/common/utils/object-utils.mjs +0 -107
  330. package/esm2022/lib/common/utils/public-api.mjs +0 -25
  331. package/esm2022/lib/common/utils/string-utils.mjs +0 -45
  332. package/esm2022/lib/context-menu/animations.mjs +0 -33
  333. package/esm2022/lib/context-menu/context-menu-list.component.mjs +0 -92
  334. package/esm2022/lib/context-menu/context-menu-overlay.mjs +0 -25
  335. package/esm2022/lib/context-menu/context-menu-overlay.service.mjs +0 -109
  336. package/esm2022/lib/context-menu/context-menu.directive.mjs +0 -63
  337. package/esm2022/lib/context-menu/context-menu.module.mjs +0 -35
  338. package/esm2022/lib/context-menu/context-menu.tokens.mjs +0 -19
  339. package/esm2022/lib/context-menu/index.mjs +0 -18
  340. package/esm2022/lib/context-menu/interfaces.mjs +0 -18
  341. package/esm2022/lib/context-menu/public-api.mjs +0 -21
  342. package/esm2022/lib/core.module.mjs +0 -314
  343. package/esm2022/lib/datatable/components/amount-cell/amount-cell.component.mjs +0 -45
  344. package/esm2022/lib/datatable/components/boolean-cell/boolean-cell.component.mjs +0 -65
  345. package/esm2022/lib/datatable/components/columns-selector/columns-search-filter.pipe.mjs +0 -55
  346. package/esm2022/lib/datatable/components/columns-selector/columns-selector.component.mjs +0 -114
  347. package/esm2022/lib/datatable/components/data-cell.event.mjs +0 -31
  348. package/esm2022/lib/datatable/components/data-row-action.event.mjs +0 -34
  349. package/esm2022/lib/datatable/components/datatable/datatable.component.mjs +0 -915
  350. package/esm2022/lib/datatable/components/datatable-cell/datatable-cell.component.mjs +0 -126
  351. package/esm2022/lib/datatable/components/datatable-row/datatable-row.component.mjs +0 -98
  352. package/esm2022/lib/datatable/components/date-cell/date-cell.component.mjs +0 -78
  353. package/esm2022/lib/datatable/components/empty-list/empty-list.component.mjs +0 -60
  354. package/esm2022/lib/datatable/components/filesize-cell/filesize-cell.component.mjs +0 -49
  355. package/esm2022/lib/datatable/components/icon-cell/icon-cell.component.mjs +0 -67
  356. package/esm2022/lib/datatable/components/json-cell/json-cell.component.mjs +0 -86
  357. package/esm2022/lib/datatable/components/location-cell/location-cell.component.mjs +0 -69
  358. package/esm2022/lib/datatable/components/mocks/datatable.mock.mjs +0 -153
  359. package/esm2022/lib/datatable/components/number-cell/number-cell.component.mjs +0 -42
  360. package/esm2022/lib/datatable/data/data-column.model.mjs +0 -18
  361. package/esm2022/lib/datatable/data/data-row-event.model.mjs +0 -26
  362. package/esm2022/lib/datatable/data/data-row-update.model.mjs +0 -18
  363. package/esm2022/lib/datatable/data/data-row.model.mjs +0 -18
  364. package/esm2022/lib/datatable/data/data-sorting.model.mjs +0 -24
  365. package/esm2022/lib/datatable/data/data-table.schema.mjs +0 -132
  366. package/esm2022/lib/datatable/data/datatable-adapter.mjs +0 -18
  367. package/esm2022/lib/datatable/data/object-datacolumn.model.mjs +0 -46
  368. package/esm2022/lib/datatable/data/object-datarow.model.mjs +0 -38
  369. package/esm2022/lib/datatable/data/object-datatable-adapter.mjs +0 -134
  370. package/esm2022/lib/datatable/data-column/data-column-header.component.mjs +0 -45
  371. package/esm2022/lib/datatable/data-column/data-column-list.component.mjs +0 -36
  372. package/esm2022/lib/datatable/data-column/data-column.component.mjs +0 -114
  373. package/esm2022/lib/datatable/data-column/index.mjs +0 -18
  374. package/esm2022/lib/datatable/data-column/public-api.mjs +0 -20
  375. package/esm2022/lib/datatable/datatable.module.mjs +0 -161
  376. package/esm2022/lib/datatable/directives/custom-empty-content-template.directive.mjs +0 -35
  377. package/esm2022/lib/datatable/directives/custom-loading-template.directive.mjs +0 -30
  378. package/esm2022/lib/datatable/directives/custom-no-permission-template.directive.mjs +0 -35
  379. package/esm2022/lib/datatable/directives/drop-zone.directive.mjs +0 -89
  380. package/esm2022/lib/datatable/directives/header-filter-template.directive.mjs +0 -43
  381. package/esm2022/lib/datatable/directives/loading-template.directive.mjs +0 -46
  382. package/esm2022/lib/datatable/directives/main-data-table-action-template.directive.mjs +0 -43
  383. package/esm2022/lib/datatable/directives/no-content-template.directive.mjs +0 -46
  384. package/esm2022/lib/datatable/directives/no-permission-template.directive.mjs +0 -46
  385. package/esm2022/lib/datatable/directives/resizable/resizable.directive.mjs +0 -173
  386. package/esm2022/lib/datatable/directives/resizable/resize-handle.directive.mjs +0 -72
  387. package/esm2022/lib/datatable/directives/resizable/types.mjs +0 -18
  388. package/esm2022/lib/datatable/index.mjs +0 -18
  389. package/esm2022/lib/datatable/public-api.mjs +0 -55
  390. package/esm2022/lib/datatable/services/datatable.service.mjs +0 -33
  391. package/esm2022/lib/dialogs/confirm-dialog/confirm.dialog.mjs +0 -50
  392. package/esm2022/lib/dialogs/confirm-dialog/confirm.dialog.module.mjs +0 -38
  393. package/esm2022/lib/dialogs/dialog/dialog-data.interface.mjs +0 -18
  394. package/esm2022/lib/dialogs/dialog/dialog.component.mjs +0 -71
  395. package/esm2022/lib/dialogs/dialog/dialog.model.mjs +0 -22
  396. package/esm2022/lib/dialogs/dialog/index.mjs +0 -20
  397. package/esm2022/lib/dialogs/edit-json/edit-json.dialog.mjs +0 -51
  398. package/esm2022/lib/dialogs/edit-json/edit-json.dialog.module.mjs +0 -38
  399. package/esm2022/lib/dialogs/index.mjs +0 -18
  400. package/esm2022/lib/dialogs/public-api.mjs +0 -25
  401. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.component.mjs +0 -74
  402. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.model.mjs +0 -18
  403. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.module.mjs +0 -33
  404. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes.guard.mjs +0 -64
  405. package/esm2022/lib/directives/directive.module.mjs +0 -56
  406. package/esm2022/lib/directives/highlight.directive.mjs +0 -67
  407. package/esm2022/lib/directives/index.mjs +0 -18
  408. package/esm2022/lib/directives/infinite-select-scroll.directive.mjs +0 -67
  409. package/esm2022/lib/directives/logout.directive.mjs +0 -72
  410. package/esm2022/lib/directives/public-api.mjs +0 -24
  411. package/esm2022/lib/directives/tooltip-card/tooltip-card.component.mjs +0 -60
  412. package/esm2022/lib/directives/tooltip-card/tooltip-card.directive.mjs +0 -104
  413. package/esm2022/lib/directives/upload.directive.mjs +0 -241
  414. package/esm2022/lib/dynamic-chip-list/chip.mjs +0 -18
  415. package/esm2022/lib/dynamic-chip-list/dynamic-chip-list.component.mjs +0 -205
  416. package/esm2022/lib/dynamic-chip-list/dynamic-chip-list.module.mjs +0 -33
  417. package/esm2022/lib/dynamic-chip-list/index.mjs +0 -18
  418. package/esm2022/lib/dynamic-chip-list/public-api.mjs +0 -20
  419. package/esm2022/lib/events/base-ui.event.mjs +0 -21
  420. package/esm2022/lib/events/base.event.mjs +0 -29
  421. package/esm2022/lib/events/index.mjs +0 -18
  422. package/esm2022/lib/events/public-api.mjs +0 -19
  423. package/esm2022/lib/form/components/form-base.component.mjs +0 -229
  424. package/esm2022/lib/form/components/form-custom-button.directive.mjs +0 -30
  425. package/esm2022/lib/form/components/form-field/form-field.component.mjs +0 -142
  426. package/esm2022/lib/form/components/form-renderer.component.mjs +0 -171
  427. package/esm2022/lib/form/components/form-section/form-section.component.mjs +0 -46
  428. package/esm2022/lib/form/components/inplace-form-input/inplace-form-input.component.mjs +0 -37
  429. package/esm2022/lib/form/components/middlewares/decimal-middleware.service.mjs +0 -48
  430. package/esm2022/lib/form/components/middlewares/middleware.mjs +0 -19
  431. package/esm2022/lib/form/components/widgets/amount/amount.widget.mjs +0 -78
  432. package/esm2022/lib/form/components/widgets/base-viewer/base-viewer.widget.mjs +0 -60
  433. package/esm2022/lib/form/components/widgets/checkbox/checkbox.widget.mjs +0 -53
  434. package/esm2022/lib/form/components/widgets/core/container-column.model.mjs +0 -28
  435. package/esm2022/lib/form/components/widgets/core/container.model.mjs +0 -50
  436. package/esm2022/lib/form/components/widgets/core/content-link.model.mjs +0 -52
  437. package/esm2022/lib/form/components/widgets/core/displayable-cm-properties.model.mjs +0 -18
  438. package/esm2022/lib/form/components/widgets/core/error-message.model.mjs +0 -38
  439. package/esm2022/lib/form/components/widgets/core/external-content-link.mjs +0 -18
  440. package/esm2022/lib/form/components/widgets/core/external-content.mjs +0 -18
  441. package/esm2022/lib/form/components/widgets/core/form-field-file-source.mjs +0 -18
  442. package/esm2022/lib/form/components/widgets/core/form-field-metadata.mjs +0 -18
  443. package/esm2022/lib/form/components/widgets/core/form-field-option.mjs +0 -18
  444. package/esm2022/lib/form/components/widgets/core/form-field-rule.mjs +0 -18
  445. package/esm2022/lib/form/components/widgets/core/form-field-selected-folder.mjs +0 -18
  446. package/esm2022/lib/form/components/widgets/core/form-field-templates.mjs +0 -18
  447. package/esm2022/lib/form/components/widgets/core/form-field-types.mjs +0 -74
  448. package/esm2022/lib/form/components/widgets/core/form-field-utils.mjs +0 -23
  449. package/esm2022/lib/form/components/widgets/core/form-field-validator.mjs +0 -268
  450. package/esm2022/lib/form/components/widgets/core/form-field-variable-options.mjs +0 -18
  451. package/esm2022/lib/form/components/widgets/core/form-field.model.mjs +0 -490
  452. package/esm2022/lib/form/components/widgets/core/form-outcome-event.model.mjs +0 -32
  453. package/esm2022/lib/form/components/widgets/core/form-outcome.model.mjs +0 -38
  454. package/esm2022/lib/form/components/widgets/core/form-values.mjs +0 -18
  455. package/esm2022/lib/form/components/widgets/core/form-variable.model.mjs +0 -18
  456. package/esm2022/lib/form/components/widgets/core/form-widget.model.mjs +0 -33
  457. package/esm2022/lib/form/components/widgets/core/form.model.mjs +0 -384
  458. package/esm2022/lib/form/components/widgets/core/group.model.mjs +0 -18
  459. package/esm2022/lib/form/components/widgets/core/index.mjs +0 -49
  460. package/esm2022/lib/form/components/widgets/core/predefined-theme.mjs +0 -115
  461. package/esm2022/lib/form/components/widgets/core/process-form-model.interface.mjs +0 -18
  462. package/esm2022/lib/form/components/widgets/core/process-variable.model.mjs +0 -18
  463. package/esm2022/lib/form/components/widgets/core/tab.model.mjs +0 -34
  464. package/esm2022/lib/form/components/widgets/core/theme.model.mjs +0 -18
  465. package/esm2022/lib/form/components/widgets/core/upload-widget-content-link.model.mjs +0 -27
  466. package/esm2022/lib/form/components/widgets/core/widget-schema.model.mjs +0 -18
  467. package/esm2022/lib/form/components/widgets/date/date.widget.mjs +0 -163
  468. package/esm2022/lib/form/components/widgets/date-time/date-time.widget.mjs +0 -153
  469. package/esm2022/lib/form/components/widgets/decimal/decimal.component.mjs +0 -54
  470. package/esm2022/lib/form/components/widgets/display-text/display-text.schema.mjs +0 -86
  471. package/esm2022/lib/form/components/widgets/display-text/display-text.widget.mjs +0 -47
  472. package/esm2022/lib/form/components/widgets/display-text/index.mjs +0 -19
  473. package/esm2022/lib/form/components/widgets/error/error.component.mjs +0 -93
  474. package/esm2022/lib/form/components/widgets/header/header.schema.mjs +0 -86
  475. package/esm2022/lib/form/components/widgets/header/header.widget.mjs +0 -43
  476. package/esm2022/lib/form/components/widgets/header/index.mjs +0 -19
  477. package/esm2022/lib/form/components/widgets/hyperlink/hyperlink.widget.mjs +0 -71
  478. package/esm2022/lib/form/components/widgets/index.mjs +0 -71
  479. package/esm2022/lib/form/components/widgets/json/json.widget.mjs +0 -67
  480. package/esm2022/lib/form/components/widgets/multiline-text/multiline-text.widget.mjs +0 -56
  481. package/esm2022/lib/form/components/widgets/number/number.widget.mjs +0 -66
  482. package/esm2022/lib/form/components/widgets/reactive-widget.interface.mjs +0 -18
  483. package/esm2022/lib/form/components/widgets/text/text-mask.component.mjs +0 -215
  484. package/esm2022/lib/form/components/widgets/text/text.widget.mjs +0 -66
  485. package/esm2022/lib/form/components/widgets/unknown/unknown.widget.mjs +0 -63
  486. package/esm2022/lib/form/components/widgets/widget.component.mjs +0 -110
  487. package/esm2022/lib/form/events/form-error.event.mjs +0 -24
  488. package/esm2022/lib/form/events/form-field.event.mjs +0 -24
  489. package/esm2022/lib/form/events/form-rules.event.mjs +0 -25
  490. package/esm2022/lib/form/events/form-spinner.event.mjs +0 -23
  491. package/esm2022/lib/form/events/form.event.mjs +0 -29
  492. package/esm2022/lib/form/events/index.mjs +0 -24
  493. package/esm2022/lib/form/events/validate-form-field.event.mjs +0 -24
  494. package/esm2022/lib/form/events/validate-form.event.mjs +0 -25
  495. package/esm2022/lib/form/form-base.module.mjs +0 -90
  496. package/esm2022/lib/form/index.mjs +0 -18
  497. package/esm2022/lib/form/models/form-rules.model.mjs +0 -77
  498. package/esm2022/lib/form/models/task-process-variable.model.mjs +0 -19
  499. package/esm2022/lib/form/models/widget-visibility.model.mjs +0 -104
  500. package/esm2022/lib/form/pipes/field-style.pipe.mjs +0 -45
  501. package/esm2022/lib/form/pipes/index.mjs +0 -18
  502. package/esm2022/lib/form/public-api.mjs +0 -34
  503. package/esm2022/lib/form/services/form-rendering.service.mjs +0 -53
  504. package/esm2022/lib/form/services/form-validation-service.interface.mjs +0 -18
  505. package/esm2022/lib/form/services/form.service.mjs +0 -86
  506. package/esm2022/lib/form/services/widget-visibility.service.mjs +0 -294
  507. package/esm2022/lib/header/header.component.mjs +0 -73
  508. package/esm2022/lib/header/index.mjs +0 -18
  509. package/esm2022/lib/header/navbar/navbar-item.component.mjs +0 -37
  510. package/esm2022/lib/header/navbar/navbar.component.mjs +0 -36
  511. package/esm2022/lib/header/public-api.mjs +0 -20
  512. package/esm2022/lib/icon/icon.component.mjs +0 -51
  513. package/esm2022/lib/icon/icon.module.mjs +0 -36
  514. package/esm2022/lib/icon/index.mjs +0 -18
  515. package/esm2022/lib/icon/public-api.mjs +0 -19
  516. package/esm2022/lib/identity-user-info/identity-user-info.component.mjs +0 -87
  517. package/esm2022/lib/identity-user-info/identity-user-info.module.mjs +0 -33
  518. package/esm2022/lib/identity-user-info/index.mjs +0 -18
  519. package/esm2022/lib/identity-user-info/public-api.mjs +0 -19
  520. package/esm2022/lib/info-drawer/index.mjs +0 -18
  521. package/esm2022/lib/info-drawer/info-drawer-layout.component.mjs +0 -71
  522. package/esm2022/lib/info-drawer/info-drawer.component.mjs +0 -114
  523. package/esm2022/lib/info-drawer/info-drawer.module.mjs +0 -53
  524. package/esm2022/lib/info-drawer/public-api.mjs +0 -20
  525. package/esm2022/lib/interface/index.mjs +0 -18
  526. package/esm2022/lib/interface/injection.tokens.mjs +0 -19
  527. package/esm2022/lib/interface/public-api.mjs +0 -18
  528. package/esm2022/lib/language-menu/index.mjs +0 -18
  529. package/esm2022/lib/language-menu/language-menu.component.mjs +0 -61
  530. package/esm2022/lib/language-menu/language-menu.module.mjs +0 -35
  531. package/esm2022/lib/language-menu/language-picker.component.mjs +0 -78
  532. package/esm2022/lib/language-menu/public-api.mjs +0 -21
  533. package/esm2022/lib/language-menu/service/language.service.interface.mjs +0 -18
  534. package/esm2022/lib/language-menu/service/language.service.mjs +0 -33
  535. package/esm2022/lib/layout/components/header/header.component.mjs +0 -100
  536. package/esm2022/lib/layout/components/layout-container/layout-container.component.mjs +0 -180
  537. package/esm2022/lib/layout/components/sidebar-action/sidebar-action-menu.component.mjs +0 -82
  538. package/esm2022/lib/layout/components/sidenav-layout/sidenav-layout.component.mjs +0 -145
  539. package/esm2022/lib/layout/directives/sidenav-layout-content.directive.mjs +0 -33
  540. package/esm2022/lib/layout/directives/sidenav-layout-header.directive.mjs +0 -33
  541. package/esm2022/lib/layout/directives/sidenav-layout-navigation.directive.mjs +0 -33
  542. package/esm2022/lib/layout/index.mjs +0 -18
  543. package/esm2022/lib/layout/layout.module.mjs +0 -72
  544. package/esm2022/lib/layout/public-api.mjs +0 -25
  545. package/esm2022/lib/login/components/login/login.component.mjs +0 -368
  546. package/esm2022/lib/login/components/login-dialog/login-dialog-component-data.interface.mjs +0 -18
  547. package/esm2022/lib/login/components/login-dialog/login-dialog.component.mjs +0 -58
  548. package/esm2022/lib/login/components/login-dialog-panel/login-dialog-panel.component.mjs +0 -48
  549. package/esm2022/lib/login/directives/login-footer.directive.mjs +0 -41
  550. package/esm2022/lib/login/directives/login-header.directive.mjs +0 -41
  551. package/esm2022/lib/login/index.mjs +0 -18
  552. package/esm2022/lib/login/login.module.mjs +0 -54
  553. package/esm2022/lib/login/models/login-error.event.mjs +0 -22
  554. package/esm2022/lib/login/models/login-submit.event.mjs +0 -32
  555. package/esm2022/lib/login/models/login-success.event.mjs +0 -24
  556. package/esm2022/lib/login/public-api.mjs +0 -27
  557. package/esm2022/lib/material.module.mjs +0 -254
  558. package/esm2022/lib/mock/cookie.service.mock.mjs +0 -43
  559. package/esm2022/lib/mock/data-column.mock.mjs +0 -73
  560. package/esm2022/lib/mock/event.mock.mjs +0 -39
  561. package/esm2022/lib/mock/form/form-definition-readonly.mock.mjs +0 -225
  562. package/esm2022/lib/mock/form/form-definition-visibility.mock.mjs +0 -347
  563. package/esm2022/lib/mock/form/form-definition.mock.mjs +0 -403
  564. package/esm2022/lib/mock/form/form.component.mock.mjs +0 -275
  565. package/esm2022/lib/mock/form/form.service.mock.mjs +0 -248
  566. package/esm2022/lib/mock/form/widget-visibility.service.mock.mjs +0 -1835
  567. package/esm2022/lib/mock/index.mjs +0 -18
  568. package/esm2022/lib/mock/public-api.mjs +0 -27
  569. package/esm2022/lib/mock/translation.service.mock.mjs +0 -44
  570. package/esm2022/lib/models/comment.model.mjs +0 -51
  571. package/esm2022/lib/models/component.model.mjs +0 -24
  572. package/esm2022/lib/models/decimal-number.model.mjs +0 -26
  573. package/esm2022/lib/models/general-user.model.mjs +0 -24
  574. package/esm2022/lib/models/index.mjs +0 -18
  575. package/esm2022/lib/models/pagination.model.mjs +0 -29
  576. package/esm2022/lib/models/path.model.mjs +0 -24
  577. package/esm2022/lib/models/product-version.model.mjs +0 -28
  578. package/esm2022/lib/models/public-api.mjs +0 -24
  579. package/esm2022/lib/models/request-pagination.model.mjs +0 -25
  580. package/esm2022/lib/notifications/components/add-notification.stories.component.mjs +0 -44
  581. package/esm2022/lib/notifications/components/notification-history.component.mjs +0 -139
  582. package/esm2022/lib/notifications/helpers/notification.factory.mjs +0 -43
  583. package/esm2022/lib/notifications/index.mjs +0 -18
  584. package/esm2022/lib/notifications/models/notification.model.mjs +0 -25
  585. package/esm2022/lib/notifications/notification-history.module.mjs +0 -35
  586. package/esm2022/lib/notifications/public-api.mjs +0 -23
  587. package/esm2022/lib/notifications/services/notification.service.mjs +0 -166
  588. package/esm2022/lib/pagination/index.mjs +0 -18
  589. package/esm2022/lib/pagination/infinite-pagination.component.mjs +0 -112
  590. package/esm2022/lib/pagination/paginated-component.interface.mjs +0 -18
  591. package/esm2022/lib/pagination/pagination-component.interface.mjs +0 -18
  592. package/esm2022/lib/pagination/pagination.component.mjs +0 -263
  593. package/esm2022/lib/pagination/pagination.module.mjs +0 -35
  594. package/esm2022/lib/pagination/public-api.mjs +0 -22
  595. package/esm2022/lib/pipes/date-time.pipe.mjs +0 -46
  596. package/esm2022/lib/pipes/decimal-number.pipe.mjs +0 -78
  597. package/esm2022/lib/pipes/file-size.pipe.mjs +0 -54
  598. package/esm2022/lib/pipes/file-type.pipe.mjs +0 -40
  599. package/esm2022/lib/pipes/format-space.pipe.mjs +0 -39
  600. package/esm2022/lib/pipes/full-name.pipe.mjs +0 -43
  601. package/esm2022/lib/pipes/index.mjs +0 -18
  602. package/esm2022/lib/pipes/localized-date.pipe.mjs +0 -70
  603. package/esm2022/lib/pipes/multi-value.pipe.mjs +0 -37
  604. package/esm2022/lib/pipes/pipe.module.mjs +0 -83
  605. package/esm2022/lib/pipes/public-api.mjs +0 -30
  606. package/esm2022/lib/pipes/text-highlight.pipe.mjs +0 -39
  607. package/esm2022/lib/pipes/time-ago.pipe.mjs +0 -65
  608. package/esm2022/lib/pipes/truncate.pipe.mjs +0 -33
  609. package/esm2022/lib/pipes/user-initial.pipe.mjs +0 -52
  610. package/esm2022/lib/pipes/user-like.interface.mjs +0 -18
  611. package/esm2022/lib/progress/progress.component.mjs +0 -90
  612. package/esm2022/lib/search-text/animations.mjs +0 -32
  613. package/esm2022/lib/search-text/index.mjs +0 -18
  614. package/esm2022/lib/search-text/models/search-text-input.model.mjs +0 -23
  615. package/esm2022/lib/search-text/public-api.mjs +0 -22
  616. package/esm2022/lib/search-text/search-text-input.component.mjs +0 -294
  617. package/esm2022/lib/search-text/search-text-input.module.mjs +0 -35
  618. package/esm2022/lib/search-text/search-trigger.directive.mjs +0 -181
  619. package/esm2022/lib/snackbar-content/index.mjs +0 -18
  620. package/esm2022/lib/snackbar-content/public-api.mjs +0 -20
  621. package/esm2022/lib/snackbar-content/snack-bar-data.mjs +0 -18
  622. package/esm2022/lib/snackbar-content/snackbar-content.component.mjs +0 -48
  623. package/esm2022/lib/snackbar-content/snackbar-content.module.mjs +0 -38
  624. package/esm2022/lib/sorting-picker/index.mjs +0 -18
  625. package/esm2022/lib/sorting-picker/public-api.mjs +0 -18
  626. package/esm2022/lib/sorting-picker/sorting-picker.component.mjs +0 -68
  627. package/esm2022/lib/templates/empty-content/empty-content.component.mjs +0 -44
  628. package/esm2022/lib/templates/error-content/error-content.component.mjs +0 -62
  629. package/esm2022/lib/templates/index.mjs +0 -18
  630. package/esm2022/lib/templates/public-api.mjs +0 -20
  631. package/esm2022/lib/templates/template.module.mjs +0 -38
  632. package/esm2022/lib/testing/core.story.module.mjs +0 -39
  633. package/esm2022/lib/testing/core.testing.module.mjs +0 -35
  634. package/esm2022/lib/testing/index.mjs +0 -22
  635. package/esm2022/lib/testing/noop-auth.module.mjs +0 -80
  636. package/esm2022/lib/testing/noop-translate.module.mjs +0 -61
  637. package/esm2022/lib/testing/unit-testing-utils.mjs +0 -364
  638. package/esm2022/lib/toolbar/index.mjs +0 -18
  639. package/esm2022/lib/toolbar/public-api.mjs +0 -21
  640. package/esm2022/lib/toolbar/toolbar-divider.component.mjs +0 -27
  641. package/esm2022/lib/toolbar/toolbar-title.component.mjs +0 -32
  642. package/esm2022/lib/toolbar/toolbar.component.mjs +0 -40
  643. package/esm2022/lib/toolbar/toolbar.module.mjs +0 -36
  644. package/esm2022/lib/translation/index.mjs +0 -18
  645. package/esm2022/lib/translation/public-api.mjs +0 -19
  646. package/esm2022/lib/translation/translate-loader.service.mjs +0 -148
  647. package/esm2022/lib/translation/translation.service.mjs +0 -148
  648. package/esm2022/lib/viewer/components/download-prompt-dialog/download-prompt-dialog.component.mjs +0 -37
  649. package/esm2022/lib/viewer/components/img-viewer/img-viewer.component.mjs +0 -218
  650. package/esm2022/lib/viewer/components/media-player/media-player.component.mjs +0 -61
  651. package/esm2022/lib/viewer/components/pdf-viewer/pdf-viewer.component.mjs +0 -509
  652. package/esm2022/lib/viewer/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.mjs +0 -61
  653. package/esm2022/lib/viewer/components/pdf-viewer-thumb/pdf-viewer-thumb.component.mjs +0 -49
  654. package/esm2022/lib/viewer/components/pdf-viewer-thumbnails/pdf-viewer-thumbnails.component.mjs +0 -198
  655. package/esm2022/lib/viewer/components/txt-viewer/txt-viewer.component.mjs +0 -77
  656. package/esm2022/lib/viewer/components/unknown-format/unknown-format.component.mjs +0 -31
  657. package/esm2022/lib/viewer/components/viewer-more-actions.component.mjs +0 -34
  658. package/esm2022/lib/viewer/components/viewer-open-with.component.mjs +0 -34
  659. package/esm2022/lib/viewer/components/viewer-render/viewer-render.component.mjs +0 -205
  660. package/esm2022/lib/viewer/components/viewer-sidebar.component.mjs +0 -46
  661. package/esm2022/lib/viewer/components/viewer-toolbar-actions.component.mjs +0 -34
  662. package/esm2022/lib/viewer/components/viewer-toolbar-custom-actions.component.mjs +0 -34
  663. package/esm2022/lib/viewer/components/viewer-toolbar.component.mjs +0 -34
  664. package/esm2022/lib/viewer/components/viewer.component.mjs +0 -441
  665. package/esm2022/lib/viewer/directives/viewer-extension.directive.mjs +0 -67
  666. package/esm2022/lib/viewer/index.mjs +0 -18
  667. package/esm2022/lib/viewer/models/download-prompt.actions.mjs +0 -23
  668. package/esm2022/lib/viewer/models/viewer.model.mjs +0 -22
  669. package/esm2022/lib/viewer/public-api.mjs +0 -40
  670. package/esm2022/lib/viewer/services/rendering-queue.services.mjs +0 -179
  671. package/esm2022/lib/viewer/services/view-util.service.mjs +0 -149
  672. package/esm2022/lib/viewer/viewer.module.mjs +0 -112
  673. package/esm2022/public-api.mjs +0 -60
  674. package/esm2022/shell/alfresco-adf-core-shell.mjs +0 -5
  675. package/esm2022/shell/index.mjs +0 -20
  676. package/esm2022/shell/lib/components/shell/shell.component.mjs +0 -122
  677. package/esm2022/shell/lib/services/shell-app.service.mjs +0 -22
  678. package/esm2022/shell/lib/shell.module.mjs +0 -79
  679. package/esm2022/shell/lib/shell.routes.mjs +0 -25
  680. package/lib/prebuilt-themes/adf-blue-orange.css +0 -1
  681. package/lib/prebuilt-themes/adf-blue-purple.css +0 -1
  682. package/lib/prebuilt-themes/adf-cyan-orange.css +0 -1
  683. package/lib/prebuilt-themes/adf-cyan-purple.css +0 -1
  684. package/lib/prebuilt-themes/adf-green-orange.css +0 -1
  685. package/lib/prebuilt-themes/adf-green-purple.css +0 -1
  686. package/lib/prebuilt-themes/adf-indigo-pink.css +0 -1
  687. package/lib/prebuilt-themes/adf-pink-bluegrey.css +0 -1
  688. package/lib/prebuilt-themes/adf-purple-green.css +0 -1
  689. package/lib/styles/_colors.scss +0 -240
  690. package/lib/styles/_components-variables.scss +0 -105
  691. package/lib/styles/_reference-variables.scss +0 -33
  692. package/lib/styles/prebuilt/_all-theme.scss +0 -1
  693. package/lib/styles/prebuilt/adf-blue-orange.scss +0 -21
  694. package/lib/styles/prebuilt/adf-blue-purple.scss +0 -21
  695. package/lib/styles/prebuilt/adf-cyan-orange.scss +0 -21
  696. package/lib/styles/prebuilt/adf-cyan-purple.scss +0 -21
  697. package/lib/styles/prebuilt/adf-green-orange.scss +0 -21
  698. package/lib/styles/prebuilt/adf-green-purple.scss +0 -21
  699. package/lib/styles/prebuilt/adf-indigo-pink.scss +0 -22
  700. package/lib/styles/prebuilt/adf-pink-bluegrey.scss +0 -22
  701. package/lib/styles/prebuilt/adf-purple-green.scss +0 -22
  702. package/lib/styles/snackbar.theme.scss +0 -13
@@ -1,509 +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
- /* eslint-disable @typescript-eslint/naming-convention */
18
- /* eslint-disable no-underscore-dangle */
19
- /* eslint-disable @angular-eslint/no-output-native */
20
- import { NgIf, NgStyle, NgTemplateOutlet } from '@angular/common';
21
- import { Component, EventEmitter, HostListener, Input, Output, TemplateRef, ViewEncapsulation } from '@angular/core';
22
- import { MatButtonModule } from '@angular/material/button';
23
- import { MatDialog } from '@angular/material/dialog';
24
- import { MatIconModule } from '@angular/material/icon';
25
- import { MatProgressBarModule } from '@angular/material/progress-bar';
26
- import { TranslateModule } from '@ngx-translate/core';
27
- import { AnnotationMode } from 'pdfjs-dist';
28
- import { Subject } from 'rxjs';
29
- import { catchError, delay } from 'rxjs/operators';
30
- import { AppConfigService } from '../../../app-config';
31
- import { ToolbarComponent, ToolbarDividerComponent } from '../../../toolbar';
32
- import { RenderingQueueServices } from '../../services/rendering-queue.services';
33
- import { PdfPasswordDialogComponent } from '../pdf-viewer-password-dialog/pdf-viewer-password-dialog';
34
- import { PdfThumbListComponent } from '../pdf-viewer-thumbnails/pdf-viewer-thumbnails.component';
35
- import * as i0 from "@angular/core";
36
- import * as i1 from "@angular/material/dialog";
37
- import * as i2 from "../../services/rendering-queue.services";
38
- import * as i3 from "../../../app-config";
39
- import * as i4 from "@angular/material/button";
40
- import * as i5 from "@angular/material/icon";
41
- import * as i6 from "@ngx-translate/core";
42
- import * as i7 from "@angular/material/progress-bar";
43
- export class PdfViewerComponent {
44
- get currentScaleText() {
45
- return this.pdfViewer?.currentScaleValue ? Math.round(this.pdfViewer.currentScaleValue * 100) + '%' : '';
46
- }
47
- constructor(dialog, renderingQueueServices, appConfigService) {
48
- this.dialog = dialog;
49
- this.renderingQueueServices = renderingQueueServices;
50
- this.appConfigService = appConfigService;
51
- this.showToolbar = true;
52
- this.allowThumbnails = false;
53
- this.thumbnailsTemplate = null;
54
- this.cacheType = '';
55
- this.rendered = new EventEmitter();
56
- this.error = new EventEmitter();
57
- this.close = new EventEmitter();
58
- this.currentScaleMode = 'init';
59
- this.MAX_AUTO_SCALE = 1.25;
60
- this.DEFAULT_SCALE_DELTA = 1.1;
61
- this.MIN_SCALE = 0.25;
62
- this.MAX_SCALE = 10.0;
63
- this.isPanelDisabled = true;
64
- this.showThumbnails = false;
65
- this.pdfThumbnailsContext = { viewer: null };
66
- this.documentOverflow = false;
67
- this.eventBus = new pdfjsViewer.EventBus();
68
- this.pdfjsDefaultOptions = {
69
- disableAutoFetch: true,
70
- disableStream: true,
71
- cMapUrl: './cmaps/',
72
- cMapPacked: true
73
- };
74
- this.pdfjsWorkerDestroy$ = new Subject();
75
- // needed to preserve "this" context
76
- this.onPageChange = this.onPageChange.bind(this);
77
- this.onPagesLoaded = this.onPagesLoaded.bind(this);
78
- this.onPageRendered = this.onPageRendered.bind(this);
79
- this.randomPdfId = Date.now().toString();
80
- this.pdfjsWorkerDestroy$
81
- .pipe(catchError(() => null), delay(700))
82
- .subscribe(() => this.destroyPdJsWorker());
83
- }
84
- getUserScaling() {
85
- let scaleConfig = this.appConfigService.get('adf-viewer.pdf-viewer-scaling', undefined);
86
- if (scaleConfig) {
87
- scaleConfig = scaleConfig / 100;
88
- scaleConfig = this.checkLimits(scaleConfig);
89
- }
90
- return scaleConfig;
91
- }
92
- checkLimits(scaleConfig) {
93
- if (scaleConfig > this.MAX_SCALE) {
94
- return this.MAX_SCALE;
95
- }
96
- else if (scaleConfig < this.MIN_SCALE) {
97
- return this.MIN_SCALE;
98
- }
99
- else {
100
- return scaleConfig;
101
- }
102
- }
103
- ngOnChanges(changes) {
104
- const blobFile = changes['blobFile'];
105
- if (blobFile?.currentValue) {
106
- const reader = new FileReader();
107
- reader.onload = async () => {
108
- const pdfOptions = {
109
- ...this.pdfjsDefaultOptions,
110
- data: reader.result,
111
- withCredentials: this.appConfigService.get('auth.withCredentials', undefined),
112
- isEvalSupported: false
113
- };
114
- this.executePdf(pdfOptions);
115
- };
116
- reader.readAsArrayBuffer(blobFile.currentValue);
117
- }
118
- const urlFile = changes['urlFile'];
119
- if (urlFile?.currentValue) {
120
- const pdfOptions = {
121
- ...this.pdfjsDefaultOptions,
122
- url: urlFile.currentValue,
123
- withCredentials: this.appConfigService.get('auth.withCredentials', undefined),
124
- isEvalSupported: false
125
- };
126
- if (this.cacheType) {
127
- pdfOptions.httpHeaders = {
128
- 'Cache-Control': this.cacheType
129
- };
130
- }
131
- this.executePdf(pdfOptions);
132
- }
133
- if (!this.urlFile && !this.blobFile) {
134
- throw new Error('Attribute urlFile or blobFile is required');
135
- }
136
- }
137
- executePdf(pdfOptions) {
138
- pdfjsLib.GlobalWorkerOptions.workerSrc = 'pdf.worker.min.js';
139
- this.loadingTask = pdfjsLib.getDocument(pdfOptions);
140
- this.loadingTask.onPassword = (callback, reason) => {
141
- this.onPdfPassword(callback, reason);
142
- };
143
- this.loadingTask.onProgress = (progressData) => {
144
- const level = progressData.loaded / progressData.total;
145
- this.loadingPercent = Math.round(level * 100);
146
- };
147
- this.isPanelDisabled = true;
148
- this.loadingTask.promise
149
- .then((pdfDocument) => {
150
- this.totalPages = pdfDocument.numPages;
151
- this.page = 1;
152
- this.displayPage = 1;
153
- this.initPDFViewer(pdfDocument);
154
- return pdfDocument.getPage(1);
155
- })
156
- .then(() => this.scalePage('init'))
157
- .catch(() => this.error.emit());
158
- }
159
- initPDFViewer(pdfDocument) {
160
- const viewer = this.getViewer();
161
- const container = this.getDocumentContainer();
162
- if (viewer && container) {
163
- this.pdfViewer = new pdfjsViewer.PDFViewer({
164
- container,
165
- viewer,
166
- renderingQueue: this.renderingQueueServices,
167
- eventBus: this.eventBus,
168
- annotationMode: AnnotationMode.DISABLE
169
- });
170
- // cspell: disable-next
171
- this.eventBus.on('pagechanging', this.onPageChange);
172
- // cspell: disable-next
173
- this.eventBus.on('pagesloaded', this.onPagesLoaded);
174
- // cspell: disable-next
175
- this.eventBus.on('textlayerrendered', this.onPageRendered);
176
- this.renderingQueueServices.setViewer(this.pdfViewer);
177
- this.pdfViewer.setDocument(pdfDocument);
178
- this.pdfThumbnailsContext.viewer = this.pdfViewer;
179
- }
180
- }
181
- ngOnDestroy() {
182
- if (this.pdfViewer) {
183
- // cspell: disable-next
184
- this.eventBus.off('pagechanging');
185
- // cspell: disable-next
186
- this.eventBus.off('pagesloaded');
187
- // cspell: disable-next
188
- this.eventBus.off('textlayerrendered');
189
- }
190
- if (this.loadingTask) {
191
- this.pdfjsWorkerDestroy$.next(true);
192
- }
193
- this.pdfjsWorkerDestroy$.complete();
194
- }
195
- destroyPdJsWorker() {
196
- this.loadingTask.destroy();
197
- this.loadingTask = null;
198
- }
199
- toggleThumbnails() {
200
- this.showThumbnails = !this.showThumbnails;
201
- }
202
- /**
203
- * Method to scale the page current support implementation
204
- *
205
- * @param scaleMode - new scale mode
206
- */
207
- scalePage(scaleMode) {
208
- this.currentScaleMode = scaleMode;
209
- const viewerContainer = this.getMainContainer();
210
- const documentContainer = this.getDocumentContainer();
211
- if (this.pdfViewer && documentContainer) {
212
- let widthContainer;
213
- let heightContainer;
214
- if (viewerContainer && viewerContainer.clientWidth <= documentContainer.clientWidth) {
215
- widthContainer = viewerContainer.clientWidth;
216
- heightContainer = viewerContainer.clientHeight;
217
- }
218
- else {
219
- widthContainer = documentContainer.clientWidth;
220
- heightContainer = documentContainer.clientHeight;
221
- }
222
- const currentPage = this.pdfViewer._pages[this.pdfViewer._currentPageNumber - 1];
223
- const padding = 20;
224
- const pageWidthScale = ((widthContainer - padding) / currentPage.width) * currentPage.scale;
225
- const pageHeightScale = ((heightContainer - padding) / currentPage.width) * currentPage.scale;
226
- let scale;
227
- switch (this.currentScaleMode) {
228
- case 'init':
229
- case 'page-fit': {
230
- scale = this.getUserScaling();
231
- if (!scale) {
232
- scale = this.autoScaling(pageHeightScale, pageWidthScale);
233
- }
234
- break;
235
- }
236
- case 'page-actual': {
237
- scale = 1;
238
- break;
239
- }
240
- case 'page-width': {
241
- scale = pageWidthScale;
242
- break;
243
- }
244
- case 'page-height': {
245
- scale = pageHeightScale;
246
- break;
247
- }
248
- case 'auto': {
249
- scale = this.autoScaling(pageHeightScale, pageWidthScale);
250
- break;
251
- }
252
- default:
253
- return;
254
- }
255
- this.setScaleUpdatePages(scale);
256
- }
257
- }
258
- autoScaling(pageHeightScale, pageWidthScale) {
259
- let horizontalScale;
260
- if (this.isLandscape) {
261
- horizontalScale = Math.min(pageHeightScale, pageWidthScale);
262
- }
263
- else {
264
- horizontalScale = pageWidthScale;
265
- }
266
- horizontalScale = Math.round(horizontalScale);
267
- const scale = Math.min(this.MAX_AUTO_SCALE, horizontalScale);
268
- return this.checkPageFitInContainer(scale);
269
- }
270
- getMainContainer() {
271
- return document.getElementById(`${this.randomPdfId}-viewer-main-container`);
272
- }
273
- getDocumentContainer() {
274
- return document.getElementById(`${this.randomPdfId}-viewer-pdf-viewer`);
275
- }
276
- getViewer() {
277
- return document.getElementById(`${this.randomPdfId}-viewer-viewerPdf`);
278
- }
279
- checkPageFitInContainer(scale) {
280
- const documentContainerSize = this.getDocumentContainer();
281
- const page = this.pdfViewer._pages[this.pdfViewer._currentPageNumber - 1];
282
- if (page.width > documentContainerSize.clientWidth) {
283
- scale = Math.fround((documentContainerSize.clientWidth - 20) / page.width);
284
- if (scale < this.MIN_SCALE) {
285
- scale = this.MIN_SCALE;
286
- }
287
- }
288
- return scale;
289
- }
290
- setDocumentOverflow() {
291
- const documentContainerSize = this.getDocumentContainer();
292
- const page = this.pdfViewer._pages[this.pdfViewer._currentPageNumber - 1];
293
- this.documentOverflow = page.width > documentContainerSize.clientWidth;
294
- }
295
- /**
296
- * Update all the pages with the newScale scale
297
- *
298
- * @param newScale - new scale page
299
- */
300
- setScaleUpdatePages(newScale) {
301
- if (this.pdfViewer) {
302
- if (!this.isSameScale(this.pdfViewer.currentScaleValue, newScale)) {
303
- this.pdfViewer.currentScaleValue = newScale;
304
- }
305
- this.pdfViewer.update();
306
- }
307
- this.setDocumentOverflow();
308
- }
309
- /**
310
- * Check if the request scale of the page is the same for avoid useless re-rendering
311
- *
312
- * @param oldScale - old scale page
313
- * @param newScale - new scale page
314
- * @returns `true` if the scale is the same, otherwise `false`
315
- */
316
- isSameScale(oldScale, newScale) {
317
- return newScale === oldScale;
318
- }
319
- /**
320
- * Check if is a land scape view
321
- *
322
- * @param width target width
323
- * @param height target height
324
- * @returns `true` if the target is in the landscape mode, otherwise `false`
325
- */
326
- isLandscape(width, height) {
327
- return width > height;
328
- }
329
- /**
330
- * Method triggered when the page is resized
331
- */
332
- onResize() {
333
- this.scalePage(this.currentScaleMode);
334
- }
335
- /**
336
- * toggle the fit page pdf
337
- */
338
- pageFit() {
339
- if (this.currentScaleMode !== 'page-fit') {
340
- this.scalePage('page-fit');
341
- }
342
- else {
343
- this.scalePage('auto');
344
- }
345
- }
346
- /**
347
- * zoom in page pdf
348
- *
349
- * @param ticks number of ticks to zoom
350
- */
351
- zoomIn(ticks) {
352
- let newScale = this.pdfViewer.currentScaleValue;
353
- do {
354
- newScale = (newScale * this.DEFAULT_SCALE_DELTA).toFixed(2);
355
- newScale = Math.ceil(newScale * 10) / 10;
356
- newScale = Math.min(this.MAX_SCALE, newScale);
357
- } while (--ticks > 0 && newScale < this.MAX_SCALE);
358
- this.currentScaleMode = 'auto';
359
- this.setScaleUpdatePages(newScale);
360
- }
361
- /**
362
- * zoom out page pdf
363
- *
364
- * @param ticks number of ticks to scale
365
- */
366
- zoomOut(ticks) {
367
- let newScale = this.pdfViewer.currentScaleValue;
368
- do {
369
- newScale = (newScale / this.DEFAULT_SCALE_DELTA).toFixed(2);
370
- newScale = Math.floor(newScale * 10) / 10;
371
- newScale = Math.max(this.MIN_SCALE, newScale);
372
- } while (--ticks > 0 && newScale > this.MIN_SCALE);
373
- this.currentScaleMode = 'auto';
374
- this.setScaleUpdatePages(newScale);
375
- }
376
- /**
377
- * load the previous page
378
- */
379
- previousPage() {
380
- if (this.pdfViewer && this.page > 1) {
381
- this.page--;
382
- this.displayPage = this.page;
383
- this.pdfViewer.currentPageNumber = this.page;
384
- }
385
- }
386
- /**
387
- * load the next page
388
- */
389
- nextPage() {
390
- if (this.pdfViewer && this.page < this.totalPages) {
391
- this.page++;
392
- this.displayPage = this.page;
393
- this.pdfViewer.currentPageNumber = this.page;
394
- }
395
- }
396
- /**
397
- * load the page in input
398
- *
399
- * @param page to load
400
- */
401
- inputPage(page) {
402
- const pageInput = parseInt(page, 10);
403
- if (!isNaN(pageInput) && pageInput > 0 && pageInput <= this.totalPages) {
404
- this.page = pageInput;
405
- this.displayPage = this.page;
406
- this.pdfViewer.currentPageNumber = this.page;
407
- }
408
- else {
409
- this.displayPage = this.page;
410
- }
411
- }
412
- /**
413
- * Page Change Event
414
- *
415
- * @param event event
416
- */
417
- onPageChange(event) {
418
- if (event.source && event.source.container.id === `${this.randomPdfId}-viewer-pdf-viewer`) {
419
- this.page = event.pageNumber;
420
- this.displayPage = event.pageNumber;
421
- }
422
- }
423
- onPdfPassword(callback, reason) {
424
- this.dialog
425
- .open(PdfPasswordDialogComponent, {
426
- width: '400px',
427
- data: { reason }
428
- })
429
- .afterClosed()
430
- .subscribe((password) => {
431
- if (password) {
432
- callback(password);
433
- }
434
- else {
435
- this.close.emit();
436
- }
437
- });
438
- }
439
- /**
440
- * Page Rendered Event
441
- */
442
- onPageRendered() {
443
- this.rendered.emit();
444
- }
445
- /**
446
- * Pages Loaded Event
447
- *
448
- */
449
- onPagesLoaded() {
450
- this.isPanelDisabled = false;
451
- }
452
- /**
453
- * Keyboard Event Listener
454
- *
455
- * @param event KeyboardEvent
456
- */
457
- handleKeyboardEvent(event) {
458
- const key = event.keyCode;
459
- if (key === 39) {
460
- // right arrow
461
- this.nextPage();
462
- }
463
- else if (key === 37) {
464
- // left arrow
465
- this.previousPage();
466
- }
467
- }
468
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PdfViewerComponent, deps: [{ token: i1.MatDialog }, { token: i2.RenderingQueueServices }, { token: i3.AppConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
469
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PdfViewerComponent, isStandalone: true, selector: "adf-pdf-viewer", inputs: { urlFile: "urlFile", blobFile: "blobFile", fileName: "fileName", showToolbar: "showToolbar", allowThumbnails: "allowThumbnails", thumbnailsTemplate: "thumbnailsTemplate", cacheType: "cacheType" }, outputs: { rendered: "rendered", error: "error", close: "close" }, host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" }, classAttribute: "adf-pdf-viewer" }, providers: [RenderingQueueServices], usesOnChanges: true, ngImport: i0, template: "<div class=\"adf-pdf-viewer__container\">\n <ng-container *ngIf=\"showThumbnails\">\n <div class=\"adf-pdf-viewer__thumbnails\">\n <div class=\"adf-thumbnails-template__container\">\n <div class=\"adf-thumbnails-template__buttons\">\n <button mat-icon-button\n data-automation-id='adf-thumbnails-close'\n (click)=\"toggleThumbnails()\"\n [attr.aria-label]=\"'ADF_VIEWER.ARIA.THUMBNAILS_PANLEL_CLOSE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <ng-container *ngIf=\"thumbnailsTemplate\">\n <ng-container *ngTemplateOutlet=\"thumbnailsTemplate;context:pdfThumbnailsContext\" />\n </ng-container>\n <adf-pdf-thumbnails *ngIf=\"!thumbnailsTemplate && !isPanelDisabled\"\n (close)=\"toggleThumbnails()\"\n [pdfViewer]=\"pdfViewer\" />\n </div>\n </div>\n </ng-container>\n\n <div class=\"adf-pdf-viewer__content\">\n <div [id]=\"randomPdfId + '-viewer-pdf-viewer'\"\n class=\"adf-viewer-pdf-viewer\"\n (window:resize)=\"onResize()\">\n <div [id]=\"randomPdfId + '-viewer-viewerPdf'\"\n class=\"adf-pdfViewer\"\n role=\"document\"\n tabindex=\"0\"\n aria-expanded=\"true\">\n <div id=\"loader-container\" class=\"adf-loader-container\">\n <div class=\"adf-loader-item\">\n <mat-progress-bar class=\"adf-loader-item-progress-bar\" mode=\"indeterminate\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"adf-pdf-viewer__toolbar\" *ngIf=\"showToolbar\" [ngStyle]=\"documentOverflow && {bottom: '25px'}\">\n <adf-toolbar>\n\n <ng-container *ngIf=\"allowThumbnails\">\n <button mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ARIA.THUMBNAILS' | translate\"\n [attr.aria-expanded]=\"showThumbnails\"\n data-automation-id=\"adf-thumbnails-button\"\n [disabled]=\"isPanelDisabled\"\n (click)=\"toggleThumbnails()\">\n <mat-icon>dashboard</mat-icon>\n </button>\n <adf-toolbar-divider />\n </ng-container>\n\n <button id=\"viewer-previous-page-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.PREVIOUS_PAGE' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.PREVIOUS_PAGE' | translate }}\"\n mat-icon-button\n (click)=\"previousPage()\">\n <mat-icon>keyboard_arrow_up</mat-icon>\n </button>\n\n <button id=\"viewer-next-page-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.NEXT_PAGE' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.NEXT_PAGE' | translate }}\"\n mat-icon-button\n (click)=\"nextPage()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n\n <div class=\"adf-pdf-viewer__toolbar-page-selector\">\n <label for=\"page-selector\">{{ 'ADF_VIEWER.PAGE_LABEL.SHOWING' | translate }}</label>\n <input #page\n id=\"page-selector\"\n type=\"text\"\n data-automation-id=\"adf-page-selector\"\n pattern=\"-?[0-9]*(\\.[0-9]+)?\"\n value=\"{{ displayPage }}\"\n [attr.aria-label]=\"'ADF_VIEWER.PAGE_LABEL.PAGE_SELECTOR_LABEL' | translate\"\n (keyup.enter)=\"inputPage(page.value)\">\n <span>{{ 'ADF_VIEWER.PAGE_LABEL.OF' | translate }} {{ totalPages }}</span>\n </div>\n\n <div class=\"adf-pdf-viewer__toolbar-page-scale\" data-automation-id=\"adf-page-scale\">\n {{ currentScaleText }}\n </div>\n\n <button id=\"viewer-zoom-in-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.ZOOM_IN' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.ZOOM_IN' | translate }}\"\n mat-icon-button\n (click)=\"zoomIn()\">\n <mat-icon>zoom_in</mat-icon>\n </button>\n\n <button id=\"viewer-zoom-out-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.ZOOM_OUT' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.ZOOM_OUT' | translate }}\"\n mat-icon-button\n (click)=\"zoomOut()\">\n <mat-icon>zoom_out</mat-icon>\n </button>\n\n <button id=\"viewer-scale-page-button\"\n role=\"button\" aria-pressed=\"true\"\n title=\"{{ 'ADF_VIEWER.ARIA.FIT_PAGE' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.FIT_PAGE' | translate }}\"\n mat-icon-button\n (click)=\"pageFit()\">\n <mat-icon>zoom_out_map</mat-icon>\n </button>\n\n </adf-toolbar>\n</div>\n", styles: [".adf-pdf-viewer .textLayer{position:absolute;inset:0;overflow:hidden;opacity:.2;line-height:1;border:1px solid gray}.adf-pdf-viewer .textLayer>div{color:transparent;position:absolute;white-space:pre;cursor:text;transform-origin:0 0}.adf-pdf-viewer .textLayer .adf-highlight{margin:-1px;padding:1px;background-color:#b400aa;border-radius:4px}.adf-pdf-viewer .textLayer .adf-highlight.adf-begin{border-radius:4px 0 0 4px}.adf-pdf-viewer .textLayer .adf-highlight.adf-end{border-radius:0 4px 4px 0}.adf-pdf-viewer .textLayer .adf-highlight.adf-middle{border-radius:0}.adf-pdf-viewer .textLayer .adf-highlight.adf-selected{background-color:#006400}.adf-pdf-viewer .textLayer::selection{background:#00f}.adf-pdf-viewer .textLayer .adf-endOfContent{display:block;position:absolute;inset:100% 0 0;z-index:-1;cursor:default;-webkit-user-select:none;user-select:none}.adf-pdf-viewer .textLayer .adf-endOfContent.adf-active{top:0}.adf-pdf-viewer .adf-annotationLayer section{position:absolute}.adf-pdf-viewer .adf-annotationLayer .adf-linkAnnotation>a{position:absolute;font-size:1em;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7) 0 0 repeat}.adf-pdf-viewer .adf-annotationLayer .adf-linkAnnotation>a:hover{opacity:.2;background:#ff0;box-shadow:0 2px 10px #ff0}.adf-pdf-viewer .adf-annotationLayer .adf-textAnnotation img{position:absolute;cursor:pointer}.adf-pdf-viewer .adf-annotationLayer .adf-popupWrapper{position:absolute;width:20em}.adf-pdf-viewer .adf-annotationLayer .adf-popup{position:absolute;z-index:200;max-width:20em;background-color:#ff9;box-shadow:0 2px 5px #333;border-radius:2px;padding:.6em;margin-left:5px;cursor:pointer;word-wrap:break-word}.adf-pdf-viewer .adf-annotationLayer .adf-popup h1{font-size:1em;border-bottom:1px solid #000;padding-bottom:.2em}.adf-pdf-viewer .adf-annotationLayer .adf-popup p{padding-top:.2em}.adf-pdf-viewer .adf-annotationLayer .adf-highlightAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-underlineAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-squigglyAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-strikeoutAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-fileAttachmentAnnotation{cursor:pointer}.adf-pdf-viewer .adf-pdfViewer .canvasWrapper{overflow:hidden}.adf-pdf-viewer .adf-pdfViewer .page{direction:ltr;width:816px;height:1056px;margin:1px auto -8px;position:relative;overflow:visible;border:9px solid transparent;background-clip:content-box;background-color:#fff}.adf-pdf-viewer .adf-pdfViewer .page canvas{margin:0;display:block}.adf-pdf-viewer .adf-pdfViewer .page .adf-loadingIcon{position:absolute;display:block;width:100px;height:100px;inset:50% 0 0 50%;margin-top:-50px;margin-left:-50px;font-size:5px;text-indent:-9999em;border-top:1.1em solid rgba(3,0,2,.2);border-right:1.1em solid rgba(3,0,2,.2);border-bottom:1.1em solid rgba(3,0,2,.2);border-left:1.1em solid #030002;animation:load8 1.1s infinite linear;border-radius:50%}.adf-pdf-viewer .adf-pdfViewer .page .adf-loadingIcon:after{border-radius:50%}.adf-pdf-viewer .adf-pdfViewer .page *{padding:0;margin:0}.adf-pdf-viewer .adf-pdfViewer.adf-removePageBorders .adf-page{margin:0 auto 10px;border:none}.adf-pdf-viewer .adf-hidden,.adf-pdf-viewer [hidden]{display:none}.adf-viewer-pdf-viewer{overflow:auto;-webkit-overflow-scrolling:touch;position:absolute;inset:0;outline:none}html[dir=ltr] .adf-viewer-pdf-viewer{box-shadow:inset 1px 0 #ffffff0d}html[dir=rtl] .adf-viewer-pdf-viewer{box-shadow:inset -1px 0 #ffffff0d}\n", ".adf-pdf-viewer{width:100%;height:100%;margin:0}.adf-pdf-viewer .adf-loader-container{display:flex;flex-direction:row;height:100%}.adf-pdf-viewer__thumbnails{position:relative;height:100%;width:190px;background-color:#0000001f;display:flex;flex-direction:column;padding:0}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout{display:flex;flex-direction:column;flex:1;background:#e6e6e6}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout-header{margin-bottom:0}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout-content{padding:0;height:100%;overflow:hidden}.adf-pdf-viewer__thumbnails .adf-info-drawer-content{height:100%}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout-content>*:last-child{height:100%;overflow:hidden}.adf-pdf-viewer .adf-thumbnails-template__container{display:flex;flex-direction:column;height:100%}.adf-pdf-viewer .adf-thumbnails-template__buttons{height:45px;justify-content:flex-end;align-items:flex-end;display:flex;color:var(--adf-theme-foreground-text-color-054)}.adf-pdf-viewer__container{display:flex;height:100%;min-height:1px}.adf-pdf-viewer__content{flex:1 1 auto;position:relative}.adf-pdf-viewer .adf-loader-item{margin:auto;max-height:100px;max-width:300px}.adf-pdf-viewer .adf-loader-item .mat-mdc-progress-bar{max-width:300px;margin:0;position:absolute;top:50%;left:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.adf-pdf-viewer__toolbar{z-index:100;position:absolute;bottom:5px;left:50%;transform:translate(-50%)}.adf-pdf-viewer__toolbar .adf-toolbar .mat-toolbar{max-height:48px;background-color:var(--adf-theme-background-card-color);border-width:0;border-radius:2px;box-shadow:0 2px 2px #000,0 0 2px #0000001f}.adf-pdf-viewer__toolbar-page-selector{padding-left:10px;padding-right:10px;white-space:nowrap;font-size:var(--theme-body-1-font-size)}.adf-pdf-viewer__toolbar-page-selector>input{border:1px solid var(--adf-theme-foreground-text-color-007);background-color:var(--adf-theme-background-card-color);color:inherit;font-size:var(--theme-body-1-font-size);padding:5px;height:24px;line-height:24px;text-align:right;width:33px;margin-right:4px;outline-width:1px;outline-color:gray}.adf-pdf-viewer__toolbar-page-scale{cursor:default;width:79px;height:24px;font-size:var(--theme-body-1-font-size);border:1px solid var(--adf-theme-foreground-text-color-007);text-align:center;line-height:24px;margin-left:4px;margin-right:4px}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "component", type: PdfThumbListComponent, selector: "adf-pdf-thumbnails", inputs: ["pdfViewer"], outputs: ["close"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i7.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ToolbarComponent, selector: "adf-toolbar", inputs: ["title", "color"] }, { kind: "component", type: ToolbarDividerComponent, selector: "adf-toolbar-divider" }], encapsulation: i0.ViewEncapsulation.None }); }
470
- }
471
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PdfViewerComponent, decorators: [{
472
- type: Component,
473
- args: [{ selector: 'adf-pdf-viewer', standalone: true, providers: [RenderingQueueServices], host: { class: 'adf-pdf-viewer' }, imports: [
474
- MatButtonModule,
475
- MatIconModule,
476
- TranslateModule,
477
- PdfThumbListComponent,
478
- NgIf,
479
- NgTemplateOutlet,
480
- MatProgressBarModule,
481
- NgStyle,
482
- ToolbarComponent,
483
- ToolbarDividerComponent
484
- ], encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-pdf-viewer__container\">\n <ng-container *ngIf=\"showThumbnails\">\n <div class=\"adf-pdf-viewer__thumbnails\">\n <div class=\"adf-thumbnails-template__container\">\n <div class=\"adf-thumbnails-template__buttons\">\n <button mat-icon-button\n data-automation-id='adf-thumbnails-close'\n (click)=\"toggleThumbnails()\"\n [attr.aria-label]=\"'ADF_VIEWER.ARIA.THUMBNAILS_PANLEL_CLOSE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <ng-container *ngIf=\"thumbnailsTemplate\">\n <ng-container *ngTemplateOutlet=\"thumbnailsTemplate;context:pdfThumbnailsContext\" />\n </ng-container>\n <adf-pdf-thumbnails *ngIf=\"!thumbnailsTemplate && !isPanelDisabled\"\n (close)=\"toggleThumbnails()\"\n [pdfViewer]=\"pdfViewer\" />\n </div>\n </div>\n </ng-container>\n\n <div class=\"adf-pdf-viewer__content\">\n <div [id]=\"randomPdfId + '-viewer-pdf-viewer'\"\n class=\"adf-viewer-pdf-viewer\"\n (window:resize)=\"onResize()\">\n <div [id]=\"randomPdfId + '-viewer-viewerPdf'\"\n class=\"adf-pdfViewer\"\n role=\"document\"\n tabindex=\"0\"\n aria-expanded=\"true\">\n <div id=\"loader-container\" class=\"adf-loader-container\">\n <div class=\"adf-loader-item\">\n <mat-progress-bar class=\"adf-loader-item-progress-bar\" mode=\"indeterminate\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"adf-pdf-viewer__toolbar\" *ngIf=\"showToolbar\" [ngStyle]=\"documentOverflow && {bottom: '25px'}\">\n <adf-toolbar>\n\n <ng-container *ngIf=\"allowThumbnails\">\n <button mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ARIA.THUMBNAILS' | translate\"\n [attr.aria-expanded]=\"showThumbnails\"\n data-automation-id=\"adf-thumbnails-button\"\n [disabled]=\"isPanelDisabled\"\n (click)=\"toggleThumbnails()\">\n <mat-icon>dashboard</mat-icon>\n </button>\n <adf-toolbar-divider />\n </ng-container>\n\n <button id=\"viewer-previous-page-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.PREVIOUS_PAGE' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.PREVIOUS_PAGE' | translate }}\"\n mat-icon-button\n (click)=\"previousPage()\">\n <mat-icon>keyboard_arrow_up</mat-icon>\n </button>\n\n <button id=\"viewer-next-page-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.NEXT_PAGE' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.NEXT_PAGE' | translate }}\"\n mat-icon-button\n (click)=\"nextPage()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n\n <div class=\"adf-pdf-viewer__toolbar-page-selector\">\n <label for=\"page-selector\">{{ 'ADF_VIEWER.PAGE_LABEL.SHOWING' | translate }}</label>\n <input #page\n id=\"page-selector\"\n type=\"text\"\n data-automation-id=\"adf-page-selector\"\n pattern=\"-?[0-9]*(\\.[0-9]+)?\"\n value=\"{{ displayPage }}\"\n [attr.aria-label]=\"'ADF_VIEWER.PAGE_LABEL.PAGE_SELECTOR_LABEL' | translate\"\n (keyup.enter)=\"inputPage(page.value)\">\n <span>{{ 'ADF_VIEWER.PAGE_LABEL.OF' | translate }} {{ totalPages }}</span>\n </div>\n\n <div class=\"adf-pdf-viewer__toolbar-page-scale\" data-automation-id=\"adf-page-scale\">\n {{ currentScaleText }}\n </div>\n\n <button id=\"viewer-zoom-in-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.ZOOM_IN' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.ZOOM_IN' | translate }}\"\n mat-icon-button\n (click)=\"zoomIn()\">\n <mat-icon>zoom_in</mat-icon>\n </button>\n\n <button id=\"viewer-zoom-out-button\"\n title=\"{{ 'ADF_VIEWER.ARIA.ZOOM_OUT' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.ZOOM_OUT' | translate }}\"\n mat-icon-button\n (click)=\"zoomOut()\">\n <mat-icon>zoom_out</mat-icon>\n </button>\n\n <button id=\"viewer-scale-page-button\"\n role=\"button\" aria-pressed=\"true\"\n title=\"{{ 'ADF_VIEWER.ARIA.FIT_PAGE' | translate }}\"\n attr.aria-label=\"{{ 'ADF_VIEWER.ARIA.FIT_PAGE' | translate }}\"\n mat-icon-button\n (click)=\"pageFit()\">\n <mat-icon>zoom_out_map</mat-icon>\n </button>\n\n </adf-toolbar>\n</div>\n", styles: [".adf-pdf-viewer .textLayer{position:absolute;inset:0;overflow:hidden;opacity:.2;line-height:1;border:1px solid gray}.adf-pdf-viewer .textLayer>div{color:transparent;position:absolute;white-space:pre;cursor:text;transform-origin:0 0}.adf-pdf-viewer .textLayer .adf-highlight{margin:-1px;padding:1px;background-color:#b400aa;border-radius:4px}.adf-pdf-viewer .textLayer .adf-highlight.adf-begin{border-radius:4px 0 0 4px}.adf-pdf-viewer .textLayer .adf-highlight.adf-end{border-radius:0 4px 4px 0}.adf-pdf-viewer .textLayer .adf-highlight.adf-middle{border-radius:0}.adf-pdf-viewer .textLayer .adf-highlight.adf-selected{background-color:#006400}.adf-pdf-viewer .textLayer::selection{background:#00f}.adf-pdf-viewer .textLayer .adf-endOfContent{display:block;position:absolute;inset:100% 0 0;z-index:-1;cursor:default;-webkit-user-select:none;user-select:none}.adf-pdf-viewer .textLayer .adf-endOfContent.adf-active{top:0}.adf-pdf-viewer .adf-annotationLayer section{position:absolute}.adf-pdf-viewer .adf-annotationLayer .adf-linkAnnotation>a{position:absolute;font-size:1em;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7) 0 0 repeat}.adf-pdf-viewer .adf-annotationLayer .adf-linkAnnotation>a:hover{opacity:.2;background:#ff0;box-shadow:0 2px 10px #ff0}.adf-pdf-viewer .adf-annotationLayer .adf-textAnnotation img{position:absolute;cursor:pointer}.adf-pdf-viewer .adf-annotationLayer .adf-popupWrapper{position:absolute;width:20em}.adf-pdf-viewer .adf-annotationLayer .adf-popup{position:absolute;z-index:200;max-width:20em;background-color:#ff9;box-shadow:0 2px 5px #333;border-radius:2px;padding:.6em;margin-left:5px;cursor:pointer;word-wrap:break-word}.adf-pdf-viewer .adf-annotationLayer .adf-popup h1{font-size:1em;border-bottom:1px solid #000;padding-bottom:.2em}.adf-pdf-viewer .adf-annotationLayer .adf-popup p{padding-top:.2em}.adf-pdf-viewer .adf-annotationLayer .adf-highlightAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-underlineAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-squigglyAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-strikeoutAnnotation,.adf-pdf-viewer .adf-annotationLayer .adf-fileAttachmentAnnotation{cursor:pointer}.adf-pdf-viewer .adf-pdfViewer .canvasWrapper{overflow:hidden}.adf-pdf-viewer .adf-pdfViewer .page{direction:ltr;width:816px;height:1056px;margin:1px auto -8px;position:relative;overflow:visible;border:9px solid transparent;background-clip:content-box;background-color:#fff}.adf-pdf-viewer .adf-pdfViewer .page canvas{margin:0;display:block}.adf-pdf-viewer .adf-pdfViewer .page .adf-loadingIcon{position:absolute;display:block;width:100px;height:100px;inset:50% 0 0 50%;margin-top:-50px;margin-left:-50px;font-size:5px;text-indent:-9999em;border-top:1.1em solid rgba(3,0,2,.2);border-right:1.1em solid rgba(3,0,2,.2);border-bottom:1.1em solid rgba(3,0,2,.2);border-left:1.1em solid #030002;animation:load8 1.1s infinite linear;border-radius:50%}.adf-pdf-viewer .adf-pdfViewer .page .adf-loadingIcon:after{border-radius:50%}.adf-pdf-viewer .adf-pdfViewer .page *{padding:0;margin:0}.adf-pdf-viewer .adf-pdfViewer.adf-removePageBorders .adf-page{margin:0 auto 10px;border:none}.adf-pdf-viewer .adf-hidden,.adf-pdf-viewer [hidden]{display:none}.adf-viewer-pdf-viewer{overflow:auto;-webkit-overflow-scrolling:touch;position:absolute;inset:0;outline:none}html[dir=ltr] .adf-viewer-pdf-viewer{box-shadow:inset 1px 0 #ffffff0d}html[dir=rtl] .adf-viewer-pdf-viewer{box-shadow:inset -1px 0 #ffffff0d}\n", ".adf-pdf-viewer{width:100%;height:100%;margin:0}.adf-pdf-viewer .adf-loader-container{display:flex;flex-direction:row;height:100%}.adf-pdf-viewer__thumbnails{position:relative;height:100%;width:190px;background-color:#0000001f;display:flex;flex-direction:column;padding:0}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout{display:flex;flex-direction:column;flex:1;background:#e6e6e6}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout-header{margin-bottom:0}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout-content{padding:0;height:100%;overflow:hidden}.adf-pdf-viewer__thumbnails .adf-info-drawer-content{height:100%}.adf-pdf-viewer__thumbnails .adf-info-drawer-layout-content>*:last-child{height:100%;overflow:hidden}.adf-pdf-viewer .adf-thumbnails-template__container{display:flex;flex-direction:column;height:100%}.adf-pdf-viewer .adf-thumbnails-template__buttons{height:45px;justify-content:flex-end;align-items:flex-end;display:flex;color:var(--adf-theme-foreground-text-color-054)}.adf-pdf-viewer__container{display:flex;height:100%;min-height:1px}.adf-pdf-viewer__content{flex:1 1 auto;position:relative}.adf-pdf-viewer .adf-loader-item{margin:auto;max-height:100px;max-width:300px}.adf-pdf-viewer .adf-loader-item .mat-mdc-progress-bar{max-width:300px;margin:0;position:absolute;top:50%;left:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.adf-pdf-viewer__toolbar{z-index:100;position:absolute;bottom:5px;left:50%;transform:translate(-50%)}.adf-pdf-viewer__toolbar .adf-toolbar .mat-toolbar{max-height:48px;background-color:var(--adf-theme-background-card-color);border-width:0;border-radius:2px;box-shadow:0 2px 2px #000,0 0 2px #0000001f}.adf-pdf-viewer__toolbar-page-selector{padding-left:10px;padding-right:10px;white-space:nowrap;font-size:var(--theme-body-1-font-size)}.adf-pdf-viewer__toolbar-page-selector>input{border:1px solid var(--adf-theme-foreground-text-color-007);background-color:var(--adf-theme-background-card-color);color:inherit;font-size:var(--theme-body-1-font-size);padding:5px;height:24px;line-height:24px;text-align:right;width:33px;margin-right:4px;outline-width:1px;outline-color:gray}.adf-pdf-viewer__toolbar-page-scale{cursor:default;width:79px;height:24px;font-size:var(--theme-body-1-font-size);border:1px solid var(--adf-theme-foreground-text-color-007);text-align:center;line-height:24px;margin-left:4px;margin-right:4px}\n"] }]
485
- }], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.RenderingQueueServices }, { type: i3.AppConfigService }], propDecorators: { urlFile: [{
486
- type: Input
487
- }], blobFile: [{
488
- type: Input
489
- }], fileName: [{
490
- type: Input
491
- }], showToolbar: [{
492
- type: Input
493
- }], allowThumbnails: [{
494
- type: Input
495
- }], thumbnailsTemplate: [{
496
- type: Input
497
- }], cacheType: [{
498
- type: Input
499
- }], rendered: [{
500
- type: Output
501
- }], error: [{
502
- type: Output
503
- }], close: [{
504
- type: Output
505
- }], handleKeyboardEvent: [{
506
- type: HostListener,
507
- args: ['document:keydown', ['$event']]
508
- }] } });
509
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL3ZpZXdlci9jb21wb25lbnRzL3BkZi12aWV3ZXIvcGRmLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL3ZpZXdlci9jb21wb25lbnRzL3BkZi12aWV3ZXIvcGRmLXZpZXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCx5REFBeUQ7QUFDekQseUNBQXlDO0FBQ3pDLHFEQUFxRDtBQUVyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFdBQVcsRUFDWCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQWtFLE1BQU0sWUFBWSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVB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O2tKQUlyQyxPQUFPO3NCQUROLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQUlOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxNQUFNO2dCQUlQLEtBQUs7c0JBREosTUFBTTtnQkFJUCxLQUFLO3NCQURKLE1BQU07Z0JBMGRQLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmUgKi9cblxuaW1wb3J0IHsgTmdJZiwgTmdTdHlsZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbk1vZGUsIE9uUHJvZ3Jlc3NQYXJhbWV0ZXJzLCBQREZEb2N1bWVudExvYWRpbmdUYXNrLCBQREZEb2N1bWVudFByb3h5IH0gZnJvbSAncGRmanMtZGlzdCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHAtY29uZmlnJztcbmltcG9ydCB7IFRvb2xiYXJDb21wb25lbnQsIFRvb2xiYXJEaXZpZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdG9vbGJhcic7XG5pbXBvcnQgeyBSZW5kZXJpbmdRdWV1ZVNlcnZpY2VzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVuZGVyaW5nLXF1ZXVlLnNlcnZpY2VzJztcbmltcG9ydCB7IFBkZlBhc3N3b3JkRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vcGRmLXZpZXdlci1wYXNzd29yZC1kaWFsb2cvcGRmLXZpZXdlci1wYXNzd29yZC1kaWFsb2cnO1xuaW1wb3J0IHsgUGRmVGh1bWJMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vcGRmLXZpZXdlci10aHVtYm5haWxzL3BkZi12aWV3ZXItdGh1bWJuYWlscy5jb21wb25lbnQnO1xuXG5kZWNsYXJlIGNvbnN0IHBkZmpzTGliOiBhbnk7XG5kZWNsYXJlIGNvbnN0IHBkZmpzVmlld2VyOiBhbnk7XG5cbmV4cG9ydCB0eXBlIFBkZlNjYWxlTW9kZSA9ICdpbml0JyB8ICdwYWdlLWFjdHVhbCcgfCAncGFnZS13aWR0aCcgfCAncGFnZS1oZWlnaHQnIHwgJ3BhZ2UtZml0JyB8ICdhdXRvJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtcGRmLXZpZXdlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGRmLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcGRmLXZpZXdlci1ob3N0LmNvbXBvbmVudC5zY3NzJywgJy4vcGRmLXZpZXdlci5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1JlbmRlcmluZ1F1ZXVlU2VydmljZXNdLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdhZGYtcGRmLXZpZXdlcicgfSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgICBQZGZUaHVtYkxpc3RDb21wb25lbnQsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxuICAgICAgICBOZ1N0eWxlLFxuICAgICAgICBUb29sYmFyQ29tcG9uZW50LFxuICAgICAgICBUb29sYmFyRGl2aWRlckNvbXBvbmVudFxuICAgIF0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBQZGZWaWV3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KClcbiAgICB1cmxGaWxlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIGJsb2JGaWxlOiBCbG9iO1xuXG4gICAgQElucHV0KClcbiAgICBmaWxlTmFtZTogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBzaG93VG9vbGJhcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIGFsbG93VGh1bWJuYWlscyA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICB0aHVtYm5haWxzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBjYWNoZVR5cGU6IHN0cmluZyA9ICcnO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcmVuZGVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgcGFnZTogbnVtYmVyO1xuICAgIGRpc3BsYXlQYWdlOiBudW1iZXI7XG4gICAgdG90YWxQYWdlczogbnVtYmVyO1xuICAgIGxvYWRpbmdQZXJjZW50OiBudW1iZXI7XG4gICAgcGRmVmlld2VyOiBhbnk7XG4gICAgY3VycmVudFNjYWxlTW9kZTogUGRmU2NhbGVNb2RlID0gJ2luaXQnO1xuXG4gICAgTUFYX0FVVE9fU0NBTEU6IG51bWJlciA9IDEuMjU7XG4gICAgREVGQVVMVF9TQ0FMRV9ERUxUQTogbnVtYmVyID0gMS4xO1xuICAgIE1JTl9TQ0FMRTogbnVtYmVyID0gMC4yNTtcbiAgICBNQVhfU0NBTEU6IG51bWJlciA9IDEwLjA7XG5cbiAgICBsb2FkaW5nVGFzazogUERGRG9jdW1lbnRMb2FkaW5nVGFzaztcbiAgICBpc1BhbmVsRGlzYWJsZWQgPSB0cnVlO1xuICAgIHNob3dUaHVtYm5haWxzOiBib29sZWFuID0gZmFsc2U7XG4gICAgcGRmVGh1bWJuYWlsc0NvbnRleHQ6IHsgdmlld2VyOiBhbnkgfSA9IHsgdmlld2VyOiBudWxsIH07XG4gICAgcmFuZG9tUGRmSWQ6IHN0cmluZztcbiAgICBkb2N1bWVudE92ZXJmbG93ID0gZmFsc2U7XG5cbiAgICBnZXQgY3VycmVudFNjYWxlVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5wZGZWaWV3ZXI/LmN1cnJlbnRTY2FsZVZhbHVlID8gTWF0aC5yb3VuZCh0aGlzLnBkZlZpZXdlci5jdXJyZW50U2NhbGVWYWx1ZSAqIDEwMCkgKyAnJScgOiAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGV2ZW50QnVzID0gbmV3IHBkZmpzVmlld2VyLkV2ZW50QnVzKCk7XG4gICAgcHJpdmF0ZSBwZGZqc0RlZmF1bHRPcHRpb25zID0ge1xuICAgICAgICBkaXNhYmxlQXV0b0ZldGNoOiB0cnVlLFxuICAgICAgICBkaXNhYmxlU3RyZWFtOiB0cnVlLFxuICAgICAgICBjTWFwVXJsOiAnLi9jbWFwcy8nLFxuICAgICAgICBjTWFwUGFja2VkOiB0cnVlXG4gICAgfTtcbiAgICBwcml2YXRlIHBkZmpzV29ya2VyRGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZywgcHJpdmF0ZSByZW5kZXJpbmdRdWV1ZVNlcnZpY2VzOiBSZW5kZXJpbmdRdWV1ZVNlcnZpY2VzLCBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2UpIHtcbiAgICAgICAgLy8gbmVlZGVkIHRvIHByZXNlcnZlIFwidGhpc1wiIGNvbnRleHRcbiAgICAgICAgdGhpcy5vblBhZ2VDaGFuZ2UgPSB0aGlzLm9uUGFnZUNoYW5nZS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLm9uUGFnZXNMb2FkZWQgPSB0aGlzLm9uUGFnZXNMb2FkZWQuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5vblBhZ2VSZW5kZXJlZCA9IHRoaXMub25QYWdlUmVuZGVyZWQuYmluZCh0aGlzKTtcblxuICAgICAgICB0aGlzLnJhbmRvbVBkZklkID0gRGF0ZS5ub3coKS50b1N0cmluZygpO1xuICAgICAgICB0aGlzLnBkZmpzV29ya2VyRGVzdHJveSRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gbnVsbCksXG4gICAgICAgICAgICAgICAgZGVsYXkoNzAwKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmRlc3Ryb3lQZEpzV29ya2VyKCkpO1xuICAgIH1cblxuICAgIGdldFVzZXJTY2FsaW5nKCk6IG51bWJlciB7XG4gICAgICAgIGxldCBzY2FsZUNvbmZpZyA9IHRoaXMuYXBwQ29uZmlnU2VydmljZS5nZXQ8bnVtYmVyPignYWRmLXZpZXdlci5wZGYtdmlld2VyLXNjYWxpbmcnLCB1bmRlZmluZWQpO1xuXG4gICAgICAgIGlmIChzY2FsZUNvbmZpZykge1xuICAgICAgICAgICAgc2NhbGVDb25maWcgPSBzY2FsZUNvbmZpZyAvIDEwMDtcbiAgICAgICAgICAgIHNjYWxlQ29uZmlnID0gdGhpcy5jaGVja0xpbWl0cyhzY2FsZUNvbmZpZyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2NhbGVDb25maWc7XG4gICAgfVxuXG4gICAgY2hlY2tMaW1pdHMoc2NhbGVDb25maWc6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGlmIChzY2FsZUNvbmZpZyA+IHRoaXMuTUFYX1NDQUxFKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5NQVhfU0NBTEU7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NhbGVDb25maWcgPCB0aGlzLk1JTl9TQ0FMRSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuTUlOX1NDQUxFO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHNjYWxlQ29uZmlnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBibG9iRmlsZSA9IGNoYW5nZXNbJ2Jsb2JGaWxlJ107XG5cbiAgICAgICAgaWYgKGJsb2JGaWxlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBkZk9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMucGRmanNEZWZhdWx0T3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogcmVhZGVyLnJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuZ2V0PGJvb2xlYW4+KCdhdXRoLndpdGhDcmVkZW50aWFscycsIHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgICAgIGlzRXZhbFN1cHBvcnRlZDogZmFsc2VcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMuZXhlY3V0ZVBkZihwZGZPcHRpb25zKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYmxvYkZpbGUuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVybEZpbGUgPSBjaGFuZ2VzWyd1cmxGaWxlJ107XG4gICAgICAgIGlmICh1cmxGaWxlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHBkZk9wdGlvbnM6IGFueSA9IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLnBkZmpzRGVmYXVsdE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgdXJsOiB1cmxGaWxlLmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuYXBwQ29uZmlnU2VydmljZS5nZXQ8Ym9vbGVhbj4oJ2F1dGgud2l0aENyZWRlbnRpYWxzJywgdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICBpc0V2YWxTdXBwb3J0ZWQ6IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHRoaXMuY2FjaGVUeXBlKSB7XG4gICAgICAgICAgICAgICAgcGRmT3B0aW9ucy5odHRwSGVhZGVycyA9IHtcbiAgICAgICAgICAgICAgICAgICAgJ0NhY2hlLUNvbnRyb2wnOiB0aGlzLmNhY2hlVHlwZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGVQZGYocGRmT3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMudXJsRmlsZSAmJiAhdGhpcy5ibG9iRmlsZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBdHRyaWJ1dGUgdXJsRmlsZSBvciBibG9iRmlsZSBpcyByZXF1aXJlZCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXhlY3V0ZVBkZihwZGZPcHRpb25zOiBhbnkpIHtcbiAgICAgICAgcGRmanNMaWIuR2xvYmFsV29ya2VyT3B0aW9ucy53b3JrZXJTcmMgPSAncGRmLndvcmtlci5taW4uanMnO1xuXG4gICAgICAgIHRoaXMubG9hZGluZ1Rhc2sgPSBwZGZqc0xpYi5nZXREb2N1bWVudChwZGZPcHRpb25zKTtcblxuICAgICAgICB0aGlzLmxvYWRpbmdUYXNrLm9uUGFzc3dvcmQgPSAoY2FsbGJhY2ssIHJlYXNvbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblBkZlBhc3N3b3JkKGNhbGxiYWNrLCByZWFzb24pO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMubG9hZGluZ1Rhc2sub25Qcm9ncmVzcyA9IChwcm9ncmVzc0RhdGE6IE9uUHJvZ3Jlc3NQYXJhbWV0ZXJzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsZXZlbCA9IHByb2dyZXNzRGF0YS5sb2FkZWQgLyBwcm9ncmVzc0RhdGEudG90YWw7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdQZXJjZW50ID0gTWF0aC5yb3VuZChsZXZlbCAqIDEwMCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5pc1BhbmVsRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmxvYWRpbmdUYXNrLnByb21pc2VcbiAgICAgICAgICAgIC50aGVuKChwZGZEb2N1bWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWxQYWdlcyA9IHBkZkRvY3VtZW50Lm51bVBhZ2VzO1xuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9IDE7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5UGFnZSA9IDE7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0UERGVmlld2VyKHBkZkRvY3VtZW50KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBwZGZEb2N1bWVudC5nZXRQYWdlKDEpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMuc2NhbGVQYWdlKCdpbml0JykpXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4gdGhpcy5lcnJvci5lbWl0KCkpO1xuICAgIH1cblxuICAgIGluaXRQREZWaWV3ZXIocGRmRG9jdW1lbnQ6IFBERkRvY3VtZW50UHJveHkpIHtcbiAgICAgICAgY29uc3Qgdmlld2VyOiBhbnkgPSB0aGlzLmdldFZpZXdlcigpO1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmdldERvY3VtZW50Q29udGFpbmVyKCk7XG5cbiAgICAgICAgaWYgKHZpZXdlciAmJiBjb250YWluZXIpIHtcbiAgICAgICAgICAgIHRoaXMucGRmVmlld2VyID0gbmV3IHBkZmpzVmlld2VyLlBERlZpZXdlcih7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLFxuICAgICAgICAgICAgICAgIHZpZXdlcixcbiAgICAgICAgICAgICAgICByZW5kZXJpbmdRdWV1ZTogdGhpcy5yZW5kZXJpbmdRdWV1ZVNlcnZpY2VzLFxuICAgICAgICAgICAgICAgIGV2ZW50QnVzOiB0aGlzLmV2ZW50QnVzLFxuICAgICAgICAgICAgICAgIGFubm90YXRpb25Nb2RlOiBBbm5vdGF0aW9uTW9kZS5ESVNBQkxFXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gY3NwZWxsOiBkaXNhYmxlLW5leHRcbiAgICAgICAgICAgIHRoaXMuZXZlbnRCdXMub24oJ3BhZ2VjaGFuZ2luZycsIHRoaXMub25QYWdlQ2hhbmdlKTtcbiAgICAgICAgICAgIC8vIGNzcGVsbDogZGlzYWJsZS1uZXh0XG4gICAgICAgICAgICB0aGlzLmV2ZW50QnVzLm9uKCdwYWdlc2xvYWRlZCcsIHRoaXMub25QYWdlc0xvYWRlZCk7XG4gICAgICAgICAgICAvLyBjc3BlbGw6IGRpc2FibGUtbmV4dFxuICAgICAgICAgICAgdGhpcy5ldmVudEJ1cy5vbigndGV4dGxheWVycmVuZGVyZWQnLCB0aGlzLm9uUGFnZVJlbmRlcmVkKTtcblxuICAgICAgICAgICAgdGhpcy5yZW5kZXJpbmdRdWV1ZVNlcnZpY2VzLnNldFZpZXdlcih0aGlzLnBkZlZpZXdlcik7XG4gICAgICAgICAgICB0aGlzLnBkZlZpZXdlci5zZXREb2N1bWVudChwZGZEb2N1bWVudCk7XG4gICAgICAgICAgICB0aGlzLnBkZlRodW1ibmFpbHNDb250ZXh0LnZpZXdlciA9IHRoaXMucGRmVmlld2VyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLnBkZlZpZXdlcikge1xuICAgICAgICAgICAgLy8gY3NwZWxsOiBkaXNhYmxlLW5leHRcbiAgICAgICAgICAgIHRoaXMuZXZlbnRCdXMub2ZmKCdwYWdlY2hhbmdpbmcnKTtcbiAgICAgICAgICAgIC8vIGNzcGVsbDogZGlzYWJsZS1uZXh0XG4gICAgICAgICAgICB0aGlzLmV2ZW50QnVzLm9mZigncGFnZXNsb2FkZWQnKTtcbiAgICAgICAgICAgIC8vIGNzcGVsbDogZGlzYWJsZS1uZXh0XG4gICAgICAgICAgICB0aGlzLmV2ZW50QnVzLm9mZigndGV4dGxheWVycmVuZGVyZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxvYWRpbmdUYXNrKSB7XG4gICAgICAgICAgICB0aGlzLnBkZmpzV29ya2VyRGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBkZmpzV29ya2VyRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc3Ryb3lQZEpzV29ya2VyKCkge1xuICAgICAgICB0aGlzLmxvYWRpbmdUYXNrLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nVGFzayA9IG51bGw7XG4gICAgfVxuXG4gICAgdG9nZ2xlVGh1bWJuYWlscygpIHtcbiAgICAgICAgdGhpcy5zaG93VGh1bWJuYWlscyA9ICF0aGlzLnNob3dUaHVtYm5haWxzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB0byBzY2FsZSB0aGUgcGFnZSBjdXJyZW50IHN1cHBvcnQgaW1wbGVtZW50YXRpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzY2FsZU1vZGUgLSBuZXcgc2NhbGUgbW9kZVxuICAgICAqL1xuICAgIHNjYWxlUGFnZShzY2FsZU1vZGU6IFBkZlNjYWxlTW9kZSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRTY2FsZU1vZGUgPSBzY2FsZU1vZGU7XG5cbiAgICAgICAgY29uc3Qgdmlld2VyQ29udGFpbmVyID0gdGhpcy5nZXRNYWluQ29udGFpbmVyKCk7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50Q29udGFpbmVyID0gdGhpcy5nZXREb2N1bWVudENvbnRhaW5lcigpO1xuXG4gICAgICAgIGlmICh0aGlzLnBkZlZpZXdlciAmJiBkb2N1bWVudENvbnRhaW5lcikge1xuICAgICAgICAgICAgbGV0IHdpZHRoQ29udGFpbmVyOiBudW1iZXI7XG4gICAgICAgICAgICBsZXQgaGVpZ2h0Q29udGFpbmVyOiBudW1iZXI7XG5cbiAgICAgICAgICAgIGlmICh2aWV3ZXJDb250YWluZXIgJiYgdmlld2VyQ29udGFpbmVyLmNsaWVudFdpZHRoIDw9IGRvY3VtZW50Q29udGFpbmVyLmNsaWVudFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgd2lkdGhDb250YWluZXIgPSB2aWV3ZXJDb250YWluZXIuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0Q29udGFpbmVyID0gdmlld2VyQ29udGFpbmVyLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgd2lkdGhDb250YWluZXIgPSBkb2N1bWVudENvbnRhaW5lci5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgICAgICBoZWlnaHRDb250YWluZXIgPSBkb2N1bWVudENvbnRhaW5lci5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gdGhpcy5wZGZWaWV3ZXIuX3BhZ2VzW3RoaXMucGRmVmlld2VyLl9jdXJyZW50UGFnZU51bWJlciAtIDFdO1xuXG4gICAgICAgICAgICBjb25zdCBwYWRkaW5nID0gMjA7XG4gICAgICAgICAgICBjb25zdCBwYWdlV2lkdGhTY2FsZSA9ICgod2lkdGhDb250YWluZXIgLSBwYWRkaW5nKSAvIGN1cnJlbnRQYWdlLndpZHRoKSAqIGN1cnJlbnRQYWdlLnNjYWxlO1xuICAgICAgICAgICAgY29uc3QgcGFnZUhlaWdodFNjYWxlID0gKChoZWlnaHRDb250YWluZXIgLSBwYWRkaW5nKSAvIGN1cnJlbnRQYWdlLndpZHRoKSAqIGN1cnJlbnRQYWdlLnNjYWxlO1xuXG4gICAgICAgICAgICBsZXQgc2NhbGU6IG51bWJlcjtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5jdXJyZW50U2NhbGVNb2RlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnaW5pdCc6XG4gICAgICAgICAgICAgICAgY2FzZSAncGFnZS1maXQnOiB7XG4gICAgICAgICAgICAgICAgICAgIHNjYWxlID0gdGhpcy5nZXRVc2VyU2NhbGluZygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXNjYWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZSA9IHRoaXMuYXV0b1NjYWxpbmcocGFnZUhlaWdodFNjYWxlLCBwYWdlV2lkdGhTY2FsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ3BhZ2UtYWN0dWFsJzoge1xuICAgICAgICAgICAgICAgICAgICBzY2FsZSA9IDE7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdwYWdlLXdpZHRoJzoge1xuICAgICAgICAgICAgICAgICAgICBzY2FsZSA9IHBhZ2VXaWR0aFNjYWxlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAncGFnZS1oZWlnaHQnOiB7XG4gICAgICAgICAgICAgICAgICAgIHNjYWxlID0gcGFnZUhlaWdodFNjYWxlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAnYXV0byc6IHtcbiAgICAgICAgICAgICAgICAgICAgc2NhbGUgPSB0aGlzLmF1dG9TY2FsaW5nKHBhZ2VIZWlnaHRTY2FsZSwgcGFnZVdpZHRoU2NhbGUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNldFNjYWxlVXBkYXRlUGFnZXMoc2NhbGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhdXRvU2NhbGluZyhwYWdlSGVpZ2h0U2NhbGU6IG51bWJlciwgcGFnZVdpZHRoU2NhbGU6IG51bWJlcikge1xuICAgICAgICBsZXQgaG9yaXpvbnRhbFNjYWxlOiBudW1iZXI7XG4gICAgICAgIGlmICh0aGlzLmlzTGFuZHNjYXBlKSB7XG4gICAgICAgICAgICBob3Jpem9udGFsU2NhbGUgPSBNYXRoLm1pbihwYWdlSGVpZ2h0U2NhbGUsIHBhZ2VXaWR0aFNjYWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhvcml6b250YWxTY2FsZSA9IHBhZ2VXaWR0aFNjYWxlO1xuICAgICAgICB9XG4gICAgICAgIGhvcml6b250YWxTY2FsZSA9IE1hdGgucm91bmQoaG9yaXpvbnRhbFNjYWxlKTtcbiAgICAgICAgY29uc3Qgc2NhbGUgPSBNYXRoLm1pbih0aGlzLk1BWF9BVVRPX1NDQUxFLCBob3Jpem9udGFsU2NhbGUpO1xuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1BhZ2VGaXRJbkNvbnRhaW5lcihzY2FsZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNYWluQ29udGFpbmVyKCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGAke3RoaXMucmFuZG9tUGRmSWR9LXZpZXdlci1tYWluLWNvbnRhaW5lcmApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RG9jdW1lbnRDb250YWluZXIoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYCR7dGhpcy5yYW5kb21QZGZJZH0tdmlld2VyLXBkZi12aWV3ZXJgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZpZXdlcigpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgJHt0aGlzLnJhbmRvbVBkZklkfS12aWV3ZXItdmlld2VyUGRmYCk7XG4gICAgfVxuXG4gICAgY2hlY2tQYWdlRml0SW5Db250YWluZXIoc2NhbGU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50Q29udGFpbmVyU2l6ZSA9IHRoaXMuZ2V0RG9jdW1lbnRDb250YWluZXIoKTtcbiAgICAgICAgY29uc3QgcGFnZSA9IHRoaXMucGRmVmlld2VyLl9wYWdlc1t0aGlzLnBkZlZpZXdlci5fY3VycmVudFBhZ2VOdW1iZXIgLSAxXTtcblxuICAgICAgICBpZiAocGFnZS53aWR0aCA+IGRvY3VtZW50Q29udGFpbmVyU2l6ZS5jbGllbnRXaWR0aCkge1xuICAgICAgICAgICAgc2NhbGUgPSBNYXRoLmZyb3VuZCgoZG9jdW1lbnRDb250YWluZXJTaXplLmNsaWVudFdpZHRoIC0gMjApIC8gcGFnZS53aWR0aCk7XG4gICAgICAgICAgICBpZiAoc2NhbGUgPCB0aGlzLk1JTl9TQ0FMRSkge1xuICAgICAgICAgICAgICAgIHNjYWxlID0gdGhpcy5NSU5fU0NBTEU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2NhbGU7XG4gICAgfVxuXG4gICAgc2V0RG9jdW1lbnRPdmVyZmxvdygpIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnRDb250YWluZXJTaXplID0gdGhpcy5nZXREb2N1bWVudENvbnRhaW5lcigpO1xuICAgICAgICBjb25zdCBwYWdlID0gdGhpcy5wZGZWaWV3ZXIuX3BhZ2VzW3RoaXMucGRmVmlld2VyLl9jdXJyZW50UGFnZU51bWJlciAtIDFdO1xuXG4gICAgICAgIHRoaXMuZG9jdW1lbnRPdmVyZmxvdyA9IHBhZ2Uud2lkdGggPiBkb2N1bWVudENvbnRhaW5lclNpemUuY2xpZW50V2lkdGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIGFsbCB0aGUgcGFnZXMgd2l0aCB0aGUgbmV3U2NhbGUgc2NhbGVcbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZXdTY2FsZSAtIG5ldyBzY2FsZSBwYWdlXG4gICAgICovXG4gICAgc2V0U2NhbGVVcGRhdGVQYWdlcyhuZXdTY2FsZTogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLnBkZlZpZXdlcikge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzU2FtZVNjYWxlKHRoaXMucGRmVmlld2VyLmN1cnJlbnRTY2FsZVZhbHVlLCBuZXdTY2FsZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBkZlZpZXdlci5jdXJyZW50U2NhbGVWYWx1ZSA9IG5ld1NjYWxlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnBkZlZpZXdlci51cGRhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldERvY3VtZW50T3ZlcmZsb3coKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgcmVxdWVzdCBzY2FsZSBvZiB0aGUgcGFnZSBpcyB0aGUgc2FtZSBmb3IgYXZvaWQgdXNlbGVzcyByZS1yZW5kZXJpbmdcbiAgICAgKlxuICAgICAqIEBwYXJhbSBvbGRTY2FsZSAtIG9sZCBzY2FsZSBwYWdlXG4gICAgICogQHBhcmFtIG5ld1NjYWxlIC0gbmV3IHNjYWxlIHBhZ2VcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHNjYWxlIGlzIHRoZSBzYW1lLCBvdGhlcndpc2UgYGZhbHNlYFxuICAgICAqL1xuICAgIGlzU2FtZVNjYWxlKG9sZFNjYWxlOiBudW1iZXIsIG5ld1NjYWxlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIG5ld1NjYWxlID09PSBvbGRTY2FsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBpcyBhIGxhbmQgc2NhcGUgdmlld1xuICAgICAqXG4gICAgICogQHBhcmFtIHdpZHRoIHRhcmdldCB3aWR0aFxuICAgICAqIEBwYXJhbSBoZWlnaHQgdGFyZ2V0IGhlaWdodFxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgdGFyZ2V0IGlzIGluIHRoZSBsYW5kc2NhcGUgbW9kZSwgb3RoZXJ3aXNlIGBmYWxzZWBcbiAgICAgKi9cbiAgICBpc0xhbmRzY2FwZSh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gd2lkdGggPiBoZWlnaHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRyaWdnZXJlZCB3aGVuIHRoZSBwYWdlIGlzIHJlc2l6ZWRcbiAgICAgKi9cbiAgICBvblJlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy5zY2FsZVBhZ2UodGhpcy5jdXJyZW50U2NhbGVNb2RlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB0b2dnbGUgdGhlIGZpdCBwYWdlIHBkZlxuICAgICAqL1xuICAgIHBhZ2VGaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTY2FsZU1vZGUgIT09ICdwYWdlLWZpdCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2NhbGVQYWdlKCdwYWdlLWZpdCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zY2FsZVBhZ2UoJ2F1dG8nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHpvb20gaW4gcGFnZSBwZGZcbiAgICAgKlxuICAgICAqIEBwYXJhbSB0aWNrcyBudW1iZXIgb2YgdGlja3MgdG8gem9vbVxuICAgICAqL1xuICAgIHpvb21Jbih0aWNrcz86IG51bWJlcik6IHZvaWQge1xuICAgICAgICBsZXQgbmV3U2NhbGU6IGFueSA9IHRoaXMucGRmVmlld2VyLmN1cnJlbnRTY2FsZVZhbHVlO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICBuZXdTY2FsZSA9IChuZXdTY2FsZSAqIHRoaXMuREVGQVVMVF9TQ0FMRV9ERUxUQSkudG9GaXhlZCgyKTtcbiAgICAgICAgICAgIG5ld1NjYWxlID0gTWF0aC5jZWlsKG5ld1NjYWxlICogMTApIC8gMTA7XG4gICAgICAgICAgICBuZXdTY2FsZSA9IE1hdGgubWluKHRoaXMuTUFYX1NDQUxFLCBuZXdTY2FsZSk7XG4gICAgICAgIH0gd2hpbGUgKC0tdGlja3MgPiAwICYmIG5ld1NjYWxlIDwgdGhpcy5NQVhfU0NBTEUpO1xuICAgICAgICB0aGlzLmN1cnJlbnRTY2FsZU1vZGUgPSAnYXV0byc7XG4gICAgICAgIHRoaXMuc2V0U2NhbGVVcGRhdGVQYWdlcyhuZXdTY2FsZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogem9vbSBvdXQgcGFnZSBwZGZcbiAgICAgKlxuICAgICAqIEBwYXJhbSB0aWNrcyBudW1iZXIgb2YgdGlja3MgdG8gc2NhbGVcbiAgICAgKi9cbiAgICB6b29tT3V0KHRpY2tzPzogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGxldCBuZXdTY2FsZTogYW55ID0gdGhpcy5wZGZWaWV3ZXIuY3VycmVudFNjYWxlVmFsdWU7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIG5ld1NjYWxlID0gKG5ld1NjYWxlIC8gdGhpcy5ERUZBVUxUX1NDQUxFX0RFTFRBKS50b0ZpeGVkKDIpO1xuICAgICAgICAgICAgbmV3U2NhbGUgPSBNYXRoLmZsb29yKG5ld1NjYWxlICogMTApIC8gMTA7XG4gICAgICAgICAgICBuZXdTY2FsZSA9IE1hdGgubWF4KHRoaXMuTUlOX1NDQUxFLCBuZXdTY2FsZSk7XG4gICAgICAgIH0gd2hpbGUgKC0tdGlja3MgPiAwICYmIG5ld1NjYWxlID4gdGhpcy5NSU5fU0NBTEUpO1xuICAgICAgICB0aGlzLmN1cnJlbnRTY2FsZU1vZGUgPSAnYXV0byc7XG4gICAgICAgIHRoaXMuc2V0U2NhbGVVcGRhdGVQYWdlcyhuZXdTY2FsZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbG9hZCB0aGUgcHJldmlvdXMgcGFnZVxuICAgICAqL1xuICAgIHByZXZpb3VzUGFnZSgpIHtcbiAgICAgICAgaWYgKHRoaXMucGRmVmlld2VyICYmIHRoaXMucGFnZSA+IDEpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZS0tO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5UGFnZSA9IHRoaXMucGFnZTtcblxuICAgICAgICAgICAgdGhpcy5wZGZWaWV3ZXIuY3VycmVudFBhZ2VOdW1iZXIgPSB0aGlzLnBhZ2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBsb2FkIHRoZSBuZXh0IHBhZ2VcbiAgICAgKi9cbiAgICBuZXh0UGFnZSgpIHtcbiAgICAgICAgaWYgKHRoaXMucGRmVmlld2VyICYmIHRoaXMucGFnZSA8IHRoaXMudG90YWxQYWdlcykge1xuICAgICAgICAgICAgdGhpcy5wYWdlKys7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlQYWdlID0gdGhpcy5wYWdlO1xuXG4gICAgICAgICAgICB0aGlzLnBkZlZpZXdlci5jdXJyZW50UGFnZU51bWJlciA9IHRoaXMucGFnZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGxvYWQgdGhlIHBhZ2UgaW4gaW5wdXRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYWdlIHRvIGxvYWRcbiAgICAgKi9cbiAgICBpbnB1dFBhZ2UocGFnZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHBhZ2VJbnB1dCA9IHBhcnNlSW50KHBhZ2UsIDEwKTtcblxuICAgICAgICBpZiAoIWlzTmFOKHBhZ2VJbnB1dCkgJiYgcGFnZUlucHV0ID4gMCAmJiBwYWdlSW5wdXQgPD0gdGhpcy50b3RhbFBhZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2UgPSBwYWdlSW5wdXQ7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlQYWdlID0gdGhpcy5wYWdlO1xuICAgICAgICAgICAgdGhpcy5wZGZWaWV3ZXIuY3VycmVudFBhZ2VOdW1iZXIgPSB0aGlzLnBhZ2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlQYWdlID0gdGhpcy5wYWdlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFnZSBDaGFuZ2UgRXZlbnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudCBldmVudFxuICAgICAqL1xuICAgIG9uUGFnZUNoYW5nZShldmVudDogYW55KSB7XG4gICAgICAgIGlmIChldmVudC5zb3VyY2UgJiYgZXZlbnQuc291cmNlLmNvbnRhaW5lci5pZCA9PT0gYCR7dGhpcy5yYW5kb21QZGZJZH0tdmlld2VyLXBkZi12aWV3ZXJgKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2UgPSBldmVudC5wYWdlTnVtYmVyO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5UGFnZSA9IGV2ZW50LnBhZ2VOdW1iZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblBkZlBhc3N3b3JkKGNhbGxiYWNrLCByZWFzb24pIHtcbiAgICAgICAgdGhpcy5kaWFsb2dcbiAgICAgICAgICAgIC5vcGVuKFBkZlBhc3N3b3JkRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6ICc0MDBweCcsXG4gICAgICAgICAgICAgICAgZGF0YTogeyByZWFzb24gfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChwYXNzd29yZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwYXNzd29yZCkge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhwYXNzd29yZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZS5lbWl0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFnZSBSZW5kZXJlZCBFdmVudFxuICAgICAqL1xuICAgIG9uUGFnZVJlbmRlcmVkKCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVkLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYWdlcyBMb2FkZWQgRXZlbnRcbiAgICAgKlxuICAgICAqL1xuICAgIG9uUGFnZXNMb2FkZWQoKSB7XG4gICAgICAgIHRoaXMuaXNQYW5lbERpc2FibGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogS2V5Ym9hcmQgRXZlbnQgTGlzdGVuZXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudCBLZXlib2FyZEV2ZW50XG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCBrZXkgPSBldmVudC5rZXlDb2RlO1xuICAgICAgICBpZiAoa2V5ID09PSAzOSkge1xuICAgICAgICAgICAgLy8gcmlnaHQgYXJyb3dcbiAgICAgICAgICAgIHRoaXMubmV4dFBhZ2UoKTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09IDM3KSB7XG4gICAgICAgICAgICAvLyBsZWZ0IGFycm93XG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzUGFnZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFkZi1wZGYtdmlld2VyX19jb250YWluZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1RodW1ibmFpbHNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1wZGYtdmlld2VyX190aHVtYm5haWxzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXRodW1ibmFpbHMtdGVtcGxhdGVfX2NvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtdGh1bWJuYWlscy10ZW1wbGF0ZV9fYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD0nYWRmLXRodW1ibmFpbHMtY2xvc2UnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVRodW1ibmFpbHMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BUklBLlRIVU1CTkFJTFNfUEFOTEVMX0NMT1NFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLkNMT1NFJyB8IHRyYW5zbGF0ZSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGh1bWJuYWlsc1RlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aHVtYm5haWxzVGVtcGxhdGU7Y29udGV4dDpwZGZUaHVtYm5haWxzQ29udGV4dFwiIC8+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGFkZi1wZGYtdGh1bWJuYWlscyAqbmdJZj1cIiF0aHVtYm5haWxzVGVtcGxhdGUgJiYgIWlzUGFuZWxEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2UpPVwidG9nZ2xlVGh1bWJuYWlscygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwZGZWaWV3ZXJdPVwicGRmVmlld2VyXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgY2xhc3M9XCJhZGYtcGRmLXZpZXdlcl9fY29udGVudFwiPlxuICAgICAgICA8ZGl2IFtpZF09XCJyYW5kb21QZGZJZCArICctdmlld2VyLXBkZi12aWV3ZXInXCJcbiAgICAgICAgICAgICBjbGFzcz1cImFkZi12aWV3ZXItcGRmLXZpZXdlclwiXG4gICAgICAgICAgICAgKHdpbmRvdzpyZXNpemUpPVwib25SZXNpemUoKVwiPlxuICAgICAgICAgICAgPGRpdiBbaWRdPVwicmFuZG9tUGRmSWQgKyAnLXZpZXdlci12aWV3ZXJQZGYnXCJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtcGRmVmlld2VyXCJcbiAgICAgICAgICAgICAgICAgcm9sZT1cImRvY3VtZW50XCJcbiAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwibG9hZGVyLWNvbnRhaW5lclwiIGNsYXNzPVwiYWRmLWxvYWRlci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1sb2FkZXItaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgY2xhc3M9XCJhZGYtbG9hZGVyLWl0ZW0tcHJvZ3Jlc3MtYmFyXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiYWRmLXBkZi12aWV3ZXJfX3Rvb2xiYXJcIiAqbmdJZj1cInNob3dUb29sYmFyXCIgW25nU3R5bGVdPVwiZG9jdW1lbnRPdmVyZmxvdyAmJiB7Ym90dG9tOiAnMjVweCd9XCI+XG4gICAgPGFkZi10b29sYmFyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbGxvd1RodW1ibmFpbHNcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQVJJQS5USFVNQk5BSUxTJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwic2hvd1RodW1ibmFpbHNcIlxuICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdGh1bWJuYWlscy1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNQYW5lbERpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVRodW1ibmFpbHMoKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5kYXNoYm9hcmQ8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YWRmLXRvb2xiYXItZGl2aWRlciAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8YnV0dG9uIGlkPVwidmlld2VyLXByZXZpb3VzLXBhZ2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFSSUEuUFJFVklPVVNfUEFHRScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cInt7ICdBREZfVklFV0VSLkFSSUEuUFJFVklPVVNfUEFHRScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmV2aW91c1BhZ2UoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmtleWJvYXJkX2Fycm93X3VwPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiBpZD1cInZpZXdlci1uZXh0LXBhZ2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFSSUEuTkVYVF9QQUdFJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwie3sgJ0FERl9WSUVXRVIuQVJJQS5ORVhUX1BBR0UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibmV4dFBhZ2UoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXBkZi12aWV3ZXJfX3Rvb2xiYXItcGFnZS1zZWxlY3RvclwiPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBhZ2Utc2VsZWN0b3JcIj57eyAnQURGX1ZJRVdFUi5QQUdFX0xBQkVMLlNIT1dJTkcnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCAjcGFnZVxuICAgICAgICAgICAgICAgICAgIGlkPVwicGFnZS1zZWxlY3RvclwiXG4gICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1wYWdlLXNlbGVjdG9yXCJcbiAgICAgICAgICAgICAgICAgICBwYXR0ZXJuPVwiLT9bMC05XSooXFwuWzAtOV0rKT9cIlxuICAgICAgICAgICAgICAgICAgIHZhbHVlPVwie3sgZGlzcGxheVBhZ2UgfX1cIlxuICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuUEFHRV9MQUJFTC5QQUdFX1NFTEVDVE9SX0xBQkVMJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImlucHV0UGFnZShwYWdlLnZhbHVlKVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgJ0FERl9WSUVXRVIuUEFHRV9MQUJFTC5PRicgfCB0cmFuc2xhdGUgfX0ge3sgdG90YWxQYWdlcyB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1wZGYtdmlld2VyX190b29sYmFyLXBhZ2Utc2NhbGVcIiBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtcGFnZS1zY2FsZVwiPlxuICAgICAgICAgICAge3sgY3VycmVudFNjYWxlVGV4dCB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8YnV0dG9uIGlkPVwidmlld2VyLXpvb20taW4tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFSSUEuWk9PTV9JTicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cInt7ICdBREZfVklFV0VSLkFSSUEuWk9PTV9JTicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ6b29tSW4oKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPnpvb21faW48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uIGlkPVwidmlld2VyLXpvb20tb3V0LWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BUklBLlpPT01fT1VUJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwie3sgJ0FERl9WSUVXRVIuQVJJQS5aT09NX09VVCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ6b29tT3V0KClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj56b29tX291dDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b24gaWQ9XCJ2aWV3ZXItc2NhbGUtcGFnZS1idXR0b25cIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIiBhcmlhLXByZXNzZWQ9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFSSUEuRklUX1BBR0UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJ7eyAnQURGX1ZJRVdFUi5BUklBLkZJVF9QQUdFJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInBhZ2VGaXQoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPnpvb21fb3V0X21hcDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgPC9hZGYtdG9vbGJhcj5cbjwvZGl2PlxuIl19